Function at 0x4045f6
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x70
mov eax, dword [0x565fa8]
mov ecx, dword [ebp + 8]
mov esi, dword [ebp + 0x14]
mov ebx, dword [ebp + 0x10]
mov edi, dword [ebp + 0xc]
xor eax, ebp
cmp esi, 0xf
mov dword [esp + 0x68], eax
movdqu xmm2, xmmword [ecx + 0x2c]
movdqu xmm6, xmmword [ecx + 0x3c]
movdqu xmm5, xmmword [ecx + 0x4c]
movdqu xmm1, xmmword [ecx + 0x5c]
jg 0x40463f
test esi, esi
jne 0x4049a6
jmp 0x404aac
mov eax, ebx
neg eax
and eax, 0xf
je 0x4046f3
movups xmm0, xmmword [ebx]
add ebx, eax
sub esi, eax
movdqa xmm3, xmmword [0x5126a0]
movdqa xmm4, xmm6
movups xmmword [edi], xmm0
add edi, eax
shl eax, 4
movaps xmmword [esp + 0x20], xmm0
movdqa xmm0, xmm1
movdqa xmm1, xmm2
movdqa xmm7, xmmword [eax + 0x512710]
pxor xmm3, xmm7
pshufb xmm4, xmm7
pshufb xmm1, xmm7
pshufb xmm2, xmm3
pshufb xmm6, xmm3
por xmm2, xmm4
movdqa xmm4, xmm5
pshufb xmm5, xmm3
pshufb xmm4, xmm7
por xmm6, xmm4
movdqa xmm4, xmm0
pshufb xmm0, xmm3
movdqa xmm3, xmmword [esp + 0x20]
pshufb xmm4, xmm7
por xmm5, xmm4
movdqa xmm4, xmmword [0x5126b0]
pshufb xmm3, xmm7
por xmm0, xmm3
movdqa xmmword [esp + 0x20], xmm3
pclmulqdq xmm4, xmm1, 1
pclmulqdq xmm1, xmmword [0x5126c0], 1
pxor xmm1, xmm0
pxor xmm1, xmm4
jmp 0x4046fe
movdqu xmm0, xmmword [ecx + 0x6c]
movdqa xmmword [esp + 0x20], xmm0
mov eax, esi
movdqa xmmword [esp + 0x10], xmm2
movdqa xmmword [esp], xmm1
add eax, 0xffffffc0
js 0x404806
movdqa xmm4, xmmword [esp]
movdqa xmm7, xmmword [esp + 0x10]
mov ecx, 0x40
mov edx, eax
movaps xmm0, xmmword [ebx + 0x30]
movdqa xmm1, xmmword [ebx]
movdqa xmm2, xmm7
movdqa xmmword [esp + 0x30], xmm5
movdqa xmm5, xmmword [ebx + 0x10]
movdqa xmm3, xmmword [ebx + 0x20]
movdqa xmmword [esp + 0x40], xmm6
add ebx, ecx
movdqa xmm6, xmmword [esp + 0x40]
movaps xmmword [esp + 0x10], xmm0
movdqa xmm0, xmmword [0x5126b0]
movdqu xmmword [edi], xmm1
movdqu xmmword [edi + 0x10], xmm5
movdqu xmmword [edi + 0x20], xmm3
pclmulqdq xmm7, xmm0, 0x10
movdqa xmm0, xmm6
pxor xmm7, xmm1
movdqa xmm1, xmmword [0x5126c0]
pclmulqdq xmm2, xmm1, 1
pclmulqdq xmm0, xmm1, 1
pxor xmm7, xmm2
movdqa xmm2, xmmword [0x5126b0]
pclmulqdq xmm6, xmm2, 0x10
pxor xmm6, xmm5
movdqa xmm5, xmmword [esp + 0x30]
pxor xmm6, xmm0
movdqa xmm0, xmm5
pclmulqdq xmm5, xmm2, 0x10
pxor xmm5, xmm3
movdqa xmm3, xmmword [esp + 0x10]
pclmulqdq xmm0, xmm1, 1
pxor xmm5, xmm0
movdqa xmm0, xmm4
pclmulqdq xmm4, xmm2, 0x10
pclmulqdq xmm0, xmm1, 1
pxor xmm4, xmm3
movdqu xmmword [edi + 0x30], xmm3
add edi, ecx
add edx, 0xffffffc0
pxor xmm4, xmm0
jns 0x404726
mov ecx, dword [ebp + 8]
and eax, 0x3f
movdqa xmmword [esp + 0x10], xmm7
movdqa xmmword [esp], xmm4
mov esi, eax
mov eax, esi
add eax, 0xffffffd0
js 0x4048ae
movdqa xmm2, xmmword [0x5126b0]
movdqa xmm4, xmmword [ebx + 0x20]
movdqa xmm3, xmmword [0x5126c0]
movdqa xmm1, xmm5
movdqa xmm0, xmm6
movdqa xmm7, xmmword [ebx]
test eax, eax
pclmulqdq xmm1, xmm2, 0x10
pclmulqdq xmm5, xmm3, 1
pclmulqdq xmm0, xmm2, 0x10
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqa xmm5, xmm6
movdqa xmm6, xmm2
movdqa xmm2, xmmword [esp + 0x10]
pclmulqdq xmm5, xmm3, 1
pclmulqdq xmm3, xmm2, 0x10
pclmulqdq xmm2, xmm6, 0x10
movdqa xmm6, xmmword [ebx + 0x10]
movdqu xmmword [edi], xmm7
pxor xmm2, xmm7
pxor xmm0, xmm6
movdqu xmmword [edi + 0x10], xmm6
movdqa xmm6, xmm2
movdqu xmmword [edi + 0x20], xmm4
pxor xmm0, xmm5
pxor xmm6, xmm3
movdqa xmm5, xmm0
je 0x404939
movdqa xmm2, xmmword [esp]
mov ecx, 0x30
jmp 0x4049a0
mov eax, esi
add eax, 0xffffffe0
js 0x404949
movdqa xmm0, xmm5
movdqa xmm3, xmmword [0x5126c0]
movdqa xmm5, xmmword [0x5126b0]
movdqa xmm2, xmmword [esp + 0x10]
movdqa xmm1, xmmword [ebx]
movdqa xmm7, xmmword [ebx + 0x10]
movdqa xmm4, xmm6
test eax, eax
pclmulqdq xmm4, xmm3, 1
pclmulqdq xmm3, xmm2, 0x10
pclmulqdq xmm2, xmm5, 0x10
pclmulqdq xmm6, xmm5, 0x10
movdqu xmmword [edi], xmm1
movdqu xmmword [edi + 0x10], xmm7
pxor xmm2, xmm1
pxor xmm6, xmm7
movdqa xmm1, xmm2
pxor xmm1, xmm3
movdqa xmm3, xmm6
pxor xmm3, xmm4
je 0x404abf
movdqa xmm6, xmmword [esp]
mov ecx, 0x20
movdqa xmm5, xmm1
movdqa xmm2, xmm0
movdqa xmm1, xmm3
jmp 0x4049a0
movdqa xmm2, xmmword [esp]
movdqa xmm3, xmmword [esp + 0x20]
jmp 0x404a93
mov eax, esi
add eax, 0xfffffff0
js 0x404ad8
movdqa xmm3, xmmword [0x5126c0]
movdqa xmm0, xmmword [esp + 0x10]
movdqa xmm1, xmmword [ebx]
test eax, eax
pclmulqdq xmm3, xmm0, 0x10
pclmulqdq xmm0, xmmword [0x5126b0], 0x10
movdqu xmmword [edi], xmm1
pxor xmm0, xmm1
movdqa xmm1, xmm0
pxor xmm1, xmm3
je 0x404af3
movdqa xmm2, xmm6
movdqa xmm6, xmm5
movdqa xmm5, xmmword [esp]
mov ecx, 0x10
mov esi, eax
add edi, ecx
add ebx, ecx
mov eax, 0x10
xor ecx, ecx
movdqa xmmword [esp], xmm1
movdqa xmmword [esp + 0x10], xmm2
movdqa xmmword [esp + 0x30], xmm5
movdqa xmmword [esp + 0x40], xmm6
sub eax, esi
cmp esi, 0xf
cmovbe ecx, eax
lea eax, [esp + esi + 0x58]
push ecx
push 0
push eax
call fcn.004ead00
add esp, 0xc
lea eax, [esp + 0x58]
push esi
push ebx
push eax
mov ebx, eax
call fcn.004ea200
movdqa xmm2, xmmword [esp + 0x1c]
movdqa xmm5, xmmword [esp + 0x3c]
movdqa xmm6, xmmword [esp + 0x4c]
mov ecx, dword [ebp + 8]
add esp, 0xc
shl esi, 4
movdqa xmm0, xmmword [0x5126a0]
movdqa xmm3, xmm6
movdqa xmm7, xmmword [esp]
movdqa xmm1, xmm2
movdqa xmm4, xmmword [esi + 0x512710]
pxor xmm0, xmm4
pshufb xmm3, xmm4
pshufb xmm1, xmm4
pshufb xmm2, xmm0
pshufb xmm6, xmm0
por xmm2, xmm3
movdqa xmm3, xmm5
pshufb xmm5, xmm0
pshufb xmm3, xmm4
por xmm6, xmm3
movdqa xmm3, xmm7
pshufb xmm7, xmm0
pshufb xmm3, xmm4
por xmm5, xmm3
movdqu xmm3, xmmword [ebx]
movdqu xmmword [edi], xmm3
pshufb xmm3, xmm4
movdqa xmm4, xmmword [0x5126b0]
por xmm7, xmm3
pclmulqdq xmm4, xmm1, 1
pclmulqdq xmm1, xmmword [0x5126c0], 1
pxor xmm1, xmm7
pxor xmm1, xmm4
movdqu xmmword [ecx + 0x2c], xmm2
movdqu xmmword [ecx + 0x3c], xmm6
movdqu xmmword [ecx + 0x4c], xmm5
movdqu xmmword [ecx + 0x5c], xmm1
movdqu xmmword [ecx + 0x6c], xmm3
mov ecx, dword [esp + 0x68]
xor ecx, ebp
call fcn.004e6891
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
movdqa xmm5, xmm1
movdqa xmm1, xmm3
movdqa xmm6, xmmword [esp]
movdqa xmm3, xmmword [esp + 0x20]
movdqa xmm2, xmm0
jmp 0x404a93
movdqa xmm1, xmmword [esp]
movdqa xmm2, xmmword [esp + 0x10]
movdqa xmm3, xmmword [esp + 0x20]
test esi, esi
jne 0x4049a6
jmp 0x404a93
movdqa xmm2, xmm6
movdqa xmm6, xmm5
movdqa xmm5, xmmword [esp]
jmp 0x40493e