Function at 0x2f8872e98
Capabilities:
Encode data using xor

Disassembly:
push rdi
push rsi
push rbx
sub rsp, 0x50
mov qword [rsp + 0x70], rcx
mov rdi, rdx
mov ebx, r8d
mov rsi, r9
push r9
psrlw mm5, 0x5e
psubusw mm7, mm3
not r9w
push r8
punpckldq mm3, mm0
shl r8b, 0xe
neg r8d
push rbx
paddsw mm4, mm1
not r9b
psrlw mm2, 6
pop rbx
pslld mm7, 0x47
sbb r9b, 0x17
paddusw mm5, mm0
pop r8
rcr r9w, 0xb
psrlw mm0, 0x1d
emms
pop r9
mov edx, 4
mov ecx, 5
call sub.msvcrt.dll_calloc
mov rcx, rax
push r8
emms
push r15
sub r15, r8
push r12
dec r12d
pop r12
packsswb mm1, mm4
pop r15
mov r8w, 5
pop r8
mov edx, 0x8c
call sub.msvcrt.dll_realloc
mov rcx, rax
xor eax, eax
push r13
minps xmm7, xmm0
pxor mm0, mm2
nop
push rax
rcr r13w, 2
sub ax, 0x14
inc r13
push rbx
ror al, 2
nop
push r9
not ax
nop
pop r9
nop
dec ebx
nop
pop rbx
inc rax
sub r13d, eax
pop rax
nop
inc r13d
pop r13
xor dword [rcx + rax*4], 0x14
push r15
paddb mm3, mm1
pop r15
inc rax
cmp rax, 5
jne 0x2f8872f29
call sub.msvcrt.dll_free
push r13
ror r13, 0xc
neg r13d
psadbw mm7, mm5
push rbx
shl r13, 7
mulps xmm8, xmm3
nop
push r9
sub r13w, bx
sub r13w, 0x17
nop
pop r9
psllq mm0, 0x41
emms
andps xmm14, xmm0
pop rbx
pmulhuw mm5, mm3
not r13w
emms
pop r13
mov qword [rsp + 0x38], rdi
push rdx
emms
pmullw mm6, mm1
pcmpgtd mm6, mm5
emms
psrad mm5, 0x4f
push r11
test edx, r11d
nop
emms
subps xmm14, xmm12
push r10
and r10d, edx
nop
xadd r10, r11
push r15
sbb r11w, r15w
not r10d
push rax
not r11b
pop rax
psrlw mm4, 0x60
pmaxsw mm7, mm0
pop r15
maxps xmm2, xmm8
emms
emms
pop r10
emms
nop
nop
dec r11d
pop r11
rol edx, 0x15
psraw mm7, 0x3f
punpcklwd mm6, mm5
emms
psubw mm6, mm0
pop rdx
mov qword [rsp + 0x20], rsi
mov r9d, ebx
lea r8, [rsp + 0x38]
lea rdx, [rsp + 0x70]
or rcx, 0xffffffffffffffff
call fcn.2f8879ab5
push rcx
mov rcx, 1
push rax
inc eax
addps xmm9, xmm0
emms
shl rax, 0x11
psrlq mm1, 0x11
push r8
nop
pcmpgtd mm3, mm6
nop
pmaddwd mm6, mm5
dec eax
pop r8
not rax
movups xmm6, xmm9
psraw mm1, 0x59
dec rax
movss xmm7, xmm14
neg al
pop rax
dec rcx
jne 0x2f8873038
pop rcx
test eax, eax
jne 0x2f88731c2
movabs rax, 0x2c0040007c
mov qword [rsp + 0x40], rax
cmp r10, rbx
jne 0x2f887309f
push r11
inc r11
pop r11
jmp 0x2f88730a4
push rbx
shl bl, 0x17
pop rbx
push rcx
sbb cl, 9
pop rcx
movabs rax, 0x3d006f007b
mov qword [rsp + 0x48], rax
push r12
movss xmm12, xmm6
sub r12, 0xd
nop
push r10
psrlq mm6, 0x3f
mulss xmm3, xmm12
movhlps xmm8, xmm7
push r8
adc r10, r8
nop
push r13
paddusb mm7, mm0
not r10d
pop r13
pslld mm7, 0x69
nop
nop
pop r8
xor r10d, r12d
pcmpeqd mm2, mm3
pop r10
nop
rcl r12w, 1
pop r12
lea rdx, [rsp + 0x48]
lea rcx, [rsp + 0x40]
call sub.msvcrt.dll_wcscmp
test eax, eax
jne 0x2f8873154
cmp r10w, ax
jne 0x2f8873125
push r9
nop
push rdx
not r9
xorps xmm9, xmm11
pop rdx
emms
pop r9
jmp 0x2f8873139
push r12
shl r12w, 0xf
push rax
inc eax
rcl ax, 0xa
pop rax
inc r12
pop r12
push r10
rcl r10b, 4
push r15
ror r15, 2
sub r15w, 0xb
pop r15
psrlq mm2, 0xf
pop r10
jmp 0x2f8873187
push r8
dec r8d
push r10
nop
push rbx
movaps xmm15, xmm10
push r14
rcr r10d, 7
push rax
emms
push rcx
xadd r10w, r14w
pop rcx
shl bl, 9
pop rax
inc r10d
pop r14
shr r8b, 6
pop rbx
nop
pop r10
andps xmm3, xmm0
pop r8
push r15
rol r15b, 5
nop
pxor mm7, mm0
push r11
inc r15
nop
andnps xmm0, xmm1
push r10
emms
nop
paddusw mm1, mm6
pop r10
nop
shl r11b, 0x10
paddusw mm5, mm1
pop r11
rol r15, 6
neg r15
not r15w
pop r15
mov eax, 1
jmp 0x2f8873208
push rbx
maxss xmm9, xmm14
push r13
rcr r13, 9
push r12
psllq mm2, 0x57
push r11
nop
push r14
not r14d
push rcx
psrld mm3, 0x22
push rdx
movups xmm2, xmm10
pop rdx
maxps xmm13, xmm2
pop rcx
emms
pop r14
psllq mm7, 0x64
pop r11
inc r13
pop r12
psubsb mm1, mm7
pop r13
mulss xmm9, xmm13
pop rbx
xor eax, eax
add rsp, 0x50
pop rbx
pop rsi
pop rdi
ret