Function at 0x100423d0
Capabilities:
Encode data using xor

Disassembly:
push esi
push edi
push ebx
push ebp
sub esp, 0x28
mov esi, dword [esp + 0x3c]
mov eax, dword [esp + 0x40]
mov ebp, dword [esi + 0x400]
mov edx, dword [esi + 0x40c]
mov dword [esp + 0x1c], ebp
mov ebp, edx
shl ebp, 5
mov edi, dword [esi + 0x404]
add ebp, esi
mov ebx, dword [eax]
mov eax, dword [eax + 4]
test eax, eax
mov ecx, dword [esi + 0x408]
mov dword [esp + 0xc], edi
jbe 0x1004248d
mov edi, eax
shr edi, 1
pxor xmm1, xmm1
movaps xmm2, xmm1
test edi, edi
jbe 0x10042665
mov dword [esp], eax
xor esi, esi
pxor xmm0, xmm0
mov eax, 0x3c000000
movss xmm3, dword [ebx + esi*8]
movss xmm4, dword [ebx + esi*8 + 4]
inc esi
mulss xmm3, xmm3
cmp esi, edi
mulss xmm4, xmm4
mov dword [esp + 4], eax
mulss xmm3, dword [esp + 4]
mulss xmm4, dword [esp + 4]
addss xmm2, xmm3
addss xmm0, xmm4
jb 0x10042430
mov eax, dword [esp]
lea esi, [esi + esi + 1]
addss xmm2, xmm0
dec esi
cmp esi, eax
jae 0x10042494
mov dword [esp + 4], 0x3c000000
movss xmm0, dword [ebx + esi*4]
mulss xmm0, xmm0
mulss xmm0, dword [esp + 4]
addss xmm2, xmm0
jmp 0x10042494
pxor xmm1, xmm1
movaps xmm2, xmm1
mov dword [esp], 0x3f000000
mov esi, 0xffffff81
mulss xmm2, dword [esp]
sqrtss xmm2, xmm2
movd eax, xmm2
add eax, eax
mov edi, eax
shr edi, 0x18
add edi, 0xffffff82
test eax, eax
cmove edi, esi
neg edi
js 0x100424cd
mov eax, 0x3c
cmp edi, 0x3c
cmova edi, eax
jmp 0x100424cf
xor edi, edi
mov esi, edi
shl esi, 0x17
test ecx, ecx
lea eax, [esi + 0x3f800000]
mov dword [esp], eax
movss xmm0, dword [esp]
mulss xmm0, xmm2
jbe 0x10042637
neg edi
add esi, 0x3d800000
add edi, 4
xor eax, eax
mov dword [esp + 0x14], ebx
mov dword [esp + 4], edx
mov dword [esp + 0x10], edi
mov dword [esp + 8], esi
mov dword [esp + 0x20], ecx
mov ebx, dword [esp + 0xc]
mov esi, dword [esp + 0x1c]
movss dword [ebp + eax*4], xmm1
mov edx, dword [esi + eax*4]
mov esi, dword [esi + eax*4 + 4]
lea ecx, [esi - 1]
cmp edx, ecx
jae 0x100425f7
sub esi, edx
dec esi
mov ecx, esi
shr ecx, 1
mov dword [esp + 0x24], ecx
test ecx, ecx
jbe 0x10042683
mov edi, dword [esp + 0x14]
xor ecx, ecx
mov dword [esp + 0x18], edx
movss xmm2, dword [ebp + eax*4]
lea edi, [edi + edx*4]
mov edx, edi
mov edi, dword [esp + 0x24]
nop dword [eax + eax]
movss xmm3, dword [edx + ecx*8 + 4]
subss xmm3, dword [edx + ecx*8]
mulss xmm3, dword [ebx + eax*4]
movaps xmm4, xmm3
xorps xmm4, xmmword [0x1038a620]
maxss xmm4, xmm3
addss xmm2, xmm4
movss dword [ebp + eax*4], xmm2
movss xmm5, dword [edx + ecx*8 + 8]
subss xmm5, dword [edx + ecx*8 + 4]
inc ecx
mulss xmm5, dword [ebx + eax*4]
cmp ecx, edi
movaps xmm6, xmm5
xorps xmm6, xmmword [0x1038a620]
maxss xmm6, xmm5
addss xmm2, xmm6
movss dword [ebp + eax*4], xmm2
jb 0x10042560
mov edx, dword [esp + 0x18]
lea edi, [ecx + ecx + 1]
lea ecx, [edi - 1]
cmp ecx, esi
jae 0x100425f7
lea ecx, [edx + edi - 1]
mov edx, dword [esp + 0x14]
movss xmm2, dword [edx + ecx*4 + 4]
subss xmm2, dword [edx + ecx*4]
mulss xmm2, dword [ebx + eax*4]
movaps xmm3, xmm2
xorps xmm3, xmmword [0x1038a620]
maxss xmm3, xmm2
addss xmm3, dword [ebp + eax*4]
movss dword [ebp + eax*4], xmm3
ucomiss xmm0, xmm1
jne 0x10042603
jp 0x10042603
movaps xmm2, xmm1
jmp 0x10042622
cmp dword [esp + 0x10], 0
js 0x1004266f
mov edx, dword [esp + 8]
mov dword [esp + 0xc], edx
movss xmm2, dword [ebp + eax*4]
mulss xmm2, dword [esp + 0xc]
divss xmm2, xmm0
movss dword [ebp + eax*4], xmm2
inc eax
cmp eax, dword [esp + 0x20]
jb 0x10042513
mov edx, dword [esp + 4]
inc edx
cmp edx, 0x20
jb 0x10042653
mov eax, dword [esp + 0x3c]
mov dword [eax + 0x40c], 0
add esp, 0x28
pop ebp
pop ebx
pop edi
pop esi
ret
mov eax, dword [esp + 0x3c]
mov dword [eax + 0x40c], edx
add esp, 0x28
pop ebp
pop ebx
pop edi
pop esi
ret
mov esi, 1
jmp 0x1004246b
mov edx, dword [esp + 8]
mov dword [esp], edx
movss xmm2, dword [ebp + eax*4]
mulss xmm2, dword [esp]
jmp 0x1004261e
mov edi, 1
jmp 0x100425be