Function at 0x450240
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x61b13b
mov eax, dword fs:[0]
push eax
sub esp, 0xb8
mov eax, dword [0x69e3d4]
xor eax, esp
mov dword [esp + 0xb0], eax
push ebx
push esi
push edi
mov eax, dword [0x69e3d4]
xor eax, esp
push eax
lea eax, [esp + 0xc8]
mov dword fs:[0], eax
mov edi, ecx
xor ebx, ebx
cmp dword [edi + 0xd4], ebx
je 0x45080d
mov eax, dword [edi + 0x1a18]
cmp eax, ebx
mov dword [esp + 0x18], eax
je 0x4502b9
mov eax, dword [edi + 0x20]
push 1
push eax
call dword [sym.imp.user32.dll_KillTimer]
push 1
mov esi, edi
mov dword [edi + 0x1a18], ebx
call fcn.0044ffc0
mov dword [esp + 0x1c], vtable.CMenu.0
mov dword [esp + 0x20], ebx
mov dword [esp + 0xd0], ebx
call fcn.005702dd
mov eax, dword [eax + 0xc]
push 0x7d2
push eax
call dword [sym.imp.user32.dll_LoadMenuA]
push eax
lea ecx, [esp + 0x20]
call fcn.00584a51
mov ecx, dword [esp + 0x20]
push ebx
push ecx
call dword [sym.imp.user32.dll_GetSubMenu]
push eax
call fcn.00584a29
lea edx, [esp + 0x10]
push edx
mov dword [edi + 0x1a58], eax
call dword [sym.imp.user32.dll_GetCursorPos]
cmp dword [edi + 0x54], ebx
mov esi, dword [sym.imp.user32.dll_DeleteMenu]
je 0x45032a
mov eax, dword [edi + 0x1a58]
mov eax, dword [eax + 4]
push ebx
push 0x80ba
push eax
call esi
mov eax, dword [edi + 0x5c]
add eax, 0xffffffff
cmp eax, 6
ja case.default.0x450339
jmp dword [eax*4 + 0x450834]
mov eax, dword [edi + 0x1a58]
mov ecx, dword [eax + 4]
push 0x400
push 4
push ecx
call esi
cmp dword [edi + 0x5c], 4
je 0x45037d
mov eax, dword [edi + 0x1a58]
mov edx, dword [eax + 4]
push ebx
push 0x80ba
push edx
call esi
mov eax, dword [edi + 0x1a58]
mov eax, dword [eax + 4]
push ebx
push 0x8010
push eax
call esi
mov eax, dword [edi + 0x1a58]
mov ecx, dword [eax + 4]
push ebx
push 0x800e
push ecx
call esi
mov eax, dword [edi + 0x1a58]
mov edx, dword [eax + 4]
push ebx
push 0x8011
push edx
call esi
mov eax, dword [edi + 0x1a58]
mov eax, dword [eax + 4]
push ebx
push 0xda
push eax
call esi
cmp dword [edi + 0xe4], ebx
jne case.default.0x450339
push ebx
push 0x8010
jmp 0x45046d
mov eax, dword [edi + 0x60]
cmp eax, 0xfffffffe
je 0x4503d7
cmp eax, 0xffffffff
jne 0x4503ea
mov eax, dword [edi + 0x1a58]
mov edx, dword [eax + 4]
push 0x400
push 4
push edx
call esi
mov eax, dword [edi + 0x1a58]
mov eax, dword [eax + 4]
push ebx
push 0x8011
push eax
jmp 0x450477
mov eax, dword [edi + 0x1a58]
mov edx, dword [eax + 4]
push 0x400
push 4
push edx
call esi
mov eax, dword [edi + 0x1a58]
mov eax, dword [eax + 4]
push ebx
push 0x800c
push eax
jmp 0x450477
mov eax, dword [edi + 0x1a58]
mov ecx, dword [eax + 4]
push 0x400
push 4
push ecx
call esi
mov eax, dword [edi + 0x1a58]
mov edx, dword [eax + 4]
push ebx
push 0x80ba
push edx
call esi
mov eax, dword [edi + 0x1a58]
mov eax, dword [eax + 4]
push ebx
push 0x8011
push eax
call esi
mov eax, dword [edi + 0x1a44]
cmp eax, ebx
jle case.default.0x450339
cmp eax, 3
jge case.default.0x450339
push ebx
push 0xda
mov eax, dword [edi + 0x1a58]
mov ecx, dword [eax + 4]
push ecx
call esi
cmp dword [edi + 0x54], ebx
je 0x450490
mov eax, dword [edi + 0x1a58]
mov edx, dword [eax + 4]
push ebx
push 0x800c
push edx
call esi
mov eax, dword [edi + 0x1a58]
mov eax, dword [eax + 4]
push 1
push 1
push eax
call dword [sym.imp.user32.dll_SetMenuDefaultItem]
lea ecx, [esp + 0x24]
push ecx
mov dword [esp + 0x28], 0x94
call dword [sym.imp.kernel32.dll_GetVersionExA]
mov ecx, dword [esp + 0x28]
xor eax, eax
cmp ecx, 4
ja 0x4504cb
jne 0x4504d0
cmp dword [esp + 0x2c], 0xa
jb 0x4504d0
mov eax, 0x4000
mov edx, dword [edi + 0x20]
mov ecx, dword [esp + 0x14]
push ebx
push edx
mov edx, dword [esp + 0x18]
push ebx
push ecx
push edx
or eax, 0x102
push eax
mov eax, dword [edi + 0x1a58]
mov ecx, dword [eax + 4]
push ecx
call dword [sym.imp.user32.dll_TrackPopupMenu]
mov edx, dword [esp + 0x14]
mov esi, eax
mov eax, dword [esp + 0x10]
push edx
push eax
call dword [sym.imp.user32.dll_SetCursorPos]
cmp dword [edi + 0x7c], ebx
mov dword [edi + 0x1a58], ebx
je 0x45051d
push ebx
xor edx, edx
mov ecx, edi
call fcn.0044e500
cmp esi, 0x8005
jg 0x4505f2
je 0x4505e3
cmp esi, 0xda
jne case.0x45060a.32781
mov eax, dword [edi + 0x5c]
cmp eax, 1
mov dword [esp + 0x18], ebx
mov dword [edi + 0xe0], 2
je 0x450556
cmp eax, 7
jne 0x4505cb
mov ecx, dword [edi + 0xd0]
push ecx
call fcn.0044ecd0
mov eax, dword [edi + 0x68]
mov edx, dword [edi + 0x64]
mov ecx, dword [edi + 0x6c]
mov dword [edi + 0x1a2c], eax
mov eax, dword [edi + 0x1a50]
mov dword [edi + 0x1a28], edx
mov edx, dword [edi + 0x70]
push eax
mov dword [edi + 0x1a30], ecx
mov dword [edi + 0x1a34], edx
call fcn.0044dc70
mov ecx, dword [edi + 0x1a30]
mov edx, dword [edi + 0x1a34]
lea esi, [esp + 0x10]
mov dword [edi + 0x1a50], 0xffffffff
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edx
call fcn.0044c6d0
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
push eax
push ecx
call dword [sym.imp.user32.dll_SetCursorPos]
xor ebx, ebx
mov dword [edi + 0x5c], 6
mov dword [edi + 0x1a14], ebx
mov dword [edi + 0x1a44], ebx
jmp 0x4507c0
mov dword [edi + 0x88], 2
jmp case.0x45060a.32781
lea eax, [esi - 0x8007]
cmp eax, 0xb3
ja case.0x45060a.32781
movzx edx, byte [eax + 0x45087c]
jmp dword [edx*4 + 0x450850]
cmp dword [edi + 0xd0], ebx
je 0x450630
cmp dword [edi + 0x1a44], 2
jle 0x450630
push 1
call fcn.0044ecd0
xor ebx, ebx
jmp case.0x45060a.32781
mov eax, 1
mov dword [edi + 0x88], eax
mov dword [edi + 0x84], eax
jmp case.0x45060a.32781
xor ebx, ebx
mov eax, edi
call fcn.004500d0
jmp case.0x45060a.32781
mov ebx, 1
mov eax, edi
call fcn.004500d0
xor ebx, ebx
jmp case.0x45060a.32781
mov ebx, 2
mov eax, edi
call fcn.004500d0
xor ebx, ebx
jmp case.0x45060a.32781
mov ebx, 3
mov eax, edi
call fcn.004500d0
xor ebx, ebx
jmp case.0x45060a.32781
mov ebx, 4
mov eax, edi
call fcn.004500d0
xor ebx, ebx
jmp case.0x45060a.32781
mov eax, 1
mov dword [esp + 0x18], eax
mov dword [edi + 0x5c], eax
mov dword [edi + 0x1a14], ebx
mov dword [edi + 0x1a44], ebx
push eax
jmp 0x4507c2
mov eax, dword [edi + 0x60]
cmp eax, 0xfffffffe
mov dword [edi + 0x1a50], 0xffffffff
mov dword [esp + 0x18], ebx
jne 0x4506e1
mov eax, 2
mov dword [edi + 0x5c], eax
jmp 0x4507a3
xor ecx, ecx
cmp eax, 0xffffffff
setne cl
add ecx, 3
mov eax, ecx
mov dword [edi + 0x5c], eax
jmp 0x4507a3
cmp dword [edi + 0x5c], 1
mov dword [esp + 0x18], ebx
jne 0x45073c
mov eax, dword [edi + 0x68]
mov edx, dword [edi + 0x64]
mov ecx, dword [edi + 0x6c]
mov dword [edi + 0x1a2c], eax
mov eax, dword [edi + 0x1a50]
mov dword [edi + 0x1a28], edx
mov edx, dword [edi + 0x70]
push eax
mov dword [edi + 0x1a30], ecx
mov dword [edi + 0x1a34], edx
call fcn.0044dc70
mov dword [edi + 0x1a50], 0xffffffff
xor ebx, ebx
mov eax, dword [edi + 0x74]
cmp eax, ebx
je 0x45074d
push eax
call dword [sym.imp.gdi32.dll_DeleteObject]
mov dword [edi + 0x74], ebx
mov ecx, dword [edi + 0x1a30]
mov edx, dword [edi + 0x1a34]
lea esi, [esp + 0x10]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edx
call fcn.0044c6d0
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
push eax
push ecx
call dword [sym.imp.user32.dll_SetCursorPos]
push 1
mov ecx, edi
mov dword [edi + 0x5c], 5
call fcn.0044c7d0
xor ebx, ebx
jmp case.0x45060a.32781
mov dword [edi + 0x1a50], 0xffffffff
mov dword [esp + 0x18], ebx
mov dword [edi + 0x5c], 7
mov eax, dword [edi + 0x74]
cmp eax, ebx
mov dword [edi + 0x1a44], ebx
mov dword [edi + 0x1a14], ebx
je 0x4507c0
push eax
call dword [sym.imp.gdi32.dll_DeleteObject]
mov dword [edi + 0x74], ebx
push 1
mov ecx, edi
call fcn.0044c7d0
push ebx
xor edx, edx
mov ecx, edi
call fcn.0044e500
cmp dword [esp + 0x18], ebx
je 0x4507f1
mov edx, dword [edi + 0x20]
push ebx
push 0x1f4
push 1
push edx
call dword [sym.imp.user32.dll_SetTimer]
mov dword [edi + 0x1a18], eax
mov dword [esp + 0xd0], 0xffffffff
lea ecx, [esp + 0x1c]
mov dword [esp + 0x1c], vtable.CMenu.0
call fcn.00584aa4
mov ecx, dword [esp + 0xc8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xb0]
xor ecx, esp
call fcn.005a58d9
mov esp, ebp
pop ebp
ret 0xc