Function at 0x10027120
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ecx
cmp byte [0x100e42c4], 0
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
mov edi, ecx
je 0x10027167
test dword [ebx + 0x30], 0x10000
je 0x10027167
mov eax, dword [0x100eb3e4]
test al, 1
jne 0x10027159
or eax, 1
mov dword [0x100eb3e4], eax
mov dword [0x100eb3f0], 0
push 0x100eb3e8
call dword [0x100e6254]
add esp, 4
mov dword [edi + 0xe8], ebx
mov eax, dword [ebx + 8]
mov dword [edi + 0xec], eax
mov eax, dword [ebx + 0xc]
mov dword [edi + 0xf8], eax
mov eax, dword [ebx + 0x10]
mov dword [edi + 0xfc], eax
mov eax, dword [ebx + 0x14]
mov dword [edi + 0x100], eax
mov eax, dword [ebx + 0x30]
mov dword [edi + 0xf0], eax
mov ecx, dword [0x100e6110]
mov eax, dword [ecx]
mov eax, dword [eax + 0x30]
call eax
mov ecx, dword [0x100e6114]
push eax
mov edx, dword [ecx]
mov edx, dword [edx + 0xc]
call edx
mov ecx, eax
mov dword [edi + 0x14], ecx
test ecx, ecx
jne 0x100271ca
mov ecx, edi
call fcn.10027c60
jmp 0x10027305
mov eax, dword [0x100e6310]
add eax, 0xffffffcc
xor eax, 0x2b43e638
mov eax, dword [eax + ecx]
and eax, 1
add eax, 0xf
mov dword [edi + 0xb8], eax
mov eax, dword [0x100e6180]
mov eax, dword [eax + 0x4cb0]
mov dword [edi + 0xbc], eax
mov ecx, dword [0x100e61d0]
mov eax, dword [ecx]
mov eax, dword [eax + 0x30]
mov dword [ebp + 8], eax
call dword [ebp + 8]
mov ecx, dword [0x100e61d4]
fstp dword [ebp - 4]
mov eax, dword [ecx]
mov eax, dword [eax + 0x30]
mov dword [ebp + 8], eax
call dword [ebp + 8]
fdivr dword [ebp - 4]
mov ecx, dword [0x100e61cc]
mov eax, dword [ecx]
mov eax, dword [eax + 0x30]
mov dword [ebp + 8], eax
fstp dword [ebp - 4]
call dword [ebp + 8]
movss xmm0, dword [ebp - 4]
lea esi, [edi + 0xcc]
fstp dword [ebp + 8]
maxss xmm0, dword [ebp + 8]
push 0
movss dword [edi + 0xc8], xmm0
mov ecx, dword [0x100e6178]
mov eax, dword [ecx]
mov eax, dword [eax + 0x24]
mov dword [ebp + 8], eax
call dword [ebp + 8]
fstp dword [esi]
movss xmm0, dword [esi]
lea eax, [ebp + 8]
comiss xmm0, dword [0x100c7978]
mov dword [ebp + 8], 0x3f800000
cmovbe eax, esi
movss xmm0, dword [eax]
maxss xmm0, dword [0x100c78b4]
movss dword [esi], xmm0
mov eax, dword [0x100e616c]
divss xmm0, dword [eax + 0x20]
addss xmm0, dword [0x100c7948]
cvttss2si ecx, xmm0
mov dword [edi + 0xd0], ecx
mov eax, dword [0x100e6180]
mov eax, dword [eax + 0x16c]
mov dword [edi + 0xd4], eax
add eax, ecx
mov ecx, dword [edi + 0x14]
mov dword [edi + 0xd8], eax
test ecx, ecx
je 0x10027301
mov eax, dword [0x100e630c]
add eax, 0xffffffcd
xor eax, 0x2b43e637
cmp dword [eax + ecx], 0
jne 0x10027301
mov byte [edi + 0x18], 1
call fcn.100ad200
mov ecx, dword [0x100e6310]
mov eax, dword [edi + 0x14]
add ecx, 0xffffffcc
xor ecx, 0x2b43e638
mov eax, dword [ecx + eax]
mov dword [edi + 0x1c], eax
mov byte [edi + 0x2d], 0
jmp 0x10027305
mov byte [edi + 0x18], 0
cmp byte [edi + 0x18], 0
je 0x10027456
push 0
call fcn.10025d30
mov ecx, edi
call fcn.10026010
push ebx
mov ecx, edi
call fcn.10026b30
push 1
call fcn.10025d30
mov eax, dword [0x100e62c8]
mov ebx, dword [0x100e62c4]
mov dword [ebp + 8], eax
cmp ebx, eax
je 0x10027414
lea edi, [ebx + 0xc]
nop word [eax + eax]
mov ecx, dword [0x100e63a4]
add ecx, 0xffffffa7
xor ecx, 0x2b43e65d
add ecx, dword [ebx]
mov eax, dword [ecx + 0xc]
lea eax, [eax + eax*2]
shl eax, 4
push eax
lea eax, [edi + 0x34]
push eax
push dword [ecx]
call sub.VCRUNTIME140.dll_memcpy
mov ecx, dword [0x100e62d0]
add esp, 0xc
mov esi, dword [ebx]
add ecx, 0xffffffdc
mov eax, dword [edi - 8]
xor ecx, 0x2b43e628
mov dword [ecx + esi], eax
mov eax, dword [edi - 4]
mov dword [ecx + esi + 4], eax
mov eax, dword [edi]
mov dword [ecx + esi + 8], eax
mov ecx, dword [0x100e62dc]
mov eax, dword [edi + 0x1c]
add ecx, 0xffffffd9
xor ecx, 0x2b43e62b
mov dword [ecx + esi], eax
mov eax, dword [edi + 0x20]
mov dword [ecx + esi + 4], eax
mov eax, dword [edi + 0x24]
mov dword [ecx + esi + 8], eax
mov ecx, esi
mov edx, dword [0x100e62e0]
mov eax, dword [edi + 0x28]
add edx, 0xffffffd8
xor edx, 0x2b43e62c
mov dword [edx + esi], eax
mov eax, dword [edi + 0x2c]
mov dword [edx + esi + 4], eax
mov eax, dword [edi + 0x30]
mov dword [edx + esi + 8], eax
lea eax, [edi + 0x10]
mov edx, dword [0x100e621c]
push eax
call edx
mov edx, dword [0x100e6220]
lea eax, [edi + 4]
mov ecx, dword [ebx]
push eax
call edx
add ebx, 0x1840
lea edi, [edi + 0x1840]
cmp ebx, dword [ebp + 8]
jne 0x10027350
mov eax, dword [0x100e6128]
mov byte [eax + 8], 0
mov eax, dword [0x100e62b4]
mov dword [eax], 0xffffffff
mov eax, dword [0x100e616c]
movss xmm0, dword [0x100e62bc]
mov dword [0x100e62b8], 0
movss dword [eax + 0x10], xmm0
mov eax, dword [0x100e616c]
movss xmm0, dword [0x100e62c0]
movss dword [eax + 0x14], xmm0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4