Function at 0x29a0c5000
Capabilities:
Encode data using xor
Encrypt data using chaskey

Disassembly:
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x58
mov rsi, rcx
mov ebx, edx
push r8
pmullw mm7, mm0
push rdx
emms
push rbx
nop
pop rbx
xadd dl, r8b
pop rdx
comiss xmm4, xmm12
pop r8
push r15
psrlq mm1, 0x18
push r14
punpckhbw mm0, mm4
pop r14
psrlw mm3, 0x14
pop r15
push r11
ror r11d, 0x17
push r10
psrad mm5, 0x27
emms
push rdx
paddsb mm1, mm4
cmp r11w, dx
nop
push r15
mulps xmm14, xmm1
inc r11
punpckhwd mm0, mm6
paddb mm5, mm1
pop r15
dec rdx
paddb mm7, mm1
sub r11, rdx
pop rdx
nop
sbb r11w, r10w
pop r10
neg r11w
pop r11
cmp r12b, 0x5e
jne 0x29a0c50a9
push r10
rol r10b, 7
push rax
movss xmm13, xmm1
paddusw mm7, mm4
pop rax
paddusw mm5, mm1
pop r10
jmp 0x29a0c50bd
push r11
emms
push r13
add r11d, r13d
sar r13, 0xb
pop r13
psubsb mm7, mm6
pop r11
push r9
nop
push r8
nop
psrlq mm5, 0x5e
pop r8
rcr r9, 6
pop r9
lea rdi, [0x29a0c5ca0]
lea rbp, [rsp + 0x30]
lea r12, [rdi + 0x10]
mov r13, rbp
cmp r12b, 0x5f
jne 0x29a0c5109
push rdx
pmullw mm5, mm3
push rax
dec rax
emms
pop rax
psubw mm3, mm7
pop rdx
jmp 0x29a0c511d
push r8
pxor mm7, mm5
push r12
pcmpeqd mm1, mm3
xor r12d, r8d
pop r12
andnps xmm6, xmm2
pop r8
push r15
xorps xmm6, xmm5
push rcx
movhlps xmm14, xmm4
shl ecx, 0x11
pop rcx
mov r15, 2
pop r15
mov edx, 2
mov ecx, 4
call sub.msvcrt.dll_calloc
mov rcx, rax
push r11
pand mm0, mm3
dec r11d
neg r11w
push rcx
nop
nop
dec r11d
push rax
psrad mm7, 0x39
nop
push rdx
emms
mov cx, 0xc
pop rdx
shl r11, 0xb
sbb rax, r11
sbb cx, r11w
pop rax
inc r11d
nop
pop rcx
maxps xmm8, xmm12
inc r11d
pop r11
mov edx, 0x40
call sub.msvcrt.dll_realloc
mov rcx, rax
xor eax, eax
push rax
mov rax, 3
push r13
push r8
pop r8
pop r13
dec rax
jne 0x29a0c5197
pop rax
xor word [rcx + rax*2], 0x10
push r13
psrlw mm4, 0x39
emms
push rcx
emms
shl r13b, 3
push r14
emms
xchg r13, rcx
push rdx
paddsw mm0, mm1
psllq mm0, 0x1b
pop rdx
nop
minps xmm1, xmm13
pop r14
psrld mm2, 1
packsswb mm1, mm4
pop rcx
pxor mm1, mm7
emms
pop r13
inc rax
cmp rax, 4
jne 0x29a0c518f
call sub.msvcrt.dll_free
push rdx
psrld mm1, 0x12
nop
inc edx
psrld mm7, 0x56
andps xmm10, xmm2
emms
emms
pop rdx
mov al, byte [rdi]
mov byte [r13], al
push r8
mov r8, 3
push r8
emms
push r14
emms
pop r14
pslld mm7, 0x50
pop r8
dec r8
jne 0x29a0c5211
pop r8
mov al, byte [rdi + 0x10]
inc rdi
inc r13
mov byte [r13 + 0xf], al
cmp rdi, r12
jne 0x29a0c50e2
push r14
mov r14, 1
push r15
push r13
pop r13
pop r15
dec r14
jne 0x29a0c5247
pop r14
call fcn.29a0c375e
push r10
mov r10, 1
push rcx
push r11
pop r11
pop rcx
dec r10
jne 0x29a0c5264
pop r10
lea rdi, [rsp + 0x20]
test ebx, ebx
je 0x29a0c5a82
push r13
psrlq mm2, 0x3a
push r10
paddb mm1, mm5
push r14
nop
push rbx
movlhps xmm3, xmm6
pop rbx
emms
pop r14
psrld mm5, 0x49
pop r10
pcmpeqd mm0, mm6
pop r13
xor eax, eax
lea rcx, [rsp + 0x40]
push r8
not r8
comiss xmm8, xmm1
psrad mm4, 0x18
neg r8
maxss xmm0, xmm2
push r14
movlhps xmm10, xmm11
nop
neg r8d
rcl r14b, 9
xadd r14w, r8w
pop r14
nop
pminsw mm7, mm0
movlhps xmm9, xmm15
psrld mm1, 0x10
addss xmm6, xmm0
emms
pop r8
mov dl, byte [rcx + rax]
mov byte [rax + rdi], dl
push r13
psrlq mm2, 0x3a
push r10
paddb mm1, mm5
push r14
nop
push rbx
movlhps xmm3, xmm6
pop rbx
emms
pop r14
psrld mm5, 0x49
pop r10
pcmpeqd mm0, mm6
pop r13
inc rax
cmp rax, 0x10
jne 0x29a0c52a7
push r8
emms
emms
push r12
nop
psrlw mm5, 0x3e
push r15
psrad mm5, 0x44
dec r15
push r11
psrld mm6, 0x65
psraw mm7, 3
push r13
emms
psrld mm3, 0x59
pop r13
ror r8b, 3
psadbw mm2, mm7
pop r11
neg r12w
nop
pop r15
emms
pcmpgtw mm4, mm6
pop r12
psrad mm4, 0x37
punpcklwd mm7, mm5
pop r8
push rcx
psllq mm5, 0xf
nop
push r12
emms
pop r12
pslld mm3, 0x63
addss xmm11, xmm3
pop rcx
call sym.MidiBrushDisk.dll_HotProcMetricsAscend
xor eax, eax
push rdx
inc edx
push r13
emms
push rax
rcl al, 0xd
pop rax
nop
pop r13
mulss xmm7, xmm14
pop rdx
mov edx, dword [rdi + rax]
xor edx, dword [rbp + rax]
mov dword [rdi + rax], edx
add rax, 4
cmp rax, 0x10
jne 0x29a0c537c
push r14
mov r14, 3
push r11
push rbx
pop rbx
pop r11
dec r14
jne 0x29a0c53ae
pop r14
mov r9d, 0x10
push r10
comiss xmm6, xmm0
push r9
emms
push r8
psubsb mm7, mm5
push rdx
andps xmm14, xmm4
push rcx
or r10w, cx
push r12
emms
push r15
inc edx
pop r15
movlhps xmm2, xmm11
pop r12
pslld mm3, 0xd
pop rcx
pslld mm4, 0x4d
pop rdx
punpcklbw mm1, mm2
pop r8
psubusw mm4, mm0
pop r9
not r10
pop r10
mov eax, dword [rsp + 0x24]
mov edx, dword [rsp + 0x2c]
mov r8d, dword [rsp + 0x20]
mov ecx, dword [rsp + 0x28]
add r8d, eax
add ecx, edx
rol eax, 5
rol edx, 8
xor eax, r8d
rol r8d, 0x10
xor edx, ecx
add ecx, eax
rol eax, 7
add r8d, edx
rol edx, 0xd
xor eax, ecx
xor edx, r8d
rol ecx, 0x10
mov dword [rsp + 0x20], r8d
mov dword [rsp + 0x2c], edx
mov dword [rsp + 0x24], eax
mov dword [rsp + 0x28], ecx
dec r9d
jne 0x29a0c53c1
push r14
mov r14d, 1
packuswb mm2, mm3
psrad mm6, 0x2f
emms
psraw mm4, 2
push rdx
orps xmm3, xmm13
emms
dec r14
or dx, r14w
psrad mm1, 0x1a
pop rdx
dec r14
psubusw mm0, mm3
xorps xmm8, xmm11
emms
not r14
dec r14d
pop r14
call fcn.29a0c3c9e
xor eax, eax
push r15
subps xmm15, xmm2
push rax
psrlq mm2, 0x43
push r8
or r8d, eax
push r11
neg r8d
pop r11
dec r8d
pop r8
shl al, 0xc
pop rax
punpckhbw mm3, mm0
pop r15
mov edx, dword [rdi + rax]
xor edx, dword [rbp + rax]
mov dword [rdi + rax], edx
add rax, 4
cmp rax, 0x10
jne 0x29a0c5497
push rbx
comiss xmm15, xmm5
push r14
rol r14b, 9
push r12
nop
push r8
rcpps xmm2, xmm11
push r9
neg r8d
push r10
sbb r8d, r10d
push rdx
psllq mm6, 0x67
pop rdx
paddsw mm2, mm1
pop r10
neg r8w
pop r9
emms
pop r8
rcr r12, 7
pop r12
subss xmm14, xmm12
pop r14
shr bl, 3
pop rbx
mov ecx, 0x20
call sub.msvcrt.dll_malloc
mov rcx, rax
xor eax, eax
push rax
nop
push r14
adc r14d, eax
push rdx
maxps xmm3, xmm1
push rbx
paddusw mm1, mm6
push r10
pcmpgtw mm0, mm4
push r11
ror r14, 0x12
pop r11
emms
pop r10
packssdw mm3, mm6
pop rbx
not r14w
pop rdx
mov r14d, eax
pop r14
psrlq mm1, 0x48
pop rax
xor qword [rcx + rax*8], 0x13
cmp r12d, 0x52
jne 0x29a0c5566
push rax
nop
pop rax
jmp 0x29a0c556e
push r15
psllq mm2, 0x69
pop r15
push rcx
emms
pop rcx
inc rax
cmp rax, 4
jne 0x29a0c5523
call sub.msvcrt.dll_free
push r15
movss xmm12, xmm14
push rax
nop
emms
push rdx
nop
emms
paddd mm6, mm1
push r11
not r15b
xchg dl, al
psrld mm0, 0x5f
xchg r11b, dl
push rbx
andnps xmm10, xmm0
emms
psllq mm7, 0xb
and al, dl
neg edx
pop rbx
psrad mm1, 0x43
neg r15d
inc eax
paddb mm7, mm3
pop r11
not eax
not ax
maxss xmm15, xmm6
pop rdx
psubsb mm3, mm5
xchg r15d, eax
pop rax
pand mm2, mm5
pop r15
mov r12d, 0x10
cmp ebx, r12d
cmovbe r12, rbx
push r15
punpckldq mm2, mm7
push r12
emms
push rcx
psllq mm4, 0x69
push r9
sbb r15b, 0x14
pop r9
nop
pop rcx
pmulhuw mm7, mm4
pop r12
psrlw mm5, 0x4a
pop r15
call fcn.29a0c4e45
xor r13d, r13d
cmp r12b, 0x5e
jne 0x29a0c563c
push r10
rol r10b, 7
push rax
movss xmm13, xmm1
paddusw mm7, mm4
pop rax
paddusw mm5, mm1
pop r10
jmp 0x29a0c5650
push r11
emms
push r13
add r11d, r13d
sar r13, 0xb
pop r13
psubsb mm7, mm6
pop r11
push r9
nop
push r8
nop
psrlq mm5, 0x5e
pop r8
rcr r9, 6
pop r9
mov al, byte [rdi + r13]
xor byte [rsi + r13], al
cmp r12w, r9w
jne 0x29a0c56e1
push r12
pand mm1, mm4
push rbx
psrad mm4, 9
pop rbx
psubw mm3, mm2
pop r12
jmp 0x29a0c5736
cmp r12w, 0x22
jne 0x29a0c5711
push rax
rcr ax, 0xf
push r13
psrlq mm7, 0x15
nop
pop r13
movss xmm1, xmm11
pop rax
jmp 0x29a0c5724
push r10
rol r10b, 4
push rcx
emms
punpcklwd mm5, mm0
pop rcx
psrad mm0, 0x5e
pop r10
push r12
dec r12d
push r14
nop
nop
pop r14
rcpss xmm13, xmm8
pop r12
push r10
sub r10b, 0xc
push r15
psrlq mm1, 7
psrlq mm2, 0x5e
pop r15
rcr r10w, 3
pop r10
call fcn.29a0c49dc
inc r13
cmp r13d, r12d
jb 0x29a0c560c
push r15
subps xmm15, xmm2
push rax
psrlq mm2, 0x43
push r8
or r8d, eax
push r11
neg r8d
pop r11
dec r8d
pop r8
shl al, 0xc
pop rax
punpckhbw mm3, mm0
pop r15
sub ebx, r12d
cmp r12, 0x63
jne 0x29a0c579d
push rbx
psrlq mm3, 0x32
pop rbx
jmp 0x29a0c57a2
push r15
nop
pop r15
push r13
por mm0, mm2
pop r13
mov eax, 2
push r9
mov r9, 1
push r14
pop r14
dec r9
jne 0x29a0c57b7
pop r9
push r9
mulps xmm6, xmm12
push r10
emms
sar r10, 0x12
push r14
cmp r9b, r14b
rcl r10, 0xe
psllq mm7, 0x25
push rax
shr r9w, 4
nop
xadd r14w, ax
paddw mm2, mm5
push r11
add r11b, r14b
nop
packsswb mm7, mm3
nop
sub r9w, r14w
pop r11
paddb mm4, mm1
nop
not r14b
psrad mm2, 0x64
pop rax
shr r14d, 0xd
neg r14
pcmpeqw mm3, mm1
pop r14
psrlw mm4, 0x4d
dec r10d
pop r10
nop
pop r9
dec eax
je 0x29a0c582b
mov eax, 1
jmp 0x29a0c57ae
push rdx
shr rdx, 0x13
nop
shl rdx, 5
rol dl, 0xe
pmaxub mm6, mm5
push r11
mulps xmm0, xmm5
addss xmm13, xmm1
emms
psubusw mm7, mm6
push rbx
ror r11d, 7
not r11d
nop
push r13
psrlw mm0, 0x2d
adc rdx, r11
push r15
psrld mm1, 0x3f
pop r15
psrlw mm5, 0x33
emms
pop r13
rcl r11b, 0xb
cmp ebx, edx
paddw mm4, mm7
pop rbx
psraw mm1, 0x5c
maxss xmm15, xmm9
nop
sbb dl, r11b
pop r11
addss xmm1, xmm2
nop
nop
mov rdx, 0x12
rcpss xmm10, xmm6
pop rdx
add rsi, r12
push r9
rol r9, 0xb
push r14
ucomiss xmm0, xmm10
push r8
comiss xmm14, xmm0
push rdx
sbb dx, 0xc
pop rdx
dec r8
pop r8
pslld mm4, 0x51
pop r14
inc r9d
pop r9
lea rcx, [rbp - 0x10]
mov rax, rbp
push r11
nop
push rbx
emms
push rcx
and r11b, bl
push r8
psrld mm7, 0xd
push r13
emms
push r14
sub r8, 0xb
push r9
pmaxsw mm3, mm7
pop r9
emms
pop r14
psraw mm4, 0x1d
pop r13
shr r11d, 0x11
pop r8
sub rbx, rcx
pop rcx
nop
pop rbx
rcpps xmm5, xmm1
pop r11
inc byte [rax + 0x1f]
jne 0x29a0c5958
push r10
comiss xmm6, xmm0
push r9
emms
push r8
psubsb mm7, mm5
push rdx
andps xmm14, xmm4
push rcx
or r10w, cx
push r12
emms
push r15
inc edx
pop r15
movlhps xmm2, xmm11
pop r12
pslld mm3, 0xd
pop rcx
pslld mm4, 0x4d
pop rdx
punpcklbw mm1, mm2
pop r8
psubusw mm4, mm0
pop r9
not r10
pop r10
dec rax
cmp rcx, rax
jne 0x29a0c58ca
push r12
sub r12w, 4
psubsb mm3, mm7
subss xmm5, xmm11
rcpps xmm8, xmm2
dec r12d
inc r12d
psrad mm5, 0x4c
pop r12
mov ecx, 0x14
call sub.msvcrt.dll_malloc
mov rcx, rax
push rdx
nop
emms
movhlps xmm15, xmm11
psraw mm0, 0x49
nop
push r9
inc edx
xor r9d, edx
nop
nop
push r15
not r9w
minps xmm10, xmm0
nop
push r10
xchg r9d, r10d
andnps xmm5, xmm13
push rax
movaps xmm10, xmm5
pop rax
nop
rol r15b, 1
pop r10
punpckldq mm6, mm1
nop
ror r9b, 0x12
pop r15
psrlw mm6, 0x63
ror rdx, 0x11
neg r9w
psrlw mm6, 5
pop r9
psrld mm6, 0x4a
psllq mm4, 0x19
inc edx
pmaxsw mm0, mm1
pcmpeqw mm6, mm0
pop rdx
mov edx, 0x78
call sub.msvcrt.dll_realloc
mov rcx, rax
cmp r12d, 0x30
jne 0x29a0c5a12
push r10
neg r10d
push r12
paddusb mm3, mm4
not r12w
pop r12
neg r10w
pop r10
jmp 0x29a0c5a26
push rbx
maxps xmm4, xmm9
push r8
psrlw mm0, 0x30
and r8b, bl
pop r8
sar ebx, 0xe
pop rbx
push rcx
neg ecx
push r15
ucomiss xmm2, xmm4
inc r15
pop r15
mulps xmm0, xmm8
pop rcx
call sub.msvcrt.dll_free
cmp r12d, 0x25
jne 0x29a0c5a56
push rbx
andnps xmm4, xmm5
push r14
cmp bx, r14w
nop
pop r14
inc rbx
pop rbx
jmp 0x29a0c5a67
push rax
neg eax
push r12
shl r12w, 0x15
nop
pop r12
punpcklbw mm0, mm2
pop rax
push r15
inc r15
push r8
sub r15b, r8b
psrad mm2, 0x1d
pop r8
pslld mm2, 0x4e
pop r15
jmp 0x29a0c5276
push r10
nop
push rdx
sar dx, 0x10
push r13
psrlq mm7, 0x28
pop r13
rcl dx, 9
pop rdx
psllq mm4, 0x2b
pop r10
mov edx, 4
mov ecx, 3
call sub.msvcrt.dll_calloc
mov rcx, rax
cmp r12, 0x19
jne 0x29a0c5b19
push r14
neg r14b
push r13
emms
push rcx
psubsb mm4, mm1
push rax
andnps xmm9, xmm14
pop rax
movaps xmm13, xmm0
pop rcx
psraw mm6, 0x5e
pop r13
paddsb mm7, mm4
pop r14
jmp 0x29a0c5b84
push rdx
emms
psrlq mm7, 0x61
inc rdx
emms
nop
push r10
emms
subss xmm2, xmm1
nop
adc edx, r10d
push rcx
not ecx
psrlw mm7, 5
emms
push r12
emms
ror rcx, 8
push r8
movups xmm3, xmm8
pop r8
xadd r10w, dx
rcl r12d, 0x12
pop r12
psrlw mm1, 0x49
psubsb mm0, mm1
sar ecx, 0x15
pop rcx
not dx
xadd dl, r10b
psrld mm4, 0x69
psrad mm7, 0x4f
pop r10
psrlw mm1, 0x67
emms
pslld mm7, 0x24
pslld mm6, 0x13
pxor mm7, mm4
pop rdx
push r12
pcmpeqb mm7, mm6
inc r12
psubusw mm1, mm0
psrlq mm2, 0x4b
movups xmm13, xmm1
push rdx
nop
pmaddwd mm4, mm6
not rdx
psraw mm6, 0xe
psraw mm1, 0x43
pop rdx
dec r12d
neg r12b
neg r12w
nop
inc r12d
pcmpeqb mm3, mm6
pop r12
mov edx, 0x6c
call sub.msvcrt.dll_realloc
mov rcx, rax
xor eax, eax
cmp r12w, 5
jne 0x29a0c5bfb
push r15
punpcklbw mm2, mm1
push r8
paddusb mm3, mm6
psrlq mm6, 0x29
pop r8
pxor mm0, mm7
pop r15
jmp 0x29a0c5c09
push rax
por mm2, mm1
push r14
nop
nop
pop r14
neg rax
pop rax
push r10
psubusw mm5, mm0
push rcx
nop
xadd cl, r10b
pop rcx
neg r10d
pop r10
xor dword [rcx + rax*4], 0x16
push rdx
psrlq mm4, 0x57
pmulhuw mm2, mm1
emms
nop
dec rdx
pmaxsw mm6, mm1
sbb rdx, 0xc
pop rdx
inc rax
cmp rax, 3
jne 0x29a0c5bca
call sub.msvcrt.dll_free
push r14
mov r14, 0xa
shl r14w, 0x14
por mm3, mm2
sar r14d, 0xd
push rbx
nop
sar bl, 0xc
nop
push r9
rcl r9b, 0x14
nop
push r13
nop
pop r13
nop
addps xmm9, xmm11
pop r9
shl r14b, 7
rcl bl, 2
or bx, r14w
pop rbx
mulss xmm7, xmm5
nop
nop
sar r14w, 0xf
pop r14
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
ret