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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x4fca24
mov eax, dword fs:[0]
push eax
sub esp, 0x68
mov eax, dword [0x54d894]
xor eax, esp
mov dword [esp + 0x60], eax
push ebx
push esi
push edi
mov eax, dword [0x54d894]
xor eax, esp
push eax
lea eax, [esp + 0x78]
mov dword fs:[0], eax
mov edi, ecx
mov eax, dword [ebp + 8]
lea ebx, [edi + 0x64]
cmp dword [ebx], 0
mov dword [esp + 0x44], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x3c], eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x48], eax
mov eax, dword [ebp + 0x14]
mov dword [esp + 0x1c], eax
jne 0x40f934
push ecx
push ecx
mov ecx, ebx
call fcn.004128df
test eax, eax
js 0x40fbe6
push 0xc
call fcn.004dc5b8
mov esi, eax
pop ecx
test esi, esi
je 0x40f90f
and dword [esi + 4], 0
mov dword [esi], vtable.juce::WasapiClasses::WASAPIAudioIODeviceType::ChangeNotificationClient.0
mov dword [esi + 8], edi
jmp 0x40f911
xor esi, esi
test esi, esi
je 0x40f91b
mov eax, dword [esi]
push esi
call dword [eax + 4]
mov ecx, dword [edi + 0x68]
test ecx, ecx
je 0x40f928
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
mov dword [edi + 0x68], esi
mov ecx, dword [ebx]
push esi
push ecx
mov eax, dword [ecx]
call dword [eax + 0x18]
mov edx, dword [ebx]
lea ecx, [esp + 0x34]
xor edi, edi
push edi
call fcn.0040f7f3
mov dword [esp + 0x84], edi
lea ecx, [esp + 0x3c]
mov edx, dword [ebx]
push 1
call fcn.0040f7f3
pop ecx
pop ecx
mov byte [esp + 0x80], 2
lea edx, [esp + 0x20]
mov ecx, dword [ebx]
push edx
push 1
mov dword [esp + 0x30], edi
mov dword [esp + 0x28], edi
mov eax, dword [ecx]
push 2
push ecx
call dword [eax + 0xc]
test eax, eax
js 0x40fbb4
mov eax, dword [esp + 0x20]
lea edx, [esp + 0x28]
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0xc]
test eax, eax
js 0x40fbb4
mov ebx, edi
cmp dword [esp + 0x28], ebx
jbe 0x40fb8a
mov byte [esp + 0x80], 3
lea edx, [esp + 0x14]
mov eax, dword [esp + 0x20]
push edx
mov dword [esp + 0x18], edi
push ebx
mov ecx, dword [eax]
push eax
call dword [ecx + 0x10]
test eax, eax
js 0x40fb69
mov eax, dword [esp + 0x14]
lea edx, [esp + 0x40]
mov dword [esp + 0x40], edi
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x18]
test eax, eax
js 0x40fb69
cmp dword [esp + 0x40], 1
jne 0x40fb69
mov edx, dword [esp + 0x14]
lea ecx, [esp + 0x18]
call fcn.0040d734
mov esi, 0x51d44c
mov dword [esp + 0x2c], esi
mov byte [esp + 0x80], 6
lea edx, [esp + 0x24]
mov eax, dword [esp + 0x14]
push edx
mov dword [esp + 0x28], edi
push edi
mov ecx, dword [eax]
push eax
call dword [ecx + 0x10]
test eax, eax
jns 0x40fa48
mov byte [esp + 0x80], 5
mov eax, dword [esp + 0x24]
test eax, eax
je 0x40fa3a
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
push ecx
mov eax, esp
mov dword [eax], 0x51d44c
jmp 0x40fb56
push 0x10
lea eax, [esp + 0x50]
push edi
push eax
call fcn.004dd100
mov eax, dword [esp + 0x30]
lea edx, [esp + 0x58]
add esp, 0xc
mov dword [esp + 0x5c], 0xa45c254e
mov dword [esp + 0x60], 0x4efddf1c
mov dword [esp + 0x64], 0xd1672080
mov dword [esp + 0x68], 0xe050a846
push edx
mov dword [esp + 0x70], 0xe
lea edx, [esp + 0x60]
mov ecx, dword [eax]
push edx
push eax
call dword [ecx + 0x14]
test eax, eax
js 0x40fac5
mov eax, dword [esp + 0x54]
push ecx
mov ecx, esp
mov dword [ecx], eax
lea ecx, [esp + 0x34]
call fcn.0043d896
mov esi, dword [esp + 0x34]
mov eax, esp
mov ecx, 0x51d44c
mov dword [esp + 0x30], esi
mov dword [esp + 0x34], ecx
mov dword [eax], ecx
call fcn.0042db1d
pop ecx
lea eax, [esp + 0x4c]
push eax
call dword [sym.imp.ole32.dll_PropVariantClear]
mov byte [esp + 0x80], 5
mov eax, dword [esp + 0x24]
test eax, eax
je 0x40fae6
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea ecx, [esp + 0x14]
call fcn.0040d79d
test eax, eax
jne 0x40fb1a
lea eax, [esp + 0x34]
push eax
lea ecx, [esp + 0x1c]
call fcn.0042e1a5
mov ecx, dword [esp + 0x48]
neg eax
sbb edi, edi
lea eax, [esp + 0x18]
push eax
push edi
call fcn.0043b171
mov ecx, dword [esp + 0x44]
jmp 0x40fb44
cmp eax, 1
jne 0x40fb51
lea eax, [esp + 0x38]
push eax
lea ecx, [esp + 0x1c]
call fcn.0042e1a5
mov ecx, dword [esp + 0x1c]
neg eax
sbb edi, edi
lea eax, [esp + 0x18]
push eax
push edi
call fcn.0043b171
mov ecx, dword [esp + 0x3c]
lea eax, [esp + 0x2c]
push eax
push edi
call fcn.0043b171
xor edi, edi
push ecx
mov eax, esp
mov dword [eax], esi
call fcn.0042db1d
mov eax, dword [esp + 0x1c]
mov ecx, esp
mov dword [ecx], eax
call fcn.0042db1d
pop ecx
mov byte [esp + 0x80], 2
mov eax, dword [esp + 0x14]
test eax, eax
je 0x40fb7f
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
inc ebx
cmp ebx, dword [esp + 0x28]
jb 0x40f9a4
push ecx
mov eax, esp
push ecx
mov dword [eax], edi
mov eax, esp
push ecx
push ecx
mov ecx, dword [esp + 0x4c]
mov dword [eax], edi
call fcn.004304ad
push ecx
mov eax, esp
push ecx
mov dword [eax], edi
mov eax, esp
push ecx
push ecx
mov ecx, dword [esp + 0x54]
mov dword [eax], edi
call fcn.004304ad
mov byte [esp + 0x80], 1
mov eax, dword [esp + 0x20]
test eax, eax
je 0x40fbca
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [esp + 0x38]
push ecx
mov ecx, esp
mov dword [ecx], eax
call fcn.0042db1d
mov eax, dword [esp + 0x38]
mov ecx, esp
mov dword [ecx], eax
call fcn.0042db1d
pop ecx
mov ecx, dword [esp + 0x78]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x60]
xor ecx, esp
call fcn.004db457
mov esp, ebp
pop ebp
ret 0x10