Function at 0x140201c60
Capabilities:
Hash data using sha256

Disassembly:
push r15
mov eax, 0x13e8
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
call fcn.140311140
sub rsp, rax
vmovups xmmword [rsp + 0x1340], xmm6
vmovups xmmword [rsp + 0x1350], xmm7
vmovups xmmword [rsp + 0x1360], xmm8
vmovups xmmword [rsp + 0x1370], xmm9
vmovups xmmword [rsp + 0x1380], xmm10
vmovups xmmword [rsp + 0x1390], xmm11
vmovups xmmword [rsp + 0x13a0], xmm12
vmovups xmmword [rsp + 0x13b0], xmm13
vmovups xmmword [rsp + 0x13c0], xmm14
vmovups xmmword [rsp + 0x13d0], xmm15
vmovdqu xmm0, xmmword [0x140368ba0]
mov ebx, dword [rcx + 0x8c]
mov ebp, dword [rcx + 0x1c]
movsxd r13, dword [r9]
lea eax, [rdx - 0x10]
lea rsi, [rsp + 0x12f]
vmovq xmm14, r8
mov rdi, rcx
vmovd xmm11, eax
mov rax, qword [0x140386c50]
and rsi, 0xffffffffffffff80
lea rdx, [rcx + 0x40]
lea r8, [0x140368b80]
vmovq xmm9, r9
lea r15d, [rbx + 0xc]
lea r14d, [rbx + 0xd]
lea r12, [rsi + 0x400]
vpermq ymm3, ymm0, 0x44
movzx eax, byte [rax]
vmovdqu ymmword [rsp + 0x30], ymm3
mov byte [rsp + 0x57], al
lea rax, [rsi + 0x1200]
mov rcx, rax
vmovq xmm7, rax
vzeroupper
call sym.sph_sha256_transform_le
vpbroadcastd zmm0, dword [rsi + 0x1200]
lea r11d, [rbx + 6]
vmovd xmm1, r15d
vmovd xmm2, r11d
lea r11d, [rbx + 8]
lea r15d, [rbx + 0xe]
lea r10d, [rbx + 9]
vmovd xmm5, r15d
lea r15d, [rbx + 0xf]
lea edx, [rbx + 4]
vpinsrd xmm1, xmm1, r14d, 1
vpinsrd xmm5, xmm5, r15d, 1
lea r9d, [rbx + 7]
lea ecx, [rbx + 2]
lea r8d, [rbx + 5]
vpunpcklqdq xmm1, xmm1, xmm5
vpinsrd xmm2, xmm2, r9d, 1
vmovd xmm5, ebx
lea eax, [rbx + 1]
vmovd xmm3, ecx
lea ecx, [rbx + 3]
mov r14d, ebx
lea r15, [rsi + 0x1040]
vpinsrd xmm3, xmm3, ecx, 1
lea rcx, [rsi + 0x140]
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
vmovd xmm4, edx
xor edx, edx
vinserti128 ymm1, ymm0, xmm1, 1
vpinsrd xmm0, xmm4, r8d, 1
mov r8d, 0x280
vpunpcklqdq xmm2, xmm0, xmm2
vpinsrd xmm0, xmm5, 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 + 0xa0], r9
mov r8, rsi
vmovq xmm12, rax
lea rax, [rsi + 0xc00]
vmovdqu64 zmmword [rsi + 0x3c0], zmm1
vmovq rdx, xmm12
mov rcx, rax
vmovq xmm13, rax
vzeroupper
call sym.sha256_16x32_prehash_3rounds
vmovdqu64 zmm0, zmmword [0x140368bc0]
movabs rax, 0x6a09e6676a09e667
shl r13, 7
vpbroadcastq zmm1, rax
movabs rax, 0xbb67ae85bb67ae85
mov r9, qword [rsp + 0xa0]
vmovq xmm10, r13
vmovdqu64 zmmword [rsi + 0xa00], zmm1
vpbroadcastq zmm1, rax
movabs rax, 0x3c6ef3723c6ef372
vmovd xmm15, ebx
vmovdqu64 zmmword [rsi + 0xa40], zmm1
vpbroadcastq zmm1, rax
movabs rax, 0xa54ff53aa54ff53a
vmovq qword [rsp + 0x1448], xmm9
vmovdqu64 zmmword [rsi + 0xa80], zmm1
vpbroadcastq zmm1, rax
movabs rax, 0x510e527f510e527f
vmovq qword [rsp + 0xa8], xmm7
vmovdqu64 zmmword [rsi + 0xac0], zmm1
vpbroadcastq zmm1, rax
movabs rax, 0x9b05688c9b05688c
vmovq xmm8, 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 + 0xa00]
vmovdqu64 zmmword [rsi + 0xbc0], zmm1
vmovdqu64 zmmword [rsi + 0x7c0], zmm0
vmovq xmm6, rax
lea rax, [rsi + 0x1000]
mov qword [rsp + 0x58], rax
mov eax, 0x10
vpbroadcastd zmm2, eax
vmovdqu32 zmmword [rsp + 0x60], zmm2
jmp 0x1402020f4
vmovdqu32 zmm7, zmmword [rsp + 0x60]
add r14d, 0x10
vmovd eax, xmm11
vpaddd zmm0, zmm7, zmmword [rsi + 0xc0]
vmovdqu32 zmmword [rsi + 0xc0], zmm0
cmp r14d, eax
jae 0x140202250
mov rcx, qword [0x1403873f0]
vmovq rax, xmm10
add rax, qword [rcx]
movzx eax, byte [rax]
test al, al
jne 0x140202250
vmovq r9, xmm13
vmovq r8, xmm8
vmovq qword [rsp + 0x20], xmm12
mov rdx, rsi
mov rcx, r12
vzeroupper
call sym.sha256_16x32_final_rounds
mov rdx, r12
mov rcx, r12
vmovq r8, xmm6
call sym.sha256_16x32_transform_le
mov rcx, qword [rsp + 0x58]
mov r9, rdi
mov rdx, r12
vmovq r8, xmm6
call sym.sha256_16x32_transform_le_short
test eax, eax
je 0x1402020b0
mov r13d, r14d
mov dword [rsp + 0xa0], r14d
vmovq xmm9, r12
mov rbx, qword [rsp + 0x58]
mov r14, qword [rsp + 0xa8]
mov r12, qword [rsp + 0x1448]
jmp 0x140202180
add rbx, 4
inc r13d
cmp rbx, r15
je 0x140202230
mov edx, dword [rbx + 0x1c0]
mov eax, edx
bswap eax
cmp ebp, eax
jb 0x140202170
vmovd xmm7, dword [rbx + 0x180]
vmovd xmm3, dword [rbx + 0x100]
mov rcx, r14
vpinsrd xmm1, xmm3, dword [rbx + 0x140], 1
vmovd xmm4, dword [rbx + 0x80]
vmovd xmm5, dword [rbx]
vpinsrd xmm2, xmm5, dword [rbx + 0x40], 1
vpinsrd xmm0, xmm7, edx, 1
mov rdx, rdi
vpunpcklqdq xmm1, xmm1, xmm0
vpinsrd xmm0, xmm4, 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 0x140202170
cmp byte [rsp + 0x57], 0
jne 0x140202170
mov dword [rdi + 0x8c], r13d
mov r8, r12
mov rdx, r14
mov rcx, rdi
add rbx, 4
call sym.submit_solution
inc r13d
cmp rbx, r15
jne 0x140202180
mov r14d, dword [rsp + 0xa0]
vmovq r12, xmm9
jmp 0x1402020b0
vmovd ebx, xmm15
mov r10d, r14d
mov dword [rdi + 0x8c], r14d
vmovq rax, xmm14
sub r10d, ebx
mov edi, r10d
mov qword [rax], rdi
xor eax, eax
vzeroupper
vmovups xmm6, xmmword [rsp + 0x1340]
vmovups xmm7, xmmword [rsp + 0x1350]
vmovups xmm8, xmmword [rsp + 0x1360]
vmovups xmm9, xmmword [rsp + 0x1370]
vmovups xmm10, xmmword [rsp + 0x1380]
vmovups xmm11, xmmword [rsp + 0x1390]
vmovups xmm12, xmmword [rsp + 0x13a0]
vmovups xmm13, xmmword [rsp + 0x13b0]
vmovups xmm14, xmmword [rsp + 0x13c0]
vmovups xmm15, xmmword [rsp + 0x13d0]
add rsp, 0x13e8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret