Function at 0x40c9f0
Capabilities:
Get file version info

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x41097e
mov eax, dword fs:[0]
push eax
sub esp, 0xd8
mov eax, dword [0x41713c]
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, dword [ebp + 8]
mov esi, ebx
mov dword [ebp - 0xe4], ebx
cmp dword [ebx + 0x14], 8
jb 0x40ca31
mov esi, dword [ebx]
lea eax, [ebp - 0xc8]
mov dword [ebp - 0xc8], 0
push eax
push esi
mov dword [ebp - 0xc0], 0
mov dword [ebp - 0xb4], 0
call sub.VERSION.dll_GetFileVersionInfoSizeW
mov dword [ebp - 0xa8], eax
test eax, eax
je 0x40d45c
cmp dword [ebp - 0xc8], 0
jne 0x40d45c
push 0x12
push str.file_ver_info_size
lea ecx, [ebp - 0x58]
mov dword [ebp - 0x48], 0
mov dword [ebp - 0x44], 0xf
mov byte [ebp - 0x58], 0
call fcn.00404b40
push str.unsigned_char
push 0x417058
mov dword [ebp - 4], 0
mov dword [0x417958], 0
call fcn.00401af0
cmp dword [ebp - 0x44], 0x10
lea ecx, [ebp - 0x58]
push dword [ebp - 0x48]
cmovae ecx, dword [ebp - 0x58]
push ecx
push eax
call fcn.00401ff0
add esp, 0x14
push 0x4024c0
push str.____
push eax
call fcn.00401af0
add esp, 8
mov ecx, eax
call dword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______thiscall_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char_______cdecl___class_std::basic_ostream_char__struct_std::char_traits_char_____]
lea ecx, [ebp - 0x58]
mov dword [ebp - 4], 0xffffffff
call fcn.00403290
lea eax, [ebp - 0xa8]
push 4
push eax
call fcn.0040ab60
add esp, 8
push 0x4024c0
push 0x4024c0
push 0x411c70
push 0x417058
call fcn.00401af0
add esp, 8
mov ecx, eax
call dword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______thiscall_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char_______cdecl___class_std::basic_ostream_char__struct_std::char_traits_char_____]
mov ecx, eax
call dword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______thiscall_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char_______cdecl___class_std::basic_ostream_char__struct_std::char_traits_char_____]
mov edi, dword [ebp - 0xa8]
push edi
call fcn.0040ea78
add esp, 4
mov dword [ebp - 0xc4], eax
test eax, eax
je 0x40d45c
push eax
push edi
push 0
push esi
call sub.VERSION.dll_GetFileVersionInfoW
test eax, eax
je 0x40d45c
mov edi, dword [ebp - 0xc4]
lea eax, [ebp - 0xb0]
push eax
lea eax, [ebp - 0xac]
mov dword [ebp - 0xac], 0
push eax
push dword [section..data]
mov dword [ebp - 0xb0], 0
push edi
call fcn.0040d740
lea eax, [ebp - 0xb0]
mov dword [ebp - 0xac], 0
push eax
lea eax, [ebp - 0xac]
mov dword [ebp - 0xb0], 0
push eax
push dword [0x417004]
push edi
call fcn.0040d740
add esp, 0x20
lea eax, [ebp - 0xb4]
push eax
lea eax, [ebp - 0xc0]
push eax
push dword [section..data]
push edi
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40d45c
cmp dword [ebp - 0xc0], 0
je 0x40d45c
cmp dword [ebp - 0xb4], 0
je 0x40d45c
push 0xc
push str.ver_info_ffi
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0xf
mov byte [ebp - 0x28], 0
call fcn.00404b40
lea eax, [ebp - 0x28]
mov dword [ebp - 4], 1
push 0
push eax
call fcn.0040b3e0
add esp, 8
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x28]
call fcn.00403290
lea eax, [ebp - 0xb4]
push 4
push eax
call fcn.0040ab60
push dword [ebp - 0xb4]
push dword [ebp - 0xc0]
call fcn.0040ab60
add esp, 0x10
call fcn.0040a1c0
lea eax, [ebp - 0xa4]
mov dword [ebp - 0xa4], 0
push eax
lea eax, [ebp - 0xb8]
mov dword [ebp - 0xb8], 0
push eax
push dword [0x417004]
push edi
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40d45c
cmp dword [ebp - 0xb8], 0
je 0x40d45c
cmp dword [ebp - 0xa4], 0
je 0x40d45c
push 0x14
push str.ver_info_translation
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0xf
mov byte [ebp - 0x28], 0
call fcn.00404b40
lea eax, [ebp - 0x28]
mov dword [ebp - 4], 2
push 0
push eax
call fcn.0040b3e0
add esp, 8
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x28]
call fcn.00403290
lea eax, [ebp - 0xa4]
push 4
push eax
call fcn.0040ab60
push dword [ebp - 0xa4]
push dword [ebp - 0xb8]
call fcn.0040ab60
add esp, 0x10
call fcn.0040a1c0
push 0x11
push str.file_version_info
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0xf
mov byte [ebp - 0x28], 0
call fcn.00404b40
lea eax, [ebp - 0x28]
mov dword [ebp - 4], 3
push 0
push eax
call fcn.0040b3e0
add esp, 8
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x28]
call fcn.00403290
mov eax, dword [ebp - 0xb4]
add eax, 0x15
push eax
push edi
call fcn.0040ab60
lea eax, [ebp - 0xa4]
push 4
push eax
call fcn.0040ab60
add esp, 0x10
lea ecx, [ebp - 0x70]
push dword [0x417004]
call fcn.00409e50
push 1
push 1
push eax
mov dword [ebp - 4], 4
call fcn.0040aa50
mov edx, dword [ebp - 0x5c]
add esp, 0xc
mov dword [ebp - 4], 0xffffffff
cmp edx, 8
jb 0x40cdfa
mov ecx, dword [ebp - 0x70]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x40cdf0
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x40cdf0
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push edx
push ecx
call fcn.0040ea36
add esp, 8
push dword [ebp - 0xa4]
push dword [ebp - 0xb8]
call fcn.0040ab60
add esp, 8
lea ecx, [ebp - 0x70]
push dword [0x417008]
call fcn.00409e50
push 1
push 1
push eax
mov dword [ebp - 4], 5
call fcn.0040aa50
mov edx, dword [ebp - 0x5c]
add esp, 0xc
mov dword [ebp - 4], 0xffffffff
cmp edx, 8
jb 0x40ce73
mov ecx, dword [ebp - 0x70]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x40ce69
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x40ce69
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push edx
push ecx
call fcn.0040ea36
add esp, 8
mov eax, dword [ebp - 0xa4]
xor ecx, ecx
shr eax, 2
mov dword [ebp - 0xe0], eax
mov dword [ebp - 0x90], 0
mov dword [ebp - 0x8c], 7
mov word [ebp - 0xa0], cx
mov dword [ebp - 4], 6
mov dword [ebp - 0xb0], ecx
test eax, eax
je 0x40d3ed
nop dword [eax]
nop dword [eax + eax]
mov eax, dword [ebp - 0xb8]
mov dword [ebp - 0x78], 0
mov dword [ebp - 0x74], 7
lea esi, [eax + ecx*4]
xor eax, eax
mov dword [ebp - 0xdc], esi
mov word [ebp - 0x88], ax
lea eax, [ebp - 0x88]
mov byte [ebp - 4], 7
push eax
push 0
push esi
push 0
call fcn.0040a540
push 1
lea eax, [ebp - 0x88]
push 1
push eax
call fcn.0040aa50
add esp, 0x1c
xor ebx, ebx
mov dword [ebp - 0xa8], ebx
nop word [eax + eax]
xor eax, eax
mov dword [ebp - 0xcc], 0
mov dword [ebp - 0xbc], 0
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 7
mov word [ebp - 0x40], ax
lea eax, [ebp - 0x40]
mov byte [ebp - 4], 8
push eax
push dword [ebx + 0x41700c]
push esi
push dword [0x417008]
call fcn.0040a540
add esp, 0x10
lea ecx, [ebp - 0xcc]
cmp dword [ebp - 0x2c], 8
lea eax, [ebp - 0x40]
cmovae eax, dword [ebp - 0x40]
push ecx
lea ecx, [ebp - 0xbc]
push ecx
push eax
push edi
call sub.VERSION.dll_VerQueryValueW
test eax, eax
jne 0x40d035
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, dword [ebp - 0x2c]
mov esi, eax
cmp esi, 0x715
je 0x40d33a
cmp edx, 8
jb 0x40cfdb
mov ecx, dword [ebp - 0x40]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x40cfd1
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40cdea
push edx
push ecx
call fcn.0040ea36
add esp, 8
mov edx, dword [ebp - 0x74]
xor eax, eax
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 7
mov word [ebp - 0x40], ax
cmp edx, 8
jb 0x40d416
mov ecx, dword [ebp - 0x88]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x40d026
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40cdea
push edx
push ecx
call fcn.0040ea36
add esp, 8
jmp 0x40d416
mov edx, dword [ebp - 0xbc]
xor eax, eax
mov ecx, edx
mov dword [ebp - 0x60], 0
mov dword [ebp - 0x5c], 7
mov word [ebp - 0x70], ax
lea esi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40d054
sub ecx, esi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0x70]
call fcn.00404c30
lea eax, [ebp - 0xcc]
mov byte [ebp - 4], 9
push 4
push eax
call fcn.0040ab60
mov edx, dword [ebx + 0x41700c]
add esp, 8
mov ecx, edx
mov dword [ebp - 0x18], 0
xor eax, eax
mov dword [ebp - 0x14], 7
mov word [ebp - 0x28], ax
lea esi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40d0a1
sub ecx, esi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0x28]
call fcn.00404c30
push 1
lea eax, [ebp - 0x28]
mov byte [ebp - 4], 0xa
push 1
push eax
call fcn.0040aa50
mov edx, dword [ebp - 0x14]
add esp, 0xc
mov byte [ebp - 4], 9
cmp edx, 8
jb 0x40d10c
mov ecx, dword [ebp - 0x28]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x40d102
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40cdea
push edx
push ecx
call fcn.0040ea36
add esp, 8
mov edx, dword [ebp - 0xbc]
xor eax, eax
mov ecx, edx
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 7
mov word [ebp - 0x28], ax
lea esi, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40d130
sub ecx, esi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0x28]
call fcn.00404c30
push 0
lea eax, [ebp - 0x28]
mov byte [ebp - 4], 0xb
push 1
push eax
call fcn.0040aa50
mov edx, dword [ebp - 0x14]
add esp, 0xc
mov byte [ebp - 4], 9
cmp edx, 8
jb 0x40d19b
mov ecx, dword [ebp - 0x28]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x40d191
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40cdea
push edx
push ecx
call fcn.0040ea36
add esp, 8
push 0xb
xor eax, eax
mov dword [ebp - 0x48], 0
push str.FileVersion
lea ecx, [ebp - 0x58]
mov dword [ebp - 0x44], 7
mov word [ebp - 0x58], ax
call fcn.00404c30
cmp dword [ebp - 0x90], 0
mov edx, dword [ebp - 0x58]
mov byte [ebp - 4], 0xc
mov dword [ebp - 0xac], edx
jne 0x40d2be
cmp dword [ebp - 0x44], 8
lea eax, [ebp - 0x58]
mov ecx, dword [ebp - 0x48]
mov ebx, dword [ebp - 0x30]
cmovae eax, edx
cmp dword [ebp - 0x2c], 8
lea edx, [ebp - 0x40]
mov dword [ebp - 0xd0], eax
cmovae edx, dword [ebp - 0x40]
mov dword [ebp - 0xd4], edx
test ecx, ecx
jne 0x40d20e
or esi, 0xffffffff
cmp ebx, 0xffffffff
cmovb esi, ebx
jmp 0x40d27c
cmp ecx, ebx
ja 0x40d279
mov eax, ebx
sub eax, ecx
or ecx, 0xffffffff
cmp eax, ecx
cmovb ecx, eax
mov eax, dword [ebp - 0xd0]
lea esi, [edx + ecx*2]
movzx ecx, word [eax]
mov edi, esi
mov dword [ebp - 0xd8], ecx
sub edi, eax
cmp word [esi], cx
jne 0x40d26d
mov edx, dword [ebp - 0x48]
test edx, edx
je 0x40d251
mov cx, word [eax + edi]
cmp cx, word [eax]
jne 0x40d25b
add eax, 2
sub edx, 1
jne 0x40d240
sub esi, dword [ebp - 0xd4]
sar esi, 1
jmp 0x40d27c
mov edx, dword [ebp - 0xd4]
mov eax, dword [ebp - 0xd0]
mov ecx, dword [ebp - 0xd8]
cmp esi, edx
je 0x40d279
sub esi, 2
sub edi, 2
jmp 0x40d234
or esi, 0xffffffff
sub ebx, dword [ebp - 0x48]
cmp ebx, esi
jne 0x40d2ac
mov edx, dword [ebp - 0xbc]
mov ecx, edx
lea esi, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40d290
sub ecx, esi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0xa0]
call fcn.00404c30
mov edi, dword [ebp - 0xc4]
mov ebx, dword [ebp - 0xa8]
mov edx, dword [ebp - 0xac]
mov eax, dword [ebp - 0x44]
mov byte [ebp - 4], 9
cmp eax, 8
jb 0x40d2f9
lea ecx, [eax*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x40d2ef
mov edx, dword [edx - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40cdea
push ecx
push edx
call fcn.0040ea36
add esp, 8
mov edx, dword [ebp - 0x5c]
mov byte [ebp - 4], 8
cmp edx, 8
jb 0x40d337
mov ecx, dword [ebp - 0x70]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x40d32d
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40cdea
push edx
push ecx
call fcn.0040ea36
add esp, 8
mov edx, dword [ebp - 0x2c]
mov byte [ebp - 4], 7
cmp edx, 8
jb 0x40d375
mov ecx, dword [ebp - 0x40]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x40d36b
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40cdea
push edx
push ecx
call fcn.0040ea36
add esp, 8
mov esi, dword [ebp - 0xdc]
add ebx, 4
mov dword [ebp - 0xa8], ebx
cmp ebx, 0x30
jb 0x40cf20
mov edx, dword [ebp - 0x74]
mov byte [ebp - 4], 6
cmp edx, 8
jb 0x40d3ce
mov ecx, dword [ebp - 0x88]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x40d3c4
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40d448
push edx
push ecx
call fcn.0040ea36
add esp, 8
mov ecx, dword [ebp - 0xb0]
inc ecx
mov dword [ebp - 0xb0], ecx
cmp ecx, dword [ebp - 0xe0]
jb 0x40cec0
mov ebx, dword [ebp - 0xe4]
call fcn.0040a1c0
cmp dword [ebp - 0x90], 0
je 0x40d40b
lea eax, [ebp - 0xa0]
push eax
push ebx
call fcn.0040ac20
add esp, 8
push edi
call fcn.0040ea81
add esp, 4
xor esi, esi
mov edx, dword [ebp - 0x8c]
cmp edx, 8
jb 0x40d458
mov ecx, dword [ebp - 0xa0]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x40d44e
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x40d44e
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push edx
push ecx
call fcn.0040ea36
add esp, 8
mov eax, esi
jmp 0x40d462
call dword [sym.imp.KERNEL32.dll_GetLastError]
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.0040ea44
mov esp, ebp
pop ebp
ret