Function at 0x40ec35
Capabilities:
Encrypt data using hc-128

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x7c
and dword [ebp - 4], 0
push esi
mov esi, dword [ebp + 8]
push edi
push 8
pop ecx
lea edi, [ebp - 0x3c]
rep movsd dword es:[edi], dword [esi]
lea ecx, [ebp - 0x7c]
sub eax, ecx
mov dword [ebp - 0x1c], eax
push ebx
mov esi, dword [ebp - 4]
push 0xfffffffffffffffe
pop ecx
push 0xfffffffffffffffc
lea edx, [ebp - 0x7c]
lea esi, [esi*4 + 0x41b428]
mov dword [ebp - 0x14], ecx
pop eax
mov dword [ebp - 0x18], edx
mov dword [ebp - 8], esi
cmp dword [ebp - 4], 0
je 0x40ecf1
lea esi, [ecx + 3]
and esi, 0xf
mov esi, dword [ebp + esi*4 - 0x7c]
mov dword [ebp - 0xc], esi
lea esi, [ecx + 2]
and esi, 0xf
mov edx, ecx
and edx, 0xf
mov edx, dword [ebp + edx*4 - 0x7c]
lea esi, [ebp + esi*4 - 0x7c]
mov dword [ebp - 0x10], esi
mov esi, edx
mov edi, edx
shl edi, 0xd
shr esi, 0x13
or esi, edi
mov edi, edx
mov ebx, edx
shr edi, 0x11
shl ebx, 0xf
or edi, ebx
xor esi, edi
shr edx, 0xa
xor esi, edx
mov edx, dword [ebp - 0xc]
mov edi, edx
mov ebx, edx
shl ebx, 0xe
shr edi, 0x12
or edi, ebx
mov ebx, edx
shr edx, 7
shl ebx, 0x19
or ebx, edx
mov edx, dword [ebp - 0xc]
xor edi, ebx
shr edx, 3
add ecx, 0xfffffffb
xor edi, edx
and ecx, 0xf
add esi, edi
add esi, dword [ebp + ecx*4 - 0x7c]
mov ecx, dword [ebp - 0x10]
add dword [ecx], esi
mov ecx, dword [ecx]
jmp 0x40ecf9
mov ecx, dword [ebp - 0x1c]
mov ecx, dword [ecx + edx]
mov dword [edx], ecx
mov dword [ebp - 0x10], ecx
mov ecx, eax
and ecx, 7
mov edx, dword [ebp + ecx*4 - 0x3c]
mov esi, edx
shr esi, 0x19
mov edi, edx
shl edi, 7
or esi, edi
mov edi, edx
shl edi, 0x15
mov ebx, edx
shr ebx, 0xb
or edi, ebx
xor esi, edi
mov edi, edx
shl edi, 0x1a
mov ebx, edx
shr ebx, 6
or edi, ebx
xor esi, edi
add esi, dword [ebp - 0x10]
lea ecx, [eax + 2]
and ecx, 7
mov ecx, dword [ebp + ecx*4 - 0x3c]
mov dword [ebp - 0xc], ecx
lea edi, [eax + 1]
and edi, 7
mov edi, dword [ebp + edi*4 - 0x3c]
xor edi, dword [ebp - 0xc]
lea ecx, [eax + 3]
and edi, edx
xor edi, dword [ebp - 0xc]
mov edx, dword [ebp - 8]
add edi, esi
add edi, dword [edx]
and ecx, 7
lea ecx, [ebp + ecx*4 - 0x3c]
add dword [ecx], edi
mov esi, dword [ecx]
lea edx, [eax - 1]
and edx, 7
lea edx, [ebp + edx*4 - 0x3c]
add dword [edx], esi
lea esi, [eax - 3]
and esi, 7
mov esi, dword [ebp + esi*4 - 0x3c]
mov dword [ebp - 0x10], esi
lea edx, [eax - 4]
and edx, 7
mov edx, dword [ebp + edx*4 - 0x3c]
mov edi, edx
shr edi, 0x16
mov esi, edx
shl esi, 0xa
or edi, esi
mov esi, edx
shl esi, 0x13
mov ebx, edx
shr ebx, 0xd
or esi, ebx
xor edi, esi
mov esi, edx
shl esi, 0x1e
mov ebx, edx
shr ebx, 2
or esi, ebx
mov ebx, dword [ebp - 0x10]
xor edi, esi
lea esi, [eax - 2]
and esi, 7
mov esi, dword [ebp + esi*4 - 0x3c]
or ebx, edx
and esi, ebx
mov ebx, esi
mov esi, dword [ebp - 0x10]
and esi, edx
or ebx, esi
add edi, ebx
add dword [ecx], edi
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x18]
add dword [ebp - 8], 4
inc ecx
add edx, 4
lea esi, [ecx + 2]
dec eax
cmp esi, 0x10
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x18], edx
jb 0x40ec71
add dword [ebp - 4], 0x10
cmp dword [ebp - 4], 0x40
jb 0x40ec55
mov eax, dword [ebp + 8]
push 8
lea ecx, [ebp - 0x3c]
pop edx
sub ecx, eax
pop ebx
mov esi, dword [ecx + eax]
add dword [eax], esi
add eax, 4
dec edx
jne 0x40ee08
pop edi
pop esi
leave
ret 4