Function at 0x100708a0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x5c
mov eax, dword [0x1008b040]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov edi, dword [0x10116ebc]
mov edx, ecx
mov eax, dword [edi + 0x3e28]
mov byte [eax + 0x90], 1
mov esi, dword [edi + 0x3e28]
cmp byte [esi + 0x93], 0
jne 0x10070d7c
test dl, 2
je 0x10070a87
movss xmm0, dword [esi + 0xd4]
lea ecx, [ebp - 0x20]
movss xmm2, dword [esi + 0xd8]
movaps xmm1, xmm0
addss xmm1, dword [0x10085708]
movaps xmm3, xmm2
movss dword [ebp - 0x14], xmm0
addss xmm3, dword [esi + 0x100]
movss dword [ebp - 0x10], xmm2
mov dword [ebp - 0x20], 0
movss dword [ebp - 0xc], xmm1
movss xmm1, dword [0x10085824]
movss dword [ebp - 8], xmm3
mov dword [ebp - 0x1c], 0
call fcn.10039850
push 0
push 0
xor edx, edx
lea ecx, [ebp - 0x14]
call fcn.10039a00
add esp, 8
test al, al
je 0x10070d7c
mov eax, dword [0x10116ebc]
xorps xmm0, xmm0
movss xmm3, dword [0x10085708]
movups xmm4, xmmword [eax + 0x3a10]
comiss xmm0, xmm4
movaps xmm2, xmm4
shufps xmm2, xmm4, 0xff
mulss xmm2, dword [eax + 0x3798]
movups xmmword [ebp - 0x30], xmm4
jbe 0x10070989
xorps xmm1, xmm1
jmp 0x10070990
movaps xmm1, xmm3
minss xmm1, xmm4
movss xmm4, dword [0x100857e4]
movss xmm5, dword [0x100856cc]
movss xmm6, dword [ebp - 0x2c]
comiss xmm0, xmm6
mulss xmm1, xmm4
addss xmm1, xmm5
cvttss2si ecx, xmm1
jbe 0x100709bb
xorps xmm1, xmm1
jmp 0x100709c2
movaps xmm1, xmm3
minss xmm1, xmm6
movss xmm6, dword [ebp - 0x28]
mulss xmm1, xmm4
addss xmm1, xmm5
cvttss2si eax, xmm1
shl eax, 8
or ecx, eax
comiss xmm0, xmm6
jbe 0x100709e2
xorps xmm1, xmm1
jmp 0x100709e9
movaps xmm1, xmm3
minss xmm1, xmm6
mulss xmm1, xmm4
addss xmm1, xmm5
cvttss2si eax, xmm1
shl eax, 0x10
or ecx, eax
comiss xmm0, xmm2
ja 0x10070a06
movaps xmm0, xmm3
minss xmm0, xmm2
movss xmm1, dword [ebp - 0x14]
mulss xmm0, xmm4
push ecx
mov dword [esp], 0x3f800000
movss dword [ebp - 0x20], xmm1
addss xmm0, xmm5
movss dword [ebp - 0x38], xmm1
cvttss2si eax, xmm0
movss xmm0, dword [ebp - 8]
shl eax, 0x18
or eax, ecx
movss dword [ebp - 0x1c], xmm0
movss xmm0, dword [ebp - 0x10]
mov ecx, dword [esi + 0x248]
push eax
lea eax, [ebp - 0x20]
movss dword [ebp - 0x34], xmm0
push eax
lea eax, [ebp - 0x38]
push eax
call fcn.1004c850
cmp byte [edi + 0x5a1c], 0
je 0x10070d7c
lea eax, [ebp - 0x17]
mov dword [ebp - 0x18], 0x7c2076
push eax
call fcn.10040370
add esp, 4
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1007e2f7
mov esp, ebp
pop ebp
ret
test dl, 1
je 0x10070d7c
movss xmm0, dword [esi + 0x10]
mov eax, dword [edi + 0x4760]
movaps xmm1, xmm0
movss dword [ebp - 0x18], xmm0
addss xmm1, dword [esi + 0x18]
movss dword [ebp - 0x34], xmm1
test eax, eax
jle 0x10070ad2
lea ecx, [eax + eax*2]
mov eax, dword [edi + 0x4768]
add ecx, ecx
mov eax, dword [eax + ecx*8 - 0x30]
cmp eax, dword [esi + 4]
jne 0x10070ad2
addss xmm0, dword [esi + 0x118]
movss dword [ebp - 0x18], xmm0
mov eax, dword [edi + 0x49bc]
test eax, eax
je 0x10070af9
imul ecx, dword [eax + 0x5c], 0x68
mov eax, dword [eax + 0x10]
movss xmm0, dword [ecx + eax + 8]
movss dword [ebp - 0x18], xmm0
movss xmm0, dword [ecx + eax + 0xc]
movss dword [ebp - 0x34], xmm0
test dl, 4
je 0x10070b69
mov ebx, dword [esi + 0x174]
test ebx, ebx
je 0x10070b6b
mov ecx, esi
mov edx, dword [ecx + 0x174]
cmp dword [edx + 0x10], 1
je 0x10070b6b
movups xmm0, xmmword [ecx + 0x1f4]
push 0
movups xmmword [edx + 0x3c], xmm0
mov eax, dword [ecx + 0x248]
movups xmm0, xmmword [edx + 0x2c]
movups xmmword [ebp - 0x30], xmm0
movups xmm0, xmmword [edx + 0x2c]
movups xmmword [ecx + 0x1f4], xmm0
movups xmm0, xmmword [ebp - 0x30]
movups xmmword [eax + 0x60], xmm0
mov eax, dword [ecx + 0x248]
mov ecx, dword [eax + 0x3c]
mov eax, dword [eax + 0x44]
add ecx, ecx
movups xmmword [eax + ecx*8 - 0x10], xmm0
mov eax, esi
lea ecx, [edx + 0x68]
push dword [eax + 0x248]
call fcn.1004d830
jmp 0x10070b6b
xor ebx, ebx
movss xmm0, dword [esi + 0xd8]
lea ecx, [ebp - 0x20]
movss xmm2, dword [ebp - 0x18]
movaps xmm1, xmm0
addss xmm1, dword [0x10085708]
movss dword [ebp - 0x10], xmm0
movss xmm0, dword [ebp - 0x34]
movss dword [ebp - 0x14], xmm2
movss dword [ebp - 0xc], xmm0
movss dword [ebp - 8], xmm1
movss xmm1, dword [0x10085824]
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x1c], 0
call fcn.10039850
push 0
push 0
xor edx, edx
lea ecx, [ebp - 0x14]
call fcn.10039a00
add esp, 8
test al, al
je 0x10070d11
mov eax, dword [0x10116ebc]
xorps xmm0, xmm0
movss xmm3, dword [0x10085708]
movups xmm4, xmmword [eax + 0x3a10]
comiss xmm0, xmm4
movaps xmm2, xmm4
shufps xmm2, xmm4, 0xff
mulss xmm2, dword [eax + 0x3798]
movups xmmword [ebp - 0x30], xmm4
jbe 0x10070c07
xorps xmm1, xmm1
jmp 0x10070c0e
movaps xmm1, xmm3
minss xmm1, xmm4
movss xmm4, dword [0x100857e4]
movss xmm5, dword [0x100856cc]
movss xmm6, dword [ebp - 0x2c]
comiss xmm0, xmm6
mulss xmm1, xmm4
addss xmm1, xmm5
cvttss2si ecx, xmm1
jbe 0x10070c39
xorps xmm1, xmm1
jmp 0x10070c40
movaps xmm1, xmm3
minss xmm1, xmm6
movss xmm6, dword [ebp - 0x28]
mulss xmm1, xmm4
addss xmm1, xmm5
cvttss2si eax, xmm1
shl eax, 8
or ecx, eax
comiss xmm0, xmm6
jbe 0x10070c60
xorps xmm1, xmm1
jmp 0x10070c67
movaps xmm1, xmm3
minss xmm1, xmm6
mulss xmm1, xmm4
addss xmm1, xmm5
cvttss2si eax, xmm1
shl eax, 0x10
or ecx, eax
comiss xmm0, xmm2
ja 0x10070c84
movaps xmm0, xmm3
minss xmm0, xmm2
mulss xmm0, xmm4
push ecx
mov dword [esp], 0x3f800000
addss xmm0, xmm5
cvttss2si eax, xmm0
movss xmm0, dword [ebp - 0xc]
shl eax, 0x18
or eax, ecx
movss dword [ebp - 0x20], xmm0
movss xmm0, dword [ebp - 0x10]
mov ecx, dword [esi + 0x248]
push eax
lea eax, [ebp - 0x20]
movss dword [ebp - 0x1c], xmm0
push eax
lea eax, [ebp - 0x14]
push eax
call fcn.1004c850
cmp byte [edi + 0x5a1c], 0
je 0x10070d11
movaps xmm0, xmmword [0x10085b40]
xor ecx, ecx
movups xmmword [ebp - 0x5c], xmm0
mov word [ebp - 0x3c], 0x324
movaps xmm0, xmmword [0x10085b50]
movups xmmword [ebp - 0x4c], xmm0
mov byte [ebp - 0x3a], 0
mov al, byte [ebp - 0x5c]
xor byte [ebp + ecx - 0x5b], al
inc ecx
cmp ecx, 0x21
jb 0x10070cf0
push 0
lea edx, [ebp - 0x5b]
mov byte [ebp - 0x3a], 0
lea ecx, [ebp - 0x14]
call fcn.100403a0
add esp, 4
test ebx, ebx
je 0x10070d7c
mov eax, dword [0x10116ebc]
mov edi, dword [eax + 0x3e28]
mov edx, dword [edi + 0x174]
cmp dword [edx + 0x10], 1
je 0x10070d73
movups xmm0, xmmword [edx + 0x3c]
mov eax, dword [edi + 0x248]
movups xmmword [ebp - 0x30], xmm0
movups xmm0, xmmword [edx + 0x3c]
movups xmmword [edi + 0x1f4], xmm0
movups xmm0, xmmword [ebp - 0x30]
movups xmmword [eax + 0x60], xmm0
mov eax, dword [edi + 0x248]
mov ecx, dword [eax + 0x3c]
mov eax, dword [eax + 0x44]
add ecx, ecx
movups xmmword [eax + ecx*8 - 0x10], xmm0
mov eax, dword [edx + 0xc]
lea ecx, [edx + 0x68]
inc eax
push eax
push dword [edi + 0x248]
call fcn.1004d830
mov eax, dword [esi + 0xd8]
mov dword [ebx + 0x1c], eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.1007e2f7
mov esp, ebp
pop ebp
ret