Function at 0x46aa90
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x60
mov ebx, dword [ebp + 0x14]
mov eax, dword [ebp + 0x10]
mov edi, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
mov ecx, dword [0x521014]
xor ecx, ebp
mov dword [esp + 0x58], ecx
movdqu xmm4, xmmword [esi + 0x2c]
movdqu xmm0, xmmword [esi + 0x3c]
movdqa xmmword [esp], xmm0
movdqu xmm5, xmmword [esi + 0x4c]
movdqu xmm6, xmmword [esi + 0x5c]
cmp ebx, 0xf
jle 0x46af62
mov ecx, eax
neg ecx
and ecx, 0xf
je 0x46af6f
movups xmm0, xmmword [eax]
movaps xmmword [esp + 0x10], xmm0
movups xmmword [edi], xmm0
add edi, ecx
add eax, ecx
sub ebx, ecx
shl ecx, 4
movdqa xmm2, xmmword [ecx + 0x509bb0]
movdqa xmm1, xmm4
movdqa xmm3, xmmword [0x509b30]
pxor xmm3, xmm2
pshufb xmm4, xmm3
movdqa xmm0, xmm4
movdqa xmm7, xmmword [esp]
movdqa xmm4, xmm7
pshufb xmm4, xmm2
por xmm0, xmm4
pshufb xmm7, xmm3
movdqa xmm4, xmm5
pshufb xmm4, xmm2
por xmm7, xmm4
movdqa xmmword [esp], xmm7
pshufb xmm5, xmm3
movdqa xmm4, xmm6
pshufb xmm4, xmm2
por xmm5, xmm4
pshufb xmm6, xmm3
pshufb xmm1, xmm2
movdqa xmm3, xmmword [esp + 0x10]
pshufb xmm3, xmm2
movdqa xmmword [esp + 0x10], xmm3
por xmm6, xmm3
movdqa xmm2, xmmword [0x509b40]
pclmulqdq xmm2, xmm1, 1
pxor xmm2, xmm6
pclmulqdq xmm1, xmmword [0x509b50], 1
pxor xmm1, xmm2
movdqa xmm6, xmm1
cmp ebx, 0x40
jl 0x46ac9a
movdqa xmm1, xmm0
nop word cs:[eax + eax]
nop dword [eax]
movdqa xmmword [esp + 0x30], xmm6
movdqa xmm6, xmmword [eax]
movdqa xmm2, xmmword [eax + 0x10]
movaps xmm0, xmmword [eax + 0x20]
movaps xmmword [esp + 0x20], xmm0
movdqa xmm4, xmm5
movdqa xmm5, xmmword [esp]
movdqa xmm7, xmm1
movdqa xmm3, xmmword [0x509b50]
pclmulqdq xmm7, xmm3, 1
movdqa xmm3, xmmword [eax + 0x30]
movdqu xmmword [edi], xmm6
pxor xmm7, xmm6
movdqa xmm6, xmm1
movdqa xmm0, xmmword [0x509b40]
pclmulqdq xmm6, xmm0, 0x10
movdqa xmm1, xmm7
pxor xmm1, xmm6
movdqa xmm6, xmm5
movdqa xmm7, xmmword [0x509b50]
pclmulqdq xmm6, xmm7, 1
movdqu xmmword [edi + 0x10], xmm2
pxor xmm6, xmm2
pclmulqdq xmm5, xmm0, 0x10
pxor xmm6, xmm5
movdqa xmmword [esp], xmm6
movdqa xmm5, xmm4
pclmulqdq xmm5, xmm7, 1
movdqa xmm2, xmmword [esp + 0x20]
movdqu xmmword [edi + 0x20], xmm2
pxor xmm5, xmm2
pclmulqdq xmm4, xmm0, 0x10
pxor xmm5, xmm4
movdqa xmm2, xmmword [esp + 0x30]
movdqa xmm4, xmm2
pclmulqdq xmm4, xmm7, 1
movdqu xmmword [edi + 0x30], xmm3
pxor xmm4, xmm3
movdqa xmm3, xmm2
pclmulqdq xmm3, xmm0, 0x10
movdqa xmm6, xmm4
pxor xmm6, xmm3
mov ecx, ebx
add ebx, 0xffffffc0
add eax, 0x40
add edi, 0x40
cmp ecx, 0x7f
jg 0x46abb0
movdqa xmm0, xmm1
cmp ebx, 0x30
jl 0x46ae45
movdqa xmmword [esp + 0x30], xmm6
movdqa xmm2, xmmword [eax]
movdqa xmm4, xmmword [eax + 0x20]
movdqa xmm3, xmmword [0x509b50]
movdqa xmm1, xmm5
pclmulqdq xmm1, xmm3, 1
movdqa xmm7, xmmword [0x509b40]
pclmulqdq xmm5, xmm7, 0x10
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqa xmm6, xmmword [esp]
movdqa xmm5, xmm6
pclmulqdq xmm5, xmm3, 1
pclmulqdq xmm6, xmm7, 0x10
pclmulqdq xmm3, xmm0, 0x10
pclmulqdq xmm0, xmm7, 0x10
movdqa xmm7, xmmword [eax + 0x10]
movdqu xmmword [edi], xmm2
movdqu xmmword [edi + 0x10], xmm7
movdqu xmmword [edi + 0x20], xmm4
pxor xmm3, xmm2
pxor xmm5, xmm7
pxor xmm5, xmm6
pxor xmm3, xmm0
movdqa xmmword [esp], xmm3
add ebx, 0xffffffd0
je 0x46af4a
add edi, 0x30
add eax, 0x30
movdqa xmm4, xmmword [esp + 0x30]
movdqa xmm6, xmm1
movdqa xmmword [esp + 0x30], xmm6
movdqa xmmword [esp + 0x20], xmm5
movdqa xmmword [esp + 0x10], xmm4
pxor xmm0, xmm0
lea ecx, [esp + 0x40]
movdqa xmmword [ecx], xmm0
push ebx
push eax
push ecx
call fcn.0048e490
movdqa xmm5, xmmword [esp + 0x2c]
movdqa xmm4, xmmword [esp + 0x1c]
movdqa xmm6, xmmword [esp + 0xc]
add esp, 0xc
shl ebx, 4
movdqa xmm2, xmmword [ebx + 0x509bb0]
movdqa xmm1, xmm4
movdqa xmm0, xmmword [0x509b30]
pxor xmm0, xmm2
pshufb xmm4, xmm0
movdqa xmm3, xmm6
pshufb xmm3, xmm2
por xmm4, xmm3
pshufb xmm6, xmm0
movdqa xmm3, xmm5
pshufb xmm3, xmm2
por xmm6, xmm3
movdqa xmmword [esp], xmm6
pshufb xmm5, xmm0
movdqa xmm6, xmmword [esp + 0x30]
movdqa xmm3, xmm6
pshufb xmm3, xmm2
por xmm5, xmm3
pshufb xmm6, xmm0
lea eax, [esp + 0x40]
movdqa xmm0, xmmword [eax]
movdqu xmmword [edi], xmm0
pshufb xmm1, xmm2
pshufb xmm0, xmm2
por xmm6, xmm0
movdqa xmm2, xmmword [0x509b40]
pclmulqdq xmm2, xmm1, 1
pxor xmm2, xmm6
pclmulqdq xmm1, xmmword [0x509b50], 1
pxor xmm1, xmm2
movdqa xmm6, xmm1
movdqu xmmword [esi + 0x2c], xmm4
movaps xmm1, xmmword [esp]
movups xmmword [esi + 0x3c], xmm1
movdqu xmmword [esi + 0x4c], xmm5
movdqu xmmword [esi + 0x5c], xmm6
movdqu xmmword [esi + 0x6c], xmm0
mov ecx, dword [esp + 0x58]
xor ecx, ebp
call fcn.0048b980
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
cmp ebx, 0x20
jge 0x46ae9d
cmp ebx, 0x10
jl 0x46af15
movdqa xmm2, xmmword [eax]
movdqa xmm1, xmmword [0x509b50]
pclmulqdq xmm1, xmm0, 0x10
pclmulqdq xmm0, xmmword [0x509b40], 0x10
movdqu xmmword [edi], xmm2
pxor xmm1, xmm2
pxor xmm1, xmm0
add ebx, 0xfffffff0
je 0x46af52
add edi, 0x10
add eax, 0x10
movdqa xmm4, xmmword [esp]
movdqa xmmword [esp], xmm5
movdqa xmm5, xmm6
jmp 0x46ad38
movdqa xmmword [esp + 0x20], xmm5
movdqa xmm4, xmmword [eax]
movdqa xmm3, xmmword [eax + 0x10]
movdqa xmm2, xmmword [0x509b50]
movdqa xmm7, xmmword [esp]
movdqa xmm1, xmm7
pclmulqdq xmm1, xmm2, 1
movdqa xmm5, xmmword [0x509b40]
pclmulqdq xmm7, xmm5, 0x10
pclmulqdq xmm2, xmm0, 0x10
pclmulqdq xmm0, xmm5, 0x10
movdqu xmmword [edi], xmm4
movdqu xmmword [edi + 0x10], xmm3
pxor xmm2, xmm4
pxor xmm2, xmm0
pxor xmm1, xmm3
pxor xmm1, xmm7
add ebx, 0xffffffe0
je 0x46af2c
add edi, 0x20
add eax, 0x20
movdqa xmm4, xmmword [esp + 0x20]
movdqa xmmword [esp], xmm6
movdqa xmm5, xmm2
jmp 0x46ad38
test ebx, ebx
movdqa xmm4, xmm0
movdqa xmm0, xmmword [esp + 0x10]
jne 0x46ad3c
jmp 0x46ae16
movdqa xmm4, xmmword [esp + 0x20]
movdqa xmmword [esp], xmm6
movdqa xmm5, xmm2
movdqa xmm6, xmm1
movdqa xmm0, xmmword [esp + 0x10]
jmp 0x46ae16
movdqa xmm4, xmmword [esp + 0x30]
jmp 0x46af3b
movdqa xmm4, xmmword [esp]
movdqa xmmword [esp], xmm5
movdqa xmm5, xmm6
jmp 0x46af3b
test ebx, ebx
jne 0x46ad3c
jmp 0x46ae32
movdqa xmm0, xmm4
movdqu xmm1, xmmword [esi + 0x6c]
movdqa xmmword [esp + 0x10], xmm1
jmp 0x46ab96