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

Disassembly:
sub esp, 0x3c4
mov eax, dword [0x100d1040]
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 0x100524e9
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, 0x100b13c0
lea edi, [esp + 0x1c8]
push edx
rep movsd dword es:[edi], dword [esi]
push ebp
mov ecx, ebx
call fcn.10054e50
lea eax, [esp + 0x1c0]
push eax
lea ecx, [esp + 0x314]
push ecx
call fcn.10054f50
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 0x100524d6
nop
dec ecx
mov byte [edx], 0
inc edx
test ecx, ecx
jne 0x100524e0
xor eax, eax
cmp ebp, eax
mov ecx, 0x10
mov esi, 0x100b13c0
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 0x10052544
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 0x10052530
cmp ebp, 0x80
jge 0x10052566
mov ecx, 0x80
sub ecx, ebp
push ecx
lea eax, [esp + ebp + 0x28c]
push 0x36
push eax
call fcn.10059a00
add esp, 0xc
lea edx, [esp + 0xe8]
push edx
push 0x80
lea ecx, [esp + 0x290]
call fcn.10054e50
mov ecx, dword [esp + 0x3ec]
lea eax, [esp + 0xf0]
push eax
push ecx
mov ecx, dword [esp + 0x20]
call fcn.10054e50
lea edx, [esp + 0xf8]
push edx
lea eax, [esp + 0x39c]
push eax
call fcn.10054f50
xor eax, eax
add esp, 0x18
cmp ebp, eax
mov ecx, 0x10
mov esi, 0x100b13c0
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 0x100525f5
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 0x100525e1
cmp ebp, 0x80
jge 0x10052617
mov ecx, 0x80
sub ecx, ebp
push ecx
lea eax, [esp + ebp + 0x28c]
push 0x5c
push eax
call fcn.10059a00
add esp, 0xc
lea edx, [esp + 0x18]
push edx
push 0x80
lea ecx, [esp + 0x290]
call fcn.10054e50
lea eax, [esp + 0x20]
push eax
push 0x40
lea ecx, [esp + 0x398]
call fcn.10054e50
lea ecx, [esp + 0x28]
push ecx
lea edx, [esp + 0x35c]
push edx
call fcn.10054f50
mov ecx, dword [esp + 0x2c]
push 0x40
lea eax, [esp + 0x364]
push eax
push ecx
call fcn.10059a80
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 0x10052680
lea esp, [esp]
dec ecx
mov byte [edx], 0
inc edx
test ecx, ecx
jne 0x10052690
lea edx, [esp + 0x18]
mov ecx, 0xd0
mov esi, ecx
mov eax, edx
mov byte [eax], 0
inc eax
sub esi, 1
jne 0x100526a6
nop
dec ecx
mov byte [edx], 0
inc edx
test ecx, ecx
jne 0x100526b0
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 0x100526d0
lea esp, [esp]
dec ecx
mov byte [edx], 0
inc edx
test ecx, ecx
jne 0x100526e0
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 0x10052700
lea esp, [esp]
dec ecx
mov byte [edx], 0
inc edx
test ecx, ecx
jne 0x10052710
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 0x10052730
lea esp, [esp]
dec ecx
mov byte [edx], 0
inc edx
test ecx, ecx
jne 0x10052740
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 0x10052760
lea esp, [esp]
dec ecx
mov byte [edx], 0
inc edx
test ecx, ecx
jne 0x10052770
mov ecx, dword [esp + 0x3cc]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.1005710f
add esp, 0x3c4
ret