Function at 0x40af00
Capabilities:
Get file version info

Disassembly:
push 0xffffffffffffffff
push 0x40eac9
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x21c
push ebx
push ebp
mov ebx, dword [esp + 0x238]
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_short_int_const__private:_static_unsigned_short_int_const____cdecl_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Nullstr_void_::_2::_C]
xor ebp, ebp
cmp ebx, ebp
mov dword [esp + 0x22c], ebp
je 0x40af38
mov eax, ebx
push esi
push edi
push ebp
push eax
call sub.VERSION.dll_GetFileVersionInfoSizeW
mov esi, eax
cmp esi, ebp
je 0x40b3cb
push esi
call sub.MFC42u.DLL_operatornew
mov edi, eax
add esp, 4
cmp edi, ebp
mov dword [esp + 0x18], edi
je 0x40b3cb
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_short_int_const__private:_static_unsigned_short_int_const____cdecl_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Nullstr_void_::_2::_C]
cmp ebx, ebp
je 0x40af6d
mov eax, ebx
push edi
push esi
push ebp
push eax
call sub.VERSION.dll_GetFileVersionInfoW
test eax, eax
je 0x40b3b7
lea eax, [esp + 0x20]
lea ecx, [esp + 0x14]
push eax
push ecx
push str.VarFileInfoTranslation
push edi
mov dword [esp + 0x24], ebp
call sub.VERSION.dll_VerQueryValueW
mov eax, dword [esp + 0x14]
cmp eax, ebp
jne 0x40afad
push edi
call sub.MFC42u.DLL_operatordelete
add esp, 4
jmp 0x40b3cb
xor edx, edx
xor ecx, ecx
mov dx, word [eax + 2]
mov cx, word [eax]
push edx
push ecx
push str.StringFileInfo_04x_04xCompanyName
lea edx, [esp + 0x30]
push 0x104
push edx
call dword [sym.imp.MSVCRT.dll__snwprintf]
add esp, 0x14
lea eax, [esp + 0x1c]
lea ecx, [esp + 0x10]
lea edx, [esp + 0x24]
push eax
push ecx
push edx
push edi
call sub.VERSION.dll_VerQueryValueW
mov ebx, dword [sym.imp.MSVCRT.dll_wcslen]
test eax, eax
je 0x40b03f
mov edi, dword [esp + 0x24c]
cmp edi, ebp
je 0x40b03f
mov eax, dword [esp + 0x10]
push eax
mov ebp, eax
call ebx
add esp, 4
mov esi, eax
mov ecx, edi
push 1
push esi
call dword [sym.imp.MSVCP60.dll_private:_bool___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Grow_unsigned_int__bool_]
test al, al
je 0x40b03f
mov eax, dword [edi + 4]
mov ecx, ebp
test esi, esi
jbe 0x40b033
mov edx, esi
mov bp, word [ecx]
add ecx, 2
mov word [eax], bp
add eax, 2
dec edx
jne 0x40b024
mov eax, dword [edi + 4]
mov dword [edi + 8], esi
mov word [eax + esi*2], 0
mov eax, dword [esp + 0x14]
xor ecx, ecx
xor edx, edx
mov cx, word [eax + 2]
mov dx, word [eax]
push ecx
push edx
push str.StringFileInfo_04x_04xProductName
lea eax, [esp + 0x30]
push 0x104
push eax
call dword [sym.imp.MSVCRT.dll__snwprintf]
add esp, 0x14
lea ecx, [esp + 0x1c]
lea edx, [esp + 0x10]
lea eax, [esp + 0x24]
push ecx
mov ecx, dword [esp + 0x1c]
push edx
push eax
push ecx
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40b0d3
mov edi, dword [esp + 0x250]
test edi, edi
je 0x40b0d3
mov eax, dword [esp + 0x10]
push eax
mov ebp, eax
call ebx
add esp, 4
mov esi, eax
mov ecx, edi
push 1
push esi
call dword [sym.imp.MSVCP60.dll_private:_bool___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Grow_unsigned_int__bool_]
test al, al
je 0x40b0d3
mov eax, dword [edi + 4]
mov ecx, ebp
test esi, esi
jbe 0x40b0c7
mov edx, esi
mov bp, word [ecx]
add ecx, 2
mov word [eax], bp
add eax, 2
dec edx
jne 0x40b0b8
mov edx, dword [edi + 4]
mov dword [edi + 8], esi
mov word [edx + esi*2], 0
mov eax, dword [esp + 0x14]
xor ecx, ecx
xor edx, edx
mov cx, word [eax + 2]
mov dx, word [eax]
push ecx
push edx
push str.StringFileInfo_04x_04xComments
lea eax, [esp + 0x30]
push 0x104
push eax
call dword [sym.imp.MSVCRT.dll__snwprintf]
add esp, 0x14
lea ecx, [esp + 0x1c]
lea edx, [esp + 0x10]
lea eax, [esp + 0x24]
push ecx
mov ecx, dword [esp + 0x1c]
push edx
push eax
push ecx
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40b167
mov edi, dword [esp + 0x25c]
test edi, edi
je 0x40b167
mov eax, dword [esp + 0x10]
push eax
mov ebp, eax
call ebx
add esp, 4
mov esi, eax
mov ecx, edi
push 1
push esi
call dword [sym.imp.MSVCP60.dll_private:_bool___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Grow_unsigned_int__bool_]
test al, al
je 0x40b167
mov eax, dword [edi + 4]
mov ecx, ebp
test esi, esi
jbe 0x40b15b
mov edx, esi
mov bp, word [ecx]
add ecx, 2
mov word [eax], bp
add eax, 2
dec edx
jne 0x40b14c
mov edx, dword [edi + 4]
mov dword [edi + 8], esi
mov word [edx + esi*2], 0
mov eax, dword [esp + 0x14]
xor ecx, ecx
xor edx, edx
mov cx, word [eax + 2]
mov dx, word [eax]
push ecx
push edx
push str.StringFileInfo_04x_04xFileVersion
lea eax, [esp + 0x30]
push 0x104
push eax
call dword [sym.imp.MSVCRT.dll__snwprintf]
add esp, 0x14
lea ecx, [esp + 0x1c]
lea edx, [esp + 0x10]
lea eax, [esp + 0x24]
push ecx
mov ecx, dword [esp + 0x1c]
push edx
push eax
push ecx
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40b1fb
mov edi, dword [esp + 0x258]
test edi, edi
je 0x40b1fb
mov eax, dword [esp + 0x10]
push eax
mov ebp, eax
call ebx
add esp, 4
mov esi, eax
mov ecx, edi
push 1
push esi
call dword [sym.imp.MSVCP60.dll_private:_bool___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Grow_unsigned_int__bool_]
test al, al
je 0x40b1fb
mov eax, dword [edi + 4]
mov ecx, ebp
test esi, esi
jbe 0x40b1ef
mov edx, esi
mov bp, word [ecx]
add ecx, 2
mov word [eax], bp
add eax, 2
dec edx
jne 0x40b1e0
mov edx, dword [edi + 4]
mov dword [edi + 8], esi
mov word [edx + esi*2], 0
mov eax, dword [esp + 0x14]
xor ecx, ecx
xor edx, edx
mov cx, word [eax + 2]
mov dx, word [eax]
push ecx
push edx
push str.StringFileInfo_04x_04xProductVersion
lea eax, [esp + 0x30]
push 0x104
push eax
call dword [sym.imp.MSVCRT.dll__snwprintf]
add esp, 0x14
lea ecx, [esp + 0x1c]
lea edx, [esp + 0x10]
lea eax, [esp + 0x24]
push ecx
mov ecx, dword [esp + 0x1c]
push edx
push eax
push ecx
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40b28f
mov edi, dword [esp + 0x264]
test edi, edi
je 0x40b28f
mov eax, dword [esp + 0x10]
push eax
mov ebp, eax
call ebx
add esp, 4
mov esi, eax
mov ecx, edi
push 1
push esi
call dword [sym.imp.MSVCP60.dll_private:_bool___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Grow_unsigned_int__bool_]
test al, al
je 0x40b28f
mov eax, dword [edi + 4]
mov ecx, ebp
test esi, esi
jbe 0x40b283
mov edx, esi
mov bp, word [ecx]
add ecx, 2
mov word [eax], bp
add eax, 2
dec edx
jne 0x40b274
mov edx, dword [edi + 4]
mov dword [edi + 8], esi
mov word [edx + esi*2], 0
mov eax, dword [esp + 0x14]
xor ecx, ecx
xor edx, edx
mov cx, word [eax + 2]
mov dx, word [eax]
push ecx
push edx
push str.StringFileInfo_04x_04xFileDescription
lea eax, [esp + 0x30]
push 0x104
push eax
call dword [sym.imp.MSVCRT.dll__snwprintf]
add esp, 0x14
lea ecx, [esp + 0x1c]
lea edx, [esp + 0x10]
lea eax, [esp + 0x24]
push ecx
mov ecx, dword [esp + 0x1c]
push edx
push eax
push ecx
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40b323
mov edi, dword [esp + 0x254]
test edi, edi
je 0x40b323
mov eax, dword [esp + 0x10]
push eax
mov ebp, eax
call ebx
add esp, 4
mov esi, eax
mov ecx, edi
push 1
push esi
call dword [sym.imp.MSVCP60.dll_private:_bool___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Grow_unsigned_int__bool_]
test al, al
je 0x40b323
mov eax, dword [edi + 4]
mov ecx, ebp
test esi, esi
jbe 0x40b317
mov edx, esi
mov bp, word [ecx]
add ecx, 2
mov word [eax], bp
add eax, 2
dec edx
jne 0x40b308
mov edx, dword [edi + 4]
mov dword [edi + 8], esi
mov word [edx + esi*2], 0
mov eax, dword [esp + 0x14]
xor ecx, ecx
xor edx, edx
mov cx, word [eax + 2]
mov dx, word [eax]
push ecx
push edx
push str.StringFileInfo_04x_04xLegalCopyright
lea eax, [esp + 0x30]
push 0x104
push eax
call dword [sym.imp.MSVCRT.dll__snwprintf]
add esp, 0x14
lea ecx, [esp + 0x1c]
lea edx, [esp + 0x10]
lea eax, [esp + 0x24]
push ecx
mov ecx, dword [esp + 0x1c]
push edx
push eax
push ecx
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40b3b7
mov edi, dword [esp + 0x260]
test edi, edi
je 0x40b3b7
mov eax, dword [esp + 0x10]
push eax
mov ebp, eax
call ebx
add esp, 4
mov esi, eax
mov ecx, edi
push 1
push esi
call dword [sym.imp.MSVCP60.dll_private:_bool___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Grow_unsigned_int__bool_]
test al, al
je 0x40b3b7
mov eax, dword [edi + 4]
mov ecx, ebp
test esi, esi
jbe 0x40b3ab
mov edx, esi
mov bx, word [ecx]
add ecx, 2
mov word [eax], bx
add eax, 2
dec edx
jne 0x40b39c
mov edx, dword [edi + 4]
mov dword [edi + 8], esi
mov word [edx + esi*2], 0
mov eax, dword [esp + 0x18]
push eax
call sub.MFC42u.DLL_operatordelete
mov ebx, dword [esp + 0x244]
add esp, 4
pop edi
pop esi
test ebx, ebx
je 0x40b404
mov al, byte [ebx - 1]
test al, al
je 0x40b3f8
cmp al, 0xff
je 0x40b3f8
dec al
pop ebp
mov byte [ebx - 1], al
pop ebx
mov ecx, dword [esp + 0x21c]
mov dword fs:[0], ecx
add esp, 0x228
ret
add ebx, 0xfffffffe
push ebx
call sub.MFC42u.DLL_operatordelete
add esp, 4
mov ecx, dword [esp + 0x224]
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x228
ret