Function at 0x100a1420
Capabilities:
Check os version
Encode data using xor
Hash data using fnv

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100fe6b0
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0xa68
mov eax, dword [0x1013c014]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov eax, dword [ebx + 0x14]
lea ecx, [ebp - 0x220]
mov esi, dword [ebx + 8]
mov dword [ebp - 0xa70], eax
xor eax, eax
mov dword [ebp - 0xa68], esi
mov dword [ebp - 0xa64], 0
mov word [0x1014b638], ax
call fcn.100a1e30
cmp word [esi], 0
je 0x100a14c8
mov edx, 0xbd6
lea ecx, [ebp - 0xa60]
call fcn.100aedf0
mov dword [ebp - 0xa64], 1
push dword [eax]
push esi
call fcn.100dc721
add esp, 8
mov byte [ebp - 0xa59], 0
test eax, eax
jne 0x100a14cf
mov byte [ebp - 0xa59], 1
test byte [ebp - 0xa64], 1
je 0x100a1504
mov edx, dword [ebp - 0xa60]
add edx, 0xfffffff0
mov dword [ebp - 4], 0
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x100a14fd
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
cmp byte [ebp - 0xa59], 0
je 0x100a1538
mov ecx, edi
call fcn.1009cce0
sub esp, 8
mov ecx, edi
push dword [ebp - 0xa70]
sub esp, 8
push dword [0x1014be3c]
call fcn.1009fdf0
mov dword [edi], 0
jmp 0x100a1c86
call dword [sym.imp.UxTheme.dll_IsAppThemed]
mov dword [ebp - 0xa6c], eax
test eax, eax
je 0x100a1559
lea eax, [ebp - 0xa78]
push eax
call dword [sym.imp.dwmapi.dll_DwmIsCompositionEnabled]
test eax, eax
jns 0x100a1563
mov dword [ebp - 0xa78], 0
mov cx, word [0x10159320]
test cx, cx
jne 0x100a158e
call dword [sym.imp.KERNEL32.dll_GetVersion]
mov ecx, eax
movzx eax, al
shr ecx, 8
movzx ecx, cl
shl ax, 8
or cx, ax
mov word [0x10159320], cx
mov eax, 0x602
cmp cx, ax
jb 0x100a1616
mov esi, dword [0x1014e914]
cmp dword [esi], 0
je 0x100a1616
cmp dword [esi + 4], 1
jne 0x100a15bc
push str.EnableTouch
push dword [esi]
call fcn.100dc721
add esp, 8
test eax, eax
je 0x100a15c6
add esi, 0x60
cmp dword [esi], 0
jne 0x100a15a3
jmp 0x100a1616
push 0x10158d3c
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockShared]
cmp word [esi + 0x38], 3
jne 0x100a15e5
cmp dword [esi + 0x40], 1
mov byte [ebp - 0xa59], 1
je 0x100a15ec
mov byte [ebp - 0xa59], 0
push 0x10158d3c
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockShared]
cmp byte [ebp - 0xa59], 0
je 0x100a1616
push 0x5e
call dword [sym.imp.USER32.dll_GetSystemMetrics]
mov dword [ebp - 0xa60], 1
test al, 1
jne 0x100a1620
mov dword [ebp - 0xa60], 0
mov esi, dword [0x1014e914]
cmp dword [esi], 0
je 0x100a1655
nop dword [eax + eax]
cmp dword [esi + 4], 1
jne 0x100a164d
push str.AeroGlass
push dword [esi]
call fcn.100dc721
add esp, 8
test eax, eax
je 0x100a18e4
add esi, 0x60
cmp dword [esi], 0
jne 0x100a1630
mov dword [ebp - 0xa64], 0
mov esi, dword [0x1014e914]
cmp dword [esi], 0
je 0x100a1695
nop word [eax + eax]
cmp dword [esi + 4], 1
jne 0x100a168d
push str.EnableGlass
push dword [esi]
call fcn.100dc721
add esp, 8
test eax, eax
je 0x100a1920
add esi, 0x60
cmp dword [esi], 0
jne 0x100a1670
mov dword [ebp - 0xa74], 0
mov esi, dword [0x1014e914]
cmp dword [esi], 0
je 0x100a16e6
nop word [eax + eax]
mov eax, dword [esi + 4]
cmp eax, 2
je 0x100a16c7
cmp eax, 3
je 0x100a16c7
cmp eax, 4
je 0x100a16c7
cmp eax, 5
jne 0x100a16de
push str.SearchBox
push dword [esi]
call fcn.100dc721
add esp, 8
test eax, eax
je 0x100a195c
add esi, 0x60
cmp dword [esi], 0
jne 0x100a16b0
xor esi, esi
mov eax, dword [ebp - 0xa74]
neg esi
sbb esi, esi
add eax, eax
and esi, 4
or esi, eax
or esi, dword [ebp - 0xa64]
mov dword [ebp - 0xa34], esi
mov esi, dword [0x1014e914]
cmp dword [esi], 0
je 0x100a1746
mov eax, dword [esi + 4]
cmp eax, 2
je 0x100a1727
cmp eax, 3
je 0x100a1727
cmp eax, 4
je 0x100a1727
cmp eax, 5
jne 0x100a173e
push str.FontSmoothing
push dword [esi]
call fcn.100dc721
add esp, 8
test eax, eax
je 0x100a197a
add esi, 0x60
cmp dword [esi], 0
jne 0x100a1710
xor esi, esi
mov eax, dword [ebp - 0xa6c]
mov ecx, 0x811c9dc5
mov dword [ebp - 0xa2c], eax
xor edx, edx
mov eax, dword [ebp - 0xa78]
mov dword [ebp - 0xa28], eax
mov eax, dword [ebp - 0xa60]
mov dword [ebp - 0xa30], esi
mov dword [ebp - 0xa24], eax
nop dword [eax]
movzx eax, byte [ebp + edx - 0xa34]
xor eax, ecx
imul ecx, eax, 0x1000193
movzx eax, byte [ebp + edx - 0xa33]
xor ecx, eax
movzx eax, byte [ebp + edx - 0xa32]
imul ecx, ecx, 0x1000193
xor ecx, eax
movzx eax, byte [ebp + edx - 0xa31]
imul ecx, ecx, 0x1000193
xor ecx, eax
movzx eax, byte [ebp + edx - 0xa30]
imul ecx, ecx, 0x1000193
add edx, 5
xor ecx, eax
imul ecx, ecx, 0x1000193
cmp edx, 0x14
jl 0x100a1780
lea eax, [ebp - 0xa24]
mov dword [ebp - 0xa6c], ecx
push eax
lea eax, [ebp - 0xa28]
xorps xmm0, xmm0
push eax
lea edx, [ebp - 0xa2c]
lea ecx, [ebp - 0xa30]
movups xmmword [ebp - 0xa30], xmm0
call fcn.1009e460
mov edx, dword [ebp - 0xa6c]
add esp, 8
xor esi, esi
nop dword [eax]
nop word [eax + eax]
movzx eax, byte [ebp + esi - 0xa30]
xor eax, edx
imul ecx, eax, 0x1000193
movzx eax, byte [ebp + esi - 0xa2f]
xor ecx, eax
movzx eax, byte [ebp + esi - 0xa2e]
imul ecx, ecx, 0x1000193
xor ecx, eax
movzx eax, byte [ebp + esi - 0xa2d]
imul ecx, ecx, 0x1000193
add esi, 4
xor ecx, eax
imul edx, ecx, 0x1000193
cmp esi, 0x10
jl 0x100a1820
mov ecx, 0x1010ca30
call fcn.100b3790
mov ecx, dword [0x10158d1c]
mov esi, eax
push 0
test ecx, ecx
je 0x100a188a
push 0
call ecx
mov dword [0x10158d28], eax
push eax
mov ecx, edi
call fcn.1009dab0
push 0x10115110
push dword [ebp - 0xa68]
mov dword [ebp - 0xa60], eax
call fcn.100dc721
add esp, 8
test eax, eax
jne 0x100a1998
mov ecx, edi
call fcn.1009cce0
sub esp, 8
mov ecx, edi
push dword [ebp - 0xa70]
sub esp, 8
push 0
call fcn.1009fdf0
test al, al
jne 0x100a1c14
mov ecx, edi
call fcn.1009cce0
xor al, al
jmp 0x100a1c88
push 0x10158d3c
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockShared]
cmp word [esi + 0x38], 3
jne 0x100a1906
cmp dword [esi + 0x40], 1
mov dword [ebp - 0xa64], 1
je 0x100a1910
mov dword [ebp - 0xa64], 0
push 0x10158d3c
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockShared]
jmp 0x100a165f
push 0x10158d3c
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockShared]
cmp word [esi + 0x38], 3
jne 0x100a1942
cmp dword [esi + 0x40], 1
mov dword [ebp - 0xa74], 1
je 0x100a194c
mov dword [ebp - 0xa74], 0
push 0x10158d3c
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockShared]
jmp 0x100a169f
push 0x10158d3c
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockShared]
mov esi, dword [esi + 0x40]
push 0x10158d3c
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockShared]
jmp 0x100a16e8
push 0x10158d3c
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockShared]
mov esi, dword [esi + 0x40]
push 0x10158d3c
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockShared]
jmp 0x100a1748
lea ecx, [ebp - 0x220]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x100a19a1
push dword [ebp - 0xa68]
sub ecx, edx
lea eax, [ebp - 0x220]
sar ecx, 1
mov edx, 0x104
sub edx, ecx
lea ecx, [eax + ecx*2]
call fcn.100a4780
lea ecx, [ebp - 0x220]
add esp, 4
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x100a19d7
sub ecx, edx
mov eax, str..skin7
sar ecx, 1
mov edx, str..skin
cmp dword [ebp - 0xa70], 2
cmovne eax, edx
mov edx, 0x104
push eax
lea eax, [ebp - 0x220]
sub edx, ecx
lea ecx, [eax + ecx*2]
call fcn.100a4780
add esp, 4
lea ecx, [ebp - 0x220]
mov edx, esi
call fcn.100b3790
mov esi, eax
mov dword [ebp - 0xa68], eax
lea eax, [ebp - 0xa58]
mov dword [ebp - 0xa38], 0
push eax
xorps xmm0, xmm0
lea eax, [ebp - 0x220]
push 0
push eax
movups xmmword [ebp - 0xa58], xmm0
movups xmmword [ebp - 0xa48], xmm0
call dword [sym.imp.KERNEL32.dll_GetFileAttributesExW]
test eax, eax
je 0x100a1adb
movzx eax, byte [ebp - 0xa44]
xor eax, esi
imul ecx, eax, 0x1000193
movzx eax, byte [ebp - 0xa43]
xor ecx, eax
movzx eax, byte [ebp - 0xa42]
imul ecx, ecx, 0x1000193
xor ecx, eax
movzx eax, byte [ebp - 0xa41]
imul ecx, ecx, 0x1000193
xor ecx, eax
movzx eax, byte [ebp - 0xa40]
imul ecx, ecx, 0x1000193
xor ecx, eax
movzx eax, byte [ebp - 0xa3f]
imul ecx, ecx, 0x1000193
xor ecx, eax
movzx eax, byte [ebp - 0xa3e]
imul ecx, ecx, 0x1000193
xor ecx, eax
movzx eax, byte [ebp - 0xa3d]
imul ecx, ecx, 0x1000193
xor ecx, eax
imul esi, ecx, 0x1000193
mov dword [ebp - 0xa68], esi
cmp dword [edi], esi
jne 0x100a1b3d
mov eax, dword [ebp - 0xa60]
cmp dword [edi + 4], eax
jne 0x100a1b3d
cmp dword [edi + 8], 0x60
jne 0x100a1b3d
mov esi, dword [edi + 0x2754]
cmp esi, dword [edi + 0x2758]
je 0x100a1c86
lea eax, [ebp - 0xa58]
push eax
push 0
push dword [esi + 4]
call dword [sym.imp.KERNEL32.dll_GetFileAttributesExW]
test eax, eax
je 0x100a1b3d
lea eax, [esi + 8]
push eax
lea eax, [ebp - 0xa44]
push eax
call dword [sym.imp.KERNEL32.dll_CompareFileTime]
test eax, eax
jne 0x100a1b3d
add esi, 0x10
cmp esi, dword [edi + 0x2758]
jne 0x100a1b02
jmp 0x100a1c86
mov ecx, edi
call fcn.1009cce0
push 0x22
push 0
lea eax, [ebp - 0x220]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryExW]
mov esi, eax
test esi, esi
jne 0x100a1bda
call dword [sym.imp.KERNEL32.dll_GetLastError]
push esi
push 0x400
lea ecx, [ebp - 0xa20]
push ecx
push esi
push eax
push esi
push 0x1200
call dword [sym.imp.KERNEL32.dll_FormatMessageW]
mov edx, 0xbd3
lea ecx, [ebp - 0xa6c]
call fcn.100aedf0
lea ecx, [ebp - 0xa20]
push ecx
lea ecx, [ebp - 0x220]
push ecx
push dword [eax]
push 0x400
push 0x1014b638
call fcn.100a4830
mov edx, dword [ebp - 0xa6c]
add esp, 0x14
add edx, 0xfffffff0
mov dword [ebp - 4], 1
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x100a1bd3
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
xor al, al
jmp 0x100a1c88
sub esp, 8
mov ecx, edi
push dword [ebp - 0xa70]
sub esp, 8
push esi
call fcn.1009fdf0
test al, al
jne 0x100a1c07
mov ecx, edi
call fcn.1009cce0
push esi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
xor al, al
jmp 0x100a1c88
push esi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov esi, dword [ebp - 0xa68]
push 0xffffffffffffffff
mov ecx, edi
mov dword [edi], esi
call fcn.1009dab0
cmp dword [ebp - 0xa78], 0
mov dword [edi + 4], eax
jne 0x100a1c86
cmp dword [edi + 0x1fd8], 0
je 0x100a1c3e
mov dword [edi + 0x1fd8], 1
cmp dword [edi + 0x1fdc], 0
je 0x100a1c51
mov dword [edi + 0x1fdc], 1
cmp dword [edi + 0x24e0], 0
je 0x100a1c64
mov dword [edi + 0x24e0], 1
add edi, 0x114
mov eax, 0x1b
nop
cmp dword [edi], 0
je 0x100a1c7b
mov dword [edi], 1
add edi, 0x128
sub eax, 1
jne 0x100a1c70
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.100d4906
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 0x18