Function at 0x140118150
Capabilities:
Link many functions at runtime

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x30]
sub rsp, 0x130
mov qword [rbp - 0x60], 0xfffffffffffffffe
mov qword [rsp + 0x170], rbx
mov r15, rcx
cmp byte [0x140e34188], 0
jne 0x1401189b6
lea rcx, str.atiadlxx.dll
call qword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov rbx, rax
test rax, rax
je 0x140118a01
lea rdx, str.ADL2_Main_Control_Create
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x140e34040], rax
lea rdx, str.ADL2_Main_Control_Destroy
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x140e34048], rax
lea rdx, str.ADL2_Adapter_NumberOfAdapters_Get
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x140e34050], rax
lea rdx, str.ADL2_Adapter_AdapterInfo_Get
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x140e34058], rax
lea rdx, str.ADL2_Adapter_ID_Get
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x140e34060], rax
lea rdx, str.ADL2_OverdriveN_FanControl_Get
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x140e34068], rax
lea rdx, str.ADL2_OverdriveN_FanControl_Set
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x140e34070], rax
lea rdx, str.ADL2_Overdrive8_Init_SettingX2_Get
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x140e34078], rax
lea rdx, str.ADL2_Overdrive8_Init_Setting_Get
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x140e34080], rax
lea rdx, str.ADL2_Overdrive8_Current_SettingX2_Get
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x140e34088], rax
lea rdx, str.ADL2_Overdrive8_Current_Setting_Get
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x140e34090], rax
lea rdx, str.ADL2_Overdrive8_Setting_Set
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x140e34098], rax
lea rdx, str.ADL2_OverdriveN_CapabilitiesX2_Get
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x140e340a0], rax
lea rdx, str.ADL2_OverdriveN_SystemClocksX2_Get
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x140e340a8], rax
lea rdx, str.ADL2_OverdriveN_SystemClocksX2_Set
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x140e340b0], rax
lea rdx, str.ADL2_OverdriveN_MemoryClocksX2_Get
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x140e340b8], rax
lea rdx, str.ADL2_OverdriveN_MemoryClocksX2_Set
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x140e340c0], rax
lea rdx, str.ADL2_Overdrive6_CurrentPower_Get
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x140e340c8], rax
lea rdx, str.ADL2_Overdrive5_Temperature_Get
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x140e340d0], rax
lea rdx, str.ADL2_Overdrive_Caps
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x140e340d8], rax
lea rdx, str.ADL2_New_QueryPMLogData_Get
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x140e340e0], rax
mov rax, qword [0x140e34040]
test rax, rax
je 0x1401189d7
cmp qword [0x140e34048], 0
je 0x1401189d7
cmp qword [0x140e34050], 0
je 0x1401189d7
cmp qword [0x140e34058], 0
je 0x1401189d7
cmp qword [0x140e34060], 0
je 0x1401189d7
cmp qword [0x140e34068], 0
je 0x1401189d7
cmp qword [0x140e34070], 0
je 0x1401189d7
cmp qword [0x140e340a0], 0
je 0x1401189d7
cmp qword [0x140e340a8], 0
je 0x1401189d7
cmp qword [0x140e340b0], 0
je 0x1401189d7
cmp qword [0x140e340b8], 0
je 0x1401189d7
cmp qword [0x140e340c0], 0
je 0x1401189d7
cmp qword [0x140e340c8], 0
je 0x1401189d7
cmp qword [0x140e340d0], 0
je 0x1401189d7
lea r8, [0x140e34180]
mov edx, 1
lea rcx, [0x140117e30]
call rax
test eax, eax
jne 0x140118a22
xor r12d, r12d
mov dword [rbp + 0x88], r12d
mov rax, qword [0x140e34050]
lea rdx, [rbp + 0x88]
mov rcx, qword [0x140e34180]
call rax
test eax, eax
jne 0x140118a4c
movsxd rax, dword [rbp + 0x88]
test eax, eax
jle 0x1401189af
mov rdx, rax
lea r8, [rbp + 0x78]
lea rcx, [rbp - 0x48]
call fcn.140117ca0
nop
movsxd rax, dword [rbp + 0x88]
imul r8, rax, 0x624
xor edx, edx
mov rdi, qword [rbp - 0x48]
mov rcx, rdi
call fcn.1401625d0
imul r8d, dword [rbp + 0x88], 0x624
mov rdx, rdi
mov rcx, qword [0x140e34180]
call qword [0x140e34058]
movsd xmm0, qword [0x140e22c00]
movsd qword [rsp + 0x50], xmm0
mov ebx, dword [0x140e22c08]
mov dword [rsp + 0x58], ebx
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x30], xmm0
lea rcx, [rsp + 0x30]
call fcn.140114250
mov r11, rax
mov qword [rsp + 0x30], rax
mov esi, r12d
mov r14d, dword [rbp + 0x88]
test r14d, r14d
jle 0x140118671
add rdi, 0x31c
mov edx, dword [rsp + 0x54]
mov ecx, dword [rsp + 0x50]
nop dword [rax]
mov eax, dword [rdi - 0x208]
cmp dword [0x140e22c0c], eax
jne 0x140118653
cmp dword [rdi], 0
je 0x140118653
cmp dword [rdi - 4], 0
je 0x140118653
mov r10d, dword [rdi - 0x20c]
mov dword [rsp + 0x40], r10d
mov r8d, dword [rdi - 0x210]
mov dword [rsp + 0x44], r8d
mov r9d, dword [rdi - 0x214]
mov dword [rsp + 0x48], r9d
cmp r9d, ebx
jne 0x14011859c
cmp r8d, edx
jne 0x14011859c
cmp r10d, ecx
je 0x140118653
mov rbx, r11
mov rax, qword [r11 + 8]
cmp byte [rax + 0x19], 0
jne 0x1401185f3
nop dword [rax]
cmp dword [rax + 0x24], r9d
jl 0x1401185ce
jg 0x1401185c6
cmp dword [rax + 0x20], r8d
jl 0x1401185ce
jg 0x1401185c6
cmp dword [rax + 0x1c], r10d
jl 0x1401185ce
mov rbx, rax
mov rax, qword [rax]
jmp 0x1401185d2
mov rax, qword [rax + 0x10]
cmp byte [rax + 0x19], 0
je 0x1401185b0
cmp rbx, r11
je 0x1401185f3
cmp r9d, dword [rbx + 0x24]
jl 0x1401185f3
jg 0x140118638
cmp r8d, dword [rbx + 0x20]
jl 0x1401185f3
jg 0x140118638
cmp r10d, dword [rbx + 0x1c]
jge 0x140118638
lea rax, [rsp + 0x40]
mov qword [rsp + 0x78], rax
lea r9, [rbp + 0x80]
lea r8, [rsp + 0x78]
lea rdx, [0x140214b18]
lea rcx, [rsp + 0x30]
call fcn.140112ff0
lea r9, [rax + 0x1c]
mov qword [rsp + 0x20], rax
mov r8, rbx
lea rdx, [rbp - 0x80]
lea rcx, [rsp + 0x30]
call fcn.1401132c0
mov rbx, qword [rbp - 0x80]
mov dword [rbx + 0x28], esi
mov ebx, dword [rsp + 0x48]
mov edx, dword [rsp + 0x44]
mov ecx, dword [rsp + 0x40]
mov r14d, dword [rbp + 0x88]
mov r11, qword [rsp + 0x30]
inc esi
add rdi, 0x624
cmp esi, r14d
jl 0x140118540
mov dword [rsp + 0x58], ebx
mov dword [rsp + 0x50], ecx
mov dword [rsp + 0x54], edx
mov rcx, qword [0x140e34118]
mov qword [0x140e34120], rcx
mov rdx, qword [r15 + 8]
sub rdx, qword [r15]
sar rdx, 4
mov rax, qword [0x140e34128]
sub rax, rcx
sar rax, 2
cmp rdx, rax
jbe 0x1401186bc
movabs rax, 0x3fffffffffffffff
cmp rdx, rax
ja 0x140118a76
lea rcx, [0x140e34118]
call fcn.140117fb0
lea rbx, [0x140e340e8]
movabs rsi, 0xaaaaaaaaaaaaaaa
movabs r14, 0x2aaaaaaaaaaaaaab
lea rdi, [0x140e34118]
nop
mov r8, rbx
mov rdx, qword [rbx + 8]
mov rcx, qword [rbx]
call fcn.1401177a0
mov rax, qword [rbx]
mov qword [rbx + 8], rax
mov r8, qword [r15 + 8]
sub r8, qword [r15]
sar r8, 4
mov rcx, qword [rbx + 0x10]
sub rcx, qword [rbx]
mov rax, r14
imul rcx
sar rdx, 2
mov rax, rdx
shr rax, 0x3f
add rdx, rax
cmp r8, rdx
jbe 0x140118735
cmp r8, rsi
ja 0x140118a7c
mov rdx, r8
mov rcx, rbx
call fcn.140118040
add rbx, 0x18
cmp rbx, rdi
jl 0x1401186e0
mov rsi, qword [r15]
mov r14, qword [r15 + 8]
cmp rsi, r14
je 0x14011892e
lea r13, [0x140e340f0]
lea r15, [0x140e34120]
nop dword [rax]
mov rdi, qword [rsi + 8]
test rdi, rdi
je 0x140118771
lock inc dword [rdi + 8]
mov rdi, qword [rsi + 8]
mov rdx, qword [rsi]
mov qword [rbp - 0x58], rdx
mov qword [rbp - 0x50], rdi
mov rdx, qword [rdx + 8]
lea rcx, [rsp + 0x68]
call fcn.140117700
mov r11, qword [rsp + 0x30]
mov rax, r11
mov rcx, qword [r11 + 8]
cmp byte [rcx + 0x19], 0
jne 0x1401187f3
mov r8d, dword [rsp + 0x70]
mov r9d, dword [rsp + 0x6c]
mov r10d, dword [rsp + 0x68]
nop dword [rax + rax]
cmp dword [rcx + 0x24], r8d
jl 0x1401187ce
jg 0x1401187c6
cmp dword [rcx + 0x20], r9d
jl 0x1401187ce
jg 0x1401187c6
cmp dword [rcx + 0x1c], r10d
jl 0x1401187ce
mov rax, rcx
mov rcx, qword [rcx]
jmp 0x1401187d2
mov rcx, qword [rcx + 0x10]
cmp byte [rcx + 0x19], 0
je 0x1401187b0
cmp rax, r11
je 0x1401187f3
cmp r8d, dword [rax + 0x24]
jl 0x1401187f3
jg 0x1401187f6
cmp r9d, dword [rax + 0x20]
jl 0x1401187f3
jg 0x1401187f6
cmp r10d, dword [rax + 0x1c]
jge 0x1401187f6
mov rax, r11
mov rdx, qword [0x140e34120]
cmp rax, r11
je 0x14011882c
lea r8, [rax + 0x28]
cmp qword [0x140e34128], rdx
je 0x14011881e
mov eax, dword [r8]
mov dword [rdx], eax
add qword [0x140e34120], 4
jmp 0x14011885e
lea rcx, [0x140e34118]
call fcn.1400560f0
jmp 0x14011885e
mov dword [rsp + 0x60], 0xffffffff
cmp qword [0x140e34128], rdx
je 0x14011884d
mov dword [rdx], 0xffffffff
add qword [0x140e34120], 4
jmp 0x14011885e
lea r8, [rsp + 0x60]
lea rcx, [0x140e34118]
call fcn.140117830
mov rbx, r13
xorps xmm0, xmm0
movdqu xmmword [rbp - 0x78], xmm0
mov qword [rbp - 0x68], r12
mov rdx, qword [rbx]
cmp qword [rbx + 8], rdx
je 0x14011888d
mov qword [rdx], r12
mov qword [rdx + 8], r12
mov qword [rdx + 0x10], r12
mov rcx, r12
mov rax, r12
add qword [rbx], 0x18
jmp 0x1401188a2
lea rcx, [rbx - 8]
lea r8, [rbp - 0x78]
call fcn.140117990
mov rax, qword [rbp - 0x68]
mov rcx, qword [rbp - 0x78]
test rcx, rcx
je 0x1401188e0
sub rax, rcx
sar rax, 2
lea rdx, [rax*4]
mov rax, rcx
cmp rdx, 0x1000
jb 0x1401188db
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1401189d1
call fcn.140143924
add rbx, 0x18
cmp rbx, r15
jl 0x140118861
test rdi, rdi
je 0x140118921
mov eax, 0xffffffff
lock xadd dword [rdi + 8], eax
cmp eax, 1
jne 0x140118921
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax]
mov eax, 0xffffffff
lock xadd dword [rdi + 0xc], eax
cmp eax, 1
jne 0x140118921
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 8]
add rsi, 0x10
cmp rsi, r14
jne 0x140118760
mov rax, qword [rsp + 0x30]
mov rsi, rax
mov rdi, qword [rax + 8]
mov rbx, rdi
cmp byte [rdi + 0x19], 0
jne 0x14011897c
nop dword [rax]
nop word [rax + rax]
mov rdx, qword [rbx + 0x10]
lea rcx, [rsp + 0x30]
call fcn.1401142e0
mov rbx, qword [rbx]
mov edx, 0x30
mov rcx, rdi
call fcn.140143924
mov rdi, rbx
cmp byte [rbx + 0x19], 0
je 0x140118950
mov rax, qword [rsp + 0x30]
mov qword [rax + 8], rsi
mov rax, qword [rsp + 0x30]
mov qword [rax], rsi
mov rax, qword [rsp + 0x30]
mov qword [rax + 0x10], rsi
mov qword [rsp + 0x38], r12
mov edx, 0x30
mov rcx, qword [rsp + 0x30]
call fcn.140143924
nop
lea rcx, [rbp - 0x48]
call fcn.1401180d0
mov byte [0x140e34188], 1
mov rbx, qword [rsp + 0x170]
add rsp, 0x130
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
call fcn.140165594
nop
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_FreeLibrary]
lea rdx, str.ADLs_API_is_missing
lea rcx, [rbp + 0x18]
call fcn.1400331f0
lea rdx, [0x14029fcc0]
lea rcx, [rbp + 0x18]
call fcn.140161c00
int3
lea rdx, str.Could_not_load_ADL
lea rcx, [rbp - 0x30]
call fcn.1400331f0
lea rdx, [0x14029fcc0]
lea rcx, [rbp - 0x30]
call fcn.140161c00
int3
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_FreeLibrary]
lea rdx, str.Failed_to_initialize_nested_ADL2_context
lea rcx, [rbp - 0x18]
call fcn.1400331f0
lea rdx, [0x14029fcc0]
lea rcx, [rbp - 0x18]
call fcn.140161c00
int3
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_FreeLibrary]
lea rdx, str.Failed_to_get_number_of_adapters
lea rcx, [rbp]
call fcn.1400331f0
lea rdx, [0x14029fcc0]
lea rcx, [rbp]
call fcn.140161c00
nop
call fcn.140041a70
int3
call fcn.140041a70
int3