Function at 0x180169ad0
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, 0xc8
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.18016a2a0
nop
mov rdx, rax
lea rcx, [rbx + 0x10]
call fcn.1801399c0
nop
mov rcx, qword [rbp - 0x31]
mov qword [rbp - 0x29], r13
mov qword [rbp - 0x31], r13
lea r14d, [r13 - 1]
test rcx, rcx
je 0x180169b76
add rcx, 0xfffffffffffffffc
mov eax, r14d
lock xadd dword [rcx], eax
cmp eax, 1
jne 0x180169b76
test rcx, rcx
je 0x180169b76
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.18016a2a0
nop
mov rdx, rax
lea rcx, [rbx + 0x20]
call fcn.1801399c0
nop
mov rcx, qword [rbp - 0x21]
mov qword [rbp - 0x19], r13
mov qword [rbp - 0x21], r13
test rcx, rcx
je 0x180169bc6
add rcx, 0xfffffffffffffffc
mov eax, r14d
lock xadd dword [rcx], eax
cmp eax, 1
jne 0x180169bc6
test rcx, rcx
je 0x180169bc6
mov rcx, qword [rcx - 8]
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov qword [rbp - 0x79], r13
mov qword [rbp + 0x7f], r13
mov rdi, qword [rbx + 8]
mov r10, qword [0x1807043c0]
test r10, r10
jne 0x180169c6e
mov rax, qword [0x1807043e0]
test rax, rax
jne 0x180169c4f
cmp byte [0x180704460], al
jne 0x180169c43
lea rcx, str.OpenCL.dll
call qword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov qword [0x1807043e0], rax
mov byte [0x180704460], 1
test rax, rax
je 0x180169c36
lea rdx, str.clEnqueueReadBufferRect
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
mov rax, qword [0x1807043e0]
je 0x180169c36
mov cl, 1
jmp 0x180169c38
xor ecx, ecx
mov byte [0x18067cb44], cl
test rax, rax
jne 0x180169c4f
mov r10, r13
mov qword [0x1807043c0], r13
jmp 0x180169cb8
lea rdx, str.clGetDeviceInfo
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov r10, rax
mov qword [0x1807043c0], rax
test rax, rax
je 0x180169cb1
lea rax, [rbp + 0x7f]
mov qword [rsp + 0x20], rax
lea r9, [rbp - 0x79]
mov edx, 0x1032
mov r8d, 8
mov rcx, rdi
call r10
test eax, eax
jne 0x180169caa
cmp qword [rbp + 0x7f], 8
jne 0x180169caa
mov ecx, dword [rbp - 0x79]
mov r10, qword [0x1807043c0]
mov rax, qword [0x1807043e0]
jmp 0x180169cbb
mov r10, qword [0x1807043c0]
mov rax, qword [0x1807043e0]
mov ecx, r13d
mov dword [rbx + 0x30], ecx
mov dword [rbp + 0x6f], r13d
mov qword [rbp - 0x71], r13
mov rdi, qword [rbx + 8]
test r10, r10
jne 0x180169d58
test rax, rax
jne 0x180169d39
cmp byte [0x180704460], al
jne 0x180169d2d
lea rcx, str.OpenCL.dll
call qword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov qword [0x1807043e0], rax
mov byte [0x180704460], 1
test rax, rax
je 0x180169d20
lea rdx, str.clEnqueueReadBufferRect
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
mov rax, qword [0x1807043e0]
je 0x180169d20
mov cl, 1
jmp 0x180169d22
xor ecx, ecx
mov byte [0x18067cb44], cl
test rax, rax
jne 0x180169d39
mov r10, r13
mov qword [0x1807043c0], r13
jmp 0x180169da8
lea rdx, str.clGetDeviceInfo
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov r10, rax
mov qword [0x1807043c0], rax
test rax, rax
je 0x180169da1
lea rax, [rbp - 0x71]
mov qword [rsp + 0x20], rax
lea r9, [rbp + 0x6f]
mov edx, 0x1035
mov r8d, 4
mov rcx, rdi
call r10
test eax, eax
jne 0x180169d9a
cmp qword [rbp - 0x71], 4
jne 0x180169d9a
mov ecx, r13d
cmp dword [rbp + 0x6f], ecx
setne cl
mov r10, qword [0x1807043c0]
mov rax, qword [0x1807043e0]
jmp 0x180169dab
mov r10, qword [0x1807043c0]
mov rax, qword [0x1807043e0]
mov ecx, r13d
mov byte [rbx + 0x34], cl
mov dword [rbp + 0x77], r13d
mov qword [rbp - 0x69], r13
mov rdi, qword [rbx + 8]
test r10, r10
jne 0x180169e48
test rax, rax
jne 0x180169e29
cmp byte [0x180704460], al
jne 0x180169e1d
lea rcx, str.OpenCL.dll
call qword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov qword [0x1807043e0], rax
mov byte [0x180704460], 1
test rax, rax
je 0x180169e10
lea rdx, str.clEnqueueReadBufferRect
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
mov rax, qword [0x1807043e0]
je 0x180169e10
mov cl, 1
jmp 0x180169e12
xor ecx, ecx
mov byte [0x18067cb44], cl
test rax, rax
jne 0x180169e29
mov r10, r13
mov qword [0x1807043c0], r13
jmp 0x180169e92
lea rdx, str.clGetDeviceInfo
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov r10, rax
mov qword [0x1807043c0], rax
test rax, rax
je 0x180169e8b
lea rax, [rbp - 0x69]
mov qword [rsp + 0x20], rax
lea r9, [rbp + 0x77]
mov edx, 0x1002
mov r8d, 4
mov rcx, rdi
call r10
test eax, eax
jne 0x180169e84
cmp qword [rbp - 0x69], 4
jne 0x180169e84
mov ecx, dword [rbp + 0x77]
mov r10, qword [0x1807043c0]
mov rax, qword [0x1807043e0]
jmp 0x180169e95
mov r10, qword [0x1807043c0]
mov rax, qword [0x1807043e0]
mov ecx, r13d
mov dword [rbx + 0x38], ecx
mov qword [rbp - 0x59], r13
mov qword [rbp - 0x61], r13
mov rdi, qword [rbx + 8]
test r10, r10
jne 0x180169f32
test rax, rax
jne 0x180169f13
cmp byte [0x180704460], al
jne 0x180169f07
lea rcx, str.OpenCL.dll
call qword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov qword [0x1807043e0], rax
mov byte [0x180704460], 1
test rax, rax
je 0x180169efa
lea rdx, str.clEnqueueReadBufferRect
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
mov rax, qword [0x1807043e0]
je 0x180169efa
mov cl, 1
jmp 0x180169efc
xor ecx, ecx
mov byte [0x18067cb44], cl
test rax, rax
jne 0x180169f13
mov r10, r13
mov qword [0x1807043c0], r13
jmp 0x180169f7d
lea rdx, str.clGetDeviceInfo
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov r10, rax
mov qword [0x1807043c0], rax
test rax, rax
je 0x180169f76
lea rax, [rbp - 0x61]
mov qword [rsp + 0x20], rax
lea r9, [rbp - 0x59]
mov edx, 0x1004
mov r8d, 8
mov rcx, rdi
call r10
test eax, eax
jne 0x180169f6f
cmp qword [rbp - 0x61], 8
jne 0x180169f6f
mov rcx, qword [rbp - 0x59]
mov r10, qword [0x1807043c0]
mov rax, qword [0x1807043e0]
jmp 0x180169f80
mov r10, qword [0x1807043c0]
mov rax, qword [0x1807043e0]
mov rcx, r13
mov qword [rbx + 0x40], rcx
mov qword [rbp - 0x49], r13
mov qword [rbp - 0x51], r13
mov rdi, qword [rbx + 8]
test r10, r10
jne 0x18016a01b
test rax, rax
jne 0x180169ffc
cmp byte [0x180704460], al
jne 0x180169ff3
lea rcx, str.OpenCL.dll
call qword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov qword [0x1807043e0], rax
mov byte [0x180704460], 1
test rax, rax
je 0x180169fe6
lea rdx, str.clEnqueueReadBufferRect
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
mov rax, qword [0x1807043e0]
je 0x180169fe6
mov cl, 1
jmp 0x180169fe8
xor ecx, ecx
mov byte [0x18067cb44], cl
test rax, rax
jne 0x180169ffc
mov qword [0x1807043c0], r13
jmp 0x18016a047
lea rdx, str.clGetDeviceInfo
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov r10, rax
mov qword [0x1807043c0], rax
test rax, rax
je 0x18016a047
lea rax, [rbp - 0x51]
mov qword [rsp + 0x20], rax
lea r9, [rbp - 0x49]
mov edx, 0x1000
mov r8d, 8
mov rcx, rdi
call r10
test eax, eax
jne 0x18016a047
cmp qword [rbp - 0x51], 8
mov eax, dword [rbp - 0x49]
je 0x18016a04a
mov eax, r13d
mov dword [rbx + 0x48], eax
mov r8d, 0x102d
lea rdx, [rbp - 0x11]
mov rcx, rbx
call fcn.18016a2a0
nop
mov rdx, rax
lea rcx, [rbx + 0x58]
call fcn.1801399c0
nop
mov rcx, qword [rbp - 0x11]
mov qword [rbp - 9], r13
mov qword [rbp - 0x11], r13
test rcx, rcx
je 0x18016a09d
add rcx, 0xfffffffffffffffc
mov eax, r14d
lock xadd dword [rcx], eax
cmp eax, 1
jne 0x18016a09d
test rcx, rcx
je 0x18016a09d
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.18016a2a0
nop
lea r8, [rbx + 0x50]
lea rdx, [rbx + 0x4c]
lea rcx, [rbp - 0x41]
call fcn.1804b59a0
mov r8d, 0x102c
lea rdx, [rbp - 1]
mov rcx, rbx
call fcn.18016a2a0
nop
mov rdx, rax
lea rcx, [rbx + 0x68]
call fcn.1801399c0
nop
mov rcx, qword [rbp - 1]
mov qword [rbp + 7], r13
mov qword [rbp - 1], r13
test rcx, rcx
je 0x18016a111
add rcx, 0xfffffffffffffffc
mov eax, r14d
lock xadd dword [rcx], eax
cmp eax, 1
jne 0x18016a111
test rcx, rcx
je 0x18016a111
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 0x18016a24d
lea rsi, [0x1805a2ed6]
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 0x18016a24d
lea r8, [0x1805b1240]
cmp rdi, r8
je 0x18016a24d
mov rdx, rsi
test rdi, rdi
cmovne rdx, rdi
mov rcx, r13
movzx eax, byte [rdx + rcx]
inc rcx
cmp al, byte [r8 + rcx - 1]
jne 0x18016a179
cmp rcx, 4
jne 0x18016a160
mov eax, r13d
jmp 0x18016a17e
sbb eax, eax
or eax, 1
test eax, eax
je 0x18016a24d
lea rdx, str.Intel_R__Corporation
cmp rdi, rdx
je 0x18016a244
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 0x18016a244
lea r8, str.Intel
cmp rdi, r8
je 0x18016a244
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 0x18016a1e9
cmp rcx, 6
jne 0x18016a1d0
mov eax, r13d
jmp 0x18016a1ee
sbb eax, eax
or eax, 1
test eax, eax
je 0x18016a244
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 0x18016a244
mov rax, qword [rbx + 0x68]
lea rdx, str.NVIDIA_Corporation
cmp rax, rdx
je 0x18016a23b
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 0x18016a23b
mov dword [rbx + 0x78], r13d
jmp 0x18016a254
mov dword [rbx + 0x78], 3
jmp 0x18016a254
mov dword [rbx + 0x78], 2
jmp 0x18016a254
mov dword [rbx + 0x78], 1
mov rcx, qword [rbp - 0x41]
mov qword [rbp - 0x39], r13
mov qword [rbp - 0x41], r13
test rcx, rcx
je 0x18016a284
add rcx, 0xfffffffffffffffc
lock xadd dword [rcx], r14d
cmp r14d, 1
jne 0x18016a284
test rcx, rcx
je 0x18016a284
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, 0xc8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret