Function at 0x14019dc60
Capabilities:
Hash data using sha256

Disassembly:
push r15
mov eax, 0x1368
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
call fcn.140311140
sub rsp, rax
vmovups xmmword [rsp + 0x12e0], xmm6
vmovups xmmword [rsp + 0x12f0], xmm7
vmovups xmmword [rsp + 0x1300], xmm8
vmovups xmmword [rsp + 0x1310], xmm9
vmovups xmmword [rsp + 0x1320], xmm10
vmovups xmmword [rsp + 0x1330], xmm11
vmovups xmmword [rsp + 0x1340], xmm12
vmovups xmmword [rsp + 0x1350], xmm13
vmovdqu ymm0, ymmword [0x1403676a0]
movsxd rsi, dword [r9]
mov rdi, rcx
mov ecx, edx
lea rbx, [rsp + 0x2cf]
vmovq xmm10, r8
lea eax, [rcx - 0x10]
mov rcx, qword [0x140386c50]
and rbx, 0xffffffffffffff80
mov r15d, dword [rdi + 0x8c]
vmovq xmm12, r9
lea rdx, [rdi + 0x40]
vmovd xmm11, eax
vmovdqu ymmword [rbx + 0x1000], ymm0
movzx r13d, byte [rcx]
test r13b, r13b
je 0x14019dd18
mov dword [rdi + 0x1c], 0xff
xor r9d, r9d
lea rcx, [rbx + 0x1000]
mov r8d, 0x200
mov dword [rsp + 0x20], 0xe
vzeroupper
call sym.blake256_transform_le
lea eax, [r15 + 2]
lea r11d, [r15 + 9]
vpbroadcastd zmm0, dword [rbx + 0x1000]
vmovd xmm3, eax
lea eax, [r15 + 6]
lea ebp, [r15 + 0xb]
vmovd xmm2, eax
lea eax, [r15 + 8]
lea r12d, [r15 + 0xd]
lea r14d, [r15 + 0xf]
lea ecx, [r15 + 4]
lea r9d, [r15 + 5]
lea r10d, [r15 + 7]
lea edx, [r15 + 1]
vmovd xmm6, ecx
lea r8d, [r15 + 3]
vmovd xmm7, r15d
vpinsrd xmm2, xmm2, r10d, 1
vpinsrd xmm3, xmm3, r8d, 1
mov r8, rbx
vmovdqu32 zmmword [rbx + 0x800], zmm0
vpbroadcastd zmm0, dword [rbx + 0x1004]
vmovdqu32 zmmword [rbx + 0x840], zmm0
vpbroadcastd zmm0, dword [rbx + 0x1008]
vmovdqu32 zmmword [rbx + 0x880], zmm0
vpbroadcastd zmm0, dword [rbx + 0x100c]
vmovdqu32 zmmword [rbx + 0x8c0], zmm0
vpbroadcastd zmm0, dword [rbx + 0x1010]
vmovdqu32 zmmword [rbx + 0x900], zmm0
vpbroadcastd zmm0, dword [rbx + 0x1014]
vmovdqu32 zmmword [rbx + 0x940], zmm0
vpbroadcastd zmm0, dword [rbx + 0x1018]
vmovdqu32 zmmword [rbx + 0x980], zmm0
vpbroadcastd zmm0, dword [rbx + 0x101c]
vmovdqu32 zmmword [rbx + 0x9c0], zmm0
vpbroadcastd zmm0, dword [rdi + 0x80]
vmovdqu32 zmmword [rbx], zmm0
vpbroadcastd zmm0, dword [rdi + 0x84]
vmovdqu32 zmmword [rbx + 0x40], zmm0
vpbroadcastd zmm0, dword [rdi + 0x88]
vmovdqu32 zmmword [rbx + 0x80], zmm0
vmovd xmm0, eax
lea eax, [r15 + 0xa]
vmovd xmm4, eax
lea eax, [r15 + 0xc]
vpinsrd xmm0, xmm0, r11d, 1
vmovd xmm1, eax
lea eax, [r15 + 0xe]
vpinsrd xmm4, xmm4, ebp, 1
lea rbp, [rbx + 0xe00]
vmovd xmm5, eax
vpinsrd xmm1, xmm1, r12d, 1
vpunpcklqdq xmm0, xmm0, xmm4
lea rax, [rbx + 0x800]
vpinsrd xmm5, xmm5, r14d, 1
vmovq xmm8, rax
lea rax, [rbx + 0x400]
mov r12d, r15d
vpunpcklqdq xmm1, xmm1, xmm5
mov rcx, rax
lea r14, [rbx + 0xa00]
vinserti128 ymm1, ymm0, xmm1, 1
vpinsrd xmm0, xmm6, r9d, 1
vpunpcklqdq xmm2, xmm0, xmm2
vpinsrd xmm0, xmm7, edx, 1
vmovq rdx, xmm8
vmovq xmm7, rax
vpunpcklqdq xmm0, xmm0, xmm3
vinserti128 ymm0, ymm0, xmm2, 1
vinserti64x4 zmm0, zmm0, ymm1, 1
vmovdqu32 zmmword [rbx + 0xc0], zmm0
vzeroupper
call sym.blake256_16way_round0_prehash_le
lea rax, [0x140322200]
mov edx, 0x10
shl rsi, 7
vmovq xmm9, rax
vpbroadcastd zmm5, edx
lea rax, [rbx + 0xc00]
vmovd xmm13, r15d
vmovq xmm6, rsi
mov qword [rsp + 0x208], rax
vmovdqu32 zmmword [rsp + 0x210], zmm5
mov r15d, r13d
nop
vmovq r8, xmm8
vmovq rdx, xmm7
mov r9, rbx
mov rcx, r14
mov dword [rsp + 0x20], 0xe
vzeroupper
call sym.blake256_16way_final_rounds_le
vmovdqu xmm0, xmmword [rbx + 0xa00]
vmovdqu xmm1, xmmword [rbx + 0xa80]
vmovq rcx, xmm9
vpunpckldq xmm2, xmm0, xmmword [rbx + 0xa40]
vpunpckldq xmm3, xmm1, xmmword [rbx + 0xac0]
vpunpckhdq xmm0, xmm0, xmmword [rbx + 0xa40]
vpunpckhdq xmm1, xmm1, xmmword [rbx + 0xac0]
vpunpcklqdq xmm5, xmm2, xmm3
vpunpckhqdq xmm3, xmm2, xmm3
vmovdqu xmm2, xmmword [rbx + 0xa90]
vpunpcklqdq xmm4, xmm0, xmm1
vpunpckhqdq xmm1, xmm0, xmm1
vmovdqu xmm0, xmmword [rbx + 0xa10]
vmovdqu xmmword [rbx + 0xfc0], xmm3
vmovdqu xmmword [rbx + 0xfa0], xmm4
vpunpckldq xmm3, xmm0, xmmword [rbx + 0xa50]
vmovdqu xmmword [rbx + 0xf80], xmm1
vmovdqu xmmword [rbx + 0xfe0], xmm5
vpunpckldq xmm4, xmm2, xmmword [rbx + 0xad0]
vpunpckhdq xmm0, xmm0, xmmword [rbx + 0xa50]
vpunpckhdq xmm1, xmm2, xmmword [rbx + 0xad0]
vmovdqu xmm2, xmmword [rbx + 0xaa0]
vpunpcklqdq xmm5, xmm3, xmm4
vpunpckhqdq xmm3, xmm3, xmm4
vpunpcklqdq xmm4, xmm0, xmm1
vpunpckhqdq xmm1, xmm0, xmm1
vmovdqu xmm0, xmmword [rbx + 0xa20]
vmovdqu xmmword [rbx + 0xf40], xmm3
vmovdqu xmmword [rbx + 0xf20], xmm4
vpunpckldq xmm3, xmm0, xmmword [rbx + 0xa60]
vmovdqu xmmword [rbx + 0xf00], xmm1
vmovdqu xmmword [rbx + 0xf60], xmm5
vpunpckldq xmm4, xmm2, xmmword [rbx + 0xae0]
vpunpckhdq xmm0, xmm0, xmmword [rbx + 0xa60]
vpunpckhdq xmm1, xmm2, xmmword [rbx + 0xae0]
vmovdqu xmm2, xmmword [rbx + 0xab0]
vpunpcklqdq xmm5, xmm3, xmm4
vpunpckhqdq xmm3, xmm3, xmm4
vpunpcklqdq xmm4, xmm0, xmm1
vpunpckhqdq xmm1, xmm0, xmm1
vmovdqu xmm0, xmmword [rbx + 0xa30]
vmovdqu xmmword [rbx + 0xee0], xmm5
vmovdqu xmmword [rbx + 0xea0], xmm4
vmovdqu xmmword [rbx + 0xe80], xmm1
vmovdqu xmmword [rbx + 0xec0], xmm3
vpunpckldq xmm3, xmm0, xmmword [rbx + 0xa70]
vpunpckldq xmm4, xmm2, xmmword [rbx + 0xaf0]
vpunpckhdq xmm0, xmm0, xmmword [rbx + 0xa70]
vpunpckhdq xmm1, xmm2, xmmword [rbx + 0xaf0]
vmovdqu xmm2, xmmword [rbx + 0xb80]
vpunpcklqdq xmm5, xmm3, xmm4
vpunpckhqdq xmm3, xmm3, xmm4
vpunpcklqdq xmm4, xmm0, xmm1
vpunpckhqdq xmm1, xmm0, xmm1
vmovdqu xmm0, xmmword [rbx + 0xb00]
vmovdqu xmmword [rbx + 0xe40], xmm3
vmovdqu xmmword [rbx + 0xe20], xmm4
vpunpckldq xmm3, xmm0, xmmword [rbx + 0xb40]
vmovdqu xmmword [rbx + 0xe00], xmm1
vmovdqu xmmword [rbx + 0xe60], xmm5
vpunpckldq xmm4, xmm2, xmmword [rbx + 0xbc0]
vpunpckhdq xmm0, xmm0, xmmword [rbx + 0xb40]
vpunpckhdq xmm1, xmm2, xmmword [rbx + 0xbc0]
vmovdqu xmm2, xmmword [rbx + 0xb90]
vpunpcklqdq xmm5, xmm3, xmm4
vpunpckhqdq xmm3, xmm3, xmm4
vpunpcklqdq xmm4, xmm0, xmm1
vpunpckhqdq xmm1, xmm0, xmm1
vmovdqu xmm0, xmmword [rbx + 0xb10]
vmovdqu xmmword [rbx + 0xfd0], xmm3
vmovdqu xmmword [rbx + 0xfb0], xmm4
vpunpckldq xmm3, xmm0, xmmword [rbx + 0xb50]
vmovdqu xmmword [rbx + 0xf90], xmm1
vmovdqu xmmword [rbx + 0xff0], xmm5
vpunpckldq xmm4, xmm2, xmmword [rbx + 0xbd0]
vpunpckhdq xmm0, xmm0, xmmword [rbx + 0xb50]
vpunpckhdq xmm1, xmm2, xmmword [rbx + 0xbd0]
vmovdqu xmm2, xmmword [rbx + 0xba0]
vpunpcklqdq xmm5, xmm3, xmm4
vpunpckhqdq xmm3, xmm3, xmm4
vpunpcklqdq xmm4, xmm0, xmm1
vpunpckhqdq xmm1, xmm0, xmm1
vmovdqu xmm0, xmmword [rbx + 0xb20]
vmovdqu xmmword [rbx + 0xf70], xmm5
vmovdqu xmmword [rbx + 0xf50], xmm3
vmovdqu xmmword [rbx + 0xf10], xmm1
vpunpckldq xmm3, xmm0, xmmword [rbx + 0xb60]
vmovdqu xmmword [rbx + 0xf30], xmm4
vpunpckhdq xmm0, xmm0, xmmword [rbx + 0xb60]
vpunpckldq xmm4, xmm2, xmmword [rbx + 0xbe0]
vpunpckhdq xmm1, xmm2, xmmword [rbx + 0xbe0]
vmovdqu xmm2, xmmword [rbx + 0xbb0]
vpunpcklqdq xmm5, xmm3, xmm4
vpunpckhqdq xmm3, xmm3, xmm4
vpunpcklqdq xmm4, xmm0, xmm1
vpunpckhqdq xmm1, xmm0, xmm1
vmovdqu xmm0, xmmword [rbx + 0xb30]
vmovdqu xmmword [rbx + 0xed0], xmm3
vmovdqu xmmword [rbx + 0xeb0], xmm4
vpunpckldq xmm3, xmm0, xmmword [rbx + 0xb70]
vmovdqu xmmword [rbx + 0xef0], xmm5
vmovdqu xmmword [rbx + 0xe90], xmm1
vpunpckldq xmm4, xmm2, xmmword [rbx + 0xbf0]
vpunpckhdq xmm1, xmm2, xmmword [rbx + 0xbf0]
vpunpckhdq xmm0, xmm0, xmmword [rbx + 0xb70]
vpunpcklqdq xmm5, xmm3, xmm4
vpunpckhqdq xmm3, xmm3, xmm4
vmovdqu xmmword [rbx + 0xe70], xmm5
vmovdqu ymm5, ymmword [rbx + 0xfe0]
vpunpcklqdq xmm2, xmm0, xmm1
vpunpckhqdq xmm0, xmm0, xmm1
vmovdqu xmmword [rbx + 0xe10], xmm0
vmovdqu xmmword [rbx + 0xe50], xmm3
vmovdqu xmmword [rbx + 0xe30], xmm2
vmovdqu ymmword [rbx + 0xa00], ymm5
vmovdqu ymm5, ymmword [rbx + 0xfc0]
vmovdqu ymmword [rbx + 0xa20], ymm5
vzeroupper
call sym.__emutls_get_address
mov r9, r14
mov r8d, 0x20
mov rcx, qword [rax]
mov rdx, r14
mov qword [rsp + 0x38], 8
mov qword [rsp + 0x30], 8
mov qword [rsp + 0x28], 8
mov qword [rsp + 0x20], 0x20
mov rsi, rax
call sym.LYRA2Z_2WAY
vmovdqu ymm5, ymmword [rbx + 0xfa0]
mov r9, r14
mov r8d, 0x20
vmovdqu64 ymm23, ymmword [rbx + 0xa00]
vmovdqu64 ymm22, ymmword [rbx + 0xa20]
mov rdx, r14
mov rcx, qword [rsi]
vmovdqu ymmword [rbx + 0xa00], ymm5
vmovdqu ymm5, ymmword [rbx + 0xf80]
vmovdqu64 ymmword [rsp + 0x1e0], ymm23
vmovdqu64 ymmword [rsp + 0x1c0], ymm22
vmovdqu ymmword [rbx + 0xa20], ymm5
mov qword [rsp + 0x38], 8
mov qword [rsp + 0x30], 8
mov qword [rsp + 0x28], 8
mov qword [rsp + 0x20], 0x20
vzeroupper
call sym.LYRA2Z_2WAY
mov r9, r14
mov r8d, 0x20
vmovdqu ymm5, ymmword [rbx + 0xf60]
vmovdqu64 ymm21, ymmword [rbx + 0xa00]
mov rdx, r14
vmovdqu64 ymm20, ymmword [rbx + 0xa20]
mov rcx, qword [rsi]
vmovdqu ymmword [rbx + 0xa00], ymm5
vmovdqu ymm5, ymmword [rbx + 0xf40]
vmovdqu64 ymmword [rsp + 0x1a0], ymm21
vmovdqu64 ymmword [rsp + 0x180], ymm20
vmovdqu ymmword [rbx + 0xa20], ymm5
mov qword [rsp + 0x38], 8
mov qword [rsp + 0x30], 8
mov qword [rsp + 0x28], 8
mov qword [rsp + 0x20], 0x20
vzeroupper
call sym.LYRA2Z_2WAY
mov r9, r14
mov r8d, 0x20
vmovdqu64 ymm19, ymmword [rbx + 0xa00]
vmovdqu64 ymm18, ymmword [rbx + 0xa20]
mov rdx, r14
vmovdqu ymm2, ymmword [rbx + 0xf20]
vmovdqu ymm5, ymmword [rbx + 0xf00]
mov rcx, qword [rsi]
vmovdqu64 ymmword [rsp + 0x160], ymm19
vmovdqu64 ymmword [rsp + 0x140], ymm18
vmovdqu ymmword [rbx + 0xa00], ymm2
vmovdqu ymmword [rbx + 0xa20], ymm5
mov qword [rsp + 0x38], 8
mov qword [rsp + 0x30], 8
mov qword [rsp + 0x28], 8
mov qword [rsp + 0x20], 0x20
vzeroupper
call sym.LYRA2Z_2WAY
vmovdqu64 ymm17, ymmword [rbx + 0xa00]
mov r9, r14
mov r8d, 0x20
vmovdqu64 ymm16, ymmword [rbx + 0xa20]
vmovdqu ymm2, ymmword [rbx + 0xee0]
mov rdx, r14
vmovdqu ymm5, ymmword [rbx + 0xec0]
mov rcx, qword [rsi]
vmovdqu64 ymmword [rsp + 0x120], ymm17
vmovdqu ymmword [rbx + 0xa00], ymm2
vmovdqu64 ymmword [rsp + 0x100], ymm16
vmovdqu ymmword [rbx + 0xa20], ymm5
mov qword [rsp + 0x38], 8
mov qword [rsp + 0x30], 8
mov qword [rsp + 0x28], 8
mov qword [rsp + 0x20], 0x20
vzeroupper
call sym.LYRA2Z_2WAY
mov r9, r14
mov r8d, 0x20
vmovdqu ymm5, ymmword [rbx + 0xa00]
vmovdqu ymm4, ymmword [rbx + 0xa20]
mov rdx, r14
vmovdqu ymm2, ymmword [rbx + 0xea0]
mov rcx, qword [rsi]
vmovdqu ymmword [rsp + 0xe0], ymm5
vmovdqu ymm5, ymmword [rbx + 0xe80]
vmovdqu ymmword [rsp + 0xc0], ymm4
vmovdqu ymmword [rbx + 0xa00], ymm2
vmovdqu ymmword [rbx + 0xa20], ymm5
mov qword [rsp + 0x38], 8
mov qword [rsp + 0x30], 8
mov qword [rsp + 0x28], 8
mov qword [rsp + 0x20], 0x20
vzeroupper
call sym.LYRA2Z_2WAY
mov r9, r14
mov r8d, 0x20
vmovdqu ymm2, ymmword [rbx + 0xa20]
vmovdqu ymm3, ymmword [rbx + 0xa00]
mov rdx, r14
vmovdqu ymm5, ymmword [rbx + 0xe40]
mov rcx, qword [rsi]
vmovdqu ymmword [rsp + 0x80], ymm2
vmovdqu ymm2, ymmword [rbx + 0xe60]
vmovdqu ymmword [rsp + 0xa0], ymm3
vmovdqu ymmword [rbx + 0xa20], ymm5
vmovdqu ymmword [rbx + 0xa00], ymm2
mov qword [rsp + 0x38], 8
mov qword [rsp + 0x30], 8
mov qword [rsp + 0x28], 8
mov qword [rsp + 0x20], 0x20
vzeroupper
call sym.LYRA2Z_2WAY
mov r9, r14
mov r8d, 0x20
vmovdqu ymm1, ymmword [rbx + 0xa00]
vmovdqu ymm0, ymmword [rbx + 0xa20]
mov rdx, r14
vmovdqu ymm2, ymmword [rbx + 0xe20]
vmovdqu ymm4, ymmword [rbx + 0xe00]
mov rcx, qword [rsi]
vmovdqu ymmword [rsp + 0x60], ymm1
vmovdqu ymmword [rsp + 0x40], ymm0
vmovdqu ymmword [rbx + 0xa00], ymm2
vmovdqu ymmword [rbx + 0xa20], ymm4
mov qword [rsp + 0x38], 8
mov qword [rsp + 0x30], 8
mov qword [rsp + 0x28], 8
mov qword [rsp + 0x20], 0x20
vzeroupper
call sym.LYRA2Z_2WAY
vmovdqu ymm5, ymmword [rsp + 0xe0]
vmovdqu ymm2, ymmword [rsp + 0x80]
vmovdqu64 ymm23, ymmword [rsp + 0x1e0]
vmovdqu64 ymm22, ymmword [rsp + 0x1c0]
vmovdqu64 ymm21, ymmword [rsp + 0x1a0]
vmovdqu64 ymm20, ymmword [rsp + 0x180]
vmovdqu64 ymm19, ymmword [rsp + 0x160]
vmovdqu64 ymm18, ymmword [rsp + 0x140]
vmovdqu64 ymm17, ymmword [rsp + 0x120]
vmovdqu64 ymm16, ymmword [rsp + 0x100]
vmovdqu ymm4, ymmword [rsp + 0xc0]
vmovdqu ymm3, ymmword [rsp + 0xa0]
vmovdqu ymm1, ymmword [rsp + 0x60]
vmovdqu ymm0, ymmword [rsp + 0x40]
vmovdqu ymmword [rbx + 0xd00], ymm5
vmovdqu ymm5, ymmword [rbx + 0xa00]
vmovdqu ymmword [rbx + 0xd60], ymm2
vmovdqu ymm2, ymmword [rbx + 0xa20]
vmovdqu64 ymmword [rbx + 0xc00], ymm23
vmovdqu64 ymmword [rbx + 0xc20], ymm22
vmovdqu64 ymmword [rbx + 0xc40], ymm21
vmovdqu64 ymmword [rbx + 0xc60], ymm20
vmovdqu64 ymmword [rbx + 0xc80], ymm19
vmovdqu64 ymmword [rbx + 0xca0], ymm18
vmovdqu64 ymmword [rbx + 0xcc0], ymm17
vmovdqu64 ymmword [rbx + 0xce0], ymm16
vmovdqu ymmword [rbx + 0xd20], ymm4
vmovdqu ymmword [rbx + 0xd40], ymm3
vmovdqu ymmword [rbx + 0xd80], ymm1
vmovdqu ymmword [rbx + 0xda0], ymm0
vmovdqu ymmword [rbx + 0xdc0], ymm5
vmovdqu ymmword [rbx + 0xde0], ymm2
mov rsi, qword [rsp + 0x208]
test r15b, r15b
je 0x14019e7df
vzeroupper
nop dword [rax]
mov rcx, rsi
mov rdx, rdi
add rsi, 0x20
call sym.valid_hash
cmp rbp, rsi
jne 0x14019e710
vmovdqu32 zmm4, zmmword [rsp + 0x210]
add r12d, 0x10
vmovd eax, xmm11
vpaddd zmm0, zmm4, zmmword [rbx + 0xc0]
vmovdqu32 zmmword [rbx + 0xc0], zmm0
cmp r12d, eax
jae 0x14019e764
mov rdx, qword [0x1403873f0]
vmovq rax, xmm6
add rax, qword [rdx]
movzx eax, byte [rax]
test al, al
je 0x14019df20
vmovd r15d, xmm13
mov dword [rdi + 0x8c], r12d
vmovq rax, xmm10
sub r12d, r15d
mov edi, r12d
mov qword [rax], rdi
xor eax, eax
vzeroupper
vmovups xmm6, xmmword [rsp + 0x12e0]
vmovups xmm7, xmmword [rsp + 0x12f0]
vmovups xmm8, xmmword [rsp + 0x1300]
vmovups xmm9, xmmword [rsp + 0x1310]
vmovups xmm10, xmmword [rsp + 0x1320]
vmovups xmm11, xmmword [rsp + 0x1330]
vmovups xmm12, xmmword [rsp + 0x1340]
vmovups xmm13, xmmword [rsp + 0x1350]
add rsp, 0x1368
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov r13d, r12d
vzeroupper
jmp 0x14019e800
add rsi, 0x20
inc r13d
cmp rbp, rsi
je 0x14019e724
mov rdx, rdi
mov rcx, rsi
call sym.valid_hash
test al, al
je 0x14019e7f0
mov dword [rdi + 0x8c], r13d
vmovq r8, xmm12
mov rdx, rsi
mov rcx, rdi
call sym.submit_solution
jmp 0x14019e7f0