Function at 0x14031ac60
Capabilities:
Encode data using base64
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 ebp, ecx
mov rax, qword [0x14050c9a8]
xor rax, rsp
mov qword [rsp + 0xe8], rax
mov rax, qword [0x1405011e8]
movsxd r8, dword [rax]
nop dword [rax]
mov ecx, dword [0x14051ff54]
cmp ecx, 0x2c
jg 0x14031acbc
mov ecx, dword [0x14051ff50]
lea edx, [rcx - 1]
imul edx, ecx
test dl, 1
je 0x14031acc9
mov ecx, dword [0x14051ff54]
cmp ecx, 0x56
jge 0x14031aca0
jmp 0x14031acab
add r8, rax
nop dword [rax]
mov eax, dword [0x14051ff54]
cmp eax, 0x3d
jg 0x14031acf2
mov ebx, dword [0x140410a80]
mov eax, dword [0x14051ff50]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
je 0x14031ad0b
mov eax, dword [0x140410a80]
mov eax, dword [0x14051ff50]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
jne 0x14031acd0
jmp 0x14031acdb
mov r14d, ebp
not r14d
test bpl, 3
je 0x14031b209
mov qword [rsp + 0x88], r8
xorps xmm6, xmm6
movaps xmmword [rsp + 0xa0], xmm6
mov dword [rsp + 0xb0], 0
mov dword [rsp + 0x20], 0x194feac2
lea r8, [rsp + 0xa0]
xor ecx, ecx
xor edx, edx
mov r9d, 0x9c557aae
call fcn.14031c6b0
test rax, rax
je 0x14031b210
mov r12, rax
mov eax, ebp
xor eax, 1
mov r15d, ebp
xor r15d, 0xfffffffe
mov dword [rsp + 0x58], r14d
and r15d, r14d
or r15d, eax
mov qword [rsp + 0x98], 0
mov qword [rsp + 0x90], 0
movaps xmm0, xmmword [0x140410680]
movaps xmmword [rsp + 0xc0], xmm0
movabs rax, 0x7177382156783b35
mov qword [rsp + 0xd0], rax
mov dword [rsp + 0xd8], 0x180f6c7b
mov dword [rsp + 0x20], 0x8a462cb0
lea r14, [rsp + 0xc0]
mov rcx, r14
mov edx, 7
mov r8d, 0xc5b7b9a6
mov r9d, 0x8b4a67dd
call fcn.14031c820
mov qword [rsp + 0x90], 0
mov dword [rsp + 0x40], 0xfc8c5b47
mov dword [rsp + 0x38], 0xde0f86b8
mov dword [rsp + 0x30], 0
mov dword [rsp + 0x28], 0
mov qword [rsp + 0x20], 0
xor edi, edi
lea r9, [rsp + 0x90]
xor ecx, ecx
xor edx, edx
mov r8, r14
call fcn.14031c620
mov qword [rsp + 0x80], rax
movaps xmmword [rsp + 0xc0], xmm6
movaps xmmword [rsp + 0xd0], xmm6
mov qword [rsp + 0x90], 0
mov dword [rsp + 0x38], 0x58fe2a01
mov dword [rsp + 0x30], 0x194feac2
mov qword [rsp + 0x28], 0
mov dword [rsp + 0x20], 0
lea r8, [rsp + 0x98]
mov ecx, 1
xor edx, edx
xor r9d, r9d
call fcn.14031c740
cmp eax, 1
je 0x14031aea0
mov qword [rsp + 0x98], 0
not r15d
mov dword [rsp + 0x28], 0xc7cd9a3
mov dword [rsp + 0x20], 0x13576210
xor ecx, ecx
xor edx, edx
xor r8d, r8d
xor r9d, r9d
call fcn.14031c680
mov qword [rsp + 0x68], rax
xor eax, eax
mov qword [rsp + 0x78], rax
mov qword [rsp + 0x70], r12
xor eax, eax
mov qword [rsp + 0x60], rax
mov dword [rsp + 0x54], ebp
mov dword [rsp + 0x5c], r15d
jmp 0x14031af00
mov eax, dword [r12]
add r12, rax
test r13d, r13d
je 0x14031b19d
mov r13d, dword [r12]
test r15d, r15d
je 0x14031b00b
xor ebp, ebp
cmp word [r12 + 0x38], 0
je 0x14031b000
cmp word [r12 + 0x3a], 0
je 0x14031b000
cmp qword [r12 + 0x40], 0
je 0x14031b000
xor ebp, ebp
mov edx, 0xb
lea r15, [0x1404106b0]
jmp 0x14031af60
mov edx, dword [r15 + 0x14]
add r15, 0x14
test edx, edx
je 0x14031b000
movzx eax, word [r12 + 0x38]
shr eax, 1
cmp edx, eax
jne 0x14031af50
mov rax, qword [r12 + 0x40]
mov rcx, qword [r15 + 4]
mov edx, edx
dec rdx
xor r8d, r8d
xor r9d, r9d
movzx r10d, byte [rcx + r9]
cmp r10d, 0x2a
je 0x14031afc2
cmp r10d, 0x3f
je 0x14031afc2
mov r11d, 0xfffffffe
xor r11, r8
not r11
and r11, r8
movzx r11d, byte [rax + r11]
lea esi, [r11 - 0x41]
lea r14d, [r11 + 0x20]
cmp sil, 0x1a
movzx esi, r14b
cmovae esi, r11d
xor sil, 0x33
cmp sil, r10b
jne 0x14031af50
cmp rdx, r9
je 0x14031afd0
add r8, 2
inc r9
jmp 0x14031af80
mov rax, qword [rsp + 0x80]
test rax, rax
je 0x14031af50
mov rcx, qword [r12 + 0x50]
call qword [case.0x1400f5c95.0]
test eax, eax
je 0x14031af50
or ebp, dword [r15 + 0xc]
jmp 0x14031af50
or edi, ebp
mov ebp, dword [rsp + 0x54]
mov r15d, dword [rsp + 0x5c]
cmp qword [rsp + 0xac], 0
je 0x14031aef0
mov rax, qword [rsp + 0x98]
test rax, rax
je 0x14031b050
mov rcx, qword [r12 + 0x50]
cmp qword [rsp + 0x68], rcx
jne 0x14031b03f
mov rax, qword [r12 + 0x58]
mov qword [rsp + 0x78], rax
jmp 0x14031b050
cmp rax, rcx
mov rax, qword [rsp + 0x60]
cmove rax, r12
mov qword [rsp + 0x60], rax
mov ecx, ebp
shr ecx, 8
test ebp, 0x100
sete dl
mov rax, qword [rsp + 0x68]
cmp rax, qword [r12 + 0x50]
sete r8b
setne al
xor al, dl
and r8b, cl
or r8b, al
cmp r8b, 1
jne 0x14031aef0
test al, al
jne 0x14031aef0
mov dword [rsp + 0x28], 0xc7cd9a3
mov dword [rsp + 0x20], 0x13576210
xor ecx, ecx
xor edx, edx
xor r8d, r8d
xor r9d, r9d
call fcn.14031c680
cmp dword [r12 + 4], 0
je 0x14031aef0
mov rcx, qword [rsp + 0xac]
mov edx, dword [rcx + 4]
test rdx, rdx
je 0x14031aef0
mov ecx, edx
and ecx, 3
cmp edx, 4
jae 0x14031b120
xor edx, edx
test rcx, rcx
je 0x14031aef0
lea rdx, [rdx + rdx*4]
shl rdx, 4
add rdx, r12
add rdx, 0x128
lea rcx, [rcx + rcx*4]
shl rcx, 4
add rcx, 0xffffffffffffffb0
xor r8d, r8d
nop
mov r9d, edi
or edi, 0x2000
cmp qword [rdx + r8], rax
cmove edi, r9d
cmp rcx, r8
je 0x14031aef0
add r8, 0x50
jmp 0x14031b100
mov r8d, 0xfffffffe
add r8d, 0xfffffffe
xor r8d, edx
not r8d
and r8d, 0xfffffffc
lea r9, [r12 + 0x218]
mov edx, 4
nop word cs:[rax + rax]
mov r10d, edi
mov r11, qword [r9 - 0xf0]
xor r11, rax
or edi, 0x2000
mov rsi, qword [r9 - 0xa0]
xor rsi, rax
or rsi, r11
mov r11, qword [r9 - 0x50]
xor r11, rax
mov r14, qword [r9]
xor r14, rax
or r14, r11
or r14, rsi
cmove edi, r10d
cmp r8, rdx
je 0x14031b0d4
add r9, 0x140
add rdx, 4
jmp 0x14031b150
mov rcx, qword [rsp + 0x98]
test rcx, rcx
je 0x14031b23b
cmp qword [rsp + 0x78], 0
je 0x14031b23b
mov rax, qword [rsp + 0x60]
test rax, rax
mov r13, qword [rsp + 0x70]
je 0x14031b24a
mov rax, qword [rax + 0x20]
mov rdx, qword [rsp + 0xac]
mov rdx, qword [rdx + 0x20]
xor r8d, r8d
mov r9d, dword [0x14051ff50]
lea r10d, [r9 - 1]
imul r10d, r9d
test r10b, 1
jne 0x14031b1fa
test r8b, r8b
je 0x14031b21a
mov r9d, dword [0x14051ff54]
cmp r9d, 0x1e
jge 0x14031b1e0
jmp 0x14031b1f5
xor edi, edi
jmp 0x14031b4ad
mov edi, 1
jmp 0x14031b4ad
mov r8d, dword [0x1405011e0]
lea esi, [r8 + 1]
mov r9d, dword [0x14051ff54]
cmp r9d, 0x4e
jg 0x14031b8f4
jmp 0x14031b8d9
mov r14d, dword [rsp + 0x58]
mov r13, qword [rsp + 0x70]
jmp 0x14031b481
mov r14d, dword [rsp + 0x58]
jmp 0x14031b481
call qword [case.0x1400f5c95.0]
mov edx, edi
or edx, 2
mov rcx, qword [rsp + 0x78]
cmp qword [rsp + 0x98], rcx
cmove edx, edi
test eax, eax
cmove edx, edi
mov rax, qword [rsp + 0x60]
cmp word [rax + 0x38], 0
je 0x14031b450
cmp word [rax + 0x3a], 0
je 0x14031b450
cmp qword [rax + 0x40], 0
je 0x14031b450
mov dword [rsp + 0x5c], edx
xor edi, edi
lea r13, [0x1404106b0]
mov eax, 0xb
mov bl, 1
mov dword [rsp + 0x68], 0
jmp 0x14031b2d0
mov eax, dword [r13 + 0x14]
add r13, 0x14
test eax, eax
je 0x14031b458
mov rcx, qword [rsp + 0x60]
movzx ecx, word [rcx + 0x38]
shr ecx, 1
nop dword [rax + rax]
mov edx, dword [0x14051ff50]
lea r8d, [rdx - 1]
imul r8d, edx
test r8b, 1
jne 0x14031b307
mov rdx, qword [0x140410980]
mov r8, qword [0x140410978]
test dil, dil
je 0x14031b320
mov rdx, qword [0x140410980]
mov rdx, qword [0x140410978]
test bl, bl
je 0x14031b2e0
jmp 0x14031b2f4
mov r9d, dword [0x14051ff50]
nop word [rax + rax]
xor r9d, r9d
test esi, esi
setne r10b
mov r11d, dword [0x14051ff50]
lea ebp, [r11 + 1]
imul ebp, r11d
test bpl, 1
jne 0x14031b330
mov r9b, r10b
mov r10, r9
movabs r11, 0xe14742b355fd033f
xor r10, r11
lea r9, [r10 + r9*2]
movabs r10, 0x1eb8bd4caa02fcc0
add r9, r10
mov r10d, 0
adc r10, 0xffffffffffffffff
sub r8, r15
sbb rdx, r12
and r8, r9
and rdx, r10
or rdx, r8
add qword [0x14051d328], rdx
cmp eax, ecx
jne 0x14031b2c0
mov rcx, qword [rsp + 0x60]
mov rcx, qword [rcx + 0x40]
mov rdx, qword [r13 + 4]
mov eax, eax
dec rax
mov r8, 0xffffffffffffffff
xor r9d, r9d
nop word cs:[rax + rax]
movzx r10d, byte [rdx + r9]
cmp r10d, 0x2a
je 0x14031b40f
cmp r10d, 0x3f
je 0x14031b40f
mov r11d, 0xfffffffe
not r11
mov r14, r11
xor r14, r8
and r14, r11
or r14, r8
not r14
movzx r11d, byte [rcx + r14]
lea ebp, [r11 - 0x41]
lea r14d, [r11 + 0x20]
cmp bpl, 0x1a
movzx ebp, r14b
cmovae ebp, r11d
xor bpl, 0x33
cmp bpl, r10b
jne 0x14031b2c0
cmp rax, r9
je 0x14031b420
add r8, 0xfffffffffffffffe
inc r9
jmp 0x14031b3c0
mov rax, qword [rsp + 0x60]
mov rcx, qword [rax + 0x50]
mov rax, qword [rsp + 0x80]
call qword [case.0x1400f5c95.0]
test eax, eax
je 0x14031b2c0
mov eax, dword [rsp + 0x68]
or eax, dword [r13 + 0xc]
mov dword [rsp + 0x68], eax
jmp 0x14031b2c0
mov edi, edx
mov ebp, dword [rsp + 0x54]
jmp 0x14031b481
mov ecx, dword [rsp + 0x68]
test ecx, ecx
mov ebp, dword [rsp + 0x54]
mov r14d, dword [rsp + 0x58]
mov r13, qword [rsp + 0x70]
je 0x14031b47b
mov eax, dword [rsp + 0x5c]
or eax, ecx
or eax, 0x8000
jmp 0x14031b47f
mov eax, dword [rsp + 0x5c]
mov edi, eax
mov qword [rsp + 0x98], 0
mov dword [rsp + 0x20], 0x43e94188
mov ecx, 1
mov edx, 1
mov r8, r13
mov r9d, 0x513026ae
call fcn.14031c7d0
test bpl, 0x1c
je 0x14031b619
mov dword [rsp + 0x20], 0x194feac2
xor ecx, ecx
mov edx, 1
xor r8d, r8d
mov r9d, 0x9c557aae
call fcn.14031c6b0
test rax, rax
je 0x14031b619
mov rbx, rax
mov eax, ebp
xor eax, 0xfffffffb
mov dword [rsp + 0xa0], 0
mov dword [rsp + 0x98], 0
mov qword [rsp + 0xc0], 0
mov dword [rsp + 0x90], 1
test eax, ebp
je 0x14031b555
lea rax, [rsp + 0xa0]
mov qword [rsp + 0x20], rax
lea r8, [rsp + 0x98]
mov rcx, 0xffffffffffffffff
mov edx, 7
mov r9d, 4
mov rax, rbx
call qword [case.0x1400f5c95.0]
test eax, eax
je 0x14031b555
mov dword [rsp + 0x98], 0
test bpl, 8
je 0x14031b59b
lea rax, [rsp + 0xa0]
mov qword [rsp + 0x20], rax
lea r8, [rsp + 0xc0]
mov rcx, 0xffffffffffffffff
mov edx, 0x1e
mov r9d, 8
mov rax, rbx
call qword [case.0x1400f5c95.0]
test eax, eax
je 0x14031b59b
mov qword [rsp + 0xc0], 0
test bpl, 0x10
je 0x14031b5e0
lea rax, [rsp + 0xa0]
mov qword [rsp + 0x20], rax
lea r8, [rsp + 0x90]
mov rcx, 0xffffffffffffffff
mov edx, 0x1f
mov r9d, 4
mov rax, rbx
call qword [case.0x1400f5c95.0]
test eax, eax
je 0x14031b5e0
mov dword [rsp + 0x90], 1
mov eax, edi
or eax, 0x100
cmp dword [rsp + 0x98], 0
cmove eax, edi
mov ecx, eax
or ecx, 0x200
cmp qword [rsp + 0xc0], 0
cmove ecx, eax
mov edi, ecx
or edi, 0x400
cmp dword [rsp + 0x90], 0
cmovne edi, ecx
mov eax, ebp
xor eax, 0x20
mov ecx, r14d
and ecx, 0xffffffdf
or ecx, eax
cmp ecx, 0xffffffff
je 0x14031b64e
xor ecx, ecx
mov edx, 0x1d23e53b
mov r8d, 0x9f8c0d17
call fcn.14031c800
test rax, rax
je 0x14031b64e
cmp byte [rax + 2], 0
je 0x14031b64e
or edi, 0x800
test bpl, bpl
jns 0x14031b684
xor ecx, ecx
mov edx, 0x1d23e53b
mov r8d, 0x9f8c0d17
call fcn.14031c800
test rax, rax
je 0x14031b684
mov rax, qword [rax + 0x20]
test rax, rax
je 0x14031b684
mov ecx, dword [0x14051d3d4]
add ecx, dword [rax + 0xc]
je 0x14031b684
or edi, 0x1000
test ebp, 0x200
je 0x14031b6b0
mov ecx, 0x8a5d69ee
mov edx, 0xde0f86b8
mov r8d, 0xebc58969
call fcn.14031c8a0
mov ecx, edi
or ecx, 0x40000
test al, al
cmove ecx, edi
mov edi, ecx
mov eax, ebp
xor eax, 0x400
mov ecx, r14d
and ecx, 0xfffffbff
or ecx, eax
cmp ecx, 0xffffffff
je 0x14031b6d2
mov ecx, ebp
call fcn.14031b9f0
or eax, edi
mov edi, eax
test ebp, 0x1000
je 0x14031b6fe
mov ecx, 0x8a5d69ee
mov edx, 0xde0f86b8
mov r8d, 0xebc58969
call fcn.14031c8a0
mov ecx, edi
or ecx, 0x200000
test al, al
cmove ecx, edi
mov edi, ecx
mov eax, r14d
and eax, 0x2000
mov ecx, ebp
and ecx, 0xffffdfff
or ecx, eax
mov eax, r14d
and eax, 0xffffdfff
or eax, ecx
cmp eax, 0xffffffff
je 0x14031b77c
mov dword [rsp + 0x40], 0xfc8c5b47
mov dword [rsp + 0x38], 0xde0f86b8
mov dword [rsp + 0x30], 0
mov dword [rsp + 0x28], 0
mov qword [rsp + 0x20], 0
mov ecx, 1
mov edx, 1
xor r8d, r8d
xor r9d, r9d
call fcn.14031c620
test rax, rax
je 0x14031b77c
cmp qword [rax + 0x16a0], 0
jne 0x14031b776
cmp qword [rax + 0x16a8], 0
je 0x14031b77c
or edi, 0x400000
test ebp, 0x10000
je 0x14031b795
call fcn.14031c0c0
mov ecx, edi
or ecx, 8
test al, al
cmove ecx, edi
mov edi, ecx
mov eax, ebp
xor eax, 0x4000
and r14d, 0xffffbfff
or r14d, eax
cmp r14d, 0xffffffff
je 0x14031b83b
mov dword [rsp + 0x28], 0xc7cd9a3
mov dword [rsp + 0x20], 0x13576210
mov ecx, 1
mov edx, 1
xor r8d, r8d
xor r9d, r9d
call fcn.14031c680
test rax, rax
je 0x14031b83b
mov rbx, rax
mov dword [rsp + 0x20], 0x43e94188
mov ecx, 1
xor edx, edx
xor r8d, r8d
mov r9d, 0x513026ae
call fcn.14031c7d0
test eax, eax
je 0x14031b83b
movzx eax, al
cmp eax, 0xa
ja 0x14031b83b
cmp eax, 6
mov eax, 0x70
mov ecx, 0x14
cmovae rcx, rax
add rcx, qword [0x14051d328]
mov eax, dword [rbx + rcx]
shr eax, 7
mov ecx, eax
not ecx
xor eax, 0x800000
and ecx, 0xff7fffff
or ecx, eax
not ecx
or ecx, edi
mov edi, ecx
xor bp, 0x7fff
jns 0x14031b8ab
mov dword [rsp + 0x20], 0x194feac2
mov ecx, 1
mov edx, 1
xor r8d, r8d
mov r9d, 0x9c557aae
call fcn.14031c6b0
test rax, rax
je 0x14031b8ab
mov qword [rsp + 0x28], 0
mov dword [rsp + 0x20], 0
mov ecx, 7
xor edx, edx
xor r8d, r8d
xor r9d, r9d
call qword [case.0x1400f5c95.0]
xor eax, 0x756e6971
cmp eax, 0xb56e6953
je 0x14031b8ab
cmp eax, 0xb56e6973
je 0x14031b8ab
cmp eax, 0xb56e6a25
je 0x14031b8ab
or edi, 0x800000
mov rcx, qword [rsp + 0xe8]
xor rcx, rsp
call fcn.1403a8ad0
mov eax, edi
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 dword [0x1405011e0], esi
mov r9d, dword [0x14051ff50]
lea r10d, [r9 - 1]
imul r10d, r9d
test r10b, 1
je 0x14031b90d
mov r9b, 1
nop word [rax + rax]
mov dword [0x1405011e0], esi
test r9b, r9b
je 0x14031b900
jmp 0x14031b8d9
mov r9d, r8d
not r9d
xor r8d, esi
not esi
and esi, r9d
or esi, r8d
not esi
xor r8d, r8d
mov r9b, 1
nop word cs:[rax + rax]
mov r10d, dword [0x14051ff50]
lea r11d, [r10 + 1]
imul r11d, r10d
test r11b, 1
jne 0x14031b94a
test r8b, r8b
je 0x14031b951
test r9b, r9b
je 0x14031b930
jmp 0x14031b945
xor r15d, r15d
mov r12d, 0
test esi, esi
mov r14d, dword [rsp + 0x58]
jne 0x14031b970
xor r15d, r15d
mov r12d, 0
test ebx, ebx
jg 0x14031b98f
cmp rax, rdx
jae 0x14031b986
mov rax, qword [rsp + 0x80]
test rax, rax
jne 0x14031b254
mov ebp, dword [rsp + 0x54]
jmp 0x14031b481
mov r8d, 0x10
xor r15d, r15d
xor r12d, r12d
mov r11, qword [rsp + 0x88]
nop word cs:[rax + rax]
lea r9d, [r8 - 0x10]
movsxd r9, r9d
xor r12, qword [r11 + r9 + 8]
xor r15, qword [r11 + r9]
mov r9d, dword [0x14051ff54]
nop word [rax + rax]
mov r9d, dword [0x14051ff50]
lea r10d, [r9 - 1]
imul r10d, r9d
test r10b, 1
jne 0x14031b9d0
cmp r8d, ebx
jge 0x14031b970
add r8d, 0x10
jmp 0x14031b9b0