Function at 0x1801a14e0
Capabilities:
Link many functions at runtime

Disassembly:
mov qword [rsp + 8], rcx
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x1f]
sub rsp, 0xa8
mov qword [rbp + 0xf], 0xfffffffffffffffe
mov rbx, rcx
xor r13d, r13d
mov qword [rcx + 0x10], r13
mov qword [rcx + 0x18], r13
mov qword [rcx + 0x20], r13
mov qword [rcx + 0x28], r13
mov qword [rcx + 0x58], r13
mov qword [rcx + 0x60], r13
mov qword [rcx + 0x68], r13
mov qword [rcx + 0x70], r13
mov qword [rcx + 8], rdx
mov dword [rcx], 1
mov r8d, 0x102b
lea rdx, [rbp - 0x31]
call fcn.1801a1b00
nop
mov rdx, rax
lea rcx, [rbx + 0x10]
call fcn.180170e50
nop
mov rcx, qword [rbp - 0x31]
mov qword [rbp - 0x29], r13
mov qword [rbp - 0x31], r13
lea r14d, [r13 - 1]
test rcx, rcx
je 0x1801a1586
add rcx, 0xfffffffffffffffc
mov eax, r14d
lock xadd dword [rcx], eax
cmp eax, 1
jne 0x1801a1586
test rcx, rcx
je 0x1801a1586
mov rcx, qword [rcx - 8]
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov r8d, 0x102f
lea rdx, [rbp - 0x21]
mov rcx, rbx
call fcn.1801a1b00
nop
mov rdx, rax
lea rcx, [rbx + 0x20]
call fcn.180170e50
nop
mov rcx, qword [rbp - 0x21]
mov qword [rbp - 0x19], r13
mov qword [rbp - 0x21], r13
test rcx, rcx
je 0x1801a15d6
add rcx, 0xfffffffffffffffc
mov eax, r14d
lock xadd dword [rcx], eax
cmp eax, 1
jne 0x1801a15d6
test rcx, rcx
je 0x1801a15d6
mov rcx, qword [rcx - 8]
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov qword [rbp + 0x7f], r13
mov qword [rbp + 0x77], r13
mov rdi, qword [rbx + 8]
mov r10, qword [0x18075d150]
test r10, r10
jne 0x1801a167e
mov rax, qword [0x18075d168]
test rax, rax
jne 0x1801a165f
cmp byte [0x18075d1f0], al
jne 0x1801a1653
lea rcx, str.OpenCL.dll
call qword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov qword [0x18075d168], rax
mov byte [0x18075d1f0], 1
test rax, rax
je 0x1801a1646
lea rdx, str.clEnqueueReadBufferRect
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
mov rax, qword [0x18075d168]
je 0x1801a1646
mov cl, 1
jmp 0x1801a1648
xor ecx, ecx
mov byte [0x1806d5864], cl
test rax, rax
jne 0x1801a165f
mov r10, r13
mov qword [0x18075d150], r13
jmp 0x1801a16c8
lea rdx, str.clGetDeviceInfo
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov r10, rax
mov qword [0x18075d150], rax
test rax, rax
je 0x1801a16c1
lea rax, [rbp + 0x77]
mov qword [rsp + 0x20], rax
lea r9, [rbp + 0x7f]
mov edx, 0x1032
mov r8d, 8
mov rcx, rdi
call r10
test eax, eax
jne 0x1801a16ba
cmp qword [rbp + 0x77], 8
jne 0x1801a16ba
mov ecx, dword [rbp + 0x7f]
mov r10, qword [0x18075d150]
mov rax, qword [0x18075d168]
jmp 0x1801a16cb
mov r10, qword [0x18075d150]
mov rax, qword [0x18075d168]
mov ecx, r13d
mov dword [rbx + 0x30], ecx
mov dword [rbp + 0x6f], r13d
mov qword [rbp - 0x59], r13
mov rdi, qword [rbx + 8]
test r10, r10
jne 0x1801a1808
test rax, rax
jne 0x1801a17e5
cmp byte [0x18075d1f0], al
jne 0x1801a1745
lea rcx, str.OpenCL.dll
call qword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov qword [0x18075d168], rax
mov byte [0x18075d1f0], 1
test rax, rax
je 0x1801a1734
lea rdx, str.clEnqueueReadBufferRect
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
mov rax, qword [0x18075d168]
je 0x1801a1734
mov cl, 1
jmp 0x1801a1736
xor ecx, ecx
mov byte [0x1806d5864], cl
test rax, rax
jne 0x1801a17e5
mov qword [0x18075d150], r13
mov eax, r13d
mov byte [rbx + 0x34], al
mov rcx, rbx
call fcn.1801a2730
mov dword [rbx + 0x38], eax
mov rcx, rbx
call fcn.1801a2790
mov qword [rbx + 0x40], rax
mov qword [rbp - 0x49], r13
mov qword [rbp - 0x51], r13
mov rdi, qword [rbx + 8]
mov rax, qword [0x18075d150]
test rax, rax
jne 0x1801a1879
mov rax, qword [0x18075d168]
test rax, rax
jne 0x1801a185d
cmp byte [0x18075d1f0], al
jne 0x1801a1854
lea rcx, str.OpenCL.dll
call qword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov qword [0x18075d168], rax
mov byte [0x18075d1f0], 1
test rax, rax
je 0x1801a1847
lea rdx, str.clEnqueueReadBufferRect
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
mov rax, qword [0x18075d168]
je 0x1801a1847
mov cl, 1
jmp 0x1801a1849
lea rdx, str.clGetDeviceInfo
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov r10, rax
mov qword [0x18075d150], rax
test rax, rax
je 0x1801a174c
lea rax, [rbp - 0x59]
mov qword [rsp + 0x20], rax
lea r9, [rbp + 0x6f]
mov edx, 0x1035
mov r8d, 4
mov rcx, rdi
call r10
test eax, eax
jne 0x1801a174c
cmp qword [rbp - 0x59], 4
jne 0x1801a174c
mov eax, r13d
cmp dword [rbp + 0x6f], eax
setne al
jmp 0x1801a174f
xor ecx, ecx
mov byte [0x1806d5864], cl
test rax, rax
jne 0x1801a185d
mov qword [0x18075d150], r13
jmp 0x1801a18a4
lea rdx, str.clGetDeviceInfo
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x18075d150], rax
test rax, rax
je 0x1801a18a4
lea rcx, [rbp - 0x51]
mov qword [rsp + 0x20], rcx
lea r9, [rbp - 0x49]
mov edx, 0x1000
mov r8d, 8
mov rcx, rdi
call rax
test eax, eax
jne 0x1801a18a4
cmp qword [rbp - 0x51], 8
mov eax, dword [rbp - 0x49]
je 0x1801a18a7
mov eax, r13d
mov dword [rbx + 0x48], eax
mov r8d, 0x102d
lea rdx, [rbp - 0x11]
mov rcx, rbx
call fcn.1801a1b00
nop
mov rdx, rax
lea rcx, [rbx + 0x58]
call fcn.180170e50
nop
mov rcx, qword [rbp - 0x11]
mov qword [rbp - 9], r13
mov qword [rbp - 0x11], r13
test rcx, rcx
je 0x1801a18fa
add rcx, 0xfffffffffffffffc
mov eax, r14d
lock xadd dword [rcx], eax
cmp eax, 1
jne 0x1801a18fa
test rcx, rcx
je 0x1801a18fa
mov rcx, qword [rcx - 8]
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov r8d, 0x102f
lea rdx, [rbp - 0x41]
mov rcx, rbx
call fcn.1801a1b00
nop
lea r8, [rbx + 0x50]
lea rdx, [rbx + 0x4c]
lea rcx, [rbp - 0x41]
call fcn.1804f0c10
mov r8d, 0x102c
lea rdx, [rbp - 1]
mov rcx, rbx
call fcn.1801a1b00
nop
mov rdx, rax
lea rcx, [rbx + 0x68]
call fcn.180170e50
nop
mov rcx, qword [rbp - 1]
mov qword [rbp + 7], r13
mov qword [rbp - 1], r13
test rcx, rcx
je 0x1801a196e
add rcx, 0xfffffffffffffffc
mov eax, r14d
lock xadd dword [rcx], eax
cmp eax, 1
jne 0x1801a196e
test rcx, rcx
je 0x1801a196e
mov rcx, qword [rcx - 8]
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov rdi, qword [rbx + 0x68]
lea rdx, str.Advanced_Micro_Devices__Inc.
cmp rdi, rdx
je 0x1801a1aad
lea rsi, [0x1805e24b8]
mov rcx, rsi
test rdi, rdi
cmovne rcx, rdi
call sub.api_ms_win_crt_string_l1_1_0.dll_strcmp
test eax, eax
je 0x1801a1aad
lea r8, [0x1805f3c50]
cmp rdi, r8
je 0x1801a1aad
mov rdx, rsi
test rdi, rdi
cmovne rdx, rdi
mov rcx, r13
nop dword [rax]
movzx eax, byte [rdx + rcx]
inc rcx
cmp al, byte [r8 + rcx - 1]
jne 0x1801a19d9
cmp rcx, 4
jne 0x1801a19c0
mov eax, r13d
jmp 0x1801a19de
sbb eax, eax
or eax, 1
test eax, eax
je 0x1801a1aad
lea rdx, str.Intel_R__Corporation
cmp rdi, rdx
je 0x1801a1aa4
mov rcx, rsi
test rdi, rdi
cmovne rcx, rdi
call sub.api_ms_win_crt_string_l1_1_0.dll_strcmp
test eax, eax
je 0x1801a1aa4
lea r8, str.Intel
cmp rdi, r8
je 0x1801a1aa4
mov rdx, rsi
test rdi, rdi
cmovne rdx, rdi
mov rcx, r13
nop word [rax + rax]
movzx eax, byte [rdx + rcx]
inc rcx
cmp al, byte [r8 + rcx - 1]
jne 0x1801a1a49
cmp rcx, 6
jne 0x1801a1a30
mov eax, r13d
jmp 0x1801a1a4e
sbb eax, eax
or eax, 1
test eax, eax
je 0x1801a1aa4
mov rax, qword [rbx + 0x10]
mov rcx, rsi
test rax, rax
cmovne rcx, rax
lea rdx, str.Iris
call qword [sym.imp.VCRUNTIME140.dll_strstr]
test rax, rax
jne 0x1801a1aa4
mov rax, qword [rbx + 0x68]
lea rdx, str.NVIDIA_Corporation
cmp rax, rdx
je 0x1801a1a9b
test rax, rax
cmovne rsi, rax
mov rcx, rsi
call sub.api_ms_win_crt_string_l1_1_0.dll_strcmp
test eax, eax
je 0x1801a1a9b
mov dword [rbx + 0x78], r13d
jmp 0x1801a1ab4
mov dword [rbx + 0x78], 3
jmp 0x1801a1ab4
mov dword [rbx + 0x78], 2
jmp 0x1801a1ab4
mov dword [rbx + 0x78], 1
mov rcx, qword [rbp - 0x41]
mov qword [rbp - 0x39], r13
mov qword [rbp - 0x41], r13
test rcx, rcx
je 0x1801a1ae4
add rcx, 0xfffffffffffffffc
lock xadd dword [rcx], r14d
cmp r14d, 1
jne 0x1801a1ae4
test rcx, rcx
je 0x1801a1ae4
mov rcx, qword [rcx - 8]
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
nop
mov rax, rbx
add rsp, 0xa8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret