Function at 0x402c10
Capabilities:
Create process on windows
Hide graphical window

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xe4
mov eax, dword [0x408004]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
mov esi, dword [ebp + 0x10]
push 0x100
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_SetPriorityClass]
push str.S2Engine.html
call dword [sym.imp.S2Core.dll_OpenLog]
push 0x4052e0
push str.S2Engine.cfg
call dword [sym.imp.S2Core.dll_public:_static_class_S2File____cdecl_S2FileSystem::FileOpen_char_const___char_const__]
add esp, 0xc
test eax, eax
jne 0x402d21
push str.S2Engine.cfg
call dword [sym.imp.S2Core.dll_public:_static_class_S2Engine____cdecl_S2Engine::Instance_void_]
mov ecx, eax
call dword [sym.imp.S2Core.dll_public:_void___thiscall_S2Engine::SaveDefaultConfig_char__]
lea eax, [ebp - 0x2c]
mov dword [ebp - 0x84], 0x44
push eax
lea eax, [ebp - 0x84]
mov dword [ebp - 0x18], 0x103
push eax
push 0
push 0
push 0x20
push 0
xorps xmm0, xmm0
push 0
push 0
push 0
push str.S2Configuration.exe
movlpd qword [ebp - 0x80], xmm0
movlpd qword [ebp - 0x78], xmm0
movlpd qword [ebp - 0x70], xmm0
movlpd qword [ebp - 0x68], xmm0
movlpd qword [ebp - 0x60], xmm0
movlpd qword [ebp - 0x58], xmm0
movlpd qword [ebp - 0x50], xmm0
movlpd qword [ebp - 0x48], xmm0
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
cmp dword [ebp - 0x18], 0x103
jne 0x402cf7
mov esi, dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
lea eax, [ebp - 0x18]
push eax
push dword [ebp - 0x2c]
call esi
test eax, eax
je 0x402cf7
cmp dword [ebp - 0x18], 0x103
je 0x402ce1
push 0x1040
push str.S2Engine
push str.Configuration_File_created_and_saved._Restart_the_application
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
xor eax, eax
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00403769
mov esp, ebp
pop ebp
ret 0x10
push edi
push eax
call dword [sym.imp.S2Core.dll_public:_static_void___cdecl_S2FileSystem::FileClose_class_S2File__]
mov edi, dword [sym.imp.S2Core.dll_public:_static_class_S2Engine____cdecl_S2Engine::Instance_void_]
add esp, 4
call edi
mov ecx, eax
call dword [sym.imp.S2Core.dll_public:_int___thiscall_S2Engine::GetVersion_void_]
cmp eax, 0x13302ed
je 0x402d57
pop edi
xor eax, eax
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00403769
mov esp, ebp
pop ebp
ret 0x10
push ebx
push 0
push esi
lea ecx, [ebp - 0x40]
call dword [sym.imp.S2Core.dll_public:_void___thiscall_S2String::constructor_char_const___unsigned_int_]
lea ecx, [ebp - 0x40]
call dword [sym.imp.S2Core.dll_public:_bool___thiscall_S2String::IsEmpty_void_const]
mov ebx, dword [sym.imp.S2Core.dll_public_virtual:_void___thiscall_S2String::destructor_void_]
test al, al
jne 0x402dfc
mov esi, dword [sym.imp.S2Core.dll_public:_class_S2String___thiscall_S2String::GetToken_unsigned_int__char__]
lea eax, [ebp - 0x2c]
push 0x405354
push 0
push eax
lea ecx, [ebp - 0x40]
call esi
push 0x405354
push 1
lea eax, [ebp - 0xc8]
push eax
lea ecx, [ebp - 0x40]
call esi
push 0x405354
push 2
lea eax, [ebp - 0x14]
push eax
lea ecx, [ebp - 0x40]
call esi
lea eax, [ebp - 0x2c]
push eax
call edi
mov ecx, eax
call dword [sym.imp.S2Core.dll_public:_void___thiscall_S2Engine::SetMainScript_class_S2String_const__]
lea eax, [ebp - 0xc8]
push eax
call edi
mov ecx, eax
call dword [sym.imp.S2Core.dll_public:_void___thiscall_S2Engine::SetLoadScript_class_S2String_const__]
lea eax, [ebp - 0x14]
push eax
call edi
mov ecx, eax
call dword [sym.imp.S2Core.dll_public:_void___thiscall_S2Engine::SetStartGame_class_S2String_const__]
call edi
lea ecx, [ebp - 0x14]
mov byte [eax + 0xad], 0
call ebx
lea ecx, [ebp - 0xc8]
call ebx
lea ecx, [ebp - 0x2c]
call ebx
xorps xmm0, xmm0
push 0
movups xmmword [ebp - 0x14], xmm0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov dword [0x4080d8], eax
test eax, eax
je 0x402edb
push 0x7f05
push 0
mov dword [ebp - 0x68], 0x23
mov dword [ebp - 0x64], 0x402b60
mov dword [ebp - 0x60], 0
mov dword [ebp - 0x5c], 0
mov dword [ebp - 0x58], eax
call dword [sym.imp.USER32.dll_LoadIconA]
push 0x7f00
push 0
mov dword [ebp - 0x54], eax
call dword [sym.imp.USER32.dll_LoadCursorA]
push 4
mov dword [ebp - 0x50], eax
call dword [sym.imp.GDI32.dll_GetStockObject]
mov dword [ebp - 0x4c], eax
lea eax, [ebp - 0x68]
push eax
mov dword [ebp - 0x48], 0
mov dword [ebp - 0x44], str.S2EngineHD
call dword [sym.imp.USER32.dll_RegisterClassA]
test ax, ax
je 0x402edb
push 0x40000
push 0
push 0xcf0000
lea eax, [ebp - 0x14]
push eax
call dword [sym.imp.USER32.dll_AdjustWindowRectEx]
mov eax, dword [ebp - 8]
sub eax, dword [ebp - 0x10]
push 0
push dword [0x4080d8]
push 0
push 0
push eax
mov eax, dword [ebp - 0xc]
sub eax, dword [ebp - 0x14]
push eax
push 0
push 0
push 0x6cf0000
push str.S2EngineHD_App
push str.S2EngineHD
push 0x40000
call dword [sym.imp.USER32.dll_CreateWindowExA]
mov dword [0x4080dc], eax
test eax, eax
jne 0x402f0f
call fcn.004027c0
push 0x40
push str.S2EngineHD_App
push str.Cannot_open_window
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
xor esi, esi
lea ecx, [ebp - 0x40]
call dword [sym.imp.S2Core.dll_public_virtual:_void___thiscall_S2String::destructor_void_]
mov ecx, dword [ebp - 4]
mov eax, esi
pop ebx
pop edi
xor ecx, ebp
pop esi
call fcn.00403769
mov esp, ebp
pop ebp
ret 0x10
push str.Initializing_engine..._n
push str.S2EngineHD_App
push 1
call dword [sym.imp.S2Core.dll_PrintLog]
add esp, 0xc
call edi
mov byte [eax + 0x90], 0
call edi
push 0x8050
push 0
push 0
push 1
push str.icon.ico
mov byte [eax + 0xac], 1
mov esi, dword [0x4080dc]
push 0
mov dword [ebp - 0x1c], esi
call dword [sym.imp.USER32.dll_LoadImageA]
mov ebx, dword [sym.imp.USER32.dll_MessageBoxA]
mov dword [ebp - 0x18], eax
test eax, eax
je 0x402f94
push eax
push 1
push 0x80
push esi
mov esi, dword [sym.imp.USER32.dll_SendMessageA]
call esi
push dword [ebp - 0x18]
push 0
push 0x80
push dword [ebp - 0x1c]
call esi
push dword [ebp - 0x18]
push 0xfffffffffffffff2
push dword [ebp - 0x1c]
call dword [sym.imp.USER32.dll_SetClassLongA]
jmp 0x402fa3
push 0x10
push str.Errore
push str.Errore_nel_caricamento_dellicona_
push esi
call ebx
push 0
push 1
push dword [0x4080d8]
push dword [0x4080dc]
call edi
mov ecx, eax
call dword [sym.imp.S2Core.dll_public:_int___thiscall_S2Engine::Initialize_struct_HWND_____struct_HINSTANCE_____bool__bool_]
cmp eax, 0xe
ja case.default.0x402fc6
jmp dword [eax*4 + 0x403384]
push 0x10
push str.S2Engine
push str.Cannot_Initialize_Physics:_nTry_to_re_install_NVIDIA_Physx_drivers._n_nNOTE:_nIf_problem_persists__TRY_TO_UN_INSTALL_PHYSX_DRIVERS_AND_INSTALL_PHYSX_DRIVERS_from_version_9.10.0513._DONT_forget_to_RESTART_the_system_after_installation
push 0
call ebx
jmp case.0x402fc6.14
push 0x10
push str.S2Engine
push str.Cannot_Initialize_Audio:_nTry_to_connect_an_audio_device_such_as_headset_or_audio_box._n_If_the_problem_persists_try_to_uninstall_and_re_install_OpenAL_drivers:_Search_on_the_web_for_oalinst.exe_installation_file
push 0
call ebx
jmp case.0x402fc6.14
push 0x10
push str.S2Engine
push str.Cannot_Initialize_Rendering:_ntry_to_re_install_OpenGL_drivers
push 0
call ebx
jmp case.0x402fc6.14
push 0x10
push str.S2Engine
push str.Cannot_Initialize_Input:_ntry_to_re_install_DirectX_Input_drivers
push 0
call ebx
jmp case.0x402fc6.14
push 0x10
push str.S2Engine
push str.Cannot_Initialize_Steam_API:_nBe_sure_Steam_api.dll_exists_or_Open_Steam_Client
push 0
call ebx
jmp case.0x402fc6.14
push 0x10
push str.S2Engine
push str.Cannot_Initialize_Registry
push 0
call ebx
jmp case.0x402fc6.14
push 0x10
push str.S2Engine
push str.Cannot_Find_Physics_Dll:_nBe_sure_S2PhysxPhysics.dll_exists_OR_NVIDIA_PHYSX_drivers_have_been_correctly_installed_AND_YOU_HAVE_REBOOT_YOUR_PC._n_nNOTE:_nIf_problem_persists__TRY_TO_UN_INSTALL_PHYSX_DRIVERS_AND_INSTALL_PHYSX_DRIVERS_from_version_9.10.0513._DONT_forget_to_RESTART_the_system_after_installation
push 0
call ebx
jmp case.0x402fc6.14
push 0x10
push str.S2Engine
push str.Cannot_Find_Audio_Dll:_nBe_sure_S2OalAudio.dll_exists__if_so_uninstall_and_re_install_OpenAL_drivers:_Search_on_the_web_for_oalinst.exe_installation_file
push 0
call ebx
jmp case.0x402fc6.14
push 0x10
push str.S2Engine
push str.Cannot_Find_Renderer_Dll:_nBe_sure_S2OglRender3.dll_exists
push 0
call ebx
jmp case.0x402fc6.14
push 0x10
push str.S2Engine
push str.Cannot_Find_Input_Dll:_nBe_sure_S2DXInput.dll_exists
push 0
call ebx
jmp case.0x402fc6.14
push 0x10
push str.S2Engine
push str.Cannot_Find_AI_Dll:_nBe_sure_S2BaseAI.dll_exists
push 0
call ebx
jmp case.0x402fc6.14
push 0x10
push str.S2Engine
push str.Cannot_Initialize_AI
push 0
call ebx
jmp case.0x402fc6.14
push 0x10
push str.S2Engine
push str.Cannot_Initialize_Timer
push 0
call ebx
jmp case.0x402fc6.14
push 0x10
push str.S2Engine
push str.Cannot_Load_ini_file
push 0
call ebx
jmp case.0x402fc6.14
lea ecx, [ebp - 0xb8]
call dword [sym.imp.S2Core.dll_public:_void___thiscall_S2ParamDesc::constructor_void_]
push 0
push str.winWidth
lea ecx, [ebp - 0x2c]
call dword [sym.imp.S2Core.dll_public:_void___thiscall_S2String::constructor_char_const___unsigned_int_]
call edi
mov ecx, eax
call dword [sym.imp.S2Core.dll_public:_class_S2RenderDevice____thiscall_S2Engine::GetRenderDevice_void_const]
lea ecx, [ebp - 0xb8]
push ecx
lea ecx, [ebp - 0x2c]
mov edx, dword [eax]
push ecx
mov ecx, eax
call dword [edx + 0xb8]
mov ebx, dword [sym.imp.S2Core.dll_public_virtual:_void___thiscall_S2String::destructor_void_]
lea ecx, [ebp - 0x2c]
call ebx
mov esi, dword [sym.imp.S2Core.dll_public:_int___thiscall_S2String::operator_int_void_const]
lea ecx, [ebp - 0xac]
call esi
cmp eax, 0x140
jge 0x403157
mov dword [ebp - 0x1c], 0x140
jmp 0x403162
lea ecx, [ebp - 0xac]
call esi
mov dword [ebp - 0x1c], eax
push 0
push str.winHeight
lea ecx, [ebp - 0x2c]
call dword [sym.imp.S2Core.dll_public:_void___thiscall_S2String::constructor_char_const___unsigned_int_]
call edi
mov ecx, eax
call dword [sym.imp.S2Core.dll_public:_class_S2RenderDevice____thiscall_S2Engine::GetRenderDevice_void_const]
lea ecx, [ebp - 0xb8]
push ecx
lea ecx, [ebp - 0x2c]
mov edx, dword [eax]
push ecx
mov ecx, eax
call dword [edx + 0xb8]
lea ecx, [ebp - 0x2c]
call ebx
lea ecx, [ebp - 0xac]
call esi
cmp eax, 0xf0
jge 0x4031ae
mov dword [ebp - 0x30], 0xf0
jmp 0x4031b9
lea ecx, [ebp - 0xac]
call esi
mov dword [ebp - 0x30], eax
push 0
push str.fullscreen
lea ecx, [ebp - 0x2c]
call dword [sym.imp.S2Core.dll_public:_void___thiscall_S2String::constructor_char_const___unsigned_int_]
call edi
mov ecx, eax
call dword [sym.imp.S2Core.dll_public:_class_S2RenderDevice____thiscall_S2Engine::GetRenderDevice_void_const]
lea ecx, [ebp - 0xb8]
push ecx
lea ecx, [ebp - 0x2c]
mov edx, dword [eax]
push ecx
mov ecx, eax
call dword [edx + 0xb8]
lea ecx, [ebp - 0x2c]
call ebx
mov esi, dword [sym.imp.S2Core.dll_public:_bool___thiscall_S2String::operator_bool_void_const]
lea ecx, [ebp - 0xac]
call esi
push 0
push str.borderless
lea ecx, [ebp - 0x2c]
mov bl, al
call dword [sym.imp.S2Core.dll_public:_void___thiscall_S2String::constructor_char_const___unsigned_int_]
call edi
mov ecx, eax
call dword [sym.imp.S2Core.dll_public:_class_S2RenderDevice____thiscall_S2Engine::GetRenderDevice_void_const]
lea ecx, [ebp - 0xb8]
push ecx
lea ecx, [ebp - 0x2c]
mov edx, dword [eax]
push ecx
mov ecx, eax
call dword [edx + 0xb8]
lea ecx, [ebp - 0x2c]
call dword [sym.imp.S2Core.dll_public_virtual:_void___thiscall_S2String::destructor_void_]
lea ecx, [ebp - 0xac]
call esi
test bl, bl
jne 0x4032af
test al, al
jne 0x4032af
lea eax, [ebp - 0x14]
push eax
push dword [0x4080dc]
call dword [sym.imp.USER32.dll_GetWindowRect]
mov eax, dword [ebp - 0x14]
add eax, dword [ebp - 0x1c]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x10]
add eax, dword [ebp - 0x30]
push 0
push 0
mov dword [ebp - 8], eax
call dword [sym.imp.USER32.dll_ChangeDisplaySettingsA]
push dword [0x4080dc]
call dword [sym.imp.USER32.dll_SetFocus]
push 9
push dword [0x4080dc]
call dword [sym.imp.USER32.dll_ShowWindow]
mov eax, dword [ebp - 8]
mov edx, dword [ebp - 0x10]
sub eax, edx
mov ecx, dword [ebp - 0x14]
push 0x40
push eax
mov eax, dword [ebp - 0xc]
sub eax, ecx
push eax
push edx
push ecx
push 0
push dword [0x4080dc]
call dword [sym.imp.USER32.dll_SetWindowPos]
push str.Entering_main_loop..._n
push str.S2EngineHD_App
push 1
call dword [sym.imp.S2Core.dll_PrintLog]
mov esi, dword [sym.imp.USER32.dll_PeekMessageA]
add esp, 0xc
mov ebx, dword [sym.imp.USER32.dll_TranslateMessage]
push 1
push 0
push 0
push 0
lea eax, [ebp - 0xe4]
push eax
call esi
test eax, eax
je 0x403306
cmp dword [ebp - 0xe0], 0x12
je 0x403356
lea eax, [ebp - 0xe4]
push eax
call ebx
lea eax, [ebp - 0xe4]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageA]
jmp 0x4032d0
call edi
cmp byte [eax + 0x430], 0
jne 0x40332c
call edi
mov ecx, eax
call dword [sym.imp.S2Core.dll_public:_class_S2InputDevice____thiscall_S2Engine::GetInputDevice_void_const]
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x20]
push 0x10
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x4032d0
push 0
push 0
call edi
mov ecx, eax
call dword [sym.imp.S2Core.dll_public:_bool___thiscall_S2Engine::Update_void____cdecl___void___void____cdecl___void__]
push 0
test al, al
je 0x403350
push 0
push 0
call edi
mov ecx, eax
call dword [sym.imp.S2Core.dll_public:_void___thiscall_S2Engine::Render_void____cdecl___void___void____cdecl___void___void____cdecl___void__]
jmp 0x4032d0
call dword [sym.imp.USER32.dll_PostQuitMessage]
call edi
mov ecx, eax
call dword [sym.imp.S2Core.dll_public:_bool___thiscall_S2Engine::Shutdown_void_]
call fcn.004027c0
push dword [ebp - 0x18]
call dword [sym.imp.USER32.dll_DestroyIcon]
lea ecx, [ebp - 0xb8]
mov esi, 1
call dword [sym.imp.S2Core.dll_public_virtual:_void___thiscall_S2ParamDesc::destructor_void_]
jmp 0x402ef1