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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x3c
mov ebx, dword [esp + 0x50]
mov edi, dword [esp + 0x54]
mov dword [esp], 0x64876604
call sub.KERNEL32.dll_EnterCriticalSection
push eax
mov dword [esp], 0x64876604
call sub.KERNEL32.dll_EnterCriticalSection
push eax
mov eax, dword [0x64876648]
test eax, eax
jne 0x6469a966
jmp 0x6469ab48
mov eax, dword [eax + 0x28a5c]
test eax, eax
je 0x6469ab48
cmp ebx, eax
jne 0x6469a958
mov dword [esp], 0x64876604
call sub.KERNEL32.dll_LeaveCriticalSection
push eax
cmp byte [ebx + 1], 0
jne 0x6469ab55
cmp byte [ebx], 0
je 0x6469ab55
mov dword [ebx + 0x1c], 0
mov ecx, dword [ebx + 0x28a50]
test ecx, ecx
setne dl
test edi, edi
je 0x6469acf4
mov eax, dword [edi]
test eax, eax
je 0x6469acf4
test dl, dl
jne 0x6469afd3
mov edx, dword [ebx + 4]
mov dword [esp + 0x1c], edx
mov edx, dword [ebx + 0x10]
mov dword [esp + 0x28], edx
mov edx, dword [ebx + 0x14]
mov dword [esp + 0x2c], edx
mov edx, dword [ebx + 0x28]
mov dword [esp + 0x20], edx
mov ebp, dword [ebx + 0x2c]
mov edx, dword [ebx + 0x30]
mov dword [esp + 0x24], edx
lea esi, [edi + 8]
mov edx, edi
mov edi, ebp
mov ebp, edx
jmp 0x6469aa14
cmp byte [ebx + 2], 0
je 0x6469ac94
mov edx, dword [esi - 4]
mov dword [esp + 0x1c], edx
cmp edx, 0x1f3f
jbe 0x6469b17c
lea esi, [esi]
mov ebp, esi
add esi, 8
mov eax, dword [esi - 8]
test eax, eax
je 0x6469aa7c
cmp eax, 0x1990
je 0x6469abc4
cmp eax, 0x1991
je 0x6469ac3c
cmp eax, 0x1007
je 0x6469a9e8
cmp eax, 0x1011
je 0x6469ac7c
cmp eax, 0x20003
jne 0x6469aa08
mov dword [esp + 4], str.sends
mov dword [esp], 0
call sym.allegro_5.0.10_monolith_mt.dll_ConfigValueExists
test eax, eax
jne 0x6469aa08
mov edx, dword [esi - 4]
mov dword [esp + 0x24], edx
cmp edx, 4
jbe 0x6469aa08
mov dword [esp + 0x24], 4
mov ebp, esi
add esi, 8
mov eax, dword [esi - 8]
test eax, eax
jne 0x6469aa14
nop
mov ebp, edi
mov esi, dword [ebx + 4]
mov eax, dword [esp + 0x1c]
mul dword [ebx + 8]
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], esi
mov dword [esp + 0xc], 0
call fcn.647cb934
mov dword [ebx + 8], eax
mov edx, dword [esp + 0x1c]
mov dword [ebx + 4], edx
mov eax, dword [esp + 0x28]
mov dword [ebx + 0x10], eax
mov edx, dword [esp + 0x2c]
mov dword [ebx + 0x14], edx
mov eax, dword [esp + 0x20]
mov dword [ebx + 0x28], eax
mov dword [ebx + 0x2c], ebp
mov edx, dword [esp + 0x24]
mov dword [ebx + 0x30], edx
mov eax, dword [ebx + 0x28a54]
mov dword [esp], ebx
call dword [eax + 8]
test al, al
jne 0x6469af05
mov dword [esp], 0x64876604
call sub.KERNEL32.dll_EnterCriticalSection
push ebp
mov eax, dword [0x64876648]
test eax, eax
jne 0x6469ab06
jmp 0x6469b160
mov eax, dword [eax + 0x28a5c]
test eax, eax
je 0x6469b160
cmp ebx, eax
jne 0x6469aaf8
mov dword [esp], 0x64876604
call sub.KERNEL32.dll_LeaveCriticalSection
push edi
mov dword [ebx + 0x1c], 0xa001
mov dword [esp], ebx
call sym.allegro_5.0.10_monolith_mt.dll_aluHandleDisconnect
mov dword [esp], 0x64876604
call sub.KERNEL32.dll_LeaveCriticalSection
push ebp
mov eax, dword [ebx + 0x28a54]
mov dword [esp], ebx
call dword [eax + 0xc]
xor esi, esi
jmp 0x6469ae62
mov dword [esp], 0x64876604
call sub.KERNEL32.dll_LeaveCriticalSection
push eax
mov dword [esp], 0x64876604
call sub.KERNEL32.dll_EnterCriticalSection
push ebp
mov eax, dword [0x64876648]
test eax, eax
jne 0x6469ab92
nop
mov dword [esp], 0x64876604
call sub.KERNEL32.dll_LeaveCriticalSection
push eax
mov dword [0x64876650], 0xa001
jmp 0x6469abaa
mov eax, dword [eax + 0x28a5c]
test eax, eax
je 0x6469ab6c
cmp ebx, eax
jne 0x6469ab88
mov dword [esp], 0x64876604
call sub.KERNEL32.dll_LeaveCriticalSection
push eax
mov dword [ebx + 0x1c], 0xa001
mov dword [esp], 0x64876604
call sub.KERNEL32.dll_LeaveCriticalSection
push edi
xor esi, esi
mov eax, esi
add esp, 0x3c
pop ebx
pop esi
pop edi
pop ebp
ret
cmp byte [ebx + 2], 0
je 0x6469aa08
mov eax, dword [esi - 4]
lea edx, [eax - 0x1500]
cmp edx, 6
jbe 0x6469acdc
mov dword [esp], 0x64876604
call sub.KERNEL32.dll_EnterCriticalSection
push eax
mov eax, dword [0x64876648]
test eax, eax
jne 0x6469ac1e
mov dword [esp], 0x64876604
call sub.KERNEL32.dll_LeaveCriticalSection
push eax
mov dword [0x64876650], 0xa004
jmp 0x6469aadd
mov eax, dword [eax + 0x28a5c]
test eax, eax
je 0x6469abf6
cmp ebx, eax
jne 0x6469ac14
mov dword [esp], 0x64876604
call sub.KERNEL32.dll_LeaveCriticalSection
push eax
mov dword [ebx + 0x1c], 0xa004
jmp 0x6469aadd
cmp byte [ebx + 2], 0
je 0x6469aa08
mov edx, dword [esi - 4]
lea eax, [edx - 0x1400]
cmp eax, 0x11
jbe 0x6469acb8
mov dword [esp], 0x64876604
call sub.KERNEL32.dll_EnterCriticalSection
push ecx
mov eax, dword [0x64876648]
test eax, eax
jne 0x6469ac76
jmp 0x6469abf6
mov eax, dword [eax + 0x28a5c]
test eax, eax
je 0x6469abf6
cmp ebx, eax
jne 0x6469ac6c
jmp 0x6469ac22
mov ebp, dword [ebx + 0x20]
mov edi, dword [esi - 4]
cmp edi, ebp
jbe 0x6469ac88
mov edi, ebp
sub ebp, edi
mov dword [esp + 0x20], ebp
jmp 0x6469aa08
mov dword [esp + 4], str.frequency
mov dword [esp], 0
call sym.allegro_5.0.10_monolith_mt.dll_ConfigValueExists
test eax, eax
je 0x6469ae6c
mov eax, dword [ebp]
jmp 0x6469aa31
cmp byte [edx + 0x647fef10], 0
je 0x6469ac54
cmp eax, 6
ja 0x6469ac54
mov ebp, dword [eax*4 + 0x648002d8]
test ebp, ebp
je 0x6469ac54
mov dword [esp + 0x2c], edx
jmp 0x6469aa08
mov edx, dword [edx*4 + 0x648002f4]
test edx, edx
je 0x6469abe0
mov dword [esp + 0x28], eax
jmp 0x6469aa08
test dl, dl
je 0x6469aac9
lea eax, [ecx*4 + 4]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x28a4c]
mov dword [esp], eax
call fcn.647d43c4
mov edi, eax
test eax, eax
je 0x6469ae90
mov dword [ebx + 0x28a4c], edi
mov dword [esp + 4], 0x8c
mov dword [esp], 1
call fcn.647d43cc
mov esi, eax
test eax, eax
je 0x6469ae90
mov dword [eax + 0x7c], 0x100
mov dword [esp], 0x400
call fcn.647d4284
mov dword [esi + 0x74], eax
test eax, eax
je 0x6469ae92
mov eax, dword [ebx + 0x28a50]
mov dword [edi + eax*4], esi
inc eax
mov dword [ebx + 0x28a50], eax
mov dword [esi + 0x80], ebx
mov dword [esi + 0x30], 0x3f800000
mov dword [esi + 0x34], 0x3f800000
mov dword [esi], 0
mov dword [esi + 4], 0
mov dword [esi + 8], 0
mov dword [esi + 0xc], 0
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 0
mov dword [esi + 0x18], 0
mov dword [esi + 0x1c], 0
mov dword [esi + 0x20], 0xbf800000
mov dword [esi + 0x24], 0
mov dword [esi + 0x28], 0x3f800000
mov dword [esi + 0x2c], 0
mov dword [esi + 0x58], 0
mov byte [esi + 0x5c], 0
mov dword [esi + 0x78], 0
mov dword [esi + 0x38], 0
mov dword [esi + 0x3c], 0
mov dword [esi + 0x40], 0
mov dword [esi + 0x44], 0
mov dword [esi + 0x48], 0
mov dword [esi + 0x4c], 0
mov dword [esi + 0x60], 0xd002
mov byte [esi + 0x64], 0
mov dword [esi + 0x68], 0x3f800000
mov dword [esi + 0x6c], 0x3f800000
mov dword [esi + 0x70], 0x43aba666
mov dword [esi + 0x84], str.AL_EXT_DOUBLE_AL_EXT_EXPONENT_DISTANCE_AL_EXT_FLOAT32_AL_EXT_IMA4_AL_EXT_LINEAR_DISTANCE_AL_EXT_MCFORMATS_AL_EXT_MULAW_AL_EXT_MULAW_MCFORMATS_AL_EXT_OFFSET_AL_EXT_source_distance_model_AL_LOKI_quadriphonic_AL_SOFTX_buffer_samples_AL_SOFT_buffer_sub_data_AL_SOFT_loop_points
mov eax, dword [0x64876658]
mov dword [esi + 0x88], eax
mov dword [0x64876658], esi
inc dword [0x6487665c]
mov dword [esp], 0x64876604
call sub.KERNEL32.dll_LeaveCriticalSection
push edx
mov eax, esi
add esp, 0x3c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esi - 4]
mov dword [esp + 0x1c], eax
cmp eax, 0x1f3f
mov eax, dword [ebp]
ja 0x6469aa31
mov dword [esp + 0x1c], 0x1f40
jmp 0x6469aa31
xor esi, esi
mov dword [esp], esi
call fcn.647d4274
mov dword [esp], 0x64876604
call sub.KERNEL32.dll_EnterCriticalSection
push edi
mov eax, dword [0x64876648]
test eax, eax
jne 0x6469aec6
jmp 0x6469afb7
mov eax, dword [eax + 0x28a5c]
test eax, eax
je 0x6469afb7
cmp ebx, eax
jne 0x6469aeb8
mov dword [esp], 0x64876604
call sub.KERNEL32.dll_LeaveCriticalSection
push ecx
mov dword [ebx + 0x1c], 0xa005
mov dword [esp], 0x64876604
call sub.KERNEL32.dll_LeaveCriticalSection
push ecx
mov esi, dword [ebx + 0x28a50]
test esi, esi
je 0x6469b138
xor esi, esi
mov eax, esi
add esp, 0x3c
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp], ebx
call sym.allegro_5.0.10_monolith_mt.dll_aluInitPanning
lea edx, [ebx + 0x28a04]
xor eax, eax
mov ecx, 0x24
mov edi, edx
rep stosb byte es:[edi], al
lea edx, [ebx + 0x28a28]
mov cl, 0x24
mov edi, edx
rep stosb byte es:[edi], al
mov eax, dword [ebx + 0x28a50]
test eax, eax
je 0x6469b0b0
mov dword [esp + 0x1c], 0
mov edx, dword [esp + 0x1c]
mov eax, dword [ebx + 0x28a4c]
mov esi, dword [eax + edx*4]
mov dword [esp], 0x64876604
call sub.KERNEL32.dll_EnterCriticalSection
push eax
mov eax, dword [esi + 0x48]
test eax, eax
jle 0x6469b034
xor edi, edi
jmp 0x6469af8a
mov eax, dword [ebp + 0xa0]
mov dword [esp + 8], ebp
mov dword [esp + 4], esi
mov dword [esp], eax
call dword [eax + 8]
inc edi
cmp edi, dword [esi + 0x48]
jge 0x6469b034
mov eax, dword [esi + 0x44]
mov ebp, dword [eax + edi*8 + 4]
mov eax, dword [ebp + 0xa0]
mov dword [esp + 4], ebx
mov dword [esp], eax
call dword [eax + 4]
test al, al
jne 0x6469af6c
mov dword [esp], 0x64876604
call sub.KERNEL32.dll_LeaveCriticalSection
push eax
jmp 0x6469aadd
mov dword [esp], 0x64876604
call sub.KERNEL32.dll_LeaveCriticalSection
push edx
mov dword [0x64876650], 0xa005
jmp 0x6469aede
mov dword [esp], 0x64876604
call sub.KERNEL32.dll_LeaveCriticalSection
push ecx
mov eax, dword [ebx + 0x28a54]
mov dword [esp], ebx
call dword [eax + 0xc]
mov dword [esp], 0x64876604
call sub.KERNEL32.dll_EnterCriticalSection
push esi
mov eax, dword [ebx + 4]
mov dword [esp + 0x1c], eax
mov edx, dword [ebx + 0x10]
mov dword [esp + 0x28], edx
mov eax, dword [ebx + 0x14]
mov dword [esp + 0x2c], eax
mov edx, dword [ebx + 0x28]
mov dword [esp + 0x20], edx
mov ebp, dword [ebx + 0x2c]
mov eax, dword [ebx + 0x30]
mov dword [esp + 0x24], eax
mov eax, dword [edi]
test eax, eax
jne 0x6469a9dc
mov esi, dword [esp + 0x1c]
mov eax, esi
jmp 0x6469aa85
mov eax, dword [esi + 0x3c]
test eax, eax
jle 0x6469b08f
xor edi, edi
lea esi, [esi]
mov eax, dword [esi + 0x38]
mov ebp, dword [eax + edi*8 + 4]
mov edx, dword [ebx + 0x30]
cmp edx, 3
ja 0x6469b082
lea eax, [edx + edx*4]
lea eax, [ebp + eax*4 + 0x84]
mov ecx, dword [eax]
test ecx, ecx
je 0x6469b065
dec dword [ecx + 0x40ac]
mov dword [eax], 0
mov dword [eax + 4], 0
mov dword [eax + 0x10], 0
inc edx
add eax, 0x14
cmp edx, 4
jne 0x6469b059
mov byte [ebp + 0xf4], 1
inc edi
cmp edi, dword [esi + 0x3c]
jl 0x6469b040
mov dword [esp], 0x64876604
call sub.KERNEL32.dll_LeaveCriticalSection
push eax
inc dword [esp + 0x1c]
mov edx, dword [esp + 0x1c]
cmp edx, dword [ebx + 0x28a50]
jb 0x6469af44
mov eax, dword [ebx + 0x68]
dec eax
cmp eax, 5
mov eax, dword [ebx + 0x64]
ja 0x6469b1cf
test eax, eax
je 0x6469b1e3
mov edx, dword [ebx + 4]
mov dword [esp + 4], edx
mov dword [esp], eax
call sym.allegro_5.0.10_monolith_mt.dll_bs2b_set_srate
mov eax, dword [ebx + 0x68]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x64]
mov dword [esp], eax
call sym.allegro_5.0.10_monolith_mt.dll_bs2b_set_level
mov eax, dword [ebx + 0x10]
sub eax, 0x1500
cmp eax, 6
jbe 0x6469b1af
mov dword [esp + 8], 0x3e800000
mov dword [esp + 4], str.head_dampen
mov dword [esp], 0
call sym.allegro_5.0.10_monolith_mt.dll_GetConfigValueFloat
fld1
fucom st(1)
fnstsw ax
test ah, 0x45
je 0x6469b14b
fstp st(1)
jmp 0x6469b127
fstp st(1)
fstp dword [ebx + 0x6c]
mov ecx, dword [ebx + 0x28a50]
jmp 0x6469acfc
mov eax, dword [ebx + 0x28a54]
mov dword [esp], ebx
call dword [eax + 0xc]
xor esi, esi
jmp 0x6469ae62
fstp st(0)
fldz
fxch st(1)
fucom st(1)
fnstsw ax
test ah, 0x45
je 0x6469b125
fstp st(0)
jmp 0x6469b127
mov dword [esp], 0x64876604
call sub.KERNEL32.dll_LeaveCriticalSection
push esi
mov dword [0x64876650], 0xa001
jmp 0x6469ab1e
mov dword [esp], 0x64876604
call sub.KERNEL32.dll_EnterCriticalSection
push edx
mov eax, dword [0x64876648]
test eax, eax
jne 0x6469b1a6
jmp 0x6469abf6
mov eax, dword [eax + 0x28a5c]
test eax, eax
je 0x6469abf6
cmp ebx, eax
jne 0x6469b198
jmp 0x6469ac22
cmp dword [eax*4 + 0x648002f4], 2
jbe 0x6469b0fa
mov dword [ebx + 0x6c], 0
mov ecx, dword [ebx + 0x28a50]
jmp 0x6469acfc
mov dword [esp], eax
call fcn.647d4274
mov dword [ebx + 0x64], 0
jmp 0x6469b0e9
mov dword [esp + 4], 0x68
mov dword [esp], 1
call fcn.647d43cc
mov dword [ebx + 0x64], eax
mov dword [esp], eax
call sym.allegro_5.0.10_monolith_mt.dll_bs2b_clear
mov eax, dword [ebx + 0x64]
jmp 0x6469b0c8