Function at 0x406f80
Capabilities:
Get file version info

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x482c15
mov eax, dword fs:[0]
push eax
sub esp, 0x254
mov eax, dword [0x4a39ec]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, dword [ebp + 0x10]
lea ecx, [ebp - 0x23c]
push esi
call dword [sym.imp.Engine.dll_public:_void___thiscall_CTString::constructor_char_const__]
push 0x104
lea eax, [ebp - 0x218]
mov dword [ebp - 4], 0
push 0
push eax
call fcn.00455350
add esp, 0xc
lea ecx, [ebp - 0x230]
push str.fkzktlfgod_
call dword [sym.imp.Engine.dll_public:_void___thiscall_CTString::constructor_char_const__]
push eax
lea ecx, [ebp - 0x23c]
mov byte [ebp - 4], 1
call dword [sym.imp.Engine.dll_public:_int___thiscall_CTString::IsEqualCaseSensitive_class_CTString_const__const]
lea ecx, [ebp - 0x230]
mov byte [ebp - 4], 0
call dword [sym.imp.Engine.dll_public:_void___thiscall_CTString::destructor_void_]
lea eax, [ebp - 0x218]
push eax
call fcn.00404630
add esp, 4
push 0
call dword [sym.imp.USER32.dll_ShowCursor]
push ecx
mov ecx, esp
push esi
call dword [sym.imp.Engine.dll_public:_void___thiscall_CTString::constructor_char_const__]
push dword [ebp + 0x14]
push dword [ebp + 8]
call fcn.00404f80
add esp, 0xc
test eax, eax
jne 0x407047
xor esi, esi
jmp 0x4074c9
push 0x104
lea eax, [ebp - 0x114]
push 0
push eax
call fcn.00455350
add esp, 0xc
lea eax, [ebp - 0x114]
push 0x104
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea eax, [ebp - 0x230]
push eax
lea eax, [ebp - 0x114]
push eax
call sub.VERSION.dll_GetFileVersionInfoSizeA
mov esi, eax
push esi
push 2
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov ebx, eax
push ebx
call dword [sym.imp.KERNEL32.dll_GlobalLock]
mov edi, eax
lea eax, [ebp - 0x114]
push edi
push esi
push dword [ebp - 0x230]
push eax
call sub.VERSION.dll_GetFileVersionInfoA
lea eax, [ebp - 0x238]
mov dword [ebp - 0x234], 0
push eax
lea eax, [ebp - 0x234]
mov dword [ebp - 0x238], 0
push eax
push str.StringFileInfo000004b0FileVersion
push edi
call sub.VERSION.dll_VerQueryValueA
test eax, eax
je 0x4070f6
call dword [sym.imp.Engine.dll_class_CUIManager____cdecl_SE_Get_UIManagerPtr_void_]
push str._Tethys_Last_Chaos
mov ecx, dword [eax + 0x494]
call dword [sym.imp.Engine.dll_public:_void___thiscall_CUILoginNew::setVersion_char_const__]
push ebx
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
push ebx
call dword [sym.imp.KERNEL32.dll_GlobalFree]
mov eax, dword [sym.imp.Engine.dll_char__g_szExitError]
cmp dword [eax], 0
jne 0x407136
mov ecx, dword [sym.imp.Engine.dll_class_CGameState___pGameState]
mov ecx, dword [ecx]
call dword [sym.imp.Engine.dll_public:_int____thiscall_CGameState::Running_void_]
mov dword [eax], 1
mov ecx, dword [sym.imp.Engine.dll_class_CGameState___pGameState]
mov ecx, dword [ecx]
call dword [sym.imp.Engine.dll_public:_int____thiscall_CGameState::QuitScreen_void_]
mov dword [eax], 1
mov eax, dword [0x4a4c3c]
push 1
mov dword [eax + 8], 0
call dword [sym.imp.USER32.dll_ShowCursor]
mov eax, dword [sym.imp.Engine.dll_struct_HWND_____hwndMain]
mov edi, dword [sym.imp.USER32.dll_SendMessageA]
push 0
push 1
push 0x282
push dword [eax]
call edi
mov ecx, dword [sym.imp.Engine.dll_class_CGameState___pGameState]
xorps xmm0, xmm0
xor eax, eax
movss dword [ebp - 0x230], xmm0
mov dword [ebp - 0x234], eax
movss dword [ebp - 0x238], xmm0
mov ecx, dword [ecx]
call dword [sym.imp.Engine.dll_public:_int____thiscall_CGameState::Running_void_]
cmp dword [eax], 0
je 0x4074b4
mov ebx, dword [sym.imp.USER32.dll_PeekMessageA]
mov esi, dword [sym.imp.USER32.dll_ShowWindow]
push 0x4876d0
mov ecx, 0x4a4c4c
call dword [sym.imp.Engine.dll_public:_int___thiscall_CTString::operator_char_const__const]
test eax, eax
je 0x4074b4
push 1
push 0
push 0
push 0
lea eax, [ebp - 0x258]
push eax
call ebx
test eax, eax
je 0x407395
mov ecx, dword [ebp - 0x254]
lea eax, [ecx - 0x200]
cmp eax, 0xe
ja 0x4071ed
mov eax, dword [sym.imp.Engine.dll_class_cWeb_g_web]
cmp dword [eax + 0x44], 0
je 0x407247
mov edx, dword [ebp - 0x250]
cmp ecx, 0x100
jne 0x407206
cmp edx, 0x79
je 0x407354
jmp 0x40720e
cmp ecx, 0x104
je 0x40724d
mov eax, dword [sym.imp.Engine.dll_long_int_g_iCountry]
mov eax, dword [eax]
cmp eax, 5
je 0x40721f
cmp eax, 9
jne 0x407227
cmp ecx, 0x10f
je 0x40724d
lea eax, [ebp - 0x258]
push eax
call dword [sym.imp.USER32.dll_TranslateMessage]
lea eax, [ebp - 0x258]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageA]
mov ecx, dword [ebp - 0x254]
mov edx, dword [ebp - 0x250]
cmp ecx, 0x112
jne 0x4072f7
mov eax, edx
and eax, 0xfffffff0
sub eax, 0xf020
je 0x4072cc
sub eax, 0x10
je 0x407287
sub eax, 0xf0
jne 0x40732e
mov eax, dword [sym.imp.Engine.dll_int__bWindowChanging]
cmp dword [eax], 0
jne 0x407354
push 1
jmp 0x4072dc
mov eax, dword [sym.imp.Engine.dll_int__bWindowChanging]
cmp dword [eax], 0
jne 0x407354
mov dword [eax], 1
mov eax, dword [sym.imp.Engine.dll_long_int_sam_iDisplayDepth]
push 1
push dword [eax]
mov eax, dword [sym.imp.Engine.dll_long_int_sam_iScreenSizeJ]
push dword [eax]
mov eax, dword [sym.imp.Engine.dll_long_int_sam_iScreenSizeI]
push dword [eax]
mov eax, dword [sym.imp.Engine.dll_long_int_sam_iDisplayAdapter]
push dword [eax]
mov eax, dword [sym.imp.Engine.dll_long_int_sam_iGfxAPI]
push dword [eax]
call fcn.00403ac0
add esp, 0x18
push 1
jmp 0x4072e2
mov eax, dword [sym.imp.Engine.dll_int__bWindowChanging]
cmp dword [eax], 0
jne 0x407354
push 6
mov dword [eax], 1
mov eax, dword [sym.imp.Engine.dll_struct_HWND_____hwndMain]
push dword [eax]
call esi
mov edx, dword [ebp - 0x250]
mov ecx, dword [ebp - 0x254]
cmp ecx, 0x12
jne 0x40730d
call fcn.00404920
mov edx, dword [ebp - 0x250]
mov ecx, dword [ebp - 0x254]
cmp ecx, 6
jne 0x40732e
test dx, dx
je 0x407342
mov eax, edx
shr eax, 0x10
test eax, eax
jne 0x407342
cmp dx, 1
je 0x407342
cmp dx, 2
je 0x407342
jmp 0x407354
cmp ecx, 0x1f
je 0x407342
cmp ecx, 8
je 0x407342
cmp ecx, 0x1c
je 0x407342
cmp ecx, 7
jne 0x407354
mov eax, dword [sym.imp.Engine.dll_struct_HWND_____hwndMain]
push 0
push 1
push 0x282
push dword [eax]
call edi
call dword [sym.imp.Engine.dll_class_CUIManager____cdecl_SE_Get_UIManagerPtr_void_]
push 0x4a4bdc
lea ecx, [ebp - 0x258]
push ecx
mov ecx, eax
call dword [sym.imp.Engine.dll_public:_void___thiscall_CUIManager::MsgProc_struct_tagMSG___int__]
mov ecx, dword [sym.imp.Engine.dll_class_CGameState___pGameState]
mov ecx, dword [ecx]
call dword [sym.imp.Engine.dll_public:_long_int____thiscall_CGameState::GetGameMode_void_]
push 1
push 0
push 0
push 0
lea eax, [ebp - 0x258]
push eax
call ebx
test eax, eax
jne 0x4071d1
mov eax, dword [sym.imp.Engine.dll_int__bWindowChanging]
mov dword [eax], 0
call fcn.00405e00
mov eax, dword [sym.imp.Engine.dll_class_CTimer___pTimer]
lea ecx, [ebp - 0x260]
inc dword [ebp - 0x234]
push ecx
mov ecx, dword [eax]
call dword [sym.imp.Engine.dll_public:_class_CTimerValue___thiscall_CTimer::GetHighPrecisionTimer_void_]
mov edx, dword [eax + 4]
mov ecx, dword [eax]
call fcn.0047b970
cmp byte [0x4a4cc0], 0
xorps xmm2, xmm2
divsd xmm0, qword [0x4888b0]
cvtsd2ss xmm2, xmm0
jne 0x40749d
mov ecx, dword [sym.imp.Engine.dll_float_g_fFramePerSecond]
movaps xmm1, xmm2
movss xmm4, dword [0x4888a0]
subss xmm1, dword [ebp - 0x230]
movss xmm0, dword [ecx]
ucomiss xmm0, dword [0x4888d0]
lahf
test ah, 0x44
jnp 0x407418
comiss xmm1, xmm4
jb 0x40749d
movd xmm0, dword [ebp - 0x234]
cvtdq2ps xmm0, xmm0
divss xmm0, xmm1
movss dword [ecx], xmm0
mov eax, dword [sym.imp.Engine.dll_float_g_fFramePerSecond]
movss xmm0, dword [0x4888b8]
comiss xmm0, dword [eax]
jbe 0x407455
mov eax, dword [sym.imp.Engine.dll_int_g_bNoPlaySnd]
movaps xmm1, xmm2
movss dword [ebp - 0x238], xmm1
mov dword [eax], 1
jmp 0x40748b
movss xmm1, dword [ebp - 0x238]
xorps xmm3, xmm3
ucomiss xmm1, xmm3
lahf
test ah, 0x44
jnp 0x40748b
movaps xmm0, xmm2
subss xmm0, xmm1
comiss xmm0, xmm4
jbe 0x40748b
mov eax, dword [sym.imp.Engine.dll_int_g_bNoPlaySnd]
xorps xmm0, xmm0
movss dword [ebp - 0x238], xmm0
mov dword [eax], 0
mov dword [ebp - 0x234], 0
movss dword [ebp - 0x230], xmm2
mov ecx, dword [sym.imp.Engine.dll_class_CGameState___pGameState]
mov ecx, dword [ecx]
call dword [sym.imp.Engine.dll_public:_int____thiscall_CGameState::Running_void_]
cmp dword [eax], 0
jne 0x4071a0
mov ecx, dword [0x4a4c3c]
mov eax, dword [ecx]
call dword [eax + 0x44]
call fcn.00404950
mov esi, 1
lea ecx, [ebp - 0x23c]
call dword [sym.imp.Engine.dll_public:_void___thiscall_CTString::destructor_void_]
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0047b11c
mov esp, ebp
pop ebp
ret