Function at 0x4a0ec0
Capabilities:
Hash data using sha512

Disassembly:
lea r12, [rsp - 0xc8]
cmp r12, qword [r14 + 0x10]
jbe 0x4a173f
sub rsp, 0x148
mov qword [rsp + 0x140], rbp
lea rbp, [rsp + 0x140]
mov qword [rsp + 0x150], rax
mov qword [rsp + 0x158], rbx
mov qword [rsp + 0x160], rcx
mov qword [rsp + 0x170], rsi
mov qword [rsp + 0x178], r8
mov qword [rsp + 0x168], rdi
mov rdx, rdi
lea rdi, [rsp + 0xc0]
mov qword [rsp - 0x10], rbp
lea rbp, [rsp - 0x10]
call fcn.0045fb82
mov rbp, qword [rbp]
mov r9, qword [rbx]
mov r10, qword [rbx + 8]
xor edi, edi
jmp 0x4a0fd6
mov qword [rsp + 0x50], r12
mov rdx, r13
mov r13, qword [rsp + 0x80]
mov r12, qword [rsp + 0x18]
xor r13, r12
xor qword [rax], r13
mov r12, qword [rsp + 0x78]
mov r13, qword [rsp + 0x10]
xor r12, r13
xor qword [rax + 8], r12
mov r12, qword [rsp + 0x48]
mov r13, qword [rsp + 0x70]
xor r12, r13
xor qword [rax + 0x10], r12
xor r15, r9
xor qword [rax + 0x18], r15
mov r12, qword [rsp + 0x38]
xor r12, rbx
xor qword [rax + 0x20], r12
mov r12, qword [rsp + 0x30]
xor r12, r11
xor qword [rax + 0x28], r12
mov r11, qword [rsp + 0x28]
mov r12, qword [rsp + 0x50]
xor r11, r12
xor qword [rax + 0x30], r11
mov r11, qword [rsp + 0x20]
xor r11, rdx
xor qword [rax + 0x38], r11
mov rdx, qword [rsp + 0x168]
mov r9, qword [rsp + 0xa8]
mov rbx, qword [rsp + 0x158]
cmp rsi, rdi
jle 0x4a10dc
sub r9, 0xffffffffffffff80
mov qword [rsp + 0xa8], r9
lea r11, [r10 + 1]
cmp r9, 0x80
cmovb r10, r11
mov qword [rsp + 0xa0], r10
mov r11, qword [rax]
mov qword [rsp + 0x80], r11
mov r12, qword [rax + 8]
mov qword [rsp + 0x78], r12
mov r13, qword [rax + 0x10]
mov qword [rsp + 0x48], r13
mov r15, qword [rax + 0x18]
mov rbx, qword [rax + 0x20]
mov qword [rsp + 0x38], rbx
mov rbx, qword [rax + 0x28]
mov qword [rsp + 0x30], rbx
mov rbx, qword [rax + 0x30]
mov qword [rsp + 0x28], rbx
mov rbx, qword [rax + 0x38]
mov qword [rsp + 0x20], rbx
mov rbx, qword [0x00616560]
mov qword [rsp + 0x18], rbx
mov rbx, qword [0x00616568]
mov qword [rsp + 0x10], rbx
mov rbx, qword [0x00616570]
mov qword [rsp + 0x70], rbx
mov rbx, qword [0x00616578]
mov qword [rsp + 0x68], rbx
mov rbx, qword [0x00616580]
mov r11, qword [0x00616588]
mov r12, qword [0x00616590]
mov r13, qword [0x00616598]
xor rbx, r9
xor r11, r10
xor r12, rcx
mov qword [rsp + 0xb8], rax
xor eax, eax
mov qword [rsp + 0x90], rax
mov rax, qword [rsp + 0xb8]
jmp 0x4a112f
mov r9, qword [rsp + 0x68]
mov qword [rsp + 0xb0], rax
xor eax, eax
mov qword [rsp + 0x88], rax
mov rax, qword [rsp + 0xb0]
jmp 0x4a1222
mov qword [rbx], r9
mov qword [rbx + 8], r10
mov rbp, qword [rsp + 0x140]
add rsp, 0x148
ret
mov rsi, qword [rdx + rdi]
mov qword [rsp + r9*8 + 0xc0], rsi
lea rsi, [r9 + 1]
lea rdi, [r10 + 8]
mov r9, qword [rsp + 0x170]
mov r9, qword [rsp + 0xa8]
mov r10, qword [rsp + 0xa0]
mov qword [rsp + 0x90], rsi
mov rsi, qword [rsp + 0x170]
mov qword [rsp + 0x98], rdi
mov r9, qword [rsp + 0x90]
nop
cmp r9, 0x10
jge 0x4a10b8
cmp rsi, rdi
jb 0x4a1733
sub rsi, rdi
sub rdi, r8
sar rdi, 0x3f
mov r10, qword [rsp + 0x98]
and rdi, r10
cmp rsi, 7
ja 0x4a10f3
jmp 0x4a1726
mov rcx, qword [rsp + 0x88]
inc rcx
rol r12, 0x28
rol r10, 1
rol r11, 1
rol rsi, 1
mov rdx, qword [rsp + rdx*8 + 0xc0]
mov rax, qword [rsp + 0x40]
add rax, rdx
add rax, r12
xor r15, rax
rol r15, 0x30
mov rdx, qword [rsp + 0x10]
add rdx, r15
xor r12, rdx
rol r12, 1
mov r8, qword [rsp + 0x178]
mov qword [rsp + 0x88], rcx
mov qword [rsp + 0x38], r12
mov qword [rsp + 0x18], rbx
mov qword [rsp + 0x30], r10
mov qword [rsp + 0x10], rdx
mov qword [rsp + 0x28], r11
mov r12, r15
mov r15, rax
mov qword [rsp + 0x20], rsi
mov rax, qword [rsp + 0x150]
mov rcx, qword [rsp + 0x160]
mov rdx, qword [rsp + 0x168]
mov rsi, qword [rsp + 0x170]
mov r10, qword [rsp + 0xa0]
mov rbx, r9
mov r11, rdi
mov r9, qword [rsp + 0x68]
mov rdi, qword [rsp + 0x98]
mov rdx, qword [rsp + 0x88]
cmp rdx, 0xc
jge 0x4a0f45
shl rdx, 4
lea r8, [0x00618820]
movzx esi, byte [r8 + rdx]
cmp rsi, 0x10
jae 0x4a1719
mov rsi, qword [rsp + rsi*8 + 0xc0]
mov rdi, qword [rsp + 0x80]
add rsi, rdi
mov rdi, qword [rsp + 0x38]
add rsi, rdi
xor rbx, rsi
rol rbx, 0x20
mov r10, qword [rsp + 0x18]
add r10, rbx
mov qword [rsp + 0x18], r10
xor rdi, r10
movzx r10d, byte [r8 + rdx + 1]
cmp r10, 0x10
jae 0x4a170c
mov qword [rsp + 0x60], rbx
mov r10, qword [rsp + r10*8 + 0xc0]
mov rbx, qword [rsp + 0x78]
add rbx, r10
mov r10, qword [rsp + 0x30]
add rbx, r10
mov qword [rsp + 0x78], rbx
xor r11, rbx
rol r11, 0x20
mov rbx, qword [rsp + 0x10]
add rbx, r11
mov qword [rsp + 0x10], rbx
xor r10, rbx
movzx ebx, byte [r8 + rdx + 2]
cmp rbx, 0x10
jae 0x4a16ff
mov qword [rsp + 0x58], r11
mov rbx, qword [rsp + rbx*8 + 0xc0]
mov r11, qword [rsp + 0x48]
add rbx, r11
mov r11, qword [rsp + 0x28]
add rbx, r11
mov qword [rsp + 0x48], rbx
xor r12, rbx
rol r12, 0x20
mov rbx, qword [rsp + 0x70]
add rbx, r12
mov qword [rsp + 0x70], rbx
xor r11, rbx
movzx ebx, byte [r8 + rdx + 3]
nop dword [rax + rax]
cmp rbx, 0x10
jae 0x4a16f2
mov rbx, qword [rsp + rbx*8 + 0xc0]
add rbx, r15
mov r15, qword [rsp + 0x20]
add rbx, r15
xor r13, rbx
rol r13, 0x20
add r9, r13
mov qword [rsp + 0x68], r9
xor r15, r9
movzx r9d, byte [r8 + rdx + 4]
cmp r9, 0x10
jae 0x4a16e5
rol rdi, 0x28
mov r9, qword [rsp + r9*8 + 0xc0]
add rsi, r9
add rsi, rdi
mov qword [rsp + 0x80], rsi
mov r9, qword [rsp + 0x60]
xor r9, rsi
rol r9, 0x30
mov rsi, qword [rsp + 0x18]
add rsi, r9
xor rdi, rsi
mov qword [rsp + 0x38], rdi
movzx edi, byte [r8 + rdx + 5]
nop dword [rax + rax]
cmp rdi, 0x10
jae 0x4a16d3
mov qword [rsp + 0x60], r9
mov qword [rsp + 0x18], rsi
rol r10, 0x28
mov rdi, qword [rsp + rdi*8 + 0xc0]
mov rsi, qword [rsp + 0x78]
add rsi, rdi
add rsi, r10
mov rdi, qword [rsp + 0x58]
xor rdi, rsi
rol rdi, 0x30
mov r9, qword [rsp + 0x10]
add r9, rdi
mov qword [rsp + 0x10], r9
xor r10, r9
movzx r9d, byte [r8 + rdx + 6]
cmp r9, 0x10
jae 0x4a16c6
mov qword [rsp + 0x58], rdi
rol r11, 0x28
mov r9, qword [rsp + r9*8 + 0xc0]
mov rdi, qword [rsp + 0x48]
add rdi, r9
add rdi, r11
xor r12, rdi
rol r12, 0x30
mov qword [rsp + 0x50], r12
mov r9, qword [rsp + 0x70]
add r9, r12
xor r11, r9
movzx r12d, byte [r8 + rdx + 7]
cmp r12, 0x10
jae 0x4a16b9
rol r15, 0x28
mov r12, qword [rsp + r12*8 + 0xc0]
add rbx, r12
add rbx, r15
mov qword [rsp + 0x40], rbx
xor r13, rbx
rol r13, 0x30
mov r12, qword [rsp + 0x68]
add r12, r13
xor r15, r12
movzx ebx, byte [r8 + rdx + 8]
cmp rbx, 0x10
jae 0x4a16ac
mov qword [rsp + 0x48], rdi
rol r10, 1
mov rbx, qword [rsp + rbx*8 + 0xc0]
mov rdi, qword [rsp + 0x80]
add rbx, rdi
add rbx, r10
xor r13, rbx
rol r13, 0x20
lea rdi, [r9 + r13]
xor r10, rdi
movzx r9d, byte [r8 + rdx + 9]
cmp r9, 0x10
jae 0x4a169f
rol r11, 1
mov r9, qword [rsp + r9*8 + 0xc0]
add rsi, r9
add rsi, r11
mov r9, qword [rsp + 0x60]
xor r9, rsi
rol r9, 0x20
add r12, r9
mov qword [rsp + 0x68], r12
xor r11, r12
movzx r12d, byte [r8 + rdx + 0xa]
nop dword [rax]
cmp r12, 0x10
jae 0x4a1692
mov qword [rsp + 0x60], r9
rol r15, 1
mov r12, qword [rsp + r12*8 + 0xc0]
mov r9, qword [rsp + 0x48]
add r9, r12
add r9, r15
mov qword [rsp + 0x48], r9
mov r12, qword [rsp + 0x58]
xor r12, r9
rol r12, 0x20
mov r9, qword [rsp + 0x18]
add r9, r12
mov qword [rsp + 0x18], r9
xor r15, r9
movzx r9d, byte [r8 + rdx + 0xb]
cmp r9, 0x10
jae 0x4a1685
mov qword [rsp + 0x58], r12
mov qword [rsp + 0x20], r15
mov r12, qword [rsp + 0x38]
rol r12, 1
mov r9, qword [rsp + r9*8 + 0xc0]
mov r15, qword [rsp + 0x40]
add r9, r15
add r9, r12
mov qword [rsp + 0x40], r9
mov r15, qword [rsp + 0x50]
xor r15, r9
rol r15, 0x20
mov r9, qword [rsp + 0x10]
add r9, r15
mov qword [rsp + 0x10], r9
xor r12, r9
movzx r9d, byte [r8 + rdx + 0xc]
cmp r9, 0x10
jae 0x4a1676
rol r10, 0x28
mov r9, qword [rsp + r9*8 + 0xc0]
add rbx, r9
add rbx, r10
xor r13, rbx
rol r13, 0x30
add rdi, r13
xor r10, rdi
movzx r9d, byte [r8 + rdx + 0xd]
cmp r9, 0x10
jae 0x4a1669
mov qword [rsp + 0x80], rbx
rol r11, 0x28
mov r9, qword [rsp + r9*8 + 0xc0]
add rsi, r9
add rsi, r11
mov r9, qword [rsp + 0x60]
xor r9, rsi
rol r9, 0x30
mov rbx, qword [rsp + 0x68]
add rbx, r9
mov qword [rsp + 0x68], rbx
xor r11, rbx
movzx ebx, byte [r8 + rdx + 0xe]
cmp rbx, 0x10
jae 0x4a165c
mov qword [rsp + 0x70], rdi
mov qword [rsp + 0x78], rsi
mov rsi, qword [rsp + 0x20]
rol rsi, 0x28
mov rbx, qword [rsp + rbx*8 + 0xc0]
mov rdi, qword [rsp + 0x48]
add rbx, rdi
add rbx, rsi
mov qword [rsp + 0x48], rbx
mov rdi, qword [rsp + 0x58]
xor rdi, rbx
rol rdi, 0x30
mov rbx, qword [rsp + 0x18]
add rbx, rdi
xor rsi, rbx
movzx edx, byte [r8 + rdx + 0xf]
cmp rdx, 0x10
jb 0x4a1173
mov rax, rdx
mov ecx, 0x10
call fcn.0045f8e0
mov rax, rbx
mov ecx, 0x10
call fcn.0045f8e0
mov rax, r9
mov ecx, 0x10
call fcn.0045f8e0
mov rax, r9
mov ecx, 0x10
nop
call fcn.0045f8e0
mov rax, r9
mov ecx, 0x10
call fcn.0045f8e0
mov rax, r12
mov ecx, 0x10
call fcn.0045f8e0
mov rax, r9
mov ecx, 0x10
call fcn.0045f8e0
mov rax, rbx
mov ecx, 0x10
call fcn.0045f8e0
mov rax, r12
mov ecx, 0x10
call fcn.0045f8e0
mov rax, r9
mov ecx, 0x10
call fcn.0045f8e0
mov rax, rdi
mov ecx, 0x10
nop dword [rax + rax]
call fcn.0045f8e0
mov rax, r9
mov ecx, 0x10
call fcn.0045f8e0
mov rax, rbx
mov ecx, 0x10
call fcn.0045f8e0
mov rax, rbx
mov ecx, 0x10
call fcn.0045f8e0
mov rax, r10
mov ecx, 0x10
call fcn.0045f8e0
mov rax, rsi
mov ecx, 0x10
call fcn.0045f8e0
mov eax, 7
mov rcx, rsi
call fcn.0045f8e0
mov rax, rdi
mov rcx, rsi
call fcn.0045f9a0
nop
mov qword [rsp + 8], rax
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rcx
mov qword [rsp + 0x20], rdi
mov qword [rsp + 0x28], rsi
mov qword [rsp + 0x30], r8
nop dword [rax]
call fcn.0045d280
mov rax, qword [rsp + 8]
mov rbx, qword [rsp + 0x10]
mov rcx, qword [rsp + 0x18]
mov rdi, qword [rsp + 0x20]
mov rsi, qword [rsp + 0x28]
mov r8, qword [rsp + 0x30]
jmp fcn.004a0ec0