Function at 0x10031510
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x10188c18
mov eax, dword fs:[0]
push eax
sub esp, 0x14c
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 edi, ecx
mov dword [ebp - 0x98], edi
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 0xa8], eax
mov dword [ebp - 0x90], ecx
cmp byte [eax], 0
jne 0x10031564
xor al, al
jmp 0x10031df2
lea ebx, [eax + 0x10]
mov dword [ebp - 0x8c], 5
add eax, 0x20
mov dword [ebp - 0x94], ebx
mov dword [ebp - 0x84], eax
mov eax, dword [0x102a7958]
add eax, 0xabc5fa12
xor eax, 0x5b1c6e88
mov esi, dword [eax + 0x100]
lea eax, [ebp - 0x8c]
push eax
lea eax, [ebp - 0x80]
push esi
push eax
call fcn.100ee230
add esp, 0xc
mov ecx, esi
mov eax, dword [eax]
call eax
mov eax, dword [0x102a7958]
xorps xmm0, xmm0
add eax, 0xabc5fa12
movq qword [ebp - 0x1c], xmm0
xor eax, 0x5b1c6e88
mov dword [ebp - 0x14], 0
fstp dword [ebp - 0xac]
mov dword [ebp - 0xa4], 7
mov esi, dword [eax + 0x100]
lea eax, [ebp - 0xa4]
push eax
lea eax, [ebp - 0x88]
push esi
push eax
call fcn.100ee230
add esp, 0xc
lea ecx, [ebp - 0x1c]
mov eax, dword [eax]
push ecx
mov ecx, esi
call eax
mov esi, dword [ebp - 0xa8]
lea eax, [ebp + 0x14]
mov dword [ebp - 0xc0], eax
lea eax, [ebp + 0x10]
mov dword [ebp - 0xbc], eax
lea eax, [ebp - 0xac]
mov dword [ebp - 0xb4], eax
lea eax, [ebp - 0x1c]
mov dword [ebp - 0xb0], eax
mov eax, dword [esi + 4]
mov dword [ebp - 0xb8], edi
cmp eax, 4
jne 0x1003185e
push dword [ebp - 0x90]
lea ecx, [ebp - 0xc0]
push dword [edi + 0x24]
push ebx
call fcn.10030820
movd xmm1, dword [esi + 8]
lea ecx, [ebp - 0xa4]
movss xmm2, dword [0x101a0e2c]
lea eax, [ebp - 0xa8]
cvtdq2ps xmm1, xmm1
mov ebx, dword [edi + 0x2c]
lea esi, [ebp - 0x8c]
mov dword [ebp - 0x8c], 0x3f800000
mov dword [ebp - 0xa8], 0
xorps xmm0, xmm0
mulss xmm1, dword [0x101a0ee8]
subss xmm1, dword [0x101a5bc8]
comiss xmm1, xmm0
movss dword [ebp - 0xa4], xmm1
cmovae eax, ecx
mov ecx, 0x10292490
comiss xmm2, xmm1
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
mov edi, eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x20]
cmp eax, 0xf
jbe 0x10031707
push eax
push dword [ebp - 0x34]
lea eax, [ebp - 0x34]
push eax
call fcn.100163b0
add esp, 0xc
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x20], 0xf
mov byte [ebp - 0x34], 0
test edi, edi
je 0x10031790
mov eax, dword [ebp - 0x84]
mov dword [ebp - 0x94], 0xb
movss xmm0, dword [eax]
movss dword [ebp - 0x80], xmm0
movss xmm0, dword [eax + 4]
movss dword [ebp - 0x88], xmm0
movss xmm0, dword [eax + 8]
lea eax, [ebp - 0x94]
push eax
lea eax, [ebp - 0x9c]
movss dword [ebp - 0x98], xmm0
push edi
push eax
call fcn.100ee230
movss xmm0, dword [ebp - 0x98]
mov ecx, edi
movss dword [esp + 8], xmm0
movss xmm0, dword [ebp - 0x88]
mov eax, dword [eax]
movss dword [esp + 4], xmm0
movss xmm0, dword [ebp - 0x80]
movss dword [esp], xmm0
call eax
mov eax, dword [ebx]
mov ecx, 0x102924a8
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
mov edi, eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x20]
cmp eax, 0xf
jbe 0x100317df
push eax
push dword [ebp - 0x34]
lea eax, [ebp - 0x34]
push eax
call fcn.100163b0
add esp, 0xc
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x20], 0xf
mov byte [ebp - 0x34], 0
test edi, edi
je 0x1003184c
movss xmm0, dword [0x101a0f1c]
lea eax, [ebp - 0x80]
movss xmm1, dword [esi]
mulss xmm1, xmm0
push eax
lea eax, [ebp - 0x9c]
mov dword [ebp - 0x80], 0xb
push edi
subss xmm0, xmm1
push eax
movss dword [ebp - 0x88], xmm0
call fcn.100ee230
movss xmm0, dword [ebp - 0x88]
mov ecx, edi
movss dword [esp + 8], xmm0
mov dword [esp + 4], 0x3f800000
mov eax, dword [eax]
mov dword [esp], 0
call eax
push dword [ebp - 0x90]
push ebx
push dword [ebp - 0x84]
jmp 0x10031de5
mov edx, dword [edi + eax*4 + 0x1c]
mov dword [ebp - 0x80], edx
cmp eax, 7
jne 0x10031969
mov edi, dword [edi + 0x38]
mov ecx, 0x102924d0
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
mov esi, eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x20]
cmp eax, 0xf
jbe 0x100318c0
push eax
push dword [ebp - 0x34]
lea eax, [ebp - 0x34]
push eax
call fcn.100163b0
add esp, 0xc
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x20], 0xf
mov byte [ebp - 0x34], 0
test esi, esi
je 0x10031943
movss xmm0, dword [ebx]
lea eax, [ebp - 0x80]
movss dword [ebp - 0x94], xmm0
movss xmm0, dword [ebx + 4]
push eax
movss dword [ebp - 0x98], xmm0
lea eax, [ebp - 0x9c]
movss xmm0, dword [ebx + 8]
push esi
push eax
movss dword [ebp - 0x88], xmm0
mov dword [ebp - 0x80], 0xb
call fcn.100ee230
movss xmm0, dword [ebp - 0x88]
mov ecx, esi
movss dword [esp + 8], xmm0
movss xmm0, dword [ebp - 0x98]
mov eax, dword [eax]
movss dword [esp + 4], xmm0
movss xmm0, dword [ebp - 0x94]
movss dword [esp], xmm0
call eax
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]
jmp 0x10031ddd
cmp eax, 6
jne 0x10031d4d
lea eax, [esi + 0x30]
mov ecx, eax
mov dword [ebp - 0x8c], eax
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10031980
sub ecx, esi
je 0x10031d4d
mov eax, dword [0x10bf6d38]
test al, 1
jne 0x100319aa
or eax, 1
mov dword [0x10bf6d38], eax
mov eax, dword [edi + 0x34]
mov dword [0x10bf6d34], eax
jmp 0x100319af
mov eax, dword [0x10bf6d34]
mov eax, dword [eax]
mov ecx, 0x102924e8
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 [0x10bf6d34]
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 - 0x88], esi
call fcn.10023b60
test esi, esi
je 0x10031cc8
mov esi, dword [ebp - 0x8c]
push esi
push edi
call fcn.100304f0
add esp, 8
test al, al
jne 0x10031cc8
push 1
lea ecx, [ebp - 0x158]
call fcn.10028f50
lea eax, [ebp - 0x4c]
mov dword [ebp - 4], 4
push eax
mov ecx, 0x10292500
call fcn.10030750
push esi
lea eax, [ebp - 0x4c]
mov byte [ebp - 4], 5
push eax
lea eax, [ebp - 0x158]
push eax
call fcn.10027ad0
add esp, 8
push eax
call fcn.100302b0
add esp, 8
mov dword [ebp - 0x80], eax
cmp byte [0x10292540], 0
je 0x10031af0
cmp byte [0x10292541], 0
jne 0x10031b64
xor esi, esi
mov byte [0x10292541], 1
mov dword [ebp - 0x84], esi
nop word [eax + eax]
xor esi, dword [0x102925f8]
xor edi, edi
xor edi, dword [0x102925fc]
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 - 0x84]
xor edx, edi
mov ecx, ebx
shld edx, ecx, 0x11
shl ecx, 0x11
xor cl, bl
xor byte [esi + 0x10292542], cl
inc esi
mov dword [ebp - 0x84], esi
cmp esi, 0xb0
jb 0x10031a90
jmp 0x10031b64
xor esi, esi
mov dword [ebp - 0x84], esi
nop dword [eax + eax]
xor esi, dword [0x102925f8]
xor edi, edi
xor edi, dword [0x102925fc]
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 - 0x84]
xor edx, edi
mov ecx, ebx
shld edx, ecx, 0x11
shl ecx, 0x11
xor cl, byte [esi + 0x10292542]
xor cl, bl
mov byte [esi + 0x10292542], cl
inc esi
mov dword [ebp - 0x84], esi
cmp esi, 0xb0
jb 0x10031b00
lea eax, [ebp - 0x9d]
push eax
push 0x102925f1
push 0x10292542
lea ecx, [ebp - 0x64]
call fcn.10027a10
lea eax, [ebp - 0x64]
mov byte [ebp - 4], 6
push eax
push dword [ebp - 0x80]
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, 0x10292620
push eax
call fcn.1002f5a0
cmp dword [ebp - 0x50], 0xf
lea eax, [ebp - 0x64]
lea ecx, [ebp - 0x158]
mov byte [ebp - 4], 7
cmova eax, dword [ebp - 0x64]
mov dword [ebp - 0x80], eax
lea eax, [ebp - 0x7c]
push eax
call fcn.1002e440
mov esi, eax
cmp dword [esi + 0x14], 0xf
mov byte [ebp - 4], 8
jbe 0x10031be1
mov esi, dword [esi]
lea eax, [ebp - 0x4c]
mov ecx, 0x10292600
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 - 0x80]
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 - 0x80], 0x53
xor eax, 0x5b1c6e88
mov esi, dword [eax + 0xdc]
lea eax, [ebp - 0x80]
push eax
lea eax, [ebp - 0x9c]
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 [0x10bf6d34], esi
call fcn.10023b60
lea ecx, [ebp - 0x7c]
call fcn.10023b60
lea ecx, [ebp - 0x64]
mov byte [ebp - 4], 4
call fcn.10023b60
mov ebx, dword [ebp - 0x8c]
mov ecx, dword [ebp - 0x88]
push ebx
call fcn.10033ff0
mov ecx, dword [ebp - 0x98]
push ebx
call fcn.10030580
lea ecx, [ebp - 0x158]
mov dword [ebp - 4], 0xffffffff
call fcn.1002a400
mov ebx, dword [ebp - 0x94]
mov eax, dword [0x10bf6d34]
mov ecx, 0x10292640
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 [0x10bf6d34]
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 0x10031d3c
movss xmm0, dword [ebx]
sub esp, 0xc
movss xmm1, dword [ebx + 4]
mov eax, esp
movss xmm2, dword [ebx + 8]
mov ecx, esi
movss dword [eax], xmm0
movss dword [eax + 4], xmm1
movss dword [eax + 8], xmm2
call fcn.10034030
push dword [ebp - 0x90]
push dword [0x10bf6d34]
jmp 0x10031de4
mov eax, dword [edx]
mov ecx, 0x10292658
mov esi, dword [eax + 0x2c]
lea eax, [ebp - 0x4c]
push eax
call fcn.1002a0c0
cmp dword [ebp - 0x38], 0xf
lea eax, [ebp - 0x4c]
mov edi, dword [ebp - 0x80]
mov ecx, edi
cmova eax, dword [ebp - 0x4c]
push 1
push 0
push eax
mov dword [ebp - 4], 0xb
call esi
mov esi, eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x38]
cmp eax, 0xf
jbe 0x10031d9f
push eax
push dword [ebp - 0x4c]
lea eax, [ebp - 0x4c]
push eax
call fcn.100163b0
add esp, 0xc
mov dword [ebp - 0x3c], 0
mov dword [ebp - 0x38], 0xf
mov byte [ebp - 0x4c], 0
test esi, esi
je 0x10031ddd
movss xmm0, dword [ebx]
sub esp, 0xc
movss xmm1, dword [ebx + 4]
mov eax, esp
movss xmm2, dword [ebx + 8]
mov ecx, esi
movss dword [eax], xmm0
movss dword [eax + 4], xmm1
movss dword [eax + 8], xmm2
call fcn.10034030
push dword [ebp - 0x90]
push edi
push ebx
lea ecx, [ebp - 0xc0]
call fcn.10030820
mov al, 1
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 0x10