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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x8c
mov ebx, dword [esp + 0xa0]
test ebx, ebx
je case.default.0xbcacad
mov eax, dword [esp + 0xa0]
mov ecx, dword [eax + 0x20]
test ecx, ecx
je case.default.0xbcacad
mov edx, dword [eax + 0x24]
test edx, edx
je case.default.0xbcacad
mov ebp, dword [eax + 0x1c]
mov dword [esp + 0x24], 0xfffffffe
test ebp, ebp
je 0xbcabd1
mov eax, dword [ebp]
cmp dword [esp + 0xa0], eax
je 0xbcabe0
mov eax, dword [esp + 0x24]
add esp, 0x8c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [ebp + 4]
lea edx, [eax - 0x3f34]
cmp edx, 0x1f
ja 0xbcabd1
mov edi, dword [esp + 0xa0]
mov edi, dword [edi + 0xc]
test edi, edi
mov dword [esp + 0x30], edi
je 0xbcabd1
mov esi, dword [esp + 0xa0]
mov edi, dword [esp + 0xa0]
mov esi, dword [esi]
mov edi, dword [edi + 4]
test esi, esi
mov dword [esp + 0x38], edi
je 0xbcaca0
cmp eax, 0x3f3f
je 0xbcac90
mov eax, dword [esp + 0xa0]
mov edi, dword [ebp + 0x3c]
mov ecx, dword [esp + 0xa4]
mov ebx, dword [ebp + 0x40]
mov dword [esp + 0x24], ebp
mov eax, dword [eax + 0x10]
mov dword [esp + 0x28], edi
lea edi, [ecx - 5]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x34], eax
lea eax, [ebp + 0x534]
mov dword [esp + 0x4c], edi
mov edi, dword [esp + 0x38]
mov dword [esp + 0x54], eax
lea eax, [ebp + 0x2f4]
mov ebp, edi
mov dword [esp + 0x50], eax
mov edi, esi
mov esi, ebx
cmp edx, 0x1e
jbe switch.0x00bcacad
mov dword [esp + 0x24], 0xfffffffe
mov eax, dword [esp + 0x24]
add esp, 0x8c
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [ebp + 4], 0x3f40
mov edx, 0xc
jmp 0xbcac26
test edi, edi
je 0xbcac1f
jmp 0xbcabd1
jmp dword [edx*4 + 0xe19e50]
mov dword [esp + 0x28], esi
mov esi, ecx
test bl, bl
jne 0xbcc572
mov ebx, dword [esp + 0x24]
sub esi, eax
mov ecx, edx
shr dword [esp + 0x28], cl
mov dword [ebx + 0x1bc8], eax
movzx eax, word [esp + 0x40]
mov dword [ebx + 0x44], eax
mov eax, dword [esp + 0x24]
mov dword [eax + 4], 0x3f4d
mov ebx, dword [esp + 0x2c]
test ebx, ebx
je 0xbcc000
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x30]
mov eax, dword [edx + 0x44]
mov byte [ecx], al
mov eax, ebx
mov dword [edx + 4], 0x3f48
sub eax, 1
mov dword [esp + 0x2c], eax
lea eax, [ecx + 1]
mov dword [esp + 0x30], eax
cmp ebp, 5
jbe 0xbcad2b
mov eax, dword [esp + 0x2c]
cmp eax, 0x101
ja 0xbcc0b0
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 0x58]
mov ebx, dword [eax + 0x50]
mov dword [eax + 0x1bc8], 0
mov eax, 1
shl eax, cl
mov dword [esp + 0x3c], ebx
sub eax, 1
mov edx, eax
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x28]
and eax, edx
lea eax, [ebx + eax*4]
movzx edx, byte [eax + 1]
movzx ebx, byte [eax]
movzx eax, word [eax + 2]
mov word [esp + 0x40], ax
movzx eax, dl
cmp esi, eax
jae 0xbcacba
test ebp, ebp
je 0xbcc000
mov ecx, esi
mov esi, dword [esp + 0x28]
jmp 0xbcad98
test ebp, ebp
je 0xbcc090
add edi, 1
movzx eax, byte [edi - 1]
mov ebx, dword [esp + 0x3c]
sub ebp, 1
shl eax, cl
add ecx, 8
add esi, eax
mov eax, dword [esp + 0x44]
and eax, esi
lea eax, [ebx + eax*4]
movzx edx, byte [eax + 1]
movzx ebx, byte [eax]
movzx eax, word [eax + 2]
mov word [esp + 0x40], ax
movzx eax, dl
cmp eax, ecx
ja 0xbcad90
jmp 0xbcacb4
mov eax, dword [esp + 0x24]
mov ebx, dword [eax + 0x4c]
test ebx, ebx
je 0xbcae41
cmp esi, ebx
jae 0xbcae14
test ebp, ebp
je 0xbcc000
mov edx, dword [esp + 0x28]
mov ecx, esi
jmp 0xbcadf9
test ebp, ebp
je 0xbcb842
add edi, 1
movzx eax, byte [edi - 1]
sub ebp, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, ebx
jb 0xbcadf1
mov dword [esp + 0x28], edx
mov esi, ecx
mov ecx, ebx
mov eax, 1
mov edx, dword [esp + 0x28]
shl eax, cl
mov ecx, dword [esp + 0x24]
sub esi, ebx
sub eax, 1
and eax, edx
add dword [ecx + 0x48], eax
mov ecx, ebx
shr edx, cl
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x28], edx
add dword [ecx + 0x1bc8], ebx
mov eax, dword [esp + 0x24]
mov dword [eax + 4], 0x3f4c
mov ebx, dword [esp + 0x2c]
test ebx, ebx
je 0xbcc000
mov eax, dword [esp + 0x34]
sub eax, ebx
mov ebx, dword [esp + 0x24]
mov edx, dword [ebx + 0x48]
cmp eax, edx
jae 0xbcbf00
sub edx, eax
cmp edx, dword [ebx + 0x30]
mov eax, ebx
mov ecx, edx
jbe 0xbcc060
mov edx, dword [ebx + 0x1bc4]
test edx, edx
je 0xbcc060
mov ebx, esi
mov esi, edi
mov edi, ebp
mov ebp, eax
mov eax, dword [esp + 0xa0]
mov dword [eax + 0x18], 0xe19e05
mov dword [ebp + 4], 0x3f51
mov esi, esi
lea edi, [edi]
mov dword [esp + 0x24], 0xfffffffd
nop
lea esi, [esi]
mov eax, dword [esp + 0xa0]
mov ecx, dword [esp + 0x30]
mov dword [eax + 0xc], ecx
mov ecx, eax
mov eax, dword [esp + 0x2c]
mov dword [ecx], esi
mov dword [ecx + 4], edi
mov esi, dword [esp + 0x28]
mov dword [ecx + 0x10], eax
mov ecx, dword [ebp + 0x2c]
mov dword [ebp + 0x40], ebx
mov dword [ebp + 0x3c], esi
test ecx, ecx
jne 0xbcaf20
cmp dword [esp + 0x34], eax
je 0xbcafc5
mov eax, dword [ebp + 4]
cmp eax, 0x3f50
ja 0xbcafc5
cmp eax, 0x3f4d
jbe 0xbcaf20
cmp dword [esp + 0xa4], 4
je 0xbcafc5
lea esi, [esi]
mov eax, dword [esp + 0xa0]
mov esi, dword [esp + 0x34]
sub esi, dword [esp + 0x2c]
mov ebx, dword [eax + 0x1c]
mov eax, dword [ebx + 0x38]
test eax, eax
je 0xbcc325
mov edx, dword [ebx + 0x2c]
test edx, edx
jne 0xbcaf5f
mov ecx, dword [ebx + 0x28]
mov edx, 1
mov dword [ebx + 0x34], 0
mov dword [ebx + 0x30], 0
shl edx, cl
mov dword [ebx + 0x2c], edx
cmp esi, edx
jae 0xbcb1e0
mov ecx, dword [ebx + 0x34]
mov edi, esi
sub edx, ecx
cmp esi, edx
jbe 0xbcaf74
mov edi, edx
mov edx, dword [esp + 0x30]
add eax, ecx
mov dword [esp + 8], edi
mov dword [esp], eax
sub edx, esi
mov dword [esp + 4], edx
call sub.msvcrt.dll_memcpy
sub esi, edi
jne 0xbcb211
mov edx, dword [ebx + 0x34]
mov eax, dword [ebx + 0x2c]
add edx, edi
cmp edx, eax
mov dword [ebx + 0x34], edx
je 0xbcb205
mov edx, dword [ebx + 0x30]
cmp eax, edx
jbe 0xbcafb4
lea eax, [edi + edx]
mov dword [ebx + 0x30], eax
mov eax, dword [esp + 0xa0]
mov edi, dword [eax + 4]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0xa0]
mov ebx, dword [esp + 0x38]
mov esi, dword [esp + 0x34]
sub esi, dword [esp + 0x2c]
sub ebx, edi
add dword [eax + 0x14], esi
add dword [eax + 8], ebx
add dword [ebp + 0x20], esi
test byte [ebp + 0xc], 4
je 0xbcb021
test esi, esi
je 0xbcb021
mov edx, dword [ebp + 0x14]
mov dword [esp + 8], esi
mov eax, dword [eax + 0xc]
test edx, edx
mov dword [esp + 0x28], eax
je 0xbcb1c0
sub eax, esi
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp], eax
call fcn.00bcf7b0
mov edi, dword [esp + 0xa0]
mov dword [ebp + 0x1c], eax
mov dword [edi + 0x30], eax
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0x40]
test eax, eax
je 0xbcb030
mov eax, 0x40
mov ecx, dword [ebp + 4]
add edx, eax
cmp ecx, 0x3f3f
je 0xbcb090
cmp ecx, 0x3f47
je 0xbcb04f
xor eax, eax
cmp ecx, 0x3f42
jne 0xbcb054
mov eax, 0x100
mov edi, dword [esp + 0xa0]
add eax, edx
or ebx, esi
mov dword [edi + 0x2c], eax
je 0xbcb072
cmp dword [esp + 0xa4], 4
jne 0xbcabd1
mov eax, dword [esp + 0x24]
test eax, eax
jne 0xbcabd1
mov dword [esp + 0x24], 0xfffffffb
jmp 0xbcabd1
sub edx, 0xffffff80
xor eax, eax
jmp 0xbcb054
mov eax, dword [esp + 0x24]
mov ebx, dword [eax + 0x4c]
test ebx, ebx
jne 0xbcc140
mov eax, dword [esp + 0x24]
mov ebx, dword [esp + 0x24]
mov eax, dword [eax + 0x44]
mov dword [ebx + 0x1bcc], eax
mov dword [ebx + 4], 0x3f4a
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 0x5c]
mov ebx, dword [eax + 0x54]
mov eax, 1
shl eax, cl
mov dword [esp + 0x40], ebx
sub eax, 1
mov edx, eax
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x28]
and eax, edx
lea eax, [ebx + eax*4]
movzx edx, byte [eax + 1]
movzx ebx, byte [eax]
movzx eax, word [eax + 2]
mov word [esp + 0x3c], ax
movzx eax, dl
cmp esi, eax
mov dword [esp + 0x44], eax
jae 0xbcb15b
test ebp, ebp
je 0xbcc000
mov ecx, esi
mov esi, ebp
mov ebp, dword [esp + 0x28]
jmp 0xbcb11a
test esi, esi
je 0xbcc040
add edi, 1
movzx eax, byte [edi - 1]
mov ebx, dword [esp + 0x40]
sub esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
mov eax, dword [esp + 0x48]
and eax, ebp
lea eax, [ebx + eax*4]
movzx edx, byte [eax + 1]
movzx ebx, byte [eax]
movzx eax, word [eax + 2]
mov word [esp + 0x3c], ax
movzx eax, dl
cmp eax, ecx
mov dword [esp + 0x44], eax
ja 0xbcb112
mov dword [esp + 0x28], ebp
mov ebp, esi
mov esi, ecx
test bl, 0xf0
je 0xbcc371
mov edx, dword [esp + 0x24]
mov dword [esp + 0x48], eax
mov edx, dword [edx + 0x1bc8]
mov dword [esp + 0x40], edx
add edx, eax
mov ecx, eax
mov eax, dword [esp + 0x24]
shr dword [esp + 0x28], cl
sub esi, dword [esp + 0x44]
test bl, 0x40
mov dword [eax + 0x1bc8], edx
je 0xbcc5c0
mov ebx, esi
mov esi, edi
mov edi, ebp
mov ebp, eax
mov eax, dword [esp + 0xa0]
mov dword [eax + 0x18], 0xe19def
mov dword [ebp + 4], 0x3f51
jmp 0xbcaeb0
sub eax, esi
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp], eax
call fcn.00bcf070
jmp 0xbcb014
mov ecx, dword [esp + 0x30]
mov dword [esp + 8], edx
mov dword [esp], eax
sub ecx, edx
mov dword [esp + 4], ecx
call sub.msvcrt.dll_memcpy
mov dword [ebx + 0x34], 0
mov eax, dword [ebx + 0x2c]
jmp 0xbcafb1
mov dword [ebx + 0x34], 0
jmp 0xbcafa7
mov eax, dword [esp + 0x30]
mov edx, dword [ebx + 0x38]
mov dword [esp + 8], esi
sub eax, esi
mov dword [esp], edx
mov dword [esp + 4], eax
call sub.msvcrt.dll_memcpy
mov dword [ebx + 0x34], esi
mov eax, dword [ebx + 0x2c]
jmp 0xbcafb1
cmp esi, 0x1f
ja 0xbcb272
test ebp, ebp
je 0xbcc000
mov edx, dword [esp + 0x28]
mov ecx, esi
jmp 0xbcb258
test ebp, ebp
je 0xbcb842
add edi, 1
movzx eax, byte [edi - 1]
sub ebp, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0x1f
jbe 0xbcb250
mov dword [esp + 0x28], edx
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x24]
test eax, eax
je 0xbcb284
mov esi, dword [esp + 0x28]
mov dword [eax + 4], esi
mov eax, dword [esp + 0x24]
test byte [eax + 0x15], 2
je 0xbcb298
test byte [eax + 0xc], 4
jne 0xbccbc8
mov dword [eax + 4], 0x3f37
xor esi, esi
mov dword [esp + 0x28], 0
test ebp, ebp
je 0xbcc000
mov edx, dword [esp + 0x28]
mov ecx, esi
jmp 0xbcb2c8
test ebp, ebp
je 0xbcb842
add edi, 1
movzx eax, byte [edi - 1]
sub ebp, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0xf
jbe 0xbcb2c0
mov dword [esp + 0x28], edx
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x24]
test eax, eax
je 0xbcb2fd
mov ebx, dword [esp + 0x28]
movzx edx, bl
shr ebx, 8
mov dword [eax + 8], edx
mov dword [eax + 0xc], ebx
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x14]
test dh, 2
mov ebx, edx
je 0xbcb315
test byte [eax + 0xc], 4
jne 0xbcc9f9
xor esi, esi
test dh, 4
mov dword [eax + 4], 0x3f38
mov dword [esp + 0x28], 0
je 0xbcc020
test ebp, ebp
je 0xbcc000
mov ebx, dword [esp + 0x28]
mov ecx, esi
jmp 0xbcb348
test ebp, ebp
je 0xbcb880
add edi, 1
movzx eax, byte [edi - 1]
sub ebp, 1
shl eax, cl
add ecx, 8
add ebx, eax
cmp ecx, 0xf
jbe 0xbcb340
mov eax, dword [esp + 0x24]
mov dword [esp + 0x28], ebx
mov esi, ebx
mov dword [eax + 0x44], esi
mov eax, dword [eax + 0x24]
test eax, eax
je 0xbcb375
mov dword [eax + 0x14], esi
test dh, 2
je 0xbcb388
mov eax, dword [esp + 0x24]
test byte [eax + 0xc], 4
jne 0xbcccb8
mov eax, edx
mov ebx, edx
xor esi, esi
and eax, 0x400
mov dword [esp + 0x28], 0
mov edx, dword [esp + 0x24]
mov dword [edx + 4], 0x3f39
test eax, eax
je 0xbcb450
mov eax, dword [esp + 0x24]
mov dword [esp + 0x3c], ebp
mov eax, dword [eax + 0x44]
cmp ebp, eax
jbe 0xbcb3c1
mov dword [esp + 0x3c], eax
mov edx, dword [esp + 0x3c]
test edx, edx
je 0xbcb441
mov edx, dword [esp + 0x24]
mov edx, dword [edx + 0x24]
test edx, edx
je 0xbcb416
mov ecx, dword [edx + 0x10]
test ecx, ecx
mov dword [esp + 0x40], ecx
je 0xbcb416
mov ebx, dword [edx + 0x14]
mov edx, dword [edx + 0x18]
sub ebx, eax
mov eax, dword [esp + 0x3c]
add eax, ebx
mov ecx, eax
mov eax, dword [esp + 0x3c]
cmp ecx, edx
jbe 0xbcb3fb
mov eax, edx
sub eax, ebx
add ebx, dword [esp + 0x40]
mov dword [esp + 8], eax
mov dword [esp + 4], edi
mov dword [esp], ebx
call sub.msvcrt.dll_memcpy
mov eax, dword [esp + 0x24]
mov ebx, dword [eax + 0x14]
and bh, 2
je 0xbcb429
mov eax, dword [esp + 0x24]
test byte [eax + 0xc], 4
jne 0xbccb43
mov ebx, dword [esp + 0x24]
mov edx, dword [esp + 0x3c]
mov eax, dword [ebx + 0x44]
sub ebp, edx
add edi, edx
mov dword [esp + 0x3c], eax
sub eax, edx
mov dword [ebx + 0x44], eax
test eax, eax
jne 0xbcc000
mov eax, dword [esp + 0x24]
mov ebx, dword [eax + 0x14]
mov eax, dword [esp + 0x24]
mov dword [eax + 0x44], 0
mov dword [eax + 4], 0x3f3a
test bh, 8
je 0xbcb860
test ebp, ebp
je 0xbcc000
mov dword [esp + 0x40], esi
xor ebx, ebx
mov dword [esp + 0x3c], ebp
mov esi, dword [esp + 0x24]
jmp 0xbcb489
cmp dword [esp + 0x3c], ebx
jbe 0xbcb4b5
mov eax, dword [esi + 0x24]
add ebx, 1
movzx edx, byte [edi + ebx - 1]
test eax, eax
je 0xbcb4b1
mov ebp, dword [eax + 0x1c]
test ebp, ebp
je 0xbcb4b1
mov ecx, dword [esi + 0x44]
cmp ecx, dword [eax + 0x20]
jae 0xbcb4b1
lea eax, [ecx + 1]
mov dword [esi + 0x44], eax
mov byte [ebp + ecx], dl
test dl, dl
jne 0xbcb483
mov eax, dword [esp + 0x24]
mov ebp, dword [esp + 0x3c]
mov esi, dword [esp + 0x40]
test byte [eax + 0x15], 2
je 0xbcb4d1
test byte [eax + 0xc], 4
jne 0xbcc658
sub ebp, ebx
add edi, ebx
test dl, dl
jne 0xbcc000
mov eax, dword [esp + 0x24]
mov ebx, dword [eax + 0x14]
mov eax, dword [esp + 0x24]
mov dword [eax + 0x44], 0
mov dword [eax + 4], 0x3f3b
test bh, 0x10
je 0xbcb7e0
test ebp, ebp
je 0xbcc000
mov dword [esp + 0x40], esi
xor ebx, ebx
mov dword [esp + 0x3c], ebp
mov esi, dword [esp + 0x24]
jmp 0xbcb526
cmp dword [esp + 0x3c], ebx
jbe 0xbcb552
mov eax, dword [esi + 0x24]
add ebx, 1
movzx edx, byte [edi + ebx - 1]
test eax, eax
je 0xbcb54e
mov ebp, dword [eax + 0x24]
test ebp, ebp
je 0xbcb54e
mov ecx, dword [esi + 0x44]
cmp ecx, dword [eax + 0x28]
jae 0xbcb54e
lea eax, [ecx + 1]
mov dword [esi + 0x44], eax
mov byte [ebp + ecx], dl
test dl, dl
jne 0xbcb520
mov eax, dword [esp + 0x24]
mov ebp, dword [esp + 0x3c]
mov esi, dword [esp + 0x40]
test byte [eax + 0x15], 2
je 0xbcb56e
test byte [eax + 0xc], 4
jne 0xbcc630
sub ebp, ebx
add edi, ebx
test dl, dl
jne 0xbcc000
mov eax, dword [esp + 0x24]
mov ebx, dword [eax + 0x14]
mov eax, dword [esp + 0x24]
mov dword [eax + 4], 0x3f3c
test bh, 2
je 0xbcb62a
cmp esi, 0xf
ja 0xbcb5e4
test ebp, ebp
je 0xbcc000
lea eax, [ebp - 1]
mov ecx, esi
lea edx, [edi + 1]
mov dword [esp + 0x3c], eax
movzx eax, byte [edi]
shl eax, cl
lea ecx, [esi + 8]
add dword [esp + 0x28], eax
cmp ecx, 0xf
ja 0xbcca49
mov eax, dword [esp + 0x3c]
test eax, eax
je 0xbcca54
movzx eax, byte [edi + 1]
lea edx, [edi + 2]
sub ebp, 2
add esi, 0x10
shl eax, cl
add dword [esp + 0x28], eax
mov edi, edx
mov edx, dword [esp + 0x24]
test byte [edx + 0xc], 4
je 0xbcb620
movzx eax, word [edx + 0x1c]
cmp eax, dword [esp + 0x28]
je 0xbcb620
mov eax, dword [esp + 0xa0]
mov ebx, esi
mov esi, edi
mov edi, ebp
mov ebp, edx
mov dword [eax + 0x18], str.header_crc_mismatch
mov dword [edx + 4], 0x3f51
jmp 0xbcaeb0
xor esi, esi
mov dword [esp + 0x28], 0
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x24]
test eax, eax
je 0xbcb647
sar ebx, 9
mov dword [eax + 0x30], 1
mov edx, ebx
and edx, 1
mov dword [eax + 0x2c], edx
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.00bcf7b0
mov ebx, dword [esp + 0x24]
mov edx, dword [esp + 0xa0]
mov dword [ebx + 0x1c], eax
mov dword [edx + 0x30], eax
mov dword [ebx + 4], 0x3f3f
mov ebx, edi
lea esi, [esi]
cmp dword [esp + 0x4c], 1
jbe 0xbccdc9
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 8]
test edx, edx
jne 0xbcb800
cmp esi, 2
ja 0xbccc2e
test ebp, ebp
je 0xbccc44
movzx eax, byte [ebx]
mov ecx, esi
lea edi, [ebx + 1]
sub ebp, 1
add esi, 8
shl eax, cl
add dword [esp + 0x28], eax
mov ecx, dword [esp + 0x24]
mov ebx, dword [esp + 0x28]
mov eax, ebx
and eax, 1
mov dword [ecx + 8], eax
mov eax, ebx
shr eax, 1
and eax, 3
cmp eax, 2
je 0xbcc7dc
cmp eax, 3
je 0xbcc7b0
cmp eax, 1
je 0xbcbd26
mov eax, ebx
mov dword [ecx + 4], 0x3f41
sub esi, 3
shr eax, 3
mov ebx, edi
mov dword [esp + 0x28], eax
mov ecx, esi
and esi, 0xfffffff8
and ecx, 7
shr dword [esp + 0x28], cl
cmp esi, 0x1f
ja 0xbcb7a3
test ebp, ebp
je 0xbcc000
movzx eax, byte [ebx]
mov ecx, esi
add edi, 1
lea edx, [ebp - 1]
shl eax, cl
lea ecx, [esi + 8]
add dword [esp + 0x28], eax
cmp ecx, 0x1f
ja 0xbcc977
test edx, edx
je 0xbcca3c
movzx eax, byte [ebx + 1]
lea edx, [ebp - 2]
lea edi, [ebx + 2]
shl eax, cl
lea ecx, [esi + 0x10]
add dword [esp + 0x28], eax
cmp ecx, 0x1f
ja 0xbcc977
test edx, edx
je 0xbcca3c
movzx eax, byte [ebx + 2]
lea edx, [ebp - 3]
lea edi, [ebx + 3]
shl eax, cl
lea ecx, [esi + 0x18]
add dword [esp + 0x28], eax
cmp ecx, 0x1f
ja 0xbcc977
test edx, edx
je 0xbcca3c
movzx eax, byte [ebx + 3]
lea edi, [ebx + 4]
sub ebp, 4
add esi, 0x20
shl eax, cl
add dword [esp + 0x28], eax
mov edx, dword [esp + 0x28]
movzx eax, dx
shr edx, 0x10
xor edx, 0xffff
cmp eax, edx
je 0xbcc911
mov ebx, esi
mov eax, dword [esp + 0xa0]
mov esi, edi
mov edi, ebp
mov ebp, dword [esp + 0x24]
mov dword [eax + 0x18], str.invalid_stored_block_lengths
mov dword [ebp + 4], 0x3f51
jmp 0xbcaeb0
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x24]
test eax, eax
je 0xbcb581
mov dword [eax + 0x24], 0
jmp 0xbcb581
mov ecx, esi
mov edi, ebp
mov ebp, dword [esp + 0x24]
and ecx, 7
shr dword [esp + 0x28], cl
mov dword [esp + 0x3c], ebx
mov ebx, esi
and ebx, 0xfffffff8
mov dword [ebp + 4], 0x3f4e
mov edx, dword [ebp + 0xc]
test edx, edx
jne 0xbcc1b0
mov esi, dword [esp + 0x3c]
mov dword [ebp + 4], 0x3f50
mov dword [esp + 0x24], 1
jmp 0xbcaec0
mov esi, edi
mov dword [esp + 0x28], edx
mov edi, ebp
mov ebx, ecx
mov ebp, dword [esp + 0x24]
mov dword [esp + 0x24], 0
jmp 0xbcaec0
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x24]
test eax, eax
je 0xbcb4e4
mov dword [eax + 0x1c], 0
jmp 0xbcb4e4
mov esi, edi
mov dword [esp + 0x28], ebx
mov edi, ebp
mov ebx, ecx
mov ebp, dword [esp + 0x24]
mov dword [esp + 0x24], 0
jmp 0xbcaec0
cmp esi, 0xf
jbe 0xbcb2a9
jmp 0xbcb2e2
cmp esi, 0x1f
ja 0xbcce10
test ebp, ebp
je 0xbcc000
movzx eax, byte [edi]
mov ecx, esi
lea edx, [ebp - 1]
lea ebx, [edi + 1]
shl eax, cl
lea ecx, [esi + 8]
add dword [esp + 0x28], eax
cmp ecx, 0x1f
ja 0xbcc970
test edx, edx
je 0xbccc37
movzx eax, byte [edi + 1]
lea edx, [ebp - 2]
lea ebx, [edi + 2]
shl eax, cl
lea ecx, [esi + 0x10]
add dword [esp + 0x28], eax
cmp ecx, 0x1f
ja 0xbcc970
test edx, edx
je 0xbccc37
movzx eax, byte [edi + 2]
add esi, 0x18
lea edx, [ebp - 3]
lea ebx, [edi + 3]
shl eax, cl
add dword [esp + 0x28], eax
cmp esi, 0x1f
ja 0xbcc970
test edx, edx
je 0xbcce42
movzx eax, byte [edi + 3]
mov ecx, esi
lea ebx, [edi + 4]
sub ebp, 4
shl eax, cl
add dword [esp + 0x28], eax
mov edi, dword [esp + 0x28]
mov esi, dword [esp + 0x24]
mov dword [esp + 0x28], 0
mov edx, edi
mov ecx, edi
mov eax, edi
shr edx, 0x18
shl ecx, 0x18
shr eax, 8
and eax, 0xff00
add ecx, edx
lea edx, [ecx + eax]
mov eax, edi
mov edi, dword [esp + 0xa0]
shl eax, 8
and eax, 0xff0000
add eax, edx
mov dword [esi + 0x1c], eax
mov dword [edi + 0x30], eax
mov dword [esi + 4], 0x3f3e
xor esi, esi
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x10]
test edx, edx
je 0xbccf28
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.00bcf070
mov edi, dword [esp + 0x24]
mov edx, dword [esp + 0xa0]
mov dword [edi + 0x1c], eax
mov dword [edx + 0x30], eax
mov dword [edi + 4], 0x3f3f
jmp 0xbcb680
mov eax, dword [esp + 0x24]
mov ebx, dword [eax + 0x14]
jmp 0xbcb58c
mov ebx, esi
mov esi, edi
mov edi, ebp
mov ebp, dword [esp + 0x24]
mov edx, dword [ebp + 0xc]
test edx, edx
je 0xbcd019
mov eax, dword [ebp + 0x14]
test eax, eax
je 0xbcb82e
cmp ebx, 0x1f
ja 0xbccc5b
test edi, edi
je 0xbcccab
lea eax, [esi + 1]
mov ecx, ebx
lea edx, [edi - 1]
mov dword [esp + 0x24], eax
movzx eax, byte [esi]
shl eax, cl
lea ecx, [ebx + 8]
add dword [esp + 0x28], eax
cmp ecx, 0x1f
ja 0xbcc699
test edx, edx
je 0xbcc6a2
lea eax, [esi + 2]
lea edx, [edi - 2]
mov dword [esp + 0x24], eax
movzx eax, byte [esi + 1]
shl eax, cl
lea ecx, [ebx + 0x10]
add dword [esp + 0x28], eax
cmp ecx, 0x1f
ja 0xbcc699
test edx, edx
je 0xbcc6a2
lea eax, [esi + 3]
lea edx, [edi - 3]
mov dword [esp + 0x24], eax
movzx eax, byte [esi + 2]
shl eax, cl
lea ecx, [ebx + 0x18]
add dword [esp + 0x28], eax
cmp ecx, 0x1f
ja 0xbcc699
test edx, edx
je 0xbcc6a2
lea eax, [esi + 4]
sub edi, 4
add ebx, 0x20
mov dword [esp + 0x24], eax
movzx eax, byte [esi + 3]
shl eax, cl
add dword [esp + 0x28], eax
mov eax, dword [esp + 0x28]
cmp dword [ebp + 0x20], eax
je 0xbccfb9
mov eax, dword [esp + 0xa0]
mov esi, dword [esp + 0x24]
mov dword [eax + 0x18], str.incorrect_length_check
mov dword [ebp + 4], 0x3f51
jmp 0xbcaeb0
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0xc]
test edx, edx
je 0xbcbef0
cmp esi, 0xf
ja 0xbccf76
test ebp, ebp
je 0xbccf61
lea eax, [ebp - 1]
mov ecx, esi
lea ebx, [edi + 1]
mov dword [esp + 0x3c], eax
movzx eax, byte [edi]
shl eax, cl
lea ecx, [esi + 8]
add dword [esp + 0x28], eax
cmp ecx, 0xf
ja 0xbccfae
mov eax, dword [esp + 0x3c]
test eax, eax
je 0xbccf97
movzx eax, byte [edi + 1]
lea ebx, [edi + 2]
sub ebp, 2
add esi, 0x10
shl eax, cl
add dword [esp + 0x28], eax
test dl, 2
mov eax, dword [esp + 0x24]
je 0xbcbb42
cmp dword [esp + 0x28], 0x8b1f
je 0xbcce68
mov dword [eax + 0x14], 0
mov eax, dword [eax + 0x24]
test eax, eax
je 0xbcbb57
mov dword [eax + 0x30], 0xffffffff
and edx, 1
je 0xbcc60a
mov eax, dword [esp + 0x28]
mov edx, 0x8421085
mov ecx, eax
shr eax, 8
shl ecx, 8
movzx ecx, cx
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 0xbcc60a
mov eax, dword [esp + 0x28]
and eax, 0xf
cmp eax, 8
je 0xbccfcc
mov edi, ebp
mov eax, dword [esp + 0xa0]
mov ebp, dword [esp + 0x24]
mov edx, ebx
mov ebx, esi
mov esi, edx
mov dword [eax + 0x18], str.unknown_compression_method
mov dword [ebp + 4], 0x3f51
jmp 0xbcaeb0
mov eax, dword [esp + 0x24]
mov ebx, dword [eax + 0x14]
mov eax, ebx
and eax, 0x400
jmp 0xbcb3a6
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x14]
test dh, 4
mov ebx, edx
je 0xbcc020
cmp esi, 0xf
jbe 0xbcb32f
mov esi, dword [esp + 0x28]
jmp 0xbcb368
mov eax, dword [esp + 0x24]
mov ebx, edi
mov edx, dword [eax + 0x60]
mov eax, dword [eax + 0x6c]
cmp edx, eax
jbe 0xbcca71
mov ecx, esi
lea ebx, [edx + 1]
add eax, 1
cmp ecx, 2
mov dword [esp + 0x3c], eax
mov esi, dword [esp + 0x28]
mov dword [esp + 0x40], ebx
ja 0xbcbc94
test ebp, ebp
je 0xbcc090
movzx edx, byte [edi]
lea ebx, [edi + 1]
sub ebp, 1
shl edx, cl
add ecx, 8
add esi, edx
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x3c]
mov edi, esi
and edi, 7
shr esi, 3
sub ecx, 3
mov dword [eax + 0x6c], edx
movzx edx, word [edx + edx + 0xe1a75e]
mov word [eax + edx*2 + 0x74], di
mov eax, dword [esp + 0x3c]
lea edx, [eax + 1]
cmp edx, dword [esp + 0x40]
je 0xbcca6b
cmp ecx, 2
mov dword [esp + 0x3c], edx
mov edi, ebx
jbe 0xbcbc3d
mov ebx, edi
jmp 0xbcbc55
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x44]
test eax, eax
je 0xbcbd00
cmp ebp, eax
mov ebx, ebp
jbe 0xbcbcb3
mov ebx, eax
mov eax, dword [esp + 0x2c]
cmp ebx, eax
jbe 0xbcbcbd
mov ebx, eax
test ebx, ebx
je 0xbcc000
mov eax, dword [esp + 0x30]
mov dword [esp + 4], edi
sub ebp, ebx
mov dword [esp + 8], ebx
add edi, ebx
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov eax, dword [esp + 0x24]
sub dword [esp + 0x2c], ebx
add dword [esp + 0x30], ebx
sub dword [eax + 0x44], ebx
mov eax, dword [eax + 4]
lea edx, [eax - 0x3f34]
jmp 0xbcac72
mov eax, dword [esp + 0x24]
mov ebx, edi
mov dword [eax + 4], 0x3f3f
jmp 0xbcb680
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x44]
mov ebx, dword [esp + 0x24]
mov dword [ebx + 4], 0x3f43
jmp 0xbcbca7
cmp dword [esp + 0xa4], 6
mov dword [ecx + 0x50], 0xe19f60
mov dword [ecx + 0x58], 9
mov dword [ecx + 0x54], 0xe19ee0
mov dword [ecx + 0x5c], 5
mov dword [ecx + 4], 0x3f47
je 0xbcd14e
shr dword [esp + 0x28], 3
sub esi, 3
mov eax, dword [esp + 0x24]
mov dword [eax + 4], 0x3f48
jmp case.0xbcacad.20
mov eax, dword [esp + 0x24]
mov ebx, dword [esp + 0x24]
mov eax, dword [eax + 0x6c]
mov dword [esp + 0x40], eax
mov eax, dword [ebx + 0x64]
mov dword [esp + 0x44], edi
mov dword [esp + 0x58], eax
add eax, dword [ebx + 0x68]
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x48], eax
mov edx, eax
cmp dword [esp + 0x40], edx
jae 0xbcced6
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 0x58]
mov edx, dword [eax + 0x50]
mov eax, 1
shl eax, cl
mov edi, edx
mov dword [esp + 0x28], edx
lea eax, [eax - 1]
mov dword [esp + 0x3c], eax
and eax, ebx
lea eax, [edi + eax*4]
movzx ecx, byte [eax + 1]
movzx edx, word [eax + 2]
movzx eax, cl
cmp esi, eax
jae 0xbcbe1e
test ebp, ebp
je 0xbccb26
mov edi, dword [esp + 0x44]
mov ecx, esi
jmp 0xbcbdea
test ebp, ebp
je 0xbcb880
add edi, 1
movzx eax, byte [edi - 1]
mov esi, dword [esp + 0x28]
sub ebp, 1
shl eax, cl
add ecx, 8
add ebx, eax
mov eax, dword [esp + 0x3c]
and eax, ebx
lea edx, [esi + eax*4]
movzx esi, byte [edx + 1]
movzx edx, word [edx + 2]
cmp esi, ecx
mov eax, esi
ja 0xbcbde2
mov esi, ecx
mov dword [esp + 0x44], edi
mov ecx, eax
cmp dx, 0xf
ja 0xbcc455
shr ebx, cl
mov ecx, dword [esp + 0x40]
mov edi, dword [esp + 0x24]
sub esi, eax
mov eax, ecx
add eax, 1
mov dword [edi + 0x6c], eax
mov dword [esp + 0x40], eax
mov word [edi + ecx*2 + 0x74], dx
mov edx, dword [esp + 0x48]
jmp 0xbcbd96
mov eax, dword [esp + 0x24]
mov ebx, dword [eax + 0x14]
jmp 0xbcb4f6
mov eax, dword [esp + 0x24]
mov ebx, dword [eax + 0x14]
jmp 0xbcb462
cmp esi, 0xf
ja 0xbcce09
test ebp, ebp
je 0xbcc000
movzx eax, byte [edi]
mov ecx, esi
lea edx, [ebp - 1]
lea ebx, [edi + 1]
shl eax, cl
lea ecx, [esi + 8]
add dword [esp + 0x28], eax
cmp ecx, 0xf
ja 0xbcce20
test edx, edx
je 0xbcce29
movzx eax, byte [edi + 1]
lea ebx, [edi + 2]
sub ebp, 2
add esi, 0x10
shl eax, cl
add dword [esp + 0x28], eax
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
cmp al, 8
mov dword [ecx + 0x14], eax
je 0xbcc93c
mov eax, dword [esp + 0xa0]
mov edx, ebx
mov edi, ebp
mov ebx, esi
mov ebp, ecx
mov esi, edx
mov dword [eax + 0x18], str.unknown_compression_method
mov dword [ecx + 4], 0x3f51
jmp 0xbcaeb0
mov dword [eax + 4], 0x3f40
mov ebx, edi
jmp 0xbcb68b
mov eax, dword [esp + 0x30]
sub eax, edx
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 0x44]
mov edx, ecx
mov ebx, ecx
mov ecx, dword [esp + 0x2c]
cmp ebx, ecx
jbe 0xbcbf1f
mov ebx, ecx
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x3c]
sub edx, ebx
sub dword [esp + 0x2c], ebx
mov dword [ecx + 0x44], edx
lea edx, [eax + 4]
mov eax, dword [esp + 0x30]
cmp eax, edx
mov edx, eax
setae cl
add edx, 4
cmp dword [esp + 0x3c], edx
setae dl
or edx, ecx
cmp ebx, 9
seta cl
test dl, cl
je 0xbcc5e0
mov edx, eax
mov eax, dword [esp + 0x3c]
or edx, eax
and edx, 3
jne 0xbcc5e0
lea ecx, [ebx - 4]
mov dword [esp + 0x40], ebx
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x44], esi
shr ecx, 2
add ecx, 1
lea edx, [ecx*4]
mov dword [esp + 0x48], edx
xor edx, edx
mov esi, dword [eax + edx*4]
mov dword [ebx + edx*4], esi
add edx, 1
cmp ecx, edx
ja 0xbcbf8b
mov edx, ebx
mov ebx, dword [esp + 0x40]
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x3c], eax
mov esi, dword [esp + 0x44]
mov eax, ebx
add edx, ecx
sub eax, ecx
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x3c]
add eax, ecx
cmp ebx, ecx
je 0xbcbfdf
movzx ecx, byte [eax]
cmp dword [esp + 0x40], 1
mov byte [edx], cl
je 0xbcbfdf
movzx ecx, byte [eax + 1]
cmp dword [esp + 0x40], 2
mov byte [edx + 1], cl
je 0xbcbfdf
movzx eax, byte [eax + 2]
mov byte [edx + 2], al
mov eax, dword [esp + 0x24]
add dword [esp + 0x30], ebx
mov edx, dword [eax + 0x44]
test edx, edx
je 0xbcbd63
mov eax, dword [eax + 4]
jmp 0xbcbcef
mov dword [esp + 0x28], ebx
nop
mov ebx, esi
mov esi, edi
mov edi, ebp
mov ebp, dword [esp + 0x24]
mov dword [esp + 0x24], 0
jmp 0xbcaec0
mov eax, dword [eax + 0x24]
test eax, eax
je 0xbcb450
mov dword [eax + 0x10], 0
mov eax, edx
mov ebx, edx
and eax, 0x400
jmp 0xbcb39b
mov eax, edi
mov dword [esp + 0x28], ebp
mov edi, esi
mov ebp, dword [esp + 0x24]
mov ebx, ecx
mov esi, eax
mov dword [esp + 0x24], 0
jmp 0xbcaec0
mov eax, dword [ebx + 0x34]
cmp ecx, eax
jbe 0xbcc562
sub ecx, eax
mov eax, dword [ebx + 0x2c]
sub eax, ecx
add eax, dword [ebx + 0x38]
mov dword [esp + 0x3c], eax
mov eax, ebx
mov edx, dword [eax + 0x44]
cmp ecx, edx
jbe 0xbcbf13
mov ecx, edx
jmp 0xbcbf13
mov dword [esp + 0x28], esi
mov ebx, ecx
mov esi, edi
mov edi, ebp
mov ebp, dword [esp + 0x24]
mov dword [esp + 0x24], 0
jmp 0xbcaec0
mov ebx, dword [esp + 0xa0]
mov edx, dword [esp + 0x30]
mov dword [ebx + 0x10], eax
mov dword [ebx], edi
mov dword [ebx + 4], ebp
mov dword [ebx + 0xc], edx
mov edi, dword [esp + 0x28]
mov ebx, dword [esp + 0x24]
mov eax, dword [esp + 0x34]
mov dword [ebx + 0x3c], edi
mov dword [ebx + 0x40], esi
mov dword [esp + 4], eax
mov eax, dword [esp + 0xa0]
mov dword [esp], eax
call fcn.00bcf810
mov eax, dword [esp + 0xa0]
mov esi, dword [ebx + 0x3c]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x28], esi
mov esi, dword [ebx + 0x40]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0xa0]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0xa0]
mov edi, dword [eax]
mov ebp, dword [eax + 4]
mov eax, dword [ebx + 4]
cmp eax, 0x3f3f
jne 0xbcbcef
mov eax, dword [esp + 0x24]
mov ebx, edi
mov dword [eax + 0x1bc8], 0xffffffff
jmp 0xbcb680
cmp esi, ebx
jae 0xbcc177
test ebp, ebp
je 0xbcc000
mov edx, dword [esp + 0x28]
mov ecx, esi
jmp 0xbcc15c
test ebp, ebp
je 0xbcb842
add edi, 1
movzx eax, byte [edi - 1]
sub ebp, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, ebx
jb 0xbcc154
mov dword [esp + 0x28], edx
mov esi, ecx
mov ecx, ebx
mov eax, 1
mov edx, dword [esp + 0x28]
shl eax, cl
mov ecx, dword [esp + 0x24]
sub esi, ebx
sub eax, 1
and eax, edx
add eax, dword [ecx + 0x44]
mov dword [ecx + 0x44], eax
mov ecx, ebx
shr edx, cl
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x28], edx
add dword [ecx + 0x1bc8], ebx
mov ebx, ecx
jmp 0xbcb0b1
cmp ebx, 0x1f
ja 0xbccf8e
test edi, edi
je 0xbccf7d
lea eax, [edi - 1]
mov ecx, ebx
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x3c]
lea esi, [eax + 1]
movzx eax, byte [eax]
shl eax, cl
lea ecx, [ebx + 8]
add dword [esp + 0x28], eax
cmp ecx, 0x1f
ja 0xbccdbe
mov eax, dword [esp + 0x24]
test eax, eax
je 0xbccdb7
mov eax, dword [esp + 0x3c]
lea esi, [edi - 2]
mov dword [esp + 0x24], esi
lea esi, [eax + 2]
movzx eax, byte [eax + 1]
shl eax, cl
lea ecx, [ebx + 0x10]
add dword [esp + 0x28], eax
cmp ecx, 0x1f
ja 0xbccdbe
mov eax, dword [esp + 0x24]
test eax, eax
je 0xbccdb7
mov eax, dword [esp + 0x3c]
lea esi, [edi - 3]
mov dword [esp + 0x24], esi
lea esi, [eax + 3]
movzx eax, byte [eax + 2]
shl eax, cl
lea ecx, [ebx + 0x18]
add dword [esp + 0x28], eax
cmp ecx, 0x1f
ja 0xbccdbe
mov eax, dword [esp + 0x24]
test eax, eax
je 0xbccdb7
mov eax, dword [esp + 0x3c]
sub edi, 4
add ebx, 0x20
lea esi, [eax + 4]
movzx eax, byte [eax + 3]
shl eax, cl
add dword [esp + 0x28], eax
mov ecx, dword [esp + 0xa0]
mov eax, dword [esp + 0x34]
sub eax, dword [esp + 0x2c]
add dword [ecx + 0x14], eax
mov ecx, edx
add dword [ebp + 0x20], eax
and ecx, 4
je 0xbcc2c2
test eax, eax
je 0xbcc2c2
mov edx, dword [ebp + 0x14]
mov dword [esp + 8], eax
test edx, edx
mov edx, dword [esp + 0x30]
je 0xbccf12
sub edx, eax
mov dword [esp + 4], edx
mov eax, dword [ebp + 0x1c]
mov dword [esp], eax
call fcn.00bcf7b0
mov edx, dword [esp + 0xa0]
mov dword [ebp + 0x1c], eax
mov dword [edx + 0x30], eax
mov edx, dword [ebp + 0xc]
mov ecx, edx
and ecx, 4
test ecx, ecx
je 0xbcc8c6
cmp dword [ebp + 0x14], 0
mov ecx, dword [esp + 0x28]
mov eax, ecx
jne 0xbcc2fa
shl eax, 0x18
shr ecx, 0x18
add ecx, eax
mov eax, dword [esp + 0x28]
shr eax, 8
and eax, 0xff00
add ecx, eax
mov eax, dword [esp + 0x28]
shl eax, 8
and eax, 0xff0000
add eax, ecx
cmp eax, dword [ebp + 0x1c]
je 0xbcc8c6
mov eax, dword [esp + 0xa0]
mov dword [eax + 0x18], str.incorrect_data_check
mov eax, dword [esp + 0x2c]
mov dword [ebp + 4], 0x3f51
mov dword [esp + 0x34], eax
jmp 0xbcaeb0
mov dword [esp + 8], 1
mov ecx, dword [ebx + 0x28]
mov eax, 1
shl eax, cl
mov dword [esp + 4], eax
mov eax, dword [esp + 0xa0]
mov eax, dword [eax + 0x28]
mov dword [esp], eax
mov eax, dword [esp + 0xa0]
call dword [eax + 0x20]
test eax, eax
mov dword [ebx + 0x38], eax
jne 0xbcaf3d
mov dword [ebp + 4], 0x3f52
mov dword [esp + 0x24], 0xfffffffc
jmp 0xbcabd1
movzx ecx, word [esp + 0x3c]
mov dword [esp + 0x44], ecx
lea ecx, [ebx + eax]
mov ebx, 1
shl ebx, cl
mov ecx, edx
lea ebx, [ebx - 1]
mov dword [esp + 0x58], ebx
and ebx, dword [esp + 0x28]
shr ebx, cl
mov ecx, dword [esp + 0x44]
lea edx, [ebx + ecx]
mov ebx, dword [esp + 0x40]
lea edx, [ebx + edx*4]
movzx ecx, word [edx + 2]
movzx ebx, byte [edx]
movzx edx, byte [edx + 1]
mov word [esp + 0x3c], cx
lea ecx, [eax + edx]
mov dword [esp + 0x48], edx
cmp ecx, esi
jbe 0xbcc42e
test ebp, ebp
je 0xbcc000
mov edx, edi
mov ebx, dword [esp + 0x28]
mov edi, ebp
mov ebp, edx
jmp 0xbcc3d8
test edi, edi
je 0xbcc680
add ebp, 1
movzx edx, byte [ebp - 1]
mov ecx, esi
add esi, 8
sub edi, 1
shl edx, cl
mov ecx, eax
add ebx, edx
mov edx, dword [esp + 0x58]
and edx, ebx
shr edx, cl
add edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x40]
lea edx, [ecx + edx*4]
movzx ecx, byte [edx]
mov byte [esp + 0x5c], cl
movzx ecx, word [edx + 2]
movzx edx, byte [edx + 1]
mov word [esp + 0x3c], cx
lea ecx, [edx + eax]
mov dword [esp + 0x48], edx
cmp ecx, esi
ja 0xbcc3d0
mov dword [esp + 0x28], ebx
movzx ebx, byte [esp + 0x5c]
mov ecx, ebp
mov ebp, edi
mov edi, ecx
mov ecx, eax
shr dword [esp + 0x28], cl
mov ecx, dword [esp + 0x24]
sub esi, eax
mov dword [esp + 0x44], edx
add eax, dword [ecx + 0x1bc8]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x40]
jmp 0xbcb176
cmp dx, 0x10
je 0xbcc980
cmp dx, 0x11
je 0xbccb64
lea edi, [eax + 7]
cmp edi, esi
mov edx, edi
jbe 0xbcc4b5
test ebp, ebp
je 0xbccb26
mov ecx, esi
mov edi, dword [esp + 0x44]
mov esi, eax
mov eax, edx
jmp 0xbcc498
test ebp, ebp
je 0xbcb880
add edi, 1
movzx edx, byte [edi - 1]
sub ebp, 1
shl edx, cl
add ecx, 8
add ebx, edx
cmp eax, ecx
ja 0xbcc490
mov eax, esi
mov dword [esp + 0x44], edi
mov esi, ecx
mov ecx, eax
sub esi, eax
xor eax, eax
shr ebx, cl
mov ecx, dword [esp + 0x40]
sub esi, 7
mov edx, ebx
shr ebx, 7
and edx, 0x7f
add edx, 0xb
mov edi, ecx
add edi, edx
cmp edi, dword [esp + 0x48]
mov dword [esp + 0x60], edi
ja 0xbcd169
mov edi, ecx
mov ecx, dword [esp + 0x24]
mov word [esp + 0x3c], ax
add edi, 0x3a
mov dword [esp + 0x5c], edi
lea ecx, [ecx + edi*2]
shr ecx, 1
and ecx, 1
cmp edx, 6
mov dword [esp + 0x64], ecx
ja 0xbccd06
mov edi, dword [esp + 0x24]
mov ecx, dword [esp + 0x40]
cmp edx, 2
mov word [edi + ecx*2 + 0x74], ax
mov word [edi + ecx*2 + 0x76], ax
je 0xbcc54a
mov ecx, dword [esp + 0x5c]
cmp edx, 3
mov word [edi + ecx*2 + 4], ax
je 0xbcc54a
mov ecx, dword [esp + 0x40]
cmp edx, 4
mov word [edi + ecx*2 + 0x7a], ax
je 0xbcc54a
cmp edx, 6
mov word [edi + ecx*2 + 0x7c], ax
jne 0xbcc54a
mov word [edi + ecx*2 + 0x7e], ax
mov eax, dword [esp + 0x60]
mov edi, dword [esp + 0x24]
mov edx, dword [esp + 0x48]
mov dword [edi + 0x6c], eax
mov dword [esp + 0x40], eax
jmp 0xbcbd96
sub eax, ecx
add eax, dword [ebx + 0x38]
mov dword [esp + 0x3c], eax
mov eax, ebx
jmp 0xbcc07b
test bl, 0xf0
je 0xbcc6b7
mov ecx, edx
mov edx, dword [esp + 0x24]
sub esi, eax
shr dword [esp + 0x28], cl
mov dword [edx + 0x1bc8], eax
movzx eax, word [esp + 0x40]
mov dword [edx + 0x44], eax
test bl, 0x20
je 0xbcc8e4
mov eax, dword [esp + 0x24]
mov ebx, edi
mov dword [eax + 0x1bc8], 0xffffffff
mov dword [eax + 4], 0x3f3f
jmp 0xbcb680
mov edx, eax
movzx eax, word [esp + 0x3c]
and ebx, 0xf
mov dword [edx + 0x4c], ebx
mov dword [edx + 4], 0x3f4b
mov dword [edx + 0x48], eax
jmp 0xbcadd9
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x30]
mov dword [esp + 0x3c], ebx
lea ecx, [eax + ebx]
nop
add eax, 1
movzx ebx, byte [eax - 1]
add edx, 1
cmp ecx, eax
mov byte [edx - 1], bl
jne 0xbcc5f0
mov ebx, dword [esp + 0x3c]
jmp 0xbcbfdf
mov edi, ebp
mov eax, dword [esp + 0xa0]
mov ebp, dword [esp + 0x24]
mov edx, ebx
mov ebx, esi
mov esi, edx
mov dword [eax + 0x18], str.incorrect_header_check
mov dword [ebp + 4], 0x3f51
jmp 0xbcaeb0
mov dword [esp + 8], ebx
mov dword [esp + 4], edi
mov eax, dword [eax + 0x1c]
mov byte [esp + 0x3c], dl
mov dword [esp], eax
call fcn.00bcf7b0
mov edx, dword [esp + 0x24]
mov dword [edx + 0x1c], eax
movzx edx, byte [esp + 0x3c]
jmp 0xbcb56e
mov dword [esp + 8], ebx
mov dword [esp + 4], edi
mov eax, dword [eax + 0x1c]
mov byte [esp + 0x3c], dl
mov dword [esp], eax
call fcn.00bcf7b0
mov edx, dword [esp + 0x24]
mov dword [edx + 0x1c], eax
movzx edx, byte [esp + 0x3c]
jmp 0xbcb4d1
mov dword [esp + 0x28], ebx
mov ebx, esi
mov esi, ebp
mov ebp, dword [esp + 0x24]
mov dword [esp + 0x24], 0
jmp 0xbcaec0
mov ebx, ecx
mov edi, edx
jmp 0xbcbaa0
mov esi, dword [esp + 0x24]
mov ebx, ecx
mov dword [esp + 0x24], 0
xor edi, edi
jmp 0xbcaec0
movzx ecx, word [esp + 0x40]
mov dword [esp + 0x40], ecx
lea ecx, [ebx + eax]
mov ebx, 1
shl ebx, cl
mov ecx, edx
lea ebx, [ebx - 1]
mov dword [esp + 0x48], ebx
and ebx, dword [esp + 0x28]
shr ebx, cl
mov ecx, dword [esp + 0x40]
lea edx, [ebx + ecx]
mov ebx, dword [esp + 0x3c]
lea edx, [ebx + edx*4]
movzx ecx, word [edx + 2]
movzx ebx, byte [edx]
movzx edx, byte [edx + 1]
mov word [esp + 0x44], cx
lea ecx, [edx + eax]
mov dword [esp + 0x58], edx
cmp ecx, esi
mov dword [esp + 0x5c], ecx
jbe 0xbcc770
test ebp, ebp
je 0xbcc000
mov ebx, dword [esp + 0x28]
jmp 0xbcc71c
test ebp, ebp
je 0xbcbffa
add edi, 1
movzx edx, byte [edi - 1]
mov ecx, esi
add esi, 8
sub ebp, 1
shl edx, cl
mov ecx, eax
add ebx, edx
mov edx, dword [esp + 0x48]
and edx, ebx
shr edx, cl
add edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x3c]
lea edx, [ecx + edx*4]
movzx ecx, byte [edx]
mov byte [esp + 0x58], cl
movzx ecx, word [edx + 2]
movzx edx, byte [edx + 1]
mov word [esp + 0x44], cx
lea ecx, [edx + eax]
cmp ecx, esi
ja 0xbcc714
mov dword [esp + 0x28], ebx
mov dword [esp + 0x5c], ecx
movzx ebx, byte [esp + 0x58]
mov dword [esp + 0x58], edx
sub esi, eax
mov ecx, eax
mov edx, dword [esp + 0x28]
mov eax, esi
mov esi, dword [esp + 0x58]
shr edx, cl
sub eax, esi
mov ecx, esi
shr edx, cl
mov esi, eax
movzx eax, word [esp + 0x44]
mov dword [esp + 0x28], edx
mov ecx, dword [esp + 0x5c]
test bl, bl
mov edx, dword [esp + 0x24]
mov dword [edx + 0x1bc8], ecx
mov dword [edx + 0x44], eax
jne 0xbcc595
jmp 0xbcacdc
mov ebx, esi
mov eax, dword [esp + 0xa0]
mov esi, edi
mov edi, ebp
mov ebp, dword [esp + 0x24]
shr dword [esp + 0x28], 3
sub ebx, 3
mov dword [eax + 0x18], str.invalid_block_type
mov dword [ebp + 4], 0x3f51
jmp 0xbcaeb0
shr dword [esp + 0x28], 3
mov dword [ecx + 4], 0x3f44
sub esi, 3
mov ebx, edi
cmp esi, 0xd
ja 0xbcc832
test ebp, ebp
je 0xbcc000
movzx eax, byte [ebx]
mov ecx, esi
add edi, 1
lea edx, [ebp - 1]
shl eax, cl
lea ecx, [esi + 8]
add dword [esp + 0x28], eax
cmp ecx, 0xd
ja 0xbcce17
test edx, edx
je 0xbcce51
movzx eax, byte [ebx + 1]
lea edi, [ebx + 2]
sub ebp, 2
add esi, 0x10
shl eax, cl
add dword [esp + 0x28], eax
mov ebx, dword [esp + 0x28]
mov edx, dword [esp + 0x24]
sub esi, 0xe
mov ecx, ebx
and ecx, 0x1f
lea eax, [ecx + 0x101]
mov dword [esp + 0x3c], eax
mov eax, ebx
mov ecx, dword [esp + 0x3c]
shr eax, 5
and eax, 0x1f
add eax, 1
mov dword [edx + 0x64], ecx
mov ecx, eax
mov eax, edx
mov dword [edx + 0x68], ecx
mov edx, ebx
shr ebx, 0xe
shr edx, 0xa
mov dword [esp + 0x28], ebx
and edx, 0xf
add edx, 4
cmp ecx, 0x1e
mov dword [eax + 0x60], edx
ja 0xbcc8a2
cmp dword [esp + 0x3c], 0x11e
ja 0xbcc8a2
mov eax, dword [esp + 0x24]
mov dword [eax + 0x6c], 0
mov dword [eax + 4], 0x3f45
xor eax, eax
jmp 0xbcbc24
mov ebx, esi
mov eax, dword [esp + 0xa0]
mov esi, edi
mov edi, ebp
mov ebp, dword [esp + 0x24]
mov dword [eax + 0x18], str.too_many_length_or_distance_symbols
mov dword [ebp + 4], 0x3f51
jmp 0xbcaeb0
mov eax, dword [esp + 0x2c]
mov dword [ebp + 4], 0x3f4f
xor ebx, ebx
mov dword [esp + 0x28], 0
mov dword [esp + 0x34], eax
jmp 0xbcb9ec
test bl, 0x40
je 0xbccc18
mov ebx, esi
mov eax, dword [esp + 0xa0]
mov esi, edi
mov edi, ebp
mov ebp, dword [esp + 0x24]
mov dword [eax + 0x18], 0xe19dd3
mov dword [ebp + 4], 0x3f51
jmp 0xbcaeb0
cmp dword [esp + 0xa4], 6
mov esi, dword [esp + 0x24]
mov dword [esi + 0x44], eax
mov dword [esi + 4], 0x3f42
je 0xbcd203
xor esi, esi
mov dword [esp + 0x28], 0
jmp 0xbcbd19
test dword [esp + 0x28], 0xe000
je 0xbccc64
mov edi, ebp
mov eax, dword [esp + 0xa0]
mov ebp, dword [esp + 0x24]
mov edx, ebx
mov ebx, esi
mov esi, edx
mov dword [eax + 0x18], str.unknown_header_flags_set
mov dword [ebp + 4], 0x3f51
jmp 0xbcaeb0
mov ebp, edx
jmp 0xbcb940
mov esi, ecx
mov ebp, edx
jmp 0xbcb7a3
lea edi, [eax + 2]
cmp edi, esi
mov edx, edi
jbe 0xbcc9c5
test ebp, ebp
je 0xbccb26
mov ecx, esi
mov edi, dword [esp + 0x44]
mov esi, eax
mov eax, edx
jmp 0xbcc9a8
test ebp, ebp
je 0xbcb880
add edi, 1
movzx edx, byte [edi - 1]
sub ebp, 1
shl edx, cl
add ecx, 8
add ebx, edx
cmp ecx, eax
jb 0xbcc9a0
mov eax, esi
mov dword [esp + 0x44], edi
mov esi, ecx
mov edi, dword [esp + 0x40]
mov ecx, eax
sub esi, eax
shr ebx, cl
test edi, edi
je 0xbcd169
mov edi, dword [esp + 0x40]
mov eax, dword [esp + 0x24]
mov edx, ebx
and edx, 3
shr ebx, 2
sub esi, 2
add edx, 3
movzx eax, word [eax + edi*2 + 0x72]
mov ecx, edi
jmp 0xbcc4cf
mov esi, dword [esp + 0x28]
mov dword [esp + 8], 2
mov eax, esi
mov byte [esp + 0x7c], al
mov eax, esi
mov esi, dword [esp + 0x24]
shr eax, 8
mov byte [esp + 0x7d], al
lea eax, [esp + 0x7c]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x1c]
mov dword [esp], eax
call fcn.00bcf7b0
mov edx, dword [esi + 0x14]
mov dword [esi + 0x1c], eax
mov eax, dword [esp + 0x24]
mov ebx, edx
jmp 0xbcb315
mov esi, edi
mov ebp, dword [esp + 0x24]
mov ebx, ecx
jmp 0xbcc6a8
mov esi, ecx
mov ebp, dword [esp + 0x3c]
jmp 0xbcb5e2
mov ebp, dword [esp + 0x24]
mov esi, edx
mov ebx, ecx
xor edi, edi
mov dword [esp + 0x24], 0
jmp 0xbcaec0
mov dword [esp + 0x28], esi
mov esi, ecx
cmp eax, 0x12
lea edx, [eax + eax + 0xe1a760]
mov ecx, 0xe1a786
mov edi, dword [esp + 0x24]
ja 0xbccaac
lea esi, [esi]
lea edi, [edi]
movzx eax, word [edx]
add edx, 2
cmp ecx, edx
mov word [edi + eax*2 + 0x74], 0
jne 0xbcca90
mov eax, dword [esp + 0x24]
mov dword [eax + 0x6c], 0x13
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x54]
mov dword [eax + 0x70], edi
mov dword [eax + 0x50], edi
mov edi, dword [esp + 0x50]
mov dword [eax + 0x58], 7
mov dword [esp + 8], 0x13
mov dword [esp], 0
mov dword [esp + 0x14], edi
mov edi, eax
add eax, 0x58
mov dword [esp + 0x10], eax
mov eax, edi
add eax, 0x70
mov dword [esp + 0xc], eax
mov eax, edi
add eax, 0x74
mov dword [esp + 4], eax
call fcn.00bcdd80
test eax, eax
je 0xbccde6
mov edi, ebp
mov eax, dword [esp + 0xa0]
mov ebp, dword [esp + 0x24]
mov edx, ebx
mov ebx, esi
mov esi, edx
mov dword [eax + 0x18], str.invalid_code_lengths_set
mov dword [ebp + 4], 0x3f51
jmp 0xbcaeb0
mov dword [esp + 0x28], ebx
mov edi, ebp
mov ebx, esi
mov ebp, dword [esp + 0x24]
mov esi, dword [esp + 0x44]
mov dword [esp + 0x24], 0
jmp 0xbcaec0
mov ebx, eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 4], edi
mov dword [esp + 8], eax
mov eax, dword [ebx + 0x1c]
mov dword [esp], eax
call fcn.00bcf7b0
mov dword [ebx + 0x1c], eax
jmp 0xbcb429
lea edi, [eax + 3]
cmp edi, esi
mov edx, edi
jbe 0xbccba5
test ebp, ebp
je 0xbccb26
mov ecx, esi
mov edi, dword [esp + 0x44]
mov esi, eax
mov eax, edx
jmp 0xbccb88
test ebp, ebp
je 0xbcb880
add edi, 1
movzx edx, byte [edi - 1]
sub ebp, 1
shl edx, cl
add ecx, 8
add ebx, edx
cmp ecx, eax
jb 0xbccb80
mov eax, esi
mov dword [esp + 0x44], edi
mov esi, ecx
mov ecx, eax
mov edi, 0xfffffffd
shr ebx, cl
sub edi, eax
mov ecx, dword [esp + 0x40]
mov edx, ebx
add esi, edi
shr ebx, 3
and edx, 7
xor eax, eax
add edx, 3
jmp 0xbcc4cf
mov esi, dword [esp + 0x28]
mov dword [esp + 8], 4
mov eax, esi
mov byte [esp + 0x7c], al
mov eax, esi
shr eax, 8
mov byte [esp + 0x7d], al
mov eax, esi
shr eax, 0x10
mov byte [esp + 0x7e], al
mov eax, esi
mov esi, dword [esp + 0x24]
shr eax, 0x18
mov byte [esp + 0x7f], al
lea eax, [esp + 0x7c]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x1c]
mov dword [esp], eax
call fcn.00bcf7b0
mov dword [esi + 0x1c], eax
mov eax, dword [esp + 0x24]
jmp 0xbcb298
mov eax, dword [esp + 0x24]
and ebx, 0xf
mov dword [eax + 0x4c], ebx
mov dword [eax + 4], 0x3f49
jmp 0xbcb09e
mov edi, ebx
mov ecx, eax
jmp 0xbcb6c3
mov esi, ebx
mov ebp, dword [esp + 0x24]
mov ebx, ecx
jmp 0xbcc6a8
mov dword [esp + 0x3c], ebx
mov edi, ebp
mov ebx, esi
mov ebp, eax
mov dword [esp + 0x24], edx
mov esi, dword [esp + 0x3c]
jmp 0xbcaec0
mov dword [esp + 0x24], esi
jmp 0xbcbaa0
mov eax, dword [ecx + 0x24]
test eax, eax
je 0xbccc77
mov edx, dword [esp + 0x28]
shr edx, 8
and edx, 1
mov dword [eax], edx
test dword [esp + 0x28], 0x200
je 0xbccc8f
mov eax, dword [esp + 0x24]
test byte [eax + 0xc], 4
jne 0xbcd09e
mov eax, dword [esp + 0x24]
mov edi, ebx
xor esi, esi
mov dword [esp + 0x28], 0
mov dword [eax + 4], 0x3f36
jmp 0xbcb23a
mov dword [esp + 0x24], 0
jmp 0xbcaec0
mov esi, dword [esp + 0x28]
mov dword [esp + 8], 2
mov eax, esi
mov byte [esp + 0x7c], al
mov eax, esi
mov esi, dword [esp + 0x24]
shr eax, 8
mov byte [esp + 0x7d], al
lea eax, [esp + 0x7c]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x1c]
mov dword [esp], eax
call fcn.00bcf7b0
mov ebx, dword [esi + 0x14]
mov dword [esi + 0x1c], eax
xor esi, esi
mov dword [esp + 0x28], 0
mov eax, ebx
and eax, 0x400
jmp 0xbcb39b
mov ecx, dword [esp + 0x64]
test ecx, ecx
jne 0xbccd7e
lea eax, [edx - 2]
mov dword [esp + 0x68], edx
shr eax, 1
add eax, 1
mov dword [esp + 0x28], eax
add eax, eax
mov dword [esp + 0x6c], eax
movzx edx, word [esp + 0x3c]
mov edi, dword [esp + 0x24]
mov eax, edx
shl eax, 0x10
or edx, eax
mov eax, dword [esp + 0x5c]
add eax, dword [esp + 0x64]
lea ecx, [edi + eax*2]
mov edi, dword [esp + 0x44]
xor eax, eax
mov dword [ecx + eax*4], edx
add eax, 1
cmp eax, dword [esp + 0x28]
jb 0xbccd45
mov dword [esp + 0x44], edi
mov edi, dword [esp + 0x6c]
add dword [esp + 0x40], edi
cmp dword [esp + 0x68], edi
je 0xbcc54a
movzx edx, word [esp + 0x3c]
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x40]
mov word [eax + edi*2 + 0x74], dx
jmp 0xbcc54a
mov edi, dword [esp + 0x40]
lea ecx, [edi + 1]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x24]
mov word [ecx + edi*2 + 0x74], ax
lea eax, [edx - 1]
mov edi, eax
mov dword [esp + 0x68], eax
lea eax, [edx - 3]
shr eax, 1
add eax, 1
mov dword [esp + 0x28], eax
add eax, eax
cmp edi, 1
mov dword [esp + 0x6c], eax
je 0xbccd67
jmp 0xbccd24
mov ebx, ecx
jmp 0xbcc6a8
mov ebx, ecx
mov edi, dword [esp + 0x24]
jmp 0xbcc269
mov dword [esp + 0x3c], ebx
mov edi, ebp
mov ebx, esi
mov ebp, dword [esp + 0x24]
mov esi, dword [esp + 0x3c]
mov dword [esp + 0x24], 0
jmp 0xbcaec0
mov eax, dword [esp + 0x24]
mov edi, ebx
mov dword [esp + 0x40], 0
mov dword [eax + 0x6c], 0
mov dword [eax + 4], 0x3f46
mov ebx, eax
jmp 0xbcbd7e
mov ebx, edi
jmp 0xbcbeaf
mov ebx, edi
jmp 0xbcb940
mov esi, ecx
mov ebp, edx
jmp 0xbcc832
mov esi, ecx
mov ebp, edx
jmp 0xbcbeaf
mov edx, ebx
mov ebp, dword [esp + 0x24]
mov ebx, ecx
xor edi, edi
mov esi, edx
mov dword [esp + 0x24], 0
jmp 0xbcaec0
mov eax, ebx
mov ebp, dword [esp + 0x24]
mov ebx, esi
mov esi, eax
jmp 0xbcc6a8
mov esi, edi
mov ebp, dword [esp + 0x24]
mov ebx, ecx
xor edi, edi
mov dword [esp + 0x24], 0
jmp 0xbcaec0
mov ecx, dword [eax + 0x28]
test ecx, ecx
jne 0xbcce76
mov dword [eax + 0x28], 0xf
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov edi, ebx
mov dword [esp], 0
call fcn.00bcf7b0
mov esi, dword [esp + 0x24]
lea edx, [esp + 0x7c]
mov byte [esp + 0x7c], 0x1f
mov byte [esp + 0x7d], 0x8b
mov dword [esi + 0x1c], eax
mov dword [esp + 8], 2
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.00bcf7b0
mov dword [esi + 4], 0x3f35
mov dword [esi + 0x1c], eax
xor esi, esi
mov dword [esp + 0x28], 0
jmp 0xbcbe6f
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x44]
mov dword [esp + 0x28], ebx
cmp word [eax + 0x274], 0
jne 0xbcd0d8
mov ebx, esi
mov esi, edi
mov edi, ebp
mov ebp, eax
mov eax, dword [esp + 0xa0]
mov dword [eax + 0x18], str.invalid_code____missing_end_of_block
mov dword [ebp + 4], 0x3f51
jmp 0xbcaeb0
sub edx, eax
mov dword [esp + 4], edx
mov eax, dword [ebp + 0x1c]
mov dword [esp], eax
call fcn.00bcf070
jmp 0xbcc2ad
mov edx, ebx
mov edi, ebp
mov ebx, esi
mov ebp, eax
mov esi, dword [esp + 0x30]
mov eax, dword [esp + 0xa0]
mov dword [esp + 0x24], 2
mov dword [eax + 0xc], esi
mov esi, dword [esp + 0x2c]
mov dword [eax], edx
mov dword [eax + 4], edi
mov dword [eax + 0x10], esi
mov eax, dword [esp + 0x28]
mov dword [ebp + 0x40], ebx
mov dword [ebp + 0x3c], eax
jmp 0xbcabd1
mov ebx, esi
mov dword [esp + 0x24], 0
mov esi, edi
mov edi, ebp
mov ebp, eax
jmp 0xbcaec0
mov ebx, edi
jmp 0xbcbb2b
mov esi, dword [esp + 0x3c]
mov dword [esp + 0x24], 0
jmp 0xbcaec0
mov esi, dword [esp + 0x3c]
jmp 0xbcc269
mov esi, ebx
mov ebp, dword [esp + 0x24]
mov ebx, ecx
xor edi, edi
mov dword [esp + 0x24], 0
jmp 0xbcaec0
mov esi, ecx
mov ebp, dword [esp + 0x3c]
jmp 0xbcbb2b
mov esi, dword [esp + 0x24]
xor ebx, ebx
mov dword [esp + 0x28], 0
jmp 0xbcb82e
shr dword [esp + 0x28], 4
mov edi, dword [esp + 0x24]
sub esi, 4
mov eax, dword [esp + 0x28]
and eax, 0xf
mov ecx, eax
mov eax, dword [edi + 0x28]
add ecx, 8
test eax, eax
jne 0xbcd022
cmp ecx, 0xf
mov dword [edi + 0x28], ecx
jbe 0xbcd02b
mov edi, ebp
mov eax, dword [esp + 0xa0]
mov ebp, dword [esp + 0x24]
mov edx, ebx
mov ebx, esi
mov esi, edx
mov dword [eax + 0x18], str.invalid_window_size
mov dword [ebp + 4], 0x3f51
jmp 0xbcaeb0
mov dword [esp + 0x3c], esi
jmp 0xbcb82a
cmp ecx, 0xf
ja 0xbccff3
cmp ecx, eax
ja 0xbccff3
mov esi, dword [esp + 0x24]
mov eax, 1
shl eax, cl
mov dword [esi + 0x18], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.00bcf070
and dword [esp + 0x28], 0x200
mov edi, dword [esp + 0xa0]
mov dword [esi + 0x1c], eax
mov dword [edi + 0x30], eax
je 0xbcd090
mov eax, dword [esp + 0x24]
mov dword [esp + 0x28], 0
mov edi, ebx
xor esi, esi
mov dword [eax + 4], 0x3f3d
jmp 0xbcb8b9
mov dword [esi + 4], 0x3f3f
xor esi, esi
jmp 0xbcb680
mov esi, dword [esp + 0x28]
mov dword [esp + 8], 2
mov eax, esi
mov byte [esp + 0x7c], al
mov eax, esi
mov esi, dword [esp + 0x24]
shr eax, 8
mov byte [esp + 0x7d], al
lea eax, [esp + 0x7c]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x1c]
mov dword [esp], eax
call fcn.00bcf7b0
mov dword [esi + 0x1c], eax
jmp 0xbccc8f
mov eax, dword [esp + 0x24]
mov ebx, dword [esp + 0x54]
mov ecx, dword [esp + 0x50]
mov dword [eax + 0x70], ebx
mov dword [eax + 0x50], ebx
lea edx, [eax + 0x74]
mov dword [eax + 0x58], 9
mov dword [esp + 0x14], ecx
lea ebx, [eax + 0x70]
mov ecx, dword [esp + 0x58]
add eax, 0x58
mov dword [esp + 4], edx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], ebx
mov dword [esp], 1
mov dword [esp + 0x3c], edx
mov dword [esp + 8], ecx
call fcn.00bcdd80
test eax, eax
mov edx, dword [esp + 0x3c]
je 0xbcd193
mov ebx, esi
mov eax, dword [esp + 0xa0]
mov esi, edi
mov edi, ebp
mov ebp, dword [esp + 0x24]
mov dword [eax + 0x18], str.invalid_literal_lengths_set
mov dword [ebp + 4], 0x3f51
jmp 0xbcaeb0
mov ebx, esi
shr dword [esp + 0x28], 3
mov esi, edi
sub ebx, 3
mov edi, ebp
mov ebp, dword [esp + 0x24]
mov dword [esp + 0x24], edx
jmp 0xbcaec0
mov edi, ebp
mov eax, dword [esp + 0xa0]
mov ebp, dword [esp + 0x24]
mov dword [esp + 0x28], ebx
mov ebx, esi
mov esi, dword [esp + 0x44]
mov dword [eax + 0x18], str.invalid_bit_length_repeat
mov dword [ebp + 4], 0x3f51
jmp 0xbcaeb0
mov ecx, dword [esp + 0x24]
mov eax, dword [ecx + 0x70]
mov dword [ecx + 0x5c], 6
mov dword [ecx + 0x54], eax
mov eax, ecx
mov ecx, dword [esp + 0x50]
mov dword [esp + 0xc], ebx
mov dword [esp + 0x14], ecx
mov ecx, eax
add eax, 0x5c
mov dword [esp + 0x10], eax
mov eax, dword [ecx + 0x68]
mov dword [esp + 8], eax
mov eax, dword [ecx + 0x64]
mov dword [esp], 2
add eax, eax
add eax, edx
mov dword [esp + 4], eax
call fcn.00bcdd80
test eax, eax
mov edx, eax
je 0xbcd222
mov ebx, esi
mov eax, dword [esp + 0xa0]
mov esi, edi
mov edi, ebp
mov ebp, dword [esp + 0x24]
mov dword [eax + 0x18], str.invalid_distances_set
mov dword [ebp + 4], 0x3f51
jmp 0xbcaeb0
mov esi, edi
xor ebx, ebx
mov edi, ebp
mov dword [esp + 0x28], 0
mov ebp, dword [esp + 0x24]
mov dword [esp + 0x24], 0
jmp 0xbcaec0
cmp dword [esp + 0xa4], 6
mov eax, dword [esp + 0x24]
mov dword [eax + 4], 0x3f47
jne case.0xbcacad.19
mov ebx, esi
mov esi, edi
mov edi, ebp
mov ebp, dword [esp + 0x24]
mov dword [esp + 0x24], edx
jmp 0xbcaec0
mov ebx, edi
jmp 0xbcb706
mov ebx, edi
jmp 0xbcb68b
mov ebx, edi
jmp 0xbcb680
mov ebx, edi
jmp 0xbcb98b
mov ebx, esi
mov esi, edi
mov edi, ebp
mov ebp, dword [esp + 0x24]
jmp 0xbcaeb0
mov ebx, esi
mov esi, edi
mov edi, ebp
mov dword [esp + 0x3c], esi
mov ebp, dword [esp + 0x24]
jmp 0xbcb81f
mov ebx, edi
jmp 0xbcc7ed
mov ebx, esi
mov esi, edi
mov edi, ebp
mov ebp, dword [esp + 0x24]
mov dword [esp + 0x24], 1
jmp 0xbcaec0