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

Disassembly:
sub esp, 0x6c
mov eax, dword [section..data]
xor eax, esp
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x78]
push ebp
mov ebp, dword [esp + 0x78]
push esi
xor esi, esi
mov dword [esp + 0xc], ebp
push edi
mov edi, dword [esp + 0x7c]
mov dword [esp + 0xc], esi
cmp dword [0x57cfc8], esi
jne 0x428fd4
push str.Audio_subsystem_is_not_initialized
call fcn.0041b670
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebp
mov ecx, dword [esp + 0x68]
xor ecx, esp
call fcn.00401033
add esp, 0x6c
ret
test ebp, ebp
je 0x429001
cmp dword [0x57d010], esi
jne 0x429001
push str.No_capture_support
call fcn.0041b670
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebp
mov ecx, dword [esp + 0x68]
xor ecx, esp
call fcn.00401033
add esp, 0x6c
ret
push ebx
test eax, eax
lea ebx, [esp + 0x20]
cmovne ebx, eax
push ebx
push ecx
call fcn.004295c0
add esp, 8
test eax, eax
je 0x42959d
test edi, edi
jne 0x429030
push str.SDL_AUDIO_DEVICE_NAME
call fcn.00458e90
add esp, 4
mov edi, eax
test ebp, ebp
je 0x4290b9
cmp dword [0x57d018], esi
je 0x429149
test edi, edi
je 0x42905e
push str.System_audio_capture_device
push edi
call fcn.0041cc30
add esp, 8
test eax, eax
jne 0x4290db
push dword [0x57d024]
xor edi, edi
call fcn.0044bfa0
add esp, 4
xor eax, eax
mov ecx, dword [eax + 0x57d040]
test ecx, ecx
je 0x42907f
cmp dword [ecx + 0x44], esi
jne 0x42908c
add eax, 4
cmp eax, 0x40
jb 0x429070
jmp 0x42918e
push str.Audio_device_already_open
call fcn.0041b670
push dword [0x57d024]
call fcn.0044bfe0
add esp, 8
xor eax, eax
pop ebx
pop edi
pop esi
pop ebp
mov ecx, dword [esp + 0x68]
xor ecx, esp
call fcn.00401033
add esp, 0x6c
ret
cmp dword [0x57d014], esi
je 0x429149
test edi, edi
je 0x4290ea
push str.System_audio_output_device
push edi
call fcn.0041cc30
add esp, 8
test eax, eax
je 0x4290ea
push str.No_such_device
call fcn.0041b670
jmp 0x42959a
push dword [0x57d024]
xor edi, edi
call fcn.0044bfa0
add esp, 4
xor eax, eax
nop dword [eax]
mov ecx, dword [eax + 0x57d040]
test ecx, ecx
je 0x42910f
cmp dword [ecx + 0x44], esi
je 0x42911c
add eax, 4
cmp eax, 0x40
jb 0x429100
jmp 0x42918e
push dword [0x57d024]
call fcn.0044bfe0
push str.Audio_device_already_open
call fcn.0041b670
add esp, 8
xor eax, eax
pop ebx
pop edi
pop esi
pop ebp
mov ecx, dword [esp + 0x68]
xor ecx, esp
call fcn.00401033
add esp, 0x6c
ret
test edi, edi
je 0x42919c
push dword [0x57d024]
call fcn.0044bfa0
mov esi, dword [0x57d038]
add esp, 4
test ebp, ebp
cmovne esi, dword [0x57d03c]
test esi, esi
je 0x42918c
nop
cmp dword [esi], 0
je 0x429185
push edi
push dword [esi + 4]
call fcn.0041cc30
add esp, 8
test eax, eax
je 0x4291bc
mov esi, dword [esi + 0x28]
test esi, esi
jne 0x429170
xor esi, esi
push dword [0x57d024]
call fcn.0044bfe0
add esp, 4
cmp dword [0x57d01c], 0
jne 0x4291c4
test esi, esi
jne 0x4291c4
test edi, edi
je 0x4291c4
push str.No_such_device.
call fcn.0041b670
jmp 0x42959a
mov esi, dword [esi]
mov dword [esp + 0x10], esi
jmp 0x42918e
push 0x68
push 1
call fcn.00458da0
add esp, 8
mov esi, eax
push 0
test esi, esi
jne 0x4291e2
call fcn.0041b5a0
jmp 0x42959a
movups xmm0, xmmword [ebx]
xor eax, eax
test ebp, ebp
setne al
movups xmmword [esi + 4], xmm0
movq xmm0, qword [ebx + 0x10]
mov dword [esi + 0x44], eax
mov eax, dword [esp + 0x14]
mov dword [esi + 0x64], eax
lea eax, [esi + 0x38]
push eax
movq qword [esi + 0x14], xmm0
call fcn.00427430
lea eax, [esi + 0x40]
push 1
push eax
call fcn.00427430
lea eax, [esi + 0x3c]
push 1
push eax
call fcn.00427430
add esp, 0x18
cmp dword [0x57cff8], 0x427ae0
jne 0x429266
call fcn.0044bee0
mov dword [esi + 0x50], eax
test eax, eax
jne 0x429266
push esi
call fcn.00428e60
push str.Couldnt_create_mixer_lock
call fcn.0041b670
add esp, 8
xor eax, eax
pop ebx
pop edi
pop esi
pop ebp
mov ecx, dword [esp + 0x68]
xor ecx, esp
call fcn.00401033
add esp, 0x6c
ret
cmp dword [0x57d020], 0
jne 0x429285
movzx eax, word [esi + 0xc]
test ax, ax
je 0x429285
push eax
call fcn.0047c4c0
add esp, 4
mov word [esi + 0xc], ax
push edi
push esi
call dword [0x57cfd4]
add esp, 8
test eax, eax
js 0x429594
mov ecx, dword [esi + 4]
xor edi, edi
mov eax, dword [esp + 0x90]
cmp dword [ebx], ecx
je 0x4292b5
test al, 1
je 0x4292b0
mov dword [ebx], ecx
jmp 0x4292b5
mov edi, 1
movzx ecx, word [esi + 8]
cmp word [ebx + 4], cx
je 0x4292ce
test al, 2
je 0x4292c9
mov word [ebx + 4], cx
jmp 0x4292ce
mov edi, 1
mov cl, byte [esi + 0xa]
cmp byte [ebx + 6], cl
je 0x4292e4
test al, 4
je 0x4292df
mov byte [ebx + 6], cl
jmp 0x4292e4
mov edi, 1
movzx ecx, word [esi + 0xc]
cmp cx, word [ebx + 8]
je 0x4292fd
test al, 8
je 0x4292f8
mov word [ebx + 8], cx
jmp 0x4292fd
mov edi, 1
push ebx
call fcn.00427c30
movups xmm0, xmmword [ebx]
add esp, 4
movups xmmword [esi + 0x1c], xmm0
movq xmm0, qword [ebx + 0x10]
movq qword [esi + 0x2c], xmm0
test edi, edi
je 0x42937e
lea ecx, [esi + 4]
test ebp, ebp
je 0x42933e
movzx eax, byte [esi + 0xa]
movzx edx, word [esi + 8]
movzx ebp, word [ebx + 4]
mov byte [esp + 0x1c], al
movzx eax, byte [ebx + 6]
mov byte [esp + 0x10], al
mov eax, dword [ebx]
jmp 0x42935a
movzx eax, byte [ebx + 6]
movzx edx, word [ebx + 4]
movzx ebp, word [esi + 8]
mov byte [esp + 0x1c], al
movzx eax, byte [esi + 0xa]
mov byte [esp + 0x10], al
mov eax, dword [ecx]
mov ecx, ebx
push eax
push dword [esp + 0x14]
push ebp
push dword [ecx]
push dword [esp + 0x2c]
push edx
call fcn.0042f9a0
add esp, 0x18
mov dword [esi + 0x34], eax
test eax, eax
je 0x429594
mov ebp, dword [esp + 0x14]
cmp dword [esi + 0x14], 0
jne 0x4293db
mov eax, dword [ebx + 0xc]
add eax, eax
push eax
push 0x2000
call fcn.0047c1f0
add esp, 8
mov dword [esi + 0x5c], eax
test eax, eax
jne 0x4293c6
push esi
call fcn.00428e60
push str.Couldnt_create_audio_buffer_queue
call fcn.0041b670
add esp, 8
xor eax, eax
pop ebx
pop edi
pop esi
pop ebp
mov ecx, dword [esp + 0x68]
xor ecx, esp
call fcn.00401033
add esp, 0x6c
ret
test ebp, ebp
mov dword [esi + 0x30], esi
mov eax, 0x427bd0
mov ecx, 0x427c10
cmovne eax, ecx
mov dword [esi + 0x2c], eax
test edi, edi
je 0x4293e4
mov eax, dword [esi + 0x28]
jmp 0x4293e6
xor eax, eax
mov ecx, dword [esi + 0x10]
mov dword [esi + 0x4c], eax
cmp ecx, eax
jbe 0x4293f5
mov dword [esi + 0x4c], ecx
mov eax, ecx
push eax
call fcn.00458e00
add esp, 4
mov dword [esi + 0x48], eax
test eax, eax
jne 0x42942a
push esi
call fcn.00428e60
push 0
call fcn.0041b5a0
add esp, 8
xor eax, eax
pop ebx
pop edi
pop esi
pop ebp
mov ecx, dword [esp + 0x68]
xor ecx, esp
call fcn.00401033
add esp, 0x6c
ret
push dword [0x57d024]
call fcn.0044bfa0
mov ecx, dword [esp + 0x98]
add esp, 4
dec ecx
cmp ecx, 0x10
jae 0x429455
cmp dword [ecx*4 + 0x57d040], 0
je 0x42948a
inc ecx
cmp ecx, 0x10
jb 0x429445
jne 0x42948a
push esi
call fcn.00428e60
push str.Too_many_open_audio_devices
call fcn.0041b670
push dword [0x57d024]
call fcn.0044bfe0
add esp, 0xc
xor eax, eax
pop ebx
pop edi
pop esi
pop ebp
mov ecx, dword [esp + 0x68]
xor ecx, esp
call fcn.00401033
add esp, 0x6c
ret
lea eax, [ecx + 1]
mov dword [esi], eax
push dword [0x57d024]
mov dword [ecx*4 + 0x57d040], esi
call fcn.0044bfe0
add esp, 4
cmp dword [0x57d00c], 0
jne 0x42957f
push 0
mov dword [esp + 0x18], esi
call fcn.0044c480
add esp, 4
mov dword [esp + 0x18], eax
test eax, eax
jne 0x4294ef
push esi
call fcn.00428e60
push str.Couldnt_create_audio_thread_startup_semaphore
call fcn.0041b670
add esp, 8
xor eax, eax
pop ebx
pop edi
pop esi
pop ebp
mov ecx, dword [esp + 0x68]
xor ecx, esp
call fcn.00401033
add esp, 0x6c
ret
push dword [esi]
mov ecx, 0x43
test ebp, ebp
mov eax, 0x50
cmovne eax, ecx
push eax
push str.SDLAudio_c_u
lea eax, [esp + 0x44]
push 0x40
push eax
call fcn.0041cb80
lea eax, [esp + 0x28]
mov ecx, 0x427c70
push eax
push 0
lea eax, [esp + 0x54]
test ebp, ebp
push eax
mov eax, 0x4289d0
cmovne eax, ecx
push eax
call fcn.0041e510
add esp, 0x24
mov dword [esi + 0x54], eax
push dword [esp + 0x18]
test eax, eax
jne 0x42956e
call fcn.0044c510
push esi
call fcn.00428e60
push str.Couldnt_create_audio_thread
call fcn.0041b670
add esp, 0xc
xor eax, eax
pop ebx
pop edi
pop esi
pop ebp
mov ecx, dword [esp + 0x68]
xor ecx, esp
call fcn.00401033
add esp, 0x6c
ret
call fcn.0044c560
push dword [esp + 0x1c]
call fcn.0044c510
add esp, 8
mov eax, dword [esi]
pop ebx
pop edi
pop esi
pop ebp
mov ecx, dword [esp + 0x68]
xor ecx, esp
call fcn.00401033
add esp, 0x6c
ret
push esi
call fcn.00428e60
add esp, 4
mov ecx, dword [esp + 0x78]
xor eax, eax
pop ebx
pop edi
pop esi
pop ebp
xor ecx, esp
call fcn.00401033
add esp, 0x6c
ret