Function at 0x140016a00
Capabilities:
Read file on windows

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x80]
sub rsp, 0x180
mov qword [rsp + 0x58], 0xfffffffffffffffe
mov qword [rsp + 0x1d0], rbx
mov rax, qword [0x1402aa768]
xor rax, rsp
mov qword [rbp + 0x70], rax
mov rsi, rdx
mov r14, rcx
mov qword [rsp + 0x50], rcx
call fcn.140028df4
mov rcx, rax
test rax, rax
jne 0x140016a5a
mov ecx, 0x80004005
call fcn.140009a10
int3
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x20], rax
call fcn.140028df4
mov rcx, rax
test rax, rax
jne 0x140016a81
mov ecx, 0x80004005
call fcn.140009a10
int3
mov rax, qword [rax]
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x60], rbx
lea rcx, [rsp + 0x28]
call fcn.14002f808
nop
mov byte [rsp + 0x70], 0
mov rcx, qword [r14 + 0x252]
lea rdx, [rsp + 0x70]
sub rdx, rcx
nop
movzx eax, byte [rcx]
mov byte [rcx + rdx], al
lea rcx, [rcx + 1]
test al, al
jne 0x140016ab0
xor r9d, r9d
lea r8d, [r9 + 0x40]
lea rdx, [rsp + 0x70]
lea rcx, [rsp + 0x28]
call fcn.1400300c4
lea rcx, [rsp + 0x28]
call fcn.14002ffd0
mov rdi, rax
mov ecx, eax
call fcn.1401dbfb0
mov r13, rax
mov qword [rsp + 0x68], rax
xor r8d, r8d
xor edx, edx
lea rcx, [rsp + 0x28]
mov r9, qword [rsp + 0x28]
call qword [r9 + 0x58]
mov r8d, edi
mov rdx, r13
lea rcx, [rsp + 0x28]
call fcn.14003030c
lea rcx, [rsp + 0x28]
call fcn.14002fca4
movzx ecx, byte [r13 + 0xa]
shr cl, 4
test cl, cl
je 0x140016b32
cmp cl, 0xf
jne 0x140016bef
lea rdx, [0x140266958]
mov rcx, qword [rsi + 0x280]
call fcn.1401dbeb8
test eax, eax
je 0x140016bef
lea rdx, [0x1402660b4]
mov rcx, qword [rsi + 0x280]
call fcn.1401dbeb8
test eax, eax
je 0x140016bef
lea rdx, [0x14026695c]
mov rcx, qword [rsi + 0x280]
call fcn.1401dbeb8
test eax, eax
je 0x140016bef
lea rdx, str.FW_not_match__
or rdi, 0xffffffffffffffff
mov rax, rdi
nop dword [rax]
inc rax
cmp byte [rdx + rax], 0
jne 0x140016b90
mov r8d, eax
lea rcx, [rsp + 0x20]
call fcn.140009300
xor r8d, r8d
xor edx, edx
mov rcx, qword [rsp + 0x20]
call fcn.14002cac8
mov r8d, 0xf35
mov dword [rsi + 0x26c], 4
mov r9d, 4
lea rdx, str.CsupdDlg::vUpdate
lea rcx, str._r_n_s:_d:_vUpdate:_FW_not_match___bSts___d
call fcn.140009c10
nop
lea rcx, [rsp + 0x28]
call fcn.14002f93c
nop
jmp 0x140016fa3
movzx eax, byte [r13 + 0xa]
shr al, 4
cmp al, 1
jne 0x140016c54
lea rdx, [0x1402660b8]
mov rcx, qword [rsi + 0x280]
call fcn.1401dbeb8
test eax, eax
je 0x140016d50
lea rdx, str.FW_not_match__
or rdi, 0xffffffffffffffff
mov rax, rdi
inc rax
cmp byte [rdx + rax], 0
jne 0x140016c24
mov r8d, eax
lea rcx, [rsp + 0x20]
call fcn.140009300
xor r8d, r8d
xor edx, edx
mov rcx, qword [rsp + 0x20]
call fcn.14002cac8
mov r8d, 0xf42
jmp 0x140016bbb
cmp al, 2
jne 0x140016d50
lea rdx, [0x1402660bc]
mov rcx, qword [rsi + 0x280]
call fcn.1401dbeb8
test eax, eax
je 0x140016d50
lea rdx, [0x1402660c0]
mov rcx, qword [rsi + 0x280]
call fcn.1401dbeb8
test eax, eax
je 0x140016d50
lea rdx, [0x1402660c4]
mov rcx, qword [rsi + 0x280]
call fcn.1401dbeb8
test eax, eax
je 0x140016d50
lea rdx, [0x1402660c8]
mov rcx, qword [rsi + 0x280]
call fcn.1401dbeb8
test eax, eax
je 0x140016d50
lea rdx, [0x1402660cc]
mov rcx, qword [rsi + 0x280]
call fcn.1401dbeb8
test eax, eax
je 0x140016d50
lea rdx, [0x1402660d0]
mov rcx, qword [rsi + 0x280]
call fcn.1401dbeb8
test eax, eax
je 0x140016d50
lea rdx, [0x1402660d4]
mov rcx, qword [rsi + 0x280]
call fcn.1401dbeb8
test eax, eax
je 0x140016d50
lea rdx, str.FW_not_match__
or rdi, 0xffffffffffffffff
mov rax, rdi
nop dword [rax + rax]
inc rax
cmp byte [rdx + rax], 0
jne 0x140016d20
mov r8d, eax
lea rcx, [rsp + 0x20]
call fcn.140009300
xor r8d, r8d
xor edx, edx
mov rcx, qword [rsp + 0x20]
call fcn.14002cac8
mov r8d, 0xf55
jmp 0x140016bbb
movzx r9d, byte [r13 + 7]
shl r9d, 8
movzx eax, byte [r13 + 8]
add r9d, eax
shl r9d, 8
movzx eax, byte [r13 + 9]
add r9d, eax
movzx edx, byte [r13 + 0xa]
shl edx, 8
movzx eax, byte [r13 + 0xb]
add edx, eax
shl edx, 8
movzx eax, byte [r13 + 0xc]
add edx, eax
movzx r10d, byte [rsi + 0x3a]
shl r10d, 8
movzx eax, byte [rsi + 0x3b]
add r10d, eax
shl r10d, 8
movzx eax, byte [rsi + 0x3c]
add r10d, eax
movzx r8d, byte [rsi + 0x3d]
shl r8d, 8
movzx eax, byte [rsi + 0x3e]
add r8d, eax
shl r8d, 8
movzx eax, byte [rsi + 0x3f]
add r8d, eax
cmp byte [r14 + 0x26e8], 0
je 0x140016e25
cmp r9d, r10d
jb 0x140016e09
ja 0x140016e25
cmp edx, r8d
ja 0x140016e25
jne 0x140016dea
xor r8d, r8d
xor edx, edx
lea rcx, str.FW_running_version_is_the_last_version.
call fcn.14002cac8
jmp 0x140016f94
jae 0x140016e25
xor r8d, r8d
lea edx, [r8 + 4]
lea rcx, str.FW_running_version_is_newer._n_n_continue_to_update_
call fcn.14002cac8
cmp eax, 6
je 0x140016e25
jmp 0x140016f94
xor r8d, r8d
lea edx, [r8 + 4]
lea rcx, str.FW_running_version_is_newer._n_n_continue_to_update_
call fcn.14002cac8
cmp eax, 6
jne 0x140016f94
lea rdx, [0x140266a14]
lea rcx, [rsp + 0x70]
call fcn.1401dc8f0
mov rdi, rax
test rax, rax
jne 0x140016e6a
mov dword [rsi + 0x26c], reloc.OLEAUT32.dll_SafeArrayGetDim
lea r9d, [rax + 0x10]
mov r8d, 0xf94
lea rdx, str.CsupdDlg::vUpdate
lea rcx, str._r_n_s:_d:_vUpdate:_Error___bSts___d
call fcn.140009c10
jmp 0x140016f94
xor edx, edx
lea r8d, [rdx + 2]
mov rcx, rdi
call fcn.1401dcb70
mov rcx, rdi
call fcn.1401dd054
mov r12d, eax
mov ecx, eax
call fcn.1401dbfb0
mov r14, rax
mov rcx, rdi
test rax, rax
jne 0x140016ea9
call fcn.1401dd0e0
mov dword [rsi + 0x26c], 0x11
jmp 0x140016f94
xor r8d, r8d
xor edx, edx
call fcn.1401dcb70
mov r9, rdi
mov r8, r12
mov edx, 1
mov rcx, r14
call fcn.1401dd3cc
mov rcx, rdi
call fcn.1401dd0e0
mov r8d, r12d
mov rdx, r14
call fcn.140017f40
test al, al
jne 0x140016ef8
mov dword [rsi + 0x26c], 0x26
mov r9d, 0x26
mov r8d, 0xfad
jmp 0x140016e52
mov r15, qword [rsp + 0x50]
movzx eax, byte [r15 + 0x1051]
lea rcx, [rax + rax*2]
lea rax, [0x140267f28]
movzx ecx, byte [rax + rcx*4]
movzx r8d, byte [rsi]
xor edi, edi
mov edx, edi
mov r9d, dword [0x1402bc324]
test r9d, r9d
je 0x140016f46
lea rax, [0x1402bc33b]
nop
cmp byte [rax - 1], r8b
ja 0x140016f3b
cmp byte [rax], r8b
jae 0x140016f46
inc edx
add rax, 0x10
cmp edx, r9d
jb 0x140016f30
mov r8, r14
mov edx, r12d
call qword [0x1402ab489]
cmp eax, 1
setne dil
add edi, 3
mov dword [r15 + 0x129e], edi
mov r9d, dword [rsi + 0x26c]
mov r8d, 0xff1
lea rdx, str.CsupdDlg::vUpdate
lea rcx, str._r_n_s:_d:_vUpdate:_fwUpdate_return_bSts___d
call fcn.140009c10
mov rcx, r14
call fcn.1401dc0dc
mov rcx, r13
call fcn.1401dc0dc
nop
lea rcx, [rsp + 0x28]
call fcn.14002f93c
nop
or rdi, 0xffffffffffffffff
lea rdx, [rbx - 0x18]
mov eax, edi
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x140016fbd
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x20]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], edi
sub edi, 1
jg 0x140016fd9
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rcx, qword [rbp + 0x70]
xor rcx, rsp
call fcn.1401d0680
mov rbx, qword [rsp + 0x1d0]
add rsp, 0x180
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret