Function at 0x10049cc0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x10080021
mov eax, dword fs:[0]
push eax
sub esp, 0x44
mov eax, dword [0x10098010]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x44], ecx
movsd xmm0, qword [0x100ea680]
ucomisd xmm0, qword [0x1008d508]
lahf
test ah, 0x44
jnp 0x1004a2f0
mov eax, dword [0x100e8ffc]
mov ecx, dword [eax]
call fcn.10041480
test byte [eax], 1
jne 0x1004a2f0
mov eax, dword [0x100e8ffc]
mov ecx, dword [eax]
call fcn.10047d20
cmp dword [eax], 2
jne 0x1004a2f0
mov eax, dword [0x100e8ffc]
mov ecx, dword [eax]
call fcn.1007ad50
cmp dword [eax], 0
jne 0x1004a2f0
movaps xmm0, xmmword [0x1008dcf0]
mov esi, 0xc
mov dword [ebp - 0x40], esi
movups xmmword [ebp - 0x3c], xmm0
lea eax, [esi + 1]
call fcn.1007cdb0
mov edi, esp
lea eax, [ebp - 0x3b]
xor ecx, ecx
sub eax, edi
sub esi, ecx
lea edx, [ecx + edi]
mov cl, byte [ebp - 0x3c]
mov edi, eax
mov al, byte [edx + edi]
lea edx, [edx + 1]
xor al, cl
mov byte [edx - 1], al
sub esi, 1
jne 0x10049d74
mov eax, dword fs:[0x2c]
mov esi, 0xc
mov ecx, dword [0x100e42e0]
mov edi, esp
mov byte [edi + esi], 0
mov esi, dword [eax + ecx*4]
mov eax, dword [0x100f15e8]
cmp eax, dword [esi + 4]
jle 0x10049de8
push 0x100f15e8
call fcn.1007bfd7
add esp, 4
cmp dword [0x100f15e8], 0xffffffff
jne 0x10049de8
mov dword [ebp - 4], 0
mov ecx, dword [0x100e898c]
push edi
mov eax, dword [ecx]
mov eax, dword [eax + 0x38]
call eax
push 0x100f15e8
mov dword [0x100f15ec], eax
call fcn.1007bf8d
add esp, 4
call fcn.10045930
xorps xmm4, xmm4
mov dword [ebp - 0x3c], 0
movq xmm0, qword [eax + 0xdc]
mov eax, dword [eax + 0xe4]
movq qword [ebp - 0x1c], xmm0
movss xmm1, dword [ebp - 0x18]
movq qword [ebp - 0x28], xmm0
movss xmm0, dword [ebp - 0x1c]
mulss xmm1, xmm1
mov dword [ebp - 0x20], eax
mulss xmm0, xmm0
addss xmm1, xmm0
movss dword [ebp - 0x4c], xmm1
sqrtss xmm0, dword [ebp - 0x4c]
movss dword [ebp - 0x3c], xmm0
movss xmm2, dword [ebp - 0x3c]
comiss xmm2, xmm4
movss xmm1, dword [0x1008d760]
movss xmm0, dword [0x1008d6f8]
movss dword [0x100e87fc], xmm2
jbe 0x10049e7e
divss xmm0, xmm2
cvtps2pd xmm0, xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_asin_precise
movss xmm1, dword [0x1008d760]
xorps xmm4, xmm4
cvtsd2ss xmm0, xmm0
mulss xmm0, dword [0x1008d744]
jmp 0x10049e81
movaps xmm0, xmm1
mov eax, dword [0x100e8810]
movss dword [0x100e8800], xmm0
movss xmm0, dword [0x100c3520]
mulss xmm0, dword [0x1008d7f8]
mov eax, dword [eax + 0x30]
mov edx, eax
mov ecx, eax
shr edx, 9
shr ecx, 4
and dl, 1
and ecx, 0xffffff01
movss dword [0x100c3520], xmm0
mov dword [ebp - 0x4c], ecx
xorps xmm0, xmm0
mov ecx, eax
movss dword [ebp - 0x48], xmm0
movss xmm0, dword [0x1008d78c]
shr ecx, 0xa
shr eax, 3
and cl, 1
test al, 1
je 0x10049efa
test dl, dl
je 0x10049eec
movss xmm0, dword [0x1008d738]
jmp 0x10049f31
test cl, cl
je 0x10049f36
movss xmm0, dword [0x1008d810]
jmp 0x10049f31
cmp byte [ebp - 0x4c], 0
je 0x10049f1c
test dl, dl
je 0x10049f0e
movss xmm0, dword [0x1008d774]
jmp 0x10049f31
test cl, cl
je 0x10049f31
movss xmm0, dword [0x1008d81c]
jmp 0x10049f31
test dl, dl
je 0x10049f25
movaps xmm0, xmm1
jmp 0x10049f31
test cl, cl
je 0x10049f36
movss xmm0, dword [0x1008d818]
movss dword [ebp - 0x48], xmm0
mov eax, dword [0x100e86d0]
cmp eax, dword [esi + 4]
jle 0x10049f7a
push 0x100e86d0
call fcn.1007bfd7
add esp, 4
cmp dword [0x100e86d0], 0xffffffff
jne 0x10049f77
push 0x10082a70
mov byte [0x100e86fc], 0
call fcn.1007be5e
push 0x100e86d0
call fcn.1007bf8d
add esp, 8
xorps xmm4, xmm4
mov edi, dword [ebp - 0x44]
movss xmm1, dword [ebp - 0x48]
movss xmm0, dword [0x1008d824]
addss xmm1, dword [edi + 4]
comiss xmm1, dword [0x1008d78c]
movaps xmm2, xmm1
movss dword [ebp - 0x48], xmm1
divss xmm2, dword [0x1008d7c0]
ja 0x10049fad
comiss xmm0, xmm1
jbe 0x10049ff0
movaps xmm0, xmm2
call fcn.10040c20
movss dword [ebp - 0x44], xmm0
fld dword [ebp - 0x44]
push ecx
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
movss xmm1, dword [ebp - 0x48]
xorps xmm4, xmm4
fstp dword [ebp - 0x50]
movss xmm0, dword [ebp - 0x50]
add esp, 4
comiss xmm4, xmm1
mulss xmm0, dword [0x1008d7c0]
jbe 0x10049fec
addss xmm1, xmm0
jmp 0x10049ff0
subss xmm1, xmm0
mov eax, dword [0x100e8810]
movss dword [edi + 4], xmm1
mov dword [eax + 0x24], 0
mov eax, dword [0x100e86d0]
cmp eax, dword [esi + 4]
jle 0x1004a045
push 0x100e86d0
call fcn.1007bfd7
add esp, 4
cmp dword [0x100e86d0], 0xffffffff
jne 0x1004a042
push 0x10082a70
mov byte [0x100e86fc], 0
call fcn.1007be5e
push 0x100e86d0
call fcn.1007bf8d
add esp, 8
xorps xmm4, xmm4
movss xmm1, dword [edi + 4]
subss xmm1, dword [0x100e87f8]
comiss xmm1, dword [0x1008d78c]
movaps xmm0, xmm1
movss dword [ebp - 0x4c], xmm1
divss xmm0, dword [0x1008d7c0]
ja 0x1004a078
movss xmm2, dword [0x1008d824]
comiss xmm2, xmm1
jbe 0x1004a0b8
call fcn.10040c20
movss dword [ebp - 0x44], xmm0
fld dword [ebp - 0x44]
push ecx
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
movss xmm1, dword [ebp - 0x4c]
xorps xmm4, xmm4
fstp dword [ebp - 0x50]
movss xmm0, dword [ebp - 0x50]
add esp, 4
comiss xmm4, xmm1
mulss xmm0, dword [0x1008d7c0]
jbe 0x1004a0b4
addss xmm1, xmm0
jmp 0x1004a0b8
subss xmm1, xmm0
movaps xmm0, xmm1
call fcn.10040c20
comiss xmm1, xmm4
movss xmm3, dword [0x10090a80]
movaps xmm2, xmm0
movss xmm0, dword [edi + 4]
movss dword [0x100e87f8], xmm0
jbe 0x1004a0f4
mov eax, dword [0x100f15ec]
mov ecx, dword [eax + 0x2c]
xor ecx, eax
mov dword [ebp - 0x44], ecx
movss xmm0, dword [ebp - 0x44]
xorps xmm0, xmm3
jmp 0x1004a10b
comiss xmm4, xmm1
jbe 0x1004a115
mov eax, dword [0x100f15ec]
mov ecx, dword [eax + 0x2c]
xor ecx, eax
mov dword [ebp - 0x44], ecx
movss xmm0, dword [ebp - 0x44]
mov eax, dword [0x100e8810]
movss dword [eax + 0x28], xmm0
movss xmm0, dword [0x100e8800]
comiss xmm0, xmm2
jae 0x1004a12f
comiss xmm2, dword [0x1008d728]
jb 0x1004a2f0
mov eax, dword [0x100e86d0]
cmp eax, dword [esi + 4]
jle 0x1004a170
push 0x100e86d0
call fcn.1007bfd7
add esp, 4
cmp dword [0x100e86d0], 0xffffffff
jne 0x1004a170
push 0x10082a70
mov byte [0x100e86fc], 0
call fcn.1007be5e
push 0x100e86d0
call fcn.1007bf8d
add esp, 8
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x28]
push eax
call fcn.100752d0
mov eax, dword [0x100e86d0]
cmp eax, dword [esi + 4]
jle 0x1004a1be
push 0x100e86d0
call fcn.1007bfd7
add esp, 4
cmp dword [0x100e86d0], 0xffffffff
jne 0x1004a1be
push 0x10082a70
mov byte [0x100e86fc], 0
call fcn.1007be5e
push 0x100e86d0
call fcn.1007bf8d
add esp, 8
movss xmm5, dword [edi + 4]
movss xmm3, dword [ebp - 0x18]
movaps xmm1, xmm5
subss xmm1, xmm3
movss dword [ebp - 0x48], xmm5
comiss xmm1, dword [0x1008d78c]
movaps xmm0, xmm1
movss dword [ebp - 0x4c], xmm1
divss xmm0, dword [0x1008d7c0]
ja 0x1004a1fa
movss xmm2, dword [0x1008d824]
comiss xmm2, xmm1
jbe 0x1004a244
call fcn.10040c20
movss dword [ebp - 0x44], xmm0
fld dword [ebp - 0x44]
push ecx
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
movss xmm1, dword [ebp - 0x4c]
xorps xmm0, xmm0
movss xmm3, dword [ebp - 0x18]
add esp, 4
movss xmm5, dword [ebp - 0x48]
fstp dword [ebp - 0x50]
comiss xmm0, xmm1
movss xmm0, dword [ebp - 0x50]
mulss xmm0, dword [0x1008d7c0]
jbe 0x1004a240
addss xmm1, xmm0
jmp 0x1004a244
subss xmm1, xmm0
movss xmm2, dword [0x100e8800]
comiss xmm2, xmm1
movss xmm4, dword [0x100e87fc]
movss xmm6, dword [0x1008d6f8]
jae 0x1004a28a
comiss xmm6, xmm4
jae 0x1004a28a
mov eax, dword [0x100f15ec]
addss xmm2, xmm3
movss dword [edi + 4], xmm2
mov ecx, dword [eax + 0x2c]
xor ecx, eax
mov dword [ebp - 0x44], ecx
movss xmm0, dword [ebp - 0x44]
xorps xmm0, xmmword [0x10090a80]
jmp 0x1004a2e6
movaps xmm0, xmm2
xorps xmm0, xmmword [0x10090a80]
comiss xmm1, xmm0
jae 0x1004a2bb
comiss xmm6, xmm4
jae 0x1004a2bb
mov eax, dword [0x100f15ec]
subss xmm3, xmm2
movss dword [edi + 4], xmm3
mov ecx, dword [eax + 0x2c]
xor ecx, eax
mov dword [ebp - 0x44], ecx
movss xmm0, dword [ebp - 0x44]
jmp 0x1004a2e6
mulss xmm2, dword [0x100c3520]
mov eax, dword [0x100f15ec]
addss xmm2, xmm5
movss dword [edi + 4], xmm2
mov ecx, dword [eax + 0x2c]
xor ecx, eax
mov dword [ebp - 0x44], ecx
movss xmm0, dword [ebp - 0x44]
mulss xmm0, dword [0x100c3520]
mov eax, dword [0x100e8810]
movss dword [eax + 0x28], xmm0
lea esp, [ebp - 0x5c]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.1007ba06
mov esp, ebp
pop ebp
ret