Function at 0x1402015e0
Capabilities:
Hash data using sha256

Disassembly:
push r15
mov eax, 0x13f8
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
call fcn.140311140
sub rsp, rax
vmovups xmmword [rsp + 0x1350], xmm6
vmovups xmmword [rsp + 0x1360], xmm7
vmovups xmmword [rsp + 0x1370], xmm8
vmovups xmmword [rsp + 0x1380], xmm9
vmovups xmmword [rsp + 0x1390], xmm10
vmovups xmmword [rsp + 0x13a0], xmm11
vmovups xmmword [rsp + 0x13b0], xmm12
vmovups xmmword [rsp + 0x13c0], xmm13
vmovups xmmword [rsp + 0x13d0], xmm14
vmovups xmmword [rsp + 0x13e0], xmm15
vmovdqu xmm0, xmmword [0x140368b20]
mov ebx, dword [rcx + 0x8c]
movsxd rbp, dword [r9]
lea eax, [rdx - 0x10]
lea rsi, [rsp + 0x13f]
vmovq xmm8, r8
mov rdi, rcx
vmovd xmm10, eax
mov rax, qword [0x140386c50]
and rsi, 0xffffffffffffff80
lea rdx, [rcx + 0x40]
lea r15, [rsi + 0x1200]
lea r8, [0x140368b00]
vmovq xmm7, r9
lea r14d, [rbx + 0xc]
mov rcx, r15
lea r12d, [rbx + 0xd]
vpermq ymm6, ymm0, 0x44
vmovdqu ymmword [rsp + 0x90], ymm6
movzx r13d, byte [rax]
vzeroupper
call sym.sph_sha256_transform_le
lea r11d, [rbx + 8]
lea r10d, [rbx + 6]
vpbroadcastd zmm0, dword [rsi + 0x1200]
vmovd xmm1, r14d
lea r14d, [rbx + 0xe]
vmovd xmm2, r10d
vmovd xmm5, r14d
lea r10d, [rbx + 9]
lea r14d, [rbx + 0xf]
lea edx, [rbx + 4]
vpinsrd xmm5, xmm5, r14d, 1
vpinsrd xmm1, xmm1, r12d, 1
lea r9d, [rbx + 7]
vmovd xmm6, edx
vpunpcklqdq xmm1, xmm1, xmm5
lea ecx, [rbx + 2]
lea r8d, [rbx + 5]
vpinsrd xmm2, xmm2, r9d, 1
lea eax, [rbx + 1]
vmovd xmm3, ecx
lea ecx, [rbx + 3]
xor edx, edx
vpinsrd xmm3, xmm3, ecx, 1
lea rcx, [rsi + 0x140]
mov r12d, ebx
vmovdqu32 zmmword [rsi + 0xe00], zmm0
vpbroadcastd zmm0, dword [rsi + 0x1204]
vmovdqu32 zmmword [rsi + 0xe40], zmm0
vpbroadcastd zmm0, dword [rsi + 0x1208]
vmovdqu32 zmmword [rsi + 0xe80], zmm0
vpbroadcastd zmm0, dword [rsi + 0x120c]
vmovdqu32 zmmword [rsi + 0xec0], zmm0
vpbroadcastd zmm0, dword [rsi + 0x1210]
vmovdqu32 zmmword [rsi + 0xf00], zmm0
vpbroadcastd zmm0, dword [rsi + 0x1214]
vmovdqu32 zmmword [rsi + 0xf40], zmm0
vpbroadcastd zmm0, dword [rsi + 0x1218]
vmovdqu32 zmmword [rsi + 0xf80], zmm0
vpbroadcastd zmm0, dword [rsi + 0x121c]
vmovdqu32 zmmword [rsi + 0xfc0], zmm0
vpbroadcastd zmm0, dword [rdi + 0x80]
vmovdqu32 zmmword [rsi], zmm0
vpbroadcastd zmm0, dword [rdi + 0x84]
vmovdqu32 zmmword [rsi + 0x40], zmm0
vpbroadcastd zmm0, dword [rdi + 0x88]
vmovdqu32 zmmword [rsi + 0x80], zmm0
vmovd xmm0, r11d
lea r11d, [rbx + 0xa]
vmovd xmm4, r11d
lea r11d, [rbx + 0xb]
vpinsrd xmm0, xmm0, r10d, 1
vpinsrd xmm4, xmm4, r11d, 1
vpunpcklqdq xmm0, xmm0, xmm4
vinserti128 ymm1, ymm0, xmm1, 1
vpinsrd xmm0, xmm6, r8d, 1
vmovd xmm6, ebx
mov r8d, 0x280
vpunpcklqdq xmm2, xmm0, xmm2
vpinsrd xmm0, xmm6, eax, 1
movabs rax, 0x8000000080000000
vpunpcklqdq xmm0, xmm0, xmm3
vinserti128 ymm0, ymm0, xmm2, 1
vinserti64x4 zmm0, zmm0, ymm1, 1
vmovdqu32 zmmword [rsi + 0xc0], zmm0
vpbroadcastq zmm0, rax
vmovdqu64 zmmword [rsi + 0x100], zmm0
vzeroupper
call sym.memset
movabs rax, 0x28000000280
lea r9, [rsi + 0xe00]
vpbroadcastq zmm1, rax
lea rax, [rsi + 0x800]
mov qword [rsp + 0x30], r9
mov r8, rsi
vmovq xmm11, rax
lea rax, [rsi + 0xc00]
vmovdqu64 zmmword [rsi + 0x3c0], zmm1
vmovq rdx, xmm11
mov rcx, rax
vmovq xmm14, rax
vzeroupper
call sym.sha256_16x32_prehash_3rounds
vmovdqu64 zmm0, zmmword [0x140368b40]
movabs rax, 0x6a09e6676a09e667
shl rbp, 7
vpbroadcastq zmm1, rax
movabs rax, 0xbb67ae85bb67ae85
mov r9, qword [rsp + 0x30]
vmovq qword [rsp + 0x1458], xmm7
vmovdqu64 zmmword [rsi + 0xa00], zmm1
vpbroadcastq zmm1, rax
movabs rax, 0x3c6ef3723c6ef372
vmovq xmm9, rbp
vmovdqu64 zmmword [rsi + 0xa40], zmm1
vpbroadcastq zmm1, rax
movabs rax, 0xa54ff53aa54ff53a
vmovd xmm15, ebx
vmovdqu64 zmmword [rsi + 0xa80], zmm1
vpbroadcastq zmm1, rax
movabs rax, 0x510e527f510e527f
vmovdqu64 zmmword [rsi + 0xac0], zmm1
vpbroadcastq zmm1, rax
movabs rax, 0x9b05688c9b05688c
vmovq xmm7, r9
vmovdqu64 zmmword [rsi + 0xb00], zmm1
vpbroadcastq zmm1, rax
movabs rax, 0x1f83d9ab1f83d9ab
vmovdqu64 zmmword [rsi + 0xb40], zmm1
vpbroadcastq zmm1, rax
movabs rax, 0x5be0cd195be0cd19
vmovdqu64 zmmword [rsi + 0xb80], zmm1
vmovdqu64 zmmword [rsi + 0x600], zmm0
vpxor xmm0, xmm0, xmm0
vpbroadcastq zmm1, rax
movabs rax, 0x10000000100
vmovdqu8 zmmword [rsi + 0x640], zmm0
vmovdqu8 zmmword [rsi + 0x680], zmm0
vmovdqu8 zmmword [rsi + 0x6c0], zmm0
vmovdqu8 zmmword [rsi + 0x700], zmm0
vmovdqu8 zmmword [rsi + 0x740], zmm0
vmovdqu8 zmmword [rsi + 0x780], zmm0
vpbroadcastq zmm0, rax
lea rax, [rsi + 0x400]
vmovdqu64 zmmword [rsi + 0xbc0], zmm1
vmovdqu64 zmmword [rsi + 0x7c0], zmm0
vmovq xmm12, rax
lea rax, [rsi + 0xa00]
vmovq xmm13, rax
lea rax, [rsi + 0x1000]
vmovq xmm6, rax
mov eax, 0x10
vpbroadcastd zmm2, eax
vmovdqu32 zmmword [rsp + 0x50], zmm2
jmp 0x140201a54
vmovdqu32 zmm5, zmmword [rsp + 0x50]
add r12d, 0x10
vmovd eax, xmm10
vpaddd zmm0, zmm5, zmmword [rsi + 0xc0]
vmovdqu32 zmmword [rsi + 0xc0], zmm0
cmp r12d, eax
jae 0x140201b80
mov rdx, qword [0x1403873f0]
vmovq rax, xmm9
add rax, qword [rdx]
movzx eax, byte [rax]
test al, al
jne 0x140201b80
vmovq r9, xmm14
vmovq r8, xmm7
vmovq rcx, xmm12
vmovq qword [rsp + 0x20], xmm11
mov rdx, rsi
vzeroupper
call sym.sha256_16x32_final_rounds
mov r9, rdi
vmovq r8, xmm13
vmovq rdx, xmm12
vmovq rcx, xmm6
call sym.sha256_16x32_transform_le_short
test eax, eax
je 0x140201a10
vmovdqu8 ymm2, ymmword [rsp + 0x90]
mov ebp, r12d
mov dword [rsp + 0xbc], r12d
mov r12, qword [rsp + 0x1458]
vmovq rbx, xmm6
lea r14, [rsi + 0x1040]
vmovdqu8 ymmword [rsp + 0x30], ymm2
nop word cs:[rax + rax]
nop
vmovd xmm3, dword [rbx + 0x180]
mov rdx, rdi
mov rcx, r15
vmovd xmm4, dword [rbx + 0x100]
vpinsrd xmm0, xmm3, dword [rbx + 0x1c0], 1
vpinsrd xmm1, xmm4, dword [rbx + 0x140], 1
vmovd xmm5, dword [rbx + 0x80]
vmovd xmm3, dword [rbx]
vpinsrd xmm2, xmm3, dword [rbx + 0x40], 1
vpunpcklqdq xmm1, xmm1, xmm0
vpinsrd xmm0, xmm5, dword [rbx + 0xc0], 1
vpunpcklqdq xmm0, xmm2, xmm0
vinserti128 ymm0, ymm0, xmm1, 1
vpshufb ymm0, ymm0, ymmword [rsp + 0x30]
vmovdqu8 ymmword [rsi + 0x1200], ymm0
vzeroupper
call sym.valid_hash
test al, al
je 0x140201b5b
test r13b, r13b
jne 0x140201b5b
mov dword [rdi + 0x8c], ebp
mov r8, r12
mov rdx, r15
mov rcx, rdi
call sym.submit_solution
add rbx, 4
inc ebp
cmp rbx, r14
jne 0x140201ad0
mov r12d, dword [rsp + 0xbc]
jmp 0x140201a10
vmovd ebx, xmm15
mov dword [rdi + 0x8c], r12d
vmovq rax, xmm8
sub r12d, ebx
mov ecx, r12d
mov qword [rax], rcx
xor eax, eax
vzeroupper
vmovups xmm6, xmmword [rsp + 0x1350]
vmovups xmm7, xmmword [rsp + 0x1360]
vmovups xmm8, xmmword [rsp + 0x1370]
vmovups xmm9, xmmword [rsp + 0x1380]
vmovups xmm10, xmmword [rsp + 0x1390]
vmovups xmm11, xmmword [rsp + 0x13a0]
vmovups xmm12, xmmword [rsp + 0x13b0]
vmovups xmm13, xmmword [rsp + 0x13c0]
vmovups xmm14, xmmword [rsp + 0x13d0]
vmovups xmm15, xmmword [rsp + 0x13e0]
add rsp, 0x13f8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret