Function at 0x1000a7ae
Capabilities:
Check os version
Get common file path
Get file version info
Get session user name
Get system information on windows
Identify system language via api

Disassembly:
push ebp
lea ebp, [esp - 0x2d0]
sub esp, 0x34c
mov eax, dword [0x1001cf10]
xor eax, ebp
mov dword [ebp + 0x2cc], eax
push ebx
xor ebx, ebx
cmp dword [0x1001cf98], ebx
jne 0x1000ad3a
push esi
push edi
lea eax, [ebp + 0x5c]
push eax
push 0x105
mov dword [0x1001cff0], 0x10014e4c
call dword [sym.imp.kernel32.dll_GetTempPathW]
mov esi, dword [sym.imp.msvcr100.dll__wcsdup]
lea eax, [ebp + 0x5c]
push eax
call esi
mov dword [0x1001cf84], eax
mov dword [0x1001cfe8], 0x10014e30
mov dword [0x1001cfec], 0x10014e0c
mov dword [esp], str.JAVA2D_FONTPATH
call dword [sym.imp.msvcr100.dll__wgetenv]
pop ecx
cmp eax, ebx
je 0x1000a835
push eax
call esi
pop ecx
mov dword [0x1001cf88], eax
jmp 0x1000a83b
mov dword [0x1001cf88], ebx
lea eax, [ebp - 0x40]
push eax
mov dword [ebp - 0x40], 0x9c
call dword [sym.imp.kernel32.dll_GetVersionExA]
mov eax, dword [ebp - 0x3c]
cmp byte [ebp + 0x5a], 1
mov esi, dword [ebp - 0x38]
mov edi, dword [ebp - 0x34]
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x50], eax
lea eax, [ebp - 0x2c]
push eax
sete byte [ebp - 0x41]
call dword [sym.imp.msvcr100.dll__strdup]
push 0x24
mov dword [0x1001d004], eax
lea eax, [ebp - 0x7c]
push ebx
push eax
call sub.msvcr100.dll_memset
add esp, 0x10
lea eax, [ebp - 0x7c]
push eax
call dword [sym.imp.kernel32.dll_GetNativeSystemInfo]
cmp word [ebp - 0x7c], 9
push 0x10014ddc
sete byte [ebp - 0x42]
call sub.msvcr100.dll_strlen
pop ecx
mov ecx, 0x103
sub ecx, eax
push ecx
lea eax, [ebp + 0x5c]
push eax
mov dword [ebp - 0x54], ecx
call dword [sym.imp.kernel32.dll_GetSystemDirectoryW]
cmp eax, ebx
je 0x1000a942
cmp eax, dword [ebp - 0x54]
ja 0x1000a942
mov ecx, 0x104
sub ecx, eax
push ecx
lea eax, [ebp + 0x5c]
push 0x10014dc0
push eax
call dword [sym.imp.msvcr100.dll_wcsncat]
add esp, 0xc
push 0
lea eax, [ebp + 0x5c]
push eax
call sub.version.dll_GetFileVersionInfoSizeW
mov dword [ebp - 0x48], eax
test eax, eax
je 0x1000a942
push eax
call dword [sym.imp.msvcr100.dll_malloc]
mov ebx, eax
pop ecx
test ebx, ebx
je 0x1000a942
push ebx
push dword [ebp - 0x48]
lea eax, [ebp + 0x5c]
push 0
push eax
call sub.version.dll_GetFileVersionInfoW
test eax, eax
je 0x1000a93a
lea eax, [ebp - 0x54]
push eax
lea eax, [ebp - 0x58]
push eax
push 0x10014dbc
push ebx
call sub.version.dll_VerQueryValueW
test eax, eax
je 0x1000a93a
mov eax, dword [ebp - 0x58]
movzx ecx, word [eax + 0x12]
movzx esi, word [eax + 0x10]
movzx edi, word [eax + 0x16]
mov dword [ebp - 0x4c], ecx
push ebx
call dword [sym.imp.msvcr100.dll_free]
pop ecx
mov eax, dword [ebp - 0x50]
dec eax
je 0x1000aab6
dec eax
je 0x1000a95e
mov dword [0x1001cf78], str.Windows__unknown_
jmp 0x1000aaf8
mov eax, dword [ebp - 0x4c]
cmp eax, 4
jg 0x1000a975
mov dword [0x1001cf78], str.Windows_NT
jmp 0x1000aaf8
cmp eax, 5
jne 0x1000a9c2
mov eax, esi
sub eax, 0
je 0x1000a9b3
dec eax
je 0x1000a9a4
dec eax
jne 0x1000aaaa
cmp byte [ebp - 0x41], al
je 0x1000a995
cmp byte [ebp - 0x42], al
jne 0x1000a9a4
mov dword [0x1001cf78], str.Windows_2003
jmp 0x1000aaf8
mov dword [0x1001cf78], str.Windows_XP
jmp 0x1000aaf8
mov dword [0x1001cf78], str.Windows_2000
jmp 0x1000aaf8
cmp eax, 6
jne 0x1000aa6b
cmp byte [ebp - 0x41], 0
mov eax, esi
je 0x1000aa21
sub eax, 0
je 0x1000aa12
dec eax
je 0x1000aa03
dec eax
je 0x1000a9f4
dec eax
jne 0x1000aaaa
mov dword [0x1001cf78], str.Windows_8.1
jmp 0x1000aaf8
mov dword [0x1001cf78], str.Windows_8
jmp 0x1000aaf8
mov dword [0x1001cf78], str.Windows_7
jmp 0x1000aaf8
mov dword [0x1001cf78], str.Windows_Vista
jmp 0x1000aaf8
sub eax, 0
je 0x1000aa5c
dec eax
je 0x1000aa4d
dec eax
je 0x1000aa3e
dec eax
jne 0x1000aaaa
mov dword [0x1001cf78], str.Windows_Server_2012_R2
jmp 0x1000aaf8
mov dword [0x1001cf78], str.Windows_Server_2012
jmp 0x1000aaf8
mov dword [0x1001cf78], str.Windows_Server_2008_R2
jmp 0x1000aaf8
mov dword [0x1001cf78], str.Windows_Server_2008
jmp 0x1000aaf8
cmp eax, 0xa
jne 0x1000aaaa
cmp byte [ebp - 0x41], 0
je 0x1000aa86
test esi, esi
jne 0x1000aaaa
mov dword [0x1001cf78], str.Windows_10
jmp 0x1000aaf8
test esi, esi
jne 0x1000aaaa
cmp edi, 0x4562
jle 0x1000aa9e
mov dword [0x1001cf78], str.Windows_Server_2019
jmp 0x1000aaf8
mov dword [0x1001cf78], str.Windows_Server_2016
jmp 0x1000aaf8
mov dword [0x1001cf78], str.Windows_NT__unknown_
jmp 0x1000aaf8
cmp dword [ebp - 0x4c], 4
jne 0x1000aaee
test esi, esi
je 0x1000aae2
cmp esi, 0xa
je 0x1000aad6
cmp esi, 0x5a
jne 0x1000aaee
mov dword [0x1001cf78], str.Windows_Me
jmp 0x1000aaf8
mov dword [0x1001cf78], str.Windows_98
jmp 0x1000aaf8
mov dword [0x1001cf78], str.Windows_95
jmp 0x1000aaf8
mov dword [0x1001cf78], str.Windows_9X__unknown_
push esi
push dword [ebp - 0x4c]
lea eax, [ebp + 0x268]
push str._d._d
push eax
call dword [sym.imp.msvcr100.dll_sprintf]
lea eax, [ebp + 0x268]
push eax
call dword [sym.imp.msvcr100.dll__strdup]
mov dword [0x1001cf7c], eax
mov dword [0x1001cf80], 0x10014c58
mov dword [0x1001d008], 0x10014c50
mov dword [0x1001cffc], 0x10014c48
call fcn.1000ebb0
push str.USERNAME
mov dword [0x1001cff8], eax
call dword [sym.imp.msvcr100.dll__wgetenv]
mov esi, eax
add esp, 0x18
test esi, esi
je 0x1000ab77
push esi
call dword [sym.imp.msvcr100.dll_wcslen]
pop ecx
test eax, eax
je 0x1000ab77
push esi
call dword [sym.imp.msvcr100.dll__wcsdup]
pop ecx
mov dword [0x1001cf9c], eax
jmp 0x1000abd4
mov edi, dword [sym.imp.advapi32.dll_GetUserNameW]
and dword [ebp - 0x48], 0
lea eax, [ebp - 0x48]
push eax
push 0
call edi
test eax, eax
jne 0x1000abbe
call dword [sym.imp.kernel32.dll_GetLastError]
cmp eax, 0x7a
jne 0x1000abbe
mov eax, dword [ebp - 0x48]
add eax, eax
push eax
call dword [sym.imp.msvcr100.dll_malloc]
mov esi, eax
pop ecx
test esi, esi
je 0x1000abca
lea eax, [ebp - 0x48]
push eax
push esi
call edi
test eax, eax
jne 0x1000abc0
push esi
call dword [sym.imp.msvcr100.dll_free]
pop ecx
xor esi, esi
mov dword [0x1001cf9c], esi
test esi, esi
jne 0x1000abd4
mov dword [0x1001cf9c], str.unknown
call fcn.1000a4d0
test eax, eax
jne 0x1000abe2
mov eax, 0x10014c1c
mov dword [0x1001cfa0], eax
call dword [sym.imp.kernel32.dll_GetUserDefaultLCID]
mov edi, eax
call dword [sym.imp.kernel32.dll_GetSystemDefaultLCID]
mov ebx, eax
call dword [sym.imp.kernel32.dll_GetUserDefaultUILanguage]
movzx esi, ax
mov eax, esi
xor eax, edi
test eax, 0x3ff
jne 0x1000ac0d
mov esi, edi
lea eax, [ebp - 0x50]
push eax
push 0x1001cfc8
push 0x1001cfbc
push 0x1001cfa4
mov edx, 0x1001cfb0
mov ecx, esi
call fcn.1000ebb0
push 0x1001cfd4
push 0x1001cfcc
push 0x1001cfc0
push 0x1001cfa8
mov edx, 0x1001cfb4
mov ecx, edi
call fcn.1000ebb0
lea eax, [ebp - 0x50]
push eax
push 0x1001cfd0
push 0x1001cfc4
push 0x1001cfac
mov edx, 0x1001cfb8
mov ecx, esi
call fcn.1000ebb0
push ebx
call fcn.1000a2dd
mov dword [0x1001cfd8], eax
mov eax, 0xc04
add esp, 0x34
cmp di, ax
jne 0x1000ac98
cmp dword [ebp - 0x4c], 6
jne 0x1000ac98
mov eax, str.MS950_HKSCS
mov dword [0x1001cfd4], eax
mov dword [0x1001cfd8], eax
mov esi, dword [sym.imp.kernel32.dll_GetStdHandle]
push 0xfffffffffffffff5
call esi
mov edi, dword [sym.imp.kernel32.dll_GetFileType]
cmp eax, 0xffffffff
je 0x1000acbf
push eax
call edi
cmp eax, 2
jne 0x1000acbf
call fcn.1000a485
mov dword [0x1001cfdc], eax
push 0xfffffffffffffff4
call esi
cmp eax, 0xffffffff
je 0x1000ace3
push eax
call edi
cmp eax, 2
jne 0x1000ace3
mov eax, dword [0x1001cfdc]
test eax, eax
jne 0x1000acde
call fcn.1000a485
mov dword [0x1001cfe0], eax
lea eax, [ebp + 0x5c]
push eax
push 0x104
mov dword [0x1001cff4], 0x10014c00
mov dword [0x1001cfe4], 0x10013939
call dword [sym.imp.kernel32.dll_GetCurrentDirectoryW]
pop edi
pop esi
test eax, eax
je 0x1000ad1c
lea eax, [ebp + 0x5c]
push eax
call dword [sym.imp.msvcr100.dll__wcsdup]
pop ecx
mov dword [0x1001cf8c], eax
mov dword [0x1001cf90], 0x10014bfc
mov dword [0x1001cf94], 0x10014bf8
mov dword [0x1001cf98], 0x10014bf4
mov ecx, dword [ebp + 0x2cc]
xor ecx, ebp
mov eax, 0x1001cf78
pop ebx
call fcn.100122d0
add ebp, 0x2d0
leave
ret