Function at 0x5d8c50
Capabilities:
Print debug messages

Disassembly:
push ebx
mov ebx, dword [esp + 8]
cmp dword [0x6a5400], ebx
push esi
push edi
push ebp
jne 0x5d8c67
pop ebp
mov al, 1
pop edi
pop esi
pop ebx
ret
xor ebp, ebp
mov dword [0x6a5400], ebx
jmp 0x5d8c8f
mov eax, dword [ebp*4 + 0x94b1a8]
test eax, eax
je 0x5d8c8e
push eax
call dword [0x6f2634]
mov dword [ebp*4 + 0x94b1a8], 0
inc ebp
cmp ebp, dword [0x980038]
jb 0x5d8c71
cmp dword [0xa0fca4], 0
je 0x5d8cb6
mov eax, dword [0xa0fca4]
push eax
call dword [0x6f2638]
mov dword [0xa0fca4], 0
cmp dword [0x6a5400], 0xffffffff
mov byte [0xa10b23], 0
mov dword [0xa10698], 0
mov dword [0x97f2a8], 0
je 0x5d8f70
mov ebp, ebx
mov ebx, 0x8167f0
imul ebp, ebp, 0x54
mov ecx, 0xf
mov edi, str.Dolby_Surround
add ebx, ebp
add ebx, 4
mov esi, ebx
repe cmpsb byte [esi], byte es:[edi]
movzx edx, byte [esi - 1]
movzx eax, byte [edi - 1]
sub edx, eax
test edx, edx
jne 0x5d8d15
mov dword [0x980038], 0x18
jmp 0x5d8d1f
mov dword [0x980038], 0x1c
mov eax, dword [ebp + 0x8167f0]
push 0x980038
push str.Maximum_supported_samples
push eax
call dword [0x6f262c]
mov eax, dword [ebp + 0x8167f0]
push eax
call dword [0x6f2674]
test eax, eax
je 0x5d8dd0
or dword [0x6a5400], 0xffffffff
call dword [0x6f25d8]
push eax
call dword [sym.imp.kernel32.dll_OutputDebugStringA]
xor esi, esi
jmp 0x5d8d81
mov eax, dword [esi*4 + 0x94b1a8]
test eax, eax
je 0x5d8d80
push eax
call dword [0x6f2634]
mov dword [esi*4 + 0x94b1a8], 0
inc esi
cmp esi, dword [0x980038]
jb 0x5d8d63
cmp dword [0xa0fca4], 0
je 0x5d8da8
mov eax, dword [0xa0fca4]
push eax
call dword [0x6f2638]
mov dword [0xa0fca4], 0
xor al, al
mov byte [0xa10b23], 0
pop ebp
mov dword [0x97f2a8], 0
pop edi
mov dword [0xa10698], 0
pop esi
pop ebx
ret
push ebx
mov eax, dword [ebp + 0x8167f0]
mov dword [0xa0fca4], eax
call fcn.00642510
mov esi, eax
pop ecx
mov ecx, 0x19
mov edi, str.CREATIVE_LABS_EAX_3__TM_
repe cmpsb byte [esi], byte es:[edi]
movzx ecx, byte [esi - 1]
movzx eax, byte [edi - 1]
sub ecx, eax
test ecx, ecx
jne 0x5d8e14
mov dword [0xa1068c], 1
mov dword [0xa0fd50], 1
jmp 0x5d8e3d
mov eax, dword [0xa0fca4]
mov dword [0xa0fd50], 0
push eax
call dword [0x6f2678]
cmp eax, 0xffffffff
je 0x5d8e36
mov eax, 1
jmp 0x5d8e38
xor eax, eax
mov dword [0xa1068c], eax
cmp dword [0xa0fd50], 0
je 0x5d8e70
push str.DOING_SPECIAL_EAX_3_STUFF_
call dword [sym.imp.kernel32.dll_OutputDebugStringA]
mov eax, dword [0xa0fca4]
push 0x6a542c
push 0x6a554c
push eax
call dword [0x6f262c]
jmp 0x5d8eaa
cmp dword [0xa1068c], 0
je 0x5d8eaa
mov eax, dword [0xa0fca4]
push 8
push eax
call dword [0x6f267c]
mov ecx, 0x1f
mov edi, str.Miles_Fast_2D_Positional_Audio
mov esi, ebx
repe cmpsb byte [esi], byte es:[edi]
movzx edx, byte [esi - 1]
movzx eax, byte [edi - 1]
sub edx, eax
test edx, edx
jne 0x5d8eaa
mov byte [0xa10b23], 1
mov eax, dword [0xa0fca4]
push 0x980038
push str.Maximum_supported_samples
push eax
call dword [0x6f2680]
cmp dword [0x980038], 0x1c
jbe 0x5d8ed3
mov dword [0x980038], 0x1c
mov ecx, dword [0x97520c]
mov eax, ecx
cmp eax, 2
ja case.default.0x5d8ee0
jmp dword [eax*4 + 0x6a5730]
mov dword [0x97520c], 0
jmp 0x5d8f09
mov dword [0x97520c], 1
jmp 0x5d8f09
mov dword [0x97520c], 3
cmp dword [0xa0fca4], 0
je case.default.0x5d8ee0
mov eax, dword [0xa0fca4]
mov edx, dword [0x97520c]
push edx
push eax
call dword [0x6f2670]
xor esi, esi
jmp 0x5d8f5c
mov eax, dword [0xa0fca4]
push eax
call dword [0x6f2684]
mov dword [esi*4 + 0x94b1a8], eax
mov eax, dword [esi*4 + 0x94b1a8]
test eax, eax
je 0x5d8f5b
push dword [0x6a5520]
push eax
call dword [0x6f2628]
inc esi
cmp esi, dword [0x980038]
jb 0x5d8f30
pop ebp
mov al, 1
pop edi
pop esi
pop ebx
ret
xor al, al
pop ebp
pop edi
pop esi
pop ebx
ret