Function at 0x40b530
Capabilities:
Get file version info

Disassembly:
push 0xffffffffffffffff
push 0x40f1c9
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 0x40b568
mov eax, ebx
push esi
push edi
push ebp
push eax
call sub.VERSION.dll_GetFileVersionInfoSizeW
mov esi, eax
cmp esi, ebp
je 0x40b9fb
push esi
call sub.MFC42u.DLL_operatornew
mov edi, eax
add esp, 4
cmp edi, ebp
mov dword [esp + 0x18], edi
je 0x40b9fb
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 0x40b59d
mov eax, ebx
push edi
push esi
push ebp
push eax
call sub.VERSION.dll_GetFileVersionInfoW
test eax, eax
je 0x40b9e7
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 0x40b5dd
push edi
call sub.MFC42u.DLL_operatordelete
add esp, 4
jmp 0x40b9fb
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 0x40b66f
mov edi, dword [esp + 0x24c]
cmp edi, ebp
je 0x40b66f
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 0x40b66f
mov eax, dword [edi + 4]
mov ecx, ebp
test esi, esi
jbe 0x40b663
mov edx, esi
mov bp, word [ecx]
add ecx, 2
mov word [eax], bp
add eax, 2
dec edx
jne 0x40b654
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 0x40b703
mov edi, dword [esp + 0x250]
test edi, edi
je 0x40b703
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 0x40b703
mov eax, dword [edi + 4]
mov ecx, ebp
test esi, esi
jbe 0x40b6f7
mov edx, esi
mov bp, word [ecx]
add ecx, 2
mov word [eax], bp
add eax, 2
dec edx
jne 0x40b6e8
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 0x40b797
mov edi, dword [esp + 0x25c]
test edi, edi
je 0x40b797
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 0x40b797
mov eax, dword [edi + 4]
mov ecx, ebp
test esi, esi
jbe 0x40b78b
mov edx, esi
mov bp, word [ecx]
add ecx, 2
mov word [eax], bp
add eax, 2
dec edx
jne 0x40b77c
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 0x40b82b
mov edi, dword [esp + 0x258]
test edi, edi
je 0x40b82b
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 0x40b82b
mov eax, dword [edi + 4]
mov ecx, ebp
test esi, esi
jbe 0x40b81f
mov edx, esi
mov bp, word [ecx]
add ecx, 2
mov word [eax], bp
add eax, 2
dec edx
jne 0x40b810
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 0x40b8bf
mov edi, dword [esp + 0x264]
test edi, edi
je 0x40b8bf
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 0x40b8bf
mov eax, dword [edi + 4]
mov ecx, ebp
test esi, esi
jbe 0x40b8b3
mov edx, esi
mov bp, word [ecx]
add ecx, 2
mov word [eax], bp
add eax, 2
dec edx
jne 0x40b8a4
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 0x40b953
mov edi, dword [esp + 0x254]
test edi, edi
je 0x40b953
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 0x40b953
mov eax, dword [edi + 4]
mov ecx, ebp
test esi, esi
jbe 0x40b947
mov edx, esi
mov bp, word [ecx]
add ecx, 2
mov word [eax], bp
add eax, 2
dec edx
jne 0x40b938
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 0x40b9e7
mov edi, dword [esp + 0x260]
test edi, edi
je 0x40b9e7
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 0x40b9e7
mov eax, dword [edi + 4]
mov ecx, ebp
test esi, esi
jbe 0x40b9db
mov edx, esi
mov bx, word [ecx]
add ecx, 2
mov word [eax], bx
add eax, 2
dec edx
jne 0x40b9cc
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 0x40ba34
mov al, byte [ebx - 1]
test al, al
je 0x40ba28
cmp al, 0xff
je 0x40ba28
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