Function at 0x40aee0
Capabilities:
Get system information on windows
Print debug messages

Disassembly:
sub esp, 0x24
xor eax, eax
push esi
push 0x11c
mov esi, ecx
push eax
push esi
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], eax
call fcn.00472990
add esp, 0xc
push esi
mov dword [esi], 0x11c
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
je 0x40b313
push str.GetNativeSystemInfo
push str.kernel32.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x40af54
lea ecx, [esp + 4]
push ecx
call eax
jmp 0x40af5f
lea edx, [esp + 4]
push edx
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
cmp dword [esi + 0x10], 2
jne 0x40b308
cmp dword [esi + 4], 4
jbe 0x40b308
mov ecx, dword [esp + 4]
mov eax, 9
cmp ax, cx
je 0x40af9b
mov edx, 6
cmp dx, cx
je 0x40af9b
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x40afa9
mov dword [eax], 0
jmp 0x40afa9
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x40afa9
mov dword [eax], 1
mov eax, dword [esi + 4]
push ebx
push ebp
xor ebx, ebx
sub eax, 5
push edi
je 0x40b030
sub eax, 1
je 0x40afd6
sub eax, 4
jne case.default.0x40afe2
cmp byte [esi + 0x11a], 1
setne bl
add ebx, 0xd
jmp case.default.0x40afe2
mov eax, dword [esi + 8]
cmp eax, 3
ja case.default.0x40afe2
jmp dword [eax*4 + 0x40b320]
xor ebx, ebx
cmp byte [esi + 0x11a], 1
setne bl
add ebx, 5
jmp case.default.0x40afe2
xor ebx, ebx
cmp byte [esi + 0x11a], 1
setne bl
add ebx, 7
jmp case.default.0x40afe2
xor ebx, ebx
cmp byte [esi + 0x11a], 1
setne bl
add ebx, 9
jmp case.default.0x40afe2
xor ebx, ebx
cmp byte [esi + 0x11a], 1
setne bl
add ebx, 0xb
jmp case.default.0x40afe2
mov eax, dword [esi + 8]
sub eax, 0
je 0x40b07a
sub eax, 1
je 0x40b051
sub eax, 1
jne case.default.0x40afe2
cmp byte [esi + 0x11a], 1
jne 0x40b058
cmp cx, 9
jne 0x40b058
mov ebx, 2
jmp case.default.0x40afe2
mov edi, dword [sym.imp.USER32.dll_GetSystemMetrics]
push 0x59
call edi
test eax, eax
jne 0x40b06b
lea ebx, [eax + 3]
jmp case.default.0x40afe2
push 0x59
call edi
test eax, eax
je case.default.0x40afe2
mov ebx, 4
jmp case.default.0x40afe2
mov ebx, 1
mov edi, dword [esp + 0x3c]
test edi, edi
je 0x40b2fc
lea eax, [ebx - 1]
cmp eax, 0xd
ja case.default.0x40b097
jmp dword [eax*4 + 0x40b330]
mov ebp, dword [esp + 0x40]
push str.Windows_2000
push ebp
push edi
call fcn.00472a0a
movzx edx, word [esi + 0x114]
dec edx
add esp, 0xc
cmp edx, 3
ja 0x40b2fc
mov eax, ebp
mov ecx, edi
call fcn.0040ae80
pop edi
pop ebp
mov eax, ebx
pop ebx
pop esi
add esp, 0x24
ret 0xc
mov ebp, dword [esp + 0x40]
push str.Windows_XP
push ebp
push edi
call fcn.00472a0a
movzx edx, word [esi + 0x114]
dec edx
add esp, 0xc
cmp edx, 3
ja 0x40b2fc
mov eax, ebp
mov ecx, edi
call fcn.0040ae80
pop edi
pop ebp
mov eax, ebx
pop ebx
pop esi
add esp, 0x24
ret 0xc
push str.Windows_Server_2003
jmp 0x40b2ee
mov ecx, dword [esp + 0x40]
push str.Windows_Server_2003_R2
push ecx
push edi
call fcn.00472a0a
add esp, 0xc
pop edi
pop ebp
mov eax, ebx
pop ebx
pop esi
add esp, 0x24
ret 0xc
mov edx, dword [esp + 0x40]
push str.Windows_Vista
push edx
push edi
call fcn.00472a0a
add esp, 0xc
pop edi
pop ebp
mov eax, ebx
pop ebx
pop esi
add esp, 0x24
ret 0xc
push str.Windows_Server_2008
jmp 0x40b2ee
mov ebp, dword [esp + 0x40]
push str.Windows_7
push ebp
push edi
call fcn.00472a0a
movzx edx, word [esi + 0x114]
dec edx
add esp, 0xc
cmp edx, 3
ja 0x40b2fc
mov eax, ebp
mov ecx, edi
call fcn.0040ae80
pop edi
pop ebp
mov eax, ebx
pop ebx
pop esi
add esp, 0x24
ret 0xc
mov ecx, dword [esp + 0x40]
push str.Windows_Server_2008_R2
push ecx
push edi
call fcn.00472a0a
add esp, 0xc
pop edi
pop ebp
mov eax, ebx
pop ebx
pop esi
add esp, 0x24
ret 0xc
mov edx, dword [esp + 0x40]
push str.Windows_8
push edx
push edi
call fcn.00472a0a
add esp, 0xc
pop edi
pop ebp
mov eax, ebx
pop ebx
pop esi
add esp, 0x24
ret 0xc
push str.Windows_Server_2012
jmp 0x40b2ee
mov ecx, dword [esp + 0x40]
push str.Windows_8.1
push ecx
push edi
call fcn.00472a0a
add esp, 0xc
pop edi
pop ebp
mov eax, ebx
pop ebx
pop esi
add esp, 0x24
ret 0xc
mov edx, dword [esp + 0x40]
push str.Windows_Server_2012_R2
push edx
push edi
call fcn.00472a0a
add esp, 0xc
pop edi
pop ebp
mov eax, ebx
pop ebx
pop esi
add esp, 0x24
ret 0xc
mov esi, dword [esi + 0xc]
push esi
cmp esi, 0x55f0
jae 0x40b24c
mov eax, dword [esp + 0x44]
push str.Windows_10__u_
push eax
push edi
call fcn.00474cf2
add esp, 0x10
pop edi
pop ebp
mov eax, ebx
pop ebx
pop esi
add esp, 0x24
ret 0xc
mov ecx, dword [esp + 0x44]
push str.Windows_11__u_
push ecx
push edi
call fcn.00474cf2
add esp, 0x10
pop edi
pop ebp
mov eax, ebx
pop ebx
pop esi
add esp, 0x24
ret 0xc
mov esi, dword [esi + 0xc]
cmp esi, 0x3839
jne 0x40b279
push esi
jmp 0x40b2ca
cmp esi, 0x4563
jne 0x40b2a1
mov eax, dword [esp + 0x40]
push esi
push str.Windows_Server_2019__u_
push eax
push edi
call fcn.00474cf2
add esp, 0x10
pop edi
pop ebp
mov eax, ebx
pop ebx
pop esi
add esp, 0x24
ret 0xc
cmp esi, 0x4f7c
jne 0x40b2c9
mov ecx, dword [esp + 0x40]
push esi
push str.Windows_Server_2022__u_
push ecx
push edi
call fcn.00474cf2
add esp, 0x10
pop edi
pop ebp
mov eax, ebx
pop ebx
pop esi
add esp, 0x24
ret 0xc
push esi
mov edx, dword [esp + 0x44]
push str.Windows_Server_2016__u_
push edx
push edi
call fcn.00474cf2
add esp, 0x10
pop edi
pop ebp
mov eax, ebx
pop ebx
pop esi
add esp, 0x24
ret 0xc
push str.Unknown
mov eax, dword [esp + 0x44]
push eax
push edi
call fcn.00472a0a
add esp, 0xc
pop edi
pop ebp
mov eax, ebx
pop ebx
pop esi
add esp, 0x24
ret 0xc
push str.This_sample_does_not_support_this_version_of_Windows.
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
or eax, 0xffffffff
pop esi
add esp, 0x24
ret 0xc