Function at 0x180003840
Capabilities:
Get file version info

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push r13
push r14
push r15
lea rbp, [rsp - 0x180]
sub rsp, 0x280
mov rax, qword [0x180028020]
xor rax, rsp
mov qword [rbp + 0x170], rax
lea rcx, [rbp + 0x41]
xor esi, esi
xor edx, edx
mov r8d, 0x12b
mov dword [rsp + 0x38], 0
mov byte [rbp + 0x40], sil
call sub.MSVCR100.dll_memset
lea r15, [0x180054dc0]
mov ebx, 0x104
mov r8d, ebx
xor edx, edx
mov rcx, r15
call sub.MSVCR100.dll_memset
lea r14, [0x180054ed0]
mov r8d, ebx
mov rcx, r14
xor edx, edx
call sub.MSVCR100.dll_memset
lea r8d, [rbx + 0x28]
lea rdx, [rbp + 0x40]
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
mov r13d, eax
cmp eax, 1
jb 0x180003b94
lea rdx, [rsp + 0x38]
lea rcx, [rbp + 0x40]
mov qword [rsp + 0x2b0], rdi
mov qword [rsp + 0x2b8], r12
lea r12d, [rsi + 1]
call qword [sym.imp.VERSION.dll_GetFileVersionInfoSizeA]
mov edi, eax
cmp eax, r12d
jb 0x180003b1b
mov ecx, edi
call qword [sym.imp.MSVCR100.dll_void____ptr64___cdecl_operator_new_unsigned_long_long_unsigned___int64__]
mov edx, dword [rsp + 0x38]
lea rcx, [rbp + 0x40]
mov r9, rax
mov r8d, edi
mov rsi, rax
call qword [sym.imp.VERSION.dll_GetFileVersionInfoA]
test eax, eax
je 0x180003b1b
xor edi, edi
lea r8d, [r12 + 0x62]
lea rcx, [rbp - 0x2f]
xor edx, edx
mov qword [rsp + 0x40], rdi
mov dword [rsp + 0x30], edi
mov byte [rbp - 0x30], dil
call sub.MSVCR100.dll_memset
lea r8d, [r12 + 0x62]
lea rcx, [rsp + 0x61]
xor edx, edx
mov qword [rsp + 0x50], rdi
mov dword [rsp + 0x3c], edi
mov byte [rsp + 0x60], dil
call sub.MSVCR100.dll_memset
lea r9, [rsp + 0x30]
lea r8, [rsp + 0x40]
lea rdx, str.VarFileInfoTranslation
mov rcx, rsi
mov qword [rsp + 0x48], rdi
mov dword [rsp + 0x34], edi
call qword [sym.imp.VERSION.dll_VerQueryValueA]
cmp dword [rsp + 0x30], r12d
jb 0x180003b1b
mov rax, qword [rsp + 0x40]
lea r8, str.StringFileInfo_04x_04xFileVersion
lea edx, [rdi + 0x64]
movzx ecx, word [rax + 2]
movzx r9d, word [rax]
mov dword [rsp + 0x20], ecx
lea rcx, [rsp + 0x60]
call entry0
lea r9, [rsp + 0x34]
lea r8, [rsp + 0x48]
lea rdx, [rsp + 0x60]
mov rcx, rsi
call qword [sym.imp.VERSION.dll_VerQueryValueA]
mov eax, dword [rsp + 0x34]
test eax, eax
je 0x180003a62
mov edi, eax
cmp rax, 0x7ffffffe
jbe 0x1800039f2
mov byte [0x180054ed0], 0
jmp 0x180003a2d
mov r8, qword [rsp + 0x48]
mov rdx, rbx
mov rcx, r14
sub r8, r14
lea rax, [rdi + rdx - 0x104]
test rax, rax
je 0x180003a22
movzx eax, byte [r8 + rcx]
test al, al
je 0x180003a22
mov byte [rcx], al
inc rcx
dec rdx
jne 0x180003a00
jmp 0x180003a27
test rdx, rdx
jne 0x180003a2a
dec rcx
mov byte [rcx], 0
mov rcx, r14
xor edi, edi
call qword [sym.imp.KERNEL32.dll_lstrlenA]
test eax, eax
je 0x180003a62
nop dword [rax]
cmp byte [rdi + r14], 0x2e
je 0x180003a5d
mov rcx, r14
inc rdi
call qword [sym.imp.KERNEL32.dll_lstrlenA]
movsxd rcx, eax
cmp rdi, rcx
jb 0x180003a40
jmp 0x180003a62
mov byte [rdi + r14], 0
mov rax, qword [rsp + 0x40]
lea r8, str.StringFileInfo_04x_04xOriginalFilename
mov edx, 0x64
movzx ecx, word [rax + 2]
movzx r9d, word [rax]
mov dword [rsp + 0x20], ecx
lea rcx, [rbp - 0x30]
call entry0
lea r9, [rsp + 0x3c]
lea r8, [rsp + 0x50]
lea rdx, [rbp - 0x30]
mov rcx, rsi
call qword [sym.imp.VERSION.dll_VerQueryValueA]
mov edx, dword [rsp + 0x3c]
cmp edx, r12d
jb 0x180003b1b
mov r8d, edx
cmp rdx, 0x7ffffffe
jbe 0x180003abd
mov byte [0x180054dc0], 0
jmp 0x180003afc
mov rdi, qword [rsp + 0x50]
mov rdx, rbx
mov rcx, r15
sub rdi, r15
nop dword [rax + rax]
lea rax, [r8 + rdx - 0x104]
test rax, rax
je 0x180003af1
movzx eax, byte [rdi + rcx]
test al, al
je 0x180003af1
mov byte [rcx], al
inc rcx
dec rdx
jne 0x180003ad0
jmp 0x180003af6
test rdx, rdx
jne 0x180003af9
dec rcx
mov byte [rcx], 0
or rcx, 0xffffffffffffffff
xor eax, eax
mov rdi, r15
repne scasb al, byte [rdi]
not rcx
dec rcx
je 0x180003b1b
mov rcx, r15
call qword [sym.imp.MSVCR100.dll__strupr]
xor r12d, r12d
mov rcx, rsi
call qword [sym.imp.MSVCR100.dll_void___cdecl_operator_delete_void____ptr64_]
mov rdi, qword [rsp + 0x2b0]
cmp r12d, 1
mov r12, qword [rsp + 0x2b8]
jne 0x180003b94
mov rax, r13
cmp r13, 1
jbe 0x180003b94
cmp byte [rbp + rax + 0x40], 0x5c
je 0x180003b55
dec rax
cmp rax, 1
ja 0x180003b43
jmp 0x180003b94
lea rdx, [rbp + rax + 0x41]
mov rcx, r15
sub rdx, r15
lea rax, [rbx + 0x7ffffefa]
test rax, rax
je 0x180003b80
movzx eax, byte [rdx + rcx]
test al, al
je 0x180003b80
mov byte [rcx], al
inc rcx
dec rbx
jne 0x180003b60
jmp 0x180003b85
test rbx, rbx
jne 0x180003b88
dec rcx
mov byte [rcx], 0
mov rcx, r15
call qword [sym.imp.MSVCR100.dll__strupr]
mov rcx, qword [rbp + 0x170]
xor rcx, rsp
call fcn.18001eef0
mov rbx, qword [rsp + 0x2c0]
add rsp, 0x280
pop r15
pop r14
pop r13
pop rsi
pop rbp
ret