Function at 0x41e940
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, 0x58
push esi
push edi
mov eax, dword [ecx]
xorps xmm4, xmm4
movaps xmm5, xmmword [0x519440]
movaps xmm6, xmmword [0x519440]
movd xmm0, dword [ebx + 8]
mov dword [ebp - 0xc], eax
mov eax, dword [edx]
mov dword [ebp - 4], eax
mov eax, dword [ecx + 4]
mov dword [ebp - 0x18], eax
mov eax, dword [edx + 4]
mov dword [ebp - 0x1c], eax
movzx eax, word [ebx + 0xc]
movaps xmm7, xmmword [0x519410]
movaps xmm3, xmmword [0x519280]
pinsrw xmm5, eax, 0
pinsrw xmm5, eax, 1
pinsrw xmm5, eax, 2
pinsrw xmm5, eax, 4
pinsrw xmm5, eax, 5
pinsrw xmm5, eax, 6
movzx eax, word [ebx + 0x1c]
mov edi, dword [ecx + 0xc]
mov ecx, dword [ecx + 8]
cmp ecx, dword [edx + 8]
pinsrw xmm6, eax, 0
cmova ecx, dword [edx + 8]
cmp edi, dword [edx + 0xc]
punpcklbw xmm0, xmm4
cmova edi, dword [edx + 0xc]
pinsrw xmm6, eax, 1
pshufd xmm0, xmm0, 0x44
pinsrw xmm6, eax, 2
movaps xmmword [ebp - 0x40], xmm0
movd xmm0, dword [ebx + 0x14]
pinsrw xmm6, eax, 4
pinsrw xmm6, eax, 5
punpcklbw xmm0, xmm4
pshufd xmm0, xmm0, 0x44
pinsrw xmm6, eax, 6
psrlw xmm5, 1
movaps xmmword [ebp - 0x50], xmm0
psrlw xmm6, 1
test edi, edi
je 0x41ec24
mov eax, dword [ebx + 0x10]
mov esi, ecx
mov edx, dword [ebp - 4]
shr esi, 1
and ecx, 1
mov dword [ebp - 0x14], ecx
mov ecx, dword [ebp - 0xc]
mov dword [ebp - 0x24], esi
dec edi
mov dword [ebp - 8], ecx
mov dword [ebp - 0x20], edi
mov ecx, edx
mov edi, esi
mov dword [ebp - 0x10], ecx
test edi, edi
je 0x41eb4d
nop word [eax + eax]
movq xmm2, qword [ecx]
punpcklbw xmm2, xmm4
movaps xmm1, xmm2
pmaddwd xmm1, xmm3
movaps xmm0, xmm1
psrlq xmm0, 0x20
paddd xmm0, xmm1
pshuflw xmm0, xmm0, 0
pshufhw xmm0, xmm0, 0
pmulhuw xmm0, xmmword [ebp - 0x40]
psubw xmm0, xmm2
pmullw xmm0, xmm5
psraw xmm0, 7
paddw xmm0, xmm2
pextrw ecx, xmm0, 0
pextrw edx, xmm0, 1
mov esi, dword [eax + ecx*4 + 0x804]
or esi, dword [eax + edx*4 + 0x404]
pextrw ecx, xmm0, 2
pextrw edx, xmm0, 5
or esi, dword [eax + ecx*4 + 4]
pextrw ecx, xmm0, 4
movd xmm3, esi
mov esi, dword [eax + ecx*4 + 0x804]
or esi, dword [eax + edx*4 + 0x404]
pextrw ecx, xmm0, 6
or esi, dword [eax + ecx*4 + 4]
mov ecx, dword [ebp - 8]
movd xmm0, esi
punpckldq xmm3, xmm0
punpcklbw xmm3, xmm4
movaps xmm1, xmm3
pcmpgtw xmm1, xmm7
pand xmm1, xmmword [0x519420]
movaps xmm2, xmm1
movaps xmm0, xmm1
pxor xmm0, xmmword [ebp - 0x50]
pxor xmm2, xmm3
pmullw xmm2, xmm0
psrlw xmm2, 7
pxor xmm2, xmm1
psubw xmm2, xmm3
pmullw xmm2, xmm6
psraw xmm2, 7
paddw xmm2, xmm3
movaps xmm3, xmmword [0x519280]
packuswb xmm2, xmm4
movq qword [ecx], xmm2
add ecx, 8
mov dword [ebp - 8], ecx
mov ecx, dword [ebp - 0x10]
add ecx, 8
mov dword [ebp - 0x10], ecx
sub edi, 1
jne 0x41ea50
movaps xmm3, xmmword [0x519280]
mov edx, dword [ebp - 4]
cmp dword [ebp - 0x14], 0
je 0x41ec00
movd xmm2, dword [ecx]
punpcklbw xmm2, xmm4
movaps xmm1, xmm2
pmaddwd xmm1, xmm3
movaps xmm0, xmm1
psrlq xmm0, 0x20
paddd xmm0, xmm1
pshuflw xmm0, xmm0, 0
pmulhuw xmm0, xmmword [ebp - 0x40]
psubw xmm0, xmm2
pmullw xmm0, xmm5
psraw xmm0, 7
paddw xmm0, xmm2
pextrw ecx, xmm0, 0
pextrw edx, xmm0, 1
mov esi, dword [eax + ecx*4 + 0x804]
or esi, dword [eax + edx*4 + 0x404]
pextrw ecx, xmm0, 2
mov edx, dword [ebp - 8]
or esi, dword [eax + ecx*4 + 4]
movd xmm3, esi
punpcklbw xmm3, xmm4
movaps xmm1, xmm3
pcmpgtw xmm1, xmm7
pand xmm1, xmmword [0x519420]
movaps xmm2, xmm1
movaps xmm0, xmm1
pxor xmm0, xmmword [ebp - 0x50]
pxor xmm2, xmm3
pmullw xmm2, xmm0
psrlw xmm2, 7
pxor xmm2, xmm1
psubw xmm2, xmm3
pmullw xmm2, xmm6
psraw xmm2, 7
paddw xmm2, xmm3
packuswb xmm2, xmm4
movd dword [edx], xmm2
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 0xc]
add ecx, dword [ebp - 0x18]
add edx, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x20]
movaps xmm3, xmmword [0x519280]
mov esi, dword [ebp - 0x24]
mov dword [ebp - 0xc], ecx
mov dword [ebp - 4], edx
test edi, edi
jne 0x41ea34
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret