Function at 0x14009e390
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 [0x14035dc30]
xor rax, rsp
mov qword [rbp + 0xb0], rax
mov rbx, rdx
mov r14, rcx
mov qword [rsp + 0x70], rcx
call fcn.1400256d0
mov rcx, rax
test rax, rax
je 0x14009e8d9
mov rax, qword [rax]
mov rax, qword [rax + 0x18]
call qword [case.0x1400ac8a1.0]
add rax, 0x18
mov qword [r14], rax
call fcn.1400256d0
mov rcx, rax
test rax, rax
je 0x14009e8e4
mov rax, qword [rax]
mov rax, qword [rax + 0x18]
call qword [case.0x1400ac8a1.0]
add rax, 0x18
mov qword [r14 + 8], rax
call fcn.1400256d0
mov rcx, rax
test rax, rax
je 0x14009e8ef
mov rax, qword [rax]
mov rax, qword [rax + 0x18]
call qword [case.0x1400ac8a1.0]
add rax, 0x18
mov qword [r14 + 0x10], rax
xorps xmm0, xmm0
movups xmmword [rbp - 0x80], xmm0
movups xmmword [rbp - 0x70], xmm0
movups xmmword [rbp - 0x60], xmm0
mov rcx, r14
test rbx, rbx
cmovne rcx, rbx
mov r8d, getprotobyname
lea rdx, [rbp - 0x80]
call qword [sym.imp.KERNEL32.dll_VirtualQuery]
cmp rax, 0x30
je 0x14009e476
call qword [sym.imp.KERNEL32.dll_GetLastError]
jmp 0x14009e8a1
mov rdx, qword [rbp - 0x78]
lea rcx, [rsp + 0x30]
call fcn.1400a0550
nop
mov rcx, qword [rsp + 0x30]
mov rbx, 0xffffffffffffffff
cmp dword [rcx - 0x10], 0
je 0x14009e56d
lea edx, [rbx + 0x5d]
call fcn.14026b9c8
mov rdx, qword [rsp + 0x30]
test rax, rax
jne 0x14009e4b1
mov eax, ebx
jmp 0x14009e4bb
sub rax, rdx
sar rax, 1
test eax, eax
je 0x14009e50f
lea r8d, [rax + 1]
mov r9d, dword [rdx - 0x10]
sub r9d, r8d
lea rdx, [rsp + 0x60]
lea rcx, [rsp + 0x30]
call fcn.14009fa60
nop
lea rdx, [rsp + 0x60]
lea rcx, [r14 + 8]
call fcn.14009eb00
nop
mov rdx, qword [rsp + 0x60]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14009e50a
mov rcx, qword [rdx]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [case.0x1400ac8a1.0]
mov rdx, qword [rsp + 0x30]
lea rcx, [rdx - 0x18]
mov rdi, qword [r14]
sub rdi, 0x18
cmp rcx, rdi
je 0x14009e56d
mov eax, dword [rdi + 0x10]
shr eax, 0x1f
test al, al
jne 0x14009e561
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x14009e561
call fcn.14009a400
mov rsi, rax
mov eax, ebx
lock xadd dword [rdi + 0x10], eax
sub eax, 1
jg 0x14009e558
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
mov rax, qword [rax + 8]
call qword [case.0x1400ac8a1.0]
lea rax, [rsi + 0x18]
mov qword [r14], rax
jmp 0x14009e56d
mov r8d, dword [rcx + 8]
mov rcx, r14
call fcn.140096e40
xor r13d, r13d
mov dword [rsp + 0x3c], r13d
lea rdx, [rsp + 0x3c]
mov rcx, qword [r14]
call sub.VERSION.dll_GetFileVersionInfoSizeW
mov edi, eax
test eax, eax
jne 0x14009e5b5
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop
mov rdx, qword [rsp + 0x30]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebx
sub ebx, 1
jg 0x14009e8a1
mov rcx, qword [rdx]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
jmp 0x14009e89a
mov rcx, rdi
call fcn.140269b2c
mov rsi, rax
test rax, rax
je 0x14009e5d4
mov r8, rdi
xor edx, edx
mov rcx, rax
call fcn.14026c200
jmp 0x14009e5d7
mov rsi, r13
mov qword [rsp + 0x78], rsi
mov r9, rsi
mov r8d, edi
xor edx, edx
mov rcx, qword [r14]
call sub.VERSION.dll_GetFileVersionInfoW
test eax, eax
jne 0x14009e606
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop
test rsi, rsi
je 0x14009e58f
mov rcx, rsi
call fcn.140269844
jmp 0x14009e58f
mov dword [rsp + 0x38], r13d
lea r9, [rsp + 0x38]
lea r8, [rsp + 0x68]
lea rdx, str.VarFileInfoTranslation
mov rcx, rsi
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x14009e868
cmp dword [rsp + 0x38], 4
jb 0x14009e868
xor edx, edx
mov r8d, 0x100
lea rcx, [rbp - 0x50]
call fcn.14026c200
mov rax, qword [rsp + 0x68]
movzx r9d, word [rax + 2]
movzx r8d, word [rax]
lea rdx, str.StringFileInfo_04x_04xFileVersion
lea rcx, [rbp - 0x50]
call fcn.14009e140
mov qword [rsp + 0x58], r13
lea r9, [rsp + 0x38]
lea r8, [rsp + 0x58]
lea rdx, [rbp - 0x50]
mov rcx, rsi
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x14009e5f0
mov rcx, qword [rsp + 0x58]
test rcx, rcx
je 0x14009e5f7
lea rax, [rsp + 0x40]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x44]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x48]
lea r8, [rsp + 0x4c]
lea rdx, str._u__u__u__u
call fcn.1400698d0
cmp eax, 4
jne 0x14009e6f5
mov eax, dword [rsp + 0x40]
mov dword [rsp + 0x28], eax
mov eax, dword [rsp + 0x44]
mov dword [rsp + 0x20], eax
mov r9d, dword [rsp + 0x48]
mov r8d, dword [rsp + 0x4c]
lea rdx, str._u._u._u._u
lea rcx, [r14 + 0x10]
call fcn.14009f1d0
jmp 0x14009e5f7
mov r15, qword [rsp + 0x58]
test r15, r15
je 0x14009e7fc
mov rdi, rbx
nop word [rax + rax]
inc rdi
cmp word [r15 + rdi*2], 0
jne 0x14009e710
test edi, edi
je 0x14009e7fc
mov r9, qword [r14 + 0x10]
mov eax, dword [r9 - 0x10]
mov dword [rsp + 0x50], eax
mov r13, r15
sub r13, r9
sar r13, 1
test edi, edi
js 0x14009e8fa
mov ecx, 1
sub ecx, dword [r9 - 8]
mov eax, dword [r9 - 0xc]
sub eax, edi
or eax, ecx
jge 0x14009e762
mov edx, edi
lea rcx, [r14 + 0x10]
call fcn.140084f10
mov r9, qword [r14 + 0x10]
movsxd r8, edi
add r8, r8
mov eax, dword [rsp + 0x50]
cmp r13, rax
ja 0x14009e7a2
lea rdx, [r9 + r13*2]
test r8, r8
je 0x14009e7da
test rdx, rdx
jne 0x14009e78c
call fcn.14027932c
mov dword [rax], reloc.WS2_32.dll_shutdown
jmp 0x14009e7d5
movsxd rax, dword [r9 - 0xc]
add rax, rax
cmp rax, r8
jb 0x14009e7ca
mov rcx, r9
call fcn.14026bb50
jmp 0x14009e7da
movsxd rax, dword [r9 - 0xc]
add rax, rax
test r8, r8
je 0x14009e7da
mov rcx, r9
cmp rax, r8
jb 0x14009e7c0
mov rdx, r15
call fcn.14026bb50
jmp 0x14009e7da
mov r8, rax
xor edx, edx
call fcn.14026c200
call fcn.14027932c
mov dword [rax], 0x22
call fcn.140277fd8
mov rax, qword [r14 + 0x10]
cmp edi, dword [rax - 0xc]
jg 0x14009e8fa
mov dword [rax - 0x10], edi
movsxd rcx, edi
mov rax, qword [r14 + 0x10]
xor edx, edx
mov word [rax + rcx*2], dx
jmp 0x14009e5f7
mov rcx, qword [r14 + 0x10]
lea rdx, [rcx - 0x18]
mov rdi, qword [rdx]
cmp dword [rdx + 8], 0
je 0x14009e863
mov eax, dword [rdx + 0x10]
shr eax, 0x1f
test al, al
je 0x14009e82f
cmp dword [rcx - 0xc], 0
jl 0x14009e8ce
mov dword [rcx - 0x10], r13d
mov rax, qword [r14 + 0x10]
mov word [rax], r13w
jmp 0x14009e863
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14009e84b
mov rcx, qword [rdx]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [case.0x1400ac8a1.0]
mov rax, qword [rdi]
mov rcx, rdi
mov rax, qword [rax + 0x18]
call qword [case.0x1400ac8a1.0]
add rax, 0x18
mov qword [r14 + 0x10], rax
jmp 0x14009e5f7
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop
test rsi, rsi
je 0x14009e87d
mov rcx, rsi
call fcn.140269844
nop
mov rdx, qword [rsp + 0x30]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebx
sub ebx, 1
jg 0x14009e8a1
mov rcx, qword [rdx]
mov r8, qword [rcx]
mov rax, qword [r8 + 8]
call qword [case.0x1400ac8a1.0]
nop
mov rax, r14
mov rcx, qword [rbp + 0xb0]
xor rcx, rsp
call fcn.140269300
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, 0x80070057
call fcn.1400264e0
nop
mov ecx, 0x80004005
call fcn.1400264e0
nop
mov ecx, 0x80004005
call fcn.1400264e0
nop
mov ecx, 0x80004005
call fcn.1400264e0
nop
mov ecx, 0x80070057
call fcn.1400264e0
int3