Function at 0x401000
Capabilities:
Hide graphical window

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x74
mov esi, dword [esp + 0x94]
mov edi, dword [esp + 0x88]
mov eax, dword [section..data]
xor eax, esp
mov dword [esp + 0x70], eax
xorps xmm0, xmm0
movups xmmword [esp + 0x14], xmm0
movups xmmword [esp + 0x24], xmm0
mov dword [esp + 0x34], 0
mov dword [esp + 8], 0x30
mov dword [esp + 0xc], 3
mov dword [esp + 0x10], 0x401280
mov dword [esp + 0x1c], edi
push 0x7f00
push 0
call dword [sym.imp.USER32.dll_LoadCursorW]
mov dword [esp + 0x24], eax
mov dword [esp + 0x30], str.WindowClass
lea eax, [esp + 8]
push eax
call dword [sym.imp.USER32.dll_RegisterClassExW]
sub esp, 0x30
mov dword [esp + 0x28], edi
movaps xmm0, xmmword [section..rdata]
movups xmmword [esp + 0xc], xmm0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], 0x258
mov dword [esp + 8], str.DirectX_Test
mov dword [esp + 4], str.WindowClass
mov dword [esp], 0
call dword [sym.imp.USER32.dll_CreateWindowExW]
mov dword [0x403060], eax
push esi
push eax
call dword [sym.imp.USER32.dll_ShowWindow]
mov edi, dword [0x403060]
push 0x20
call sub.d3d9.dll_Direct3DCreate9
mov dword [0x403058], eax
test eax, eax
je 0x401139
xorps xmm0, xmm0
movups xmmword [esp + 0x58], xmm0
movups xmmword [esp + 0x48], xmm0
movups xmmword [esp + 0x38], xmm0
mov dword [esp + 0x6c], 0
mov dword [esp + 0x68], 0
mov dword [esp + 0x58], 1
mov dword [esp + 0x50], 1
mov dword [esp + 0x54], edi
mov ecx, dword [eax]
lea esi, [esp + 0x38]
push 0x40305c
push esi
push 0x40
push edi
push 1
push 0
push eax
call dword [ecx + 0x40]
test eax, eax
je 0x401166
push 0
push str.Error
push str.Failed_to_initialize_Direct3D_
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
xor esi, esi
mov ecx, dword [esp + 0x70]
xor ecx, esp
call fcn.0040129a
mov eax, esi
add esp, 0x74
pop esi
pop edi
pop ebx
pop ebp
ret 0x10
push str.DevIL.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
test eax, eax
je 0x40114d
xorps xmm0, xmm0
movups xmmword [esp + 0x44], xmm0
movups xmmword [esp + 0x38], xmm0
mov edi, dword [sym.imp.USER32.dll_PeekMessageW]
mov ebx, esp
mov ebp, dword [sym.imp.USER32.dll_DispatchMessageW]
jmp 0x4011b5
push esi
call dword [sym.imp.USER32.dll_TranslateMessage]
push esi
call ebp
cmp dword [esp + 0x3c], 0x12
je 0x401251
sub esp, 0x14
movaps xmm0, xmmword [0x402010]
movups xmmword [esp + 4], xmm0
mov dword [esp], esi
call edi
test eax, eax
jne 0x4011a0
mov eax, dword [0x40305c]
test eax, eax
je 0x401238
mov ecx, dword [eax]
sub esp, 0x1c
movaps xmm0, xmmword [0x402020]
movups xmmword [esp + 4], xmm0
mov dword [esp], eax
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0x3f800000
call dword [ecx + 0xac]
mov eax, dword [0x40305c]
mov ecx, dword [eax]
push eax
call dword [ecx + 0xa4]
test eax, eax
js 0x401220
mov eax, dword [0x40305c]
mov ecx, dword [eax]
push eax
call dword [ecx + 0xa8]
mov eax, dword [0x40305c]
mov ecx, dword [eax]
sub esp, 0x14
xorps xmm0, xmm0
movups xmmword [esp + 4], xmm0
mov dword [esp], eax
call dword [ecx + 0x44]
push ebx
call dword [sym.imp.USER32.dll_GetCursorPos]
push ebx
push dword [0x403060]
call dword [sym.imp.USER32.dll_ScreenToClient]
jmp 0x4011b5
mov eax, dword [0x40305c]
test eax, eax
je 0x401260
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [0x403058]
test eax, eax
je 0x40126f
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov esi, dword [esp + 0x40]
jmp 0x40114f