Function at 0x10318800
Capabilities:
Encode data using xor

Disassembly:
push ebx
push esi
push edi
push ebp
sub esp, 0x3c
lea eax, [0x103164b0]
mov dword [esp], eax
mov ecx, dword [esp + 0x58]
cmp ecx, 8
je 0x10319614
mov esi, dword [esp + 0x50]
mov edi, dword [esp + 0x54]
cmp esi, edi
je 0x10318835
test edi, 0xf
jne 0x10318835
mov dword [esp + 0x64], edi
mov ebp, dword [esp + 0x58]
mov edx, dword [esp + 0x60]
mov edi, dword [esp + 0x64]
mov eax, dword [esp]
shl ebp, 0
lea ecx, [ebp + ebp*2]
mov ebx, esi
test esi, 0xf
jne 0x10318a87
cmp ebp, 0x800
jge 0x10318980
lea esp, [esp]
lea esp, [esp]
movaps xmm0, xmmword [ebx]
movaps xmm1, xmmword [ebx + ebp*4]
movaps xmm2, xmmword [ebx + ebp*2]
movaps xmm3, xmmword [ebx + ecx*2]
movaps xmm4, xmm0
addps xmm0, xmm1
subps xmm4, xmm1
movaps xmm5, xmm2
addps xmm2, xmm3
subps xmm5, xmm3
add ebx, ebp
movaps xmm1, xmm0
shufps xmm4, xmm4, 0xb1
addps xmm0, xmm2
subps xmm1, xmm2
xorps xmm5, xmmword [eax + 0x40]
movaps xmm3, xmm4
subps xmm4, xmm5
addps xmm3, xmm5
movaps xmm2, xmm0
movlhps xmm0, xmm4
movhlps xmm4, xmm2
movaps xmm5, xmm1
movlhps xmm1, xmm3
movhlps xmm3, xmm5
movaps xmm2, xmm0
shufps xmm0, xmm1, 0xcc
movaps xmmword [edi], xmm0
shufps xmm2, xmm1, 0x99
movaps xmmword [edi + 0x10], xmm2
movaps xmm0, xmmword [ebx]
movaps xmm1, xmmword [ebx + ebp*4]
movaps xmm2, xmmword [ebx + ebp*2]
movaps xmm7, xmmword [ebx + ecx*2]
movaps xmm6, xmm0
addps xmm0, xmm1
subps xmm6, xmm1
movaps xmm5, xmm2
addps xmm2, xmm7
subps xmm5, xmm7
mov ebx, dword [edx + 0x10]
add edx, 0x10
lea ebx, [esi + ebx*8]
movaps xmm1, xmm0
shufps xmm6, xmm6, 0xb1
addps xmm0, xmm2
subps xmm1, xmm2
xorps xmm5, xmmword [eax + 0x40]
movaps xmm7, xmm6
subps xmm6, xmm5
addps xmm7, xmm5
movaps xmm2, xmm0
movlhps xmm0, xmm6
movhlps xmm6, xmm2
movaps xmm5, xmm1
movlhps xmm1, xmm7
movhlps xmm7, xmm5
movaps xmm2, xmm0
shufps xmm0, xmm1, 0xcc
movaps xmmword [edi + 0x20], xmm0
shufps xmm2, xmm1, 0x99
movaps xmmword [edi + 0x30], xmm2
movaps xmm5, xmm4
shufps xmm4, xmm3, 0xcc
movaps xmmword [edi + ebp*4], xmm4
shufps xmm5, xmm3, 0x99
movaps xmmword [edi + ebp*4 + 0x10], xmm5
movaps xmm5, xmm6
shufps xmm6, xmm7, 0xcc
movaps xmmword [edi + ebp*4 + 0x20], xmm6
shufps xmm5, xmm7, 0x99
movaps xmmword [edi + ebp*4 + 0x30], xmm5
add edi, 0x40
cmp ebx, esi
jne 0x10318870
jmp 0x10318b85
movaps xmm0, xmmword [ebx]
movaps xmm1, xmmword [ebx + ebp*4]
movaps xmm2, xmmword [ebx + ebp*2]
movaps xmm3, xmmword [ebx + ecx*2]
movaps xmm4, xmm0
addps xmm0, xmm1
subps xmm4, xmm1
movaps xmm5, xmm2
addps xmm2, xmm3
subps xmm5, xmm3
movaps xmm1, xmm0
shufps xmm4, xmm4, 0xb1
addps xmm0, xmm2
subps xmm1, xmm2
xorps xmm5, xmmword [eax + 0x40]
movaps xmm3, xmm4
subps xmm4, xmm5
addps xmm3, xmm5
movaps xmm2, xmm0
movlhps xmm0, xmm4
movhlps xmm4, xmm2
movaps xmm5, xmm1
movlhps xmm1, xmm3
movhlps xmm3, xmm5
movaps xmm2, xmm0
shufps xmm0, xmm1, 0xcc
movaps xmmword [edi], xmm0
shufps xmm2, xmm1, 0x99
movaps xmmword [edi + 0x10], xmm2
movaps xmm0, xmmword [ebx + 0x10]
movaps xmm1, xmmword [ebx + ebp*4 + 0x10]
movaps xmm2, xmmword [ebx + ebp*2 + 0x10]
movaps xmm7, xmmword [ebx + ecx*2 + 0x10]
movaps xmm6, xmm0
addps xmm0, xmm1
subps xmm6, xmm1
movaps xmm5, xmm2
addps xmm2, xmm7
subps xmm5, xmm7
mov ebx, dword [edx + 0x10]
add edx, 0x10
shl ebx, 1
movaps xmm1, xmm0
shufps xmm6, xmm6, 0xb1
addps xmm0, xmm2
subps xmm1, xmm2
xorps xmm5, xmmword [eax + 0x40]
movaps xmm7, xmm6
subps xmm6, xmm5
addps xmm7, xmm5
lea ebx, [esi + ebx*8]
movaps xmm2, xmm0
movlhps xmm0, xmm6
movhlps xmm6, xmm2
movaps xmm5, xmm1
movlhps xmm1, xmm7
movhlps xmm7, xmm5
movaps xmm5, xmm4
shufps xmm4, xmm3, 0xcc
movaps xmmword [edi + ebp*4], xmm4
shufps xmm5, xmm3, 0x99
movaps xmmword [edi + ebp*4 + 0x10], xmm5
movaps xmm2, xmm0
shufps xmm0, xmm1, 0xcc
movaps xmmword [edi + ebp*2], xmm0
shufps xmm2, xmm1, 0x99
movaps xmmword [edi + ebp*2 + 0x10], xmm2
movaps xmm5, xmm6
shufps xmm6, xmm7, 0xcc
movaps xmmword [edi + ecx*2], xmm6
shufps xmm5, xmm7, 0x99
movaps xmmword [edi + ecx*2 + 0x10], xmm5
add edi, 0x20
cmp ebx, esi
jne 0x10318980
jmp 0x10318b85
movups xmm0, xmmword [ebx]
movups xmm1, xmmword [ebx + ebp*4]
movups xmm2, xmmword [ebx + ebp*2]
movups xmm3, xmmword [ebx + ecx*2]
movaps xmm4, xmm0
addps xmm0, xmm1
subps xmm4, xmm1
movaps xmm5, xmm2
addps xmm2, xmm3
subps xmm5, xmm3
add ebx, ebp
movaps xmm1, xmm0
shufps xmm4, xmm4, 0xb1
addps xmm0, xmm2
subps xmm1, xmm2
xorps xmm5, xmmword [eax + 0x40]
movaps xmm3, xmm4
subps xmm4, xmm5
addps xmm3, xmm5
movaps xmm2, xmm0
movlhps xmm0, xmm4
movhlps xmm4, xmm2
movaps xmm5, xmm1
movlhps xmm1, xmm3
movhlps xmm3, xmm5
movaps xmm2, xmm0
shufps xmm0, xmm1, 0xcc
movaps xmmword [edi], xmm0
shufps xmm2, xmm1, 0x99
movaps xmmword [edi + 0x10], xmm2
movups xmm0, xmmword [ebx]
movups xmm1, xmmword [ebx + ebp*4]
movups xmm2, xmmword [ebx + ebp*2]
movups xmm7, xmmword [ebx + ecx*2]
movaps xmm6, xmm0
addps xmm0, xmm1
subps xmm6, xmm1
movaps xmm5, xmm2
addps xmm2, xmm7
subps xmm5, xmm7
mov ebx, dword [edx + 0x10]
add edx, 0x10
lea ebx, [esi + ebx*8]
movaps xmm1, xmm0
shufps xmm6, xmm6, 0xb1
addps xmm0, xmm2
subps xmm1, xmm2
xorps xmm5, xmmword [eax + 0x40]
movaps xmm7, xmm6
subps xmm6, xmm5
addps xmm7, xmm5
movaps xmm2, xmm0
movlhps xmm0, xmm6
movhlps xmm6, xmm2
movaps xmm5, xmm1
movlhps xmm1, xmm7
movhlps xmm7, xmm5
movaps xmm2, xmm0
shufps xmm0, xmm1, 0xcc
movaps xmmword [edi + 0x20], xmm0
shufps xmm2, xmm1, 0x99
movaps xmmword [edi + 0x30], xmm2
movaps xmm5, xmm4
shufps xmm4, xmm3, 0xcc
movaps xmmword [edi + ebp*4], xmm4
shufps xmm5, xmm3, 0x99
movaps xmmword [edi + ebp*4 + 0x10], xmm5
movaps xmm5, xmm6
shufps xmm6, xmm7, 0xcc
movaps xmmword [edi + ebp*4 + 0x20], xmm6
shufps xmm5, xmm7, 0x99
movaps xmmword [edi + ebp*4 + 0x30], xmm5
add edi, 0x40
cmp ebx, esi
jne 0x10318a87
mov ecx, 4
mov edx, dword [esp + 0x58]
cmp edx, 0x10
je 0x103191b1
cmp edx, 0x800
jg 0x10318baa
xor ebx, ebx
mov dword [esp + 0x10], ebx
shr edx, 4
jmp 0x10318bca
mov ebx, dword [esp + 0x58]
shr ebx, 0xb
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x5c]
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x64]
mov dword [esp + 0x18], ebx
mov edx, 0x80
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
mov esi, dword [esp + 0x64]
mov edi, dword [esp + 0x64]
mov edx, dword [esp + 8]
mov ecx, dword [esp + 4]
shl ecx, 3
lea eax, [ecx + ecx*2]
test edi, 0xf
jne 0x10319011
mov esi, dword [esp + 4]
cmp esi, 4
jne 0x10318e1e
shl edx, 7
lea edx, [edx + edi]
mov ebx, dword [esp + 0x5c]
movaps xmm0, xmmword [edi + ecx*2]
movaps xmm1, xmmword [ebx]
mulps xmm0, xmm1
movaps xmm2, xmmword [edi + ecx*2 + 0x10]
mulps xmm1, xmm2
movaps xmm3, xmmword [ebx + 0x10]
mulps xmm2, xmm3
movaps xmm4, xmmword [eax + edi]
mulps xmm3, xmmword [edi + ecx*2]
movaps xmm5, xmmword [ebx + 0x40]
mulps xmm4, xmm5
movaps xmm6, xmmword [eax + edi + 0x10]
mulps xmm5, xmm6
movaps xmm7, xmmword [ebx + 0x50]
mulps xmm6, xmm7
addps xmm0, xmm2
mulps xmm7, xmmword [eax + edi]
subps xmm1, xmm3
movaps xmm2, xmmword [ecx + edi]
movaps xmm3, xmmword [ebx + 0x20]
mulps xmm2, xmm3
addps xmm4, xmm6
movaps xmm6, xmmword [ecx + edi + 0x10]
mulps xmm3, xmm6
subps xmm5, xmm7
movaps xmm7, xmmword [ebx + 0x30]
mulps xmm6, xmm7
mulps xmm7, xmmword [ecx + edi]
addps xmm2, xmm6
movaps xmm6, xmm4
addps xmm4, xmm0
subps xmm0, xmm6
subps xmm3, xmm7
movaps xmm7, xmm5
addps xmm5, xmm1
subps xmm1, xmm7
movaps xmm6, xmmword [edi]
subps xmm6, xmm2
addps xmm2, xmmword [edi]
movaps xmm7, xmm4
addps xmm7, xmm2
subps xmm2, xmm4
movaps xmm4, xmmword [edi + 0x10]
subps xmm4, xmm3
addps xmm3, xmmword [edi + 0x10]
movaps xmmword [edi], xmm7
movaps xmm7, xmm5
addps xmm5, xmm3
subps xmm3, xmm7
movaps xmm7, xmm6
subps xmm6, xmm1
movaps xmmword [edi + 0x10], xmm5
movaps xmm5, xmm4
addps xmm4, xmm0
addps xmm7, xmm1
subps xmm5, xmm0
movaps xmmword [edi + ecx*2], xmm2
movaps xmmword [edi + ecx*2 + 0x10], xmm3
movaps xmmword [ecx + edi], xmm6
movaps xmmword [ecx + edi + 0x10], xmm4
movaps xmmword [eax + edi], xmm7
movaps xmmword [eax + edi + 0x10], xmm5
movaps xmm0, xmmword [edi + ecx*2 + 0x80]
movaps xmm1, xmmword [ebx]
mulps xmm0, xmm1
movaps xmm2, xmmword [edi + ecx*2 + 0x90]
mulps xmm1, xmm2
movaps xmm3, xmmword [ebx + 0x10]
mulps xmm2, xmm3
movaps xmm4, xmmword [eax + edi + 0x80]
mulps xmm3, xmmword [edi + ecx*2 + 0x80]
movaps xmm5, xmmword [ebx + 0x40]
mulps xmm4, xmm5
movaps xmm6, xmmword [eax + edi + 0x90]
mulps xmm5, xmm6
movaps xmm7, xmmword [ebx + 0x50]
mulps xmm6, xmm7
addps xmm0, xmm2
mulps xmm7, xmmword [eax + edi + 0x80]
subps xmm1, xmm3
movaps xmm2, xmmword [ecx + edi + 0x80]
movaps xmm3, xmmword [ebx + 0x20]
mulps xmm2, xmm3
addps xmm4, xmm6
movaps xmm6, xmmword [ecx + edi + 0x90]
mulps xmm3, xmm6
subps xmm5, xmm7
movaps xmm7, xmmword [ebx + 0x30]
mulps xmm6, xmm7
mulps xmm7, xmmword [ecx + edi + 0x80]
addps xmm2, xmm6
movaps xmm6, xmm4
addps xmm4, xmm0
subps xmm0, xmm6
subps xmm3, xmm7
movaps xmm7, xmm5
addps xmm5, xmm1
subps xmm1, xmm7
movaps xmm6, xmmword [edi + 0x80]
subps xmm6, xmm2
addps xmm2, xmmword [edi + 0x80]
movaps xmm7, xmm4
addps xmm7, xmm2
subps xmm2, xmm4
movaps xmm4, xmmword [edi + 0x90]
subps xmm4, xmm3
addps xmm3, xmmword [edi + 0x90]
movaps xmmword [edi + 0x80], xmm7
movaps xmm7, xmm5
addps xmm5, xmm3
subps xmm3, xmm7
movaps xmm7, xmm6
subps xmm6, xmm1
movaps xmmword [edi + 0x90], xmm5
movaps xmm5, xmm4
addps xmm4, xmm0
addps xmm7, xmm1
subps xmm5, xmm0
movaps xmmword [edi + ecx*2 + 0x80], xmm2
movaps xmmword [edi + ecx*2 + 0x90], xmm3
movaps xmmword [ecx + edi + 0x80], xmm6
movaps xmmword [ecx + edi + 0x90], xmm4
movaps xmmword [eax + edi + 0x80], xmm7
movaps xmmword [eax + edi + 0x90], xmm5
add edi, 0x100
cmp edi, edx
jne 0x10318c0b
add ebx, 0x60
mov dword [esp + 0x5c], ebx
jmp 0x1031913b
mov esi, dword [esp + 4]
mov ebx, dword [esp + 0x5c]
movaps xmm0, xmmword [edi + ecx*2]
movaps xmm1, xmmword [ebx]
mulps xmm0, xmm1
movaps xmm2, xmmword [edi + ecx*2 + 0x10]
mulps xmm1, xmm2
movaps xmm3, xmmword [ebx + 0x10]
mulps xmm2, xmm3
movaps xmm4, xmmword [eax + edi]
mulps xmm3, xmmword [edi + ecx*2]
movaps xmm5, xmmword [ebx + 0x40]
mulps xmm4, xmm5
movaps xmm6, xmmword [eax + edi + 0x10]
mulps xmm5, xmm6
movaps xmm7, xmmword [ebx + 0x50]
mulps xmm6, xmm7
addps xmm0, xmm2
mulps xmm7, xmmword [eax + edi]
subps xmm1, xmm3
movaps xmm2, xmmword [ecx + edi]
movaps xmm3, xmmword [ebx + 0x20]
mulps xmm2, xmm3
addps xmm4, xmm6
movaps xmm6, xmmword [ecx + edi + 0x10]
mulps xmm3, xmm6
subps xmm5, xmm7
movaps xmm7, xmmword [ebx + 0x30]
mulps xmm6, xmm7
mulps xmm7, xmmword [ecx + edi]
addps xmm2, xmm6
movaps xmm6, xmm4
addps xmm4, xmm0
subps xmm0, xmm6
subps xmm3, xmm7
movaps xmm7, xmm5
addps xmm5, xmm1
subps xmm1, xmm7
movaps xmm6, xmmword [edi]
subps xmm6, xmm2
addps xmm2, xmmword [edi]
movaps xmm7, xmm4
addps xmm7, xmm2
subps xmm2, xmm4
movaps xmm4, xmmword [edi + 0x10]
subps xmm4, xmm3
addps xmm3, xmmword [edi + 0x10]
movaps xmmword [edi], xmm7
movaps xmm7, xmm5
addps xmm5, xmm3
subps xmm3, xmm7
movaps xmm7, xmm6
subps xmm6, xmm1
movaps xmmword [edi + 0x10], xmm5
movaps xmm5, xmm4
addps xmm4, xmm0
addps xmm7, xmm1
subps xmm5, xmm0
movaps xmmword [edi + ecx*2], xmm2
movaps xmmword [edi + ecx*2 + 0x10], xmm3
movaps xmmword [ecx + edi], xmm6
movaps xmmword [ecx + edi + 0x10], xmm4
movaps xmmword [eax + edi], xmm7
movaps xmmword [eax + edi + 0x10], xmm5
movaps xmm0, xmmword [edi + ecx*2 + 0x20]
movaps xmm1, xmmword [ebx + 0x60]
mulps xmm0, xmm1
movaps xmm2, xmmword [edi + ecx*2 + 0x30]
mulps xmm1, xmm2
movaps xmm3, xmmword [ebx + 0x70]
mulps xmm2, xmm3
movaps xmm4, xmmword [eax + edi + 0x20]
mulps xmm3, xmmword [edi + ecx*2 + 0x20]
movaps xmm5, xmmword [ebx + 0xa0]
mulps xmm4, xmm5
movaps xmm6, xmmword [eax + edi + 0x30]
mulps xmm5, xmm6
movaps xmm7, xmmword [ebx + 0xb0]
mulps xmm6, xmm7
addps xmm0, xmm2
mulps xmm7, xmmword [eax + edi + 0x20]
subps xmm1, xmm3
movaps xmm2, xmmword [ecx + edi + 0x20]
movaps xmm3, xmmword [ebx + 0x80]
mulps xmm2, xmm3
addps xmm4, xmm6
movaps xmm6, xmmword [ecx + edi + 0x30]
mulps xmm3, xmm6
subps xmm5, xmm7
movaps xmm7, xmmword [ebx + 0x90]
mulps xmm6, xmm7
mulps xmm7, xmmword [ecx + edi + 0x20]
add ebx, 0xc0
addps xmm2, xmm6
movaps xmm6, xmm4
addps xmm4, xmm0
subps xmm0, xmm6
subps xmm3, xmm7
movaps xmm7, xmm5
addps xmm5, xmm1
subps xmm1, xmm7
movaps xmm6, xmmword [edi + 0x20]
subps xmm6, xmm2
addps xmm2, xmmword [edi + 0x20]
movaps xmm7, xmm4
addps xmm7, xmm2
subps xmm2, xmm4
movaps xmm4, xmmword [edi + 0x30]
subps xmm4, xmm3
addps xmm3, xmmword [edi + 0x30]
movaps xmmword [edi + 0x20], xmm7
movaps xmm7, xmm5
addps xmm5, xmm3
subps xmm3, xmm7
movaps xmm7, xmm6
subps xmm6, xmm1
movaps xmmword [edi + 0x30], xmm5
movaps xmm5, xmm4
addps xmm4, xmm0
addps xmm7, xmm1
subps xmm5, xmm0
movaps xmmword [edi + ecx*2 + 0x20], xmm2
movaps xmmword [edi + ecx*2 + 0x30], xmm3
movaps xmmword [ecx + edi + 0x20], xmm6
movaps xmmword [ecx + edi + 0x30], xmm4
movaps xmmword [eax + edi + 0x20], xmm7
movaps xmmword [eax + edi + 0x30], xmm5
add edi, 0x40
sub esi, 8
jg 0x10318e26
add edi, eax
dec edx
jg 0x10318e1e
mov dword [esp + 0x5c], ebx
jmp 0x1031913b
lea ebx, [ecx + esi]
mov dword [esp + 0xc], ebx
mov ebx, dword [esp + 0x5c]
movaps xmm0, xmmword [esi + ecx*2]
movaps xmm1, xmmword [ebx]
mulps xmm0, xmm1
movaps xmm2, xmmword [esi + ecx*2 + 0x10]
mulps xmm1, xmm2
movaps xmm3, xmmword [ebx + 0x10]
mulps xmm2, xmm3
movaps xmm4, xmmword [eax + esi]
mulps xmm3, xmmword [esi + ecx*2]
movaps xmm5, xmmword [ebx + 0x40]
mulps xmm4, xmm5
movaps xmm6, xmmword [eax + esi + 0x10]
mulps xmm5, xmm6
movaps xmm7, xmmword [ebx + 0x50]
mulps xmm6, xmm7
addps xmm0, xmm2
mulps xmm7, xmmword [eax + esi]
subps xmm1, xmm3
movaps xmm2, xmmword [ecx + esi]
movaps xmm3, xmmword [ebx + 0x20]
mulps xmm2, xmm3
addps xmm4, xmm6
movaps xmm6, xmmword [ecx + esi + 0x10]
mulps xmm3, xmm6
subps xmm5, xmm7
movaps xmm7, xmmword [ebx + 0x30]
mulps xmm6, xmm7
mulps xmm7, xmmword [ecx + esi]
add ebx, 0x60
addps xmm2, xmm6
movaps xmm6, xmm4
addps xmm4, xmm0
subps xmm0, xmm6
subps xmm3, xmm7
movaps xmm7, xmm5
addps xmm5, xmm1
subps xmm1, xmm7
movaps xmm6, xmmword [esi]
subps xmm6, xmm2
addps xmm2, xmmword [esi]
movaps xmm7, xmm4
addps xmm7, xmm2
subps xmm2, xmm4
movaps xmm4, xmmword [esi + 0x10]
subps xmm4, xmm3
addps xmm3, xmmword [esi + 0x10]
movlps qword [edi], xmm7
movhps qword [edi + 8], xmm7
add esi, 0x20
movaps xmm7, xmm5
addps xmm5, xmm3
subps xmm3, xmm7
movaps xmm7, xmm6
subps xmm6, xmm1
movlps qword [edi + 0x10], xmm5
movhps qword [edi + 0x18], xmm5
movaps xmm5, xmm4
addps xmm4, xmm0
addps xmm7, xmm1
subps xmm5, xmm0
movlps qword [edi + ecx*2], xmm2
movhps qword [edi + ecx*2 + 8], xmm2
movlps qword [edi + ecx*2 + 0x10], xmm3
movhps qword [edi + ecx*2 + 0x18], xmm3
movlps qword [ecx + edi], xmm6
movhps qword [ecx + edi + 8], xmm6
movlps qword [ecx + edi + 0x10], xmm4
movhps qword [ecx + edi + 0x18], xmm4
movlps qword [eax + edi], xmm7
movhps qword [eax + edi + 8], xmm7
movlps qword [eax + edi + 0x10], xmm5
movhps qword [eax + edi + 0x18], xmm5
add edi, 0x20
cmp esi, dword [esp + 0xc]
jne 0x1031901c
add esi, eax
add edi, eax
dec edx
jg 0x10319011
mov dword [esp + 0x5c], ebx
mov ecx, dword [esp + 4]
shl ecx, 2
mov edx, dword [esp + 8]
shr edx, 2
cmp edx, 2
jge 0x10318bca
mov ebx, dword [esp + 0x10]
cmp ebx, 0
je 0x103191a8
cmp edx, 1
je 0x10318bca
dec ebx
mov dword [esp + 0x10], ebx
je 0x10319190
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x5c], ebx
mov ebx, dword [esp + 0x64]
add ebx, 0x4000
mov dword [esp + 0x64], ebx
mov ecx, 4
mov edx, 0x80
jmp 0x10318bca
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x64], ebx
mov edx, dword [esp + 0x58]
shr edx, 0xc
cmp edx, 1
jg 0x10318bca
cmp edx, 0
je 0x10319427
mov esi, dword [esp + 0x64]
mov edi, dword [esp + 0x54]
mov edx, ecx
shl ecx, 3
lea eax, [ecx + ecx*2]
mov ebx, dword [esp + 0x5c]
test edi, 0xf
jne 0x103192e9
movaps xmm0, xmmword [esi + ecx*2]
movaps xmm1, xmmword [ebx]
mulps xmm0, xmm1
movaps xmm2, xmmword [esi + ecx*2 + 0x10]
mulps xmm1, xmm2
movaps xmm3, xmmword [ebx + 0x10]
movaps xmm4, xmmword [eax + esi]
mulps xmm2, xmm3
mulps xmm3, xmmword [esi + ecx*2]
movaps xmm5, xmmword [ebx + 0x40]
mulps xmm4, xmm5
movaps xmm6, xmmword [eax + esi + 0x10]
mulps xmm5, xmm6
movaps xmm7, xmmword [ebx + 0x50]
mulps xmm6, xmm7
addps xmm0, xmm2
mulps xmm7, xmmword [eax + esi]
subps xmm1, xmm3
movaps xmm2, xmmword [ecx + esi]
movaps xmm3, xmmword [ebx + 0x20]
mulps xmm2, xmm3
addps xmm4, xmm6
movaps xmm6, xmmword [ecx + esi + 0x10]
mulps xmm3, xmm6
subps xmm5, xmm7
movaps xmm7, xmmword [ebx + 0x30]
mulps xmm6, xmm7
mulps xmm7, xmmword [ecx + esi]
addps xmm2, xmm6
add ebx, 0x60
movaps xmm6, xmm4
addps xmm4, xmm0
subps xmm0, xmm6
subps xmm3, xmm7
movaps xmm7, xmm5
addps xmm5, xmm1
subps xmm1, xmm7
movaps xmm7, xmmword [esi]
subps xmm7, xmm2
addps xmm2, xmmword [esi]
movaps xmm6, xmm4
addps xmm6, xmm2
subps xmm2, xmm4
movaps xmm4, xmmword [esi + 0x10]
subps xmm4, xmm3
addps xmm3, xmmword [esi + 0x10]
movaps xmmword [edi], xmm7
add esi, 0x20
movaps xmm7, xmm5
addps xmm5, xmm3
subps xmm3, xmm7
movaps xmm7, xmm6
unpckhps xmm6, xmm5
movaps xmmword [edi + 0x10], xmm6
movaps xmm6, xmmword [edi]
unpcklps xmm7, xmm5
movaps xmmword [edi], xmm7
movaps xmm5, xmm4
addps xmm4, xmm0
movaps xmm7, xmm6
subps xmm6, xmm1
subps xmm5, xmm0
addps xmm7, xmm1
movaps xmm0, xmm2
unpcklps xmm2, xmm3
movaps xmmword [edi + ecx*2], xmm2
unpckhps xmm0, xmm3
movaps xmmword [edi + ecx*2 + 0x10], xmm0
movaps xmm0, xmm6
unpcklps xmm6, xmm4
movaps xmmword [ecx + edi], xmm6
unpckhps xmm0, xmm4
movaps xmmword [ecx + edi + 0x10], xmm0
movaps xmm0, xmm7
unpcklps xmm7, xmm5
movaps xmmword [eax + edi], xmm7
unpckhps xmm0, xmm5
movaps xmmword [eax + edi + 0x10], xmm0
add edi, 0x20
sub edx, 4
jg 0x103191d1
jmp 0x10319422
movaps xmm0, xmmword [esi + ecx*2]
movaps xmm1, xmmword [ebx]
mulps xmm0, xmm1
movaps xmm2, xmmword [esi + ecx*2 + 0x10]
mulps xmm1, xmm2
movaps xmm3, xmmword [ebx + 0x10]
movaps xmm4, xmmword [eax + esi]
mulps xmm2, xmm3
mulps xmm3, xmmword [esi + ecx*2]
movaps xmm5, xmmword [ebx + 0x40]
mulps xmm4, xmm5
movaps xmm6, xmmword [eax + esi + 0x10]
mulps xmm5, xmm6
movaps xmm7, xmmword [ebx + 0x50]
mulps xmm6, xmm7
addps xmm0, xmm2
mulps xmm7, xmmword [eax + esi]
subps xmm1, xmm3
movaps xmm2, xmmword [ecx + esi]
movaps xmm3, xmmword [ebx + 0x20]
mulps xmm2, xmm3
addps xmm4, xmm6
movaps xmm6, xmmword [ecx + esi + 0x10]
mulps xmm3, xmm6
subps xmm5, xmm7
movaps xmm7, xmmword [ebx + 0x30]
mulps xmm6, xmm7
mulps xmm7, xmmword [ecx + esi]
addps xmm2, xmm6
add ebx, 0x60
movaps xmm6, xmm4
addps xmm4, xmm0
subps xmm0, xmm6
subps xmm3, xmm7
movaps xmm7, xmm5
addps xmm5, xmm1
subps xmm1, xmm7
movaps xmm7, xmmword [esi]
subps xmm7, xmm2
addps xmm2, xmmword [esi]
movaps xmm6, xmm4
addps xmm6, xmm2
subps xmm2, xmm4
movaps xmm4, xmmword [esi + 0x10]
subps xmm4, xmm3
addps xmm3, xmmword [esi + 0x10]
movaps xmmword [esi], xmm7
movaps xmm7, xmm5
addps xmm5, xmm3
subps xmm3, xmm7
movaps xmm7, xmm6
unpcklps xmm6, xmm5
movlps qword [edi], xmm6
movhps qword [edi + 8], xmm6
movaps xmm6, xmmword [esi]
unpckhps xmm7, xmm5
movlps qword [edi + 0x10], xmm7
movhps qword [edi + 0x18], xmm7
add esi, 0x20
movaps xmm5, xmm4
addps xmm4, xmm0
movaps xmm7, xmm6
subps xmm6, xmm1
subps xmm5, xmm0
addps xmm7, xmm1
movaps xmm0, xmm2
unpcklps xmm2, xmm3
movlps qword [edi + ecx*2], xmm2
movhps qword [edi + ecx*2 + 8], xmm2
unpckhps xmm0, xmm3
movlps qword [edi + ecx*2 + 0x10], xmm0
movhps qword [edi + ecx*2 + 0x18], xmm0
movaps xmm0, xmm6
unpcklps xmm6, xmm4
movlps qword [ecx + edi], xmm6
movhps qword [ecx + edi + 8], xmm6
unpckhps xmm0, xmm4
movlps qword [ecx + edi + 0x10], xmm0
movhps qword [ecx + edi + 0x18], xmm0
movaps xmm0, xmm7
unpcklps xmm7, xmm5
movlps qword [eax + edi], xmm7
movhps qword [eax + edi + 8], xmm7
unpckhps xmm0, xmm5
movlps qword [eax + edi + 0x10], xmm0
movhps qword [eax + edi + 0x18], xmm0
add edi, 0x20
sub edx, 4
jg 0x103192e9
jmp 0x103196f2
mov esi, dword [esp + 0x64]
mov edi, dword [esp + 0x54]
mov edx, ecx
shl ecx, 3
mov ebx, dword [esp + 0x5c]
test edi, 0xf
jne 0x10319520
lea esp, [esp]
jmp 0x10319450
movaps xmm0, xmmword [ecx + esi]
movaps xmm1, xmmword [ebx]
mulps xmm0, xmm1
movaps xmm2, xmmword [ecx + esi + 0x10]
mulps xmm1, xmm2
movaps xmm3, xmmword [ebx + 0x10]
mulps xmm2, xmm3
movaps xmm4, xmmword [ecx + esi + 0x20]
mulps xmm3, xmmword [ecx + esi]
movaps xmm5, xmmword [ebx + 0x20]
mulps xmm4, xmm5
movaps xmm6, xmmword [ecx + esi + 0x30]
mulps xmm5, xmm6
movaps xmm7, xmmword [ebx + 0x30]
mulps xmm6, xmm7
addps xmm0, xmm2
mulps xmm7, xmmword [ecx + esi + 0x20]
subps xmm1, xmm3
add ebx, 0x40
movaps xmm2, xmmword [esi]
movaps xmm3, xmmword [esi + 0x10]
addps xmm4, xmm6
subps xmm2, xmm0
addps xmm0, xmmword [esi]
subps xmm3, xmm1
addps xmm1, xmmword [esi + 0x10]
subps xmm5, xmm7
movaps xmm7, xmmword [esi + 0x20]
subps xmm7, xmm4
addps xmm4, xmmword [esi + 0x20]
movaps xmm6, xmm0
unpcklps xmm0, xmm1
movaps xmmword [edi], xmm0
unpckhps xmm6, xmm1
movaps xmmword [edi + 0x10], xmm6
movaps xmm1, xmmword [esi + 0x30]
subps xmm1, xmm5
addps xmm5, xmmword [esi + 0x30]
add esi, 0x40
movaps xmm6, xmm2
unpcklps xmm2, xmm3
movaps xmmword [ecx + edi], xmm2
unpckhps xmm6, xmm3
movaps xmmword [ecx + edi + 0x10], xmm6
movaps xmm6, xmm4
unpcklps xmm4, xmm5
movaps xmmword [edi + 0x20], xmm4
unpckhps xmm6, xmm5
movaps xmmword [edi + 0x30], xmm6
movaps xmm6, xmm7
unpcklps xmm7, xmm1
movaps xmmword [ecx + edi + 0x20], xmm7
unpckhps xmm6, xmm1
movaps xmmword [ecx + edi + 0x30], xmm6
add edi, 0x40
sub edx, 8
jg 0x10319450
jmp 0x1031960f
movaps xmm0, xmmword [ecx + esi]
movaps xmm1, xmmword [ebx]
mulps xmm0, xmm1
movaps xmm2, xmmword [ecx + esi + 0x10]
mulps xmm1, xmm2
movaps xmm3, xmmword [ebx + 0x10]
mulps xmm2, xmm3
movaps xmm4, xmmword [ecx + esi + 0x20]
mulps xmm3, xmmword [ecx + esi]
movaps xmm5, xmmword [ebx + 0x20]
mulps xmm4, xmm5
movaps xmm6, xmmword [ecx + esi + 0x30]
mulps xmm5, xmm6
movaps xmm7, xmmword [ebx + 0x30]
mulps xmm6, xmm7
addps xmm0, xmm2
mulps xmm7, xmmword [ecx + esi + 0x20]
subps xmm1, xmm3
add ebx, 0x40
movaps xmm2, xmmword [esi]
movaps xmm3, xmmword [esi + 0x10]
addps xmm4, xmm6
subps xmm2, xmm0
addps xmm0, xmmword [esi]
subps xmm3, xmm1
addps xmm1, xmmword [esi + 0x10]
subps xmm5, xmm7
movaps xmm7, xmmword [esi + 0x20]
subps xmm7, xmm4
addps xmm4, xmmword [esi + 0x20]
movaps xmm6, xmm0
unpcklps xmm0, xmm1
movlps qword [edi], xmm0
movhps qword [edi + 8], xmm0
unpckhps xmm6, xmm1
movlps qword [edi + 0x10], xmm6
movhps qword [edi + 0x18], xmm6
movaps xmm1, xmmword [esi + 0x30]
subps xmm1, xmm5
addps xmm5, xmmword [esi + 0x30]
add esi, 0x40
movaps xmm6, xmm2
unpcklps xmm2, xmm3
movlps qword [ecx + edi], xmm2
movhps qword [ecx + edi + 8], xmm2
unpckhps xmm6, xmm3
movlps qword [ecx + edi + 0x10], xmm6
movhps qword [ecx + edi + 0x18], xmm6
movaps xmm6, xmm4
unpcklps xmm4, xmm5
movlps qword [edi + 0x20], xmm4
movhps qword [edi + 0x28], xmm4
unpckhps xmm6, xmm5
movlps qword [edi + 0x30], xmm6
movhps qword [edi + 0x38], xmm6
movaps xmm6, xmm7
unpcklps xmm7, xmm1
movlps qword [ecx + edi + 0x20], xmm7
movhps qword [ecx + edi + 0x28], xmm7
unpckhps xmm6, xmm1
movlps qword [ecx + edi + 0x30], xmm6
movhps qword [ecx + edi + 0x38], xmm6
add edi, 0x40
sub edx, 8
jg 0x10319520
jmp 0x103196f2
mov esi, dword [esp + 0x50]
mov edi, dword [esp + 0x54]
movsd xmm0, qword [esi]
movhps xmm0, qword [esi + 0x10]
movsd xmm1, qword [esi + 0x20]
movhps xmm1, qword [esi + 0x30]
movsd xmm3, qword [esi + 8]
movhps xmm3, qword [esi + 0x18]
movsd xmm4, qword [esi + 0x28]
movhps xmm4, qword [esi + 0x38]
movaps xmm5, xmm3
subps xmm3, xmm4
xorps xmm3, xmmword [eax + 0x30]
addps xmm4, xmm5
movaps xmm5, xmm4
shufps xmm4, xmm3, 0xbe
movlhps xmm5, xmm3
movaps xmm3, xmm4
addps xmm4, xmm5
subps xmm5, xmm3
movaps xmm3, xmm4
shufps xmm4, xmm5, 0x88
shufps xmm3, xmm5, 0xdd
movaps xmm2, xmm0
subps xmm0, xmm1
xorps xmm0, xmmword [eax + 0x30]
addps xmm1, xmm2
movaps xmm2, xmm1
shufps xmm1, xmm0, 0xbe
movlhps xmm2, xmm0
movaps xmm0, xmm1
addps xmm1, xmm2
subps xmm2, xmm0
movaps xmm0, xmm1
shufps xmm1, xmm2, 0x88
shufps xmm0, xmm2, 0xdd
movaps xmm2, xmmword [eax]
mulps xmm2, xmm4
movaps xmm5, xmmword [eax + 0x10]
mulps xmm5, xmm3
mulps xmm4, xmmword [eax + 0x10]
mulps xmm3, xmmword [eax]
addps xmm2, xmm5
subps xmm3, xmm4
movaps xmm4, xmm1
addps xmm1, xmm2
subps xmm4, xmm2
movaps xmm5, xmm0
addps xmm0, xmm3
subps xmm5, xmm3
movaps xmm2, xmm1
unpcklps xmm1, xmm0
movlps qword [edi], xmm1
movhps qword [edi + 8], xmm1
unpckhps xmm2, xmm0
movlps qword [edi + 0x10], xmm2
movhps qword [edi + 0x18], xmm2
movaps xmm3, xmm4
unpcklps xmm4, xmm5
movlps qword [edi + 0x20], xmm4
movhps qword [edi + 0x28], xmm4
unpckhps xmm3, xmm5
movlps qword [edi + 0x30], xmm3
movhps qword [edi + 0x38], xmm3
add esp, 0x3c
pop ebp
pop edi
pop esi
pop ebx
ret