Function at 0x140004000
Capabilities:
Get file version info

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r15
lea rbp, [rsp - 0x470]
sub rsp, 0x570
mov rsi, rcx
mov r15d, edx
lea rcx, str.VPinMAME64.dll
call qword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov rdi, rax
test rax, rax
jne 0x1400040d8
call qword [sym.imp.KERNEL32.dll_GetLastError]
xor r9d, r9d
xor edx, edx
mov ebx, eax
mov ecx, 0x1300
xor eax, eax
mov r8d, ebx
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], eax
mov qword [rbp + 0x4b0], rax
lea rax, [rbp + 0x4b0]
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_FormatMessageA]
lea rax, str.Be_sure_to_have_this_file_in_the_current_directory_
mov r9d, ebx
mov qword [rsp + 0x28], rax
lea r8, str.The_VPinMAME64.dll_file_cant_be_loaded.
mov rax, qword [rbp + 0x4b0]
lea rdx, str._s_n_nError_0x_08x:__s_n_s
lea rcx, [rsp + 0x60]
mov qword [rsp + 0x20], rax
call qword [sym.imp.USER32.dll_wsprintfA]
lea r9d, [rdi + 0x30]
mov rcx, rsi
lea r8, [0x14001cb30]
lea rdx, [rsp + 0x60]
call qword [sym.imp.USER32.dll_MessageBoxA]
mov rcx, qword [rbp + 0x4b0]
call qword [sym.imp.KERNEL32.dll_LocalFree]
xor eax, eax
add rsp, 0x570
pop r15
pop rdi
pop rsi
pop rbx
pop rbp
ret
mov r8d, 0x104
mov qword [rsp + 0x5a0], r12
lea rdx, [rbp + 0x360]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea rdx, [0x140018c30]
lea rcx, [rbp + 0x160]
call qword [sym.imp.KERNEL32.dll_lstrcpyA]
lea rdx, [rbp + 0x4b8]
lea rcx, [rbp + 0x360]
call qword [sym.imp.VERSION.dll_GetFileVersionInfoSizeA]
mov r12d, eax
test eax, eax
je 0x140004232
mov edx, r12d
mov ecx, 0x40
call qword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov rbx, rax
test rax, rax
je 0x140004232
mov rcx, rax
mov qword [rsp + 0x5a8], r14
call qword [sym.imp.KERNEL32.dll_GlobalLock]
mov r14, rax
test rax, rax
je 0x14000422a
mov edx, dword [rbp + 0x4b8]
lea rcx, [rbp + 0x360]
mov r9, rax
mov r8d, r12d
call qword [sym.imp.VERSION.dll_GetFileVersionInfoA]
test eax, eax
je 0x14000422a
lea r9, [rsp + 0x40]
mov rcx, r14
lea r8, [rsp + 0x48]
lea rdx, str.VarFileInfoTranslation
call qword [sym.imp.VERSION.dll_VerQueryValueA]
test eax, eax
je 0x14000422a
mov rax, qword [rsp + 0x48]
lea r9, [0x1400185a8]
lea rdx, str.StringFileInfo_0.8x_s
mov ecx, dword [rax]
mov r8d, ecx
shl ecx, 0x10
shr r8d, 0x10
add r8d, ecx
lea rcx, [rsp + 0x60]
call qword [sym.imp.USER32.dll_wsprintfA]
lea r9, [rbp + 0x4b0]
mov rcx, r14
lea r8, [rsp + 0x50]
lea rdx, [rsp + 0x60]
call qword [sym.imp.VERSION.dll_VerQueryValueA]
test eax, eax
je 0x14000422a
mov eax, dword [rbp + 0x4b0]
mov ecx, 0x100
mov rdx, qword [rsp + 0x50]
cmp eax, ecx
cmova eax, ecx
lea rcx, [rbp + 0x160]
mov r8d, eax
mov dword [rbp + 0x4b0], eax
call fcn.140008050
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GlobalUnlock]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GlobalFree]
mov r14, qword [rsp + 0x5a8]
mov r12, qword [rsp + 0x5a0]
lea r8, [rbp + 0x160]
lea rcx, [rbp + 0x260]
lea rdx, str.You_have_selected_to_install_version__s_of_Visual_PinMAME___nAre_you_ready_to_proceed_
test r15d, r15d
jne 0x14000425b
lea rdx, str.You_have_selected_to_uninstall_version__s_of_Visual_PinMAME___nAre_you_ready_to_proceed_
call qword [sym.imp.USER32.dll_wsprintfA]
mov r9d, 0x24
lea r8, [0x14001cb30]
lea rdx, [rbp + 0x260]
mov rcx, rsi
call qword [sym.imp.USER32.dll_MessageBoxA]
cmp eax, 7
jne 0x1400042c3
lea r9d, [rax + 0x29]
mov rcx, rsi
lea r8, [0x14001cb30]
lea rdx, str.Installation_aborted_
test r15d, r15d
jne 0x1400042a4
lea rdx, str.UnInstallation_aborted__nVisual_PinMAME_is_still_installed_on_your_system
call qword [sym.imp.USER32.dll_MessageBoxA]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_FreeLibrary]
xor eax, eax
add rsp, 0x570
pop r15
pop rdi
pop rsi
pop rbx
pop rbp
ret
mov rcx, rdi
test r15d, r15d
je 0x140004479
lea rdx, str.DllRegisterServer
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
jne 0x140004393
call qword [sym.imp.KERNEL32.dll_GetLastError]
xor r9d, r9d
xor edx, edx
mov ebx, eax
mov ecx, 0x1300
xor eax, eax
mov r8d, ebx
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], eax
mov qword [rbp + 0x4b0], rax
lea rax, [rbp + 0x4b0]
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_FormatMessageA]
lea r8, str.Cant_find_the_registering_function__DllRegisterServer__in_the_VPinMAME64.dll.
lea rax, str.Please_check_if_you_have_a_valid_VPinMAME64.dll_
mov r9d, ebx
mov qword [rsp + 0x28], rax
lea rdx, str._s_n_nError_0x_08x:__s_n_s
mov rax, qword [rbp + 0x4b0]
lea rcx, [rsp + 0x60]
mov qword [rsp + 0x20], rax
call qword [sym.imp.USER32.dll_wsprintfA]
mov r9d, 0x30
lea r8, [0x14001cb30]
lea rdx, [rsp + 0x60]
mov rcx, rsi
call qword [sym.imp.USER32.dll_MessageBoxA]
mov rcx, qword [rbp + 0x4b0]
call qword [sym.imp.KERNEL32.dll_LocalFree]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_FreeLibrary]
xor eax, eax
add rsp, 0x570
pop r15
pop rdi
pop rsi
pop rbx
pop rbp
ret
call rax
mov ebx, eax
test eax, eax
jns 0x1400043d8
xor eax, eax
xor r9d, r9d
mov qword [rsp + 0x30], rax
mov r8d, ebx
mov dword [rsp + 0x28], eax
xor edx, edx
mov qword [rbp + 0x4b0], rax
mov ecx, 0x1300
lea rax, [rbp + 0x4b0]
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_FormatMessageA]
lea r8, str.Unable_to_register_the_class_object_
jmp 0x140004325
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_FreeLibrary]
lea rdx, [rsp + 0x50]
lea rcx, str.VPinMAME.Controller
call qword [sym.imp.ole32.dll_CLSIDFromProgID]
test eax, eax
jns 0x14000441b
xor r9d, r9d
lea r8, str.Class_couldnt_be_found._Registering_failed
mov edx, eax
mov rcx, rsi
call fcn.140005f00
xor eax, eax
add rsp, 0x570
pop r15
pop rdi
pop rsi
pop rbx
pop rbp
ret
xor edx, edx
lea rax, [rbp + 0x4b8]
lea r9, [0x140011440]
mov qword [rsp + 0x20], rax
lea rcx, [rsp + 0x50]
lea r8d, [rdx + 1]
call qword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
jns 0x140004467
xor r9d, r9d
lea r8, str.Cant_create_the_Controller_class
mov edx, eax
mov rcx, rsi
call fcn.140005f00
xor eax, eax
add rsp, 0x570
pop r15
pop rdi
pop rsi
pop rbx
pop rbp
ret
mov rcx, qword [rbp + 0x4b8]
mov rax, qword [rcx]
call qword [rax + 0x10]
jmp 0x140004584
lea rdx, str.DllUnregisterServer
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
jne 0x1400044d0
call qword [sym.imp.KERNEL32.dll_GetLastError]
xor r9d, r9d
xor edx, edx
mov ebx, eax
mov ecx, 0x1300
xor eax, eax
mov r8d, ebx
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], eax
mov qword [rbp + 0x4b0], rax
lea rax, [rbp + 0x4b0]
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_FormatMessageA]
lea r8, str.Cant_find_the_unregistering_function__DllUnegisterServer__in_the_VPinMAME64.dll.
jmp 0x140004325
call rax
mov ebx, eax
test eax, eax
jns 0x140004515
xor eax, eax
xor r9d, r9d
mov qword [rsp + 0x30], rax
mov r8d, ebx
mov dword [rsp + 0x28], eax
xor edx, edx
mov qword [rbp + 0x4b0], rax
mov ecx, 0x1300
lea rax, [rbp + 0x4b0]
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_FormatMessageA]
lea r8, str.Unable_to_unregister_the_class_object_
jmp 0x140004325
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_FreeLibrary]
mov r9d, 0x24
lea r8, [0x14001cb30]
lea rdx, str.Do_you_want_also_delete_all_registry_entrys_Visual_PinMAME_has_made_
mov rcx, rsi
call qword [sym.imp.USER32.dll_MessageBoxA]
cmp eax, 6
jne 0x140004584
lea rdx, [rbp + 0x4b0]
mov qword [rbp + 0x4b0], 0xffffffff80000001
mov qword [rsp + 0x20], rdx
mov r9d, 0xf003f
lea rdx, str.SoftwareFreewareVisual_PinMame
xor r8d, r8d
mov rcx, 0xffffffff80000001
call qword [0x140011008]
test eax, eax
jne 0x140004584
lea rcx, [rbp + 0x4b0]
call fcn.140006080
mov eax, 1
add rsp, 0x570
pop r15
pop rdi
pop rsi
pop rbx
pop rbp
ret