Function at 0x14001ca9c
Capabilities:
Get file size
Read file on windows

Disassembly:
mov rax, rsp
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x100
mov qword [rax - 0x60], 0xfffffffffffffffe
mov qword [rax + 0x18], rbx
mov qword [rax + 0x20], rsi
mov rax, qword [0x14004a300]
xor rax, rsp
mov qword [rsp + 0xf0], rax
mov rax, rdx
mov qword [rsp + 0xb0], rcx
xor r15d, r15d
mov esi, r15d
mov qword [rsp + 0x30], r15
mov dword [rsp + 0x28], 0x80
mov dword [rsp + 0x20], 3
xor r9d, r9d
xor r8d, r8d
mov edx, 0x80000000
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov rdi, rax
cmp rax, 0xffffffffffffffff
jne 0x14001cb3c
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, str.Invalid_components_file__CreateFile_returned___lu_n
mov edx, eax
mov ebx, eax
call sub.msvcrt.dll_wprintf
movzx eax, bx
or eax, 0x80070000
test ebx, ebx
cmovle eax, ebx
jmp 0x14001d1f8
xor edx, edx
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_GetFileSize]
mov ebx, eax
test eax, eax
jne 0x14001cb65
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, str.Invalid_components_file__GetFileSize_returned___lu_n
jmp 0x14001cb21
cmp ebx, 0x100000
jbe 0x14001cb8c
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
lea rcx, str.Invalid_components_file__Provide_a_file_with_a_size_of_less_than_1_MB_n
call sub.msvcrt.dll_wprintf
mov eax, 0x80004005
jmp 0x14001d1f8
mov qword [rsp + 0xa8], rbx
mov rcx, rbx
call qword [sym.imp.msvcrt.dll_malloc]
mov r14, rax
mov qword [rsp + 0xb8], rax
mov rcx, rdi
test rax, rax
jne 0x14001cbc0
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, 0x8007000e
jmp 0x14001d1f8
mov qword [rsp + 0x20], r15
lea r9, [rsp + 0x60]
mov r8d, ebx
mov rdx, r14
call qword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x14001cc02
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, r14
call qword [sym.imp.msvcrt.dll_free]
mov edx, ebx
lea rcx, str.Invalid_components_file__ReadFile_returned___lu_n
jmp 0x14001cb25
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
cmp ebx, dword [rsp + 0x60]
je 0x14001cc32
mov rcx, r14
call qword [sym.imp.msvcrt.dll_free]
mov r8d, dword [rsp + 0x60]
mov edx, ebx
lea rcx, str.Components_selection_file_is_supposed_to_have__lu_bytes_but_only__lu_bytes_are_read_n
call sub.msvcrt.dll_wprintf
jmp 0x14001cb82
lea ecx, [rbx + 1]
add rcx, rcx
call qword [sym.imp.msvcrt.dll_malloc]
mov rdi, rax
mov qword [rsp + 0xc0], rax
xor ecx, ecx
test rax, rax
jne 0x14001cc5e
mov rcx, r14
call qword [sym.imp.msvcrt.dll_free]
jmp 0x14001cbb6
mov rbx, rcx
mov qword [rsp + 0x68], rcx
movups xmm0, xmmword [0x14003ef80]
movdqu xmmword [rsp + 0xe0], xmm0
mov r13d, 1
mov r9d, r13d
mov dword [rsp + 0x48], r13d
mov r12d, ecx
mov edx, ecx
mov dword [rsp + 0x40], ecx
mov dword [rsp + 0x4c], ecx
mov r8d, ecx
mov dword [rsp + 0x44], ecx
mov r11, rcx
mov qword [rsp + 0x50], rcx
mov r15, rdi
mov r10, r14
mov qword [rsp + 0x58], r10
mov rax, qword [rsp + 0xa8]
add rax, r14
cmp r10, rax
jae 0x14001d1ce
movsx ecx, byte [r10]
cmp ecx, 0x2c
jg 0x14001d072
je 0x14001d059
cmp ecx, 9
jl 0x14001d08a
cmp ecx, 0xa
jle 0x14001d04e
cmp ecx, 0xd
je 0x14001d04e
cmp ecx, 0x20
je 0x14001d046
cmp ecx, 0x22
je 0x14001cd1a
cmp ecx, 0x23
jne 0x14001d08a
test r12d, r12d
jne 0x14001d046
test edx, edx
je 0x14001d225
jmp 0x14001d046
xor ecx, ecx
test r12d, r12d
jne 0x14001cd2f
lea r11, [r10 + 1]
mov qword [rsp + 0x50], r11
jmp 0x14001d03b
cmp r11, r10
je 0x14001d03b
test edx, edx
jne 0x14001cd49
test r8d, r8d
je 0x14001cd46
test r9d, r9d
jne 0x14001cd49
mov r15, rdi
mov r8, r10
sub r8, r11
mov rdx, r11
mov rcx, r15
call qword [sym.imp.msvcrt.dll_mbstowcs]
mov rcx, rax
mov eax, eax
xor edx, edx
mov word [r15 + rax*2], dx
test ecx, ecx
je 0x14001d23e
xor ecx, ecx
test r13d, r13d
je 0x14001cdfb
lea rdx, [rsp + 0xe0]
mov rcx, r15
call qword [sym.imp.ole32.dll_CLSIDFromString]
mov ecx, eax
mov edx, 0x80000000
add eax, edx
test edx, eax
jne 0x14001cda4
cmp ecx, 0x80040151
jne 0x14001d257
test rbx, rbx
jne 0x14001d27c
lea rdx, [0x14003ef00]
mov ecx, pe_nt_image_headers64
call fcn.14002c8c0
mov qword [rsp + 0x68], rax
xor ecx, ecx
test rax, rax
je 0x14001cdd9
mov rcx, rax
call fcn.14001baa4
mov rbx, rax
xor ecx, ecx
jmp 0x14001cddc
mov rbx, rcx
mov qword [rsp + 0x68], rbx
test rbx, rbx
je 0x14001d295
movaps xmm0, xmmword [rsp + 0xe0]
movdqu xmmword [rbx], xmm0
jmp 0x14001d023
mov r9d, dword [rsp + 0x48]
test r9d, r9d
je 0x14001cfc7
mov edx, dword [rsp + 0x40]
test edx, edx
jne 0x14001cf16
cmp dword [rsp + 0x44], ecx
jne 0x14001ceaa
test rbx, rbx
je 0x14001ce84
lea r9, [rbx + 0x10]
lea r8, [rbx + 0x18]
mov rdx, r15
mov rcx, rbx
call fcn.14001c834
mov esi, eax
xor ecx, ecx
test eax, eax
je 0x14001ce7b
mov ecx, eax
call fcn.14001ab20
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], esi
lea rax, str.pWriterComponents__AddSelectedComponent_pBufferCurrent_
mov qword [rsp + 0x20], rax
mov r9d, 0x45a
lea r8, str.base_stor_vss_tests_betestcompont.cpp
lea rdx, str._nError_in__S__d_:__n_t__Call__S_not_succeeded.__n_t__Error_code__0x_08lx._Error_description___s_n
mov ecx, 1
call fcn.14001a9f8
xor ecx, ecx
mov r9d, dword [rsp + 0x48]
mov edx, dword [rsp + 0x40]
or rax, 0xffffffffffffffff
inc rax
cmp word [r15 + rax*2], cx
jne 0x14001ce88
lea r15, [r15 + rax*2]
add r15, 2
mov r8d, 1
mov dword [rsp + 0x44], r8d
jmp 0x14001d031
mov r8, r15
mov rdx, rdi
mov rcx, rbx
call fcn.14001ff14
mov esi, eax
xor ecx, ecx
test eax, eax
je 0x14001cefc
mov ecx, eax
call fcn.14001ab20
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], esi
lea rax, str.pWriterComponents__SetRestoreInstanceName_pwcBuffer__pBufferCurrent_
mov qword [rsp + 0x20], rax
mov r9d, 0x462
lea r8, str.base_stor_vss_tests_betestcompont.cpp
lea rdx, str._nError_in__S__d_:__n_t__Call__S_not_succeeded.__n_t__Error_code__0x_08lx._Error_description___s_n
mov ecx, 1
call fcn.14001a9f8
xor ecx, ecx
or rax, 0xffffffffffffffff
inc rax
cmp word [rdi + rax*2], cx
jne 0x14001cf00
lea r15, [rdi + 2]
lea r15, [r15 + rax*2]
jmp 0x14001d023
or rax, 0xffffffffffffffff
cmp dword [rsp + 0x4c], ecx
jne 0x14001cf3b
mov dword [rsp + 0x4c], 1
inc rax
cmp word [r15 + rax*2], cx
jne 0x14001cf28
lea rcx, [r15 + rax*2]
jmp 0x14001cfbf
inc rax
cmp word [rdi + rax*2], cx
jne 0x14001cf3b
inc rax
lea r8, [rdi + rax*2]
mov byte [rsp + 0x20], cl
mov r9, r15
mov rdx, rdi
mov rcx, rbx
call fcn.14001c618
mov esi, eax
xor r15d, r15d
test eax, eax
je 0x14001cf9f
mov ecx, eax
call fcn.14001ab20
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], esi
lea rax, str.pWriterComponents__AddNewTarget_pwcBuffer__pwcBuffer__wcslen_pwcBuffer___1__pBufferCurrent_
mov qword [rsp + 0x20], rax
mov r9d, 0x46e
lea r8, str.base_stor_vss_tests_betestcompont.cpp
lea rdx, str._nError_in__S__d_:__n_t__Call__S_not_succeeded.__n_t__Error_code__0x_08lx._Error_description___s_n
lea ecx, [r15 + 1]
call fcn.14001a9f8
mov dword [rsp + 0x4c], r15d
or rax, 0xffffffffffffffff
inc rax
cmp word [rdi + rax*2], r15w
jne 0x14001cfa8
lea rcx, [rdi + rax*2]
mov edx, dword [rsp + 0x40]
mov r9d, dword [rsp + 0x48]
lea r15, [rcx + 2]
xor ecx, ecx
jmp 0x14001d02c
test rbx, rbx
je 0x14001d028
lea r9, [rbx + 0x20]
lea r8, [rbx + 0x28]
mov rdx, r15
mov rcx, rbx
call fcn.14001c834
mov esi, eax
xor ecx, ecx
test eax, eax
je 0x14001d023
mov ecx, eax
call fcn.14001ab20
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], esi
lea rax, str.pWriterComponents__AddSelectedSubcomponent_pBufferCurrent_
mov qword [rsp + 0x20], rax
mov r9d, 0x478
lea r8, str.base_stor_vss_tests_betestcompont.cpp
lea rdx, str._nError_in__S__d_:__n_t__Call__S_not_succeeded.__n_t__Error_code__0x_08lx._Error_description___s_n
mov ecx, 1
call fcn.14001a9f8
xor ecx, ecx
mov r9d, dword [rsp + 0x48]
mov edx, dword [rsp + 0x40]
mov r8d, dword [rsp + 0x44]
mov r10, qword [rsp + 0x58]
mov r11, qword [rsp + 0x50]
mov eax, ecx
test r12d, r12d
sete al
mov r12d, eax
inc r10
jmp 0x14001cca6
test r12d, r12d
jne 0x14001d2b4
jmp 0x14001d046
xor ecx, ecx
test r13d, r13d
jne 0x14001d2d3
test r12d, r12d
jne 0x14001d2d3
jmp 0x14001d17c
sub ecx, 0x3a
je 0x14001d188
sub ecx, 1
je 0x14001d0ce
sub ecx, 0x40
je 0x14001d0a1
cmp ecx, 2
je 0x14001d095
test r12d, r12d
je 0x14001d2f2
jmp 0x14001d046
xor ecx, ecx
test r12d, r12d
jne 0x14001d046
jmp 0x14001d1b5
test r12d, r12d
jne 0x14001d046
test r13d, r13d
jne 0x14001d311
test r9d, r9d
je 0x14001d311
test edx, edx
jne 0x14001d311
lea edx, [r12 + 1]
mov dword [rsp + 0x40], edx
jmp 0x14001d046
xor ecx, ecx
test r13d, r13d
jne 0x14001d35a
test r12d, r12d
jne 0x14001d35a
test edx, edx
jne 0x14001d35a
test rbx, rbx
je 0x14001d16e
mov rax, qword [rsp + 0xe0]
cmp rax, qword [0x14003ef80]
jne 0x14001d111
mov rax, qword [rsp + 0xe8]
cmp rax, qword [0x14003ef88]
je 0x14001d16e
movaps xmm0, xmmword [rsp + 0xe0]
movdqa xmmword [rsp + 0xd0], xmm0
mov rcx, qword [rsp + 0xb0]
add rcx, 8
mov r8, rbx
lea rdx, [rsp + 0xd0]
call fcn.14001c1cc
xor ecx, ecx
test eax, eax
je 0x14001d330
mov rbx, rcx
mov qword [rsp + 0x68], rcx
movups xmm0, xmmword [0x14003ef80]
movdqu xmmword [rsp + 0xe0], xmm0
mov edx, dword [rsp + 0x40]
mov r10, qword [rsp + 0x58]
mov r11, qword [rsp + 0x50]
mov r13d, 1
mov r9d, r13d
mov dword [rsp + 0x48], r13d
mov r8d, ecx
mov dword [rsp + 0x44], ecx
jmp 0x14001d046
xor ecx, ecx
test r13d, r13d
je 0x14001d19c
test r12d, r12d
jne 0x14001d19c
mov r13d, ecx
jmp 0x14001d046
test r9d, r9d
je 0x14001d1c0
test r12d, r12d
jne 0x14001d046
mov r9d, ecx
mov dword [rsp + 0x48], ecx
mov dword [rsp + 0x4c], ecx
mov edx, ecx
mov dword [rsp + 0x40], ecx
jmp 0x14001d046
test r12d, r12d
je 0x14001d379
jmp 0x14001d046
jmp 0x14001d1e4
mov rcx, r14
call qword [sym.imp.msvcrt.dll_free]
mov rcx, rdi
call qword [sym.imp.msvcrt.dll_free]
mov eax, esi
mov rcx, qword [rsp + 0xf0]
xor rcx, rsp
call fcn.14002c700
lea r11, [rsp + 0x100]
mov rbx, qword [r11 + 0x40]
mov rsi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret
mov dword [rsp + 0x70], 0x80004005
lea rdx, [0x140047d38]
lea rcx, [rsp + 0x70]
call sub.msvcrt.dll__CxxThrowException
mov dword [rsp + 0x74], 0x80004005
lea rdx, [0x140047d38]
lea rcx, [rsp + 0x74]
call sub.msvcrt.dll__CxxThrowException
lea rcx, str.A_writer_id_in_the_components_selection_file_is_in_invalid_GUID_format_n
call sub.msvcrt.dll_wprintf
mov dword [rsp + 0x78], 0x80004005
lea rdx, [0x140047d38]
lea rcx, [rsp + 0x78]
call sub.msvcrt.dll__CxxThrowException
mov dword [rsp + 0x7c], 0x80004005
lea rdx, [0x140047d38]
lea rcx, [rsp + 0x7c]
call sub.msvcrt.dll__CxxThrowException
mov dword [rsp + 0x80], 0x8007000e
lea rdx, [0x140047d38]
lea rcx, [rsp + 0x80]
call sub.msvcrt.dll__CxxThrowException
mov dword [rsp + 0x84], 0x80004005
lea rdx, [0x140047d38]
lea rcx, [rsp + 0x84]
call sub.msvcrt.dll__CxxThrowException
mov dword [rsp + 0x88], 0x80004005
lea rdx, [0x140047d38]
lea rcx, [rsp + 0x88]
call sub.msvcrt.dll__CxxThrowException
mov dword [rsp + 0x8c], 0x80004005
lea rdx, [0x140047d38]
lea rcx, [rsp + 0x8c]
call sub.msvcrt.dll__CxxThrowException
mov dword [rsp + 0x90], 0x80004005
lea rdx, [0x140047d38]
lea rcx, [rsp + 0x90]
call sub.msvcrt.dll__CxxThrowException
lea edx, [rcx + 1]
mov rcx, rbx
call fcn.14001c194
mov dword [rsp + 0x94], 0x8007000e
lea rdx, [0x140047d38]
lea rcx, [rsp + 0x94]
call sub.msvcrt.dll__CxxThrowException
mov dword [rsp + 0x98], 0x80004005
lea rdx, [0x140047d38]
lea rcx, [rsp + 0x98]
call sub.msvcrt.dll__CxxThrowException
mov dword [rsp + 0x9c], 0x80004005
lea rdx, [0x140047d38]
lea rcx, [rsp + 0x9c]
call sub.msvcrt.dll__CxxThrowException
int3