Function at 0x423b30
Capabilities:
Check os version

Disassembly:
push 0xffffffffffffffff
push 0x55b230
mov eax, dword fs:[0]
push eax
sub esp, 0x10
push ebx
push ebp
push esi
push edi
mov eax, dword [0x5bc9cc]
xor eax, esp
push eax
lea eax, [esp + 0x24]
mov dword fs:[0], eax
mov edi, ecx
mov dword [esp + 0x18], edi
xor edx, edx
cmp dword [edi + 4], edx
je 0x423b82
mov ecx, dword [edi + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 0x54]
call edx
mov ecx, dword [esp + 0x24]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c
ret
mov eax, dword [edi + 8]
cmp eax, edx
je 0x4240ac
mov ebx, 8
test byte [eax + 8], bl
je 0x423bd5
mov eax, dword [eax + 0x1804]
cmp eax, edx
je 0x423bd5
cmp eax, edx
mov ecx, eax
je 0x423bca
mov ecx, dword [ecx + 8]
cmp ecx, edx
mov eax, dword [eax]
je 0x423bc4
cmp dword [ecx + 0x68], ebx
jne 0x423bc4
cmp dword [ecx + 0x1c], edx
jne 0x423bc4
mov ecx, dword [ecx + 0x70]
mov ecx, dword [ecx + 8]
cmp ecx, edx
jne 0x423bcf
cmp eax, edx
jne 0x423ba1
jmp 0x423bd5
jmp fcn.0050c9ad
mov dword [ecx + 0xc], edx
mov dword [ecx + 8], edx
mov eax, dword [edi + 8]
mov ecx, dword [eax + 8]
test cl, 0x20
jne 0x423bec
test ecx, 0x800
je 0x423cb1
mov ebp, dword [eax + 0x1804]
cmp ebp, edx
mov dword [esp + 0x20], edx
je 0x423cb1
mov edi, edi
test ebp, ebp
mov eax, ebp
je 0x423bca
mov esi, dword [eax + 8]
test esi, esi
mov ebp, dword [ebp]
je 0x423ca4
test byte [esi + 0xe8], bl
je 0x423ca4
test byte [esi + 0xec], 0xe0
jne 0x423c3e
test dword [esi + 0xf0], 0x40000
jne 0x423c3e
mov edx, dword [edi + 8]
test byte [edx + 8], 0x20
jne 0x423ca4
push 0
push 0x5c4580
push 0x5be2b8
push 0
mov ebx, 1
mov eax, esi
call fcn.0040a840
push eax
call fcn.00529b83
mov ebx, eax
add esp, 0x14
test ebx, ebx
je 0x423ca4
cmp dword [esi + 0x1c], 0
je 0x423ca4
lea esi, [esp + 0x20]
mov edx, ebx
call fcn.004769b0
test eax, eax
jne 0x423ca4
cmp dword [esp + 0x20], eax
jne 0x423ca4
mov eax, dword [ebx]
mov edx, dword [eax + 0x18]
push 0
mov ecx, ebx
call edx
push 1
mov edi, 1
mov ecx, 0x56f15c
mov edx, ebx
call fcn.0046ec70
mov edi, dword [esp + 0x18]
test ebp, ebp
mov ebx, 8
jne 0x423c00
mov eax, dword [edi + 8]
mov eax, dword [eax + 0xc]
test al, 0x18
jne 0x423cc6
test eax, 0x4000
je 0x423f08
call fcn.0041e460
test eax, eax
je 0x423f08
push 0x5703b8
lea ecx, [esp + 0x20]
call fcn.0040c150
mov dword [esp + 0x2c], 0
mov ecx, dword [edi + 8]
mov eax, dword [ecx + 0xc]
test bl, al
je 0x423d0b
push str.SetSpeakersAsDefaultAt1stPlugIn
lea ecx, [esp + 0x20]
call fcn.0040c050
mov dword [esp + 0x20], 1
jmp 0x423d44
test al, 0x10
je 0x423d27
push str.SetHDMIAsDefaultAt1stPlugIn
lea ecx, [esp + 0x20]
call fcn.0040c050
mov dword [esp + 0x20], 9
jmp 0x423d44
test eax, 0x4000
je 0x423d44
push str.SetFrontMicAsDefaultAt1stPlugIn
lea ecx, [esp + 0x20]
call fcn.0040c050
mov dword [esp + 0x20], 4
mov edx, dword [esp + 0x1c]
push 0
push edx
push str.General
mov ecx, 0x5c9c18
call fcn.00510303
test eax, eax
jne 0x423edb
mov eax, dword [edi + 8]
mov ebp, dword [eax + 0x1804]
jmp 0x423d70
xor ebx, ebx
cmp ebp, ebx
je 0x423ed7
mov eax, ebp
mov esi, dword [eax + 8]
cmp esi, ebx
mov ebp, dword [ebp]
je 0x423d70
mov ecx, dword [esp + 0x20]
cmp dword [esi + 0x68], ecx
jne 0x423d70
mov edx, dword [esp + 0x18]
mov eax, dword [edx + 8]
test dword [eax + 0xc], 0x4000
je 0x423e81
push 0x5703b8
lea ecx, [esp + 0x18]
call fcn.0040c150
mov byte [esp + 0x2c], 1
cmp dword [esi + 0x38], 2
jle 0x423e05
push ebx
push 0x5703b8
lea ecx, [esp + 0x1c]
call fcn.00402fc0
push 2
lea ecx, [esi + 0x2c]
call fcn.0050f31c
cmp eax, ebx
je 0x423bca
mov eax, dword [eax + 8]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [esp + 0x1c]
call fcn.0040bfc0
lea edi, [esp + 0x14]
call fcn.0040b9e0
mov ecx, dword [esp + 0x14]
cmp dword [ecx - 0xc], ebx
jge 0x423e12
or eax, 0xffffffff
jmp 0x423e31
mov byte [esp + 0x2c], bl
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
jmp 0x423e46
push str.FRONTMICINWAVE
push ecx
call fcn.00529c58
mov ecx, dword [esp + 0x1c]
add esp, 8
cmp eax, ebx
jne 0x423e2d
or eax, 0xffffffff
jmp 0x423e31
sub eax, ecx
sar eax, 1
xor edx, edx
cmp eax, 0xffffffff
setne dl
mov byte [esp + 0x2c], bl
mov eax, edx
cmp eax, ebx
lea eax, [ecx - 0x10]
jne 0x423e68
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x423d70
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x423d70
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x423e81
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push ebx
push 0x5c44e0
push 0x5be2b8
push ebx
mov ebx, 5
mov eax, esi
call fcn.0040a840
push eax
call fcn.00529b83
mov esi, eax
add esp, 0x14
test esi, esi
je 0x423d70
mov ecx, esi
call fcn.00429390
mov ecx, esi
call fcn.00429460
mov ecx, esi
call fcn.00429530
mov ecx, dword [esp + 0x1c]
push 1
push ecx
push str.General
mov ecx, 0x5c9c18
call fcn.0051036c
mov edi, dword [esp + 0x18]
mov dword [esp + 0x2c], 0xffffffff
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x423f03
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ebx, 8
mov ecx, dword [edi + 8]
test dword [ecx + 0xc], 0x8000
mov ebp, dword [sym.imp.KERNEL32.dll_GetVersionExW]
je 0x424050
cmp dword [0x5c9a5c], 0
jne 0x423f38
push 0x5c9a58
mov dword [0x5c9a58], 0x114
call ebp
cmp dword [0x5c9a5c], 6
jne 0x424054
cmp dword [0x5c9a60], 0
jne 0x424077
push 0
push str.SetSpkAsDefaultAt1stSPDIFPlugIn
push str.General
mov ecx, 0x5c9c18
call fcn.00510303
test eax, eax
jne 0x424050
mov edx, dword [edi + 8]
mov edx, dword [edx + 0x1804]
mov eax, edx
test eax, eax
je 0x424050
mov esi, 1
jmp 0x423f90
test eax, eax
mov ecx, eax
je 0x423bca
mov ecx, dword [ecx + 8]
test ecx, ecx
mov eax, dword [eax]
je 0x423fb3
cmp dword [ecx + 0x68], ebx
jne 0x423fb3
cmp dword [ecx + 0x1c], 0
je 0x423fb3
cmp dword [ecx + 0x24], esi
je 0x423fbc
test eax, eax
jne 0x423f90
jmp 0x424054
mov edi, edx
test edi, edi
je 0x424050
jmp 0x423fd5
mov esi, 1
test edi, edi
mov eax, edi
je 0x423bca
mov eax, dword [eax + 8]
test eax, eax
mov edi, dword [edi]
je 0x42401f
cmp dword [eax + 0x68], esi
jne 0x42401f
cmp dword [eax + 0x1c], 0
je 0x42401f
cmp dword [eax + 0x24], esi
jne 0x42401f
push 0
push 0x5c44e0
push 0x5be2b8
push 0
mov ebx, 5
call fcn.0040a840
push eax
call fcn.00529b83
mov esi, eax
add esp, 0x14
test esi, esi
jne 0x424025
test edi, edi
jne 0x423fd0
jmp 0x424050
mov ecx, esi
call fcn.00429390
mov ecx, esi
call fcn.00429460
mov ecx, esi
call fcn.00429530
push 1
push str.SetSpkAsDefaultAt1stSPDIFPlugIn
push str.General
mov ecx, 0x5c9c18
call fcn.0051036c
mov edi, dword [esp + 0x18]
cmp dword [0x5c9a5c], 0
jne 0x42406e
push 0x5c9a58
mov dword [0x5c9a58], 0x114
call ebp
cmp dword [0x5c9a5c], 6
jne 0x4240ac
cmp dword [0x5c9a60], 1
jne 0x4240ac
mov eax, dword [edi + 8]
mov esi, dword [eax + 0x1804]
test esi, esi
je 0x4240ac
lea ecx, [ecx]
test esi, esi
mov eax, esi
je 0x423bca
mov ecx, dword [eax + 8]
test ecx, ecx
mov esi, dword [esi]
je 0x4240a8
call fcn.0041e850
test esi, esi
jne 0x424090
mov ecx, dword [esp + 0x24]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c
ret