Function at 0x10011fa0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x100c10b0
mov eax, dword fs:[0]
push eax
sub esp, 0xd0
push ebx
push esi
push edi
mov eax, dword [0x100f6f50]
xor eax, esp
push eax
lea eax, [esp + 0xe0]
mov dword fs:[0], eax
xor ebx, ebx
cmp dword [ebp + 8], ebx
jne 0x10011fee
push ebx
push 0xe36
push 0x100cb97c
push 0x80070057
call fcn.10001ed0
call fcn.10060fa0
test al, al
jne 0x100120a2
call fcn.100021b0
cmp dword [eax + 0x1c], 5
jl 0x100126b0
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x38], esp
push str..DisplayDriverExtSite.cpp
call fcn.10058480
mov dword [esp + 0x104], ebx
push 0xe3a
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x50], esp
push str.CDisplayDriverExtSite::AddOptimusRemovalPhase
call fcn.10058480
mov byte [esp + 0x124], 1
lea eax, [esp + 0x4f]
lea ecx, [esp + 0x5c]
lea edx, [esp + 0x64]
push 5
mov byte [esp + 0x53], bl
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], str.Skipping_Optimus_removal
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x70], vtable.Nvidia::Logging::ChainLoggable_class_Nvidia::Logging::Chain_char_const_____25___class_Nvidia::Logging::Chain_struct_Nvidia::Logging::NullType__struct_Nvidia::Logging::NullType___.0
mov dword [esp + 0x74], edx
call fcn.100021b0
push eax
mov dword [esp + 0x12c], 0xffffffff
lea edi, [esp + 0x74]
call fcn.10025de0
mov ecx, dword [esp + 0xe0]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
call fcn.100021b0
mov esi, 5
cmp dword [eax + 0x1c], esi
jl 0x1001213a
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x38], esp
push str..DisplayDriverExtSite.cpp
call fcn.10058480
mov dword [esp + 0x104], 2
push 0xe3e
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x50], esp
push str.CDisplayDriverExtSite::AddOptimusRemovalPhase
call fcn.10058480
mov byte [esp + 0x124], 3
lea eax, [esp + 0x4f]
lea ecx, [esp + 0x5c]
lea edx, [esp + 0x64]
push esi
mov byte [esp + 0x53], bl
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], str.Appending_Optimus_removal_phase_to_the_end_of_DD_phases
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x70], vtable.Nvidia::Logging::ChainLoggable_class_Nvidia::Logging::Chain_char_const_____56___class_Nvidia::Logging::Chain_struct_Nvidia::Logging::NullType__struct_Nvidia::Logging::NullType___.0
mov dword [esp + 0x74], edx
call fcn.100021b0
push eax
mov dword [esp + 0x12c], 0xffffffff
lea edi, [esp + 0x74]
call fcn.10025de0
mov dword [esp + 0x18], ebx
mov dword [esp + 0xe8], esi
lea eax, [esp + 0x18]
push eax
push 0x100d0af8
push 0x17
push ebx
push 0x100c734c
call dword [sym.imp.ole32.dll_CoCreateInstance]
cmp eax, ebx
jge 0x10012172
push ebx
push 0xe41
push 0x100cb97c
push eax
call fcn.10001ed0
mov dword [esp + 0x38], ebx
mov byte [esp + 0xe8], 7
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
lea edx, [esp + 0x38]
push edx
push eax
mov eax, dword [ecx + 0x5c]
call eax
cmp eax, ebx
jge 0x100121a4
push ebx
push 0xe43
push 0x100cb97c
push eax
call fcn.10001ed0
push str.nvkflt
lea ecx, [esp + 0xa0]
call fcn.10024650
mov byte [esp + 0xe8], 8
push str.nvpciflt
lea ecx, [esp + 0xc0]
call fcn.10024650
mov byte [esp + 0xe8], 9
mov dword [esp + 0x1c], ebx
lea esi, [esp + 0x9c]
mov dword [esp + 0x14], ebx
mov byte [esp + 0xe8], 0xb
lea ecx, [esp + 0x14]
push ecx
push 0x100d0b08
push 0x17
push ebx
push 0x100c739c
call dword [sym.imp.ole32.dll_CoCreateInstance]
cmp eax, ebx
jl 0x1001240f
mov edi, dword [esp + 0x14]
cmp dword [esi + 0x18], ebx
je 0x1001223f
mov ecx, esi
call fcn.10024700
movzx ecx, word [eax]
cmp cx, bx
je 0x1001223f
cmp cx, 1
je 0x1001223f
cmp cx, 8
sete cl
cmp cl, bl
je 0x1001249b
mov eax, dword [eax + 8]
jmp 0x10012241
xor eax, eax
mov edx, dword [edi]
push eax
mov eax, dword [edx + 0x3c]
push edi
call eax
cmp eax, ebx
jl 0x10012420
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x24]
push 6
push eax
call edx
cmp eax, ebx
jl 0x10012431
mov eax, 9
mov word [esp + 0x64], ax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x6c], eax
cmp eax, ebx
je 0x10012286
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push eax
call edx
mov byte [esp + 0xe8], 0xc
mov edi, dword [esp + 0x64]
mov ecx, dword [esp + 0x38]
mov edx, dword [ecx]
sub esp, 0x10
mov eax, esp
mov dword [eax], edi
mov edi, dword [esp + 0x78]
mov dword [eax + 4], edi
mov edi, dword [esp + 0x7c]
mov dword [eax + 8], edi
mov edi, dword [esp + 0x80]
mov dword [eax + 0xc], edi
mov eax, dword [edx + 0x44]
push ecx
call eax
cmp eax, ebx
jl 0x10012442
call fcn.100021b0
cmp dword [eax + 0x1c], 5
jl 0x100123ac
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x4c], esp
push 0x1a
mov edi, 7
xor edx, edx
mov dword [ecx + 0x18], edi
mov dword [ecx + 0x14], ebx
push str..DisplayDriverExtSite.cpp
mov word [ecx + 4], dx
call fcn.10058390
mov byte [esp + 0x104], 0xd
push 0xe50
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x64], esp
push 0x2d
xor eax, eax
mov dword [ecx + 0x18], edi
mov dword [ecx + 0x14], ebx
push str.CDisplayDriverExtSite::AddOptimusRemovalPhase
mov word [ecx + 4], ax
call fcn.10058390
mov byte [esp + 0x124], 0xe
lea ecx, [esp + 0x4f]
lea edx, [esp + 0x88]
mov dword [esp + 0x8c], ecx
mov dword [esp + 0xb4], edx
lea eax, [esp + 0xb0]
lea ecx, [esp + 0x80]
lea edx, [esp + 0x78]
push 5
mov byte [esp + 0x53], bl
mov dword [esp + 0xb4], str.Filter
mov dword [esp + 0x84], esi
mov dword [esp + 0x88], eax
mov dword [esp + 0x7c], str.listed_for_deletion
mov dword [esp + 0x80], ecx
mov dword [esp + 0x60], 0x100d07d8
mov dword [esp + 0x64], edx
call fcn.100021b0
push eax
mov byte [esp + 0x12c], 0xc
lea edi, [esp + 0x64]
call fcn.10025de0
mov byte [esp + 0xe8], 0xb
lea eax, [esp + 0x64]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov byte [esp + 0xe8], 9
mov eax, dword [esp + 0x14]
cmp eax, ebx
je 0x100123d7
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [esp + 0x1c]
inc eax
add esi, 0x20
cmp eax, 2
mov dword [esp + 0x1c], eax
jl 0x100121e1
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x20]
push 1
push eax
call edx
cmp eax, ebx
jge 0x10012453
push ebx
push 0xe53
push 0x100cb97c
push eax
call fcn.10001ed0
push ebx
push 0xe4b
push 0x100cb97c
push eax
call fcn.10001ed0
push ebx
push 0xe4c
push 0x100cb97c
push eax
call fcn.10001ed0
push ebx
push 0xe4d
push 0x100cb97c
push eax
call fcn.10001ed0
push ebx
push 0xe4f
push 0x100cb97c
push eax
call fcn.10001ed0
push str.removeOptimusFilters
lea ecx, [esp + 0x80]
call fcn.10024650
mov byte [esp + 0xe8], 0x10
mov esi, dword [esp + 0x18]
cmp dword [esp + 0x94], ebx
je 0x100124b5
lea ecx, [esp + 0x7c]
call fcn.10024700
movzx ecx, word [eax]
cmp cx, bx
je 0x100124b5
cmp cx, 1
je 0x100124b5
cmp cx, 8
sete cl
cmp cl, bl
jne 0x100124b0
push ebx
push 0xb7
push str.c:dvsp4_build_sw_relgpu_drvinstaller_coreincAutoString.h
push 0xe0e00000
call fcn.10001ed0
mov eax, dword [eax + 8]
jmp 0x100124b7
xor eax, eax
mov ecx, dword [esi]
mov edx, dword [ecx + 0x28]
push eax
push esi
call edx
cmp eax, ebx
jge 0x100124d5
push ebx
push 0xe55
push 0x100cb97c
push eax
call fcn.10001ed0
mov eax, 9
mov word [esp + 0x54], ax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x5c], eax
cmp eax, ebx
je 0x100124f3
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push eax
call edx
mov byte [esp + 0xe8], 0x11
mov esi, dword [esp + 0x54]
mov ecx, dword [ebp + 8]
mov edx, dword [ecx]
sub esp, 0x10
mov eax, esp
mov dword [eax], esi
mov esi, dword [esp + 0x68]
mov dword [eax + 4], esi
mov esi, dword [esp + 0x6c]
mov dword [eax + 8], esi
mov esi, dword [esp + 0x70]
mov dword [eax + 0xc], esi
mov eax, dword [edx + 0x44]
push ecx
call eax
cmp eax, ebx
jge 0x1001253b
push ebx
push 0xe58
push 0x100cb97c
push eax
call fcn.10001ed0
call fcn.100021b0
cmp dword [eax + 0x1c], 5
jl 0x10012610
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x44], esp
push 0x1a
mov esi, 7
xor edx, edx
mov dword [ecx + 0x18], esi
mov dword [ecx + 0x14], ebx
push str..DisplayDriverExtSite.cpp
mov word [ecx + 4], dx
call fcn.10058390
mov byte [esp + 0x104], 0x12
push 0xe59
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x6c], esp
push 0x2d
xor eax, eax
mov dword [ecx + 0x18], esi
mov dword [ecx + 0x14], ebx
push str.CDisplayDriverExtSite::AddOptimusRemovalPhase
mov word [ecx + 4], ax
call fcn.10058390
mov byte [esp + 0x124], 0x13
lea ecx, [esp + 0x4f]
lea edx, [esp + 0xb8]
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x5c], edx
lea eax, [esp + 0x88]
lea ecx, [esp + 0x5c]
lea edx, [esp + 0x78]
push 5
mov byte [esp + 0x53], bl
mov dword [esp + 0x64], eax
mov dword [esp + 0x7c], str.appended_successfully
mov dword [esp + 0x80], ecx
mov dword [esp + 0x84], 0x100d07ec
mov dword [esp + 0x88], edx
call fcn.100021b0
push eax
mov byte [esp + 0x12c], 0x11
lea edi, [esp + 0x88]
call fcn.10025de0
mov byte [esp + 0xe8], 0x10
mov esi, dword [sym.imp.OLEAUT32.dll_VariantCopy]
lea eax, [esp + 0x54]
push eax
call esi
mov byte [esp + 0xe8], 0x14
lea ecx, [esp + 0x84]
push ecx
call esi
mov byte [esp + 0xe8], 9
mov eax, dword [esp + 0x7c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x1001265f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xe8], 7
push fcn.100245f0
push 2
push 0x20
lea ecx, [esp + 0xa8]
push ecx
call fcn.1009012f
mov byte [esp + 0xe8], 5
mov eax, dword [esp + 0x38]
cmp eax, ebx
je 0x10012695
mov edx, dword [eax]
push eax
mov eax, dword [edx + 8]
call eax
mov dword [esp + 0xe8], 0xffffffff
mov eax, dword [esp + 0x18]
cmp eax, ebx
je 0x100126b0
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov ecx, dword [esp + 0xe0]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret