Function at 0x5359a0
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x1c0
mov ebx, 0x41
lea eax, [esp + 8]
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 1
jmp 0x535a0c
dec ebx
mov eax, edi
cmp ebx, 1
jbe 0x535abd
push eax
push eax
lea esi, [esp + 0x30]
push esi
mov edi, eax
call fcn.005342c0
add esp, 0xc
movsd xmm1, qword [esp + 0x38]
mov ecx, ebx
xor eax, eax
mov edx, 1
movsd xmm0, qword [esp + 0x40]
movsd xmm2, qword [esp + 0x28]
add cl, 0xfe
shld eax, edx, cl
shl edx, cl
test cl, 0x20
mov ecx, 0
cmovne eax, edx
cmovne edx, ecx
movsd qword [esp + 0x18], xmm1
movsd xmm1, qword [esp + 0x30]
and eax, 0x7ffffff
and edx, 0xf8000000
movsd qword [esp + 0x20], xmm0
movsd qword [esp + 8], xmm2
or edx, eax
movsd qword [esp + 0x10], xmm1
je 0x535a00
push dword [ebp + 0xc]
push edi
push esi
call fcn.005342c0
add esp, 0xc
movsd xmm1, qword [esp + 0x38]
movsd xmm0, qword [esp + 0x40]
movsd xmm2, qword [esp + 0x28]
movsd qword [esp + 0x18], xmm1
movsd xmm1, qword [esp + 0x30]
movsd qword [esp + 0x20], xmm0
movsd qword [esp + 8], xmm2
movsd qword [esp + 0x10], xmm1
jmp 0x535a00
mov esi, 0x41
lea ebx, [esp + 0x28]
jmp 0x535ade
dec esi
lea eax, [esp + 8]
cmp esi, 1
jbe 0x535b67
lea edi, [esi - 2]
push eax
push eax
push ebx
call fcn.005342c0
add esp, 0xc
movsd xmm1, qword [esp + 0x38]
movsd xmm0, qword [esp + 0x40]
movsd xmm2, qword [esp + 0x28]
cmp edi, 0x3a
movsd qword [esp + 0x18], xmm1
movsd xmm1, qword [esp + 0x30]
movsd qword [esp + 0x20], xmm0
movsd qword [esp + 8], xmm2
movsd qword [esp + 0x10], xmm1
ja 0x535ad0
push dword [ebp + 0xc]
lea eax, [esp + 0xc]
push eax
push ebx
call fcn.005342c0
add esp, 0xc
movsd xmm1, qword [esp + 0x38]
movsd xmm0, qword [esp + 0x40]
movsd xmm2, qword [esp + 0x28]
movsd qword [esp + 0x18], xmm1
movsd xmm1, qword [esp + 0x30]
movsd qword [esp + 0x20], xmm0
movsd qword [esp + 8], xmm2
movsd qword [esp + 0x10], xmm1
jmp 0x535ad0
mov ebx, 0x41
jmp 0x535b7c
dec ebx
mov eax, edi
cmp ebx, 1
jbe 0x535c2d
push eax
push eax
lea esi, [esp + 0x30]
push esi
mov edi, eax
call fcn.005342c0
add esp, 0xc
movsd xmm1, qword [esp + 0x38]
mov ecx, ebx
xor eax, eax
mov edx, 1
movsd xmm0, qword [esp + 0x40]
movsd xmm2, qword [esp + 0x28]
add cl, 0xfe
shld eax, edx, cl
shl edx, cl
test cl, 0x20
mov ecx, 0
cmovne eax, edx
cmovne edx, ecx
movsd qword [esp + 0x18], xmm1
movsd xmm1, qword [esp + 0x30]
and eax, 0xfde737d5
and edx, 0x6d38bcf4
movsd qword [esp + 0x20], xmm0
movsd qword [esp + 8], xmm2
or edx, eax
movsd qword [esp + 0x10], xmm1
je 0x535b70
push dword [ebp + 0xc]
push edi
push esi
call fcn.005342c0
add esp, 0xc
movsd xmm1, qword [esp + 0x38]
movsd xmm0, qword [esp + 0x40]
movsd xmm2, qword [esp + 0x28]
movsd qword [esp + 0x18], xmm1
movsd xmm1, qword [esp + 0x30]
movsd qword [esp + 0x20], xmm0
movsd qword [esp + 8], xmm2
movsd qword [esp + 0x10], xmm1
jmp 0x535b70
mov ebx, 0x41
jmp 0x535c4c
dec ebx
mov eax, edi
cmp ebx, 1
jbe 0x535cfd
push eax
push eax
lea esi, [esp + 0x30]
push esi
mov edi, eax
call fcn.005342c0
add esp, 0xc
movsd xmm1, qword [esp + 0x38]
mov ecx, ebx
xor eax, eax
mov edx, 1
movsd xmm0, qword [esp + 0x40]
movsd xmm2, qword [esp + 0x28]
add cl, 0xfe
shld eax, edx, cl
shl edx, cl
test cl, 0x20
mov ecx, 0
cmovne eax, edx
cmovne edx, ecx
movsd qword [esp + 0x18], xmm1
movsd xmm1, qword [esp + 0x30]
and eax, 0x279dce56
and edx, 0x17e3192a
movsd qword [esp + 0x20], xmm0
movsd qword [esp + 8], xmm2
or edx, eax
movsd qword [esp + 0x10], xmm1
je 0x535c40
push dword [ebp + 0xc]
push edi
push esi
call fcn.005342c0
add esp, 0xc
movsd xmm1, qword [esp + 0x38]
movsd xmm0, qword [esp + 0x40]
movsd xmm2, qword [esp + 0x28]
movsd qword [esp + 0x18], xmm1
movsd xmm1, qword [esp + 0x30]
movsd qword [esp + 0x20], xmm0
movsd qword [esp + 8], xmm2
movsd qword [esp + 0x10], xmm1
jmp 0x535c40
movsd xmm1, qword [esp + 0x18]
movsd xmm0, qword [esp + 0x20]
movq xmm2, qword [esp + 8]
lea esi, [esp + 0x180]
lea edi, [esp + 0xb0]
movsd qword [esp + 0x190], xmm1
movsd xmm1, qword [esp + 0x10]
movsd qword [esp + 0x198], xmm0
movq qword [esp + 0x180], xmm2
movsd qword [esp + 0x188], xmm1
push esi
push dword [ebp + 0xc]
push edi
call fcn.005342c0
add esp, 0xc
lea eax, [esp + 0xd0]
push esi
push edi
mov edi, eax
push eax
call fcn.005342c0
add esp, 0xc
movdqu xmm0, xmmword [esp + 0xb0]
movdqu xmm1, xmmword [esp + 0xc0]
mov ecx, 4
xor eax, eax
mov esi, 4
lea ebx, [esp + 0x28]
mov dword [esp + 0x7c], 0xffc97f06
mov dword [esp + 0x78], 0x2a770992
mov dword [esp + 0x74], 0xba807ace
mov dword [esp + 0x70], 0x842a3dfc
mov dword [esp + 0x6c], 0x1546cad0
mov dword [esp + 0x68], 0x4378daf
mov dword [esp + 0x64], 0x592d7fb
mov dword [esp + 0x60], 0xb41e6602
movdqa xmmword [esp + 0x150], xmm0
movdqa xmmword [esp + 0x140], xmm1
jmp 0x535f80
mov dword [esp + 0x48], 1
lea eax, [esp + 8]
lea ecx, [esi - 1]
mov dword [esp + 0x60], edi
lea edi, [esp + 0x60]
mov dword [esp + 0x80], ecx
push edi
lea ecx, [esp + 0xb4]
push ecx
push eax
call fcn.005342c0
add esp, 0xc
movdqu xmm0, xmmword [esp + 0xd4]
mov ecx, dword [esp + 0xe8]
mov eax, dword [esp + 0xd0]
pshufd xmm1, xmm0, 0xee
or ecx, dword [esp + 0xec]
xor eax, 1
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd edx, xmm0
or edx, dword [esp + 0xe4]
or ecx, edx
xor edx, edx
or ecx, eax
sete dl
neg edx
push edx
call fcn.0056ee00
add esp, 4
movzx eax, al
movdqu xmm1, xmmword [esp + 8]
movdqa xmm4, xmmword [esp + 0x150]
movdqu xmm2, xmmword [esp + 0x18]
neg eax
movd xmm0, eax
pshufd xmm0, xmm0, 0
movdqa xmm3, xmm0
pand xmm4, xmm0
pandn xmm3, xmm1
por xmm4, xmm3
movdqa xmm3, xmmword [esp + 0x140]
movdqa xmmword [esp + 0x150], xmm4
movdqu xmmword [esp + 0xb0], xmm4
pand xmm3, xmm0
pandn xmm0, xmm2
por xmm3, xmm0
movdqa xmmword [esp + 0x140], xmm3
movdqu xmmword [esp + 0xc0], xmm3
push edi
push edi
push ebx
call fcn.005342c0
add esp, 0xc
movsd xmm1, qword [esp + 0x38]
movsd xmm0, qword [esp + 0x40]
movsd xmm2, qword [esp + 0x28]
movsd qword [esp + 0x70], xmm1
movsd xmm1, qword [esp + 0x30]
movsd qword [esp + 0x78], xmm0
movsd qword [esp + 0x60], xmm2
movsd qword [esp + 0x68], xmm1
push edi
lea edi, [esp + 0xd4]
push edi
push ebx
call fcn.005342c0
add esp, 0xc
mov eax, dword [esp + 0x58]
movsd xmm1, qword [esp + 0x38]
movq xmm0, qword [esp + 0x40]
movq xmm2, qword [esp + 0x28]
mov ecx, dword [esp + 0x48]
movsd qword [esp + 0xe0], xmm1
movq xmm1, qword [esp + 0x30]
inc eax
cmp esi, 2
mov esi, dword [esp + 0x80]
movq qword [esp + 0xe8], xmm0
movq qword [esp + 0xd0], xmm2
movq qword [esp + 0xd8], xmm1
jb 0x53633f
mov dword [esp + 0x94], ecx
mov dword [esp + 0x58], eax
push edi
push edi
lea eax, [esp + 0x128]
push eax
call fcn.005342c0
add esp, 0xc
push 1
call fcn.0052fee0
add esp, 4
mov edi, dword [esp + 0x60]
cmp esi, 3
jb 0x535df0
movsd xmm2, qword [esp + 0x134]
mov ecx, eax
mov eax, dword [esp + 0x120]
mov dword [esp + 0x90], esi
movups xmm0, xmmword [esp + 0x124]
mov ebx, dword [esp + 0x13c]
movups xmm1, xmmword [esp + 0x64]
mov esi, dword [esp + 0x7c]
mov dword [esp + 0x48], 1
movaps xmmword [esp + 0xa0], xmm2
movsd xmm2, qword [esp + 0x74]
mov dword [esp + 0x4c], eax
mov eax, 2
movaps xmmword [esp + 0x80], xmm0
nop dword [eax]
movdqa xmm0, xmmword [esp + 0xa0]
movaps xmmword [esp + 0x160], xmm1
movdqa xmm1, xmmword [esp + 0x80]
mov byte [esp + 7], cl
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x4c]
movaps xmmword [esp + 0x170], xmm2
mov dword [esp + 0x5c], edi
mov dword [esp + 0x54], esi
movd edx, xmm0
pshufd xmm0, xmm0, 0x55
xor eax, 1
movd ecx, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
or ecx, ebx
pshufd xmm1, xmm0, 0x55
or ecx, edx
por xmm1, xmm0
movss xmm0, dword [esp + 0x4c]
movd edx, xmm1
or ecx, edx
xor edx, edx
or ecx, eax
mov eax, dword [esp + 0x50]
sete dl
movaps xmmword [esp + 0x110], xmm0
neg edx
inc eax
mov dword [esp + 0x9c], eax
push edx
call fcn.0056ee00
add esp, 4
movdqa xmm2, xmmword [esp + 0x80]
movdqa xmm1, xmmword [esp + 0x160]
movzx esi, al
mov edx, dword [esp + 0x50]
neg esi
pshufd xmm0, xmm2, 0xff
movd eax, xmm0
movdqa xmm0, xmm1
pxor xmm0, xmm2
pshufd xmm0, xmm0, 0xff
movd ecx, xmm0
pshufd xmm0, xmm1, 0x90
movd xmm1, edi
movss xmm0, xmm1
pshufd xmm1, xmm2, 0x90
movaps xmm2, xmmword [esp + 0x110]
and ecx, esi
xor ecx, eax
mov eax, dword [esp + 0x54]
movss xmm1, xmm2
movd xmm2, esi
pshufd xmm4, xmm2, 0
xor eax, ebx
movdqa xmm3, xmm2
movdqa xmmword [esp + 0x110], xmm2
movdqa xmm2, xmm4
and eax, esi
andps xmm0, xmm4
movaps xmmword [esp + 0x100], xmm4
pandn xmm2, xmm1
xor eax, ebx
movdqa xmm1, xmmword [esp + 0x170]
orps xmm0, xmm2
pshufd xmm2, xmm3, 0x50
movups xmmword [esp + 0x28], xmm0
mov dword [esp + 0x38], ecx
mov dword [esp + 0x44], eax
xor eax, eax
cmp dword [esp + 0x94], edx
movdqa xmm0, xmm2
movdqa xmmword [esp + 0xf0], xmm2
pandn xmm0, xmmword [esp + 0xa0]
pand xmm1, xmm2
sete al
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x48]
por xmm1, xmm0
movq qword [esp + 0x3c], xmm1
xor eax, edx
and eax, esi
xor eax, edx
mov dword [esp + 0x48], eax
lea eax, [esp + 0x28]
push eax
push eax
lea eax, [esp + 0x10]
push eax
call fcn.005342c0
add esp, 0xc
mov edi, dword [esp + 8]
mov eax, dword [esp + 0x4c]
movups xmm1, xmmword [esp + 0xc]
movaps xmm0, xmmword [esp + 0x80]
movaps xmm2, xmmword [esp + 0x100]
xor eax, edi
andps xmm0, xmm2
andnps xmm2, xmm1
movaps xmmword [esp + 0x1a0], xmm1
and eax, esi
movaps xmm1, xmm2
movaps xmm2, xmmword [esp + 0xf0]
xor eax, edi
orps xmm1, xmm0
movaps xmm0, xmmword [esp + 0xa0]
xor edi, dword [esp + 0x5c]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x24]
movaps xmmword [esp + 0x80], xmm1
movsd xmm1, qword [esp + 0x1c]
andps xmm0, xmm2
xor ebx, eax
andnps xmm2, xmm1
movaps xmmword [esp + 0x100], xmm1
and ebx, esi
movaps xmm1, xmm2
xor ebx, eax
xor eax, dword [esp + 0x54]
orps xmm1, xmm0
movaps xmmword [esp + 0xa0], xmm1
mov dword [esp + 0xf0], eax
push dword [esp + 0x98]
call fcn.0052fee0
add esp, 4
not al
and al, 1
movzx eax, al
push eax
call fcn.0052fee0
add esp, 4
and al, byte [esp + 7]
movzx eax, al
push eax
call fcn.0052fee0
add esp, 4
mov ecx, eax
movzx eax, al
movdqa xmm2, xmmword [esp + 0x1a0]
movdqa xmm3, xmmword [esp + 0x100]
mov edx, dword [esp + 0x50]
neg eax
movd xmm0, eax
and esi, eax
mov eax, dword [esp + 0x58]
pand xmm0, xmmword [esp + 0x110]
and edi, esi
and esi, dword [esp + 0xf0]
xor edi, dword [esp + 0x5c]
lea eax, [eax + edx + 1]
pshufd xmm1, xmm0, 0
pshufd xmm0, xmm0, 0x50
xor esi, dword [esp + 0x54]
cmp eax, 4
mov eax, dword [esp + 0x9c]
pand xmm2, xmm1
pandn xmm1, xmmword [esp + 0x160]
pand xmm3, xmm0
pandn xmm0, xmmword [esp + 0x170]
por xmm1, xmm2
movdqa xmm2, xmm0
por xmm2, xmm3
jne 0x536010
movaps xmm0, xmmword [esp + 0x80]
movdqu xmmword [esp + 0x64], xmm1
pshufd xmm1, xmm2, 0x55
movd dword [esp + 0x74], xmm2
lea ebx, [esp + 0x28]
lea eax, [esp + 8]
movd dword [esp + 0x78], xmm1
mov dword [esp + 0x7c], esi
mov esi, dword [esp + 0x90]
movups xmmword [esp + 0x124], xmm0
movdqa xmm0, xmmword [esp + 0xa0]
movd dword [esp + 0x134], xmm0
pshufd xmm0, xmm0, 0x55
movd dword [esp + 0x138], xmm0
jmp 0x535dfc
lea eax, [esp + 0xb0]
push eax
push eax
push ebx
call fcn.005342c0
add esp, 0xc
mov eax, dword [ebp + 0xc]
movdqu xmm0, xmmword [esp + 0x28]
movdqu xmm1, xmmword [esp + 0x38]
xor ecx, ecx
movdqu xmm2, xmmword [eax]
movdqu xmm3, xmmword [eax + 0x10]
pcmpeqd xmm2, xmm0
pcmpeqd xmm3, xmm1
pand xmm3, xmm2
movmskps eax, xmm3
xor eax, 0xf
cmp eax, 1
sbb ecx, ecx
push ecx
call fcn.0056ee00
add esp, 4
movsd xmm1, qword [esp + 0xb8]
mov ecx, dword [ebp + 8]
movsd xmm0, qword [esp + 0xb0]
movsd xmm2, qword [esp + 0xc0]
movsd qword [ecx + 8], xmm1
movsd xmm1, qword [esp + 0xc8]
movsd qword [ecx], xmm0
movsd qword [ecx + 0x10], xmm2
movsd qword [ecx + 0x18], xmm1
mov byte [ecx + 0x20], al
mov eax, ecx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret