Function at 0x10047be0
Capabilities:
Encode data using xor

Disassembly:
push esi
push edi
push ebx
push ebp
sub esp, 0x18
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x2c]
lea edi, [ecx + 0x1f]
mov edx, dword [eax + 4]
lea ebx, [ecx + 0xbe]
mov ebp, dword [eax]
and edi, 0xffffffe0
and ebx, 0xffffffe0
mov dword [esp + 0x10], edx
test ebp, ebp
jle 0x10047ebc
mov ecx, ebp
mov esi, 0x20
shr ecx, 0x1f
add ecx, ebp
sar ecx, 1
test ecx, ecx
jbe 0x10048134
mov dword [esp + 8], ebp
xor edx, edx
mov dword [esp + 4], ebx
mov eax, 0xffffff81
mov dword [esp], edi
mov ebp, dword [esp + 0x30]
mov edi, dword [ebp + edx*8]
add edi, edi
mov ebx, edi
shr ebx, 0x18
add ebx, 0xffffff82
test edi, edi
cmove ebx, eax
neg ebx
js 0x10047c5f
mov edi, 0x3c
cmp ebx, 0x3c
cmova ebx, edi
jmp 0x10047c61
xor ebx, ebx
mov edi, dword [ebp + edx*8 + 4]
cmp ebx, esi
cmovb esi, ebx
add edi, edi
mov ebx, edi
shr ebx, 0x18
add ebx, 0xffffff82
test edi, edi
cmove ebx, eax
neg ebx
js 0x10047c8a
mov edi, 0x3c
cmp ebx, 0x3c
cmova ebx, edi
jmp 0x10047c8c
xor ebx, ebx
cmp ebx, esi
cmovb esi, ebx
inc edx
cmp edx, ecx
jb 0x10047c3b
mov ebx, dword [esp + 4]
lea edx, [edx + edx + 1]
mov edi, dword [esp]
mov ebp, dword [esp + 8]
lea eax, [edx - 1]
cmp ebp, eax
jbe 0x10047ce0
mov eax, dword [esp + 0x30]
mov ecx, 0xffffff81
mov edx, dword [eax + edx*4 - 4]
add edx, edx
mov eax, edx
shr eax, 0x18
add eax, 0xffffff82
test edx, edx
cmove eax, ecx
neg eax
js 0x10047cd9
mov edx, 0x3c
cmp eax, 0x3c
cmova eax, edx
jmp 0x10047cdb
xor eax, eax
cmp eax, esi
cmovb esi, eax
cmp esi, 5
jb 0x10047dcf
test ebp, ebp
jle 0x10047ebc
mov ecx, ebp
shr ecx, 0x1f
pxor xmm0, xmm0
add ecx, ebp
sar ecx, 1
test ecx, ecx
jbe 0x10048120
mov eax, esi
xor edx, edx
shl eax, 0x17
add eax, 0x3d000000
mov dword [esp], esi
mov dword [esp + 8], ebp
mov dword [esp + 4], ebx
mov ebx, 0x3d000000
mov ebp, edx
mov esi, dword [esp + 0x30]
nop dword [eax + eax]
mov dword [esp + 0xc], eax
movss xmm2, dword [esp + 0xc]
movaps xmm1, xmm2
mulss xmm1, dword [ebp + esi]
mov dword [esp + 0x14], ebx
movss xmm3, dword [esp + 0x14]
movss dword [ebp + edi], xmm1
add ebp, 8
mulss xmm1, xmm3
mulss xmm2, dword [esi + edx*8 + 4]
addss xmm0, xmm1
mulss xmm3, xmm2
movss dword [edi + edx*8 + 4], xmm2
inc edx
cmp edx, ecx
addss xmm0, xmm3
jb 0x10047d30
mov esi, dword [esp]
lea edx, [edx + edx + 1]
mov ebx, dword [esp + 4]
mov ebp, dword [esp + 8]
lea eax, [edx - 1]
cmp ebp, eax
jbe 0x10047ec0
shl esi, 0x17
mov eax, dword [esp + 0x30]
add esi, 0x3d000000
mov dword [esp + 0xc], esi
movss xmm1, dword [esp + 0xc]
mulss xmm1, dword [eax + edx*4 - 4]
mov dword [esp + 0x14], 0x3d000000
movss xmm2, dword [esp + 0x14]
mulss xmm2, xmm1
movss dword [edi + edx*4 - 4], xmm1
addss xmm0, xmm2
jmp 0x10047ec0
test ebp, ebp
jle 0x10047ebc
mov edx, ebp
shr edx, 0x1f
pxor xmm0, xmm0
add edx, ebp
sar edx, 1
test edx, edx
jbe 0x1004812a
mov eax, esi
xor ecx, ecx
neg eax
shl eax, 0x17
neg eax
mov dword [esp], esi
add eax, 0x3d000000
mov dword [esp + 8], ebp
mov dword [esp + 4], ebx
mov ebx, 0x3d000000
mov ebp, ecx
mov esi, dword [esp + 0x30]
nop dword [eax]
nop dword [eax]
mov dword [esp + 0xc], eax
movss xmm2, dword [esp + 0xc]
movaps xmm1, xmm2
mulss xmm1, dword [ebp + esi]
mov dword [esp + 0x14], ebx
movss xmm3, dword [esp + 0x14]
movss dword [ebp + edi], xmm1
add ebp, 8
mulss xmm1, xmm3
mulss xmm2, dword [esi + ecx*8 + 4]
addss xmm0, xmm1
mulss xmm3, xmm2
movss dword [edi + ecx*8 + 4], xmm2
inc ecx
cmp ecx, edx
addss xmm0, xmm3
jb 0x10047e20
mov esi, dword [esp]
lea edx, [ecx + ecx + 1]
mov ebx, dword [esp + 4]
mov ebp, dword [esp + 8]
lea eax, [edx - 1]
cmp ebp, eax
jbe 0x10047ec0
neg esi
shl esi, 0x17
neg esi
mov eax, dword [esp + 0x30]
add esi, 0x3d000000
mov dword [esp + 0xc], esi
movss xmm1, dword [esp + 0xc]
mulss xmm1, dword [eax + edx*4 - 4]
mov dword [esp + 0x14], 0x3d000000
movss xmm2, dword [esp + 0x14]
mulss xmm2, xmm1
movss dword [edi + edx*4 - 4], xmm1
addss xmm0, xmm2
jmp 0x10047ec0
pxor xmm0, xmm0
mov eax, dword [esp + 0x2c]
mulss xmm0, dword [ebp*4 + 0x1038a67c]
mov edx, dword [eax + 8]
mov dword [esp], 0x42000000
mulss xmm0, dword [esp]
push dword [edx + 0x18]
push dword [edx + 4]
push ebx
push edi
movss dword [esp + 0x1c], xmm0
call fcn.10049460
mov ecx, ebp
shr ecx, 0x1f
pxor xmm1, xmm1
add ecx, ebp
pxor xmm2, xmm2
sar ecx, 1
mov eax, dword [ebx + 4]
movss xmm0, dword [esp + 0xc]
mov dword [ebx + ecx*8], eax
lea edx, [ecx + 1]
movss dword [ebx + ecx*8 + 4], xmm1
cmp ebp, edx
movss dword [ebx + 4], xmm2
jle 0x10047fef
neg ecx
mov edi, ebp
add ecx, ebp
shr edi, 0x1f
add edi, ebp
sar edi, 1
lea eax, [ecx - 1]
shr eax, 0x1f
lea ecx, [eax + ecx - 1]
sar ecx, 1
test ecx, ecx
jbe 0x1004813e
xor edx, edx
lea eax, [edi*8]
neg eax
lea esi, [ebx + edi*8]
mov dword [esp + 0xc], esi
lea esi, [ebx + ebp*8]
add esi, eax
xor eax, eax
mov dword [esp + 4], ebx
mov dword [esp + 8], ebp
mov dword [esp], edi
mov ebp, eax
mov ebx, dword [esp + 0xc]
nop dword [eax]
mov edi, dword [ebp + esi - 8]
inc edx
mov dword [eax + ebx + 8], edi
movss xmm1, dword [ebp + esi - 4]
xorps xmm1, xmmword [0x1038bb20]
movss dword [eax + ebx + 0xc], xmm1
mov edi, dword [ebp + esi - 0x10]
mov dword [eax + ebx + 0x10], edi
movss xmm2, dword [ebp + esi - 0xc]
add ebp, 0xfffffff0
xorps xmm2, xmmword [0x1038bb20]
movss dword [eax + ebx + 0x14], xmm2
add eax, 0x10
cmp edx, ecx
jb 0x10047f70
mov edi, dword [esp]
lea ecx, [edx + edx + 1]
mov ebx, dword [esp + 4]
mov ebp, dword [esp + 8]
mov eax, ebp
lea edx, [ecx - 1]
sub eax, edi
dec eax
cmp eax, edx
jbe 0x10047fef
add edi, ecx
lea eax, [edi + edi]
neg eax
lea ecx, [eax + ebp*2]
mov edx, dword [ebx + ecx*4]
mov dword [ebx + edi*8], edx
movss xmm1, dword [ebx + ecx*4 + 4]
xorps xmm1, xmmword [0x1038bb20]
movss dword [ebx + edi*8 + 4], xmm1
pxor xmm1, xmm1
ucomiss xmm0, xmm1
jne 0x10048015
jp 0x10048015
mov eax, dword [esp + 0x10]
shl eax, 2
push eax
push 0
push dword [esp + 0x3c]
call fcn.1001b590
add esp, 0x24
pop ebp
pop ebx
pop edi
pop esi
ret
movd eax, xmm0
mov ecx, 0xffffff81
add eax, eax
mov edx, eax
shr edx, 0x18
add edx, 0xffffff82
test eax, eax
cmove edx, ecx
neg edx
js 0x1004803e
mov eax, 0x3c
cmp edx, 0x3c
cmova edx, eax
jmp 0x10048040
xor edx, edx
mov eax, edx
shl eax, 0x17
cmp edx, 5
lea ecx, [eax + 0x3f800000]
mov dword [esp], ecx
movss xmm1, dword [esp]
mulss xmm1, xmm0
movss xmm0, dword [0x1038bb30]
divss xmm0, xmm1
jge 0x100480c9
cmp dword [esp + 0x10], 0
jle 0x10048118
neg edx
mov eax, 1
shl edx, 0x17
neg edx
mov ecx, dword [esp + 0x34]
add edx, 0x3d000000
mov esi, dword [esp + 0x10]
cmp eax, ebp
jge 0x10048118
movss xmm2, dword [ebx + eax*8]
movss xmm1, dword [ebx + eax*8 + 4]
mulss xmm2, xmm2
mulss xmm1, xmm1
mov dword [esp], edx
addss xmm2, xmm1
sqrtss xmm2, xmm2
mulss xmm2, xmm0
mulss xmm2, dword [esp]
movss dword [ecx + eax*4 - 4], xmm2
inc eax
cmp eax, esi
jle 0x1004808d
jmp 0x10048118
cmp dword [esp + 0x10], 0
jle 0x10048118
mov ecx, dword [esp + 0x34]
mov edx, 1
mov esi, dword [esp + 0x10]
add eax, 0x3d000000
cmp edx, ebp
jge 0x10048118
movss xmm2, dword [ebx + edx*8]
movss xmm1, dword [ebx + edx*8 + 4]
mulss xmm2, xmm2
mulss xmm1, xmm1
mov dword [esp], eax
addss xmm2, xmm1
sqrtss xmm2, xmm2
mulss xmm2, xmm0
mulss xmm2, dword [esp]
movss dword [ecx + edx*4 - 4], xmm2
inc edx
cmp edx, esi
jle 0x100480e2
add esp, 0x18
pop ebp
pop ebx
pop edi
pop esi
ret
mov edx, 1
jmp 0x10047d86
mov edx, 1
jmp 0x10047e76
mov edx, 1
jmp 0x10047ca5
mov ecx, 1
jmp 0x10047fc0