Function at 0x438780
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x12c
mov eax, dword [0x4c4014]
xor eax, esp
mov dword [esp + 0x128], eax
push ebx
mov ebx, ecx
push esi
push edi
mov dword [esp + 0xc], ebx
mov esi, 4
mov dword [ebx], 0
mov dword [ebx + 4], 0
mov dword [ebx + 8], 0
nop dword [eax]
push pe_nt_image_headers32
lea eax, [esp + 0x18]
mov dword [esp + 0x14], 0x11c
push 0
push eax
call fcn.0046bb80
add esp, 0xc
xor eax, eax
mov word [esp + 0x124], ax
mov dword [esp + 0x126], eax
mov word [esp + 0x12a], ax
push 3
push 0x20
push 3
push 1
push 3
push 2
push eax
push eax
call dword [sym.imp.KERNEL32.dll_VerSetConditionMask]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_VerSetConditionMask]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_VerSetConditionMask]
push edx
push eax
movzx ecx, si
lea eax, [esp + 0x18]
mov dword [esp + 0x1c], ecx
xor ecx, ecx
push 0x23
push eax
mov dword [esp + 0x28], 0
mov word [esp + 0x134], cx
call dword [sym.imp.KERNEL32.dll_VerifyVersionInfoW]
test eax, eax
je 0x438851
inc esi
cmp esi, 0xf
jl 0x4387c0
jmp 0x438856
lea eax, [esi - 1]
mov dword [ebx], eax
mov edi, 1
nop dword [eax + eax]
movzx esi, word [ebx]
lea eax, [esp + 0x14]
push pe_nt_image_headers32
push 0
push eax
mov dword [esp + 0x1c], 0x11c
call fcn.0046bb80
add esp, 0xc
xor eax, eax
mov word [esp + 0x124], ax
mov dword [esp + 0x126], eax
mov word [esp + 0x12a], ax
push 3
push 0x20
push 3
push 1
push 3
push 2
push eax
push eax
call dword [sym.imp.KERNEL32.dll_VerSetConditionMask]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_VerSetConditionMask]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_VerSetConditionMask]
push edx
mov ecx, esi
mov dword [esp + 0x18], ecx
push eax
movzx ecx, di
lea eax, [esp + 0x18]
mov dword [esp + 0x20], ecx
xor ecx, ecx
push 0x23
push eax
mov word [esp + 0x134], cx
call dword [sym.imp.KERNEL32.dll_VerifyVersionInfoW]
test eax, eax
je 0x4388f2
inc edi
cmp edi, 0xa
jl 0x438860
jmp 0x4388f8
lea eax, [edi - 1]
mov dword [ebx + 4], eax
mov ebx, 1
nop dword [eax]
mov eax, dword [esp + 0xc]
push pe_nt_image_headers32
push 0
mov dword [esp + 0x18], 0x11c
movzx edi, word [eax + 4]
movzx esi, word [eax]
lea eax, [esp + 0x1c]
push eax
call fcn.0046bb80
add esp, 0xc
xor eax, eax
mov word [esp + 0x124], ax
mov dword [esp + 0x126], eax
mov word [esp + 0x12a], ax
push 3
push 0x20
push 3
push 1
push 3
push 2
push eax
push eax
call dword [sym.imp.KERNEL32.dll_VerSetConditionMask]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_VerSetConditionMask]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_VerSetConditionMask]
push edx
push eax
mov ecx, esi
mov word [esp + 0x12c], bx
mov dword [esp + 0x1c], ecx
lea eax, [esp + 0x18]
push 0x23
mov ecx, edi
push eax
mov dword [esp + 0x28], ecx
call dword [sym.imp.KERNEL32.dll_VerifyVersionInfoW]
test eax, eax
je 0x4389ac
inc ebx
cmp ebx, 0xa
jl 0x438900
mov al, 1
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x128]
xor ecx, esp
call fcn.0046999a
mov esp, ebp
pop ebp
ret
mov ecx, dword [esp + 0xc]
lea eax, [ebx - 1]
pop edi
pop esi
pop ebx
mov dword [ecx + 8], eax
mov al, 1
mov ecx, dword [esp + 0x128]
xor ecx, esp
call fcn.0046999a
mov esp, ebp
pop ebp
ret