Function at 0x140028510
Capabilities:
Get file version info

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0xc0]
sub rsp, 0x1c0
mov rax, qword [0x1403ceac0]
xor rax, rsp
mov qword [rbp + 0xb0], rax
mov rbx, rdx
mov rsi, rcx
mov qword [rsp + 0x38], rcx
call fcn.140027a10
mov rcx, rax
test rax, rax
je 0x1400288c5
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsi], rax
call fcn.140027a10
mov rcx, rax
test rax, rax
je 0x1400288d0
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsi + 8], rax
call fcn.140027a10
mov rcx, rax
test rax, rax
je 0x1400288ba
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsi + 0x10], rax
xorps xmm0, xmm0
movups xmmword [rsp + 0x50], xmm0
movups xmmword [rsp + 0x60], xmm0
movups xmmword [rsp + 0x70], xmm0
mov rcx, rsi
test rbx, rbx
cmovne rcx, rbx
mov r8d, getprotobyname
lea rdx, [rsp + 0x50]
call qword [sym.imp.KERNEL32.dll_VirtualQuery]
cmp rax, 0x30
je 0x1400285e5
call qword [sym.imp.KERNEL32.dll_GetLastError]
jmp 0x14002888d
xor r15d, r15d
mov qword [rbp - 0x80], r15
mov rdx, qword [rsp + 0x58]
lea rcx, [rbp - 0x80]
call fcn.140027620
nop
mov rcx, qword [rbp - 0x80]
lea rdi, [r15 - 1]
cmp dword [rcx - 0x10], r15d
je 0x1400286cf
lea edx, [rdi + 0x5d]
call fcn.1402b5254
mov rdx, qword [rbp - 0x80]
test rax, rax
jne 0x140028622
mov eax, edi
jmp 0x14002862c
sub rax, rdx
sar rax, 1
test eax, eax
je 0x140028677
lea r8d, [rax + 1]
mov r9d, dword [rdx - 0x10]
sub r9d, r8d
lea rdx, [rsp + 0x30]
lea rcx, [rbp - 0x80]
call fcn.140027b40
nop
lea rdx, [rsp + 0x30]
lea rcx, [rsi + 8]
call fcn.140027d20
nop
mov rdx, qword [rsp + 0x30]
add rdx, 0xffffffffffffffe8
mov eax, edi
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x140028673
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rdx, qword [rbp - 0x80]
lea rcx, [rdx - 0x18]
mov rbx, qword [rsi]
sub rbx, 0x18
cmp rcx, rbx
je 0x1400286cf
mov eax, dword [rbx + 0x10]
shr eax, 0x1f
test al, al
jne 0x1400286c3
mov rax, qword [rbx]
cmp qword [rcx], rax
jne 0x1400286c3
call fcn.140027ca0
mov r14, rax
mov ecx, edi
lock xadd dword [rbx + 0x10], ecx
sub ecx, 1
jg 0x1400286ba
mov rcx, qword [rbx]
mov r8, qword [rcx]
mov rdx, rbx
call qword [rreloc.OLEAUT32.dll_VariantClear + 8]
lea rax, [r14 + 0x18]
mov qword [rsi], rax
jmp 0x1400286cf
mov r8d, dword [rcx + 8]
mov rcx, rsi
call fcn.1400283a0
mov dword [rbp - 0x74], r15d
lea rdx, [rbp - 0x74]
mov rcx, qword [rsi]
call qword [sym.imp.VERSION.dll_GetFileVersionInfoSizeW]
mov r12d, eax
test eax, eax
jne 0x1400286f2
call qword [sym.imp.KERNEL32.dll_GetLastError]
jmp 0x140028843
mov rcx, r12
call fcn.1402974ec
mov r14, rax
mov r8, r12
xor edx, edx
mov rcx, rax
call fcn.1402b60e0
mov qword [rbp - 0x60], r14
mov r9, r14
mov r8d, r12d
xor edx, edx
mov rcx, qword [rsi]
call qword [sym.imp.VERSION.dll_GetFileVersionInfoW]
test eax, eax
jne 0x14002872e
call qword [sym.imp.KERNEL32.dll_GetLastError]
jmp 0x14002883a
mov dword [rbp - 0x78], r15d
lea r9, [rbp - 0x78]
lea r8, [rsp + 0x48]
lea rdx, [0x140348500]
mov rcx, r14
call qword [sym.imp.VERSION.dll_VerQueryValueW]
test eax, eax
je 0x140028860
cmp dword [rbp - 0x78], 4
jb 0x140028860
xor edx, edx
mov r8d, 0x100
lea rcx, [rbp - 0x50]
call fcn.1402b60e0
mov rax, qword [rsp + 0x48]
movzx r9d, word [rax + 2]
movzx r8d, word [rax]
lea rdx, str.StringFileInfo_04x_04xFileVersion
lea rcx, [rbp - 0x50]
call fcn.140027db0
mov qword [rsp + 0x40], r15
lea r9, [rbp - 0x78]
lea r8, [rsp + 0x40]
lea rdx, [rbp - 0x50]
mov rcx, r14
call qword [sym.imp.VERSION.dll_VerQueryValueW]
test eax, eax
jne 0x1400287b6
call qword [sym.imp.KERNEL32.dll_GetLastError]
jmp 0x14002883a
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x14002883a
lea rax, [rbp - 0x70]
mov qword [rsp + 0x28], rax
lea rax, [rbp - 0x6c]
mov qword [rsp + 0x20], rax
lea r9, [rbp - 0x68]
lea r8, [rbp - 0x64]
lea rdx, str._u__u__u__u
call fcn.140027e20
cmp eax, 4
jne 0x140028813
mov eax, dword [rbp - 0x70]
mov dword [rsp + 0x28], eax
mov eax, dword [rbp - 0x6c]
mov dword [rsp + 0x20], eax
mov r9d, dword [rbp - 0x68]
mov r8d, dword [rbp - 0x64]
lea rdx, str._u._u._u._u
lea rcx, [rsi + 0x10]
call fcn.140027fe0
jmp 0x14002883a
mov rdx, qword [rsp + 0x40]
test rdx, rdx
je 0x14002882d
mov rax, rdi
inc rax
cmp word [rdx + rax*2], 0
jne 0x140028820
mov r15d, eax
mov r8d, r15d
lea rcx, [rsi + 0x10]
call fcn.1400283a0
nop
mov rcx, r14
call fcn.140296f94
nop
mov rdx, qword [rbp - 0x80]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], edi
sub edi, 1
jg 0x14002888d
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
jmp 0x14002888d
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop
mov rcx, r14
call fcn.140296f94
nop
mov rdx, qword [rbp - 0x80]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], edi
sub edi, 1
jg 0x14002888d
mov rcx, qword [rdx]
mov r8, qword [rcx]
call qword [rreloc.OLEAUT32.dll_VariantClear + 8]
nop
mov rax, rsi
mov rcx, qword [rbp + 0xb0]
xor rcx, rsp
call fcn.140296f70
mov rbx, qword [rsp + 0x210]
add rsp, 0x1c0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
mov ecx, 0x80004005
call fcn.140028370
nop
mov ecx, 0x80004005
call fcn.140028370
nop
mov ecx, 0x80004005
call fcn.140028370
int3