Function at 0x1008d541
Capabilities:
Capture microphone audio

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x30
mov eax, dword [0x100ff900]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0xc]
push ebx
push esi
xor ebx, ebx
push edi
mov edi, dword [ebp + 8]
mov esi, ecx
cmp eax, ebx
jne 0x1008d4d9
pop edi
pop esi
mov eax, 0x25
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100c5f50
mov esp, ebp
pop ebp
ret 0xc
cmp dword [eax + 0x2c], 1
jb 0x1008d4c1
cmp dword [esi + 0x4c], ebx
je 0x1008d4fc
pop edi
pop esi
mov eax, 0x50
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100c5f50
mov esp, ebp
pop ebp
ret 0xc
mov ecx, dword [eax + 0x1c]
mov dword [edi + 0x30], ecx
mov edx, dword [eax + 0x48]
mov dword [edi + 0x44], edx
fld dword [eax + 0x50]
call fcn.100c65b0
mov dword [ebp - 0x30], eax
mov dword [edi + 0x40], eax
mov eax, dword [edi + 0x30]
cmp eax, 0xc
ja case.default.0x1008d51e
jmp dword [eax*4 + 0x1008d8e8]
mov ecx, 8
jmp 0x1008d548
mov ecx, 0x10
jmp 0x1008d548
mov ecx, 0x18
jmp 0x1008d548
mov ecx, 0x20
jmp 0x1008d548
xor ecx, ecx
jmp 0x1008d548
mov ecx, dword [ebp - 0x30]
mov dx, word [edi + 0x44]
xor eax, eax
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x10], eax
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], eax
mov word [ebp - 0x2a], dx
mov eax, 0xfffe
mov word [ebp - 0x2c], ax
movzx edx, dx
movzx eax, cx
imul eax, edx
cdq
and edx, 7
add eax, edx
mov edx, dword [ebp - 0x30]
sar eax, 3
mov word [ebp - 0x20], ax
movzx eax, ax
mov dword [ebp - 0x30], eax
imul eax, edx
mov dword [ebp - 0x24], eax
mov word [ebp - 0x1e], cx
mov dword [ebp - 0x28], edx
mov edx, dword [ebp + 0xc]
mov eax, 0x16
mov word [ebp - 0x1a], cx
mov ecx, 5
mov word [ebp - 0x1c], ax
mov eax, 0x100e3cc4
cmp dword [edx + 0x1c], ecx
je 0x1008d5c9
mov eax, 0x100e3cb4
mov edx, dword [eax]
mov dword [ebp - 0x14], edx
mov edx, dword [eax + 4]
mov dword [ebp - 0x10], edx
mov edx, dword [eax + 8]
mov eax, dword [eax + 0xc]
mov dword [ebp - 0xc], edx
mov edx, dword [ebp - 0x30]
mov dword [esi + 0x121c], edx
mov dword [esi + 0x1218], ecx
mov dword [ebp - 8], eax
mov eax, dword [edi + 0x40]
lea ecx, [eax + eax*4]
mov eax, 0x10624dd3
mul ecx
shr edx, 6
mov dword [esi + 0x1218], edx
imul edx, edx, 0x64
mov dword [edi + 0x38], edx
mov edx, dword [esi + 0x121c]
imul edx, dword [esi + 0x1218]
push 0x30000
push esi
push 0x1008d470
lea ecx, [ebp - 0x2c]
mov dword [esi + 0x1218], edx
mov edx, dword [edi + 0xc]
push ecx
lea eax, [esi + 0x2cc]
push edx
push eax
call dword [sym.imp.WINMM.dll_waveInOpen]
cmp eax, ebx
je 0x1008d67f
cmp eax, 4
jne 0x1008d65f
pop edi
pop esi
mov eax, 0x37
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100c5f50
mov esp, ebp
pop ebp
ret 0xc
sub eax, 0x20
neg eax
sbb eax, eax
pop edi
and eax, 0xfffffffd
pop esi
add eax, 0x3b
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100c5f50
mov esp, ebp
pop ebp
ret 0xc
mov eax, dword [esi + 0x1218]
mov ecx, dword [0x100fecc0]
imul eax, eax, 0x64
mov ecx, dword [ecx + 4]
push ebx
push 0x427
push 0x100e3cd4
push eax
call fcn.10075b20
mov dword [esi + 0x1214], eax
mov ecx, 2
lea eax, [esi + 0x408]
jmp 0x1008d6c0
lea edx, [ecx - 2]
imul edx, dword [esi + 0x1218]
add edx, dword [esi + 0x1214]
add eax, 0xb4
mov dword [eax - 0x98], edx
mov dword [eax - 0xa8], ebx
mov edx, dword [eax - 0x98]
mov dword [eax - 0xb8], edx
mov edx, dword [esi + 0x1218]
mov dword [eax - 0xb4], edx
mov edx, dword [esi + 0x1218]
mov dword [eax - 0xb0], edx
mov dword [eax - 0xa4], ebx
lea edx, [ecx - 2]
mov dword [eax - 0xac], edx
lea edx, [ecx - 1]
imul edx, dword [esi + 0x1218]
add edx, dword [esi + 0x1214]
mov dword [eax - 0x74], edx
mov dword [eax - 0x84], ebx
mov edx, dword [eax - 0x74]
mov dword [eax - 0x94], edx
mov edx, dword [esi + 0x1218]
mov dword [eax - 0x90], edx
mov edx, dword [esi + 0x1218]
mov dword [eax - 0x8c], edx
lea edx, [ecx - 1]
mov dword [eax - 0x88], edx
mov dword [eax - 0x80], ebx
mov edx, dword [esi + 0x1218]
imul edx, ecx
add edx, dword [esi + 0x1214]
mov dword [eax - 0x50], edx
mov dword [eax - 0x60], ebx
mov edx, dword [eax - 0x50]
mov dword [eax - 0x70], edx
mov edx, dword [esi + 0x1218]
mov dword [eax - 0x6c], edx
mov edx, dword [esi + 0x1218]
mov dword [eax - 0x68], edx
mov dword [eax - 0x64], ecx
mov dword [eax - 0x5c], ebx
mov edi, dword [esi + 0x1218]
lea edx, [ecx + 1]
imul edi, edx
add edi, dword [esi + 0x1214]
mov dword [eax - 0x2c], edi
mov dword [eax - 0x3c], ebx
mov edi, dword [eax - 0x2c]
mov dword [eax - 0x4c], edi
mov edi, dword [esi + 0x1218]
mov dword [eax - 0x48], edi
mov edi, dword [esi + 0x1218]
mov dword [eax - 0x44], edi
mov dword [eax - 0x40], edx
mov dword [eax - 0x38], ebx
mov edi, dword [esi + 0x1218]
lea edx, [ecx + 2]
imul edi, edx
add edi, dword [esi + 0x1214]
add ecx, 5
mov dword [eax - 8], edi
mov dword [eax - 0x18], ebx
mov edi, dword [eax - 8]
mov dword [eax - 0x28], edi
mov edi, dword [esi + 0x1218]
mov dword [eax - 0x24], edi
mov edi, dword [esi + 0x1218]
mov dword [eax - 0x20], edi
mov dword [eax - 0x1c], edx
mov dword [eax - 0x14], ebx
lea edx, [ecx - 2]
cmp edx, 0x64
jl 0x1008d6c0
mov dword [ebp - 0x30], ebx
lea edi, [esi + 0x404]
mov eax, dword [esi + 0x2cc]
push 0x20
push edi
push eax
call dword [sym.imp.WINMM.dll_waveInPrepareHeader]
test eax, eax
jne 0x1008d8b3
mov ecx, dword [esi + 0x2cc]
push 0x20
push edi
push ecx
call dword [sym.imp.WINMM.dll_waveInAddBuffer]
test eax, eax
jne 0x1008d8b3
mov eax, dword [ebp - 0x30]
inc eax
add edi, 0x24
mov dword [ebp - 0x30], eax
cmp eax, 0x63
jl 0x1008d811
mov edx, dword [esi + 0x30]
push edx
push ebx
push 1
push ebx
push ebx
push 3
push esi
push 0x1008d460
push str.FMOD_Record_thread
lea ecx, [esi + 0x2d0]
mov dword [esi + 0x3fc], ebx
mov dword [esi + 0x400], ebx
mov byte [esi + 0x3f8], 1
call fcn.100772c0
cmp eax, ebx
jne 0x1008d8d3
mov eax, dword [esi + 0x2cc]
push eax
call dword [sym.imp.WINMM.dll_waveInStart]
test eax, eax
je 0x1008d8d1
pop edi
mov byte [esi + 0x3f8], bl
pop esi
mov eax, 0x46
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100c5f50
mov esp, ebp
pop ebp
ret 0xc
pop edi
mov byte [esi + 0x3f8], bl
pop esi
mov eax, 0x38
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100c5f50
mov esp, ebp
pop ebp
ret 0xc
xor eax, eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.100c5f50
mov esp, ebp
pop ebp
ret 0xc