Function at 0x406d00
Capabilities:
Get file version info

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x138
mov eax, dword [0x417100]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov edi, dword [ebp + 0x10]
push 0
call dword [sym.imp.USER32.dll_ShowCursor]
push ecx
mov esi, esp
push edi
call dword [sym.imp.Engine.dll_char____cdecl_StringDuplicate_char_const__]
add esp, 4
mov dword [esi], eax
push dword [ebp + 0x14]
push dword [ebp + 8]
call fcn.004058d0
add esp, 0xc
test eax, eax
jne 0x406d53
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040b85d
mov esp, ebp
pop ebp
ret
push 0x104
lea eax, [ebp - 0x108]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
lea eax, [ebp - 0x108]
push 0x104
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea eax, [ebp - 0x114]
push eax
lea eax, [ebp - 0x108]
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 - 0x108]
push edi
push esi
push dword [ebp - 0x114]
push eax
call sub.VERSION.dll_GetFileVersionInfoA
lea eax, [ebp - 0x110]
mov dword [ebp - 0x10c], 0
push eax
lea eax, [ebp - 0x10c]
mov dword [ebp - 0x110], 0
push eax
push str.StringFileInfo000004b0FileVersion
push edi
call sub.VERSION.dll_VerQueryValueA
test eax, eax
je 0x406e03
call dword [sym.imp.Engine.dll_class_CUIManager____cdecl_SE_Get_UIManagerPtr_void_]
push dword [ebp - 0x10c]
mov ecx, dword [eax + 0x514]
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 0x406e3d
mov eax, dword [sym.imp.Engine.dll_class_CGameState___pGameState]
mov eax, dword [eax]
mov dword [eax + 0x3468], 1
mov eax, dword [sym.imp.Engine.dll_class_CGameState___pGameState]
mov eax, dword [eax]
mov dword [eax + 0x346c], 1
mov eax, dword [0x417548]
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 esi, dword [sym.imp.USER32.dll_SendMessageA]
push 0
push 1
push 0x282
push dword [eax]
call esi
xor eax, eax
xorps xmm0, xmm0
mov dword [ebp - 0x110], eax
mov eax, dword [sym.imp.Engine.dll_class_CGameState___pGameState]
movss dword [ebp - 0x10c], xmm0
movss dword [ebp - 0x114], xmm0
mov eax, dword [eax]
cmp dword [eax + 0x3468], 0
je 0x40718f
mov ebx, dword [sym.imp.USER32.dll_PeekMessageA]
mov edi, dword [sym.imp.USER32.dll_ShowWindow]
nop dword [eax]
nop dword [eax + eax]
push 0x40f740
mov ecx, 0x417584
call dword [sym.imp.Engine.dll_public:_int___thiscall_CTString::operator_char_const__const]
test eax, eax
je 0x40718f
push 1
push 0
push 0
push 0
lea eax, [ebp - 0x130]
push eax
call ebx
test eax, eax
je 0x40706d
mov ecx, dword [ebp - 0x12c]
lea eax, [ecx - 0x200]
cmp eax, 0xe
ja 0x406efd
mov eax, dword [sym.imp.Engine.dll_class_cWeb_g_web]
cmp dword [eax + 0x3c], 0
je 0x406f3c
cmp ecx, 0x100
jne 0x406f14
cmp dword [ebp - 0x128], 0x79
je 0x40703a
jmp 0x406f1c
cmp ecx, 0x104
je 0x406f3c
lea eax, [ebp - 0x130]
push eax
call dword [sym.imp.USER32.dll_TranslateMessage]
lea eax, [ebp - 0x130]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageA]
mov ecx, dword [ebp - 0x12c]
cmp ecx, 0x112
jne 0x406fcd
mov edx, dword [ebp - 0x128]
mov eax, edx
and eax, 0xfffffff0
sub eax, 0xf020
je 0x406fa8
sub eax, 0x10
jne 0x406fe3
mov eax, dword [sym.imp.Engine.dll_int__bWindowChanging]
cmp dword [eax], 0
jne 0x40703a
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.00404320
add esp, 0x18
push 1
jmp 0x406fbe
mov eax, dword [sym.imp.Engine.dll_int__bWindowChanging]
cmp dword [eax], 0
jne 0x40703a
mov dword [eax], 1
push 6
mov eax, dword [sym.imp.Engine.dll_struct_HWND_____hwndMain]
push dword [eax]
call edi
mov ecx, dword [ebp - 0x12c]
cmp ecx, 0x12
jne 0x406fdd
call fcn.00405310
mov ecx, dword [ebp - 0x12c]
mov edx, dword [ebp - 0x128]
cmp ecx, 6
jne 0x406ff8
test dx, dx
je 0x407028
mov eax, edx
shr eax, 0x10
test eax, eax
jne 0x407028
jmp 0x40700c
cmp ecx, 0x1f
je 0x407028
cmp ecx, 8
je 0x407028
cmp ecx, 0x1c
je 0x407028
cmp ecx, 6
jne 0x40701a
cmp dx, 1
je 0x407028
cmp dx, 2
je 0x407028
jmp 0x40703a
cmp ecx, 7
je 0x407028
cmp ecx, 0x1c
jne 0x40703a
test edx, edx
je 0x40703a
mov eax, dword [sym.imp.Engine.dll_struct_HWND_____hwndMain]
push 0
push 1
push 0x282
push dword [eax]
call esi
call dword [sym.imp.Engine.dll_class_CUIManager____cdecl_SE_Get_UIManagerPtr_void_]
push 0x417514
lea ecx, [ebp - 0x130]
push ecx
mov ecx, eax
call dword [sym.imp.Engine.dll_public:_void___thiscall_CUIManager::MsgProc_struct_tagMSG___int__]
push 1
push 0
push 0
push 0
lea eax, [ebp - 0x130]
push eax
call ebx
test eax, eax
jne 0x406ee1
mov eax, dword [sym.imp.Engine.dll_int__bWindowChanging]
mov dword [eax], 0
call fcn.004066b0
mov eax, dword [sym.imp.Engine.dll_class_CTimer___pTimer]
lea ecx, [ebp - 0x138]
inc dword [ebp - 0x110]
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.0040be20
cmp byte [0x4175d0], 0
xorps xmm2, xmm2
divsd xmm0, qword [0x4107e0]
cvtsd2ss xmm2, xmm0
jne 0x40717b
mov ecx, dword [sym.imp.Engine.dll_float_g_fFramePerSecond]
movss xmm4, dword [0x4107d4]
movss xmm0, dword [ecx]
ucomiss xmm0, dword [0x4107f4]
lahf
test ah, 0x44
jnp 0x4070f0
movaps xmm0, xmm2
subss xmm0, dword [ebp - 0x10c]
comiss xmm0, xmm4
jb 0x40717b
movd xmm1, dword [ebp - 0x110]
movaps xmm0, xmm2
subss xmm0, dword [ebp - 0x10c]
cvtdq2ps xmm1, xmm1
divss xmm1, xmm0
movss xmm0, dword [0x4107e8]
comiss xmm0, xmm1
movss dword [ecx], xmm1
jbe 0x407133
mov eax, dword [sym.imp.Engine.dll_int_g_bNoPlaySnd]
movaps xmm1, xmm2
movss dword [ebp - 0x114], xmm1
mov dword [eax], 1
jmp 0x407169
movss xmm1, dword [ebp - 0x114]
xorps xmm3, xmm3
ucomiss xmm1, xmm3
lahf
test ah, 0x44
jnp 0x407169
movaps xmm0, xmm2
subss xmm0, xmm1
comiss xmm0, xmm4
jbe 0x407169
mov eax, dword [sym.imp.Engine.dll_int_g_bNoPlaySnd]
xorps xmm0, xmm0
movss dword [ebp - 0x114], xmm0
mov dword [eax], 0
mov dword [ebp - 0x110], 0
movss dword [ebp - 0x10c], xmm2
mov eax, dword [sym.imp.Engine.dll_class_CGameState___pGameState]
mov eax, dword [eax]
cmp dword [eax + 0x3468], 0
jne 0x406eb0
mov ecx, dword [0x417548]
mov eax, dword [ecx]
call dword [eax + 0x44]
call fcn.00405360
mov ecx, dword [ebp - 4]
mov eax, 1
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0040b85d
mov esp, ebp
pop ebp
ret