Function at 0x14009a4ac
Capabilities:
Link many functions at runtime

Disassembly:
mov rax, rsp
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0xb0
mov qword [rsp + 0x40], 0xfffffffffffffffe
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rbp
mov qword [rax + 0x20], rsi
mov rax, qword [0x14028b7c8]
xor rax, rsp
mov qword [rsp + 0xa0], rax
mov rdi, rcx
lea r15, vtable.CTList_class_CDevice_.0
mov qword [rsp + 0x28], r15
xor ebx, ebx
mov qword [rsp + 0x30], rbx
mov dword [rsp + 0x38], ebx
mov r14, qword [rcx + 0x110]
cmp r14, rbx
jne 0x14009a522
mov qword [rsp + 0x28], r15
lea rcx, [rsp + 0x28]
call fcn.140002b70
xor eax, eax
jmp 0x14009a84e
mov rax, qword [r14 + 8]
mov rcx, qword [rax + 0x38]
cmp rcx, rbx
jne 0x14009a534
jmp 0x14009a83d
mov rax, qword [rcx + 0x48]
cmp rax, rbx
je 0x14009a570
xor edx, edx
mov r8d, 0x800
lea rcx, str.nvml.dll
call rax
mov qword [rdi + 0x118], rax
cmp rax, rbx
jne 0x14009a584
lea rcx, str.nvml.dll
call qword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov qword [rdi + 0x118], rax
jmp 0x14009a584
lea rcx, str.nvml.dll
call qword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov qword [rdi + 0x118], rax
mov rcx, qword [rdi + 0x118]
cmp rcx, rbx
je 0x14009a83d
lea rdx, str.nvmlInit
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rdi + 0x320], rax
lea rdx, str.nvmlDeviceGetCount
mov rcx, qword [rdi + 0x118]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rdi + 0x328], rax
lea rdx, str.nvmlDeviceGetHandleByIndex
mov rcx, qword [rdi + 0x118]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rdi + 0x330], rax
lea rdx, str.nvmlDeviceGetTemperature
mov rcx, qword [rdi + 0x118]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rdi + 0x338], rax
lea rdx, str.nvmlDeviceGetTemperatureThreshold
mov rcx, qword [rdi + 0x118]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rdi + 0x340], rax
lea rdx, str.nvmlDeviceGetPowerUsage
mov rcx, qword [rdi + 0x118]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rdi + 0x348], rax
lea rdx, str.nvmlDeviceGetPowerManagementLimit
mov rcx, qword [rdi + 0x118]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rdi + 0x350], rax
lea rdx, str.nvmlDeviceGetPowerManagementLimitConstraints
mov rcx, qword [rdi + 0x118]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rdi + 0x358], rax
lea rdx, str.nvmlDeviceGetPowerManagementDefaultLimit
mov rcx, qword [rdi + 0x118]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rdi + 0x360], rax
lea rdx, str.nvmlDeviceGetEnforcedPowerLimit
mov rcx, qword [rdi + 0x118]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rdi + 0x368], rax
lea rdx, str.nvmlDeviceGetPcieThroughput
mov rcx, qword [rdi + 0x118]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rdi + 0x370], rax
lea rdx, str.nvmlDeviceGetFieldValues
mov rcx, qword [rdi + 0x118]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rdi + 0x378], rax
lea rdx, str.nvmlDeviceGetPciInfo
mov rcx, qword [rdi + 0x118]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rdi + 0x380], rax
lea rdx, str.nvmlShutdown
mov rcx, qword [rdi + 0x118]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rdi + 0x388], rax
mov rcx, qword [rdi + 0x320]
cmp rcx, rbx
je 0x14009a83d
cmp qword [rdi + 0x328], rbx
je 0x14009a83d
cmp qword [rdi + 0x330], rbx
je 0x14009a83d
cmp qword [rdi + 0x380], rbx
je 0x14009a83d
cmp rax, rbx
je 0x14009a83d
call rcx
cmp eax, ebx
jne 0x14009a83d
lea rcx, [rsp + 0x20]
call qword [rdi + 0x328]
cmp eax, ebx
jne 0x14009a836
mov r12d, ebx
cmp dword [rsp + 0x20], ebx
jle 0x14009a836
lea r13, [rdi + 0x120]
movsxd rax, r12d
lea rdx, [rdi + rax*8 + 0x120]
mov ecx, r12d
call qword [rdi + 0x330]
cmp eax, ebx
jne 0x14009a824
lea rdx, [rsp + 0x50]
mov rcx, qword [r13]
call qword [rdi + 0x380]
cmp eax, ebx
jne 0x14009a824
mov r8d, dword [rsp + 0x6c]
shr r8d, 0x10
lea r9, [rsp + 0x28]
movzx edx, word [rsp + 0x6c]
mov rcx, r14
call fcn.140056418
cmp eax, ebx
jle 0x14009a824
mov rbp, qword [rsp + 0x30]
cmp rbp, rbx
je 0x14009a7d6
mov rsi, qword [rbp + 8]
jmp 0x14009a7d9
mov rsi, rbx
cmp rsi, rbx
je 0x14009a824
mov rcx, rsi
call fcn.140061ff4
cmp eax, dword [rsp + 0x64]
jne 0x14009a808
mov rcx, rsi
call fcn.14006201c
cmp eax, dword [rsp + 0x68]
jne 0x14009a808
mov r8d, r12d
mov rdx, rdi
mov rcx, rsi
call fcn.14005fbb0
cmp rbp, rbx
je 0x14009a81c
mov rbp, qword [rbp + 0x10]
cmp rbp, rbx
je 0x14009a824
mov rsi, qword [rbp + 8]
jmp 0x14009a81f
mov rsi, rbx
cmp rsi, rbx
jne 0x14009a7de
inc r12d
add r13, 8
cmp r12d, dword [rsp + 0x20]
jl 0x14009a778
mov ebx, 1
jmp 0x14009a83d
mov qword [rsp + 0x28], r15
lea rcx, [rsp + 0x28]
call fcn.140002b70
mov eax, ebx
mov rcx, qword [rsp + 0xa0]
xor rcx, rsp
call fcn.140156fd0
lea r11, [rsp + 0xb0]
mov rbx, qword [r11 + 0x38]
mov rbp, qword [r11 + 0x40]
mov rsi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret