Function at 0x14005ee68
Capabilities:
Encode data using xor

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x28
lea rbp, [rsp + 0x20]
mov rdi, rdx
xor r14d, r14d
xor edx, edx
lea r8d, [r14 + 0x58]
mov rbx, rcx
call sub.msvcrt.dll_memset
movsxd rdx, dword [rdi + 4]
xor eax, eax
test edx, edx
jle 0x14005eeb2
mov r8, qword [rdi + 8]
cmp byte [r8 + rax], 0
jle 0x14005eeaa
inc r14d
inc rax
cmp rax, rdx
jl 0x14005eea0
mov dword [rbx + 4], edx
mov dword [rbx + 8], r14d
mov eax, dword [rdi]
mov dword [rbx], eax
test r14d, r14d
jle 0x14005f412
mov edx, dword [rdi + 4]
mov rcx, qword [rdi + 8]
mov r8d, r14d
call fcn.14005ebb0
movsxd rsi, r14d
movabs r15, 0xffffffffffffff0
mov rcx, rsi
mov r12, rax
shl rcx, 3
lea rax, [rcx + 0xf]
cmp rax, rcx
ja 0x14005eef8
mov rax, r15
and rax, 0xfffffffffffffff0
call fcn.14002b2a0
sub rsp, rax
lea r10, [rsp + 0x20]
mov qword [rbp + 0x50], r10
test r12, r12
jne 0x14005ef22
mov rcx, rbx
call fcn.14005ee04
or eax, 0xffffffff
jmp 0x14005f414
xor r9d, r9d
xor r8d, r8d
test r14d, r14d
jle 0x14005efa9
mov ecx, dword [r12 + r8*4]
rol ecx, 0x10
mov eax, ecx
mov edx, ecx
shl ecx, 8
shl eax, 8
shr edx, 8
xor edx, eax
and edx, 0xff00ff
xor edx, ecx
mov ecx, edx
mov eax, edx
shl edx, 4
shr ecx, 4
shl eax, 4
xor ecx, eax
and ecx, 0xf0f0f0f
xor ecx, edx
mov eax, ecx
mov edx, ecx
shl eax, 2
shr edx, 2
xor edx, eax
mov eax, ecx
shl eax, 2
and edx, 0x33333333
xor edx, eax
mov ecx, edx
shr ecx, 1
lea eax, [rdx + rdx]
xor ecx, eax
lea eax, [rdx + rdx]
and ecx, 0x55555555
xor ecx, eax
movsxd rax, r9d
inc r9d
mov dword [r12 + r8*4], ecx
lea rcx, [r12 + rax*4]
mov qword [r10 + r8*8], rcx
inc r8
cmp r8, rsi
jl 0x14005ef2d
lea r9, [0x14005ede4]
mov r8d, 8
mov rdx, rsi
mov rcx, r10
call sub.msvcrt.dll_qsort
mov r13, rsi
shl r13, 2
lea rax, [r13 + 0xf]
cmp rax, r13
ja 0x14005efd4
mov rax, r15
and rax, 0xfffffffffffffff0
call fcn.14002b2a0
sub rsp, rax
mov rcx, r13
lea r15, [rsp + 0x20]
call sub.msvcrt.dll_malloc
xor edx, edx
xor ecx, ecx
mov qword [rbx + 0x20], rax
test r14d, r14d
jle 0x14005f03f
mov r8, qword [rbp + 0x50]
mov rax, qword [r8 + rcx*8]
inc rcx
sub rax, r12
sar rax, 2
cdqe
mov dword [r15 + rax*4], edx
inc edx
cmp rcx, rsi
jl 0x14005effe
test r14d, r14d
jle 0x14005f03f
mov r9, r12
mov rdx, r15
sub r9, r15
movsxd r8, dword [rdx]
mov eax, dword [r9 + rdx]
mov rcx, qword [rbx + 0x20]
mov dword [rcx + r8*4], eax
lea rdx, [rdx + 4]
dec rsi
jne 0x14005f027
mov rcx, r12
call sub.msvcrt.dll_free
mov r8, r15
mov edx, r14d
mov rcx, rdi
call fcn.14005e808
mov rcx, r13
mov qword [rbx + 0x18], rax
call sub.msvcrt.dll_malloc
xor r10d, r10d
xor edx, edx
mov qword [rbx + 0x28], rax
lea r13d, [r10 + 1]
cmp dword [rdi + 4], edx
jle 0x14005f0a0
xor r8d, r8d
mov r9, r15
mov rax, qword [rdi + 8]
cmp byte [r8 + rax], 0
jle 0x14005f095
movsxd rcx, dword [r9]
mov rax, qword [rbx + 0x28]
add r10d, r13d
mov dword [rax + rcx*4], edx
add r9, 4
add edx, r13d
add r8, r13
cmp edx, dword [rdi + 4]
jl 0x14005f079
movsxd rcx, r10d
call sub.msvcrt.dll_malloc
and dword [rbx + 0x44], 0
xor esi, esi
mov qword [rbx + 0x30], rax
xor r9d, r9d
cmp dword [rdi + 4], esi
jle 0x14005f12a
xor r8d, r8d
mov rax, qword [rdi + 8]
mov dl, byte [r8 + rax]
test dl, dl
jle 0x14005f0ee
movsxd rcx, dword [r15]
mov rax, qword [rbx + 0x30]
add esi, r13d
mov byte [rcx + rax], dl
mov rax, qword [rdi + 8]
add r15, 4
movsx ecx, byte [r8 + rax]
mov eax, dword [rbx + 0x44]
cmp ecx, eax
cmovg eax, ecx
mov dword [rbx + 0x44], eax
add r9d, r13d
add r8, r13
cmp r9d, dword [rdi + 4]
jl 0x14005f0bd
cmp esi, r13d
jne 0x14005f12a
cmp dword [rbx + 0x44], r13d
jne 0x14005f12a
mov edx, 4
mov dword [rbx + 0x40], r13d
lea ecx, [rdx - 2]
call fcn.14002b1c8
mov qword [rbx + 0x38], rax
mov dword [rax + 4], r13d
mov rax, qword [rbx + 0x38]
mov dword [rax], r13d
jmp 0x14005f412
mov eax, dword [rbx + 8]
xor ecx, ecx
test eax, eax
je 0x14005f13a
add ecx, r13d
shr eax, 1
jne 0x14005f133
add ecx, 0xfffffffc
mov eax, 5
mov edi, r13d
cmp ecx, eax
cmovl ecx, eax
mov eax, 8
cmp ecx, eax
lea edx, [rax - 4]
cmovg ecx, eax
shl edi, cl
mov dword [rbx + 0x40], ecx
movsxd rcx, edi
call fcn.14002b1c8
xor r8d, r8d
movsxd r12, esi
mov qword [rbx + 0x38], rax
test esi, esi
jle 0x14005f250
mov r9d, r13d
mov rax, qword [rbx + 0x30]
mov r14d, dword [rbx + 0x40]
movsx r15d, byte [r8 + rax]
cmp r15d, r14d
jg 0x14005f241
mov rax, qword [rbx + 0x20]
sub r14d, r15d
xor r11d, r11d
mov ecx, dword [rax + r8*4]
rol ecx, 0x10
mov edx, ecx
mov eax, ecx
shl ecx, 8
shl eax, 8
shr edx, 8
xor edx, eax
and edx, 0xff00ff
xor edx, ecx
mov ecx, edx
mov eax, edx
shl edx, 4
shl eax, 4
shr ecx, 4
xor ecx, eax
and ecx, 0xf0f0f0f
xor ecx, edx
mov edx, ecx
mov eax, ecx
shl eax, 2
shr edx, 2
xor edx, eax
mov eax, ecx
mov cl, r14b
shl eax, 2
and edx, 0x33333333
xor edx, eax
mov r10d, edx
shr r10d, 1
lea eax, [rdx + rdx]
xor r10d, eax
lea eax, [rdx + rdx]
and r10d, 0x55555555
xor r10d, eax
mov eax, r13d
shl eax, cl
test eax, eax
jle 0x14005f241
mov rax, qword [rbx + 0x30]
mov cl, byte [r8 + rax]
mov eax, r11d
add r11d, r13d
shl eax, cl
mov ecx, eax
mov rax, qword [rbx + 0x38]
or rcx, r10
mov dword [rax + rcx*4], r9d
mov rax, qword [rbx + 0x30]
mov ecx, dword [rbx + 0x40]
movsx edx, byte [r8 + rax]
sub ecx, edx
mov edx, r13d
shl edx, cl
cmp r11d, edx
jl 0x14005f20c
add r8, r13
add r9d, r13d
cmp r8, r12
jl 0x14005f179
xor r10d, r10d
mov ecx, 0x1f
mov r13d, 0xfffffffe
sub ecx, dword [rbx + 0x40]
xor r15d, r15d
xor r14d, r14d
shl r13d, cl
mov dword [rbp + 0x50], r10d
test edi, edi
jle 0x14005f412
xor r8d, r8d
xor r11d, r11d
mov qword [rbp + 0x68], r8
mov ecx, 0x20
mov r9d, r14d
sub ecx, dword [rbx + 0x40]
shl r9d, cl
mov edx, r9d
rol edx, 0x10
mov eax, edx
mov ecx, edx
mov dword [rbp + 0x58], edx
shl eax, 8
shr ecx, 8
xor ecx, eax
mov eax, edx
shl eax, 8
and ecx, 0xff00ff
xor ecx, eax
mov edx, ecx
mov eax, ecx
shl ecx, 4
shr edx, 4
shl eax, 4
xor edx, eax
and edx, 0xf0f0f0f
xor edx, ecx
mov eax, edx
mov ecx, edx
shl eax, 2
shr ecx, 2
xor ecx, eax
mov eax, edx
shl eax, 2
and ecx, 0x33333333
xor ecx, eax
mov rax, qword [rbx + 0x38]
mov qword [rbp + 0x60], rax
lea eax, [rcx + rcx]
mov edx, ecx
shr rdx, 1
add ecx, ecx
xor rdx, rax
mov rax, qword [rbp + 0x60]
and edx, 0x55555555
xor rdx, rcx
cmp dword [rax + rdx*4], 0
jne 0x14005f406
lea ecx, [r15 + 1]
cmp ecx, esi
jge 0x14005f339
mov rdx, qword [rbx + 0x20]
add rdx, 4
lea rdx, [rdx + r8*4]
cmp dword [rdx], r9d
ja 0x14005f335
inc ecx
inc r15d
inc r8
add rdx, 4
cmp ecx, esi
jl 0x14005f320
mov qword [rbp + 0x68], r8
cmp r11, r12
jge 0x14005f363
mov rax, qword [rbx + 0x20]
lea rcx, [rax + r11*4]
mov eax, dword [rcx]
and eax, r13d
cmp r9d, eax
jb 0x14005f35f
inc r11
inc r10d
add rcx, 4
cmp r11, r12
jl 0x14005f346
mov dword [rbp + 0x50], r10d
mov ecx, dword [rbp + 0x58]
mov eax, 0x7fff
mov r9d, esi
sub r9d, r10d
cmp r15d, eax
mov edx, ecx
mov r10d, r15d
cmova r10d, eax
cmp r9d, eax
cmova r9d, eax
mov eax, ecx
shr edx, 8
shl eax, 8
shl ecx, 8
or r10d, 0xffff0000
xor edx, eax
shl r10d, 0xf
and edx, 0xff00ff
or r10d, r9d
xor edx, ecx
mov eax, edx
mov ecx, edx
shl edx, 4
shl eax, 4
shr ecx, 4
xor ecx, eax
and ecx, 0xf0f0f0f
xor ecx, edx
mov eax, ecx
mov r8d, ecx
shl eax, 2
shr r8d, 2
xor r8d, eax
mov eax, ecx
shl eax, 2
and r8d, 0x33333333
xor r8d, eax
mov edx, r8d
lea eax, [r8 + r8]
shr rdx, 1
lea ecx, [r8 + r8]
mov r8, qword [rbp + 0x68]
xor rdx, rax
mov rax, qword [rbp + 0x60]
and edx, 0x55555555
xor rdx, rcx
mov dword [rax + rdx*4], r10d
mov r10d, dword [rbp + 0x50]
inc r14d
cmp r14d, edi
jl 0x14005f280
xor eax, eax
lea rsp, [rbp + 8]
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret