Function at 0x430c1b
Capabilities:
Capture microphone audio

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff80
push ebx
push esi
push edi
mov esi, eax
mov word [ebp - 6], cx
mov dword [ebp - 4], edx
mov eax, dword [esi + 0xf]
test eax, eax
je 0x430c3b
mov eax, esi
call fcn.00431039
mov edx, dword [esi]
test edx, edx
jne 0x430c48
xor eax, eax
jmp 0x430fb0
mov edx, dword [ebp - 4]
mov ecx, dword [edx]
test ecx, ecx
je 0x430c63
test byte [ecx + 0x11], 1
setne al
and eax, 1
test al, al
jne 0x430c63
xor edx, edx
jmp 0x430c68
mov edx, 1
test dl, dl
je 0x430c73
xor eax, eax
jmp 0x430fb0
test ecx, ecx
je 0x430c81
mov edx, dword [ebp - 4]
mov ecx, dword [edx]
mov eax, dword [ecx + 8]
jmp 0x430c86
mov eax, 0xac44
mov ecx, 0xa
cdq
idiv ecx
mov ebx, eax
mov dword [esi + 0x120], ebx
cmp ebx, 0x2000
jle 0x430ca8
mov dword [esi + 0x120], 0x2000
mov eax, dword [esi + 0x120]
cmp eax, 0x14
jge 0x430cbd
mov dword [esi + 0x120], 0x14
mov edx, dword [ebp - 4]
mov ecx, dword [edx]
test ecx, ecx
je 0x430cd0
mov eax, dword [ebp - 4]
mov edx, dword [eax]
mov cl, byte [edx + 0x10]
jmp 0x430cd2
mov cl, 1
xor eax, eax
mov al, cl
imul dword [esi + 0x120]
mov dword [esi + 0x124], eax
mov word [ebp - 0x80], 1
mov edx, dword [ebp - 4]
mov eax, dword [edx]
test eax, eax
je 0x430cfb
mov edx, dword [ebp - 4]
mov ecx, dword [edx]
mov al, byte [ecx + 0x10]
jmp 0x430cfd
mov al, 1
xor edx, edx
mov dl, al
mov word [ebp - 0x7e], dx
mov ecx, dword [ebp - 4]
mov eax, dword [ecx]
test eax, eax
je 0x430d18
mov edx, dword [ebp - 4]
mov ecx, dword [edx]
mov eax, dword [ecx + 8]
jmp 0x430d1d
mov eax, 0xac44
mov dword [ebp - 0x7c], eax
lea ebx, [esi + 0x11c]
movzx edx, word [ebp - 0x7e]
imul edx, eax
add edx, edx
lea eax, [ebp - 0x80]
mov dword [ebp - 0x78], edx
mov cx, word [ebp - 0x7e]
add ecx, ecx
mov word [ebp - 0x74], cx
mov word [ebp - 0x72], 0x10
mov word [ebp - 0x70], 0
push 0x10000
push 0
push dword [esi]
push eax
movsx edx, byte [esi + 4]
push edx
push ebx
call sub.WINMM.dll_waveInOpen
test eax, eax
je 0x430d87
push 0x10004
push 0
push dword [esi]
lea eax, [ebp - 0x80]
push eax
movsx edx, byte [esi + 4]
push edx
push ebx
call sub.WINMM.dll_waveInOpen
test eax, eax
je 0x430d87
xor eax, eax
jmp 0x430fb0
test byte [ebp - 6], 1
je 0x430d9a
push dword [esi + 0x11c]
call sub.WINMM.dll_waveInStop
jmp 0x430da5
push dword [esi + 0x11c]
call sub.WINMM.dll_waveInStart
xor edx, edx
xor ecx, ecx
mov dword [esi + 0x118], edx
mov dword [esi + 0x56e], ecx
mov eax, dword [esi + 0x124]
shl eax, 2
push eax
call fcn.0044cdb4
pop ecx
mov dword [esi + 0x118], eax
mov edx, dword [esi + 0x124]
shl edx, 2
push edx
call fcn.0044cdb4
pop ecx
mov ebx, eax
mov dword [esi + 0x56e], ebx
mov eax, ebx
mov edx, dword [esi + 0x124]
shl edx, 2
push edx
push 0
push eax
call fcn.00446148
mov byte [esi + 0x572], 0
mov ecx, dword [esi + 0x124]
add esp, 0xc
add ecx, ecx
mov dword [ebp - 0xc], ecx
xor edi, edi
lea ebx, [esi + 0x128]
push dword [ebp - 0xc]
push 0x2002
call sub.KERNEL32.dll_GlobalAlloc
mov dword [ebx], eax
mov eax, dword [ebx]
test eax, eax
je 0x430e8d
push dword [ebx]
call sub.KERNEL32.dll_GlobalLock
mov dword [ebx + 4], eax
mov edx, dword [ebx + 4]
test edx, edx
jne 0x430e47
push dword [ebx]
call sub.KERNEL32.dll_GlobalFree
xor ecx, ecx
mov dword [ebx], ecx
jmp 0x430e8d
mov ecx, edi
mov eax, dword [ebp - 0xc]
shl ecx, 2
xor edx, edx
mov dword [ebx + 8], eax
mov dword [ebx + 0x14], edx
lea ecx, [ecx + ecx*8]
push 0x20
add ecx, esi
add ecx, 0x12c
push ecx
push dword [esi + 0x11c]
call sub.WINMM.dll_waveInPrepareHeader
push 0x20
mov eax, edi
shl eax, 2
lea eax, [eax + eax*8]
add eax, esi
add eax, 0x12c
push eax
push dword [esi + 0x11c]
call sub.WINMM.dll_waveInAddBuffer
inc edi
add ebx, 0x24
cmp edi, 0x1e
jl 0x430e14
test byte [ebp - 6], 2
je 0x430ea9
mov dword [esi + 0xf], 2
jmp 0x430eb0
mov dword [esi + 0xf], 1
lea eax, [esi + 0x13]
mov edx, dword [ebp - 4]
call fcn.0043f27c
mov ecx, dword [ebp + 0x10]
mov dword [esi + 0x560], ecx
mov cl, 5
mov al, byte [ebp + 0xc]
mov byte [esi + 0x564], al
mov byte [ebp - 0x50], cl
movsx ecx, byte [ebp - 0x50]
movsx edx, byte [ebp + 0xc]
sub edx, ecx
mov eax, edx
cmp eax, 0x7f
jle 0x430ee7
mov dl, 0x7f
jmp 0x430ef2
cmp eax, 0xffffff81
jge 0x430ef0
mov dl, 0x81
jmp 0x430ef2
mov edx, eax
lea eax, [ebp - 0x54]
mov byte [ebp - 0x54], dl
lea edi, [esi + 0x13]
mov cl, byte [eax]
mov byte [esi + 0x565], cl
mov eax, dword [ebp + 8]
mov dword [esi + 0x56a], eax
mov eax, dword [edi]
test eax, eax
je 0x430f56
mov edx, dword [edi]
mov dword [ebp - 0x5c], edx
mov ecx, dword [ebp - 0x5c]
mov eax, dword [ecx + 4]
mov dword [ebp - 0x60], eax
mov edx, dword [ebp - 0x5c]
mov ebx, dword [edx + 8]
test ebx, ebx
jg 0x430f31
xor ecx, ecx
mov dword [ebp - 0x64], ecx
jmp 0x430f51
mov eax, dword [ebp - 0x60]
cdq
idiv ebx
imul ecx, eax, 0x2710
mov eax, dword [ebp - 0x60]
cdq
idiv ebx
imul eax, edx, 0x2710
cdq
idiv ebx
add ecx, eax
mov dword [ebp - 0x64], ecx
lea ecx, [ebp - 0x64]
jmp 0x430f5e
xor eax, eax
lea ecx, [ebp - 0x68]
mov dword [ebp - 0x68], eax
mov dword [ebp - 0x58], ecx
mov edx, dword [ebp - 0x58]
mov eax, dword [edx]
lea edx, [ebp - 0x6c]
mov dword [ebp - 0x6c], eax
mov ecx, dword [edx]
mov dword [esi + 0x566], ecx
mov eax, dword [esi + 7]
test eax, eax
je 0x430fae
test byte [ebp - 6], 2
je 0x430f8a
mov edx, dword [esi + 0xb]
mov ecx, dword [eax]
call dword [ecx]
jmp 0x430f95
mov edx, dword [esi + 0xb]
mov eax, dword [esi + 7]
mov ecx, dword [eax]
call dword [ecx + 4]
add esp, 0xfffffffc
lea eax, [esi + 0x566]
mov edx, dword [eax]
mov dword [esp], edx
mov edx, dword [esi + 0xb]
mov eax, dword [esi + 7]
mov ecx, dword [eax]
call dword [ecx + 0xc]
mov al, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc