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

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