Function at 0x431310
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0xc
call fcn.0049c460
mov eax, dword [esp + 0x18]
push ebx
mov ebx, dword [esp + 0x18]
push ebp
mov ebp, dword [esp + 0x18]
mov ecx, dword [eax + 4]
mov edx, dword [ebx + 4]
xor ecx, edx
push esi
lea ebp, [ebp - 1]
shr ebp, 0x1f
dec ebp
and ecx, ebp
mov dword [esp + 0x1c], ebp
xor edx, ecx
mov dword [ebx + 4], edx
xor dword [eax + 4], ecx
mov ecx, dword [esp + 0x28]
movd xmm0, ebp
push edi
pshufd xmm3, xmm0, 0
lea edx, [ecx - 1]
cmp edx, 9
ja case.default.0x43135c
jmp dword [edx*4 + 0x43157c]
mov ebp, 0xa
lea edx, [ecx - 0xa]
cmp ecx, ebp
jle 0x431484
cmp edx, 8
jb 0x43145d
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 0x4313b2
cmp esi, edi
jae 0x43145d
cmp dword [esp + 0x28], eax
ja 0x4313c0
cmp esi, eax
jae 0x43145d
cmp dword [esp + 0x28], ebx
ja 0x4313ce
cmp esi, ebx
jae 0x43145d
mov esi, dword [esp + 0x10]
cmp edi, eax
ja 0x4313de
cmp esi, eax
jae 0x43145d
cmp edi, ebx
ja 0x4313e6
cmp esi, ebx
jae 0x43145d
and edx, 0x80000007
jns 0x4313f3
dec edx
or edx, 0xfffffff8
inc edx
mov edi, dword [esp + 0x14]
mov esi, ecx
sub esi, edx
mov edx, dword [eax]
nop 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 xmm0, xmm2
movups xmmword [edx + ebp*4 + 0x10], xmm0
add ebp, 8
cmp ebp, esi
jl 0x431400
cmp ebp, ecx
jge 0x431484
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 0x431461
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