Function at 0x140106af0
Capabilities:
Read file on windows

Disassembly:
mov rax, rsp
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x80]
sub rsp, 0x180
movaps xmmword [rax - 0x38], xmm6
mov rax, qword [0x1405921c0]
xor rax, rsp
mov qword [rbp + 0x60], rax
mov rsi, rcx
xor r15d, r15d
mov dword [rcx + 0xa0], r15d
lea rbx, [rcx + 0x30]
mov rcx, rbx
cmp qword [rbx + 0x18], 0xf
jbe 0x140106b44
mov rcx, qword [rbx]
lea rdx, [0x14029d2a4]
call fcn.1400d9bc4
mov r13, rax
test rax, rax
jne 0x140106c3c
lea rcx, [rsp + 0x50]
call fcn.140006e00
nop
lea rdx, [0x14029d3e0]
lea rcx, [rsp + 0x50]
call fcn.14000a250
mov r8, qword [rbx + 0x10]
cmp qword [rbx + 0x18], 0xf
jbe 0x140106b86
mov rbx, qword [rbx]
mov rdx, rbx
mov rcx, rax
call fcn.14000c830
mov rcx, rax
lea rdx, [0x14029d3dc]
call fcn.14000a250
lea rdx, [rbp + 0x40]
lea rcx, [rsp + 0x58]
call fcn.140008e10
lea r8, [rbp + 0x40]
mov edx, 0xfffffffd
lea rcx, [rsi + 0x50]
call fcn.140103fd0
mov ebx, eax
mov rax, qword [rsp + 0x50]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_ostringstream_char__struct_std::char_traits_char___class_std::allocator_char__.0
mov qword [rsp + rcx + 0x50], rax
mov rax, qword [rsp + 0x50]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0x88]
mov dword [rsp + rcx + 0x4c], edx
lea rcx, [rsp + 0x58]
call fcn.140006ae0
mov rax, qword [rsp + 0x50]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_ostream_char__struct_std::char_traits_char__.0
mov qword [rsp + rcx + 0x50], rax
mov rax, qword [rsp + 0x50]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0x10]
mov dword [rsp + rcx + 0x4c], edx
lea rax, vtable.std::ios_base.0
mov qword [rbp - 0x28], rax
lea rcx, [rbp - 0x28]
call fcn.1400c7f20
nop
mov rax, qword [rsi + 0x28]
test ebx, ebx
jne 0x140107117
jmp 0x140106c40
mov rax, qword [rsi + 0x28]
cmp rax, 0xffffffffffffffff
jne 0x140106c58
lea rcx, [rsi + 0x50]
mov edx, eax
call fcn.140104070
mov ebx, eax
jmp 0x1401070e8
movzx edi, word [rsi + 0xa4]
lea r12d, [rdi - 6]
mov dword [rsp + 0x34], r12d
test r12d, r12d
jg 0x140106cd9
xorps xmm0, xmm0
movups xmmword [rbp + 0x40], xmm0
mov qword [rbp + 0x50], r15
mov qword [rbp + 0x58], r15
mov ecx, 0x30
call fcn.1400c9d40
mov qword [rbp + 0x40], rax
mov qword [rbp + 0x50], 0x28
mov qword [rbp + 0x58], 0x2f
movups xmm0, xmmword [0x14029d3f8]
movups xmmword [rax], xmm0
movups xmm1, xmmword [0x14029d408]
movups xmmword [rax + 0x10], xmm1
movsd xmm0, qword [0x14029d418]
movsd qword [rax + 0x20], xmm0
mov byte [rax + 0x28], 0
lea r8, [rbp + 0x40]
mov edx, 0xfffffffb
lea rcx, [rsi + 0x50]
call fcn.140103fd0
mov ebx, eax
jmp 0x1401070e8
mov rcx, rdi
call fcn.1400ca4ec
mov r14, rax
movzx r8d, word [rsi + 0xa4]
xor edx, edx
mov rcx, rax
call fcn.140279e10
movsxd r8, edi
sub r8, 6
lea rcx, [r14 + 6]
mov r9, r13
mov edx, 1
call fcn.1400de218
mov qword [rsp + 0x38], 0
mov rcx, r13
call fcn.1400d9510
test eax, eax
je 0x140106d36
lea rcx, [rsi + 0x50]
mov edx, 0xfffffff9
call fcn.140104070
jmp 0x140106e62
movzx r15d, byte [r14 + 0x13]
shl r15, 8
movzx eax, byte [r14 + 0x12]
add r15, rax
shl r15, 8
movzx eax, byte [r14 + 0x11]
add r15, rax
shl r15, 8
movzx eax, byte [r14 + 0x10]
add r15, rax
mov qword [rsp + 0x38], r15
xor edx, edx
mov rcx, rsi
call fcn.140107890
mov ebx, eax
cmp eax, 0xfffffff0
jne 0x140106e64
xor ebx, ebx
mov word [rsp + 0x30], 0x403
lea r8d, [rax + 0x12]
lea rdx, [rsp + 0x30]
mov rcx, qword [rsi + 0x28]
call qword [sym.imp.HID.DLL_HidD_SetFeature]
test al, al
jne 0x140106e54
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
xorps xmm0, xmm0
movups xmmword [rbp + 0x40], xmm0
xor eax, eax
mov qword [rbp + 0x50], rax
mov qword [rbp + 0x58], rax
lea ecx, [rax + 0x20]
call fcn.1400c9d40
mov rdx, rax
mov qword [rbp + 0x40], rax
mov qword [rbp + 0x50], 0x1d
mov qword [rbp + 0x58], 0x1f
movups xmm0, xmmword [0x14029d2d0]
movups xmmword [rax], xmm0
movsd xmm0, qword [0x14029d2e0]
movsd qword [rax + 0x10], xmm0
mov ecx, dword [0x14029d2e8]
mov dword [rax + 0x18], ecx
movzx eax, byte [reloc.WS2_32.dll_WSAStartup]
mov byte [rdx + 0x1c], al
mov byte [rdx + 0x1d], 0
mov r9d, ebx
lea r8, [rbp + 0x40]
mov edx, 0xfffffff1
mov rcx, rsi
call fcn.14010df70
mov ebx, eax
mov rdx, qword [rbp + 0x58]
cmp rdx, 0xf
jbe 0x140106e54
inc rdx
mov rcx, qword [rbp + 0x40]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140106e4f
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140107151
call fcn.1400c9d7c
test ebx, ebx
jne 0x140106e64
xor edx, edx
mov rcx, rsi
call fcn.140107890
mov ebx, eax
xor eax, eax
mov word [rsp + 0x30], ax
test ebx, ebx
jne 0x1401070e0
lea rax, [rsp + 0x30]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x38]
mov r8, r14
mov edx, r12d
mov rcx, rsi
call fcn.140106440
mov ebx, eax
test eax, eax
jne 0x1401070e0
lea rax, [rdi - 6]
mov qword [rsp + 0x40], rax
movsd xmm6, qword [0x1405236e8]
mov r12, qword [rsp + 0x38]
test r12, r12
jle 0x140106f9e
mov rax, qword [rsi + 8]
cmp byte [rax + 0x32], 0
je 0x140106f9e
xor edx, edx
mov rcx, rsi
call fcn.140107890
mov ebx, eax
test eax, eax
jne 0x1401070e0
xorps xmm1, xmm1
cvtsi2sd xmm1, r12
xorps xmm0, xmm0
cvtsi2sd xmm0, r15
divsd xmm1, xmm0
mulsd xmm1, xmm6
movaps xmm0, xmm6
subsd xmm0, xmm1
cvttsd2si ebx, xmm0
movzx edi, bl
mov rcx, qword [rsi + 0x90]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, 0x64
cmp bl, al
cmovb eax, edi
mov byte [rsi + 0x10], al
mov rcx, qword [rsi + 0x90]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
movzx r8d, word [rsi + 0xa4]
xor edx, edx
mov rcx, r14
call fcn.140279e10
mov r9, r13
mov r8, qword [rsp + 0x40]
mov edx, 1
lea rcx, [r14 + 6]
call fcn.1400de218
mov rcx, r13
call fcn.1400d9510
test eax, eax
je 0x140106f6c
lea rcx, [rsi + 0x50]
mov edx, 0xfffffff9
call fcn.140104070
jmp 0x140106f8f
lea rax, [rsp + 0x30]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x38]
mov r8, r14
mov edx, dword [rsp + 0x34]
mov rcx, rsi
call fcn.140106440
mov r12, qword [rsp + 0x38]
mov ebx, eax
test eax, eax
je 0x140106eb0
jmp 0x1401070e0
test ebx, ebx
jne 0x1401070e0
mov rax, qword [rsi + 8]
cmp byte [rax + 0x32], bl
je 0x1401070e0
xor edx, edx
mov rcx, rsi
call fcn.140107890
mov ebx, eax
test eax, eax
jne 0x1401070e0
movzx r8d, word [rsi + 0xa4]
xor edx, edx
mov rcx, r14
call fcn.140279e10
mov word [r14], 0x101
movzx eax, word [rsp + 0x30]
mov byte [r14 + 2], al
shr ax, 8
mov byte [r14 + 3], al
mov word [r14 + 4], bx
movzx r8d, word [rsi + 0xa4]
mov rdx, r14
mov rcx, qword [rsi + 0x28]
call qword [sym.imp.HID.DLL_HidD_SetFeature]
test al, al
jne 0x1401070d4
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
xorps xmm0, xmm0
movups xmmword [rbp + 0x40], xmm0
xor eax, eax
mov qword [rbp + 0x50], rax
mov qword [rbp + 0x58], rax
lea ecx, [rax + 0x40]
call fcn.1400c9d40
mov rcx, rax
mov qword [rbp + 0x40], rax
mov qword [rbp + 0x50], 0x35
mov qword [rbp + 0x58], 0x3f
movups xmm0, xmmword [str.Write_to_device_failed_attempting_to_complete_upgrade]
movups xmmword [rax], xmm0
movups xmm1, xmmword [0x14029d438]
movups xmmword [rax + 0x10], xmm1
movups xmm0, xmmword [0x14029d448]
movups xmmword [rax + 0x20], xmm0
mov eax, dword [0x14029d458]
mov dword [rcx + 0x30], eax
movzx eax, byte [0x14029d45c]
mov byte [rcx + 0x34], al
mov byte [rcx + 0x35], 0
mov r9d, ebx
lea r8, [rbp + 0x40]
mov edx, 0xfffffff4
mov rcx, rsi
call fcn.14010df70
mov ebx, eax
mov rdx, qword [rbp + 0x58]
cmp rdx, 0xf
jbe 0x1401070e0
inc rdx
mov rcx, qword [rbp + 0x40]
mov rax, rcx
cmp rdx, 0x1000
jb 0x1401070cd
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14010714b
call fcn.1400c9d7c
jmp 0x1401070e0
mov dl, 1
mov rcx, rsi
call fcn.140107890
mov ebx, eax
mov rcx, r14
call fcn.1400c9d7c
test r13, r13
je 0x1401070f5
mov rcx, r13
call fcn.1400da540
test ebx, ebx
jne 0x140107117
cmp byte [rsi + 0x98], bl
je 0x140107117
mov rax, qword [rsi + 8]
cmp byte [rax + 0x32], bl
je 0x140107117
mov rax, qword [rsi]
mov dl, 1
mov rcx, rsi
call qword [rax + 0x38]
mov ebx, eax
mov eax, ebx
mov rcx, qword [rbp + 0x60]
xor rcx, rsp
call fcn.1400c9d20
lea r11, [rsp + 0x180]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rdi, qword [r11 + 0x48]
movaps xmm6, xmmword [r11 - 0x10]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret
call fcn.1400d4b64
int3
call fcn.1400d4b64
int3