Function at 0x438450
Capabilities:
Capture microphone audio

Disassembly:
push ebx
push ebp
push esi
mov esi, ecx
push edi
push 0xffffffffffffffff
mov eax, dword [esi + 0x28]
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov eax, dword [esi + 0x1c]
lea edi, [esi + 0x18]
test eax, eax
je 0x4384af
mov ecx, dword [edi + 8]
sub ecx, eax
test ecx, 0xfffffffc
je 0x4384af
push str.CWaveInput:_Start._Wave_header_list_was_not_empty.
call fcn.0040a2a0
mov ecx, dword [edi + 8]
mov ebx, dword [edi + 4]
mov eax, ecx
add esp, 4
cmp eax, ecx
je 0x4384a0
mov edx, dword [eax]
add eax, 4
mov dword [ebx], edx
add ebx, 4
cmp eax, ecx
jne 0x438492
mov eax, dword [edi + 8]
mov ecx, edi
push eax
push ebx
call fcn.0041de00
mov dword [edi + 8], ebx
mov ecx, dword [esi + 0x28]
push ecx
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov ecx, dword [esp + 0x18]
test ecx, ecx
jne 0x438511
mov edi, str.Sample_rate_was_invalid.
or ecx, 0xffffffff
xor eax, eax
lea ebx, [esi + 4]
repne scasb al, byte es:[edi]
not ecx
dec ecx
push 1
mov ebp, ecx
mov ecx, ebx
push ebp
call fcn.0041e900
test al, al
je 0x438505
mov edi, dword [ebx + 4]
mov ecx, ebp
mov edx, ecx
mov esi, str.Sample_rate_was_invalid.
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebx + 4]
mov dword [ebx + 8], ebp
mov byte [eax + ebp], 0
pop edi
pop esi
pop ebp
mov eax, 0xfffffffb
pop ebx
ret 0x10
mov eax, dword [esp + 0x1c]
test eax, eax
jne 0x438567
mov edi, str.Sample_bits_was_invalid.
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea ebx, [esi + 4]
mov ebp, ecx
push 1
push ebp
mov ecx, ebx
call fcn.0041e900
test al, al
je 0x43855b
mov edi, dword [ebx + 4]
mov ecx, ebp
mov edx, ecx
mov esi, str.Sample_bits_was_invalid.
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebx + 4]
mov dword [ebx + 8], ebp
mov byte [eax + ebp], 0
pop edi
pop esi
pop ebp
mov eax, 0xfffffffa
pop ebx
ret 0x10
mov edx, dword [esi + 0x2c]
test edx, edx
je 0x438583
mov edx, dword [esp + 0x20]
push edx
push eax
push ecx
mov ecx, esi
call fcn.00437b30
pop edi
pop esi
pop ebp
pop ebx
ret 0x10
push eax
push ecx
lea ecx, [esi + 0x78]
call fcn.004359b0
mov ebx, dword [esp + 0x20]
mov ecx, dword [esp + 0x14]
push 0x10000
push 0
lea eax, [esi + 0x84]
push ebx
push eax
push ecx
push esi
call dword [sym.imp.WINMM.dll_waveInOpen]
test eax, eax
je 0x438604
mov edi, str.Open_input_wave_device_failed.
or ecx, 0xffffffff
xor eax, eax
mov dword [esi], 0
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea ebx, [esi + 4]
mov ebp, ecx
push 1
push ebp
mov ecx, ebx
call fcn.0041e900
test al, al
je 0x4385fa
mov edi, dword [ebx + 4]
mov ecx, ebp
mov edx, ecx
mov esi, str.Open_input_wave_device_failed.
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebx + 4]
mov dword [ebx + 8], ebp
mov byte [eax + ebp], 0
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
ret 0x10
xor edi, edi
mov ecx, esi
call fcn.00438730
test eax, eax
jne 0x438682
inc edi
cmp edi, 4
jl 0x438606
mov ecx, dword [esi]
push ecx
call dword [sym.imp.WINMM.dll_waveInStart]
test eax, eax
je 0x4386f2
mov ecx, esi
call fcn.00438700
mov edi, str.Start_input_wave_device_failed.
or ecx, 0xffffffff
xor eax, eax
lea ebx, [esi + 4]
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov ebp, ecx
mov ecx, ebx
call fcn.004389b0
cmp eax, ebp
jae 0x438653
call fcn.00450f05
mov ecx, dword [ebx + 4]
test ecx, ecx
je 0x43868e
mov al, byte [ecx - 1]
test al, al
je 0x43868e
cmp al, 0xff
je 0x43868e
test ebp, ebp
jne 0x4386bc
dec al
push ebp
mov byte [ecx - 1], al
mov ecx, ebx
call fcn.0041ddb0
pop edi
pop esi
pop ebp
mov eax, 0xfffffffc
pop ebx
ret 0x10
pop edi
pop esi
pop ebp
mov eax, 0xfffffffe
pop ebx
ret 0x10
test ebp, ebp
jne 0x4386a7
push 1
mov ecx, ebx
call fcn.0041ddb0
pop edi
pop esi
pop ebp
mov eax, 0xfffffffc
pop ebx
ret 0x10
mov eax, dword [ebx + 0xc]
cmp eax, 0x1f
ja 0x4386b3
cmp eax, ebp
jae 0x4386c4
push 1
mov ecx, ebx
call fcn.0041ddb0
push ebp
mov ecx, ebx
call fcn.00420740
mov edi, dword [ebx + 4]
mov ecx, ebp
mov edx, ecx
mov esi, str.Start_input_wave_device_failed.
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebx + 4]
mov dword [ebx + 8], ebp
pop edi
pop esi
mov byte [eax + ebp], 0
pop ebp
mov eax, 0xfffffffc
pop ebx
ret 0x10
mov dword [esi + 0x14], ebx
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret 0x10