Function at 0x100bdb20
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0xc
call fcn.10031c10
push ebx
push ebp
push esi
push edi
mov eax, dword [esp + 0x28]
mov ebx, dword [esp + 0x24]
mov ebp, dword [esp + 0x20]
mov ecx, dword [eax + 4]
mov edx, dword [ebx + 4]
xor ecx, edx
lea ebp, [ebp - 1]
shr ebp, 0x1f
dec ebp
and ecx, ebp
mov dword [esp + 0x20], ebp
xor edx, ecx
mov dword [ebx + 4], edx
xor dword [eax + 4], ecx
mov edx, dword [ebx + 0xc]
mov ecx, dword [eax + 0xc]
xor ecx, edx
movd xmm0, ebp
and ecx, ebp
pshufd xmm3, xmm0, 0
xor edx, ecx
mov dword [ebx + 0xc], edx
xor dword [eax + 0xc], ecx
mov edx, dword [ebx + 0x10]
mov ecx, dword [eax + 0x10]
xor ecx, edx
and ecx, ebp
and ecx, 4
xor edx, ecx
mov dword [ebx + 0x10], edx
xor dword [eax + 0x10], ecx
mov ecx, dword [esp + 0x2c]
lea edx, [ecx - 1]
cmp edx, 9
ja case.default.0x100bdb93
jmp dword [edx*4 + 0x100bddb0]
mov ebp, 0xa
lea edx, [ecx - 0xa]
cmp ecx, ebp
jle 0x100bdcb8
cmp edx, 8
jb 0x100bdc91
mov edi, dword [eax]
mov esi, dword [ebx]
mov dword [esp + 0x14], esi
mov ebx, esi
lea esi, [edi + 0x28]
mov dword [esp + 0x28], esi
lea esi, [ecx - 1]
lea esi, [edi + esi*4]
lea edi, [ebx + 0x28]
lea ebx, [ebx + ecx*4]
add ebx, 0xfffffffc
cmp dword [esp + 0x28], ebx
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x24]
ja 0x100bdbe9
cmp esi, edi
jae 0x100bdc91
cmp dword [esp + 0x28], eax
ja 0x100bdbf7
cmp esi, eax
jae 0x100bdc91
cmp dword [esp + 0x28], ebx
ja 0x100bdc05
cmp esi, ebx
jae 0x100bdc91
mov esi, dword [esp + 0x10]
cmp edi, eax
ja 0x100bdc15
cmp esi, eax
jae 0x100bdc91
cmp edi, ebx
ja 0x100bdc1d
cmp esi, ebx
jae 0x100bdc91
and edx, 0x80000007
jns 0x100bdc2a
dec edx
or edx, 0xfffffff8
inc edx
mov edi, dword [esp + 0x14]
mov esi, ecx
sub esi, edx
mov edx, dword [eax]
movups xmm1, xmmword [edi + ebp*4]
movups xmm0, xmmword [edx + ebp*4]
movaps xmm2, xmm1
pxor xmm2, xmm0
pand xmm2, xmm3
movaps xmm0, xmm2
pxor xmm0, xmm1
movups xmmword [edi + ebp*4], xmm0
movups xmm0, xmmword [edx + ebp*4]
pxor xmm2, xmm0
movups xmmword [edx + ebp*4], xmm2
movups xmm1, xmmword [edi + ebp*4 + 0x10]
movups xmm2, xmmword [edx + ebp*4 + 0x10]
pxor xmm2, xmm1
pand xmm2, xmm3
movaps xmm0, xmm2
pxor xmm0, xmm1
movups xmmword [edi + ebp*4 + 0x10], xmm0
movups xmm0, xmmword [edx + ebp*4 + 0x10]
pxor xmm2, xmm0
movups xmmword [edx + ebp*4 + 0x10], xmm2
add ebp, 8
cmp ebp, esi
jl 0x100bdc34
cmp ebp, ecx
jge 0x100bdcb8
mov ecx, dword [ebx]
mov edx, dword [ecx + ebp*4]
lea esi, [ecx + ebp*4]
mov ecx, dword [eax]
mov edi, dword [ecx + ebp*4]
xor edi, edx
and edi, dword [esp + 0x20]
xor edx, edi
mov dword [esi], edx
mov ecx, dword [eax]
xor dword [ecx + ebp*4], edi
inc ebp
cmp ebp, dword [esp + 0x2c]
jl 0x100bdc95
mov ebp, dword [esp + 0x20]
mov ecx, dword [eax]
mov edi, dword [ebx]
mov esi, dword [ecx + 0x24]
mov edx, dword [edi + 0x24]
xor esi, edx
and esi, ebp
xor edx, esi
mov dword [edi + 0x24], edx
mov ecx, dword [eax]
xor dword [ecx + 0x24], esi
mov ecx, dword [eax]
mov edi, dword [ebx]
mov esi, dword [ecx + 0x20]
mov edx, dword [edi + 0x20]
xor esi, edx
and esi, ebp
xor edx, esi
mov dword [edi + 0x20], edx
mov ecx, dword [eax]
xor dword [ecx + 0x20], esi
mov ecx, dword [eax]
mov edi, dword [ebx]
mov esi, dword [ecx + 0x1c]
mov edx, dword [edi + 0x1c]
xor esi, edx
and esi, ebp
xor edx, esi
mov dword [edi + 0x1c], edx
mov ecx, dword [eax]
xor dword [ecx + 0x1c], esi
mov ecx, dword [eax]
mov edi, dword [ebx]
mov esi, dword [ecx + 0x18]
mov edx, dword [edi + 0x18]
xor esi, edx
and esi, ebp
xor edx, esi
mov dword [edi + 0x18], edx
mov ecx, dword [eax]
xor dword [ecx + 0x18], esi
mov ecx, dword [eax]
mov edi, dword [ebx]
mov esi, dword [ecx + 0x14]
mov edx, dword [edi + 0x14]
xor esi, edx
and esi, ebp
xor edx, esi
mov dword [edi + 0x14], edx
mov ecx, dword [eax]
xor dword [ecx + 0x14], esi
mov ecx, dword [eax]
mov edi, dword [ebx]
mov esi, dword [ecx + 0x10]
mov edx, dword [edi + 0x10]
xor esi, edx
and esi, ebp
xor edx, esi
mov dword [edi + 0x10], edx
mov ecx, dword [eax]
xor dword [ecx + 0x10], esi
mov ecx, dword [eax]
mov edi, dword [ebx]
mov esi, dword [ecx + 0xc]
mov edx, dword [edi + 0xc]
xor esi, edx
and esi, ebp
xor edx, esi
mov dword [edi + 0xc], edx
mov ecx, dword [eax]
xor dword [ecx + 0xc], esi
mov ecx, dword [eax]
mov edi, dword [ebx]
mov esi, dword [ecx + 8]
mov edx, dword [edi + 8]
xor esi, edx
and esi, ebp
xor edx, esi
mov dword [edi + 8], edx
mov ecx, dword [eax]
xor dword [ecx + 8], esi
mov ecx, dword [eax]
mov edi, dword [ebx]
mov esi, dword [ecx + 4]
mov edx, dword [edi + 4]
xor esi, edx
and esi, ebp
xor edx, esi
mov dword [edi + 4], edx
mov ecx, dword [eax]
xor dword [ecx + 4], esi
mov esi, dword [ebx]
mov ecx, dword [eax]
pop edi
mov edx, dword [esi]
mov ecx, dword [ecx]
xor ecx, edx
and ecx, ebp
xor edx, ecx
mov dword [esi], edx
mov eax, dword [eax]
pop esi
pop ebp
pop ebx
xor dword [eax], ecx
add esp, 0xc
ret