Function at 0x46f580
Capabilities:
Copy file

Disassembly:
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x60
mov ebx, ecx
mov rsi, rdx
mov rdi, r8
test ebx, ebx
jne 0x46f002
test r9, r9
je 0x46eff2
lea rax, [0x006d1310]
mov dword [r9], 0
mov byte [r9 + 4], 0
mov qword [r9 + 8], rax
test ebx, ebx
setne al
add rsp, 0x60
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
test r9, r9
je 0x46f02a
lea rax, [0x006d1310]
test ebx, ebx
mov dword [r9], ebx
mov byte [r9 + 4], 1
mov qword [r9 + 8], rax
setne al
add rsp, 0x60
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
mov ecx, 0x48
lea rbp, [rsp + 0x40]
call fcn.00670680
mov rdx, qword [rsp + 0xb0]
mov r12, rax
mov rcx, rbp
movabs rax, 0x100000000
or rbx, rax
call fcn.0046c220
lea rax, [0x006d1310]
mov rdx, rbp
mov rcx, r12
mov r9, rdi
mov r8, rsi
mov qword [rsp + 0x30], rbx
mov qword [rsp + 0x38], rax
lea rax, [rsp + 0x30]
add rbp, 0x10
mov qword [rsp + 0x20], rax
call fcn.005a9170
mov rcx, qword [rsp + 0x40]
cmp rcx, rbp
je 0x46f098
call fcn.00670500
lea r8, [0x005a9500]
lea rdx, [0x006d32e0]
mov rcx, r12
call fcn.00670ef0
mov rbx, rax
mov rcx, r12
call fcn.00670a50
mov rcx, rbx
call fcn.0058e700
nop
nop dword [rax]
nop word cs:[rax + rax]
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x68
test r8, r8
mov rbx, rcx
mov rsi, rdx
je 0x46f103
lea rax, [0x006d1310]
mov dword [r8], 0x32
mov byte [r8 + 4], 1
mov qword [r8 + 8], rax
add rsp, 0x68
pop rbx
pop rsi
pop rdi
pop rbp
ret
mov ecx, 0x48
lea rdi, [rsp + 0x40]
call fcn.00670680
lea rdx, str.boost::filesystem::create_directory_symlink
mov rcx, rdi
mov rbp, rax
call fcn.0046c220
movabs rax, 0x100000032
mov rdx, rdi
mov rcx, rbp
mov qword [rsp + 0x30], rax
lea rax, [0x006d1310]
mov r9, rsi
mov r8, rbx
add rdi, 0x10
mov qword [rsp + 0x38], rax
lea rax, [rsp + 0x30]
mov qword [rsp + 0x20], rax
call fcn.005a9170
mov rcx, qword [rsp + 0x40]
cmp rcx, rdi
je 0x46f16d
call fcn.00670500
lea r8, [0x005a9500]
lea rdx, [0x006d32e0]
mov rcx, rbp
call fcn.00670ef0
mov rbx, rax
mov rcx, rbp
call fcn.00670a50
mov rcx, rbx
call fcn.0058e700
nop
nop word [rax + rax]
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x68
test r8, r8
mov rbx, rcx
mov rsi, rdx
je 0x46f1d3
lea rax, [0x006d1310]
mov dword [r8], 0x32
mov byte [r8 + 4], 1
mov qword [r8 + 8], rax
add rsp, 0x68
pop rbx
pop rsi
pop rdi
pop rbp
ret
mov ecx, 0x48
lea rdi, [rsp + 0x40]
call fcn.00670680
lea rdx, str.boost::filesystem::create_directory_symlink
mov rcx, rdi
mov rbp, rax
call fcn.0046c220
movabs rax, 0x100000032
mov rdx, rdi
mov rcx, rbp
mov qword [rsp + 0x30], rax
lea rax, [0x006d1310]
mov r9, rsi
mov r8, rbx
add rdi, 0x10
mov qword [rsp + 0x38], rax
lea rax, [rsp + 0x30]
mov qword [rsp + 0x20], rax
call fcn.005a9170
mov rcx, qword [rsp + 0x40]
cmp rcx, rdi
je 0x46f23d
call fcn.00670500
lea r8, [0x005a9500]
lea rdx, [0x006d32e0]
mov rcx, rbp
call fcn.00670ef0
mov rbx, rax
mov rcx, rbp
call fcn.00670a50
mov rcx, rbx
call fcn.0058e700
nop
nop word [rax + rax]
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x68
test r8, r8
mov rsi, rcx
mov rbx, rdx
je 0x46f2a3
lea rax, [0x006d1310]
mov dword [r8], 0x32
mov byte [r8 + 4], 1
mov qword [r8 + 8], rax
add rsp, 0x68
pop rbx
pop rsi
pop rdi
pop rbp
ret
mov ecx, 0x48
lea rdi, [rsp + 0x40]
call fcn.00670680
lea rdx, str.boost::filesystem::copy_symlink
mov rcx, rdi
mov rbp, rax
call fcn.0046c220
movabs rax, 0x100000032
mov rdx, rdi
mov rcx, rbp
mov qword [rsp + 0x30], rax
lea rax, [0x006d1310]
mov r9, rsi
mov r8, rbx
add rdi, 0x10
mov qword [rsp + 0x38], rax
lea rax, [rsp + 0x30]
mov qword [rsp + 0x20], rax
call fcn.005a9170
mov rcx, qword [rsp + 0x40]
cmp rcx, rdi
je 0x46f30d
call fcn.00670500
lea r8, [0x005a9500]
lea rdx, [0x006d32e0]
mov rcx, rbp
call fcn.00670ef0
mov rbx, rax
mov rcx, rbp
call fcn.00670a50
mov rcx, rbx
call fcn.0058e700
nop
nop word [rax + rax]
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x60
mov rsi, rcx
mov rdi, rdx
mov rbx, r8
mov rdx, qword [rdx]
mov r8d, 3
mov rcx, qword [rcx]
call qword [sym.imp.KERNEL32.dll_MoveFileExW]
test eax, eax
je 0x46f390
test rbx, rbx
je 0x46f383
lea rax, [0x006d1310]
mov dword [rbx], 0
mov byte [rbx + 4], 0
mov qword [rbx + 8], rax
add rsp, 0x60
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
mov ebp, eax
je 0x46f369
test rbx, rbx
je 0x46f3bd
mov dword [rbx], eax
lea rax, [0x006d1310]
mov byte [rbx + 4], 1
mov qword [rbx + 8], rax
add rsp, 0x60
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
mov ecx, 0x48
mov ebx, ebp
lea rbp, [rsp + 0x40]
call fcn.00670680
lea rdx, str.boost::filesystem::rename
mov r12, rax
mov rcx, rbp
movabs rax, 0x100000000
or rbx, rax
call fcn.0046c220
lea rax, [0x006d1310]
mov rdx, rbp
mov rcx, r12
mov r9, rdi
mov r8, rsi
mov qword [rsp + 0x30], rbx
mov qword [rsp + 0x38], rax
lea rax, [rsp + 0x30]
add rbp, 0x10
mov qword [rsp + 0x20], rax
call fcn.005a9170
mov rcx, qword [rsp + 0x40]
cmp rcx, rbp
je 0x46f42c
call fcn.00670500
lea r8, [0x005a9500]
lea rdx, [0x006d32e0]
mov rcx, r12
call fcn.00670ef0
mov rbx, rax
mov rcx, r12
call fcn.00670a50
mov rcx, rbx
call fcn.0058e700
nop
nop word cs:[rax + rax]
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x60
mov rsi, rcx
mov rdi, rdx
mov rbx, r8
mov rdx, qword [rdx]
xor r8d, r8d
mov rcx, qword [rcx]
call qword [sym.imp.KERNEL32.dll_CreateDirectoryExW]
test eax, eax
je 0x46f4b0
test rbx, rbx
je 0x46f4a0
lea rax, [0x006d1310]
mov dword [rbx], 0
mov byte [rbx + 4], 0
mov qword [rbx + 8], rax
add rsp, 0x60
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
mov ebp, eax
je 0x46f486
test rbx, rbx
je 0x46f4dd
mov dword [rbx], eax
lea rax, [0x006d1310]
mov byte [rbx + 4], 1
mov qword [rbx + 8], rax
add rsp, 0x60
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
mov ecx, 0x48
mov ebx, ebp
lea rbp, [rsp + 0x40]
call fcn.00670680
lea rdx, str.boost::filesystem::copy_directory
mov r12, rax
mov rcx, rbp
movabs rax, 0x100000000
or rbx, rax
call fcn.0046c220
lea rax, [0x006d1310]
mov rdx, rbp
mov rcx, r12
mov r9, rdi
mov r8, rsi
mov qword [rsp + 0x30], rbx
mov qword [rsp + 0x38], rax
lea rax, [rsp + 0x30]
add rbp, 0x10
mov qword [rsp + 0x20], rax
call fcn.005a9170
mov rcx, qword [rsp + 0x40]
cmp rcx, rbp
je 0x46f54c
call fcn.00670500
lea r8, [0x005a9500]
lea rdx, [0x006d32e0]
mov rcx, r12
call fcn.00670ef0
mov rbx, rax
mov rcx, r12
call fcn.00670a50
mov rcx, rbx
call fcn.0058e700
nop
nop word cs:[rax + rax]
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x60
test r8d, r8d
mov rsi, rcx
mov rdi, rdx
sete r8b
mov rbx, r9
mov rdx, qword [rdx]
movzx r8d, r8b
mov rcx, qword [rcx]
call qword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
je 0x46f5d3
test rbx, rbx
je 0x46f5c8
lea rax, [0x006d1310]
mov dword [rbx], 0
mov byte [rbx + 4], 0
mov qword [rbx + 8], rax
add rsp, 0x60
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
mov ebp, eax
je 0x46f5ae
test rbx, rbx
je 0x46f600
mov dword [rbx], eax
lea rax, [0x006d1310]
mov byte [rbx + 4], 1
mov qword [rbx + 8], rax
add rsp, 0x60
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
mov ecx, 0x48
mov ebx, ebp
lea rbp, [rsp + 0x40]
call fcn.00670680
lea rdx, str.boost::filesystem::copy_file
mov r12, rax
mov rcx, rbp
movabs rax, 0x100000000
or rbx, rax
call fcn.0046c220
lea rax, [0x006d1310]
mov rdx, rbp
mov rcx, r12
mov r9, rdi
mov r8, rsi
mov qword [rsp + 0x30], rbx
mov qword [rsp + 0x38], rax
lea rax, [rsp + 0x30]
add rbp, 0x10
mov qword [rsp + 0x20], rax
call fcn.005a9170
mov rcx, qword [rsp + 0x40]
cmp rcx, rbp
je 0x46f66f
call fcn.00670500
lea r8, [0x005a9500]
lea rdx, [0x006d32e0]
mov rcx, r12
call fcn.00670ef0
mov rbx, rax
mov rcx, r12
call fcn.00670a50
mov rcx, rbx
call fcn.0058e700
nop
nop dword [rax]
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x60
mov rax, qword [0x0072da40]
mov rsi, rcx
mov rdi, rdx
mov rbx, r8
test rax, rax
je 0x46f710
test r8, r8
mov rcx, qword [rdx]
mov rdx, qword [rsi]
je 0x46f740
lea rsi, [0x006d1310]
mov dword [r8], 0
mov byte [r8 + 4], 0
mov qword [r8 + 8], rsi
xor r8d, r8d
call rax
test eax, eax
je 0x46f860
mov dword [rbx], 0
mov byte [rbx + 4], 0
mov qword [rbx + 8], rsi
add rsp, 0x60
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
test r8, r8
je 0x46f7da
lea rax, [0x006d1310]
mov dword [r8], 0x32
mov byte [r8 + 4], 1
mov qword [r8 + 8], rax
add rsp, 0x60
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
xor r8d, r8d
call rax
test eax, eax
jne 0x46f730
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
mov ebx, eax
je 0x46f730
mov ecx, 0x48
lea rbp, [rsp + 0x40]
call fcn.00670680
lea rdx, str.boost::filesystem::create_hard_link
mov r12, rax
mov rcx, rbp
mov eax, ebx
movabs rbx, 0x100000000
or rbx, rax
call fcn.0046c220
lea rax, [0x006d1310]
mov rdx, rbp
mov rcx, r12
mov r9, rdi
mov r8, rsi
mov qword [rsp + 0x30], rbx
mov qword [rsp + 0x38], rax
lea rax, [rsp + 0x30]
add rbp, 0x10
mov qword [rsp + 0x20], rax
call fcn.005a9170
mov rcx, qword [rsp + 0x40]
cmp rcx, rbp
je 0x46f7c4
call fcn.00670500
lea r8, [0x005a9500]
lea rdx, [0x006d32e0]
mov rcx, r12
call fcn.00670ef0
mov ecx, 0x48
lea rbp, [rsp + 0x40]
call fcn.00670680
lea rdx, str.boost::filesystem::create_hard_link
mov rcx, rbp
mov rbx, rax
call fcn.0046c220
movabs rax, 0x100000032
mov rdx, rbp
mov rcx, rbx
mov qword [rsp + 0x30], rax
lea rax, [0x006d1310]
mov r9, rdi
mov r8, rsi
add rbp, 0x10
mov qword [rsp + 0x38], rax
lea rax, [rsp + 0x30]
mov qword [rsp + 0x20], rax
call fcn.005a9170
mov rcx, qword [rsp + 0x40]
cmp rcx, rbp
je 0x46f844
call fcn.00670500
lea r8, [0x005a9500]
lea rdx, [0x006d32e0]
mov rcx, rbx
call fcn.00670ef0
nop word [rax + rax]
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
je 0x46f6ee
mov dword [rbx], eax
mov byte [rbx + 4], 1
mov qword [rbx + 8], rsi
add rsp, 0x60
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret