Function at 0x180015fc0
Capabilities:
Get file version info

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
sub rsp, 0xc8
mov rax, qword [0x1801003f0]
xor rax, rsp
mov qword [rsp + 0xb0], rax
mov eax, dword [0x1801161a0]
mov r14, qword [rsp + 0x120]
mov r13, qword [rsp + 0x128]
mov rsi, r9
mov rbp, r8
mov r12, rdx
mov rdi, rcx
test eax, eax
je 0x18001602e
lea r9, str.GetFileVerInfo_1
lea r8, str.WatchDog
lea rcx, [0x1801160e8]
mov edx, 0xf
call fcn.180011c50
mov eax, dword [0x1801161a0]
test rdi, rdi
jne 0x18001603a
xor eax, eax
jmp 0x180016378
test eax, eax
je 0x18001605d
lea r9, str.GetFileVerInfo_2
lea r8, str.WatchDog
lea rcx, [0x1801160e8]
mov edx, 0xf
call fcn.180011c50
lea rdx, [rsp + 0x30]
mov rcx, rdi
mov dword [rsp + 0x30], 0
call sub.VERSION.dll_GetFileVersionInfoSizeA
mov dword [rsp + 0x20], eax
test eax, eax
je 0x180016033
cmp dword [0x1801161a0], 0
mov qword [rsp + 0xc0], rbx
je 0x1800160ae
lea r9, str.GetFileVerInfo_3
lea r8, str.WatchDog
lea rcx, [0x1801160e8]
mov edx, 0xf
call fcn.180011c50
mov eax, dword [rsp + 0x20]
mov ecx, eax
call fcn.18003783c
mov rbx, rax
test rax, rax
je 0x1800163a1
cmp dword [0x1801161a0], 0
je 0x1800160e9
lea r9, str.GetFileVerInfo_4
lea r8, str.WatchDog
lea rcx, [0x1801160e8]
mov edx, 0xf
call fcn.180011c50
mov r8d, dword [rsp + 0x20]
xor edx, edx
mov rcx, rbx
call fcn.1800369b0
mov r8d, dword [rsp + 0x20]
mov edx, dword [rsp + 0x30]
mov r9, rbx
mov rcx, rdi
call sub.VERSION.dll_GetFileVersionInfoA
cmp dword [0x1801161a0], 0
mov edi, eax
je 0x180016136
lea r9, str.GetFileVerInfo_5
lea r8, str.WatchDog
lea rcx, [0x1801160e8]
mov edx, 0xf
call fcn.180011c50
test edi, edi
je 0x180016399
mov qword [rsp + 0x28], 0
test r12, r12
jne 0x18001615a
test rbp, rbp
jne 0x18001615a
test r13, r13
je 0x1800161f5
cmp dword [0x1801161a0], 0
je 0x180016182
lea r9, str.GetFileVerInfo_6
lea r8, str.WatchDog
lea rcx, [0x1801160e8]
mov edx, 0xf
call fcn.180011c50
lea r9, [rsp + 0x20]
lea r8, [rsp + 0x28]
lea rdx, [0x1800c38f0]
mov rcx, rbx
call sub.VERSION.dll_VerQueryValueA
cmp dword [0x1801161a0], 0
mov edi, eax
je 0x1800161c5
lea r9, str.GetFileVerInfo_7
lea r8, str.WatchDog
lea rcx, [0x1801160e8]
mov edx, 0xf
call fcn.180011c50
test edi, edi
je 0x180016399
mov rcx, qword [rsp + 0x28]
test r12, r12
je 0x1800161de
mov eax, dword [rcx + 8]
mov dword [r12], eax
test rbp, rbp
je 0x1800161e9
mov eax, dword [rcx + 0xc]
mov dword [rbp], eax
test r13, r13
je 0x1800161f5
mov eax, dword [rcx + 0x24]
mov dword [r13], eax
test rsi, rsi
je 0x180016363
test r14, r14
je 0x180016363
cmp dword [0x1801161a0], 0
je 0x18001622f
lea r9, str.GetFileVerInfo_8
lea r8, str.WatchDog
lea rcx, [0x1801160e8]
mov edx, 0xf
call fcn.180011c50
lea r9, [rsp + 0x20]
lea r8, [rsp + 0x28]
lea rdx, str.VarFileInfoTranslation
mov rcx, rbx
call sub.VERSION.dll_VerQueryValueA
mov ecx, dword [0x1801161a0]
mov edi, eax
test ecx, ecx
je 0x180016279
lea r9, str.GetFileVerInfo_9
lea r8, str.WatchDog
lea rcx, [0x1801160e8]
mov edx, 0xf
call fcn.180011c50
mov ecx, dword [0x1801161a0]
test edi, edi
je 0x180016399
test ecx, ecx
je 0x1800162a4
lea r9, str.GetFileVerInfo_10
lea r8, str.WatchDog
lea rcx, [0x1801160e8]
mov edx, 0xf
call fcn.180011c50
xor edx, edx
lea rcx, [rsp + 0x41]
mov byte [rsp + 0x40], 0
lea r8d, [rdx + 0x63]
call fcn.1800369b0
mov rdx, qword [rsp + 0x28]
lea rcx, [rsp + 0x40]
movzx r9d, word [rdx + 2]
movzx r8d, word [rdx]
lea rdx, str.StringFileInfo_04X_04XInternalName
call fcn.18003756c
lea r9, [rsp + 0x20]
lea r8, [rsp + 0x28]
lea rdx, [rsp + 0x40]
mov rcx, rbx
call sub.VERSION.dll_VerQueryValueA
cmp dword [0x1801161a0], 0
mov edi, eax
je 0x180016319
lea r9, str.GetFileVerInfo_11
lea r8, str.WatchDog
lea rcx, [0x1801160e8]
mov edx, 0xf
call fcn.180011c50
test edi, edi
je 0x180016399
mov r8, qword [rsp + 0x28]
or rcx, 0xffffffffffffffff
xor eax, eax
mov rdi, r8
repne scasb al, byte [rdi]
mov eax, dword [r14]
not rcx
dec rcx
cmp rax, rcx
jbe 0x180016399
mov rdx, r8
sub rsi, r8
movzx eax, byte [rdx]
inc rdx
mov byte [rsi + rdx - 1], al
test al, al
jne 0x180016341
or rcx, 0xffffffffffffffff
xor eax, eax
mov rdi, r8
repne scasb al, byte [rdi]
not rcx
dec rcx
mov dword [r14], ecx
mov rcx, rbx
call fcn.180038270
mov eax, 1
mov rbx, qword [rsp + 0xc0]
mov rcx, qword [rsp + 0xb0]
xor rcx, rsp
call fcn.180036980
add rsp, 0xc8
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
mov rcx, rbx
call fcn.180038270
xor eax, eax
jmp 0x180016370