Function at 0x577760
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x58
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
mov edi, ecx
imul edi, dword [ebp + 8]
lea esi, [edi + edi]
mov dword [ebp - 0xc], esi
lea esi, [edi + edi*2]
mov dword [ebp - 8], esi
xor esi, esi
mov dword [ebp - 0x24], edi
mov dword [ebp - 4], edi
mov dword [ebp - 0x1c], esi
cmp ebx, 4
jl 0x577993
add ebx, 0xfffffffc
shr ebx, 2
inc ebx
mov dword [ebp - 0x38], ebx
add ebx, ebx
add ebx, ebx
mov dword [ebp - 0x1c], ebx
movss xmm0, dword [eax + esi*4]
mov ebx, dword [ebp - 8]
movss xmm1, dword [eax + ebx*4]
addss xmm1, dword [eax + edi*4]
mov edi, dword [ebp - 0xc]
addss xmm0, dword [eax + edi*4]
movaps xmm2, xmm0
subss xmm0, xmm1
addss xmm2, xmm1
lea edi, [esi*4]
movss dword [edx + edi*4], xmm2
lea ebx, [edi + ecx*4]
movss dword [edx + ebx*4 - 4], xmm0
movss xmm0, dword [eax + esi*4]
mov ebx, dword [ebp - 0xc]
subss xmm0, dword [eax + ebx*4]
mov ebx, dword [ebp - 8]
add dword [ebp - 8], ecx
add dword [ebp - 0xc], ecx
lea edi, [edi + ecx*2]
movss dword [edx + edi*4 - 4], xmm0
movss xmm0, dword [eax + ebx*4]
mov ebx, dword [ebp - 4]
subss xmm0, dword [eax + ebx*4]
movss dword [edx + edi*4], xmm0
mov edi, dword [ebp - 8]
movss xmm1, dword [eax + edi*4]
mov edi, dword [ebp - 0xc]
add ebx, ecx
addss xmm1, dword [eax + ebx*4]
mov dword [ebp - 4], ebx
add esi, ecx
movss xmm0, dword [eax + esi*4]
addss xmm0, dword [eax + edi*4]
movaps xmm2, xmm0
subss xmm0, xmm1
lea ebx, [esi*4]
lea edi, [ebx + ecx*4]
addss xmm2, xmm1
movss dword [edx + ebx*4], xmm2
movss dword [edx + edi*4 - 4], xmm0
movss xmm0, dword [eax + esi*4]
lea ebx, [ebx + ecx*2]
mov dword [ebp - 0x10], ebx
mov ebx, dword [ebp - 0xc]
subss xmm0, dword [eax + ebx*4]
mov ebx, dword [ebp - 0x10]
movss dword [edx + ebx*4 - 4], xmm0
mov ebx, dword [ebp - 8]
movss xmm0, dword [eax + ebx*4]
mov ebx, dword [ebp - 4]
subss xmm0, dword [eax + ebx*4]
mov ebx, dword [ebp - 0x10]
add dword [ebp - 8], ecx
add dword [ebp - 4], ecx
add dword [ebp - 0xc], ecx
movss dword [edx + ebx*4], xmm0
mov ebx, dword [ebp - 8]
movss xmm1, dword [eax + ebx*4]
mov ebx, dword [ebp - 4]
addss xmm1, dword [eax + ebx*4]
mov ebx, dword [ebp - 0xc]
add esi, ecx
movss xmm0, dword [eax + esi*4]
addss xmm0, dword [eax + ebx*4]
movaps xmm2, xmm0
lea ebx, [esi*4]
mov dword [ebp - 0x10], ebx
addss xmm2, xmm1
movss dword [edx + ebx*4], xmm2
lea ebx, [ebx + ecx*4]
subss xmm0, xmm1
movss dword [edx + ebx*4 - 4], xmm0
mov ebx, dword [ebp - 0xc]
movss xmm0, dword [eax + esi*4]
subss xmm0, dword [eax + ebx*4]
lea edi, [ecx + ecx]
add dword [ebp - 0x10], edi
mov ebx, dword [ebp - 0x10]
movss dword [edx + ebx*4 - 4], xmm0
mov ebx, dword [ebp - 8]
movss xmm0, dword [eax + ebx*4]
mov ebx, dword [ebp - 4]
subss xmm0, dword [eax + ebx*4]
mov ebx, dword [ebp - 0x10]
add dword [ebp - 8], ecx
add dword [ebp - 4], ecx
add dword [ebp - 0xc], ecx
movss dword [edx + ebx*4], xmm0
mov ebx, dword [ebp - 8]
movss xmm1, dword [eax + ebx*4]
mov ebx, dword [ebp - 4]
addss xmm1, dword [eax + ebx*4]
mov ebx, dword [ebp - 0xc]
add esi, ecx
movss xmm0, dword [eax + esi*4]
addss xmm0, dword [eax + ebx*4]
movaps xmm2, xmm0
lea ebx, [esi*4]
mov dword [ebp - 0x10], ebx
subss xmm0, xmm1
addss xmm2, xmm1
movss dword [edx + ebx*4], xmm2
lea ebx, [ebx + ecx*4]
movss dword [edx + ebx*4 - 4], xmm0
mov ebx, dword [ebp - 0x10]
movss xmm0, dword [eax + esi*4]
add ebx, edi
mov edi, dword [ebp - 0xc]
subss xmm0, dword [eax + edi*4]
mov edi, dword [ebp - 8]
add dword [ebp - 8], ecx
add dword [ebp - 0xc], ecx
movss dword [edx + ebx*4 - 4], xmm0
movss xmm0, dword [eax + edi*4]
mov edi, dword [ebp - 4]
subss xmm0, dword [eax + edi*4]
add edi, ecx
add esi, ecx
dec dword [ebp - 0x38]
movss dword [edx + ebx*4], xmm0
mov dword [ebp - 4], edi
jne 0x5777a3
mov ebx, dword [ebp + 8]
cmp dword [ebp - 0x1c], ebx
jge 0x577a3c
mov edi, dword [ebp - 4]
lea edi, [eax + edi*4]
mov dword [ebp - 0x14], edi
mov edi, dword [ebp - 8]
lea edi, [eax + edi*4]
mov dword [ebp - 0x18], edi
mov edi, dword [ebp - 0xc]
lea edi, [eax + edi*4]
mov dword [ebp - 0x20], edi
mov edi, ebx
sub edi, dword [ebp - 0x1c]
mov dword [ebp - 0x38], edi
nop
mov edi, dword [ebp - 0x18]
movss xmm1, dword [edi]
mov edi, dword [ebp - 0x14]
addss xmm1, dword [edi]
movss xmm0, dword [eax + esi*4]
mov edi, dword [ebp - 0x20]
addss xmm0, dword [edi]
movaps xmm2, xmm0
lea edi, [esi*4]
subss xmm0, xmm1
lea ebx, [edi + ecx*4]
addss xmm2, xmm1
movss dword [edx + edi*4], xmm2
movss dword [edx + ebx*4 - 4], xmm0
movss xmm0, dword [eax + esi*4]
mov ebx, dword [ebp - 0x20]
subss xmm0, dword [ebx]
mov ebx, dword [ebp - 0x18]
lea edi, [edi + ecx*2]
movss dword [edx + edi*4 - 4], xmm0
movss xmm0, dword [ebx]
mov ebx, dword [ebp - 0x14]
subss xmm0, dword [ebx]
movss dword [edx + edi*4], xmm0
lea edi, [ecx*4]
add dword [ebp - 0x20], edi
add dword [ebp - 0x18], edi
add dword [ebp - 0x14], edi
add esi, ecx
dec dword [ebp - 0x38]
jne 0x5779c0
mov ebx, dword [ebp + 8]
cmp ecx, 2
jl 0x57801c
je 0x577ca8
xor edi, edi
mov dword [ebp - 4], edi
test ebx, ebx
jle 0x577c9f
mov esi, ecx
shl esi, 4
mov dword [ebp - 0x58], esi
mov esi, dword [ebp - 0x24]
lea ebx, [esi + esi*2]
lea esi, [eax + esi*4]
mov dword [ebp - 0x34], esi
mov esi, dword [ebp + 8]
lea ebx, [eax + ebx*4]
mov dword [ebp - 0x30], edx
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x44], esi
jmp 0x577a80
lea esi, [ecx + ecx]
lea esi, [esi + edi*4]
cmp ecx, 2
jle 0x577c7e
lea ebx, [edx + esi*4]
mov dword [ebp - 0xc], ebx
lea ebx, [eax + edi*4]
mov dword [ebp - 0x14], ebx
lea ebx, [ecx + ecx]
add esi, ebx
lea ebx, [ebx + edi*4]
lea ebx, [edx + ebx*4]
mov dword [ebp - 8], ebx
mov ebx, dword [ebp - 0x24]
lea edi, [edi + ebx*2]
mov ebx, dword [ebp + 0xc]
lea edi, [eax + edi*4]
mov dword [ebp - 0x1c], edi
mov edi, dword [ebp + 0x10]
sub edi, ebx
mov dword [ebp - 0x4c], edi
mov edi, dword [ebp + 0x14]
lea esi, [edx + esi*4]
sub edi, ebx
mov dword [ebp - 0x28], esi
mov esi, dword [ebp - 0x30]
mov dword [ebp - 0x50], edi
mov edi, dword [ebp + 0x10]
sub edi, dword [ebp + 0x14]
mov dword [ebp - 0x10], esi
mov esi, dword [ebp + 0x14]
mov dword [ebp - 0x2c], esi
mov esi, dword [ebp - 0x34]
mov dword [ebp - 0x48], edi
mov dword [ebp - 0x20], esi
mov esi, dword [ebp + 0xc]
lea edi, [ecx - 3]
shr edi, 1
add esi, 4
inc edi
mov dword [ebp - 0x40], edi
mov edi, dword [ebp - 0x38]
jmp 0x577b00
add dword [ebp - 0x20], 8
movss xmm2, dword [esi]
mov ebx, dword [ebp - 0x1c]
add dword [ebp - 0x14], 8
add edi, 8
movaps xmm5, xmm2
mov dword [ebp - 0x18], edi
mov edi, dword [ebp - 0x20]
mulss xmm2, dword [edi - 4]
movss xmm4, dword [edi]
movss xmm1, dword [edi - 4]
mulss xmm1, dword [esi - 4]
mov edi, dword [ebp - 0x48]
mulss xmm5, xmm4
mulss xmm4, dword [esi - 4]
add ebx, 8
add dword [ebp - 0x10], 8
addss xmm1, xmm5
movss xmm5, dword [ebx - 4]
subss xmm4, xmm2
mov dword [ebp - 0x1c], ebx
mov ebx, dword [ebp - 0x2c]
movss xmm0, dword [ebx + edi]
movss xmm6, dword [ebx]
mov edi, dword [ebp - 0x4c]
movss xmm2, dword [esi + edi]
mov edi, dword [ebp - 0x1c]
mov ebx, dword [ebp - 0x50]
sub dword [ebp - 0xc], 8
movaps xmm7, xmm2
mulss xmm7, dword [edi]
mulss xmm2, xmm5
movaps xmm3, xmm0
mulss xmm0, dword [edi]
mov edi, dword [ebp - 0x18]
subss xmm0, xmm2
movss xmm2, dword [edi]
mulss xmm3, xmm5
movss xmm5, dword [esi + ebx]
mov ebx, dword [ebp - 0x14]
addss xmm3, xmm7
movss xmm7, dword [edi - 4]
add dword [ebp - 8], 8
sub dword [ebp - 0x28], 8
movss dword [ebp - 0x54], xmm0
movaps xmm0, xmm5
mulss xmm5, dword [edi - 4]
mulss xmm0, xmm2
mulss xmm2, xmm6
subss xmm2, xmm5
mulss xmm7, xmm6
addss xmm0, xmm7
movaps xmm5, xmm0
subss xmm0, xmm1
addss xmm5, xmm1
movaps xmm1, xmm2
addss xmm1, xmm4
subss xmm4, xmm2
movss xmm2, dword [ebx]
movaps xmm6, xmm2
subss xmm2, dword [ebp - 0x54]
addss xmm6, dword [ebp - 0x54]
movss dword [ebp - 0x3c], xmm0
movaps xmm0, xmm4
movss xmm4, dword [ebx - 4]
mov ebx, dword [ebp - 0x10]
movaps xmm7, xmm2
movaps xmm2, xmm4
addss xmm2, xmm3
subss xmm4, xmm3
movaps xmm3, xmm2
addss xmm3, xmm5
movss dword [ebx - 4], xmm3
movaps xmm3, xmm6
addss xmm3, xmm1
movss dword [ebx], xmm3
mov ebx, dword [ebp - 0xc]
movaps xmm3, xmm4
subss xmm3, xmm0
movss dword [ebx - 4], xmm3
movss xmm3, dword [ebp - 0x3c]
add dword [ebp - 0x2c], 8
subss xmm3, xmm7
addss xmm7, dword [ebp - 0x3c]
movss dword [ebx], xmm3
mov ebx, dword [ebp - 8]
movss dword [ebx], xmm7
addss xmm4, xmm0
movss dword [ebx - 4], xmm4
mov ebx, dword [ebp - 0x28]
add esi, 8
dec dword [ebp - 0x40]
subss xmm2, xmm5
subss xmm1, xmm6
movss dword [ebx - 4], xmm2
movss dword [ebx], xmm1
jne 0x577b00
mov edi, dword [ebp - 4]
mov esi, dword [ebp - 0x58]
add dword [ebp - 0x30], esi
lea esi, [ecx*4]
add dword [ebp - 0x34], esi
add dword [ebp - 0x38], esi
add edi, ecx
dec dword [ebp - 0x44]
mov dword [ebp - 4], edi
jne 0x577a80
test cl, 1
jne 0x57801c
cmp dword [ebp + 8], 4
mov esi, dword [ebp - 0x24]
movss xmm1, dword [0x6402cc]
movss xmm3, dword [0x5cbb40]
lea edi, [esi + ecx - 1]
lea esi, [edi + esi*2]
mov dword [ebp - 8], esi
mov dword [ebp - 4], edi
mov esi, ecx
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x1c], 0
jl 0x577f59
add edi, dword [ebp - 0x24]
lea ebx, [ecx*4]
add ebx, ebx
add ebx, ebx
mov dword [ebp - 0x20], ebx
lea edi, [eax + edi*4]
lea ebx, [ecx + ecx*2]
lea ebx, [edx + ebx*4]
mov dword [ebp - 0xc], ebx
mov dword [ebp - 0x10], edi
lea edi, [ecx*4]
lea ebx, [edi + eax - 4]
mov dword [ebp - 0x14], ebx
mov ebx, dword [ebp + 8]
add ebx, 0xfffffffc
shr ebx, 2
inc ebx
mov dword [ebp - 0x44], ebx
add ebx, ebx
add ebx, ebx
mov dword [ebp - 0x1c], ebx
mov ebx, dword [ebp - 8]
movss xmm4, dword [eax + ebx*4]
mov ebx, dword [ebp - 4]
movss xmm2, dword [eax + ebx*4]
mov ebx, dword [ebp - 0x14]
add dword [ebp - 8], ecx
add dword [ebp - 4], ecx
movaps xmm0, xmm2
addss xmm0, xmm4
subss xmm2, xmm4
movss xmm4, dword [ebx]
mulss xmm2, xmm1
addss xmm4, xmm2
movss dword [edx + esi*4 - 4], xmm4
movss xmm4, dword [ebx]
mov ebx, dword [ebp - 0xc]
subss xmm4, xmm2
movss dword [ebx - 4], xmm4
mov ebx, dword [ebp - 0x10]
add dword [ebp - 0x10], edi
mulss xmm0, xmm1
xorps xmm0, xmm3
movaps xmm2, xmm0
subss xmm2, dword [ebx]
movss dword [edx + esi*4], xmm2
addss xmm0, dword [ebx]
mov ebx, dword [ebp - 0xc]
movss dword [ebx], xmm0
lea edi, [ecx*4]
add esi, edi
mov edi, dword [ebp - 0x20]
add dword [ebp - 0xc], edi
mov edi, dword [ebp - 0x14]
add dword [ebp - 0x18], ecx
lea ebx, [ecx*4]
add edi, ebx
mov ebx, dword [ebp - 8]
movss xmm4, dword [eax + ebx*4]
mov ebx, dword [ebp - 4]
movss xmm2, dword [eax + ebx*4]
mov ebx, dword [ebp - 0xc]
add dword [ebp - 4], ecx
add dword [ebp - 8], ecx
add dword [ebp - 0x18], ecx
movaps xmm0, xmm2
addss xmm0, xmm4
subss xmm2, xmm4
movss xmm4, dword [edi]
mulss xmm2, xmm1
addss xmm4, xmm2
movss dword [edx + esi*4 - 4], xmm4
movss xmm4, dword [edi]
mov dword [ebp - 0x14], edi
mov edi, dword [ebp - 0x10]
mulss xmm0, xmm1
xorps xmm0, xmm3
subss xmm4, xmm2
movss dword [ebx - 4], xmm4
movaps xmm2, xmm0
subss xmm2, dword [edi]
movss dword [edx + esi*4], xmm2
addss xmm0, dword [edi]
movss dword [ebx], xmm0
lea ebx, [ecx*4]
add edi, ebx
mov dword [ebp - 0x10], edi
lea edi, [ecx*4]
add esi, edi
mov edi, dword [ebp - 0x20]
add dword [ebp - 0xc], edi
mov edi, dword [ebp - 0x14]
lea ebx, [ecx*4]
add edi, ebx
mov ebx, dword [ebp - 8]
movss xmm4, dword [eax + ebx*4]
mov ebx, dword [ebp - 4]
movss xmm2, dword [eax + ebx*4]
movaps xmm0, xmm2
addss xmm0, xmm4
mov dword [ebp - 0x14], edi
mulss xmm0, xmm1
mov ebx, dword [ebp - 0xc]
subss xmm2, xmm4
movss xmm4, dword [edi]
add dword [ebp - 8], ecx
add dword [ebp - 4], ecx
mulss xmm2, xmm1
addss xmm4, xmm2
movss dword [edx + esi*4 - 4], xmm4
movss xmm4, dword [edi]
mov edi, dword [ebp - 0x10]
subss xmm4, xmm2
movss dword [ebx - 4], xmm4
xorps xmm0, xmm3
movaps xmm2, xmm0
subss xmm2, dword [edi]
movss dword [edx + esi*4], xmm2
addss xmm0, dword [edi]
movss dword [ebx], xmm0
lea ebx, [ecx*4]
add edi, ebx
mov dword [ebp - 0x10], edi
lea edi, [ecx*4]
add esi, edi
mov edi, dword [ebp - 0x20]
add dword [ebp - 0xc], edi
mov edi, dword [ebp - 0x14]
add dword [ebp - 0x18], ecx
lea ebx, [ecx*4]
add edi, ebx
mov ebx, dword [ebp - 8]
movss xmm4, dword [eax + ebx*4]
mov ebx, dword [ebp - 4]
movss xmm2, dword [eax + ebx*4]
mov ebx, dword [ebp - 0xc]
add dword [ebp - 4], ecx
add dword [ebp - 8], ecx
add dword [ebp - 0x18], ecx
movaps xmm0, xmm2
addss xmm0, xmm4
subss xmm2, xmm4
movss xmm4, dword [edi]
mulss xmm2, xmm1
addss xmm4, xmm2
movss dword [edx + esi*4 - 4], xmm4
movss xmm4, dword [edi]
mov dword [ebp - 0x14], edi
mov edi, dword [ebp - 0x10]
mulss xmm0, xmm1
subss xmm4, xmm2
movss dword [ebx - 4], xmm4
xorps xmm0, xmm3
movaps xmm2, xmm0
subss xmm2, dword [edi]
movss dword [edx + esi*4], xmm2
addss xmm0, dword [edi]
movss dword [ebx], xmm0
lea ebx, [ecx*4]
add edi, ebx
mov dword [ebp - 0x10], edi
lea edi, [ecx*4]
add esi, edi
mov edi, dword [ebp - 0x20]
add dword [ebp - 0xc], edi
lea edi, [ecx*4]
add dword [ebp - 0x14], edi
dec dword [ebp - 0x44]
jne 0x577d20
mov edi, dword [ebp + 8]
cmp dword [ebp - 0x1c], edi
jge 0x57801c
lea edi, [ecx*4]
lea ebx, [edx + esi*4]
add edi, edi
add edi, edi
mov dword [ebp - 0x20], edi
lea edi, [ecx*4]
lea ecx, [esi + ecx*2]
mov esi, dword [ebp - 4]
add esi, dword [ebp - 0x24]
lea edx, [edx + ecx*4]
lea ecx, [eax + esi*4]
mov esi, dword [ebp - 8]
lea esi, [eax + esi*4]
mov dword [ebp - 0x58], ebx
mov ebx, dword [ebp - 4]
mov dword [ebp - 0x38], esi
mov esi, dword [ebp - 0x18]
lea ebx, [eax + ebx*4]
lea eax, [eax + esi*4 - 4]
mov esi, dword [ebp + 8]
sub esi, dword [ebp - 0x1c]
mov dword [ebp - 0x44], ebx
mov dword [ebp + 8], esi
mov esi, dword [ebp - 0x58]
mov ebx, dword [ebp - 0x38]
movss xmm4, dword [ebx]
mov ebx, dword [ebp - 0x44]
movss xmm2, dword [ebx]
add dword [ebp - 0x38], edi
movaps xmm0, xmm4
addss xmm0, xmm2
subss xmm2, xmm4
mulss xmm2, xmm1
movaps xmm4, xmm2
addss xmm4, dword [eax]
movss dword [esi - 4], xmm4
movss xmm4, dword [eax]
mulss xmm0, xmm1
subss xmm4, xmm2
movss dword [edx - 4], xmm4
xorps xmm0, xmm3
add ebx, edi
movaps xmm2, xmm0
subss xmm2, dword [ecx]
movss dword [esi], xmm2
addss xmm0, dword [ecx]
mov dword [ebp - 0x44], ebx
mov ebx, dword [ebp - 0x20]
movss dword [edx], xmm0
add eax, edi
add ecx, edi
add esi, ebx
add edx, ebx
dec dword [ebp + 8]
jne 0x577fb4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret