Function at 0x140002c90
Capabilities:
Link many functions at runtime

Disassembly:
push rbp
push rsi
push r14
lea rbp, [rsp - 0x47]
sub rsp, 0xf0
mov rax, qword [0x14006d0d8]
xor rax, rsp
mov qword [rbp + 0x27], rax
mov rsi, rcx
lea rcx, str.gdi32.dll
call qword [sym.imp.KERNEL32.DLL_LoadLibraryW]
mov qword [rsi + 0x30], rax
test rax, rax
je 0x1400030af
lea rdx, str.D3DKMTOpenAdapterFromGdiDisplayName
mov rcx, rax
call qword [sym.imp.KERNEL32.DLL_GetProcAddress]
mov rcx, qword [rsi + 0x30]
lea rdx, str.D3DKMTOpenAdapterFromDeviceName
mov qword [rbp - 0x71], rax
call qword [sym.imp.KERNEL32.DLL_GetProcAddress]
mov rcx, qword [rsi + 0x30]
lea rdx, str.D3DKMTCloseAdapter
mov qword [rbp - 0x69], rax
call qword [sym.imp.KERNEL32.DLL_GetProcAddress]
mov rcx, qword [rsi + 0x30]
lea rdx, str.D3DKMTCreateDevice
mov qword [rbp - 0x61], rax
call qword [sym.imp.KERNEL32.DLL_GetProcAddress]
mov rcx, qword [rsi + 0x30]
lea rdx, str.D3DKMTDestroyDevice
mov qword [rbp - 0x59], rax
call qword [sym.imp.KERNEL32.DLL_GetProcAddress]
mov rcx, qword [rsi + 0x30]
lea rdx, str.D3DKMTEscape
mov qword [rbp - 0x51], rax
call qword [sym.imp.KERNEL32.DLL_GetProcAddress]
movups xmm0, xmmword [rbp - 0x71]
mov qword [rbp - 0x49], rax
movups xmm1, xmmword [rbp - 0x61]
movups xmmword [rsi + 0x38], xmm0
movups xmm0, xmmword [rbp - 0x51]
movups xmmword [rsi + 0x48], xmm1
movups xmmword [rsi + 0x58], xmm0
cmp qword [rsi + 0x50], 0
je 0x1400030af
cmp qword [rsi + 0x58], 0
je 0x1400030af
cmp qword [rsi + 0x38], 0
je 0x1400030af
cmp qword [rsi + 0x40], 0
je 0x1400030af
cmp qword [rsi + 0x48], 0
je 0x1400030af
cmp qword [rsi + 0x60], 0
je 0x1400030af
mov qword [rsp + 0x118], rbx
lea rdx, [0x14004e4f0]
xor ebx, ebx
mov qword [rsp + 0x120], rdi
mov qword [rsp + 0x128], r12
lea rcx, [rbp - 0x79]
mov qword [rsp + 0xe8], r13
xor r9d, r9d
mov qword [rsp + 0xe0], r15
xor r8d, r8d
mov r15d, ebx
mov dword [rbp - 0x79], ebx
mov r12d, ebx
mov dword [rsi + 0x20], ebx
call qword [sym.imp.SETUPAPI.DLL_CM_Get_Device_Interface_List_SizeW]
mov r14d, 0x80004005
test eax, eax
jne 0x140003082
mov eax, dword [rbp - 0x79]
cmp eax, 1
jb 0x140003082
mov ecx, eax
mov eax, 2
mul rcx
mov rcx, 0xffffffffffffffff
lea rdx, [0x1400700e0]
cmovo rax, rcx
mov rcx, rax
call fcn.14001bdf4
mov r13, rax
test rax, rax
je 0x140003082
mov r9d, dword [rbp - 0x79]
lea rcx, [0x14004e4f0]
mov r8, rax
mov dword [rsp + 0x20], ebx
xor edx, edx
call qword [sym.imp.SETUPAPI.DLL_CM_Get_Device_Interface_ListW]
test eax, eax
je 0x140002e60
mov r15d, r14d
jmp 0x140002f2d
mov rdi, r13
cmp word [r13], bx
je 0x140002f2d
nop
mov rbx, 0xffffffffffffffff
nop word [rax + rax]
inc rbx
cmp word [rdi + rbx*2], r12w
jne 0x140002e80
lea rdx, str.VEN_8086
mov rcx, rdi
inc rbx
call fcn.14003a3a0
test rax, rax
jne 0x140002ec2
lea rdx, str.ven_8086
mov rcx, rdi
call fcn.14003a3a0
test rax, rax
jne 0x140002ec2
cmp word [rdi + rbx*2], r12w
lea rdi, [rdi + rbx*2]
jne 0x140002e70
jmp 0x140002f2b
mov rcx, 0xffffffffffffffff
mov eax, 2
mul rbx
lea rdx, [0x1400700e0]
cmovo rax, rcx
mov rcx, rax
call fcn.14001bdf4
mov r12, rax
test rax, rax
jne 0x140002ef1
mov r15d, r14d
jmp 0x140002f2b
mov r9, rbx
mov r8, rdi
mov rdx, rbx
mov rcx, r12
call fcn.14003d5d8
mov rax, qword [rsi + 0x40]
lea rcx, [rbp - 0x71]
xorps xmm0, xmm0
mov qword [rbp - 0x71], r12
movdqu xmmword [rbp - 0x69], xmm0
call qword [case.0x140024dda.0]
test eax, eax
je 0x140002f25
mov r15d, r14d
jmp 0x140002f2b
mov eax, dword [rbp - 0x69]
mov dword [rsi + 0x20], eax
xor ebx, ebx
mov rcx, r13
call fcn.14001b9dc
test r12, r12
je 0x140002f42
mov rcx, r12
call fcn.14001b9dc
test r15d, r15d
jne 0x140003082
cmp dword [rsi + 0x20], r15d
je 0x140003082
mov dword [rbp - 0x29], reloc.OLEAUT32.dll_SafeArrayAccessData
call qword [sym.imp.KERNEL32.DLL_GetCurrentProcessId]
mov dword [rbp - 0x25], eax
mov dword [rbp - 0x6d], ebx
mov dword [rbp - 0x65], ebx
mov dword [rbp - 0x55], ebx
cmp dword [rsi + 0x20], r15d
je 0x140003071
lea ecx, [r15 + 0x54]
call fcn.14003d238
mov rdi, rax
test rax, rax
je 0x140003071
or dword [rbp - 0x65], 1
lea r8, [rbp - 0x29]
xorps xmm0, xmm0
mov dword [rbp - 0x69], ebx
movups xmmword [rdi], xmm0
xor eax, eax
lea edx, [r15 + 0x44]
movups xmmword [rdi + 0x10], xmm0
mov rcx, rsi
mov qword [rbp - 0x61], rdi
movups xmmword [rdi + 0x20], xmm0
mov dword [rbp - 0x59], 0x54
movups xmmword [rdi + 0x30], xmm0
movups xmmword [rdi + 0x40], xmm0
mov dword [rdi + 0x50], eax
mov eax, dword [rsi + 0x20]
mov dword [rbp - 0x71], eax
mov dword [rdi + 8], 5
mov dword [rdi], 0x44
call fcn.140002940
lea rbx, [rdi + 0x10]
mov dword [rdi + 4], eax
test rbx, rbx
jne 0x140002ffb
call fcn.14003d5a4
mov dword [rax], reloc.OLEAUT32.dll_SafeArrayAccessData
call fcn.14003d454
jmp 0x140003020
movaps xmm0, xmmword [rbp - 0x29]
movaps xmm1, xmmword [rbp - 0x19]
mov eax, dword [rbp + 0x17]
movups xmmword [rbx], xmm0
movaps xmm0, xmmword [rbp - 9]
movups xmmword [rbx + 0x10], xmm1
movaps xmm1, xmmword [rbp + 7]
movups xmmword [rbx + 0x20], xmm0
movups xmmword [rbx + 0x30], xmm1
mov dword [rbx + 0x40], eax
mov rax, qword [rsi + 0x60]
lea rcx, [rbp - 0x71]
call qword [case.0x140024dda.0]
mov r14d, eax
test eax, eax
jne 0x140003069
test rbx, rbx
je 0x14000304b
movups xmm0, xmmword [rbx]
movups xmm1, xmmword [rbx + 0x10]
movaps xmmword [rbp - 0x29], xmm0
movaps xmmword [rbp - 0x19], xmm1
jmp 0x140003066
xorps xmm0, xmm0
movups xmmword [rbp - 0x29], xmm0
movups xmmword [rbp - 0x19], xmm0
call fcn.14003d5a4
mov dword [rax], reloc.OLEAUT32.dll_SafeArrayAccessData
call fcn.14003d454
xor r14d, r14d
mov rcx, rdi
call fcn.14003d5c4
test r14d, r14d
js 0x140003082
cmp dword [rbp - 0x1d], 1
jne 0x140003082
mov eax, dword [rbp - 0x19]
mov dword [rsi + 0x28], eax
mov r15, qword [rsp + 0xe0]
mov eax, r14d
mov r13, qword [rsp + 0xe8]
mov r12, qword [rsp + 0x128]
mov rdi, qword [rsp + 0x120]
mov rbx, qword [rsp + 0x118]
jmp 0x1400030b4
mov eax, 0x80004005
mov rcx, qword [rbp + 0x27]
xor rcx, rsp
call fcn.14001ba70
add rsp, 0xf0
pop r14
pop rsi
pop rbp
ret