Function at 0x10031b20
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
push esi
push edi
push ebx
sub esp, 0x24
mov edx, dword [ebp + 0x14]
mov eax, dword [ebp + 0x20]
lea edi, [edx + 0x1f]
and edi, 0xffffffe0
cmp dword [ebp + 0x1c], 0
lea ecx, [edi + eax*8]
jbe 0x10031d5b
mov esi, eax
mov ebx, eax
shr esi, 1
xor edx, edx
shr ebx, 2
movaps xmm0, xmmword [0x10366b00]
cmp dword [ebp + 0x18], 0
jbe 0x10031d5b
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], esi
mov dword [esp + 0xc], edi
mov eax, dword [ebp + 0x1c]
mov dword [esp + 8], edx
xor ebx, ebx
mov eax, dword [ebp + 0x28]
mov edx, dword [esp + 8]
cmp dword [esp + 0x18], 0
mov ecx, dword [eax + edx*4]
mov edi, dword [ecx + ebx*4]
jbe 0x10031bda
mov dword [esp], ebx
xor esi, esi
mov edx, dword [esp + 0xc]
mov ecx, esi
lea eax, [esi*8]
shl ecx, 4
neg eax
add eax, dword [esp + 0x1c]
mov ebx, dword [edi + ecx]
mov dword [edx + esi*8 + 4], ebx
movss xmm0, dword [edi + ecx + 4]
xorps xmm0, xmmword [0x10366b10]
movss dword [edx + esi*8], xmm0
inc esi
mov ebx, dword [edi + ecx + 8]
mov dword [eax - 4], ebx
mov ecx, dword [edi + ecx + 0xc]
mov dword [eax - 8], ecx
cmp esi, dword [esp + 0x18]
jb 0x10031b97
mov ebx, dword [esp]
mov eax, dword [ebp + 8]
mov edx, dword [eax + 4]
push dword [edx + 0x18]
push dword [edx]
push dword [esp + 0x24]
push dword [esp + 0x18]
call fcn.10049410
mov esi, dword [ebp + 0x24]
mov edx, dword [esp + 8]
mov edi, dword [ebp + 8]
cmp dword [esp + 0x14], 0
mov ecx, dword [esi + edx*4]
mov esi, dword [edi]
mov edi, dword [ebp + 0x20]
mov eax, dword [ecx + ebx*4]
mov edx, dword [ebp + 0xc]
mov dword [esp + 0x10], edx
mov esi, dword [esi + ebx*4]
lea eax, [eax + edi*4 - 0x10]
mov edx, dword [esp + 0x1c]
mov ecx, dword [ebp + 0x10]
jbe 0x10031d3d
mov dword [esp + 4], 0
mov dword [esp], ebx
movaps xmm2, xmmword [0x10366b00]
mov ebx, dword [esp + 4]
mov edi, dword [esp + 0x10]
movaps xmm5, xmmword [edx]
inc ebx
movaps xmm3, xmmword [edx + 0x10]
movaps xmm1, xmm5
shufps xmm1, xmm3, 0x88
add edx, 0x20
shufps xmm5, xmm3, 0xdd
movaps xmm0, xmm1
movaps xmm6, xmmword [ecx]
movaps xmm4, xmmword [ecx + 0x10]
add ecx, 0x20
mulps xmm0, xmm6
mulps xmm1, xmm4
mulps xmm4, xmm5
mulps xmm6, xmm5
subps xmm0, xmm4
addps xmm1, xmm6
movaps xmm4, xmmword [edi]
mulps xmm4, xmm0
movaps xmm7, xmmword [edi + 0x10]
mulps xmm7, xmm1
addps xmm4, xmmword [esi]
movaps xmm3, xmmword [esi + 0x10]
addps xmm4, xmm4
subps xmm3, xmm7
shufps xmm4, xmm4, 0x1b
movaps xmmword [esi], xmm3
movaps xmmword [eax], xmm4
add eax, 0xfffffff0
movaps xmm5, xmmword [edi + 0x20]
movaps xmm3, xmmword [edi + 0x30]
mulps xmm5, xmm0
mulps xmm3, xmm1
movaps xmm6, xmmword [esi + 0x20]
movaps xmm7, xmmword [esi + 0x50]
subps xmm6, xmm5
addps xmm3, xmmword [esi + 0x30]
movaps xmmword [esi + 0x10], xmm6
movaps xmmword [esi + 0x20], xmm3
movaps xmm5, xmmword [edi + 0x40]
movaps xmm4, xmmword [edi + 0x50]
mulps xmm5, xmm0
mulps xmm4, xmm1
addps xmm5, xmmword [esi + 0x40]
subps xmm7, xmm4
movaps xmmword [esi + 0x30], xmm5
movaps xmmword [esi + 0x40], xmm7
movaps xmm3, xmmword [edi + 0x60]
movaps xmm5, xmmword [edi + 0x70]
mulps xmm3, xmm0
mulps xmm5, xmm1
movaps xmm4, xmmword [esi + 0x60]
pxor xmm1, xmm2
addps xmm5, xmmword [esi + 0x70]
subps xmm4, xmm3
movaps xmmword [esi + 0x50], xmm4
movaps xmmword [esi + 0x60], xmm5
mulps xmm0, xmmword [edi + 0x80]
mulps xmm1, xmmword [edi + 0x90]
addps xmm0, xmmword [esi + 0x80]
movaps xmmword [esi + 0x70], xmm0
add edi, 0xa0
movaps xmmword [esi + 0x80], xmm1
add esi, 0x90
cmp ebx, dword [esp + 0x14]
jb 0x10031c41
mov ebx, dword [esp]
inc ebx
cmp ebx, dword [ebp + 0x18]
jb 0x10031b7a
nop dword [eax]
mov edx, dword [esp + 8]
inc edx
mov eax, dword [ebp + 0x1c]
cmp edx, eax
jb 0x10031b74
add esp, 0x24
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret