Function at 0x2904e1000
Capabilities:
Encode data using xor

Disassembly:
push rdi
push rsi
push rbx
sub rsp, 0x30
cmp r12, r14
jne 0x2904e1033
push rcx
psrlq mm2, 0x29
push rdx
psrlw mm7, 0x2c
emms
pop rdx
nop
pop rcx
jmp 0x2904e1045
push r15
emms
push r12
psubw mm4, mm6
psrlq mm0, 0x41
pop r12
nop
pop r15
push r8
neg r8d
push r11
movss xmm12, xmm0
dec r11
pop r11
maxps xmm15, xmm0
pop r8
movabs rax, 0x660070002f
mov rdi, qword gs:[0x60]
mov qword [rsp + 0x20], rax
push rdx
emms
nop
rcr rdx, 1
push r9
pmullw mm3, mm7
rol r9w, 0x12
emms
push r14
movups xmm3, xmm15
psllq mm1, 0x19
push r11
paddusw mm1, mm4
psraw mm0, 0x44
pop r11
psrad mm4, 0x6a
punpckhwd mm5, mm0
psraw mm0, 0x59
pop r14
shl r9, 3
nop
pop r9
pand mm4, mm0
paddw mm0, mm6
pop rdx
movabs rax, 0x5f004b0035
mov qword [rsp + 0x28], rax
push rax
not rax
pop rax
lea rsi, [rsp + 0x28]
lea rbx, [rsp + 0x20]
mov rdx, rsi
mov rcx, rbx
call sub.msvcrt.dll_wcscmp
test eax, eax
jne 0x2904e1125
push r13
emms
push r15
comiss xmm14, xmm1
push r11
shl r13w, 8
push r8
paddd mm4, mm3
push rax
nop
push rdx
paddsw mm2, mm3
push r10
inc r13
pop r10
psrld mm2, 0x2b
pop rdx
movaps xmm11, xmm8
pop rax
shl r15b, 0xf
pop r8
mov r11d, r13d
pop r11
emms
pop r15
nop
pop r13
jmp 0x2904e114c
push rdx
movhlps xmm8, xmm3
push r9
movups xmm15, xmm5
shl edx, 0xe
push r8
shr dl, 7
neg rdx
psraw mm0, 0x54
pop r8
pslld mm5, 0x51
nop
pop r9
psubsb mm1, mm0
pop rdx
push r10
psrlq mm3, 0x42
push rdx
emms
push r13
subss xmm10, xmm8
push r8
subps xmm5, xmm10
pop r8
psrlq mm7, 0x32
pop r13
addps xmm10, xmm4
pop rdx
emms
pop r10
cmp dword [rdi + 0xb8], 1
ja 0x2904e132f
mov word [rsp + 0x20], 0x6737
mov byte [rsp + 0x22], 0
push r8
nop
push r15
emms
push r10
emms
push r9
paddd mm3, mm1
push rax
pmulhuw mm7, mm1
push rcx
and r15b, cl
pop rcx
add r9b, r15b
pop rax
sbb r15b, 0xb
pop r9
nop
pop r10
nop
pop r15
nop
pop r8
mov word [rsp + 0x28], 0x7c32
mov byte [rsp + 0x2a], 0
push r9
psrlw mm1, 0x29
pslld mm6, 0x57
pslld mm3, 0x17
pmulhuw mm3, mm7
pmulhuw mm0, mm3
andnps xmm11, xmm15
minps xmm13, xmm14
pop r9
mov rdx, rsi
mov rcx, rbx
call sub.msvcrt.dll__mbscmp
test eax, eax
jne 0x2904e129a
mov rax, rbx
lea rdx, [rsp + 0x22]
push r9
paddb mm5, mm4
push rcx
inc ecx
emms
push r13
not ecx
xadd r13b, cl
nop
push r8
nop
emms
mov r8b, 3
subss xmm3, xmm5
push r11
emms
ror r11d, 8
psllq mm5, 0x32
pcmpeqd mm7, mm3
emms
pop r11
emms
rcpss xmm6, xmm2
ror r8w, 0x15
packssdw mm0, mm5
pop r8
minps xmm14, xmm9
pslld mm5, 0x55
dec rcx
pop r13
movups xmm0, xmm5
emms
pop rcx
movss xmm4, xmm12
pop r9
xor byte [rax], 0x61
push rcx
neg cl
push rdx
psrad mm7, 0x5b
push r9
dec r9d
push rax
pand mm2, mm3
push r11
dec ecx
push r8
shl ecx, 3
pop r8
emms
pop r11
psrad mm5, 0x2f
pop rax
nop
pop r9
mov edx, 8
pop rdx
nop
pop rcx
inc rax
cmp rax, rdx
jne 0x2904e11fd
jmp 0x2904e12f8
push r8
ror r8d, 0xe
push r12
pcmpgtw mm6, mm0
subps xmm0, xmm10
push r13
rcr r8b, 0x13
or r12b, r13b
sbb r13b, r12b
push r10
not r13w
nop
nop
emms
push rbx
pcmpeqb mm0, mm3
dec r10
dec r10
sbb r10b, r13b
paddb mm0, mm5
pop rbx
not r13d
emms
neg r13b
psrlw mm0, 0x5f
pop r10
not r8w
or r12, r8
dec r12d
pop r13
psadbw mm1, mm6
shl r8w, 4
pop r12
emms
pop r8
push rax
paddsb mm0, mm2
inc rax
andnps xmm12, xmm7
movlhps xmm7, xmm6
push r12
subps xmm14, xmm11
punpckhbw mm6, mm1
neg rax
ror ax, 0x13
pop r12
nop
addps xmm8, xmm1
addss xmm2, xmm8
emms
pop rax
mov eax, 1
jmp 0x2904e13af
cmp r12, rax
jne 0x2904e1344
push r9
mulps xmm9, xmm3
pop r9
jmp 0x2904e1349
push r10
nop
pop r10
push r15
psrlw mm6, 0x17
pop r15
cmp r12w, 0x25
jne 0x2904e136e
push r9
psrlq mm2, 0x58
push r14
emms
psubw mm5, mm7
pop r14
pmaddwd mm5, mm3
pop r9
jmp 0x2904e1381
push r15
psllq mm2, 0x23
push rbx
rcl rbx, 5
andnps xmm6, xmm14
pop rbx
nop
pop r15
push r12
pcmpeqb mm4, mm6
push r8
sbb r12b, r8b
emms
pop r8
psrlw mm2, 0x5f
pop r12
push rbx
rcr rbx, 0xa
psrad mm7, 0x4f
rcr ebx, 5
emms
emms
sar ebx, 0xa
psraw mm5, 0x5a
pop rbx
xor eax, eax
add rsp, 0x30
pop rbx
pop rsi
pop rdi
ret