Function at 0x401000
Capabilities:
Create thread
Hide graphical window

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x54
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
xor ebx, ebx
push 0x7f00
push ebx
mov dword [esp + 0x40], 3
mov dword [esp + 0x44], 0x401360
mov dword [esp + 0x48], ebx
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x50], edi
call dword [sym.imp.USER32.dll_LoadIconA]
push 0x7f00
push ebx
mov dword [esp + 0x54], eax
call dword [sym.imp.USER32.dll_LoadCursorA]
push ebx
mov dword [esp + 0x54], eax
call dword [sym.imp.GDI32.dll_GetStockObject]
mov dword [esp + 0x54], eax
lea eax, [esp + 0x38]
push eax
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x60], 0x40c0c0
call dword [sym.imp.USER32.dll_RegisterClassA]
test ax, ax
jne 0x401092
push 0x10
push 0x40c0c0
push str.This_program_requires_Windows_NT_
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
push 0x190
push 0x12c
push ebx
push ebx
lea ecx, [esp + 0x1c]
push ecx
call dword [sym.imp.USER32.dll_SetRect]
push ebx
push 0xcf0000
lea edx, [esp + 0x14]
push edx
call dword [sym.imp.USER32.dll_AdjustWindowRect]
mov esi, dword [sym.imp.USER32.dll_GetSystemMetrics]
push ebx
call esi
push 1
mov dword [0x40cb48], eax
call esi
mov esi, dword [esp + 0x14]
sub esi, dword [esp + 0xc]
push ebx
mov ecx, eax
mov eax, dword [esp + 0x1c]
sub eax, dword [esp + 0x14]
push edi
push ebx
push ebx
push eax
cdq
sub eax, edx
mov dword [0x40cb54], ecx
sar eax, 1
shr ecx, 1
sub ecx, eax
push esi
push ecx
mov ecx, dword [0x40cb48]
mov eax, esi
cdq
sub eax, edx
shr ecx, 1
sar eax, 1
sub ecx, eax
push ecx
push 0xcf0000
push 0x40a34c
push 0x40c0c0
push ebx
call dword [sym.imp.USER32.dll_CreateWindowExA]
mov edx, dword [ebp + 0x14]
push edx
push eax
mov dword [0x40cb4c], eax
call dword [sym.imp.USER32.dll_ShowWindow]
mov eax, dword [0x40cb4c]
push eax
call dword [sym.imp.USER32.dll_UpdateWindow]
mov ecx, dword [0x40cb4c]
push ecx
call dword [sym.imp.USER32.dll_GetDC]
push 1
push eax
mov dword [0x40cb58], eax
call dword [sym.imp.GDI32.dll_SetBkMode]
mov edx, dword [0x40cb58]
push 0xffc554
push edx
call dword [sym.imp.GDI32.dll_SetTextColor]
mov eax, dword [0x40cb58]
mov esi, dword [sym.imp.GDI32.dll_CreateCompatibleDC]
push eax
call esi
mov ecx, dword [0x40cb54]
mov edx, dword [0x40cb48]
mov edi, dword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
push ecx
mov dword [0x40cb5c], eax
mov eax, dword [0x40cb58]
push edx
push eax
call edi
push 0x10
push 0x14
push 0x14
push ebx
push str.res_diamond.bmp
push ebx
mov ebx, dword [sym.imp.USER32.dll_LoadImageA]
mov dword [0x40cb60], eax
call ebx
mov ecx, dword [0x40cb5c]
push eax
push ecx
mov dword [0x40cb60], eax
call dword [sym.imp.GDI32.dll_SelectObject]
mov edx, dword [0x40cb58]
push edx
call esi
mov ecx, dword [0x40cb48]
mov edx, dword [0x40cb58]
mov dword [0x40cb64], eax
mov eax, dword [0x40cb54]
push eax
push ecx
push edx
call edi
push 0x10
push 0x190
push 0x12c
push 0
push str.res_IsWin.bmp
push 0
mov dword [0x40cb68], eax
call ebx
push eax
mov dword [0x40cb68], eax
mov eax, dword [0x40cb64]
push eax
call dword [sym.imp.GDI32.dll_SelectObject]
mov ecx, dword [0x40cb58]
push ecx
call esi
mov edx, dword [0x40cb54]
mov ecx, dword [0x40cb58]
mov dword [0x40cb6c], eax
mov eax, dword [0x40cb48]
push edx
push eax
push ecx
call edi
push 0x10
push 0x190
push 0x12c
push 0
push str.res_GameOver.bmp
push 0
mov dword [0x40cb70], eax
call ebx
mov edx, dword [0x40cb6c]
push eax
push edx
mov dword [0x40cb70], eax
call dword [sym.imp.GDI32.dll_SelectObject]
call fcn.00401a70
mov ecx, 0x10
mov esi, 0x40cb78
mov edi, 0x40cbb8
rep movsd dword es:[edi], dword [esi]
call fcn.00401a70
call fcn.004018e0
xor esi, esi
push esi
push esi
push esi
push 0x401c70
push esi
push esi
call dword [sym.imp.KERNEL32.dll_CreateThread]
push esi
push esi
push esi
lea eax, [esp + 0x28]
push eax
call dword [sym.imp.USER32.dll_GetMessageA]
test eax, eax
je 0x401348
mov edi, dword [sym.imp.GDI32.dll_CreateSolidBrush]
mov ebx, dword [sym.imp.USER32.dll_FillRect]
lea ebx, [ebx]
lea ecx, [esp + 0x1c]
push ecx
call dword [sym.imp.USER32.dll_TranslateMessage]
lea edx, [esp + 0x1c]
push edx
call dword [sym.imp.USER32.dll_DispatchMessageA]
cmp byte [0x40cbff], 0
jne 0x401332
cmp byte [0x40cbfe], 0
jne 0x401332
push 0xffffff
mov dword [0x40cb34], esi
mov dword [0x40cb38], esi
mov dword [0x40cb3c], 0x12c
mov dword [0x40cb40], 0x190
call edi
mov esi, eax
mov eax, dword [0x40cb4c]
push eax
call dword [sym.imp.USER32.dll_GetDC]
push esi
push 0x40cb34
push eax
call ebx
call fcn.00401440
call fcn.00401610
xor esi, esi
push esi
push esi
push esi
lea ecx, [esp + 0x28]
push ecx
call dword [sym.imp.USER32.dll_GetMessageA]
test eax, eax
jne 0x4012c0
mov eax, dword [esp + 0x24]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10