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

Disassembly:
sub esp, 0x1c4
push ebx
push ebp
push esi
mov esi, dword [esp + 0x1d8]
xor ebp, ebp
push edi
cmp esi, ebp
je 0x43c0ed
mov eax, esi
mov dword [esp + 0x2c], ebp
call fcn.0040c820
test al, al
je 0x43c0b0
push 0x10
push ebp
push esi
call fcn.00480e2f
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], edx
fild qword [esp + 0x2c]
add esp, 0xc
jmp 0x43c0b9
push esi
call fcn.00480f31
add esp, 4
fst qword [esp + 0x20]
fld qword [0x49a4c8]
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x43c0d4
fstp st(1)
fstp qword [esp + 0x20]
jmp 0x43c100
fstp st(0)
fld qword [0x49a470]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 5
jp 0x43c0fe
fstp qword [esp + 0x20]
jmp 0x43c100
mov ecx, dword [0x4a2b90]
mov dword [esp + 0x2c], ecx
call fcn.00412530
jmp 0x43c100
fstp st(0)
cmp dword [esp + 0x1e8], 0xffffffff
je 0x43c5fb
mov esi, dword [esp + 0x1e0]
cmp esi, ebp
je 0x43c5fb
mov eax, dword [esp + 0x1ec]
push ebp
push ebp
push ebp
push eax
lea ecx, [esp + 0x24]
push ecx
call dword [sym.imp.WINMM.dll_mixerOpen]
test eax, eax
je 0x43c156
mov edx, dword [esp + 0x1d8]
push str.Cant_Open_Specified_Mixer
push edx
call fcn.0042cb70
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c4
ret 0x18
mov ecx, dword [esp + 0x14]
push 0x30
lea eax, [esp + 0x1a4]
push eax
push ecx
call dword [sym.imp.WINMM.dll_mixerGetDevCapsA]
test eax, eax
jne 0x43c17c
mov edx, dword [esp + 0x1cc]
mov dword [esp + 0x1c], edx
jmp 0x43c184
mov dword [esp + 0x1c], 1
push 0xa4
lea eax, [esp + 0x68]
push ebp
push eax
call fcn.00488440
add esp, 0xc
cmp dword [esp + 0x1e4], 1
mov dword [esp + 0x60], 0xa8
jne 0x43c1f4
mov edx, dword [esp + 0x14]
push 3
lea ecx, [esp + 0x64]
push ecx
push edx
mov dword [esp + 0x84], esi
call dword [sym.imp.WINMM.dll_mixerGetLineInfoA]
test eax, eax
je 0x43c2de
mov eax, dword [esp + 0x14]
push eax
call dword [sym.imp.WINMM.dll_mixerClose]
mov ecx, dword [esp + 0x1d8]
push str.Mixer_Doesnt_Support_This_Component_Type
push ecx
call fcn.0042cb70
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c4
ret 0x18
xor bl, bl
xor edi, edi
mov byte [esp + 0x13], bl
cmp dword [esp + 0x1c], edi
jle 0x43c290
test bl, bl
jne 0x43c2de
mov eax, dword [esp + 0x14]
push 0
lea edx, [esp + 0x64]
push edx
push eax
mov dword [esp + 0x70], edi
call dword [sym.imp.WINMM.dll_mixerGetLineInfoA]
test eax, eax
jne 0x43c281
mov eax, dword [esp + 0x80]
xor esi, esi
mov ebx, eax
test eax, eax
jle 0x43c27d
cmp byte [esp + 0x13], 0
jne 0x43c27d
mov edx, dword [esp + 0x14]
push 1
lea ecx, [esp + 0x64]
push ecx
push edx
mov dword [esp + 0x70], edi
mov dword [esp + 0x74], esi
call dword [sym.imp.WINMM.dll_mixerGetLineInfoA]
test eax, eax
jne 0x43c278
mov eax, dword [esp + 0x1e0]
cmp dword [esp + 0x78], eax
jne 0x43c278
inc ebp
cmp ebp, dword [esp + 0x1e4]
jne 0x43c278
mov byte [esp + 0x13], 1
inc esi
cmp esi, ebx
jl 0x43c237
mov bl, byte [esp + 0x13]
inc edi
cmp edi, dword [esp + 0x1c]
jl 0x43c206
test bl, bl
jne 0x43c2de
mov ecx, dword [esp + 0x14]
push ecx
call dword [sym.imp.WINMM.dll_mixerClose]
mov edx, dword [0x49f440]
cmp byte [edx + 0xe4], 0
jne 0x43c2cd
mov eax, dword [0x4a33f4]
push 1
push 0
push 0xffffffffffffffff
push str.Mixer_Doesnt_Have_That_Many_of_That_Component_Type
push eax
call fcn.0046f1f0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c4
ret 0x18
push 0x49281e
push 0
push str.Mixer_Doesnt_Have_That_Many_of_That_Component_Type
jmp 0x43c638
mov edx, dword [esp + 0x6c]
mov ebx, dword [esp + 0x1e8]
lea ecx, [esp + 0x108]
push 2
lea eax, [esp + 0x4c]
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x18]
push eax
mov esi, 0x18
mov ebp, 1
push ecx
mov dword [esp + 0x54], esi
mov dword [esp + 0x64], 0x94
mov dword [esp + 0x58], edx
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x60], ebp
call dword [sym.imp.WINMM.dll_mixerGetLineControlsA]
test eax, eax
je 0x43c356
mov edx, dword [esp + 0x14]
push edx
call dword [sym.imp.WINMM.dll_mixerClose]
mov eax, dword [esp + 0x1d8]
push str.Component_Doesnt_Support_This_Control_Type
push eax
call fcn.0042cb70
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c4
ret 0x18
mov edi, dword [esp + 0x1dc]
test edi, edi
je 0x43c38a
mov al, byte [edi]
cmp al, 0x2d
je 0x43c383
cmp al, 0x2b
je 0x43c383
mov eax, dword [esp + 0x1d8]
cmp byte [eax + 1], 0
jbe 0x43c38a
mov ecx, dword [eax + 8]
mov eax, dword [ecx + 4]
cmp byte [eax], 0x2b
jne 0x43c38a
mov byte [esp + 0x13], 1
jmp 0x43c38f
mov byte [esp + 0x13], 0
mov edx, dword [esp + 0x10c]
xor eax, eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x3c], eax
lea eax, [esp + 0x18]
mov dword [esp + 0x30], esi
mov dword [esp + 0x34], edx
mov dword [esp + 0x38], ebp
mov dword [esp + 0x44], eax
mov dword [esp + 0x40], 4
test edi, edi
je 0x43c3d3
cmp byte [esp + 0x13], 0
je 0x43c413
mov edx, dword [esp + 0x14]
push 0
lea ecx, [esp + 0x34]
push ecx
push edx
call dword [sym.imp.WINMM.dll_mixerGetControlDetailsA]
test eax, eax
je 0x43c413
mov eax, dword [esp + 0x14]
push eax
call dword [sym.imp.WINMM.dll_mixerClose]
mov ecx, dword [esp + 0x1d8]
push str.Cant_Get_Current_Setting
push ecx
call fcn.0042cb70
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c4
ret 0x18
cmp ebx, 0x20010001
jb 0x43c42f
cmp ebx, 0x20010005
jbe 0x43c42b
cmp ebx, 0x20012277
jne 0x43c42f
mov bl, 1
jmp 0x43c431
xor bl, bl
test edi, edi
je 0x43c54d
test bl, bl
je 0x43c4cf
cmp byte [esp + 0x13], 0
je 0x43c462
mov eax, dword [esp + 0x16c]
cmp dword [esp + 0x18], eax
ja 0x43c476
mov edx, dword [esp + 0x170]
mov dword [esp + 0x18], edx
jmp 0x43c47a
fldz
fcomp qword [esp + 0x20]
fnstsw ax
test ah, 5
jp 0x43c4c2
mov eax, dword [esp + 0x170]
mov dword [esp + 0x18], eax
mov ecx, dword [esp + 0x14]
push 0
lea eax, [esp + 0x34]
push eax
push ecx
call dword [sym.imp.WINMM.dll_mixerSetControlDetails]
mov edx, dword [esp + 0x14]
push edx
mov esi, eax
call dword [sym.imp.WINMM.dll_mixerClose]
mov eax, 0x492868
test esi, esi
je 0x43c4a7
mov eax, str.Cant_Change_Setting
push eax
mov eax, dword [esp + 0x1dc]
push eax
call fcn.0042cb70
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c4
ret 0x18
mov ecx, dword [esp + 0x16c]
mov dword [esp + 0x18], ecx
jmp 0x43c47a
mov ebx, dword [esp + 0x170]
mov edi, dword [esp + 0x16c]
mov edx, ebx
sub edx, edi
mov dword [esp + 0x2c], edx
fild dword [esp + 0x2c]
jns 0x43c4f1
fadd qword [0x49a440]
fld qword [esp + 0x20]
fdiv qword [0x49a470]
fmulp st(1)
call fcn.0048d966
cmp byte [esp + 0x13], 0
je 0x43c476
mov ecx, dword [esp + 0x18]
xor esi, esi
add ecx, eax
adc esi, edx
xor eax, eax
cmp esi, eax
jg 0x43c532
jl 0x43c523
cmp ecx, edi
jae 0x43c532
mov ecx, edi
mov dword [esp + 0x24], eax
mov dword [esp + 0x18], ecx
jmp 0x43c47a
xor eax, eax
cmp esi, eax
jl 0x43c544
jg 0x43c53e
cmp ecx, ebx
jbe 0x43c544
mov ecx, ebx
mov dword [esp + 0x24], eax
mov dword [esp + 0x18], ecx
jmp 0x43c47a
mov ecx, dword [esp + 0x14]
push ecx
call dword [sym.imp.WINMM.dll_mixerClose]
mov edx, dword [0x4a33f4]
push ebp
push 0
push 0xffffffffffffffff
push 0x492868
push edx
call fcn.0046f1f0
test bl, bl
je 0x43c5a0
cmp dword [esp + 0x18], 0
mov eax, 0x493948
jne 0x43c583
mov eax, 0x493de0
push ebp
push 0
push 0xffffffffffffffff
push eax
mov eax, dword [esp + 0x3c]
push eax
call fcn.0046f1f0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c4
ret 0x18
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x16c]
sub ecx, eax
mov dword [esp + 0x1c], ecx
fild dword [esp + 0x1c]
jns 0x43c5bd
fadd qword [0x49a440]
mov edx, dword [esp + 0x170]
fmul qword [0x49a470]
sub edx, eax
mov dword [esp + 0x1c], edx
fild dword [esp + 0x1c]
jns 0x43c5dc
fadd qword [0x49a440]
fdivp st(1)
mov eax, dword [esp + 0x2c]
sub esp, 8
fstp qword [esp]
push eax
call fcn.004125c0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c4
ret 0x18
mov ecx, dword [0x49f440]
cmp byte [ecx + 0xe4], 0
jne 0x43c62d
mov edx, dword [0x4a33f4]
push 1
push ebp
push 0xffffffffffffffff
push str.Invalid_Control_Type_or_Component_Type
push edx
call fcn.0046f1f0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c4
ret 0x18
push 0x49281e
push ebp
push str.Invalid_Control_Type_or_Component_Type
mov ecx, dword [esp + 0x1e4]
call fcn.0042ca10
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c4
ret 0x18