Function at 0x140027e60
Capabilities:
Encrypt data using speck

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x108
movaps xmmword [rsp + 0xf0], xmm6
mov qword [rsp + 0x28], rcx
mov rax, qword [0x14018a040]
xor rax, rsp
mov qword [rsp + 0xe8], rax
movabs rax, 0xaaaaaaaaaaaaaaaa
lea rdi, [rsp + 0xd0]
mov qword [rdi + 0x10], rax
movaps xmm6, xmmword [0x14015feb0]
movaps xmmword [rdi], xmm6
mov rcx, rdx
mov rdx, rdi
call fcn.14003e4a0
xorps xmm0, xmm0
movaps xmmword [rsp + 0xb0], xmm0
mov qword [rsp + 0xc0], 0
mov rbx, qword [rdi + 8]
cmp rbx, qword [rdi]
je 0x140027eeb
xor eax, eax
lea r14, str.Program_Files__x86_
jmp 0x1400284d5
mov r15, qword [rsp + 0x28]
movabs rax, 0xaaaaaaaaaaaaaaaa
mov qword [r15 + 0x10], rax
movups xmmword [r15], xmm6
mov rcx, r15
call fcn.14008ba10
mov r14, qword [rsp + 0xb0]
mov rsi, qword [rsp + 0xb8]
cmp rsi, r14
je 0x140027fa7
add rsi, 0xffffffffffffffe8
lea rdi, [rsp + 0x78]
lea rbx, [rsp + 0x30]
jmp 0x140027f85
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x38], rax
mov rcx, rsi
test rax, rax
sete al
test rcx, rcx
setne cl
or cl, al
je 0x140027fa5
mov rcx, r15
mov rdx, rdi
mov r8, rbx
call fcn.14008c630
mov rcx, r15
mov rdx, rdi
call fcn.14003e2f0
mov rcx, rdi
call fcn.14008bbb0
mov r14, qword [rsp + 0xb0]
lea rax, [rsi - 0x18]
cmp rsi, r14
mov rsi, rax
je 0x140027fa7
movsx rax, byte [rsi + 0x17]
test rax, rax
jns 0x140027f33
mov rcx, qword [rsi]
mov rax, qword [rsi + 8]
mov qword [rsp + 0x30], rcx
mov qword [rsp + 0x38], rax
test rax, rax
jns 0x140027f40
ud2
test r14, r14
je 0x140027ff8
mov rsi, qword [rsp + 0xb8]
mov rcx, r14
cmp rsi, r14
je 0x140027feb
add rsi, 0xffffffffffffffe8
jmp 0x140027fd6
mov rcx, qword [rsi]
call fcn.1400b57e4
lea rax, [rsi - 0x18]
cmp rsi, r14
mov rsi, rax
je 0x140027fe3
test rsi, rsi
je 0x140027fa5
cmp byte [rsi + 0x17], 0
js 0x140027fc2
jmp 0x140027fca
mov rcx, qword [rsp + 0xb0]
mov qword [rsp + 0xb8], r14
call fcn.1400b57e4
mov rsi, qword [rsp + 0xd0]
test rsi, rsi
je 0x140028055
mov rdi, qword [rsp + 0xd8]
mov rcx, rsi
cmp rdi, rsi
je 0x140028048
add rdi, 0xffffffffffffffe8
jmp 0x14002802f
mov rcx, qword [rdi]
call fcn.1400b57e4
lea rax, [rdi - 0x18]
cmp rdi, rsi
mov rdi, rax
je 0x140028040
test rdi, rdi
je 0x140027fa5
cmp byte [rdi + 0x17], 0
js 0x14002801b
jmp 0x140028023
mov rcx, qword [rsp + 0xd0]
mov qword [rsp + 0xd8], rsi
call fcn.1400b57e4
mov rcx, qword [rsp + 0xe8]
xor rcx, rsp
cmp rcx, qword [0x14018a040]
je 0x14002806f
call fcn.1400b6ad0
int3
mov rax, r15
movaps xmm6, xmmword [rsp + 0xf0]
add rsp, 0x108
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov ecx, 0x20
call fcn.1400b57a8
mov r15, rax
add rax, 0x1a
lea rdx, str.Program_Files
cmp r15, rdx
seta cl
cmp rax, rdx
setbe al
or al, cl
je 0x140027fa5
movups xmm0, xmmword [0x140162a80]
movups xmmword [r15 + 0xa], xmm0
movups xmm0, xmmword [str.Program_Files]
movups xmmword [r15], xmm0
mov word [r15 + 0x1a], 0
mov rbp, qword [rsp + 0xb8]
mov rax, qword [rsp + 0xc0]
cmp rbp, rax
movabs r8, 0xaaaaaaaaaaaaaaab
jae 0x14002811f
test rbp, rbp
je 0x140027fa5
mov qword [rbp], r15
mov qword [rbp + 8], 0xd
movabs rax, 0x8000000000000010
mov qword [rbp + 0x10], rax
jmp 0x1400284b1
mov rcx, qword [rsp + 0xb0]
sub rbp, rcx
sar rbp, 3
imul rbp, r8
lea rsi, [rbp + 1]
movabs rdx, 0xaaaaaaaaaaaaaaa
cmp rsi, rdx
ja 0x1400287ba
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 0x1400287c7
cmp rsi, rdx
ja 0x1400287b5
lea rax, [rsi*8]
lea rcx, [rax + rax*2]
call fcn.1400b57a8
lea r13, [rbp*2]
add r13, rbp
shl r13, 3
add r13, rax
je 0x140027fa5
lea rcx, [rsi + rsi*2]
lea rsi, [rax + rcx*8]
mov qword [r13], r15
mov qword [r13 + 8], 0xd
movabs rax, 0x8000000000000010
mov qword [r13 + 0x10], rax
lea rbp, [r13 + 0x18]
mov rdx, qword [rsp + 0xb0]
mov r8, qword [rsp + 0xb8]
sub r8, rdx
sub r13, r8
mov rcx, r13
call fcn.1400e6f70
mov rcx, qword [rsp + 0xb0]
mov qword [rsp + 0xb0], r13
jmp 0x1400282f4
mov rax, qword [rsp + 0xb0]
sub rbp, rax
sar rbp, 3
movabs r8, 0xaaaaaaaaaaaaaaab
imul rbp, r8
lea rsi, [rbp + 1]
movabs rdx, 0xaaaaaaaaaaaaaaa
cmp rsi, rdx
ja 0x1400287ba
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 0x1400287ad
cmp rsi, rdx
ja 0x1400287b5
lea rax, [rsi*8]
lea rcx, [rax + rax*2]
call fcn.1400b57a8
mov r13, rax
lea r15, [rbp*2]
add r15, rbp
shl r15, 3
add r15, r13
je 0x140027fa5
cmp byte [rbx - 1], 0
jns 0x140028317
mov rdx, qword [rbx - 0x18]
mov r8, qword [rbx - 0x10]
mov rcx, r15
call fcn.1400868d0
lea rax, [rsi + rsi*2]
lea rsi, [rax*8]
add rsi, r13
lea rbp, [r15 + 0x18]
mov rdx, qword [rsp + 0xb0]
mov r8, qword [rsp + 0xb8]
sub r8, rdx
sub r15, r8
mov rcx, r15
call fcn.1400e6f70
mov rcx, qword [rsp + 0xb0]
mov qword [rsp + 0xb0], r15
mov qword [rsp + 0xb8], rbp
mov qword [rsp + 0xc0], rsi
test rcx, rcx
je 0x1400284b5
call fcn.1400b57e4
jmp 0x1400284b5
mov rax, qword [rdi + 0x10]
mov qword [r15 + 0x10], rax
movups xmm0, xmmword [rdi]
movups xmmword [r15], xmm0
jmp 0x1400282b3
mov rcx, qword [rbx - 0x18]
mov rax, qword [rbx - 0x10]
mov qword [rsp + 0x90], rcx
mov qword [rsp + 0x98], rax
test rax, rax
jns 0x140028398
jmp 0x140027fa5
mov rdx, qword [rbx - 0x18]
mov r8, qword [rbx - 0x10]
mov rcx, rbp
call fcn.1400868d0
jmp 0x1400284b1
lea rax, str..exe
mov qword [rsp + 0xa0], rax
mov qword [rsp + 0xa8], 4
movsx rax, byte [rbx - 1]
test rax, rax
js 0x140028328
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 0x140027fa5
lea rcx, [rsp + 0x90]
lea rdx, [rsp + 0xa0]
mov r8d, 1
call fcn.140102ed0
mov r9d, 1
test al, al
jne 0x1400284c0
lea rdi, [rbx - 0x18]
movsx rax, byte [rbx - 1]
mov rdx, rdi
mov rcx, rax
test rax, rax
jns 0x1400283fa
mov rcx, qword [rbx - 0x10]
test rcx, rcx
js 0x140027fa5
mov rdx, qword [rbx - 0x18]
test rcx, rcx
sete r8b
test rdx, rdx
setne r9b
or r9b, r8b
je 0x140027fa5
cmp rcx, 0x13
jne 0x140028478
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 + r14]
lea r11d, [r10 - 0x41]
lea ebp, [r10 + 0x20]
cmp r11w, 0x1a
cmovae ebp, r10d
cmp si, bp
jne 0x140028478
lea r10, [r9 + 2]
cmp r8, r9
je 0x140028465
cmp r9, 0x24
mov r9, r10
jne 0x140028422
add rcx, rcx
xor rcx, r10
xor r10, 0x26
or r10, rcx
je 0x14002808e
mov rbp, qword [rsp + 0xb8]
mov rcx, qword [rsp + 0xc0]
cmp rbp, rcx
jae 0x140028204
test rbp, rbp
je 0x140027fa5
test al, al
js 0x14002834a
mov rax, qword [rdi + 0x10]
mov qword [rbp + 0x10], rax
movups xmm0, xmmword [rdi]
movups xmmword [rbp], xmm0
add rbp, 0x18
mov qword [rsp + 0xb8], rbp
mov r9, r12
add rbx, 0xffffffffffffffe8
mov rax, r9
cmp rbx, qword [rsp + 0xd0]
je 0x140027eeb
lea r12, [rax + 1]
test rax, rax
je 0x14002835f
cmp r12, 2
jne 0x1400283d5
lea rdx, [rbx - 0x18]
movsx rcx, byte [rbx - 1]
mov r9, rdx
mov r8, rcx
test rcx, rcx
jns 0x140028511
mov r8, qword [rbx - 0x10]
test r8, r8
js 0x140027fa5
mov r9, qword [rbx - 0x18]
test r8, r8
sete r10b
test r9, r9
setne r11b
or r11b, r10b
je 0x140027fa5
cmp r8, 4
jne 0x1400285a6
lea r10, [r8*2 - 2]
lea r11, str.Temp
xor esi, esi
movzx edi, byte [r11]
movzx r15d, word [r9 + rsi]
lea ebp, [r15 - 0x41]
lea r13d, [r15 + 0x20]
cmp bp, 0x1a
cmovae r13d, r15d
movzx ebp, r13w
lea r15d, [rdi - 0x41]
lea r13d, [rdi + 0x20]
cmp r15b, 0x1a
movzx r15d, r13b
cmovae r15d, edi
movsx edi, r15b
cmp ebp, edi
jne 0x1400285a6
lea rdi, [rsi + 2]
cmp r10, rsi
je 0x14002858d
inc r11
cmp rsi, 6
mov rsi, rdi
jne 0x14002853f
add r8, r8
xor r8, rdi
xor rdi, 8
mov r9d, 2
or rdi, r8
je 0x1400284c0
test cl, cl
jns 0x1400285bb
mov rcx, qword [rbx - 0x10]
test rcx, rcx
js 0x140027fa5
mov rdx, qword [rbx - 0x18]
test rcx, rcx
sete r8b
test rdx, rdx
setne r9b
or r9b, r8b
je 0x140027fa5
cmp rcx, 0xb
jne 0x14002864e
lea r8, [rcx*2 - 2]
lea r9, [0x140162a41]
xor r10d, r10d
movzx r11d, byte [r9]
movzx esi, word [rdx + r10]
lea edi, [rsi - 0x41]
lea ebp, [rsi + 0x20]
cmp di, 0x1a
cmovae ebp, esi
movzx esi, bp
lea edi, [r11 - 0x41]
lea ebp, [r11 + 0x20]
cmp dil, 0x1a
movzx edi, bpl
cmovae edi, r11d
movsx r11d, dil
cmp esi, r11d
jne 0x14002864e
lea r11, [r10 + 2]
cmp r8, r10
je 0x140028635
inc r9
cmp r10, 0x14
mov r10, r11
jne 0x1400285ea
add rcx, rcx
xor rcx, r11
xor r11, 0x16
mov r9d, 2
or r11, rcx
je 0x1400284c0
lea rcx, [rbx - 0x18]
movsx rdx, byte [rbx - 1]
test rdx, rdx
js 0x140028760
mov r8, rcx
mov r9, rdx
test r8, r8
jne 0x140028674
test r9, r9
jne 0x140027fa5
cmp r9, 0xa
jb 0x1400286ad
cmp word [r8], 0x73
jne 0x1400286ad
cmp word [r8 + 2], 0x63
jne 0x1400286ad
cmp word [r8 + 4], 0x6f
jne 0x1400286ad
cmp word [r8 + 6], 0x70
jne 0x1400286ad
cmp word [r8 + 8], 0x65
jne 0x1400286ad
cmp word [r8 + 0xa], 0x64
je 0x140028775
test dl, dl
jns 0x1400286b4
mov rcx, qword [rcx]
mov qword [rsp + 0x40], rcx
test rcx, rcx
je 0x140027fa5
call fcn.1400d21d8
mov qword [rsp + 0x48], rax
lea rsi, [rsp + 0x50]
mov rcx, rsi
lea rdx, [rsp + 0x40]
call fcn.14008a440
movsx rcx, byte [rsp + 0x67]
test rcx, rcx
jns 0x1400286f3
mov rcx, qword [rsp + 0x58]
mov rsi, qword [rsp + 0x50]
mov qword [rsp + 0x68], rsi
mov qword [rsp + 0x70], rcx
test rcx, rcx
js 0x140027fa5
sete cl
test rsi, rsi
setne al
or al, cl
je 0x140027fa5
lea rsi, [rsp + 0x78]
mov rcx, rsi
lea rdx, [rsp + 0x68]
call fcn.14003c250
mov rcx, rsi
call fcn.14003c670
mov ebp, eax
mov rcx, rsi
call fcn.14003c220
cmp byte [rsp + 0x67], 0
jns 0x14002874c
mov rcx, qword [rsp + 0x50]
call fcn.1400b57e4
mov r9d, 1
test bpl, bpl
jne 0x1400284c0
jmp 0x1400283d5
mov r9, qword [rcx + 8]
test r9, r9
js 0x140027fa5
mov r8, qword [rcx]
jmp 0x140028666
cmp word [r8 + 0xc], 0x5f
jne 0x1400286ad
cmp word [r8 + 0xe], 0x64
jne 0x1400286ad
cmp word [r8 + 0x10], 0x69
jne 0x1400286ad
cmp word [r8 + 0x12], 0x72
mov r9, rax
je 0x1400284c0
jmp 0x1400286ad
xor r13d, r13d
jmp 0x140028285
sar dl, 1
invalid
invalid
call fcn.1400e8090
lea rcx, [rsp + 0xb0]
call fcn.1400e8290
xor eax, eax
jmp 0x140028193