; Listing generated by Microsoft (R) Optimizing Compiler Version 12.00.9044.0 

	TITLE	C:\Users\Administrator\Desktop\GHOST\common\Audio.cpp
	.386P
include listing.inc
if @Version gt 510
.model FLAT
else
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
_DATA	SEGMENT DWORD USE32 PUBLIC 'DATA'
_DATA	ENDS
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
_BSS	SEGMENT DWORD USE32 PUBLIC 'BSS'
_BSS	ENDS
$$SYMBOLS	SEGMENT BYTE USE32 'DEBSYM'
$$SYMBOLS	ENDS
_TLS	SEGMENT DWORD USE32 PUBLIC 'TLS'
_TLS	ENDS
rdata$r	SEGMENT DWORD USE32 PUBLIC 'CONST'
rdata$r	ENDS
;	COMDAT _IsEqualGUID
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT _==
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ??_GCAudio@@UAEPAXI@Z
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ??_R2CAudio@@8
rdata$r	SEGMENT DWORD USE32 PUBLIC 'CONST'
rdata$r	ENDS
;	COMDAT ??_7CAudio@@6B@
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
;	COMDAT ??_R0?AVCAudio@@@8
_DATA	SEGMENT DWORD USE32 PUBLIC 'DATA'
_DATA	ENDS
;	COMDAT ??_R1A@?0A@A@CAudio@@8
rdata$r	SEGMENT DWORD USE32 PUBLIC 'CONST'
rdata$r	ENDS
;	COMDAT ??_R4CAudio@@6B@
rdata$r	SEGMENT DWORD USE32 PUBLIC 'CONST'
rdata$r	ENDS
;	COMDAT ??_R3CAudio@@8
rdata$r	SEGMENT DWORD USE32 PUBLIC 'CONST'
rdata$r	ENDS
FLAT	GROUP _DATA, CONST, _BSS, rdata$r
	ASSUME	CS: FLAT, DS: FLAT, SS: FLAT
endif

INCLUDELIB LIBCMT
INCLUDELIB OLDNAMES

PUBLIC	??_R4CAudio@@6B@				; CAudio::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCAudio@@@8				; CAudio `RTTI Type Descriptor'
PUBLIC	??_R3CAudio@@8					; CAudio::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2CAudio@@8					; CAudio::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@A@CAudio@@8				; CAudio::`RTTI Base Class Descriptor at (0,-1,0,0)'
PUBLIC	??0CAudio@@QAE@XZ				; CAudio::CAudio
PUBLIC	??_7CAudio@@6B@					; CAudio::`vftable'
PUBLIC	??_GCAudio@@UAEPAXI@Z				; CAudio::`scalar deleting destructor'
PUBLIC	??_ECAudio@@UAEPAXI@Z				; CAudio::`vector deleting destructor'
EXTRN	??_7type_info@@6B@:DWORD			; type_info::`vftable'
EXTRN	??2@YAPAXI@Z:NEAR				; operator new
EXTRN	__imp__CreateEventA@16:NEAR
EXTRN	_va_g729a_init_encoder:NEAR
EXTRN	_va_g729a_init_decoder:NEAR
;	COMDAT ??_7CAudio@@6B@
; File C:\Users\Administrator\Desktop\GHOST\common\Audio.cpp
CONST	SEGMENT
??_7CAudio@@6B@ DD FLAT:??_R4CAudio@@6B@		; CAudio::`vftable'
	DD	FLAT:??_ECAudio@@UAEPAXI@Z
CONST	ENDS
;	COMDAT ??_R4CAudio@@6B@
rdata$r	SEGMENT
??_R4CAudio@@6B@ DD 00H					; CAudio::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCAudio@@@8
	DD	FLAT:??_R3CAudio@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCAudio@@@8
_DATA	SEGMENT
??_R0?AVCAudio@@@8 DD FLAT:??_7type_info@@6B@		; CAudio `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCAudio@@', 00H
_DATA	ENDS
;	COMDAT ??_R3CAudio@@8
rdata$r	SEGMENT
??_R3CAudio@@8 DD 00H					; CAudio::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	01H
	DD	FLAT:??_R2CAudio@@8
rdata$r	ENDS
;	COMDAT ??_R2CAudio@@8
rdata$r	SEGMENT
??_R2CAudio@@8 DD FLAT:??_R1A@?0A@A@CAudio@@8		; CAudio::`RTTI Base Class Array'
rdata$r	ENDS
;	COMDAT ??_R1A@?0A@A@CAudio@@8
rdata$r	SEGMENT
??_R1A@?0A@A@CAudio@@8 DD FLAT:??_R0?AVCAudio@@@8	; CAudio::`RTTI Base Class Descriptor at (0,-1,0,0)'
	DD	00H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	00H
; Function compile flags: /Ogsawpy
rdata$r	ENDS
_TEXT	SEGMENT
??0CAudio@@QAE@XZ PROC NEAR				; CAudio::CAudio
; _this$ = ecx
; Line 20
  00000	51		 push	 ecx
  00001	53		 push	 ebx
  00002	55		 push	 ebp
  00003	56		 push	 esi
; Line 21
  00004	33 db		 xor	 ebx, ebx
  00006	57		 push	 edi
  00007	8b 3d 00 00 00
	00		 mov	 edi, DWORD PTR __imp__CreateEventA@16
  0000d	53		 push	 ebx
  0000e	8b f1		 mov	 esi, ecx
  00010	53		 push	 ebx
  00011	53		 push	 ebx
  00012	53		 push	 ebx
  00013	c7 06 00 00 00
	00		 mov	 DWORD PTR [esi], OFFSET FLAT:??_7CAudio@@6B@ ; CAudio::`vftable'
  00019	ff d7		 call	 edi
; Line 22
  0001b	53		 push	 ebx
  0001c	53		 push	 ebx
  0001d	53		 push	 ebx
  0001e	53		 push	 ebx
  0001f	89 46 24	 mov	 DWORD PTR [esi+36], eax
  00022	ff d7		 call	 edi
  00024	89 46 28	 mov	 DWORD PTR [esi+40], eax
; Line 23
  00027	89 5e 30	 mov	 DWORD PTR [esi+48], ebx
; Line 24
  0002a	89 5e 1c	 mov	 DWORD PTR [esi+28], ebx
; Line 25
  0002d	89 5e 20	 mov	 DWORD PTR [esi+32], ebx
; Line 26
  00030	c7 46 04 80 3e
	00 00		 mov	 DWORD PTR [esi+4], 16000 ; 00003e80H
; Line 28
  00037	88 5e 48	 mov	 BYTE PTR [esi+72], bl
; Line 29
  0003a	88 5e 49	 mov	 BYTE PTR [esi+73], bl
  0003d	8d 6e 08	 lea	 ebp, DWORD PTR [esi+8]
  00040	c7 44 24 10 02
	00 00 00	 mov	 DWORD PTR -4+[esp+20], 2
$L74959:
; Line 33
  00048	ff 76 04	 push	 DWORD PTR [esi+4]
  0004b	e8 00 00 00 00	 call	 ??2@YAPAXI@Z		; operator new
; Line 34
  00050	6a 20		 push	 32			; 00000020H
  00052	89 45 00	 mov	 DWORD PTR [ebp], eax
  00055	e8 00 00 00 00	 call	 ??2@YAPAXI@Z		; operator new
; Line 36
  0005a	8b 7d 00	 mov	 edi, DWORD PTR [ebp]
  0005d	89 45 2c	 mov	 DWORD PTR [ebp+44], eax
  00060	8b 4e 04	 mov	 ecx, DWORD PTR [esi+4]
  00063	33 c0		 xor	 eax, eax
  00065	8b d1		 mov	 edx, ecx
  00067	c1 e9 02	 shr	 ecx, 2
  0006a	f3 ab		 rep stosd
  0006c	8b ca		 mov	 ecx, edx
  0006e	83 e1 03	 and	 ecx, 3
  00071	f3 aa		 rep stosb
; Line 38
  00073	ff 76 04	 push	 DWORD PTR [esi+4]
  00076	e8 00 00 00 00	 call	 ??2@YAPAXI@Z		; operator new
; Line 39
  0007b	6a 20		 push	 32			; 00000020H
  0007d	89 45 08	 mov	 DWORD PTR [ebp+8], eax
  00080	e8 00 00 00 00	 call	 ??2@YAPAXI@Z		; operator new
; Line 40
  00085	8b 7d 08	 mov	 edi, DWORD PTR [ebp+8]
  00088	89 45 34	 mov	 DWORD PTR [ebp+52], eax
  0008b	8b 4e 04	 mov	 ecx, DWORD PTR [esi+4]
  0008e	33 c0		 xor	 eax, eax
  00090	8b d1		 mov	 edx, ecx
  00092	83 c4 10	 add	 esp, 16			; 00000010H
  00095	c1 e9 02	 shr	 ecx, 2
  00098	f3 ab		 rep stosd
  0009a	8b ca		 mov	 ecx, edx
  0009c	83 c5 04	 add	 ebp, 4
  0009f	83 e1 03	 and	 ecx, 3
  000a2	ff 4c 24 10	 dec	 DWORD PTR -4+[esp+20]
  000a6	f3 aa		 rep stosb
  000a8	75 9e		 jne	 SHORT $L74959
; Line 42
  000aa	89 5e 2c	 mov	 DWORD PTR [esi+44], ebx
; Line 44
  000ad	e8 00 00 00 00	 call	 _va_g729a_init_encoder
; Line 45
  000b2	e8 00 00 00 00	 call	 _va_g729a_init_decoder
; Line 46
  000b7	8b c6		 mov	 eax, esi
  000b9	5f		 pop	 edi
  000ba	5e		 pop	 esi
  000bb	5d		 pop	 ebp
  000bc	5b		 pop	 ebx
  000bd	59		 pop	 ecx
  000be	c3		 ret	 0
??0CAudio@@QAE@XZ ENDP					; CAudio::CAudio
_TEXT	ENDS
PUBLIC	??1CAudio@@UAE@XZ				; CAudio::~CAudio
EXTRN	??3@YAXPAX@Z:NEAR				; operator delete
; Function compile flags: /Ogsawpy
;	COMDAT ??_GCAudio@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8
??_GCAudio@@UAEPAXI@Z PROC NEAR				; CAudio::`scalar deleting destructor', COMDAT
; _this$ = ecx
  00000	56		 push	 esi
  00001	8b f1		 mov	 esi, ecx
  00003	e8 00 00 00 00	 call	 ??1CAudio@@UAE@XZ	; CAudio::~CAudio
  00008	f6 44 24 08 01	 test	 BYTE PTR ___flags$[esp], 1
  0000d	74 07		 je	 SHORT $L74973
  0000f	56		 push	 esi
  00010	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
  00015	59		 pop	 ecx
$L74973:
  00016	8b c6		 mov	 eax, esi
  00018	5e		 pop	 esi
  00019	c2 04 00	 ret	 4
??_GCAudio@@UAEPAXI@Z ENDP				; CAudio::`scalar deleting destructor'
_TEXT	ENDS
EXTRN	__imp__waveOutClose@4:NEAR
EXTRN	__imp__waveOutUnprepareHeader@12:NEAR
EXTRN	__imp__waveOutReset@4:NEAR
EXTRN	__imp__waveInClose@4:NEAR
EXTRN	__imp__waveInUnprepareHeader@12:NEAR
EXTRN	__imp__waveInStop@4:NEAR
EXTRN	__imp__waveInReset@4:NEAR
EXTRN	__imp__TerminateThread@8:NEAR
EXTRN	__imp__CloseHandle@4:NEAR
; Function compile flags: /Ogsawpy
_TEXT	SEGMENT
??1CAudio@@UAE@XZ PROC NEAR				; CAudio::~CAudio
; _this$ = ecx
; Line 49
  000bf	53		 push	 ebx
  000c0	56		 push	 esi
  000c1	8b f1		 mov	 esi, ecx
  000c3	57		 push	 edi
; Line 50
  000c4	80 7e 48 00	 cmp	 BYTE PTR [esi+72], 0
  000c8	c7 06 00 00 00
	00		 mov	 DWORD PTR [esi], OFFSET FLAT:??_7CAudio@@6B@ ; CAudio::`vftable'
  000ce	74 3f		 je	 SHORT $L74977
; Line 52
  000d0	ff 76 18	 push	 DWORD PTR [esi+24]
  000d3	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__waveInStop@4
; Line 53
  000d9	ff 76 18	 push	 DWORD PTR [esi+24]
  000dc	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__waveInReset@4
  000e2	6a 02		 push	 2
  000e4	8d 7e 34	 lea	 edi, DWORD PTR [esi+52]
  000e7	5b		 pop	 ebx
$L74979:
; Line 55
  000e8	6a 20		 push	 32			; 00000020H
  000ea	ff 37		 push	 DWORD PTR [edi]
  000ec	ff 76 18	 push	 DWORD PTR [esi+24]
  000ef	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__waveInUnprepareHeader@12
  000f5	83 c7 04	 add	 edi, 4
  000f8	4b		 dec	 ebx
  000f9	75 ed		 jne	 SHORT $L74979
; Line 56
  000fb	ff 76 18	 push	 DWORD PTR [esi+24]
  000fe	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__waveInClose@4
; Line 57
  00104	6a ff		 push	 -1
  00106	ff 76 30	 push	 DWORD PTR [esi+48]
  00109	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__TerminateThread@8
$L74977:
; Line 60
  0010f	80 7e 49 00	 cmp	 BYTE PTR [esi+73], 0
  00113	74 2b		 je	 SHORT $L74983
; Line 62
  00115	ff 76 44	 push	 DWORD PTR [esi+68]
  00118	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__waveOutReset@4
  0011e	6a 02		 push	 2
  00120	8d 7e 34	 lea	 edi, DWORD PTR [esi+52]
  00123	5b		 pop	 ebx
$L74985:
; Line 64
  00124	6a 20		 push	 32			; 00000020H
  00126	ff 37		 push	 DWORD PTR [edi]
  00128	ff 76 44	 push	 DWORD PTR [esi+68]
  0012b	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__waveOutUnprepareHeader@12
  00131	83 c7 04	 add	 edi, 4
  00134	4b		 dec	 ebx
  00135	75 ed		 jne	 SHORT $L74985
; Line 65
  00137	ff 76 44	 push	 DWORD PTR [esi+68]
  0013a	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__waveOutClose@4
$L74983:
; Line 69
  00140	6a 02		 push	 2
  00142	8d 7e 34	 lea	 edi, DWORD PTR [esi+52]
  00145	5b		 pop	 ebx
$L74990:
; Line 71
  00146	ff 77 d4	 push	 DWORD PTR [edi-44]
  00149	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
; Line 72
  0014e	ff 37		 push	 DWORD PTR [edi]
  00150	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
; Line 74
  00155	ff 77 dc	 push	 DWORD PTR [edi-36]
  00158	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
; Line 75
  0015d	ff 77 08	 push	 DWORD PTR [edi+8]
  00160	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
  00165	83 c4 10	 add	 esp, 16			; 00000010H
  00168	83 c7 04	 add	 edi, 4
  0016b	4b		 dec	 ebx
  0016c	75 d8		 jne	 SHORT $L74990
; Line 78
  0016e	ff 76 24	 push	 DWORD PTR [esi+36]
  00171	8b 3d 00 00 00
	00		 mov	 edi, DWORD PTR __imp__CloseHandle@4
  00177	ff d7		 call	 edi
; Line 79
  00179	ff 76 28	 push	 DWORD PTR [esi+40]
  0017c	ff d7		 call	 edi
; Line 80
  0017e	ff 76 30	 push	 DWORD PTR [esi+48]
  00181	ff d7		 call	 edi
  00183	5f		 pop	 edi
  00184	5e		 pop	 esi
  00185	5b		 pop	 ebx
; Line 81
  00186	c3		 ret	 0
??1CAudio@@UAE@XZ ENDP					; CAudio::~CAudio
_TEXT	ENDS
PUBLIC	?getRecordBuffer@CAudio@@QAEPAEPAK@Z		; CAudio::getRecordBuffer
PUBLIC	?InitializeWaveIn@CAudio@@AAE_NXZ		; CAudio::InitializeWaveIn
EXTRN	__imp__SetEvent@4:NEAR
EXTRN	__imp__WaitForSingleObject@8:NEAR
; Function compile flags: /Ogsawpy
_TEXT	SEGMENT
_lpdwBytes$ = 8
?getRecordBuffer@CAudio@@QAEPAEPAK@Z PROC NEAR		; CAudio::getRecordBuffer
; _this$ = ecx
; Line 85
  00187	56		 push	 esi
  00188	8b f1		 mov	 esi, ecx
  0018a	57		 push	 edi
; Line 87
  0018b	80 7e 48 00	 cmp	 BYTE PTR [esi+72], 0
  0018f	75 09		 jne	 SHORT $L75001
  00191	e8 00 00 00 00	 call	 ?InitializeWaveIn@CAudio@@AAE_NXZ ; CAudio::InitializeWaveIn
  00196	84 c0		 test	 al, al
; Line 89
  00198	74 08		 je	 SHORT $L75301
$L75001:
; Line 91
  0019a	8b 7c 24 0c	 mov	 edi, DWORD PTR _lpdwBytes$[esp+4]
  0019e	85 ff		 test	 edi, edi
  001a0	75 04		 jne	 SHORT $L75002
$L75301:
; Line 93
  001a2	33 c0		 xor	 eax, eax
  001a4	eb 20		 jmp	 SHORT $L75000
$L75002:
; Line 95
  001a6	ff 76 28	 push	 DWORD PTR [esi+40]
  001a9	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__SetEvent@4
; Line 96
  001af	6a ff		 push	 -1
  001b1	ff 76 24	 push	 DWORD PTR [esi+36]
  001b4	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__WaitForSingleObject@8
; Line 97
  001ba	8b 46 04	 mov	 eax, DWORD PTR [esi+4]
  001bd	89 07		 mov	 DWORD PTR [edi], eax
; Line 98
  001bf	8b 46 1c	 mov	 eax, DWORD PTR [esi+28]
  001c2	8b 44 86 08	 mov	 eax, DWORD PTR [esi+eax*4+8]
$L75000:
  001c6	5f		 pop	 edi
  001c7	5e		 pop	 esi
; Line 99
  001c8	c2 04 00	 ret	 4
?getRecordBuffer@CAudio@@QAEPAEPAK@Z ENDP		; CAudio::getRecordBuffer
_TEXT	ENDS
PUBLIC	?playBuffer@CAudio@@QAE_NPAEK@Z			; CAudio::playBuffer
PUBLIC	?InitializeWaveOut@CAudio@@AAE_NXZ		; CAudio::InitializeWaveOut
EXTRN	__imp__waveOutWrite@12:NEAR
; Function compile flags: /Ogsawpy
_TEXT	SEGMENT
_lpWaveBuffer$ = 8
_dwBytes$ = 12
?playBuffer@CAudio@@QAE_NPAEK@Z PROC NEAR		; CAudio::playBuffer
; _this$ = ecx
; Line 102
  001cb	53		 push	 ebx
  001cc	8b d9		 mov	 ebx, ecx
; Line 103
  001ce	80 7b 49 00	 cmp	 BYTE PTR [ebx+73], 0
  001d2	75 09		 jne	 SHORT $L75008
  001d4	e8 00 00 00 00	 call	 ?InitializeWaveOut@CAudio@@AAE_NXZ ; CAudio::InitializeWaveOut
  001d9	84 c0		 test	 al, al
  001db	74 52		 je	 SHORT $L75007
$L75008:
  001dd	55		 push	 ebp
; Line 107
  001de	33 ed		 xor	 ebp, ebp
  001e0	39 6c 24 10	 cmp	 DWORD PTR _dwBytes$[esp+4], ebp
  001e4	76 46		 jbe	 SHORT $L75012
  001e6	8b 4b 04	 mov	 ecx, DWORD PTR [ebx+4]
  001e9	56		 push	 esi
  001ea	57		 push	 edi
$L75010:
; Line 109
  001eb	8b 43 20	 mov	 eax, DWORD PTR [ebx+32]
  001ee	8b 74 24 14	 mov	 esi, DWORD PTR _lpWaveBuffer$[esp+12]
; Line 110
  001f2	6a 20		 push	 32			; 00000020H
  001f4	8b 7c 83 10	 mov	 edi, DWORD PTR [ebx+eax*4+16]
  001f8	8b c1		 mov	 eax, ecx
  001fa	c1 e9 02	 shr	 ecx, 2
  001fd	f3 a5		 rep movsd
  001ff	8b c8		 mov	 ecx, eax
  00201	83 e1 03	 and	 ecx, 3
  00204	f3 a4		 rep movsb
  00206	8b 43 20	 mov	 eax, DWORD PTR [ebx+32]
  00209	ff 74 83 3c	 push	 DWORD PTR [ebx+eax*4+60]
  0020d	ff 73 44	 push	 DWORD PTR [ebx+68]
  00210	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__waveOutWrite@12
  00216	8b 4b 04	 mov	 ecx, DWORD PTR [ebx+4]
; Line 111
  00219	33 c0		 xor	 eax, eax
  0021b	40		 inc	 eax
  0021c	03 e9		 add	 ebp, ecx
  0021e	2b 43 20	 sub	 eax, DWORD PTR [ebx+32]
  00221	3b 6c 24 18	 cmp	 ebp, DWORD PTR _dwBytes$[esp+12]
  00225	89 43 20	 mov	 DWORD PTR [ebx+32], eax
  00228	72 c1		 jb	 SHORT $L75010
  0022a	5f		 pop	 edi
  0022b	5e		 pop	 esi
$L75012:
; Line 114
  0022c	b0 01		 mov	 al, 1
  0022e	5d		 pop	 ebp
$L75007:
  0022f	5b		 pop	 ebx
; Line 115
  00230	c2 08 00	 ret	 8
?playBuffer@CAudio@@QAE_NPAEK@Z ENDP			; CAudio::playBuffer
_TEXT	ENDS
PUBLIC	?SetDeviceType@CAudio@@QAEXPAUtWAVEFORMATEX@@@Z	; CAudio::SetDeviceType
PUBLIC	?waveInCallBack@CAudio@@CGKPAX@Z		; CAudio::waveInCallBack
EXTRN	__imp__waveInGetNumDevs@0:NEAR
EXTRN	__imp__waveInOpen@24:NEAR
EXTRN	__imp__waveInPrepareHeader@12:NEAR
EXTRN	__imp__waveInAddBuffer@12:NEAR
EXTRN	__imp__waveInStart@4:NEAR
EXTRN	__imp__CreateThread@24:NEAR
EXTRN	__imp__ResumeThread@4:NEAR
; Function compile flags: /Ogsawpy
_TEXT	SEGMENT
_waveform$ = -28
_dwThreadID$ = -4
?InitializeWaveIn@CAudio@@AAE_NXZ PROC NEAR		; CAudio::InitializeWaveIn
; _this$ = ecx
; Line 118
  00233	55		 push	 ebp
  00234	8b ec		 mov	 ebp, esp
  00236	83 ec 1c	 sub	 esp, 28			; 0000001cH
  00239	53		 push	 ebx
  0023a	56		 push	 esi
  0023b	57		 push	 edi
  0023c	8b f1		 mov	 esi, ecx
; Line 119
  0023e	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__waveInGetNumDevs@0
  00244	85 c0		 test	 eax, eax
; Line 120
  00246	74 45		 je	 SHORT $L75308
; Line 123
  00248	8d 45 e4	 lea	 eax, DWORD PTR _waveform$[ebp]
  0024b	8b ce		 mov	 ecx, esi
  0024d	50		 push	 eax
  0024e	e8 00 00 00 00	 call	 ?SetDeviceType@CAudio@@QAEXPAUtWAVEFORMATEX@@@Z ; CAudio::SetDeviceType
; Line 127
  00253	8d 45 fc	 lea	 eax, DWORD PTR _dwThreadID$[ebp]
  00256	33 ff		 xor	 edi, edi
  00258	50		 push	 eax
  00259	6a 04		 push	 4
  0025b	56		 push	 esi
  0025c	68 00 00 00 00	 push	 OFFSET FLAT:?waveInCallBack@CAudio@@CGKPAX@Z ; CAudio::waveInCallBack
  00261	57		 push	 edi
  00262	57		 push	 edi
  00263	89 7d fc	 mov	 DWORD PTR _dwThreadID$[ebp], edi
  00266	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__CreateThread@24
; Line 129
  0026c	68 00 00 02 00	 push	 131072			; 00020000H
  00271	57		 push	 edi
  00272	ff 75 fc	 push	 DWORD PTR _dwThreadID$[ebp]
  00275	89 46 30	 mov	 DWORD PTR [esi+48], eax
  00278	8d 45 e4	 lea	 eax, DWORD PTR _waveform$[ebp]
  0027b	8d 5e 18	 lea	 ebx, DWORD PTR [esi+24]
  0027e	50		 push	 eax
  0027f	ff 76 2c	 push	 DWORD PTR [esi+44]
  00282	53		 push	 ebx
  00283	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__waveInOpen@24
; Line 131
  00289	85 c0		 test	 eax, eax
  0028b	74 04		 je	 SHORT $L75025
$L75308:
; Line 133
  0028d	32 c0		 xor	 al, al
  0028f	eb 5a		 jmp	 SHORT $L75016
$L75025:
; Line 135
  00291	8d 7e 34	 lea	 edi, DWORD PTR [esi+52]
  00294	c7 45 f8 02 00
	00 00		 mov	 DWORD PTR -8+[ebp], 2
$L75027:
; Line 137
  0029b	8b 07		 mov	 eax, DWORD PTR [edi]
  0029d	8b 4f d4	 mov	 ecx, DWORD PTR [edi-44]
; Line 142
  002a0	6a 20		 push	 32			; 00000020H
  002a2	50		 push	 eax
  002a3	ff 33		 push	 DWORD PTR [ebx]
  002a5	89 08		 mov	 DWORD PTR [eax], ecx
  002a7	8b 4e 04	 mov	 ecx, DWORD PTR [esi+4]
  002aa	89 48 04	 mov	 DWORD PTR [eax+4], ecx
  002ad	83 60 10 00	 and	 DWORD PTR [eax+16], 0
  002b1	83 60 14 00	 and	 DWORD PTR [eax+20], 0
  002b5	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__waveInPrepareHeader@12
  002bb	83 c7 04	 add	 edi, 4
  002be	ff 4d f8	 dec	 DWORD PTR -8+[ebp]
  002c1	75 d8		 jne	 SHORT $L75027
; Line 145
  002c3	8b 46 1c	 mov	 eax, DWORD PTR [esi+28]
  002c6	6a 20		 push	 32			; 00000020H
  002c8	ff 74 86 34	 push	 DWORD PTR [esi+eax*4+52]
  002cc	ff 33		 push	 DWORD PTR [ebx]
  002ce	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__waveInAddBuffer@12
; Line 147
  002d4	ff 76 30	 push	 DWORD PTR [esi+48]
  002d7	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__ResumeThread@4
; Line 149
  002dd	ff 33		 push	 DWORD PTR [ebx]
  002df	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__waveInStart@4
; Line 151
  002e5	c6 46 48 01	 mov	 BYTE PTR [esi+72], 1
; Line 153
  002e9	b0 01		 mov	 al, 1
$L75016:
  002eb	5f		 pop	 edi
  002ec	5e		 pop	 esi
  002ed	5b		 pop	 ebx
; Line 155
  002ee	c9		 leave
  002ef	c3		 ret	 0
?InitializeWaveIn@CAudio@@AAE_NXZ ENDP			; CAudio::InitializeWaveIn
_TEXT	ENDS
PUBLIC	?FindMixernIndex@@YAHPAD@Z			; FindMixernIndex
EXTRN	__imp__mixerGetLineInfoA@12:NEAR
EXTRN	__imp__mixerGetNumDevs@0:NEAR
EXTRN	__imp__mixerGetDevCapsA@12:NEAR
EXTRN	__imp__mixerOpen@20:NEAR
EXTRN	__imp__mixerClose@4:NEAR
; Function compile flags: /Ogsawpy
_TEXT	SEGMENT
_szPname$ = 8
_mxcaps$ = -56
_hMixer$ = -8
_i$ = -4
_mxl$75045 = -224
?FindMixernIndex@@YAHPAD@Z PROC NEAR			; FindMixernIndex
; Line 158
  002f0	55		 push	 ebp
  002f1	8b ec		 mov	 ebp, esp
  002f3	81 ec e0 00 00
	00		 sub	 esp, 224		; 000000e0H
  002f9	53		 push	 ebx
  002fa	56		 push	 esi
  002fb	57		 push	 edi
; Line 159
  002fc	6a 0b		 push	 11			; 0000000bH
  002fe	33 db		 xor	 ebx, ebx
  00300	59		 pop	 ecx
  00301	33 c0		 xor	 eax, eax
  00303	8d 7d ca	 lea	 edi, DWORD PTR _mxcaps$[ebp+2]
  00306	66 89 5d c8	 mov	 WORD PTR _mxcaps$[ebp], bx
; Line 160
  0030a	89 5d f8	 mov	 DWORD PTR _hMixer$[ebp], ebx
  0030d	f3 ab		 rep stosd
  0030f	66 ab		 stosw
; Line 162
  00311	89 5d fc	 mov	 DWORD PTR _i$[ebp], ebx
  00314	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__mixerGetNumDevs@0
  0031a	85 c0		 test	 eax, eax
  0031c	0f 86 d6 00 00
	00		 jbe	 $L75041
$L75039:
; Line 164
  00322	8d 45 c8	 lea	 eax, DWORD PTR _mxcaps$[ebp]
  00325	6a 30		 push	 48			; 00000030H
  00327	50		 push	 eax
  00328	ff 75 fc	 push	 DWORD PTR _i$[ebp]
  0032b	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__mixerGetDevCapsA@12
  00331	85 c0		 test	 eax, eax
  00333	0f 85 ad 00 00
	00		 jne	 $L75040
; Line 165
  00339	53		 push	 ebx
  0033a	53		 push	 ebx
  0033b	53		 push	 ebx
  0033c	8d 45 f8	 lea	 eax, DWORD PTR _hMixer$[ebp]
  0033f	ff 75 fc	 push	 DWORD PTR _i$[ebp]
  00342	50		 push	 eax
  00343	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__mixerOpen@20
  00349	85 c0		 test	 eax, eax
  0034b	0f 85 95 00 00
	00		 jne	 $L75040
; Line 167
  00351	6a 22		 push	 34			; 00000022H
  00353	8d bd 40 ff ff
	ff		 lea	 edi, DWORD PTR _mxl$75045[ebp+32]
  00359	59		 pop	 ecx
  0035a	c7 85 20 ff ff
	ff a8 00 00 00	 mov	 DWORD PTR _mxl$75045[ebp], 168 ; 000000a8H
  00364	89 9d 24 ff ff
	ff		 mov	 DWORD PTR _mxl$75045[ebp+4], ebx
  0036a	89 9d 28 ff ff
	ff		 mov	 DWORD PTR _mxl$75045[ebp+8], ebx
  00370	89 9d 2c ff ff
	ff		 mov	 DWORD PTR _mxl$75045[ebp+12], ebx
  00376	89 9d 30 ff ff
	ff		 mov	 DWORD PTR _mxl$75045[ebp+16], ebx
  0037c	89 9d 34 ff ff
	ff		 mov	 DWORD PTR _mxl$75045[ebp+20], ebx
  00382	c7 85 38 ff ff
	ff 07 00 00 00	 mov	 DWORD PTR _mxl$75045[ebp+24], 7
  0038c	89 9d 3c ff ff
	ff		 mov	 DWORD PTR _mxl$75045[ebp+28], ebx
; Line 168
  00392	6a 03		 push	 3
  00394	f3 ab		 rep stosd
  00396	8d 85 20 ff ff
	ff		 lea	 eax, DWORD PTR _mxl$75045[ebp]
  0039c	50		 push	 eax
  0039d	ff 75 f8	 push	 DWORD PTR _hMixer$[ebp]
  003a0	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__mixerGetLineInfoA@12
  003a6	85 c0		 test	 eax, eax
  003a8	74 0b		 je	 SHORT $L75048
; Line 169
  003aa	ff 75 f8	 push	 DWORD PTR _hMixer$[ebp]
  003ad	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__mixerClose@4
; Line 170
  003b3	eb 31		 jmp	 SHORT $L75040
$L75048:
; Line 173
  003b5	8b 75 08	 mov	 esi, DWORD PTR _szPname$[ebp]
  003b8	8d 45 d0	 lea	 eax, DWORD PTR _mxcaps$[ebp+8]
$L75313:
  003bb	8a 10		 mov	 dl, BYTE PTR [eax]
  003bd	8a ca		 mov	 cl, dl
  003bf	3a 16		 cmp	 dl, BYTE PTR [esi]
  003c1	75 1a		 jne	 SHORT $L75314
  003c3	3a cb		 cmp	 cl, bl
  003c5	74 12		 je	 SHORT $L75315
  003c7	8a 50 01	 mov	 dl, BYTE PTR [eax+1]
  003ca	8a ca		 mov	 cl, dl
  003cc	3a 56 01	 cmp	 dl, BYTE PTR [esi+1]
  003cf	75 0c		 jne	 SHORT $L75314
  003d1	40		 inc	 eax
  003d2	40		 inc	 eax
  003d3	46		 inc	 esi
  003d4	46		 inc	 esi
  003d5	3a cb		 cmp	 cl, bl
  003d7	75 e2		 jne	 SHORT $L75313
$L75315:
  003d9	33 c0		 xor	 eax, eax
  003db	eb 05		 jmp	 SHORT $L75316
$L75314:
  003dd	1b c0		 sbb	 eax, eax
  003df	83 d8 ff	 sbb	 eax, -1
$L75316:
  003e2	3b c3		 cmp	 eax, ebx
  003e4	74 1a		 je	 SHORT $L75311
$L75040:
; Line 162
  003e6	ff 45 fc	 inc	 DWORD PTR _i$[ebp]
  003e9	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__mixerGetNumDevs@0
  003ef	39 45 fc	 cmp	 DWORD PTR _i$[ebp], eax
  003f2	0f 82 2a ff ff
	ff		 jb	 $L75039
$L75041:
; Line 180
  003f8	83 c8 ff	 or	 eax, -1
$L75035:
  003fb	5f		 pop	 edi
  003fc	5e		 pop	 esi
  003fd	5b		 pop	 ebx
; Line 181
  003fe	c9		 leave
  003ff	c3		 ret	 0
$L75311:
; Line 175
  00400	ff 75 f8	 push	 DWORD PTR _hMixer$[ebp]
  00403	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__mixerClose@4
; Line 177
  00409	8b 45 fc	 mov	 eax, DWORD PTR _i$[ebp]
  0040c	eb ed		 jmp	 SHORT $L75035
?FindMixernIndex@@YAHPAD@Z ENDP				; FindMixernIndex
_TEXT	ENDS
PUBLIC	?ActiveMixerInputChannel@CAudio@@QAE_NPADH@Z	; CAudio::ActiveMixerInputChannel
EXTRN	_free:NEAR
EXTRN	_malloc:NEAR
EXTRN	__imp__mixerGetLineControlsA@12:NEAR
EXTRN	__imp__mixerGetControlDetailsA@12:NEAR
EXTRN	__imp__mixerSetControlDetails@12:NEAR
; Function compile flags: /Ogsawpy
_TEXT	SEGMENT
_szMixerDevice$ = 8
_nMixerLineIndex$ = 12
_hMixer$ = 8
_mxc$ = -364
_mxl$ = -216
_mxlc$ = -48
_mxcdlts$ = 12
_mxcd$ = -24
?ActiveMixerInputChannel@CAudio@@QAE_NPADH@Z PROC NEAR	; CAudio::ActiveMixerInputChannel
; _this$ = ecx
; Line 184
  0040e	55		 push	 ebp
  0040f	8b ec		 mov	 ebp, esp
  00411	81 ec 6c 01 00
	00		 sub	 esp, 364		; 0000016cH
  00417	53		 push	 ebx
  00418	57		 push	 edi
; Line 185
  00419	ff 75 08	 push	 DWORD PTR _szMixerDevice$[ebp]
  0041c	e8 00 00 00 00	 call	 ?FindMixernIndex@@YAHPAD@Z ; FindMixernIndex
  00421	8b d0		 mov	 edx, eax
  00423	59		 pop	 ecx
; Line 186
  00424	83 fa ff	 cmp	 edx, -1
; Line 187
  00427	74 77		 je	 SHORT $L75326
; Line 190
  00429	6a 23		 push	 35			; 00000023H
  0042b	33 db		 xor	 ebx, ebx
  0042d	59		 pop	 ecx
  0042e	33 c0		 xor	 eax, eax
  00430	8d bd 9c fe ff
	ff		 lea	 edi, DWORD PTR _mxc$[ebp+8]
  00436	c7 85 94 fe ff
	ff 94 00 00 00	 mov	 DWORD PTR _mxc$[ebp], 148 ; 00000094H
  00440	89 9d 98 fe ff
	ff		 mov	 DWORD PTR _mxc$[ebp+4], ebx
; Line 191
  00446	6a 22		 push	 34			; 00000022H
  00448	f3 ab		 rep stosd
  0044a	59		 pop	 ecx
  0044b	8d bd 48 ff ff
	ff		 lea	 edi, DWORD PTR _mxl$[ebp+32]
  00451	c7 85 28 ff ff
	ff a8 00 00 00	 mov	 DWORD PTR _mxl$[ebp], 168 ; 000000a8H
  0045b	89 9d 2c ff ff
	ff		 mov	 DWORD PTR _mxl$[ebp+4], ebx
  00461	89 9d 30 ff ff
	ff		 mov	 DWORD PTR _mxl$[ebp+8], ebx
  00467	89 9d 34 ff ff
	ff		 mov	 DWORD PTR _mxl$[ebp+12], ebx
  0046d	89 9d 38 ff ff
	ff		 mov	 DWORD PTR _mxl$[ebp+16], ebx
  00473	89 9d 3c ff ff
	ff		 mov	 DWORD PTR _mxl$[ebp+20], ebx
  00479	c7 85 40 ff ff
	ff 07 00 00 00	 mov	 DWORD PTR _mxl$[ebp+24], 7
  00483	89 9d 44 ff ff
	ff		 mov	 DWORD PTR _mxl$[ebp+28], ebx
; Line 192
  00489	53		 push	 ebx
  0048a	53		 push	 ebx
  0048b	f3 ab		 rep stosd
  0048d	53		 push	 ebx
  0048e	8d 45 08	 lea	 eax, DWORD PTR _hMixer$[ebp]
  00491	52		 push	 edx
  00492	50		 push	 eax
  00493	89 5d 08	 mov	 DWORD PTR _hMixer$[ebp], ebx
  00496	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__mixerOpen@20
  0049c	85 c0		 test	 eax, eax
  0049e	74 07		 je	 SHORT $L75063
$L75326:
; Line 193
  004a0	32 c0		 xor	 al, al
  004a2	e9 74 01 00 00	 jmp	 $L75054
$L75063:
  004a7	56		 push	 esi
; Line 195
  004a8	8b 35 00 00 00
	00		 mov	 esi, DWORD PTR __imp__mixerGetLineInfoA@12
  004ae	8d 85 28 ff ff
	ff		 lea	 eax, DWORD PTR _mxl$[ebp]
  004b4	6a 03		 push	 3
  004b6	50		 push	 eax
  004b7	ff 75 08	 push	 DWORD PTR _hMixer$[ebp]
  004ba	ff d6		 call	 esi
  004bc	85 c0		 test	 eax, eax
  004be	0f 85 4b 01 00
	00		 jne	 $L75321
; Line 201
  004c4	8b 85 34 ff ff
	ff		 mov	 eax, DWORD PTR _mxl$[ebp+12]
  004ca	33 ff		 xor	 edi, edi
  004cc	89 45 d4	 mov	 DWORD PTR _mxlc$[ebp+4], eax
  004cf	8b 85 94 fe ff
	ff		 mov	 eax, DWORD PTR _mxc$[ebp]
  004d5	89 45 e0	 mov	 DWORD PTR _mxlc$[ebp+16], eax
  004d8	8d 85 94 fe ff
	ff		 lea	 eax, DWORD PTR _mxc$[ebp]
  004de	89 45 e4	 mov	 DWORD PTR _mxlc$[ebp+20], eax
; Line 202
  004e1	8b 45 0c	 mov	 eax, DWORD PTR _nMixerLineIndex$[ebp]
  004e4	47		 inc	 edi
  004e5	89 85 30 ff ff
	ff		 mov	 DWORD PTR _mxl$[ebp+8], eax
; Line 203
  004eb	8d 85 28 ff ff
	ff		 lea	 eax, DWORD PTR _mxl$[ebp]
  004f1	57		 push	 edi
  004f2	50		 push	 eax
  004f3	c7 45 d0 18 00
	00 00		 mov	 DWORD PTR _mxlc$[ebp], 24 ; 00000018H
  004fa	ff 75 08	 push	 DWORD PTR _hMixer$[ebp]
  004fd	c7 45 d8 01 00
	01 71		 mov	 DWORD PTR _mxlc$[ebp+8], 1895890945 ; 71010001H
  00504	89 7d dc	 mov	 DWORD PTR _mxlc$[ebp+12], edi
  00507	ff d6		 call	 esi
  00509	85 c0		 test	 eax, eax
  0050b	0f 85 fe 00 00
	00		 jne	 $L75321
; Line 208
  00511	8d 45 d0	 lea	 eax, DWORD PTR _mxlc$[ebp]
  00514	6a 02		 push	 2
  00516	50		 push	 eax
  00517	ff 75 08	 push	 DWORD PTR _hMixer$[ebp]
  0051a	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__mixerGetLineControlsA@12
  00520	85 c0		 test	 eax, eax
  00522	74 1e		 je	 SHORT $L75073
; Line 211
  00524	8d 45 d0	 lea	 eax, DWORD PTR _mxlc$[ebp]
  00527	6a 02		 push	 2
  00529	50		 push	 eax
  0052a	c7 45 d8 01 00
	01 70		 mov	 DWORD PTR _mxlc$[ebp+8], 1879113729 ; 70010001H
  00531	ff 75 08	 push	 DWORD PTR _hMixer$[ebp]
  00534	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__mixerGetLineControlsA@12
  0053a	85 c0		 test	 eax, eax
  0053c	0f 85 cd 00 00
	00		 jne	 $L75321
$L75073:
; Line 217
  00542	8b 85 a4 fe ff
	ff		 mov	 eax, DWORD PTR _mxc$[ebp+16]
  00548	3b c3		 cmp	 eax, ebx
  0054a	0f 84 bf 00 00
	00		 je	 $L75321
; Line 222
  00550	c1 e0 02	 shl	 eax, 2
  00553	50		 push	 eax
  00554	e8 00 00 00 00	 call	 _malloc
  00559	8b f0		 mov	 esi, eax
; Line 223
  0055b	8b 85 a4 fe ff
	ff		 mov	 eax, DWORD PTR _mxc$[ebp+16]
  00561	8d 04 c0	 lea	 eax, DWORD PTR [eax+eax*8]
  00564	c1 e0 03	 shl	 eax, 3
  00567	50		 push	 eax
  00568	e8 00 00 00 00	 call	 _malloc
  0056d	59		 pop	 ecx
  0056e	89 45 0c	 mov	 DWORD PTR _mxcdlts$[ebp], eax
  00571	59		 pop	 ecx
; Line 224
  00572	89 45 fc	 mov	 DWORD PTR _mxcd$[ebp+20], eax
  00575	8b 8d 98 fe ff
	ff		 mov	 ecx, DWORD PTR _mxc$[ebp+4]
; Line 225
  0057b	8d 45 e8	 lea	 eax, DWORD PTR _mxcd$[ebp]
  0057e	57		 push	 edi
  0057f	50		 push	 eax
  00580	ff 75 08	 push	 DWORD PTR _hMixer$[ebp]
  00583	89 4d ec	 mov	 DWORD PTR _mxcd$[ebp+4], ecx
  00586	8b 8d a4 fe ff
	ff		 mov	 ecx, DWORD PTR _mxc$[ebp+16]
  0058c	c7 45 e8 18 00
	00 00		 mov	 DWORD PTR _mxcd$[ebp], 24 ; 00000018H
  00593	89 7d f0	 mov	 DWORD PTR _mxcd$[ebp+8], edi
  00596	89 4d f4	 mov	 DWORD PTR _mxcd$[ebp+12], ecx
  00599	c7 45 f8 48 00
	00 00		 mov	 DWORD PTR _mxcd$[ebp+16], 72 ; 00000048H
  005a0	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__mixerGetControlDetailsA@12
  005a6	85 c0		 test	 eax, eax
  005a8	75 55		 jne	 SHORT $L75091
; Line 227
  005aa	8b 8d a4 fe ff
	ff		 mov	 ecx, DWORD PTR _mxc$[ebp+16]
  005b0	8b fe		 mov	 edi, esi
  005b2	f3 ab		 rep stosd
; Line 228
  005b4	39 85 a4 fe ff
	ff		 cmp	 DWORD PTR _mxc$[ebp+16], eax
  005ba	76 43		 jbe	 SHORT $L75091
; Line 227
  005bc	8b 4d 0c	 mov	 ecx, DWORD PTR _mxcdlts$[ebp]
$L75089:
; Line 230
  005bf	8b 11		 mov	 edx, DWORD PTR [ecx]
  005c1	3b 95 34 ff ff
	ff		 cmp	 edx, DWORD PTR _mxl$[ebp+12]
  005c7	74 0e		 je	 SHORT $L75319
  005c9	40		 inc	 eax
  005ca	83 c1 48	 add	 ecx, 72			; 00000048H
  005cd	3b 85 a4 fe ff
	ff		 cmp	 eax, DWORD PTR _mxc$[ebp+16]
  005d3	72 ea		 jb	 SHORT $L75089
  005d5	eb 28		 jmp	 SHORT $L75091
$L75319:
; Line 232
  005d7	c7 04 86 01 00
	00 00		 mov	 DWORD PTR [esi+eax*4], 1
; Line 235
  005de	8d 45 e8	 lea	 eax, DWORD PTR _mxcd$[ebp]
  005e1	6a 00		 push	 0
  005e3	50		 push	 eax
  005e4	ff 75 08	 push	 DWORD PTR _hMixer$[ebp]
  005e7	89 75 fc	 mov	 DWORD PTR _mxcd$[ebp+20], esi
  005ea	c7 45 f8 04 00
	00 00		 mov	 DWORD PTR _mxcd$[ebp+16], 4
  005f1	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__mixerSetControlDetails@12
  005f7	8b d8		 mov	 ebx, eax
  005f9	f7 db		 neg	 ebx
  005fb	1a db		 sbb	 bl, bl
  005fd	fe c3		 inc	 bl
$L75091:
; Line 240
  005ff	56		 push	 esi
  00600	e8 00 00 00 00	 call	 _free
; Line 241
  00605	ff 75 0c	 push	 DWORD PTR _mxcdlts$[ebp]
  00608	e8 00 00 00 00	 call	 _free
  0060d	59		 pop	 ecx
  0060e	59		 pop	 ecx
$L75321:
; Line 242
  0060f	ff 75 08	 push	 DWORD PTR _hMixer$[ebp]
  00612	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__mixerClose@4
; Line 244
  00618	8a c3		 mov	 al, bl
  0061a	5e		 pop	 esi
$L75054:
  0061b	5f		 pop	 edi
  0061c	5b		 pop	 ebx
; Line 245
  0061d	c9		 leave
  0061e	c2 08 00	 ret	 8
?ActiveMixerInputChannel@CAudio@@QAE_NPADH@Z ENDP	; CAudio::ActiveMixerInputChannel
_TEXT	ENDS
PUBLIC	?EnumerateInputLines@CAudio@@QAEHPAD0@Z		; CAudio::EnumerateInputLines
_DATA	SEGMENT
$SG75153 DB	'@', 00H
; Function compile flags: /Ogsawpy
_DATA	ENDS
_TEXT	SEGMENT
_szPname$ = 8
_str$ = 12
_mxcaps$ = -296
_hMixer$ = -4
_nRet$ = -20
_i$ = -8
_mxl$75112 = -248
_mxc$75117 = -444
_mxlc$75119 = -80
_mxcd$75126 = -44
_mxcdlts$75128 = -16
_mxcdbls$75134 = -48
_dwConnections$75140 = -52
_dwDestination$75141 = -56
_j$75142 = -12
?EnumerateInputLines@CAudio@@QAEHPAD0@Z PROC NEAR	; CAudio::EnumerateInputLines
; _this$ = ecx
; Line 248
  00621	55		 push	 ebp
  00622	8b ec		 mov	 ebp, esp
  00624	81 ec bc 01 00
	00		 sub	 esp, 444		; 000001bcH
  0062a	56		 push	 esi
; Line 249
  0062b	33 f6		 xor	 esi, esi
  0062d	39 75 0c	 cmp	 DWORD PTR _str$[ebp], esi
  00630	0f 84 21 03 00
	00		 je	 $L75101
  00636	39 75 08	 cmp	 DWORD PTR _szPname$[ebp], esi
  00639	0f 84 18 03 00
	00		 je	 $L75101
  0063f	57		 push	 edi
; Line 252
  00640	6a 0b		 push	 11			; 0000000bH
  00642	59		 pop	 ecx
  00643	33 c0		 xor	 eax, eax
  00645	8d bd da fe ff
	ff		 lea	 edi, DWORD PTR _mxcaps$[ebp+2]
  0064b	66 89 b5 d8 fe
	ff ff		 mov	 WORD PTR _mxcaps$[ebp], si
; Line 254
  00652	83 4d ec ff	 or	 DWORD PTR _nRet$[ebp], -1
  00656	89 75 fc	 mov	 DWORD PTR _hMixer$[ebp], esi
  00659	f3 ab		 rep stosd
  0065b	66 ab		 stosw
; Line 256
  0065d	89 75 f8	 mov	 DWORD PTR _i$[ebp], esi
  00660	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__mixerGetNumDevs@0
  00666	85 c0		 test	 eax, eax
  00668	0f 86 e3 02 00
	00		 jbe	 $L75108
  0066e	53		 push	 ebx
  0066f	8b 1d 00 00 00
	00		 mov	 ebx, DWORD PTR __imp__mixerClose@4
  00675	eb 02		 jmp	 SHORT $L75106
$L75340:
  00677	33 f6		 xor	 esi, esi
$L75106:
; Line 258
  00679	8d 85 d8 fe ff
	ff		 lea	 eax, DWORD PTR _mxcaps$[ebp]
  0067f	6a 30		 push	 48			; 00000030H
  00681	50		 push	 eax
  00682	ff 75 f8	 push	 DWORD PTR _i$[ebp]
  00685	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__mixerGetDevCapsA@12
  0068b	85 c0		 test	 eax, eax
  0068d	0f 85 ab 02 00
	00		 jne	 $L75107
; Line 260
  00693	56		 push	 esi
  00694	56		 push	 esi
  00695	56		 push	 esi
  00696	8d 45 fc	 lea	 eax, DWORD PTR _hMixer$[ebp]
  00699	ff 75 f8	 push	 DWORD PTR _i$[ebp]
  0069c	50		 push	 eax
  0069d	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__mixerOpen@20
  006a3	85 c0		 test	 eax, eax
  006a5	0f 85 93 02 00
	00		 jne	 $L75107
; Line 263
  006ab	6a 22		 push	 34			; 00000022H
  006ad	8d bd 28 ff ff
	ff		 lea	 edi, DWORD PTR _mxl$75112[ebp+32]
  006b3	59		 pop	 ecx
  006b4	c7 85 08 ff ff
	ff a8 00 00 00	 mov	 DWORD PTR _mxl$75112[ebp], 168 ; 000000a8H
  006be	89 b5 0c ff ff
	ff		 mov	 DWORD PTR _mxl$75112[ebp+4], esi
  006c4	89 b5 10 ff ff
	ff		 mov	 DWORD PTR _mxl$75112[ebp+8], esi
  006ca	89 b5 14 ff ff
	ff		 mov	 DWORD PTR _mxl$75112[ebp+12], esi
  006d0	89 b5 18 ff ff
	ff		 mov	 DWORD PTR _mxl$75112[ebp+16], esi
  006d6	89 b5 1c ff ff
	ff		 mov	 DWORD PTR _mxl$75112[ebp+20], esi
  006dc	c7 85 20 ff ff
	ff 07 00 00 00	 mov	 DWORD PTR _mxl$75112[ebp+24], 7
  006e6	89 b5 24 ff ff
	ff		 mov	 DWORD PTR _mxl$75112[ebp+28], esi
; Line 264
  006ec	6a 03		 push	 3
  006ee	f3 ab		 rep stosd
  006f0	8d 85 08 ff ff
	ff		 lea	 eax, DWORD PTR _mxl$75112[ebp]
  006f6	50		 push	 eax
  006f7	ff 75 fc	 push	 DWORD PTR _hMixer$[ebp]
  006fa	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__mixerGetLineInfoA@12
  00700	85 c0		 test	 eax, eax
; Line 267
  00702	0f 85 31 02 00
	00		 jne	 $L75342
; Line 270
  00708	8b 75 08	 mov	 esi, DWORD PTR _szPname$[ebp]
  0070b	8d 85 e0 fe ff
	ff		 lea	 eax, DWORD PTR _mxcaps$[ebp+8]
$L75335:
  00711	8a 10		 mov	 dl, BYTE PTR [eax]
  00713	8a ca		 mov	 cl, dl
  00715	3a 16		 cmp	 dl, BYTE PTR [esi]
  00717	75 1a		 jne	 SHORT $L75336
  00719	84 c9		 test	 cl, cl
  0071b	74 12		 je	 SHORT $L75337
  0071d	8a 50 01	 mov	 dl, BYTE PTR [eax+1]
  00720	8a ca		 mov	 cl, dl
  00722	3a 56 01	 cmp	 dl, BYTE PTR [esi+1]
  00725	75 0c		 jne	 SHORT $L75336
  00727	40		 inc	 eax
  00728	40		 inc	 eax
  00729	46		 inc	 esi
  0072a	46		 inc	 esi
  0072b	84 c9		 test	 cl, cl
  0072d	75 e2		 jne	 SHORT $L75335
$L75337:
  0072f	33 c0		 xor	 eax, eax
  00731	eb 05		 jmp	 SHORT $L75338
$L75336:
  00733	1b c0		 sbb	 eax, eax
  00735	83 d8 ff	 sbb	 eax, -1
$L75338:
  00738	85 c0		 test	 eax, eax
; Line 273
  0073a	0f 85 f9 01 00
	00		 jne	 $L75342
; Line 276
  00740	21 85 48 fe ff
	ff		 and	 DWORD PTR _mxc$75117[ebp+4], eax
  00746	6a 23		 push	 35			; 00000023H
  00748	59		 pop	 ecx
  00749	8d bd 4c fe ff
	ff		 lea	 edi, DWORD PTR _mxc$75117[ebp+8]
  0074f	c7 85 44 fe ff
	ff 94 00 00 00	 mov	 DWORD PTR _mxc$75117[ebp], 148 ; 00000094H
; Line 277
  00759	6a 18		 push	 24			; 00000018H
  0075b	f3 ab		 rep stosd
  0075d	8b 85 14 ff ff
	ff		 mov	 eax, DWORD PTR _mxl$75112[ebp+12]
  00763	5f		 pop	 edi
  00764	89 45 b4	 mov	 DWORD PTR _mxlc$75119[ebp+4], eax
  00767	8b 85 44 fe ff
	ff		 mov	 eax, DWORD PTR _mxc$75117[ebp]
  0076d	89 45 c0	 mov	 DWORD PTR _mxlc$75119[ebp+16], eax
  00770	8d 85 44 fe ff
	ff		 lea	 eax, DWORD PTR _mxc$75117[ebp]
  00776	89 45 c4	 mov	 DWORD PTR _mxlc$75119[ebp+20], eax
; Line 278
  00779	8d 45 b0	 lea	 eax, DWORD PTR _mxlc$75119[ebp]
  0077c	6a 02		 push	 2
  0077e	33 f6		 xor	 esi, esi
  00780	50		 push	 eax
  00781	46		 inc	 esi
  00782	ff 75 fc	 push	 DWORD PTR _hMixer$[ebp]
  00785	89 7d b0	 mov	 DWORD PTR _mxlc$75119[ebp], edi
  00788	c7 45 b8 01 00
	01 71		 mov	 DWORD PTR _mxlc$75119[ebp+8], 1895890945 ; 71010001H
  0078f	89 75 bc	 mov	 DWORD PTR _mxlc$75119[ebp+12], esi
  00792	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__mixerGetLineControlsA@12
  00798	85 c0		 test	 eax, eax
  0079a	74 1e		 je	 SHORT $L75124
; Line 281
  0079c	8d 45 b0	 lea	 eax, DWORD PTR _mxlc$75119[ebp]
  0079f	6a 02		 push	 2
  007a1	50		 push	 eax
  007a2	c7 45 b8 01 00
	01 70		 mov	 DWORD PTR _mxlc$75119[ebp+8], 1879113729 ; 70010001H
  007a9	ff 75 fc	 push	 DWORD PTR _hMixer$[ebp]
  007ac	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__mixerGetLineControlsA@12
  007b2	85 c0		 test	 eax, eax
; Line 284
  007b4	0f 85 7f 01 00
	00		 jne	 $L75342
$L75124:
; Line 287
  007ba	8b 8d 54 fe ff
	ff		 mov	 ecx, DWORD PTR _mxc$75117[ebp+16]
  007c0	85 c9		 test	 ecx, ecx
; Line 290
  007c2	0f 84 71 01 00
	00		 je	 $L75342
; Line 293
  007c8	8b 85 48 fe ff
	ff		 mov	 eax, DWORD PTR _mxc$75117[ebp+4]
  007ce	83 65 e0 00	 and	 DWORD PTR _mxcd$75126[ebp+12], 0
  007d2	89 7d d4	 mov	 DWORD PTR _mxcd$75126[ebp], edi
  007d5	89 45 d8	 mov	 DWORD PTR _mxcd$75126[ebp+4], eax
  007d8	33 c0		 xor	 eax, eax
  007da	8d 7d e4	 lea	 edi, DWORD PTR _mxcd$75126[ebp+16]
  007dd	89 75 dc	 mov	 DWORD PTR _mxcd$75126[ebp+8], esi
  007e0	ab		 stosd
  007e1	ab		 stosd
; Line 294
  007e2	8d 04 c9	 lea	 eax, DWORD PTR [ecx+ecx*8]
  007e5	c1 e0 03	 shl	 eax, 3
  007e8	50		 push	 eax
  007e9	e8 00 00 00 00	 call	 _malloc
; Line 298
  007ee	8b 3d 00 00 00
	00		 mov	 edi, DWORD PTR __imp__mixerGetControlDetailsA@12
  007f4	59		 pop	 ecx
  007f5	8b 8d 54 fe ff
	ff		 mov	 ecx, DWORD PTR _mxc$75117[ebp+16]
  007fb	89 45 f0	 mov	 DWORD PTR _mxcdlts$75128[ebp], eax
  007fe	89 45 e8	 mov	 DWORD PTR _mxcd$75126[ebp+20], eax
  00801	8d 45 d4	 lea	 eax, DWORD PTR _mxcd$75126[ebp]
  00804	56		 push	 esi
  00805	50		 push	 eax
  00806	ff 75 fc	 push	 DWORD PTR _hMixer$[ebp]
  00809	c7 45 e4 48 00
	00 00		 mov	 DWORD PTR _mxcd$75126[ebp+16], 72 ; 00000048H
  00810	89 4d e0	 mov	 DWORD PTR _mxcd$75126[ebp+12], ecx
  00813	ff d7		 call	 edi
  00815	85 c0		 test	 eax, eax
  00817	74 05		 je	 SHORT $L75133
; Line 300
  00819	ff 75 f0	 push	 DWORD PTR _mxcdlts$75128[ebp]
; Line 302
  0081c	eb 38		 jmp	 SHORT $L75344
$L75133:
; Line 305
  0081e	8b 85 54 fe ff
	ff		 mov	 eax, DWORD PTR _mxc$75117[ebp+16]
  00824	c1 e0 02	 shl	 eax, 2
  00827	50		 push	 eax
  00828	e8 00 00 00 00	 call	 _malloc
  0082d	8b f0		 mov	 esi, eax
; Line 307
  0082f	8b 85 54 fe ff
	ff		 mov	 eax, DWORD PTR _mxc$75117[ebp+16]
  00835	59		 pop	 ecx
  00836	89 45 e0	 mov	 DWORD PTR _mxcd$75126[ebp+12], eax
; Line 309
  00839	8d 45 d4	 lea	 eax, DWORD PTR _mxcd$75126[ebp]
  0083c	6a 00		 push	 0
  0083e	50		 push	 eax
  0083f	89 75 d0	 mov	 DWORD PTR _mxcdbls$75134[ebp], esi
  00842	ff 75 fc	 push	 DWORD PTR _hMixer$[ebp]
  00845	c7 45 e4 04 00
	00 00		 mov	 DWORD PTR _mxcd$75126[ebp+16], 4
  0084c	89 75 e8	 mov	 DWORD PTR _mxcd$75126[ebp+20], esi
  0084f	ff d7		 call	 edi
  00851	85 c0		 test	 eax, eax
  00853	74 0b		 je	 SHORT $L75139
; Line 311
  00855	56		 push	 esi
$L75344:
  00856	e8 00 00 00 00	 call	 _free
; Line 313
  0085b	e9 d8 00 00 00	 jmp	 $L75343
$L75139:
; Line 317
  00860	8b 85 0c ff ff
	ff		 mov	 eax, DWORD PTR _mxl$75112[ebp+4]
  00866	8b 8d 28 ff ff
	ff		 mov	 ecx, DWORD PTR _mxl$75112[ebp+32]
  0086c	89 45 c8	 mov	 DWORD PTR _dwDestination$75141[ebp], eax
; Line 319
  0086f	33 c0		 xor	 eax, eax
  00871	85 c9		 test	 ecx, ecx
  00873	89 4d cc	 mov	 DWORD PTR _dwConnections$75140[ebp], ecx
  00876	89 45 f4	 mov	 DWORD PTR _j$75142[ebp], eax
  00879	0f 86 aa 00 00
	00		 jbe	 $L75145
$L75143:
; Line 321
  0087f	8b 4d c8	 mov	 ecx, DWORD PTR _dwDestination$75141[ebp]
; Line 322
  00882	89 85 10 ff ff
	ff		 mov	 DWORD PTR _mxl$75112[ebp+8], eax
; Line 323
  00888	8d 85 08 ff ff
	ff		 lea	 eax, DWORD PTR _mxl$75112[ebp]
  0088e	6a 01		 push	 1
  00890	50		 push	 eax
  00891	89 8d 0c ff ff
	ff		 mov	 DWORD PTR _mxl$75112[ebp+4], ecx
  00897	ff 75 fc	 push	 DWORD PTR _hMixer$[ebp]
  0089a	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__mixerGetLineInfoA@12
  008a0	85 c0		 test	 eax, eax
  008a2	75 75		 jne	 SHORT $L75144
; Line 324
  008a4	33 d2		 xor	 edx, edx
  008a6	39 95 54 fe ff
	ff		 cmp	 DWORD PTR _mxc$75117[ebp+16], edx
  008ac	76 6b		 jbe	 SHORT $L75144
  008ae	8b 45 f0	 mov	 eax, DWORD PTR _mxcdlts$75128[ebp]
$L75149:
; Line 326
  008b1	8b 08		 mov	 ecx, DWORD PTR [eax]
  008b3	3b 8d 14 ff ff
	ff		 cmp	 ecx, DWORD PTR _mxl$75112[ebp+12]
  008b9	74 0e		 je	 SHORT $L75331
  008bb	42		 inc	 edx
  008bc	83 c0 48	 add	 eax, 72			; 00000048H
  008bf	3b 95 54 fe ff
	ff		 cmp	 edx, DWORD PTR _mxc$75117[ebp+16]
  008c5	72 ea		 jb	 SHORT $L75149
  008c7	eb 50		 jmp	 SHORT $L75144
$L75331:
; Line 328
  008c9	8d bd 40 ff ff
	ff		 lea	 edi, DWORD PTR _mxl$75112[ebp+56]
  008cf	83 c9 ff	 or	 ecx, -1
  008d2	33 c0		 xor	 eax, eax
  008d4	f2 ae		 repne scasb
  008d6	f7 d1		 not	 ecx
  008d8	2b f9		 sub	 edi, ecx
  008da	8b f7		 mov	 esi, edi
  008dc	8b 7d 0c	 mov	 edi, DWORD PTR _str$[ebp]
  008df	8b d9		 mov	 ebx, ecx
  008e1	83 c9 ff	 or	 ecx, -1
  008e4	f2 ae		 repne scasb
  008e6	8b cb		 mov	 ecx, ebx
  008e8	4f		 dec	 edi
  008e9	c1 e9 02	 shr	 ecx, 2
  008ec	f3 a5		 rep movsd
  008ee	8b cb		 mov	 ecx, ebx
; Line 332
  008f0	8b 1d 00 00 00
	00		 mov	 ebx, DWORD PTR __imp__mixerClose@4
  008f6	83 e1 03	 and	 ecx, 3
  008f9	f3 a4		 rep movsb
  008fb	8b 7d 0c	 mov	 edi, DWORD PTR _str$[ebp]
  008fe	83 c9 ff	 or	 ecx, -1
  00901	f2 ae		 repne scasb
  00903	4f		 dec	 edi
  00904	be 00 00 00 00	 mov	 esi, OFFSET FLAT:$SG75153
  00909	66 a5		 movsw
  0090b	8b 75 d0	 mov	 esi, DWORD PTR _mxcdbls$75134[ebp]
  0090e	39 04 96	 cmp	 DWORD PTR [esi+edx*4], eax
  00911	74 06		 je	 SHORT $L75144
  00913	8b 45 f4	 mov	 eax, DWORD PTR _j$75142[ebp]
  00916	89 45 ec	 mov	 DWORD PTR _nRet$[ebp], eax
$L75144:
  00919	8b 45 f4	 mov	 eax, DWORD PTR _j$75142[ebp]
  0091c	40		 inc	 eax
  0091d	3b 45 cc	 cmp	 eax, DWORD PTR _dwConnections$75140[ebp]
  00920	89 45 f4	 mov	 DWORD PTR _j$75142[ebp], eax
  00923	0f 82 56 ff ff
	ff		 jb	 $L75143
$L75145:
; Line 339
  00929	56		 push	 esi
  0092a	e8 00 00 00 00	 call	 _free
; Line 340
  0092f	ff 75 f0	 push	 DWORD PTR _mxcdlts$75128[ebp]
  00932	e8 00 00 00 00	 call	 _free
  00937	59		 pop	 ecx
$L75343:
  00938	59		 pop	 ecx
$L75342:
; Line 341
  00939	ff 75 fc	 push	 DWORD PTR _hMixer$[ebp]
  0093c	ff d3		 call	 ebx
$L75107:
  0093e	ff 45 f8	 inc	 DWORD PTR _i$[ebp]
  00941	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__mixerGetNumDevs@0
  00947	39 45 f8	 cmp	 DWORD PTR _i$[ebp], eax
  0094a	0f 82 27 fd ff
	ff		 jb	 $L75340
  00950	5b		 pop	 ebx
$L75108:
; Line 343
  00951	8b 45 ec	 mov	 eax, DWORD PTR _nRet$[ebp]
  00954	5f		 pop	 edi
  00955	eb 03		 jmp	 SHORT $L75099
$L75101:
; Line 250
  00957	83 c8 ff	 or	 eax, -1
$L75099:
  0095a	5e		 pop	 esi
; Line 344
  0095b	c9		 leave
  0095c	c2 08 00	 ret	 8
?EnumerateInputLines@CAudio@@QAEHPAD0@Z ENDP		; CAudio::EnumerateInputLines
; Function compile flags: /Ogsawpy
_pwfe$ = 8
?SetDeviceType@CAudio@@QAEXPAUtWAVEFORMATEX@@@Z PROC NEAR ; CAudio::SetDeviceType
; _this$ = ecx
; Line 349
  0095f	8b 4c 24 04	 mov	 ecx, DWORD PTR _pwfe$[esp-4]
  00963	57		 push	 edi
  00964	33 c0		 xor	 eax, eax
  00966	8b f9		 mov	 edi, ecx
  00968	ab		 stosd
  00969	ab		 stosd
  0096a	ab		 stosd
  0096b	ab		 stosd
  0096c	66 ab		 stosw
; Line 356
  0096e	66 83 61 10 00	 and	 WORD PTR [ecx+16], 0
  00973	66 c7 01 01 00	 mov	 WORD PTR [ecx], 1
  00978	c7 41 04 40 1f
	00 00		 mov	 DWORD PTR [ecx+4], 8000	; 00001f40H
  0097f	66 c7 41 0e 10
	00		 mov	 WORD PTR [ecx+14], 16	; 00000010H
  00985	66 c7 41 02 01
	00		 mov	 WORD PTR [ecx+2], 1
  0098b	66 c7 41 0c 02
	00		 mov	 WORD PTR [ecx+12], 2
  00991	c7 41 08 80 3e
	00 00		 mov	 DWORD PTR [ecx+8], 16000 ; 00003e80H
  00998	5f		 pop	 edi
; Line 357
  00999	c2 04 00	 ret	 4
?SetDeviceType@CAudio@@QAEXPAUtWAVEFORMATEX@@@Z ENDP	; CAudio::SetDeviceType
_TEXT	ENDS
EXTRN	__imp__waveOutGetNumDevs@0:NEAR
EXTRN	__imp__waveOutOpen@24:NEAR
EXTRN	__imp__waveOutPrepareHeader@12:NEAR
; Function compile flags: /Ogsawpy
_TEXT	SEGMENT
_waveform$ = -20
?InitializeWaveOut@CAudio@@AAE_NXZ PROC NEAR		; CAudio::InitializeWaveOut
; _this$ = ecx
; Line 360
  0099c	83 ec 14	 sub	 esp, 20			; 00000014H
  0099f	53		 push	 ebx
  009a0	55		 push	 ebp
  009a1	56		 push	 esi
  009a2	57		 push	 edi
  009a3	8b f1		 mov	 esi, ecx
; Line 361
  009a5	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__waveOutGetNumDevs@0
  009ab	85 c0		 test	 eax, eax
; Line 362
  009ad	74 4a		 je	 SHORT $L75351
; Line 364
  009af	6a 02		 push	 2
  009b1	8d 56 10	 lea	 edx, DWORD PTR [esi+16]
  009b4	5b		 pop	 ebx
$L75165:
; Line 365
  009b5	8b 4e 04	 mov	 ecx, DWORD PTR [esi+4]
  009b8	8b 3a		 mov	 edi, DWORD PTR [edx]
  009ba	8b e9		 mov	 ebp, ecx
  009bc	33 c0		 xor	 eax, eax
  009be	c1 e9 02	 shr	 ecx, 2
  009c1	f3 ab		 rep stosd
  009c3	8b cd		 mov	 ecx, ebp
  009c5	83 c2 04	 add	 edx, 4
  009c8	83 e1 03	 and	 ecx, 3
  009cb	4b		 dec	 ebx
  009cc	f3 aa		 rep stosb
  009ce	75 e5		 jne	 SHORT $L75165
; Line 368
  009d0	8d 44 24 10	 lea	 eax, DWORD PTR _waveform$[esp+36]
  009d4	8b ce		 mov	 ecx, esi
  009d6	50		 push	 eax
  009d7	e8 00 00 00 00	 call	 ?SetDeviceType@CAudio@@QAEXPAUtWAVEFORMATEX@@@Z ; CAudio::SetDeviceType
; Line 371
  009dc	33 c0		 xor	 eax, eax
  009de	8d 5e 44	 lea	 ebx, DWORD PTR [esi+68]
  009e1	50		 push	 eax
  009e2	50		 push	 eax
  009e3	50		 push	 eax
  009e4	8d 44 24 1c	 lea	 eax, DWORD PTR _waveform$[esp+48]
  009e8	50		 push	 eax
  009e9	68 ff ff 00 00	 push	 65535			; 0000ffffH
  009ee	53		 push	 ebx
  009ef	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__waveOutOpen@24
; Line 372
  009f5	85 c0		 test	 eax, eax
  009f7	74 04		 je	 SHORT $L75174
$L75351:
; Line 373
  009f9	32 c0		 xor	 al, al
  009fb	eb 32		 jmp	 SHORT $L75162
$L75174:
; Line 375
  009fd	6a 02		 push	 2
  009ff	8d 7e 3c	 lea	 edi, DWORD PTR [esi+60]
  00a02	5d		 pop	 ebp
$L75175:
; Line 377
  00a03	8b 07		 mov	 eax, DWORD PTR [edi]
  00a05	8b 4f d4	 mov	 ecx, DWORD PTR [edi-44]
; Line 381
  00a08	6a 20		 push	 32			; 00000020H
  00a0a	50		 push	 eax
  00a0b	ff 33		 push	 DWORD PTR [ebx]
  00a0d	89 08		 mov	 DWORD PTR [eax], ecx
  00a0f	8b 4e 04	 mov	 ecx, DWORD PTR [esi+4]
  00a12	89 48 04	 mov	 DWORD PTR [eax+4], ecx
  00a15	83 60 10 00	 and	 DWORD PTR [eax+16], 0
  00a19	83 60 14 00	 and	 DWORD PTR [eax+20], 0
  00a1d	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__waveOutPrepareHeader@12
  00a23	83 c7 04	 add	 edi, 4
  00a26	4d		 dec	 ebp
  00a27	75 da		 jne	 SHORT $L75175
; Line 384
  00a29	c6 46 49 01	 mov	 BYTE PTR [esi+73], 1
; Line 385
  00a2d	b0 01		 mov	 al, 1
$L75162:
  00a2f	5f		 pop	 edi
  00a30	5e		 pop	 esi
  00a31	5d		 pop	 ebp
  00a32	5b		 pop	 ebx
; Line 386
  00a33	83 c4 14	 add	 esp, 20			; 00000014H
  00a36	c3		 ret	 0
?InitializeWaveOut@CAudio@@AAE_NXZ ENDP			; CAudio::InitializeWaveOut
_TEXT	ENDS
EXTRN	__imp__GetMessageA@16:NEAR
EXTRN	__imp__TranslateMessage@4:NEAR
EXTRN	__imp__DispatchMessageA@4:NEAR
; Function compile flags: /Ogsawpy
_TEXT	SEGMENT
_Msg$ = -28
_lparam$ = 8
?waveInCallBack@CAudio@@CGKPAX@Z PROC NEAR		; CAudio::waveInCallBack
; Line 390
  00a37	55		 push	 ebp
  00a38	8b ec		 mov	 ebp, esp
  00a3a	83 ec 1c	 sub	 esp, 28			; 0000001cH
  00a3d	53		 push	 ebx
  00a3e	56		 push	 esi
; Line 394
  00a3f	33 db		 xor	 ebx, ebx
  00a41	57		 push	 edi
  00a42	8b 3d 00 00 00
	00		 mov	 edi, DWORD PTR __imp__GetMessageA@16
  00a48	53		 push	 ebx
  00a49	53		 push	 ebx
  00a4a	8d 45 e4	 lea	 eax, DWORD PTR _Msg$[ebp]
  00a4d	53		 push	 ebx
  00a4e	50		 push	 eax
  00a4f	ff d7		 call	 edi
  00a51	85 c0		 test	 eax, eax
  00a53	74 66		 je	 SHORT $L75355
  00a55	8b 75 08	 mov	 esi, DWORD PTR _lparam$[ebp]
$L75187:
; Line 396
  00a58	81 7d e8 c0 03
	00 00		 cmp	 DWORD PTR _Msg$[ebp+4], 960 ; 000003c0H
  00a5f	75 30		 jne	 SHORT $L75192
; Line 399
  00a61	ff 76 24	 push	 DWORD PTR [esi+36]
  00a64	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__SetEvent@4
; Line 401
  00a6a	6a ff		 push	 -1
  00a6c	ff 76 28	 push	 DWORD PTR [esi+40]
  00a6f	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__WaitForSingleObject@8
; Line 403
  00a75	33 c0		 xor	 eax, eax
; Line 405
  00a77	6a 20		 push	 32			; 00000020H
  00a79	40		 inc	 eax
  00a7a	2b 46 1c	 sub	 eax, DWORD PTR [esi+28]
  00a7d	89 46 1c	 mov	 DWORD PTR [esi+28], eax
  00a80	ff 74 86 34	 push	 DWORD PTR [esi+eax*4+52]
  00a84	ff 76 18	 push	 DWORD PTR [esi+24]
  00a87	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__waveInAddBuffer@12
; Line 406
  00a8d	85 c0		 test	 eax, eax
  00a8f	75 33		 jne	 SHORT $L75354
$L75192:
; Line 412
  00a91	81 7d e8 bf 03
	00 00		 cmp	 DWORD PTR _Msg$[ebp+4], 959 ; 000003bfH
  00a98	74 21		 je	 SHORT $L75355
; Line 415
  00a9a	8d 45 e4	 lea	 eax, DWORD PTR _Msg$[ebp]
  00a9d	50		 push	 eax
  00a9e	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__TranslateMessage@4
; Line 416
  00aa4	8d 45 e4	 lea	 eax, DWORD PTR _Msg$[ebp]
  00aa7	50		 push	 eax
  00aa8	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__DispatchMessageA@4
  00aae	53		 push	 ebx
  00aaf	53		 push	 ebx
  00ab0	8d 45 e4	 lea	 eax, DWORD PTR _Msg$[ebp]
  00ab3	53		 push	 ebx
  00ab4	50		 push	 eax
  00ab5	ff d7		 call	 edi
  00ab7	85 c0		 test	 eax, eax
  00ab9	75 9d		 jne	 SHORT $L75187
$L75355:
; Line 419
  00abb	33 c0		 xor	 eax, eax
$L75182:
  00abd	5f		 pop	 edi
  00abe	5e		 pop	 esi
  00abf	5b		 pop	 ebx
; Line 420
  00ac0	c9		 leave
  00ac1	c2 04 00	 ret	 4
$L75354:
; Line 408
  00ac4	83 c8 ff	 or	 eax, -1
  00ac7	eb f4		 jmp	 SHORT $L75182
?waveInCallBack@CAudio@@CGKPAX@Z ENDP			; CAudio::waveInCallBack
_TEXT	ENDS
PUBLIC	?Compress@CAudio@@QAEHPAD0H@Z			; CAudio::Compress
EXTRN	_va_g729a_encoder:NEAR
; Function compile flags: /Ogsawpy
_TEXT	SEGMENT
_pBuf$ = 8
_pDstBuf$ = 12
_nLen$ = 16
?Compress@CAudio@@QAEHPAD0H@Z PROC NEAR			; CAudio::Compress
; _this$ = ecx
; Line 430
  00ac9	8b 44 24 0c	 mov	 eax, DWORD PTR _nLen$[esp-4]
  00acd	56		 push	 esi
  00ace	d1 e8		 shr	 eax, 1
  00ad0	33 f6		 xor	 esi, esi
  00ad2	57		 push	 edi
  00ad3	8b 7c 24 0c	 mov	 edi, DWORD PTR _pBuf$[esp+4]
; Line 431
  00ad7	85 c0		 test	 eax, eax
  00ad9	7e 28		 jle	 SHORT $L75208
  00adb	53		 push	 ebx
  00adc	6a 50		 push	 80			; 00000050H
  00ade	48		 dec	 eax
  00adf	33 d2		 xor	 edx, edx
  00ae1	59		 pop	 ecx
  00ae2	f7 f1		 div	 ecx
  00ae4	8b d8		 mov	 ebx, eax
  00ae6	43		 inc	 ebx
$L75207:
  00ae7	8b 44 24 14	 mov	 eax, DWORD PTR _pDstBuf$[esp+8]
  00aeb	03 c6		 add	 eax, esi
; Line 433
  00aed	50		 push	 eax
  00aee	57		 push	 edi
  00aef	e8 00 00 00 00	 call	 _va_g729a_encoder
  00af4	59		 pop	 ecx
; Line 435
  00af5	81 c7 a0 00 00
	00		 add	 edi, 160		; 000000a0H
; Line 437
  00afb	83 c6 0a	 add	 esi, 10			; 0000000aH
  00afe	4b		 dec	 ebx
  00aff	59		 pop	 ecx
  00b00	75 e5		 jne	 SHORT $L75207
  00b02	5b		 pop	 ebx
$L75208:
; Line 440
  00b03	8b c6		 mov	 eax, esi
  00b05	5f		 pop	 edi
  00b06	5e		 pop	 esi
; Line 441
  00b07	c2 0c 00	 ret	 12			; 0000000cH
?Compress@CAudio@@QAEHPAD0H@Z ENDP			; CAudio::Compress
_TEXT	ENDS
PUBLIC	?DeCompress@CAudio@@QAEHPAD0H@Z			; CAudio::DeCompress
EXTRN	_va_g729a_decoder:NEAR
; Function compile flags: /Ogsawpy
_TEXT	SEGMENT
_pBuf$ = 8
_pDstBuf$ = 12
_nLen$ = 16
_pBDstBuf$ = 8
?DeCompress@CAudio@@QAEHPAD0H@Z PROC NEAR		; CAudio::DeCompress
; _this$ = ecx
; Line 444
  00b0a	55		 push	 ebp
  00b0b	8b ec		 mov	 ebp, esp
; Line 447
  00b0d	8b 45 0c	 mov	 eax, DWORD PTR _pDstBuf$[ebp]
  00b10	53		 push	 ebx
  00b11	8b 5d 08	 mov	 ebx, DWORD PTR _pBuf$[ebp]
  00b14	89 45 08	 mov	 DWORD PTR _pBDstBuf$[ebp], eax
; Line 450
  00b17	8b 45 10	 mov	 eax, DWORD PTR _nLen$[ebp]
  00b1a	57		 push	 edi
  00b1b	33 ff		 xor	 edi, edi
  00b1d	85 c0		 test	 eax, eax
  00b1f	7e 2e		 jle	 SHORT $L75223
  00b21	56		 push	 esi
  00b22	6a 0a		 push	 10			; 0000000aH
  00b24	48		 dec	 eax
  00b25	33 d2		 xor	 edx, edx
  00b27	59		 pop	 ecx
  00b28	f7 f1		 div	 ecx
  00b2a	8b f0		 mov	 esi, eax
  00b2c	46		 inc	 esi
  00b2d	8d 3c b6	 lea	 edi, DWORD PTR [esi+esi*4]
  00b30	c1 e7 04	 shl	 edi, 4
$L75222:
; Line 452
  00b33	6a 00		 push	 0
  00b35	ff 75 08	 push	 DWORD PTR _pBDstBuf$[ebp]
  00b38	53		 push	 ebx
  00b39	e8 00 00 00 00	 call	 _va_g729a_decoder
; Line 457
  00b3e	81 45 08 a0 00
	00 00		 add	 DWORD PTR _pBDstBuf$[ebp], 160 ; 000000a0H
  00b45	83 c4 0c	 add	 esp, 12			; 0000000cH
  00b48	83 c3 0a	 add	 ebx, 10			; 0000000aH
  00b4b	4e		 dec	 esi
  00b4c	75 e5		 jne	 SHORT $L75222
  00b4e	5e		 pop	 esi
$L75223:
; Line 459
  00b4f	8d 04 3f	 lea	 eax, DWORD PTR [edi+edi]
  00b52	5f		 pop	 edi
  00b53	5b		 pop	 ebx
; Line 460
  00b54	5d		 pop	 ebp
  00b55	c2 0c 00	 ret	 12			; 0000000cH
?DeCompress@CAudio@@QAEHPAD0H@Z ENDP			; CAudio::DeCompress
_TEXT	ENDS
END