Function at 0x2f8871552
Capabilities:
Encode data using xor

Disassembly:
sub rsp, 0x58
push rax
ror rax, 0x14
push r10
dec r10
push r12
sbb r12w, 1
push rcx
neg al
push r15
or r15d, r12d
push r13
rcpss xmm12, xmm3
push r14
rcr r10, 0x10
pop r14
not r15
pop r13
shl r12w, 0x13
pop r15
xchg r10d, r12d
pop rcx
xor rax, r10
pop r12
xadd eax, r10d
pop r10
nop
pop rax
push r14
ror r14b, 0x13
dec r14d
psrld mm0, 0x37
neg r14w
push rbx
ror r14d, 9
not r14d
nop
push rdx
nop
or bl, r14b
push rcx
pcmpeqb mm4, mm1
pop rcx
maxps xmm15, xmm3
psraw mm1, 0x37
pop rdx
andnps xmm6, xmm2
nop
xadd r14d, ebx
pop rbx
nop
emms
emms
punpcklbw mm0, mm2
pop r14
call fcn.2f8884e45
push r11
mov r11, 0x15
nop
rcpss xmm9, xmm0
push r10
maxss xmm9, xmm5
movhlps xmm7, xmm11
psrlq mm3, 0x29
push rdx
xorps xmm5, xmm15
addps xmm2, xmm0
psllq mm4, 0x12
pop rdx
nop
dec r10
nop
pop r10
rcr r11w, 0x12
neg r11
psrlw mm6, 0xa
pop r11
call fcn.2f8883437
xor eax, eax
mov qword [rsp + 0x40], rax
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 + 0x48], 0x40
push r11
sub r11w, 0xc
pcmpgtd mm3, mm1
push r12
shl r12d, 0x16
pop r12
movlhps xmm0, xmm14
rcr r11b, 0x10
pop r11
xor edx, edx
mov dword [rsp + 0x3c], edx
cmp r10w, 0x2d
jne 0x2f88716c5
push r8
emms
pop r8
jmp 0x2f88716c8
push rax
nop
pop rax
push r11
emms
pop r11
mov ecx, 3
mov edx, 4
call sub.msvcrt.dll_calloc
mov rcx, rax
xor eax, eax
push r14
emms
nop
push r12
andps xmm4, xmm11
emms
push r11
comiss xmm8, xmm9
nop
push rcx
paddd mm0, mm4
xadd r12d, ecx
push r10
psrlq mm3, 0x68
pmulhuw mm4, mm2
pop r10
psllq mm3, 0x5e
emms
pop rcx
dec r14
mulss xmm12, xmm7
pop r11
xchg r14d, r12d
not r12d
pop r12
shl r14d, 0xb
sar r14, 4
pop r14
xor dword [rcx + rax*4], 0x57
push r15
pcmpeqw mm7, mm5
emms
nop
subps xmm10, xmm8
push r13
emms
emms
neg r13w
push r14
rcpps xmm10, xmm8
nop
push rcx
neg ecx
pop rcx
psrld mm3, 0xb
psrad mm7, 0x3b
pop r14
comiss xmm7, xmm0
emms
punpckhwd mm6, mm4
pop r13
inc r15
psraw mm3, 0xe
subss xmm9, xmm5
nop
pop r15
inc rax
cmp rax, 3
jne 0x2f88716e2
call sub.msvcrt.dll_free
push r14
mov r14, 3
push r11
pop r11
dec r14
jne 0x2f887178f
pop r14
mov dword [rsp + 0x28], 4
lea rdx, [rsp + 0x40]
xor r8d, r8d
or rcx, 0xffffffffffffffff
mov dword [rsp + 0x20], 0x3000
lea r9, [rsp + 0x48]
call fcn.2f887b439
push r9
rcl r9, 4
push r10
dec r9
push rcx
addps xmm2, xmm6
push r12
xchg r12d, ecx
push rbx
nop
pop rbx
sbb r9b, r12b
pop r12
psrad mm5, 4
pop rcx
psadbw mm1, mm7
pop r10
pslld mm5, 8
pop r9
call fcn.2f8883f6c
mov rdx, qword [rsp + 0x40]
lea r9, [rsp + 0x3c]
xor ecx, ecx
mov r8d, 0x40
call fcn.2f8878ca9
cmp r10d, ebx
jne 0x2f887186c
push r14
rol r14w, 0xd
push r12
nop
mov r12w, 1
push r9
emms
psraw mm4, 0x42
subps xmm8, xmm11
pop r9
pslld mm6, 0x29
rcl r14, 0x16
pop r12
pslld mm2, 0x49
pop r14
jmp 0x2f887188c
cmp r10b, 0x38
jne 0x2f887187f
push r8
nop
pop r8
jmp 0x2f8871884
push r11
nop
pop r11
push r9
shr r9d, 5
pop r9
push rbx
comiss xmm11, xmm12
not rbx
shl ebx, 5
not bx
not bx
push rax
pandn mm2, mm4
sub ax, bx
movups xmm6, xmm0
nop
push r12
psllq mm6, 0x23
or bl, r12b
emms
push rcx
pmulhuw mm5, mm0
nop
push r11
emms
pop r11
test rcx, rax
not ecx
pop rcx
pslld mm4, 0x69
subss xmm7, xmm3
psrad mm5, 0x5b
pop r12
pcmpeqb mm5, mm2
test bx, ax
nop
xadd al, bl
pop rax
rcpps xmm14, xmm6
paddusb mm3, mm1
rcr ebx, 0x17
nop
emms
pop rbx
mov rdx, qword [rsp + 0x40]
mov eax, dword [rdx + 8]
mov edx, dword [rdx + 0xc]
shr eax, 0xa
shr edx, 0xa
imul eax, edx
push r13
psllq mm7, 4
pop r13
cmp eax, 0x3ff
ja 0x2f8871940
push r14
sar r14, 0xf
pxor mm5, mm3
dec r14
psrlw mm0, 0x44
rcl r14d, 4
packuswb mm1, mm0
not r14w
emms
paddusb mm6, mm0
nop
pslld mm7, 0x54
rcr r14d, 0x13
pop r14
mov eax, 1
jmp 0x2f8871947
push rbx
pcmpgtw mm6, mm1
pop rbx
xor eax, eax
add rsp, 0x58
ret