Function at 0x421470
Capabilities:
Inspect section memory permissions

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x55b302
mov eax, dword fs:[0]
push eax
sub esp, 0x6c
push ebx
push ebp
push esi
push edi
mov eax, dword [0x5bc9cc]
xor eax, esp
push eax
lea eax, [esp + 0x80]
mov dword fs:[0], eax
mov esi, ecx
mov dword [esp + 0x18], esi
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x4214cb
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
call edx
mov ecx, dword [esp + 0x80]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 8]
test eax, eax
je 0x4229b0
mov eax, dword [eax + 4]
not eax
and eax, 1
push eax
push str.ShowTrayIcon
push str.General
mov ecx, 0x5c9c18
call fcn.0051036c
mov ecx, dword [esi + 8]
mov edx, dword [ecx + 4]
shr edx, 2
not edx
and edx, 1
push edx
push str.JDPopup
push str.General
mov ecx, 0x5c9c18
call fcn.0051036c
mov eax, dword [esi + 8]
test byte [eax + 6], 1
jne 0x421529
test byte [eax + 8], 0x10
je 0x4215ee
mov edi, dword [eax + 0x1804]
test edi, edi
je 0x4215ee
jmp 0x421540
test edi, edi
mov eax, edi
je 0x42175a
mov ebp, dword [eax + 8]
test ebp, ebp
mov edi, dword [edi]
mov dword [esp + 0x48], edi
je 0x4215e2
push 0
push 0x5c44c4
push 0x5be2b8
push 0
xor ebx, ebx
mov eax, ebp
call fcn.0040a840
push eax
call fcn.00529b83
mov esi, eax
add esp, 0x14
test esi, esi
je 0x4215e2
cmp dword [ebp + 0x1c], ebx
je 0x4215e2
test byte [ebp + 0xe8], 1
je 0x4215ae
mov eax, dword [esi]
mov edx, dword [eax + 0x18]
push ebx
mov ecx, esi
call edx
push 1
lea edi, [ebx + 1]
mov ecx, 0x56f120
mov edx, esi
call fcn.0046ec70
mov edi, dword [esp + 0x48]
cmp dword [ebp + 0x1c], 0
je 0x4215e2
test dword [ebp + 0xe0], 0x100
je 0x4215e2
mov eax, dword [esi]
mov edx, dword [eax + 0x18]
push 0
mov ecx, esi
call edx
push 1
mov edi, 1
mov ecx, 0x56edb0
mov edx, esi
call fcn.0046ec70
mov edi, dword [esp + 0x48]
test edi, edi
jne 0x421540
mov esi, dword [esp + 0x18]
mov eax, dword [esi + 8]
mov ecx, 0x800
test dword [eax + 0x1c], ecx
mov edx, 1
je 0x421606
mov dword [esi + 0x10], edx
mov dword [esi + 0x1c], edx
test dword [eax + 8], 0x40000000
je 0x42161c
mov dword [esi + 0x1c], edx
mov dword [esi + 0x18], 3
mov dword [esi + 0x10], edx
test dword [eax + 0xc], ecx
je 0x421627
mov dword [esi + 0x10], edx
mov dword [esi + 0x14], edx
cmp dword [eax + 0x18], 0
je 0x421636
mov dword [esi + 0x10], edx
mov ecx, dword [eax + 0x18]
mov dword [esi + 0x18], ecx
test byte [eax + 0xc0], 0x20
je 0x421649
mov dword [esi + 0x10], edx
mov dword [esi + 0x18], 0
cmp dword [esi + 0x10], 0
je 0x4216b8
test dword [eax + 0x28], 0x2000000
je 0x4216b8
mov edx, dword [esi + 0x1c]
push edx
push str.Enabled
push str.PowerMgnt
mov ecx, 0x5c9c18
call fcn.0051036c
mov eax, dword [esi + 0x18]
push eax
push str.DelayTime
push str.PowerMgnt
mov ecx, 0x5c9c18
call fcn.0051036c
mov ecx, dword [esi + 0x14]
push ecx
push str.OnlyBattery
push str.PowerMgnt
mov ecx, 0x5c9c18
call fcn.0051036c
mov edx, dword [esi + 0x20]
push edx
push str.PowerState
push str.PowerMgnt
mov ecx, 0x5c9c18
call fcn.0051036c
mov eax, dword [esi + 8]
mov ebp, 0x10000000
test dword [eax + 4], ebp
jne 0x4216cf
test byte [eax + 8], 0x40
je 0x421784
call fcn.0041e460
test eax, eax
je 0x421784
mov eax, dword [esi + 8]
mov edi, dword [eax + 0x1804]
test edi, edi
je 0x421784
lea ecx, [ecx]
test edi, edi
mov eax, edi
je 0x42175a
mov eax, dword [eax + 8]
test eax, eax
mov edi, dword [edi]
je 0x421754
mov ecx, dword [eax + 0x68]
xor edx, edx
cmp ecx, 1
jne 0x421717
mov esi, dword [esp + 0x18]
mov esi, dword [esi + 8]
test dword [esi + 4], ebp
je 0x421717
mov edx, ecx
cmp ecx, 9
jne 0x421729
mov ecx, dword [esp + 0x18]
mov ecx, dword [ecx + 8]
test byte [ecx + 8], 0x40
jne 0x42172d
test edx, edx
je 0x421754
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 0x42175f
test edi, edi
jne 0x4216f0
jmp 0x421780
jmp fcn.0050c9ad
push 0
push 0
call fcn.00429600
add esp, 8
mov ecx, esi
call fcn.00429390
mov ecx, esi
call fcn.00429460
mov ecx, esi
call fcn.00429530
mov esi, dword [esp + 0x18]
mov edx, dword [esi + 8]
test byte [edx + 0xc], 0x80
je 0x421890
call fcn.0041e460
test eax, eax
je 0x421890
push 0x5703b8
lea ecx, [esp + 0x34]
call fcn.0040c150
mov dword [esp + 0x88], 0
mov eax, dword [esi + 8]
mov eax, dword [eax + 0x1804]
test eax, eax
mov dword [esp + 0x34], eax
je 0x42187c
lea esp, [esp]
mov eax, dword [esp + 0x34]
test eax, eax
je 0x42175a
mov ebp, dword [eax + 8]
test ebp, ebp
mov ecx, dword [eax]
mov dword [esp + 0x34], ecx
je 0x421851
cmp dword [ebp + 0x1c], 0
jne 0x421851
lea esi, [esp + 0x30]
mov edi, ebp
call fcn.0040a9e0
test eax, eax
je 0x421851
mov edi, esi
call fcn.0040b9e0
mov eax, dword [esp + 0x30]
cmp dword [eax - 0xc], 0
jl 0x421851
push str.DIGITALMICWAVE
push eax
call fcn.00529c58
add esp, 8
test eax, eax
je 0x421851
sub eax, dword [esp + 0x30]
sar eax, 1
cmp eax, 0xffffffff
je 0x421851
push 0
push 0x5c44e0
push 0x5be2b8
push 0
mov ebx, 5
mov eax, ebp
call fcn.0040a840
push eax
call fcn.00529b83
mov esi, eax
add esp, 0x14
test esi, esi
jne 0x42185e
cmp dword [esp + 0x34], 0
jne 0x4217d0
jmp 0x421873
mov ecx, esi
call fcn.00429390
mov ecx, esi
call fcn.00429460
mov ecx, esi
call fcn.00429530
mov esi, dword [esp + 0x18]
mov ebp, 0x10000000
lea ecx, [esp + 0x30]
mov dword [esp + 0x88], 0xffffffff
call fcn.00401660
mov edx, dword [esi + 8]
test dword [edx + 0xc], ebp
je 0x421976
push 0x5703b8
lea ecx, [esp + 0x4c]
call fcn.0040c150
mov dword [esp + 0x88], 1
mov eax, dword [esi + 8]
mov ebp, dword [eax + 0x1804]
test ebp, ebp
je 0x42194b
test ebp, ebp
mov eax, ebp
je 0x42175a
mov edi, dword [eax + 8]
test edi, edi
mov ebp, dword [ebp]
je 0x42192c
cmp dword [edi + 0x1c], 0
jne 0x42192c
lea esi, [esp + 0x48]
call fcn.0040a9e0
test eax, eax
je 0x42192c
cmp dword [edi + 0x68], 4
jne 0x42192c
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx + 8]
test dword [edx + 0xc], 0x10000000
je 0x42192c
push 0
push 0x5c44e0
push 0x5be2b8
push 0
mov ebx, 5
mov eax, edi
call fcn.0040a840
push eax
call fcn.00529b83
mov esi, eax
add esp, 0x14
test esi, esi
jne 0x421932
test ebp, ebp
jne 0x4218c6
jmp 0x421947
mov ecx, esi
call fcn.00429390
mov ecx, esi
call fcn.00429460
mov ecx, esi
call fcn.00429530
mov esi, dword [esp + 0x18]
mov dword [esp + 0x88], 0xffffffff
mov eax, dword [esp + 0x48]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x421976
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esi + 8]
test dword [eax + 4], 0x40000000
je 0x421a59
mov ecx, dword [eax + 0x1804]
test ecx, ecx
je 0x421a59
test ecx, ecx
mov eax, ecx
je 0x42175a
mov eax, dword [eax + 8]
test eax, eax
mov ecx, dword [ecx]
mov dword [esp + 0x30], ecx
je 0x421a51
cmp dword [eax + 0x1c], 0
je 0x421a51
cmp dword [eax + 0x68], 8
jne 0x421a51
test byte [eax + 0xec], 1
je 0x421a51
push 0
push 0x5be2d4
push 0x5be2b8
push 0
mov ebx, 7
call fcn.0040a840
push eax
call fcn.00529b83
add esp, 0x14
test eax, eax
mov dword [esp + 0x34], eax
je 0x421a49
mov ecx, eax
mov edi, dword [ecx + 0x40]
xor ebx, ebx
test edi, edi
jbe 0x421a49
xor ebp, ebp
cmp ebx, edi
jae 0x421a31
mov edx, dword [esp + 0x34]
mov eax, dword [edx + 0x3c]
test eax, eax
je 0x421a31
lea esi, [eax + ebp]
test esi, esi
je 0x421a31
lea eax, [esi + 0x1c]
push eax
push 0x5719e8
call fcn.004030f0
add esp, 8
test eax, eax
jne 0x421a3d
add ebx, 1
add ebp, 0x40
cmp ebx, edi
jb 0x421a0a
jmp 0x421a49
mov ebx, dword [esp + 0x34]
lea eax, [esi + 0x2c]
call fcn.0043e750
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x30]
test ecx, ecx
jne 0x421994
mov eax, dword [esi + 8]
mov ecx, dword [eax + 8]
test cl, 0x20
jne 0x421a70
test ecx, 0x800
je 0x421b12
mov ebp, dword [eax + 0x1804]
test ebp, ebp
je 0x421b12
test ebp, ebp
mov eax, ebp
je 0x42175a
mov edi, dword [eax + 8]
test edi, edi
mov ebp, dword [ebp]
je 0x421b06
test byte [edi + 0xe8], 8
je 0x421b06
test byte [edi + 0xec], 0xe0
jne 0x421abd
test dword [edi + 0xf0], 0x40000
jne 0x421abd
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx + 8]
test byte [edx + 8], 0x20
jne 0x421b06
push 0
push 0x5c4580
push 0x5be2b8
push 0
mov ebx, 1
mov eax, edi
call fcn.0040a840
push eax
call fcn.00529b83
mov esi, eax
add esp, 0x14
test esi, esi
je 0x421b06
cmp dword [edi + 0x1c], 0
je 0x421b06
mov eax, dword [esi]
mov edx, dword [eax + 0x18]
push 0
mov ecx, esi
call edx
push ebx
mov edi, ebx
mov ecx, 0x56f15c
mov edx, esi
call fcn.0046ec70
test ebp, ebp
jne 0x421a7e
mov esi, dword [esp + 0x18]
mov eax, dword [esi + 8]
test dword [eax + 0x1c], 0x200
je 0x421c13
mov ebp, dword [eax + 0x1804]
test ebp, ebp
je 0x421c13
test ebp, ebp
mov eax, ebp
je 0x42175a
mov esi, dword [eax + 8]
test esi, esi
mov ebp, dword [ebp]
je 0x421c07
test byte [esi + 0xec], 0xe0
jne 0x421b61
test dword [esi + 0xf0], 0x40000
je 0x421c07
mov eax, dword [esi + 0x68]
cmp eax, 8
je 0x421b6e
cmp eax, 9
jne 0x421b82
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 8]
test dword [ecx + 8], 0x100
jne 0x421c07
push 0
push 0x5c45a0
push 0x5be2b8
push 0
mov ebx, 3
mov eax, esi
call fcn.0040a840
push eax
call fcn.00529b83
mov ebx, eax
add esp, 0x14
test ebx, ebx
je 0x421c07
cmp dword [esi + 0x1c], 0
je 0x421bb8
push 1
call fcn.00435d00
test byte [esi + 0xec], 0x20
je 0x421be8
push 1
mov edi, 1
mov ecx, 0x56eea0
mov edx, ebx
call fcn.0046ec70
push edi
mov ecx, 0x56ee78
mov edx, ebx
call fcn.0046ec70
mov ecx, 0x56ee50
jmp 0x421bfe
test dword [esi + 0xf0], 0x40000
je 0x421c07
mov edi, 1
mov ecx, 0x56eea0
push 1
mov edx, ebx
call fcn.0046ec70
test ebp, ebp
jne 0x421b30
mov esi, dword [esp + 0x18]
mov eax, dword [esi + 8]
test dword [eax + 0x1c], 0x400
je 0x421d1a
mov ebp, dword [eax + 0x1804]
test ebp, ebp
je 0x421d1a
test ebp, ebp
mov eax, ebp
je 0x42175a
mov edi, dword [eax + 8]
test edi, edi
mov ebp, dword [ebp]
je 0x421d0e
test byte [edi + 0xef], 1
je 0x421d0e
mov eax, dword [edi + 0x68]
cmp eax, 8
je 0x421c63
cmp eax, 9
jne 0x421c77
mov edx, dword [esp + 0x18]
mov eax, dword [edx + 8]
test dword [eax + 8], 0x100
jne 0x421d0e
push 0
push 0x5c45bc
push 0x5be2b8
push 0
mov ebx, 0xc
mov eax, edi
call fcn.0040a840
push eax
call fcn.00529b83
mov esi, eax
add esp, 0x14
test esi, esi
jne 0x421cea
push eax
push 0x5c45bc
push 0x5be2b8
push eax
lea ebx, [eax + 0xd]
mov eax, edi
call fcn.0040a840
push eax
call fcn.00529b83
mov esi, eax
add esp, 0x14
test esi, esi
jne 0x421cea
push eax
push 0x5c45bc
push 0x5be2b8
push eax
lea ebx, [eax + 0x12]
mov eax, edi
call fcn.0040a840
push eax
call fcn.00529b83
mov esi, eax
add esp, 0x14
test esi, esi
je 0x421d0e
cmp dword [edi + 0x1c], 0
je 0x421d0e
push 1
mov edi, 1
mov ecx, 0x56f328
mov edx, esi
call fcn.0046ec70
mov edx, dword [esi]
mov eax, dword [edx + 0x18]
push 0
mov ecx, esi
call eax
test ebp, ebp
jne 0x421c31
mov esi, dword [esp + 0x18]
mov eax, dword [esi + 8]
test byte [eax + 0xa], 1
je 0x421d8b
mov ebp, dword [eax + 0x1804]
test ebp, ebp
je 0x421d8b
lea ecx, [ecx]
test ebp, ebp
mov eax, ebp
je 0x42175a
mov eax, dword [eax + 8]
test eax, eax
mov ebp, dword [ebp]
je 0x421d83
push 0
push 0x5c44c4
push 0x5be2b8
push 0
xor ebx, ebx
call fcn.0040a840
push eax
call fcn.00529b83
mov esi, eax
add esp, 0x14
test esi, esi
je 0x421d83
mov edx, dword [esi]
mov eax, dword [edx + 0x18]
push ebx
mov ecx, esi
call eax
push 1
lea edi, [ebx + 1]
mov ecx, 0x56ed10
mov edx, esi
call fcn.0046ec70
test ebp, ebp
jne 0x421d30
mov esi, dword [esp + 0x18]
mov esi, dword [esi + 8]
mov ebp, 0x2000000
test dword [esi + 8], ebp
jne 0x421da5
test dword [esi + 0x1c], 0xf000
je 0x421ee6
push 0x14
call fcn.00503623
mov esi, eax
add esp, 4
test esi, esi
je 0x421ee6
mov ecx, dword [esp + 0x18]
mov dword [esi + 8], 0
mov dword [esi + 0xc], 0
mov dword [esi + 0x10], 0
mov dword [esi], vtable.CDolbySetting.0
mov dword [esi + 4], 3
mov edx, dword [ecx + 8]
mov ebx, dword [edx + 0x1804]
test ebx, ebx
je 0x421edb
test ebx, ebx
mov eax, ebx
je 0x42175a
mov eax, dword [eax + 8]
test eax, eax
mov ebx, dword [ebx]
je 0x421ed3
cmp dword [eax + 0x1c], 0
je 0x421ed3
test dword [eax + 0xec], 0x8000000
je 0x421ed3
mov edx, dword [esi]
push eax
mov eax, dword [edx + 0x10]
mov ecx, esi
call eax
test eax, eax
je 0x421ed3
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + 8]
test dword [eax + 8], ebp
jne 0x421e48
test dword [eax + 0x1c], 0x1000
je 0x421e5b
push 1
mov edi, 1
mov ecx, 0x56eea0
mov edx, esi
call fcn.0046ec70
mov edx, dword [esp + 0x18]
mov eax, dword [edx + 8]
test dword [eax + 8], ebp
jne 0x421e70
test dword [eax + 0x1c], 0x2000
je 0x421e83
push 1
mov edi, 1
mov ecx, 0x56eeb4
mov edx, esi
call fcn.0046ec70
mov eax, dword [esp + 0x18]
mov eax, dword [eax + 8]
test dword [eax + 8], ebp
jne 0x421e98
test dword [eax + 0x1c], 0x4000
je 0x421eab
push 1
mov edi, 1
mov ecx, 0x56eec8
mov edx, esi
call fcn.0046ec70
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + 8]
test dword [eax + 8], ebp
jne 0x421ec0
test dword [eax + 0x1c], 0x8000
je 0x421ed3
push 1
mov edi, 1
mov ecx, 0x56ee50
mov edx, esi
call fcn.0046ec70
test ebx, ebx
jne 0x421df0
mov edx, dword [esi]
mov eax, dword [edx + 4]
push 1
mov ecx, esi
call eax
mov edi, dword [esp + 0x18]
mov ecx, dword [edi + 8]
mov eax, dword [ecx + 8]
test eax, 0x4000000
mov ebp, dword [sym.imp.ole32.dll_PropVariantClear]
jne 0x421f16
and eax, 0x80000000
cmp eax, 0x80000000
je 0x421f16
test dword [ecx + 0x1c], 0x20000
je 0x421fbb
mov esi, dword [ecx + 0x1804]
test esi, esi
je 0x421fbb
mov ebx, 0x13
lea esp, [esp]
test esi, esi
mov eax, esi
je 0x42175a
mov edx, dword [eax + 8]
test edx, edx
mov esi, dword [esi]
je 0x421fb3
cmp dword [edx + 0x1c], 0
je 0x421fb3
test dword [edx + 0xec], 0x8000000
je 0x421fb3
mov ecx, dword [edi + 8]
mov eax, dword [ecx + 8]
test eax, 0x4000000
je 0x421f6c
mov dword [esp + 0x54], 3
jmp 0x421f96
and eax, 0x80000000
cmp eax, 0x80000000
jne 0x421f82
mov dword [esp + 0x54], 6
jmp 0x421f96
mov eax, dword [ecx + 0x1c]
test eax, 0x20000
je 0x421f9b
shr eax, 0x12
and eax, 7
mov dword [esp + 0x54], eax
mov word [esp + 0x4c], bx
push edx
lea edi, [esp + 0x50]
mov ecx, 0x56eedc
call fcn.00409c20
mov ecx, edi
push ecx
call ebp
mov edi, dword [esp + 0x18]
test esi, esi
jne 0x421f30
mov eax, dword [edi + 8]
test dword [eax + 8], 0x20000000
je 0x42208a
mov ebp, dword [eax + 0x1804]
test ebp, ebp
je 0x42208a
lea esp, [esp]
test ebp, ebp
mov eax, ebp
je 0x42175a
mov eax, dword [eax + 8]
test eax, eax
mov ebp, dword [ebp]
je 0x42207e
push 0
push 0x5c45d8
push 0x5be2b8
push 0
mov ebx, 0xa
call fcn.0040a840
push eax
call fcn.00529b83
mov esi, eax
add esp, 0x14
test esi, esi
je 0x42207e
cmp dword [esi + 0x14], 0
push 2
je 0x422038
push str.SOFTWARESRS_LabsAPO
mov ecx, 0x56f1d4
call fcn.0048a2b0
jmp 0x422049
mov edi, 1
mov ecx, 0x56ef40
mov edx, esi
call fcn.0046ec70
cmp dword [esi + 0x14], 0
push 1
je 0x422062
push str.SOFTWARESRS_LabsAPO
mov ecx, 0x56f1c0
call fcn.0048a2b0
jmp 0x422073
mov edi, 1
mov ecx, 0x56ef2c
mov edx, esi
call fcn.0046ec70
mov edx, dword [esi]
mov eax, dword [edx + 0x18]
push 0
mov ecx, esi
call eax
test ebp, ebp
jne 0x421fe0
mov edi, dword [esp + 0x18]
mov eax, dword [edi + 8]
test byte [eax + 0x8f], 1
je 0x42211d
mov esi, dword [eax + 0x1804]
test esi, esi
je 0x42211d
xor ebp, ebp
test esi, esi
mov eax, esi
je 0x42175a
mov eax, dword [eax + 8]
test eax, eax
mov esi, dword [esi]
je 0x422119
cmp dword [eax + 0x1c], ebp
jne 0x422119
test dword [eax + 0xe4], 0x40000
je 0x422119
push ebp
push 0x5c4168
push 0x5be2b8
push ebp
lea ebx, [ebp + 2]
call fcn.0040a840
push eax
call fcn.00529b83
add esp, 0x14
test eax, eax
je 0x422119
mov ecx, dword [edi + 8]
mov ecx, dword [ecx + 0xb4]
test cl, 0x20
je 0x4220fc
lea ebp, [ebx - 1]
test cl, 0x40
je 0x422103
or ebp, ebx
push ebp
mov edi, 1
mov ecx, 0x56fb98
mov edx, eax
call fcn.0046ec70
mov edi, dword [esp + 0x18]
test esi, esi
jne 0x4220a4
mov eax, dword [edi + 8]
test dword [eax + 0x8c], 0x8000000
je 0x42228c
cmp byte [eax + 0xf0], 0
je 0x42228c
mov ebp, dword [eax + 0x1804]
xor ebx, ebx
cmp ebp, ebx
je 0x42228e
mov esi, dword [esp + 0x18]
or edx, 0xffffffff
mov dword [esp + 0x64], ebx
mov dword [esp + 0x68], ebx
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x5c], vtable.CAndreaMicSetting.0
mov dword [esp + 0x60], 0xe
mov dword [esp + 0x70], ebx
mov dword [esp + 0x74], ebx
cmp ebp, ebx
mov dword [esp + 0x88], 2
mov eax, ebp
je 0x42175a
mov ecx, dword [eax + 8]
cmp ecx, ebx
mov ebp, dword [ebp]
jne 0x4221a3
mov dword [esp + 0x88], edx
jmp 0x422282
cmp dword [ecx + 0x1c], ebx
je 0x4221b4
mov dword [esp + 0x88], edx
jmp 0x422282
mov eax, dword [ecx + 0xe4]
test eax, 0x5000
jne 0x4221cd
mov dword [esp + 0x88], edx
jmp 0x422282
shr eax, 0x11
and eax, 1
mov dword [esp + 0x74], eax
mov eax, dword [esi + 8]
test dword [eax + 0xe0], 0x100
mov dword [esp + 0x64], ecx
je 0x42221c
movzx eax, byte [eax + 0xf0]
sub eax, 1
je 0x422215
sub eax, 1
je 0x42220e
sub eax, 1
je 0x422207
call fcn.004031d0
jmp 0x422272
call fcn.00403610
jmp 0x422272
call fcn.00403430
jmp 0x422272
call fcn.00403260
jmp 0x422272
test byte [eax + 0xf0], 1
je 0x42222f
mov ebx, 1
call fcn.00497460
mov edx, dword [esi + 8]
movzx eax, byte [edx + 0xf0]
test al, 2
je 0x422272
shr eax, 2
and eax, 1
mov eax, 0
setne al
mov edi, 1
mov ecx, 0x56ff1c
lea edx, [esp + 0x5c]
mov esi, eax
push esi
call fcn.0046ec70
mov eax, esi
mov ebx, edi
lea esi, [esp + 0x5c]
call fcn.004038a0
mov esi, dword [esp + 0x18]
xor ebx, ebx
mov dword [esp + 0x88], 0xffffffff
or edx, 0xffffffff
cmp ebp, ebx
jne 0x422154
jmp 0x42228e
xor ebx, ebx
mov esi, dword [esp + 0x18]
mov eax, dword [esi + 8]
cmp dword [eax + 0xfc], ebx
je 0x42236f
mov dword [esp + 0x64], ebx
mov dword [esp + 0x68], ebx
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x5c], vtable.CSonicFocusSetting.0
mov dword [esp + 0x60], 0x14
mov dword [esp + 0x70], ebx
mov dword [esp + 0x88], 3
mov edi, dword [eax + 0x1804]
cmp edi, ebx
je 0x422364
lea ebx, [ebx]
xor ebp, ebp
cmp edi, ebx
mov eax, edi
je 0x42175a
mov eax, dword [eax + 8]
cmp eax, ebx
mov edi, dword [edi]
je 0x42235c
cmp dword [eax + 0x1c], ebx
je 0x42235c
test dword [eax + 0xec], 0x40000
je 0x42235c
lea esi, [esp + 0x5c]
mov dword [esp + 0x64], eax
call fcn.00479c80
mov ecx, dword [esp + 0x70]
cmp ecx, reloc.DSOUND.dll_DirectSoundCreate
je 0x42233f
mov eax, dword [0x5c9ce8]
cmp eax, ebx
je 0x42233f
push ecx
call eax
cmp eax, reloc.DSOUND.dll_DirectSoundCreate
je 0x42233f
mov eax, dword [0x5c9cec]
cmp eax, ebx
je 0x42233f
push 1
call eax
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx + 8]
mov eax, dword [edx + 0xfc]
cmp eax, ebx
je 0x422352
mov ebp, eax
push ebp
lea eax, [esp + 0x60]
call fcn.00479e00
cmp edi, ebx
jne 0x4222e0
mov esi, dword [esp + 0x18]
mov dword [esp + 0x88], 0xffffffff
mov eax, dword [esi + 8]
test dword [eax + 0xb8], 0x2000
je 0x422384
push ebx
call fcn.0041e3b0
mov ecx, dword [esi + 8]
test byte [ecx + 0xbf], 1
je 0x4227c4
mov dword [esp + 0x44], ebx
mov dword [esp + 0x88], 4
mov dword [esp + 0x34], ebx
lea edx, [esp + 0x44]
push edx
push 0x56b830
push 0x17
push ebx
mov byte [esp + 0x98], 5
push 0x56b7e0
mov dword [esp + 0x50], ebx
call dword [sym.imp.ole32.dll_CoCreateInstance]
cmp eax, ebx
jl 0x422791
mov eax, dword [esp + 0x44]
mov ecx, dword [eax]
lea edx, [esp + 0x34]
push edx
push 0x1000000f
push 1
push eax
mov eax, dword [ecx + 0xc]
call eax
cmp eax, ebx
jl 0x422791
push 0x5703b8
lea ecx, [esp + 0x44]
call fcn.0040c150
mov byte [esp + 0x88], 6
mov ecx, dword [0x571bd4]
mov edx, dword [0x571bd8]
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [0x571bdc]
mov dword [eax + 4], edx
mov edx, dword [0x571be0]
mov dword [eax + 8], ecx
mov dword [eax + 0xc], edx
lea eax, [esp + 0x58]
push eax
call fcn.0041ce00
add esp, 0x14
push eax
lea ecx, [esp + 0x44]
mov byte [esp + 0x8c], 7
call fcn.00402f40
mov byte [esp + 0x88], 6
mov eax, dword [esp + 0x48]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x422478
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x34]
mov ecx, dword [eax]
lea edx, [esp + 0x3c]
push edx
push eax
mov eax, dword [ecx + 0xc]
call eax
cmp eax, ebx
jl 0x422769
xor edi, edi
cmp dword [esp + 0x3c], edi
jbe 0x422769
mov ebp, dword [sym.imp.ole32.dll_PropVariantClear]
xor esi, esi
jmp 0x4224b0
mov dword [esp + 0x1c], esi
mov dword [esp + 0x24], esi
push 0x5703b8
lea ecx, [esp + 0x2c]
mov byte [esp + 0x8c], 9
call fcn.0040c150
mov bl, 0xa
push 0x5703b8
lea ecx, [esp + 0x30]
mov byte [esp + 0x8c], bl
call fcn.0040c150
mov dword [esp + 0x38], esi
mov dword [esp + 0x20], esi
mov byte [esp + 0x88], 0xc
mov eax, dword [esp + 0x1c]
cmp eax, esi
je 0x422509
mov dword [esp + 0x1c], esi
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [esp + 0x24]
cmp eax, esi
je 0x42251d
mov dword [esp + 0x24], esi
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [esp + 0x20]
cmp eax, esi
je 0x422531
mov dword [esp + 0x20], esi
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [esp + 0x34]
mov ecx, dword [eax]
lea edx, [esp + 0x1c]
push edx
push edi
push eax
mov eax, dword [ecx + 0x10]
call eax
cmp eax, esi
jge 0x4225b7
mov byte [esp + 0x88], 0xb
mov eax, dword [esp + 0x20]
cmp eax, esi
je 0x42255f
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov byte [esp + 0x88], bl
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x422586
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x88], 9
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4226d0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x4226d0
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax]
lea edx, [esp + 0x24]
push edx
push esi
push eax
mov eax, dword [ecx + 0x10]
call eax
cmp eax, esi
jl 0x4226a6
xor eax, eax
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x24]
mov ecx, dword [eax]
lea edx, [esp + 0x5c]
push edx
push 0x571900
push eax
mov eax, dword [ecx + 0x14]
call eax
cmp eax, esi
jl 0x4226a6
mov eax, dword [esp + 0x64]
push eax
lea ecx, [esp + 0x30]
call fcn.0040c0d0
lea ecx, [esp + 0x5c]
push ecx
call ebp
lea edx, [esp + 0x2c]
push edx
lea eax, [esp + 0x44]
push eax
call fcn.004248d0
add esp, 8
test al, al
jne 0x4226a6
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax]
lea edx, [esp + 0x38]
push edx
push eax
mov eax, dword [ecx + 0x14]
call eax
cmp eax, esi
jl 0x4226a6
push 0x5703b8
lea ecx, [esp + 0x2c]
call fcn.0040c050
mov eax, dword [esp + 0x38]
push eax
lea ecx, [esp + 0x2c]
call fcn.0040c0d0
mov ecx, dword [esp + 0x38]
push ecx
call dword [sym.imp.ole32.dll_CoTaskMemFree]
lea eax, [esp + 0x20]
call fcn.0040bc70
cmp eax, esi
jge 0x42268f
mov byte [esp + 0x88], 0xb
mov eax, dword [esp + 0x20]
cmp eax, esi
je 0x4226be
mov edx, dword [eax]
push eax
mov eax, dword [edx + 8]
call eax
jmp 0x4226be
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x28]
mov ecx, dword [eax]
push 1
push edx
push eax
mov eax, dword [ecx + 0x34]
call eax
cmp eax, esi
jge 0x42270f
mov byte [esp + 0x88], 0xb
mov eax, dword [esp + 0x20]
cmp eax, esi
je 0x4226be
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
lea ecx, [esp + 0x2c]
call fcn.00401660
lea ecx, [esp + 0x28]
call fcn.00401660
mov byte [esp + 0x88], 8
mov eax, dword [esp + 0x24]
cmp eax, esi
je 0x4226e8
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov byte [esp + 0x88], 6
mov eax, dword [esp + 0x1c]
cmp eax, esi
je 0x422700
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
add edi, 1
cmp edi, dword [esp + 0x3c]
jb 0x4224b0
jmp 0x422769
mov byte [esp + 0x88], 0xb
mov eax, dword [esp + 0x20]
cmp eax, esi
je 0x422727
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
lea ecx, [esp + 0x2c]
call fcn.00401660
lea ecx, [esp + 0x28]
call fcn.00401660
mov byte [esp + 0x88], 8
mov eax, dword [esp + 0x24]
cmp eax, esi
je 0x422751
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov byte [esp + 0x88], 6
mov eax, dword [esp + 0x1c]
cmp eax, esi
je 0x422769
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov byte [esp + 0x88], 5
mov eax, dword [esp + 0x40]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x422791
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x88], 4
mov eax, dword [esp + 0x34]
test eax, eax
je 0x4227a9
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov dword [esp + 0x88], 0xffffffff
mov eax, dword [esp + 0x44]
test eax, eax
je 0x4227c4
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov ebx, dword [esp + 0x18]
mov eax, dword [ebx + 8]
test dword [eax + 0xc], 0x40000000
je 0x4229b0
push 0x14
call fcn.00503623
xor ebp, ebp
add esp, 4
cmp eax, ebp
je 0x422806
mov dword [eax + 8], ebp
mov dword [eax + 0xc], ebp
mov dword [eax + 0x10], ebp
mov dword [eax], vtable.CDolbySetting.0
mov dword [eax + 4], 3
mov esi, eax
mov dword [esp + 0x48], eax
jmp 0x42280c
xor esi, esi
mov dword [esp + 0x48], esi
push 0x4c
call fcn.00503623
add esp, 4
mov dword [esp + 0x30], eax
cmp eax, ebp
mov dword [esp + 0x88], 0xd
je 0x422837
push eax
call fcn.0043dec0
mov edi, eax
mov dword [esp + 0x18], eax
jmp 0x42283d
xor edi, edi
mov dword [esp + 0x18], edi
cmp esi, ebp
mov dword [esp + 0x88], 0xffffffff
je 0x4229a1
cmp edi, ebp
je 0x422994
mov ecx, dword [ebx + 8]
mov eax, dword [ecx + 0x1804]
cmp eax, ebp
je 0x422994
mov ebp, dword [esp + 0x18]
mov esi, eax
test esi, esi
mov eax, esi
je 0x42175a
mov eax, dword [eax + 8]
test eax, eax
mov esi, dword [esi]
mov dword [esp + 0x30], esi
je 0x422984
test dword [eax + 0xf0], 0x2000
je 0x422984
cmp dword [eax + 0x1c], 0
je 0x422984
mov ecx, dword [eax + 0x68]
sub ecx, 1
je 0x422933
sub ecx, 7
jne 0x422984
test byte [eax + 0xec], 1
je 0x422984
mov edx, dword [ebp]
push eax
mov eax, dword [edx + 0x10]
mov ecx, ebp
call eax
mov ebx, dword [ebp + 0x40]
xor edi, edi
test ebx, ebx
jbe 0x422984
xor ebp, ebp
cmp edi, ebx
jae 0x42290b
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + 0x3c]
test eax, eax
je 0x42290b
lea esi, [eax + ebp]
test esi, esi
je 0x42290b
lea edx, [esi + 0x1c]
push edx
push 0x5719e8
call fcn.004030f0
add esp, 8
test eax, eax
jne 0x42291f
add edi, 1
add ebp, 0x40
cmp edi, ebx
jb 0x4228e4
mov esi, dword [esp + 0x30]
mov ebp, dword [esp + 0x18]
jmp 0x422984
mov ebx, dword [esp + 0x18]
lea eax, [esi + 0x2c]
call fcn.0043e750
mov esi, dword [esp + 0x30]
mov ebp, ebx
jmp 0x422984
mov edi, dword [esp + 0x48]
mov edx, dword [edi]
push eax
mov eax, dword [edx + 0x10]
mov ecx, edi
call eax
test eax, eax
je 0x422984
mov edx, edi
call fcn.00436190
mov edx, edi
call fcn.004361b0
mov edx, edi
call fcn.004360b0
mov edx, edi
call fcn.004360d0
mov edx, edi
call fcn.004360f0
mov edx, edi
call fcn.00436110
mov edx, edi
call fcn.00436130
mov edx, edi
call fcn.00436150
mov edx, edi
call fcn.00436170
test esi, esi
jne 0x42286f
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0x48]
mov edx, dword [esi]
mov eax, dword [edx + 4]
push 1
mov ecx, esi
call eax
xor ebp, ebp
cmp edi, ebp
je 0x4229b0
mov edx, dword [edi]
mov eax, dword [edx + 4]
push 1
mov ecx, edi
call eax
mov ecx, dword [esp + 0x80]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret