Function at 0x14003eac0
Capabilities:
Read file on windows

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x118
movaps xmmword [rsp + 0x100], xmm6
mov rsi, rdx
mov rdi, rcx
mov rcx, qword [rdx + 8]
cmp qword [rdx], 0
mov qword [rdx], 0
je 0x14003eaf7
call fcn.1400c7794
mov qword [rsp + 0xa0], 1
xorps xmm0, xmm0
movups xmmword [rsp + 0xa8], xmm0
mov qword [rsp + 0x38], 1
movups xmmword [rsp + 0x40], xmm0
mov rcx, qword [rsi + 0x18]
cmp qword [rsi + 0x10], 0
mov rax, qword [rsi + 0x20]
mov qword [rsi + 0x10], 0
mov rbp, qword [rsi + 0x28]
mov qword [rsi + 0x20], 0
je 0x14003eb9e
test rax, rax
je 0x14003efb4
lea rdx, [rsp + 0xa0]
lea r9, [rsp + 0x38]
mov r8, rbp
call dbg.read2
test rax, rax
je 0x14003f012
mov qword [rsp + 0x28], rsi
mov qword [rsp + 0x50], rax
lea rax, str.library_std_srcprocess.rs
mov qword [rsp + 0x20], rax
lea rcx, [0x1400cbfc8]
lea r9, sym.core::ptr::drop_in_place_std::io::error::Error_::h535f249fe8e52b1f
lea r8, [rsp + 0x50]
mov edx, 0x2b
call dbg.unwrap_failed
jmp 0x14003f1e6
test rax, rax
je 0x14003f012
mov qword [rsp + 0xd8], rdi
mov qword [rsp + 0x28], rsi
mov r12d, 1
xor r14d, r14d
lea rax, [0x1400ce0c0]
mov qword [rsp + 0x88], rax
xorps xmm6, xmm6
lea rsi, [0x14003f2c0]
xor ebx, ebx
xor r15d, r15d
mov qword [rsp + 0x30], rbp
jmp 0x14003ec08
mov edx, 0x18
mov r8d, 8
mov rcx, rbp
call sym.__rust_dealloc
mov rbp, qword [rsp + 0x30]
cmp rbx, r14
jne 0x14003ec2f
mov r8d, 0x20
lea rcx, [rsp + 0x38]
mov rdx, r14
call sym.alloc::raw_vec::RawVec_T_A_::reserve::do_reserve_and_handle::ha416c873d8f64b94
mov rbx, qword [rsp + 0x48]
mov r12, qword [rsp + 0x38]
mov r14, qword [rsp + 0x40]
lea rax, [r12 + rbx]
mov rcx, r14
sub rcx, rbx
mov qword [rsp + 0xb8], rax
mov qword [rsp + 0xc0], rcx
mov qword [rsp + 0xc8], 0
mov qword [rsp + 0xd0], r15
mov rcx, rbp
lea rdx, [rsp + 0xb8]
call sym.std::sys::windows::pipe::AnonPipe::read_buf::hee73738371200712
mov rdi, rax
test rax, rax
je 0x14003ed24
mov r13d, edi
and r13d, 3
movsxd rax, dword [rsi + r13*4]
add rax, rsi
jmp rax
movzx eax, byte [rdi + 0x10]
jmp case.0x14003ecc0.0
mov rcx, rdi
shr rcx, 0x20
call dbg.decode_error_kind
jmp case.0x14003ecc0.0
mov rcx, rdi
shr rcx, 0x20
cmp ecx, 0x28
ja case.default.0x14003ecc0
xor eax, eax
lea rdx, [0x14003f2d0]
movsxd rcx, dword [rdx + rcx*4]
add rcx, rdx
jmp rcx
mov al, 1
jmp case.0x14003ecc0.0
movzx eax, byte [rdi + 0xf]
cmp al, 0x23
jne 0x14003f140
lea rax, [r13 - 2]
cmp rax, 2
jb 0x14003ec08
test r13, r13
je 0x14003ec08
mov rbp, rdi
dec rbp
mov r13, qword [rdi - 1]
mov rdi, qword [rdi + 7]
mov rcx, r13
call qword [rdi]
mov rdx, qword [rdi + 8]
test rdx, rdx
je 0x14003ebf0
mov r8, qword [rdi + 0x10]
mov rcx, r13
call sym.__rust_dealloc
jmp 0x14003ebf0
mov rbp, qword [rsp + 0xc8]
test rbp, rbp
je 0x14003f12e
mov rax, qword [rsp + 0xd0]
mov r15, rax
sub r15, rbp
jb 0x14003f170
mov rdx, qword [rsp + 0xc0]
cmp rax, rdx
ja 0x14003f184
cmp rbp, rdx
ja 0x14003f196
add rbp, rbx
mov qword [rsp + 0x48], rbp
mov rax, r14
or rax, rbp
je 0x14003ed80
mov rbx, rbp
mov rbp, qword [rsp + 0x30]
jmp 0x14003ec08
movaps xmmword [rsp + 0xf0], xmm6
movaps xmmword [rsp + 0xe0], xmm6
mov rbx, qword [rsp + 0x30]
lea r14, [rsp + 0x90]
lea r12, [dbg.callback]
lea r13, [rsp + 0xe0]
lea rbp, [rsp + 0x50]
jmp 0x14003edd6
call sub.KERNEL32.dll_GetLastError
mov edi, eax
mov ecx, edi
call dbg.decode_error_kind
cmp al, 0x23
jne 0x14003eff1
mov dword [rsp + 0x90], 0
movaps xmmword [rsp + 0x50], xmm6
mov qword [rsp + 0x60], 0
mov qword [rsp + 0x68], r14
mov qword [rsp + 0x20], r12
mov rcx, rbx
mov rdx, r13
mov r8d, 0x20
mov r9, rbp
call sub.KERNEL32.dll_ReadFileEx
test eax, eax
je 0x14003edc0
nop word cs:[rax + rax]
mov ecx, 0xffffffff
mov edx, 1
call sub.KERNEL32.dll_SleepEx
cmp dword [rsp + 0x90], 0
je 0x14003ee20
mov edi, dword [rsp + 0x94]
test edi, edi
jne 0x14003edc7
mov edi, dword [rsp + 0x98]
test rdi, rdi
je 0x14003effd
cmp edi, 0x21
jae 0x14003f1e8
lea rcx, [rsp + 0x38]
xor edx, edx
mov r8, rdi
call sym.alloc::raw_vec::RawVec_T_A_::reserve::do_reserve_and_handle::ha416c873d8f64b94
mov r12, qword [rsp + 0x38]
mov r14, qword [rsp + 0x40]
mov rbp, qword [rsp + 0x48]
lea rcx, [r12 + rbp]
lea rdx, [rsp + 0xe0]
mov r8, rdi
call sym.memcpy
add rbp, rdi
mov qword [rsp + 0x48], rbp
jmp 0x14003ed73
mov al, 0x25
jmp case.0x14003ecc0.0
invalid
invalid
invalid
mov al, 0x23
jmp case.0x14003ecc0.0
mov al, 0x24
jmp case.0x14003ecc0.0
invalid
invalid
invalid
mov al, 0x1b
jmp case.0x14003ecc0.0
invalid
invalid
invalid
mov al, 0x22
jmp case.0x14003ecc0.0
mov al, 0x10
jmp case.0x14003ecc0.0
invalid
invalid
invalid
mov al, 0xe
jmp case.0x14003ecc0.0
invalid
invalid
invalid
mov al, 0x21
jmp case.0x14003ecc0.0
mov al, 0xb
jmp case.0x14003ecc0.0
invalid
invalid
invalid
mov al, 4
jmp case.0x14003ecc0.0
invalid
invalid
invalid
mov al, 0x28
jmp case.0x14003ecc0.0
invalid
invalid
invalid
mov al, 0xc
jmp case.0x14003ecc0.0
invalid
invalid
invalid
mov al, 9
jmp case.0x14003ecc0.0
invalid
invalid
invalid
mov al, 0x19
jmp case.0x14003ecc0.0
invalid
invalid
invalid
mov al, 0x18
jmp case.0x14003ecc0.0
invalid
invalid
invalid
mov al, 2
jmp case.0x14003ecc0.0
invalid
invalid
invalid
mov al, 0xf
jmp case.0x14003ecc0.0
mov al, 3
jmp case.0x14003ecc0.0
invalid
invalid
invalid
mov al, 7
jmp case.0x14003ecc0.0
mov al, 0x1f
jmp case.0x14003ecc0.0
invalid
invalid
invalid
mov al, 0x11
jmp case.0x14003ecc0.0
invalid
invalid
invalid
mov al, 0x29
jmp case.0x14003ecc0.0
invalid
invalid
invalid
mov al, 0x14
jmp case.0x14003ecc0.0
invalid
invalid
invalid
mov al, 5
jmp case.0x14003ecc0.0
invalid
invalid
invalid
mov al, 0x15
jmp case.0x14003ecc0.0
invalid
invalid
invalid
mov al, 0xd
jmp case.0x14003ecc0.0
invalid
invalid
invalid
mov al, 6
jmp case.0x14003ecc0.0
invalid
invalid
invalid
mov al, 0x12
jmp case.0x14003ecc0.0
mov al, 0xa
jmp case.0x14003ecc0.0
mov al, 8
jmp case.0x14003ecc0.0
invalid
invalid
invalid
mov al, 0x1e
jmp case.0x14003ecc0.0
mov al, 0x20
jmp case.0x14003ecc0.0
invalid
invalid
invalid
mov al, 0x16
jmp case.0x14003ecc0.0
invalid
invalid
invalid
mov al, 0x27
jmp case.0x14003ecc0.0
invalid
invalid
invalid
mov al, 0x13
jmp case.0x14003ecc0.0
invalid
invalid
invalid
mov al, 0x17
jmp case.0x14003ecc0.0
mov al, 0x1c
jmp case.0x14003ecc0.0
invalid
invalid
invalid
mov al, 0x1d
jmp case.0x14003ecc0.0
mov al, 0x26
jmp case.0x14003ecc0.0
mov al, 0x1a
jmp case.0x14003ecc0.0
mov qword [rsp + 0xb8], rcx
lea rcx, [rsp + 0x50]
lea rdx, [rsp + 0xb8]
lea r8, [rsp + 0xa0]
call sym.std::sys::windows::pipe::AnonPipe::read_to_end::h7dff35a7420208d5
cmp qword [rsp + 0x50], 0
jne 0x14003f1a8
mov rcx, qword [rsp + 0xb8]
call fcn.1400c7794
jmp 0x14003f012
movzx eax, al
cmp eax, 0xb
jne 0x14003f138
mov rcx, rbx
call fcn.1400c7794
mov rsi, qword [rsp + 0x28]
mov rdi, qword [rsp + 0xd8]
mov qword [rsi], 0
mov rbx, qword [rsi + 0x30]
mov rcx, rbx
mov edx, 0xffffffff
call sub.KERNEL32.dll_WaitForSingleObject
test eax, eax
je 0x14003f086
call sub.KERNEL32.dll_GetLastError
shl rax, 0x20
or rax, 2
mov qword [rdi + 8], rax
mov qword [rdi], 0
mov rdx, qword [rsp + 0x40]
test rdx, rdx
je 0x14003f060
mov rcx, qword [rsp + 0x38]
mov r8d, 1
call sym.__rust_dealloc
mov rdx, qword [rsp + 0xa8]
test rdx, rdx
je 0x14003f0fb
mov rcx, qword [rsp + 0xa0]
mov r8d, 1
call sym.__rust_dealloc
jmp 0x14003f0fb
mov dword [rsp + 0x50], 0
lea rdx, [rsp + 0x50]
mov rcx, rbx
call sub.KERNEL32.dll_GetExitCodeProcess
test eax, eax
je 0x14003f02e
mov eax, dword [rsp + 0x50]
mov rcx, qword [rsp + 0xb0]
mov qword [rsp + 0x60], rcx
movups xmm0, xmmword [rsp + 0xa0]
movaps xmmword [rsp + 0x50], xmm0
mov rcx, qword [rsp + 0x48]
mov qword [rsp + 0x78], rcx
movups xmm1, xmmword [rsp + 0x38]
movups xmmword [rsp + 0x68], xmm1
movups xmmword [rdi], xmm0
mov rcx, qword [rsp + 0x70]
mov qword [rdi + 0x20], rcx
mov rcx, qword [rsp + 0x78]
mov qword [rdi + 0x28], rcx
mov rcx, qword [rsp + 0x60]
mov qword [rdi + 0x10], rcx
mov rcx, qword [rsp + 0x68]
mov qword [rdi + 0x18], rcx
mov dword [rdi + 0x30], eax
mov rsi, qword [rsi + 0x38]
mov rcx, rbx
call fcn.1400c7794
mov rcx, rsi
call fcn.1400c7794
mov rax, rdi
movaps xmm6, xmmword [rsp + 0x100]
add rsp, 0x118
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov rbx, qword [rsp + 0x30]
jmp 0x14003effd
shl rdi, 0x20
or rdi, 2
mov qword [rsp + 0x50], rdi
lea rax, str.library_std_srcprocess.rs
mov qword [rsp + 0x20], rax
lea rcx, [0x1400cbfc8]
lea r9, sym.core::ptr::drop_in_place_std::io::error::Error_::h535f249fe8e52b1f
lea r8, [rsp + 0x50]
mov edx, 0x2b
call dbg.unwrap_failed
jmp 0x14003f1e6
lea r8, [0x1400ce0a8]
mov rcx, rbp
mov rdx, rax
call dbg.slice_index_order_fail
jmp 0x14003f1e6
mov rbp, rax
lea rax, [0x1400ce0a8]
mov qword [rsp + 0x88], rax
mov rcx, rbp
mov r8, qword [rsp + 0x88]
call dbg.slice_end_index_len_fail
jmp 0x14003f1e6
mov qword [rsp + 0x28], rsi
mov rax, qword [rsp + 0x58]
mov qword [rsp + 0xe0], rax
lea rax, str.library_std_srcprocess.rs
mov qword [rsp + 0x20], rax
lea rcx, [0x1400cbfc8]
lea r9, sym.core::ptr::drop_in_place_std::io::error::Error_::h535f249fe8e52b1f
lea r8, [rsp + 0xe0]
mov edx, 0x2b
call dbg.unwrap_failed
ud2
lea rax, [0x1400ce0d8]
mov qword [rsp + 0x88], rax
mov edx, 0x20
mov rbp, rdi
jmp 0x14003f196