Function at 0x14001a440
Capabilities:
Encrypt data using speck

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x118
movaps xmmword [rsp + 0x100], xmm7
movaps xmmword [rsp + 0xf0], xmm6
mov qword [rsp + 0x20], rcx
mov rax, qword [0x140160040]
xor rax, rsp
mov qword [rsp + 0xe8], rax
movabs rax, 0xaaaaaaaaaaaaaaaa
lea rdi, [rsp + 0xd0]
mov qword [rdi + 0x10], rax
movaps xmm6, xmmword [0x1401382b0]
movaps xmmword [rdi], xmm6
mov rcx, rdx
mov rdx, rdi
call fcn.1400cca20
xorps xmm7, xmm7
movaps xmmword [rsp + 0xb0], xmm7
mov qword [rsp + 0xc0], 0
mov rbx, qword [rdi + 8]
cmp rbx, qword [rdi]
je 0x14001a4d3
xor eax, eax
lea r12, str.Program_Files__x86_
jmp 0x14001aab1
mov r15, qword [rsp + 0x20]
movabs rax, 0xaaaaaaaaaaaaaaaa
mov qword [r15 + 0x10], rax
movups xmmword [r15], xmm6
mov rcx, r15
call fcn.14002d4d0
mov r14, qword [rsp + 0xb0]
mov rsi, qword [rsp + 0xb8]
cmp rsi, r14
je 0x14001a58f
add rsi, 0xffffffffffffffe8
lea rdi, [rsp + 0x70]
lea rbx, [rsp + 0x28]
jmp 0x14001a56d
mov qword [rsp + 0x28], rsi
mov qword [rsp + 0x30], rax
mov rcx, rsi
test rax, rax
sete al
test rcx, rcx
setne cl
or cl, al
je 0x14001a58d
mov rcx, r15
mov rdx, rdi
mov r8, rbx
call fcn.14002d950
mov rcx, r15
mov rdx, rdi
call fcn.14002d5a0
mov rcx, rdi
call fcn.14002d530
mov r14, qword [rsp + 0xb0]
lea rax, [rsi - 0x18]
cmp rsi, r14
mov rsi, rax
je 0x14001a58f
movsx rax, byte [rsi + 0x17]
test rax, rax
jns 0x14001a51b
mov rcx, qword [rsi]
mov rax, qword [rsi + 8]
mov qword [rsp + 0x28], rcx
mov qword [rsp + 0x30], rax
test rax, rax
jns 0x14001a528
ud2
test r14, r14
je 0x14001a5dc
mov rsi, qword [rsp + 0xb8]
mov rcx, r14
cmp rsi, r14
je 0x14001a5cf
add rsi, 0xffffffffffffffe8
test rsi, rsi
je 0x14001a58d
cmp byte [rsi + 0x17], 0
jns 0x14001a5bb
mov rcx, qword [rsi]
call fcn.140076410
lea rax, [rsi - 0x18]
cmp rsi, r14
mov rsi, rax
jne 0x14001a5a8
mov rcx, qword [rsp + 0xb0]
mov qword [rsp + 0xb8], r14
call fcn.140076410
mov rsi, qword [rsp + 0xd0]
test rsi, rsi
je 0x14001a631
mov rdi, qword [rsp + 0xd8]
mov rcx, rsi
cmp rdi, rsi
je 0x14001a624
add rdi, 0xffffffffffffffe8
test rdi, rdi
je 0x14001a58d
cmp byte [rdi + 0x17], 0
jns 0x14001a610
mov rcx, qword [rdi]
call fcn.140076410
lea rax, [rdi - 0x18]
cmp rdi, rsi
mov rdi, rax
jne 0x14001a5fd
mov rcx, qword [rsp + 0xd0]
mov qword [rsp + 0xd8], rsi
call fcn.140076410
mov rcx, qword [rsp + 0xe8]
xor rcx, rsp
call fcn.140077700
mov rax, r15
movaps xmm6, xmmword [rsp + 0xf0]
movaps xmm7, xmmword [rsp + 0x100]
add rsp, 0x118
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lea rcx, [rsp + 0x70]
lea rdx, str.Program_Files
call fcn.14001af60
mov rdi, qword [rsp + 0xb8]
mov rax, qword [rsp + 0xc0]
cmp rdi, rax
jb 0x14001a79d
mov rcx, qword [rsp + 0xb0]
sub rdi, rcx
sar rdi, 3
movabs r8, 0xaaaaaaaaaaaaaaab
imul rdi, r8
lea rsi, [rdi + 1]
movabs rdx, 0xaaaaaaaaaaaaaaa
cmp rsi, rdx
ja 0x14001ad96
sub rax, rcx
sar rax, 3
imul rax, r8
lea rcx, [rax + rax]
cmp rcx, rsi
cmova rsi, rcx
movabs rcx, 0x555555555555555
cmp rax, rcx
cmovae rsi, rdx
test rsi, rsi
je 0x14001adbf
cmp rsi, rdx
ja 0x14001ad91
lea rax, [rsi*8]
lea rcx, [rax + rax*2]
call fcn.1400763d4
lea r14, [rdi + rdi*2]
shl r14, 3
add r14, rax
je 0x14001a58d
lea rcx, [rsi + rsi*2]
lea rsi, [rax + rcx*8]
mov rax, qword [rsp + 0x80]
mov qword [r14 + 0x10], rax
movaps xmm0, xmmword [rsp + 0x70]
movups xmmword [r14], xmm0
movaps xmmword [rsp + 0x70], xmm7
mov qword [rsp + 0x80], 0
lea rdi, [r14 + 0x18]
mov rdx, qword [rsp + 0xb0]
mov r8, qword [rsp + 0xb8]
sub r8, rdx
sub r14, r8
mov rcx, r14
call fcn.1400a9760
mov rcx, qword [rsp + 0xb0]
mov qword [rsp + 0xb0], r14
mov qword [rsp + 0xb8], rdi
mov qword [rsp + 0xc0], rsi
test rcx, rcx
je 0x14001a7cf
call fcn.140076410
jmp 0x14001a7cf
test rdi, rdi
je 0x14001a58d
mov rax, qword [rsp + 0x80]
mov qword [rdi + 0x10], rax
movaps xmm0, xmmword [rsp + 0x70]
movups xmmword [rdi], xmm0
movaps xmmword [rsp + 0x70], xmm7
mov qword [rsp + 0x80], 0
add rdi, 0x18
mov qword [rsp + 0xb8], rdi
cmp byte [rsp + 0x87], 0
jns 0x14001aa99
mov rcx, qword [rsp + 0x70]
call fcn.140076410
jmp 0x14001aa99
mov rax, qword [rsp + 0xb0]
sub r14, rax
sar r14, 3
movabs r8, 0xaaaaaaaaaaaaaaab
imul r14, r8
lea rsi, [r14 + 1]
movabs rdx, 0xaaaaaaaaaaaaaaa
cmp rsi, rdx
ja 0x14001ad96
sub rcx, rax
sar rcx, 3
imul rcx, r8
lea rax, [rcx + rcx]
cmp rax, rsi
cmova rsi, rax
movabs rax, 0x555555555555555
cmp rcx, rax
cmovae rsi, rdx
test rsi, rsi
je 0x14001ada3
cmp rsi, rdx
ja 0x14001ad91
lea rax, [rsi*8]
lea rcx, [rax + rax*2]
call fcn.1400763d4
mov rbp, rax
lea r13, [r14 + r14*2]
shl r13, 3
add r13, rbp
je 0x14001a58d
cmp byte [rbx - 1], 0
jns 0x14001adaa
mov rdx, qword [rbx - 0x18]
mov r8, qword [rbx - 0x10]
mov rcx, r13
call fcn.140028ff0
lea rax, [rsi + rsi*2]
lea rsi, [rax*8]
add rsi, rbp
lea r14, [r13 + 0x18]
mov rdx, qword [rsp + 0xb0]
mov r8, qword [rsp + 0xb8]
sub r8, rdx
sub r13, r8
mov rcx, r13
call fcn.1400a9760
mov rcx, qword [rsp + 0xb0]
mov qword [rsp + 0xb0], r13
mov qword [rsp + 0xb8], r14
mov qword [rsp + 0xc0], rsi
test rcx, rcx
je 0x14001aa91
call fcn.140076410
jmp 0x14001aa91
mov rcx, qword [rbx - 0x18]
mov rax, qword [rbx - 0x10]
mov qword [rsp + 0x90], rcx
mov qword [rsp + 0x98], rax
test rax, rax
jns 0x14001a974
jmp 0x14001a58d
mov rdx, qword [rbx - 0x18]
mov r8, qword [rbx - 0x10]
mov rcx, r14
call fcn.140028ff0
jmp 0x14001aa8d
lea rax, str..exe
mov qword [rsp + 0xa0], rax
mov qword [rsp + 0xa8], 4
movsx rax, byte [rbx - 1]
test rax, rax
js 0x14001a904
lea rcx, [rbx - 0x18]
mov qword [rsp + 0x90], rcx
mov qword [rsp + 0x98], rax
test rax, rax
sete al
test rcx, rcx
setne cl
or cl, al
je 0x14001a58d
lea rcx, [rsp + 0x90]
lea rdx, [rsp + 0xa0]
mov r8d, 1
call fcn.1400c69d0
mov r9d, 1
test al, al
jne 0x14001aa9c
lea rdi, [rbx - 0x18]
movsx rax, byte [rbx - 1]
mov rdx, rdi
mov rcx, rax
test rax, rax
jns 0x14001a9d6
mov rcx, qword [rbx - 0x10]
test rcx, rcx
js 0x14001a58d
mov rdx, qword [rbx - 0x18]
test rcx, rcx
sete r8b
test rdx, rdx
setne r9b
or r9b, r8b
je 0x14001a58d
cmp rcx, 0x13
jne 0x14001aa54
lea r8, [rcx*2 - 2]
xor r9d, r9d
movzx r10d, word [rdx + r9]
lea r11d, [r10 - 0x41]
lea esi, [r10 + 0x20]
cmp r11w, 0x1a
cmovae esi, r10d
movzx r10d, word [r9 + r12]
lea r11d, [r10 - 0x41]
lea ebp, [r10 + 0x20]
cmp r11w, 0x1a
cmovae ebp, r10d
cmp si, bp
jne 0x14001aa54
lea r10, [r9 + 2]
cmp r8, r9
je 0x14001aa41
cmp r9, 0x24
mov r9, r10
jne 0x14001a9fe
add rcx, rcx
xor rcx, r10
xor r10, 0x26
or r10, rcx
je 0x14001a668
mov r14, qword [rsp + 0xb8]
mov rcx, qword [rsp + 0xc0]
cmp r14, rcx
jae 0x14001a7f4
test r14, r14
je 0x14001a58d
test al, al
js 0x14001a926
mov rax, qword [rdi + 0x10]
mov qword [r14 + 0x10], rax
movups xmm0, xmmword [rdi]
movups xmmword [r14], xmm0
add r14, 0x18
mov qword [rsp + 0xb8], r14
mov r9, r15
add rbx, 0xffffffffffffffe8
mov rax, r9
cmp rbx, qword [rsp + 0xd0]
je 0x14001a4d3
lea r15, [rax + 1]
test rax, rax
je 0x14001a93b
cmp r15, 2
jne 0x14001a9b1
lea rcx, [rbx - 0x18]
movsx rdx, byte [rbx - 1]
mov r9, rcx
mov r8, rdx
test rdx, rdx
jns 0x14001aaed
mov r8, qword [rbx - 0x10]
test r8, r8
js 0x14001a58d
mov r9, qword [rbx - 0x18]
test r8, r8
sete r10b
test r9, r9
setne r11b
or r11b, r10b
je 0x14001a58d
cmp r8, 4
jne 0x14001ab82
lea r10, [r8*2 - 2]
lea r11, str.Temp
xor esi, esi
movzx edi, byte [r11]
movzx r14d, word [r9 + rsi]
lea ebp, [r14 - 0x41]
lea r13d, [r14 + 0x20]
cmp bp, 0x1a
cmovae r13d, r14d
movzx ebp, r13w
lea r14d, [rdi - 0x41]
lea r13d, [rdi + 0x20]
cmp r14b, 0x1a
movzx r14d, r13b
cmovae r14d, edi
movsx edi, r14b
cmp ebp, edi
jne 0x14001ab82
lea rdi, [rsi + 2]
cmp r10, rsi
je 0x14001ab69
inc r11
cmp rsi, 6
mov rsi, rdi
jne 0x14001ab1b
add r8, r8
xor r8, rdi
xor rdi, 8
mov r9d, 2
or rdi, r8
je 0x14001aa9c
mov r9, rcx
mov r8, rdx
test dl, dl
jns 0x14001ab9d
mov r8, qword [rbx - 0x10]
test r8, r8
js 0x14001a58d
mov r9, qword [rbx - 0x18]
test r8, r8
sete r10b
test r9, r9
setne r11b
or r11b, r10b
je 0x14001a58d
cmp r8, 0xb
jne 0x14001ac32
lea r10, [r8*2 - 2]
lea r11, [0x140138481]
xor esi, esi
movzx edi, byte [r11]
movzx r14d, word [r9 + rsi]
lea ebp, [r14 - 0x41]
lea r13d, [r14 + 0x20]
cmp bp, 0x1a
cmovae r13d, r14d
movzx ebp, r13w
lea r14d, [rdi - 0x41]
lea r13d, [rdi + 0x20]
cmp r14b, 0x1a
movzx r14d, r13b
cmovae r14d, edi
movsx edi, r14b
cmp ebp, edi
jne 0x14001ac32
lea rdi, [rsi + 2]
cmp r10, rsi
je 0x14001ac19
inc r11
cmp rsi, 0x14
mov rsi, rdi
jne 0x14001abcb
add r8, r8
xor r8, rdi
xor rdi, 0x16
mov r9d, 2
or rdi, r8
je 0x14001aa9c
mov r8, rcx
mov r9, rdx
test dl, dl
jns 0x14001ac4d
mov r9, qword [rbx - 0x10]
test r9, r9
js 0x14001a58d
mov r8, qword [rbx - 0x18]
test r9, r9
sete r10b
test r8, r8
setne r11b
or r11b, r10b
je 0x14001a58d
cmp r9, 0xa
jb 0x14001aca6
test r8, r8
je 0x14001a58d
cmp word [r8], 0x73
jne 0x14001aca6
cmp word [r8 + 2], 0x63
jne 0x14001aca6
cmp word [r8 + 4], 0x6f
jne 0x14001aca6
cmp word [r8 + 6], 0x70
jne 0x14001aca6
cmp word [r8 + 8], 0x65
jne 0x14001aca6
cmp word [r8 + 0xa], 0x64
je 0x14001ad59
test dl, dl
jns 0x14001acad
mov rcx, qword [rcx]
mov qword [rsp + 0x38], rcx
test rcx, rcx
je 0x14001a58d
call fcn.1400930c8
mov qword [rsp + 0x40], rax
lea rsi, [rsp + 0x48]
mov rcx, rsi
lea rdx, [rsp + 0x38]
call fcn.140060630
movsx rcx, byte [rsp + 0x5f]
test rcx, rcx
jns 0x14001acec
mov rcx, qword [rsp + 0x50]
mov rsi, qword [rsp + 0x48]
mov qword [rsp + 0x60], rsi
mov qword [rsp + 0x68], rcx
test rcx, rcx
js 0x14001a58d
sete cl
test rsi, rsi
setne al
or al, cl
je 0x14001a58d
lea rsi, [rsp + 0x70]
mov rcx, rsi
lea rdx, [rsp + 0x60]
call fcn.14002bfc0
mov rcx, rsi
call fcn.14002c390
mov ebp, eax
mov rcx, rsi
call fcn.14002bf90
cmp byte [rsp + 0x5f], 0
jns 0x14001ad45
mov rcx, qword [rsp + 0x48]
call fcn.140076410
mov r9d, 1
test bpl, bpl
je 0x14001a9b1
jmp 0x14001aa9c
cmp word [r8 + 0xc], 0x5f
jne 0x14001aca6
cmp word [r8 + 0xe], 0x64
jne 0x14001aca6
cmp word [r8 + 0x10], 0x69
jne 0x14001aca6
cmp word [r8 + 0x12], 0x72
mov r9, rax
je 0x14001aa9c
jmp 0x14001aca6
call fcn.1400aae10
lea rcx, [rsp + 0xb0]
call fcn.1400ab000
xor ebp, ebp
jmp 0x14001a875
mov rax, qword [rdi + 0x10]
mov qword [r13 + 0x10], rax
movups xmm0, xmmword [rdi]
movups xmmword [r13], xmm0
jmp 0x14001a8a0
xor eax, eax
jmp 0x14001a710