Function at 0x180037e00
Capabilities:
Read file on windows

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x80]
sub rsp, 0x180
mov rax, qword [0x1800a8088]
xor rax, rsp
mov qword [rbp + 0x78], rax
lea esi, [r8 + 0x10]
mov qword [rbp - 0x60], rcx
mov qword [rbp - 0x28], rdx
mov r13, rcx
mov rcx, qword [rbp + 0xe0]
mov rbx, r9
mov qword [rbp - 0x48], rcx
mov eax, r8d
mov qword [rbp - 0x70], rbx
mov rdi, rdx
mov dword [rbp - 0x58], eax
mov dword [rsp + 0x40], esi
cmp r8d, esi
jae case.0x180037ea8.59
movzx r14d, byte [rsp + 0x78]
lea rdx, [0x180000000]
mov r15d, dword [rsp + 0x7c]
xor esi, esi
mov ecx, dword [rsp + 0x40]
mov r12d, 0x6170
mov qword [rbp - 0x68], r14
add eax, 0xffffffcf
lea r10, [0x180096248]
cmp eax, 0x41
ja case.default.0x180037ea8
movzx eax, byte [rdx + rax + 0x388c4]
mov ecx, dword [rdx + rax*4 + 0x38880]
add rcx, rdx
jmp rcx
cmp dword [rbx], 0
mov r12, qword [rbp - 0x20]
je 0x180037edc
mov eax, dword [rdi]
mov rcx, r12
mov byte [rax + r12], 0
mov eax, dword [rdi]
add rax, r12
cmp r12, rax
jae 0x180037edc
cmp byte [rcx], 0
jne 0x180037ecf
mov byte [rcx], 0x20
mov eax, dword [rdi]
inc rcx
add rax, r12
cmp rcx, rax
jb 0x180037ec7
mov qword [rsp + 0x48], r12
mov r12d, 0x6170
jmp case.0x180037ea8.65
cmp qword [r13 + 0x18], 0x10
mov r8, r13
jb 0x180037efa
mov r8, qword [r13]
lea rdx, [rbp - 0x78]
mov ecx, 0xed
call fcn.18001ca20
cmp eax, 1
jne 0x18003877c
mov rax, qword [rbp - 0x78]
lea r8, [rbp + 0x60]
xor r14b, r14b
mov qword [rsp + 0x20], rax
mov r9d, 0xc2
mov qword [rbp - 0x68], r14
xor edx, edx
xor ecx, ecx
call fcn.18001b8d0
test rax, rax
jne 0x180038012
mov ebx, 0x106
mov esi, 0x7375
nop word [rax + rax]
cmp ebx, 0x106
je 0x180037fe5
cmp ebx, 0x49b0
je 0x180037fc1
cmp ebx, 0x925a
jne 0x180037ffb
mov rax, qword [rbp - 0x78]
lea r8, [rbp + 0x68]
mov r9d, 0xc2
mov qword [rsp + 0x20], rax
xor edx, edx
xor ecx, ecx
call fcn.18001b8d0
xor r8d, r8d
test rax, rax
je 0x180037faa
mov r9, qword [rbp - 0x78]
mov rdx, rdi
mov ecx, 0x8b
call fcn.18001e6a0
mov r14, rax
jmp 0x180037ffb
mov rdx, qword [rbp - 0x78]
xor r9d, r9d
mov ecx, 0x85
call fcn.180012760
movzx r14d, al
jmp 0x180037ffb
mov r8d, 2
mov byte [rbp + 0x6a], 0
lea rdx, [0x18009c2c4]
lea rcx, [rbp + 0x6a]
call fcn.18006add0
mov word [rbp + 0x6c], si
mov byte [rbp + 0x6e], 0
jmp 0x180037ffb
mov r8d, 2
lea rdx, [0x18009c29f]
lea rcx, [rbp + 0x68]
call fcn.18006add0
add ebx, 0x48aa
cmp ebx, 0xd9fe
jbe 0x180037f50
jmp 0x1800380ba
mov rax, qword [rax + 0x28]
mov rcx, qword [rax + 8]
test rcx, rcx
je 0x1800380c4
lea r8, [rbp - 0x80]
mov dword [rbp - 0x80], 0x626f6a
sub r8, rcx
movzx edx, byte [rcx]
movzx eax, byte [rcx + r8]
sub edx, eax
jne 0x180038044
inc rcx
test eax, eax
jne 0x180038031
test edx, edx
jne 0x1800380c4
mov ebx, SafeArrayDestroy
mov r13d, 0x736d
mov eax, ebx
sub eax, 0xc
je 0x180038068
cmp eax, 1
jne 0x1800380af
mov dword [rbp + 0x70], 0x61726170
jmp 0x1800380af
mov rax, qword [rbp - 0x78]
lea r8, [rbp + 0x70]
mov r9d, 0xc2
mov qword [rsp + 0x20], rax
xor edx, edx
mov word [rbp + 0x74], r13w
xor ecx, ecx
mov byte [rbp + 0x76], 0
call fcn.18001b8d0
test rax, rax
je 0x1800380af
mov rcx, qword [rax + 0x28]
mov r9d, 0x47
xor r8d, r8d
mov qword [rsp + 0x20], rdi
xor edx, edx
call fcn.1800163a0
movzx r14d, al
dec ebx
cmp ebx, 0xb
ja 0x180038053
mov r13, qword [rbp - 0x60]
mov rbx, qword [rbp - 0x70]
xor esi, esi
mov qword [rbp - 0x68], r14
mov r9d, reloc.OLEAUT32.dll_VarUI2FromUI1
lea rdx, [rbp - 0x78]
xor r8d, r8d
xor ecx, ecx
call fcn.18003aec0
jmp 0x1800386a9
mov qword [rbp - 0x50], r13
mov qword [rbp - 0x38], rsi
jmp case.0x180037ea8.65
mov rdx, qword [rbx]
mov r9, qword [rbp - 0x38]
cmp r9, rdx
jae 0x1800386a9
mov r8, qword [rbp - 0x50]
nop
test r8, r8
je 0x1800386a9
movzx eax, byte [rdi + r9]
cmp al, byte [r8]
jge 0x180038119
mov r8, qword [r8 + 8]
jmp 0x180038135
jne 0x180038131
inc r9
mov qword [rbp - 0x38], r9
cmp r9, rdx
jae 0x1800386a9
mov r8, qword [r8 + 0x10]
jmp 0x180038135
mov r8, qword [r8 + 0x18]
mov qword [rbp - 0x50], r8
cmp r9, rdx
jb 0x180038100
jmp 0x1800386a9
lea rdx, [rbp - 0x10]
mov qword [rbp], rsi
mov rcx, rdi
mov qword [rbp + 8], reloc.OLEAUT32.dll_SafeArrayDestroy
mov byte [rbp - 0x10], 0
mov qword [rbp + 0x20], rsi
mov qword [rbp + 0x28], reloc.OLEAUT32.dll_SafeArrayDestroy
mov byte [rbp + 0x10], 0
mov qword [rbp + 0x40], rsi
mov qword [rbp + 0x48], reloc.OLEAUT32.dll_SafeArrayDestroy
mov byte [rbp + 0x30], 0
mov qword [rbp + 0x50], rsi
mov qword [rbp + 0x58], 0xffffffffffffffff
call fcn.180055f10
lea rcx, [rdi + 0x20]
lea rdx, [rbp + 0x10]
call fcn.180055f10
lea rcx, [rdi + 0x40]
lea rdx, [rbp + 0x30]
call fcn.180055f10
mov rax, qword [rbp + 0x50]
lea rcx, [rbp - 0x10]
mov qword [rdi + 0x60], rax
mov rax, qword [rbp + 0x58]
mov qword [rdi + 0x68], rax
call fcn.1800058f0
mov qword [rbp - 0x78], rsi
jmp 0x1800386a9
mov ecx, dword [r13]
cmp ecx, 0x80
jb 0x1800387d9
cmp ecx, 0x800
jb 0x1800387b8
cmp ecx, 0x10000
jae 0x180038205
mov eax, 0x73
cmp eax, 0x73
je 0x180038786
add eax, 0x2463
cmp eax, 0x2463
jbe 0x1800381f0
shr ecx, 0x12
and cl, 7
or cl, 0xf0
mov byte [rdi], cl
mov eax, dword [r13]
shr eax, 0xc
and al, 0x3f
or al, 0x80
mov byte [rdi + 1], al
jmp case.0x180037ea8.65
mov rax, qword [r13]
mov dword [rsp + 0x44], esi
test rax, rax
je 0x180038474
cmp qword [rax + 8], 0
je 0x180038474
cmp dword [rax + 4], 0
jl 0x180038474
mov r14, qword [rsp + 0x50]
mov r12d, esi
mov r15, qword [rbp - 0x60]
mov r13d, 6
jmp 0x180038267
lea rdx, [0x180000000]
cmp r12d, 5
ja case.default.0x18003827e
mov eax, r12d
mov ecx, dword [rdx + rax*4 + 0x38908]
add rcx, rdx
jmp rcx
lea rax, [rsp + 0x68]
xor edx, edx
lea r9, [rsp + 0x50]
mov qword [rsp + 0x50], rax
xor ecx, ecx
mov r8d, 0xea
call fcn.180003f40
mov r14, rax
lea r10, [0x180096248]
jmp case.default.0x18003827e
mov qword [rsp + 0x50], r14
lea r9, [rsp + 0x50]
xor r8d, r8d
mov qword [rsp + 0x20], rsi
xor edx, edx
mov ecx, 0x93
call fcn.180035cc0
lea r10, [0x180096248]
jmp case.default.0x18003827e
xor r9d, r9d
mov r8d, reloc.OLEAUT32.dll_VarUI2FromUI1
mov rdx, r10
xor ecx, ecx
call fcn.180004c30
mov rcx, rax
mov qword [rbp - 0x30], rax
mov eax, dword [rbx]
lea r9, [rsp + 0x60]
mov dword [rsp + 0x50], eax
lea r8, [rbp - 0x80]
mov eax, dword [rdi]
lea rdx, [rsp + 0x50]
mov dword [rbp - 0x80], eax
mov rax, qword [r15]
mov qword [rsp + 0x60], rax
lea rax, [rbp - 0x40]
mov qword [rbp - 0x40], rcx
mov ecx, 0x2f
mov qword [rsp + 0x20], rax
call fcn.18003ca60
lea r10, [0x180096248]
jmp case.default.0x18003827e
mov r9, r14
xor r8d, r8d
xor edx, edx
mov ecx, 0xbf
call fcn.18001e6a0
mov r9, qword [r15]
xor r8d, r8d
xor edx, edx
mov ecx, 0xbf
mov rdi, rax
call fcn.18001e6a0
mov ecx, 2
mov rbx, rax
call fcn.180066670
mov rcx, rax
mov qword [rsp + 0x38], rdi
mov rax, qword [rbp - 0x70]
lea r8, [0x180096248]
mov rdi, qword [rbp - 0x28]
lea rdx, str.warn_pragma_options_align_unsupported_option
xor r9d, r9d
mov eax, dword [rax]
mov dword [rsp + 0x30], eax
mov eax, dword [rdi]
mov dword [rsp + 0x28], eax
mov qword [rsp + 0x20], rbx
call fcn.1800010d0
mov rax, qword [rbp - 0x30]
lea r9, [rsp + 0x60]
mov qword [rsp + 0x60], rax
lea rcx, [rbp - 0x40]
lea rax, [rsp + 0x68]
mov qword [rbp - 0x40], rax
call fcn.18002fa20
mov edx, dword [rsp + 0x44]
lea r10, [0x180096248]
mov rbx, qword [rbp - 0x70]
test eax, eax
mov ecx, esi
sete cl
add edx, ecx
mov dword [rsp + 0x44], edx
jmp 0x180038458
mov rax, qword [rbp - 0x30]
lea r9, [rsp + 0x60]
mov qword [rsp + 0x60], rax
jmp 0x1800382b7
mov rax, qword [r15]
test rax, rax
je 0x18003843c
mov r9, qword [rax + 8]
test r9, r9
je 0x18003843c
mov r8d, dword [rax + 4]
test r8d, r8d
js 0x18003843c
mov ecx, dword [rdi]
test ecx, ecx
mov eax, dword [rbx]
lea edx, [rax + rcx]
cmovns edx, eax
mov eax, esi
cmovns eax, ecx
sub r8d, eax
cmp edx, r8d
cmovle r8d, edx
test r8d, r8d
jle 0x18003843c
cdqe
add rax, r9
mov dword [rsp + 0x6c], r8d
mov qword [rsp + 0x70], rax
jmp 0x180038450
mov dword [rsp + 0x6c], esi
mov qword [rsp + 0x70], r10
nop word [rax + rax]
mov dword [rsp + 0x68], esi
mov edx, dword [rsp + 0x44]
inc r12d
sub r13, 1
jne 0x180038260
mov r15d, dword [rsp + 0x7c]
mov qword [rsp + 0x50], r14
jmp 0x18003860f
mov r14d, dword [rsp + 0x58]
mov r12d, 0x32
nop
cmp r12d, 0x32
jne 0x1800385fa
mov r8, qword [r13]
test r8, r8
je 0x18003851d
cmp qword [r8 + 8], 0
je 0x18003851d
cmp dword [r8 + 4], 0
jl 0x18003851d
mov edx, SafeArrayLock
nop word [rax + rax]
mov eax, edx
sub eax, 0xf
je 0x1800384e9
sub eax, 1
je 0x1800384d8
cmp eax, 1
jne 0x18003850a
mov ecx, dword [rdi]
mov r14d, esi
mov eax, dword [rbx]
test ecx, ecx
cmovns r14d, ecx
lea r15d, [rcx + rax]
cmovns r15d, eax
jmp 0x18003850a
mov eax, dword [r8 + 4]
sub eax, r14d
cmp r15d, eax
jle 0x18003850a
mov r15d, eax
jmp 0x18003850a
test r15d, r15d
jg 0x1800384f9
mov qword [rsp + 0x70], r10
mov dword [rsp + 0x6c], esi
jmp 0x18003850a
movsxd rax, r14d
add rax, qword [r8 + 8]
mov qword [rsp + 0x70], rax
mov dword [rsp + 0x6c], r15d
dec edx
cmp edx, 0xe
ja 0x1800384b0
mov dword [rsp + 0x58], r14d
mov dword [rsp + 0x7c], r15d
jmp 0x180038526
mov qword [rsp + 0x70], r10
mov dword [rsp + 0x6c], esi
lea rax, [rsp + 0x68]
mov dword [rsp + 0x68], esi
lea r9, [rsp + 0x60]
mov qword [rsp + 0x60], rax
xor edx, edx
xor ecx, ecx
mov r8d, 0xea
call fcn.180003f40
cmp dword [rsp + 0x6c], 0
mov r13, rax
mov qword [rsp + 0x50], rax
mov r9, r13
mov eax, esi
mov ecx, 0xbf
setne al
xor r8d, r8d
add dword [rsp + 0x44], eax
xor edx, edx
call fcn.18001e6a0
mov r9, qword [rbp - 0x60]
xor r8d, r8d
xor edx, edx
mov ecx, 0xbf
mov rdi, rax
mov r9, qword [r9]
call fcn.18001e6a0
mov ecx, 2
mov rbx, rax
call fcn.180066670
mov rcx, rax
mov qword [rsp + 0x38], rdi
mov rax, qword [rbp - 0x70]
lea r8, [0x180096248]
mov rdi, qword [rbp - 0x28]
lea rdx, str.void_glProgramUniform1i64vNV__s___d___d___s_
xor r9d, r9d
mov eax, dword [rax]
mov dword [rsp + 0x30], eax
mov eax, dword [rdi]
mov dword [rsp + 0x28], eax
mov qword [rsp + 0x20], rbx
call fcn.1800010d0
lea r9, [rsp + 0x60]
mov qword [rsp + 0x60], r13
xor r8d, r8d
mov qword [rsp + 0x20], rsi
xor edx, edx
mov ecx, 0x93
call fcn.180035cc0
mov rbx, qword [rbp - 0x70]
lea r10, [0x180096248]
mov r13, qword [rbp - 0x60]
add r12d, 0x7b
cmp r12d, 0xad
jb 0x180038480
mov edx, dword [rsp + 0x44]
mov r14, qword [rbp - 0x68]
test edx, edx
je 0x18003869f
mov ecx, 2
call fcn.180066670
mov r12, qword [rbp - 0x48]
lea r13, [0x180096248]
mov rcx, rax
mov qword [rsp + 0x30], r12
mov eax, dword [rsp + 0x44]
lea rdx, str.vim.event.EventHistoryCollector._.__
mov dword [rsp + 0x28], eax
xor r9d, r9d
mov r8, r13
mov qword [rsp + 0x20], rsi
call fcn.1800010d0
test r12, r12
je 0x180038680
mov ecx, 2
call fcn.180066670
mov rcx, rax
mov qword [rsp + 0x20], r12
xor r9d, r9d
lea rdx, str._Z16convert_uint_satm
mov r8, r13
call fcn.1800010d0
mov ecx, 2
call fcn.180066670
mov rcx, rax
lea rdx, str._utf8_to_wcs_12
xor r9d, r9d
mov r8, r13
call fcn.1800010d0
mov r13, qword [rbp - 0x60]
mov r12d, 0x6170
lea rdx, [0x180000000]
mov ecx, dword [rsp + 0x40]
mov eax, dword [rbp - 0x58]
inc eax
mov dword [rbp - 0x58], eax
cmp eax, ecx
jae case.0x180037ea8.59
jmp 0x180037e83
mov ecx, dword [rdi]
test ecx, ecx
jne 0x1800386d7
cmp dword [rbx], ecx
je 0x18003880a
cmp dword [rbx], 0
lea eax, [rcx + 1]
cmove eax, ecx
mov ecx, eax
call fcn.18006cfe0
mov qword [rbp - 0x20], rax
mov r12, rax
test rax, rax
je 0x1800387e5
mov r8d, dword [rdi]
mov r9, r13
mov edx, 1
mov rcx, rax
call fcn.18006cb98
mov ecx, dword [rdi]
cmp rax, rcx
jae 0x1800386a3
mov rcx, r12
call fcn.18006c3d8
call fcn.18006be3c
mov edx, dword [rax]
mov dword [rsp + 0x50], edx
mov dword [rsp + 0x58], 5
jmp 0x1800387f1
mov byte [rbp + 0x66], 0
jmp case.0x180037ea8.65
mov r8d, 3
lea rdx, [0x18009c38d]
lea rcx, [rbp + 0x60]
call fcn.18006add0
mov r8d, 2
mov byte [rbp + 0x63], 0
lea rdx, [0x18009c3a5]
lea rcx, [rbp + 0x63]
call fcn.18006add0
mov byte [rbp + 0x65], 0
jmp 0x1800386a9
mov byte [rbp + 0x65], 0x64
jmp case.0x180037ea8.65
mov byte [rsp + 0x48], 0
jmp case.0x180037ea8.59
shr ecx, 0xc
and cl, 0xf
mov dword [rsp + 0x48], 3
or cl, 0xe0
mov byte [rdi], cl
mov eax, dword [r13]
shr eax, 6
and al, 0x3f
or al, 0x80
mov byte [rdi + 1], al
movzx eax, byte [r13]
and al, 0x3f
or al, 0x80
mov byte [rdi + 2], al
jmp case.0x180037ea8.59
shr ecx, 6
and cl, 0x1f
mov dword [rsp + 0x48], 2
or cl, 0xc0
mov byte [rdi], cl
movzx eax, byte [r13]
and al, 0x3f
or al, 0x80
mov byte [rdi + 1], al
jmp case.0x180037ea8.59
mov byte [rdi], cl
mov dword [rsp + 0x48], 1
jmp case.0x180037ea8.59
mov dword [rsp + 0x50], esi
mov dword [rsp + 0x58], SafeArrayLock
mov rcx, qword [rbp - 0x48]
lea r8, [rsp + 0x58]
mov r9d, 0x112
lea rdx, [rsp + 0x50]
call fcn.18002d330
mov rax, rsi
jmp 0x180038856
mov byte [rsp + 0x48], r14b
jmp case.0x180037ea8.59
mov rax, qword [rbp - 0x50]
test rax, rax
je 0x18003880a
mov rax, qword [rax + 0x20]
jmp 0x180038856
mov eax, dword [r13]
shr eax, 6
and al, 0x3f
mov dword [rsp + 0x48], 4
or al, 0x80
mov byte [rdi + 2], al
movzx eax, byte [r13]
and al, 0x3f
or al, 0x80
mov byte [rdi + 3], al
jmp case.0x180037ea8.59
mov eax, dword [rsp + 0x44]
mov dword [rsp + 0x48], eax
mov rax, qword [rsp + 0x48]
mov rcx, qword [rbp + 0x78]
xor rcx, rsp
call fcn.1800618d0
mov rbx, qword [rsp + 0x1d0]
add rsp, 0x180
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret