Function at 0x140016d40
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 [0x1402cb768]
xor rax, rsp
mov qword [rbp + 0x70], rax
mov rsi, rdx
mov r14, rcx
mov qword [rsp + 0x50], rcx
call fcn.1400311c4
mov rcx, rax
test rax, rax
jne 0x140016d9a
mov ecx, 0x80004005
call fcn.140009c20
int3
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x20], rax
call fcn.1400311c4
mov rcx, rax
test rax, rax
jne 0x140016dc1
mov ecx, 0x80004005
call fcn.140009c20
int3
mov rax, qword [rax]
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x60], rbx
lea rcx, [rsp + 0x28]
call fcn.140037c70
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 0x140016df0
xor r9d, r9d
lea r8d, [r9 + 0x40]
lea rdx, [rsp + 0x70]
lea rcx, [rsp + 0x28]
call fcn.14003852c
lea rcx, [rsp + 0x28]
call fcn.140038438
mov rdi, rax
mov ecx, eax
call fcn.1401e7930
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.140038774
lea rcx, [rsp + 0x28]
call fcn.14003810c
movzx ecx, byte [r13 + 0xa]
shr cl, 4
test cl, cl
je 0x140016e72
cmp cl, 0xf
jne 0x140016f2f
lea rdx, [0x140283168]
mov rcx, qword [rsi + 0x280]
call fcn.1401e7838
test eax, eax
je 0x140016f2f
lea rdx, [0x1402828c4]
mov rcx, qword [rsi + 0x280]
call fcn.1401e7838
test eax, eax
je 0x140016f2f
lea rdx, [0x14028316c]
mov rcx, qword [rsi + 0x280]
call fcn.1401e7838
test eax, eax
je 0x140016f2f
lea rdx, str.FW_not_match__
or rdi, 0xffffffffffffffff
mov rax, rdi
nop dword [rax]
inc rax
cmp byte [rdx + rax], 0
jne 0x140016ed0
mov r8d, eax
lea rcx, [rsp + 0x20]
call fcn.140009510
xor r8d, r8d
xor edx, edx
mov rcx, qword [rsp + 0x20]
call fcn.140034e9c
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.140009e20
nop
lea rcx, [rsp + 0x28]
call fcn.140037da4
nop
jmp 0x1400172e3
movzx eax, byte [r13 + 0xa]
shr al, 4
cmp al, 1
jne 0x140016f94
lea rdx, [0x1402828c8]
mov rcx, qword [rsi + 0x280]
call fcn.1401e7838
test eax, eax
je 0x140017090
lea rdx, str.FW_not_match__
or rdi, 0xffffffffffffffff
mov rax, rdi
inc rax
cmp byte [rdx + rax], 0
jne 0x140016f64
mov r8d, eax
lea rcx, [rsp + 0x20]
call fcn.140009510
xor r8d, r8d
xor edx, edx
mov rcx, qword [rsp + 0x20]
call fcn.140034e9c
mov r8d, 0xf42
jmp 0x140016efb
cmp al, 2
jne 0x140017090
lea rdx, [0x1402828cc]
mov rcx, qword [rsi + 0x280]
call fcn.1401e7838
test eax, eax
je 0x140017090
lea rdx, [0x1402828d0]
mov rcx, qword [rsi + 0x280]
call fcn.1401e7838
test eax, eax
je 0x140017090
lea rdx, [0x1402828d4]
mov rcx, qword [rsi + 0x280]
call fcn.1401e7838
test eax, eax
je 0x140017090
lea rdx, [0x1402828d8]
mov rcx, qword [rsi + 0x280]
call fcn.1401e7838
test eax, eax
je 0x140017090
lea rdx, [0x1402828dc]
mov rcx, qword [rsi + 0x280]
call fcn.1401e7838
test eax, eax
je 0x140017090
lea rdx, [0x1402828e0]
mov rcx, qword [rsi + 0x280]
call fcn.1401e7838
test eax, eax
je 0x140017090
lea rdx, [0x1402828e4]
mov rcx, qword [rsi + 0x280]
call fcn.1401e7838
test eax, eax
je 0x140017090
lea rdx, str.FW_not_match__
or rdi, 0xffffffffffffffff
mov rax, rdi
nop dword [rax + rax]
inc rax
cmp byte [rdx + rax], 0
jne 0x140017060
mov r8d, eax
lea rcx, [rsp + 0x20]
call fcn.140009510
xor r8d, r8d
xor edx, edx
mov rcx, qword [rsp + 0x20]
call fcn.140034e9c
mov r8d, 0xf55
jmp 0x140016efb
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 0x140017165
cmp r9d, r10d
jb 0x140017149
ja 0x140017165
cmp edx, r8d
ja 0x140017165
jne 0x14001712a
xor r8d, r8d
xor edx, edx
lea rcx, str.FW_running_version_is_the_last_version.
call fcn.140034e9c
jmp 0x1400172d4
jae 0x140017165
xor r8d, r8d
lea edx, [r8 + 4]
lea rcx, str.FW_running_version_is_newer._n_n_continue_to_update_
call fcn.140034e9c
cmp eax, 6
je 0x140017165
jmp 0x1400172d4
xor r8d, r8d
lea edx, [r8 + 4]
lea rcx, str.FW_running_version_is_newer._n_n_continue_to_update_
call fcn.140034e9c
cmp eax, 6
jne 0x1400172d4
lea rdx, [0x140283224]
lea rcx, [rsp + 0x70]
call fcn.1401e8270
mov rdi, rax
test rax, rax
jne 0x1400171aa
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.140009e20
jmp 0x1400172d4
xor edx, edx
lea r8d, [rdx + 2]
mov rcx, rdi
call fcn.1401e84f8
mov rcx, rdi
call fcn.1401e8a38
mov r12d, eax
mov ecx, eax
call fcn.1401e7930
mov r14, rax
mov rcx, rdi
test rax, rax
jne 0x1400171e9
call fcn.1401e8ac4
mov dword [rsi + 0x26c], 0x11
jmp 0x1400172d4
xor r8d, r8d
xor edx, edx
call fcn.1401e84f8
mov r9, rdi
mov r8, r12
mov edx, 1
mov rcx, r14
call fcn.1401e8db0
mov rcx, rdi
call fcn.1401e8ac4
mov r8d, r12d
mov rdx, r14
call fcn.1400182e0
test al, al
jne 0x140017238
mov dword [rsi + 0x26c], 0x26
mov r9d, 0x26
mov r8d, 0xfad
jmp 0x140017192
mov r15, qword [rsp + 0x50]
movzx eax, byte [r15 + 0x1051]
lea rcx, [rax + rax*2]
lea rax, [0x140284738]
movzx ecx, byte [rax + rcx*4]
movzx r8d, byte [rsi]
xor edi, edi
mov edx, edi
mov r9d, dword [0x1402de094]
test r9d, r9d
je 0x140017286
lea rax, [0x1402de0ab]
nop
cmp byte [rax - 1], r8b
ja 0x14001727b
cmp byte [rax], r8b
jae 0x140017286
inc edx
add rax, 0x10
cmp edx, r9d
jb 0x140017270
mov r8, r14
mov edx, r12d
call qword [0x1402cc529]
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.140009e20
mov rcx, r14
call fcn.1401e7a5c
mov rcx, r13
call fcn.1401e7a5c
nop
lea rcx, [rsp + 0x28]
call fcn.140037da4
nop
or rdi, 0xffffffffffffffff
lea rdx, [rbx - 0x18]
mov eax, edi
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x1400172fd
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 0x140017319
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.1401d87c0
mov rbx, qword [rsp + 0x1d0]
add rsp, 0x180
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret