Function at 0x140095ee0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x78
mov r12, r9
mov r15, r8
mov r14, rdx
mov rsi, rcx
mov rax, qword [0x14039fd98]
xor rax, rsp
mov qword [rsp + 0x70], rax
mov ecx, 0x3f4f
call fcn.140098680
test rax, rax
je 0x140095fb6
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 + 0x28], rax
mov qword [rsp + 0x30], r9
jne 0x140095fca
lea r9, [r8 + r14]
add r9, 0x6e3
lea rcx, [rdi + rax]
add rcx, 0x15c3
xor edx, edx
nop
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 0x140095f70
jmp 0x140095ff5
mov edx, 0x20
mov rcx, rsi
call fcn.140063500
xor esi, esi
jmp 0x140096a91
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.140080f70
mov r8d, 0x40
mov rcx, rbp
mov rdx, r14
call fcn.140080fb0
mov rcx, rbp
mov rdx, r15
mov r8, r12
call fcn.140080fb0
lea r13, [rsp + 0x50]
mov rcx, r13
mov rdx, rbp
call fcn.1400810c0
movdqa xmm0, xmmword [0x1402de060]
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 [0x1402de050]
movdqu xmmword [rbx + 0x15e0], xmm0
movdqu xmmword [rbx + 0x15f0], xmm0
mov rcx, rbp
call fcn.140080f70
mov r8d, 0x40
mov rcx, rbp
mov rdx, r14
call fcn.140080fb0
mov r8d, 0x20
mov rcx, rbp
mov rdx, r13
call fcn.140080fb0
mov rcx, rsi
mov qword [rsp + 0x48], rbp
mov rdx, rbp
call fcn.1400810c0
cmp r12, 0x472
jne 0x140096a82
lea r13, [rbx + 0x1670]
mov rcx, r13
mov rdx, r15
call fcn.140096ac0
test eax, eax
je 0x140096a82
mov qword [rsp + 0x40], r15
lea r9, [rbx + 0x1bf0]
mov r10, qword [rsp + 0x30]
lea rax, [r10 + 0x58]
mov rcx, qword [r10]
mov r8, qword [r10 + 0x58]
not rcx
xor edx, edx
xor r11d, r11d
mov r12, r10
jmp 0x140096152
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 0x140096179
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 0x140096130
shr rcx, 1
shr r8, 1
jmp 0x140096146
mov word [rbx + 0x1bee], 0
mov dword [rbx + 0x1bea], 0
mov dword [rbx + 0x216a], 0
mov word [rbx + 0x216e], 0
lea rdx, [rbx + 0xb00]
mov qword [rsp + 0x20], 0x58
mov rcx, rbx
mov r15, rdx
mov r8, r13
call fcn.140096f30
movdqa xmm0, xmmword [rbx + 0x570]
xor eax, eax
nop word [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 0x1400961d0
mov qword [rsp + 0x38], r13
mov word [rbx + 0x26ee], 0
mov dword [rbx + 0x26ea], 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 0x14009624c
inc r9
cmp r9, 0x2bd
je 0x1400962bd
movzx ebp, word [rbx + r9*2 + 0x2170]
shl ebp, 3
movsx ebp, bp
mov r14d, ebp
shr r14d, 3
sar ebp, 3
imul r13d, ebp, 0x5555
shr r13d, 0x10
lea ebp, [r13 + r13*2]
sub r14d, ebp
movsx r13d, r14w
sar r13d, 1
and r13d, r14d
dec r13d
and r13d, r14d
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 0x140096240
mov qword [r8], r11
add r8, 8
mov qword [rax], r10
add rax, 8
xor r11d, r11d
xor r10d, r10d
xor ecx, ecx
jmp 0x140096240
neg cl
shr r11, cl
shr r10, cl
mov qword [r8], r11
mov qword [rax], r10
lea r8, [r12 + 0xb0]
lea r14, [rbx + 0x27a0]
mov rcx, r14
call fcn.1400907c0
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 0x140096332
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 0x14009635d
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 0x140096310
shr rcx, 1
shr r8, 1
jmp 0x140096326
lea rcx, [rbx + 0x2dd0]
mov rdx, r13
call fcn.1400955d0
lea rbp, [rbx + 0x3350]
mov rax, qword [rsp + 0x28]
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 0x14009640e
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 0x140096390
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, [r12 + 0x160]
lea r14, [rbx + 0x38ca]
mov word [rbx + 0x38ce], 0
mov dword [rbx + 0x38ca], 0
mov word [r12 + 0x6de], 0
mov dword [r12 + 0x6da], 0
mov qword [rsp + 0x20], 0x58
mov rcx, rbx
mov rdx, r15
mov r8, rbp
call fcn.140096f30
movdqa xmm0, xmmword [rbx + 0x570]
xor eax, eax
nop dword [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 0x140096580
mov word [r14 + 4], 0
mov dword [r14], 0
mov r8, qword [rsp + 0x28]
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 0x14009663d
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 0x1400965f0
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 [0x1402e3780]
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 0x14009670d
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 0x1400966c0
mov qword [rsp + 0x30], rdi
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 r15, 0xffffffffffffffff
xor r10d, r10d
xor r9d, r9d
xor ecx, ecx
jmp 0x14009679c
inc r8
cmp r8, 0x2bd
je 0x140096805
mov r11, r15
movzx r15d, word [rbp + r8*2]
mov r14d, r15d
and r14d, 3
mov r12d, r15d
and r12d, 2
mov edi, r12d
shr edi, 1
xor r14d, edi
neg edi
and edi, 0x1fff
or edi, r14d
cmp di, r15w
mov r15d, 0
cmove r15, r11
shr r10, 1
shl r12, 0x3e
shrd r9, r14, 1
or r10, r12
or r9, r12
inc ecx
cmp ecx, 0x40
jne 0x140096790
mov qword [rax], r10
add rax, 8
mov qword [rdx], r9
add rdx, 8
xor ecx, ecx
xor r9d, r9d
xor r10d, r10d
jmp 0x140096790
neg cl
shr r10, cl
shr r9, cl
mov qword [rax], r10
mov qword [rdx], r9
lea r12, [rbx + 0x3980]
mov rcx, r12
mov rdx, qword [rsp + 0x38]
call fcn.140095d20
lea r14, [rbx + 0x3df2]
mov rax, 0xffffffffffffff74
movdqa xmm0, xmmword [0x1402e3790]
movdqa xmm1, xmmword [0x1402e37a0]
nop word cs:[rax + rax]
movzx ecx, word [r13]
and ecx, 3
mov edx, ecx
shr edx, 1
xor edx, ecx
movq xmm2, qword [r13 + 2]
pand xmm2, xmm0
movdqa xmm3, xmm2
psrlw xmm3, 1
pxor xmm3, xmm2
pmullw xmm3, xmm1
pshufd xmm2, xmm3, 0x55
paddw xmm2, xmm3
movdqa xmm3, xmm2
psrld xmm3, 0x10
paddw xmm3, xmm2
movd ecx, xmm3
add ecx, edx
mov byte [r14 + rax + 0x8c], cl
add r13, 0xa
inc rax
jne 0x140096850
lea r13, [rbx + 0x3e7e]
mov rax, 0xffffffffffffff74
nop word cs:[rax + rax]
movzx ecx, word [rbp]
and ecx, 3
mov edx, ecx
shr edx, 1
xor edx, ecx
movq xmm2, qword [rbp + 2]
pand xmm2, xmm0
movdqa xmm3, xmm2
psrlw xmm3, 1
pxor xmm3, xmm2
pmullw xmm3, xmm1
pshufd xmm2, xmm3, 0x55
paddw xmm2, xmm3
movdqa xmm3, xmm2
psrld xmm3, 0x10
paddw xmm3, xmm2
movd ecx, xmm3
add ecx, edx
mov byte [r13 + rax + 0x8c], cl
add rbp, 0xa
inc rax
jne 0x1400968c0
mov r8d, 0x472
mov rcx, qword [rsp + 0x40]
mov rdx, r12
call fcn.1400987a0
mov ebp, eax
mov rdi, qword [rsp + 0x48]
mov rcx, rdi
call fcn.140080f70
lea rdx, str.shared_key
mov r8d, ntohs
mov rcx, rdi
call fcn.140080fb0
mov r8d, 0x8c
mov rcx, rdi
mov rdx, r14
call fcn.140080fb0
mov r8d, 0x8c
mov rcx, rdi
mov rdx, r13
call fcn.140080fb0
mov r8d, 0x472
mov rcx, rdi
mov rdx, r12
call fcn.140080fb0
lea rcx, [rbx + 0x3f0a]
mov rdx, rdi
call fcn.1400810c0
xor eax, eax
test ebp, ebp
cmovne r15d, eax
mov eax, r15d
not al
mov r8, qword [rsp + 0x28]
mov r9, qword [rsp + 0x30]
lea rcx, [r9 + r8]
add rcx, 0x3f2a
cmp rcx, rsi
jbe 0x140096a1d
lea rcx, [rsi + 0x20]
lea rdx, [r9 + r8]
add rdx, 0x3f0a
cmp rdx, rcx
jae 0x140096a1d
lea rcx, [r9 + r8]
add rcx, 0x3f0b
xor edx, edx
nop word cs:[rax + rax]
movzx r8d, byte [rcx + rdx - 1]
and r8b, r15b
movzx r9d, byte [rsi + rdx]
and r9b, al
or r9b, r8b
mov byte [rsi + rdx], r9b
movzx r8d, byte [rcx + rdx]
and r8b, r15b
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 0x1400969e0
jmp 0x140096a82
movzx eax, al
movd xmm0, eax
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
movzx eax, r15b
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 + 0x28]
call fcn.1400986b0
mov esi, 1
mov rcx, qword [rsp + 0x70]
xor rcx, rsp
call fcn.140265fe0
mov eax, esi
add rsp, 0x78
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret