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

Disassembly:
sub esp, 0x34
push ebx
push ebp
mov edx, ecx
mov dword [esp + 0xc], edx
push esi
push edi
test edx, edx
je case.0x100bbec1.16181
cmp dword [edx + 0x20], 0
je case.0x100bbec1.16181
cmp dword [edx + 0x24], 0
je case.0x100bbec1.16181
mov edi, dword [edx + 0x1c]
mov dword [esp + 0x34], edi
test edi, edi
je case.0x100bbec1.16181
cmp dword [edi], edx
jne case.0x100bbec1.16181
mov eax, dword [edi + 4]
cmp eax, 0x3f34
jl case.0x100bbec1.16181
cmp eax, 0x3f53
jg case.0x100bbec1.16181
cmp dword [edx + 0xc], 0
lea ecx, [edx + 0xc]
je case.0x100bbec1.16181
cmp dword [edx], 0
jne 0x100bbe5a
cmp dword [edx + 4], 0
jne case.0x100bbec1.16181
add edx, 0xc
jmp 0x100bbe5c
mov edx, ecx
mov dword [esp + 0x3c], ecx
cmp eax, 0x3f3f
jne 0x100bbe77
mov dword [edi + 4], 0x3f40
mov eax, 0x3f40
mov dword [esp + 0x3c], edx
mov ecx, dword [ecx]
add eax, 0xffffc0cc
mov esi, dword [edi + 0x40]
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x28], 0
mov edx, dword [ecx + 0x10]
mov ebx, dword [ecx]
mov ebp, dword [ecx + 4]
mov dword [esp + 0x1c], edx
mov edx, dword [edi + 0x3c]
mov dword [esp + 0x18], ebx
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x30], ebx
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x10], edx
mov dword [esp + 0x40], ebp
cmp eax, 0x1f
ja case.0x100bbec1.16181
jmp dword [eax*4 + 0x100bce90]
cmp dword [edi + 0xc], 0
jne 0x100bbeda
mov dword [edi + 4], 0x3f40
jmp 0x100bc203
cmp esi, 0x10
jae 0x100bbf03
nop
test ebp, ebp
je 0x100bcd7f
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
add edx, eax
mov dword [esp + 0x18], ebx
add esi, 8
mov dword [esp + 0x10], edx
dec ebp
cmp esi, 0x10
jb 0x100bbee0
movzx ecx, dl
mov eax, edx
shl ecx, 8
xor edx, edx
shr eax, 8
add eax, ecx
mov ecx, 0x1f
div ecx
test edx, edx
mov edx, dword [esp + 0x10]
je 0x100bbf38
mov ecx, dword [esp + 0x14]
mov dword [ecx + 0x18], 0x101cbd9c
mov dword [edi + 4], 0x3f51
jmp 0x100bc203
mov eax, edx
and al, 0xf
cmp al, 8
je 0x100bbf57
mov ecx, dword [esp + 0x14]
mov dword [ecx + 0x18], str.unknown_compression_method
mov dword [edi + 4], 0x3f51
jmp 0x100bc203
mov eax, dword [edi + 0x28]
sub esi, 4
shr edx, 4
mov ecx, edx
mov dword [esp + 0x10], edx
and ecx, 0xf
add ecx, 8
test eax, eax
jne 0x100bbf75
mov eax, ecx
mov dword [edi + 0x28], eax
cmp ecx, 0xf
ja 0x100bbfc9
cmp ecx, eax
ja 0x100bbfc9
mov eax, 1
mov dword [edi + 0x14], 0
shl eax, cl
xor edx, edx
push 0
xor ecx, ecx
mov dword [edi + 0x18], eax
call fcn.10111810
mov edx, dword [esp + 0x14]
add esp, 4
mov ecx, dword [esp + 0x14]
shr edx, 8
not edx
mov dword [edi + 0x1c], eax
and edx, 2
or edx, 0x3f3d
mov dword [ecx + 0x30], eax
mov dword [edi + 4], edx
xor edx, edx
mov dword [esp + 0x10], edx
xor esi, esi
jmp 0x100bc203
mov ecx, dword [esp + 0x14]
mov dword [ecx + 0x18], str.invalid_window_size
mov dword [edi + 4], 0x3f51
jmp 0x100bc203
cmp esi, 0x20
jae 0x100bc00c
test ebp, ebp
je 0x100bcd7f
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
add edx, eax
mov dword [esp + 0x18], ebx
add esi, 8
mov dword [esp + 0x10], edx
dec ebp
cmp esi, 0x20
jb 0x100bbfe5
mov ecx, dword [esp + 0x14]
bswap edx
mov dword [edi + 0x1c], edx
mov dword [ecx + 0x30], edx
xor edx, edx
mov dword [esp + 0x10], edx
xor esi, esi
mov dword [edi + 4], 0x3f3e
cmp dword [edi + 0x10], 0
je 0x100bcd30
push 0
xor edx, edx
xor ecx, ecx
call fcn.10111810
mov edx, dword [esp + 0x18]
add esp, 4
mov dword [edi + 0x1c], eax
mov dword [edx + 0x30], eax
mov edx, dword [esp + 0x10]
mov dword [edi + 4], 0x3f3f
cmp dword [edi + 8], 0
je 0x100bc06f
mov ecx, esi
mov dword [edi + 4], 0x3f4e
and ecx, 7
shr edx, cl
sub esi, ecx
mov dword [esp + 0x10], edx
jmp 0x100bc1ff
cmp esi, 3
jae 0x100bc0a5
test ebp, ebp
je 0x100bcd7f
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
add edx, eax
mov dword [esp + 0x18], ebx
add esi, 8
mov dword [esp + 0x10], edx
dec ebp
mov eax, edx
cmp esi, 3
jb case.default.0x100bc0b4
shr edx, 1
mov ecx, edx
and ecx, 3
and eax, 1
jmp 0x100bc0b1
mov eax, edx
shr edx, 1
mov ecx, edx
and eax, 1
and ecx, 3
mov dword [edi + 8], eax
jmp dword [ecx*4 + 0x100bcf10]
mov dword [edi + 4], 0x3f41
mov ecx, dword [esp + 0x14]
shr edx, 2
add esi, 0xfffffffd
mov dword [esp + 0x10], edx
jmp 0x100bc203
mov ecx, dword [esp + 0x14]
shr edx, 2
add esi, 0xfffffffd
mov dword [edi + 0x50], 0x101cbfe8
mov dword [edi + 0x58], 9
mov dword [edi + 0x54], 0x101cbf68
mov dword [edi + 0x5c], 5
mov dword [edi + 4], 0x3f47
mov dword [esp + 0x10], edx
jmp 0x100bc203
mov ecx, dword [esp + 0x14]
shr edx, 2
add esi, 0xfffffffd
mov dword [edi + 4], 0x3f44
mov dword [esp + 0x10], edx
jmp 0x100bc203
mov ecx, dword [esp + 0x14]
shr edx, 2
add esi, 0xfffffffd
mov dword [esp + 0x10], edx
mov dword [ecx + 0x18], str.invalid_block_type
mov dword [edi + 4], 0x3f51
jmp 0x100bc203
mov ecx, esi
and ecx, 7
shr edx, cl
sub esi, ecx
mov dword [esp + 0x10], edx
cmp esi, 0x20
jae 0x100bc17b
test ebp, ebp
je 0x100bcd7f
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
add edx, eax
mov dword [esp + 0x18], ebx
add esi, 8
mov dword [esp + 0x10], edx
dec ebp
cmp esi, 0x20
jb 0x100bc158
mov eax, edx
movzx ecx, dx
not eax
shr eax, 0x10
cmp ecx, eax
je 0x100bc19d
mov ecx, dword [esp + 0x14]
mov dword [ecx + 0x18], str.invalid_stored_block_lengths
mov dword [edi + 4], 0x3f51
jmp 0x100bc203
xor edx, edx
mov dword [edi + 0x44], ecx
mov dword [esp + 0x10], edx
xor esi, esi
mov dword [edi + 4], 0x3f43
mov ecx, dword [edi + 0x44]
test ecx, ecx
je 0x100bc917
cmp ecx, ebp
mov eax, ebp
cmovbe eax, ecx
cmp eax, dword [esp + 0x1c]
cmova eax, dword [esp + 0x1c]
mov dword [esp + 0x38], eax
test eax, eax
je 0x100bcd7f
push eax
push ebx
push dword [esp + 0x28]
call fcn.101528b0
mov eax, dword [esp + 0x44]
add esp, 0xc
sub dword [esp + 0x1c], eax
add ebx, eax
add dword [esp + 0x20], eax
sub ebp, eax
sub dword [edi + 0x44], eax
mov dword [esp + 0x18], ebx
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov eax, dword [edi + 4]
sub eax, 0x3f34
cmp eax, 0x1f
jbe switch.0x100bbec1
mov eax, 0xfffffffe
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x34
ret
cmp esi, 0xe
jae 0x100bc249
test ebp, ebp
je 0x100bcd7f
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
add edx, eax
mov dword [esp + 0x18], ebx
add esi, 8
mov dword [esp + 0x10], edx
dec ebp
cmp esi, 0xe
jb 0x100bc226
mov ecx, edx
sub esi, 0xe
shr edx, 5
and ecx, 0x1f
mov eax, edx
add ecx, 0x101
and eax, 0x1f
shr edx, 5
inc eax
mov dword [edi + 0x64], ecx
mov dword [esp + 0x38], eax
mov dword [edi + 0x68], eax
mov eax, edx
and eax, 0xf
shr edx, 4
add eax, 4
mov dword [esp + 0x10], edx
mov dword [edi + 0x60], eax
cmp ecx, 0x11e
ja 0x100bc37d
cmp dword [esp + 0x38], 0x1e
ja 0x100bc37d
mov dword [edi + 0x6c], 0
mov dword [edi + 4], 0x3f45
mov eax, dword [edi + 0x6c]
cmp eax, dword [edi + 0x60]
jae 0x100bc303
nop dword [eax]
cmp esi, 3
jae 0x100bc2d8
test ebp, ebp
je 0x100bcd7f
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
add edx, eax
mov dword [esp + 0x18], ebx
add esi, 8
mov dword [esp + 0x10], edx
dec ebp
cmp esi, 3
jb 0x100bc2b5
mov eax, dword [edi + 0x6c]
mov ecx, edx
and ecx, 7
shr edx, 3
sub esi, 3
mov dword [esp + 0x10], edx
movzx eax, word [eax*2 + 0x101cbf3c]
mov word [edi + eax*2 + 0x74], cx
mov eax, dword [edi + 0x6c]
inc eax
mov dword [edi + 0x6c], eax
cmp eax, dword [edi + 0x60]
jb 0x100bc2b0
cmp eax, 0x13
jae 0x100bc32a
nop dword [eax + eax]
movzx eax, word [eax*2 + 0x101cbf3c]
xor ecx, ecx
mov word [edi + eax*2 + 0x74], cx
inc dword [edi + 0x6c]
mov eax, dword [edi + 0x6c]
cmp eax, 0x13
jb 0x100bc310
lea eax, [edi + 0x534]
mov dword [edi + 0x58], 7
lea ecx, [edi + 0x70]
mov dword [edi + 0x50], eax
mov dword [ecx], eax
lea edx, [edi + 0x58]
lea eax, [edi + 0x2f4]
push eax
push edx
push ecx
push 0x13
lea edx, [edi + 0x74]
xor ecx, ecx
call fcn.10111a80
mov ecx, dword [esp + 0x24]
add esp, 0x10
mov edx, dword [esp + 0x10]
mov dword [esp + 0x28], eax
test eax, eax
je 0x100bc394
mov dword [ecx + 0x18], str.invalid_code_lengths_set
mov dword [edi + 4], 0x3f51
jmp 0x100bc203
mov ecx, dword [esp + 0x14]
mov dword [ecx + 0x18], str.too_many_length_or_distance_symbols
mov dword [edi + 4], 0x3f51
jmp 0x100bc203
mov dword [edi + 0x6c], 0
mov dword [edi + 4], 0x3f46
mov eax, dword [edi + 0x68]
add eax, dword [edi + 0x64]
cmp dword [edi + 0x6c], eax
jae 0x100bc5ff
mov eax, dword [edi + 0x50]
mov ecx, dword [edi + 0x58]
mov dword [esp + 0x38], eax
mov eax, 1
shl eax, cl
mov dword [esp + 0x2c], ecx
dec eax
mov ecx, dword [edi + 0x50]
and eax, edx
mov eax, dword [ecx + eax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
mov dword [esp + 0x24], eax
cmp ecx, esi
jbe 0x100bc433
nop
mov eax, dword [esp + 0x38]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x2c], eax
test ebp, ebp
je 0x100bcd7f
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
mov ecx, dword [esp + 0x2c]
add edx, eax
mov eax, 1
mov dword [esp + 0x10], edx
shl eax, cl
add esi, 8
mov ecx, dword [esp + 0x38]
dec eax
and eax, edx
mov dword [esp + 0x18], ebx
dec ebp
mov eax, dword [ecx + eax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
mov dword [esp + 0x24], eax
cmp ecx, esi
ja 0x100bc3e0
mov ecx, eax
shr ecx, 0x10
movzx edi, cx
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x34]
mov dword [esp + 0x38], ecx
cmp cx, 0x10
jae 0x100bc472
shr eax, 8
movzx ecx, al
mov eax, dword [edi + 0x6c]
sub esi, ecx
shr edx, cl
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x10], edx
mov word [edi + eax*2 + 0x74], cx
inc dword [edi + 0x6c]
mov ecx, dword [edi + 0x6c]
jmp 0x100bc5ed
cmp word [esp + 0x2c], 0x10
jne 0x100bc4e8
shr eax, 8
movzx eax, al
add eax, 2
mov dword [esp + 0x38], eax
cmp esi, eax
jae 0x100bc4b4
nop dword [eax + eax]
test ebp, ebp
je 0x100bcd7f
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
add edx, eax
mov dword [esp + 0x18], ebx
add esi, 8
mov dword [esp + 0x10], edx
dec ebp
cmp esi, dword [esp + 0x38]
jb 0x100bc490
movzx ecx, byte [esp + 0x25]
mov eax, dword [edi + 0x6c]
sub esi, ecx
shr edx, cl
mov dword [esp + 0x10], edx
test eax, eax
je 0x100bc629
movzx eax, word [edi + eax*2 + 0x72]
mov ecx, edx
and ecx, 3
shr edx, 2
add ecx, 3
sub esi, 2
mov dword [esp + 0x2c], ecx
jmp 0x100bc597
cmp word [esp + 0x26], 0x11
mov cl, byte [esp + 0x25]
movzx eax, cl
jne 0x100bc545
add eax, 3
mov dword [esp + 0x38], eax
cmp esi, eax
jae 0x100bc52a
test ebp, ebp
je 0x100bcd7f
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
add edx, eax
mov dword [esp + 0x18], ebx
add esi, 8
mov dword [esp + 0x10], edx
dec ebp
cmp esi, dword [esp + 0x38]
jb 0x100bc502
mov cl, byte [esp + 0x25]
shr edx, cl
mov eax, edx
and eax, 7
add eax, 3
shr edx, 3
mov dword [esp + 0x2c], eax
movzx eax, cl
mov ecx, 0xfffffffd
jmp 0x100bc591
add eax, 7
mov dword [esp + 0x38], eax
cmp esi, eax
jae 0x100bc578
test ebp, ebp
je 0x100bcd7f
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
add edx, eax
mov dword [esp + 0x18], ebx
add esi, 8
mov dword [esp + 0x10], edx
dec ebp
cmp esi, dword [esp + 0x38]
jb 0x100bc550
mov cl, byte [esp + 0x25]
shr edx, cl
mov eax, edx
and eax, 0x7f
add eax, 0xb
shr edx, 7
mov dword [esp + 0x2c], eax
movzx eax, cl
mov ecx, 0xfffffff9
sub ecx, eax
add esi, ecx
xor eax, eax
mov ecx, dword [edi + 0x64]
add ecx, dword [edi + 0x68]
mov ebx, dword [esp + 0x18]
movzx eax, ax
mov dword [esp + 0x24], eax
mov eax, dword [edi + 0x6c]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x2c]
add eax, dword [esp + 0x38]
mov dword [esp + 0x10], edx
cmp eax, ecx
ja 0x100bc629
mov eax, dword [esp + 0x24]
mov ebx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x38]
movzx edx, ax
mov word [edi + ecx*2 + 0x74], dx
mov ecx, dword [edi + 0x6c]
lea ecx, [ecx + 1]
mov dword [edi + 0x6c], ecx
sub ebx, 1
jne 0x100bc5d2
mov ebx, dword [esp + 0x18]
mov edx, dword [esp + 0x10]
mov eax, dword [edi + 0x64]
add eax, dword [edi + 0x68]
cmp ecx, eax
jb 0x100bc3b1
mov ecx, dword [esp + 0x14]
cmp dword [edi + 4], 0x3f51
je 0x100bc203
cmp word [edi + 0x274], 0
jne 0x100bc63d
mov dword [ecx + 0x18], str.invalid_code____missing_end_of_block
mov dword [edi + 4], 0x3f51
jmp 0x100bc203
mov ecx, dword [esp + 0x14]
mov dword [ecx + 0x18], str.invalid_bit_length_repeat
mov dword [edi + 4], 0x3f51
jmp 0x100bc5ff
lea eax, [edi + 0x534]
mov dword [edi + 0x58], 9
lea ecx, [edi + 0x70]
mov dword [edi + 0x50], eax
mov dword [ecx], eax
lea edx, [edi + 0x58]
lea eax, [edi + 0x2f4]
push eax
push edx
push ecx
push dword [edi + 0x64]
lea edx, [edi + 0x74]
mov ecx, 1
call fcn.10111a80
add esp, 0x10
mov dword [esp + 0x28], eax
test eax, eax
je 0x100bc694
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
mov dword [ecx + 0x18], str.invalid_literal_lengths_set
mov dword [edi + 4], 0x3f51
jmp 0x100bc203
mov eax, dword [edi + 0x70]
lea ecx, [edi + 0x70]
mov dword [edi + 0x54], eax
lea edx, [edi + 0x5c]
lea eax, [edi + 0x2f4]
mov dword [edx], 6
push eax
mov eax, dword [edi + 0x64]
push edx
add eax, 0x3a
push ecx
push dword [edi + 0x68]
mov ecx, 2
lea edx, [edi + eax*2]
call fcn.10111a80
mov ecx, dword [esp + 0x24]
add esp, 0x10
mov edx, dword [esp + 0x10]
mov dword [esp + 0x28], eax
test eax, eax
je case.0x100bbec1.16199
mov dword [ecx + 0x18], str.invalid_distances_set
mov dword [edi + 4], 0x3f51
jmp 0x100bc203
mov dword [edi + 4], 0x3f48
cmp ebp, 6
jb 0x100bc776
cmp dword [esp + 0x1c], 0x102
jb 0x100bc776
mov ebx, dword [esp + 0x3c]
mov eax, dword [esp + 0x20]
mov dword [ecx + 4], ebp
mov dword [ebx], eax
mov eax, dword [esp + 0x1c]
mov ebx, dword [esp + 0x18]
mov dword [ecx + 0x10], eax
mov dword [ecx], ebx
mov dword [edi + 0x3c], edx
mov edx, dword [esp + 0x30]
mov dword [edi + 0x40], esi
call fcn.10111fe0
cmp dword [edi + 4], 0x3f3f
mov ecx, dword [esp + 0x3c]
mov edx, dword [edi + 0x3c]
mov esi, dword [edi + 0x40]
mov dword [esp + 0x10], edx
mov eax, dword [ecx]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x20], eax
mov eax, dword [ecx + 0x10]
mov ebx, dword [ecx]
mov ebp, dword [ecx + 4]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x18], ebx
jne 0x100bc203
mov dword [edi + 0x1bc8], 0xffffffff
jmp 0x100bc203
mov eax, dword [edi + 0x50]
mov ecx, dword [edi + 0x58]
mov dword [esp + 0x24], eax
mov eax, 1
shl eax, cl
mov dword [esp + 0x38], ecx
dec eax
mov ecx, dword [edi + 0x50]
and eax, edx
mov dword [edi + 0x1bc8], 0
mov eax, dword [ecx + eax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
jbe 0x100bc7ff
nop word [eax + eax]
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x38]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x38], eax
test ebp, ebp
je 0x100bcd7f
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
mov ecx, dword [esp + 0x38]
add edx, eax
mov eax, 1
mov dword [esp + 0x10], edx
shl eax, cl
add esi, 8
mov ecx, dword [esp + 0x24]
dec eax
and eax, edx
mov dword [esp + 0x18], ebx
dec ebp
mov eax, dword [ecx + eax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
ja 0x100bc7b0
mov dword [esp + 0x38], eax
test al, al
je 0x100bc8d7
test al, 0xf0
jne 0x100bc8d7
mov ecx, eax
mov ebx, 1
shr ecx, 8
mov edx, eax
movzx edi, cl
movzx ecx, al
add ecx, edi
shr eax, 0x10
shl ebx, cl
mov ecx, edi
dec ebx
mov dword [esp + 0x2c], edx
and ebx, dword [esp + 0x10]
shr ebx, cl
mov ecx, dword [esp + 0x24]
add ebx, eax
mov eax, dword [ecx + ebx*4]
mov ecx, edx
shr ecx, 8
movzx edi, cl
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add edi, ecx
cmp edi, esi
jbe 0x100bc8be
nop dword [eax]
mov eax, dword [esp + 0x24]
mov dword [esp + 0x24], eax
test ebp, ebp
je 0x100bcd7b
mov ebx, dword [esp + 0x18]
mov ecx, esi
mov edi, 1
add esi, 8
dec ebp
movzx eax, byte [ebx]
inc ebx
shl eax, cl
add dword [esp + 0x10], eax
movzx eax, word [esp + 0x2e]
mov dword [esp + 0x18], ebx
movzx ebx, byte [esp + 0x2d]
movzx ecx, dl
add ecx, ebx
shl edi, cl
mov ecx, ebx
dec edi
and edi, dword [esp + 0x10]
shr edi, cl
add edi, eax
mov eax, dword [esp + 0x24]
mov eax, dword [eax + edi*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add ecx, ebx
cmp ecx, esi
ja 0x100bc860
movzx ecx, byte [esp + 0x2d]
mov edi, dword [esp + 0x34]
shr dword [esp + 0x10], cl
sub esi, ecx
mov ebx, dword [esp + 0x18]
mov dword [edi + 0x1bc8], ecx
mov ecx, eax
shr ecx, 8
movzx edx, cl
add dword [edi + 0x1bc8], edx
mov ecx, edx
shr dword [esp + 0x10], cl
sub esi, edx
mov ecx, eax
shr ecx, 0x10
mov dword [edi + 0x44], ecx
test al, al
jne 0x100bc905
mov dword [edi + 4], 0x3f4d
jmp 0x100bc1fb
mov edx, dword [esp + 0x10]
test al, 0x20
je 0x100bc923
mov dword [edi + 0x1bc8], 0xffffffff
mov dword [edi + 4], 0x3f3f
jmp 0x100bc1ff
test al, 0x40
je 0x100bc93e
mov ecx, dword [esp + 0x14]
mov dword [ecx + 0x18], str.invalid_literal_length_code
mov dword [edi + 4], 0x3f51
jmp 0x100bc203
movzx eax, al
and eax, 0xf
mov dword [edi + 4], 0x3f49
mov dword [edi + 0x4c], eax
mov eax, dword [edi + 0x4c]
test eax, eax
je 0x100bc9a1
cmp esi, eax
jae 0x100bc983
nop dword [eax]
test ebp, ebp
je 0x100bcd7f
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
add edx, eax
mov dword [esp + 0x18], ebx
add esi, 8
mov dword [esp + 0x10], edx
dec ebp
cmp esi, dword [edi + 0x4c]
jb 0x100bc960
mov ecx, dword [edi + 0x4c]
mov eax, 1
shl eax, cl
sub esi, ecx
dec eax
and eax, edx
shr edx, cl
add dword [edi + 0x44], eax
add dword [edi + 0x1bc8], ecx
mov dword [esp + 0x10], edx
mov eax, dword [edi + 0x44]
mov dword [edi + 0x1bcc], eax
mov dword [edi + 4], 0x3f4a
mov eax, dword [edi + 0x54]
mov ecx, dword [edi + 0x5c]
mov dword [esp + 0x24], eax
mov eax, 1
shl eax, cl
mov dword [esp + 0x38], ecx
dec eax
mov ecx, dword [edi + 0x54]
and eax, edx
mov eax, dword [ecx + eax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
jbe 0x100bca2f
nop dword [eax + eax]
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x38]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x38], eax
test ebp, ebp
je 0x100bcd7f
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
mov ecx, dword [esp + 0x38]
add edx, eax
mov eax, 1
mov dword [esp + 0x10], edx
shl eax, cl
add esi, 8
mov ecx, dword [esp + 0x24]
dec eax
and eax, edx
mov dword [esp + 0x18], ebx
dec ebp
mov eax, dword [ecx + eax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
ja 0x100bc9e0
mov dword [esp + 0x38], eax
test al, 0xf0
jne 0x100bcaf9
mov ecx, eax
mov ebx, 1
shr ecx, 8
mov edx, eax
movzx edi, cl
movzx ecx, al
add ecx, edi
shr eax, 0x10
shl ebx, cl
mov ecx, edi
dec ebx
mov dword [esp + 0x2c], edx
and ebx, dword [esp + 0x10]
shr ebx, cl
mov ecx, dword [esp + 0x24]
add ebx, eax
mov eax, dword [ecx + ebx*4]
mov ecx, edx
shr ecx, 8
movzx edi, cl
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add edi, ecx
cmp edi, esi
jbe 0x100bcae2
mov eax, dword [esp + 0x24]
mov dword [esp + 0x24], eax
test ebp, ebp
je 0x100bcd7b
mov ebx, dword [esp + 0x18]
mov ecx, esi
mov edi, 1
add esi, 8
dec ebp
movzx eax, byte [ebx]
inc ebx
shl eax, cl
add dword [esp + 0x10], eax
movzx eax, word [esp + 0x2e]
mov dword [esp + 0x18], ebx
movzx ebx, byte [esp + 0x2d]
movzx ecx, dl
add ecx, ebx
shl edi, cl
mov ecx, ebx
dec edi
and edi, dword [esp + 0x10]
shr edi, cl
add edi, eax
mov eax, dword [esp + 0x24]
mov eax, dword [eax + edi*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add ecx, ebx
cmp ecx, esi
ja 0x100bca84
movzx ecx, byte [esp + 0x2d]
mov edi, dword [esp + 0x34]
sub esi, ecx
mov edx, dword [esp + 0x10]
shr edx, cl
add dword [edi + 0x1bc8], ecx
mov ebx, dword [esp + 0x18]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add dword [edi + 0x1bc8], ecx
sub esi, ecx
shr edx, cl
mov dword [esp + 0x10], edx
test al, 0x40
je 0x100bcb2e
mov ecx, dword [esp + 0x14]
mov dword [ecx + 0x18], str.invalid_distance_code
mov dword [edi + 4], 0x3f51
jmp 0x100bc203
mov ecx, eax
mov dword [edi + 4], 0x3f4b
shr ecx, 0x10
movzx eax, al
and eax, 0xf
mov dword [edi + 0x48], ecx
mov dword [edi + 0x4c], eax
mov eax, dword [edi + 0x4c]
test eax, eax
je 0x100bcb92
cmp esi, eax
jae 0x100bcb74
test ebp, ebp
je 0x100bcd7f
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
add edx, eax
mov dword [esp + 0x18], ebx
add esi, 8
mov dword [esp + 0x10], edx
dec ebp
cmp esi, dword [edi + 0x4c]
jb 0x100bcb51
mov ecx, dword [edi + 0x4c]
mov eax, 1
shl eax, cl
sub esi, ecx
dec eax
and eax, edx
shr edx, cl
add dword [edi + 0x48], eax
add dword [edi + 0x1bc8], ecx
mov dword [esp + 0x10], edx
mov dword [edi + 4], 0x3f4c
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je 0x100bcd7f
mov eax, dword [esp + 0x30]
sub eax, ecx
mov ecx, dword [edi + 0x48]
cmp ecx, eax
jbe 0x100bcc12
sub ecx, eax
mov dword [esp + 0x2c], ecx
cmp ecx, dword [edi + 0x30]
jbe 0x100bcbe1
cmp dword [edi + 0x1bc4], 0
je 0x100bcbe1
mov ecx, dword [esp + 0x14]
mov dword [ecx + 0x18], str.invalid_distance_too_far_back
mov dword [edi + 4], 0x3f51
jmp 0x100bc203
mov eax, dword [edi + 0x34]
cmp ecx, eax
jbe 0x100bcbf1
sub ecx, eax
mov eax, dword [edi + 0x2c]
mov dword [esp + 0x2c], ecx
sub eax, ecx
add eax, dword [edi + 0x38]
mov dword [esp + 0x38], eax
mov eax, dword [edi + 0x44]
mov ecx, eax
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x2c]
cmp eax, ecx
cmovbe ecx, eax
mov eax, dword [esp + 0x24]
jmp 0x100bcc21
mov eax, dword [esp + 0x20]
sub eax, ecx
mov dword [esp + 0x38], eax
mov eax, dword [edi + 0x44]
mov ecx, eax
mov edx, dword [esp + 0x1c]
cmp ecx, edx
mov ebx, dword [esp + 0x38]
cmova ecx, edx
sub edx, ecx
sub eax, ecx
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x20]
sub ebx, edx
mov dword [edi + 0x44], eax
nop
mov al, byte [ebx + edx]
mov byte [edx], al
inc edx
sub ecx, 1
jne 0x100bcc40
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0x10]
cmp dword [edi + 0x44], ecx
jne 0x100bc1ff
mov dword [edi + 4], 0x3f48
jmp 0x100bc1ff
cmp dword [esp + 0x1c], 0
je 0x100bcd7f
mov edx, dword [esp + 0x20]
mov al, byte [edi + 0x44]
inc dword [esp + 0x20]
dec dword [esp + 0x1c]
mov byte [edx], al
mov edx, dword [esp + 0x10]
mov dword [edi + 4], 0x3f48
jmp 0x100bc203
cmp dword [edi + 0xc], 0
je 0x100bcd60
cmp esi, 0x20
jae 0x100bccce
test ebp, ebp
je 0x100bcd7f
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
add edx, eax
mov dword [esp + 0x18], ebx
add esi, 8
mov dword [esp + 0x10], edx
dec ebp
cmp esi, 0x20
jb 0x100bcca7
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x30]
sub eax, dword [esp + 0x1c]
add dword [ecx + 0x14], eax
add dword [edi + 0x20], eax
test byte [edi + 0xc], 4
je 0x100bcd06
test eax, eax
je 0x100bcd06
mov edx, dword [esp + 0x20]
mov ecx, dword [edi + 0x1c]
sub edx, eax
push eax
call fcn.10111810
mov ecx, dword [esp + 0x18]
add esp, 4
mov edx, dword [esp + 0x10]
mov dword [edi + 0x1c], eax
mov dword [ecx + 0x30], eax
test byte [edi + 0xc], 4
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x30], eax
je 0x100bcd56
mov eax, edx
bswap eax
cmp eax, dword [edi + 0x1c]
je 0x100bcd56
mov dword [ecx + 0x18], str.incorrect_data_check
mov dword [edi + 4], 0x3f51
jmp 0x100bc203
mov eax, dword [esp + 0x20]
mov dword [ecx + 0xc], eax
mov eax, dword [esp + 0x1c]
mov dword [ecx + 0x10], eax
mov eax, 2
mov dword [ecx], ebx
mov dword [ecx + 4], ebp
mov dword [edi + 0x40], esi
mov dword [edi + 0x3c], edx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x34
ret
mov dword [esp + 0x10], 0
xor esi, esi
mov dword [edi + 4], 0x3f50
mov dword [esp + 0x28], 1
jmp 0x100bcd7f
mov dword [esp + 0x28], 0xfffffffd
jmp 0x100bcd7f
mov edi, dword [esp + 0x34]
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x20]
mov dword [ebx + 0xc], eax
mov eax, dword [esp + 0x1c]
mov dword [ebx + 0x10], eax
mov eax, dword [esp + 0x18]
mov dword [ebx], eax
mov eax, dword [esp + 0x10]
mov dword [ebx + 4], ebp
cmp dword [edi + 0x2c], 0
mov ebp, dword [esp + 0x30]
mov dword [edi + 0x3c], eax
mov dword [edi + 0x40], esi
jne 0x100bcdbc
cmp ebp, dword [ebx + 0x10]
je 0x100bcde7
cmp dword [edi + 4], 0x3f51
jge 0x100bcde7
mov edx, dword [ebx + 0xc]
mov eax, ebp
sub eax, dword [ebx + 0x10]
mov ecx, ebx
push eax
call fcn.100bbcf0
add esp, 4
test eax, eax
je 0x100bcde7
mov dword [edi + 4], 0x3f52
pop edi
pop esi
pop ebp
mov eax, 0xfffffffc
pop ebx
add esp, 0x34
ret
mov eax, dword [esp + 0x40]
sub eax, dword [ebx + 4]
sub ebp, dword [ebx + 0x10]
add dword [ebx + 8], eax
add dword [ebx + 0x14], ebp
add dword [edi + 0x20], ebp
test byte [edi + 0xc], 4
mov dword [esp + 0x40], eax
je 0x100bce1f
test ebp, ebp
je 0x100bce1f
mov edx, dword [ebx + 0xc]
mov ecx, dword [edi + 0x1c]
sub edx, ebp
push ebp
call fcn.10111810
mov dword [edi + 0x1c], eax
add esp, 4
mov dword [ebx + 0x30], eax
mov edx, dword [edi + 4]
cmp edx, 0x3f47
je 0x100bce36
cmp edx, 0x3f42
je 0x100bce36
xor esi, esi
jmp 0x100bce3b
mov esi, 0x100
mov ecx, dword [edi + 8]
neg ecx
mov dword [esp + 0x3c], 0x80
sbb ecx, ecx
xor eax, eax
and ecx, 0x40
cmp edx, 0x3f3f
cmove eax, dword [esp + 0x3c]
add ecx, eax
mov eax, dword [esp + 0x28]
add ecx, dword [edi + 0x40]
add ecx, esi
cmp dword [esp + 0x40], 0
mov dword [ebx + 0x2c], ecx
jne 0x100bc219
test ebp, ebp
jne 0x100bc219
pop edi
pop esi
test eax, eax
mov ecx, 0xfffffffb
pop ebp
cmove eax, ecx
pop ebx
add esp, 0x34
ret