Function at 0x501000
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
mov eax, 0x268
call fcn.0065cc50
mov eax, dword [0x745694]
xor eax, esp
mov dword [esp + 0x264], eax
push esi
push edi
sub esp, 8
mov dword [esp + 0x24], ecx
lea ecx, [esp + 0x1a8]
xor esi, esi
call fcn.00534cd0
movaps xmm0, xmmword [0x6f2540]
mov ecx, 0x1bf
movaps xmm4, xmmword [0x6f2310]
add esp, 8
movaps xmm3, xmmword [0x6f2320]
mov edi, 0xff
movaps xmm2, xmmword [0x6f2330]
movaps xmm1, xmmword [0x6f2340]
movaps xmm5, xmmword [0x735080]
movaps xmm6, xmmword [str._b_b_b_b]
movaps xmmword [esp + 0x20], xmm0
movaps xmm0, xmmword [0x6f2550]
movaps xmmword [esp + 0x30], xmm0
movaps xmm0, xmmword [0x6f2560]
movaps xmmword [esp + 0x40], xmm0
movaps xmm0, xmmword [0x6f2570]
movaps xmmword [esp + 0x50], xmm0
movaps xmm0, xmmword [esp + 0x1a0]
movaps xmmword [esp + 0x120], xmm0
movaps xmm0, xmmword [esp + 0x1b0]
movaps xmmword [esp + 0x130], xmm0
movaps xmm0, xmmword [esp + 0x1c0]
movaps xmmword [esp + 0x140], xmm0
movaps xmm0, xmmword [esp + 0x1d0]
movaps xmmword [esp + 0xa0], xmm4
movaps xmmword [esp + 0x60], xmm4
movaps xmm4, xmmword [0x735090]
movaps xmmword [esp + 0xb0], xmm3
movaps xmmword [esp + 0xc0], xmm2
movaps xmmword [esp + 0xd0], xmm1
movaps xmmword [esp + 0x150], xmm0
movaps xmmword [esp + 0x70], xmm3
movaps xmmword [esp + 0x80], xmm2
movaps xmmword [esp + 0x90], xmm1
mov dword [esp + 0x10], ecx
mov edx, dword [ebp + 8]
mov eax, ecx
shr eax, 3
mov dl, byte [eax + edx]
test eax, eax
jne 0x501135
and dl, 0xfc
jmp 0x501141
cmp ecx, 0x1bf
movzx edx, dl
cmove edx, edi
movzx ecx, cl
movzx edx, dl
and ecx, 7
shr edx, cl
and edx, 1
neg edx
xor esi, edx
mov dword [esp + 0x18], edx
xor eax, eax
movd xmm0, esi
pshufd xmm7, xmm0, 0
nop dword [eax]
nop word [eax + eax]
movups xmm1, xmmword [esp + eax + 0xa0]
movups xmm3, xmmword [esp + eax + 0x120]
movaps xmm2, xmm1
pxor xmm2, xmm3
pand xmm2, xmm7
movaps xmm0, xmm2
pxor xmm2, xmm3
movups xmm3, xmmword [esp + eax + 0x60]
pxor xmm0, xmm1
movups xmm1, xmmword [esp + eax + 0x20]
movups xmmword [esp + eax + 0x120], xmm2
movaps xmm2, xmm1
pxor xmm2, xmm3
movups xmmword [esp + eax + 0xa0], xmm0
pand xmm2, xmm7
movaps xmm0, xmm2
pxor xmm2, xmm3
pxor xmm0, xmm1
movups xmmword [esp + eax + 0x20], xmm0
movups xmmword [esp + eax + 0x60], xmm2
add eax, 0x10
cmp eax, 0x40
jb 0x501170
movaps xmm0, xmmword [esp + 0xa0]
lea eax, [esp + 0x20]
paddd xmm0, xmmword [esp + 0x20]
lea ecx, [esp + 0x160]
movups xmmword [esp + 0xe0], xmm0
mov dword [esp + 0x14], edx
lea edx, [esp + 0xa0]
movaps xmm0, xmmword [esp + 0x30]
paddd xmm0, xmmword [esp + 0xb0]
movups xmmword [esp + 0xf0], xmm0
push eax
movaps xmm0, xmmword [esp + 0x44]
paddd xmm0, xmmword [esp + 0xc4]
movups xmmword [esp + 0x104], xmm0
movaps xmm0, xmmword [esp + 0x54]
paddd xmm0, xmmword [esp + 0xd4]
movups xmmword [esp + 0x114], xmm0
call fcn.004ffc70
movaps xmm7, xmmword [0x735050]
add esp, 4
xor edi, edi
nop dword [eax + eax]
movd xmm0, edi
lea eax, [edi + 7]
pshufd xmm2, xmm0, 0
lea ecx, [edi + 6]
paddd xmm2, xmm7
lea edx, [edi + 5]
pcmpeqd xmm2, xmm6
lea esi, [edi + 4]
movaps xmm1, xmm2
movd xmm3, esi
pandn xmm1, xmm4
movaps xmm0, xmm5
pand xmm0, xmm2
movd xmm2, eax
por xmm1, xmm0
movups xmm0, xmmword [esp + edi*4 + 0x160]
paddd xmm1, xmm0
movd xmm0, ecx
movups xmmword [esp + edi*4 + 0x160], xmm1
punpckldq xmm3, xmm0
movaps xmm0, xmm5
movd xmm1, edx
punpckldq xmm1, xmm2
punpckldq xmm3, xmm1
pcmpeqd xmm3, xmm6
movaps xmm1, xmm3
pand xmm0, xmm3
pandn xmm1, xmm4
por xmm1, xmm0
movups xmm0, xmmword [esp + edi*4 + 0x170]
paddd xmm1, xmm0
movups xmmword [esp + edi*4 + 0x170], xmm1
add edi, 8
cmp edi, 0x10
jb 0x501260
lea ecx, [esp + 0x160]
call fcn.004ffd00
lea eax, [esp + 0x60]
push eax
lea edx, [esp + 0x124]
lea ecx, [esp + 0x24]
call fcn.004ffc70
add esp, 4
xor edi, edi
nop dword [eax + eax]
movd xmm0, edi
lea eax, [edi + 7]
pshufd xmm2, xmm0, 0
lea ecx, [edi + 6]
paddd xmm2, xmm7
lea edx, [edi + 5]
pcmpeqd xmm2, xmm6
lea esi, [edi + 4]
movaps xmm1, xmm2
movd xmm3, esi
pandn xmm1, xmm4
movaps xmm0, xmm5
pand xmm0, xmm2
movd xmm2, eax
por xmm1, xmm0
movups xmm0, xmmword [esp + edi*4 + 0x20]
paddd xmm1, xmm0
movd xmm0, ecx
movups xmmword [esp + edi*4 + 0x20], xmm1
punpckldq xmm3, xmm0
movups xmm0, xmmword [esp + edi*4 + 0x30]
movd xmm1, edx
punpckldq xmm1, xmm2
punpckldq xmm3, xmm1
movaps xmm1, xmm5
pcmpeqd xmm3, xmm6
pand xmm1, xmm3
pandn xmm3, xmm4
por xmm1, xmm3
paddd xmm1, xmm0
movups xmmword [esp + edi*4 + 0x30], xmm1
add edi, 8
cmp edi, 0x10
jb 0x501320
lea ecx, [esp + 0x20]
call fcn.004ffd00
lea eax, [esp + 0x20]
push eax
lea edx, [esp + 0xe4]
lea ecx, [esp + 0xa4]
call fcn.00535610
movaps xmm0, xmmword [esp + 0x124]
lea eax, [esp + 0x24]
paddd xmm0, xmmword [esp + 0x64]
lea edx, [esp + 0x164]
movaps xmmword [esp + 0x24], xmm0
lea ecx, [esp + 0x124]
movaps xmm0, xmmword [esp + 0x74]
add esp, 4
paddd xmm0, xmmword [esp + 0x130]
movaps xmmword [esp + 0x30], xmm0
movaps xmm0, xmmword [esp + 0x80]
paddd xmm0, xmmword [esp + 0x140]
movaps xmmword [esp + 0x40], xmm0
movaps xmm0, xmmword [esp + 0x90]
paddd xmm0, xmmword [esp + 0x150]
push eax
movaps xmmword [esp + 0x54], xmm0
call fcn.00535610
add esp, 4
lea eax, [esp + 0x120]
lea edx, [esp + 0xa0]
lea ecx, [esp + 0x60]
push eax
call fcn.004ffc70
add esp, 4
xor edi, edi
movd xmm0, edi
lea eax, [edi + 7]
pshufd xmm0, xmm0, 0
lea ecx, [edi + 6]
paddd xmm0, xmm7
movd xmm2, eax
pcmpeqd xmm0, xmm6
lea edx, [edi + 5]
movaps xmm1, xmm5
lea esi, [edi + 4]
pand xmm1, xmm0
movd xmm3, esi
pandn xmm0, xmm4
por xmm1, xmm0
movups xmm0, xmmword [esp + edi*4 + 0x60]
paddd xmm1, xmm0
movd xmm0, ecx
movups xmmword [esp + edi*4 + 0x60], xmm1
punpckldq xmm3, xmm0
movups xmm0, xmmword [esp + edi*4 + 0x70]
movd xmm1, edx
punpckldq xmm1, xmm2
punpckldq xmm3, xmm1
movaps xmm1, xmm5
pcmpeqd xmm3, xmm6
pand xmm1, xmm3
pandn xmm3, xmm4
por xmm1, xmm3
paddd xmm1, xmm0
movups xmmword [esp + edi*4 + 0x70], xmm1
add edi, 8
cmp edi, 0x10
jb 0x501454
lea ecx, [esp + 0x60]
call fcn.004ffd00
lea eax, [esp + 0x60]
push eax
mov edx, eax
lea ecx, [esp + 0x24]
call fcn.00535610
add esp, 4
lea eax, [esp + 0x20]
lea edx, [esp + 0x1a0]
lea ecx, [esp + 0x60]
push eax
call fcn.00535610
movaps xmm0, xmmword [esp + 0x124]
lea eax, [esp + 0x24]
paddd xmm0, xmmword [esp + 0xa4]
lea ecx, [esp + 0x124]
movaps xmmword [esp + 0x24], xmm0
add esp, 4
movaps xmm0, xmmword [esp + 0x130]
mov edx, eax
paddd xmm0, xmmword [esp + 0xb0]
movaps xmmword [esp + 0x30], xmm0
movaps xmm0, xmmword [esp + 0x140]
paddd xmm0, xmmword [esp + 0xc0]
movaps xmmword [esp + 0x40], xmm0
movaps xmm0, xmmword [esp + 0x150]
paddd xmm0, xmmword [esp + 0xd0]
push eax
movaps xmmword [esp + 0x54], xmm0
call fcn.00535610
add esp, 4
lea eax, [esp + 0xe0]
mov edx, eax
lea ecx, [esp + 0x20]
push eax
call fcn.00535610
add esp, 4
lea eax, [esp + 0x160]
mov edx, eax
lea ecx, [esp + 0xe0]
push eax
call fcn.00535610
add esp, 4
lea eax, [esp + 0xe0]
lea edx, [esp + 0x20]
lea ecx, [esp + 0xa0]
push eax
call fcn.00535610
add esp, 4
lea eax, [esp + 0xe0]
lea edx, [esp + 0x20]
lea ecx, [esp + 0x160]
push eax
call fcn.004ffc70
add esp, 4
xor edi, edi
nop dword [eax]
movd xmm0, edi
lea eax, [edi + 7]
pshufd xmm0, xmm0, 0
lea ecx, [edi + 6]
paddd xmm0, xmm7
movd xmm2, eax
pcmpeqd xmm0, xmm6
lea edx, [edi + 5]
movaps xmm1, xmm5
lea esi, [edi + 4]
pand xmm1, xmm0
movd xmm3, esi
pandn xmm0, xmm4
por xmm1, xmm0
movups xmm0, xmmword [esp + edi*4 + 0x160]
paddd xmm1, xmm0
movd xmm0, ecx
movups xmmword [esp + edi*4 + 0x160], xmm1
punpckldq xmm3, xmm0
movups xmm0, xmmword [esp + edi*4 + 0x170]
movd xmm1, edx
punpckldq xmm1, xmm2
punpckldq xmm3, xmm1
movaps xmm1, xmm5
pcmpeqd xmm3, xmm6
pand xmm1, xmm3
pandn xmm3, xmm4
por xmm1, xmm3
paddd xmm1, xmm0
movups xmmword [esp + edi*4 + 0x170], xmm1
add edi, 8
cmp edi, 0x10
jb 0x5015e0
lea ecx, [esp + 0x160]
call fcn.004ffd00
push 0x98a9
lea edx, [esp + 0x164]
lea ecx, [esp + 0xe4]
call fcn.005358f0
movups xmm0, xmmword [esp + 0xe4]
add esp, 4
lea eax, [esp + 0xe0]
lea edx, [esp + 0x160]
paddd xmm0, xmmword [esp + 0x20]
lea ecx, [esp + 0x20]
movups xmmword [esp + 0xe0], xmm0
push eax
movups xmm0, xmmword [esp + 0xf4]
paddd xmm0, xmmword [esp + 0x34]
movups xmmword [esp + 0xf4], xmm0
movups xmm0, xmmword [esp + 0x104]
paddd xmm0, xmmword [esp + 0x44]
movups xmmword [esp + 0x104], xmm0
movups xmm0, xmmword [esp + 0x114]
paddd xmm0, xmmword [esp + 0x54]
movups xmmword [esp + 0x114], xmm0
call fcn.00535610
mov ecx, dword [esp + 0x14]
add esp, 4
mov esi, dword [esp + 0x14]
sub ecx, 1
mov dword [esp + 0x10], ecx
mov edi, 0xff
jns 0x501121
mov esi, dword [esp + 0x18]
lea edx, [esp + 0x120]
push esi
lea ecx, [esp + 0xa4]
call fcn.004fff90
add esp, 4
lea edx, [esp + 0x60]
lea ecx, [esp + 0x20]
push esi
call fcn.004fff90
add esp, 4
lea eax, [esp + 0x20]
mov edx, eax
lea ecx, [esp + 0x228]
push eax
call fcn.00535610
add esp, 4
lea edx, [esp + 0x228]
lea ecx, [esp + 0x1e0]
call fcn.005351d0
lea eax, [esp + 0x1e0]
push eax
mov edx, eax
lea ecx, [esp + 0x22c]
call fcn.00535610
add esp, 4
lea eax, [esp + 0x20]
lea edx, [esp + 0x228]
lea ecx, [esp + 0x1e0]
push eax
call fcn.00535610
movaps xmm0, xmmword [esp + 0x1e4]
lea eax, [esp + 0x24]
movaps xmmword [esp + 0x24], xmm0
lea edx, [esp + 0xa4]
movaps xmm0, xmmword [esp + 0x1f4]
lea ecx, [esp + 0x1a4]
movaps xmmword [esp + 0x34], xmm0
add esp, 4
movaps xmm0, xmmword [esp + 0x200]
movaps xmmword [esp + 0x40], xmm0
movaps xmm0, xmmword [esp + 0x210]
push eax
movaps xmmword [esp + 0x54], xmm0
call fcn.00535610
mov ecx, dword [esp + 0x20]
lea edx, [esp + 0x1a4]
call fcn.00534c10
add esp, 4
lea edx, [esp + 0x1a0]
lea ecx, [esp + 0x228]
push 0x6f2540
call fcn.00534f80
add esp, 4
lea ecx, [esp + 0x228]
call fcn.00534dd0
xor eax, eax
xorps xmm1, xmm1
xorps xmm2, xmm2
nop word [eax + eax]
movups xmm0, xmmword [esp + eax*4 + 0x228]
por xmm1, xmm0
movups xmm0, xmmword [esp + eax*4 + 0x238]
add eax, 8
por xmm2, xmm0
cmp eax, 0x10
jb 0x501840
por xmm1, xmm2
lea eax, [esp + 0x1a0]
movaps xmm0, xmm1
psrldq xmm0, 8
por xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
por xmm1, xmm0
push 0x40
push eax
movd esi, xmm1
call fcn.00401320
lea eax, [esp + 0xa8]
push 0x40
push eax
call fcn.00401320
lea eax, [esp + 0x30]
push 0x40
push eax
call fcn.00401320
lea eax, [esp + 0x138]
push 0x40
push eax
call fcn.00401320
lea eax, [esp + 0x80]
push 0x40
push eax
call fcn.00401320
lea eax, [esp + 0x108]
push 0x40
push eax
call fcn.00401320
lea eax, [esp + 0x190]
push 0x40
push eax
call fcn.00401320
mov ecx, dword [esp + 0x2a4]
lea eax, [esi - 1]
add esp, 0x38
shr eax, 0x1f
not esi
shr esi, 0x1f
and eax, esi
pop edi
pop esi
xor ecx, esp
dec eax
call fcn.0065cc3a
mov esp, ebp
pop ebp
ret