Function at 0x1400a66c0
Capabilities:
Get file version info

Disassembly:
push rbx
push rdi
sub rsp, 0x158
mov rbx, rcx
mov rcx, qword [0x14013f500]
mov rdi, rdx
call fcn.14002f9e0
test rdi, rdi
je 0x1400a6b08
cmp word [rdi], 0
je 0x1400a6b08
lea rdx, [rsp + 0x178]
mov rcx, rdi
mov qword [rsp + 0x148], rsi
call qword [sym.imp.VERSION.dll_GetFileVersionInfoSizeW]
mov esi, eax
test eax, eax
jne 0x1400a673a
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov rcx, qword [0x14013b0f8]
mov dl, 1
mov dword [rcx + 0x40], eax
mov rcx, rbx
call fcn.14005e3f0
mov rsi, qword [rsp + 0x148]
add rsp, 0x158
pop rdi
pop rbx
ret
mov rcx, rsi
mov qword [rsp + 0x150], rbp
call qword [sym.imp.MSVCR100.dll_malloc]
mov r8d, esi
xor edx, edx
mov r9, rax
mov rcx, rdi
mov rbp, rax
call qword [sym.imp.VERSION.dll_GetFileVersionInfoW]
test eax, eax
je 0x1400a6ae3
lea r9, [rsp + 0x180]
lea r8, [rsp + 0x188]
lea rdx, [0x14011bab0]
mov rcx, rbp
call qword [sym.imp.VERSION.dll_VerQueryValueW]
test eax, eax
je 0x1400a6ae3
mov rax, qword [rsp + 0x188]
mov esi, 0x80
lea r8, str._u._u._u._u
mov edx, dword [rax + 0xc]
mov r9d, dword [rax + 8]
movzx ecx, dx
shr edx, 0x10
movzx eax, r9w
mov dword [rsp + 0x30], ecx
mov dword [rsp + 0x28], edx
lea rcx, [rsp + 0x40]
shr r9d, 0x10
mov edx, esi
mov dword [rsp + 0x20], eax
call fcn.1400e0640
mov rcx, rbp
call qword [sym.imp.MSVCR100.dll_free]
mov rax, qword [0x14013b0f8]
xor ebp, ebp
xor edx, edx
mov rcx, rbx
mov dword [rax + 0x40], ebp
call fcn.14005e3f0
mov rbx, qword [0x14013f500]
movzx edx, byte [rbx + 0x23]
test dl, dl
jne 0x1400a681f
mov rcx, qword [rbx + 0x10]
lea rdx, [rsp + 0x40]
xor r9d, r9d
or r8, 0xffffffffffffffff
mov byte [rsp + 0x20], 1
call fcn.1400e6e20
mov ebp, eax
jmp 0x1400a6a88
lea rax, [rsp + 0x40]
mov qword [rsp + 0x140], r12
cmp qword [rbx + 8], rax
jne 0x1400a683b
mov r12, qword [rbx + 0x10]
shr r12, 1
jmp 0x1400a6850
or rcx, 0xffffffffffffffff
lea rdi, [rsp + 0x40]
xor eax, eax
repne scasw ax, word [rdi]
not rcx
lea r12, [rcx - 1]
lea rax, [r12 + 1]
lea rdi, [rax + rax]
cmp dl, 2
jne 0x1400a6872
lea rcx, [rsp + 0x40]
mov rdx, r12
call fcn.140006bc0
mov ebp, eax
jmp 0x1400a6a80
mov rcx, qword [0x14013b0d0]
cmp rdi, rcx
jbe 0x1400a68a5
cmp rdi, qword [rbx + 0x18]
jbe 0x1400a68a5
lea r8, [0x1401035ac]
lea rdx, [0x140124720]
lea rcx, [0x140143150]
call fcn.14005f7b0
mov ebp, eax
jmp 0x1400a6a80
cmp rax, 2
jae 0x1400a68bf
xor r8d, r8d
mov rcx, rbx
lea edx, [r8 + 3]
call fcn.1400e74d0
jmp 0x1400a6a7b
movzx eax, byte [rbx + 0x21]
test al, 2
je 0x1400a68dc
mov rcx, qword [rbx]
and al, 0x3d
mov byte [rbx + 0x21], al
mov rax, qword [rcx]
call qword [rax + reloc.WSOCK32.dll_recv]
mov rcx, qword [0x14013b0d0]
mov r8, qword [rbx + 0x18]
and byte [rbx + 0x21], 0x82
cmp rdi, r8
jbe 0x1400a6a4e
movzx r9d, byte [rbx + 0x20]
movzx eax, r9b
cmp r9b, 1
jbe 0x1400a6915
cmp al, 2
je 0x1400a694d
mov rsi, qword [rsp + 0x178]
mov rax, qword [rsp + 0x178]
jmp 0x1400a6a42
cmp rdi, rsi
ja 0x1400a694d
cmp rdi, 8
ja 0x1400a6927
mov esi, 8
jmp 0x1400a6933
mov eax, reloc.WSOCK32.dll_recv
cmp rdi, rax
cmovbe rsi, rax
mov rcx, rsi
call fcn.1400dd290
test rax, rax
je 0x1400a6a80
mov byte [rbx + 0x20], 1
jmp 0x1400a6a42
cmp rdi, 0x20
jae 0x1400a695d
mov esi, SafeArrayAllocDescriptor
jmp 0x1400a6a07
mov esi, 0x208
cmp rdi, rsi
jb 0x1400a6a07
cmp rdi, 0x50000
jae 0x1400a69c3
pxor xmm0, xmm0
cvtsi2sd xmm0, rdi
test rdi, rdi
jns 0x1400a698a
addsd xmm0, qword [0x1401279a8]
mulsd xmm0, qword [0x1401279e0]
movsd xmm1, qword [0x1401279d8]
xor eax, eax
comisd xmm0, xmm1
jbe 0x1400a69b9
subsd xmm0, xmm1
comisd xmm0, xmm1
jae 0x1400a69b9
movabs rdx, 0x8000000000000000
mov rax, rdx
cvttsd2si rsi, xmm0
add rsi, rax
jmp 0x1400a6a07
cmp rdi, 0x320000
jae 0x1400a69d5
lea rsi, [rdi + 0x8000]
jmp 0x1400a6a07
cmp rdi, 0xc80000
jae 0x1400a6a00
movabs rax, 0x47ae147ae147ae15
mov rsi, rdi
mul rdi
sub rsi, rdx
shr rsi, 1
add rsi, rdx
shr rsi, 6
add rsi, rdi
jmp 0x1400a6a07
lea rsi, [rdi + 0x20000]
cmp rsi, rcx
cmova rsi, rcx
cmp r9b, 2
jne 0x1400a6a28
test r8, r8
je 0x1400a6a28
mov rcx, qword [rbx + 8]
mov dil, 1
call qword [sym.imp.MSVCR100.dll_free]
jmp 0x1400a6a2b
xor dil, dil
test rsi, rsi
js 0x1400a6aa4
mov rcx, rsi
call qword [sym.imp.MSVCR100.dll_malloc]
test rax, rax
je 0x1400a6aa4
mov byte [rbx + 0x20], 2
and byte [rbx + 0x21], 0x7f
mov qword [rbx + 8], rax
mov qword [rbx + 0x18], rsi
mov rcx, qword [rbx + 8]
lea rax, [rsp + 0x40]
cmp rcx, rax
je 0x1400a6a6b
lea r8, [r12 + r12]
lea rdx, [rsp + 0x40]
call qword [sym.imp.MSVCR100.dll_memmove]
mov rax, qword [rbx + 8]
lea rcx, [r12 + r12]
mov word [rcx + rax], bp
mov qword [rbx + 0x10], rcx
mov ebp, 1
mov r12, qword [rsp + 0x140]
mov eax, ebp
mov rbp, qword [rsp + 0x150]
mov rsi, qword [rsp + 0x148]
add rsp, 0x158
pop rdi
pop rbx
ret
test dil, dil
je 0x1400a6aba
lea rax, [0x140141fa8]
mov qword [rbx + 0x18], rbp
mov qword [rbx + 8], rax
jmp 0x1400a6ac1
mov rax, qword [rbx + 8]
mov word [rax], bp
lea r8, [0x1401035ac]
lea rdx, str.Out_of_memory.
lea rcx, [0x140143150]
mov qword [rbx + 0x10], rbp
call fcn.14005f7b0
mov ebp, eax
jmp 0x1400a6a80
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov rcx, qword [0x14013b0f8]
mov dword [rcx + 0x40], eax
mov rcx, rbp
call qword [sym.imp.MSVCR100.dll_free]
mov dl, 1
mov rcx, rbx
call fcn.14005e3f0
jmp 0x1400a6a8a
mov rax, qword [0x14013b0f8]
mov dl, 1
mov rcx, rbx
mov dword [rax + 0x40], 0x57
call fcn.14005e3f0
add rsp, 0x158
pop rdi
pop rbx
ret