Function at 0x1400953f0
Capabilities:
Encrypt data using speck

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0xc8
movdqa xmmword [rsp + 0xb0], xmm6
mov rdi, qword [rdx + 0x18]
mov rbp, rdi
inc rbp
je 0x140095c77
mov r12, r8
mov rbx, rdx
mov r14, qword [rdx]
lea r15, [r14 + 1]
mov rdx, r15
shr rdx, 3
lea rax, [rdx*8]
sub rax, rdx
cmp r14, 8
cmovb rax, r14
mov rdx, rax
shr rdx, 1
cmp rbp, rdx
mov qword [rsp + 0x48], rcx
mov qword [rsp + 0x38], rbx
mov qword [rsp + 0x40], rdi
jbe 0x140095488
add rax, 1
cmp rbp, rax
cmova rax, rbp
cmp rax, 8
jae 0x140095501
xor ecx, ecx
cmp rax, 4
setae cl
lea rbx, [rcx*4 + 4]
jmp 0x140095545
mov qword [rsp + 0x70], rax
mov rsi, qword [rbx + 8]
xor eax, eax
movdqa xmm0, xmmword [0x140098920]
xor ecx, ecx
test cl, 1
je 0x1400954b6
nop word cs:[rax + rax]
nop dword [rax]
add rax, 0xf
jb 0x1400954da
cmp rax, r15
jae 0x1400954da
pxor xmm1, xmm1
pcmpgtb xmm1, xmmword [rsi + rax]
por xmm1, xmm0
movdqa xmmword [rsi + rax], xmm1
add rax, 1
mov cl, 1
test cl, 1
jne 0x1400954b0
jmp 0x1400954b6
cmp r15, 0x10
jae 0x1400955b4
lea rcx, [rsi + 0x10]
mov rdx, rsi
mov r8, r15
call fcn.1400931b0
test r15, r15
jne 0x1400955c7
jmp 0x140095a13
mov edx, 8
mul rdx
jo 0x140095c77
mov rbp, rax
movabs rdx, 0x2492492492492493
mul rdx
sub rbp, rdx
shr rbp, 1
add rbp, rdx
shr rbp, 2
add rbp, 0xffffffffffffffff
bsr rcx, rbp
xor ecx, 0x3f
mov rbx, 0xffffffffffffffff
shr rbx, cl
add rbx, 1
mov ecx, 0x30
mov rax, rbx
mul rcx
jo 0x140095c77
mov rsi, rax
lea r13, [rbx + 0x10]
mov rbp, rax
add rbp, r13
jb 0x140095c77
test rbp, rbp
mov qword [rsp + 0x28], r12
je 0x140095a37
mov rcx, qword [0x140443578]
test rcx, rcx
jne 0x140095597
call sub.kernel32.dll_GetProcessHeap
test rax, rax
je 0x1400955aa
mov rcx, rax
mov qword [0x140443578], rax
xor edx, edx
mov r8, rbp
call sub.kernel32.dll_HeapAlloc
test rax, rax
jne 0x140095a3c
mov rcx, rbp
call fcn.140022ac4
ud2
movdqu xmm0, xmmword [rsi]
movdqu xmmword [rsi + r15], xmm0
test r15, r15
je 0x140095a13
mov rax, qword [r12]
mov rcx, qword [r12 + 8]
movabs rdx, 0x736f6d6570736575
xor rdx, rax
mov qword [rsp + 0x68], rdx
movabs rdx, 0x646f72616e646f6d
xor rdx, rcx
mov qword [rsp + 0x60], rdx
movabs rdx, 0x6c7967656e657261
xor rdx, rax
mov qword [rsp + 0x58], rdx
movabs rax, 0x7465646279746573
xor rax, rcx
mov qword [rsp + 0x50], rax
xor r8d, r8d
mov qword [rsp + 0x88], r14
mov qword [rsp + 0x80], rsi
jmp 0x140095654
shr rbp, 0x39
lea rax, [r8 - 0x10]
and rax, r14
mov byte [rsi + r8], bpl
mov byte [rax + rsi + 0x10], bpl
lea rax, [r8 + 1]
cmp r8, r14
mov r8, rax
je 0x140095a13
cmp byte [rsi + r8], 0x80
jne 0x140095644
mov qword [rsp + 0x28], r8
mov rax, r8
not rax
lea rax, [rax + rax*2]
shl rax, 4
lea rcx, [rsi + rax]
mov qword [rsp + 0x30], rcx
lea rcx, [rsi + rax]
add rcx, 0x10
mov r15, qword [rsi + rax]
mov qword [rsp + 0x78], rcx
mov r13, qword [rcx]
test r13, r13
je 0x1400957c0
nop word cs:[rax + rax]
nop
xor r9d, r9d
xor edx, edx
xor r12d, r12d
mov rax, qword [rsp + 0x50]
mov rbp, qword [rsp + 0x60]
mov r10, qword [rsp + 0x58]
mov r8, qword [rsp + 0x68]
jmp 0x1400956d4
add r12, 1
add r9, 1
mov rdx, r14
cmp r13, r9
je 0x1400957d7
movzx ecx, byte [r15 + r9]
lea edi, [rcx - 0x41]
cmp dil, 0x1a
setb bl
shl bl, 5
or bl, cl
movzx r11d, bl
test r12, r12
je 0x140095750
mov edi, 8
sub rdi, r12
mov r14, r11
cmove r14, rdi
lea ecx, [r12*8]
shl r14, cl
or r14, rdx
cmp rdi, 1
ja 0x1400956c0
add r8, rbp
rol rbp, 0xd
xor rbp, r8
rol r8, 0x20
xor rax, r14
add r10, rax
rol rax, 0x10
xor rax, r10
add r8, rax
rol rax, 0x15
xor rax, r8
add r10, rbp
rol rbp, 0x11
xor rbp, r10
rol r10, 0x20
xor r8, r14
jmp 0x140095752
xor edi, edi
mov ecx, 1
sub rcx, rdi
mov rdx, rcx
and rdx, 0xfffffffffffffff8
cmp rdi, rdx
jae 0x1400957a0
add r8, rbp
rol rbp, 0xd
xor rbp, r8
rol r8, 0x20
add r10, rax
rol rax, 0x10
xor rax, r10
add r10, rbp
rol rbp, 0x11
xor rbp, r10
rol r10, 0x20
add r8, rax
rol rax, 0x15
xor rax, r8
jmp 0x1400957a5
test rcx, rcx
je 0x1400957b3
mov r12d, 1
mov r14, r11
jmp 0x1400956c4
xor r14d, r14d
xor r12d, r12d
jmp 0x1400956c4
mov r8, qword [rsp + 0x68]
mov r10, qword [rsp + 0x58]
mov rbp, qword [rsp + 0x60]
mov rax, qword [rsp + 0x50]
xor r14d, r14d
shl r13, 0x38
add r8, rbp
rol rbp, 0xd
or r13, r14
xor rbp, r8
rol r8, 0x20
xor rax, r13
add r10, rax
rol rax, 0x10
xor rax, r10
add r8, rax
rol rax, 0x15
add r10, rbp
rol rbp, 0x11
xor rax, r8
xor rbp, r10
rol r10, 0x20
xor r8, r13
add r8, rbp
rol rbp, 0xd
xor rbp, r8
rol r8, 0x20
xor r10, 0xff
add r10, rax
rol rax, 0x10
xor rax, r10
add r8, rax
rol rax, 0x15
add r10, rbp
rol rbp, 0x11
xor rbp, r10
rol r10, 0x20
xor rax, r8
add r8, rbp
rol rbp, 0xd
xor rbp, r8
rol r8, 0x20
add r10, rax
rol rax, 0x10
xor rax, r10
add r8, rax
rol rax, 0x15
add r10, rbp
rol rbp, 0x11
xor rbp, r10
rol r10, 0x20
xor rax, r8
add r8, rbp
rol rbp, 0xd
xor rbp, r8
add r10, rax
rol rax, 0x10
xor rax, r10
rol rax, 0x15
add r10, rbp
rol rbp, 0x11
mov rcx, r10
rol rcx, 0x20
xor rbp, r10
xor rbp, rcx
xor rbp, rax
mov rax, rbp
mov r14, qword [rsp + 0x88]
and rax, r14
mov rsi, qword [rsp + 0x80]
movdqu xmm0, xmmword [rsi + rax]
pmovmskb ecx, xmm0
mov rdx, rax
test ecx, ecx
mov r8, qword [rsp + 0x28]
jne 0x1400958f7
mov edi, 0x10
mov rdx, rax
nop dword [rax]
add rdx, rdi
and rdx, r14
movdqu xmm0, xmmword [rsi + rdx]
pmovmskb ecx, xmm0
add rdi, 0x10
test ecx, ecx
je 0x1400958e0
bsf cx, cx
movzx ebx, cx
add rbx, rdx
and rbx, r14
cmp byte [rsi + rbx], 0
js 0x140095919
movdqa xmm0, xmmword [rsi]
pmovmskb ecx, xmm0
bsf cx, cx
movzx ebx, cx
mov rdx, r8
sub rdx, rax
mov rcx, rbx
sub rcx, rax
xor rcx, rdx
and rcx, r14
cmp rcx, 0x10
jb 0x140095630
mov al, byte [rsi + rbx]
shr rbp, 0x39
lea rcx, [rbx - 0x10]
and rcx, r14
mov byte [rsi + rbx], bpl
mov byte [rcx + rsi + 0x10], bpl
cmp al, 0xff
je 0x1400959d0
not rbx
lea rax, [rbx + rbx*2]
shl rax, 4
movdqu xmm0, xmmword [rsi + rax]
movups xmm1, xmmword [rsi + rax + 0x10]
mov rcx, qword [rsp + 0x30]
movups xmm2, xmmword [rcx]
movups xmm3, xmmword [rcx + 0x10]
movups xmmword [rsi + rax + 0x10], xmm3
movups xmmword [rsi + rax], xmm2
movdqu xmmword [rcx], xmm0
movups xmmword [rcx + 0x10], xmm1
movups xmm1, xmmword [rsi + rax + 0x20]
movaps xmmword [rsp + 0x90], xmm1
mov rcx, qword [rsp + 0x78]
movups xmm1, xmmword [rcx + 0x10]
movups xmmword [rsi + rax + 0x20], xmm1
movdqa xmm1, xmmword [rsp + 0x90]
movdqu xmmword [rcx + 0x10], xmm1
movq r15, xmm0
mov r13, qword [rcx]
test r13, r13
jne 0x1400956a0
jmp 0x1400957c0
lea rax, [r8 - 0x10]
and rax, r14
mov byte [rsi + r8], 0xff
mov byte [rax + rsi + 0x10], 0xff
not rbx
lea rax, [rbx + rbx*2]
shl rax, 4
mov rcx, qword [rsp + 0x30]
movdqu xmm0, xmmword [rcx]
movdqu xmm1, xmmword [rcx + 0x10]
movups xmm2, xmmword [rcx + 0x20]
movups xmmword [rsi + rax + 0x20], xmm2
movdqu xmmword [rsi + rax + 0x10], xmm1
movdqu xmmword [rsi + rax], xmm0
jmp 0x140095644
mov rcx, qword [rsp + 0x70]
sub rcx, qword [rsp + 0x40]
mov rax, qword [rsp + 0x38]
mov qword [rax + 0x10], rcx
mov rax, qword [rsp + 0x48]
mov qword [rax], 0
jmp 0x140095c5b
mov eax, 0x10
add rsi, rax
lea r14, [rbx - 1]
shr rbx, 3
lea rax, [rbx*8]
sub rax, rbx
mov qword [rsp + 0x30], rax
mov rcx, rsi
mov dl, 0xff
mov r8, r13
call fcn.140092ff0
movq xmm0, rsi
movq xmm6, r14
punpcklqdq xmm6, xmm0
mov rax, qword [rsp + 0x38]
mov rdi, qword [rax + 8]
add r15, rdi
movdqa xmm0, xmmword [rdi]
pmovmskb r12d, xmm0
not r12d
lea r13, [rdi + 0x10]
mov rax, qword [rsp + 0x28]
mov rbp, qword [rax]
mov rax, qword [rax + 8]
mov qword [rsp + 0x28], rax
jmp 0x140095aea
shr rax, 0x39
lea rcx, [rdx - 0x10]
and rcx, r14
mov byte [rsi + rdx], al
mov byte [rcx + rsi + 0x10], al
not rdx
lea rax, [rdx + rdx*2]
shl rax, 4
movdqu xmm0, xmmword [rbx]
movdqu xmm1, xmmword [rbx + 0x10]
movups xmm2, xmmword [rbx + 0x20]
movups xmmword [rsi + rax + 0x20], xmm2
movdqu xmmword [rsi + rax + 0x10], xmm1
movdqu xmmword [rsi + rax], xmm0
test r12w, r12w
je 0x140095b00
lea ecx, [r12 - 1]
and ecx, r12d
mov eax, r12d
mov r12d, ecx
jmp 0x140095b33
cmp r13, r15
jae 0x140095bc5
movdqa xmm0, xmmword [r13]
pmovmskb eax, xmm0
add rdi, 0xfffffffffffffd00
add r13, 0x10
cmp ax, 0xffff
je 0x140095b00
mov ecx, 0xfffffffe
sub ecx, eax
not eax
mov r12d, eax
and r12d, ecx
bsf ax, ax
movzx eax, ax
not rax
lea rbx, [rax + rax*2]
shl rbx, 4
add rbx, rdi
mov rcx, rbp
mov rdx, qword [rsp + 0x28]
mov r8, rbx
call fcn.14003ba80
mov rcx, rax
and rcx, r14
movdqu xmm0, xmmword [rsi + rcx]
pmovmskb edx, xmm0
test edx, edx
jne 0x140095b9a
mov r8, rbp
mov ebp, 0x10
nop word cs:[rax + rax]
nop dword [rax]
add rcx, rbp
and rcx, r14
movdqu xmm0, xmmword [rsi + rcx]
pmovmskb edx, xmm0
add rbp, 0x10
test edx, edx
je 0x140095b80
mov rbp, r8
bsf dx, dx
movzx edx, dx
add rdx, rcx
and rdx, r14
cmp byte [rsi + rdx], 0
js 0x140095ab0
movdqa xmm0, xmmword [rsi]
pmovmskb ecx, xmm0
bsf cx, cx
movzx edx, cx
jmp 0x140095ab0
cmp r14, 8
mov rcx, qword [rsp + 0x30]
cmovb rcx, r14
mov rax, qword [rsp + 0x40]
sub rcx, rax
movq xmm1, rcx
movq xmm0, rax
punpcklqdq xmm1, xmm0
mov rax, qword [rsp + 0x38]
movdqu xmm0, xmmword [rax]
movdqu xmmword [rax], xmm6
movdqu xmmword [rax + 0x10], xmm1
mov rax, qword [rsp + 0x48]
mov qword [rax], 0
movq rcx, xmm0
test rcx, rcx
je 0x140095c5b
lea rax, [rcx + 1]
mov edx, 0x30
mul rdx
add rcx, rax
cmp rcx, 0xffffffffffffffef
je 0x140095c5b
pshufd xmm0, xmm0, 0xee
movq r8, xmm0
sub r8, rax
mov rcx, qword [0x140443578]
xor edx, edx
movaps xmm6, xmmword [rsp + 0xb0]
add rsp, 0xc8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp sub.kernel32.dll_HeapFree
movaps xmm6, xmmword [rsp + 0xb0]
add rsp, 0xc8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
ud2