Function at 0x509620
Capabilities:
Encode data using xor

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff0
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x1d8
mov eax, dword [ebx + 0xc]
push esi
push edi
mov edi, dword [ebx + 8]
mov cl, byte [eax + 0x1f]
push eax
shr cl, 7
lea esi, [edi + 0x30]
mov byte [ebp - 1], cl
push esi
call fcn.005028a0
movaps xmm0, xmmword [0x71f7d0]
lea eax, [ebp - 0x110]
movaps xmm2, xmmword [0x71f7e0]
movaps xmm1, xmmword [0x71f7f0]
push 1
movups xmmword [edi + 0x60], xmm0
push esi
movups xmmword [edi + 0x70], xmm2
push eax
movups xmmword [edi + 0x80], xmm1
call fcn.005031b0
push 0x71e540
lea eax, [ebp - 0x110]
push eax
lea eax, [ebp - 0x80]
push eax
call fcn.00502990
movups xmm0, xmmword [edi + 0x60]
movaps xmm2, xmmword [ebp - 0x110]
paddd xmm2, xmmword [0x71f8e0]
movups xmm1, xmmword [edi + 0x70]
psubd xmm2, xmm0
movaps xmm3, xmmword [0x71f840]
movaps xmm6, xmm2
movups xmmword [ebp - 0x20], xmm0
movaps xmm0, xmmword [ebp - 0x100]
paddd xmm0, xmmword [0x71f8f0]
psubd xmm0, xmm1
punpcklqdq xmm6, xmm0
punpckhqdq xmm2, xmm0
movaps xmm4, xmm6
movups xmmword [ebp - 0xa0], xmm1
pand xmm4, xmm3
psrlq xmm6, 0x20
movaps xmm1, xmm2
movaps xmm0, xmm4
psrlq xmm0, 0x1a
pand xmm1, xmm3
psrlq xmm2, 0x20
paddq xmm6, xmm0
movaps xmm0, xmm1
psrlq xmm0, 0x1a
movaps xmmword [ebp - 0x30], xmm6
paddq xmm2, xmm0
movaps xmm0, xmmword [0x71f870]
movaps xmm5, xmm0
movaps xmmword [ebp - 0x50], xmm0
movaps xmm0, xmm6
movaps xmmword [ebp - 0x90], xmm2
psrlq xmm0, 0x19
pand xmm5, xmm1
movups xmm1, xmmword [edi + 0x80]
paddq xmm5, xmm0
psrlq xmm2, 0x19
xorps xmm0, xmm0
movaps xmm7, xmm0
movaps xmm0, xmmword [ebp - 0xf0]
paddd xmm0, xmmword [0x71f900]
psubd xmm0, xmm1
punpcklqdq xmm7, xmm0
movaps xmm6, xmm7
psrlq xmm7, 0x20
pand xmm6, xmm3
paddq xmm6, xmm2
movaps xmm0, xmm6
psrlq xmm0, 0x1a
movups xmmword [ebp - 0xb0], xmm1
paddq xmm7, xmm0
movaps xmm1, xmm7
psrlq xmm1, 0x19
pmuludq xmm1, xmmword [0x71f8b0]
lea eax, [ebp - 0x80]
movaps xmm3, xmmword [ebp - 0x50]
pslldq xmm2, 8
movaps xmm0, xmm3
pand xmm0, xmm4
movaps xmm4, xmm3
push 1
punpckhqdq xmm1, xmm2
movaps xmm2, xmm5
paddq xmm1, xmm0
psrlq xmm2, 0x1a
pand xmm4, xmm1
movaps xmm0, xmm1
movaps xmmword [ebp - 0x40], xmm4
movaps xmm4, xmm3
psrlq xmm0, 0x1a
pand xmm4, xmm5
movaps xmm5, xmmword [0x71f880]
movaps xmm1, xmm5
movaps xmm3, xmm5
pand xmm1, xmmword [ebp - 0x90]
pand xmm5, xmm7
pand xmm3, xmmword [ebp - 0x30]
paddq xmm1, xmm2
movaps xmm2, xmmword [ebp - 0x40]
paddq xmm3, xmm0
punpckldq xmm2, xmm3
movaps xmm0, xmm4
movaps xmmword [ebp - 0x30], xmm2
movaps xmm2, xmmword [ebp - 0x30]
punpckldq xmm0, xmm1
punpcklqdq xmm2, xmm0
movaps xmmword [ebp - 0x30], xmm2
movaps xmm0, xmmword [ebp - 0x30]
movaps xmm2, xmmword [ebp - 0x40]
movaps xmmword [ebp - 0x110], xmm0
movaps xmm0, xmmword [ebp - 0x50]
punpckhdq xmm2, xmm3
pand xmm0, xmm6
punpckhdq xmm4, xmm1
movaps xmm1, xmmword [ebp - 0x60]
paddd xmm1, xmmword [ebp - 0xb0]
punpcklqdq xmm2, xmm4
punpckhdq xmm0, xmm5
movaps xmmword [ebp - 0x40], xmm2
movaps xmmword [ebp - 0x100], xmm2
movaps xmm2, xmmword [ebp - 0x70]
paddd xmm2, xmmword [ebp - 0xa0]
movaps xmmword [ebp - 0x50], xmm0
movaps xmmword [ebp - 0xf0], xmm0
movaps xmm0, xmmword [ebp - 0x80]
paddd xmm0, xmmword [ebp - 0x20]
push eax
lea eax, [ebp - 0xe0]
movaps xmmword [ebp - 0x80], xmm0
push eax
movaps xmmword [ebp - 0x70], xmm2
movaps xmmword [ebp - 0x60], xmm1
call fcn.005031b0
lea eax, [ebp - 0x80]
push eax
lea eax, [ebp - 0xe0]
push eax
lea eax, [ebp - 0x1d0]
push eax
call fcn.00502990
push 1
lea eax, [ebp - 0x1d0]
push eax
push edi
call fcn.005031b0
add esp, 0x44
lea eax, [ebp - 0x80]
push eax
push edi
push edi
call fcn.00502990
lea eax, [ebp - 0x110]
push eax
push edi
push edi
call fcn.00502990
push 1
lea eax, [ebp - 0x1a0]
push edi
push eax
call fcn.005031b0
push 2
lea eax, [ebp - 0x1a0]
push eax
lea eax, [ebp - 0x170]
push eax
call fcn.005031b0
push edi
lea eax, [ebp - 0x170]
push eax
lea eax, [ebp - 0x140]
push eax
call fcn.00503000
lea eax, [ebp - 0x1a0]
push eax
lea eax, [ebp - 0x140]
push eax
lea eax, [ebp - 0x1a0]
push eax
call fcn.00503000
add esp, 0x48
lea eax, [ebp - 0x1a0]
push 1
push eax
lea eax, [ebp - 0x170]
push eax
call fcn.005031b0
lea eax, [ebp - 0x140]
push eax
lea eax, [ebp - 0x170]
push eax
lea eax, [ebp - 0x140]
push eax
call fcn.00503000
lea eax, [ebp - 0x140]
push eax
call fcn.00503010
lea eax, [ebp - 0x140]
push 2
push eax
push eax
call fcn.005031b0
push edi
lea eax, [ebp - 0x140]
push eax
push edi
call fcn.00503000
lea eax, [ebp - 0x1d0]
push eax
push edi
push edi
call fcn.00502990
add esp, 0x40
lea eax, [ebp - 0x110]
push eax
push edi
push edi
call fcn.00502990
push 1
lea eax, [ebp - 0xe0]
push edi
push eax
call fcn.005031b0
lea eax, [ebp - 0x80]
push eax
lea eax, [ebp - 0xe0]
push eax
push eax
call fcn.00502990
movaps xmm1, xmmword [ebp - 0xe0]
movaps xmm0, xmmword [ebp - 0xd0]
movaps xmm3, xmmword [ebp - 0xc0]
movaps xmmword [ebp - 0xb0], xmm1
movaps xmmword [ebp - 0xa0], xmm0
movaps xmmword [ebp - 0x90], xmm3
paddd xmm0, xmmword [0x71f8f0]
lea eax, [ebp - 0x170]
psubd xmm0, xmmword [ebp - 0x40]
xorps xmm5, xmm5
paddd xmm1, xmmword [0x71f8e0]
psubd xmm1, xmmword [ebp - 0x30]
movaps xmm2, xmmword [0x71f840]
movaps xmm7, xmm1
punpcklqdq xmm7, xmm0
punpckhqdq xmm1, xmm0
movaps xmm4, xmm7
pand xmm4, xmm2
psrlq xmm7, 0x20
movaps xmm6, xmm1
movaps xmm0, xmm4
psrlq xmm0, 0x1a
pand xmm6, xmm2
psrlq xmm1, 0x20
paddq xmm7, xmm0
pand xmm4, xmmword [0x71f870]
movaps xmm0, xmm6
pand xmm6, xmmword [0x71f870]
psrlq xmm0, 0x1a
push eax
paddq xmm1, xmm0
lea eax, [ebp - 0x70]
movaps xmm0, xmm7
movaps xmmword [ebp - 0x20], xmm1
psrlq xmm0, 0x19
psrlq xmm1, 0x19
paddq xmm6, xmm0
pand xmm7, xmmword [0x71f880]
movaps xmm0, xmm3
paddd xmm0, xmmword [0x71f900]
psubd xmm0, xmmword [ebp - 0x50]
punpcklqdq xmm5, xmm0
movaps xmm3, xmm5
psrlq xmm5, 0x20
pand xmm3, xmm2
paddq xmm3, xmm1
pslldq xmm1, 8
movaps xmm0, xmm3
psrlq xmm0, 0x1a
push eax
paddq xmm5, xmm0
movaps xmm2, xmm5
pand xmm5, xmmword [0x71f880]
psrlq xmm2, 0x19
pmuludq xmm2, xmmword [0x71f8b0]
punpckhqdq xmm2, xmm1
movaps xmm1, xmm6
pand xmm6, xmmword [0x71f870]
paddq xmm2, xmm4
movaps xmm4, xmmword [ebp - 0x20]
movaps xmm0, xmm2
pand xmm4, xmmword [0x71f880]
pand xmm2, xmmword [0x71f870]
psrlq xmm0, 0x1a
psrlq xmm1, 0x1a
paddq xmm7, xmm0
movaps xmm0, xmm6
paddq xmm4, xmm1
movaps xmm1, xmm2
punpckldq xmm0, xmm4
punpckhdq xmm6, xmm4
movaps xmm4, xmmword [0x71f870]
punpckldq xmm1, xmm7
pand xmm3, xmm4
punpckhdq xmm2, xmm7
punpcklqdq xmm1, xmm0
punpcklqdq xmm2, xmm6
punpckhdq xmm3, xmm5
movaps xmmword [ebp - 0x170], xmm1
movaps xmmword [ebp - 0x160], xmm2
movaps xmmword [ebp - 0x150], xmm3
call fcn.00502450
xor edi, edi
add esp, 0x2c
xor edx, edx
lea esi, [edi + 0x20]
jmp 0x509b70
movzx ecx, byte [edx + 0x71f800]
lea edx, [edx + 1]
movzx eax, byte [ebp + edx - 0x71]
xor ecx, eax
or edi, ecx
sub esi, 1
jne 0x509b70
lea eax, [edi - 1]
mov edi, dword [ebx + 8]
test eax, 0x100
jne 0x509d56
movaps xmm1, xmmword [ebp - 0xb0]
lea eax, [ebp - 0xe0]
paddd xmm1, xmmword [ebp - 0x30]
movaps xmm2, xmmword [ebp - 0xa0]
movaps xmm0, xmm1
paddd xmm2, xmmword [ebp - 0x40]
punpcklqdq xmm0, xmm2
movaps xmm3, xmm0
punpckhqdq xmm1, xmm2
pand xmm3, xmmword [0x71f840]
movaps xmm2, xmm1
pand xmm2, xmmword [0x71f840]
movaps xmm7, xmm3
psrlq xmm0, 0x20
movaps xmm6, xmm2
pand xmm2, xmm4
psrlq xmm7, 0x1a
psrlq xmm1, 0x20
paddq xmm7, xmm0
pand xmm3, xmmword [0x71f870]
movaps xmm0, xmm7
psrlq xmm6, 0x1a
psrlq xmm0, 0x19
paddq xmm6, xmm1
pand xmm7, xmmword [0x71f880]
paddq xmm2, xmm0
movaps xmm1, xmm6
xorps xmm0, xmm0
psrlq xmm1, 0x19
movaps xmm5, xmm0
pand xmm6, xmmword [0x71f880]
movaps xmm0, xmmword [ebp - 0x90]
paddd xmm0, xmmword [ebp - 0x50]
punpcklqdq xmm5, xmm0
movaps xmm4, xmm5
movaps xmmword [ebp - 0x20], xmm2
pand xmm4, xmmword [0x71f840]
paddq xmm4, xmm1
psrlq xmm5, 0x20
movaps xmm0, xmm4
pslldq xmm1, 8
psrlq xmm0, 0x1a
pand xmm4, xmmword [0x71f870]
paddq xmm5, xmm0
movaps xmm2, xmm5
pand xmm5, xmmword [0x71f880]
psrlq xmm2, 0x19
push eax
pmuludq xmm2, xmmword [0x71f8b0]
lea eax, [ebp - 0x70]
punpckhdq xmm4, xmm5
push eax
movaps xmmword [ebp - 0xc0], xmm4
punpckhqdq xmm2, xmm1
paddq xmm2, xmm3
movaps xmm3, xmmword [ebp - 0x20]
movaps xmm0, xmm2
movaps xmm1, xmm3
pand xmm2, xmmword [0x71f870]
pand xmm3, xmmword [0x71f870]
psrlq xmm0, 0x1a
psrlq xmm1, 0x1a
paddq xmm7, xmm0
movaps xmm0, xmm3
paddq xmm6, xmm1
movaps xmm1, xmm2
punpckldq xmm0, xmm6
punpckldq xmm1, xmm7
punpckhdq xmm2, xmm7
punpckhdq xmm3, xmm6
punpcklqdq xmm1, xmm0
punpcklqdq xmm2, xmm3
movaps xmmword [ebp - 0xe0], xmm1
movaps xmmword [ebp - 0xd0], xmm2
call fcn.00502450
xor edi, edi
add esp, 8
xor eax, eax
lea esi, [edi + 0x20]
jmp 0x509d10
movzx edx, byte [eax + 0x71f800]
lea eax, [eax + 1]
movzx ecx, byte [ebp + eax - 0x71]
xor edx, ecx
or edi, edx
sub esi, 1
jne 0x509d10
lea eax, [edi - 1]
test eax, 0x100
jne 0x509d3d
xor eax, eax
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
mov edi, dword [ebx + 8]
push 0x71e5a0
push edi
push edi
call fcn.00502990
movaps xmm4, xmmword [0x71f870]
add esp, 0xc
lea eax, [ebp - 0x70]
push edi
push eax
call fcn.00502450
mov al, byte [ebp - 0x70]
add esp, 8
and al, 1
cmp al, byte [ebp - 1]
jne 0x509eb8
movaps xmm3, xmmword [0x71f8e0]
xorps xmm2, xmm2
psubd xmm3, xmmword [edi]
movaps xmm6, xmmword [0x71f8f0]
psubd xmm6, xmmword [edi + 0x10]
movaps xmmword [ebp - 0x20], xmm3
movaps xmm1, xmmword [ebp - 0x20]
movaps xmm0, xmm1
punpckhqdq xmm1, xmm6
punpcklqdq xmm0, xmm6
movaps xmm7, xmm1
pand xmm7, xmmword [0x71f840]
movaps xmm3, xmm0
pand xmm3, xmmword [0x71f840]
movaps xmm5, xmm7
psrlq xmm0, 0x20
movaps xmm6, xmm3
psrlq xmm6, 0x1a
pand xmm7, xmm4
psrlq xmm1, 0x20
paddq xmm6, xmm0
pand xmm3, xmmword [0x71f870]
movaps xmm0, xmm6
psrlq xmm5, 0x1a
psrlq xmm0, 0x19
paddq xmm5, xmm1
pand xmm6, xmmword [0x71f880]
paddq xmm7, xmm0
movaps xmm1, xmm5
movaps xmm0, xmmword [0x71f900]
psubd xmm0, xmmword [edi + 0x20]
punpcklqdq xmm2, xmm0
movaps xmm4, xmm2
psrlq xmm1, 0x19
pand xmm4, xmmword [0x71f840]
paddq xmm4, xmm1
pand xmm5, xmmword [0x71f880]
psrlq xmm2, 0x20
movaps xmm0, xmm4
psrlq xmm0, 0x1a
pslldq xmm1, 8
paddq xmm2, xmm0
movaps xmmword [ebp - 0x20], xmm2
psrlq xmm2, 0x19
pmuludq xmm2, xmmword [0x71f8b0]
punpckhqdq xmm2, xmm1
movaps xmm1, xmm7
paddq xmm2, xmm3
psrlq xmm1, 0x1a
movaps xmm3, xmmword [0x71f870]
movaps xmm0, xmm2
psrlq xmm0, 0x1a
paddq xmm5, xmm1
pand xmm2, xmm3
pand xmm7, xmm3
paddq xmm6, xmm0
movaps xmm1, xmm2
movaps xmm0, xmm7
punpckldq xmm1, xmm6
punpckldq xmm0, xmm5
pand xmm4, xmm3
punpcklqdq xmm1, xmm0
movaps xmm0, xmmword [ebp - 0x20]
pand xmm0, xmmword [0x71f880]
punpckhdq xmm2, xmm6
punpckhdq xmm7, xmm5
movups xmmword [edi], xmm1
punpcklqdq xmm2, xmm7
punpckhdq xmm4, xmm0
movups xmmword [edi + 0x10], xmm2
movups xmmword [edi + 0x20], xmm4
lea eax, [edi + 0x30]
push eax
lea eax, [edi + 0x90]
push edi
push eax
call fcn.00502990
add esp, 0xc
mov eax, 1
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret