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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x140
push esi
push edi
movsd xmm0, qword [0x466430]
addsd xmm0, qword [0x45bc60]
movsd qword [0x466430], xmm0
mov eax, dword [0x466148]
add eax, 0x3e7c2774
mov dword [0x466148], eax
mov dword [ebp - 4], 0
jmp 0x405704
mov ecx, dword [ebp - 4]
add ecx, 1
mov dword [ebp - 4], ecx
cmp dword [ebp - 4], 0x10
je 0x4057e3
movss xmm0, dword [0x4661f8]
subss xmm0, dword [0x45c2cc]
cvttss2si edx, xmm0
mov dword [0x466424], edx
movss xmm0, dword [0x4661f8]
subss xmm0, dword [0x45ade8]
movss dword [0x4661f8], xmm0
mov eax, dword [ebp - 4]
mov ecx, dword [ebp + 0xc]
movzx edx, byte [ecx + eax*4]
shl edx, 0x18
mov eax, dword [ebp - 4]
mov ecx, dword [ebp + 0xc]
movzx eax, byte [ecx + eax*4 + 1]
shl eax, 0x10
or edx, eax
mov ecx, dword [ebp - 4]
mov eax, dword [ebp + 0xc]
movzx ecx, byte [eax + ecx*4 + 2]
shl ecx, 8
or edx, ecx
mov eax, dword [ebp - 4]
mov ecx, dword [ebp + 0xc]
movzx eax, byte [ecx + eax*4 + 3]
or edx, eax
mov ecx, dword [ebp - 4]
mov dword [ebp + ecx*4 - 0x140], edx
movsd xmm0, qword [0x466240]
addsd xmm0, qword [0x45b260]
movsx edx, word [0x46639c]
cvtsi2sd xmm1, edx
addsd xmm0, xmm1
movsd xmm1, qword [0x466230]
subsd xmm1, xmm0
movsd qword [0x466230], xmm1
movsd xmm0, qword [0x466240]
subsd xmm0, qword [0x45adf0]
movsd qword [0x466240], xmm0
imul eax, dword [0x466300], 0x15bd5e72
mov dword [0x466300], eax
jmp 0x4056fb
mov ecx, dword [0x466128]
add ecx, 1
mov dword [0x466128], ecx
mov edx, dword [0x466370]
add edx, dword [0x466128]
mov dword [0x466370], edx
mov esi, dword [ebp + 8]
add esi, 8
mov ecx, 9
lea edi, [ebp - 0x2c]
rep movsd dword es:[edi], dword [esi]
movsd xmm0, qword [0x4663b0]
movsd qword [0x4661c0], xmm0
movsd xmm0, qword [0x4663b0]
subsd xmm0, qword [0x45adf0]
movsd qword [0x4663b0], xmm0
push 0x100
push 0x781
call fcn.0040fc50
add esp, 8
mov dword [ebp - 0x30], eax
mov eax, dword [0x4660ac]
sub eax, 0x427063e6
cvtsi2sd xmm0, eax
subsd xmm0, qword [0x466328]
movsd xmm1, qword [0x466310]
addsd xmm1, xmm0
movsd qword [0x466310], xmm1
mov dword [ebp - 4], 0
jmp 0x40588d
mov ecx, dword [ebp - 4]
add ecx, 1
mov dword [ebp - 4], ecx
cmp dword [ebp - 4], 0x40
je 0x405d30
movss xmm0, dword [0x45b5c0]
subss xmm0, dword [0x466264]
comiss xmm0, dword [0x45b764]
jb 0x4058c8
movss xmm0, dword [0x4661d4]
subss xmm0, dword [0x45b5b8]
movss dword [0x4661d4], xmm0
cmp dword [ebp - 4], 0xf
jle 0x4059be
mov edx, dword [ebp - 4]
mov eax, dword [ebp + edx*4 - 0x148]
shr eax, 0x11
mov ecx, dword [ebp - 4]
mov edx, dword [ebp + ecx*4 - 0x148]
shl edx, 0xf
or eax, edx
mov ecx, dword [ebp - 4]
mov edx, dword [ebp + ecx*4 - 0x148]
shr edx, 0x13
mov ecx, dword [ebp - 4]
mov ecx, dword [ebp + ecx*4 - 0x148]
shl ecx, 0xd
or edx, ecx
xor eax, edx
mov edx, dword [ebp - 4]
mov ecx, dword [ebp + edx*4 - 0x148]
shr ecx, 0xa
xor eax, ecx
mov edx, dword [ebp - 4]
mov dword [ebp + edx*4 - 0x140], eax
mov eax, dword [ebp - 4]
mov ecx, dword [ebp + eax*4 - 0x140]
mov edx, dword [ebp - 4]
add ecx, dword [ebp + edx*4 - 0x15c]
mov eax, dword [ebp - 4]
mov dword [ebp + eax*4 - 0x140], ecx
mov ecx, dword [ebp - 4]
mov edx, dword [ebp + ecx*4 - 0x17c]
shr edx, 7
mov eax, dword [ebp - 4]
mov ecx, dword [ebp + eax*4 - 0x17c]
shl ecx, 0x19
or edx, ecx
mov eax, dword [ebp - 4]
mov ecx, dword [ebp + eax*4 - 0x17c]
shr ecx, 0x12
mov eax, dword [ebp - 4]
mov eax, dword [ebp + eax*4 - 0x17c]
shl eax, 0xe
or ecx, eax
xor edx, ecx
mov ecx, dword [ebp - 4]
mov eax, dword [ebp + ecx*4 - 0x17c]
shr eax, 3
xor edx, eax
mov ecx, dword [ebp - 4]
add edx, dword [ebp + ecx*4 - 0x140]
mov eax, dword [ebp - 4]
mov dword [ebp + eax*4 - 0x140], edx
mov ecx, dword [ebp - 4]
mov edx, dword [ebp + ecx*4 - 0x140]
mov eax, dword [ebp - 4]
add edx, dword [ebp + eax*4 - 0x180]
mov ecx, dword [ebp - 4]
mov dword [ebp + ecx*4 - 0x140], edx
mov edx, dword [0x466024]
imul edx, dword [0x466204]
mov dword [0x466024], edx
mov eax, dword [0x466250]
cvtsi2sd xmm0, eax
addsd xmm0, qword [0x466338]
movsd qword [ebp - 0x40], xmm0
mov ecx, dword [0x466250]
add ecx, 1
mov dword [0x466250], ecx
movsd xmm0, qword [ebp - 0x40]
comisd xmm0, xmmword [0x45af48]
jb 0x405a40
mov edx, dword [0x4663e8]
add edx, 1
mov dword [0x4663e8], edx
mov eax, 0x150205ee
sub eax, dword [0x4663e8]
cmp eax, 0x17e01e8f
jg 0x405a40
mov ecx, dword [0x46622c]
add ecx, 0x78630d9e
mov edx, dword [0x466254]
sub edx, ecx
mov dword [0x466254], edx
mov eax, 4
imul ecx, eax, 7
mov edx, 4
shl edx, 2
mov eax, dword [ebp + edx - 0x2c]
shr eax, 6
mov edx, 4
shl edx, 2
mov edx, dword [ebp + edx - 0x2c]
shl edx, 0x1a
or eax, edx
mov edx, 4
shl edx, 2
mov edx, dword [ebp + edx - 0x2c]
shr edx, 0xb
mov esi, 4
shl esi, 2
mov esi, dword [ebp + esi - 0x2c]
shl esi, 0x15
or edx, esi
xor eax, edx
mov edx, 4
shl edx, 2
mov edx, dword [ebp + edx - 0x2c]
shr edx, 0x19
mov esi, 4
shl esi, 2
mov esi, dword [ebp + esi - 0x2c]
shl esi, 7
or edx, esi
xor eax, edx
mov ecx, dword [ebp + ecx - 0x2c]
add ecx, eax
mov edx, 4
imul eax, edx, 6
mov edx, 4
shl edx, 2
mov esi, 4
imul esi, esi, 5
mov edi, 4
imul edi, edi, 6
mov esi, dword [ebp + esi - 0x2c]
xor esi, dword [ebp + edi - 0x2c]
and esi, dword [ebp + edx - 0x2c]
xor esi, dword [ebp + eax - 0x2c]
add ecx, esi
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 0x30]
add ecx, dword [edx + eax*4]
mov eax, dword [ebp - 4]
add ecx, dword [ebp + eax*4 - 0x140]
mov dword [ebp - 0x34], ecx
mov ecx, 4
imul edx, ecx, 0
mov eax, dword [ebp + edx - 0x2c]
shr eax, 2
mov ecx, 4
imul edx, ecx, 0
mov ecx, dword [ebp + edx - 0x2c]
shl ecx, 0x1e
or eax, ecx
mov edx, 4
imul ecx, edx, 0
mov edx, dword [ebp + ecx - 0x2c]
shr edx, 0xd
mov ecx, 4
imul ecx, ecx, 0
mov ecx, dword [ebp + ecx - 0x2c]
shl ecx, 0x13
or edx, ecx
xor eax, edx
mov edx, 4
imul ecx, edx, 0
mov edx, dword [ebp + ecx - 0x2c]
shr edx, 0x16
mov ecx, 4
imul ecx, ecx, 0
mov ecx, dword [ebp + ecx - 0x2c]
shl ecx, 0xa
or edx, ecx
xor eax, edx
mov edx, 4
imul ecx, edx, 0
mov edx, 4
shl edx, 0
mov ecx, dword [ebp + ecx - 0x2c]
and ecx, dword [ebp + edx - 0x2c]
mov edx, 4
shl edx, 1
mov esi, 4
imul esi, esi, 0
mov edi, 4
shl edi, 0
mov esi, dword [ebp + esi - 0x2c]
or esi, dword [ebp + edi - 0x2c]
and esi, dword [ebp + edx - 0x2c]
or ecx, esi
add eax, ecx
mov dword [ebp - 0x38], eax
movss xmm0, dword [0x466350]
addss xmm0, dword [0x45ade8]
movss dword [0x466350], xmm0
movss xmm0, dword [0x466350]
subss xmm0, dword [0x4661d4]
subss xmm0, dword [0x45b7d4]
movsx eax, word [0x4663f8]
cvtsi2ss xmm1, eax
mulss xmm1, xmm0
cvttss2si ecx, xmm1
mov word [0x4663f8], cx
mov edx, 4
imul eax, edx, 3
mov ecx, dword [ebp + eax - 0x2c]
add ecx, dword [ebp - 0x34]
mov edx, 4
imul eax, edx, 3
mov dword [ebp + eax - 0x2c], ecx
mov ecx, dword [ebp - 0x34]
add ecx, dword [ebp - 0x38]
mov edx, 4
imul eax, edx, 7
mov dword [ebp + eax - 0x2c], ecx
mov ecx, dword [0x466268]
cvtsi2sd xmm0, ecx
movsd xmm1, qword [0x466428]
subsd xmm1, xmm0
addsd xmm1, qword [0x45bb90]
movsd xmm0, qword [0x4660c8]
subsd xmm0, xmm1
movsd qword [0x4660c8], xmm0
movsd xmm0, qword [0x466428]
subsd xmm0, qword [0x45adf0]
movsd qword [0x466428], xmm0
mov dword [ebp - 8], 8
jmp 0x405c73
mov edx, dword [ebp - 8]
sub edx, 1
mov dword [ebp - 8], edx
cmp dword [ebp - 8], 0
je 0x405c89
mov eax, dword [ebp - 8]
mov ecx, dword [ebp - 8]
mov edx, dword [ebp + ecx*4 - 0x30]
mov dword [ebp + eax*4 - 0x2c], edx
jmp 0x405c6a
mov eax, dword [0x466058]
cvtsi2sd xmm0, eax
movsd xmm1, qword [0x466488]
addsd xmm1, xmm0
addsd xmm1, qword [0x45af00]
mov ecx, dword [0x466334]
cvtsi2sd xmm0, ecx
addsd xmm0, xmm1
cvttsd2si edx, xmm0
mov dword [0x466334], edx
mov eax, dword [0x466058]
add eax, 1
mov dword [0x466058], eax
mov ecx, 4
shl ecx, 3
mov edx, 4
imul eax, edx, 0
mov ecx, dword [ebp + ecx - 0x2c]
mov dword [ebp + eax - 0x2c], ecx
mov edx, 0xdabe9af2
sub edx, dword [0x46622c]
cvtsi2ss xmm0, edx
subss xmm0, dword [0x466490]
cvtss2sd xmm0, xmm0
movsd qword [0x466178], xmm0
movss xmm0, dword [0x466490]
addss xmm0, dword [0x45ade8]
movss dword [0x466490], xmm0
mov eax, dword [0x46622c]
sub eax, 1
mov dword [0x46622c], eax
jmp 0x405884
movss xmm0, dword [0x45c0f4]
movss dword [0x466118], xmm0
mov ecx, dword [ebp - 0x30]
push ecx
push 0x100
call fcn.0040b630
add esp, 8
mov dword [ebp - 4], 0
jmp 0x405d63
mov edx, dword [ebp - 4]
add edx, 1
mov dword [ebp - 4], edx
cmp dword [ebp - 4], 8
je 0x405d96
movss xmm0, dword [0x45bfc8]
movss dword [0x466014], xmm0
mov eax, dword [ebp - 4]
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + eax*4 + 8]
mov eax, dword [ebp - 4]
add edx, dword [ebp + eax*4 - 0x2c]
mov ecx, dword [ebp - 4]
mov eax, dword [ebp + 8]
mov dword [eax + ecx*4 + 8], edx
jmp 0x405d5a
pop edi
pop esi
mov esp, ebp
pop ebp
ret