Function at 0x4608b0
Capabilities:
Capture microphone audio
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x9c
mov eax, dword [0x570f20]
xor eax, esp
mov dword [esp + 0x98], eax
push edi
mov edi, dword [esp + 0xa4]
mov dword [esp + 0xc], edi
test edi, edi
js 0x460d40
cmp edi, dword [0x6bbfb4]
jge 0x460d40
mov eax, dword [0x6bbfb8]
mov eax, dword [eax + edi*4]
test eax, eax
jne 0x460b5b
push ebp
push esi
mov esi, dword [sym.imp.KERNEL32.dll_GlobalAlloc]
push 0x1c
push 0x40
call esi
mov ebp, eax
xor eax, eax
test ebp, ebp
je 0x460b59
push ebx
push 0x48
push 0x40
mov dword [ebp], 1
mov dword [ebp + 8], eax
mov dword [ebp + 0xc], eax
mov dword [ebp + 0x10], eax
call esi
mov ebx, eax
mov eax, dword [0x6bbfac]
mov dword [esp + 0x10], ebx
mov dword [ebp + 0x14], ebx
mov dword [ebp + 0x18], 2
cmp edi, eax
jge 0x460b1d
push 0x30
lea ecx, [esp + 0x48]
dec edi
push ecx
push edi
mov dword [esp + 0x20], edi
call dword [sym.imp.WINMM.dll_waveInGetDevCapsA]
test eax, eax
jne 0x460b42
lea eax, [esp + 0x4c]
lea edx, [eax + 1]
cmp edi, 0xffffffff
jne 0x4609d0
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x460970
sub eax, edx
add eax, 0xa
push eax
push 0x40
call esi
lea ecx, [esp + 0x4c]
mov esi, eax
mov edx, ecx
sub esi, edx
jmp 0x460990
mov dl, byte [ecx]
mov byte [esi + ecx], dl
inc ecx
test dl, dl
jne 0x460990
mov ecx, 0x4cb510
mov esi, ecx
mov dl, byte [ecx]
inc ecx
test dl, dl
jne 0x4609a1
sub ecx, esi
mov edx, ecx
lea edi, [eax - 1]
nop
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x4609b0
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 1
jmp 0x4609fb
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4609d0
sub eax, edx
inc eax
push eax
push 0x40
call esi
lea ecx, [esp + 0x4c]
mov esi, eax
mov edx, ecx
sub esi, edx
mov edi, 1
mov edi, edi
mov dl, byte [ecx]
mov byte [esi + ecx], dl
add ecx, edi
test dl, dl
jne 0x4609f0
mov dword [ebp + 4], eax
movzx eax, word [esp + 0x70]
mov dword [ebp + 8], eax
cmp eax, edi
jl 0x460a11
cmp eax, 0x100
jle 0x460a37
mov eax, dword [ebp + 0xc]
push eax
push 0x4cb5f0
call fcn.004a7323
call fcn.004a90b4
add eax, 0x20
push eax
call fcn.004a93f3
add esp, 0xc
mov dword [ebp + 8], 2
test byte [esp + 0x6c], 0xc
je 0x460a51
mov ecx, dword [ebp + 0x10]
movsd xmm0, qword [0x4cb5e8]
movsd qword [ebx + ecx*8], xmm0
add dword [ebp + 0x10], edi
test byte [esp + 0x6c], 0xc0
je 0x460a6b
mov edx, dword [ebp + 0x10]
movsd xmm0, qword [0x4cb5e0]
movsd qword [ebx + edx*8], xmm0
add dword [ebp + 0x10], edi
test dword [esp + 0x6c], 0xc00
je 0x460a88
mov eax, dword [ebp + 0x10]
movsd xmm0, qword [0x4cb5d8]
movsd qword [ebx + eax*8], xmm0
add dword [ebp + 0x10], edi
mov edi, dword [sym.imp.WINMM.dll_waveInOpen]
xor esi, esi
mov eax, dword [esi + 0x57084c]
mov ecx, 1
mov word [esp + 0x1c], cx
mov cx, word [ebp + 8]
movzx edx, cx
imul edx, eax
push 1
push 0
add edx, edx
mov dword [esp + 0x28], eax
mov word [esp + 0x26], cx
mov eax, dword [esp + 0x26]
push 0
mov dword [esp + 0x30], edx
lea ecx, [eax + eax]
mov eax, dword [esp + 0x20]
lea edx, [esp + 0x28]
push edx
push eax
push 0
mov dword [esp + 0x42], 0x10
mov word [esp + 0x40], cx
call edi
test eax, eax
jne 0x460b04
mov ecx, dword [esi + 0x57084c]
fild dword [esi + 0x57084c]
test ecx, ecx
jns 0x460afb
fadd qword [0x4c5fa8]
mov edx, dword [ebp + 0x10]
fstp qword [ebx + edx*8]
inc dword [ebp + 0x10]
add esi, 4
cmp esi, 0x18
jb 0x460a90
mov eax, dword [esp + 0x18]
mov edx, dword [0x6bbfb8]
mov dword [edx + eax*4], ebp
mov eax, ebp
jmp 0x460b58
mov ecx, edi
sub ecx, eax
cmp ecx, dword [0x6bbfb0]
jge 0x460d2c
push 0x34
lea eax, [esp + 0x78]
lea ebx, [ecx - 1]
push eax
push ebx
call dword [sym.imp.WINMM.dll_waveOutGetDevCapsA]
test eax, eax
je 0x460b71
mov eax, dword [esp + 0x10]
mov esi, dword [sym.imp.KERNEL32.dll_GlobalFree]
test eax, eax
je 0x460b53
push eax
call esi
push ebp
call esi
xor eax, eax
pop ebx
pop esi
pop ebp
pop edi
mov ecx, dword [esp + 0x98]
xor ecx, esp
call fcn.004a7314
add esp, 0x9c
ret
lea eax, [esp + 0x7c]
lea edx, [eax + 1]
cmp ebx, 0xffffffff
jne 0x460be0
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x460b80
sub eax, edx
add eax, 0xb
push eax
push 0x40
call esi
lea ecx, [esp + 0x7c]
mov esi, eax
mov edx, ecx
sub esi, edx
jmp 0x460ba0
mov dl, byte [ecx]
mov byte [esi + ecx], dl
inc ecx
test dl, dl
jne 0x460ba0
mov ecx, str.___Output
mov esi, ecx
mov dl, byte [ecx]
inc ecx
test dl, dl
jne 0x460bb1
sub ecx, esi
mov edx, ecx
lea edi, [eax - 1]
nop
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x460bc0
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 1
jmp 0x460c0b
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x460be0
sub eax, edx
inc eax
push eax
push 0x40
call esi
lea ecx, [esp + 0x7c]
mov esi, eax
mov edx, ecx
sub esi, edx
mov edi, 1
mov edi, edi
mov dl, byte [ecx]
mov byte [esi + ecx], dl
add ecx, edi
test dl, dl
jne 0x460c00
mov dword [ebp + 4], eax
movzx eax, word [esp + 0xa0]
mov dword [ebp + 0xc], eax
cmp eax, edi
jl 0x460c24
cmp eax, 0x100
jle 0x460c48
push 2
push str._Changed_to__d._n
mov dword [ebp + 0xc], 2
call fcn.004a7323
call fcn.004a90b4
add eax, 0x20
push eax
call fcn.004a93f3
add esp, 0xc
test byte [esp + 0x9c], 0xc
mov eax, dword [esp + 0x10]
je 0x460c69
mov ecx, dword [ebp + 0x10]
movsd xmm0, qword [0x4cb5e8]
movsd qword [eax + ecx*8], xmm0
add dword [ebp + 0x10], edi
test byte [esp + 0x9c], 0xc0
je 0x460c86
mov edx, dword [ebp + 0x10]
movsd xmm0, qword [0x4cb5e0]
movsd qword [eax + edx*8], xmm0
add dword [ebp + 0x10], edi
test dword [esp + 0x9c], 0xc00
je 0x460ca6
mov ecx, dword [ebp + 0x10]
movsd xmm0, qword [0x4cb5d8]
movsd qword [eax + ecx*8], xmm0
add dword [ebp + 0x10], edi
mov edi, dword [sym.imp.WINMM.dll_waveOutOpen]
xor esi, esi
mov edi, edi
mov cx, word [ebp + 0xc]
mov eax, dword [esi + 0x57084c]
mov word [esp + 0x32], cx
movzx ecx, cx
imul ecx, eax
push 1
push 0
add ecx, ecx
push 0
mov dword [esp + 0x44], ecx
mov edx, 1
lea ecx, [esp + 0x3c]
mov dword [esp + 0x40], eax
push ecx
mov word [esp + 0x40], dx
mov edx, dword [esp + 0x42]
push ebx
lea eax, [edx + edx]
push 0
mov dword [esp + 0x56], 0x10
mov word [esp + 0x54], ax
call edi
test eax, eax
jne 0x460d24
mov edx, dword [esi + 0x57084c]
fild dword [esi + 0x57084c]
test edx, edx
jns 0x460d17
fadd qword [0x4c5fa8]
mov eax, dword [ebp + 0x10]
mov ecx, dword [esp + 0x10]
fstp qword [ecx + eax*8]
inc dword [ebp + 0x10]
add esi, 4
cmp esi, 0x18
jb 0x460cb0
mov eax, dword [esp + 0x18]
mov edx, dword [0x6bbfb8]
mov dword [edx + eax*4], ebp
mov eax, ebp
jmp 0x460b58
mov ecx, dword [esp + 0x9c]
pop edi
xor ecx, esp
xor eax, eax
call fcn.004a7314
add esp, 0x9c
ret