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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x5c
mov edi, dword [esp + 0x70]
mov dword [esp + 0x30], 0
mov eax, 0xfffffffe
test edi, edi
je 0x4ce016
cmp dword [edi + 0x20], 0
je 0x4ce016
cmp dword [edi + 0x24], 0
je 0x4ce016
mov esi, dword [edi + 0x1c]
test esi, esi
je 0x4ce016
cmp dword [esi], edi
jne 0x4ce016
mov ebp, dword [esi + 4]
lea ecx, [ebp - 0x3f34]
cmp ecx, 0x1f
ja 0x4ce016
mov edx, dword [edi + 0xc]
test edx, edx
je 0x4ce016
mov ecx, dword [edi]
test ecx, ecx
je 0x4cdb5c
mov dword [esp + 0x2c], edx
lea edi, [esi + 4]
cmp ebp, 0x3f3f
jne 0x4cbd55
mov dword [edi], 0x3f40
mov eax, dword [esp + 0x70]
mov ecx, dword [eax]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x2c], eax
mov ebp, 0x3f40
mov eax, dword [esp + 0x70]
mov edx, dword [eax + 4]
mov ebx, dword [eax + 0x10]
mov eax, dword [esi + 0x3c]
mov dword [esp], eax
mov dword [esp + 0xc], esi
mov esi, dword [esp + 0xc]
mov esi, dword [esi + 0x40]
mov dword [esp + 0x14], edi
mov edi, dword [esp + 0xc]
add edi, 0x1c
mov dword [esp + 0x28], edi
mov edi, dword [esp + 0xc]
lea eax, [edi + 0x534]
mov dword [esp + 0x48], eax
mov dword [esp + 4], ecx
mov eax, dword [esp]
mov dword [esp + 8], eax
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0xc]
lea eax, [esi + 0x70]
mov dword [esp + 0x40], eax
lea eax, [esi + 0x58]
mov dword [esp + 0x44], eax
lea eax, [esi + 0x74]
lea edi, [esi + 0x2f4]
lea ecx, [esi + 0x5c]
mov dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x74]
lea ecx, [ecx - 5]
mov dword [esp + 0x58], ecx
mov dword [esp + 0x18], 0
mov dword [esp + 0x50], edx
mov dword [esp], edx
mov edx, edi
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], ebx
mov ebx, eax
mov dword [esp + 0x4c], eax
mov dword [esp + 0x3c], edi
add ebp, 0xffffc0cc
cmp ebp, 0x1e
ja case.default.0x4cbe0d
mov ecx, 0xfffffffd
mov eax, 1
mov edx, dword [esp + 8]
mov ebx, dword [esp + 0x10]
jmp dword [ebp*4 + 0x593180]
mov eax, dword [esi + 0xc]
test eax, eax
je 0x4cc284
mov dword [esp + 8], edx
cmp ebx, 0x10
jae 0x4cc425
mov ecx, dword [esp]
test ecx, ecx
mov ebp, dword [esp + 4]
je 0x4cddbf
lea edx, [ecx - 1]
movzx edi, byte [ebp]
mov ecx, dword [esp + 0x10]
shl edi, cl
lea esi, [ebp + 1]
add dword [esp + 8], edi
lea ebx, [ecx + 8]
cmp ecx, 7
ja 0x4cd0ea
test edx, edx
je 0x4cde01
add dword [esp], 0xfffffffe
movzx edx, byte [ebp + 1]
add ebp, 2
mov ecx, ebx
shl edx, cl
add dword [esp + 8], edx
mov ebx, dword [esp + 0x10]
add ebx, 0x10
jmp 0x4cd0ef
cmp ebx, 0x10
jae 0x4cc257
mov edi, edx
mov eax, dword [esp]
test eax, eax
mov ebp, dword [esp + 4]
je 0x4cdcdf
dec eax
movzx esi, byte [ebp]
mov ecx, ebx
shl esi, cl
lea edx, [ebp + 1]
add edi, esi
lea ecx, [ebx + 8]
cmp ebx, 7
ja 0x4cc4a4
test eax, eax
mov esi, dword [esp + 0xc]
je 0x4cdd49
add dword [esp], 0xfffffffe
movzx eax, byte [ebp + 1]
add ebp, 2
shl eax, cl
mov edx, edi
add edx, eax
add ebx, 0x10
jmp 0x4cc4b1
cmp ebx, 0x1f
mov ebp, dword [esp + 4]
jbe 0x4ccb1d
jmp 0x4ccbb1
cmp ebx, 0xf
mov ebp, dword [esp + 4]
jbe 0x4ccbf0
jmp 0x4ccc35
mov eax, dword [esi + 0x14]
test eax, 0x400
jne 0x4cc260
mov ebx, edx
mov ebp, dword [esp + 4]
jmp 0x4ccc9d
cmp ebx, 0x20
jae 0x4cc2a9
mov ebp, edx
mov eax, dword [esp]
test eax, eax
je 0x4cdd74
mov edi, dword [esp + 4]
movzx edx, byte [edi]
mov ecx, ebx
shl edx, cl
dec eax
add ebp, edx
lea edx, [edi + 1]
cmp ebx, 0x17
ja 0x4cc2a0
lea ecx, [ebx + 8]
test eax, eax
je 0x4cdd9c
movzx edx, byte [edi + 1]
shl edx, cl
mov eax, dword [esp]
add eax, 0xfffffffe
add ebp, edx
lea edx, [edi + 2]
cmp ebx, 0xf
ja 0x4cc2a0
lea ecx, [ebx + 0x10]
test eax, eax
je 0x4cdd9c
movzx edx, byte [edi + 2]
shl edx, cl
mov eax, dword [esp]
add eax, 0xfffffffd
add ebp, edx
mov edx, ebp
lea ecx, [edi + 3]
cmp ebx, 7
ja 0x4cda86
add ebx, 0x18
test eax, eax
je 0x4cdd25
add dword [esp], 0xfffffffc
movzx eax, byte [edi + 3]
add edi, 4
mov dword [esp + 4], edi
mov ecx, ebx
shl eax, cl
add edx, eax
jmp 0x4cc2a9
mov ecx, ebx
and cl, 7
shr edx, cl
and ebx, 0xfffffff8
cmp ebx, 0x1f
ja 0x4cc272
mov eax, dword [esp]
test eax, eax
mov edi, dword [esp + 4]
je 0x4cdd7d
dec eax
movzx esi, byte [edi]
mov ecx, ebx
shl esi, cl
lea ebp, [edi + 1]
add edx, esi
mov dword [esp + 8], edx
lea ecx, [ebx + 8]
cmp ebx, 0x17
ja 0x4cc4ff
test eax, eax
je 0x4cdde6
mov eax, dword [esp]
add eax, 0xfffffffe
movzx esi, byte [edi + 1]
shl esi, cl
lea edx, [edi + 2]
add dword [esp + 8], esi
lea ecx, [ebx + 0x10]
cmp ebx, 0xf
ja 0x4cc041
test eax, eax
je 0x4cde0e
mov eax, dword [esp]
add eax, 0xfffffffd
movzx esi, byte [edi + 2]
shl esi, cl
lea edx, [edi + 3]
add dword [esp + 8], esi
lea ecx, [ebx + 0x18]
test ebx, ebx
je 0x4cda92
mov edi, edx
jmp 0x4cc501
cmp ebx, 0xe
jae 0x4cc27b
mov edi, edx
mov eax, dword [esp]
test eax, eax
mov ebp, dword [esp + 4]
je 0x4cdcdf
dec eax
movzx esi, byte [ebp]
mov ecx, ebx
shl esi, cl
lea edx, [ebp + 1]
add edi, esi
lea ecx, [ebx + 8]
cmp ebx, 5
ja 0x4cc5ec
mov esi, eax
mov eax, edx
mov edx, ebp
test esi, esi
mov esi, dword [esp + 0xc]
mov ebp, dword [esp + 0x14]
je 0x4cddec
add dword [esp], 0xfffffffe
movzx eax, byte [edx + 1]
add edx, 2
mov dword [esp + 4], edx
shl eax, cl
mov edx, edi
add edx, eax
add ebx, 0x10
jmp 0x4cc5ff
mov edi, edx
mov eax, dword [esi + 0x60]
mov ecx, dword [esi + 0x6c]
mov dword [esp + 0x1c], eax
cmp ecx, eax
mov ebp, dword [esp]
jb 0x4cc655
cmp ecx, 0x12
mov dword [esp], ebp
ja 0x4cc731
mov edx, 3
sub edx, ecx
and edx, 3
je 0x4cc6d6
mov esi, ecx
mov ebp, dword [esp + 0xc]
lea eax, [esi + 1]
movzx esi, word [esi + esi + 0x59320c]
mov word [ebp + esi*2 + 0x74], 0
mov esi, eax
dec edx
jne 0x4cc0e8
jmp 0x4cc6dc
mov ecx, dword [esi + 0x6c]
mov ebp, dword [esp + 0x40]
jmp 0x4cc799
mov ecx, dword [esi + 0x4c]
test ecx, ecx
je 0x4cd5b8
mov eax, edx
cmp ebx, ecx
jae 0x4cc3eb
mov dword [esp + 0x10], ebx
mov edx, ebx
mov edi, dword [esp]
mov ebx, dword [esp + 4]
sub edi, 1
jb 0x4cdbd7
movzx esi, byte [ebx]
mov ebp, ecx
mov ecx, edx
shl esi, cl
mov ecx, ebp
inc ebx
add eax, esi
add edx, 8
cmp edx, ebp
jb 0x4cc132
jmp 0x4cc3f4
mov ebp, dword [esi + 0x4c]
mov eax, dword [esp + 0x14]
jmp 0x4cd766
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x4cdc62
movzx eax, byte [esi + 0x44]
mov edx, dword [esp + 0x2c]
mov byte [edx], al
inc edx
mov dword [esp + 0x2c], edx
dec ecx
mov dword [esp + 0x20], ecx
mov dword [esi + 4], 0x3f48
mov ebp, dword [esp + 0x14]
mov ebp, dword [ebp]
jmp 0x4cbdec
cmp dword [esi + 0xc], 0
je 0x4cc297
cmp ebx, 0x1f
ja 0x4cc42e
mov edi, edx
mov eax, dword [esp]
test eax, eax
mov ebp, dword [esp + 4]
je 0x4cdcdf
dec eax
movzx esi, byte [ebp]
mov ecx, ebx
shl esi, cl
lea edx, [ebp + 1]
add edi, esi
lea ecx, [ebx + 8]
cmp ebx, 0x17
ja 0x4cc43b
test eax, eax
je 0x4cddd4
mov eax, dword [esp]
add eax, 0xfffffffe
movzx esi, byte [ebp + 1]
shl esi, cl
lea edx, [ebp + 2]
add edi, esi
lea ecx, [ebx + 0x10]
cmp ebx, 0xf
ja 0x4cc43b
test eax, eax
je 0x4cddd4
mov eax, dword [esp]
add eax, 0xfffffffd
movzx esi, byte [ebp + 2]
shl esi, cl
lea edx, [ebp + 3]
add edi, esi
lea ecx, [ebx + 0x18]
cmp ebx, 7
ja 0x4cc43b
test eax, eax
je 0x4cddd4
mov edx, dword [esp]
add edx, 0xfffffffc
movzx eax, byte [ebp + 3]
add ebp, 4
mov dword [esp + 4], ebp
shl eax, cl
add edi, eax
mov dword [esp + 8], edi
add ebx, 0x20
mov dword [esp + 0x10], ebx
jmp 0x4cc449
mov eax, edx
mov ebp, dword [esi + 0xc]
mov edx, dword [esp + 0x14]
jmp 0x4cd20a
mov ebp, dword [esp + 4]
jmp 0x4cc4b1
cmp ebx, 0xf
mov ebp, dword [esp + 4]
ja 0x4ccd0b
jmp 0x4cccb8
mov edi, dword [esp + 4]
jmp 0x4cc50e
mov ebp, dword [esp + 0x14]
jmp 0x4cc5ff
mov ebp, dword [esp + 0x14]
mov dword [ebp], 0x3f40
mov ebp, dword [ebp]
jmp 0x4cbdec
mov eax, edx
xor ebp, ebp
jmp 0x4cd200
mov dword [esp + 4], edx
mov dword [esp], eax
mov edx, ebp
bswap edx
mov eax, dword [esp + 0x28]
mov dword [eax], edx
mov eax, dword [esp + 0x70]
mov dword [eax + 0x30], edx
mov eax, dword [esp + 0x14]
mov dword [eax], 0x3f3e
xor edx, edx
xor ebx, ebx
cmp dword [esi + 0x10], 0
je 0x4cdc94
push 0
push 0
push 0
mov edi, edx
call fcn.0053d0f0
mov edx, edi
add esp, 0xc
mov ecx, dword [esp + 0x28]
mov dword [ecx], eax
mov ecx, dword [esp + 0x70]
mov dword [ecx + 0x30], eax
mov eax, dword [esp + 0x14]
mov dword [eax], 0x3f3f
cmp dword [esp + 0x58], 2
jb 0x4cdc55
cmp dword [esi + 8], 0
je 0x4cc331
mov eax, ebx
and bl, 7
mov ecx, ebx
shr edx, cl
and eax, 0xfffffff8
mov ebp, dword [esp + 0x14]
mov dword [ebp], 0x3f4e
mov dword [esp + 8], edx
mov dword [esp + 0x10], eax
mov ebp, dword [ebp]
jmp 0x4cbdec
cmp ebx, 3
jae 0x4cc360
mov eax, dword [esp]
test eax, eax
mov edi, dword [esp + 4]
je 0x4cdd29
dec eax
mov dword [esp], eax
movzx eax, byte [edi]
mov ebp, edx
mov edx, ebx
mov ecx, ebx
shl eax, cl
inc edi
add ebp, eax
add edx, 8
mov ebx, edx
mov edx, ebp
jmp 0x4cc364
mov edi, dword [esp + 4]
mov eax, edx
and eax, 1
mov dword [esi + 8], eax
mov ebp, edx
mov ecx, edx
shr ecx, 1
and ecx, 3
mov eax, 0x3f41
mov dword [esp + 4], edi
jmp dword [ecx*4 + 0x5931fc]
mov dword [esi + 0x50], 0x593400
mov dword [esi + 0x58], 9
mov dword [esi + 0x54], 0x593c00
mov dword [esi + 0x5c], 5
mov dword [esi + 4], 0x3f47
cmp dword [esp + 0x74], 6
jne 0x4cc3d1
jmp 0x4cddb1
mov eax, 0x3f44
jmp case.0x4cc37e.0
mov eax, dword [esp + 0x70]
mov dword [eax + 0x18], str.invalid_block_type
mov eax, 0x3f51
mov ecx, dword [esp + 0x14]
mov dword [ecx], eax
shr ebp, 3
mov dword [esp + 8], ebp
add ebx, 0xfffffffd
mov dword [esp + 0x10], ebx
mov ebp, dword [esp + 0x14]
mov ebp, dword [ebp]
jmp 0x4cbdec
mov edx, ebx
mov ebx, dword [esp + 4]
mov edi, dword [esp]
mov esi, 0xffffffff
shl esi, cl
not esi
mov ebp, eax
and esi, eax
mov eax, dword [esp + 0xc]
add esi, dword [eax + 0x44]
shr ebp, cl
mov dword [eax + 0x44], esi
add dword [eax + 0x2348], ecx
sub edx, ecx
mov dword [esp + 4], ebx
mov dword [esp], edi
mov ebx, edx
mov edx, ebp
jmp 0x4cd5bd
mov ebp, dword [esp + 4]
jmp 0x4cd0f3
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x24]
mov edx, dword [esp]
jmp 0x4cc455
mov dword [esp + 8], edi
mov dword [esp + 4], edx
mov edx, eax
mov dword [esp + 0x10], ecx
mov esi, dword [esp + 0xc]
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x24]
mov dword [esp], edx
mov ecx, ebx
sub ecx, eax
mov edx, dword [esp + 0x70]
add dword [edx + 0x14], ecx
add dword [esi + 0x20], ecx
mov edx, dword [esi + 0xc]
mov ebp, edx
and edx, 4
je 0x4cd0e1
mov edi, ebx
mov ebx, eax
cmp edi, eax
mov edi, dword [esp + 8]
je 0x4cd1dc
mov edx, dword [esp + 0x2c]
sub edx, ecx
cmp dword [esi + 0x14], 0
mov eax, dword [esi + 0x1c]
je 0x4cd1bf
push ecx
push edx
push eax
call fcn.004ced90
jmp 0x4cd1c7
mov ebp, edx
mov dword [esp], eax
mov ebx, ecx
mov esi, dword [esp + 0xc]
mov edx, edi
mov dword [esi + 0x14], edx
cmp dl, 8
mov edi, edx
jne 0x4cc4e3
test edi, 0xe000
je 0x4ccacd
mov dword [esp + 0x10], ebx
mov dword [esp + 4], ebp
mov dword [esp + 8], edi
mov eax, dword [esp + 0x70]
mov dword [eax + 0x18], str.unknown_header_flags_set
jmp 0x4cd822
mov dword [esp + 0x10], ebx
mov dword [esp + 4], ebp
mov dword [esp + 8], edi
mov eax, dword [esp + 0x70]
mov dword [eax + 0x18], str.unknown_compression_method
jmp 0x4cd822
mov edi, ebp
mov dword [esp], eax
mov ebx, ecx
mov esi, dword [esp + 0xc]
mov edx, dword [esp + 8]
mov dword [esp + 4], edi
movzx eax, dx
mov ecx, edx
not ecx
shr ecx, 0x10
cmp eax, ecx
jne 0x4cc5c6
xor edx, edx
mov dword [esi + 0x44], eax
mov dword [esi + 4], 0x3f42
mov ebx, 0
cmp dword [esp + 0x74], 6
je 0x4cdd91
mov eax, dword [esp + 0x14]
mov dword [eax], 0x3f43
mov dword [esp + 0x10], ebx
mov dword [esp + 8], edx
mov esi, dword [esi + 0x44]
test esi, esi
je 0x4cc5af
mov eax, dword [esp]
cmp esi, eax
cmovae esi, eax
mov ebx, dword [esp + 0x20]
cmp esi, ebx
cmovae esi, ebx
test esi, esi
je 0x4cdcc2
push esi
mov ebp, dword [esp + 8]
push ebp
mov edi, dword [esp + 0x34]
push edi
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
sub dword [esp], esi
add ebp, esi
mov dword [esp + 4], ebp
sub ebx, esi
mov dword [esp + 0x20], ebx
add edi, esi
mov dword [esp + 0x2c], edi
mov eax, dword [esp + 0xc]
sub dword [eax + 0x44], esi
mov esi, eax
mov ebp, dword [esp + 0x14]
mov ebp, dword [ebp]
jmp 0x4cbdec
mov ebp, dword [esp + 0x14]
mov dword [ebp], 0x3f3f
mov esi, dword [esp + 0xc]
mov ebp, dword [ebp]
jmp 0x4cbdec
mov dword [esp + 0x10], ebx
mov dword [esp + 8], edx
mov eax, dword [esp + 0x70]
mov dword [eax + 0x18], str.invalid_stored_block_lengths
mov eax, dword [esp + 0x14]
mov dword [eax], 0x3f51
mov ebp, eax
mov ebp, dword [eax]
jmp 0x4cbdec
mov dword [esp + 4], edx
mov dword [esp], eax
mov ebx, ecx
mov esi, dword [esp + 0xc]
mov ebp, dword [esp + 0x14]
mov edx, edi
mov edi, edx
mov eax, edx
and eax, 0x1f
mov dword [esp + 8], eax
add eax, 0x101
mov dword [esi + 0x64], eax
shr edx, 5
and edx, 0x1f
lea eax, [edx + 1]
mov dword [esi + 0x68], eax
mov eax, edi
shr eax, 0xa
and eax, 0xf
add eax, 4
mov dword [esp + 0x1c], eax
mov dword [esi + 0x60], eax
shr edi, 0xe
add ebx, 0xfffffff2
cmp dword [esp + 8], 0x1d
ja 0x4cc6b4
cmp edx, 0x1e
jae 0x4cc6b4
mov dword [esi + 0x6c], 0
mov dword [esi + 4], 0x3f45
xor ecx, ecx
mov ebp, dword [esp]
mov edx, ecx
jmp 0x4cc68d
mov eax, edi
mov esi, eax
and esi, 7
lea ecx, [edx + 1]
mov edi, dword [esp + 0xc]
mov dword [edi + 0x6c], ecx
movzx edx, word [edx + edx + 0x59320c]
mov word [edi + edx*2 + 0x74], si
mov esi, edi
shr eax, 3
mov edi, eax
add ebx, 0xfffffffd
mov edx, ecx
cmp ecx, dword [esp + 0x1c]
jae 0x4cc0c6
cmp ebx, 2
ja 0x4cc659
test ebp, ebp
je 0x4cdc01
mov eax, dword [esp + 4]
movzx esi, byte [eax]
mov ecx, ebx
shl esi, cl
dec ebp
inc eax
mov dword [esp + 4], eax
mov eax, edi
add eax, esi
add ebx, 8
jmp 0x4cc65b
mov dword [esp + 0x10], ebx
mov dword [esp + 8], edi
mov eax, dword [esp + 0x70]
mov dword [eax + 0x18], str.too_many_length_or_distance_symbols
mov dword [ebp], 0x3f51
mov ebp, dword [ebp]
jmp 0x4cbdec
mov eax, ecx
mov ebp, dword [esp + 0xc]
add ecx, 0xfffffff0
mov edx, eax
cmp ecx, 3
mov esi, ebp
jb 0x4cc72e
movzx ecx, word [eax + eax + 0x59320c]
mov word [esi + ecx*2 + 0x74], 0
movzx ecx, word [eax + eax + 0x59320e]
mov word [esi + ecx*2 + 0x74], 0
movzx ecx, word [eax + eax + 0x593210]
mov word [esi + ecx*2 + 0x74], 0
lea edx, [eax + 4]
movzx eax, word [eax + eax + 0x593212]
mov word [esi + eax*2 + 0x74], 0
mov eax, edx
cmp edx, 0x13
jne 0x4cc6e8
mov dword [esi + 0x6c], edx
mov eax, dword [esp + 0x48]
mov dword [esi + 0x70], eax
mov dword [esi + 0x50], eax
mov dword [esi + 0x58], 7
push dword [esp + 0x3c]
push dword [esp + 0x48]
mov ebp, dword [esp + 0x48]
push ebp
push 0x13
push dword [esp + 0x5c]
push 0
call fcn.0053d280
add esp, 0x18
test eax, eax
je 0x4cc77f
mov dword [esp + 0x10], ebx
mov dword [esp + 0x18], eax
mov dword [esp + 8], edi
mov eax, dword [esp + 0x70]
mov dword [eax + 0x18], str.invalid_code_lengths_set
jmp 0x4cd822
mov dword [esi + 0x6c], 0
mov dword [esi + 4], 0x3f46
xor ecx, ecx
mov dword [esp + 0x18], 0
mov edx, edi
mov eax, dword [esi + 0x64]
mov edi, dword [esi + 0x68]
add edi, eax
cmp ecx, edi
jae 0x4cca62
mov dword [esp + 0x34], ecx
mov dword [esp + 0x38], edi
mov ebp, dword [esi + 0x50]
movzx ecx, byte [esi + 0x58]
mov esi, 0xffffffff
shl esi, cl
not esi
mov edi, edx
mov ecx, edx
and ecx, esi
movzx edx, byte [ebp + ecx*4 + 1]
cmp ebx, edx
jae 0x4cc810
mov dword [esp + 0x10], ebx
mov eax, ebx
mov ecx, dword [esp]
mov dword [esp + 0x1c], ecx
mov ebx, dword [esp + 4]
mov ecx, dword [esp + 0x1c]
sub ecx, 1
jb 0x4cdbc1
mov dword [esp + 0x1c], ecx
movzx edx, byte [ebx]
mov ecx, eax
shl edx, cl
inc ebx
mov ecx, edi
add ecx, edx
add eax, 8
mov edi, ecx
and ecx, esi
movzx edx, byte [ebp + ecx*4 + 1]
cmp eax, edx
jb 0x4cc7e1
jmp 0x4cc81d
mov eax, ebx
mov ebx, dword [esp + 4]
mov esi, dword [esp]
mov dword [esp + 0x1c], esi
movzx ecx, word [ebp + ecx*4 + 2]
cmp ecx, 0xf
ja 0x4cc85a
mov esi, dword [esp + 0x34]
inc esi
mov ebp, dword [esp + 0xc]
mov dword [ebp + 0x6c], esi
mov esi, ebp
mov ebp, dword [esp + 0x34]
mov word [esi + ebp*2 + 0x74], cx
mov ecx, edx
shr edi, cl
mov dword [esp + 8], edi
sub eax, edx
mov dword [esp + 4], ebx
mov ecx, dword [esp + 0x1c]
mov dword [esp], ecx
mov ebx, eax
jmp 0x4cca23
cmp ecx, 0x10
je 0x4cc8ae
cmp ecx, 0x11
jne 0x4cc90a
lea esi, [edx + 3]
cmp eax, esi
jae 0x4cc891
mov ecx, dword [esp + 0x1c]
sub ecx, 1
jb 0x4cdc13
mov dword [esp + 0x1c], ecx
movzx ebp, byte [ebx]
mov ecx, eax
shl ebp, cl
inc ebx
add edi, ebp
add eax, 8
cmp eax, esi
jb 0x4cc86f
mov ecx, edx
shr edi, cl
mov ecx, edi
and ecx, 7
add ecx, 3
shr edi, 3
mov dword [esp + 8], edi
sub eax, edx
add eax, 0xfffffffd
jmp 0x4cc94b
lea esi, [edx + 2]
cmp eax, esi
jae 0x4cc8d7
mov ecx, dword [esp + 0x1c]
sub ecx, 1
jb 0x4cdc13
mov dword [esp + 0x1c], ecx
movzx ebp, byte [ebx]
mov ecx, eax
shl ebp, cl
inc ebx
add edi, ebp
add eax, 8
cmp eax, esi
jb 0x4cc8b5
mov ecx, edx
shr edi, cl
sub eax, edx
mov ecx, dword [esp + 0x34]
test ecx, ecx
je 0x4cdb27
mov esi, dword [esp + 0xc]
movzx edx, word [esi + ecx*2 + 0x72]
mov ecx, edi
and ecx, 3
add ecx, 3
shr edi, 2
mov dword [esp + 8], edi
add eax, 0xfffffffe
mov dword [esp + 0x10], eax
jmp 0x4cc955
lea esi, [edx + 7]
cmp eax, esi
jae 0x4cc933
mov ecx, dword [esp + 0x1c]
sub ecx, 1
jb 0x4cdc13
mov dword [esp + 0x1c], ecx
movzx ebp, byte [ebx]
mov ecx, eax
shl ebp, cl
inc ebx
add edi, ebp
add eax, 8
cmp eax, esi
jb 0x4cc911
mov ecx, edx
shr edi, cl
mov ecx, edi
and ecx, 0x7f
add ecx, 0xb
shr edi, 7
mov dword [esp + 8], edi
sub eax, edx
add eax, 0xfffffff9
xor edx, edx
mov dword [esp + 0x10], eax
mov esi, dword [esp + 0xc]
mov edi, dword [esp + 0x38]
mov eax, dword [esp + 0x34]
add eax, ecx
cmp eax, edi
ja 0x4cdad3
lea eax, [ecx - 1]
mov ebp, ecx
and ebp, 3
je 0x4cc9a6
mov dword [esp + 4], ecx
mov dword [esp], eax
xor edi, edi
mov eax, dword [esi + 0x6c]
lea esi, [eax + 1]
mov ecx, edx
mov edx, ebp
mov ebp, dword [esp + 0xc]
mov dword [ebp + 0x6c], esi
mov ebp, edx
mov edx, ecx
mov esi, dword [esp + 0xc]
mov word [esi + eax*2 + 0x74], dx
inc edi
cmp ebp, edi
jne 0x4cc97a
mov ecx, dword [esp + 4]
sub ecx, edi
mov eax, dword [esp]
cmp eax, 3
jb 0x4cca14
mov eax, dword [esi + 0x6c]
lea esi, [eax + 1]
mov edi, dword [esp + 0xc]
mov dword [edi + 0x6c], esi
mov esi, dword [esp + 0xc]
mov word [esi + eax*2 + 0x74], dx
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0x6c]
lea esi, [eax + 1]
mov edi, dword [esp + 0xc]
mov dword [edi + 0x6c], esi
mov esi, dword [esp + 0xc]
mov word [esi + eax*2 + 0x74], dx
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0x6c]
lea esi, [eax + 1]
mov edi, dword [esp + 0xc]
mov dword [edi + 0x6c], esi
mov esi, dword [esp + 0xc]
mov word [esi + eax*2 + 0x74], dx
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0x6c]
lea esi, [eax + 1]
mov edi, dword [esp + 0xc]
mov dword [edi + 0x6c], esi
mov esi, dword [esp + 0xc]
mov word [esi + eax*2 + 0x74], dx
add ecx, 0xfffffffc
jne 0x4cc9ab
mov dword [esp + 4], ebx
mov eax, dword [esp + 0x1c]
mov dword [esp], eax
mov ebx, dword [esp + 0x10]
mov eax, dword [esi + 0x64]
mov ecx, dword [esi + 0x6c]
mov edi, dword [esi + 0x68]
add edi, eax
mov dword [esp + 0x34], ecx
cmp ecx, edi
mov edx, dword [esp + 8]
jb 0x4cc7ad
mov dword [esp + 0x10], ebx
mov ecx, dword [esp + 0x14]
cmp dword [ecx], 0x3f51
mov ebp, dword [esp + 0x40]
mov edx, dword [esp + 0x3c]
jne 0x4cca6e
mov ebp, dword [esp + 0x14]
mov ebp, dword [ebp]
jmp 0x4cbdec
mov dword [esp + 0x10], ebx
mov dword [esp + 8], edx
mov edx, dword [esp + 0x3c]
cmp word [esi + 0x274], 0
mov ebx, dword [esp + 0x4c]
je 0x4ccabd
mov ecx, dword [esp + 0x48]
mov dword [esi + 0x70], ecx
mov dword [esi + 0x50], ecx
mov dword [esi + 0x58], 0xa
push edx
push dword [esp + 0x48]
push ebp
push eax
push ebx
push 1
mov edi, edx
call fcn.0053d280
add esp, 0x18
test eax, eax
je 0x4cd09e
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x70]
mov dword [eax + 0x18], str.invalid_literal_lengths_set
jmp 0x4cd822
mov eax, dword [esp + 0x70]
mov dword [eax + 0x18], str.invalid_code____missing_end_of_block
jmp 0x4cd822
mov eax, dword [esi + 0x24]
mov ecx, edi
test eax, eax
mov edx, edi
je 0x4ccae5
mov ecx, edx
shr ecx, 8
and ecx, 1
mov dword [eax], ecx
mov ecx, dword [esi + 0x14]
test ecx, 0x200
je 0x4ccb0f
test byte [esi + 0xc], 4
je 0x4ccb0f
mov word [esp + 0x30], dx
lea eax, [esp + 0x30]
push 2
push eax
mov edi, dword [esp + 0x30]
push dword [edi]
call fcn.004ced90
add esp, 0xc
mov dword [edi], eax
mov eax, dword [esp + 0x14]
mov dword [eax], 0x3f36
xor ebx, ebx
xor edx, edx
mov eax, dword [esp]
test eax, eax
je 0x4cdc8b
mov edi, edx
movzx edx, byte [ebp]
mov ecx, ebx
shl edx, cl
dec eax
add edi, edx
lea edx, [ebp + 1]
cmp ebx, 0x17
ja 0x4ccbaa
lea ecx, [ebx + 8]
test eax, eax
je 0x4cdd49
movzx edx, byte [ebp + 1]
shl edx, cl
mov eax, dword [esp]
add eax, 0xfffffffe
add edi, edx
lea edx, [ebp + 2]
cmp ebx, 0xf
ja 0x4ccbaa
lea ecx, [ebx + 0x10]
test eax, eax
je 0x4cdd49
movzx edx, byte [ebp + 2]
shl edx, cl
mov eax, dword [esp]
add eax, 0xfffffffd
add edi, edx
mov edx, edi
lea ecx, [ebp + 3]
cmp ebx, 7
ja 0x4cd317
add ebx, 0x18
test eax, eax
je 0x4cdd25
add dword [esp], 0xfffffffc
movzx eax, byte [ebp + 3]
add ebp, 4
mov ecx, ebx
shl eax, cl
add edx, eax
mov eax, dword [esi + 0x24]
test eax, eax
jne 0x4ccbb8
jmp 0x4ccbbb
mov ebp, edx
mov dword [esp], eax
mov edx, edi
mov eax, dword [esi + 0x24]
test eax, eax
je 0x4ccbbb
mov dword [eax + 4], edx
test byte [esi + 0x15], 2
je 0x4ccbe2
test byte [esi + 0xc], 4
je 0x4ccbe2
mov dword [esp + 0x30], edx
lea eax, [esp + 0x30]
push 4
push eax
mov edi, dword [esp + 0x30]
push dword [edi]
call fcn.004ced90
add esp, 0xc
mov dword [edi], eax
mov eax, dword [esp + 0x14]
mov dword [eax], 0x3f37
xor ebx, ebx
xor edx, edx
mov eax, dword [esp]
test eax, eax
je 0x4cdc8b
mov edi, edx
movzx edx, byte [ebp]
mov ecx, ebx
shl edx, cl
dec eax
add edi, edx
mov edx, edi
lea ecx, [ebp + 1]
cmp ebx, 7
ja 0x4ccc30
add ebx, 8
test eax, eax
je 0x4cdd25
add dword [esp], 0xfffffffe
movzx eax, byte [ebp + 1]
add ebp, 2
mov ecx, ebx
shl eax, cl
add edx, eax
jmp 0x4ccc35
mov ebp, ecx
mov dword [esp], eax
mov eax, dword [esi + 0x24]
test eax, eax
je 0x4ccc4f
mov ecx, edx
movzx ecx, dl
mov dword [eax + 8], ecx
mov eax, edx
shr eax, 8
mov ecx, dword [esi + 0x24]
mov dword [ecx + 0xc], eax
test byte [esi + 0x15], 2
je 0x4ccc77
test byte [esi + 0xc], 4
je 0x4ccc77
mov word [esp + 0x30], dx
lea eax, [esp + 0x30]
push 2
push eax
mov edi, dword [esp + 0x30]
push dword [edi]
call fcn.004ced90
add esp, 0xc
mov dword [edi], eax
mov dword [esi + 4], 0x3f38
mov eax, dword [esi + 0x14]
mov dword [esp + 8], 0
mov dword [esp + 0x10], 0
mov ebx, 0
test eax, 0x400
jne 0x4cccb8
mov dword [esp + 4], ebp
mov eax, dword [esi + 0x24]
test eax, eax
je 0x4cccaf
mov dword [eax + 0x10], 0
mov eax, dword [esp + 0x14]
jmp 0x4ccd6c
mov edi, dword [esp]
test edi, edi
je 0x4cdcf5
movzx edx, byte [ebp]
mov ebx, dword [esp + 0x10]
mov ecx, ebx
shl edx, cl
lea ecx, [edi - 1]
mov edi, dword [esp + 8]
add edi, edx
lea edx, [ebp + 1]
cmp ebx, 7
ja 0x4ccd02
add ebx, 8
test ecx, ecx
je 0x4cdd64
add dword [esp], 0xfffffffe
movzx edx, byte [ebp + 1]
add ebp, 2
mov ecx, ebx
shl edx, cl
add edi, edx
mov dword [esp + 8], edi
jmp 0x4ccd0b
mov dword [esp + 8], edi
mov ebp, edx
mov dword [esp], ecx
mov edx, dword [esp + 8]
mov dword [esi + 0x44], edx
mov ecx, dword [esi + 0x24]
test ecx, ecx
je 0x4ccd1f
mov dword [ecx + 0x14], edx
mov eax, dword [esi + 0x14]
xor ebx, ebx
test eax, 0x200
mov dword [esp + 4], ebp
je 0x4ccd32
test byte [esi + 0xc], 4
jne 0x4ccd40
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x14]
jmp 0x4ccd6c
mov eax, dword [esp + 8]
mov word [esp + 0x30], ax
lea eax, [esp + 0x30]
push 2
push eax
mov edi, dword [esp + 0x30]
push dword [edi]
call fcn.004ced90
add esp, 0xc
mov dword [edi], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x10], 0
mov dword [eax], 0x3f39
mov edx, ebx
mov ebx, dword [esp + 0x10]
mov eax, dword [esi + 0x14]
test eax, 0x400
je 0x4cce1c
mov dword [esp + 0x10], ebx
mov dword [esp + 8], edx
mov ecx, dword [esi + 0x44]
mov ebx, dword [esp]
cmp ecx, ebx
cmovb ebx, ecx
test ebx, ebx
je 0x4cce0c
mov edi, dword [esi + 0x24]
test edi, edi
mov ebp, dword [esp + 4]
je 0x4ccdd8
mov edx, dword [edi + 0x10]
test edx, edx
je 0x4ccdd8
mov esi, dword [edi + 0x14]
mov edi, dword [edi + 0x18]
sub esi, ecx
mov ecx, edi
sub ecx, esi
jbe 0x4ccdd8
add edx, esi
add esi, ebx
cmp esi, edi
cmovbe ecx, ebx
push ecx
push ebp
push edx
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0x14]
test eax, 0x200
mov esi, dword [esp + 0xc]
je 0x4ccdfb
test byte [esi + 0xc], 4
je 0x4ccdfb
push ebx
push ebp
mov edi, dword [esp + 0x30]
push dword [edi]
call fcn.004ced90
add esp, 0xc
mov dword [edi], eax
sub dword [esp], ebx
add ebp, ebx
mov dword [esp + 4], ebp
mov ecx, dword [esi + 0x44]
sub ecx, ebx
mov dword [esi + 0x44], ecx
test ecx, ecx
mov edx, dword [esp + 8]
mov ebx, dword [esp + 0x10]
jne 0x4cdc55
mov dword [esi + 0x44], 0
mov dword [esi + 4], 0x3f3a
test byte [esi + 0x15], 8
jne 0x4cce47
mov eax, dword [esi + 0x24]
test eax, eax
je 0x4cced5
mov dword [eax + 0x1c], 0
jmp 0x4cced5
mov eax, dword [esp]
test eax, eax
je 0x4cdc2f
mov dword [esp + 0x10], ebx
mov dword [esp + 8], edx
xor edi, edi
mov ebp, dword [esp + 4]
movzx ebx, byte [ebp + edi]
mov ecx, dword [esi + 0x24]
test ecx, ecx
je 0x4cce90
mov eax, dword [ecx + 0x1c]
test eax, eax
je 0x4cce90
mov edx, dword [esi + 0x44]
cmp edx, dword [ecx + 0x20]
jae 0x4cce90
lea ecx, [edx + 1]
mov dword [esi + 0x44], ecx
mov byte [eax + edx], bl
nop word cs:[eax + eax]
inc edi
test bl, bl
je 0x4cce9a
cmp dword [esp], edi
ja 0x4cce60
test byte [esi + 0x15], 2
je 0x4ccebc
test byte [esi + 0xc], 4
je 0x4ccebc
push edi
push ebp
mov eax, dword [esp + 0x30]
push dword [eax]
call fcn.004ced90
add esp, 0xc
mov ecx, dword [esp + 0x28]
mov dword [ecx], eax
test bl, bl
jne 0x4cdc3f
sub dword [esp], edi
add ebp, edi
mov dword [esp + 4], ebp
mov edx, dword [esp + 8]
mov ebx, dword [esp + 0x10]
mov dword [esi + 0x44], 0
mov dword [esi + 4], 0x3f3b
test byte [esi + 0x15], 0x10
jne 0x4ccf00
mov eax, dword [esi + 0x24]
test eax, eax
je 0x4ccef7
mov dword [eax + 0x24], 0
mov eax, dword [esp + 0x14]
jmp 0x4ccf99
mov eax, dword [esp]
test eax, eax
je 0x4cdc2f
mov dword [esp + 0x10], ebx
mov dword [esp + 8], edx
xor edi, edi
mov ebp, dword [esp + 4]
nop dword [eax]
movzx ebx, byte [ebp + edi]
mov ecx, dword [esi + 0x24]
test ecx, ecx
je 0x4ccf50
mov eax, dword [ecx + 0x24]
test eax, eax
je 0x4ccf50
mov edx, dword [esi + 0x44]
cmp edx, dword [ecx + 0x28]
jae 0x4ccf50
lea ecx, [edx + 1]
mov dword [esi + 0x44], ecx
mov byte [eax + edx], bl
nop word cs:[eax + eax]
inc edi
test bl, bl
je 0x4ccf5a
cmp dword [esp], edi
ja 0x4ccf20
test byte [esi + 0x15], 2
je 0x4ccf7c
test byte [esi + 0xc], 4
je 0x4ccf7c
push edi
push ebp
mov eax, dword [esp + 0x30]
push dword [eax]
call fcn.004ced90
add esp, 0xc
mov ecx, dword [esp + 0x28]
mov dword [ecx], eax
test bl, bl
jne 0x4cdc3f
sub dword [esp], edi
add ebp, edi
mov dword [esp + 4], ebp
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 8]
mov ebx, dword [esp + 0x10]
mov dword [eax], 0x3f3c
mov eax, dword [esi + 0x14]
test eax, 0x200
je 0x4cd036
cmp ebx, 0xf
ja 0x4cd00a
mov edi, dword [esp]
test edi, edi
mov ebp, dword [esp + 4]
je 0x4cdd29
mov ecx, ebx
mov dword [esp], edi
mov ebx, edx
lea edx, [edi - 1]
movzx edi, byte [ebp]
shl edi, cl
lea esi, [ebp + 1]
mov dword [esp + 8], esi
add ebx, edi
mov edi, ebx
lea ebx, [ecx + 8]
mov dword [esp + 0x10], ecx
cmp ecx, 7
ja 0x4cd012
test edx, edx
je 0x4cdcd7
add dword [esp], 0xfffffffe
movzx edx, byte [ebp + 1]
add ebp, 2
mov ecx, ebx
shl edx, cl
add edi, edx
mov ebx, dword [esp + 0x10]
add ebx, 0x10
jmp 0x4cd019
mov edi, edx
mov ebp, dword [esp + 4]
jmp 0x4cd01d
mov ebp, dword [esp + 8]
mov dword [esp], edx
mov esi, dword [esp + 0xc]
test byte [esi + 0xc], 4
mov dword [esp + 4], ebp
je 0x4cd032
mov ecx, dword [esp + 0x28]
movzx ecx, word [ecx]
cmp edi, ecx
jne 0x4cd086
xor edx, edx
xor ebx, ebx
mov ebp, dword [esp + 0x14]
mov dword [esp + 0x10], ebx
mov dword [esp + 8], edx
mov ecx, dword [esi + 0x24]
test ecx, ecx
je 0x4cd05c
shr eax, 9
and eax, 1
mov dword [ecx + 0x2c], eax
mov eax, dword [esi + 0x24]
mov dword [eax + 0x30], 1
push 0
push 0
push 0
call fcn.004ced90
add esp, 0xc
mov ecx, dword [esp + 0x28]
mov dword [ecx], eax
mov ecx, dword [esp + 0x70]
mov dword [ecx + 0x30], eax
mov dword [ebp], 0x3f3f
mov ebp, dword [ebp]
jmp 0x4cbdec
mov dword [esp + 0x10], ebx
mov dword [esp + 8], edi
mov eax, dword [esp + 0x70]
mov dword [eax + 0x18], str.header_crc_mismatch
jmp 0x4cd822
mov eax, dword [esi + 0x70]
mov dword [esi + 0x54], eax
mov dword [esi + 0x5c], 9
mov eax, dword [esi + 0x64]
lea eax, [ebx + eax*2]
push edi
push dword [esp + 0x58]
push ebp
push dword [esi + 0x68]
push eax
push 2
call fcn.0053d280
add esp, 0x18
test eax, eax
je 0x4cd32c
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x70]
mov dword [eax + 0x18], str.invalid_distances_set
jmp 0x4cd822
mov edi, dword [esp + 8]
jmp 0x4cd1dc
mov ebp, esi
mov dword [esp], edx
mov esi, dword [esp + 0xc]
test al, 2
mov dword [esp + 4], ebp
je 0x4cd166
cmp dword [esp + 8], 0x8b1f
jne 0x4cd166
mov ebp, esi
cmp dword [esi + 0x28], 0
jne 0x4cd114
mov dword [ebp + 0x28], 0xf
push 0
push 0
push 0
call fcn.004ced90
add esp, 0xc
mov edi, dword [esp + 0x28]
mov dword [edi], eax
mov word [esp + 0x30], 0x8b1f
lea ecx, [esp + 0x30]
push 2
push ecx
push eax
call fcn.004ced90
add esp, 0xc
mov dword [edi], eax
mov eax, dword [esp + 0x14]
mov dword [eax], 0x3f35
mov dword [esp + 8], 0
mov dword [esp + 0x10], 0
mov esi, ebp
mov ebp, eax
mov ebp, dword [eax]
jmp 0x4cbdec
mov ecx, dword [esi + 0x24]
test ecx, ecx
je 0x4cd177
mov dword [ecx + 0x30], 0xffffffff
mov eax, dword [esi + 0xc]
test al, 1
mov ebp, dword [esp + 0x14]
mov dword [esp + 0x10], ebx
je 0x4cd1a5
mov ecx, dword [esp + 8]
mov eax, ecx
shl eax, 8
movzx eax, ax
shr ecx, 8
add ecx, eax
imul eax, ecx, 0xbdef7bdf
cmp eax, 0x8421085
jb 0x4cd9e6
mov eax, dword [esp + 0x70]
mov dword [eax + 0x18], str.incorrect_header_check
mov dword [ebp], 0x3f51
mov ebp, dword [ebp]
jmp 0x4cbdec
push ecx
push edx
push eax
call fcn.0053d0f0
add esp, 0xc
mov dword [esi + 0x1c], eax
mov ecx, dword [esp + 0x70]
mov dword [ecx + 0x30], eax
mov edx, dword [esi + 0xc]
mov ebp, edx
and edx, 4
test edx, edx
je 0x4cd1f4
cmp dword [esi + 0x14], 0
mov ecx, edi
bswap ecx
cmovne ecx, edi
cmp ecx, dword [esi + 0x1c]
jne 0x4cd2f1
xor eax, eax
xor ebx, ebx
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x24], ecx
mov edx, dword [esp + 0x14]
mov dword [edx], 0x3f4f
test ebp, ebp
je 0x4cdc5e
cmp dword [esi + 0x14], 0
je 0x4cdc5e
mov dword [esp + 8], ebp
cmp ebx, 0x1f
ja 0x4cd2ae
mov ecx, dword [esp]
test ecx, ecx
mov ebp, dword [esp + 4]
je 0x4cdd39
lea edx, [ecx - 1]
movzx edi, byte [ebp]
mov ecx, ebx
shl edi, cl
lea esi, [ebp + 1]
add eax, edi
lea ecx, [ebx + 8]
cmp ebx, 0x17
ja 0x4cd2b4
test edx, edx
je 0x4cdd52
mov edx, dword [esp]
add edx, 0xfffffffe
movzx edi, byte [ebp + 1]
shl edi, cl
lea esi, [ebp + 2]
add eax, edi
lea ecx, [ebx + 0x10]
cmp ebx, 0xf
ja 0x4cd2b4
test edx, edx
je 0x4cdd52
mov edx, dword [esp]
add edx, 0xfffffffd
movzx edi, byte [ebp + 2]
shl edi, cl
lea esi, [ebp + 3]
add eax, edi
lea ecx, [ebx + 0x18]
cmp ebx, 7
ja 0x4cd2b4
test edx, edx
je 0x4cdd52
add dword [esp], 0xfffffffc
movzx edx, byte [ebp + 3]
add ebp, 4
shl edx, cl
add eax, edx
add ebx, 0x20
jmp 0x4cd2bb
mov ebp, dword [esp + 4]
jmp 0x4cd2bf
mov ebp, esi
mov dword [esp], edx
mov ebx, ecx
mov esi, dword [esp + 0xc]
xor ecx, ecx
test byte [esp + 8], 4
mov dword [esp + 4], ebp
je 0x4cdc73
cmp eax, dword [esi + 0x20]
je 0x4cdc73
mov dword [esp + 0x10], ebx
mov dword [esp + 8], eax
mov eax, dword [esp + 0x70]
mov dword [eax + 0x18], str.incorrect_length_check
jmp 0x4cd822
mov eax, dword [esp + 0x70]
mov dword [eax + 0x18], str.incorrect_data_check
mov ebp, dword [esp + 0x14]
mov dword [ebp], 0x3f51
mov eax, dword [esp + 0x20]
mov dword [esp + 0x24], eax
mov ebp, dword [ebp]
jmp 0x4cbdec
mov ebp, ecx
mov dword [esp], eax
mov eax, dword [esi + 0x24]
test eax, eax
jne 0x4ccbb8
jmp 0x4ccbbb
mov dword [esp + 0x18], 0
mov eax, dword [esp + 0x14]
mov dword [eax], 0x3f47
cmp dword [esp + 0x74], 6
mov edx, dword [esp + 8]
mov ebx, dword [esp + 0x10]
je 0x4ce061
mov eax, dword [esp + 0x14]
mov dword [eax], 0x3f48
cmp dword [esp], 6
mov eax, dword [esp + 0x20]
jb 0x4cd3ec
cmp eax, 0x102
jb 0x4cd3ec
mov ecx, dword [esp + 0x2c]
mov ebp, esi
mov esi, dword [esp + 0x70]
mov dword [esi + 0xc], ecx
mov dword [esi + 0x10], eax
mov eax, dword [esp + 4]
mov dword [esi], eax
mov eax, dword [esp]
mov dword [esi + 4], eax
mov dword [ebp + 0x3c], edx
mov dword [ebp + 0x40], ebx
push dword [esp + 0x24]
push esi
call fcn.0053dab0
add esp, 8
mov eax, dword [esi + 0xc]
mov dword [esp + 0x2c], eax
mov eax, dword [esi + 0x10]
mov dword [esp + 0x20], eax
mov eax, dword [esi]
mov dword [esp + 4], eax
mov eax, dword [esi + 4]
mov dword [esp], eax
mov esi, ebp
mov eax, dword [ebp + 0x3c]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0x40]
mov dword [esp + 0x10], eax
cmp dword [ebp + 4], 0x3f3f
jne 0x4cd473
mov dword [esi + 0x2348], 0xffffffff
mov ebp, dword [esp + 0x14]
mov ebp, dword [ebp]
jmp 0x4cbdec
mov dword [esi + 0x2348], 0
mov edi, dword [esi + 0x50]
movzx ecx, byte [esi + 0x58]
mov eax, edx
mov edx, 0xffffffff
shl edx, cl
not edx
mov dword [esp + 8], eax
mov ecx, eax
and ecx, edx
movzx eax, byte [edi + ecx*4 + 1]
cmp ebx, eax
mov ebp, dword [esp + 4]
mov dword [esp + 0x10], ebx
jae 0x4cd47f
mov eax, ebp
mov ebp, edi
mov ecx, ebx
mov esi, dword [esp]
mov dword [esp + 4], eax
mov edi, eax
sub esi, 1
jb 0x4cdb6b
movzx eax, byte [edi]
shl eax, cl
inc edi
mov ebx, dword [esp + 8]
add ebx, eax
add ecx, 8
mov dword [esp + 8], ebx
and ebx, edx
movzx eax, byte [ebp + ebx*4 + 1]
cmp ecx, eax
jb 0x4cd430
lea edx, [ebx*4]
add edx, ebp
mov ebx, edi
mov edi, ebp
mov ebp, ebx
mov dword [esp], esi
mov dword [esp + 0x10], ecx
mov esi, dword [esp + 0xc]
jmp 0x4cd482
mov ebp, dword [esp + 0x14]
mov ebp, dword [ebp]
jmp 0x4cbdec
lea edx, [edi + ecx*4]
movzx ebx, word [edx + 2]
mov ch, byte [edx]
mov cl, ch
dec cl
cmp cl, 0xe
ja 0x4cd523
movzx ecx, ch
add ecx, eax
mov edx, 0xffffffff
shl edx, cl
movzx ebx, bx
not edx
mov esi, dword [esp + 8]
mov dword [esp + 0x1c], edx
and esi, edx
mov ecx, eax
shr esi, cl
mov dword [esp + 0x34], ebx
add esi, ebx
movzx edx, byte [edi + esi*4 + 1]
lea ecx, [eax + edx]
mov ebx, dword [esp + 0x10]
cmp ecx, ebx
jbe 0x4cd537
mov dword [esp + 0x38], edi
mov esi, dword [esp]
mov dword [esp + 4], ebp
mov edi, ebp
sub esi, 1
jb 0x4cdb6b
movzx edx, byte [edi]
inc edi
mov ecx, ebx
shl edx, cl
mov ebp, dword [esp + 8]
add ebp, edx
add ebx, 8
mov dword [esp + 8], ebp
and ebp, dword [esp + 0x1c]
mov ecx, eax
shr ebp, cl
add ebp, dword [esp + 0x34]
mov ecx, dword [esp + 0x38]
movzx edx, byte [ecx + ebp*4 + 1]
lea ecx, [eax + edx]
cmp ecx, ebx
ja 0x4cd4d7
mov ecx, dword [esp + 0x38]
lea ecx, [ecx + ebp*4]
mov dword [esp], esi
mov dword [esp + 0x10], ebx
mov ebp, edi
jmp 0x4cd53a
mov dword [esp + 4], ebp
mov edx, eax
xor eax, eax
mov edi, dword [esp + 8]
mov ebp, esi
mov esi, dword [esp + 0x10]
jmp 0x4cd556
lea ecx, [edi + esi*4]
mov dword [esp + 4], ebp
movzx ebx, word [ecx + 2]
mov ch, byte [ecx]
mov cl, al
mov edi, dword [esp + 8]
shr edi, cl
mov esi, dword [esp + 0x10]
sub esi, eax
mov ebp, dword [esp + 0xc]
sub esi, edx
mov dword [esp + 0x10], esi
add eax, edx
mov cl, dl
shr edi, cl
mov dword [esp + 8], edi
mov dword [ebp + 0x2348], eax
movzx eax, bx
mov dword [ebp + 0x44], eax
test ch, ch
mov esi, ebp
je 0x4cd9a0
movzx ecx, ch
test cl, 0x20
mov eax, dword [esp]
mov ebp, dword [esp + 0x14]
mov dword [esp], eax
jne 0x4cd9b3
test cl, 0x40
jne 0x4cd9cc
and ecx, 0xf
mov dword [esi + 0x4c], ecx
mov dword [esi + 4], 0x3f49
mov edx, dword [esp + 8]
mov ebx, dword [esp + 0x10]
test ecx, ecx
jne 0x4cc11b
mov eax, esi
mov esi, dword [esi + 0x44]
mov dword [eax + 0x234c], esi
mov dword [eax + 4], 0x3f4a
mov esi, eax
mov edi, dword [esi + 0x54]
movzx ecx, byte [esi + 0x5c]
mov ebp, edx
mov edx, 0xffffffff
shl edx, cl
not edx
mov ecx, ebp
and ecx, edx
movzx eax, byte [edi + ecx*4 + 1]
cmp ebx, eax
jae 0x4cd641
mov dword [esp + 0x1c], edi
mov dword [esp + 0x10], ebx
mov ecx, ebx
mov esi, dword [esp]
mov edi, dword [esp + 4]
sub esi, 1
jb 0x4cdb97
movzx eax, byte [edi]
shl eax, cl
inc edi
mov ebx, ebp
add ebx, eax
add ecx, 8
mov ebp, ebx
and ebx, edx
mov eax, dword [esp + 0x1c]
movzx eax, byte [eax + ebx*4 + 1]
cmp ecx, eax
jb 0x4cd5fc
mov edx, dword [esp + 0x1c]
lea edx, [edx + ebx*4]
mov dword [esp + 4], edi
mov edi, dword [esp + 0x1c]
mov dword [esp], esi
mov ebx, ecx
mov esi, dword [esp + 0xc]
mov dword [esp + 8], ebp
jmp 0x4cd648
mov dword [esp + 8], ebp
lea edx, [edi + ecx*4]
movzx ebp, word [edx + 2]
movzx edx, byte [edx]
cmp edx, 0x10
jae 0x4cd6e8
add edx, eax
mov esi, 0xffffffff
mov ecx, edx
shl esi, cl
movzx ebp, bp
not esi
mov edx, dword [esp + 8]
mov dword [esp + 0x34], esi
and edx, esi
mov ecx, eax
shr edx, cl
mov dword [esp + 0x38], ebp
add edx, ebp
movzx esi, byte [edi + edx*4 + 1]
lea ecx, [eax + esi]
cmp ecx, ebx
mov ecx, edi
jbe 0x4cd6f9
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x10], ebx
mov edx, ebx
mov edi, dword [esp]
mov ebp, dword [esp + 4]
sub edi, 1
jb 0x4cdb6b
movzx esi, byte [ebp]
inc ebp
mov ecx, edx
shl esi, cl
mov ebx, dword [esp + 8]
add ebx, esi
add edx, 8
mov dword [esp + 8], ebx
and ebx, dword [esp + 0x34]
mov ecx, eax
shr ebx, cl
add ebx, dword [esp + 0x38]
mov ecx, dword [esp + 0x1c]
movzx esi, byte [ecx + ebx*4 + 1]
lea ecx, [eax + esi]
cmp ecx, edx
ja 0x4cd69b
mov ecx, dword [esp + 0x1c]
lea ebx, [ecx + ebx*4]
mov dword [esp + 4], ebp
mov dword [esp], edi
mov edi, edx
jmp 0x4cd6fe
mov word [esp + 0x1c], bp
mov ebp, dword [esp + 8]
mov edi, dword [esi + 0x2348]
jmp 0x4cd726
mov edi, ebx
lea ebx, [ecx + edx*4]
mov ecx, eax
mov ebp, dword [esp + 8]
shr ebp, cl
movzx ecx, word [ebx + 2]
mov word [esp + 0x1c], cx
movzx edx, byte [ebx]
mov ebx, edi
sub ebx, eax
mov edi, eax
mov ecx, dword [esp + 0xc]
add edi, dword [ecx + 0x2348]
mov eax, esi
mov esi, ecx
mov ecx, eax
shr ebp, cl
mov dword [esp + 8], ebp
sub ebx, eax
mov dword [esp + 0x10], ebx
add edi, eax
mov dword [esi + 0x2348], edi
movzx eax, dl
test al, 0x40
jne 0x4cd799
mov ebp, eax
movzx ecx, word [esp + 0x1c]
mov dword [esi + 0x48], ecx
and ebp, 0xf
mov dword [esi + 0x4c], ebp
mov dword [esi + 4], 0x3f4b
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 8]
mov ebx, dword [esp + 0x10]
test ebp, ebp
je 0x4cd7de
mov eax, edx
cmp ebx, ebp
jae 0x4cd7a6
mov dword [esp + 0x10], ebx
mov edx, ebx
mov edi, dword [esp]
mov ebx, dword [esp + 4]
sub edi, 1
jb 0x4cdbd7
movzx esi, byte [ebx]
mov ecx, edx
shl esi, cl
inc ebx
add eax, esi
add edx, 8
cmp edx, ebp
jb 0x4cd77d
jmp 0x4cd7af
mov eax, dword [esp + 0x70]
mov dword [eax + 0x18], 0x59339f
jmp 0x4cd822
mov edx, ebx
mov ebx, dword [esp + 4]
mov edi, dword [esp]
mov esi, 0xffffffff
mov ecx, ebp
shl esi, cl
not esi
and esi, eax
mov ebp, dword [esp + 0xc]
add dword [ebp + 0x48], esi
sub edx, ecx
add dword [ebp + 0x2348], ecx
shr eax, cl
mov dword [esp + 4], ebx
mov dword [esp], edi
mov esi, ebp
mov ebx, edx
mov edx, eax
mov eax, dword [esp + 0x14]
mov dword [eax], 0x3f4c
mov eax, dword [esp + 0x20]
test eax, eax
je 0x4cdc62
mov edi, edx
mov edx, dword [esp + 0x24]
sub edx, eax
mov eax, dword [esi + 0x48]
mov ecx, eax
sub ecx, edx
mov dword [esp + 8], edi
mov dword [esp + 0x10], ebx
jbe 0x4cd835
cmp ecx, dword [esi + 0x30]
jbe 0x4cd846
cmp dword [esi + 0x2344], 0
je 0x4cd846
mov eax, dword [esp + 0x70]
mov dword [eax + 0x18], 0x5933b5
mov ebp, dword [esp + 0x14]
mov dword [ebp], 0x3f51
mov ebp, dword [ebp]
jmp 0x4cbdec
mov ebp, dword [esp + 0x2c]
sub ebp, eax
mov ecx, dword [esi + 0x44]
mov edx, ecx
mov eax, dword [esp + 0x20]
jmp 0x4cd86c
mov ebp, dword [esi + 0x34]
mov edx, ecx
sub edx, ebp
jbe 0x4cd859
mov ebp, dword [esi + 0x2c]
sub ebp, edx
add ebp, dword [esi + 0x38]
jmp 0x4cd860
sub ebp, ecx
add ebp, dword [esi + 0x38]
mov edx, ecx
mov eax, dword [esp + 0x20]
mov ecx, dword [esi + 0x44]
cmp edx, ecx
cmovae edx, ecx
cmp edx, eax
cmovae edx, eax
sub ecx, edx
mov dword [esi + 0x44], ecx
cmp edx, 0x20
mov dword [esp + 0x1c], edx
jb 0x4cd8cd
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x2c]
mov ecx, eax
sub ecx, ebp
cmp ecx, 0x20
jb 0x4cd8d9
mov esi, edx
and esi, 0xffffffe0
lea ecx, [eax + esi]
and edx, 0x1f
lea ebx, [esi + ebp]
xor edi, edi
movups xmm0, xmmword [ebp + edi]
movups xmm1, xmmword [ebp + edi + 0x10]
movups xmmword [eax + edi], xmm0
movups xmmword [eax + edi + 0x10], xmm1
add edi, 0x20
cmp esi, edi
jne 0x4cd8a0
cmp dword [esp + 0x1c], esi
mov ebp, dword [esp + 0x14]
mov eax, dword [esp + 0x20]
jne 0x4cd8e5
jmp 0x4cd96f
mov ecx, dword [esp + 0x2c]
mov ebx, ebp
mov ebp, dword [esp + 0x14]
jmp 0x4cd8e5
mov ecx, eax
mov ebx, ebp
mov ebp, dword [esp + 0x14]
mov eax, dword [esp + 0x20]
mov edi, eax
mov eax, ebp
lea esi, [edx - 1]
mov ebp, edx
and ebp, 7
je 0x4cd911
xor edi, edi
movzx eax, byte [ebx + edi]
mov byte [ecx + edi], al
inc edi
cmp ebp, edi
jne 0x4cd8f5
add ecx, edi
sub edx, edi
add ebx, edi
mov ebp, dword [esp + 0x14]
mov eax, dword [esp + 0x20]
jmp 0x4cd915
mov ebp, eax
mov eax, edi
cmp esi, 7
jb 0x4cd96f
xor esi, esi
movzx eax, byte [ebx + esi]
mov byte [ecx + esi], al
movzx eax, byte [ebx + esi + 1]
mov byte [ecx + esi + 1], al
movzx eax, byte [ebx + esi + 2]
mov byte [ecx + esi + 2], al
movzx eax, byte [ebx + esi + 3]
mov byte [ecx + esi + 3], al
movzx eax, byte [ebx + esi + 4]
mov byte [ecx + esi + 4], al
movzx eax, byte [ebx + esi + 5]
mov byte [ecx + esi + 5], al
movzx eax, byte [ebx + esi + 6]
mov byte [ecx + esi + 6], al
movzx eax, byte [ebx + esi + 7]
mov byte [ecx + esi + 7], al
add esi, 8
cmp edx, esi
jne 0x4cd91c
add ecx, esi
mov eax, dword [esp + 0x20]
sub eax, dword [esp + 0x1c]
mov dword [esp + 0x20], eax
mov esi, dword [esp + 0xc]
cmp dword [esi + 0x44], 0
je 0x4cd98d
mov dword [esp + 0x2c], ecx
mov ebp, dword [ebp]
jmp 0x4cbdec
mov dword [ebp], 0x3f48
mov dword [esp + 0x2c], ecx
mov ebp, dword [ebp]
jmp 0x4cbdec
mov ebp, dword [esp + 0x14]
mov dword [ebp], 0x3f4d
mov ebp, dword [ebp]
jmp 0x4cbdec
mov dword [esi + 0x2348], 0xffffffff
mov dword [esi + 4], 0x3f3f
mov ebp, dword [ebp]
jmp 0x4cbdec
mov eax, dword [esp + 0x70]
mov dword [eax + 0x18], 0x593383
mov dword [ebp], 0x3f51
mov ebp, dword [ebp]
jmp 0x4cbdec
mov eax, dword [esp + 8]
and eax, 0xf
cmp eax, 8
jne 0x4cdab9
mov eax, dword [esp + 8]
shr eax, 4
mov ecx, eax
and ecx, 0xf
lea edx, [ecx + 8]
mov esi, dword [esi + 0x28]
test esi, esi
jne 0x4cda15
mov esi, dword [esp + 0xc]
mov dword [esi + 0x28], edx
mov esi, edx
cmp ecx, 7
ja 0x4cdafc
cmp edx, esi
ja 0x4cdafc
mov eax, 0x100
shl eax, cl
mov esi, dword [esp + 0xc]
mov dword [esi + 0x18], eax
mov dword [esi + 0x14], 0
push 0
push 0
push 0
call fcn.0053d0f0
add esp, 0xc
mov dword [esi + 0x1c], eax
mov ebp, dword [esp + 0x70]
mov dword [ebp + 0x30], eax
xor eax, eax
test dword [esp + 8], 0x2000
sete al
lea eax, [eax + eax + 0x3f3d]
mov dword [esi + 4], eax
mov dword [esp + 8], 0
mov dword [esp + 0x10], 0
mov ebp, dword [esp + 0x14]
mov ebp, dword [ebp]
jmp 0x4cbdec
mov dword [esp + 4], ecx
mov dword [esp], eax
jmp 0x4cc2a9
test eax, eax
mov esi, dword [esp + 0xc]
je 0x4ce068
add dword [esp], 0xfffffffc
movzx eax, byte [edi + 3]
add edi, 4
shl eax, cl
mov edx, dword [esp + 8]
add edx, eax
add ebx, 0x20
jmp 0x4cc50e
mov eax, dword [esp + 0x70]
mov dword [eax + 0x18], str.unknown_compression_method
mov dword [ebp], 0x3f51
mov ebp, dword [ebp]
jmp 0x4cbdec
mov eax, dword [esp + 0x70]
mov dword [eax + 0x18], str.invalid_bit_length_repeat
mov ebp, dword [esp + 0x14]
mov dword [ebp], 0x3f51
mov dword [esp + 4], ebx
mov eax, dword [esp + 0x1c]
mov dword [esp], eax
mov ebp, dword [ebp]
jmp 0x4cbdec
add dword [esp + 0x10], 0xfffffffc
mov ebp, dword [esp + 0x70]
mov dword [ebp + 0x18], str.invalid_window_size
mov ebp, dword [esp + 0x14]
mov dword [ebp], 0x3f51
mov dword [esp + 8], eax
mov esi, dword [esp + 0xc]
mov ebp, dword [ebp]
jmp 0x4cbdec
mov dword [esp + 8], edi
mov ecx, dword [esp + 0x70]
mov dword [ecx + 0x18], str.invalid_bit_length_repeat
mov ebp, dword [esp + 0x14]
mov dword [ebp], 0x3f51
mov dword [esp + 4], ebx
mov ecx, dword [esp + 0x1c]
mov dword [esp], ecx
mov dword [esp + 0x10], eax
mov esi, dword [esp + 0xc]
mov ebp, dword [ebp]
jmp 0x4cbdec
cmp dword [edi + 4], 0
jne 0x4ce016
jmp 0x4cbd2e
mov edx, dword [esp]
mov eax, dword [esp + 0x10]
lea ebx, [eax + edx*8]
mov ecx, dword [esp + 4]
add ecx, edx
mov dword [esp + 4], ecx
mov dword [esp], 0
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0xc]
mov edx, dword [esp + 8]
jmp case.0x4cbe0d.16208
mov edx, dword [esp]
mov eax, dword [esp + 0x10]
lea ebx, [eax + edx*8]
mov ecx, dword [esp + 4]
add ecx, edx
mov dword [esp + 4], ecx
mov dword [esp], 0
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0xc]
mov edx, ebp
jmp case.0x4cbe0d.16208
mov edx, dword [esp]
mov eax, dword [esp + 0x10]
lea ebx, [eax + edx*8]
mov ecx, dword [esp + 4]
add ecx, edx
mov dword [esp + 4], ecx
jmp 0x4cdc19
mov esi, dword [esp]
mov ecx, dword [esp + 0x10]
lea ebx, [ecx + esi*8]
mov ecx, dword [esp + 4]
add ecx, esi
mov dword [esp + 4], ecx
mov dword [esp], 0
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0xc]
mov edx, eax
jmp case.0x4cbe0d.16209
mov dword [esp], 0
mov eax, dword [esp + 0x18]
mov edx, edi
jmp case.0x4cbe0d.16208
mov dword [esp + 4], ebx
mov ebx, eax
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0xc]
mov edx, edi
mov dword [esp], 0
jmp case.0x4cbe0d.16208
mov dword [esp], 0
mov eax, dword [esp + 0x18]
jmp case.0x4cbe0d.16208
mov eax, ebp
add eax, edi
mov ecx, dword [esp]
sub ecx, edi
mov dword [esp + 4], eax
mov dword [esp], ecx
mov eax, dword [esp + 0x18]
jmp 0x4cdcca
mov eax, dword [esp + 0x18]
jmp case.0x4cbe0d.16208
mov ecx, eax
jmp 0x4cdc79
mov dword [esp + 0x20], 0
mov eax, dword [esp + 0x18]
jmp case.0x4cbe0d.16208
xor ebx, ebx
mov edx, dword [esp + 0x14]
mov dword [edx], 0x3f50
mov edx, ecx
mov eax, 1
jmp case.0x4cbe0d.16208
mov dword [esp + 4], ebp
jmp 0x4cdd29
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x70]
mov dword [ecx + 0xc], eax
mov eax, dword [esp + 0x20]
mov dword [ecx + 0x10], eax
mov eax, dword [esp + 4]
mov dword [ecx], eax
mov eax, dword [esp]
mov dword [ecx + 4], eax
mov dword [esi + 0x3c], edx
mov dword [esi + 0x40], ebx
mov eax, 2
jmp 0x4ce016
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0xc]
mov edx, dword [esp + 8]
mov ebx, dword [esp + 0x10]
jmp case.0x4cbe0d.16208
mov eax, dword [esp + 8]
mov dword [esp + 4], eax
mov dword [esp], 0
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0xc]
mov edx, edi
jmp case.0x4cbe0d.16209
mov dword [esp + 4], ebp
mov dword [esp], 0
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 8]
mov ebx, dword [esp + 0x10]
jmp case.0x4cbe0d.16209
mov eax, 0xfffffffe
jmp 0x4ce016
mov eax, 0xfffffffc
jmp 0x4ce016
mov dword [esp + 4], ecx
mov dword [esp], 0
mov ecx, dword [esp + 0x18]
jmp case.0x4cbe0d.16209
mov dword [esp], 0
mov ecx, dword [esp + 0x18]
jmp 0x4cdbfa
mov dword [esp + 4], edx
jmp 0x4cddf0
mov dword [esp + 4], esi
mov dword [esp], 0
mov ebx, ecx
jmp 0x4cdbf2
mov dword [esp + 4], edx
mov dword [esp], 0
jmp 0x4cddf9
mov dword [esp], 0
jmp 0x4cdda9
mov dword [esp], 0
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0xc]
jmp case.0x4cbe0d.16209
xor ebx, ebx
mov eax, dword [esp + 0x18]
jmp case.0x4cbe0d.16208
mov dword [esp + 4], edx
mov dword [esp], 0
mov ebx, ecx
mov ecx, dword [esp + 0x18]
mov edx, ebp
jmp case.0x4cbe0d.16209
mov edx, ebp
shr edx, 3
add ebx, 0xfffffffd
mov eax, dword [esp + 0x18]
jmp case.0x4cbe0d.16208
mov dword [esp], 0
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0xc]
mov ebx, dword [esp + 0x10]
jmp 0x4cde23
mov dword [esp + 4], edx
mov dword [esp], 0
mov ebx, ecx
jmp 0x4cdce6
mov dword [esp + 4], ebp
jmp 0x4cde12
mov dword [esp + 4], eax
mov dword [esp], 0
mov ebx, ecx
mov ecx, dword [esp + 0x18]
mov edx, edi
jmp case.0x4cbe0d.16209
mov dword [esp + 4], esi
mov dword [esp], 0
jmp 0x4cde1b
mov dword [esp + 4], edx
mov dword [esp], 0
mov ebx, ecx
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0xc]
mov edx, dword [esp + 8]
mov eax, ecx
mov dword [esp + 8], eax
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x70]
mov dword [ecx + 0xc], eax
mov eax, dword [esp + 0x20]
mov dword [ecx + 0x10], eax
mov eax, dword [esp + 4]
mov dword [ecx], eax
mov eax, dword [esp]
mov dword [ecx + 4], eax
mov dword [esi + 0x3c], edx
mov dword [esi + 0x40], ebx
cmp dword [esi + 0x2c], 0
mov ecx, dword [ecx + 0x10]
mov ebx, dword [esp + 0x24]
je 0x4cdf09
mov dword [esp + 0x24], ebx
mov edx, dword [esp + 0x70]
mov ebx, dword [edx + 0xc]
mov edi, dword [edx + 0x1c]
mov eax, dword [edi + 0x38]
test eax, eax
jne 0x4cde9d
mov esi, ecx
movzx ecx, byte [edi + 0x28]
mov eax, 1
shl eax, cl
push 1
push eax
push dword [edx + 0x28]
call dword [edx + 0x20]
mov ecx, esi
add esp, 0xc
mov dword [edi + 0x38], eax
test eax, eax
je 0x4ce050
mov ebp, dword [esp + 0x24]
sub ebp, ecx
mov esi, dword [edi + 0x2c]
test esi, esi
jne 0x4cdec6
movzx ecx, byte [edi + 0x28]
mov esi, 1
shl esi, cl
mov dword [edi + 0x2c], esi
mov dword [edi + 0x34], 0
mov dword [edi + 0x30], 0
cmp esi, ebp
jbe 0x4cdf31
mov ecx, dword [edi + 0x34]
sub esi, ecx
cmp esi, ebp
mov edx, ebp
cmovb edx, esi
add eax, ecx
mov ecx, ebx
sub ecx, ebp
mov dword [esp], edx
push edx
push ecx
push eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
cmp esi, ebp
jae 0x4ce01e
sub ebp, dword [esp]
sub ebx, ebp
push ebp
push ebx
push dword [edi + 0x38]
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
mov dword [edi + 0x34], ebp
jmp 0x4cdf45
cmp ebx, ecx
je 0x4cdf53
mov eax, dword [esp + 0x14]
mov eax, dword [eax]
cmp eax, 0x3f50
ja 0x4cdf53
cmp dword [esp + 0x74], 4
jne 0x4cde62
cmp eax, 0x3f4d
ja 0x4cdf53
jmp 0x4cde62
sub ebx, esi
push esi
push ebx
push eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
mov dword [edi + 0x34], 0
mov eax, dword [edi + 0x2c]
mov dword [edi + 0x30], eax
mov esi, dword [esp + 0xc]
mov ebx, dword [esp + 0x24]
mov ecx, dword [esp + 0x70]
mov ebp, dword [ecx + 4]
mov edi, dword [ecx + 0x10]
mov eax, dword [esp + 0x50]
sub eax, ebp
add dword [ecx + 8], eax
mov eax, ebx
sub eax, edi
add dword [ecx + 0x14], eax
add dword [esi + 0x20], eax
test byte [esi + 0xc], 4
je 0x4cdfaa
cmp ebx, edi
je 0x4cdfaa
mov edx, dword [ecx + 0xc]
sub edx, eax
cmp dword [esi + 0x14], 0
mov ecx, dword [esi + 0x1c]
je 0x4cdf92
push eax
push edx
push ecx
call fcn.004ced90
jmp 0x4cdf9a
push eax
push edx
push ecx
call fcn.0053d0f0
add esp, 0xc
mov ecx, dword [esp + 0x28]
mov dword [ecx], eax
mov ecx, dword [esp + 0x70]
mov dword [ecx + 0x30], eax
xor eax, eax
cmp dword [esi + 8], 0
setne al
shl eax, 6
add eax, dword [esi + 0x40]
mov edx, dword [esi + 4]
xor ecx, ecx
cmp edx, 0x3f3f
sete cl
shl ecx, 7
cmp edx, 0x3f47
sete byte [esp]
cmp edx, 0x3f42
sete dl
or dl, byte [esp]
movzx edx, dl
shl edx, 8
add edx, ecx
add edx, eax
mov esi, dword [esp + 0x50]
xor esi, ebp
xor ebx, edi
mov edi, dword [esp + 8]
test edi, edi
mov eax, 0xfffffffb
cmovne eax, edi
mov ecx, dword [esp + 0x70]
mov dword [ecx + 0x2c], edx
or ebx, esi
cmove edi, eax
cmp dword [esp + 0x74], 4
cmove edi, eax
mov eax, edi
add esp, 0x5c
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, dword [edi + 0x34]
mov ebp, dword [esp]
add ecx, ebp
mov edx, dword [edi + 0x2c]
mov eax, dword [edi + 0x30]
xor esi, esi
cmp ecx, edx
cmovne esi, ecx
mov dword [edi + 0x34], esi
cmp eax, edx
mov esi, dword [esp + 0xc]
mov ebx, dword [esp + 0x24]
jae 0x4cdf53
add eax, ebp
mov dword [edi + 0x30], eax
jmp 0x4cdf53
mov eax, dword [esp + 0x14]
mov dword [eax], 0x3f52
mov eax, 0xfffffffc
jmp 0x4ce016
xor eax, eax
jmp case.0x4cbe0d.16208
mov dword [esp + 4], edx
mov dword [esp], 0
mov ebx, ecx
mov ecx, dword [esp + 0x18]
jmp 0x4cde23