Function at 0x477897
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x4feeb0
mov eax, dword fs:[0]
push eax
sub esp, 0x140
mov eax, dword [0x5550ec]
xor eax, esp
mov dword [esp + 0x138], eax
push ebx
push esi
push edi
mov eax, dword [0x5550ec]
xor eax, esp
push eax
lea eax, [esp + 0x150]
mov dword fs:[0], eax
mov ebx, ecx
mov ecx, dword [ebx + 0x28]
mov edx, dword [ecx - 0xc]
xor eax, eax
inc eax
test edx, edx
jne 0x4778f3
mov edx, dword [ebx + 0x2c]
cmp dword [edx - 0xc], 0
je 0x477acc
lea edi, [ebx + 0x34]
push edi
mov esi, 0x51d9f0
push esi
push ecx
call fcn.0044247d
mov eax, dword [ebx + 0x2c]
add esp, 0xc
lea ecx, [ebx + 0x44]
push ecx
push esi
push eax
call fcn.0044247d
add esp, 0xc
mov eax, edi
call fcn.0040296e
cmp eax, 0xa
jne 0x477bd3
lea eax, [ebx + 0x44]
call fcn.0040296e
cmp eax, 0xa
jne 0x477bd3
push pe_nt_image_headers32
lea eax, [esp + 0x2c]
push 0
push eax
call sub.MSVCR80.dll_memset
add esp, 0xc
push 2
xor eax, eax
mov dword [esp + 0x28], 0x11c
call fcn.00477bf9
mov dword [esp + 0x28], eax
xor eax, eax
inc eax
push eax
call fcn.00477bf9
push 4
push 2
mov dword [esp + 0x34], eax
pop eax
call fcn.00477bf9
push 8
push 3
mov dword [esp + 0x38], eax
pop eax
call fcn.00477bf9
push 0x20
push 5
mov dword [esp + 0x3c], eax
pop eax
call fcn.00477bf9
push 0x10
push 6
mov word [esp + 0x140], ax
pop eax
call fcn.00477bf9
push 0x40
push 7
mov word [esp + 0x142], ax
pop eax
call fcn.00477bf9
push 0x80
push 8
mov word [esp + 0x144], ax
pop eax
call fcn.00477bf9
push dword [ebx + 0x24]
mov byte [esp + 0x142], al
push dword [ebx + 0x20]
lea eax, [esp + 0x2c]
push dword [ebx + 0x1c]
push eax
call dword [sym.imp.KERNEL32.dll_VerifyVersionInfoW]
test eax, eax
jne 0x477acc
lea eax, [ebx + 0xc]
push 0x51d9f4
push eax
call fcn.00402d02
xor esi, esi
cmp dword [0x55ac14], esi
je 0x477bd3
push str.OsVersionCondition::IsRecommanded
lea eax, [esp + 0x1c]
push eax
call fcn.00402cc5
mov dword [esp + 0x158], esi
cmp dword [ebx + 8], esi
jne 0x477a2e
or dword [esp + 0x14], 0xffffffff
jmp 0x477a39
mov ecx, dword [ebx + 8]
mov eax, dword [ecx]
call dword [eax]
mov dword [esp + 0x14], eax
lea eax, [esp + 0x18]
lea edi, [esp + 0x1c]
call fcn.004c8150
mov byte [esp + 0x158], 1
mov ecx, dword [ebx + 0x2c]
mov ebx, dword [ebx + 0x28]
mov edx, dword [eax]
push ecx
push str.ConditionMask
push ebx
push str.VerifyVersionInfoCondition_return_false__VersionInfo
mov eax, 0x511610
push eax
push edx
push 0x5115d8
push eax
lea eax, [esp + 0x34]
push eax
push str._pushtype
call fcn.004022da
call fcn.00402322
call fcn.00423ea4
call fcn.00402322
call fcn.00402322
call fcn.00402322
call fcn.00402322
call fcn.00402322
call fcn.00402322
call fcn.00402322
call fcn.00402322
mov esi, eax
call fcn.0040234b
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
call fcn.004012f9
mov eax, dword [esp + 0x18]
jmp 0x477bcb
lea esi, [ebx + 0x30]
cmp dword [esi], 0
je 0x477bd5
call fcn.0049cd10
mov edi, eax
xor eax, eax
cmp edi, dword [esi]
sete al
test eax, eax
jne 0x477bd5
lea eax, [ebx + 0xc]
push 0x51d9f4
push eax
call fcn.00402d02
cmp dword [0x55ac14], 0
je 0x477bd3
push str.OsVersionCondition::IsRecommanded
lea eax, [esp + 0x18]
push eax
mov dword [esp + 0x24], edi
call fcn.00402cc5
mov dword [esp + 0x158], 2
cmp dword [ebx + 8], 0
jne 0x477b34
or dword [esp + 0x18], 0xffffffff
jmp 0x477b3f
mov ecx, dword [ebx + 8]
mov eax, dword [ecx]
call dword [eax]
mov dword [esp + 0x18], eax
lea eax, [esp + 0x14]
lea edi, [esp + 0x20]
call fcn.004c8150
push esi
push str.__but_need
mov byte [esp + 0x160], 3
mov ecx, dword [eax]
lea eax, [esp + 0x24]
push eax
push str.VerifyVersionInfoCondition:processor_architecture_is
mov eax, 0x511610
push eax
push ecx
push 0x5115d8
push eax
lea eax, [esp + 0x38]
push eax
push str._pushtype
call fcn.004022da
call fcn.00402322
call fcn.00423ea4
call fcn.00402322
call fcn.00402322
call fcn.00402322
call fcn.00402322
call fcn.00402322
call fcn.00423ea4
call fcn.00402322
call fcn.00423ea4
mov esi, eax
call fcn.0040234b
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
call fcn.004012f9
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
call fcn.004012f9
xor eax, eax
mov ecx, dword [esp + 0x150]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x138]
xor ecx, esp
call fcn.004d6e66
mov esp, ebp
pop ebp
ret