Function at 0x1400b7d90
Capabilities:
Check for time delay via queryperformancecounter
Read file on windows

Disassembly:
mov rax, rsp
mov qword [rax + 0x20], r9
mov qword [rax + 0x18], r8
mov qword [rax + 0x10], rdx
mov qword [rax + 8], rcx
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x1b8]
sub rsp, 0x278
mov qword [rbp + 0x88], 0xfffffffffffffffe
movaps xmmword [rax - 0x58], xmm6
movaps xmmword [rax - 0x68], xmm7
movaps xmmword [rax - 0x78], xmm8
movaps xmmword [rax - 0x88], xmm9
movaps xmmword [rax - 0x98], xmm10
movaps xmmword [rax - 0xa8], xmm11
movaps xmmword [rax - 0xb8], xmm12
movaps xmmword [rax - 0xc8], xmm13
movaps xmmword [rax - 0xd8], xmm14
mov sil, 1
mov ecx, 0x4000
call fcn.140057728
mov qword [rbp - 0x68], rax
mov qword [rsp + 0x40], 0
xorps xmm10, xmm10
movaps xmm12, xmm10
mov eax, dword [0x140178818]
test sil, al
jne 0x1400b7e4d
or eax, 1
mov dword [0x140178818], eax
call fcn.140056e10
lea rcx, [0x140109670]
call fcn.14005f2e8
nop
mov r12, qword [rbp + 0x1c0]
mov r15, qword [r12]
mov qword [rbp - 0x78], r15
mov rax, qword [r12 + 8]
mov qword [rbp - 0x70], rax
test rax, rax
je 0x1400b7e76
lock inc dword [rax + 8]
mov rax, qword [rbp - 0x70]
mov r15, qword [rbp - 0x78]
lea rcx, [rbp - 0x78]
mov qword [rsp + 0x58], rcx
mov qword [rsp + 0x68], r15
mov qword [rsp + 0x70], rax
test rax, rax
je 0x1400b7e9c
lock inc dword [rax + 8]
mov rax, qword [rsp + 0x70]
mov r15, qword [rsp + 0x68]
mov qword [rbp + 0x60], r15
mov qword [rbp + 0x68], rax
mov rcx, qword [r15 + 0x450]
call fcn.1400de9e0
mov qword [rbp + 0x70], rax
or edi, 0xffffffff
mov rbx, qword [rbp - 0x70]
test rbx, rbx
je 0x1400b7edf
lock dec dword [rbx + 8]
jne 0x1400b7edf
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 8]
lock dec dword [rbx + 0xc]
jne 0x1400b7edf
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x10]
nop
cmp qword [rbp + 0x70], 0xffffffffffffffff
jne 0x1400b7f55
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
lea rdx, [rbp + 0x58]
mov rcx, qword [r12]
call fcn.140001bd0
nop
lea rcx, [0x14011d298]
mov qword [rbp + 0x30], rcx
mov dword [rbp + 0x38], 0x19a
mov dword [rbp + 0x3c], 1
mov r9, qword [rax]
mov r8d, ebx
lea rdx, str.GetVolumeHandle___failed_with_error_code:_0x_08x__volume:__s_
lea rcx, [rbp + 0x30]
call fcn.14000b580
nop
mov rdx, qword [rbp + 0x58]
add rdx, 0xffffffffffffffe8
mov eax, edi
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400b7f4a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
mov ecx, ebx
call qword [sym.imp.KERNEL32.dll_SetLastError]
xor sil, sil
lea rdx, [rbp + 0xa0]
mov rcx, qword [r12]
call fcn.140001c10
mov rbx, qword [rbp + 0xc0]
mov eax, 0x500000
cmp rbx, rax
cmovae rbx, rax
mov rdx, qword [rbp + 0xd0]
add rdx, 0xffffffffffffffe8
mov eax, edi
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400b7f99
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
mov rdx, qword [rbp + 0xb8]
add rdx, 0xffffffffffffffe8
mov eax, edi
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400b7fba
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
mov rdx, qword [rbp + 0xa0]
add rdx, 0xffffffffffffffe8
mov eax, edi
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400b7fdb
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
mov r12, rbx
shr r12, 0xe
mov qword [rsp + 0x58], r12
mov dword [rsp + 0x30], 0x4000
test r12d, r12d
jne 0x1400b8005
mov dword [rsp + 0x30], ebx
mov r12d, 1
mov qword [rsp + 0x58], r12
jmp 0x1400b8009
mov ebx, dword [rsp + 0x30]
xor ecx, ecx
call fcn.140062bf8
mov rcx, rax
call fcn.140062bb4
lea rcx, [rsp + 0x78]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
movsd xmm9, qword [rbp + 0x1e8]
movsd xmm8, qword [rbp + 0x1e0]
subsd xmm9, xmm8
divsd xmm9, qword [0x1401352f8]
xorpd xmm13, xmm13
movapd xmm7, xmm13
xor r13d, r13d
lea rax, str.COperationTimeCalculator::Start
mov r14, qword [rbp + 0x1d8]
movsd xmm14, qword [0x14012fbf8]
movsd xmm11, qword [0x14012fd48]
test sil, sil
je 0x1400b85fd
mov rcx, qword [0x1401786e8]
test rcx, rcx
jne 0x1400b80a9
mov qword [rbp + 0x40], rax
mov dword [rbp + 0x48], 0x18a
mov dword [rbp + 0x4c], 2
lea rdx, [0x140115cc0]
lea rcx, [rbp + 0x40]
call fcn.14000b5d0
jmp 0x1400b80af
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
movsd xmm1, qword [0x140178728]
addsd xmm1, xmm14
lea rcx, [0x140178690]
call fcn.1400a99a0
xor edx, edx
mov eax, r13d
div r12d
imul edx, ebx
xor r9d, r9d
xor r8d, r8d
mov rcx, qword [rbp + 0x70]
call qword [sym.imp.KERNEL32.dll_SetFilePointer]
cmp eax, 0xffffffff
jne 0x1400b815a
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
lea rdx, [rbp + 0x50]
mov rax, qword [rbp + 0x1c0]
mov rcx, qword [rax]
call fcn.140001bd0
nop
lea rcx, [0x14011d308]
mov qword [rbp + 8], rcx
mov dword [rbp + 0x10], 0x1be
mov dword [rbp + 0x14], 1
mov r9, qword [rax]
mov r8d, ebx
lea rdx, str.SetFilePointer_failed_with_error_code:_0x_08x__volume:__s_
lea rcx, [rbp + 8]
call fcn.14000b580
nop
mov rdx, qword [rbp + 0x50]
add rdx, 0xffffffffffffffe8
mov eax, edi
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400b8152
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
mov ecx, ebx
call qword [sym.imp.KERNEL32.dll_SetLastError]
xor ebx, ebx
mov dword [rsp + 0x48], ebx
lea rcx, [rsp + 0x78]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov qword [rsp + 0x20], rbx
lea r9, [rsp + 0x48]
mov r8d, 0x4000
mov rdx, qword [rbp - 0x68]
mov rcx, qword [rbp + 0x70]
call qword [sym.imp.KERNEL32.dll_ReadFile]
mov r12d, eax
mov eax, dword [0x1401785a4]
test al, 1
jne 0x1400b81bd
or eax, 1
mov dword [0x1401785a4], eax
mov qword [rsp + 0x60], rbx
lea rcx, [rsp + 0x60]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
mov r11, qword [rsp + 0x60]
mov qword [0x1401785a8], r11
jmp 0x1400b81c4
mov r11, qword [0x1401785a8]
test r11, r11
jne 0x1400b81cf
movaps xmm6, xmm10
jmp 0x1400b8235
lea rcx, [rbp]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov r11d, dword [0x1401785a4]
test r11b, 1
jne 0x1400b820f
or r11d, 1
mov dword [0x1401785a4], r11d
mov qword [rsp + 0x50], rbx
lea rcx, [rsp + 0x50]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
mov r11, qword [rsp + 0x50]
mov qword [0x1401785a8], r11
jmp 0x1400b8216
mov r11, qword [0x1401785a8]
mov rax, qword [rbp]
sub rax, qword [rsp + 0x78]
pxor xmm6, xmm6
cvtsi2ss xmm6, rax
pxor xmm0, xmm0
cvtsi2ss xmm0, r11
divss xmm6, xmm0
addsd xmm8, xmm9
test r14, r14
je 0x1400b83b8
movapd xmm0, xmm8
subsd xmm0, xmm7
comisd xmm0, xmm11
jb 0x1400b83b8
mov eax, dword [0x140178818]
test al, 1
jne 0x1400b827c
or eax, 1
mov dword [0x140178818], eax
call fcn.140056e10
lea rcx, [0x140109670]
call fcn.14005f2e8
nop
lea rcx, [0x140178690]
call fcn.1400a92a0
test al, al
je 0x1400b82a7
lea rcx, [0x140178690]
call fcn.1400a97c0
movss dword [0x14017871c], xmm0
mov byte [0x140178718], 1
mov eax, dword [0x140178818]
test al, 1
jne 0x1400b82cc
or eax, 1
mov dword [0x140178818], eax
call fcn.140056e10
lea rcx, [0x140109670]
call fcn.14005f2e8
nop
lea rdx, [rbp + 0x90]
lea rcx, [0x140178690]
call fcn.1400a9b70
mov rbx, rax
mov qword [rbp - 0x80], rax
lea rax, vtable.OperationStatus.0
mov qword [rbp - 0x30], rax
movsd qword [rbp - 0x28], xmm13
xor eax, eax
mov qword [rbp - 0x20], rax
mov dword [rbp - 0x18], eax
lea rdx, str.Unknown
lea rcx, [rbp - 0x10]
call fcn.14001e210
nop
lea rcx, section..data
mov rax, qword [section..data]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rbp - 8], rax
mov dword [rbp - 0x20], 0xa
mov qword [rbp - 0x1c], 2
movsd qword [rbp - 0x28], xmm8
mov rdx, rbx
lea rcx, [rbp - 0x10]
call fcn.14001deb0
nop
mov rdx, qword [rbx]
sub rdx, 0x18
mov eax, edi
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400b836a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
nop
lea rdx, [rbp - 0x30]
mov rcx, r14
call fcn.140022750
nop
mov rdx, qword [rbp - 8]
add rdx, 0xffffffffffffffe8
mov eax, edi
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400b8395
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
mov rdx, qword [rbp - 0x10]
add rdx, 0xffffffffffffffe8
mov eax, edi
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400b83b3
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
movapd xmm7, xmm8
test r12d, r12d
je 0x1400b843c
mov eax, dword [rsp + 0x48]
mov rbx, qword [rsp + 0x40]
add rbx, rax
mov qword [rsp + 0x40], rbx
addss xmm12, xmm6
mov rcx, qword [r14 + 0x28]
xor eax, eax
mov qword [rbp + 0x78], rax
mov qword [rbp + 0x80], rax
mov rax, qword [rcx]
call qword [rax + 0x28]
mov edx, eax
lea r9, [rbp + 0x78]
mov r8b, 1
mov rcx, r14
call fcn.1400c7cc0
test al, al
sete al
test al, al
jne 0x1400b8435
lea rcx, [0x140178690]
call fcn.1400a9610
inc r13d
cmp r13d, 0x3e8
mov r12, qword [rsp + 0x58]
mov ebx, dword [rsp + 0x30]
lea rax, str.COperationTimeCalculator::Start
jl 0x1400b8070
jmp 0x1400b85fd
mov cl, 1
jmp 0x1400b8604
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
lea rdx, [rbp + 0x18]
mov r12, qword [rbp + 0x1c0]
mov rcx, qword [r12]
call fcn.140001bd0
nop
lea rcx, str.CDiskPerformanceMonitor::MeasureDiskReadSpeed
mov qword [rbp + 0x20], rcx
mov dword [rbp + 0x28], 0x1db
mov dword [rbp + 0x2c], 1
mov r9, qword [rax]
mov r8d, ebx
lea rdx, str.ReadFile_failed_with_error_code:_0x_08x__volume:__s_
lea rcx, [rbp + 0x20]
call fcn.14000b580
nop
mov rdx, qword [rbp + 0x18]
add rdx, 0xffffffffffffffe8
mov eax, edi
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400b84a7
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
mov ecx, ebx
call qword [sym.imp.KERNEL32.dll_SetLastError]
lea r11, [rsp + 0x38]
mov qword [rbp - 0x80], r11
lea rcx, section..data
mov rax, qword [section..data]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x38], rax
lea rdx, [0x14011585c]
test rdx, 0xffffffffffff0000
jne 0x1400b8503
movzx ebx, dx
mov ecx, ebx
call fcn.14001df50
test rax, rax
je 0x1400b8511
mov r8d, ebx
mov rdx, rax
lea rcx, [rsp + 0x38]
call fcn.14001e130
jmp 0x1400b8511
xor r8d, r8d
lea rcx, [rsp + 0x38]
call fcn.14001e490
nop
lea rax, [rsp + 0x38]
mov qword [rbp - 0x80], rax
lea rax, vtable.OperationStatus.0
mov qword [rbp - 0x60], rax
movsd qword [rbp - 0x58], xmm13
mov qword [rbp - 0x50], 0
mov dword [rbp - 0x48], 0
lea rdx, str.Unknown
lea rcx, [rbp - 0x40]
call fcn.14001e210
nop
lea rcx, section..data
mov rax, qword [section..data]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rbp - 0x38], rax
mov dword [rbp - 0x50], 0xa
mov qword [rbp - 0x4c], 8
movsd qword [rbp - 0x58], xmm8
lea rdx, [rsp + 0x38]
lea rcx, [rbp - 0x40]
call fcn.14001deb0
nop
mov rdx, qword [rsp + 0x38]
add rdx, 0xffffffffffffffe8
mov eax, edi
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400b85a8
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
nop
lea rdx, [rbp - 0x60]
mov rcx, r14
call fcn.140022750
nop
mov rdx, qword [rbp - 0x38]
add rdx, 0xffffffffffffffe8
mov eax, edi
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400b85d3
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
mov rdx, qword [rbp - 0x40]
add rdx, 0xffffffffffffffe8
mov eax, edi
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400b85f1
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
xor sil, sil
mov rbx, qword [rsp + 0x40]
xor cl, cl
jmp 0x1400b860b
xor cl, cl
mov rbx, qword [rsp + 0x40]
mov r12, qword [rbp + 0x1c0]
mov rax, qword [rbp + 0x1c8]
test rax, rax
je 0x1400b861a
mov qword [rax], rbx
mov rax, qword [rbp + 0x1d0]
test rax, rax
je 0x1400b862b
movss dword [rax], xmm12
mov rax, qword [rbp + 0x1f0]
test rax, rax
je 0x1400b8639
mov byte [rax], cl
mov rcx, qword [rbp - 0x68]
call fcn.14005e57c
nop
mov rbx, qword [r15 + 0x450]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
dec dword [rbx + 0x40]
cmp dword [rbx + 0x40], 0
jg 0x1400b8673
mov rcx, qword [rbx + 0x28]
test rcx, rcx
je 0x1400b8673
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [rbx + 0x28], 0
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
nop
mov rcx, qword [rsp + 0x70]
test rcx, rcx
je 0x1400b86b7
mov eax, edi
lock xadd dword [rcx + 8], eax
dec eax
jne 0x1400b86b7
mov rbx, qword [rsp + 0x70]
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 8]
mov eax, edi
lock xadd dword [rbx + 0xc], eax
dec eax
jne 0x1400b86b7
mov rcx, qword [rsp + 0x70]
mov rax, qword [rcx]
call qword [rax + 0x10]
nop
mov rbx, qword [r12 + 8]
test rbx, rbx
je 0x1400b86e4
mov eax, edi
lock xadd dword [rbx + 8], eax
dec eax
jne 0x1400b86e4
mov rdx, qword [rbx]
mov rcx, rbx
call qword [rdx + 8]
lock dec dword [rbx + 0xc]
jne 0x1400b86e4
mov rdx, qword [rbx]
mov rcx, rbx
call qword [rdx + 0x10]
movzx eax, sil
lea r11, [rsp + 0x278]
movaps xmm6, xmmword [r11 - 0x18]
movaps xmm7, xmmword [r11 - 0x28]
movaps xmm8, xmmword [r11 - 0x38]
movaps xmm9, xmmword [r11 - 0x48]
movaps xmm10, xmmword [r11 - 0x58]
movaps xmm11, xmmword [r11 - 0x68]
movaps xmm12, xmmword [r11 - 0x78]
movaps xmm13, xmmword [r11 - 0x88]
movaps xmm14, xmmword [r11 - 0x98]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret