Function at 0x100145b0
Capabilities:
Authenticate hmac
Encode data using xor
Hash data using sha512

Disassembly:
sub esp, 0x3c4
mov eax, dword [0x100de040]
xor eax, esp
mov dword [esp + 0x3bc], eax
mov eax, dword [esp + 0x3d0]
push ebx
mov ebx, dword [esp + 0x3cc]
push ebp
mov ebp, dword [esp + 0x3d4]
cmp ebp, 0x80
push esi
push edi
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ecx
jle 0x10014679
xor eax, eax
lea edx, [esp + 0x1b8]
mov dword [esp + 0x1c0], eax
mov dword [esp + 0x1c4], eax
mov dword [esp + 0x1b8], eax
mov dword [esp + 0x1bc], eax
mov ecx, 0x10
mov esi, 0x100bfbd0
lea edi, [esp + 0x1c8]
push edx
rep movsd dword es:[edi], dword [esi]
push ebp
mov ecx, ebx
call fcn.10016fe0
lea eax, [esp + 0x1c0]
push eax
lea ecx, [esp + 0x314]
push ecx
call fcn.100170e0
lea edx, [esp + 0x1c8]
mov ecx, 0xd0
add esp, 0x10
lea ebx, [esp + 0x308]
mov ebp, 0x40
mov esi, ecx
mov eax, edx
mov byte [eax], 0
inc eax
sub esi, 1
jne 0x10014666
nop
dec ecx
mov byte [edx], 0
inc edx
test ecx, ecx
jne 0x10014670
xor eax, eax
cmp ebp, eax
mov ecx, 0x10
mov esi, 0x100bfbd0
lea edi, [esp + 0xf8]
mov dword [esp + 0xf0], eax
mov dword [esp + 0xf4], eax
mov dword [esp + 0xe8], eax
mov dword [esp + 0xec], eax
rep movsd dword es:[edi], dword [esi]
jle 0x100146d4
mov esi, ebx
lea edx, [esp + 0x288]
sub esi, edx
lea esp, [esp]
lea ecx, [esp + eax + 0x288]
mov dl, byte [esi + ecx]
xor dl, 0x36
inc eax
cmp eax, ebp
mov byte [ecx], dl
jl 0x100146c0
cmp ebp, 0x80
jge 0x100146f6
mov ecx, 0x80
sub ecx, ebp
push ecx
lea eax, [esp + ebp + 0x28c]
push 0x36
push eax
call fcn.10064e10
add esp, 0xc
lea edx, [esp + 0xe8]
push edx
push 0x80
lea ecx, [esp + 0x290]
call fcn.10016fe0
mov ecx, dword [esp + 0x3ec]
lea eax, [esp + 0xf0]
push eax
push ecx
mov ecx, dword [esp + 0x20]
call fcn.10016fe0
lea edx, [esp + 0xf8]
push edx
lea eax, [esp + 0x39c]
push eax
call fcn.100170e0
xor eax, eax
add esp, 0x18
cmp ebp, eax
mov ecx, 0x10
mov esi, 0x100bfbd0
lea edi, [esp + 0x28]
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], eax
rep movsd dword es:[edi], dword [esi]
jle 0x10014785
mov esi, ebx
lea ecx, [esp + 0x288]
sub esi, ecx
lea ecx, [esp + eax + 0x288]
mov dl, byte [esi + ecx]
xor dl, 0x5c
inc eax
cmp eax, ebp
mov byte [ecx], dl
jl 0x10014771
cmp ebp, 0x80
jge 0x100147a7
mov ecx, 0x80
sub ecx, ebp
push ecx
lea eax, [esp + ebp + 0x28c]
push 0x5c
push eax
call fcn.10064e10
add esp, 0xc
lea edx, [esp + 0x18]
push edx
push 0x80
lea ecx, [esp + 0x290]
call fcn.10016fe0
lea eax, [esp + 0x20]
push eax
push 0x40
lea ecx, [esp + 0x398]
call fcn.10016fe0
lea ecx, [esp + 0x28]
push ecx
lea edx, [esp + 0x35c]
push edx
call fcn.100170e0
mov ecx, dword [esp + 0x2c]
push 0x40
lea eax, [esp + 0x364]
push eax
push ecx
call fcn.10064ea0
lea edx, [esp + 0x10c]
mov ecx, 0xd0
add esp, 0x24
mov esi, ecx
mov eax, edx
lea esp, [esp]
mov byte [eax], 0
inc eax
sub esi, 1
jne 0x10014810
lea esp, [esp]
dec ecx
mov byte [edx], 0
inc edx
test ecx, ecx
jne 0x10014820
lea edx, [esp + 0x18]
mov ecx, 0xd0
mov esi, ecx
mov eax, edx
mov byte [eax], 0
inc eax
sub esi, 1
jne 0x10014836
nop
dec ecx
mov byte [edx], 0
inc edx
test ecx, ecx
jne 0x10014840
lea edx, [esp + 0x388]
mov ecx, 0x40
mov esi, ecx
mov eax, edx
lea esp, [esp]
mov byte [eax], 0
inc eax
sub esi, 1
jne 0x10014860
lea esp, [esp]
dec ecx
mov byte [edx], 0
inc edx
test ecx, ecx
jne 0x10014870
lea edx, [esp + 0x348]
mov ecx, 0x40
mov esi, ecx
mov eax, edx
lea esp, [esp]
mov byte [eax], 0
inc eax
sub esi, 1
jne 0x10014890
lea esp, [esp]
dec ecx
mov byte [edx], 0
inc edx
test ecx, ecx
jne 0x100148a0
lea edx, [esp + 0x288]
mov ecx, 0x80
mov esi, ecx
mov eax, edx
lea esp, [esp]
mov byte [eax], 0
inc eax
sub esi, 1
jne 0x100148c0
lea esp, [esp]
dec ecx
mov byte [edx], 0
inc edx
test ecx, ecx
jne 0x100148d0
lea edx, [esp + 0x308]
mov ecx, 0x40
mov esi, ecx
mov eax, edx
lea esp, [esp]
mov byte [eax], 0
inc eax
sub esi, 1
jne 0x100148f0
lea esp, [esp]
dec ecx
mov byte [edx], 0
inc edx
test ecx, ecx
jne 0x10014900
mov ecx, dword [esp + 0x3cc]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.10062448
add esp, 0x3c4
ret