Function at 0x411580
Capabilities:
Encode data using xor

Disassembly:
push edi
push esi
push ebp
push ebx
sub esp, 0x17c
mov dword [esp + 0xc], ecx
mov ebx, dword [eax]
mov ebp, dword [ebx + 0x30]
mov eax, dword [eax + 8]
mov dword [esp + 0x10], edx
mov edx, ebp
mov dword [esp + 0x14], ebp
mov dword [esp + 0x1c], eax
sar edx, 1
mov edi, ebp
sar edi, 2
mov dword [esp + 0x18], edi
sar ebp, 3
lea eax, [eax + edx*4]
lea ecx, [ecx + edx*4]
lea esi, [edi*4 - 0x20]
add esi, ecx
mov dword [esp + 0x40], esi
mov esi, dword [ebx + 0x10]
mov dword [esp + 0x38], esi
lea esi, [edx - 2]
test ebp, ebp
mov dword [esp + 0x24], esi
jle 0x411dc5
mov dword [esp + 0x154], ecx
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x20], edx
xor esi, esi
mov dword [esp + 0x150], ebx
mov ebx, dword [esp + 0x40]
xor edi, edi
mov dword [esp + 8], edi
mov edx, edi
mov edi, dword [esp + 0x24]
movaps xmm0, xmmword [ebx + 0x10]
movaps xmm1, xmmword [ebx]
shufps xmm0, xmm0, 0x1b
addps xmm0, xmmword [edx + ebx + 0x20]
movaps xmm2, xmm0
shufps xmm1, xmm1, 0x1b
addps xmm1, xmmword [edx + ebx + 0x30]
movaps xmm3, xmm1
shufps xmm2, xmm0, 0xf
mulps xmm2, xmmword [ecx]
shufps xmm0, xmm0, 0xa5
mulps xmm0, xmmword [ecx + 0x10]
shufps xmm3, xmm1, 0xf
mulps xmm3, xmmword [ecx + 0x20]
shufps xmm1, xmm1, 0xa5
mulps xmm1, xmmword [ecx + 0x30]
subps xmm2, xmm0
movlps qword [eax + esi*4], xmm2
movhps qword [eax + edi*4], xmm2
subps xmm3, xmm1
movlps qword [eax + esi*4 + 8], xmm3
movhps qword [eax + edi*4 - 8], xmm3
add ebx, 0xffffffe0
add ecx, 0x40
add edx, 0x40
add esi, 4
add edi, 0xfffffffc
cmp esi, ebp
jl 0x411603
mov edx, dword [esp + 0x20]
mov ebx, dword [esp + 0x150]
mov dword [esp + 0x24], edi
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x154]
mov ebp, dword [esp + 0x18]
add ecx, 0xffffffe0
cmp esi, ebp
jge 0x411727
mov ebp, dword [esp + 0x24]
mov edi, dword [esp + 0x18]
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0x38]
mov dword [esp + 0x150], ebx
mov ebx, dword [esp + 0xc]
movaps xmm0, xmmword [ecx + 0x10]
movaps xmm1, xmmword [ecx]
movaps xmm2, xmmword [ebx]
movaps xmm3, xmmword [ebx + 0x10]
shufps xmm0, xmm0, 0x1b
shufps xmm1, xmm1, 0x1b
subps xmm2, xmm0
movaps xmm4, xmm2
subps xmm3, xmm1
movaps xmm5, xmm3
shufps xmm4, xmm2, 0xf
mulps xmm4, xmmword [edx]
shufps xmm2, xmm2, 0xa5
mulps xmm2, xmmword [edx + 0x10]
addps xmm4, xmm2
shufps xmm5, xmm3, 0xf
mulps xmm5, xmmword [edx + 0x20]
shufps xmm3, xmm3, 0xa5
mulps xmm3, xmmword [edx + 0x30]
movlps qword [eax + esi*4], xmm4
movhps qword [eax + ebp*4], xmm4
addps xmm5, xmm3
movlps qword [eax + esi*4 + 8], xmm5
movhps qword [eax + ebp*4 - 8], xmm5
add ebx, 0x20
add ecx, 0xffffffe0
add edx, 0x40
add esi, 4
add ebp, 0xfffffffc
cmp esi, edi
jl 0x4116b0
mov edx, dword [esp + 0x20]
mov ebx, dword [esp + 0x150]
mov ebp, dword [ebx + 0x14]
mov esi, dword [ebx + 0x34]
lea ecx, [esi - 6]
test ecx, ecx
jle 0x4117ac
mov edi, dword [esp + 0x14]
lea ecx, [eax + edx*4]
add ecx, 0xffffffe0
and edi, 0xfffffffc
lea edi, [edi + eax - 0x20]
movaps xmm2, xmmword [ecx + 0x10]
movaps xmm3, xmmword [ecx]
movaps xmm0, xmmword [edi + 0x10]
movaps xmm1, xmmword [edi]
movaps xmm4, xmm2
movaps xmm5, xmm3
addps xmm2, xmm0
movaps xmmword [ecx + 0x10], xmm2
addps xmm3, xmm1
movaps xmmword [ecx], xmm3
subps xmm4, xmm0
movaps xmm6, xmm4
subps xmm5, xmm1
movaps xmm7, xmm5
shufps xmm6, xmm4, 0xf5
mulps xmm6, xmmword [ebp + 0x20]
shufps xmm7, xmm5, 0xf5
mulps xmm7, xmmword [ebp + 0x30]
shufps xmm4, xmm4, 0xa0
mulps xmm4, xmmword [ebp]
addps xmm6, xmm4
shufps xmm5, xmm5, 0xa0
mulps xmm5, xmmword [ebp + 0x10]
movaps xmmword [edi + 0x10], xmm6
addps xmm7, xmm5
movaps xmmword [edi], xmm7
add ecx, 0xffffffe0
add edi, 0xffffffe0
add ebp, 0x40
cmp edi, eax
jae 0x411745
add esi, 0xfffffff9
test esi, esi
jle 0x42ff3b
movaps xmm0, xmmword [0x438b50]
mov dword [esp + 0x2c], esi
mov dword [esp + 0x34], eax
mov ecx, 1
mov dword [esp + 0x20], edx
mov dword [esp + 0x150], ebx
mov edx, 1
shl edx, cl
test edx, edx
jle 0x4118e8
mov dword [esp + 0x3c], edx
xor eax, eax
mov dword [esp + 0x30], eax
mov ebx, 4
mov eax, dword [esp + 0x20]
sar eax, cl
mov dword [esp + 0x40], eax
shl ebx, cl
mov dword [esp + 0x28], ecx
mov edi, eax
shr edi, 1
mov dword [esp + 0x38], edi
mov esi, edi
mov edi, dword [esp + 0x30]
shl esi, 2
xor ebp, ebp
mov dword [esp + 0x24], esi
mov esi, dword [esp + 0x34]
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x38]
lea esi, [esi + ebp*4]
lea ecx, [esi + ecx*4]
add ecx, 0xffffffe0
lea edx, [esi + eax*4]
add edx, 0xffffffe0
cmp ebx, 8
jne 0x411847
mov eax, dword [esp + 0x150]
mov eax, dword [eax + 0x18]
jmp 0x41185a
cmp ebx, 0x10
jne 0x42fde6
mov eax, dword [esp + 0x150]
mov eax, dword [eax + 0x1c]
prefetchnta byte [eax]
mov dword [esp + 0x30], edi
movaps xmm5, xmmword [ecx]
movaps xmm3, xmmword [edx]
movaps xmm6, xmmword [ecx + 0x10]
movaps xmm4, xmmword [edx + 0x10]
movaps xmm1, xmm5
movaps xmm2, xmm6
addps xmm5, xmm3
movaps xmmword [ecx], xmm5
addps xmm6, xmm4
movaps xmmword [ecx + 0x10], xmm6
prefetchnta byte [eax + 0x40]
lea edi, [eax + 0x40]
subps xmm1, xmm3
movaps xmm7, xmm1
subps xmm2, xmm4
movaps xmm3, xmm2
shufps xmm7, xmm1, 0xf5
mulps xmm7, xmmword [eax]
shufps xmm1, xmm1, 0xa0
mulps xmm1, xmmword [eax + 0x10]
addps xmm7, xmm1
shufps xmm3, xmm2, 0xf5
mulps xmm3, xmmword [eax + 0x20]
shufps xmm2, xmm2, 0xa0
mulps xmm2, xmmword [eax + 0x30]
movaps xmmword [edx], xmm7
addps xmm3, xmm2
movaps xmmword [edx + 0x10], xmm3
mov eax, edi
add ecx, 0xffffffe0
add edx, 0xffffffe0
cmp edx, esi
jae 0x411861
mov edi, dword [esp + 0x30]
add ebp, dword [esp + 0x40]
mov eax, dword [esp + 0x3c]
add edi, 1
cmp edi, eax
jl 0x41181b
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x2c]
add ecx, 1
add eax, 0xffffffff
mov dword [esp + 0x2c], eax
test eax, eax
jg 0x4117d6
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x20]
mov ebx, dword [esp + 0x150]
test edx, edx
jle 0x411c50
movaps xmm6, xmmword [0x430920]
movaps xmm5, xmmword [0x430940]
movaps xmm1, xmmword [0x430960]
movaps xmm4, xmmword [0x430970]
movaps xmm3, xmmword [0x430980]
movaps xmm2, xmmword [0x430990]
movaps xmm7, xmmword [0x438b90]
movaps xmmword [esp + 0xb0], xmm6
movaps xmm6, xmmword [0x430930]
movaps xmmword [esp + 0xc0], xmm5
movaps xmm5, xmmword [0x430950]
movaps xmmword [esp + 0xd0], xmm1
movaps xmm1, xmmword [0x438b80]
movaps xmmword [esp + 0xa0], xmm7
movaps xmm7, xmmword [0x438ba0]
movaps xmmword [esp + 0x160], xmm0
movaps xmmword [esp + 0x80], xmm1
movaps xmmword [esp + 0x90], xmm7
movaps xmm7, xmmword [0x438bb0]
movaps xmmword [esp], xmm2
movaps xmmword [esp + 0x30], xmm3
movaps xmmword [esp + 0x70], xmm7
movaps xmmword [esp + 0x40], xmm4
movaps xmmword [esp + 0x60], xmm5
movaps xmmword [esp + 0x50], xmm6
lea ecx, [eax + edx*4]
movaps xmm6, xmmword [eax + 0x40]
movaps xmm4, xmmword [eax + 0x50]
movaps xmm3, xmmword [eax + 0x60]
movaps xmm5, xmmword [eax]
movaps xmm2, xmmword [eax + 0x10]
movaps xmm1, xmmword [eax + 0x20]
movaps xmm7, xmmword [eax + 0x70]
movaps xmm0, xmm6
addps xmm6, xmm5
movaps xmmword [esp + 0x110], xmm6
subps xmm0, xmm5
movaps xmmword [esp + 0xe0], xmm0
movaps xmm5, xmm0
movaps xmm0, xmm4
addps xmm4, xmm2
movaps xmmword [esp + 0x120], xmm4
movaps xmm4, xmm5
subps xmm0, xmm2
movaps xmmword [esp + 0xf0], xmm0
movaps xmm6, xmm0
movaps xmm0, xmm3
addps xmm3, xmm1
movaps xmmword [esp + 0x130], xmm3
movaps xmm3, xmm6
subps xmm0, xmm1
movaps xmmword [esp + 0x100], xmm0
movaps xmm0, xmm7
addps xmm7, xmmword [eax + 0x30]
subps xmm0, xmmword [eax + 0x30]
movaps xmmword [esp + 0x140], xmm7
movaps xmm2, xmm0
movaps xmm7, xmmword [esp + 0x100]
movaps xmm1, xmm7
shufps xmm4, xmm5, 0xf5
mulps xmm4, xmmword [esp + 0xb0]
shufps xmm5, xmm5, 0xa0
mulps xmm5, xmmword [esp + 0x50]
addps xmm4, xmm5
shufps xmm3, xmm6, 0xb5
mulps xmm3, xmmword [esp + 0xc0]
shufps xmm6, xmm6, 0xb0
mulps xmm6, xmmword [esp + 0x60]
addps xmm3, xmm6
shufps xmm1, xmm7, 0xa4
mulps xmm1, xmmword [esp + 0xd0]
shufps xmm7, xmm7, 0xf1
mulps xmm7, xmmword [esp + 0x40]
addps xmm1, xmm7
movaps xmm7, xmmword [0x438b70]
shufps xmm2, xmm0, 0xe0
mulps xmm2, xmmword [esp + 0x30]
shufps xmm0, xmm0, 0xe5
mulps xmm0, xmmword [esp]
addps xmm2, xmm0
movaps xmm0, xmm4
movaps xmm5, xmm2
addps xmm2, xmm3
subps xmm0, xmm1
movaps xmm6, xmm0
addps xmm1, xmm4
subps xmm5, xmm3
movaps xmm4, xmm5
shufps xmm6, xmm0, 0xb5
mulps xmm6, xmmword [esp + 0x80]
shufps xmm0, xmm0, 0xb0
mulps xmm0, xmmword [esp + 0xa0]
addps xmm6, xmm0
movaps xmm0, xmmword [0x438b60]
shufps xmm4, xmm5, 0xe0
mulps xmm4, xmmword [esp + 0x90]
shufps xmm5, xmm5, 0xe5
mulps xmm5, xmmword [esp + 0x70]
addps xmm4, xmm5
movaps xmm3, xmm4
addps xmm4, xmm6
subps xmm3, xmm6
movaps xmm5, xmm3
movaps xmm6, xmm4
shufps xmm5, xmm3, 0xee
shufps xmm3, xmm3, 0x11
shufps xmm6, xmm4, 0xee
movlhps xmm4, xmm4
xorps xmm3, xmm0
addps xmm5, xmm3
movaps xmmword [eax], xmm5
movaps xmm3, xmm2
movaps xmm5, xmmword [esp + 0x130]
addps xmm2, xmm1
xorps xmm4, xmm7
addps xmm6, xmm4
movaps xmmword [eax + 0x10], xmm6
movaps xmm6, xmmword [esp + 0x120]
movaps xmm4, xmm2
subps xmm3, xmm1
movaps xmm1, xmm3
shufps xmm4, xmm2, 0xee
movlhps xmm2, xmm2
shufps xmm1, xmm3, 0xee
shufps xmm3, xmm3, 0x11
xorps xmm3, xmm0
addps xmm1, xmm3
movaps xmm3, xmmword [esp + 0x110]
movaps xmmword [eax + 0x20], xmm1
movaps xmm1, xmm3
xorps xmm2, xmm7
addps xmm4, xmm2
movaps xmmword [eax + 0x30], xmm4
movaps xmm4, xmmword [esp + 0x140]
movaps xmm2, xmm4
addps xmm4, xmm6
subps xmm1, xmm5
addps xmm5, xmm3
subps xmm2, xmm6
movaps xmm6, xmm1
movaps xmm3, xmm2
shufps xmm6, xmm1, 0xb5
mulps xmm6, xmmword [esp + 0x80]
shufps xmm1, xmm1, 0xb0
mulps xmm1, xmmword [esp + 0xa0]
addps xmm6, xmm1
shufps xmm3, xmm2, 0xe0
mulps xmm3, xmmword [esp + 0x90]
shufps xmm2, xmm2, 0xe5
mulps xmm2, xmmword [esp + 0x70]
addps xmm3, xmm2
movaps xmm1, xmm3
addps xmm3, xmm6
subps xmm1, xmm6
movaps xmm2, xmm1
movaps xmm6, xmm3
shufps xmm2, xmm1, 0xee
shufps xmm1, xmm1, 0x11
shufps xmm6, xmm3, 0xee
movlhps xmm3, xmm3
xorps xmm1, xmm0
addps xmm2, xmm1
movaps xmmword [eax + 0x40], xmm2
movaps xmm1, xmm4
addps xmm4, xmm5
xorps xmm3, xmm7
addps xmm6, xmm3
movaps xmmword [eax + 0x50], xmm6
movaps xmm3, xmm4
subps xmm1, xmm5
movaps xmm2, xmm1
shufps xmm3, xmm4, 0xee
movlhps xmm4, xmm4
shufps xmm2, xmm1, 0xee
shufps xmm1, xmm1, 0x11
xorps xmm1, xmm0
addps xmm2, xmm1
movaps xmmword [eax + 0x60], xmm2
xorps xmm4, xmm7
addps xmm3, xmm4
movaps xmmword [eax + 0x70], xmm3
add eax, 0x80
cmp eax, ecx
jb 0x4119c1
movaps xmm0, xmmword [esp + 0x160]
movaps xmm1, xmmword [0x438bc0]
mov ebp, dword [esp + 0x1c]
mov eax, dword [ebx + 0x30]
mov esi, dword [ebx + 0x28]
movaps xmmword [esp + 0x160], xmm0
mov dword [esp + 0x20], edx
shr eax, 1
lea edi, [ebp + eax*4]
mov eax, dword [ebx + 0xc]
mov dword [esp + 0x154], edi
mov ecx, edi
mov dword [esp + 0x150], ebx
mov edi, dword [esi]
mov edx, dword [esi + 4]
mov ebx, dword [esi + 8]
mov dword [esp + 0x15c], esi
mov esi, dword [esi + 0xc]
add ecx, 0xfffffff0
mov dword [esp + 0x158], ecx
mov ecx, dword [esp + 0x154]
movups xmm3, xmmword [ecx + edi*4]
movups xmm1, xmmword [ecx + edx*4]
movups xmm6, xmmword [ecx + ebx*4]
movups xmm7, xmmword [ecx + esi*4]
movaps xmm4, xmm3
movaps xmm2, xmm1
movaps xmm5, xmm3
movaps xmm0, xmm1
mov ecx, dword [esp + 0x158]
mov esi, dword [esp + 0x15c]
shufps xmm4, xmm6, 0x11
shufps xmm2, xmm7, 0x11
shufps xmm5, xmm6, 0
shufps xmm0, xmm7, 0
addps xmm5, xmm0
mulps xmm5, xmmword [eax]
shufps xmm3, xmm6, 0x55
movaps xmm6, xmmword [esp + 0x160]
movaps xmm0, xmm6
shufps xmm1, xmm7, 0x55
xorps xmm2, xmm6
addps xmm4, xmm2
mulps xmm4, xmmword [0x438bc0]
subps xmm3, xmm1
mulps xmm3, xmmword [eax + 0x10]
addps xmm5, xmm3
xorps xmm0, xmm4
addps xmm4, xmm5
movaps xmmword [ebp], xmm4
xorps xmm6, xmm5
subps xmm0, xmm6
movhps qword [ecx], xmm0
movlps qword [ecx + 8], xmm0
add eax, 0x20
add esi, 0x10
add ebp, 0x10
cmp ebp, ecx
jb 0x411c86
mov edx, dword [esp + 0x20]
mov ebx, dword [esp + 0x150]
mov eax, dword [esp + 0x14]
mov ecx, dword [ebx + 0x10]
lea ecx, [ecx + eax*4]
mov ebx, dword [esp + 0x10]
lea eax, [ebx + edx*4]
mov edx, dword [esp + 0x18]
test edx, edx
jle 0x411dba
mov edx, ebx
mov ebx, dword [esp + 0x18]
mov ebp, edx
lea edx, [edx + ebx*4]
mov ebx, dword [esp + 0x1c]
movaps xmm2, xmmword [ebx + 0x10]
movaps xmm0, xmmword [ebx]
movaps xmm3, xmmword [ecx]
movaps xmm1, xmmword [ecx + 0x10]
movaps xmm4, xmm2
add eax, 0xfffffff0
shufps xmm2, xmm0, 0x77
mulps xmm1, xmm2
shufps xmm4, xmm0, 0x22
mulps xmm3, xmm4
shufps xmm4, xmm4, 0x1b
mulps xmm4, xmmword [ecx + 0x20]
shufps xmm2, xmm2, 0x1b
mulps xmm2, xmmword [ecx + 0x30]
addps xmm4, xmm2
subps xmm3, xmm1
movaps xmmword [eax], xmm3
movaps xmmword [ebp], xmm4
add ebx, 0x20
add ecx, 0x40
add ebp, 0x10
cmp ebp, edx
jb 0x411d6e
add esp, 0x17c
pop ebx
pop ebp
pop esi
pop edi
ret
xor esi, esi
jmp 0x411686
cmp ebx, 0x20
jne 0x42fdfa
mov eax, dword [esp + 0x150]
mov eax, dword [eax + 0x20]
jmp 0x41185a
cmp ebx, 0x40
jne 0x42fe0e
mov eax, dword [esp + 0x150]
mov eax, dword [eax + 0x24]
jmp 0x41185a
mov eax, dword [esp + 0x150]
mov ecx, dword [esp + 0x24]
mov eax, dword [eax + 8]
mov dword [esp + 0x15c], eax
mov eax, 0x80000001
mov dword [esp + 8], ebp
mov ebp, dword [esp + 0x15c]
mov dword [esp + 0x30], edi
imul ecx
xor eax, eax
mov dword [esp + 0x158], eax
add edx, ecx
sar edx, 4
sar ecx, 0x1f
sub edx, ecx
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x154], edx
mov edx, eax
lea eax, [ebx*8]
lea eax, [eax + ebx*4]
lea ecx, [esi + ecx*4]
mov dword [esp + 4], eax
mov eax, ebx
mov dword [esp], ecx
mov ecx, dword [esp + 0x38]
shl eax, 4
lea esi, [esi + ecx*4]
mov dword [esp + 0xc], eax
mov eax, dword [esp]
xor ecx, ecx
movaps xmm7, xmmword [eax + ecx - 0x20]
movaps xmm5, xmmword [ecx + esi - 0x20]
movaps xmm1, xmmword [eax + ecx - 0x10]
movaps xmm6, xmmword [ecx + esi - 0x10]
movaps xmm3, xmm7
movaps xmm4, xmm1
addps xmm7, xmm5
mov edi, dword [esp + 4]
movaps xmmword [eax + ecx - 0x20], xmm7
addps xmm1, xmm6
movaps xmmword [eax + ecx - 0x10], xmm1
movaps xmm7, xmmword [ebp + edi]
mov edi, dword [esp + 0x154]
subps xmm3, xmm5
movaps xmm5, xmmword [ebp + ebx*8]
movaps xmm2, xmm3
subps xmm4, xmm6
movaps xmm1, xmm4
movaps xmm6, xmm7
shufps xmm2, xmm3, 0xf5
shufps xmm3, xmm3, 0xa0
shufps xmm1, xmm4, 0xf5
shufps xmm4, xmm4, 0xa0
xorps xmm3, xmm0
shufps xmm6, xmm5, 0x11
mulps xmm2, xmm6
movlhps xmm7, xmm5
movaps xmm5, xmmword [ebp]
mulps xmm3, xmm7
movaps xmm7, xmmword [ebp + ebx*4]
movaps xmm6, xmm7
addps xmm2, xmm3
add ebp, dword [esp + 0xc]
movaps xmmword [ecx + esi - 0x20], xmm2
xorps xmm4, xmm0
shufps xmm6, xmm5, 0x11
mulps xmm1, xmm6
movlhps xmm7, xmm5
mulps xmm4, xmm7
addps xmm1, xmm4
movaps xmmword [ecx + esi - 0x10], xmm1
add ecx, 0xffffffe0
add edx, 1
cmp edx, edi
jl 0x42fe82
mov ebp, dword [esp + 8]
mov edi, dword [esp + 0x30]
jmp 0x4118d1
movaps xmm0, xmmword [0x438b50]
jmp 0x41190d