Function at 0x46a950
Capabilities:
Check if file exists
Delete file
Get file attributes
Hash data with md5
Set file attributes
Write file on windows

Disassembly:
mov rax, rsp
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
mov qword [rax + 8], rcx
push rbp
push r12
push r15
lea rbp, [rax - 0xff8]
mov eax, 0x10e0
call fcn.00422ec0
sub rsp, rax
xor ebx, ebx
movaps xmmword [rsp + 0x10d0], xmm6
mov r15, r9
mov rdi, r8
mov rsi, rdx
test r9, r9
jne 0x46a99b
xor al, al
jmp 0x46ac12
lea rdx, [rbp - 0x30]
call fcn.0044c504
test al, al
je 0x46a9e5
mov rcx, qword [rdi + 8]
test rcx, rcx
je 0x46a9e5
cmp dword [rdi + 0x10], ebx
jbe 0x46a9e5
lea rdx, str..exe
call fcn.00423b70
test rax, rax
je 0x46a9e5
sub rax, qword [rdi + 8]
sar rax, 1
test eax, eax
jle 0x46a9e5
lea r9, [rbp - 0x30]
mov rdx, r15
lea r8, [rbp + 0x1020]
call fcn.00478900
mov rcx, qword [rsi + 8]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x46aace
xor edx, edx
lea rcx, [rsp + 0x50]
lea r8d, [rdx + 0x58]
call fcn.00424830
mov r12d, 0x98badcfe
mov byte [rbp - 0x58], bl
mov edi, 0x10325476
mov dword [rsp + 0x48], r12d
mov rdx, rsi
mov dword [rsp + 0x4c], edi
lea rcx, [rsp + 0x40]
mov qword [rsp + 0x50], rbx
mov dword [rsp + 0x40], 0x67452301
mov dword [rsp + 0x44], 0xefcdab89
call fcn.00460af4
lea rcx, [rsp + 0x40]
call fcn.00460f88
movups xmm6, xmmword [rbp - 0x68]
mov r8d, dword [rbp + 0x1020]
lea rcx, [rsp + 0x40]
mov rdx, r15
mov byte [rbp - 0x58], bl
movups xmmword [rbp - 0x50], xmm6
mov qword [rsp + 0x50], rbx
mov dword [rsp + 0x40], 0x67452301
mov dword [rsp + 0x44], 0xefcdab89
mov dword [rsp + 0x48], r12d
mov dword [rsp + 0x4c], edi
call fcn.00460ea4
lea rcx, [rsp + 0x40]
call fcn.00460f88
movups xmm0, xmmword [rbp - 0x68]
movq rcx, xmm6
movq rax, xmm0
movups xmmword [rbp - 0x40], xmm0
cmp rcx, rax
jne 0x46aac4
mov rax, qword [rbp - 0x48]
cmp rax, qword [rbp - 0x38]
jne 0x46aac4
lea rcx, [rsp + 0x40]
call fcn.00460e70
mov al, 1
jmp 0x46ac12
lea rcx, [rsp + 0x40]
call fcn.00460e70
mov rcx, qword [rsi + 8]
or r12, 0xffffffffffffffff
mov rdi, r12
test rcx, rcx
je 0x46ab0e
mov qword [rsp + 0x30], rbx
lea r8d, [r12 + 4]
mov dword [rsp + 0x28], 0x80
xor r9d, r9d
mov edx, 0x40000000
mov dword [rsp + 0x20], 2
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov rdi, rax
cmp rax, r12
jne 0x46ab6c
mov rcx, qword [rsi + 8]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x46ab2c
mov rcx, qword [rsi + 8]
mov edx, 0x80
call qword [sym.imp.KERNEL32.dll_SetFileAttributesW]
mov rcx, qword [rsi + 8]
test rcx, rcx
je 0x46abef
xor r9d, r9d
mov qword [rsp + 0x30], rbx
mov dword [rsp + 0x28], 0x80
mov edx, 0x40000000
mov dword [rsp + 0x20], 2
lea r8d, [r9 + 3]
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov rdi, rax
cmp rax, r12
je 0x46abef
mov eax, ebx
mov dword [rbp + 0x1000], ebx
cmp dword [rbp + 0x1020], ebx
jbe 0x46aba5
mov r8d, dword [rbp + 0x1020]
lea r9, [rbp + 0x1000]
mov rdx, r15
mov qword [rsp + 0x20], rbx
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_WriteFile]
neg eax
sbb eax, eax
and eax, dword [rbp + 0x1000]
cmp eax, dword [rbp + 0x1020]
je 0x46abdd
lea rdx, str.Install_Fail_File_Write
lea rcx, [0x004dbde0]
call fcn.0044c458
cmp rdi, r12
je 0x46abd1
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rdi, r12
mov rcx, qword [rsi + 8]
call qword [sym.imp.KERNEL32.dll_DeleteFileW]
jmp 0x46ac02
cmp rdi, r12
je 0x46abeb
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov bl, 1
jmp 0x46ac10
lea rdx, str.Install_Fail_File_Write_Open
lea rcx, [0x004dbde0]
call fcn.0044c458
cmp rdi, r12
je 0x46ac10
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov al, bl
lea r11, [rsp + 0x10e0]
mov rbx, qword [r11 + 0x28]
mov rsi, qword [r11 + 0x30]
mov rdi, qword [r11 + 0x38]
movaps xmm6, xmmword [r11 - 0x10]
mov rsp, r11
pop r15
pop r12
pop rbp
ret