Function at 0x140023be0
Capabilities:
Read file on windows

Disassembly:
mov qword [rsp + 8], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0xc0]
sub rsp, 0x1c0
mov rsi, rdx
mov r15, rcx
xor r13d, r13d
mov dword [rbp + 0x110], r13d
xorps xmm0, xmm0
movups xmmword [rsp + 0x68], xmm0
xorps xmm1, xmm1
movdqu xmmword [rsp + 0x78], xmm1
mov r8, 0xffffffffffffffff
inc r8
cmp byte [rdx + r8], r13b
jne 0x140023c27
lea rcx, [rsp + 0x68]
call fcn.140003750
nop
xorps xmm0, xmm0
movups xmmword [rsp + 0x48], xmm0
mov qword [rsp + 0x58], r13
mov qword [rsp + 0x60], 7
mov word [rsp + 0x48], r13w
mov dword [rbp + 0x110], 0x1000
lea r8, [rsp + 0x68]
cmp qword [rbp - 0x80], 0x10
cmovae r8, qword [rsp + 0x68]
mov dword [rsp + 0x28], r13d
mov qword [rsp + 0x20], r13
mov r9d, dword [rsp + 0x78]
xor edx, edx
mov ecx, 0xfde9
call qword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
movsxd rbx, eax
test eax, eax
jle 0x140023d59
mov r8, qword [rsp + 0x58]
cmp rbx, r8
ja 0x140023cbf
lea rcx, [rsp + 0x48]
cmp qword [rsp + 0x60], 8
cmovae rcx, qword [rsp + 0x48]
mov qword [rsp + 0x58], rbx
mov word [rcx + rbx*2], r13w
jmp 0x140023d1d
mov rdx, rbx
sub rdx, r8
mov rcx, qword [rsp + 0x60]
mov rax, rcx
sub rax, r8
cmp rdx, rax
ja 0x140023d07
mov qword [rsp + 0x58], rbx
lea r9, [rsp + 0x48]
cmp rcx, 8
cmovae r9, qword [rsp + 0x48]
lea rdi, [r9 + r8*2]
test rdx, rdx
je 0x140023cfc
movzx eax, r13w
mov rcx, rdx
rep stosw word [rdi], ax
lea rax, [rdx + r8]
mov word [r9 + rax*2], r13w
jmp 0x140023d1d
mov word [rsp + 0x20], r13w
mov r9, rdx
xor r8d, r8d
lea rcx, [rsp + 0x48]
call fcn.140022100
lea rax, [rsp + 0x48]
cmp qword [rsp + 0x60], 8
cmovae rax, qword [rsp + 0x48]
lea r8, [rsp + 0x68]
cmp qword [rbp - 0x80], 0x10
cmovae r8, qword [rsp + 0x68]
mov dword [rsp + 0x28], ebx
mov qword [rsp + 0x20], rax
mov r9d, dword [rsp + 0x78]
xor edx, edx
mov ecx, 0xfde9
call qword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
lea rcx, [rsp + 0x48]
cmp qword [rsp + 0x60], 8
cmovae rcx, qword [rsp + 0x48]
lea rdx, [0x1401e7910]
call fcn.140144ea8
mov rbx, rax
mov rdx, qword [rsp + 0x60]
cmp rdx, 8
jb 0x140023dbb
lea rdx, [rdx*2 + 2]
mov rcx, qword [rsp + 0x48]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140023db6
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140024798
call fcn.140138d84
mov qword [rsp + 0x58], r13
mov qword [rsp + 0x60], 7
mov word [rsp + 0x48], r13w
mov rdx, qword [rbp - 0x80]
cmp rdx, 0x10
jb 0x140023e0b
inc rdx
mov rcx, qword [rsp + 0x68]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140023e06
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14002479e
call fcn.140138d84
movdqa xmm0, xmmword [0x1401fb460]
movdqu xmmword [rsp + 0x78], xmm0
mov byte [rsp + 0x68], 0
test rbx, rbx
jne 0x1400240d5
lea rcx, [0x140000000]
lea rax, [rcx + 0x1e6bd0]
mov qword [rbp - 0x70], rax
lea rax, [rcx + 0x1e6aa8]
mov qword [rbp - 0x60], rax
mov qword [rbp + 0x30], r13
mov qword [rbp + 0x58], r13
xorps xmm0, xmm0
movdqa xmmword [rbp + 0x60], xmm0
mov dword [rbp + 0x110], 1
lea r12, vtable.std::basic_istream_char__struct_std::char_traits_char__.0
mov qword [rbp + 0x28], r12
mov dword [rbp + 0x24], 0x80
mov qword [rbp - 0x68], r13
xor r8d, r8d
lea rdx, [rbp - 0x58]
lea rcx, [rbp + 0x28]
call fcn.140009c10
nop
mov rax, qword [rbp - 0x60]
movsxd rcx, dword [rax + 4]
lea r15, vtable.std::basic_ostream_char__struct_std::char_traits_char__.0
mov qword [rbp + rcx - 0x60], r15
mov rax, qword [rbp - 0x60]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0x10]
mov dword [rbp + rcx - 0x64], edx
mov rax, qword [rbp - 0x70]
movsxd rcx, dword [rax + 4]
lea r14, vtable.std::basic_iostream_char__struct_std::char_traits_char__.0
mov qword [rbp + rcx - 0x70], r14
mov rax, qword [rbp - 0x70]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0x20]
mov dword [rbp + rcx - 0x74], edx
mov rax, qword [rbp - 0x70]
movsxd rcx, dword [rax + 4]
lea rdi, vtable.std::basic_stringstream_char__struct_std::char_traits_char___class_std::allocator_char__.0
mov qword [rbp + rcx - 0x70], rdi
mov rax, qword [rbp - 0x70]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0x98]
mov dword [rbp + rcx - 0x74], edx
lea rcx, [rbp - 0x58]
call fcn.140009780
lea rax, vtable.std::basic_stringbuf_char__struct_std::char_traits_char___class_std::allocator_char__.0
mov qword [rbp - 0x58], rax
mov qword [rbp + 0x10], r13
mov dword [rbp + 0x18], r13d
lea rdx, str.readFile
lea rcx, [rbp - 0x60]
call fcn.140003440
mov rcx, rax
lea rdx, [0x1401e68f8]
call fcn.140003440
lea edx, [rbx + 0x25]
mov rcx, rax
call fcn.140006c40
mov rcx, rax
lea rdx, [0x14017bbd0]
call fcn.140003440
mov rcx, rax
lea rdx, str.Failed_to_open_file
call fcn.140003440
mov rcx, rax
mov rdx, rsi
call fcn.140003440
nop
xorps xmm0, xmm0
movups xmmword [rsp + 0x68], xmm0
movdqa xmm1, xmmword [0x1401fb460]
movdqu xmmword [rsp + 0x78], xmm1
mov byte [rsp + 0x68], bl
mov dword [rbp + 0x110], 0x21
movups xmmword [rsp + 0x30], xmm0
mov ecx, dword [rbp + 0x18]
mov eax, ecx
and al, 0x22
cmp al, 2
je 0x140023fb6
mov rax, qword [rbp - 0x18]
mov r8, qword [rax]
test r8, r8
je 0x140023fb6
mov rax, qword [rbp - 0x38]
mov rdx, qword [rax]
cmp r8, qword [rbp + 0x10]
cmovb r8, qword [rbp + 0x10]
sub r8, rdx
jmp 0x140023fe7
test cl, 4
jne 0x140023fdd
mov rax, qword [rbp - 0x20]
mov rcx, qword [rax]
test rcx, rcx
je 0x140023fdd
mov rax, qword [rbp - 0x40]
mov rdx, qword [rax]
mov rax, qword [rbp - 8]
movsxd r8, dword [rax]
add r8, rcx
sub r8, rdx
jmp 0x140023fe7
mov r8, qword [rsp + 0x38]
mov rdx, qword [rsp + 0x30]
test rdx, rdx
je 0x140023ff7
lea rcx, [rsp + 0x68]
call fcn.140009a50
nop
lea rcx, [rsp + 0x68]
call fcn.14003a9c0
nop
mov rdx, qword [rbp - 0x80]
cmp rdx, 0x10
jb 0x14002403f
inc rdx
mov rcx, qword [rsp + 0x68]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140024039
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400247a4
call fcn.140138d84
nop
mov rax, qword [rbp - 0x70]
movsxd rcx, dword [rax + 4]
mov qword [rbp + rcx - 0x70], rdi
mov rax, qword [rbp - 0x70]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0x98]
mov dword [rbp + rcx - 0x74], edx
lea rcx, [rbp - 0x58]
call fcn.1400067c0
mov rax, qword [rbp - 0x70]
movsxd rcx, dword [rax + 4]
mov qword [rbp + rcx - 0x70], r14
mov rax, qword [rbp - 0x70]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0x20]
mov dword [rbp + rcx - 0x74], edx
mov rax, qword [rbp - 0x60]
movsxd rcx, dword [rax + 4]
mov qword [rbp + rcx - 0x60], r15
mov rax, qword [rbp - 0x60]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0x10]
mov dword [rbp + rcx - 0x64], edx
mov rax, qword [rbp - 0x70]
movsxd rcx, dword [rax + 4]
mov qword [rbp + rcx - 0x70], r12
mov rax, qword [rbp - 0x70]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0x18]
mov dword [rbp + rcx - 0x74], edx
lea rax, vtable.std::ios_base.0
mov qword [rbp + 0x28], rax
lea rcx, [rbp + 0x28]
call fcn.1401379a8
nop
jmp 0x140024775
mov r9, rbx
mov edx, 1
lea r8d, [rdx + 3]
lea rcx, [rbp + 0x110]
call fcn.140145680
cmp rax, 4
jne 0x14002476d
cmp byte [rbp + 0x110], 0x4d
jne 0x14002476d
cmp byte [rbp + 0x111], 0x54
jne 0x14002476d
cmp byte [rbp + 0x112], 0x68
jne 0x14002476d
cmp byte [rbp + 0x113], 0x64
jne 0x14002476d
mov rcx, rbx
call fcn.140024a30
mov rcx, rbx
call fcn.1401461c8
test eax, eax
jne 0x1400244ae
movabs r12, 0x7fffffffffffffff
nop dword [rax]
mov r9, rbx
mov edx, 1
lea r8d, [rdx + 3]
lea rcx, [rbp + 0x118]
call fcn.140145680
cmp rax, 4
jne 0x140024492
cmp byte [rbp + 0x118], 0x4d
jne 0x140024492
cmp byte [rbp + 0x119], 0x54
jne 0x140024492
cmp byte [rbp + 0x11a], 0x72
jne 0x140024492
cmp byte [rbp + 0x11b], 0x6b
jne 0x140024492
mov r9, rbx
mov rdx, rax
lea r8d, [rax - 3]
lea rcx, [rbp + 0x90]
call fcn.140145680
nop dword [rax]
mov rcx, rbx
call fcn.1401461c8
test eax, eax
jne 0x1400244bd
mov rcx, rbx
call fcn.1401461c0
mov edi, eax
test al, al
jns 0x14002420b
and edi, 0x7f
mov rcx, rbx
call fcn.1401461c0
mov esi, eax
movzx edx, al
and edx, 0x7f
shl edi, 7
add edi, edx
mov rcx, rbx
call fcn.1401461c8
test eax, eax
jne 0x1400244bd
test sil, sil
js 0x1400241e1
cmp edi, 0xffffffff
je 0x1400244bd
mov rcx, rbx
call fcn.1401461c0
cmp eax, 0xffffffff
je 0x14002449e
movzx ecx, al
sub ecx, 0xf0
je 0x1400242d9
cmp ecx, 0xf
jne 0x1400241c0
mov rcx, rbx
call fcn.1401461c0
mov edi, eax
mov rcx, rbx
call fcn.1401461c0
cmp edi, 0x2f
je 0x14002449e
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x30], xmm0
mov rdi, r13
mov qword [rsp + 0x40], r13
movsxd rsi, eax
test eax, eax
je 0x14002427e
mov rdx, rsi
lea rcx, [rsp + 0x30]
call fcn.140024da0
mov rdi, qword [rsp + 0x40]
mov r9, rbx
mov r8d, 1
mov rdx, rsi
mov rsi, qword [rsp + 0x30]
mov rcx, rsi
call fcn.140145680
nop
test rsi, rsi
je 0x1400241c0
sub rdi, rsi
mov rax, rsi
cmp rdi, 0x1000
jb 0x1400242c9
add rdi, 0x27
mov rsi, qword [rsi - 8]
sub rax, rsi
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400247b0
mov rdx, rdi
mov rcx, rsi
call fcn.140138d84
jmp 0x1400241c0
mov rcx, rbx
call fcn.1401461c8
test eax, eax
jne 0x14002431e
mov rcx, rbx
call fcn.1401461c0
mov edi, eax
test al, al
jns 0x140024323
and edi, 0x7f
mov rcx, rbx
call fcn.1401461c0
mov esi, eax
movzx edx, al
and edx, 0x7f
shl edi, 7
add edi, edx
mov rcx, rbx
call fcn.1401461c8
test eax, eax
jne 0x14002431e
test sil, sil
jns 0x140024323
jmp 0x1400242f6
mov edi, 0xffffffff
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x30], xmm0
mov rsi, r13
mov qword [rsp + 0x40], r13
lea eax, [rdi + 1]
movsxd rdx, eax
test eax, eax
je 0x140024356
cmp rdx, r12
ja 0x1400247aa
lea rcx, [rsp + 0x30]
call fcn.1400156c0
mov rsi, qword [rsp + 0x40]
mov byte [rbp + 0x110], 0xf0
mov rdi, qword [rsp + 0x38]
cmp rdi, rsi
je 0x140024374
mov byte [rdi], 0xf0
inc rdi
mov qword [rsp + 0x38], rdi
jmp 0x140024392
lea r8, [rbp + 0x110]
mov rdx, rdi
lea rcx, [rsp + 0x30]
call fcn.140016eb0
mov rsi, qword [rsp + 0x40]
mov rdi, qword [rsp + 0x38]
mov rcx, rbx
call fcn.1401461c0
cmp eax, 0xf7
je 0x1400243f8
cmp eax, 0xf8
je 0x1400243f8
mov byte [rbp + 0x110], al
cmp rdi, rsi
je 0x1400243bf
mov byte [rdi], al
inc rdi
mov qword [rsp + 0x38], rdi
jmp 0x1400243dd
lea r8, [rbp + 0x110]
mov rdx, rdi
lea rcx, [rsp + 0x30]
call fcn.140016eb0
mov rsi, qword [rsp + 0x40]
mov rdi, qword [rsp + 0x38]
mov rcx, rbx
call fcn.1401461c8
test eax, eax
jne 0x140024411
mov rcx, rbx
call fcn.1401461c0
cmp eax, 0xf7
jne 0x1400243a1
mov byte [rbp + 0x110], 0xf7
cmp rdi, rsi
je 0x140024418
mov byte [rdi], 0xf7
inc rdi
mov qword [rsp + 0x38], rdi
jmp 0x140024436
mov r14, qword [rsp + 0x30]
jmp 0x140024451
lea r8, [rbp + 0x110]
mov rdx, rdi
lea rcx, [rsp + 0x30]
call fcn.140016eb0
mov rsi, qword [rsp + 0x40]
mov rdi, qword [rsp + 0x38]
mov r14, qword [rsp + 0x30]
sub rdi, r14
mov rdx, qword [r15 + 8]
mov r9, rdi
mov r8, r14
mov rcx, r15
call fcn.14000eab0
nop
test r14, r14
je 0x1400241c0
sub rsi, r14
mov rax, r14
cmp rsi, 0x1000
jb 0x140024482
add rsi, 0x27
mov r14, qword [r14 - 8]
sub rax, r14
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400247b0
mov rdx, rsi
mov rcx, r14
call fcn.140138d84
jmp 0x1400241c0
mov rcx, rbx
call fcn.140024a30
test al, al
je 0x1400244ae
mov rcx, rbx
call fcn.1401461c8
test eax, eax
je 0x140024150
mov rcx, rbx
call fcn.140144fe4
mov al, 1
jmp 0x140024777
lea rcx, [0x140000000]
lea rax, [rcx + 0x1e6bd0]
mov qword [rbp - 0x70], rax
lea rax, [rcx + 0x1e6aa8]
mov qword [rbp - 0x60], rax
mov qword [rbp + 0x30], r13
mov qword [rbp + 0x58], r13
xorps xmm0, xmm0
movdqa xmmword [rbp + 0x60], xmm0
mov dword [rbp + 0x110], 0x40
lea r12, vtable.std::basic_istream_char__struct_std::char_traits_char__.0
mov qword [rbp + 0x28], r12
mov dword [rbp + 0x24], 0x80
mov qword [rbp - 0x68], r13
xor r8d, r8d
lea rdx, [rbp - 0x58]
lea rcx, [rbp + 0x28]
call fcn.140009c10
nop
mov rax, qword [rbp - 0x60]
movsxd rcx, dword [rax + 4]
lea r15, vtable.std::basic_ostream_char__struct_std::char_traits_char__.0
mov qword [rbp + rcx - 0x60], r15
mov rax, qword [rbp - 0x60]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0x10]
mov dword [rbp + rcx - 0x64], edx
mov rax, qword [rbp - 0x70]
movsxd rcx, dword [rax + 4]
lea r14, vtable.std::basic_iostream_char__struct_std::char_traits_char__.0
mov qword [rbp + rcx - 0x70], r14
mov rax, qword [rbp - 0x70]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0x20]
mov dword [rbp + rcx - 0x74], edx
mov rax, qword [rbp - 0x70]
movsxd rcx, dword [rax + 4]
lea rdi, vtable.std::basic_stringstream_char__struct_std::char_traits_char___class_std::allocator_char__.0
mov qword [rbp + rcx - 0x70], rdi
mov rax, qword [rbp - 0x70]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0x98]
mov dword [rbp + rcx - 0x74], edx
lea rcx, [rbp - 0x58]
call fcn.140009780
lea rax, vtable.std::basic_stringbuf_char__struct_std::char_traits_char___class_std::allocator_char__.0
mov qword [rbp - 0x58], rax
mov qword [rbp + 0x10], r13
mov dword [rbp + 0x18], r13d
lea rdx, str.readFile
lea rcx, [rbp - 0x60]
call fcn.140003440
mov rcx, rax
lea rdx, [0x1401e68f8]
call fcn.140003440
mov edx, 0x44
mov rcx, rax
call fcn.140006c40
mov rcx, rax
lea rdx, [0x14017bbd0]
call fcn.140003440
mov rcx, rax
lea rdx, str.Failed_to_read_variable_length_variable
call fcn.140003440
nop
xorps xmm0, xmm0
movups xmmword [rbp + 0x98], xmm0
movdqa xmm1, xmmword [0x1401fb460]
movdqu xmmword [rbp + 0xa8], xmm1
mov byte [rbp + 0x98], 0
mov dword [rbp + 0x110], 0x840
movups xmmword [rsp + 0x30], xmm0
mov ecx, dword [rbp + 0x18]
mov eax, ecx
and al, 0x22
cmp al, 2
je 0x14002464a
mov rax, qword [rbp - 0x18]
mov r8, qword [rax]
test r8, r8
je 0x14002464a
mov rax, qword [rbp - 0x38]
mov rdx, qword [rax]
cmp r8, qword [rbp + 0x10]
cmovb r8, qword [rbp + 0x10]
sub r8, rdx
jmp 0x14002467b
test cl, 4
jne 0x140024671
mov rax, qword [rbp - 0x20]
mov rcx, qword [rax]
test rcx, rcx
je 0x140024671
mov rax, qword [rbp - 0x40]
mov rdx, qword [rax]
mov rax, qword [rbp - 8]
movsxd r8, dword [rax]
add r8, rcx
sub r8, rdx
jmp 0x14002467b
mov r8, qword [rsp + 0x38]
mov rdx, qword [rsp + 0x30]
test rdx, rdx
je 0x14002468d
lea rcx, [rbp + 0x98]
call fcn.140009a50
nop
lea rcx, [rbp + 0x98]
call fcn.14003a9c0
nop
mov rdx, qword [rbp + 0xb0]
cmp rdx, 0x10
jb 0x1400246dc
inc rdx
mov rcx, qword [rbp + 0x98]
mov rax, rcx
cmp rdx, 0x1000
jb 0x1400246d6
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140024792
call fcn.140138d84
nop
mov rax, qword [rbp - 0x70]
movsxd rcx, dword [rax + 4]
mov qword [rbp + rcx - 0x70], rdi
mov rax, qword [rbp - 0x70]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0x98]
mov dword [rbp + rcx - 0x74], edx
lea rcx, [rbp - 0x58]
call fcn.1400067c0
mov rax, qword [rbp - 0x70]
movsxd rcx, dword [rax + 4]
mov qword [rbp + rcx - 0x70], r14
mov rax, qword [rbp - 0x70]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0x20]
mov dword [rbp + rcx - 0x74], edx
mov rax, qword [rbp - 0x60]
movsxd rcx, dword [rax + 4]
mov qword [rbp + rcx - 0x60], r15
mov rax, qword [rbp - 0x60]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0x10]
mov dword [rbp + rcx - 0x64], edx
mov rax, qword [rbp - 0x70]
movsxd rcx, dword [rax + 4]
mov qword [rbp + rcx - 0x70], r12
mov rax, qword [rbp - 0x70]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0x18]
mov dword [rbp + rcx - 0x74], edx
lea rax, vtable.std::ios_base.0
mov qword [rbp + 0x28], rax
lea rcx, [rbp + 0x28]
call fcn.1401379a8
nop
mov rcx, rbx
call fcn.140144fe4
xor al, al
mov rbx, qword [rsp + 0x200]
add rsp, 0x1c0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
call fcn.14013fad4
nop
call fcn.14013fad4
nop
call fcn.14013fad4
nop
call fcn.14013fad4
nop
call fcn.14000b710
nop
call fcn.14013fad4
int3