Function at 0x1400156b0
Capabilities:
Read file on windows

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x70]
sub rsp, 0x170
mov qword [rsp + 0x58], 0xfffffffffffffffe
mov qword [rsp + 0x1c0], rbx
mov rax, qword [0x1402c8768]
xor rax, rsp
mov qword [rbp + 0x60], rax
mov rsi, rdx
mov r13, rcx
call fcn.14002ef9c
mov rcx, rax
test rax, rax
jne 0x140015705
mov ecx, 0x80004005
call fcn.1400093e0
int3
mov rax, qword [rax]
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x20], rbx
lea rcx, [rsp + 0x28]
call fcn.140035a44
nop
mov byte [rsp + 0x60], 0
mov rcx, qword [r13 + 0x252]
lea rdx, [rsp + 0x60]
sub rdx, rcx
nop dword [rax]
nop word [rax + rax]
movzx eax, byte [rcx]
mov byte [rdx + rcx], al
lea rcx, [rcx + 1]
test al, al
jne 0x140015740
xor r9d, r9d
lea r8d, [r9 + 0x40]
lea rdx, [rsp + 0x60]
lea rcx, [rsp + 0x28]
call fcn.14003635c
lea rcx, [rsp + 0x28]
call fcn.14003620c
mov rdi, rax
mov ecx, eax
call fcn.1401e5908
mov r14, rax
mov qword [rsp + 0x50], 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, r14
lea rcx, [rsp + 0x28]
call fcn.1400365a4
lea rcx, [rsp + 0x28]
call fcn.140035ee0
movzx ecx, byte [r14 + 0xa]
shr cl, 4
test cl, cl
je 0x1400157c2
cmp cl, 0xf
jne 0x140015882
lea rdx, [0x140280c58]
mov rcx, qword [rsi + 0x280]
call fcn.1401e5810
test eax, eax
je 0x140015882
lea rdx, [0x140280424]
mov rcx, qword [rsi + 0x280]
call fcn.1401e5810
test eax, eax
je 0x140015882
lea rdx, [0x140280c5c]
mov rcx, qword [rsi + 0x280]
call fcn.1401e5810
test eax, eax
je 0x140015882
lea rdx, str.FW_not_match__
or rdi, 0xffffffffffffffff
mov rax, rdi
nop dword [rax]
inc rax
cmp byte [rdx + rax], 0
jne 0x140015820
mov r8d, eax
lea rcx, [rsp + 0x20]
call fcn.140008cd0
xor r8d, r8d
xor edx, edx
mov rbx, qword [rsp + 0x20]
mov rcx, rbx
call fcn.140032c64
mov r8d, 0xf0c
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.140035b78
nop
jmp 0x140015b2d
movzx eax, byte [r14 + 0xa]
shr al, 4
cmp al, 1
jne 0x1400158ea
lea rdx, [0x140280428]
mov rcx, qword [rsi + 0x280]
call fcn.1401e5810
test eax, eax
je 0x1400159b3
lea rdx, str.FW_not_match__
or rdi, 0xffffffffffffffff
mov rax, rdi
inc rax
cmp byte [rdx + rax], 0
jne 0x1400158b7
mov r8d, eax
lea rcx, [rsp + 0x20]
call fcn.140008cd0
xor r8d, r8d
xor edx, edx
mov rbx, qword [rsp + 0x20]
mov rcx, rbx
call fcn.140032c64
mov r8d, 0xf19
jmp 0x14001584e
cmp al, 2
jne 0x1400159b3
lea rdx, [0x14028042c]
mov rcx, qword [rsi + 0x280]
call fcn.1401e5810
test eax, eax
je 0x1400159b3
lea rdx, [0x140280430]
mov rcx, qword [rsi + 0x280]
call fcn.1401e5810
test eax, eax
je 0x1400159b3
lea rdx, [0x140280434]
mov rcx, qword [rsi + 0x280]
call fcn.1401e5810
test eax, eax
je 0x1400159b3
lea rdx, [0x140280438]
mov rcx, qword [rsi + 0x280]
call fcn.1401e5810
test eax, eax
je 0x1400159b3
lea rdx, [0x14028043c]
mov rcx, qword [rsi + 0x280]
call fcn.1401e5810
test eax, eax
je 0x1400159b3
lea rdx, str.FW_not_match__
or rdi, 0xffffffffffffffff
mov rax, rdi
nop dword [rax + rax]
inc rax
cmp byte [rdx + rax], 0
jne 0x140015980
mov r8d, eax
lea rcx, [rsp + 0x20]
call fcn.140008cd0
xor r8d, r8d
xor edx, edx
mov rbx, qword [rsp + 0x20]
mov rcx, rbx
call fcn.140032c64
mov r8d, 0xf2a
jmp 0x14001584e
lea rdx, [0x140280cb4]
lea rcx, [rsp + 0x60]
call fcn.1401e6248
mov rdi, rax
test rax, rax
jne 0x1400159f8
mov dword [rsi + 0x26c], reloc.OLEAUT32.dll_SafeArrayGetDim
lea r9d, [rax + 0x10]
mov r8d, 0xf34
lea rdx, str.CsupdDlg::vUpdate
lea rcx, str._r_n_s:_d:_vUpdate:_Error___bSts___d
call fcn.1400095e0
jmp 0x140015b1e
xor edx, edx
lea r8d, [rdx + 2]
mov rcx, rdi
call fcn.1401e64d0
mov rcx, rdi
call fcn.1401e6a10
mov r12d, eax
mov ecx, eax
call fcn.1401e5908
mov r15, rax
mov rcx, rdi
test rax, rax
jne 0x140015a37
call fcn.1401e6a9c
mov dword [rsi + 0x26c], 0x11
jmp 0x140015b1e
xor r8d, r8d
xor edx, edx
call fcn.1401e64d0
mov r9, rdi
mov r8, r12
mov edx, 1
mov rcx, r15
call fcn.1401e6d88
mov rcx, rdi
call fcn.1401e6a9c
mov r8d, r12d
mov rdx, r15
call fcn.140016a70
test al, al
jne 0x140015a86
mov dword [rsi + 0x26c], 0x26
mov r9d, 0x26
mov r8d, 0xf4d
jmp 0x1400159e0
movzx eax, byte [r13 + 0x1051]
lea rcx, [rax + rax*2]
lea rax, [0x1402821b8]
movzx ecx, byte [rax + rcx*4]
movzx r8d, byte [rsi]
xor edi, edi
mov edx, edi
mov r9d, dword [0x1402dafc4]
test r9d, r9d
je 0x140015ace
lea rax, [0x1402dafdb]
cmp byte [rax - 1], r8b
ja 0x140015ac3
cmp byte [rax], r8b
jae 0x140015ace
inc edx
add rax, 0x10
cmp edx, r9d
jb 0x140015ab8
mov r8, r15
mov edx, r12d
call qword [0x1402c9529]
cmp eax, 1
setne dil
add edi, 3
mov dword [r13 + 0x129e], edi
mov r9d, dword [rsi + 0x26c]
mov r8d, 0xf91
lea rdx, str.CsupdDlg::vUpdate
lea rcx, str._r_n_s:_d:_vUpdate:_fwUpdate_return_bSts___d
call fcn.1400095e0
mov rcx, r15
call fcn.1401e5a34
mov rcx, qword [rsp + 0x50]
call fcn.1401e5a34
nop
lea rcx, [rsp + 0x28]
call fcn.140035b78
nop
or rdi, 0xffffffffffffffff
lea rdx, [rbx - 0x18]
lock xadd dword [rdx + 0x10], edi
sub edi, 1
jg 0x140015b44
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rcx, qword [rbp + 0x60]
xor rcx, rsp
call fcn.1401d66f0
mov rbx, qword [rsp + 0x1c0]
add rsp, 0x170
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret