Function at 0x401000
Capabilities:
Check for time delay via gettickcount
Read file on windows
Terminate process

Disassembly:
and dword [0x4030bc], 0
and dword [0x4030c0], 0
and dword [0x4030c4], 0
and dword [0x4030cc], 0
and dword [0x4030c8], 0
push 0
call dword [sym.imp.KERNEL32.DLL_GetModuleHandleA]
mov dword [section..bss], eax
push 0x7f00
push 0
call dword [sym.imp.USER32.DLL_LoadIconA]
mov dword [0x40301c], eax
push 0x7f00
push 0
call dword [sym.imp.USER32.DLL_LoadCursorA]
mov dword [0x403020], eax
mov dword [0x403008], 0
mov dword [0x40300c], 0x4016c8
mov dword [0x403010], 0
mov dword [0x403014], 0
mov eax, dword [section..bss]
mov dword [0x403018], eax
mov dword [0x403024], 0
mov dword [0x403028], 0
mov dword [0x40302c], 0x402026
push 0x403008
call dword [sym.imp.USER32.DLL_RegisterClassA]
test eax, eax
je 0x401399
push 0
push dword [section..bss]
push 0
push 0
push 0
push 0
push 0
push 0
push 0x90000000
push str.flat_assembler_DirectDraw_application
push str.FDDRAW32
push 0
call dword [sym.imp.USER32.DLL_CreateWindowExA]
test eax, eax
je 0x401399
mov dword [0x403004], eax
push 0
push 0x4030bc
push 0
call dword [sym.imp.DDRAW.DLL_DirectDrawCreate]
or eax, eax
jne 0x401360
push 0x11
push dword [0x403004]
mov eax, dword [0x4030bc]
push eax
mov eax, dword [eax]
call dword [eax + 0x50]
or eax, eax
jne 0x401360
push 8
push 0x1e0
push 0x280
mov eax, dword [0x4030bc]
push eax
mov eax, dword [eax]
call dword [eax + 0x54]
or eax, eax
jne 0x401360
mov dword [0x40304c], 0x6c
mov dword [0x403050], 0x21
mov dword [0x4030b4], 0x218
mov dword [0x403060], 1
push 0
push 0x4030c0
push 0x40304c
mov eax, dword [0x4030bc]
push eax
mov eax, dword [eax]
call dword [eax + 0x18]
or eax, eax
jne 0x401360
mov dword [0x4030b8], 4
push 0x4030c4
push 0x4030b8
mov eax, dword [0x4030c0]
push eax
mov eax, dword [eax]
call dword [eax + 0x30]
or eax, eax
jne 0x401360
mov esi, str.DDRAW.GIF
call fcn.00401428
jb 0x401367
mov esi, str.DDRAW.GIF
call fcn.00401629
jb 0x401367
call dword [sym.imp.KERNEL32.DLL_GetTickCount]
mov dword [0x4030d4], eax
jmp 0x401255
push 0
push 0
push 0
push 0
push 0x403030
call dword [sym.imp.USER32.DLL_PeekMessageA]
or eax, eax
je 0x401223
push 0
push 0
push 0
push 0x403030
call dword [sym.imp.USER32.DLL_GetMessageA]
or eax, eax
je 0x4013b1
push 0x403030
call dword [sym.imp.USER32.DLL_TranslateMessage]
push 0x403030
call dword [sym.imp.USER32.DLL_DispatchMessageA]
jmp 0x4011db
cmp byte [0x4030d9], 0
je 0x401355
mov eax, dword [0x4030c0]
push eax
mov eax, dword [eax]
call dword [eax + 0x60]
or eax, eax
je 0x401255
cmp eax, 0x887601c2
jne 0x4013b1
mov eax, dword [0x4030c0]
push eax
mov eax, dword [eax]
call dword [eax + 0x6c]
mov dword [0x44a8cf], 0
mov dword [0x44a8d7], 0x1e0
mov dword [0x44a8cb], 0
mov dword [0x44a8d3], 0x280
push 1
push 0x44a8cb
push dword [0x4030c8]
push 0
push 0
mov eax, dword [0x4030c4]
push eax
mov eax, dword [eax]
call dword [eax + 0x1c]
or eax, eax
jne 0x401318
movzx eax, byte [0x4030d8]
xor edx, edx
mov ebx, 0xa
div ebx
shl eax, 6
add eax, 0x1e0
mov dword [0x44a8cf], eax
add eax, 0x40
mov dword [0x44a8d7], eax
shl edx, 6
mov dword [0x44a8cb], edx
add edx, 0x40
mov dword [0x44a8d3], edx
push 1
push 0x44a8cb
push dword [0x4030c8]
push dword [0x44a8df]
push dword [0x44a8db]
mov eax, dword [0x4030c4]
push eax
mov eax, dword [eax]
call dword [eax + 0x1c]
push dword [0x4030cc]
mov eax, dword [0x4030c0]
push eax
mov eax, dword [eax]
call dword [eax + 0x7c]
push 0
push 0
mov eax, dword [0x4030c0]
push eax
mov eax, dword [eax]
call dword [eax + 0x2c]
call dword [sym.imp.KERNEL32.DLL_GetTickCount]
mov ebx, eax
sub ebx, dword [0x4030d4]
cmp ebx, 0x14
jb 0x4011db
add dword [0x4030d4], 0x14
inc byte [0x4030d8]
cmp byte [0x4030d8], 0x3c
jb 0x4011db
mov byte [0x4030d8], 0
jmp 0x4011db
call dword [sym.imp.USER32.DLL_WaitMessage]
jmp 0x4011db
mov eax, str.Direct_Draw_initialization_failed.
jmp 0x40136c
mov eax, str.Failed_opening_data_file.
push 0x10
push str.Error
push eax
push dword [0x403004]
call dword [sym.imp.USER32.DLL_MessageBoxA]
push dword [0x403004]
call dword [sym.imp.USER32.DLL_DestroyWindow]
push 1
call dword [sym.imp.USER32.DLL_PostQuitMessage]
jmp 0x4011db
push 0x10
push str.Error
push str.Startup_failed.
push dword [0x403004]
call dword [sym.imp.USER32.DLL_MessageBoxA]
cmp dword [0x4030c8], 0
je 0x4013c5
mov eax, dword [0x4030c8]
push eax
mov eax, dword [eax]
call dword [eax + 8]
cmp dword [0x4030cc], 0
je 0x4013d9
mov eax, dword [0x4030cc]
push eax
mov eax, dword [eax]
call dword [eax + 8]
cmp dword [0x4030c4], 0
je 0x4013f4
push 0x4030c4
push 0
mov eax, dword [0x4030c0]
push eax
mov eax, dword [eax]
call dword [eax + 0x20]
cmp dword [0x4030c0], 0
je 0x401408
mov eax, dword [0x4030c0]
push eax
mov eax, dword [eax]
call dword [eax + 8]
cmp dword [0x4030bc], 0
je 0x40141c
mov eax, dword [0x4030bc]
push eax
mov eax, dword [eax]
call dword [eax + 8]
push dword [0x403038]
call dword [sym.imp.KERNEL32.DLL_ExitProcess]