Function at 0x2100b9fb0
Capabilities:
Write file on windows

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x48
mov rdi, qword [rsp + 0xb0]
mov rbx, rcx
mov rcx, rdx
mov r13, rdx
mov rsi, r8
mov dword [rsp + 0x38], 0
mov r14, r9
call sym.GetTapeStatus
cmp eax, 0x458
sete dl
cmp eax, 0x15
sete al
or dl, al
jne 0x2100ba1a8
mov r12d, dword [rbx + 4]
cmp r12d, 0x457
je 0x2100ba200
cmp dword [rbx + 0x18], 3
je 0x2100ba130
movsxd rax, dword [rbx + 8]
mov dword [rbx + 0x18], 0
xor ebp, ebp
xor r15d, r15d
shl rax, 5
mov byte [rax + rbx + 0x84], 0
test byte [rbx + 0x68], 0x10
jne 0x2100ba17d
mov qword [rbx + 0x60], rsi
lea r9, [rsp + 0x38]
mov rdx, r14
mov rcx, r13
mov qword [rsp + 0x20], rsi
mov r8d, dword [rdi]
mov qword [rsi + 0x10], 0
call sym.WriteFile
mov r12d, eax
test eax, eax
je 0x2100ba240
mov eax, dword [rsp + 0x38]
mov dword [rbx + 4], 0
mov rdx, rax
mov qword [rdi], rax
test eax, eax
je 0x2100ba1d0
xor r12d, r12d
mov ecx, dword [rbx + 0x50]
mov eax, 1
test ecx, ecx
je 0x2100ba09c
lea eax, [rcx + rdx - 1]
xor edx, edx
div ecx
cdqe
movsxd rdx, dword [rbx + 8]
add qword [rbx + 0x10], rax
shl rdx, 5
add rdx, rbx
mov rcx, qword [rdx + 0x78]
add qword [rdx + 0x70], rax
test rcx, rcx
js 0x2100ba0bf
add rcx, rax
mov qword [rdx + 0x78], rcx
test bpl, bpl
jne 0x2100ba2b0
cmp r12d, 0x469
jne 0x2100ba220
movsxd rax, dword [rbx + 8]
shl rax, 5
mov dword [rax + rbx + 0x88], 6
test byte [0x210273880], 1
je 0x2100ba1b5
mov dword [rsp + 0x28], r12d
lea rax, [0x210294545]
lea r9, str._s:_Win32_error__d
mov edx, 0x40
mov qword [rsp + 0x20], rax
lea r8, str.int_mtinfo_drive::error_const_char_
lea rcx, [0x210273880]
call method.strace.prntf_unsigned_int__char_const__char_const__..._
mov r12d, dword [rbx + 4]
jmp 0x2100ba1b5
mov rdx, qword [rbx + 0x60]
mov r9d, 1
mov rcx, r13
xor ebp, ebp
lea r8, [rsp + 0x3c]
xor r15d, r15d
call sym.GetOverlappedResult
mov edx, dword [rsp + 0x3c]
mov dword [rsp + 0x38], edx
test eax, eax
je 0x2100ba338
movsxd rax, dword [rbx + 8]
mov dword [rbx + 0x18], 0
shl rax, 5
mov byte [rax + rbx + 0x84], 0
test byte [rbx + 0x68], 0x10
je 0x2100ba03b
cmp dword [rbx + 0x1c], 1
jg 0x2100ba03b
mov r9d, 1
mov r8d, 3
mov rdx, r13
mov rcx, rbx
call method.mtinfo_drive.prepare_void__int__bool_
jmp 0x2100ba03b
mov dword [rbx + 4], 0x458
mov r12d, 0x458
mov eax, r12d
add rsp, 0x48
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
test bpl, bpl
jne 0x2100ba2b0
movsxd rax, dword [rbx + 8]
shl rax, 5
mov dword [rax + rbx + 0x88], 0
mov dword [rbx + 0x18], 2
xor r12d, r12d
jmp 0x2100ba1b5
mov qword [rdi], 0
test byte [0x210273880], 1
je 0x2100ba1b5
mov dword [rsp + 0x28], 0x457
jmp 0x2100ba0fa
cmp r12d, 0x44c
jne 0x2100ba27f
test byte [0x210273880], 1
je 0x2100ba1b5
jmp 0x2100ba0f5
call sym.GetLastError
mov dword [rbx + 4], eax
cmp eax, 0x3e5
jne 0x2100ba300
test byte [rbx + 0x68], 2
je 0x2100ba2c0
mov eax, dword [rbx + 0x50]
test eax, eax
jne 0x2100ba2c0
mov eax, dword [rsp + 0x38]
mov dword [rbx + 0x18], 3
mov r12d, 0x3e5
mov qword [rdi], rax
mov rdx, rax
test eax, eax
jne 0x2100ba310
movsxd rax, dword [rbx + 8]
shl rax, 5
mov dword [rax + rbx + 0x88], 0
test r12d, r12d
je 0x2100ba1ec
cmp r12d, 0x3e5
jne 0x2100ba229
mov dword [rbx + 0x18], 3
jmp 0x2100ba229
mov dword [rbx + 4], r15d
mov r12d, r15d
jmp 0x2100ba0c8
mov rdx, qword [rbx + 0x60]
mov r9d, 1
lea r8, [rsp + 0x3c]
mov rcx, r13
call sym.GetOverlappedResult
mov edx, dword [rsp + 0x3c]
mov dword [rsp + 0x38], edx
test eax, eax
je 0x2100ba320
mov dword [rbx + 4], r12d
mov eax, edx
mov qword [rdi], rax
test edx, edx
jne 0x2100ba086
jmp 0x2100ba0bf
test eax, eax
mov edx, dword [rsp + 0x38]
mov r12d, eax
sete cl
and ebp, ecx
jmp 0x2100ba2e7
xor ebp, ebp
mov r12d, 0x3e5
jmp 0x2100ba086
call sym.GetLastError
mov edx, dword [rsp + 0x38]
test eax, eax
mov r12d, eax
sete al
and ebp, eax
jmp 0x2100ba2e3
call sym.GetLastError
test eax, eax
mov r15d, eax
setne bpl
jmp 0x2100ba15c