Function at 0x14009c280
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x88
mov r12, r9
mov r15, r8
mov r14, rdx
mov rsi, rcx
mov rax, qword [0x1403acd78]
xor rax, rsp
mov qword [rsp + 0x80], rax
mov ecx, 0x3f4f
call fcn.14009ea60
test rax, rax
je 0x14009c366
mov r8d, r14d
neg r8d
and r8d, 0xf
lea r9, [r14 + r8]
mov edi, eax
neg edi
and edi, 0x1f
lea rbx, [rax + rdi]
mov rdx, rbx
sub rdx, r14
sub rdx, r8
and rdx, 0xfffffffffffffff0
cmp rdx, 0xfffffffffffff120
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x38], r9
jne 0x14009c37a
lea r9, [r8 + r14]
add r9, 0x6e3
lea rcx, [rdi + rax]
add rcx, 0x15c3
xor edx, edx
nop word cs:[rax + rax]
movzx r8d, byte [r9 + rdx - 3]
xor r8b, 0x36
mov byte [rcx + rdx - 3], r8b
movzx r8d, byte [r9 + rdx - 2]
xor r8b, 0x36
mov byte [rcx + rdx - 2], r8b
movzx r8d, byte [r9 + rdx - 1]
xor r8b, 0x36
mov byte [rcx + rdx - 1], r8b
movzx r8d, byte [r9 + rdx]
xor r8b, 0x36
mov byte [rcx + rdx], r8b
add rdx, 4
cmp rdx, 0x20
jne 0x14009c320
jmp 0x14009c3a5
mov edx, 0x20
mov rcx, rsi
call fcn.1400663a0
xor esi, esi
jmp 0x14009ce71
movups xmm0, xmmword [r9 + 0x6e0]
movaps xmm1, xmmword [str.6666666666666666jjjjjjjjjjjjjjjj__f]
xorps xmm0, xmm1
movups xmmword [rbx + 0x15c0], xmm0
movups xmm0, xmmword [r9 + 0x6f0]
xorps xmm0, xmm1
movups xmmword [rbx + 0x15d0], xmm0
lea r14, [rbx + 0x15c0]
movaps xmm0, xmmword [str.6666666666666666jjjjjjjjjjjjjjjj__f]
movups xmmword [rbx + 0x15f0], xmm0
movups xmmword [rbx + 0x15e0], xmm0
lea rbp, [rbx + 0x1600]
mov rcx, rbp
call fcn.140086800
mov r8d, 0x40
mov rcx, rbp
mov rdx, r14
call fcn.140086840
mov rcx, rbp
mov rdx, r15
mov r8, r12
call fcn.140086840
lea r13, [rsp + 0x60]
mov rcx, r13
mov rdx, rbp
call fcn.140086950
movdqa xmm0, xmmword [0x1402f0b40]
movdqu xmm1, xmmword [rbx + 0x15c0]
movdqu xmm2, xmmword [rbx + 0x15d0]
pxor xmm1, xmm0
movdqu xmmword [rbx + 0x15c0], xmm1
pxor xmm2, xmm0
movdqu xmmword [rbx + 0x15d0], xmm2
movdqa xmm0, xmmword [0x1402f0b30]
movdqu xmmword [rbx + 0x15e0], xmm0
movdqu xmmword [rbx + 0x15f0], xmm0
mov rcx, rbp
call fcn.140086800
mov r8d, 0x40
mov rcx, rbp
mov rdx, r14
call fcn.140086840
mov r8d, 0x20
mov rcx, rbp
mov rdx, r13
call fcn.140086840
mov rcx, rsi
mov qword [rsp + 0x58], rbp
mov rdx, rbp
call fcn.140086950
cmp r12, 0x472
jne 0x14009ce62
lea r12, [rbx + 0x1670]
mov rcx, r12
mov rdx, r15
call fcn.14009cea0
test eax, eax
je 0x14009ce62
mov qword [rsp + 0x50], r15
lea r9, [rbx + 0x1bf0]
mov r15, qword [rsp + 0x38]
lea rax, [r15 + 0x58]
mov rcx, qword [r15]
mov r8, qword [r15 + 0x58]
not rcx
xor edx, edx
xor r11d, r11d
mov r10, r15
jmp 0x14009c502
mov rcx, qword [r10 + 8]
add r10, 8
not rcx
mov r8, qword [rax + 8]
add rax, 8
xor r11d, r11d
inc rdx
cmp rdx, 0x2bd
je 0x14009c529
mov ebp, ecx
and ebp, 1
dec ebp
mov r14d, r8d
and r14d, 1
or r14d, ebp
mov word [r9 + rdx*2], r14w
inc r11d
cmp r11d, 0x40
je 0x14009c4e0
shr rcx, 1
shr r8, 1
jmp 0x14009c4f6
lea r14, [rbx + 0x2170]
mov word [r12 + 0x57e], 0
mov dword [r12 + 0x57a], 0
mov word [r9 + 0x57e], 0
mov dword [r9 + 0x57a], 0
lea rdx, [rbx + 0xb00]
mov qword [rsp + 0x20], 0x58
mov rcx, rbx
mov qword [rsp + 0x40], rdx
mov r8, r12
call fcn.14009d310
movdqa xmm0, xmmword [rbx + 0x570]
xor eax, eax
nop word cs:[rax + rax]
movdqa xmm1, xmmword [rbx + rax + 0x580]
movdqa xmm2, xmm1
pslldq xmm2, 6
psrldq xmm0, 0xa
por xmm0, xmm2
paddw xmm0, xmmword [rbx + rax]
movdqa xmmword [rbx + rax + 0x2170], xmm0
add rax, 0x10
movdqa xmm0, xmm1
cmp rax, 0x580
jne 0x14009c590
mov qword [rsp + 0x48], r12
mov word [r14 + 0x57e], 0
mov dword [r14 + 0x57a], 0
lea rdx, [rbx + 0x26f0]
lea rax, [rbx + 0x2748]
xor r9d, r9d
mov r8, rdx
xor ecx, ecx
xor r10d, r10d
xor r11d, r11d
jmp 0x14009c61c
inc r9
cmp r9, 0x2bd
je 0x14009c689
movzx ebp, word [r14 + r9*2]
shl ebp, 3
movsx ebp, bp
mov r12d, ebp
shr r12d, 3
sar ebp, 3
imul r13d, ebp, 0x5555
shr r13d, 0x10
lea ebp, [r13 + r13*2]
sub r12d, ebp
movsx r13d, r12w
sar r13d, 1
and r13d, r12d
dec r13d
and r13d, r12d
shrd r10, r13, 1
shr r11, 1
and r13d, 2
shl r13, 0x3e
or r11, r13
or r10, r13
inc ecx
cmp ecx, 0x40
jne 0x14009c610
mov qword [r8], r11
add r8, 8
mov qword [rax], r10
add rax, 8
xor r11d, r11d
xor r10d, r10d
xor ecx, ecx
jmp 0x14009c610
neg cl
shr r11, cl
shr r10, cl
mov qword [r8], r11
mov qword [rax], r10
lea r8, [r15 + 0xb0]
lea r14, [rbx + 0x27a0]
mov rcx, r14
call fcn.140096b10
lea r13, [rbx + 0x2850]
lea rax, [rbx + 0x27f8]
mov rcx, qword [rbx + 0x27a0]
mov r8, qword [rbx + 0x27f8]
not rcx
xor edx, edx
xor r9d, r9d
jmp 0x14009c702
mov rcx, qword [r14 + 8]
add r14, 8
not rcx
mov r8, qword [rax + 8]
add rax, 8
xor r9d, r9d
inc rdx
cmp rdx, 0x2bd
je 0x14009c72d
mov r10d, ecx
and r10d, 1
dec r10d
mov r11d, r8d
and r11d, 1
or r11d, r10d
mov word [r13 + rdx*2], r11w
inc r9d
cmp r9d, 0x40
je 0x14009c6e0
shr rcx, 1
shr r8, 1
jmp 0x14009c6f6
lea rcx, [rbx + 0x2dd0]
mov rdx, r13
call fcn.14009b960
lea rbp, [rbx + 0x3350]
mov rax, qword [rsp + 0x30]
add rax, rdi
add rax, 0x3380
xor ecx, ecx
nop word cs:[rax + rax]
movdqu xmm0, xmmword [rax + rcx*2 - 0x1d10]
movdqu xmm1, xmmword [rax + rcx*2 - 0x1d00]
movdqu xmm2, xmmword [rax + rcx*2 - 0x5b0]
psubw xmm0, xmm2
movdqu xmm2, xmmword [rax + rcx*2 - 0x5a0]
psubw xmm1, xmm2
movdqu xmmword [rax + rcx*2 - 0x30], xmm0
movdqu xmmword [rax + rcx*2 - 0x20], xmm1
cmp rcx, 0x2a0
je 0x14009c7de
movdqu xmm0, xmmword [rax + rcx*2 - 0x1cf0]
movdqu xmm1, xmmword [rax + rcx*2 - 0x1ce0]
movdqu xmm2, xmmword [rax + rcx*2 - 0x590]
psubw xmm0, xmm2
movdqu xmm2, xmmword [rax + rcx*2 - 0x580]
psubw xmm1, xmm2
movdqu xmmword [rax + rcx*2 - 0x10], xmm0
movdqu xmmword [rax + rcx*2], xmm1
add rcx, 0x20
jmp 0x14009c760
movzx eax, word [rbx + 0x1bd0]
sub ax, word [rbx + 0x3330]
movzx ecx, word [rbx + 0x1bd2]
mov word [rbx + 0x38b0], ax
sub cx, word [rbx + 0x3332]
mov word [rbx + 0x38b2], cx
movzx eax, word [rbx + 0x1bd4]
sub ax, word [rbx + 0x3334]
mov word [rbx + 0x38b4], ax
movzx eax, word [rbx + 0x1bd6]
sub ax, word [rbx + 0x3336]
mov word [rbx + 0x38b6], ax
movzx eax, word [rbx + 0x1bd8]
sub ax, word [rbx + 0x3338]
mov word [rbx + 0x38b8], ax
movzx eax, word [rbx + 0x1bda]
sub ax, word [rbx + 0x333a]
mov word [rbx + 0x38ba], ax
movzx eax, word [rbx + 0x1bdc]
sub ax, word [rbx + 0x333c]
movzx ecx, word [rbx + 0x1bde]
mov word [rbx + 0x38bc], ax
sub cx, word [rbx + 0x333e]
mov word [rbx + 0x38be], cx
movzx eax, word [rbx + 0x1be0]
sub ax, word [rbx + 0x3340]
mov word [rbx + 0x38c0], ax
movzx eax, word [rbx + 0x1be2]
sub ax, word [rbx + 0x3342]
mov word [rbx + 0x38c2], ax
movzx eax, word [rbx + 0x1be4]
sub ax, word [rbx + 0x3344]
mov word [rbx + 0x38c4], ax
movzx eax, word [rbx + 0x1be6]
sub ax, word [rbx + 0x3346]
mov word [rbx + 0x38c6], ax
movzx eax, word [rbx + 0x1be8]
sub ax, word [rbx + 0x3348]
mov word [rbx + 0x38c8], ax
lea r9, [r15 + 0x160]
lea r14, [rbp + 0x57a]
mov word [rbp + 0x57e], 0
mov dword [rbp + 0x57a], 0
mov word [r15 + 0x6de], 0
mov dword [r15 + 0x6da], 0
mov qword [rsp + 0x20], 0x58
mov rcx, rbx
mov rdx, qword [rsp + 0x40]
mov r8, rbp
call fcn.14009d310
movdqa xmm0, xmmword [rbx + 0x570]
xor eax, eax
nop dword [rax + rax]
movdqa xmm1, xmmword [rbx + rax + 0x580]
movdqa xmm2, xmm1
pslldq xmm2, 6
psrldq xmm0, 0xa
por xmm0, xmm2
paddw xmm0, xmmword [rbx + rax]
movdqa xmmword [rbx + rax + 0x3350], xmm0
add rax, 0x10
movdqa xmm0, xmm1
cmp rax, 0x580
jne 0x14009c950
mov word [r14 + 4], 0
mov dword [r14], 0
mov r8, qword [rsp + 0x30]
mov ecx, dword [r8 + rdi + 0x38c8]
movd xmm0, ecx
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
lea rax, [r8 + rdi]
add rax, 0x3380
xor edx, edx
nop
movdqu xmm1, xmmword [rax + rdx*2 - 0x30]
movdqu xmm2, xmmword [rax + rdx*2 - 0x20]
psubw xmm1, xmm0
psubw xmm2, xmm0
movdqu xmmword [rax + rdx*2 - 0x30], xmm1
movdqu xmmword [rax + rdx*2 - 0x20], xmm2
cmp rdx, 0x2a0
je 0x14009ca0d
movdqu xmm1, xmmword [rax + rdx*2 - 0x10]
movdqu xmm2, xmmword [rax + rdx*2]
psubw xmm1, xmm0
psubw xmm2, xmm0
movdqu xmmword [rax + rdx*2 - 0x10], xmm1
movdqu xmmword [rax + rdx*2], xmm2
add rdx, 0x20
jmp 0x14009c9c0
sub word [r8 + rdi + 0x38b0], cx
sub word [r8 + rdi + 0x38b2], cx
sub word [r8 + rdi + 0x38b4], cx
sub word [r8 + rdi + 0x38b6], cx
sub word [r8 + rdi + 0x38b8], cx
sub word [r8 + rdi + 0x38ba], cx
sub word [r8 + rdi + 0x38bc], cx
sub word [r8 + rdi + 0x38be], cx
sub word [r8 + rdi + 0x38c0], cx
sub word [r8 + rdi + 0x38c2], cx
sub word [r8 + rdi + 0x38c4], cx
sub word [r8 + rdi + 0x38c6], cx
sub word [r8 + rdi + 0x38c8], cx
xor ecx, ecx
movdqa xmm0, xmmword [0x1402f61b0]
nop dword [rax]
movdqu xmm1, xmmword [rax + rcx*2 - 0x30]
movdqu xmm2, xmmword [rax + rcx*2 - 0x20]
pand xmm1, xmm0
pand xmm2, xmm0
movdqu xmmword [rax + rcx*2 - 0x30], xmm1
movdqu xmmword [rax + rcx*2 - 0x20], xmm2
cmp rcx, 0x2a0
je 0x14009cadd
movdqu xmm1, xmmword [rax + rcx*2 - 0x10]
movdqu xmm2, xmmword [rax + rcx*2]
pand xmm1, xmm0
pand xmm2, xmm0
movdqu xmmword [rax + rcx*2 - 0x10], xmm1
movdqu xmmword [rax + rcx*2], xmm2
add rcx, 0x20
jmp 0x14009ca90
and byte [rbx + 0x38b1], 0x1f
and byte [rbx + 0x38b3], 0x1f
and byte [rbx + 0x38b5], 0x1f
and byte [rbx + 0x38b7], 0x1f
and byte [rbx + 0x38b9], 0x1f
and byte [rbx + 0x38bb], 0x1f
and byte [rbx + 0x38bd], 0x1f
and byte [rbx + 0x38bf], 0x1f
and byte [rbx + 0x38c1], 0x1f
and byte [rbx + 0x38c3], 0x1f
and byte [rbx + 0x38c5], 0x1f
and byte [rbx + 0x38c7], 0x1f
and byte [rbx + 0x38c9], 0x1f
lea rax, [rbx + 0x38d0]
lea rdx, [rbx + 0x3928]
xor r8d, r8d
mov r12, 0xffffffffffffffff
xor r10d, r10d
xor r9d, r9d
xor ecx, ecx
jmp 0x14009cb6c
inc r8
cmp r8, 0x2bd
je 0x14009cbd5
mov r14, r12
movzx r11d, word [rbp + r8*2]
mov r15d, r11d
and r15d, 3
mov r12d, r15d
shr r12d, 1
xor r15d, r12d
neg r12d
and r12d, 0x1fff
or r12d, r15d
cmp r12w, r11w
mov r12d, 0
cmove r12, r14
shr r10, 1
and r11d, 2
shl r11, 0x3e
shrd r9, r15, 1
or r10, r11
or r9, r11
inc ecx
cmp ecx, 0x40
jne 0x14009cb60
mov qword [rax], r10
add rax, 8
mov qword [rdx], r9
add rdx, 8
xor ecx, ecx
xor r9d, r9d
xor r10d, r10d
jmp 0x14009cb60
neg cl
shr r10, cl
shr r9, cl
mov qword [rax], r10
mov qword [rdx], r9
lea r15, [rbx + 0x3980]
mov rcx, r15
mov rdx, qword [rsp + 0x48]
call fcn.14009c0c0
lea r14, [rbx + 0x3df2]
mov rax, 0xffffffffffffff74
movdqa xmm0, xmmword [0x1402f61c0]
movdqa xmm1, xmmword [0x1402f61d0]
movdqa xmm2, xmmword [0x1402f10e0]
pxor xmm3, xmm3
nop word cs:[rax + rax]
movzx ecx, word [r13]
and ecx, 3
mov edx, ecx
shr edx, 1
xor edx, ecx
movq xmm4, qword [r13 + 2]
pand xmm4, xmm0
movdqa xmm5, xmm4
psrlw xmm5, 1
pxor xmm5, xmm4
pmullw xmm5, xmm1
pand xmm5, xmm2
packuswb xmm5, xmm5
punpckldq xmm5, xmm3
psadbw xmm5, xmm3
movd ecx, xmm5
add cl, dl
mov byte [r14 + rax + 0x8c], cl
add r13, 0xa
inc rax
jne 0x14009cc30
lea r13, [rbx + 0x3e7e]
mov rax, 0xffffffffffffff74
pxor xmm3, xmm3
nop word cs:[rax + rax]
movzx ecx, word [rbp]
and ecx, 3
mov edx, ecx
shr edx, 1
xor edx, ecx
movq xmm4, qword [rbp + 2]
pand xmm4, xmm0
movdqa xmm5, xmm4
psrlw xmm5, 1
pxor xmm5, xmm4
pmullw xmm5, xmm1
pand xmm5, xmm2
packuswb xmm5, xmm5
punpckldq xmm5, xmm3
psadbw xmm5, xmm3
movd ecx, xmm5
add cl, dl
mov byte [r13 + rax + 0x8c], cl
add rbp, 0xa
inc rax
jne 0x14009cca0
mov r8d, 0x472
mov rcx, qword [rsp + 0x50]
mov rdx, r15
call fcn.14009eb80
mov dword [rsp + 0x38], eax
mov rbp, r15
mov r15, qword [rsp + 0x58]
mov rcx, r15
call fcn.140086800
lea rdx, str.shared_key
mov r8d, ntohs
mov rcx, r15
call fcn.140086840
mov r8d, 0x8c
mov rcx, r15
mov rdx, r14
call fcn.140086840
mov r8d, 0x8c
mov rcx, r15
mov rdx, r13
call fcn.140086840
mov r8d, 0x472
mov rcx, r15
mov rdx, rbp
call fcn.140086840
lea rcx, [rbx + 0x3f0a]
mov rdx, r15
call fcn.140086950
xor eax, eax
cmp dword [rsp + 0x38], 0
cmovne r12d, eax
mov eax, r12d
not al
mov r8, qword [rsp + 0x30]
lea rcx, [rdi + r8]
add rcx, 0x3f2a
cmp rcx, rsi
jbe 0x14009cdfd
lea rcx, [rsi + 0x20]
lea rdx, [rdi + r8]
add rdx, 0x3f0a
cmp rdx, rcx
jae 0x14009cdfd
lea rcx, [rdi + r8]
add rcx, 0x3f0b
xor edx, edx
nop word cs:[rax + rax]
movzx r8d, byte [rcx + rdx - 1]
and r8b, r12b
movzx r9d, byte [rsi + rdx]
and r9b, al
or r9b, r8b
mov byte [rsi + rdx], r9b
movzx r8d, byte [rcx + rdx]
and r8b, r12b
movzx r9d, byte [rsi + rdx + 1]
and r9b, al
or r9b, r8b
mov byte [rsi + rdx + 1], r9b
add rdx, 2
cmp rdx, 0x20
jne 0x14009cdc0
jmp 0x14009ce62
movzx eax, al
movd xmm0, eax
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
movzx eax, r12b
movd xmm1, eax
punpcklbw xmm1, xmm1
pshuflw xmm1, xmm1, 0
pshufd xmm1, xmm1, 0
movdqu xmm2, xmmword [rbx + 0x3f0a]
pand xmm2, xmm1
movdqu xmm3, xmmword [rsi]
movdqu xmm4, xmmword [rsi + 0x10]
pand xmm3, xmm0
por xmm3, xmm2
movdqu xmmword [rsi], xmm3
movdqu xmm2, xmmword [rbx + 0x3f1a]
pand xmm2, xmm1
pand xmm4, xmm0
por xmm4, xmm2
movdqu xmmword [rsi + 0x10], xmm4
mov rcx, qword [rsp + 0x30]
call fcn.14009ea90
mov esi, 1
mov rcx, qword [rsp + 0x80]
xor rcx, rsp
call fcn.140279500
mov eax, esi
add rsp, 0x88
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret