Function at 0x4aae12
Capabilities:
Check os version
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x9cc
mov eax, esp
mov esi, eax
mov dword [ebp - 0x20], 0x400
mov eax, dword [ebp - 0x20]
sub eax, 1
mov dword [ebp - 0x24], eax
mov eax, 0x10
lea edx, [eax - 1]
mov eax, dword [ebp - 0x20]
add eax, edx
mov edi, 0x10
mov edx, 0
div edi
imul eax, eax, 0x10
call fcn.004d7290
sub esp, eax
lea eax, [esp + 0x18]
add eax, 0
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x464], eax
mov dword [ebp - 0x4a4], 0
mov dword [ebp - 0x4a0], 0
mov dword [ebp - 0x49c], 0
mov dword [ebp - 0x498], 0
mov dword [ebp - 0x494], 0
mov dword [ebp - 0x490], 0
mov dword [ebp - 0x48c], 0
mov dword [ebp - 0x488], 0
mov dword [ebp - 0x484], 0
mov dword [ebp - 0x480], 0
mov dword [ebp - 0x47c], 0
mov dword [ebp - 0x478], 0
mov dword [ebp - 0x474], 0
mov dword [ebp - 0x470], 0
mov dword [ebp - 0x46c], 0
mov dword [ebp - 0x468], 0
mov dword [ebp - 0x2c], 0x1e
mov dword [ebp - 0x4a8], 4
mov dword [ebp - 0x30], 0x3c
mov dword [ebp - 0x34], 0x14
mov dword [esp + 4], 0x3c
mov dword [esp], 1
call sym._calloc
mov dword [ebp - 0x38], eax
cmp dword [ebp - 0x38], 0
jne 0x4aaf8c
mov eax, dword [sym.imp.msvcrt.dll__errno]
call eax
mov eax, dword [eax]
mov dword [esp], eax
call sym._strerror
mov ebx, eax
mov eax, dword [sym.imp.msvcrt.dll__errno]
call eax
mov eax, dword [eax]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0x508338
mov dword [esp + 8], str.get_win_version
mov dword [esp + 4], 0x29
mov dword [esp], str.shared_version_op.c
call dbg._merror_exit
mov dword [esp + 4], 1
mov eax, dword [ebp - 0x20]
mov dword [esp], eax
call sym._calloc
mov dword [ebp - 0x3c], eax
cmp dword [ebp - 0x3c], 0
jne 0x4aaff0
mov eax, dword [sym.imp.msvcrt.dll__errno]
call eax
mov eax, dword [eax]
mov dword [esp], eax
call sym._strerror
mov ebx, eax
mov eax, dword [sym.imp.msvcrt.dll__errno]
call eax
mov eax, dword [eax]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0x508338
mov dword [esp + 8], str.get_win_version
mov dword [esp + 4], 0x2a
mov dword [esp], str.shared_version_op.c
call dbg._merror_exit
lea edx, [ebp - 0x568]
mov eax, 0
mov ecx, 9
mov edi, edx
rep stosd dword es:[edi], eax
mov dword [esp + 8], 0x9c
mov dword [esp + 4], 0
lea eax, [ebp - 0x544]
mov dword [esp], eax
call sym._memset
mov dword [ebp - 0x544], 0x9c
lea eax, [ebp - 0x544]
mov dword [esp], eax
mov eax, dword [sym.imp.KERNEL32.dll_GetVersionExA]
call eax
sub esp, 4
mov dword [ebp - 0x40], eax
cmp dword [ebp - 0x40], 0
jne 0x4ab089
mov dword [ebp - 0x544], 0x94
lea eax, [ebp - 0x544]
mov dword [esp], eax
mov eax, dword [sym.imp.KERNEL32.dll_GetVersionExA]
call eax
sub esp, 4
test eax, eax
jne 0x4ab089
mov eax, dword [ebp - 0x38]
mov dword [esp], eax
call sym._free
mov eax, dword [ebp - 0x3c]
mov dword [esp], eax
call sym._free
mov eax, 0
jmp 0x4ac363
mov eax, dword [ebp - 0x53c]
mov edx, eax
mov eax, dword [ebp - 0x540]
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], eax
mov dword [esp + 8], str._i._i
mov dword [esp + 4], 0x3f
lea eax, [ebp - 0x4a4]
mov dword [esp], eax
call sym._snprintf_66
lea eax, [ebp - 0x4a4]
mov dword [esp], eax
call sym._strdup
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax + 0x2c], edx
mov eax, dword [ebp - 0x540]
cmp eax, 6
jne 0x4ab873
mov eax, esp
mov ebx, eax
mov eax, dword [ebp - 0x20]
sub eax, 1
mov dword [esp + 0xc], str.SOFTWAREMicrosoftWindows_NTCurrentVersion
mov dword [esp + 8], 0x5083b5
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x3c]
mov dword [esp], eax
call sym._snprintf_66
lea eax, [ebp - 0x460]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0x20019
mov dword [esp + 8], 0
mov eax, dword [ebp - 0x3c]
mov dword [esp + 4], eax
mov dword [esp], 0x80000002
mov eax, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
call eax
sub esp, 0x14
test eax, eax
je 0x4ab184
mov eax, dword [ebp - 0x3c]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0x5083b8
mov dword [esp + 8], str.get_win_version
mov dword [esp + 4], 0x4b
mov dword [esp], str.shared_version_op.c
call dbg._merror
mov dword [esp], str.Microsoft_Windows_undefined_version
call sym._strdup
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax], edx
jmp 0x4ab286
mov eax, dword [ebp - 0x460]
lea edx, [ebp - 0x464]
mov dword [esp + 0x14], edx
mov edx, dword [ebp - 0x28]
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x508408
mov dword [esp], eax
mov eax, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
call eax
sub esp, 0x18
mov dword [ebp - 0x48], eax
cmp dword [ebp - 0x48], 0
je 0x4ab209
mov eax, dword [ebp - 0x48]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.Error_reading_ProductName_from_Windows_registry.__Error__u_
mov dword [esp + 8], str.get_win_version
mov dword [esp + 4], 0x51
mov dword [esp], str.shared_version_op.c
call dbg._merror
mov dword [esp], str.Microsoft_Windows_undefined_version
call sym._strdup
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax], edx
jmp 0x4ab273
mov dword [esp + 8], 0x400
mov dword [esp + 4], 0
lea eax, [ebp - 0x45c]
mov dword [esp], eax
call sym._memset
lea eax, [ebp - 0x45c]
mov dword [eax], 0x7263694d
mov dword [eax + 4], 0x666f736f
mov dword [eax + 7], 0x207466
mov dword [esp + 8], 0x3fe
mov eax, dword [ebp - 0x28]
mov dword [esp + 4], eax
lea eax, [ebp - 0x45c]
mov dword [esp], eax
call sym._strncat
lea eax, [ebp - 0x45c]
mov dword [esp], eax
call sym._strdup
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax], edx
mov eax, dword [ebp - 0x460]
mov dword [esp], eax
mov eax, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
call eax
sub esp, 4
mov dword [esp + 8], 0x40
mov dword [esp + 4], 0
lea eax, [ebp - 0x9b4]
mov dword [esp], eax
call sym._memset
mov eax, dword [ebp - 0x2c]
sub eax, 1
mov dword [ebp - 0x4c], eax
mov eax, 0x10
lea edx, [eax - 1]
mov eax, dword [ebp - 0x2c]
add eax, edx
mov edi, 0x10
mov edx, 0
div edi
imul eax, eax, 0x10
call fcn.004d7290
sub esp, eax
lea eax, [esp + 0x18]
add eax, 0
mov dword [ebp - 0x50], eax
mov eax, dword [ebp - 0x2c]
sub eax, 1
mov dword [ebp - 0x54], eax
mov eax, 0x10
lea edx, [eax - 1]
mov eax, dword [ebp - 0x2c]
add eax, edx
mov ecx, 0x10
mov edx, 0
div ecx
imul eax, eax, 0x10
call fcn.004d7290
sub esp, eax
lea eax, [esp + 0x18]
add eax, 0
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x96c], 0
mov dword [ebp - 0x970], 0
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x464], eax
lea eax, [ebp - 0x460]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0x20019
mov dword [esp + 8], 0
mov eax, dword [ebp - 0x3c]
mov dword [esp + 4], eax
mov dword [esp], 0x80000002
mov eax, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
call eax
sub esp, 0x14
test eax, eax
je 0x4ab38e
mov eax, dword [ebp - 0x3c]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0x5083b8
mov dword [esp + 8], str.get_win_version
mov dword [esp + 4], 0x68
mov dword [esp], str.shared_version_op.c
call dbg._merror
mov eax, dword [ebp - 0x460]
lea edx, [ebp - 0x464]
mov dword [esp + 0x14], edx
lea edx, [ebp - 0x96c]
mov dword [esp + 0x10], edx
lea edx, [ebp - 0x4a8]
mov dword [esp + 0xc], edx
mov dword [esp + 8], 0
mov dword [esp + 4], str.CurrentMajorVersionNumber
mov dword [esp], eax
mov eax, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
call eax
sub esp, 0x18
mov dword [ebp - 0x48], eax
cmp dword [ebp - 0x48], 0
jne 0x4ab64b
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x464], eax
mov eax, dword [ebp - 0x460]
lea edx, [ebp - 0x464]
mov dword [esp + 0x14], edx
lea edx, [ebp - 0x970]
mov dword [esp + 0x10], edx
lea edx, [ebp - 0x4a8]
mov dword [esp + 0xc], edx
mov dword [esp + 8], 0
mov dword [esp + 4], str.CurrentMinorVersionNumber
mov dword [esp], eax
mov eax, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
call eax
sub esp, 0x18
mov dword [ebp - 0x48], eax
cmp dword [ebp - 0x48], 0
je 0x4ab45f
mov eax, dword [ebp - 0x48]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.Error_reading_CurrentMinorVersionNumber_from_Windows_registry.__Error__u_
mov dword [esp + 8], str.get_win_version
mov dword [esp + 4], 0x71
mov dword [esp], str.shared_version_op.c
call dbg._merror
jmp 0x4ab591
mov eax, dword [ebp - 0x96c]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x5084d4
mov dword [esp + 4], 0x3f
lea eax, [ebp - 0x9b4]
mov dword [esp], eax
call sym._snprintf_66
lea eax, [ebp - 0x9b4]
mov dword [esp], eax
call sym._strdup
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax + 4], edx
mov eax, dword [ebp - 0x970]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x5084d4
mov dword [esp + 4], 0x3f
lea eax, [ebp - 0x9b4]
mov dword [esp], eax
call sym._snprintf_66
lea eax, [ebp - 0x9b4]
mov dword [esp], eax
call sym._strdup
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax + 8], edx
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x464], eax
mov eax, dword [ebp - 0x460]
lea edx, [ebp - 0x464]
mov dword [esp + 0x14], edx
mov edx, dword [ebp - 0x58]
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], str.CurrentBuildNumber
mov dword [esp], eax
mov eax, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
call eax
sub esp, 0x18
mov dword [ebp - 0x48], eax
cmp dword [ebp - 0x48], 0
je 0x4ab556
mov eax, dword [ebp - 0x48]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.Error_reading_CurrentBuildNumber_from_Windows_registry.__Error__u_
mov dword [esp + 8], str.get_win_version
mov dword [esp + 4], 0x7b
mov dword [esp], str.shared_version_op.c
call dbg._merror
jmp 0x4ab591
mov eax, dword [ebp - 0x58]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x5083b5
mov dword [esp + 4], 0x3f
lea eax, [ebp - 0x9b4]
mov dword [esp], eax
call sym._snprintf_66
lea eax, [ebp - 0x9b4]
mov dword [esp], eax
call sym._strdup
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax + 0x10], edx
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x464], eax
mov eax, dword [ebp - 0x460]
lea edx, [ebp - 0x464]
mov dword [esp + 0x14], edx
mov edx, dword [ebp - 0x28]
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], str.ReleaseId
mov dword [esp], eax
mov eax, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
call eax
sub esp, 0x18
mov dword [ebp - 0x48], eax
cmp dword [ebp - 0x48], 0
je 0x4ab620
mov eax, dword [ebp - 0x48]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.Could_not_read_the_ReleaseId_key_from_Windows_registry.__Error__u_
mov dword [esp + 8], str.get_win_version
mov dword [esp + 4], 0x86
mov dword [esp], str.shared_version_op.c
call dbg._mdebug1
mov eax, dword [ebp - 0x38]
mov eax, dword [eax + 0x10]
mov dword [esp], eax
call dbg.get_release_from_build
mov edx, dword [ebp - 0x38]
mov dword [edx + 0x34], eax
jmp 0x4ab633
mov eax, dword [ebp - 0x28]
mov dword [esp], eax
call sym._strdup
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax + 0x34], edx
mov eax, dword [ebp - 0x460]
mov dword [esp], eax
mov eax, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
call eax
sub esp, 4
jmp 0x4ab81a
mov eax, dword [ebp - 0x460]
lea edx, [ebp - 0x464]
mov dword [esp + 0x14], edx
mov edx, dword [ebp - 0x50]
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], str.CurrentVersion
mov dword [esp], eax
mov eax, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
call eax
sub esp, 0x18
mov dword [ebp - 0x48], eax
cmp dword [ebp - 0x48], 0
je 0x4ab6c0
mov eax, dword [ebp - 0x48]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.Error_reading_Current_Version_from_Windows_registry.__Error__u_
mov dword [esp + 8], str.get_win_version
mov dword [esp + 4], 0x93
mov dword [esp], str.shared_version_op.c
call dbg._merror
jmp 0x4ab81a
mov dword [esp + 8], 2
mov eax, dword [ebp - 0x50]
mov dword [esp + 4], eax
mov dword [esp], 0x2e
call dbg.OS_StrBreak
mov dword [ebp - 0x5c], eax
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax]
mov dword [esp], eax
call sym._strdup
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax + 4], edx
mov eax, dword [ebp - 0x5c]
add eax, 4
mov eax, dword [eax]
mov dword [esp], eax
call sym._strdup
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax + 8], edx
mov dword [ebp - 0x1c], 0
jmp 0x4ab731
mov eax, dword [ebp - 0x1c]
lea edx, [eax*4]
mov eax, dword [ebp - 0x5c]
add eax, edx
mov eax, dword [eax]
mov dword [esp], eax
call sym._free
add dword [ebp - 0x1c], 1
mov eax, dword [ebp - 0x1c]
lea edx, [eax*4]
mov eax, dword [ebp - 0x5c]
add eax, edx
mov eax, dword [eax]
test eax, eax
jne 0x4ab714
mov eax, dword [ebp - 0x5c]
mov dword [esp], eax
call sym._free
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x464], eax
mov eax, dword [ebp - 0x460]
lea edx, [ebp - 0x464]
mov dword [esp + 0x14], edx
mov edx, dword [ebp - 0x58]
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], str.CurrentBuildNumber
mov dword [esp], eax
mov eax, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
call eax
sub esp, 0x18
mov dword [ebp - 0x48], eax
cmp dword [ebp - 0x48], 0
je 0x4ab7cc
mov eax, dword [ebp - 0x48]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.Error_reading_CurrentBuildNumber_from_Windows_registry.__Error__u_
mov dword [esp + 8], str.get_win_version
mov dword [esp + 4], 0xa0
mov dword [esp], str.shared_version_op.c
call dbg._merror
jmp 0x4ab807
mov eax, dword [ebp - 0x58]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x5083b5
mov dword [esp + 4], 0x3f
lea eax, [ebp - 0x9b4]
mov dword [esp], eax
call sym._snprintf_66
lea eax, [ebp - 0x9b4]
mov dword [esp], eax
call sym._strdup
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax + 0x10], edx
mov eax, dword [ebp - 0x460]
mov dword [esp], eax
mov eax, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
call eax
sub esp, 4
mov eax, dword [ebp - 0x38]
mov ecx, dword [eax + 0x10]
mov eax, dword [ebp - 0x38]
mov edx, dword [eax + 8]
mov eax, dword [ebp - 0x38]
mov eax, dword [eax + 4]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], eax
mov dword [esp + 8], str._s._s._s
mov dword [esp + 4], 0x3f
lea eax, [ebp - 0x4a4]
mov dword [esp], eax
call sym._snprintf_66
lea eax, [ebp - 0x4a4]
mov dword [esp], eax
call sym._strdup
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax + 0x14], edx
mov esp, ebx
jmp 0x4abcfc
mov eax, dword [ebp - 0x540]
cmp eax, 5
jne 0x4ab9b1
mov eax, dword [ebp - 0x53c]
test eax, eax
jne 0x4ab8a4
mov dword [esp], str.Microsoft_Windows_2000
call sym._strdup
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax], edx
jmp 0x4aba7e
mov eax, dword [ebp - 0x53c]
cmp eax, 1
jne 0x4ab8c7
mov dword [esp], str.Microsoft_Windows_XP
call sym._strdup
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax], edx
jmp 0x4aba7e
mov eax, dword [ebp - 0x53c]
cmp eax, 2
jne 0x4aba7e
mov dword [esp], 0x508607
mov eax, dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
call eax
sub esp, 4
mov dword [esp + 4], str.GetNativeSystemInfo
mov dword [esp], eax
mov eax, dword [sym.imp.KERNEL32.dll_GetProcAddress]
call eax
sub esp, 8
mov dword [ebp - 0x44], eax
cmp dword [ebp - 0x44], 0
je 0x4ab918
lea eax, [ebp - 0x568]
mov dword [esp], eax
mov eax, dword [ebp - 0x44]
call eax
sub esp, 4
jmp 0x4ab93c
mov dword [esp + 0xc], str.It_was_not_possible_to_retrieve_GetNativeSystemInfo_from_kernek32.dll
mov dword [esp + 8], str.get_win_version
mov dword [esp + 4], 0xba
mov dword [esp], str.shared_version_op.c
call dbg._mwarn
movzx eax, byte [ebp - 0x4aa]
cmp al, 1
jne 0x4ab96c
movzx eax, word [ebp - 0x568]
cmp ax, 9
jne 0x4ab96c
mov dword [esp], str.Microsoft_Windows_XP_Professional_x64_Edition
call sym._strdup
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax], edx
jmp 0x4aba7e
mov dword [esp], 0x59
mov eax, dword [sym.imp.USER32.dll_GetSystemMetrics]
call eax
sub esp, 4
test eax, eax
je 0x4ab999
mov dword [esp], str.Microsoft_Windows_Server_2003_R2
call sym._strdup
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax], edx
jmp 0x4aba7e
mov dword [esp], str.Microsoft_Windows_Server_2003
call sym._strdup
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax], edx
jmp 0x4aba7e
mov eax, dword [ebp - 0x540]
cmp eax, 4
jne 0x4aba68
mov eax, dword [ebp - 0x534]
cmp eax, 1
je 0x4ab9ec
cmp eax, 2
jne 0x4aba7e
mov dword [esp], str.Microsoft_Windows_NT
call sym._strdup
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax], edx
jmp 0x4aba7e
mov eax, dword [ebp - 0x540]
cmp eax, 4
jne 0x4aba14
mov eax, dword [ebp - 0x53c]
test eax, eax
jne 0x4aba14
mov dword [esp], str.Microsoft_Windows_95
call sym._strdup
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax], edx
mov eax, dword [ebp - 0x540]
cmp eax, 4
jne 0x4aba3d
mov eax, dword [ebp - 0x53c]
cmp eax, 0xa
jne 0x4aba3d
mov dword [esp], str.Microsoft_Windows_98
call sym._strdup
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax], edx
mov eax, dword [ebp - 0x540]
cmp eax, 4
jne 0x4aba7d
mov eax, dword [ebp - 0x53c]
cmp eax, 0x5a
jne 0x4aba7d
mov dword [esp], str.Microsoft_Windows_ME
call sym._strdup
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax], edx
jmp 0x4aba7d
mov dword [esp], str.Microsoft_Windows
call sym._strdup
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax], edx
jmp 0x4aba7e
nop
mov eax, dword [ebp - 0x30]
add eax, 1
mov dword [esp + 4], 1
mov dword [esp], eax
call sym._calloc
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax + 0x14], edx
mov eax, dword [ebp - 0x38]
mov eax, dword [eax + 0x14]
test eax, eax
jne 0x4abaee
mov eax, dword [sym.imp.msvcrt.dll__errno]
call eax
mov eax, dword [eax]
mov dword [esp], eax
call sym._strerror
mov ebx, eax
mov eax, dword [sym.imp.msvcrt.dll__errno]
call eax
mov eax, dword [eax]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0x508338
mov dword [esp + 8], str.get_win_version
mov dword [esp + 4], 0xdf
mov dword [esp], str.shared_version_op.c
call dbg._merror_exit
mov eax, dword [ebp - 0x34]
add eax, 1
mov dword [esp + 4], 1
mov dword [esp], eax
call sym._calloc
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax + 4], edx
mov eax, dword [ebp - 0x38]
mov eax, dword [eax + 4]
test eax, eax
jne 0x4abb5e
mov eax, dword [sym.imp.msvcrt.dll__errno]
call eax
mov eax, dword [eax]
mov dword [esp], eax
call sym._strerror
mov ebx, eax
mov eax, dword [sym.imp.msvcrt.dll__errno]
call eax
mov eax, dword [eax]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0x508338
mov dword [esp + 8], str.get_win_version
mov dword [esp + 4], 0xe0
mov dword [esp], str.shared_version_op.c
call dbg._merror_exit
mov eax, dword [ebp - 0x34]
add eax, 1
mov dword [esp + 4], 1
mov dword [esp], eax
call sym._calloc
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax + 8], edx
mov eax, dword [ebp - 0x38]
mov eax, dword [eax + 8]
test eax, eax
jne 0x4abbce
mov eax, dword [sym.imp.msvcrt.dll__errno]
call eax
mov eax, dword [eax]
mov dword [esp], eax
call sym._strerror
mov ebx, eax
mov eax, dword [sym.imp.msvcrt.dll__errno]
call eax
mov eax, dword [eax]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0x508338
mov dword [esp + 8], str.get_win_version
mov dword [esp + 4], 0xe1
mov dword [esp], str.shared_version_op.c
call dbg._merror_exit
mov eax, dword [ebp - 0x34]
add eax, 1
mov dword [esp + 4], 1
mov dword [esp], eax
call sym._calloc
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax + 0x10], edx
mov eax, dword [ebp - 0x38]
mov eax, dword [eax + 0x10]
test eax, eax
jne 0x4abc3e
mov eax, dword [sym.imp.msvcrt.dll__errno]
call eax
mov eax, dword [eax]
mov dword [esp], eax
call sym._strerror
mov ebx, eax
mov eax, dword [sym.imp.msvcrt.dll__errno]
call eax
mov eax, dword [eax]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0x508338
mov dword [esp + 8], str.get_win_version
mov dword [esp + 4], 0xe2
mov dword [esp], str.shared_version_op.c
call dbg._merror_exit
mov eax, dword [ebp - 0x540]
mov edx, eax
mov eax, dword [ebp - 0x38]
mov eax, dword [eax + 4]
mov dword [esp + 0xc], edx
mov dword [esp + 8], 0x508745
mov edx, dword [ebp - 0x34]
mov dword [esp + 4], edx
mov dword [esp], eax
call sym._snprintf_66
mov eax, dword [ebp - 0x53c]
mov edx, eax
mov eax, dword [ebp - 0x38]
mov eax, dword [eax + 8]
mov dword [esp + 0xc], edx
mov dword [esp + 8], 0x508745
mov edx, dword [ebp - 0x34]
mov dword [esp + 4], edx
mov dword [esp], eax
call sym._snprintf_66
mov eax, dword [ebp - 0x538]
movzx edx, ax
mov eax, dword [ebp - 0x38]
mov eax, dword [eax + 0x10]
mov dword [esp + 0xc], edx
mov dword [esp + 8], 0x5084d4
mov edx, dword [ebp - 0x34]
mov dword [esp + 4], edx
mov dword [esp], eax
call sym._snprintf_66
mov eax, dword [ebp - 0x538]
movzx edx, ax
mov eax, dword [ebp - 0x53c]
mov ebx, eax
mov eax, dword [ebp - 0x540]
mov ecx, eax
mov eax, dword [ebp - 0x38]
mov eax, dword [eax + 0x14]
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], ecx
mov dword [esp + 8], str._i._i._d
mov edx, dword [ebp - 0x30]
mov dword [esp + 4], edx
mov dword [esp], eax
call sym._snprintf_66
mov eax, dword [ebp - 0x38]
mov eax, dword [eax + 0x34]
test eax, eax
jne 0x4abf57
mov dword [ebp - 0x974], 0
mov dword [ebp - 0x464], 4
mov eax, dword [ebp - 0x20]
sub eax, 1
mov dword [esp + 0xc], str.SYSTEMCurrentControlSetControlWindows
mov dword [esp + 8], 0x5083b5
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x3c]
mov dword [esp], eax
call sym._snprintf_66
lea eax, [ebp - 0x460]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0x20019
mov dword [esp + 8], 0
mov eax, dword [ebp - 0x3c]
mov dword [esp + 4], eax
mov dword [esp], 0x80000002
mov eax, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
call eax
sub esp, 0x14
test eax, eax
je 0x4abda9
mov eax, dword [ebp - 0x3c]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0x5083b8
mov dword [esp + 8], str.get_win_version
mov dword [esp + 4], 0xf5
mov dword [esp], str.shared_version_op.c
call dbg._merror
jmp 0x4abf57
mov eax, dword [ebp - 0x460]
lea edx, [ebp - 0x464]
mov dword [esp + 0x14], edx
lea edx, [ebp - 0x974]
mov dword [esp + 0x10], edx
lea edx, [ebp - 0x4a8]
mov dword [esp + 0xc], edx
mov dword [esp + 8], 0
mov dword [esp + 4], str.CSDVersion
mov dword [esp], eax
mov eax, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
call eax
sub esp, 0x18
mov dword [ebp - 0x48], eax
cmp dword [ebp - 0x48], 0
je 0x4abe23
mov eax, dword [ebp - 0x48]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.Error_reading_CSDVersion_from_Windows_registry.__Error__u_
mov dword [esp + 8], str.get_win_version
mov dword [esp + 4], 0xfa
mov dword [esp], str.shared_version_op.c
call dbg._merror
jmp 0x4abf44
mov eax, dword [ebp - 0x974]
cmp eax, 0x600
je 0x4abf00
cmp eax, 0x600
ja 0x4abf16
cmp eax, 0x500
je 0x4abeea
cmp eax, 0x500
ja 0x4abf16
cmp eax, 0x400
je 0x4abed4
cmp eax, 0x400
ja 0x4abf16
cmp eax, 0x300
je 0x4abebe
cmp eax, 0x300
ja 0x4abf16
cmp eax, 0x100
je 0x4abe8c
cmp eax, 0x200
je 0x4abea5
jmp 0x4abf16
mov dword [esp], 0x5087c5
call sym._strdup
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax + 0x34], edx
jmp 0x4abf44
mov dword [esp], 0x5087c9
call sym._strdup
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax + 0x34], edx
jmp 0x4abf44
mov dword [esp], 0x5087cd
call sym._strdup
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax + 0x34], edx
jmp 0x4abf44
mov dword [esp], 0x5087d1
call sym._strdup
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax + 0x34], edx
jmp 0x4abf44
mov dword [esp], 0x5087d5
call sym._strdup
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax + 0x34], edx
jmp 0x4abf44
mov dword [esp], 0x5087d9
call sym._strdup
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax + 0x34], edx
jmp 0x4abf44
mov eax, dword [ebp - 0x974]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.The_value_of_CSDVersion_is_not_a_recognizable_service_pack.:__lu.
mov dword [esp + 8], str.get_win_version
mov dword [esp + 4], 0x111
mov dword [esp], str.shared_version_op.c
call dbg._mdebug2
mov eax, dword [ebp - 0x460]
mov dword [esp], eax
mov eax, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
call eax
sub esp, 4
mov eax, dword [ebp - 0x20]
sub eax, 1
mov dword [esp + 0xc], 0x508824
mov dword [esp + 8], 0x5083b5
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x3c]
mov dword [esp], eax
call sym._snprintf_66
lea eax, [ebp - 0x460]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0x20019
mov dword [esp + 8], 0
mov eax, dword [ebp - 0x3c]
mov dword [esp + 4], eax
mov dword [esp], 0x80000002
mov eax, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
call eax
sub esp, 0x14
test eax, eax
je 0x4abfe2
mov eax, dword [ebp - 0x3c]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0x5083b8
mov dword [esp + 8], str.get_win_version
mov dword [esp + 4], 0x11d
mov dword [esp], str.shared_version_op.c
call dbg._merror
jmp 0x4ac1c9
mov dword [ebp - 0x9b4], 0
mov dword [ebp - 0x9b0], 0
mov dword [ebp - 0x9ac], 0
mov dword [ebp - 0x9a8], 0
mov dword [ebp - 0x9a4], 0
mov dword [ebp - 0x9a0], 0
mov dword [ebp - 0x99c], 0
mov dword [ebp - 0x998], 0
mov dword [ebp - 0x994], 0
mov dword [ebp - 0x990], 0
mov dword [ebp - 0x98c], 0
mov dword [ebp - 0x988], 0
mov dword [ebp - 0x984], 0
mov dword [ebp - 0x980], 0
mov dword [ebp - 0x97c], 0
mov dword [ebp - 0x978], 0
mov dword [ebp - 0x464], 0x40
mov eax, dword [ebp - 0x460]
lea edx, [ebp - 0x464]
mov dword [esp + 0x14], edx
lea edx, [ebp - 0x9b4]
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x508861
mov dword [esp], eax
mov eax, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
call eax
sub esp, 0x18
mov dword [ebp - 0x48], eax
cmp dword [ebp - 0x48], 0
je 0x4ac104
mov eax, dword [ebp - 0x48]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.Error_reading_Architecture_from_Windows_registry.__Error__u_
mov dword [esp + 8], str.get_win_version
mov dword [esp + 4], 0x124
mov dword [esp], str.shared_version_op.c
call dbg._merror
jmp 0x4ac1b6
mov dword [esp + 8], 5
mov dword [esp + 4], 0x5088b7
lea eax, [ebp - 0x9b4]
mov dword [esp], eax
call sym._strncmp
test eax, eax
je 0x4ac16a
mov dword [esp + 8], 4
mov dword [esp + 4], 0x5088bd
lea eax, [ebp - 0x9b4]
mov dword [esp], eax
call sym._strncmp
test eax, eax
je 0x4ac16a
mov dword [esp + 8], 5
mov dword [esp + 4], 0x5088c2
lea eax, [ebp - 0x9b4]
mov dword [esp], eax
call sym._strncmp
test eax, eax
jne 0x4ac180
mov dword [esp], str.x86_64
call sym._strdup
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax + 0x30], edx
jmp 0x4ac1b6
mov dword [esp + 8], 3
mov dword [esp + 4], 0x5088cf
lea eax, [ebp - 0x9b4]
mov dword [esp], eax
call sym._strncmp
test eax, eax
jne 0x4ac1b6
mov dword [esp], str.i686
call sym._strdup
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax + 0x30], edx
mov eax, dword [ebp - 0x460]
mov dword [esp], eax
mov eax, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
call eax
sub esp, 4
mov eax, dword [ebp - 0x38]
mov eax, dword [eax + 0x30]
test eax, eax
jne 0x4ac1e7
mov dword [esp], str.unknown
call sym._strdup
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax + 0x30], edx
mov eax, dword [ebp - 0x20]
sub eax, 1
mov dword [esp + 0xc], str.SystemCurrentControlSetControlComputerNameActiveComputerName
mov dword [esp + 8], 0x5083b5
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x3c]
mov dword [esp], eax
call sym._snprintf_66
mov dword [ebp - 0x968], 0
lea edx, [ebp - 0x964]
mov eax, 0
mov ecx, 0xff
mov edi, edx
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x460]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0x20019
mov dword [esp + 8], 0
mov eax, dword [ebp - 0x3c]
mov dword [esp + 4], eax
mov dword [esp], 0x80000002
mov eax, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
call eax
sub esp, 0x14
test eax, eax
je 0x4ac290
mov eax, dword [ebp - 0x3c]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0x5083b8
mov dword [esp + 8], str.get_win_version
mov dword [esp + 4], 0x138
mov dword [esp], str.shared_version_op.c
call dbg._merror
jmp 0x4ac337
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x464], eax
mov eax, dword [ebp - 0x460]
lea edx, [ebp - 0x464]
mov dword [esp + 0x14], edx
lea edx, [ebp - 0x968]
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], str.ComputerName
mov dword [esp], eax
mov eax, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
call eax
sub esp, 0x18
mov dword [ebp - 0x48], eax
cmp dword [ebp - 0x48], 0
je 0x4ac30e
mov eax, dword [ebp - 0x48]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.Error_reading_hostname_from_Windows_registry.__Error__u_
mov dword [esp + 8], str.get_win_version
mov dword [esp + 4], 0x13e
mov dword [esp], str.shared_version_op.c
call dbg._merror
jmp 0x4ac324
lea eax, [ebp - 0x968]
mov dword [esp], eax
call sym._strdup
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax + 0x24], edx
mov eax, dword [ebp - 0x460]
mov dword [esp], eax
mov eax, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
call eax
sub esp, 4
mov eax, dword [ebp - 0x38]
mov eax, dword [eax + 0x24]
test eax, eax
jne 0x4ac355
mov dword [esp], str.unknown
call sym._strdup
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax + 0x24], edx
mov eax, dword [ebp - 0x3c]
mov dword [esp], eax
call sym._free
mov eax, dword [ebp - 0x38]
mov esp, esi
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret