Function at 0x140015dd0
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 [0x1402c9768]
xor rax, rsp
mov qword [rbp + 0x70], rax
mov rsi, rdx
mov r14, rcx
mov qword [rsp + 0x50], rcx
call fcn.14002fe48
mov rcx, rax
test rax, rax
jne 0x140015e2a
mov ecx, 0x80004005
call fcn.1400093e0
int3
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x20], rax
call fcn.14002fe48
mov rcx, rax
test rax, rax
jne 0x140015e51
mov ecx, 0x80004005
call fcn.1400093e0
int3
mov rax, qword [rax]
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x60], rbx
lea rcx, [rsp + 0x28]
call fcn.1400367c0
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 0x140015e80
xor r9d, r9d
lea r8d, [r9 + 0x40]
lea rdx, [rsp + 0x70]
lea rcx, [rsp + 0x28]
call fcn.1400370d8
lea rcx, [rsp + 0x28]
call fcn.140036f88
mov rdi, rax
mov ecx, eax
call fcn.1401e65f0
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.140037320
lea rcx, [rsp + 0x28]
call fcn.140036c5c
movzx ecx, byte [r13 + 0xa]
shr cl, 4
test cl, cl
je 0x140015f02
cmp cl, 0xf
jne 0x140015fbf
lea rdx, [0x140281d78]
mov rcx, qword [rsi + 0x280]
call fcn.1401e64f8
test eax, eax
je 0x140015fbf
lea rdx, [0x1402814d4]
mov rcx, qword [rsi + 0x280]
call fcn.1401e64f8
test eax, eax
je 0x140015fbf
lea rdx, [0x140281d7c]
mov rcx, qword [rsi + 0x280]
call fcn.1401e64f8
test eax, eax
je 0x140015fbf
lea rdx, str.FW_not_match__
or rdi, 0xffffffffffffffff
mov rax, rdi
nop dword [rax]
inc rax
cmp byte [rdx + rax], 0
jne 0x140015f60
mov r8d, eax
lea rcx, [rsp + 0x20]
call fcn.140008cd0
xor r8d, r8d
xor edx, edx
mov rcx, qword [rsp + 0x20]
call fcn.140033ae0
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.1400095e0
nop
lea rcx, [rsp + 0x28]
call fcn.1400368f4
nop
jmp 0x140016373
movzx eax, byte [r13 + 0xa]
shr al, 4
cmp al, 1
jne 0x140016024
lea rdx, [0x1402814d8]
mov rcx, qword [rsi + 0x280]
call fcn.1401e64f8
test eax, eax
je 0x140016120
lea rdx, str.FW_not_match__
or rdi, 0xffffffffffffffff
mov rax, rdi
inc rax
cmp byte [rdx + rax], 0
jne 0x140015ff4
mov r8d, eax
lea rcx, [rsp + 0x20]
call fcn.140008cd0
xor r8d, r8d
xor edx, edx
mov rcx, qword [rsp + 0x20]
call fcn.140033ae0
mov r8d, 0xf42
jmp 0x140015f8b
cmp al, 2
jne 0x140016120
lea rdx, [0x1402814dc]
mov rcx, qword [rsi + 0x280]
call fcn.1401e64f8
test eax, eax
je 0x140016120
lea rdx, [0x1402814e0]
mov rcx, qword [rsi + 0x280]
call fcn.1401e64f8
test eax, eax
je 0x140016120
lea rdx, [0x1402814e4]
mov rcx, qword [rsi + 0x280]
call fcn.1401e64f8
test eax, eax
je 0x140016120
lea rdx, [0x1402814e8]
mov rcx, qword [rsi + 0x280]
call fcn.1401e64f8
test eax, eax
je 0x140016120
lea rdx, [0x1402814ec]
mov rcx, qword [rsi + 0x280]
call fcn.1401e64f8
test eax, eax
je 0x140016120
lea rdx, [0x1402814f0]
mov rcx, qword [rsi + 0x280]
call fcn.1401e64f8
test eax, eax
je 0x140016120
lea rdx, [0x1402814f4]
mov rcx, qword [rsi + 0x280]
call fcn.1401e64f8
test eax, eax
je 0x140016120
lea rdx, str.FW_not_match__
or rdi, 0xffffffffffffffff
mov rax, rdi
nop dword [rax + rax]
inc rax
cmp byte [rdx + rax], 0
jne 0x1400160f0
mov r8d, eax
lea rcx, [rsp + 0x20]
call fcn.140008cd0
xor r8d, r8d
xor edx, edx
mov rcx, qword [rsp + 0x20]
call fcn.140033ae0
mov r8d, 0xf55
jmp 0x140015f8b
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 0x1400161f5
cmp r9d, r10d
jb 0x1400161d9
ja 0x1400161f5
cmp edx, r8d
ja 0x1400161f5
jne 0x1400161ba
xor r8d, r8d
xor edx, edx
lea rcx, str.FW_running_version_is_the_last_version.
call fcn.140033ae0
jmp 0x140016364
jae 0x1400161f5
xor r8d, r8d
lea edx, [r8 + 4]
lea rcx, str.FW_running_version_is_newer._n_n_continue_to_update_
call fcn.140033ae0
cmp eax, 6
je 0x1400161f5
jmp 0x140016364
xor r8d, r8d
lea edx, [r8 + 4]
lea rcx, str.FW_running_version_is_newer._n_n_continue_to_update_
call fcn.140033ae0
cmp eax, 6
jne 0x140016364
lea rdx, [0x140281e34]
lea rcx, [rsp + 0x70]
call fcn.1401e6f30
mov rdi, rax
test rax, rax
jne 0x14001623a
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.1400095e0
jmp 0x140016364
xor edx, edx
lea r8d, [rdx + 2]
mov rcx, rdi
call fcn.1401e71b8
mov rcx, rdi
call fcn.1401e76f8
mov r12d, eax
mov ecx, eax
call fcn.1401e65f0
mov r14, rax
mov rcx, rdi
test rax, rax
jne 0x140016279
call fcn.1401e7784
mov dword [rsi + 0x26c], 0x11
jmp 0x140016364
xor r8d, r8d
xor edx, edx
call fcn.1401e71b8
mov r9, rdi
mov r8, r12
mov edx, 1
mov rcx, r14
call fcn.1401e7a70
mov rcx, rdi
call fcn.1401e7784
mov r8d, r12d
mov rdx, r14
call fcn.140017370
test al, al
jne 0x1400162c8
mov dword [rsi + 0x26c], 0x26
mov r9d, 0x26
mov r8d, 0xfad
jmp 0x140016222
mov r15, qword [rsp + 0x50]
movzx eax, byte [r15 + 0x1051]
lea rcx, [rax + rax*2]
lea rax, [0x140283348]
movzx ecx, byte [rax + rcx*4]
movzx r8d, byte [rsi]
xor edi, edi
mov edx, edi
mov r9d, dword [0x1402dbfc4]
test r9d, r9d
je 0x140016316
lea rax, [0x1402dbfdb]
nop
cmp byte [rax - 1], r8b
ja 0x14001630b
cmp byte [rax], r8b
jae 0x140016316
inc edx
add rax, 0x10
cmp edx, r9d
jb 0x140016300
mov r8, r14
mov edx, r12d
call qword [0x1402ca529]
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.1400095e0
mov rcx, r14
call fcn.1401e671c
mov rcx, r13
call fcn.1401e671c
nop
lea rcx, [rsp + 0x28]
call fcn.1400368f4
nop
or rdi, 0xffffffffffffffff
lea rdx, [rbx - 0x18]
mov eax, edi
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14001638d
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 0x1400163a9
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.1401d7480
mov rbx, qword [rsp + 0x1d0]
add rsp, 0x180
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret