Function at 0x497060
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x90
test byte [0x578633], 1
mov ebx, edx
je 0x497087
test byte [0x578634], 2
jne 0x497330
movdqa xmm0, xmmword [ecx]
mov eax, dword [ecx]
cmp dword [ebp + 8], 0x10
mov edx, ecx
mov dword [esp + 0x30], edx
pshufd xmm1, xmm0, 0x55
pshufd xmm2, xmm0, 0xee
pshufd xmm0, xmm0, 0xff
bswap eax
movd ecx, xmm1
movd esi, xmm0
movd edi, xmm2
bswap edi
bswap ecx
bswap esi
mov dword [esp], edi
jae 0x4970c7
mov edx, dword [esp]
jmp 0x497302
mov edi, dword [ebp + 8]
shr edi, 4
mov dword [esp + 0xc], edi
mov edi, dword [edx + 0x14]
mov dword [esp + 0x1c], edi
mov edi, dword [edx + 0x10]
mov dword [esp + 0x18], edi
mov edi, dword [edx + 0x1c]
mov edx, dword [edx + 0x18]
mov dword [esp + 0x3c], edx
xor edx, dword [esp + 0x18]
mov dword [esp + 0x14], edi
mov edi, dword [esp + 0xc]
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x14]
shl edi, 4
xor edx, dword [esp + 0x1c]
mov dword [esp + 0x34], edx
mov edx, dword [esp]
nop dword [eax + eax]
mov dword [esp + 0xc], edi
mov edi, dword [ebx]
movdqu xmm0, xmmword [ebx]
bswap edi
pshufd xmm1, xmm0, 0x55
xor edi, eax
movd eax, xmm1
pshufd xmm1, xmm0, 0xee
pshufd xmm0, xmm0, 0xff
bswap eax
mov dword [esp + 4], edi
movd edi, xmm1
xor eax, ecx
bswap edi
lea ecx, [esp + 0x78]
mov dword [esp], eax
mov eax, ebx
movd ebx, xmm0
xor edi, edx
bswap ebx
add eax, 0x10
xor ebx, esi
mov dword [esp + 0x54], eax
mov edx, ebx
push dword [esp + 0x14]
push dword [esp + 0x40]
push edi
call fcn.00496c00
add esp, 0xc
mov eax, dword [esp + 0x84]
mov edx, dword [esp]
lea ecx, [esp + 0x68]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x10], eax
push dword [esp + 0x1c]
push dword [esp + 0x1c]
mov esi, dword [esp + 0xc]
push esi
call fcn.00496c00
add esp, 0xc
mov eax, dword [esp + 0x70]
xor ebx, dword [esp]
xor edi, esi
lea ecx, [esp + 0x58]
mov dword [esp + 0x50], eax
mov edx, ebx
mov eax, dword [esp + 0x74]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x6c]
mov dword [esp], eax
push dword [esp + 0x34]
push dword [esp + 0x3c]
push edi
call fcn.00496c00
add esp, 0xc
mov edx, dword [esp + 8]
mov ebx, dword [esp + 0x10]
mov esi, dword [esp + 0x20]
mov eax, edx
mov ecx, edx
xor esi, dword [esp + 0x24]
mov edi, ebx
shl eax, 0x1f
shl ecx, 0x1e
xor ecx, eax
mov eax, edx
shl eax, 0x19
xor eax, ecx
mov ecx, ebx
xor ecx, dword [esp + 0x2c]
xor eax, dword [esp + 0x5c]
xor ecx, dword [esp]
xor ecx, eax
mov eax, dword [esp + 0x58]
xor eax, edx
mov edx, ebx
xor esi, eax
mov eax, ebx
shr edx, 1
shr eax, 2
mov dword [esp + 0x48], esi
xor eax, edx
mov edx, ebx
mov ebx, esi
mov dword [esp + 0x40], eax
mov eax, dword [esp + 8]
shl ebx, 0x1f
shld edi, eax, 0x1f
shld edx, eax, 0x1e
mov eax, ecx
xor edx, edi
mov edi, esi
shr eax, 2
shl edi, 0x1e
mov dword [esp + 4], edx
mov edx, ecx
xor edi, ebx
mov ebx, ecx
shld edx, esi, 0x1e
shld ebx, esi, 0x1f
mov esi, dword [esp + 0x20]
xor edx, ebx
mov ebx, ecx
shr ebx, 1
mov dword [esp + 0x4c], edx
mov edx, ecx
xor eax, ebx
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 8]
xor esi, dword [esp + 8]
mov ecx, ebx
shr ebx, 7
shld ecx, eax, 0x19
mov eax, edx
xor ebx, dword [esp + 0x40]
xor ecx, dword [esp + 4]
shr eax, 7
xor eax, dword [esp + 0x28]
mov dword [esp + 4], ecx
mov ecx, edx
xor ebx, dword [esp + 0x64]
xor eax, dword [esp + 0x44]
xor ebx, edi
mov edi, dword [esp + 0x48]
xor eax, edx
mov edx, dword [esp + 0x50]
shld ecx, edi, 0x19
xor esi, edx
xor ecx, edx
mov edx, dword [esp]
xor esi, dword [esp + 0x24]
xor ecx, dword [esp + 0x4c]
xor edx, dword [esp + 0x28]
xor ecx, edi
shl edi, 0x19
xor edi, dword [esp + 0x2c]
xor edi, dword [esp + 0x10]
xor edi, ebx
mov ebx, dword [esp + 0x54]
xor edx, edi
mov edi, dword [esp + 4]
xor edi, dword [esp + 0x60]
xor esi, edi
mov edi, dword [esp + 0xc]
add edi, 0xfffffff0
jne 0x497110
bswap edx
bswap esi
bswap ecx
bswap eax
movd xmm0, esi
movd xmm1, edx
movd xmm2, eax
punpckldq xmm1, xmm0
movd xmm0, ecx
mov ecx, dword [esp + 0x30]
punpckldq xmm2, xmm0
punpcklqdq xmm2, xmm1
movdqa xmmword [ecx], xmm2
jmp 0x497341
lea eax, [ecx + 0x10]
push dword [ebp + 8]
push ebx
push eax
push ecx
call fcn.004a7270
add esp, 0x10
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret