Function at 0x40bbb0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x1c
push ebx
push ebp
mov ebp, dword [esp + 0x28]
mov ebx, edx
push esi
mov esi, dword [esp + 0x30]
mov edx, ecx
push edi
mov edi, esi
mov dword [esp + 0x18], ebx
shr edi, 2
xor ecx, ecx
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x28], edi
test edi, edi
je 0x40bced
cmp edi, 8
jb 0x40bca0
lea eax, [ebp - 4]
mov dword [esp + 0x10], ecx
lea eax, [eax + edi*4]
cmp edx, eax
ja 0x40bc07
lea eax, [edx - 4]
lea eax, [eax + edi*4]
cmp eax, ebp
jae 0x40bca0
lea eax, [ebx - 4]
lea eax, [eax + edi*4]
cmp edx, eax
ja 0x40bc1f
lea eax, [edx - 4]
lea eax, [eax + edi*4]
cmp eax, ebx
jae 0x40bca0
mov eax, edi
mov esi, edi
and eax, 7
sub esi, eax
lea eax, [ebx + 0x10]
mov dword [esp + 0x24], esi
mov esi, edx
sub esi, ebx
mov dword [esp + 0x10], esi
mov esi, ebp
mov edi, dword [esp + 0x10]
sub esi, ebx
mov dword [esp + 0x1c], esi
mov esi, edx
mov edx, dword [esp + 0x1c]
sub esi, ebp
mov dword [esp + 0x20], esi
mov esi, ebp
mov ebx, dword [esp + 0x20]
movdqu xmm0, xmmword [esi]
add ecx, 8
lea esi, [esi + 0x20]
lea eax, [eax + 0x20]
movdqu xmm1, xmmword [eax - 0x30]
pxor xmm1, xmm0
movdqu xmmword [ebx + esi - 0x20], xmm1
movdqu xmm1, xmmword [edx + eax - 0x20]
movdqu xmm0, xmmword [eax - 0x20]
pxor xmm1, xmm0
movdqu xmmword [edi + eax - 0x20], xmm1
cmp ecx, dword [esp + 0x24]
jb 0x40bc55
mov esi, dword [esp + 0x34]
mov edi, dword [esp + 0x28]
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x10], ecx
cmp ecx, edi
jae 0x40bced
mov eax, ebx
lea ecx, [ecx*4]
sub eax, ebp
add ecx, ebp
mov dword [esp + 0x28], eax
mov eax, edx
mov esi, dword [esp + 0x28]
sub eax, ebp
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x10]
sub edi, eax
mov ebp, dword [esp + 0x24]
add eax, edi
mov dword [esp + 0x10], eax
mov eax, dword [esi + ecx]
lea ecx, [ecx + 4]
xor eax, dword [ecx - 4]
mov dword [ecx + ebp - 4], eax
dec edi
jne 0x40bcd1
mov esi, dword [esp + 0x34]
mov ebp, dword [esp + 0x30]
mov ecx, dword [esp + 0x10]
shl ecx, 2
sub esi, ecx
mov dword [esp + 0x34], esi
je 0x40bde0
add edx, ecx
add ebx, ecx
add ebp, ecx
mov dword [esp + 0x14], edx
xor edi, edi
mov dword [esp + 0x18], ebx
mov dword [esp + 0x30], ebp
test esi, esi
je 0x40bde0
cmp esi, 0x20
jb 0x40bdc3
lea eax, [ebp - 1]
lea ecx, [edx - 1]
add eax, esi
add ecx, esi
cmp edx, eax
ja 0x40bd37
cmp ecx, ebp
jae 0x40bdc3
lea eax, [ebx - 1]
add eax, esi
cmp edx, eax
ja 0x40bd44
cmp ecx, ebx
jae 0x40bdc3
mov eax, esi
mov ecx, esi
mov esi, edx
and eax, 0x1f
sub esi, ebx
sub ecx, eax
mov dword [esp + 0x28], esi
mov eax, ebx
mov esi, ebp
mov dword [esp + 0x1c], ecx
sub esi, ebx
lea ecx, [ebp + 0x10]
mov dword [esp + 0x24], esi
mov esi, edx
mov edx, dword [esp + 0x24]
sub esi, ebp
mov ebp, dword [esp + 0x28]
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0x34]
mov ebx, dword [esp + 0x20]
mov edi, edi
movdqu xmm0, xmmword [eax]
add edi, 0x20
lea eax, [eax + 0x20]
lea ecx, [ecx + 0x20]
movdqu xmm1, xmmword [eax + edx - 0x20]
pxor xmm1, xmm0
movdqu xmmword [eax + ebp - 0x20], xmm1
movdqu xmm1, xmmword [eax - 0x10]
movdqu xmm0, xmmword [ecx - 0x20]
pxor xmm1, xmm0
movdqu xmmword [ecx + ebx - 0x20], xmm1
cmp edi, dword [esp + 0x1c]
jb 0x40bd80
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x30]
cmp edi, esi
jae 0x40bde0
sub ebx, ebp
lea ecx, [edi + ebp]
sub edx, ebp
sub esi, edi
mov al, byte [ebx + ecx]
lea ecx, [ecx + 1]
xor al, byte [ecx - 1]
mov byte [edx + ecx - 1], al
dec esi
jne 0x40bdd0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c
ret