Function at 0x1402d9c20
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x2d8
vmovups xmmword [rsp + 0x240], xmm6
vmovups xmmword [rsp + 0x250], xmm7
vmovups xmmword [rsp + 0x260], xmm8
vmovups xmmword [rsp + 0x270], xmm9
vmovups xmmword [rsp + 0x280], xmm10
vmovups xmmword [rsp + 0x290], xmm11
vmovups xmmword [rsp + 0x2a0], xmm12
vmovups xmmword [rsp + 0x2b0], xmm13
vmovups xmmword [rsp + 0x2c0], xmm14
mov r14d, dword [r9]
vmovq xmm10, qword [r9 + 0x18]
mov r10d, dword [r9 + 4]
mov ebp, dword [r9 + 8]
mov r13, qword [r9 + 0x10]
lea rax, [rsp + 0x16f]
mov r15, rdx
mov rdi, r8
and rax, 0xffffffffffffffc0
vmovq xmm6, rax
cmp r14d, 5
je 0x1402d9cc0
cmp r14d, 0xa
jne 0x1402da320
lea eax, [r10 - 0x400]
cmp eax, 0x7fc00
ja 0x1402da320
lea eax, [rbp - 8]
cmp eax, 0x18
ja 0x1402da320
blsr eax, r10d
mov dword [rsp + 0x64], eax
jne 0x1402da320
test r13, r13
jne 0x1402d9d00
vmovq rax, xmm10
test rax, rax
jne 0x1402da320
mov rsi, rbp
mov ecx, r10d
mov dword [rsp + 0x48], r10d
shl rsi, 7
imul rcx, rsi
call sym.malloc
mov r10d, dword [rsp + 0x48]
test rax, rax
vmovq xmm14, rax
je 0x1402da32c
mov rcx, rsi
mov dword [rsp + 0x58], r10d
call sym.malloc
mov qword [rsp + 0x50], rax
test rax, rax
je 0x1402da782
mov rcx, rsi
call sym.malloc
mov rbx, rax
test rax, rax
je 0x1402da78f
cmp r14d, 5
mov ecx, 0x18000
mov r12d, 0x2000
mov edx, 2
sete r9b
setne r8b
cmovne r12d, ecx
mov r11d, 0x40
movzx r9d, r9b
mov eax, 8
movzx r8d, r8b
mov ecx, 0x300
lea r9d, [r9 + r9*2 + 3]
cmove ecx, r11d
lea r8d, [r8 + r8*2 + 8]
cmovne eax, edx
vmovd xmm1, r9d
vmovd xmm5, r14d
vmovd xmm7, ecx
mov r11d, 0x18000
vpinsrd xmm1, xmm1, r8d, 1
vpinsrd xmm0, xmm5, eax, 1
mov ecx, 0x2000
mov dword [rsp + 0xc0], r12d
vpunpcklqdq xmm0, xmm0, xmm1
cmovne rcx, r11
mov dword [rsp + 0x48], r8d
vmovdqu xmmword [rsp + 0xb0], xmm0
call sym.malloc
mov r12, rax
test rax, rax
je 0x1402da787
mov r8d, dword [rsp + 0x48]
mov edx, 2
vmovq rcx, xmm6
xor r9d, r9d
mov qword [rsp + 0xe8], 0
shlx edx, edx, r8d
movsxd rdx, edx
shl rdx, 3
lea rax, [rax + rdx]
add rdx, rax
vmovq xmm1, rax
mov eax, 1
shlx eax, eax, r8d
vpinsrq xmm0, xmm1, rdx, 1
vpbroadcastq xmm1, r12
xor r8d, r8d
dec eax
vinserti128 ymm0, ymm1, xmm0, 1
mov edx, 0x20
shl eax, 4
vmovdqu ymmword [rsp + 0xc8], ymm0
mov dword [rsp + 0xc4], eax
vzeroupper
call sym.sph_blake2b_init
mov r8, rdi
mov rdx, r15
vmovq rcx, xmm6
call sym.sph_blake2b_update
lea rcx, [rsp + 0x90]
mov rdx, rcx
vmovq xmm9, rcx
vmovq rcx, xmm6
call sym.sph_blake2b_final
mov r10d, dword [rsp + 0x58]
mov edx, 0xaaaaaaab
lea eax, [r10 + 2]
imul rax, rdx
shr rax, 0x21
lea edx, [rax + 1]
and edx, 0xfffffffe
vmovd xmm11, edx
cmp r14d, 5
je 0x1402da720
mov rdi, qword [rsp + 0x50]
xor eax, eax
vmovq rcx, xmm10
test r13, r13
cmove rcx, rax
cmovne r15, r13
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x20], 1
mov r9, rcx
mov r8, r15
mov edx, 0x20
vmovq rcx, xmm9
mov dword [rsp + 0x48], r10d
mov qword [rsp + 0x28], rdi
call sym.pbkdf2_blake2b
vpxor xmm10, xmm10, xmm10
vmovdqu ymm0, ymmword [rdi]
mov r10d, dword [rsp + 0x48]
mov rax, qword [rsp + 0x50]
vmovdqu32 zmm22, zmmword [0x140381ac0]
vmovdqu ymmword [rsp + 0x90], ymm0
vpmovzxdq xmm2, xmm7
xor r15d, r15d
vmovq rcx, xmm2
mov r8, r12
mov qword [rsp + 0x80], rbp
mov qword [rsp + 0x48], r15
vmovd xmm8, r10d
mov qword [rsp + 0x88], rsi
mov r15, rcx
vpermd zmm0, zmm22, zmmword [rax]
vmovdqu32 zmmword [rbx], zmm0
vpermd zmm0, zmm22, zmmword [rax + 0x40]
lea rax, [rsp + 0xb0]
vmovq xmm6, rax
lea rax, [rbx + 0x80]
mov qword [rsp + 0x58], rax
lea rax, [rsp + 0xf0]
vmovdqu xmm7, xmm6
vmovq xmm6, rax
vmovdqu32 zmmword [rbx + 0x40], zmm0
jmp 0x1402d9fc9
cmp r12, r8
je 0x1402da3a0
vmovq rdx, xmm7
mov rcx, rbx
vzeroupper
inc rsi
call sym.blockmix_pwxform.constprop.0_1
mov qword [rsp + 0x48], rsi
mov r8, qword [rsp + 0xc8]
vmovdqu64 zmm2, zmmword [rbx]
vmovdqu64 zmm1, zmmword [rbx + 0x40]
mov rsi, qword [rsp + 0x48]
mov rax, rsi
shl rax, 7
add rax, r12
vmovdqu64 zmmword [rax], zmm2
vmovdqu64 zmmword [rax + 0x40], zmm1
cmp rsi, 1
jbe 0x1402d9fa0
mov rax, rsi
mov r9d, esi
mov r10d, dword [rbx + 0x40]
nop word cs:[rax + rax]
nop dword [rax]
lea edx, [rax - 1]
mov ecx, eax
and eax, edx
jne 0x1402da010
and edx, r10d
sub r9d, ecx
lea eax, [rdx + r9]
shl rax, 7
add rax, r12
vmovdqu32 zmm1, zmmword [rax]
vmovdqu32 zmm3, zmmword [rax + 0x40]
vpxord zmm0, zmm1, zmmword [rbx]
vmovdqu32 zmmword [rbx], zmm0
vpxord zmm0, zmm3, zmmword [rbx + 0x40]
vmovdqu32 zmmword [rbx + 0x40], zmm0
cmp r12, r8
je 0x1402da3a0
vmovq rdx, xmm7
mov rcx, rbx
vzeroupper
call sym.blockmix_pwxform.constprop.0_1
inc qword [rsp + 0x48]
mov eax, dword [rbx]
mov rdi, qword [rsp + 0x48]
cmp r15, rdi
jne 0x1402d9fc1
vmovd xmm5, dword [rbx + 0x58]
vmovd xmm2, dword [rbx + 0x70]
vmovd r10d, xmm8
vmovdqu xmm6, xmm7
vpinsrd xmm0, xmm2, dword [rbx + 0x64], 1
vpinsrd xmm1, xmm5, dword [rbx + 0x4c], 1
vmovd xmm5, dword [rbx + 0x48]
vmovd xmm4, dword [rbx + 0x40]
vpinsrd xmm2, xmm5, dword [rbx + 0x7c], 1
vmovd xmm5, dword [rbx + 0x60]
mov rbp, qword [rsp + 0x80]
mov rsi, qword [rsp + 0x88]
mov edx, dword [rsp + 0xb0]
mov r13, rbp
vpunpcklqdq xmm1, xmm0, xmm1
vpinsrd xmm0, xmm5, dword [rbx + 0x54], 1
vmovd xmm5, dword [rbx + 8]
shl r13, 5
vpunpcklqdq xmm0, xmm0, xmm2
vinserti128 ymm2, ymm0, xmm1, 1
vmovd xmm1, dword [rbx + 0x78]
vpinsrd xmm3, xmm1, dword [rbx + 0x6c], 1
vmovd xmm1, dword [rbx + 0x50]
vpinsrd xmm0, xmm1, dword [rbx + 0x44], 1
vmovd xmm1, dword [rbx + 0x68]
vpinsrd xmm1, xmm1, dword [rbx + 0x5c], 1
vpunpcklqdq xmm3, xmm0, xmm3
vpinsrd xmm0, xmm4, dword [rbx + 0x74], 1
vmovd xmm4, dword [rbx + 0x20]
vpunpcklqdq xmm1, xmm0, xmm1
vinserti128 ymm1, ymm1, xmm3, 1
vmovd xmm3, dword [rbx + 0x30]
vinserti64x4 zmm1, zmm1, ymm2, 1
vmovd xmm2, dword [rbx + 0x18]
vpinsrd xmm0, xmm3, dword [rbx + 0x24], 1
vpinsrd xmm2, xmm2, dword [rbx + 0xc], 1
vpinsrd xmm3, xmm5, dword [rbx + 0x3c], 1
vmovd xmm5, dword [rbx + 0x10]
vpunpcklqdq xmm2, xmm0, xmm2
vpinsrd xmm0, xmm4, dword [rbx + 0x14], 1
vmovd xmm4, dword [rbx + 0x28]
vpunpcklqdq xmm0, xmm0, xmm3
vmovd xmm3, dword [rbx + 0x38]
vpinsrd xmm3, xmm3, dword [rbx + 0x2c], 1
vinserti128 ymm2, ymm0, xmm2, 1
vpinsrd xmm0, xmm5, dword [rbx + 4], 1
vmovd xmm5, eax
vpinsrd xmm4, xmm4, dword [rbx + 0x1c], 1
mov rcx, qword [rsp + 0x50]
xor eax, eax
vmovdqu32 zmmword [rcx + 0x40], zmm1
vpunpcklqdq xmm3, xmm0, xmm3
vpinsrd xmm0, xmm5, dword [rbx + 0x34], 1
vpunpcklqdq xmm0, xmm0, xmm4
vinserti128 ymm0, ymm0, xmm3, 1
vinserti64x4 zmm0, zmm0, ymm2, 1
vmovdqu32 zmmword [rcx], zmm0
nop
vpermd zmm0, zmm22, zmmword [rcx + rax]
vmovdqu32 zmmword [rbx + rax], zmm0
add rax, 0x40
cmp rsi, rax
jne 0x1402da1c0
lea r15, [rbx + 0x80]
mov r14d, 1
vmovd xmm7, r10d
vmovq rdi, xmm6
cmp edx, 5
je 0x1402da77a
nop word [rax + rax]
vmovdqu32 zmm3, zmmword [r15 - 0x80]
vmovdqu32 zmm4, zmmword [r15 - 0x40]
mov rcx, r15
mov rdx, rdi
vmovdqu32 zmmword [r15], zmm3
vmovdqu32 zmmword [r15 + 0x40], zmm4
vzeroupper
inc r14
call sym.blockmix_pwxform.constprop.0_1
sub r15, 0xffffffffffffff80
cmp r14, rbp
jb 0x1402da200
vmovd r10d, xmm7
vmovq xmm6, rdi
mov edi, dword [rsp + 0x64]
lea rax, [rbx + 0x80]
vmovq r15, xmm14
mov qword [rsp + 0x48], rbp
vmovq xmm8, rax
lea rax, [rsp + 0xf0]
mov qword [rsp + 0x58], r12
shl r13, 2
vmovq xmm7, rax
vmovq r14, xmm14
mov r12d, r10d
mov rbp, r15
nop word [rax + rax]
mov r8, rsi
mov rdx, rbx
mov rcx, rbp
call sym.memcpy
cmp edi, 1
jbe 0x1402da2de
mov r8d, dword [rbx + rsi - 0x40]
mov eax, edi
nop word [rax + rax]
lea edx, [rax - 1]
mov ecx, eax
and eax, edx
jne 0x1402da2a0
and r8d, edx
mov edx, edi
xor eax, eax
sub edx, ecx
add edx, r8d
mov edx, edx
imul rdx, rsi
add rdx, r14
nop
vmovdqu32 zmm5, zmmword [rdx + rax]
vpxord zmm0, zmm5, zmmword [rbx + rax]
vmovdqu32 zmmword [rbx + rax], zmm0
add rax, 0x40
cmp r13, rax
jne 0x1402da2c0
cmp r14, qword [rsp + 0xc8]
je 0x1402da5c0
mov r8, qword [rsp + 0x48]
vmovq rdx, xmm6
mov rcx, rbx
vzeroupper
call sym.blockmix_pwxform_1
inc edi
add rbp, rsi
cmp edi, r12d
jae 0x1402da625
vzeroupper
jmp 0x1402da280
call qword [sym.imp.msvcrt.dll__errno]
mov dword [rax], 0x16
or esi, 0xffffffff
vmovups xmm6, xmmword [rsp + 0x240]
vmovups xmm7, xmmword [rsp + 0x250]
mov eax, esi
vmovups xmm8, xmmword [rsp + 0x260]
vmovups xmm9, xmmword [rsp + 0x270]
vmovups xmm10, xmmword [rsp + 0x280]
vmovups xmm11, xmmword [rsp + 0x290]
vmovups xmm12, xmmword [rsp + 0x2a0]
vmovups xmm13, xmmword [rsp + 0x2b0]
vmovups xmm14, xmmword [rsp + 0x2c0]
add rsp, 0x2d8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
vmovd xmm1, dword [rbx + 0x64]
vmovd xmm17, dword [rbx + 0x44]
mov rdi, rbx
mov qword [rsp + 0x68], rbx
vmovd xmm16, dword [rbx + 0x54]
mov qword [rsp + 0x70], r12
mov qword [rsp + 0x78], r15
vmovd xmm4, dword [rbx + 0x6c]
vmovd xmm12, dword [rsp + 0xb4]
mov esi, dword [rbx + 0x74]
mov r13d, dword [rbx + 0x5c]
mov r11d, dword [rbx + 0x78]
vmovd xmm3, dword [rbx + 0x70]
mov edx, dword [rbx + 0x40]
mov eax, dword [rbx + 0x48]
mov ebp, dword [rbx + 0x4c]
mov r8d, dword [rbx + 0x50]
mov ecx, dword [rbx + 0x58]
mov r10d, dword [rbx + 0x60]
vmovd r12d, xmm1
vmovd xmm2, esi
mov r9d, dword [rbx + 0x68]
mov r14d, dword [rbx + 0x7c]
vmovd esi, xmm17
mov ebx, r13d
vmovd xmm1, r11d
vmovd r13d, xmm16
vmovd r15d, xmm4
vmovd r11d, xmm3
xor r11d, dword [rdi + 0x30]
xor r10d, dword [rdi + 0x20]
xor r9d, dword [rdi + 0x28]
xor r14d, dword [rdi + 0x3c]
xor r12d, dword [rdi + 0x24]
xor r15d, dword [rdi + 0x2c]
xor ecx, dword [rdi + 0x18]
xor r8d, dword [rdi + 0x10]
xor ebx, dword [rdi + 0x1c]
xor eax, dword [rdi + 8]
vmovd xmm3, r11d
vmovd r11d, xmm2
xor r11d, dword [rdi + 0x34]
xor edx, dword [rdi]
xor r13d, dword [rdi + 0x14]
xor esi, dword [rdi + 4]
xor ebp, dword [rdi + 0xc]
vmovd xmm2, r11d
vmovd r11d, xmm1
xor r11d, dword [rdi + 0x38]
vmovd xmm1, r10d
vpinsrd xmm0, xmm1, r12d, 1
vpunpckldq xmm2, xmm3, xmm2
vmovd xmm3, eax
vpinsrd xmm3, xmm3, ebp, 1
vmovd xmm4, r11d
vpinsrd xmm5, xmm4, r14d, 1
vmovd xmm4, r9d
vpinsrd xmm4, xmm4, r15d, 1
vpunpcklqdq xmm2, xmm2, xmm5
vpunpcklqdq xmm0, xmm0, xmm4
vmovd xmm4, ecx
vmovq rcx, xmm6
vpinsrd xmm13, xmm4, ebx, 1
vmovd xmm4, r8d
vinserti128 ymm1, ymm0, xmm2, 1
vpinsrd xmm2, xmm4, r13d, 1
vmovd xmm4, edx
vmovd edx, xmm12
vpinsrd xmm0, xmm4, esi, 1
vpunpcklqdq xmm2, xmm2, xmm13
vpunpcklqdq xmm0, xmm0, xmm3
vinserti128 ymm0, ymm0, xmm2, 1
vinserti64x4 zmm0, zmm0, ymm1, 1
vmovdqu32 zmmword [rsp + 0xf0], zmm0
vzeroupper
call sym.salsa20_1
add rdi, 0x40
vmovdqu32 zmm5, zmmword [rsp + 0xf0]
mov r11d, dword [rsp + 0x124]
vmovd xmm3, dword [rsp + 0x120]
vmovd xmm1, dword [rsp + 0x128]
mov edx, dword [rsp + 0xf0]
mov esi, dword [rsp + 0xf4]
mov eax, dword [rsp + 0xf8]
mov ebp, dword [rsp + 0xfc]
mov r8d, dword [rsp + 0x100]
mov r13d, dword [rsp + 0x104]
vmovd xmm2, r11d
mov ecx, dword [rsp + 0x108]
mov ebx, dword [rsp + 0x10c]
mov r10d, dword [rsp + 0x110]
mov r12d, dword [rsp + 0x114]
mov r9d, dword [rsp + 0x118]
mov r15d, dword [rsp + 0x11c]
vmovdqu32 zmmword [rdi - 0x40], zmm5
mov r14d, dword [rsp + 0x12c]
cmp qword [rsp + 0x58], rdi
jne 0x1402da421
mov rbx, qword [rsp + 0x68]
mov r12, qword [rsp + 0x70]
mov r15, qword [rsp + 0x78]
jmp 0x1402da06a
vmovd xmm21, dword [rsp + 0xb4]
vmovdqu32 zmm0, zmmword [rbx + 0x40]
mov r15, rbx
vmovdqu xmm13, xmm8
vpxord zmm0, zmm0, zmmword [r15]
vmovq rcx, xmm7
vmovd edx, xmm21
vmovdqu32 zmmword [rsp + 0xf0], zmm0
vzeroupper
call sym.salsa20_1
add r15, 0x40
vmovdqu32 zmm0, zmmword [rsp + 0xf0]
vmovq rax, xmm13
vmovdqu32 zmmword [r15 - 0x40], zmm0
cmp r15, rax
jne 0x1402da5d7
vmovdqu xmm8, xmm13
jmp 0x1402da301
vmovdqu32 zmm1, zmmword [0x140381b00]
mov r10d, r12d
mov rbp, qword [rsp + 0x48]
xor eax, eax
mov r12, qword [rsp + 0x58]
mov rdx, qword [rsp + 0x50]
nop word cs:[rax + rax]
nop
vpermd zmm0, zmm1, zmmword [rbx + rax]
vmovdqu32 zmmword [rdx + rax], zmm0
add rax, 0x40
cmp rsi, rax
jne 0x1402da650
mov rcx, qword [rsp + 0x50]
vmovd r9d, xmm11
vmovq qword [rsp + 0x30], xmm6
vmovq qword [rsp + 0x20], xmm14
mov r8d, r10d
mov dword [rsp + 0x48], r10d
mov rdx, rbp
mov qword [rsp + 0x28], rbx
vzeroupper
mov esi, 1
call sym.smix2_2
mov r8d, dword [rsp + 0x48]
mov rdx, rbp
mov qword [rsp + 0x28], rbx
mov rcx, qword [rsp + 0x50]
vmovd r9d, xmm10
vmovq qword [rsp + 0x30], xmm6
vmovq qword [rsp + 0x20], xmm14
call sym.smix2_2
mov rcx, qword [rsp + 0x50]
mov rax, rbp
mov r8d, 0x40
shl rax, 9
vmovq r9, xmm9
mov qword [rsp + 0x20], 0x20
lea rdx, [rcx + rax - 0x100]
mov rcx, qword [rsp + 0x340]
call sym.hmac_blake2b_hash
mov rcx, r12
call sym.free
mov rcx, rbx
call sym.free
mov rcx, qword [rsp + 0x50]
call sym.free
vmovq rcx, xmm14
call sym.free
jmp 0x1402da32f
mov r14, qword [rsp + 0x50]
vmovq rcx, xmm9
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x20], 1
mov r9, rdi
mov r8, r15
mov edx, 0x20
mov dword [rsp + 0x58], eax
mov dword [rsp + 0x48], r10d
mov qword [rsp + 0x28], r14
call sym.pbkdf2_blake2b
mov eax, dword [rsp + 0x58]
vmovd ecx, xmm11
vmovdqu ymm0, ymmword [r14]
mov r10d, dword [rsp + 0x48]
and eax, 0xfffffffe
sub ecx, eax
vmovd xmm11, eax
vmovd xmm10, ecx
jmp 0x1402d9f14
vzeroupper
jmp 0x1402da23f
or esi, 0xffffffff
jmp 0x1402da711
or esi, 0xffffffff
jmp 0x1402da6ff
or esi, 0xffffffff
jmp 0x1402da707