Function at 0x14002a370
Capabilities:
Read file on windows

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x68
mov rbx, rcx
cmp byte [rcx + 0x5c], 0
je 0x14002a391
mov ebp, dword [rbx + 0x58]
jmp 0x14002a92a
mov rsi, qword [rbx + 0x10]
mov r12, qword [rbx + 0x18]
movabs r15, 0x100000000
cmp rsi, r12
je 0x14002a741
mov edi, 1
mov r14, rsi
mov rcx, qword [r14]
call sub.api_ms_win_crt_string_l1_1_0.dll_strlen
add rdi, rax
inc rdi
add r14, 8
cmp r14, r12
jne 0x14002a3b4
mov rcx, rdi
call fcn.140054b1c
mov r14, rax
mov rcx, rax
xor edx, edx
mov r8, rdi
call sub.VCRUNTIME140.dll_memset
mov qword [rsp + 0x38], r14
mov rdi, r14
mov r14, rsi
mov rdx, qword [r14]
mov rcx, rdi
call sub.api_ms_win_crt_string_l1_1_0.dll_strcpy
mov rcx, qword [r14]
call sub.api_ms_win_crt_string_l1_1_0.dll_strlen
add rdi, rax
inc rdi
add r14, 8
cmp r14, r12
jne 0x14002a3ee
sub r12, rsi
mov rsi, r12
sar rsi, 3
mov rcx, r12
add rcx, 8
mov rax, 0xffffffffffffffff
cmovb rcx, rax
mov byte [rdi], 0
test r12, r12
cmovs rcx, rax
call fcn.140054b1c
mov qword [rax], rsi
mov qword [rsp + 0x60], rax
mov rcx, rax
add rcx, 8
mov r8, r12
and r8, 0xfffffffffffffff8
mov qword [rsp + 0x48], rcx
xor edx, edx
call sub.VCRUNTIME140.dll_memset
mov rcx, qword [rbx]
mov r14, qword [rbx + 8]
lea rdx, [0x1400a347c]
call qword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll__wfopen]
test rax, rax
je 0x14002a74c
mov rsi, rax
mov rcx, rax
xor edx, edx
mov r8d, 2
call qword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fseek]
mov ebp, 6
test eax, eax
jne 0x14002a787
mov rcx, rsi
call qword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_ftell]
test eax, eax
jle 0x14002a787
mov qword [rsp + 0x58], r14
mov r13d, eax
lea rcx, [r13 + 1]
call fcn.140054b1c
mov r14, rax
mov rcx, rsi
xor edx, edx
xor r8d, r8d
call qword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fseek]
mov ebp, 6
test eax, eax
mov qword [rsp + 0x40], rsi
jne 0x14002a770
mov edx, 1
mov rcx, r14
mov r8, r13
mov r9, rsi
call qword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fread]
cmp rax, r13
jne 0x14002a770
shr r12, 3
mov byte [r14 + r13], 0
mov dword [rsp + 0x30], 0
mov dword [rsp + 0x34], 0
mov qword [rsp + 0x50], r14
mov r13, r14
mov rax, r13
movzx ecx, byte [r13]
cmp ecx, 0xa
je 0x14002a55e
cmp ecx, 0xd
je 0x14002a55e
test ecx, ecx
je 0x14002a75e
lea r15, [rax + 1]
mov r13, r15
mov edx, ecx
cmp dl, 0xa
je 0x14002a566
movzx edx, dl
cmp edx, 0xd
je 0x14002a566
mov dl, byte [r13]
inc r13
test dl, dl
jne 0x14002a541
xor r13d, r13d
jmp 0x14002a56d
inc rax
mov r13, rax
jmp 0x14002a51e
mov byte [r13 - 1], 0
mov cl, byte [rax]
cmp cl, 0x23
je 0x14002a6dc
movzx edx, cl
cmp edx, 0x3b
je 0x14002a6dc
lea r8, [rax + 2]
lea r9, [rax + 3]
movzx edx, cl
cmp edx, 0x1f
jg 0x14002a599
cmp edx, 9
je 0x14002a59e
jmp 0x14002a5af
cmp edx, 0x20
jne 0x14002a5b9
mov cl, byte [r15]
inc r15
inc rax
inc r8
inc r9
jmp 0x14002a58a
test edx, edx
je 0x14002a6dc
jmp 0x14002a604
cmp edx, 0x5b
jne 0x14002a604
mov rdx, r8
mov rcx, r9
movzx r10d, byte [rax + 1]
inc rax
inc r8
inc r9
cmp r10d, 0x5d
je 0x14002a5be
test r10d, r10d
jne 0x14002a5ea
mov dword [rsp + 0x30], 0
jmp 0x14002a6dc
cmp r10b, 0x5d
je 0x14002a640
mov r10b, byte [rax + 1]
inc rax
inc rdx
inc rcx
test r10b, r10b
jne 0x14002a5ea
jmp 0x14002a65c
cmp byte [rsp + 0x30], 0
je 0x14002a6dc
dec r15
mov rbp, r15
cmp cl, 0x3d
jne 0x14002a622
mov cl, byte [rbp + 1]
inc rbp
jmp 0x14002a615
test cl, cl
je 0x14002a6dc
inc rbp
cmp cl, 0x3d
je 0x14002a69a
mov cl, byte [rbp]
inc rbp
test cl, cl
jne 0x14002a62d
xor ebp, ebp
jmp 0x14002a69e
mov byte [rax], 0
movzx eax, byte [rdx]
cmp eax, 9
je 0x14002a650
cmp eax, 0x20
jne 0x14002a658
inc rdx
inc rcx
jmp 0x14002a643
test eax, eax
jne 0x14002a680
mov rdx, qword [rsp + 0x58]
mov rcx, r15
test rdx, rdx
jne 0x14002a670
lea rdx, [0x1400a0a03]
call sub.api_ms_win_crt_string_l1_1_0.dll_strcmp
test eax, eax
sete al
mov dword [rsp + 0x30], eax
jmp 0x14002a6dc
cmp al, 9
je 0x14002a6e7
movzx eax, al
cmp eax, 0x20
je 0x14002a6e7
mov al, byte [rcx]
inc rcx
test al, al
jne 0x14002a680
jmp 0x14002a5dd
mov byte [rbp - 1], 0
mov rax, qword [rsp + 0x38]
cmp byte [rax], 0
je 0x14002a6dc
xor r14d, r14d
mov rsi, qword [rsp + 0x38]
mov rcx, r15
mov rdx, rsi
call sub.api_ms_win_crt_string_l1_1_0.dll_strcmp
test eax, eax
je 0x14002a6d7
mov rcx, rsi
call sub.api_ms_win_crt_string_l1_1_0.dll_strlen
add rsi, rax
inc rsi
inc r14
cmp byte [rsi], 0
jne 0x14002a6b0
jmp 0x14002a6dc
cmp r14d, r12d
jb 0x14002a6f0
test r13, r13
jne 0x14002a51e
jmp 0x14002a75e
mov byte [rcx - 1], 0
jmp 0x14002a5dd
mov rcx, rbp
call sub.api_ms_win_crt_string_l1_1_0.dll_strlen
lea r15, [rax + 1]
mov rcx, r15
call fcn.140054b1c
mov rsi, rax
mov rcx, rax
xor edx, edx
mov r8, r15
call sub.VCRUNTIME140.dll_memset
mov rax, qword [rsp + 0x48]
mov rcx, qword [rax + r14*8]
mov qword [rax + r14*8], rsi
test rcx, rcx
je 0x14002a72b
call fcn.140054b24
mov rcx, rsi
mov rdx, rbp
call sub.api_ms_win_crt_string_l1_1_0.dll_strcpy
inc dword [rsp + 0x34]
mov al, 1
jmp 0x14002a67a
mov qword [rbx + 0x58], r15
xor ebp, ebp
jmp 0x14002a92a
add r15, 6
mov qword [rbx + 0x58], r15
mov ebp, 6
jmp 0x14002a8eb
xor eax, eax
cmp dword [rsp + 0x34], r12d
setne al
lea ebp, [rax + rax*4]
mov r14, qword [rsp + 0x50]
mov rcx, r14
call fcn.140054b24
movabs r15, 0x100000000
mov rsi, qword [rsp + 0x40]
mov rcx, rsi
call qword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fclose]
mov eax, ebp
or rax, r15
mov qword [rbx + 0x58], rax
test ebp, ebp
jne 0x14002a8eb
mov r14, qword [rbx + 0x28]
mov r12, qword [rbx + 0x30]
cmp r14, r12
je 0x14002a80e
mov rax, qword [r14]
mov rcx, qword [rsp + 0x48]
mov r15, qword [rcx + rax*8]
test r15, r15
je 0x14002a808
mov rbp, qword [r14 + 8]
mov rcx, r15
call sub.api_ms_win_crt_string_l1_1_0.dll_strlen
lea r13, [rax + 1]
mov rcx, r13
call fcn.140054b1c
mov rsi, rax
mov rcx, rax
xor edx, edx
mov r8, r13
call sub.VCRUNTIME140.dll_memset
mov rcx, qword [rbp]
mov qword [rbp], rsi
test rcx, rcx
je 0x14002a7fd
call fcn.140054b24
mov rsi, qword [rbp]
mov rcx, rsi
mov rdx, r15
call sub.api_ms_win_crt_string_l1_1_0.dll_strcpy
add r14, 0x10
jmp 0x14002a7a9
mov r12, qword [rbx + 0x40]
mov rax, qword [rbx + 0x48]
mov qword [rsp + 0x40], rax
cmp r12, rax
je 0x14002a8e9
mov rsi, qword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
xor ebp, ebp
mov rax, qword [r12]
mov rcx, qword [rsp + 0x48]
mov rbx, qword [rcx + rax*8]
test rbx, rbx
je 0x14002a8d8
mov r14, qword [r12 + 8]
mov dword [rsp + 0x28], 0
mov qword [rsp + 0x20], 0
mov ecx, 0xfde9
xor edx, edx
mov r8, rbx
mov r9d, 0xffffffff
mov rdi, rsi
call rsi
mov r15d, eax
mov r13d, eax
add r13, r13
test eax, eax
mov rax, 0xffffffffffffffff
cmovs r13, rax
mov rcx, r13
call fcn.140054b1c
mov rsi, rax
mov rcx, rax
xor edx, edx
mov r8, r13
call sub.VCRUNTIME140.dll_memset
mov rcx, qword [r14]
mov qword [r14], rsi
test rcx, rcx
je 0x14002a8af
call fcn.140054b24
mov rsi, qword [r14]
mov dword [rsp + 0x28], r15d
mov qword [rsp + 0x20], rsi
mov ecx, 0xfde9
xor edx, edx
mov r8, rbx
mov r9d, 0xffffffff
mov rsi, rdi
call rdi
test eax, eax
mov eax, 0x10
cmovle ebp, eax
add r12, 0x10
cmp r12, qword [rsp + 0x40]
jne 0x14002a82d
jmp 0x14002a8eb
xor ebp, ebp
mov rdi, qword [rsp + 0x60]
mov rsi, qword [rdi]
test rsi, rsi
je 0x14002a918
shl rsi, 3
mov rcx, qword [rdi + rsi]
mov qword [rdi + rsi], 0
test rcx, rcx
je 0x14002a912
call fcn.140054b24
add rsi, 0xfffffffffffffff8
jne 0x14002a8fc
mov rcx, rdi
call fcn.140054b24
mov rcx, qword [rsp + 0x38]
call fcn.140054b24
mov eax, ebp
add rsp, 0x68
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret