Function at 0x408cd0
Capabilities:
Check if file exists
Get file version info

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4289f1
mov eax, dword fs:[0]
push eax
sub esp, 0xe8
mov eax, dword [0x439070]
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 ebx, ecx
mov dword [ebp - 0xd8], ebx
mov dword [ebp - 0xd0], ebx
mov dword [ebp - 0xdc], 0
mov dword [ebp - 4], 0
lea ecx, [ebp - 0x28]
push 7
xor eax, eax
mov dword [ebp - 0x14], 7
push 0x435610
mov dword [ebp - 0x18], 0
mov word [ebp - 0x28], ax
call fcn.004021f0
mov byte [ebp - 4], 1
lea eax, [ebp + 8]
cmp dword [ebp + 0x1c], 8
cmovae eax, dword [ebp + 8]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x408f2b
cmp dword [ebp + 0x1c], 8
lea ecx, [ebp - 0x2c]
lea eax, [ebp + 8]
mov dword [ebp - 0xcc], 0
cmovae eax, dword [ebp + 8]
push ecx
push eax
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x30], 0
call dword [sym.imp.VERSION.dll_GetFileVersionInfoSizeW]
mov edi, eax
test edi, edi
jne 0x408dd9
lea eax, [ebp - 0x28]
mov ecx, ebx
push eax
call fcn.00406b10
mov eax, dword [ebp - 0x14]
cmp eax, 8
jb 0x408db2
inc eax
lea ecx, [ebp - 0x28]
push eax
push dword [ebp - 0x28]
call fcn.004022f0
mov ecx, dword [ebp + 0x1c]
xor eax, eax
mov dword [ebp - 0x14], 7
mov dword [ebp - 0x18], 0
mov word [ebp - 0x28], ax
cmp ecx, 8
jb 0x408f74
inc ecx
push ecx
jmp 0x408f69
lea eax, [edi + 1]
push eax
call fcn.0040ad49
add esp, 4
lea ecx, [ebp + 8]
cmp dword [ebp + 0x1c], 8
mov esi, eax
mov dword [ebp - 0xd4], esi
cmovae ecx, dword [ebp + 8]
push esi
push edi
push 0
push ecx
call dword [sym.imp.VERSION.dll_GetFileVersionInfoW]
test eax, eax
jne 0x408e12
push esi
call fcn.0040ad44
jmp 0x408f28
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0xcc]
push eax
push 0x43560c
push esi
call dword [sym.imp.VERSION.dll_VerQueryValueW]
test eax, eax
jne 0x408e56
push esi
call fcn.0040ad44
add esp, 4
lea eax, [ebp - 0x28]
mov ecx, ebx
push eax
call fcn.00406b10
lea ecx, [ebp - 0x28]
call fcn.004021b0
lea ecx, [ebp + 8]
call fcn.004021b0
jmp 0x408f74
mov eax, dword [ebp - 0xcc]
push dword [ebp - 0xd4]
mov ecx, dword [eax + 8]
mov ebx, ecx
mov edi, dword [eax + 0xc]
mov esi, edi
mov dword [ebp - 0xd0], ecx
shr ebx, 0x10
shr esi, 0x10
call fcn.0040ad44
push 0x98
lea eax, [ebp - 0xc8]
push 0
push eax
call fcn.0040efc0
add esp, 8
lea ecx, [ebp - 0xc8]
call fcn.00404240
push edi
push esi
push dword [ebp - 0xd0]
lea ecx, [ebp - 0xc8]
mov byte [ebp - 4], 2
push ebx
call fcn.004092a0
mov ecx, eax
call fcn.00409440
mov ecx, eax
call fcn.004092a0
mov ecx, eax
call fcn.00409440
mov ecx, eax
call fcn.004092a0
mov ecx, eax
call fcn.00409440
mov ecx, eax
call fcn.004092a0
lea eax, [ebp - 0xf4]
push eax
lea ecx, [ebp - 0xc8]
call fcn.00404160
push eax
lea ecx, [ebp - 0x28]
call fcn.00408950
lea ecx, [ebp - 0xf4]
call fcn.004021b0
lea ecx, [ebp - 0x78]
call fcn.00404180
lea eax, [ebp - 0x78]
mov byte [ebp - 4], 3
push eax
mov dword [ebp - 0x78], vtable.std::ios_base.0
call fcn.00409e41
mov ebx, dword [ebp - 0xd8]
add esp, 4
lea eax, [ebp - 0x28]
mov ecx, ebx
push eax
call fcn.00406b10
mov eax, dword [ebp - 0x14]
cmp eax, 8
jb 0x408f4b
inc eax
lea ecx, [ebp - 0x28]
push eax
push dword [ebp - 0x28]
call fcn.004022f0
xor eax, eax
mov dword [ebp - 0x18], 0
mov word [ebp - 0x28], ax
mov eax, dword [ebp + 0x1c]
mov dword [ebp - 0x14], 7
cmp eax, 8
jb 0x408f74
inc eax
push eax
push dword [ebp + 8]
lea ecx, [ebp + 8]
call fcn.004022f0
mov eax, ebx
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.0040a82b
mov esp, ebp
pop ebp
ret