Function at 0x1599a0
Capabilities:
Hash data using sha256
Hash data using sha512

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x18], rbp
mov qword [rsp + 0x20], rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0xa70
mov eax, dword [0x0016f430]
xor r12d, r12d
mov r14, rcx
mov dword [rsp + 0xa8], eax
mov eax, dword [0x0016f434]
mov dword [rsp + 0x24], r12d
mov dword [rsp + 0xac], eax
mov eax, dword [0x0016f438]
mov dword [rsp + 0x20], r12d
mov dword [rsp + 0xb0], eax
mov eax, dword [0x0016f43c]
mov dword [rsp + 0xb4], eax
mov eax, dword [0x0016f440]
mov dword [rsp + 0xb8], eax
mov eax, dword [0x0016f444]
mov dword [rsp + 0xbc], eax
mov eax, dword [0x0016f448]
mov dword [rsp + 0xc0], eax
mov eax, dword [0x0016f44c]
mov dword [rsp + 0xc4], eax
mov rax, qword [rcx]
mov qword [rsp + 0x28], rax
mov rax, qword [rcx + 8]
mov qword [rsp + 0x30], rax
mov rax, qword [rcx + 0x10]
mov qword [rsp + 0x38], rax
mov rax, qword [rcx + 0x18]
mov qword [rsp + 0x40], rax
mov rax, qword [rcx + 0x20]
mov qword [rsp + 0x48], rax
mov rax, qword [rcx + 0x28]
mov qword [rsp + 0x50], rax
mov rax, qword [rcx + 0x30]
mov qword [rsp + 0x58], rax
mov rax, qword [rcx + 0x38]
mov qword [rsp + 0x60], rax
lea eax, [r12 + 0x50]
cmp eax, 0x40
jae 0x159a8e
mov dword [rsp + 0x24], eax
jmp 0x159ad3
lea rdx, [rsp + 0x28]
lea rcx, [rsp + 0x20]
mov r8d, 1
call fcn.001536e0
lea rdx, [r14 + 0x40]
lea rcx, [rsp + 0x20]
xor r8d, r8d
call fcn.001536e0
mov rax, qword [r14 + 0x40]
add dword [rsp + 0x20], 0x40
mov qword [rsp + 0x28], rax
mov rax, qword [r14 + 0x48]
mov dword [rsp + 0x24], 0x10
mov qword [rsp + 0x30], rax
lea rdx, [rsp + 0xd0]
lea rcx, [rsp + 0x20]
call fcn.001560c0
mov eax, dword [0x0016f434]
mov r11d, dword [0x0016f430]
mov dword [rsp + 0xac], eax
mov eax, dword [0x0016f438]
lea rcx, [rsp + 0xd0]
mov dword [rsp + 0xb0], eax
mov eax, dword [0x0016f43c]
mov dword [rsp + 0xa8], r11d
mov dword [rsp + 0xb4], eax
mov eax, dword [0x0016f440]
mov dword [rsp + 0x24], r12d
mov dword [rsp + 0xb8], eax
mov eax, dword [0x0016f444]
mov dword [rsp + 0x20], r12d
mov dword [rsp + 0xbc], eax
mov eax, dword [0x0016f448]
mov dword [rsp + 0xc0], eax
mov eax, dword [0x0016f44c]
mov dword [rsp + 0xc4], eax
mov rax, qword [rcx]
mov qword [rsp + 0x28], rax
mov rax, qword [rcx + 8]
mov qword [rsp + 0x30], rax
mov rax, qword [rcx + 0x10]
mov qword [rsp + 0x38], rax
mov rax, qword [rcx + 0x18]
mov qword [rsp + 0x40], rax
lea eax, [r12 + 0x20]
cmp eax, 0x40
jae 0x159b94
mov dword [rsp + 0x24], eax
jmp 0x159bc8
lea rdx, [rsp + 0x28]
lea rcx, [rsp + 0x20]
mov r8d, 1
call fcn.001536e0
lea rdx, [rsp + 0xf0]
lea rcx, [rsp + 0x20]
xor r8d, r8d
call fcn.001536e0
add dword [rsp + 0x20], 0x40
mov dword [rsp + 0x24], r12d
lea rdx, [rsp + 0xd0]
lea rcx, [rsp + 0x20]
call fcn.001560c0
mov rax, qword gs:[0x58]
mov ebx, 8
mov r13, qword [rax]
cmp qword [rbx + r13], r12
jne 0x159bff
mov ecx, 0x20000000
call fcn.0015b01c
mov qword [rbx + r13], rax
mov r13, qword [rbx + r13]
xor edx, edx
mov r8d, 0x20000000
mov rcx, r13
call fcn.00161460
lea rcx, [rsp + 0xd0]
lea r11, [rsp + 0xf4]
mov eax, dword [rcx]
mov esi, r12d
mov dword [r11], eax
mov eax, dword [rcx + 4]
mov dword [r11 + 4], eax
mov eax, dword [rcx + 8]
mov dword [r11 + 8], eax
mov eax, dword [rcx + 0xc]
mov dword [r11 + 0xc], eax
mov eax, dword [rcx + 0x10]
mov dword [r11 + 0x10], eax
mov eax, dword [rcx + 0x14]
mov dword [r11 + 0x14], eax
mov eax, dword [rcx + 0x18]
mov dword [r11 + 0x18], eax
mov eax, dword [rcx + 0x1c]
mov dword [r11 + 0x1c], eax
nop dword [rax]
mov eax, dword [0x001912e8]
cmp dword [r14 + 0x5c], eax
jne 0x159ddc
mov ebp, esi
lea rbx, [rsp + 0x270]
mov edi, 0x20
nop
mov rax, qword [0x0016f490]
lea rdx, [rsp + 0xf0]
lea rcx, [rsp + 0x120]
mov qword [rsp + 0x228], rax
mov rax, qword [0x0016f498]
mov r9, rbx
mov qword [rsp + 0x230], rax
mov rax, qword [0x0016f4a0]
mov r8d, 0x24
mov qword [rsp + 0x238], rax
mov rax, qword [0x0016f4a8]
mov dword [rsp + 0x124], r12d
mov qword [rsp + 0x240], rax
mov rax, qword [0x0016f4b0]
mov dword [rsp + 0x120], r12d
mov qword [rsp + 0x248], rax
mov rax, qword [0x0016f4b8]
mov dword [rsp + 0xf0], ebp
mov qword [rsp + 0x250], rax
mov rax, qword [0x0016f4c0]
mov qword [rsp + 0x258], rax
mov rax, qword [0x0016f4c8]
mov qword [rsp + 0x260], rax
call fcn.00158580
add ebp, 8
add rbx, 0x40
sub rdi, 1
jne 0x159c80
mov dword [rsp + 0xaa8], ebp
lea r15d, [rdi + 0x20]
lea rbp, [rsp + 0x270]
mov r12d, 8
nop word [rax + rax]
mov rdi, qword [rbp]
shr rdi, 0xe
mov rbx, rdi
and edi, 0x7ffffff
mov r8d, dword [r13 + rdi*4]
shr rbx, 0x12
and ebx, 0xf8000000
test r8d, r8d
je 0x159dab
mov eax, r8d
and eax, 0xf8000000
cmp eax, ebx
jne 0x159dab
lea rdx, [rsp + 0xd0]
and r8d, 0x7ffffff
mov r9d, esi
mov rcx, r14
call fcn.001591d0
mov eax, esi
add rbp, 8
inc esi
or eax, ebx
sub r12, 1
mov dword [r13 + rdi*4], eax
jne 0x159d60
sub r15, 1
jne 0x159d51
mov esi, dword [rsp + 0xaa8]
mov r12d, r15d
cmp esi, 0x4000000
jb 0x159c60
lea r11, [rsp + 0xa70]
mov rbx, qword [r11 + 0x30]
mov rbp, qword [r11 + 0x40]
mov rsi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret