Function at 0x49f520
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x70
mov edi, dword [ebp + 0x14]
mov ebx, dword [ebp + 0x10]
mov esi, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
mov eax, dword [0x5c7040]
xor eax, ebp
mov dword [esp + 0x68], eax
movdqu xmm4, xmmword [ecx + 0x2c]
movdqu xmm5, xmmword [ecx + 0x3c]
movups xmm0, xmmword [ecx + 0x4c]
movaps xmmword [esp + 0x10], xmm0
movdqu xmm0, xmmword [ecx + 0x5c]
movdqa xmmword [esp], xmm0
cmp edi, 0xf
jle 0x49f75a
mov eax, ebx
neg eax
and eax, 0xf
jne 0x49f935
movdqu xmm0, xmmword [ecx + 0x6c]
movdqa xmmword [esp + 0x20], xmm0
movdqa xmm0, xmm4
cmp edi, 0x40
jb 0x49f66a
movq xmm6, qword [0x5a3210]
nop word cs:[eax + eax]
movdqa xmm4, xmmword [ebx]
movaps xmm1, xmmword [ebx + 0x10]
movaps xmmword [esp + 0x30], xmm1
movaps xmm1, xmmword [ebx + 0x20]
movaps xmmword [esp + 0x40], xmm1
movdqa xmm1, xmm0
pclmulqdq xmm1, xmm6, 1
movdqa xmm3, xmmword [0x5a3200]
pclmulqdq xmm0, xmm3, 0x10
pxor xmm0, xmm1
movdqa xmm1, xmm5
pclmulqdq xmm1, xmm6, 1
pclmulqdq xmm5, xmm3, 0x10
pxor xmm5, xmm1
movdqa xmm1, xmmword [esp + 0x10]
movdqa xmm7, xmm1
pclmulqdq xmm7, xmm6, 1
pclmulqdq xmm1, xmm3, 0x10
pxor xmm1, xmm7
movdqa xmm7, xmmword [esp]
movdqa xmm2, xmm7
pclmulqdq xmm2, xmm6, 1
pclmulqdq xmm7, xmm3, 0x10
pxor xmm7, xmm2
movdqa xmm2, xmmword [ebx + 0x30]
movdqu xmmword [esi], xmm4
pxor xmm0, xmm4
movdqa xmm3, xmmword [esp + 0x30]
movdqu xmmword [esi + 0x10], xmm3
pxor xmm5, xmm3
movdqa xmm3, xmmword [esp + 0x40]
movdqu xmmword [esi + 0x20], xmm3
pxor xmm1, xmm3
movdqa xmmword [esp + 0x10], xmm1
movdqu xmmword [esi + 0x30], xmm2
pxor xmm7, xmm2
movdqa xmmword [esp], xmm7
add edi, 0xffffffc0
add ebx, 0x40
add esi, 0x40
cmp edi, 0x3f
ja 0x49f5a0
movdqa xmm4, xmm0
cmp edi, 0x30
jae 0x49f77a
cmp edi, 0x20
jae 0x49f6da
cmp edi, 0x10
jb 0x49f767
movdqa xmm1, xmmword [ebx]
movq xmm0, qword [0x5a3210]
pclmulqdq xmm0, xmm4, 0x10
pclmulqdq xmm4, xmmword [0x5a3200], 0x10
pxor xmm4, xmm0
movdqu xmmword [esi], xmm1
movdqa xmm0, xmm4
pxor xmm0, xmm1
add edi, 0xfffffff0
je 0x49f9f8
add esi, 0x10
add ebx, 0x10
movdqa xmm4, xmm5
movdqa xmm5, xmmword [esp + 0x10]
movdqa xmm1, xmmword [esp]
movdqa xmmword [esp + 0x10], xmm1
jmp 0x49f812
movdqa xmm1, xmmword [ebx]
movdqa xmm0, xmmword [ebx + 0x10]
movq xmm2, qword [0x5a3210]
movdqa xmm3, xmm5
pclmulqdq xmm3, xmm2, 1
movdqa xmm6, xmmword [0x5a3200]
pclmulqdq xmm5, xmm6, 0x10
pxor xmm5, xmm3
pclmulqdq xmm2, xmm4, 0x10
pclmulqdq xmm4, xmm6, 0x10
pxor xmm4, xmm2
movdqu xmmword [esi], xmm1
movdqu xmmword [esi + 0x10], xmm0
movdqa xmm2, xmm4
pxor xmm2, xmm1
movdqa xmm1, xmm5
pxor xmm1, xmm0
add edi, 0xffffffe0
je 0x49fa1d
add esi, 0x20
add ebx, 0x20
movdqa xmm4, xmmword [esp + 0x10]
movdqa xmm5, xmmword [esp]
movdqa xmmword [esp + 0x10], xmm2
movdqa xmmword [esp], xmm1
jmp 0x49f817
test edi, edi
jne 0x49f817
jmp 0x49f922
test edi, edi
movdqa xmm2, xmmword [esp + 0x20]
jne 0x49f817
jmp 0x49f900
movq xmm1, qword [0x5a3210]
movdqa xmm0, xmmword [esp + 0x10]
movdqa xmm2, xmm0
pclmulqdq xmm2, xmm1, 1
movdqa xmm3, xmmword [0x5a3200]
pclmulqdq xmm0, xmm3, 0x10
pxor xmm0, xmm2
movdqa xmm2, xmm5
pclmulqdq xmm2, xmm1, 1
pclmulqdq xmm5, xmm3, 0x10
movdqa xmm6, xmm5
pxor xmm6, xmm2
movdqa xmm2, xmmword [ebx]
pclmulqdq xmm1, xmm4, 0x10
pclmulqdq xmm4, xmm3, 0x10
movdqa xmm3, xmmword [ebx + 0x10]
pxor xmm4, xmm1
movdqa xmm1, xmmword [ebx + 0x20]
movdqu xmmword [esi], xmm2
movdqa xmm5, xmm4
pxor xmm5, xmm2
movdqu xmmword [esi + 0x10], xmm3
pxor xmm6, xmm3
movdqa xmmword [esp + 0x10], xmm6
movdqu xmmword [esi + 0x20], xmm1
pxor xmm0, xmm1
add edi, 0xffffffd0
je 0x49f9f1
add esi, 0x30
add ebx, 0x30
movdqa xmm4, xmmword [esp]
movdqa xmmword [esp], xmm0
movdqa xmmword [esp + 0x30], xmm4
movdqa xmmword [esp + 0x40], xmm5
pxor xmm0, xmm0
lea eax, [esp + 0x58]
movdqu xmmword [eax], xmm0
push edi
push ebx
push eax
call fcn.004f8b10
add esp, 0xc
lea eax, [esp + 0x58]
movups xmm0, xmmword [eax]
movaps xmmword [esp + 0x20], xmm0
push edi
push ebx
push esi
call fcn.004f8b10
movdqa xmm4, xmmword [esp + 0x3c]
movdqa xmm5, xmmword [esp + 0x4c]
movdqa xmm6, xmmword [esp + 0x1c]
mov ecx, dword [ebp + 8]
add esp, 0xc
shl edi, 4
movdqa xmm1, xmmword [edi + 0x5a3270]
movdqa xmm0, xmm4
movdqa xmm2, xmmword [0x5a2540]
pxor xmm2, xmm1
pshufb xmm4, xmm2
movdqa xmm3, xmm5
pshufb xmm3, xmm1
por xmm4, xmm3
pshufb xmm5, xmm2
movdqa xmm3, xmm6
pshufb xmm3, xmm1
por xmm5, xmm3
pshufb xmm6, xmm2
movdqa xmm7, xmmword [esp]
movdqa xmm3, xmm7
pshufb xmm3, xmm1
por xmm6, xmm3
movdqa xmmword [esp + 0x10], xmm6
pshufb xmm7, xmm2
movdqa xmm2, xmmword [esp + 0x20]
pshufb xmm0, xmm1
pshufb xmm2, xmm1
por xmm7, xmm2
movdqa xmm1, xmmword [0x5a3200]
pclmulqdq xmm1, xmm0, 1
pxor xmm1, xmm7
pclmulqdq xmm0, xmmword [0x5a3210], 1
pxor xmm0, xmm1
movdqa xmmword [esp], xmm0
movdqu xmmword [ecx + 0x2c], xmm4
movdqu xmmword [ecx + 0x3c], xmm5
movaps xmm0, xmmword [esp + 0x10]
movups xmmword [ecx + 0x4c], xmm0
movdqa xmm0, xmmword [esp]
movdqu xmmword [ecx + 0x5c], xmm0
movdqu xmmword [ecx + 0x6c], xmm2
mov ecx, dword [esp + 0x68]
xor ecx, ebp
call fcn.004f5620
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
movups xmm0, xmmword [ebx]
movaps xmmword [esp + 0x20], xmm0
movups xmmword [esi], xmm0
add esi, eax
add ebx, eax
sub edi, eax
shl eax, 4
movdqa xmm1, xmmword [eax + 0x5a3270]
movdqa xmm0, xmm4
movdqa xmm2, xmmword [0x5a2540]
pxor xmm2, xmm1
pshufb xmm4, xmm2
movdqa xmm3, xmm5
pshufb xmm3, xmm1
por xmm4, xmm3
pshufb xmm5, xmm2
movdqa xmm6, xmmword [esp + 0x10]
movdqa xmm3, xmm6
pshufb xmm3, xmm1
por xmm5, xmm3
pshufb xmm6, xmm2
movdqa xmm7, xmmword [esp]
movdqa xmm3, xmm7
pshufb xmm3, xmm1
por xmm6, xmm3
movdqa xmmword [esp + 0x10], xmm6
pshufb xmm7, xmm2
pshufb xmm0, xmm1
movdqa xmm3, xmmword [esp + 0x20]
pshufb xmm3, xmm1
movdqa xmmword [esp + 0x20], xmm3
por xmm7, xmm3
movdqa xmm1, xmmword [0x5a3200]
pclmulqdq xmm1, xmm0, 1
pxor xmm1, xmm7
pclmulqdq xmm0, xmmword [0x5a3210], 1
pxor xmm0, xmm1
movdqa xmmword [esp], xmm0
jmp 0x49f581
movdqa xmm4, xmmword [esp]
jmp 0x49fa0d
movdqa xmm4, xmm5
movdqa xmm5, xmmword [esp + 0x10]
movdqa xmm1, xmmword [esp]
movdqa xmmword [esp + 0x10], xmm1
movdqa xmmword [esp], xmm0
movdqa xmm2, xmmword [esp + 0x20]
jmp 0x49f900
movdqa xmm4, xmmword [esp + 0x10]
movdqa xmm5, xmmword [esp]
movdqa xmmword [esp + 0x10], xmm2
movdqa xmmword [esp], xmm1
movdqa xmm2, xmmword [esp + 0x20]
jmp 0x49f900