Function at 0x10031e10
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x10188cb8
mov eax, dword fs:[0]
push eax
sub esp, 0x138
mov eax, dword [0x102a67c0]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
mov dword [ebp - 0x88], ebx
cmp dword [ebx + 0xc4], 0
je 0x100326d6
mov esi, dword [0x102a7958]
add esi, 0xabc5fa12
xor esi, 0x5b1c6e88
cmp byte [esi + 7], 0
je 0x100326d6
cmp dword [esi + 0x150], 0
je 0x100326d6
mov esi, dword [esi + 0xdc]
lea eax, [ebp - 0x80]
push eax
lea eax, [ebp - 0x84]
mov dword [ebp - 0x80], 0x73
push esi
push eax
call fcn.100ee230
add esp, 0xc
mov ecx, esi
mov eax, dword [eax]
call eax
mov dword [ebp - 0x98], eax
test eax, eax
je 0x100326d6
cmp byte [0x10c01f74], 0
je 0x100326d6
mov ecx, dword [ebx + 0xbc]
mov eax, dword [ebx + 0xb8]
dec ecx
and ecx, dword [ebx + 0xc0]
mov esi, dword [eax + ecx*4]
mov eax, dword [0x102a7958]
add eax, 0xabc5fa12
xor eax, 0x5b1c6e88
push dword [esi + 0x3c]
mov ecx, dword [eax + 0xcc]
mov eax, dword [ecx]
call dword [eax + 0xc]
test eax, eax
je 0x100326cb
mov eax, dword [0x102a7958]
lea edx, [ebp - 0x80]
movd xmm1, dword [0x10c01f80]
xorps xmm2, xmm2
cvtdq2ps xmm1, xmm1
mov dword [ebp - 0x80], 0
lea ecx, [eax - 0x543a05ee]
xor ecx, 0x5b1c6e88
movss dword [ebp - 0x84], xmm1
mov ecx, dword [ecx + 0x10c]
movss xmm0, dword [ecx]
lea ecx, [ebp - 0x8c]
subss xmm0, dword [esi]
comiss xmm0, xmm2
movss dword [ebp - 0x8c], xmm0
cmovae edx, ecx
lea ecx, [ebp - 0x84]
comiss xmm1, xmm0
cmovae ecx, edx
movss xmm0, dword [ecx]
comiss xmm0, xmm1
jb 0x10031f99
mov eax, dword [0x102a796c]
movss xmm1, dword [esi + 4]
add eax, 0xb24e4be6
xor eax, 0x90443fc4
movss xmm0, dword [eax + 4]
mulss xmm0, dword [0x101a1044]
subss xmm1, xmm0
comiss xmm2, xmm1
movss dword [esi + 4], xmm1
jae 0x100326cb
mov eax, dword [0x102a7958]
lea ecx, [eax - 0x543a05ee]
xor ecx, 0x5b1c6e88
mov ecx, dword [ecx + 0x100]
call fcn.10032870
mov eax, dword [0x102a7958]
lea ecx, [ebp - 0x1c]
add eax, 0xabc5fa12
mov dword [ebp - 0x14], 0
xor eax, 0x5b1c6e88
xorps xmm0, xmm0
fstp dword [ebp - 0x94]
movq qword [ebp - 0x1c], xmm0
push ecx
mov ecx, dword [eax + 0x100]
call fcn.100328a0
lea eax, [ebp - 0x98]
mov dword [ebp - 0xac], esi
mov dword [ebp - 0xa4], eax
lea eax, [ebp - 0x94]
mov dword [ebp - 0xa0], eax
lea eax, [ebp - 0x1c]
mov dword [ebp - 0x9c], eax
mov eax, dword [0x10c01f78]
mov dword [ebp - 0xa8], ebx
cmp eax, 4
jne 0x1003218f
push dword [ebx + 0x24]
lea ecx, [ebp - 0xac]
push 0x10c01f84
call fcn.10030a50
movd xmm0, dword [0x10c01f7c]
lea ecx, [ebp - 0x8c]
movss xmm1, dword [0x101a0e2c]
lea eax, [ebp - 0x84]
cvtdq2ps xmm0, xmm0
mov ebx, dword [ebx + 0x2c]
lea esi, [ebp - 0x80]
mov dword [ebp - 0x80], 0x3f800000
mov dword [ebp - 0x84], 0
mulss xmm0, dword [0x101a0ee8]
subss xmm0, dword [0x101a5bc8]
comiss xmm0, dword [0x101a0ee0]
movss dword [ebp - 0x8c], xmm0
cmovae eax, ecx
mov ecx, 0x10292698
comiss xmm1, xmm0
cmovae esi, eax
mov eax, dword [ebx]
mov edi, dword [eax + 0x2c]
lea eax, [ebp - 0x34]
push eax
call fcn.1002a0c0
cmp dword [ebp - 0x20], 0xf
lea eax, [ebp - 0x34]
push 1
cmova eax, dword [ebp - 0x34]
mov ecx, ebx
push 0
push eax
mov dword [ebp - 4], 0
call edi
lea ecx, [ebp - 0x34]
mov dword [ebp - 4], 0xffffffff
mov edi, eax
call fcn.10023b60
test edi, edi
je 0x10032104
movss xmm0, dword [0x10c01f94]
sub esp, 0xc
movss xmm1, dword [0x10c01f98]
mov eax, esp
movss xmm2, dword [0x10c01f9c]
mov ecx, edi
movss dword [eax], xmm0
movss dword [eax + 4], xmm1
movss dword [eax + 8], xmm2
call fcn.10034030
mov eax, dword [ebx]
mov ecx, 0x102926b0
mov edi, dword [eax + 0x2c]
lea eax, [ebp - 0x34]
push eax
call fcn.10030680
cmp dword [ebp - 0x20], 0xf
lea eax, [ebp - 0x34]
push 1
cmova eax, dword [ebp - 0x34]
mov ecx, ebx
push 0
push eax
mov dword [ebp - 4], 1
call edi
lea ecx, [ebp - 0x34]
mov dword [ebp - 4], 0xffffffff
mov edi, eax
call fcn.10023b60
test edi, edi
je 0x10032179
movss xmm0, dword [0x101a0f1c]
sub esp, 0xc
movss xmm1, dword [esi]
mov ecx, esp
mulss xmm1, xmm0
mov dword [ecx], 0
subss xmm0, xmm1
mov dword [ecx + 4], 0x3f800000
movss dword [ecx + 8], xmm0
mov ecx, edi
call fcn.10034030
push ebx
push 0x10c01f94
lea ecx, [ebp - 0xac]
call fcn.10030a50
jmp 0x100326d6
mov edi, dword [ebx + eax*4 + 0x1c]
cmp eax, 7
jne 0x1003224b
mov edi, dword [ebx + 0x38]
mov ecx, 0x102926d8
mov eax, dword [edi]
mov esi, dword [eax + 0x2c]
lea eax, [ebp - 0x34]
push eax
call fcn.1002a0c0
cmp dword [ebp - 0x20], 0xf
lea eax, [ebp - 0x34]
push 1
cmova eax, dword [ebp - 0x34]
mov ecx, edi
push 0
push eax
mov dword [ebp - 4], 2
call esi
lea ecx, [ebp - 0x34]
mov dword [ebp - 4], 0xffffffff
mov esi, eax
call fcn.10023b60
test esi, esi
je 0x10032214
movss xmm0, dword [0x10c01f84]
sub esp, 0xc
movss xmm1, dword [0x10c01f88]
mov eax, esp
movss xmm2, dword [0x10c01f8c]
mov ecx, esi
movss dword [eax], xmm0
movss dword [eax + 4], xmm1
movss dword [eax + 8], xmm2
call fcn.10034030
mov eax, dword [edi]
sub esp, 0xc
mov ecx, edi
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call dword [eax + 0x70]
push edi
push 0x10c01f84
lea ecx, [ebp - 0xac]
call fcn.10030a50
jmp 0x100326d6
cmp eax, 6
jne 0x10032643
mov ecx, 0x10c01fa4
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10032260
sub ecx, edx
je 0x10032643
mov eax, dword [0x10bf6d40]
test al, 1
jne 0x1003228a
or eax, 1
mov dword [0x10bf6d40], eax
mov eax, dword [ebx + 0x34]
mov dword [0x10bf6d3c], eax
jmp 0x1003228f
mov eax, dword [0x10bf6d3c]
mov eax, dword [eax]
mov ecx, 0x102926f0
mov esi, dword [eax + 0x2c]
lea eax, [ebp - 0x34]
push eax
call fcn.1002f670
cmp dword [ebp - 0x20], 0xf
lea eax, [ebp - 0x34]
mov ecx, dword [0x10bf6d3c]
cmova eax, dword [ebp - 0x34]
push 1
push 0
push eax
mov dword [ebp - 4], 3
call esi
mov esi, eax
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x34]
mov dword [ebp - 0x8c], esi
call fcn.10023b60
test esi, esi
je 0x100325aa
push 0x10c01fa4
push ebx
call fcn.100304f0
add esp, 8
test al, al
jne 0x100325aa
push 1
lea ecx, [ebp - 0x144]
call fcn.10028f50
lea eax, [ebp - 0x4c]
mov dword [ebp - 4], 4
push eax
mov ecx, 0x10292708
call fcn.10030750
push 0x10c01fa4
lea eax, [ebp - 0x4c]
mov byte [ebp - 4], 5
push eax
lea eax, [ebp - 0x144]
push eax
call fcn.10027ad0
add esp, 8
push eax
call fcn.100302b0
add esp, 8
mov dword [ebp - 0x84], eax
cmp byte [0x10292748], 0
je 0x100323d0
cmp byte [0x10292749], 0
jne 0x1003243e
xor esi, esi
mov byte [0x10292749], 1
mov dword [ebp - 0x80], esi
nop dword [eax]
xor esi, dword [0x10292800]
xor edi, edi
xor edi, dword [0x10292804]
xor esi, 0x1de26cd5
xor edi, 0xd28f2c5
mov eax, esi
mov ecx, edi
shld ecx, eax, 0xd
xor edi, ecx
shl eax, 0xd
xor esi, eax
mov edx, edi
mov ebx, esi
shrd ebx, edx, 7
xor ebx, esi
shr edx, 7
mov esi, dword [ebp - 0x80]
xor edx, edi
mov ecx, ebx
shld edx, ecx, 0x11
shl ecx, 0x11
xor cl, byte [esi + 0x1029274a]
xor cl, bl
mov byte [esi + 0x1029274a], cl
inc esi
mov dword [ebp - 0x80], esi
cmp esi, 0xb1
jb 0x10032370
jmp 0x1003243e
xor esi, esi
mov dword [ebp - 0x80], esi
nop word [eax + eax]
xor esi, dword [0x10292800]
xor edi, edi
xor edi, dword [0x10292804]
xor esi, 0x1de26cd5
xor edi, 0xd28f2c5
mov eax, esi
mov ecx, edi
shld ecx, eax, 0xd
xor edi, ecx
shl eax, 0xd
xor esi, eax
mov edx, edi
mov ebx, esi
shrd ebx, edx, 7
xor ebx, esi
shr edx, 7
mov esi, dword [ebp - 0x80]
xor edx, edi
mov ecx, ebx
shld edx, ecx, 0x11
shl ecx, 0x11
xor cl, byte [esi + 0x1029274a]
xor cl, bl
mov byte [esi + 0x1029274a], cl
inc esi
mov dword [ebp - 0x80], esi
cmp esi, 0xb1
jb 0x100323e0
lea eax, [ebp - 0x8d]
push eax
push 0x102927fa
push 0x1029274a
lea ecx, [ebp - 0x64]
call fcn.10027a10
lea eax, [ebp - 0x64]
mov byte [ebp - 4], 6
push eax
push dword [ebp - 0x84]
call fcn.10027ad0
add esp, 8
lea ecx, [ebp - 0x64]
call fcn.10023b60
lea ecx, [ebp - 0x4c]
mov byte [ebp - 4], 4
call fcn.10023b60
lea eax, [ebp - 0x64]
mov ecx, 0x10292828
push eax
call fcn.1002f5a0
cmp dword [ebp - 0x50], 0xf
lea eax, [ebp - 0x64]
lea ecx, [ebp - 0x144]
mov byte [ebp - 4], 7
cmova eax, dword [ebp - 0x64]
mov dword [ebp - 0x84], eax
lea eax, [ebp - 0x7c]
push eax
call fcn.1002e440
mov esi, eax
cmp dword [esi + 0x14], 0xf
mov byte [ebp - 4], 8
jbe 0x100324c1
mov esi, dword [esi]
lea eax, [ebp - 0x4c]
mov ecx, 0x10292808
push eax
call fcn.100305b0
cmp dword [ebp - 0x38], 0xf
lea ebx, [ebp - 0x4c]
push 0x28
cmova ebx, dword [ebp - 0x4c]
mov byte [ebp - 4], 9
call fcn.10184796
mov edx, dword [0x102a7b44]
add esp, 4
mov edi, eax
mov ecx, edi
push 0
push 0
push dword [ebp - 0x84]
call edx
mov edx, dword [0x102a7988]
mov ecx, edi
push 0
push 0
push 0
push 0
push esi
push ebx
call edx
mov eax, dword [0x102a7958]
add eax, 0xabc5fa12
mov dword [ebp - 0x84], 0x53
xor eax, 0x5b1c6e88
mov esi, dword [eax + 0xdc]
lea eax, [ebp - 0x84]
push eax
lea eax, [ebp - 0x80]
push esi
push eax
call fcn.100ee230
add esp, 0xc
mov ecx, esi
mov eax, dword [eax]
push edi
push ebx
call eax
mov esi, eax
mov ecx, esi
mov edx, dword [esi]
call dword [edx + 0x30]
lea ecx, [ebp - 0x4c]
mov dword [0x10bf6d3c], esi
call fcn.10023b60
lea ecx, [ebp - 0x7c]
call fcn.10023b60
lea ecx, [ebp - 0x64]
mov byte [ebp - 4], 4
call fcn.10023b60
mov ecx, dword [ebp - 0x8c]
push 0x10c01fa4
call fcn.10033ff0
mov ecx, dword [ebp - 0x88]
push 0x10c01fa4
call fcn.10030580
lea ecx, [ebp - 0x144]
mov dword [ebp - 4], 0xffffffff
call fcn.1002a400
mov eax, dword [0x10bf6d3c]
mov ecx, 0x10292848
mov eax, dword [eax]
mov esi, dword [eax + 0x2c]
lea eax, [ebp - 0x64]
push eax
call fcn.1002a0c0
cmp dword [ebp - 0x50], 0xf
lea eax, [ebp - 0x64]
mov ecx, dword [0x10bf6d3c]
cmova eax, dword [ebp - 0x64]
push 1
push 0
push eax
mov dword [ebp - 4], 0xa
call esi
lea ecx, [ebp - 0x64]
mov dword [ebp - 4], 0xffffffff
mov esi, eax
call fcn.10023b60
test esi, esi
je 0x10032628
movss xmm0, dword [0x10c01f84]
sub esp, 0xc
movss xmm1, dword [0x10c01f88]
mov eax, esp
movss xmm2, dword [0x10c01f8c]
mov ecx, esi
movss dword [eax], xmm0
movss dword [eax + 4], xmm1
movss dword [eax + 8], xmm2
call fcn.10034030
push dword [0x10bf6d3c]
lea ecx, [ebp - 0xac]
push 0x10c01f84
call fcn.10030a50
jmp 0x100326d6
mov eax, dword [edi]
mov ecx, 0x10292860
mov esi, dword [eax + 0x2c]
lea eax, [ebp - 0x4c]
push eax
call fcn.1002a0c0
cmp dword [ebp - 0x38], 0xf
lea eax, [ebp - 0x4c]
push 1
cmova eax, dword [ebp - 0x4c]
mov ecx, edi
push 0
push eax
mov dword [ebp - 4], 0xb
call esi
lea ecx, [ebp - 0x4c]
mov dword [ebp - 4], 0xffffffff
mov esi, eax
call fcn.10023b60
test esi, esi
je 0x100326b8
movss xmm0, dword [0x10c01f84]
sub esp, 0xc
movss xmm1, dword [0x10c01f88]
mov eax, esp
movss xmm2, dword [0x10c01f8c]
mov ecx, esi
movss dword [eax], xmm0
movss dword [eax + 4], xmm1
movss dword [eax + 8], xmm2
call fcn.10034030
push edi
push 0x10c01f84
lea ecx, [ebp - 0xac]
call fcn.10030a50
jmp 0x100326d6
lea ecx, [ebx + 0xb4]
call fcn.10033f90
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.10184b39
mov esp, ebp
pop ebp
ret