Function at 0x140004520
Capabilities:
Encode data using xor

Disassembly:
mov rax, rsp
push rdi
sub rsp, 0xb0
mov qword [rax + 8], rbx
mov edi, 0xc0000022
mov qword [rax + 0x10], rbp
mov rbp, rdx
mov qword [rax - 0x10], rsi
mov edx, 2
mov qword [rax - 0x18], r14
mov r14, rcx
xor ecx, ecx
mov qword [rax + 0x20], 0
call qword [sym.imp.ole32.dll_CoInitializeEx]
movups xmm0, xmmword [str.B_t_t_b]
xor ecx, ecx
cmp dword [0x140029090], 2
mov esi, eax
movups xmm1, xmmword [0x140024f20]
mov eax, dword [0x140024f58]
movups xmmword [rsp + 0x30], xmm0
movups xmm0, xmmword [0x140024f30]
movups xmmword [rsp + 0x50], xmm0
movsd xmm0, qword [0x140024f50]
movups xmmword [rsp + 0x40], xmm1
movups xmm1, xmmword [0x140024f40]
mov dword [rsp + 0x78], eax
movzx eax, word [0x140024f5c]
movsd qword [rsp + 0x70], xmm0
movups xmmword [rsp + 0x60], xmm1
mov word [rsp + 0x7c], ax
jl 0x1400046fc
movdqa xmm5, xmmword [0x140025100]
lea rdx, [rsp + 0x30]
movdqa xmm4, xmmword [0x140025170]
movaps xmmword [rsp + 0x90], xmm6
movdqa xmm6, xmmword [0x140025130]
movaps xmmword [rsp + 0x80], xmm7
movdqa xmm7, xmmword [0x140025150]
nop word [rax + rax]
movd xmm2, ecx
lea eax, [rcx + 4]
pshufd xmm2, xmm2, 0
lea rdx, [rdx + 0x10]
paddd xmm2, xmm5
add ecx, 8
movdqa xmm1, xmm2
movdqa xmm0, xmm2
punpckhdq xmm0, xmm2
punpckldq xmm1, xmm2
pmuldq xmm0, xmm4
pmuldq xmm1, xmm4
shufps xmm1, xmm0, 0xdd
psrad xmm1, 4
movdqa xmm0, xmm1
psrld xmm0, 0x1f
paddd xmm0, xmm1
pmulld xmm0, xmm6
psubd xmm2, xmm0
pshufhw xmm0, xmm2, 0xd8
movq xmm2, xmm7
pshuflw xmm1, xmm0, 0xd8
movq xmm0, qword [rdx - 0x10]
pshufd xmm3, xmm1, 0xd8
paddw xmm3, xmm2
movd xmm2, eax
pshufd xmm2, xmm2, 0
xorps xmm3, xmm0
movq qword [rdx - 0x10], xmm3
paddd xmm2, xmm5
movdqa xmm1, xmm2
movdqa xmm0, xmm2
punpckhdq xmm0, xmm2
pmuldq xmm0, xmm4
punpckldq xmm1, xmm2
pmuldq xmm1, xmm4
shufps xmm1, xmm0, 0xdd
psrad xmm1, 4
movdqa xmm0, xmm1
psrld xmm0, 0x1f
paddd xmm0, xmm1
pmulld xmm0, xmm6
psubd xmm2, xmm0
pshufhw xmm0, xmm2, 0xd8
movq xmm2, xmm7
pshuflw xmm1, xmm0, 0xd8
movq xmm0, qword [rdx - 8]
pshufd xmm3, xmm1, 0xd8
paddw xmm3, xmm2
xorps xmm3, xmm0
movq qword [rdx - 8], xmm3
cmp ecx, 0x20
jl 0x140004600
movaps xmm7, xmmword [rsp + 0x80]
movaps xmm6, xmmword [rsp + 0x90]
cmp ecx, 0x27
jge 0x140004741
movsxd rax, ecx
lea r8, [rsp + 0x30]
lea r8, [r8 + rax*2]
nop dword [rax + rax]
mov eax, 0x4bda12f7
lea r8, [r8 + 2]
imul ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add edx, eax
movzx eax, dx
imul edx, eax, 0x36
movzx eax, cx
inc ecx
sub ax, dx
add ax, 0x39
xor word [r8 - 2], ax
cmp ecx, 0x27
jl 0x140004710
lea r9, [rsp + 0xd8]
lea rcx, [rsp + 0x30]
call fcn.140003770
mov rbx, qword [rsp + 0xd8]
test eax, eax
jne 0x14000478b
test rbx, rbx
je 0x140004799
mov rax, qword [rbx]
xor r9d, r9d
mov dword [rsp + 0x28], 0
mov r8, rbp
mov rdx, r14
mov dword [rsp + 0x20], 0
mov rcx, rbx
call qword [rax + 0x48]
sar eax, 0x1f
and edi, eax
test rbx, rbx
je 0x140004799
mov rdx, qword [rbx]
mov rcx, rbx
call qword [rdx + 0x10]
mov r14, qword [rsp + 0xa0]
test esi, esi
mov rsi, qword [rsp + 0xa8]
mov rbp, qword [rsp + 0xc8]
mov rbx, qword [rsp + 0xc0]
jne 0x1400047c3
call qword [sym.imp.ole32.dll_CoUninitialize]
mov eax, edi
add rsp, 0xb0
pop rdi
ret