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 sym.java.dll__JNU_CallMethodByNameV_24
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 sym.java.dll__JNU_CallMethodByNameV_24
push 0x1001cfd4
push 0x1001cfcc
push 0x1001cfc0
push 0x1001cfa8
mov edx, 0x1001cfb4
mov ecx, edi
call sym.java.dll__JNU_CallMethodByNameV_24
lea eax, [ebp - 0x50]
push eax
push 0x1001cfd0
push 0x1001cfc4
push 0x1001cfac
mov edx, 0x1001cfb8
mov ecx, esi
call sym.java.dll__JNU_CallMethodByNameV_24
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