Function at 0x47ffa0
Capabilities:
Check os version
Terminate process

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x98
mov eax, dword [0x515de0]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
push edi
push 0x180
call fcn.0045a430
push str.Spellarium6.log
mov dword [0x51a3b0], eax
push 0x1d
mov ecx, dword [eax]
push eax
call dword [ecx + 0x38]
lea eax, [ebp - 0x98]
mov dword [ebp - 0x98], 0x94
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
push dword [ebp - 0x90]
mov eax, dword [0x51a3b0]
push dword [ebp - 0x94]
push str.Windows_version__u._u
mov ecx, dword [eax]
push eax
call dword [ecx + 0x1c]
add esp, 0x10
cmp dword [ebp - 0x94], 6
jb 0x48008a
cmp dword [ebp - 0x90], 2
jb 0x48008a
push str.user32.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov esi, eax
test esi, esi
je 0x480077
push str.SetProcessDPIAware
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov edi, eax
test edi, edi
je 0x48005b
mov ecx, dword [0x51a3b0]
push str.setDPIAware
push ecx
mov edx, dword [ecx]
call dword [edx + 0x1c]
add esp, 8
call edi
push esi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
jmp 0x48008a
mov eax, dword [0x51a3b0]
push str.cannot_find_SetProcessDPIAware
push eax
mov ecx, dword [eax]
call dword [ecx + 0x1c]
add esp, 8
push esi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
jmp 0x48008a
mov eax, dword [0x51a3b0]
push str.cannot_load_user32.dll
push eax
mov ecx, dword [eax]
call dword [ecx + 0x1c]
add esp, 8
mov edi, dword [sym.imp.USER32.dll_GetSystemMetrics]
push 0
call edi
cmp eax, 0x556
jle 0x4800a6
push 1
call edi
cmp eax, 0x300
jg 0x4800ad
mov byte [0x511de8], 0
mov ecx, dword [0x51a3b0]
test ecx, ecx
je 0x480602
mov eax, dword [ecx]
push 0x65
push 0x1a
push ecx
call dword [eax + 0x38]
mov eax, dword [0x51a3b0]
mov esi, dword [eax]
movzx eax, byte [0x511de8]
push eax
push 1
call edi
push eax
push 0
call edi
push eax
push str.Initial_mode:_dx_d____CanWorkInWindowedMode_d
push dword [0x51a3b0]
call dword [esi + 0x1c]
mov eax, dword [0x51a3b0]
add esp, 0x14
mov ecx, dword [eax]
push str.Spellarium_6
push 0x1b
push eax
call dword [ecx + 0x38]
mov eax, dword [0x51a3b0]
push 0
push 7
push eax
mov ecx, dword [eax]
call dword [ecx + 0x28]
mov eax, dword [0x51a3b0]
push 0
push 4
push eax
mov ecx, dword [eax]
call dword [ecx + 0x28]
mov eax, dword [0x51a3b0]
push 1
push 2
push eax
mov ecx, dword [eax]
call dword [ecx + 0x28]
mov eax, dword [0x51a3b0]
push 0
push 0x65
push eax
mov ecx, dword [eax]
call dword [ecx + 0x28]
mov eax, dword [0x51a3b0]
push 0xffffffffffffffff
push 0x18
push eax
mov ecx, dword [eax]
call dword [ecx + 0x34]
push 0x2c
call fcn.004c3c3a
add esp, 4
test eax, eax
je 0x480172
xor ecx, ecx
mov dword [eax + 0x14], 7
mov dword [eax + 0x10], 0
mov word [eax], cx
mov byte [eax + 0x2b], cl
jmp 0x480174
xor eax, eax
mov ecx, eax
mov dword [0x51a3cc], eax
call fcn.00447b70
mov ecx, dword [0x51a3cc]
call fcn.00447ca0
push 0x1c
call fcn.004c3c3a
add esp, 4
test eax, eax
je 0x4801a2
mov ecx, eax
call fcn.004976b0
jmp 0x4801a4
xor eax, eax
mov ecx, eax
mov dword [0x51d33c], eax
call fcn.00497890
test al, al
jne 0x4801c7
mov eax, dword [0x51a3b0]
push str.Error:_resource_pack_init_failure
push eax
mov ecx, dword [eax]
call dword [ecx + 0x1c]
add esp, 8
push 8
call fcn.004c3c3a
mov esi, eax
add esp, 4
test esi, esi
je 0x4801ef
mov ecx, esi
mov dword [esi], 0
mov dword [esi + 4], 0
call fcn.0047ff30
mov dword [esi], eax
jmp 0x4801f1
xor esi, esi
mov ecx, esi
mov dword [0x51a3d8], esi
call fcn.00463d90
mov eax, dword [0x51a3b0]
push 0
push 3
push eax
mov ecx, dword [eax]
call dword [ecx + 0x28]
mov eax, dword [0x51a3b0]
push eax
mov ecx, dword [eax]
call dword [ecx + 4]
test al, al
je 0x48058f
mov ecx, dword [0x51a3cc]
call fcn.0046ec70
push 8
call fcn.004c3c3a
mov esi, eax
add esp, 4
test esi, esi
je 0x480257
push 0
push 0
mov ecx, esi
mov dword [esi], 0
mov dword [esi + 4], 0
call fcn.0045e540
mov dword [esi], eax
jmp 0x480259
xor esi, esi
push 0x30
mov dword [0x51a3bc], esi
call fcn.004c3c3a
add esp, 4
test eax, eax
je 0x480276
mov ecx, eax
call fcn.0047fc50
jmp 0x480278
xor eax, eax
push 0xc
mov dword [0x51a3b4], eax
call fcn.004c3c3a
mov esi, eax
add esp, 4
test esi, esi
je 0x4802a9
push 0
push 0
mov ecx, esi
mov dword [esi], 0
mov dword [esi + 4], 0
call fcn.0047ff60
mov dword [esi], eax
jmp 0x4802ab
xor esi, esi
push 3
mov dword [0x51a3b8], esi
call fcn.004c3c3a
add esp, 4
test eax, eax
je 0x4802ca
mov word [eax], 0x101
mov byte [eax + 2], 1
jmp 0x4802cc
xor eax, eax
push 0x3c
mov dword [0x51a3c0], eax
call fcn.004c3c3a
add esp, 4
test eax, eax
je 0x4802e8
mov ecx, eax
call fcn.0047fa40
jmp 0x4802ea
xor eax, eax
push 0xcb8
mov dword [0x51a3c8], eax
call fcn.004c3c3a
add esp, 4
test eax, eax
je 0x480309
mov ecx, eax
call fcn.0047f9d0
jmp 0x48030b
xor eax, eax
mov ecx, eax
mov dword [0x51a3c4], eax
call fcn.004924c0
push 0x48
call fcn.004c3c3a
add esp, 4
test eax, eax
je 0x48032e
mov dword [eax + 0x38], 0
jmp 0x480330
xor eax, eax
mov ecx, eax
mov dword [0x51a3d0], eax
call fcn.00448c70
push 0x57b8
call fcn.004c3c3a
add esp, 4
test eax, eax
je 0x480356
mov ecx, eax
call fcn.0047fb70
jmp 0x480358
xor eax, eax
mov ecx, eax
mov dword [0x51a3d4], eax
call fcn.004a2090
test al, al
jne 0x48037b
mov eax, dword [0x51a3b0]
push str.Error:_sound_init_failure
push eax
mov ecx, dword [eax]
call dword [ecx + 0x1c]
add esp, 8
mov eax, dword [0x51a3b0]
push 0x47fcc0
push 8
push eax
mov ecx, dword [eax]
call dword [ecx + 0x2c]
mov eax, dword [0x51a3b0]
push 0x47fe30
push 9
push eax
mov ecx, dword [eax]
call dword [ecx + 0x2c]
mov eax, dword [0x51a3b0]
push fcn.0046ec70
push 0xc
push eax
mov ecx, dword [eax]
call dword [ecx + 0x2c]
mov eax, dword [0x51a3b0]
push 0x47fcb0
push 0xa
push eax
mov ecx, dword [eax]
call dword [ecx + 0x2c]
mov eax, dword [0x51a3b0]
push 0x47fc90
push 0xb
push eax
mov ecx, dword [eax]
call dword [ecx + 0x2c]
push 0x24
call fcn.004c3c3a
mov esi, eax
add esp, 4
test esi, esi
je 0x480411
mov dword [esi], vtable.CCursedApp::CSoundVolumeSetter.0
mov byte [esi + 8], 0
mov dword [esi + 0xc], vtable.CLogoGUI.0
mov dword [esi + 0x14], vtable.CGameGUI.0
mov dword [esi + 0x18], vtable.CLoadingGUI.0
mov byte [esi + 0x1c], 0
mov dword [esi + 0x20], 0
jmp 0x480413
xor esi, esi
mov dword [0x51a3e0], esi
mov dword [esi + 4], 0
mov ecx, dword [0x51a3b8]
push esi
call fcn.004afd60
lea ecx, [esi + 0xc]
call fcn.00465300
mov eax, dword [0x51a3b0]
push str.hge__System_Start___
push eax
mov ecx, dword [eax]
call dword [ecx + 0x1c]
mov eax, dword [0x51a3b0]
add esp, 8
mov ecx, dword [eax]
push eax
call dword [ecx + 0x14]
mov eax, dword [0x51a3b0]
push 0
mov byte [0x51a3dc], 1
push 8
mov ecx, dword [eax]
push eax
call dword [ecx + 0x2c]
mov eax, dword [0x51a3b0]
push 0
push 9
push eax
mov ecx, dword [eax]
call dword [ecx + 0x2c]
mov eax, dword [0x51a3b0]
push 0
push 0xc
push eax
mov ecx, dword [eax]
call dword [ecx + 0x2c]
mov ecx, dword [0x51a3b4]
call fcn.004b0b80
mov esi, dword [0x51a3b4]
test esi, esi
je 0x4804ab
mov ecx, esi
call fcn.004b00e0
push esi
call fcn.004c3c8b
add esp, 4
mov esi, dword [0x51a3d0]
test esi, esi
je 0x4804c5
mov ecx, esi
call fcn.00424d40
push esi
call fcn.004c3c8b
add esp, 4
mov esi, dword [0x51a3c4]
mov eax, dword [esi + 0xcb0]
sub eax, dword [esi + 0xcac]
sar eax, 2
test eax, eax
je 0x4804eb
mov ecx, esi
call fcn.004934c0
mov esi, dword [0x51a3c4]
test esi, esi
je 0x4804ff
mov ecx, esi
call fcn.00490e30
push esi
call fcn.004c3c8b
add esp, 4
mov esi, dword [0x51a3d4]
test esi, esi
je 0x480519
mov ecx, esi
call fcn.004a18f0
push esi
call fcn.004c3c8b
add esp, 4
mov esi, dword [0x51a3e0]
test esi, esi
je 0x48053f
mov ecx, dword [0x51a3b8]
push esi
call fcn.004afe00
push esi
mov dword [esi + 0xc], vtable.CLogoGUI.0
call fcn.004c3c8b
add esp, 4
mov esi, dword [0x51a3bc]
test esi, esi
je 0x480559
mov ecx, esi
call fcn.004733d0
push esi
call fcn.004c3c8b
add esp, 4
mov esi, dword [0x51a3b8]
test esi, esi
je 0x480573
mov ecx, esi
call fcn.004afd20
push esi
call fcn.004c3c8b
add esp, 4
mov esi, dword [0x51a3c8]
test esi, esi
je 0x4805a3
mov ecx, esi
call fcn.00494880
push esi
call fcn.004c3c8b
add esp, 4
jmp 0x4805a3
push 0x10
push str.Floria
push str.Cannot_initialize_system__please_reinstall
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov esi, dword [0x51a3cc]
test esi, esi
je 0x4805d9
cmp dword [esi + 0x14], 8
jb 0x4805bd
push dword [esi]
call fcn.004c3c8b
add esp, 4
xor eax, eax
mov dword [esi + 0x14], 7
mov dword [esi + 0x10], 0
push esi
mov word [esi], ax
call fcn.004c3c8b
add esp, 4
mov eax, dword [0x51a3b0]
push eax
mov ecx, dword [eax]
call dword [ecx + 0xc]
mov eax, dword [0x51a3b0]
push eax
mov ecx, dword [eax]
call dword [ecx]
mov ecx, dword [ebp - 4]
xor eax, eax
pop edi
xor ecx, ebp
pop esi
call fcn.004c4554
mov esp, ebp
pop ebp
ret 0x10
push 0x10
push str.Spellarium6
push str.Cannot_initialize_system
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
push 0
call fcn.004c8dd6
int3