Function at 0x47df70
Capabilities:
Check os version
Terminate process

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x98
mov eax, dword [0x511d60]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
push edi
push 0x180
call fcn.00459bf0
push str.Spellarium5.log
mov dword [0x516310], 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 [0x516310]
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 0x47e05a
cmp dword [ebp - 0x90], 2
jb 0x47e05a
push str.user32.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov esi, eax
test esi, esi
je 0x47e047
push str.SetProcessDPIAware
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov edi, eax
test edi, edi
je 0x47e02b
mov ecx, dword [0x516310]
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 0x47e05a
mov eax, dword [0x516310]
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 0x47e05a
mov eax, dword [0x516310]
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 0x47e076
push 1
call edi
cmp eax, 0x300
jg 0x47e07d
mov byte [0x50ddc8], 0
mov ecx, dword [0x516310]
test ecx, ecx
je 0x47e5d2
mov eax, dword [ecx]
push 0x65
push 0x1a
push ecx
call dword [eax + 0x38]
mov eax, dword [0x516310]
mov esi, dword [eax]
movzx eax, byte [0x50ddc8]
push eax
push 1
call edi
push eax
push 0
call edi
push eax
push str.Initial_mode:_dx_d____CanWorkInWindowedMode_d
push dword [0x516310]
call dword [esi + 0x1c]
mov eax, dword [0x516310]
add esp, 0x14
mov ecx, dword [eax]
push str.Spellarium_5
push 0x1b
push eax
call dword [ecx + 0x38]
mov eax, dword [0x516310]
push 0
push 7
push eax
mov ecx, dword [eax]
call dword [ecx + 0x28]
mov eax, dword [0x516310]
push 0
push 4
push eax
mov ecx, dword [eax]
call dword [ecx + 0x28]
mov eax, dword [0x516310]
push 1
push 2
push eax
mov ecx, dword [eax]
call dword [ecx + 0x28]
mov eax, dword [0x516310]
push 0
push 0x65
push eax
mov ecx, dword [eax]
call dword [ecx + 0x28]
mov eax, dword [0x516310]
push 0xffffffffffffffff
push 0x18
push eax
mov ecx, dword [eax]
call dword [ecx + 0x34]
push 0x2c
call fcn.004c0d0a
add esp, 4
test eax, eax
je 0x47e142
xor ecx, ecx
mov dword [eax + 0x14], 7
mov dword [eax + 0x10], 0
mov word [eax], cx
mov byte [eax + 0x2b], cl
jmp 0x47e144
xor eax, eax
mov ecx, eax
mov dword [0x51632c], eax
call fcn.00447660
mov ecx, dword [0x51632c]
call fcn.00447790
push 0x1c
call fcn.004c0d0a
add esp, 4
test eax, eax
je 0x47e172
mov ecx, eax
call fcn.00494a20
jmp 0x47e174
xor eax, eax
mov ecx, eax
mov dword [0x519194], eax
call fcn.00494ba0
test al, al
jne 0x47e197
mov eax, dword [0x516310]
push str.Error:_resource_pack_init_failure
push eax
mov ecx, dword [eax]
call dword [ecx + 0x1c]
add esp, 8
push 8
call fcn.004c0d0a
mov esi, eax
add esp, 4
test esi, esi
je 0x47e1bf
mov ecx, esi
mov dword [esi], 0
mov dword [esi + 4], 0
call fcn.0047deb0
mov dword [esi], eax
jmp 0x47e1c1
xor esi, esi
mov ecx, esi
mov dword [0x516338], esi
call fcn.00463500
mov eax, dword [0x516310]
push 0
push 3
push eax
mov ecx, dword [eax]
call dword [ecx + 0x28]
mov eax, dword [0x516310]
push eax
mov ecx, dword [eax]
call dword [ecx + 4]
test al, al
je 0x47e55f
mov ecx, dword [0x51632c]
call fcn.0047de00
push 8
call fcn.004c0d0a
mov esi, eax
add esp, 4
test esi, esi
je 0x47e227
push 0
push 0
mov ecx, esi
mov dword [esi], 0
mov dword [esi + 4], 0
call fcn.0045dc40
mov dword [esi], eax
jmp 0x47e229
xor esi, esi
push 0x30
mov dword [0x51631c], esi
call fcn.004c0d0a
add esp, 4
test eax, eax
je 0x47e246
mov ecx, eax
call fcn.0047db80
jmp 0x47e248
xor eax, eax
push 0xc
mov dword [0x516314], eax
call fcn.004c0d0a
mov esi, eax
add esp, 4
test esi, esi
je 0x47e279
push 0
push 0
mov ecx, esi
mov dword [esi], 0
mov dword [esi + 4], 0
call fcn.0047df20
mov dword [esi], eax
jmp 0x47e27b
xor esi, esi
push 3
mov dword [0x516318], esi
call fcn.004c0d0a
add esp, 4
test eax, eax
je 0x47e29a
mov word [eax], 0x101
mov byte [eax + 2], 1
jmp 0x47e29c
xor eax, eax
push 0x3c
mov dword [0x516320], eax
call fcn.004c0d0a
add esp, 4
test eax, eax
je 0x47e2b8
mov ecx, eax
call fcn.0047d970
jmp 0x47e2ba
xor eax, eax
push 0xcb8
mov dword [0x516328], eax
call fcn.004c0d0a
add esp, 4
test eax, eax
je 0x47e2d9
mov ecx, eax
call fcn.0047d900
jmp 0x47e2db
xor eax, eax
mov ecx, eax
mov dword [0x516324], eax
call fcn.0048f8b0
push 0x48
call fcn.004c0d0a
add esp, 4
test eax, eax
je 0x47e2fe
mov dword [eax + 0x38], 0
jmp 0x47e300
xor eax, eax
mov ecx, eax
mov dword [0x516330], eax
call fcn.004486e0
push 0x57b8
call fcn.004c0d0a
add esp, 4
test eax, eax
je 0x47e326
mov ecx, eax
call fcn.0047daa0
jmp 0x47e328
xor eax, eax
mov ecx, eax
mov dword [0x516334], eax
call fcn.0049f460
test al, al
jne 0x47e34b
mov eax, dword [0x516310]
push str.Error:_sound_init_failure
push eax
mov ecx, dword [eax]
call dword [ecx + 0x1c]
add esp, 8
mov eax, dword [0x516310]
push 0x47dc30
push 8
push eax
mov ecx, dword [eax]
call dword [ecx + 0x2c]
mov eax, dword [0x516310]
push 0x47dda0
push 9
push eax
mov ecx, dword [eax]
call dword [ecx + 0x2c]
mov eax, dword [0x516310]
push fcn.0047de00
push 0xc
push eax
mov ecx, dword [eax]
call dword [ecx + 0x2c]
mov eax, dword [0x516310]
push 0x47dc20
push 0xa
push eax
mov ecx, dword [eax]
call dword [ecx + 0x2c]
mov eax, dword [0x516310]
push 0x47dc00
push 0xb
push eax
mov ecx, dword [eax]
call dword [ecx + 0x2c]
push 0x24
call fcn.004c0d0a
mov esi, eax
add esp, 4
test esi, esi
je 0x47e3e1
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 0x47e3e3
xor esi, esi
mov dword [0x516340], esi
mov dword [esi + 4], 0
mov ecx, dword [0x516318]
push esi
call fcn.004acf00
lea ecx, [esi + 0xc]
call fcn.00464990
mov eax, dword [0x516310]
push str.hge__System_Start___
push eax
mov ecx, dword [eax]
call dword [ecx + 0x1c]
mov eax, dword [0x516310]
add esp, 8
mov ecx, dword [eax]
push eax
call dword [ecx + 0x14]
mov eax, dword [0x516310]
push 0
mov byte [0x51633c], 1
push 8
mov ecx, dword [eax]
push eax
call dword [ecx + 0x2c]
mov eax, dword [0x516310]
push 0
push 9
push eax
mov ecx, dword [eax]
call dword [ecx + 0x2c]
mov eax, dword [0x516310]
push 0
push 0xc
push eax
mov ecx, dword [eax]
call dword [ecx + 0x2c]
mov ecx, dword [0x516314]
call fcn.004add20
mov esi, dword [0x516314]
test esi, esi
je 0x47e47b
mov ecx, esi
call fcn.004ad280
push esi
call fcn.004c0d5b
add esp, 4
mov esi, dword [0x516330]
test esi, esi
je 0x47e495
mov ecx, esi
call fcn.004073b0
push esi
call fcn.004c0d5b
add esp, 4
mov esi, dword [0x516324]
mov eax, dword [esi + 0xcb0]
sub eax, dword [esi + 0xcac]
sar eax, 2
test eax, eax
je 0x47e4bb
mov ecx, esi
call fcn.00490840
mov esi, dword [0x516324]
test esi, esi
je 0x47e4cf
mov ecx, esi
call fcn.0048e260
push esi
call fcn.004c0d5b
add esp, 4
mov esi, dword [0x516334]
test esi, esi
je 0x47e4e9
mov ecx, esi
call fcn.0049ecc0
push esi
call fcn.004c0d5b
add esp, 4
mov esi, dword [0x516340]
test esi, esi
je 0x47e50f
mov ecx, dword [0x516318]
push esi
call fcn.004acfa0
push esi
mov dword [esi + 0xc], vtable.CLogoGUI.0
call fcn.004c0d5b
add esp, 4
mov esi, dword [0x51631c]
test esi, esi
je 0x47e529
mov ecx, esi
call fcn.0047dbc0
push esi
call fcn.004c0d5b
add esp, 4
mov esi, dword [0x516318]
test esi, esi
je 0x47e543
mov ecx, esi
call fcn.004acec0
push esi
call fcn.004c0d5b
add esp, 4
mov esi, dword [0x516328]
test esi, esi
je 0x47e573
mov ecx, esi
call fcn.00491bf0
push esi
call fcn.004c0d5b
add esp, 4
jmp 0x47e573
push 0x10
push str.Floria
push str.Cannot_initialize_system__please_reinstall
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov esi, dword [0x51632c]
test esi, esi
je 0x47e5a9
cmp dword [esi + 0x14], 8
jb 0x47e58d
push dword [esi]
call fcn.004c0d5b
add esp, 4
xor eax, eax
mov dword [esi + 0x14], 7
mov dword [esi + 0x10], 0
push esi
mov word [esi], ax
call fcn.004c0d5b
add esp, 4
mov eax, dword [0x516310]
push eax
mov ecx, dword [eax]
call dword [ecx + 0xc]
mov eax, dword [0x516310]
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.004c1624
mov esp, ebp
pop ebp
ret 0x10
push 0x10
push str.Spellarium5
push str.Cannot_initialize_system
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
push 0
call fcn.004c5ea6
int3