Function at 0x410be6
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 0x411420
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 0x410c69
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 0x410d8d
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 0x410d16
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 0x410e0c
mov edi, dword [esp + 0x14]
lea ecx, [eax + edx*4]
add ecx, 0xffffffe0
and edi, 0xfffffffc
lea edi, [edi + eax - 0x20]
movaps xmm3, xmmword [ecx + 0x10]
movaps xmm4, xmmword [ecx]
movaps xmm1, xmmword [edi + 0x10]
movaps xmm2, xmmword [edi]
movaps xmm5, xmm3
movaps xmm0, xmm4
addps xmm3, xmm1
movaps xmmword [ecx + 0x10], xmm3
addps xmm4, xmm2
movaps xmmword [ecx], xmm4
subps xmm5, xmm1
subps xmm0, xmm2
movsldup xmm6, xmm5
mulps xmm6, xmmword [ebp]
movsldup xmm7, xmm0
mulps xmm7, xmmword [ebp + 0x10]
movshdup xmm1, xmm5
mulps xmm1, xmmword [ebp + 0x20]
addps xmm1, xmm6
movshdup xmm0, xmm0
mulps xmm0, xmmword [ebp + 0x30]
movaps xmmword [edi + 0x10], xmm1
addps xmm0, xmm7
movaps xmmword [edi], xmm0
add ecx, 0xffffffe0
add edi, 0xffffffe0
add ebp, 0x40
cmp edi, eax
jae 0x410dab
add esi, 0xfffffff9
test esi, esi
jle 0x42fdd9
movaps xmm0, xmmword [0x438ac0]
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 0x410f42
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 0x410ea7
mov eax, dword [esp + 0x150]
mov eax, dword [eax + 0x18]
jmp 0x410eba
cmp ebx, 0x10
jne 0x42fc8a
mov eax, dword [esp + 0x150]
mov eax, dword [eax + 0x1c]
prefetchnta byte [eax]
mov dword [esp + 0x30], edi
movaps xmm6, xmmword [ecx]
movaps xmm7, xmmword [edx]
movaps xmm3, xmmword [ecx + 0x10]
movaps xmm1, xmmword [edx + 0x10]
movaps xmm4, xmm6
movaps xmm5, xmm3
addps xmm6, xmm7
movaps xmmword [ecx], xmm6
addps xmm3, xmm1
movaps xmmword [ecx + 0x10], xmm3
prefetchnta byte [eax + 0x40]
lea edi, [eax + 0x40]
subps xmm4, xmm7
subps xmm5, xmm1
movsldup xmm1, xmm4
mulps xmm1, xmmword [eax + 0x10]
movsldup xmm2, xmm5
mulps xmm2, xmmword [eax + 0x30]
movshdup xmm3, xmm4
mulps xmm3, xmmword [eax]
addps xmm3, xmm1
movshdup xmm4, xmm5
mulps xmm4, xmmword [eax + 0x20]
movaps xmmword [edx], xmm3
addps xmm4, xmm2
movaps xmmword [edx + 0x10], xmm4
mov eax, edi
add ecx, 0xffffffe0
add edx, 0xffffffe0
cmp edx, esi
jae 0x410ec1
mov edi, dword [esp + 0x30]
add ebp, dword [esp + 0x40]
mov eax, dword [esp + 0x3c]
add edi, 1
cmp edi, eax
jl 0x410e7b
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 0x410e36
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x20]
mov ebx, dword [esp + 0x150]
test edx, edx
jle 0x4112ac
movaps xmm6, xmmword [0x4308a0]
movaps xmm5, xmmword [0x4308c0]
movaps xmm1, xmmword [0x4308e0]
movaps xmm4, xmmword [0x4308f0]
movaps xmm3, xmmword [0x430900]
movaps xmm2, xmmword [0x430910]
movaps xmm7, xmmword [0x438b00]
movaps xmmword [esp + 0xb0], xmm6
movaps xmm6, xmmword [0x4308b0]
movaps xmmword [esp + 0xc0], xmm5
movaps xmm5, xmmword [0x4308d0]
movaps xmmword [esp + 0xd0], xmm1
movaps xmm1, xmmword [0x438af0]
movaps xmmword [esp + 0xa0], xmm7
movaps xmm7, xmmword [0x438b10]
movaps xmmword [esp + 0x160], xmm0
movaps xmmword [esp + 0x80], xmm1
movaps xmmword [esp + 0x90], xmm7
movaps xmm7, xmmword [0x438b20]
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 xmm0, xmm4
addps xmm4, xmm2
movaps xmmword [esp + 0x120], xmm4
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 xmm1, xmmword [esp + 0xe0]
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]
movsldup xmm5, xmm1
mulps xmm5, xmmword [esp + 0x50]
movshdup xmm4, xmm1
movaps xmm1, xmm7
mulps xmm4, xmmword [esp + 0xb0]
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 [0x438ae0]
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 [0x438ad0]
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 0x41101b
movaps xmm0, xmmword [esp + 0x160]
movaps xmm1, xmmword [0x438b30]
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]
lddqu xmm6, xmmword [ecx + edi*4]
lddqu xmm5, xmmword [ecx + edx*4]
lddqu xmm4, xmmword [ecx + ebx*4]
lddqu xmm7, xmmword [ecx + esi*4]
movaps xmm2, xmm6
movaps xmm3, xmm6
mov ecx, dword [esp + 0x158]
mov esi, dword [esp + 0x15c]
movaps xmm1, xmm5
movaps xmm0, xmm5
shufps xmm2, xmm4, 0x11
shufps xmm1, xmm7, 0x11
shufps xmm3, xmm4, 0
shufps xmm0, xmm7, 0
addps xmm3, xmm0
mulps xmm3, xmmword [eax]
shufps xmm6, xmm4, 0x55
movaps xmm4, xmmword [esp + 0x160]
shufps xmm5, xmm7, 0x55
subps xmm6, xmm5
mulps xmm6, xmmword [eax + 0x10]
addps xmm3, xmm6
xorps xmm1, xmm4
addps xmm2, xmm1
mulps xmm2, xmmword [0x438b30]
add eax, 0x20
add esi, 0x10
xorps xmm4, xmm2
addps xmm2, xmm3
movaps xmmword [ebp], xmm2
addsubps xmm4, xmm3
movhps qword [ecx], xmm4
movlps qword [ecx + 8], xmm4
add ebp, 0x10
cmp ebp, ecx
jb 0x4112e2
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 0x411415
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 0x4113c9
add esp, 0x17c
pop ebx
pop ebp
pop esi
pop edi
ret
xor esi, esi
jmp 0x410cec
cmp ebx, 0x20
jne 0x42fc9e
mov eax, dword [esp + 0x150]
mov eax, dword [eax + 0x20]
jmp 0x410eba
cmp ebx, 0x40
jne 0x42fcb2
mov eax, dword [esp + 0x150]
mov eax, dword [eax + 0x24]
jmp 0x410eba
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 xmm1, xmmword [eax + ecx - 0x20]
movaps xmm6, xmmword [ecx + esi - 0x20]
movaps xmm2, xmmword [eax + ecx - 0x10]
movaps xmm7, xmmword [ecx + esi - 0x10]
movaps xmm3, xmm1
movaps xmm5, xmm2
addps xmm1, xmm6
mov edi, dword [esp + 4]
movaps xmmword [eax + ecx - 0x20], xmm1
addps xmm2, xmm7
movaps xmmword [eax + ecx - 0x10], xmm2
subps xmm3, xmm6
subps xmm5, xmm7
movaps xmm7, xmmword [ebp + edi]
movaps xmm6, xmm7
mov edi, dword [esp + 0x154]
movshdup xmm4, xmm3
movsldup xmm3, xmm3
movshdup xmm2, xmm5
movsldup xmm1, xmm5
movaps xmm5, xmmword [ebp + ebx*8]
xorps xmm3, xmm0
xorps xmm1, xmm0
shufps xmm6, xmm5, 0x11
mulps xmm4, xmm6
movlhps xmm7, xmm5
movaps xmm5, xmmword [ebp]
mulps xmm3, xmm7
movaps xmm7, xmmword [ebp + ebx*4]
movaps xmm6, xmm7
addps xmm4, xmm3
add ebp, dword [esp + 0xc]
movaps xmmword [ecx + esi - 0x20], xmm4
shufps xmm6, xmm5, 0x11
mulps xmm2, xmm6
movlhps xmm7, xmm5
mulps xmm1, xmm7
addps xmm2, xmm1
movaps xmmword [ecx + esi - 0x10], xmm2
add ecx, 0xffffffe0
add edx, 1
cmp edx, edi
jl 0x42fd26
mov ebp, dword [esp + 8]
mov edi, dword [esp + 0x30]
jmp 0x410f2b
movaps xmm0, xmmword [0x438ac0]
jmp 0x410f67