Function at 0x180023fc0
Capabilities:
Check if file exists
Extract resource via kernel32 functions
Get file attributes
Read file on windows

Disassembly:
mov rax, rsp
push rbp
push rdi
push r12
push r14
push r15
lea rbp, [rax - 0x3e8]
sub rsp, 0x4c0
mov qword [rsp + 0x60], 0xfffffffffffffffe
mov qword [rax + 8], rbx
mov qword [rax + 0x18], rsi
mov rax, qword [0x18005e030]
xor rax, rsp
mov qword [rbp + 0x3b0], rax
mov r15, rdx
movzx r14d, cl
xor r12d, r12d
mov dword [rsp + 0x40], r12d
lea r8, [0x180032670]
lea rdx, str.__MAIN__
mov rcx, qword [0x1800734d8]
call qword [sym.imp.KERNEL32.dll_FindResourceW]
mov rdi, rax
test rax, rax
je 0x18002407d
mov rdx, rax
mov rcx, qword [0x1800734d8]
call qword [sym.imp.KERNEL32.dll_LoadResource]
mov rbx, rax
mov rdx, rdi
mov rcx, qword [0x1800734d8]
call qword [sym.imp.KERNEL32.dll_SizeofResource]
mov edi, eax
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_LockResource]
mov esi, 0x400
cmp edi, esi
cmovb esi, edi
mov dword [rsp + 0x40], esi
mov r8d, esi
mov rdx, rax
lea rcx, [rbp - 0x50]
call fcn.1800148d0
jmp 0x1800242da
or rbx, 0xffffffffffffffff
mov qword [rsp + 0x58], rbx
lea rcx, [rbp - 0x78]
call fcn.180027600
nop
mov qword [rbp - 0x80], 7
mov qword [rsp + 0x78], r12
mov word [rsp + 0x68], r12w
lea r8d, [rbx + 5]
lea rdx, str..dna
lea rcx, [rsp + 0x68]
call fcn.1800019c0
lea rax, [rsp + 0x68]
mov qword [rsp + 0x50], rax
mov eax, 0x2e
mov word [rsp + 0x48], ax
mov rcx, qword [rbp - 0x68]
cmp rcx, 1
jb 0x180024171
lea rax, [rbp - 0x78]
mov r9, qword [rbp - 0x78]
mov r11, qword [rbp - 0x60]
cmp r11, 8
cmovae rax, r9
lea r10, [rcx - 1]
lea r10, [rax + r10*2]
nop word [rax + rax]
cmp word [r10], 0x2e
sete al
test al, al
je 0x180024149
mov ecx, 1
lea rdx, [rsp + 0x48]
mov r8, r10
nop dword [rax]
movzx eax, word [rdx]
cmp word [r8], ax
jne 0x180024139
add r8, 2
add rdx, 2
sub rcx, 1
je 0x18002415d
jmp 0x180024120
mov ecx, 1
cmp word [r8], ax
cmovb ecx, ebx
test ecx, ecx
je 0x18002415d
lea rcx, [rbp - 0x78]
call fcn.1800011f0
cmp r10, rax
je 0x180024171
sub r10, 2
jmp 0x180024100
lea rax, [rbp - 0x78]
cmp r11, 8
cmovae rax, r9
sub r10, rax
sar r10, 1
jmp 0x180024174
mov r10, rbx
mov qword [rsp + 0x28], rbx
mov qword [rsp + 0x20], r12
lea r9, [rsp + 0x68]
mov r8, rbx
mov rdx, r10
lea rcx, [rbp - 0x78]
call fcn.180002840
nop
lea rcx, [rsp + 0x68]
call fcn.1800010b0
lea rcx, [rbp - 0x78]
cmp qword [rbp - 0x60], 8
cmovae rcx, qword [rbp - 0x78]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x1800244ce
test al, 0x10
jne 0x1800244ce
mov qword [rbp - 0x80], 7
mov qword [rsp + 0x78], r12
mov word [rsp + 0x68], r12w
mov r9, rbx
xor r8d, r8d
lea rdx, [rbp - 0x78]
lea rcx, [rsp + 0x68]
call fcn.180001b10
lea rcx, [rsp + 0x68]
cmp qword [rbp - 0x80], 8
cmovae rcx, qword [rsp + 0x68]
mov qword [rsp + 0x30], r12
mov dword [rsp + 0x28], 0x80
mov dword [rsp + 0x20], 3
xor r9d, r9d
mov edx, 0x80000000
lea r8d, [r9 + 1]
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov rbx, rax
mov qword [rsp + 0x58], rax
cmp rax, 0xffffffffffffffff
jne 0x18002426e
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, eax
test eax, eax
jle 0x180024243
movzx edi, ax
or edi, 0x80070000
lea rcx, [rsp + 0x68]
call fcn.1800010b0
test edi, edi
jns 0x180024278
test r14b, r14b
je 0x1800244eb
mov r9d, edi
mov edx, 0x98
lea ecx, [rdx - 1]
lea r8d, [rdx - 0x22]
jmp 0x1800244e5
lea rcx, [rsp + 0x68]
call fcn.1800010b0
mov qword [rsp + 0x20], r12
lea r9, [rsp + 0x40]
mov r8d, 0x400
lea rdx, [rbp - 0x50]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x1800242bd
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x1800242ad
movzx eax, ax
or eax, 0x80070000
test eax, eax
jns 0x1800242bd
test r14b, r14b
je 0x1800244eb
mov r9d, eax
jmp 0x18002425d
lea rcx, [rbp - 0x78]
call fcn.1800010b0
nop
cmp rbx, 0xffffffffffffffff
je 0x1800242d6
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov esi, dword [rsp + 0x40]
cmp esi, 3
jb 0x1800243b2
movzx eax, byte [rbp - 0x50]
cmp al, 0xef
je 0x1800243b2
cmp al, 0xff
jne 0x1800242f9
cmp byte [rbp - 0x4f], 0xfe
jmp 0x180024305
cmp al, 0xfe
jne 0x1800243b2
cmp byte [rbp - 0x4f], 0xff
jne 0x1800243b2
mov r8d, esi
mov qword [rbp - 0x80], 7
mov qword [rsp + 0x78], r12
mov word [rsp + 0x68], r12w
lea rdx, [rbp - 0x50]
lea rcx, [rsp + 0x68]
call fcn.1800019c0
lea rdx, [rsp + 0x68]
mov rcx, r15
call fcn.1800017d0
mov rdx, qword [rbp - 0x80]
cmp rdx, 8
jb 0x1800244c7
inc rdx
mov rcx, qword [rsp + 0x68]
movabs rax, 0x7fffffffffffffff
cmp rdx, rax
jbe 0x180024367
call fcn.180016dc0
int3
lea rax, [rdx + rdx]
cmp rax, 0x1000
jb 0x1800244c2
test byte [rsp + 0x68], 0x1f
je 0x180024384
call fcn.180016dc0
int3
mov rax, qword [rcx - 8]
cmp rax, rcx
jb 0x180024393
call fcn.180016dc0
int3
sub rcx, rax
cmp rcx, 8
jae 0x1800243a2
call fcn.180016dc0
int3
cmp rcx, 0x27
jbe 0x1800244bf
call fcn.180016dc0
int3
mov r8d, esi
mov qword [rbp - 0x80], SafeArrayAccessData
mov qword [rsp + 0x78], r12
mov byte [rsp + 0x68], 0
lea rdx, [rbp - 0x50]
lea rcx, [rsp + 0x68]
call fcn.180001ce0
nop
lea rdx, [rsp + 0x68]
lea rcx, [rbp - 0x78]
call fcn.180028270
mov rdx, rax
mov rcx, r15
call fcn.1800017d0
mov rdx, qword [rbp - 0x60]
cmp rdx, 8
jb 0x18002445f
inc rdx
mov rcx, qword [rbp - 0x78]
movabs rax, 0x7fffffffffffffff
cmp rdx, rax
jbe 0x180024415
call fcn.180016dc0
int3
lea rax, [rdx + rdx]
cmp rax, 0x1000
jb 0x18002445a
test byte [rbp - 0x78], 0x1f
je 0x18002442d
call fcn.180016dc0
int3
mov rax, qword [rcx - 8]
cmp rax, rcx
jb 0x18002443c
call fcn.180016dc0
int3
sub rcx, rax
cmp rcx, 8
jae 0x18002444b
call fcn.180016dc0
int3
cmp rcx, 0x27
jbe 0x180024457
call fcn.180016dc0
int3
mov rcx, rax
call fcn.180012060
mov qword [rbp - 0x60], 7
mov qword [rbp - 0x68], r12
mov word [rbp - 0x78], r12w
mov rax, qword [rbp - 0x80]
cmp rax, 0x10
jb 0x1800244c7
inc rax
mov rcx, qword [rsp + 0x68]
cmp rax, 0x1000
jb 0x1800244c2
test cl, 0x1f
je 0x180024495
call fcn.180016dc0
int3
mov rax, qword [rcx - 8]
cmp rax, rcx
jb 0x1800244a4
call fcn.180016dc0
int3
sub rcx, rax
cmp rcx, 8
jae 0x1800244b3
call fcn.180016dc0
int3
cmp rcx, 0x27
jbe 0x1800244bf
call fcn.180016dc0
int3
mov rcx, rax
call fcn.180012060
xor eax, eax
jmp 0x180024581
test r14b, r14b
je 0x1800244eb
mov edx, 0x95
lea ecx, [rdx - 1]
mov r9d, 0x80004005
lea r8d, [rdx + 1]
call fcn.180025240
nop
mov rax, qword [rbp - 0x60]
cmp rax, 8
jb 0x18002455c
lea rdx, [rax + 1]
mov rcx, qword [rbp - 0x78]
movabs rax, 0x7fffffffffffffff
cmp rdx, rax
jbe 0x180024512
call fcn.180016dc0
int3
lea rax, [rdx + rdx]
cmp rax, 0x1000
jb 0x180024557
test byte [rbp - 0x78], 0x1f
je 0x18002452a
call fcn.180016dc0
int3
mov rax, qword [rcx - 8]
cmp rax, rcx
jb 0x180024539
call fcn.180016dc0
int3
sub rcx, rax
cmp rcx, 8
jae 0x180024548
call fcn.180016dc0
int3
cmp rcx, 0x27
jbe 0x180024554
call fcn.180016dc0
int3
mov rcx, rax
call fcn.180012060
mov qword [rbp - 0x60], 7
mov qword [rbp - 0x68], r12
mov word [rbp - 0x78], r12w
cmp rbx, 0xffffffffffffffff
je 0x18002457c
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, 0x80004005
mov rcx, qword [rbp + 0x3b0]
xor rcx, rsp
call fcn.180012000
lea r11, [rsp + 0x4c0]
mov rbx, qword [r11 + 0x30]
mov rsi, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r12
pop rdi
pop rbp
ret