Function at 0x404630
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x70
mov ebx, dword [ebp + 0x14]
mov esi, dword [ebp + 0x10]
mov edi, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
mov eax, dword [0x57ffac]
xor eax, ebp
mov dword [esp + 0x68], eax
movdqu xmm5, xmmword [ecx + 0x2c]
movups xmm0, xmmword [ecx + 0x3c]
movaps xmmword [esp], xmm0
movdqu xmm7, xmmword [ecx + 0x4c]
movdqu xmm0, xmmword [ecx + 0x5c]
cmp ebx, 0xf
jg 0x40467c
test ebx, ebx
jne 0x4049ed
jmp 0x404b13
mov eax, esi
neg eax
and eax, 0xf
je 0x404734
movups xmm1, xmmword [esi]
movaps xmmword [esp + 0x20], xmm1
movups xmmword [edi], xmm1
add edi, eax
add esi, eax
sub ebx, eax
shl eax, 4
movdqa xmm2, xmmword [eax + 0x52a950]
movdqa xmm1, xmm5
movdqa xmm3, xmmword [0x52a8d0]
pxor xmm3, xmm2
pshufb xmm5, xmm3
movdqa xmm6, xmmword [esp]
movdqa xmm4, xmm6
pshufb xmm4, xmm2
por xmm5, xmm4
pshufb xmm6, xmm3
movdqa xmm4, xmm7
pshufb xmm4, xmm2
por xmm6, xmm4
movdqa xmmword [esp], xmm6
pshufb xmm7, xmm3
movdqa xmm4, xmm0
pshufb xmm4, xmm2
por xmm7, xmm4
movdqa xmm4, xmmword [esp + 0x20]
pshufb xmm0, xmm3
pshufb xmm1, xmm2
pshufb xmm4, xmm2
por xmm0, xmm4
movdqa xmm2, xmmword [0x52a8e0]
pclmulqdq xmm2, xmm1, 1
pxor xmm2, xmm0
pclmulqdq xmm1, xmmword [0x52a8f0], 1
pxor xmm1, xmm2
movdqa xmm0, xmm1
jmp 0x404739
movdqu xmm4, xmmword [ecx + 0x6c]
cmp ebx, 0x40
movdqa xmmword [esp + 0x20], xmm4
jl 0x4048d6
movdqa xmm1, xmm5
nop dword [eax]
movdqa xmmword [esp + 0x40], xmm7
movdqa xmm4, xmmword [esi]
movdqa xmm6, xmmword [esi + 0x10]
movaps xmm2, xmmword [esi + 0x20]
movaps xmmword [esp + 0x30], xmm2
movdqa xmm5, xmmword [esp]
movdqa xmm7, xmm1
movdqa xmm3, xmmword [0x52a8f0]
pclmulqdq xmm7, xmm3, 1
movaps xmm2, xmmword [esi + 0x30]
movaps xmmword [esp + 0x10], xmm2
movdqu xmmword [edi], xmm4
pxor xmm7, xmm4
movdqa xmm4, xmm1
movdqa xmm2, xmmword [0x52a8e0]
pclmulqdq xmm4, xmm2, 0x10
movdqa xmm1, xmm7
pxor xmm1, xmm4
movdqa xmm4, xmm5
pclmulqdq xmm4, xmm3, 1
movdqu xmmword [edi + 0x10], xmm6
pxor xmm4, xmm6
pclmulqdq xmm5, xmm2, 0x10
pxor xmm4, xmm5
movdqa xmmword [esp], xmm4
movdqa xmm6, xmmword [esp + 0x40]
movdqa xmm7, xmm6
pclmulqdq xmm7, xmm3, 1
movdqa xmm5, xmmword [esp + 0x30]
movdqu xmmword [edi + 0x20], xmm5
pxor xmm7, xmm5
movdqa xmm5, xmm6
pclmulqdq xmm5, xmm2, 0x10
pxor xmm7, xmm5
movdqa xmm4, xmm0
pclmulqdq xmm4, xmm3, 1
movdqa xmm3, xmmword [esp + 0x10]
movdqu xmmword [edi + 0x30], xmm3
pxor xmm4, xmm3
movdqa xmm3, xmm0
pclmulqdq xmm3, xmm2, 0x10
movdqa xmm0, xmm4
pxor xmm0, xmm3
mov eax, ebx
add ebx, 0xffffffc0
add esi, 0x40
add edi, 0x40
cmp eax, 0x7f
jg 0x404750
movdqa xmmword [esp + 0x10], xmm0
movdqa xmm0, xmm1
movdqa xmm4, xmmword [esp + 0x20]
cmp ebx, 0x30
jge 0x4048e9
cmp ebx, 0x20
jl 0x40497e
movdqa xmm3, xmmword [esi]
movdqa xmm4, xmmword [esi + 0x10]
movdqa xmm2, xmmword [0x52a8f0]
movdqa xmm6, xmmword [esp]
movdqa xmm1, xmm6
pclmulqdq xmm1, xmm2, 1
movdqa xmm5, xmmword [0x52a8e0]
pclmulqdq xmm6, xmm5, 0x10
pclmulqdq xmm2, xmm0, 0x10
pclmulqdq xmm0, xmm5, 0x10
movdqu xmmword [edi], xmm3
movdqu xmmword [edi + 0x10], xmm4
pxor xmm2, xmm3
pxor xmm2, xmm0
pxor xmm1, xmm4
pxor xmm1, xmm6
add ebx, 0xffffffe0
je 0x404b26
add edi, 0x20
add esi, 0x20
movdqa xmm5, xmm7
movaps xmm0, xmmword [esp + 0x10]
movaps xmmword [esp], xmm0
movdqa xmm7, xmm2
movdqa xmm0, xmm1
jmp 0x4049ed
movdqa xmmword [esp + 0x10], xmm0
movdqa xmm0, xmm5
cmp ebx, 0x30
jl 0x404851
movdqa xmm2, xmmword [esi]
movdqa xmm4, xmmword [esi + 0x20]
movdqa xmm3, xmmword [0x52a8f0]
movdqa xmm1, xmm7
pclmulqdq xmm1, xmm3, 1
movdqa xmm5, xmmword [0x52a8e0]
pclmulqdq xmm7, xmm5, 0x10
pxor xmm1, xmm4
pxor xmm1, xmm7
movdqa xmm7, xmmword [esp]
movdqa xmm6, xmm7
pclmulqdq xmm6, xmm3, 1
pclmulqdq xmm7, xmm5, 0x10
pclmulqdq xmm3, xmm0, 0x10
pclmulqdq xmm0, xmm5, 0x10
movdqa xmm5, xmmword [esi + 0x10]
movdqu xmmword [edi], xmm2
movdqu xmmword [edi + 0x10], xmm5
movdqu xmmword [edi + 0x20], xmm4
pxor xmm3, xmm2
pxor xmm6, xmm5
pxor xmm6, xmm7
movdqa xmm7, xmm6
pxor xmm3, xmm0
movdqa xmmword [esp], xmm3
add ebx, 0xffffffd0
je 0x4049d0
add edi, 0x30
add esi, 0x30
movdqa xmm5, xmmword [esp + 0x10]
movdqa xmm0, xmm1
jmp 0x4049ed
cmp ebx, 0x10
jl 0x4049db
movdqa xmm2, xmmword [esi]
movdqa xmm1, xmmword [0x52a8f0]
pclmulqdq xmm1, xmm0, 0x10
pclmulqdq xmm0, xmmword [0x52a8e0], 0x10
movdqu xmmword [edi], xmm2
pxor xmm1, xmm2
pxor xmm1, xmm0
add ebx, 0xfffffff0
je 0x404b45
add edi, 0x10
add esi, 0x10
movdqa xmm5, xmmword [esp]
movdqa xmmword [esp], xmm7
movdqa xmm7, xmmword [esp + 0x10]
movdqa xmm0, xmm1
jmp 0x4049ed
movdqa xmm5, xmmword [esp + 0x10]
jmp 0x404b39
test ebx, ebx
movdqa xmm5, xmm0
movdqa xmm0, xmmword [esp + 0x10]
je 0x404af7
movdqa xmmword [esp + 0x10], xmm0
movdqa xmmword [esp + 0x40], xmm7
movdqa xmmword [esp + 0x30], xmm5
mov eax, 0x10
sub eax, ebx
xor ecx, ecx
cmp ebx, 0xf
cmovbe ecx, eax
lea eax, [esp + ebx + 0x58]
push ecx
push 0
push eax
call fcn.00502350
add esp, 0xc
lea eax, [esp + 0x58]
push ebx
push esi
push eax
call fcn.00501dd0
movdqa xmm7, xmmword [esp + 0x4c]
movdqa xmm5, xmmword [esp + 0x3c]
movdqa xmm4, xmmword [esp + 0xc]
mov ecx, dword [ebp + 8]
add esp, 0xc
shl ebx, 4
movdqa xmm2, xmmword [ebx + 0x52a950]
movdqa xmm1, xmm5
movdqa xmm3, xmmword [0x52a8d0]
pxor xmm3, xmm2
pshufb xmm5, xmm3
movdqa xmm0, xmm4
pshufb xmm0, xmm2
por xmm5, xmm0
pshufb xmm4, xmm3
movdqa xmm0, xmm7
pshufb xmm0, xmm2
por xmm4, xmm0
movdqa xmmword [esp], xmm4
pshufb xmm7, xmm3
movdqa xmm6, xmmword [esp + 0x10]
movdqa xmm0, xmm6
pshufb xmm0, xmm2
por xmm7, xmm0
movdqu xmm4, xmmword [esp + 0x58]
pinsrd xmm4, dword [esp + 0x5c], 1
pinsrd xmm4, dword [esp + 0x60], 2
pshufb xmm6, xmm3
pinsrd xmm4, dword [esp + 0x64], 3
movdqu xmmword [edi], xmm4
pshufb xmm1, xmm2
pshufb xmm4, xmm2
por xmm6, xmm4
movdqa xmm2, xmmword [0x52a8e0]
pclmulqdq xmm2, xmm1, 1
pxor xmm2, xmm6
pclmulqdq xmm1, xmmword [0x52a8f0], 1
pxor xmm1, xmm2
movdqa xmm0, xmm1
movdqu xmmword [ecx + 0x2c], xmm5
movaps xmm1, xmmword [esp]
movups xmmword [ecx + 0x3c], xmm1
movdqu xmmword [ecx + 0x4c], xmm7
movdqu xmmword [ecx + 0x5c], xmm0
movdqu xmmword [ecx + 0x6c], xmm4
mov ecx, dword [esp + 0x68]
xor ecx, ebp
call fcn.004fe871
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
movdqa xmm5, xmm7
movdqa xmm0, xmmword [esp + 0x10]
movdqa xmmword [esp], xmm0
movdqa xmm7, xmm2
movdqa xmm0, xmm1
movdqa xmm4, xmmword [esp + 0x20]
jmp 0x404af7
movdqa xmm5, xmmword [esp]
movdqa xmmword [esp], xmm7
movdqa xmm7, xmmword [esp + 0x10]
jmp 0x404af3