Function at 0x4cafd0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x51bbe0
mov eax, dword fs:[0]
push eax
sub esp, 0x714
mov eax, dword [0x79b0b4]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov dword [ebp - 0x6cc], ecx
mov eax, dword [ebp + 0x18]
mov edx, dword [ebp + 8]
mov dword [ecx], eax
xor eax, eax
mov dword [ebp - 0x720], ecx
mov dword [ebp - 0x6e0], edx
mov dword [ecx + 4], 0
mov word [ecx + 8], 0xff
mov dword [ecx + 0xc], 0
mov dword [ebp - 0x704], eax
mov dword [ebp - 0x71c], eax
mov dword [ebp - 0x718], eax
mov dword [ebp - 0x6f8], eax
mov dword [ebp - 0x714], eax
mov ecx, 0x3b
mov dword [ebp - 0x59c], 0xffffffff
lea edi, [ebp - 0x100]
mov dword [ebp - 0x598], 0xffffffff
rep stosd dword es:[edi], eax
mov ecx, 0x74
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0x10]
lea esi, [ebp - 0x59c]
lea edi, [ebp - 0x594]
xorps xmm0, xmm0
rep movsd dword es:[edi], dword [esi]
mov ecx, 0x74
movlpd qword [ebp - 0x3c4], xmm0
lea esi, [ebp - 0x3c4]
movlpd qword [ebp - 0x710], xmm0
lea edi, [ebp - 0x3bc]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [edx]
xor ecx, ecx
cdq
mov dword [ebp - 0x6d8], ecx
mov edi, edx
mov ecx, eax
mov dword [ebp - 0x6d4], esi
mov eax, dword [ebp + 0x14]
cdq
mov dword [ebp - 0x6e4], ecx
mov dword [ebp - 0x6dc], edi
mov dword [ebp - 0x6ec], eax
mov dword [ebp - 0x6f0], edx
cmp edi, edx
ja 0x4cb371
jb 0x4cb0f2
cmp ecx, eax
ja 0x4cb371
mov edi, dword [ebp - 0x70c]
mov esi, dword [ebp - 0x710]
nop
mov ecx, dword [ebp - 0x6e0]
mov edx, dword [ebp - 0x6d4]
mov eax, edx
sub eax, dword [ecx]
cmp eax, dword [ebp + 0xc]
jge 0x4cb903
mov eax, dword [ebp - 0x6d8]
cmp eax, 6
jge 0x4cb15f
mov ecx, 5
sub ecx, eax
shr ecx, 3
inc ecx
lea eax, [eax + ecx*8]
mov dword [ebp - 0x6d8], eax
movzx eax, byte [edx]
shld edi, esi, 8
cdq
or edi, edx
shl esi, 8
mov edx, dword [ebp - 0x6d4]
or esi, eax
inc edx
mov dword [ebp - 0x6d4], edx
sub ecx, 1
jne 0x4cb138
mov eax, dword [ebp - 0x6d8]
sub eax, 6
mov edx, edi
mov dword [ebp - 0x6d8], eax
mov eax, esi
mov ecx, dword [ebp - 0x6d8]
call fcn.0050cf30
mov ecx, eax
xor edx, edx
and ecx, 0x3f
mov dword [ebp - 0x70c], edx
mov dword [ebp - 0x6d0], ecx
cmp ecx, 0x3f
jne 0x4cb25a
mov ecx, dword [ebp - 0x6e0]
mov edx, dword [ebp - 0x6d4]
mov eax, edx
sub eax, dword [ecx]
cmp eax, dword [ebp + 0xc]
jge 0x4cb8c1
mov eax, dword [ebp - 0x6d8]
cmp eax, 8
jge 0x4cb1f7
mov ecx, 7
sub ecx, eax
shr ecx, 3
inc ecx
lea eax, [eax + ecx*8]
mov dword [ebp - 0x6d8], eax
nop dword [eax + eax]
movzx eax, byte [edx]
shld edi, esi, 8
cdq
or edi, edx
shl esi, 8
mov edx, dword [ebp - 0x6d4]
or esi, eax
inc edx
mov dword [ebp - 0x6d4], edx
sub ecx, 1
jne 0x4cb1d0
mov eax, dword [ebp - 0x6d8]
sub eax, 8
mov edx, edi
mov dword [ebp - 0x6d8], eax
mov eax, esi
mov ecx, dword [ebp - 0x6d8]
call fcn.0050cf30
movzx eax, al
xor ecx, ecx
add eax, dword [ebp - 0x6e4]
mov dword [ebp - 0x704], edx
adc ecx, dword [ebp - 0x6dc]
add eax, 6
mov dword [ebp - 0x6e4], eax
mov eax, dword [ebp + 0x14]
adc ecx, 0
inc eax
cdq
cmp ecx, edx
ja 0x4cb8a0
mov edx, dword [ebp - 0x6e4]
jb 0x4cb24f
cmp edx, eax
ja 0x4cb8a0
add edx, 0xffffffff
adc ecx, 0xffffffff
jmp 0x4cb333
mov eax, ecx
cmp ecx, 0x3b
jae 0x4cb42b
or eax, edx
je 0x4cb327
mov eax, dword [ebp - 0x6e4]
mov edx, ecx
mov ecx, dword [ebp - 0x6dc]
and edx, 0x3f
shld ecx, eax, 6
shl eax, 6
or edx, eax
xor eax, eax
or eax, ecx
mov dword [ebp - 0x700], edx
mov ecx, dword [ebp - 0x718]
mov dword [ebp - 0x6fc], eax
cmp ecx, dword [ebp - 0x6f8]
je 0x4cb2b5
mov dword [ecx], edx
mov dword [ecx + 4], eax
add ecx, 8
mov dword [ebp - 0x718], ecx
jmp 0x4cb2d4
lea eax, [ebp - 0x700]
push eax
push ecx
lea ecx, [ebp - 0x71c]
call fcn.004cae70
mov eax, dword [ebp - 0x714]
mov dword [ebp - 0x6f8], eax
mov eax, dword [ebp - 0x6cc]
mov ecx, dword [ebp - 0x6d0]
movzx eax, byte [eax + 8]
cdq
cmp dword [ebp - 0x70c], edx
ja 0x4cb2fe
jb 0x4cb2f3
cmp ecx, eax
jae 0x4cb2fe
mov eax, dword [ebp - 0x6cc]
mov byte [eax + 8], cl
jmp 0x4cb304
mov eax, dword [ebp - 0x6cc]
movzx eax, byte [eax + 9]
cdq
cmp dword [ebp - 0x70c], edx
jb 0x4cb320
ja 0x4cb317
cmp ecx, eax
jbe 0x4cb320
mov eax, dword [ebp - 0x6cc]
mov byte [eax + 9], cl
inc dword [ebp + ecx*4 - 0x100]
mov ecx, dword [ebp - 0x6dc]
mov edx, dword [ebp - 0x6e4]
add edx, 1
mov dword [ebp - 0x6e4], edx
adc ecx, 0
mov dword [ebp - 0x6dc], ecx
cmp ecx, dword [ebp - 0x6f0]
ja 0x4cb35f
jb 0x4cb100
cmp edx, dword [ebp - 0x6ec]
jbe 0x4cb100
mov eax, dword [ebp - 0x71c]
mov esi, dword [ebp - 0x6d4]
mov dword [ebp - 0x704], eax
mov eax, dword [ebp - 0x6cc]
xor ecx, ecx
xorps xmm1, xmm1
xorps xmm2, xmm2
mov edx, dword [eax + 4]
movups xmm0, xmmword [ebp + ecx*4 - 0x100]
paddd xmm1, xmm0
movups xmm0, xmmword [ebp + ecx*4 - 0xf0]
add ecx, 8
paddd xmm2, xmm0
cmp ecx, 0x38
jl 0x4cb382
paddd xmm1, xmm2
xor edi, edi
movaps xmm0, xmm1
psrldq xmm0, 8
paddd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd eax, xmm1
add edx, eax
mov dword [ebp - 0x6d0], edx
xor edx, edx
cmp ecx, 0x3a
jge 0x4cb487
mov eax, 0x3a
sub eax, ecx
cmp eax, 2
jl 0x4cb406
nop dword [eax]
nop word [eax + eax]
add edx, dword [ebp + ecx*4 - 0x100]
add edi, dword [ebp + ecx*4 - 0xfc]
add ecx, 2
cmp ecx, 0x39
jl 0x4cb3f0
cmp ecx, 0x3a
jae 0x4cb41e
mov eax, dword [ebp - 0x6d0]
add eax, dword [ebp + ecx*4 - 0x100]
mov dword [ebp - 0x6d0], eax
mov ecx, dword [ebp - 0x6d0]
lea eax, [edi + edx]
add ecx, eax
jmp 0x4cb48d
add eax, dword [ebp - 0x6e4]
mov ecx, edx
adc ecx, dword [ebp - 0x6dc]
add eax, 0xffffffc7
mov dword [ebp - 0x704], eax
mov eax, dword [ebp + 0x14]
adc ecx, 0xffffffff
inc eax
cdq
cmp ecx, edx
ja 0x4cb8e2
jb 0x4cb460
cmp dword [ebp - 0x704], eax
ja 0x4cb8e2
mov ecx, dword [ebp - 0x6d0]
mov eax, dword [ebp - 0x70c]
add ecx, 0xffffffc6
mov edx, dword [ebp - 0x6e4]
adc eax, 0xffffffff
add edx, ecx
mov ecx, dword [ebp - 0x6dc]
adc ecx, eax
jmp 0x4cb333
mov ecx, dword [ebp - 0x6d0]
mov eax, dword [ebp - 0x6cc]
mov edx, 8
mov dword [eax + 4], ecx
mov ecx, dword [ebp - 0x6e0]
mov dword [ecx], esi
xor ecx, ecx
movzx eax, byte [eax + 9]
inc eax
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004635cb
mov edi, eax
add esp, 4
mov eax, dword [ebp - 0x6cc]
mov dword [ebp - 0x6dc], edi
movzx esi, byte [eax + 8]
mov cl, byte [eax + 9]
movzx eax, cl
cmp esi, eax
ja 0x4cb52d
movzx eax, cl
xor edx, edx
sub eax, esi
xor ecx, ecx
inc eax
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
cmovae edx, ecx
call fcn.00463440
mov eax, dword [ebp + esi*4 - 0x100]
movd xmm1, eax
cvtdq2pd xmm1, xmm1
shr eax, 0x1f
addsd xmm1, qword [eax*8 + 0x7882e0]
mov eax, dword [ebp - 0x6cc]
mulsd xmm0, xmm1
movsd qword [edi + esi*8], xmm0
inc esi
mov cl, byte [eax + 9]
movzx eax, cl
cmp esi, eax
jle 0x4cb4d8
mov eax, dword [ebp - 0x6cc]
movzx esi, cl
movzx eax, byte [eax + 8]
mov dword [ebp - 0x6d0], eax
cmp eax, esi
ja 0x4cb67c
mov ecx, esi
sub ecx, eax
mov dword [ebp - 0x6d4], ecx
inc eax
xorps xmm0, xmm0
movsd qword [ebp - 0x700], xmm0
mov dword [ebp - 0x6ec], eax
cmp eax, esi
jg 0x4cb57a
addsd xmm0, qword [edi + eax*8]
inc eax
cmp eax, esi
jle 0x4cb568
movsd qword [ebp - 0x700], xmm0
lea eax, [ecx + 1]
xor edx, edx
xor ecx, ecx
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
cmovae edx, ecx
call fcn.00463440
movsd xmm1, qword [ebp - 0x700]
sub esp, 8
divsd xmm1, xmm0
movsd qword [ebp - 0x700], xmm1
fld qword [ebp - 0x700]
fstp qword [esp]
call fcn.0046dcb0
fstp qword [ebp - 0x6f4]
fld qword [0x711b60]
add esp, 8
fld qword [ebp - 0x6f4]
xorps xmm0, xmm0
fcompi st(1)
movlpd qword [ebp - 0x6e8], xmm0
fstp st(0)
jb 0x4cb61c
fld qword [ebp - 0x6f4]
fsub qword [0x711b60]
fstp qword [ebp - 0x6f4]
fld qword [ebp - 0x6f4]
fld qword [0x711b60]
fcompi st(1)
fstp st(0)
jbe 0x4cb61c
mov edi, dword [ebp - 0x6e8]
mov eax, dword [ebp - 0x6e4]
add edi, 0
adc eax, 0x80000000
jmp 0x4cb628
mov eax, dword [ebp - 0x6e4]
mov edi, dword [ebp - 0x6e8]
fld qword [ebp - 0x6f4]
mov dword [ebp - 0x6e0], eax
call fcn.00463520
mov ecx, dword [ebp - 0x6d0]
add eax, edi
mov edi, dword [ebp - 0x6dc]
adc edx, dword [ebp - 0x6e0]
mov dword [ebp + ecx*8 - 0x59c], eax
mov eax, dword [ebp - 0x6ec]
mov dword [ebp + ecx*8 - 0x598], edx
mov ecx, dword [ebp - 0x6d4]
dec ecx
mov dword [ebp - 0x6d0], eax
mov dword [ebp - 0x6d4], ecx
cmp eax, esi
jle 0x4cb552
push edi
call fcn.00462b3a
mov esi, dword [ebp - 0x6cc]
add esp, 4
movzx eax, byte [esi + 9]
movzx edi, byte [esi + 8]
lea edx, [eax - 1]
mov dword [ebp + eax*8 - 0x3c4], 0
mov dword [ebp + eax*8 - 0x3c0], 0
cmp edx, edi
jl 0x4cb6da
mov eax, dword [ebp + edx*4 - 0xfc]
xor ecx, ecx
add eax, dword [ebp + edx*8 - 0x3bc]
mov dword [ebp + edx*8 - 0x3c4], eax
adc ecx, dword [ebp + edx*8 - 0x3b8]
mov dword [ebp + edx*8 - 0x3c0], ecx
dec edx
cmp edx, edi
jge 0x4cb6b0
mov eax, dword [esi + 4]
xor ecx, ecx
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004635cb
mov dword [esi + 0xc], eax
lea edi, [ebp - 0x1e4]
mov eax, dword [ebp - 0x6cc]
lea esi, [ebp - 0x1ec]
mov ecx, 0x74
mov dword [ebp - 0x1ec], 0xffffffff
mov dword [ebp - 0x1e8], 0xffffffff
add esp, 4
rep movsd dword es:[edi], dword [esi]
movzx ecx, byte [eax + 8]
movzx edx, byte [eax + 9]
cmp ecx, edx
ja 0x4cb755
sub edx, ecx
lea edi, [ebp - 0x1ec]
lea edi, [edi + ecx*8]
lea esi, [ebp - 0x3c4]
lea esi, [esi + ecx*8]
lea ecx, [edx*2 + 2]
and ecx, 0x3ffffffe
rep movsd dword es:[edi], dword [esi]
mov esi, dword [ebp - 0x704]
cmp esi, dword [ebp - 0x718]
je 0x4cb80b
mov ecx, esi
nop dword [eax]
mov edx, dword [ecx]
mov eax, dword [ecx + 4]
mov edi, dword [ecx]
shrd edx, eax, 6
mov eax, dword [ebp - 0x6cc]
and edi, 0x3f
mov dword [ebp - 0x6d0], edx
mov dword [ebp - 0x6d4], edi
mov edx, dword [eax + 0xc]
mov eax, dword [eax + 4]
mov esi, dword [ebp + edi*8 - 0x1ec]
mov dword [ebp - 0x6e0], edx
cdq
mov dword [ebp - 0x6f0], eax
mov eax, dword [ebp + edi*8 - 0x1e8]
cmp eax, edx
ja 0x4cb929
jb 0x4cb7c7
cmp esi, dword [ebp - 0x6f0]
jae 0x4cb929
mov edi, dword [ebp - 0x6e0]
mov edx, dword [ebp - 0x6d0]
mov dword [edi + esi*4], edx
add esi, 1
mov edi, dword [ebp - 0x6d4]
adc eax, 0
add ecx, 8
mov dword [ebp + edi*8 - 0x1ec], esi
mov dword [ebp + edi*8 - 0x1e8], eax
cmp ecx, dword [ebp - 0x718]
jne 0x4cb770
mov eax, dword [ebp - 0x6cc]
mov esi, dword [ebp - 0x704]
lea ecx, [ebp - 0x3c4]
mov byte [ebp - 4], 1
push ecx
lea ecx, [ebp - 0x59c]
push ecx
mov ecx, eax
call fcn.004cb980
test esi, esi
je 0x4cb85b
mov ecx, dword [ebp - 0x6f8]
mov eax, esi
sub ecx, esi
and ecx, 0xfffffff8
cmp ecx, 0x1000
jb 0x4cb851
mov esi, dword [eax - 4]
add ecx, 0x23
sub eax, esi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4cb924
push ecx
push esi
call fcn.00462fc9
add esp, 8
mov eax, dword [ebp - 0x6cc]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.00462b2c
mov esp, ebp
pop ebp
ret 0x14
push str.Error_decoding_Huffman_table__Run_beyond_end_of_table_.
lea ecx, [ebp - 0x5d8]
call fcn.004d82f0
push 0x79555c
lea eax, [ebp - 0x5d8]
push eax
call fcn.004644df
push str.Error_decoding_Huffman_table__Truncated_table_data_.
lea ecx, [ebp - 0x614]
call fcn.004d82f0
push 0x79555c
lea eax, [ebp - 0x614]
push eax
call fcn.004644df
push str.Error_decoding_Huffman_table__Run_beyond_end_of_table_.
lea ecx, [ebp - 0x650]
call fcn.004d82f0
push 0x79555c
lea eax, [ebp - 0x650]
push eax
call fcn.004644df
push str.Error_decoding_Huffman_table__Truncated_table_data_.
lea ecx, [ebp - 0x68c]
call fcn.004d82f0
push 0x79555c
lea eax, [ebp - 0x68c]
push eax
call fcn.004644df
call fcn.0046d997
push dword [ebp - 0x6e0]
call fcn.00462b3a
mov eax, dword [ebp - 0x6cc]
lea ecx, [ebp - 0x6c8]
add esp, 4
mov dword [eax + 0xc], 0
push str.Huffman_decode_error__Invalid_symbol_in_header_.
call fcn.004d82f0
push 0x79555c
lea eax, [ebp - 0x6c8]
push eax
call fcn.004644df
int3