Function at 0x4ec2e0
Capabilities:
Hash data using sha512

Disassembly:
lea r12, [rsp - 0xc8]
cmp r12, qword [r14 + 0x10]
jbe 0x4ecb9e
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.00458762
mov rbp, qword [rbp]
mov r9, qword [rbx]
mov r10, qword [rbx + 8]
xor edi, edi
jmp 0x4ec405
mov qword [rsp + 0xa0], r12
mov rdx, r13
mov r13, qword [rsp + 0x70]
mov r12, qword [rsp + 0x80]
xor r13, r12
xor qword [rax], r13
mov r12, qword [rsp + 0xa8]
mov r13, qword [rsp + 0x78]
xor r12, r13
xor qword [rax + 8], r12
mov r12, qword [rsp + 0x38]
mov r13, qword [rsp + 0x88]
xor r12, r13
xor qword [rax + 0x10], r12
xor r15, r9
xor qword [rax + 0x18], r15
mov r12, qword [rsp + 0x58]
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 + 0x98]
mov r12, qword [rsp + 0xa0]
xor r11, r12
xor qword [rax + 0x30], r11
mov r11, qword [rsp + 0x90]
xor r11, rdx
xor qword [rax + 0x38], r11
mov rdx, qword [rsp + 0x168]
mov r9, qword [rsp + 0x18]
mov rbx, qword [rsp + 0x158]
cmp rsi, rdi
jle 0x4ec50b
sub r9, 0xffffffffffffff80
mov qword [rsp + 0x18], r9
lea r11, [r10 + 1]
cmp r9, 0x80
cmovb r10, r11
mov qword [rsp + 0x68], r10
mov r11, qword [rax]
mov qword [rsp + 0x70], r11
mov r12, qword [rax + 8]
mov qword [rsp + 0xa8], r12
mov r13, qword [rax + 0x10]
mov qword [rsp + 0x38], r13
mov r15, qword [rax + 0x18]
mov rbx, qword [rax + 0x20]
mov qword [rsp + 0x58], rbx
mov rbx, qword [rax + 0x28]
mov qword [rsp + 0x30], rbx
mov rbx, qword [rax + 0x30]
mov qword [rsp + 0x98], rbx
mov rbx, qword [rax + 0x38]
mov qword [rsp + 0x90], rbx
mov rbx, qword [0x005ed380]
mov qword [rsp + 0x80], rbx
mov rbx, qword [0x005ed388]
mov qword [rsp + 0x78], rbx
mov rbx, qword [0x005ed390]
mov qword [rsp + 0x88], rbx
mov rbx, qword [0x005ed398]
mov qword [rsp + 0x60], rbx
mov rbx, qword [0x005ed3a0]
mov r11, qword [0x005ed3a8]
mov r12, qword [0x005ed3b0]
mov r13, qword [0x005ed3b8]
xor rbx, r9
xor r11, r10
xor r12, rcx
mov qword [rsp + 0xb8], rax
xor eax, eax
mov qword [rsp + 0x28], rax
mov rax, qword [rsp + 0xb8]
jmp 0x4ec555
mov r9, qword [rsp + 0x60]
mov qword [rsp + 0xb0], rax
xor eax, eax
mov qword [rsp + 0x20], rax
mov rax, qword [rsp + 0xb0]
jmp 0x4ec638
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 + 0x18]
mov r10, qword [rsp + 0x68]
mov qword [rsp + 0x28], rsi
mov rsi, qword [rsp + 0x170]
mov qword [rsp + 0x10], rdi
mov r9, qword [rsp + 0x28]
nop
cmp r9, 0x10
jge 0x4ec4ea
cmp rsi, rdi
jb 0x4ecb92
sub rsi, rdi
sub rdi, r8
sar rdi, 0x3f
mov r10, qword [rsp + 0x10]
and rdi, r10
cmp rsi, 7
ja 0x4ec522
jmp 0x4ecb85
mov rcx, qword [rsp + 0x20]
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 + 0x48]
add rax, rdx
add rax, r12
xor r15, rax
rol r15, 0x30
mov rdx, qword [rsp + 0x78]
add rdx, r15
xor r12, rdx
rol r12, 1
mov r8, qword [rsp + 0x178]
mov qword [rsp + 0x20], rcx
mov qword [rsp + 0x58], r12
mov qword [rsp + 0x80], rbx
mov qword [rsp + 0x30], r10
mov qword [rsp + 0x78], rdx
mov qword [rsp + 0x98], r11
mov r12, r15
mov r15, rax
mov qword [rsp + 0x90], 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 + 0x68]
mov rbx, r9
mov r11, rdi
mov r9, qword [rsp + 0x60]
mov rdi, qword [rsp + 0x10]
mov rdx, qword [rsp + 0x20]
nop dword [rax]
cmp rdx, 0xc
jge 0x4ec365
shl rdx, 4
lea r8, [0x005ef600]
movzx esi, byte [r8 + rdx]
nop word [rax + rax]
cmp rsi, 0x10
jae 0x4ecb73
mov rsi, qword [rsp + rsi*8 + 0xc0]
mov rdi, qword [rsp + 0x70]
add rsi, rdi
mov rdi, qword [rsp + 0x58]
add rsi, rdi
xor rbx, rsi
rol rbx, 0x20
mov r10, qword [rsp + 0x80]
add r10, rbx
mov qword [rsp + 0x80], r10
xor rdi, r10
movzx r10d, byte [r8 + rdx + 1]
cmp r10, 0x10
jae 0x4ecb66
mov qword [rsp + 0x50], rbx
mov r10, qword [rsp + r10*8 + 0xc0]
mov rbx, qword [rsp + 0xa8]
add rbx, r10
mov r10, qword [rsp + 0x30]
add rbx, r10
mov qword [rsp + 0xa8], rbx
xor r11, rbx
rol r11, 0x20
mov rbx, qword [rsp + 0x78]
add rbx, r11
mov qword [rsp + 0x78], rbx
xor r10, rbx
movzx ebx, byte [r8 + rdx + 2]
cmp rbx, 0x10
jae 0x4ecb59
mov qword [rsp + 0x40], r11
mov rbx, qword [rsp + rbx*8 + 0xc0]
mov r11, qword [rsp + 0x38]
add rbx, r11
mov r11, qword [rsp + 0x98]
add rbx, r11
mov qword [rsp + 0x38], rbx
xor r12, rbx
rol r12, 0x20
mov rbx, qword [rsp + 0x88]
add rbx, r12
mov qword [rsp + 0x88], rbx
xor r11, rbx
movzx ebx, byte [r8 + rdx + 3]
cmp rbx, 0x10
jae 0x4ecb4c
mov rbx, qword [rsp + rbx*8 + 0xc0]
add rbx, r15
mov r15, qword [rsp + 0x90]
add rbx, r15
xor r13, rbx
rol r13, 0x20
add r9, r13
mov qword [rsp + 0x60], r9
xor r15, r9
movzx r9d, byte [r8 + rdx + 4]
nop
cmp r9, 0x10
jae 0x4ecb3f
rol rdi, 0x28
mov r9, qword [rsp + r9*8 + 0xc0]
add rsi, r9
add rsi, rdi
mov qword [rsp + 0x70], rsi
mov r9, qword [rsp + 0x50]
xor r9, rsi
rol r9, 0x30
mov rsi, qword [rsp + 0x80]
add rsi, r9
xor rdi, rsi
mov qword [rsp + 0x58], rdi
movzx edi, byte [r8 + rdx + 5]
cmp rdi, 0x10
jae 0x4ecb32
mov qword [rsp + 0x50], r9
mov qword [rsp + 0x80], rsi
rol r10, 0x28
mov rdi, qword [rsp + rdi*8 + 0xc0]
mov rsi, qword [rsp + 0xa8]
add rsi, rdi
add rsi, r10
mov rdi, qword [rsp + 0x40]
xor rdi, rsi
rol rdi, 0x30
mov r9, qword [rsp + 0x78]
add r9, rdi
mov qword [rsp + 0x78], r9
xor r10, r9
movzx r9d, byte [r8 + rdx + 6]
nop dword [rax]
cmp r9, 0x10
jae 0x4ecb25
mov qword [rsp + 0x40], rdi
rol r11, 0x28
mov r9, qword [rsp + r9*8 + 0xc0]
mov rdi, qword [rsp + 0x38]
add rdi, r9
add rdi, r11
xor r12, rdi
rol r12, 0x30
mov qword [rsp + 0xa0], r12
mov r9, qword [rsp + 0x88]
add r9, r12
xor r11, r9
movzx r12d, byte [r8 + rdx + 7]
cmp r12, 0x10
jae 0x4ecb13
rol r15, 0x28
mov r12, qword [rsp + r12*8 + 0xc0]
add rbx, r12
add rbx, r15
mov qword [rsp + 0x48], rbx
xor r13, rbx
rol r13, 0x30
mov r12, qword [rsp + 0x60]
add r12, r13
xor r15, r12
movzx ebx, byte [r8 + rdx + 8]
cmp rbx, 0x10
jae 0x4ecb06
mov qword [rsp + 0x38], rdi
rol r10, 1
mov rbx, qword [rsp + rbx*8 + 0xc0]
mov rdi, qword [rsp + 0x70]
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]
nop dword [rax + rax]
cmp r9, 0x10
jae 0x4ecaf9
rol r11, 1
mov r9, qword [rsp + r9*8 + 0xc0]
add rsi, r9
add rsi, r11
mov r9, qword [rsp + 0x50]
xor r9, rsi
rol r9, 0x20
add r12, r9
mov qword [rsp + 0x60], r12
xor r11, r12
movzx r12d, byte [r8 + rdx + 0xa]
nop dword [rax + rax]
cmp r12, 0x10
jae 0x4ecaec
mov qword [rsp + 0x50], r9
rol r15, 1
mov r12, qword [rsp + r12*8 + 0xc0]
mov r9, qword [rsp + 0x38]
add r9, r12
add r9, r15
mov qword [rsp + 0x38], r9
mov r12, qword [rsp + 0x40]
xor r12, r9
rol r12, 0x20
mov r9, qword [rsp + 0x80]
add r9, r12
mov qword [rsp + 0x80], r9
xor r15, r9
movzx r9d, byte [r8 + rdx + 0xb]
cmp r9, 0x10
jae 0x4ecadf
mov qword [rsp + 0x40], r12
mov qword [rsp + 0x90], r15
mov r12, qword [rsp + 0x58]
rol r12, 1
mov r9, qword [rsp + r9*8 + 0xc0]
mov r15, qword [rsp + 0x48]
add r9, r15
add r9, r12
mov qword [rsp + 0x48], r9
mov r15, qword [rsp + 0xa0]
xor r15, r9
rol r15, 0x20
mov r9, qword [rsp + 0x78]
add r9, r15
mov qword [rsp + 0x78], r9
xor r12, r9
movzx r9d, byte [r8 + rdx + 0xc]
cmp r9, 0x10
jae 0x4ecad2
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]
nop dword [rax]
cmp r9, 0x10
jae 0x4ecac5
mov qword [rsp + 0x70], rbx
rol r11, 0x28
mov r9, qword [rsp + r9*8 + 0xc0]
add rsi, r9
add rsi, r11
mov r9, qword [rsp + 0x50]
xor r9, rsi
rol r9, 0x30
mov rbx, qword [rsp + 0x60]
add rbx, r9
mov qword [rsp + 0x60], rbx
xor r11, rbx
movzx ebx, byte [r8 + rdx + 0xe]
cmp rbx, 0x10
jae 0x4ecab7
mov qword [rsp + 0x88], rdi
mov qword [rsp + 0xa8], rsi
mov rsi, qword [rsp + 0x90]
rol rsi, 0x28
mov rbx, qword [rsp + rbx*8 + 0xc0]
mov rdi, qword [rsp + 0x38]
add rbx, rdi
add rbx, rsi
mov qword [rsp + 0x38], rbx
mov rdi, qword [rsp + 0x40]
xor rdi, rbx
rol rdi, 0x30
mov rbx, qword [rsp + 0x80]
add rbx, rdi
xor rsi, rbx
movzx edx, byte [r8 + rdx + 0xf]
nop dword [rax]
cmp rdx, 0x10
jb 0x4ec58c
mov rax, rdx
mov ecx, 0x10
call fcn.004584a0
mov rax, rbx
mov ecx, 0x10
nop
call fcn.004584a0
mov rax, r9
mov ecx, 0x10
call fcn.004584a0
mov rax, r9
mov ecx, 0x10
call fcn.004584a0
mov rax, r9
mov ecx, 0x10
call fcn.004584a0
mov rax, r12
mov ecx, 0x10
call fcn.004584a0
mov rax, r9
mov ecx, 0x10
call fcn.004584a0
mov rax, rbx
mov ecx, 0x10
call fcn.004584a0
mov rax, r12
mov ecx, 0x10
nop dword [rax + rax]
call fcn.004584a0
mov rax, r9
mov ecx, 0x10
call fcn.004584a0
mov rax, rdi
mov ecx, 0x10
call fcn.004584a0
mov rax, r9
mov ecx, 0x10
call fcn.004584a0
mov rax, rbx
mov ecx, 0x10
call fcn.004584a0
mov rax, rbx
mov ecx, 0x10
call fcn.004584a0
mov rax, r10
mov ecx, 0x10
call fcn.004584a0
mov rax, rsi
mov ecx, 0x10
nop dword [rax + rax]
call fcn.004584a0
mov eax, 7
mov rcx, rsi
call fcn.004584a0
mov rax, rdi
mov rcx, rsi
call fcn.00458560
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.00455e40
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.004ec2e0