Function at 0x46aaa0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x48
mov eax, dword [0x551e00]
xor eax, esp
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x54]
push ebx
mov ebx, dword [esp + 0x5c]
push ebp
mov ebp, dword [esp + 0x54]
mov dword [esp + 0x18], ebp
mov dword [esp + 8], eax
mov dword [esp + 0x10], ebx
push edi
mov edi, dword [esp + 0x5c]
mov dword [esp + 0x10], edi
test ebp, ebp
je 0x46acbc
test edi, edi
je 0x46acbc
test ebx, ebx
je 0x46acbc
test eax, eax
je 0x46acbc
push esi
cmp eax, 0x10
jae 0x46ab2f
mov esi, 0x10
sub esi, eax
add eax, 0x28
add eax, ebp
push esi
push eax
lea eax, [esp + 0x4c]
push eax
call fcn.004fa290
push dword [esp + 0x1c]
lea eax, [esp + 0x54]
add eax, esi
push edi
push eax
call fcn.004fa290
movdqu xmm0, xmmword [esp + 0x5c]
mov eax, dword [esp + 0x28]
add esp, 0x18
jmp 0x46ab35
movdqu xmm0, xmmword [eax + edi - 0x10]
mov esi, eax
shr esi, 4
movdqu xmmword [esp + 0x34], xmm0
test esi, esi
je 0x46ab9d
lea eax, [ebp + 0x28]
lea ecx, [esp + 0x44]
push ecx
push eax
mov eax, dword [ebp + 0x10]
push ebp
call eax
movdqu xmm0, xmmword [edi]
add esp, 0xc
movdqu xmmword [ebp + 0x28], xmm0
mov eax, dword [edi]
xor eax, dword [esp + 0x44]
mov dword [ebx], eax
mov eax, dword [edi + 4]
xor eax, dword [esp + 0x48]
mov dword [ebx + 4], eax
mov eax, dword [edi + 8]
xor eax, dword [esp + 0x4c]
mov dword [ebx + 8], eax
mov eax, dword [edi + 0xc]
add edi, 0x10
xor eax, dword [esp + 0x50]
mov dword [ebx + 0xc], eax
add ebx, 0x10
lea eax, [ebp + 0x28]
dec esi
jne 0x46ab47
mov eax, dword [esp + 0x10]
mov dword [esp + 0x18], ebx
mov dword [esp + 0x14], edi
mov esi, eax
and esi, 0xf
mov dword [esp + 0x28], esi
je 0x46ac9e
lea eax, [esp + 0x44]
push eax
lea eax, [ebp + 0x28]
push eax
mov eax, dword [ebp + 0x10]
push ebp
call eax
add esp, 0xc
xor edx, edx
test esi, esi
je 0x46ac9a
cmp esi, 0x20
jb 0x46ac7b
lea ecx, [ebx - 1]
lea eax, [esp + esi + 0x43]
add ecx, esi
cmp ebx, eax
ja 0x46abea
lea eax, [esp + 0x44]
cmp ecx, eax
jae 0x46ac7b
lea eax, [edi - 1]
add eax, esi
cmp ebx, eax
ja 0x46abfb
cmp ecx, edi
jae 0x46ac7b
mov ebp, ebx
mov eax, esi
sub ebp, edi
and eax, 0x1f
mov dword [esp + 0x30], ebp
mov ecx, esi
mov esi, dword [esp + 0x30]
lea ebp, [esp + 0x44]
sub ebp, edi
sub ecx, eax
mov dword [esp + 0x24], ebp
mov eax, edi
lea ebp, [esp + 0x54]
sub ebp, edi
mov dword [esp + 0x1c], ebp
lea ebp, [ebx + 0x10]
mov ebx, dword [esp + 0x24]
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x2c], ebp
movdqu xmm0, xmmword [eax]
mov ebp, dword [esp + 0x2c]
lea eax, [eax + 0x20]
movdqu xmm1, xmmword [ebx + eax - 0x20]
pxor xmm1, xmm0
movdqu xmmword [esi + eax - 0x20], xmm1
movdqu xmm0, xmmword [eax - 0x10]
movdqu xmm1, xmmword [edi + eax - 0x20]
pxor xmm1, xmm0
movdqu xmmword [edx + ebp], xmm1
mov ebp, dword [esp + 0x20]
add edx, 0x20
cmp edx, ecx
jb 0x46ac35
mov edi, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov esi, dword [esp + 0x28]
cmp edx, esi
jae 0x46ac9a
lea eax, [esp + 0x44]
sub edi, eax
sub ebx, eax
lea ecx, [esp + 0x44]
add ecx, edx
inc edx
mov al, byte [edi + ecx]
xor al, byte [ecx]
mov byte [ebx + ecx], al
cmp edx, esi
jb 0x46ac87
mov eax, dword [esp + 0x10]
movdqu xmm0, xmmword [esp + 0x34]
pop esi
pop edi
movdqu xmmword [ebp + 0x28], xmm0
pop ebp
pop ebx
mov ecx, dword [esp + 0x44]
xor ecx, esp
call fcn.004f9e32
add esp, 0x48
ret
mov ecx, dword [esp + 0x50]
xor eax, eax
pop edi
pop ebp
pop ebx
xor ecx, esp
call fcn.004f9e32
add esp, 0x48
ret