Function at 0x539440
Capabilities:
Hash data using sha512

Disassembly:
lea r12, [rsp - 0xc0]
cmp r12, qword [r14 + 0x10]
jbe 0x539c4b
push rbp
mov rbp, rsp
sub rsp, 0x138
mov qword [rsp + 0x148], rax
mov qword [rsp + 0x150], rbx
mov qword [rsp + 0x158], rcx
mov qword [rsp + 0x170], r8
mov qword [rsp + 0x168], rsi
mov qword [rsp + 0x160], rdi
mov rdx, rdi
lea rdi, [rsp + 0x88]
nop dword [rax + rax]
mov qword [rsp - 0x10], rbp
lea rbp, [rsp - 0x10]
call fcn.0046c6a2
mov rbp, qword [rbp]
mov r9, qword [rbx]
mov r10, qword [rbx + 8]
xor edi, edi
nop dword [rax]
jmp 0x539564
mov qword [rsp + 0x58], r13
mov qword [rsp + 0x60], r12
mov rdx, r15
mov r15, qword [rsp + 0x80]
mov r13, qword [rsp + 0x18]
xor r15, r13
mov r13, qword [rsp + 0x148]
xor qword [r13], r15
mov r15, qword [rsp + 0x78]
mov r12, qword [rsp + 0x10]
xor r15, r12
xor qword [r13 + 8], r15
mov r12, qword [rsp + 0x40]
mov r15, qword [rsp + 0x70]
xor r12, r15
xor qword [r13 + 0x10], r12
mov r12, qword [rsp + 0x38]
xor r12, r11
xor qword [r13 + 0x18], r12
mov r11, qword [rsp + 0x30]
mov r12, qword [rsp + 0x60]
xor r11, r12
xor qword [r13 + 0x20], r11
mov r11, qword [rsp + 0x28]
mov r12, qword [rsp + 0x58]
xor r11, r12
xor qword [r13 + 0x28], r11
xor rbx, rdx
xor qword [r13 + 0x30], rbx
mov r11, qword [rsp + 0x20]
xor r11, rax
xor qword [r13 + 0x38], r11
mov rdx, qword [rsp + 0x160]
mov rax, r13
mov rbx, qword [rsp + 0x150]
cmp rsi, rdi
jle 0x539653
sub r9, 0xffffffffffffff80
mov qword [rsp + 0x120], r9
lea r11, [r10 + 1]
mov r12, qword [0x008daa20]
mov r13, qword [0x008daa28]
mov r15, qword [0x008daa30]
mov rbx, qword [rax]
mov qword [rsp + 0x80], rbx
mov rbx, qword [rax + 8]
mov qword [rsp + 0x78], rbx
mov rbx, qword [rax + 0x10]
mov qword [rsp + 0x40], rbx
mov rbx, qword [rax + 0x18]
mov qword [rsp + 0x38], rbx
mov rbx, qword [rax + 0x20]
mov qword [rsp + 0x30], rbx
mov rbx, qword [rax + 0x28]
mov qword [rsp + 0x28], rbx
mov rbx, qword [rax + 0x30]
mov rax, qword [rax + 0x38]
mov qword [rsp + 0x20], rax
mov rax, qword [0x008daa00]
mov qword [rsp + 0x18], rax
mov rax, qword [0x008daa08]
mov qword [rsp + 0x10], rax
mov rax, qword [0x008daa10]
mov qword [rsp + 0x70], rax
mov rax, qword [0x008daa18]
mov qword [rsp + 0x68], rax
mov rax, qword [0x008daa38]
xor r12, r9
xor r15, rcx
cmp r9, 0x80
cmovb r10, r11
xor r13, r10
xor r11d, r11d
jmp 0x539686
mov qword [rsp + 0x118], r10
mov r11, qword [rsp + 0x68]
mov qword [rsp + 0x128], rax
xor eax, eax
mov qword [rsp + 0x108], rax
mov rax, qword [rsp + 0x128]
jmp 0x53977c
mov qword [rbx], r9
mov qword [rbx + 8], r10
add rsp, 0x138
pop rbp
ret
mov rsi, qword [rdx + rdi]
mov qword [rsp + r11*8 + 0x88], rsi
inc r11
lea rdi, [r9 + 8]
mov rsi, qword [rsp + 0x168]
mov r9, qword [rsp + 0x120]
mov qword [rsp + 0x110], rdi
cmp r11, 0x10
jge 0x539627
cmp rsi, rdi
jb 0x539c3f
sub rsi, rdi
sub rdi, r8
sar rdi, 0x3f
mov r9, qword [rsp + 0x110]
and rdi, r9
cmp rsi, 7
ja 0x539663
jmp 0x539c32
mov qword [rsp + 0x130], rax
rol r10, 0x28
mov rdx, qword [rsp + rdx*8 + 0x88]
mov r8, qword [rsp + 0x38]
add rdx, r8
add rdx, r10
mov r8, qword [rsp + 0x50]
xor r8, rdx
rol r8, 0x30
add r11, r8
xor r10, r11
mov rax, qword [rsp + 0x108]
inc rax
rol r9, 1
rol rbx, 1
rol r15, 1
rol r10, 1
mov qword [rsp + 0x108], rax
mov qword [rsp + 0x30], r10
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x28], r9
mov qword [rsp + 0x10], r11
mov qword [rsp + 0x70], r13
mov qword [rsp + 0x38], rdx
mov qword [rsp + 0x20], r15
mov rax, qword [rsp + 0x130]
mov r11, r12
mov rdx, qword [rsp + 0x160]
mov rsi, qword [rsp + 0x168]
mov r9, qword [rsp + 0x120]
mov r10, qword [rsp + 0x118]
mov r12, rcx
mov r13, rdi
mov r15, r8
mov rcx, qword [rsp + 0x158]
mov rdi, qword [rsp + 0x110]
mov r8, qword [rsp + 0x170]
mov rdx, qword [rsp + 0x108]
cmp rdx, 0xc
jge 0x5394c5
shl rdx, 4
lea r8, [0x008db900]
movzx ecx, byte [r8 + rdx]
nop
cmp rcx, 0x10
jae 0x539c25
mov rcx, qword [rsp + rcx*8 + 0x88]
mov rsi, qword [rsp + 0x80]
add rsi, rcx
mov rdi, qword [rsp + 0x30]
add rsi, rdi
xor r12, rsi
rol r12, 0x20
mov r9, qword [rsp + 0x18]
add r9, r12
movzx ecx, byte [r8 + rdx + 1]
xor rdi, r9
nop dword [rax]
cmp rcx, 0x10
jae 0x539c16
mov rcx, qword [rsp + rcx*8 + 0x88]
mov r10, qword [rsp + 0x78]
add r10, rcx
mov rcx, r9
mov r9, qword [rsp + 0x28]
add r10, r9
mov qword [rsp + 0x78], r10
xor r13, r10
rol r13, 0x20
mov qword [rsp + 0x58], r13
mov r10, qword [rsp + 0x10]
add r10, r13
movzx r13d, byte [r8 + rdx + 2]
xor r9, r10
cmp r13, 0x10
jae 0x539c09
mov qword [rsp + 0x10], r10
mov r13, qword [rsp + r13*8 + 0x88]
mov r10, qword [rsp + 0x40]
add r10, r13
add r10, rbx
xor r15, r10
rol r15, 0x20
mov qword [rsp + 0x50], r15
mov r13, qword [rsp + 0x70]
add r13, r15
movzx r15d, byte [r8 + rdx + 3]
xor rbx, r13
cmp r15, 0x10
jae 0x539bfc
mov qword [rsp + 0x70], r13
mov r15, qword [rsp + r15*8 + 0x88]
mov r13, qword [rsp + 0x38]
add r13, r15
mov r15, qword [rsp + 0x20]
add r13, r15
xor rax, r13
rol rax, 0x20
mov qword [rsp + 0x48], rax
add r11, rax
movzx eax, byte [r8 + rdx + 4]
xor r15, r11
cmp rax, 0x10
jae 0x539bf2
rol rdi, 0x28
mov rax, qword [rsp + rax*8 + 0x88]
add rsi, rax
add rsi, rdi
xor r12, rsi
rol r12, 0x30
lea rax, [rcx + r12]
movzx ecx, byte [r8 + rdx + 5]
xor rdi, rax
cmp rcx, 0x10
jae 0x539be5
mov qword [rsp + 0x18], rax
mov qword [rsp + 0x30], rdi
rol r9, 0x28
mov rcx, qword [rsp + rcx*8 + 0x88]
mov rdi, qword [rsp + 0x78]
add rdi, rcx
add rdi, r9
mov qword [rsp + 0x78], rdi
mov rcx, r12
mov r12, qword [rsp + 0x58]
xor r12, rdi
rol r12, 0x30
mov rdi, qword [rsp + 0x10]
add rdi, r12
movzx eax, byte [r8 + rdx + 6]
xor r9, rdi
cmp rax, 0x10
jae 0x539bd9
mov qword [rsp + 0x58], r12
mov qword [rsp + 0x10], rdi
rol rbx, 0x28
mov rax, qword [rsp + rax*8 + 0x88]
add r10, rax
add r10, rbx
mov rdi, qword [rsp + 0x50]
xor rdi, r10
rol rdi, 0x30
mov r12, qword [rsp + 0x70]
add r12, rdi
movzx eax, byte [r8 + rdx + 7]
xor rbx, r12
cmp rax, 0x10
jae 0x539bcf
mov qword [rsp + 0x50], rdi
rol r15, 0x28
mov rax, qword [rsp + rax*8 + 0x88]
add r13, rax
add r13, r15
mov rdi, qword [rsp + 0x48]
xor rdi, r13
rol rdi, 0x30
add r11, rdi
movzx eax, byte [r8 + rdx + 8]
xor r15, r11
cmp rax, 0x10
jae 0x539bc5
rol r9, 1
mov rax, qword [rsp + rax*8 + 0x88]
add rsi, rax
add rsi, r9
xor rdi, rsi
rol rdi, 0x20
add r12, rdi
movzx eax, byte [r8 + rdx + 9]
xor r9, r12
cmp rax, 0x10
jae 0x539bb6
mov qword [rsp + 0x70], r12
rol rbx, 1
mov rax, qword [rsp + rax*8 + 0x88]
mov r12, qword [rsp + 0x78]
add r12, rax
add r12, rbx
xor rcx, r12
rol rcx, 0x20
add r11, rcx
movzx eax, byte [r8 + rdx + 0xa]
xor rbx, r11
cmp rax, 0x10
jae 0x539bac
rol r15, 1
mov rax, qword [rsp + rax*8 + 0x88]
add r10, rax
add r10, r15
mov qword [rsp + 0x40], r10
mov rax, r11
mov r11, qword [rsp + 0x58]
xor r11, r10
rol r11, 0x20
mov qword [rsp + 0x58], r11
mov r10, qword [rsp + 0x18]
add r10, r11
movzx r11d, byte [r8 + rdx + 0xb]
xor r15, r10
cmp r11, 0x10
jae 0x539b9f
mov qword [rsp + 0x18], r10
mov r10, qword [rsp + 0x30]
rol r10, 1
mov r11, qword [rsp + r11*8 + 0x88]
add r11, r13
add r11, r10
mov qword [rsp + 0x38], r11
mov r13, qword [rsp + 0x50]
xor r13, r11
rol r13, 0x20
mov qword [rsp + 0x50], r13
mov r11, qword [rsp + 0x10]
add r11, r13
movzx r13d, byte [r8 + rdx + 0xc]
xor r10, r11
nop dword [rax + rax]
cmp r13, 0x10
jae 0x539b92
rol r9, 0x28
mov r13, qword [rsp + r13*8 + 0x88]
add rsi, r13
add rsi, r9
mov qword [rsp + 0x80], rsi
xor rdi, rsi
rol rdi, 0x30
mov r13, qword [rsp + 0x70]
add r13, rdi
movzx esi, byte [r8 + rdx + 0xd]
xor r9, r13
nop dword [rax]
cmp rsi, 0x10
jae 0x539b85
rol rbx, 0x28
mov rsi, qword [rsp + rsi*8 + 0x88]
add rsi, r12
add rsi, rbx
xor rcx, rsi
rol rcx, 0x30
lea r12, [rax + rcx]
movzx eax, byte [r8 + rdx + 0xe]
xor rbx, r12
cmp rax, 0x10
jae 0x539b77
mov qword [rsp + 0x78], rsi
rol r15, 0x28
mov rax, qword [rsp + rax*8 + 0x88]
mov rsi, qword [rsp + 0x40]
add rsi, rax
add rsi, r15
mov qword [rsp + 0x40], rsi
mov rax, rdi
mov rdi, qword [rsp + 0x58]
xor rdi, rsi
rol rdi, 0x30
mov rsi, qword [rsp + 0x18]
add rsi, rdi
movzx edx, byte [r8 + rdx + 0xf]
xor r15, rsi
nop word [rax + rax]
cmp rdx, 0x10
jb 0x5396bd
mov rax, rdx
mov ecx, 0x10
call sym.runtime.panicIndex
mov ecx, 0x10
nop dword [rax]
call sym.runtime.panicIndex
mov rax, rsi
mov ecx, 0x10
call sym.runtime.panicIndex
mov rax, r13
mov ecx, 0x10
call sym.runtime.panicIndex
mov rax, r11
mov ecx, 0x10
call sym.runtime.panicIndex
mov ecx, 0x10
call sym.runtime.panicIndex
mov ecx, 0x10
nop dword [rax + rax]
call sym.runtime.panicIndex
mov ecx, 0x10
call sym.runtime.panicIndex
mov ecx, 0x10
call sym.runtime.panicIndex
mov ecx, 0x10
nop
call sym.runtime.panicIndex
mov rax, rcx
mov ecx, 0x10
call sym.runtime.panicIndex
mov ecx, 0x10
call sym.runtime.panicIndex
mov rax, r15
mov ecx, 0x10
call sym.runtime.panicIndex
mov rax, r13
mov ecx, 0x10
call sym.runtime.panicIndex
mov rax, rcx
mov ecx, 0x10
nop
call sym.runtime.panicIndex
mov rax, rcx
mov ecx, 0x10
call sym.runtime.panicIndex
mov eax, 7
mov rcx, rsi
call sym.runtime.panicIndex
mov rax, rdi
mov rcx, rsi
call sym.runtime.panicSliceB
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
call sym.runtime.morestack_noctxt.abi0
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 sym.golang.org_x_crypto_blake2b.hashBlocksGeneric