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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x150
push esi
push edi
mov eax, dword [0x4533d0]
mov dword [ebp - 0x13c], eax
fild dword [ebp - 0x13c]
fadd dword [str.z_vtN]
fsub qword [0x44ddd0]
mov ecx, dword [0x4533d0]
mov dword [ebp - 0x140], ecx
fild dword [ebp - 0x140]
fsubrp st(1)
call fcn.00421a50
mov dword [0x4533d0], eax
mov edx, dword [0x4533d0]
sub edx, 1
mov dword [0x4533d0], edx
movsx eax, word [0x4531d8]
mov dword [ebp - 0x144], eax
fild dword [ebp - 0x144]
fsub qword [0x4533e0]
fsub qword [0x44ddc8]
fmul qword [0x453048]
fstp qword [0x453048]
fld qword [0x4533e0]
fadd qword [0x44cdd8]
fstp qword [0x4533e0]
mov cx, word [0x4531d8]
sub cx, 1
mov word [0x4531d8], cx
mov dx, word [0x453300]
add dx, 1
mov word [0x453300], dx
movsx eax, word [0x453300]
movsx ecx, word [0x453374]
sub ecx, eax
mov word [0x453374], cx
mov dword [ebp - 0x108], 0
jmp 0x420808
mov edx, dword [ebp - 0x108]
add edx, 1
mov dword [ebp - 0x108], edx
cmp dword [ebp - 0x108], 0x10
je 0x42090e
fld qword [0x453068]
fsub qword [0x44ddc0]
fmul qword [0x4533e0]
fstp qword [0x4533e0]
mov eax, dword [ebp - 0x108]
mov ecx, dword [ebp + 0xc]
movzx edx, byte [ecx + eax*4]
shl edx, 0x18
mov eax, dword [ebp - 0x108]
mov ecx, dword [ebp + 0xc]
movzx eax, byte [ecx + eax*4 + 1]
shl eax, 0x10
or edx, eax
mov ecx, dword [ebp - 0x108]
mov eax, dword [ebp + 0xc]
movzx ecx, byte [eax + ecx*4 + 2]
shl ecx, 8
or edx, ecx
mov eax, dword [ebp - 0x108]
mov ecx, dword [ebp + 0xc]
movzx eax, byte [ecx + eax*4 + 3]
or edx, eax
mov ecx, dword [ebp - 0x108]
mov dword [ebp + ecx*4 - 0x100], edx
mov edx, dword [0x453220]
add edx, 1
mov dword [0x453220], edx
mov eax, dword [0x453220]
add eax, 0x4e2ffd4
cmp eax, 0x1debee55
jge 0x4208f7
mov cx, word [0x453130]
sub cx, 1
mov word [0x453130], cx
movsx edx, word [0x453130]
sub edx, 0x5682eed6
mov dword [ebp - 0x148], edx
fild dword [ebp - 0x148]
fld dword [0x453024]
fadd qword [0x44ddb8]
fadd qword [0x44ddb0]
fxch st(1)
fucompi st(1)
fstp st(0)
lahf
test ah, 0x44
jp 0x4208f5
mov eax, dword [0x4531c0]
movsx ecx, word [0x4532d8]
jmp 0x420909
fld dword [0x453010]
fadd qword [0x44dda8]
fstp dword [0x453010]
jmp 0x4207f9
mov esi, dword [ebp + 8]
add esi, 8
mov ecx, 9
lea edi, [ebp - 0x138]
rep movsd dword es:[edi], dword [esi]
push 0x100
push 0xf90
call fcn.00412b20
add esp, 8
mov dword [ebp - 0x104], eax
mov dword [ebp - 0x108], 0
jmp 0x420954
mov edx, dword [ebp - 0x108]
add edx, 1
mov dword [ebp - 0x108], edx
cmp dword [ebp - 0x108], 0x40
je 0x420cc1
cmp dword [ebp - 0x108], 0xf
jle 0x420ae3
fld qword [0x453428]
fmul qword [0x44dda0]
fstp qword [0x453428]
mov eax, dword [ebp - 0x108]
mov ecx, dword [ebp + eax*4 - 0x108]
shr ecx, 0x11
mov edx, dword [ebp - 0x108]
mov eax, dword [ebp + edx*4 - 0x108]
shl eax, 0xf
or ecx, eax
mov edx, dword [ebp - 0x108]
mov eax, dword [ebp + edx*4 - 0x108]
shr eax, 0x13
mov edx, dword [ebp - 0x108]
mov edx, dword [ebp + edx*4 - 0x108]
shl edx, 0xd
or eax, edx
xor ecx, eax
mov eax, dword [ebp - 0x108]
mov edx, dword [ebp + eax*4 - 0x108]
shr edx, 0xa
xor ecx, edx
mov eax, dword [ebp - 0x108]
mov dword [ebp + eax*4 - 0x100], ecx
mov ecx, dword [ebp - 0x108]
mov edx, dword [ebp + ecx*4 - 0x100]
mov eax, dword [ebp - 0x108]
add edx, dword [ebp + eax*4 - 0x11c]
mov ecx, dword [ebp - 0x108]
mov dword [ebp + ecx*4 - 0x100], edx
mov edx, dword [ebp - 0x108]
mov eax, dword [ebp + edx*4 - 0x13c]
shr eax, 7
mov ecx, dword [ebp - 0x108]
mov edx, dword [ebp + ecx*4 - 0x13c]
shl edx, 0x19
or eax, edx
mov ecx, dword [ebp - 0x108]
mov edx, dword [ebp + ecx*4 - 0x13c]
shr edx, 0x12
mov ecx, dword [ebp - 0x108]
mov ecx, dword [ebp + ecx*4 - 0x13c]
shl ecx, 0xe
or edx, ecx
xor eax, edx
mov edx, dword [ebp - 0x108]
mov ecx, dword [ebp + edx*4 - 0x13c]
shr ecx, 3
xor eax, ecx
mov edx, dword [ebp - 0x108]
add eax, dword [ebp + edx*4 - 0x100]
mov ecx, dword [ebp - 0x108]
mov dword [ebp + ecx*4 - 0x100], eax
fld qword [0x4533e0]
fadd qword [0x44dd98]
movsx edx, word [0x45324c]
mov dword [ebp - 0x14c], edx
fild dword [ebp - 0x14c]
fsubrp st(1)
call fcn.00421a50
mov word [0x45324c], ax
fld qword [0x4533e0]
fadd qword [0x44cdd8]
fstp qword [0x4533e0]
mov eax, dword [ebp - 0x108]
mov ecx, dword [ebp + eax*4 - 0x100]
mov edx, dword [ebp - 0x108]
add ecx, dword [ebp + edx*4 - 0x140]
mov eax, dword [ebp - 0x108]
mov dword [ebp + eax*4 - 0x100], ecx
fld dword [0x453404]
fmul qword [0x44dd90]
fstp dword [0x453404]
mov ecx, dword [ebp - 0x128]
shr ecx, 6
mov edx, dword [ebp - 0x128]
shl edx, 0x1a
or ecx, edx
mov eax, dword [ebp - 0x128]
shr eax, 0xb
mov edx, dword [ebp - 0x128]
shl edx, 0x15
or eax, edx
xor ecx, eax
mov eax, dword [ebp - 0x128]
shr eax, 0x19
mov edx, dword [ebp - 0x128]
shl edx, 7
or eax, edx
xor ecx, eax
add ecx, dword [ebp - 0x11c]
mov eax, dword [ebp - 0x124]
xor eax, dword [ebp - 0x120]
and eax, dword [ebp - 0x128]
xor eax, dword [ebp - 0x120]
add ecx, eax
mov edx, dword [ebp - 0x108]
mov eax, dword [ebp - 0x104]
add ecx, dword [eax + edx*4]
mov edx, dword [ebp - 0x108]
add ecx, dword [ebp + edx*4 - 0x100]
mov dword [ebp - 0x10c], ecx
fld dword [0x4531d0]
fstp qword [section..data]
fld dword [0x4531d0]
fsub qword [0x44cdd8]
fstp dword [0x4531d0]
mov eax, dword [ebp - 0x138]
shr eax, 2
mov ecx, dword [ebp - 0x138]
shl ecx, 0x1e
or eax, ecx
mov edx, dword [ebp - 0x138]
shr edx, 0xd
mov ecx, dword [ebp - 0x138]
shl ecx, 0x13
or edx, ecx
xor eax, edx
mov edx, dword [ebp - 0x138]
shr edx, 0x16
mov ecx, dword [ebp - 0x138]
shl ecx, 0xa
or edx, ecx
xor eax, edx
mov edx, dword [ebp - 0x138]
and edx, dword [ebp - 0x134]
mov ecx, dword [ebp - 0x138]
or ecx, dword [ebp - 0x134]
and ecx, dword [ebp - 0x130]
or edx, ecx
add eax, edx
mov dword [ebp - 0x110], eax
mov edx, dword [ebp - 0x12c]
add edx, dword [ebp - 0x10c]
mov dword [ebp - 0x12c], edx
mov eax, dword [ebp - 0x10c]
add eax, dword [ebp - 0x110]
mov dword [ebp - 0x11c], eax
movsx ecx, word [0x453408]
add ecx, 0x34333734
mov dword [ebp - 0x150], ecx
fild dword [ebp - 0x150]
fadd qword [0x453330]
fmul qword [0x453218]
fstp qword [0x453218]
mov dx, word [0x453408]
add dx, 1
mov word [0x453408], dx
mov dword [ebp - 0x114], 8
jmp 0x420c79
mov eax, dword [ebp - 0x114]
sub eax, 1
mov dword [ebp - 0x114], eax
cmp dword [ebp - 0x114], 0
je 0x420c9e
mov ecx, dword [ebp - 0x114]
mov edx, dword [ebp - 0x114]
mov eax, dword [ebp + edx*4 - 0x13c]
mov dword [ebp + ecx*4 - 0x138], eax
jmp 0x420c6a
mov ecx, dword [ebp - 0x118]
mov dword [ebp - 0x138], ecx
fld qword [0x453280]
fsub qword [0x44dd88]
fstp qword [0x453280]
jmp 0x420945
mov edx, dword [ebp - 0x104]
push edx
push 0x100
call fcn.004021e0
add esp, 8
mov dword [ebp - 0x108], 0
jmp 0x420cf0
mov eax, dword [ebp - 0x108]
add eax, 1
mov dword [ebp - 0x108], eax
cmp dword [ebp - 0x108], 8
je 0x420d32
movsd xmm0, qword [0x44dd80]
movsd qword [0x4530a0], xmm0
mov ecx, dword [ebp - 0x108]
mov edx, dword [ebp + 8]
mov eax, dword [edx + ecx*4 + 8]
mov ecx, dword [ebp - 0x108]
add eax, dword [ebp + ecx*4 - 0x138]
mov edx, dword [ebp - 0x108]
mov ecx, dword [ebp + 8]
mov dword [ecx + edx*4 + 8], eax
jmp 0x420ce1
pop edi
pop esi
mov esp, ebp
pop ebp
ret