/[openvortex]/alsa/pci/au88x0/au88x0_synth.c
ViewVC logotype

Diff of /alsa/pci/au88x0/au88x0_synth.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by mjander, Fri Jul 4 03:33:02 2003 UTC revision 1.3 by mjander, Thu Aug 7 01:58:51 2003 UTC
# Line 1  Line 1 
1  /*  #define __NO_VERSION__
2   * Someday its supposed to make use of the WT DMA engine  #include "../../alsa-kernel/pci/au88x0/au88x0_synth.c"
  * for a Wavetable synthesizer.  
  */  
 #if 0  
 #include "au88x0.h"  
3    
 int  vortex_GetReg(vortex_t *vortex, char a, int *b) {  
         int eax, esi;  
           
         if (a != 4) {  
                 if (a == 7)  
                         return 0;  
                 return hwread(vortex->mmio, (*b << 0xf) + 0x10);  
         }  
         esi = b[1];  
         eax = ((((a & 0x1f) + b[1]) / 32) & 0xff) << 0xb;  
         if (esi < 0)  
                 esi = ((esi-1)|0x0FFFFFFE0)+1;  
         esi &= 0xff;  
         hwread(vortex->mmio, ((eax + esi) << 4) + 0x20c);  
                   
         return 8;  
 }  
   
 /*  
  WT hardware abstraction layer generic register interface.  
  a: type of register or register set to be accessed.  
  b: Register offset  
  c: Register value (or values) to be written.  
 */  
 int  vortex_SetReg(vortex_t *vortex, unsigned char a, int b, unsigned long *c) {  
         int  ecx, edx, esp4, eax;  
           
         ecx = b;  
         if (ecx >= 0x40)  
                 return 0;  
           
         eax = ecx;  
         /* cdq: 64 bit sign extender */  
         if (eax<0)  
                 edx = 0xffffffff & 0x1f;  
         else  
                 edx = 0;  
         eax += edx;  
         edx = ecx & 0x8000001f;  
         eax = (eax / 32) | ((char)b);  
         if (eax < 0)  
                 edx = ((edx-1)|0x0FFFFFFE0)+1;  
           
         esp4 = (char)edx;  
           
         if ((char)eax >= 2)  
                 return 0;  
           
         eax = a & 0xff;  
           
         if (eax > 0xc)  
                 return 0;  
           
         switch (eax) {  
                 case 0 :  
                         eax = ((b & 0xff) << 0xb) + (esp4 & 0xff);  
                         hwwrite(vortex->mmio, 0x180 + (eax << 2), *c);  
                         return 0xc;  
                 break;  
                 case 1 :  
                         edx = ((b & 0xff) << 0xd) + (esp4 & 0xff);  
                         hwwrite(vortex->mmio, 0x20 + (edx << 4), *c);  
                         return 0xc;                      
                 break;  
                 case 2 :  
                         eax = ((b & 0xff) << 0xb) + (esp4 & 0xff);  
                         hwwrite(vortex->mmio, 0x204 + (eax << 2), *c);  
                         return 0xc;  
                 break;  
                 case 3 :  
                         eax = ((b & 0xff) << 0xb) + (esp4 & 0xff);  
                         hwwrite(vortex->mmio, 0x208 + (eax << 2), *c);  
                         return 0xc;  
                 break;  
                 case 4 :  
                         eax = ((b & 0xff) << 0xb) + (esp4 & 0xff);  
                         hwwrite(vortex->mmio, 0x20c + (eax << 2), *c);  
                         return 0xc;  
                 break;  
                 case 6 :  
                         edx = ((b & 0xff) << 0xd) + (esp4 & 0xff);  
                         hwwrite(vortex->mmio, 0x100 + (edx << 4), *c);  
                         return 0xc;                      
                 break;  
                 case 0xb :  
                         {  
                                 int ebx, esi, edi;  
                                   
                                 edx = ((b & 0xff) << 0xb) + (esp4 & 0xff);  
                                 ebx = b + &esp4;  
                                 esi = ebx << 4;  
                                 edi = c[3];  
                                   
                                 hwwrite(vortex->mmio, 0x40 + esi, edi);  
                                 hwwrite(vortex->mmio, 0x408 + esi, edi);  
                                 hwwrite(vortex->mmio, 0x404 + esi, edi);  
                                 hwwrite(vortex->mmio, 0x40 + (ebx << 4), edi);  
                                 return 0xc;                      
                         }  
                 break;  
                 case 5 :  
                         ecx = (ecx << 0xf) + 0x4;  
                 break;  
                 case 8 :  
                         ecx = (ecx << 0xf) + 0x14;  
                 break;  
                 case 9 :  
                         ecx = (ecx << 0xf) + 0xc;  
                 break;  
                 case 0xa :  
                         ecx = (ecx << 0xf) + 0x0;  
                 break;  
                 case 0xc :  
                         ecx = (ecx << 0xf) + 0x8;  
                 break;            
         }  
         eax = ecx;  
         hwwrite(vortex->mmio, eax, *c);  
 }  
   
 void vortex_InitializeWTRegs(vortex_t * vortex) {  
           
           
           
 }  
   
 #endif  
 /*  
 CSynth constructor  
   
 ; public: class Asp4SynthTopology * __thiscall Asp4Topology::AllocSynth(class CResource *)  
   
 ?AllocSynth@Asp4Topology@@QAEPAVAsp4SynthTopology@@PAVCResource@@@Z proc near  
                                         ; CODE XREF: CAsp4Core::SetWavetableTopology(int)+3Fp  
                                         ; .text:0002565Dp  
   
 var_14          = dword ptr -14h  
 var_10          = dword ptr -10h  
 var_C           = dword ptr -0Ch  
 var_8           = dword ptr -8  
 var_4           = dword ptr -4  
 arg_0           = dword ptr  4  
   
                 sub     esp, 14h  
                 push    ebx  
                 push    ebp  
                 push    esi  
                 push    edi  
                 mov     edi, ecx  
                 push    70h  
                 call    ??2@YAPAXI@Z    ; operator new(uint)  
   
                 add     esp, 4  
                 test    eax, eax  
                 jz      short loc_2F3BA  
   
                 mov     ebp, [esp+24h+arg_0]  
                 push    edi  
                 push    ebp  
                 mov     ecx, eax  
                 call    ??0Asp4SynthTopology@@QAE@PAVCResource@@PAVAsp4Topology@@@Z ; Asp4SynthTopology::Asp4SynthTopology(CResource *,Asp4Topology *)  
   
                 mov     esi, eax  
                 test    esi, esi  
                 jnz     short loc_2F3C6  
   
   
 loc_2F3BA:                              ; CODE XREF: Asp4Topology::AllocSynth(CResource *)+15j  
                 pop     edi  
                 pop     esi  
                 pop     ebp  
                 xor     eax, eax  
                 pop     ebx  
                 add     esp, 14h  
                 retn    4  
   
 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  
   
 loc_2F3C6:                              ; CODE XREF: Asp4Topology::AllocSynth(CResource *)+28j  
                 mov     eax, [ebp+3A4h]  
                 mov     ecx, [ebp+3ACh]  
                 mov     ebx, [ebp+3A8h]  
                 lea     edx, [esp+24h+var_14]  
                 push    edx  
                 push    offset aA_0     ; "A"  
                 push    offset asc_814A0 ; "s"  
                 push    80000002h  
                 mov     [esp+34h+var_4], eax  
                 mov     [esp+34h+arg_0], ecx  
                 call    _AspReadRegDwordValue@16  
   
                 test    eax, eax  
                 jz      short loc_2F403  
   
                 mov     eax, [esp+24h+var_14]  
                 jmp     short loc_2F41C  
   
 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  
   
 loc_2F403:                              ; CODE XREF: Asp4Topology::AllocSynth(CResource *)+6Bj  
                 cmp     ebx, 0C8h  
                 jb      short loc_2F41A  
   
                 mov     eax, [esp+24h+arg_0]  
                 test    eax, eax  
                 jz      short loc_2F41A  
   
                 mov     eax, 1  
                 jmp     short loc_2F41C  
   
 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  
   
 loc_2F41A:                              ; CODE XREF: Asp4Topology::AllocSynth(CResource *)+79j  
                                         ; Asp4Topology::AllocSynth(CResource *)+81j  
                 xor     eax, eax  
   
 loc_2F41C:                              ; CODE XREF: Asp4Topology::AllocSynth(CResource *)+71j  
                                         ; Asp4Topology::AllocSynth(CResource *)+88j  
                 lea     ecx, [esp+24h+var_14]  
                 mov     [edi+88h], eax  
                 push    ecx  
                 push    offset asc_81514 ; "S"  
                 push    offset asc_81528 ; "s"  
                 push    80000002h  
                 call    _AspReadRegDwordValue@16  
   
                 test    eax, eax  
                 jz      short loc_2F44B  
   
                 mov     edx, [esp+24h+var_14]  
                 mov     [edi+8Ch], edx  
                 jmp     short loc_2F46A  
   
 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  
   
 loc_2F44B:                              ; CODE XREF: Asp4Topology::AllocSynth(CResource *)+ADj  
                 cmp     ebx, 0C8h  
                 jb      short loc_2F462  
   
                 mov     eax, [esp+24h+arg_0]  
                 test    eax, eax  
                 jz      short loc_2F462  
   
                 mov     eax, 1  
                 jmp     short loc_2F464  
   
 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  
   
 loc_2F462:                              ; CODE XREF: Asp4Topology::AllocSynth(CResource *)+C1j  
                                         ; Asp4Topology::AllocSynth(CResource *)+C9j  
                 xor     eax, eax  
   
 loc_2F464:                              ; CODE XREF: Asp4Topology::AllocSynth(CResource *)+D0j  
                 mov     [edi+8Ch], eax  
   
 loc_2F46A:                              ; CODE XREF: Asp4Topology::AllocSynth(CResource *)+B9j  
                 lea     eax, [esp+24h+var_14]  
                 push    eax  
                 push    offset asc_8159C ; "H"  
                 push    offset asc_815B8 ; "s"  
                 push    80000002h  
                 call    _AspReadRegDwordValue@16  
   
                 test    eax, eax  
                 jz      short loc_2F493  
   
                 mov     ecx, [esp+24h+var_14]  
                 mov     [edi+90h], ecx  
                 jmp     short loc_2F49D  
   
 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  
   
 loc_2F493:                              ; CODE XREF: Asp4Topology::AllocSynth(CResource *)+F5j  
                 mov     dword ptr [edi+90h], 1  
   
 loc_2F49D:                              ; CODE XREF: Asp4Topology::AllocSynth(CResource *)+101j  
                 lea     edx, [esp+24h+var_14]  
                 push    edx  
                 push    offset aG_15    ; "G"  
                 push    offset asc_81640 ; "s"  
                 push    80000002h  
                 call    _AspReadRegDwordValue@16  
   
                 test    eax, eax  
                 jz      short loc_2F4C8  
   
                 mov     eax, [esp+24h+var_14]  
                 lea     ebx, [edi+94h]  
                 mov     [ebx], eax  
                 jmp     short loc_2F4F9  
   
 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  
   
 loc_2F4C8:                              ; CODE XREF: Asp4Topology::AllocSynth(CResource *)+128j  
                 cmp     [esp+24h+var_4], 6  
                 jnb     short loc_2F4ED  
   
                 cmp     ebx, 0C8h  
                 jb      short loc_2F4ED  
   
                 mov     eax, [esp+24h+arg_0]  
                 test    eax, eax  
                 jz      short loc_2F4ED  
   
                 lea     ebx, [edi+94h]  
                 mov     dword ptr [ebx], 1  
                 jmp     short loc_2F4F9  
   
 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  
   
 loc_2F4ED:                              ; CODE XREF: Asp4Topology::AllocSynth(CResource *)+13Dj  
                                         ; Asp4Topology::AllocSynth(CResource *)+145j ...  
                 lea     ebx, [edi+94h]  
                 mov     dword ptr [ebx], 0  
   
 loc_2F4F9:                              ; CODE XREF: Asp4Topology::AllocSynth(CResource *)+136j  
                                         ; Asp4Topology::AllocSynth(CResource *)+15Bj  
                 xor     eax, eax  
                 mov     dword ptr [edi+9Ch], 3E8h  
                 mov     [esp+24h+var_10], eax  
                 mov     [esp+24h+var_C], eax  
                 cmp     dword ptr [edi+64h], 0FFFFFFFFh  
                 jnz     short loc_2F564  
   
                 lea     ecx, [esp+24h+var_10]  
                 push    0FFFFFFFFh  
                 push    ecx  
                 push    81h  
                 mov     ecx, ebp  
                 call    ?SearchMixerOutputChannel@CResource@@QAEJW4_eReservedFor@@PAKK@Z ; CResource::SearchMixerOutputChannel(_eReservedFor,ulong *,ulong)  
   
                 test    eax, eax  
                 jnz     short loc_2F564  
   
                 lea     edx, [esp+24h+var_C]  
                 push    0FFFFFFFFh  
                 push    edx  
                 push    65h  
                 mov     ecx, ebp  
                 call    ?SearchMixerInputChannel@CResource@@QAEJW4_eReservedFor@@PAKK@Z ; CResource::SearchMixerInputChannel(_eReservedFor,ulong *,ulong)  
   
                 test    eax, eax  
                 jnz     short loc_2F564  
   
                 mov     eax, [esp+24h+var_10]  
                 mov     edx, [esp+24h+var_C]  
                 add     eax, 420h  
                 mov     ecx, [edi+74h]  
                 shl     eax, 5  
                 add     eax, edx  
                 shl     eax, 2  
                 push    eax  
                 call    ?ReadDWORD@CAsp4HwIO@@QAEKK@Z ; CAsp4HwIO::ReadDWORD(ulong)  
   
                 and     eax, 0FFh  
                 mov     [edi+64h], eax  
   
 loc_2F564:                              ; CODE XREF: Asp4Topology::AllocSynth(CResource *)+181j  
                                         ; Asp4Topology::AllocSynth(CResource *)+198j ...  
                 cmp     dword ptr [edi+68h], 0FFFFFFFFh  
                 jnz     short loc_2F5BB  
   
                 lea     ecx, [esp+24h+var_10]  
                 push    0FFFFFFFFh  
                 push    ecx  
                 push    82h  
                 mov     ecx, ebp  
                 call    ?SearchMixerOutputChannel@CResource@@QAEJW4_eReservedFor@@PAKK@Z ; CResource::SearchMixerOutputChannel(_eReservedFor,ulong *,ulong)  
   
                 test    eax, eax  
                 jnz     short loc_2F5BB  
   
                 lea     edx, [esp+24h+var_C]  
                 push    0FFFFFFFFh  
                 push    edx  
                 push    66h  
                 mov     ecx, ebp  
                 call    ?SearchMixerInputChannel@CResource@@QAEJW4_eReservedFor@@PAKK@Z ; CResource::SearchMixerInputChannel(_eReservedFor,ulong *,ulong)  
   
                 test    eax, eax  
                 jnz     short loc_2F5BB  
   
                 mov     eax, [esp+24h+var_10]  
                 mov     edx, [esp+24h+var_C]  
                 add     eax, 420h  
                 mov     ecx, [edi+74h]  
                 shl     eax, 5  
                 add     eax, edx  
                 shl     eax, 2  
                 push    eax  
                 call    ?ReadDWORD@CAsp4HwIO@@QAEKK@Z ; CAsp4HwIO::ReadDWORD(ulong)  
   
                 and     eax, 0FFh  
                 mov     [edi+68h], eax  
   
 loc_2F5BB:                              ; CODE XREF: Asp4Topology::AllocSynth(CResource *)+1D8j  
                                         ; Asp4Topology::AllocSynth(CResource *)+1EFj ...  
                 mov     ecx, [ebp+0C4h]  
                 lea     edx, [esp+24h+var_8]  
                 push    edx  
                 push    66h  
                 push    82h  
                 mov     [esp+30h+var_8], 0  
                 call    ?IsInputVolPending@CAsp4Mixer@@QAEHW4_eReservedFor@@0PAK@Z ; CAsp4Mixer::IsInputVolPending(_eReservedFor,_eReservedFor,ulong *)  
   
                 test    eax, eax  
                 jz      short loc_2F5F0  
   
                 mov     eax, [esp+24h+var_8]  
                 push    eax  
                 call    ?LinearFrac2WtFP@@YGEK@Z ; LinearFrac2WtFP(ulong)  
   
                 and     eax, 0FFh  
                 mov     [edi+68h], eax  
   
 loc_2F5F0:                              ; CODE XREF: Asp4Topology::AllocSynth(CResource *)+24Cj  
                 mov     ecx, [ebp+0C4h]  
                 lea     edx, [esp+24h+var_8]  
                 push    edx  
                 push    65h  
                 push    81h  
                 call    ?IsInputVolPending@CAsp4Mixer@@QAEHW4_eReservedFor@@0PAK@Z ; CAsp4Mixer::IsInputVolPending(_eReservedFor,_eReservedFor,ulong *)  
   
                 test    eax, eax  
                 jz      short loc_2F61D  
   
                 mov     eax, [esp+24h+var_8]  
                 push    eax  
                 call    ?LinearFrac2WtFP@@YGEK@Z ; LinearFrac2WtFP(ulong)  
   
                 and     eax, 0FFh  
                 mov     [edi+64h], eax  
   
 loc_2F61D:                              ; CODE XREF: Asp4Topology::AllocSynth(CResource *)+279j  
                 mov     ecx, [ebx]  
                 mov     edx, [edi+90h]  
                 mov     eax, [edi+8Ch]  
                 push    ecx  
                 mov     ecx, [edi+88h]  
                 push    edx  
                 push    eax  
                 push    ecx  
                 mov     ecx, esi  
                 call    ?Create@Asp4SynthTopology@@QAEHHHHH@Z ; Asp4SynthTopology::Create(int,int,int,int)  
   
                 test    eax, eax  
                 jnz     loc_2F719  
   
                 mov     ecx, esi  
                 call    ??1Asp4SynthTopology@@QAE@XZ ; Asp4SynthTopology::~Asp4SynthTopology(void)  
   
                 push    esi  
                 call    ??3@YAXPAX@Z    ; operator delete(void *)  
   
                 add     esp, 4  
                 lea     eax, [edi+88h]  
                 lea     esi, [edi+8Ch]  
                 mov     dword ptr [ebx], 0  
                 push    eax  
                 push    offset asc_816B4 ; "A"  
                 push    offset asc_816E0 ; "s"  
                 push    80000002h  
                 mov     dword ptr [eax], 0  
                 mov     dword ptr [esi], 0  
                 call    _AspSetRegDwordValue@16  
   
                 push    esi  
                 push    offset asc_81754 ; "S"  
                 push    offset asc_81768 ; "s"  
                 push    80000002h  
                 call    _AspSetRegDwordValue@16  
   
                 push    ebx  
                 push    offset aG_16    ; "G"  
                 push    offset asc_817F0 ; "s"  
                 push    80000002h  
                 call    _AspSetRegDwordValue@16  
   
                 push    70h  
                 call    ??2@YAPAXI@Z    ; operator new(uint)  
   
                 add     esp, 4  
                 test    eax, eax  
                 jz      short loc_2F6CE  
   
                 push    edi  
                 push    ebp  
                 mov     ecx, eax  
                 call    ??0Asp4SynthTopology@@QAE@PAVCResource@@PAVAsp4Topology@@@Z ; Asp4SynthTopology::Asp4SynthTopology(CResource *,Asp4Topology *)  
   
                 mov     esi, eax  
                 test    esi, esi  
                 jnz     short loc_2F6DA  
   
   
 loc_2F6CE:                              ; CODE XREF: Asp4Topology::AllocSynth(CResource *)+32Dj  
                 pop     edi  
                 pop     esi  
                 pop     ebp  
                 xor     eax, eax  
                 pop     ebx  
                 add     esp, 14h  
                 retn    4  
   
 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  
   
 loc_2F6DA:                              ; CODE XREF: Asp4Topology::AllocSynth(CResource *)+33Cj  
                 mov     edx, [ebx]  
                 mov     eax, [edi+90h]  
                 mov     ecx, [edi+8Ch]  
                 push    edx  
                 mov     edx, [edi+88h]  
                 push    eax  
                 push    ecx  
                 push    edx  
                 mov     ecx, esi  
                 call    ?Create@Asp4SynthTopology@@QAEHHHHH@Z ; Asp4SynthTopology::Create(int,int,int,int)  
   
                 test    eax, eax  
                 jnz     short loc_2F719  
   
                 mov     ecx, esi  
                 call    ??1Asp4SynthTopology@@QAE@XZ ; Asp4SynthTopology::~Asp4SynthTopology(void)  
   
                 push    esi  
                 call    ??3@YAXPAX@Z    ; operator delete(void *)  
   
                 add     esp, 4  
                 xor     eax, eax  
                 pop     edi  
                 pop     esi  
                 pop     ebp  
                 pop     ebx  
                 add     esp, 14h  
                 retn    4  
   
 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  
   
 loc_2F719:                              ; CODE XREF: Asp4Topology::AllocSynth(CResource *)+2AEj  
                                         ; Asp4Topology::AllocSynth(CResource *)+36Bj  
                 mov     eax, [edi+90h]  
                 test    eax, eax  
                 jz      loc_2F823  
   
                 mov     eax, [esi+8]  
                 mov     ecx, edi  
                 add     al, 50h  
                 push    eax  
                 push    62h  
                 push    11h  
                 push    1  
                 call    ?Route@Asp4Topology@@QAEXHEEE@Z ; Asp4Topology::Route(int,uchar,uchar,uchar)  
   
                 mov     ecx, [esi+0Ch]  
                 add     cl, 50h  
                 push    ecx  
                 push    63h  
                 push    11h  
                 push    1  
                 mov     ecx, edi  
                 call    ?Route@Asp4Topology@@QAEXHEEE@Z ; Asp4Topology::Route(int,uchar,uchar,uchar)  
   
                 mov     edx, [esi+18h]  
                 mov     ecx, edi  
                 add     dl, 50h  
                 push    edx  
                 push    0A2h  
                 push    11h  
                 push    1  
                 call    ?Route@Asp4Topology@@QAEXHEEE@Z ; Asp4Topology::Route(int,uchar,uchar,uchar)  
   
                 mov     eax, [esi+1Ch]  
                 mov     ecx, edi  
                 add     al, 50h  
                 push    eax  
                 push    0A3h  
                 push    11h  
                 push    1  
                 call    ?Route@Asp4Topology@@QAEXHEEE@Z ; Asp4Topology::Route(int,uchar,uchar,uchar)  
   
                 push    2  
                 push    1  
                 mov     ecx, ebp  
                 call    ?GetWTRefCount@CResource@@QAEKHW4WTSOURCE@@@Z ; CResource::GetWTRefCount(int,WTSOURCE)  
   
                 test    eax, eax  
                 jnz     short loc_2F7CF  
   
                 mov     eax, [edi+194h]  
                 test    eax, eax  
                 jnz     short loc_2F7CF  
   
                 mov     ecx, [esi+18h]  
                 push    ecx  
                 mov     ecx, [esi+38h]  
                 call    ?EnableInput@CAsp4Mix@@QAEXH@Z ; CAsp4Mix::EnableInput(int)  
   
                 mov     edx, [esi+1Ch]  
                 mov     ecx, [esi+3Ch]  
                 push    edx  
                 call    ?EnableInput@CAsp4Mix@@QAEXH@Z ; CAsp4Mix::EnableInput(int)  
   
                 mov     ecx, [esi+40h]  
                 test    ecx, ecx  
                 jz      short loc_2F7CF  
   
                 mov     eax, [esi+44h]  
                 test    eax, eax  
                 jz      short loc_2F7CF  
   
                 mov     eax, [esi+18h]  
                 push    eax  
                 call    ?EnableInput@CAsp4Mix@@QAEXH@Z ; CAsp4Mix::EnableInput(int)  
   
                 mov     ecx, [esi+1Ch]  
                 push    ecx  
                 mov     ecx, [esi+44h]  
                 call    ?EnableInput@CAsp4Mix@@QAEXH@Z ; CAsp4Mix::EnableInput(int)  
   
   
 loc_2F7CF:                              ; CODE XREF: Asp4Topology::AllocSynth(CResource *)+3F8j  
                                         ; Asp4Topology::AllocSynth(CResource *)+402j ...  
                 push    2  
                 push    0  
                 mov     ecx, ebp  
                 call    ?GetWTRefCount@CResource@@QAEKHW4WTSOURCE@@@Z ; CResource::GetWTRefCount(int,WTSOURCE)  
   
                 test    eax, eax  
                 jnz     short loc_2F823  
   
                 mov     eax, [edi+190h]  
                 test    eax, eax  
                 jnz     short loc_2F823  
   
                 mov     edx, [esi+8]  
                 mov     ecx, [esi+38h]  
                 push    edx  
                 call    ?EnableInput@CAsp4Mix@@QAEXH@Z ; CAsp4Mix::EnableInput(int)  
   
                 mov     eax, [esi+0Ch]  
                 mov     ecx, [esi+3Ch]  
                 push    eax  
                 call    ?EnableInput@CAsp4Mix@@QAEXH@Z ; CAsp4Mix::EnableInput(int)  
   
                 mov     ecx, [esi+40h]  
                 test    ecx, ecx  
                 jz      short loc_2F823  
   
                 mov     eax, [esi+44h]  
                 test    eax, eax  
                 jz      short loc_2F823  
   
                 mov     edx, [esi+8]  
                 push    edx  
                 call    ?EnableInput@CAsp4Mix@@QAEXH@Z ; CAsp4Mix::EnableInput(int)  
   
                 mov     eax, [esi+0Ch]  
                 mov     ecx, [esi+44h]  
                 push    eax  
                 call    ?EnableInput@CAsp4Mix@@QAEXH@Z ; CAsp4Mix::EnableInput(int)  
   
   
 loc_2F823:                              ; CODE XREF: Asp4Topology::AllocSynth(CResource *)+391j  
                                         ; Asp4Topology::AllocSynth(CResource *)+44Cj ...  
                 mov     eax, [edi+8Ch]  
                 test    eax, eax  
                 jnz     short loc_2F83B  
   
                 mov     eax, [edi+88h]  
                 test    eax, eax  
                 jz      loc_2FB41  
   
   
 loc_2F83B:                              ; CODE XREF: Asp4Topology::AllocSynth(CResource *)+49Bj  
                 mov     ecx, [esi+10h]  
                 push    ecx  
                 mov     ecx, [esi+38h]  
                 call    ?EnableInput@CAsp4Mix@@QAEXH@Z ; CAsp4Mix::EnableInput(int)  
   
                 mov     edx, [esi+14h]  
                 mov     ecx, [esi+3Ch]  
                 push    edx  
                 call    ?EnableInput@CAsp4Mix@@QAEXH@Z ; CAsp4Mix::EnableInput(int)  
   
                 mov     ecx, [esi+40h]  
                 test    ecx, ecx  
                 jz      short loc_2F876  
   
                 mov     eax, [esi+44h]  
                 test    eax, eax  
                 jz      short loc_2F876  
   
                 mov     eax, [esi+10h]  
                 push    eax  
                 call    ?EnableInput@CAsp4Mix@@QAEXH@Z ; CAsp4Mix::EnableInput(int)  
   
                 mov     ecx, [esi+14h]  
                 push    ecx  
                 mov     ecx, [esi+44h]  
                 call    ?EnableInput@CAsp4Mix@@QAEXH@Z ; CAsp4Mix::EnableInput(int)  
   
   
 loc_2F876:                              ; CODE XREF: Asp4Topology::AllocSynth(CResource *)+4C8j  
                                         ; Asp4Topology::AllocSynth(CResource *)+4CFj  
                 mov     eax, [esi+28h]  
                 mov     ecx, ebp  
                 push    eax  
                 call    ?GetInputChannelRefCount@CResource@@QAEKK@Z ; CResource::GetInputChannelRefCount(ulong)  
   
                 cmp     eax, 1  
                 jnz     short loc_2F8C4  
   
                 mov     edx, [esi+28h]  
                 mov     ecx, edi  
                 add     dl, 50h  
                 push    edx  
                 push    64h  
                 push    11h  
                 push    eax  
                 call    ?Route@Asp4Topology@@QAEXHEEE@Z ; Asp4Topology::Route(int,uchar,uchar,uchar)  
   
                 mov     eax, [esi+20h]  
                 mov     ecx, edi  
                 add     al, 50h  
                 push    eax  
                 push    65h  
                 push    11h  
                 push    1  
                 call    ?Route@Asp4Topology@@QAEXHEEE@Z ; Asp4Topology::Route(int,uchar,uchar,uchar)  
   
                 mov     ecx, [esi+28h]  
                 push    ecx  
                 mov     ecx, [esi+34h]  
                 call    ?EnableInput@CAsp4Mix@@QAEXH@Z ; CAsp4Mix::EnableInput(int)  
   
                 mov     edx, [esi+20h]  
                 mov     ecx, [esi+30h]  
                 push    edx  
                 call    ?EnableInput@CAsp4Mix@@QAEXH@Z ; CAsp4Mix::EnableInput(int)  
   
   
 loc_2F8C4:                              ; CODE XREF: Asp4Topology::AllocSynth(CResource *)+4F4j  
                 mov     eax, [esi+2Ch]  
                 mov     ecx, ebp  
                 push    eax  
                 call    ?GetInputChannelRefCount@CResource@@QAEKK@Z ; CResource::GetInputChannelRefCount(ulong)  
   
                 cmp     eax, 1  
                 jnz     short loc_2F919  
   
                 mov     eax, [esi+2Ch]  
                 mov     ecx, edi  
                 add     al, 50h  
                 push    eax  
                 push    0A4h  
                 push    11h  
                 push    1  
                 call    ?Route@Asp4Topology@@QAEXHEEE@Z ; Asp4Topology::Route(int,uchar,uchar,uchar)  
   
                 mov     ecx, [esi+24h]  
                 add     cl, 50h  
                 push    ecx  
                 push    0A5h  
                 push    11h  
                 push    1  
                 mov     ecx, edi  
                 call    ?Route@Asp4Topology@@QAEXHEEE@Z ; Asp4Topology::Route(int,uchar,uchar,uchar)  
   
                 mov     edx, [esi+2Ch]  
                 mov     ecx, [esi+34h]  
                 push    edx  
                 call    ?EnableInput@CAsp4Mix@@QAEXH@Z ; CAsp4Mix::EnableInput(int)  
   
                 mov     eax, [esi+24h]  
                 mov     ecx, [esi+30h]  
                 push    eax  
                 call    ?EnableInput@CAsp4Mix@@QAEXH@Z ; CAsp4Mix::EnableInput(int)  
   
   
 loc_2F919:                              ; CODE XREF: Asp4Topology::AllocSynth(CResource *)+542j  
                 mov     ecx, [esi+50h]  
                 mov     edx, [esi+30h]  
                 mov     eax, [esi+34h]  
                 push    ecx  
                 push    edx  
                 push    eax  
                 push    11h  
                 push    1  
                 mov     ecx, edi  
                 call    ?Connection@Asp4Topology@@QAEXHEPAVCAsp4Mix@@0PAVCAsp4AdbDma@@@Z ; Asp4Topology::Connection(int,uchar,CAsp4Mix *,int,CAsp4AdbDma *)  
   
                 mov     ecx, [esi+50h]  
                 test    ecx, ecx  
                 jz      loc_2FA2D  
   
                 mov     edx, [ecx]  
                 push    0  
                 push    0  
                 push    1  
                 push    8  
                 push    0  
                 push    0  
                 call    dword ptr [edx+4]  
   
                 mov     eax, [esi+50h]  
                 push    56FFFFFFh  
                 mov     ecx, [eax+4]  
                 lea     edx, ds:27800h[ecx*8]  
                 mov     ecx, [edi+74h]  
                 push    edx  
                 call    ?Write@CAsp4HwIO@@QAEXKK@Z ; CAsp4HwIO::Write(ulong,ulong)  
   
                 mov     eax, [esi+50h]  
                 push    74FFFFFFh  
                 mov     ecx, [eax+4]  
                 lea     edx, ds:27804h[ecx*8]  
                 mov     ecx, [edi+74h]  
                 push    edx  
                 call    ?Write@CAsp4HwIO@@QAEXKK@Z ; CAsp4HwIO::Write(ulong,ulong)  
   
                 mov     eax, [esi+60h]  
                 mov     ecx, [eax+4]  
                 mov     eax, [esi+50h]  
                 mov     edx, [ecx+1Ch]  
                 mov     ecx, [eax+4]  
                 add     ecx, 2740h  
                 shl     edx, 0Ch  
                 shl     ecx, 4  
                 push    edx  
                 push    ecx  
                 mov     ecx, [edi+74h]  
                 call    ?Write@CAsp4HwIO@@QAEXKK@Z ; CAsp4HwIO::Write(ulong,ulong)  
   
                 mov     edx, [esi+60h]  
                 mov     eax, [edx+4]  
                 mov     edx, [esi+50h]  
                 mov     ecx, [eax+20h]  
                 mov     eax, [edx+4]  
                 shl     eax, 4  
                 shl     ecx, 0Ch  
                 add     eax, (offset loc_27402+2)  
                 push    ecx  
                 mov     ecx, [edi+74h]  
                 push    eax  
                 call    ?Write@CAsp4HwIO@@QAEXKK@Z ; CAsp4HwIO::Write(ulong,ulong)  
   
                 mov     ecx, [esi+60h]  
                 mov     edx, [ecx+4]  
                 mov     ecx, [esi+50h]  
                 mov     eax, [edx+24h]  
                 mov     edx, [ecx+4]  
                 mov     ecx, [edi+74h]  
                 shl     edx, 4  
                 shl     eax, 0Ch  
                 add     edx, offset nullsub_2  
                 push    eax  
                 push    edx  
                 call    ?Write@CAsp4HwIO@@QAEXKK@Z ; CAsp4HwIO::Write(ulong,ulong)  
   
                 mov     eax, [esi+60h]  
                 mov     ecx, [eax+4]  
                 mov     eax, [esi+50h]  
                 mov     edx, [ecx+28h]  
                 mov     ecx, [eax+4]  
                 shl     ecx, 4  
                 shl     edx, 0Ch  
                 add     ecx, offset dword_2740C  
                 push    edx  
                 push    ecx  
                 mov     ecx, [edi+74h]  
                 call    ?Write@CAsp4HwIO@@QAEXKK@Z ; CAsp4HwIO::Write(ulong,ulong)  
   
                 mov     edx, [esi+50h]  
                 push    0  
                 mov     eax, [edx+4]  
                 lea     ecx, ds:27C00h[eax*4]  
                 push    ecx  
                 mov     ecx, [edi+74h]  
                 call    ?Write@CAsp4HwIO@@QAEXKK@Z ; CAsp4HwIO::Write(ulong,ulong)  
   
   
 loc_2FA2D:                              ; CODE XREF: Asp4Topology::AllocSynth(CResource *)+5A5j  
                 mov     edx, [esi+14h]  
                 mov     eax, [esi+10h]  
                 mov     ecx, [esi+54h]  
                 add     dl, 50h  
                 push    edx  
                 add     al, 50h  
                 mov     edx, [ecx+4]  
                 push    eax  
                 push    edx  
                 push    11h  
                 push    1  
                 mov     ecx, edi  
                 call    ?Route@Asp4Topology@@QAEXHEEEE@Z ; Asp4Topology::Route(int,uchar,uchar,uchar,uchar)  
   
                 mov     ecx, [esi+54h]  
                 push    0  
                 push    0  
                 push    1  
                 mov     eax, [ecx]  
                 push    8  
                 push    1  
                 push    0  
                 call    dword ptr [eax+4]  
   
                 mov     ecx, [esi+54h]  
                 push    56FFFFFFh  
                 mov     edx, [ecx+4]  
                 mov     ecx, [edi+74h]  
                 lea     eax, ds:27800h[edx*8]  
                 push    eax  
                 call    ?Write@CAsp4HwIO@@QAEXKK@Z ; CAsp4HwIO::Write(ulong,ulong)  
   
                 mov     ecx, [esi+54h]  
                 push    74FFFFFFh  
                 mov     edx, [ecx+4]  
                 mov     ecx, [edi+74h]  
                 lea     eax, ds:27804h[edx*8]  
                 push    eax  
                 call    ?Write@CAsp4HwIO@@QAEXKK@Z ; CAsp4HwIO::Write(ulong,ulong)  
   
                 mov     ecx, [esi+64h]  
                 mov     edx, [ecx+4]  
                 mov     ecx, [esi+54h]  
                 mov     eax, [edx+1Ch]  
                 mov     edx, [ecx+4]  
                 mov     ecx, [edi+74h]  
                 add     edx, 2740h  
                 shl     eax, 0Ch  
                 shl     edx, 4  
                 push    eax  
                 push    edx  
                 call    ?Write@CAsp4HwIO@@QAEXKK@Z ; CAsp4HwIO::Write(ulong,ulong)  
   
                 mov     eax, [esi+64h]  
                 mov     ecx, [eax+4]  
                 mov     eax, [esi+54h]  
                 mov     edx, [ecx+20h]  
                 mov     ecx, [eax+4]  
                 shl     ecx, 4  
                 shl     edx, 0Ch  
                 add     ecx, (offset loc_27402+2)  
                 push    edx  
                 push    ecx  
                 mov     ecx, [edi+74h]  
                 call    ?Write@CAsp4HwIO@@QAEXKK@Z ; CAsp4HwIO::Write(ulong,ulong)  
   
                 mov     edx, [esi+64h]  
                 mov     eax, [edx+4]  
                 mov     edx, [esi+54h]  
                 mov     ecx, [eax+24h]  
                 mov     eax, [edx+4]  
                 shl     eax, 4  
                 shl     ecx, 0Ch  
                 add     eax, offset nullsub_2  
                 push    ecx  
                 mov     ecx, [edi+74h]  
                 push    eax  
                 call    ?Write@CAsp4HwIO@@QAEXKK@Z ; CAsp4HwIO::Write(ulong,ulong)  
   
                 mov     ecx, [esi+64h]  
                 mov     edx, [ecx+4]  
                 mov     ecx, [esi+54h]  
                 mov     eax, [edx+28h]  
                 mov     edx, [ecx+4]  
                 shl     eax, 0Ch  
                 shl     edx, 4  
                 push    eax  
                 add     edx, offset dword_2740C  
                 mov     ecx, [edi+74h]  
                 push    edx  
                 call    ?Write@CAsp4HwIO@@QAEXKK@Z ; CAsp4HwIO::Write(ulong,ulong)  
   
                 mov     eax, [esi+54h]  
                 push    0  
                 mov     ecx, [eax+4]  
                 lea     edx, ds:27C00h[ecx*4]  
                 mov     ecx, [edi+74h]  
                 push    edx  
                 call    ?Write@CAsp4HwIO@@QAEXKK@Z ; CAsp4HwIO::Write(ulong,ulong)  
   
   
 loc_2FB41:                              ; CODE XREF: Asp4Topology::AllocSynth(CResource *)+4A5j  
                 mov     ecx, [esi+38h]  
                 mov     ebx, [esi+10h]  
                 mov     eax, [edi+64h]  
                 mov     edx, [ecx+8]  
                 mov     ecx, [edi+74h]  
                 add     edx, 420h  
                 push    eax  
                 shl     edx, 5  
                 add     edx, ebx  
                 shl     edx, 2  
                 push    edx  
                 call    ?Write@CAsp4HwIO@@QAEXKK@Z ; CAsp4HwIO::Write(ulong,ulong)  
   
                 mov     ecx, [esi+3Ch]  
                 mov     eax, [edi+68h]  
                 push    eax  
                 mov     eax, [esi+14h]  
                 mov     edx, [ecx+8]  
                 mov     ecx, [edi+74h]  
                 add     edx, 420h  
                 shl     edx, 5  
                 add     edx, eax  
                 shl     edx, 2  
                 push    edx  
                 call    ?Write@CAsp4HwIO@@QAEXKK@Z ; CAsp4HwIO::Write(ulong,ulong)  
   
                 mov     eax, [esi+40h]  
                 test    eax, eax  
                 jz      short loc_2FBDC  
   
                 mov     ecx, [esi+44h]  
                 test    ecx, ecx  
                 jz      short loc_2FBDC  
   
                 mov     edx, [eax+8]  
                 mov     eax, [esi+10h]  
                 mov     ecx, [edi+64h]  
                 add     edx, 420h  
                 shl     edx, 5  
                 add     edx, eax  
                 push    ecx  
                 mov     ecx, [edi+74h]  
                 shl     edx, 2  
                 push    edx  
                 call    ?Write@CAsp4HwIO@@QAEXKK@Z ; CAsp4HwIO::Write(ulong,ulong)  
   
                 mov     ecx, [esi+44h]  
                 mov     ebx, [esi+14h]  
                 mov     eax, [edi+68h]  
                 mov     edx, [ecx+8]  
                 mov     ecx, [edi+74h]  
                 add     edx, 420h  
                 push    eax  
                 shl     edx, 5  
                 add     edx, ebx  
                 shl     edx, 2  
                 push    edx  
                 call    ?Write@CAsp4HwIO@@QAEXKK@Z ; CAsp4HwIO::Write(ulong,ulong)  
   
   
 loc_2FBDC:                              ; CODE XREF: Asp4Topology::AllocSynth(CResource *)+7FEj  
                                         ; Asp4Topology::AllocSynth(CResource *)+805j  
                 mov     ecx, [esi+38h]  
                 mov     ebx, [esi+8]  
                 mov     eax, [edi+64h]  
                 mov     edx, [ecx+8]  
                 mov     ecx, [edi+74h]  
                 add     edx, 420h  
                 push    eax  
                 shl     edx, 5  
                 add     edx, ebx  
                 shl     edx, 2  
                 push    edx  
                 call    ?Write@CAsp4HwIO@@QAEXKK@Z ; CAsp4HwIO::Write(ulong,ulong)  
   
                 mov     ecx, [esi+3Ch]  
                 mov     eax, [edi+68h]  
                 push    eax  
                 mov     eax, [esi+0Ch]  
                 mov     edx, [ecx+8]  
                 mov     ecx, [edi+74h]  
                 add     edx, 420h  
                 shl     edx, 5  
                 add     edx, eax  
                 shl     edx, 2  
                 push    edx  
                 call    ?Write@CAsp4HwIO@@QAEXKK@Z ; CAsp4HwIO::Write(ulong,ulong)  
   
                 mov     eax, [esi+40h]  
                 test    eax, eax  
                 jz      short loc_2FC77  
   
                 mov     ecx, [esi+44h]  
                 test    ecx, ecx  
                 jz      short loc_2FC77  
   
                 mov     edx, [eax+8]  
                 mov     eax, [esi+8]  
                 mov     ecx, [edi+64h]  
                 add     edx, 420h  
                 shl     edx, 5  
                 add     edx, eax  
                 push    ecx  
                 mov     ecx, [edi+74h]  
                 shl     edx, 2  
                 push    edx  
                 call    ?Write@CAsp4HwIO@@QAEXKK@Z ; CAsp4HwIO::Write(ulong,ulong)  
   
                 mov     ecx, [esi+44h]  
                 mov     ebx, [esi+0Ch]  
                 mov     eax, [edi+68h]  
                 mov     edx, [ecx+8]  
                 mov     ecx, [edi+74h]  
                 add     edx, 420h  
                 push    eax  
                 shl     edx, 5  
                 add     edx, ebx  
                 shl     edx, 2  
                 push    edx  
                 call    ?Write@CAsp4HwIO@@QAEXKK@Z ; CAsp4HwIO::Write(ulong,ulong)  
   
   
 loc_2FC77:                              ; CODE XREF: Asp4Topology::AllocSynth(CResource *)+899j  
                                         ; Asp4Topology::AllocSynth(CResource *)+8A0j  
                 mov     ecx, [esi+38h]  
                 mov     ebx, [esi+18h]  
                 mov     eax, [edi+64h]  
                 mov     edx, [ecx+8]  
                 mov     ecx, [edi+74h]  
                 add     edx, 420h  
                 push    eax  
                 shl     edx, 5  
                 add     edx, ebx  
                 shl     edx, 2  
                 push    edx  
                 call    ?Write@CAsp4HwIO@@QAEXKK@Z ; CAsp4HwIO::Write(ulong,ulong)  
   
                 mov     ecx, [esi+3Ch]  
                 mov     eax, [edi+68h]  
                 push    eax  
                 mov     eax, [esi+1Ch]  
                 mov     edx, [ecx+8]  
                 mov     ecx, [edi+74h]  
                 add     edx, 420h  
                 shl     edx, 5  
                 add     edx, eax  
                 shl     edx, 2  
                 push    edx  
                 call    ?Write@CAsp4HwIO@@QAEXKK@Z ; CAsp4HwIO::Write(ulong,ulong)  
   
                 mov     eax, [esi+40h]  
                 test    eax, eax  
                 jz      short loc_2FD12  
   
                 mov     ecx, [esi+44h]  
                 test    ecx, ecx  
                 jz      short loc_2FD12  
   
                 mov     edx, [eax+8]  
                 mov     eax, [esi+18h]  
                 mov     ecx, [edi+64h]  
                 add     edx, 420h  
                 shl     edx, 5  
                 add     edx, eax  
                 push    ecx  
                 mov     ecx, [edi+74h]  
                 shl     edx, 2  
                 push    edx  
                 call    ?Write@CAsp4HwIO@@QAEXKK@Z ; CAsp4HwIO::Write(ulong,ulong)  
   
                 mov     ecx, [esi+44h]  
                 mov     ebx, [esi+1Ch]  
                 mov     eax, [edi+68h]  
                 mov     edx, [ecx+8]  
                 mov     ecx, [edi+74h]  
                 add     edx, 420h  
                 push    eax  
                 shl     edx, 5  
                 add     edx, ebx  
                 shl     edx, 2  
                 push    edx  
                 call    ?Write@CAsp4HwIO@@QAEXKK@Z ; CAsp4HwIO::Write(ulong,ulong)  
   
   
 loc_2FD12:                              ; CODE XREF: Asp4Topology::AllocSynth(CResource *)+934j  
                                         ; Asp4Topology::AllocSynth(CResource *)+93Bj  
                 mov     eax, [edi+8Ch]  
                 test    eax, eax  
                 jnz     short loc_2FD26  
   
                 mov     eax, [edi+88h]  
                 test    eax, eax  
                 jz      short loc_2FD72  
   
   
 loc_2FD26:                              ; CODE XREF: Asp4Topology::AllocSynth(CResource *)+98Aj  
                 mov     eax, [esi+28h]  
                 mov     ecx, [esi+34h]  
                 push    8  
                 push    eax  
                 call    ?SetInputVolumeByte@CAsp4Mix@@QAEXHE@Z ; CAsp4Mix::SetInputVolumeByte(int,uchar)  
   
                 mov     ecx, [esi+2Ch]  
                 push    8  
                 push    ecx  
                 mov     ecx, [esi+34h]  
                 call    ?SetInputVolumeByte@CAsp4Mix@@QAEXHE@Z ; CAsp4Mix::SetInputVolumeByte(int,uchar)  
   
                 mov     edx, [esi+20h]  
                 mov     ecx, [esi+30h]  
                 push    8  
                 push    edx  
                 call    ?SetInputVolumeByte@CAsp4Mix@@QAEXHE@Z ; CAsp4Mix::SetInputVolumeByte(int,uchar)  
   
                 mov     eax, [esi+24h]  
                 mov     ecx, [esi+30h]  
                 push    8  
                 push    eax  
                 call    ?SetInputVolumeByte@CAsp4Mix@@QAEXHE@Z ; CAsp4Mix::SetInputVolumeByte(int,uchar)  
   
                 mov     ecx, [esi+30h]  
                 push    8  
                 call    ?SetVolumeByte@CAsp4Mix@@QAEXE@Z ; CAsp4Mix::SetVolumeByte(uchar)  
   
                 mov     ecx, [esi+34h]  
                 push    8  
                 call    ?SetVolumeByte@CAsp4Mix@@QAEXE@Z ; CAsp4Mix::SetVolumeByte(uchar)  
   
   
 loc_2FD72:                              ; CODE XREF: Asp4Topology::AllocSynth(CResource *)+994j  
                 mov     [edi+7Ch], esi  
                 mov     eax, esi  
                 pop     edi  
                 pop     esi  
                 pop     ebp  
                 pop     ebx  
                 add     esp, 14h  
                 retn    4  
   
 ?AllocSynth@Asp4Topology@@QAEPAVAsp4SynthTopology@@PAVCResource@@@Z endp ; sp = -30h  
   
 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  
                 align 10h  
   
 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ  
   
   
 ; public: void __thiscall Asp4Topology::DeleteSynth(void)  
   
 ?DeleteSynth@Asp4Topology@@QAEXXZ proc near  
                                         ; CODE XREF: CAsp4Core::SetWavetableTopology(int)+25p  
                                         ; .text:0002564Bp  
                 push    esi  
                 push    edi  
                 mov     edi, ecx  
                 mov     esi, [edi+7Ch]  
                 test    esi, esi  
                 jz      short loc_2FDAB  
   
                 mov     ecx, esi  
                 call    ??1Asp4SynthTopology@@QAE@XZ ; Asp4SynthTopology::~Asp4SynthTopology(void)  
   
                 push    esi  
                 call    ??3@YAXPAX@Z    ; operator delete(void *)  
   
                 add     esp, 4  
   
 loc_2FDAB:                              ; CODE XREF: Asp4Topology::DeleteSynth(void)+9j  
                 mov     dword ptr [edi+7Ch], 0  
                 pop     edi  
                 pop     esi  
                 retn  
   
 ?DeleteSynth@Asp4Topology@@QAEXXZ endp  
   
 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  
                 align 10h  
   
 ; public: static void __cdecl Asp4Topology::Appy_Handler(void *,unsigned long)  
 ?Appy_Handler@Asp4Topology@@SAXPAXK@Z:  
                 retn  
   
 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  
                 align 10h  
   
 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ  
   
   
 ; public: void __thiscall Asp4Topology::Route(int,unsigned char,unsigned char,unsigned char)  
   
 ?Route@Asp4Topology@@QAEXHEEE@Z proc near  
                                         ; CODE XREF: Asp4Topology::MakeDefaultConnections(void)+2Ap  
                                         ; Asp4Topology::MakeDefaultConnections(void)+75p ...  
   
 arg_0           = dword ptr  8  
 arg_4           = dword ptr  0Ch  
 arg_8           = dword ptr  10h  
 arg_C           = dword ptr  14h  
   
                 push    ebx  
                 mov     ebx, [esp+arg_8]  
                 push    ebp  
                 push    esi  
                 push    edi  
                 mov     edi, ebx  
                 mov     esi, ecx  
                 and     edi, 0FFh  
                 mov     eax, [esp+0Ch+arg_8]  
                 mov     ecx, edi  
                 and     ah, 0  
                 shl     ecx, 8  
                 or      eax, ecx  
                 mov     [esp+0Ch+arg_8], eax  
                 mov     edx, [esp+0Ch+arg_8]  
                 mov     eax, [esp+0Ch+arg_C]  
                 and     dl, 0  
                 and     eax, 0FFh  
                 or      edx, eax  
                 mov     [esp+0Ch+arg_8], edx  
                 mov     eax, [esp+0Ch+arg_0]  
                 test    eax, eax  
                 jz      short loc_2FE74  
   
                 mov     ebp, [esp+0Ch+arg_4]  
                 lea     ecx, [esp+0Ch+arg_8]  
                 push    1  
                 push    ecx  
                 mov     ecx, [esi+6Ch]  
                 push    ebp  
                 call    ?AddRoutes@CAsp4Adb@@QAEXEPATADBRamLink@@H@Z ; CAsp4Adb::AddRoutes(uchar,ADBRamLink *,int)  
   
                 cmp     bl, 20h  
                 jb      short loc_2FE4D  
   
                 lea     edx, [edi-20h]  
                 cmp     edx, 10h  
                 jge     short loc_2FE4D  
   
                 mov     eax, [esi+70h]  
                 sub     bl, 20h  
                 push    ebp  
                 push    ebx  
                 mov     ecx, [eax+0C8h]  
                 call    ?AddWTD@CAsp4SrcBlock@@QAEHEE@Z ; CAsp4SrcBlock::AddWTD(uchar,uchar)  
   
                 pop     edi  
                 pop     esi  
                 pop     ebp  
                 pop     ebx  
                 retn    10h  
   
 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  
   
 loc_2FE4D:                              ; CODE XREF: Asp4Topology::Route(int,uchar,uchar,uchar)+59j  
                                         ; Asp4Topology::Route(int,uchar,uchar,uchar)+61j  
                 cmp     bl, 30h  
                 jb      short loc_2FECE  
   
                 add     edi, 0FFFFFFD0h  
                 cmp     edi, 10h  
                 jge     short loc_2FECE  
   
                 mov     ecx, [esi+70h]  
                 sub     bl, 30h  
                 push    ebp  
                 push    ebx  
                 mov     ecx, [ecx+0C4h]  
                 call    ?AddWTD@CAsp4Mixer@@QAEHEE@Z ; CAsp4Mixer::AddWTD(uchar,uchar)  
   
                 pop     edi  
                 pop     esi  
                 pop     ebp  
                 pop     ebx  
                 retn    10h  
   
 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  
   
 loc_2FE74:                              ; CODE XREF: Asp4Topology::Route(int,uchar,uchar,uchar)+40j  
                 mov     eax, [esp+0Ch+arg_8]  
                 mov     ebp, [esp+0Ch+arg_4]  
                 mov     ecx, [esi+6Ch]  
                 push    eax  
                 push    eax  
                 push    ebp  
                 call    ?DeleteRoutes@CAsp4Adb@@QAEXETADBRamLink@@0@Z ; CAsp4Adb::DeleteRoutes(uchar,ADBRamLink,uchar)  
   
                 cmp     bl, 20h  
                 jb      short loc_2FEAE  
   
                 lea     edx, [edi-20h]  
                 cmp     edx, 10h  
                 jge     short loc_2FEAE  
   
                 mov     eax, [esi+70h]  
                 sub     bl, 20h  
                 push    ebp  
                 push    ebx  
                 mov     ecx, [eax+0C8h]  
                 call    ?DeleteWTD@CAsp4SrcBlock@@QAEHEE@Z ; CAsp4SrcBlock::DeleteWTD(uchar,uchar)  
   
                 pop     edi  
                 pop     esi  
                 pop     ebp  
                 pop     ebx  
                 retn    10h  
   
 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  
   
 loc_2FEAE:                              ; CODE XREF: Asp4Topology::Route(int,uchar,uchar,uchar)+BAj  
                                         ; Asp4Topology::Route(int,uchar,uchar,uchar)+C2j  
                 cmp     bl, 30h  
                 jb      short loc_2FECE  
   
                 add     edi, 0FFFFFFD0h  
                 cmp     edi, 10h  
                 jge     short loc_2FECE  
   
                 mov     ecx, [esi+70h]  
                 sub     bl, 30h  
                 push    ebp  
                 push    ebx  
                 mov     ecx, [ecx+0C4h]  
                 call    ?DeleteWTD@CAsp4Mixer@@QAEHEE@Z ; CAsp4Mixer::DeleteWTD(uchar,uchar)  
   
   
 loc_2FECE:                              ; CODE XREF: Asp4Topology::Route(int,uchar,uchar,uchar)+80j  
                                         ; Asp4Topology::Route(int,uchar,uchar,uchar)+88j ...  
                 pop     edi  
                 pop     esi  
                 pop     ebp  
                 pop     ebx  
                 retn    10h  
   
 ?Route@Asp4Topology@@QAEXHEEE@Z endp  
   
 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  
                 align 10h  
   
   
   
   
 */  
   
 /*  
   
   
   
 ; public: void __thiscall CWTHal::SetReg(unsigned char,int,unsigned short)  
   
 ?SetReg@CWTHal@@QAEXEHG@Z proc near     ; CODE XREF: Asp4Synth::WTTimerCallback(ulong)+E45p  
                                         ; Asp4Synth::WTTimerCallback(ulong)+1294p  
   
 arg_0           = dword ptr  0Ch  
 arg_4           = dword ptr  10h  
 arg_8           = dword ptr  14h  
   
                 push    ecx  
                 push    esi  
                 mov     esi, [esp+arg_4]  
                 cmp     esi, 40h  
                 jge     loc_54507  
   
                 mov     eax, esi  
                 cdq  
                 and     edx, 1Fh  
                 add     eax, edx  
                 mov     edx, esi  
                 sar     eax, 5  
                 and     edx, 8000001Fh  
                 mov     byte ptr [esp+arg_4], al  
                 jns     short loc_5448D  
   
                 dec     edx  
                 or      edx, 0FFFFFFE0h  
                 inc     edx  
   
 loc_5448D:                              ; CODE XREF: CWTHal::SetReg(uchar,int,ushort)+26j  
                 cmp     al, 2  
                 mov     [esp+4], dl  
                 jnb     short loc_54507  
   
                 mov     eax, [esp+arg_0]  
                 and     eax, 0FFh  
                 sub     eax, 20h  
                 jz      short loc_544D9  
   
                 dec     eax  
                 jnz     short loc_54507  
   
                 mov     eax, [esp+arg_4]  
                 mov     edx, [esp+4]  
                 and     eax, 0FFh  
                 and     edx, 0FFh  
                 shl     eax, 0Bh  
                 add     eax, edx  
                 mov     edx, [esp+arg_8]  
                 shl     eax, 4  
                 add     eax, 208h  
                 push    edx  
                 push    eax  
                 mov     eax, [ecx]  
                 push    eax  
                 call    ?WriteWORD@CAsp4HIO@@QAGXKG@Z ; CAsp4HIO::WriteWORD(ulong,ushort)  
   
                 pop     esi  
                 pop     ecx  
                 retn    0Ch  
   
 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  
   
 loc_544D9:                              ; CODE XREF: CWTHal::SetReg(uchar,int,ushort)+41j  
                 mov     eax, [esp+arg_4]  
                 mov     edx, [esp+4]  
                 and     eax, 0FFh  
                 and     edx, 0FFh  
                 shl     eax, 0Bh  
                 add     eax, edx  
                 mov     edx, [esp+arg_8]  
                 shl     eax, 4  
                 add     eax, 20Ah  
                 push    edx  
                 push    eax  
                 mov     eax, [ecx]  
                 push    eax  
                 call    ?WriteWORD@CAsp4HIO@@QAGXKG@Z ; CAsp4HIO::WriteWORD(ulong,ushort)  
   
   
 loc_54507:                              ; CODE XREF: CWTHal::SetReg(uchar,int,ushort)+9j  
                                         ; CWTHal::SetReg(uchar,int,ushort)+33j ...  
                 pop     esi  
                 pop     ecx  
                 retn    0Ch  
   
 ?SetReg@CWTHal@@QAEXEHG@Z endp  
   
 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  
                 align 8  
   
 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ  
   
   
 ; public: void __thiscall CWTHal::InitializeWTRegs(void)  
   
 ?InitializeWTRegs@CWTHal@@QAEXXZ proc near ; CODE XREF: Asp4Synth::init(void)+242p  
   
 var_10          = dword ptr -10h  
 var_C           = dword ptr -0Ch  
 var_8           = dword ptr -8  
 var_4           = dword ptr -4  
   
                 sub     esp, 10h  
                 push    ebx  
                 push    ebp  
                 push    esi  
                 xor     ebx, ebx  
                 push    edi  
                 mov     esi, ecx  
                 mov     [esp+20h+var_10], ebx  
                 mov     eax, [esp+20h+var_10]  
                 and     al, 0E3h  
                 or      al, 22h  
                 mov     [esp+20h+var_10], eax  
                 mov     ecx, [esp+20h+var_10]  
                 and     ecx, 0FFFFFEBFh  
                 or      cl, 80h  
                 mov     [esp+20h+var_10], ecx  
                 mov     edx, [esp+20h+var_10]  
                 or      dh, 2  
                 mov     [esp+20h+var_10], edx  
                 mov     eax, [esp+20h+var_10]  
                 and     al, 0FEh  
                 mov     [esp+20h+var_10], eax  
                 mov     ecx, [esp+20h+var_10]  
                 and     ch, 0FBh  
                 or      ch, 18h  
                 mov     [esp+20h+var_10], ecx  
                 mov     [esp+20h+var_8], ebx  
                 mov     edx, [esp+20h+var_8]  
                 mov     [esp+20h+var_C], edx  
                 mov     eax, [esp+20h+var_C]  
                 mov     [esp+20h+var_4], eax  
                 mov     word ptr [esp+20h+var_4+2], 1000h  
                 mov     eax, 83h  
                 mov     word ptr [esp+20h+var_C+2], ax  
                 mov     word ptr [esp+20h+var_8+2], ax  
                 xor     edi, edi  
                 mov     ebp, 2  
   
 loc_54590:                              ; CODE XREF: CWTHal::InitializeWTRegs(void)+C9j  
                 push    ebx  
                 push    edi  
                 push    0Ch  
                 mov     ecx, esi  
                 call    ?SetReg@CWTHal@@QAEXEHK@Z ; CWTHal::SetReg(uchar,int,ulong)  
   
                 mov     ecx, [esp+20h+var_10]  
                 push    ecx  
                 push    edi  
                 push    0Ah  
                 mov     ecx, esi  
                 call    ?SetReg@CWTHal@@QAEXEHK@Z ; CWTHal::SetReg(uchar,int,ulong)  
   
                 mov     edx, [esp+20h+var_4]  
                 push    edx  
                 push    edi  
                 push    9  
                 mov     ecx, esi  
                 call    ?SetReg@CWTHal@@QAEXEHK@Z ; CWTHal::SetReg(uchar,int,ulong)  
   
                 mov     eax, [esp+20h+var_C]  
                 push    eax  
                 push    edi  
                 push    8  
                 mov     ecx, esi  
                 call    ?SetReg@CWTHal@@QAEXEHK@Z ; CWTHal::SetReg(uchar,int,ulong)  
   
                 mov     ecx, [esp+20h+var_8]  
                 push    ecx  
                 push    edi  
                 push    5  
                 mov     ecx, esi  
                 call    ?SetReg@CWTHal@@QAEXEHK@Z ; CWTHal::SetReg(uchar,int,ulong)  
   
                 inc     edi  
                 dec     ebp  
                 jnz     short loc_54590  
   
                 mov     eax, ?g_num_hw_voices@@3HA ; int g_num_hw_voices  
                 xor     bl, bl  
                 test    eax, eax  
                 jle     short loc_5463D  
   
                 xor     edi, edi  
   
 loc_545E8:                              ; CODE XREF: CWTHal::InitializeWTRegs(void)+12Bj  
                 push    0  
                 push    edi  
                 push    4  
                 mov     ecx, esi  
                 call    ?SetReg@CWTHal@@QAEXEHK@Z ; CWTHal::SetReg(uchar,int,ulong)  
   
                 push    0  
                 push    edi  
                 push    3  
                 mov     ecx, esi  
                 call    ?SetReg@CWTHal@@QAEXEHK@Z ; CWTHal::SetReg(uchar,int,ulong)  
   
                 push    0  
                 push    edi  
                 push    2  
                 mov     ecx, esi  
                 call    ?SetReg@CWTHal@@QAEXEHK@Z ; CWTHal::SetReg(uchar,int,ulong)  
   
                 push    0  
                 push    edi  
                 push    1  
                 mov     ecx, esi  
                 call    ?SetReg@CWTHal@@QAEXEHK@Z ; CWTHal::SetReg(uchar,int,ulong)  
   
                 push    0  
                 push    edi  
                 push    0Bh  
                 mov     ecx, esi  
                 call    ?SetReg@CWTHal@@QAEXEHK@Z ; CWTHal::SetReg(uchar,int,ulong)  
   
                 mov     eax, ?g_num_hw_voices@@3HA ; int g_num_hw_voices  
                 inc     bl  
                 mov     byte ptr [esp+20h+var_4], bl  
                 mov     edi, [esp+20h+var_4]  
                 and     edi, 0FFh  
                 cmp     edi, eax  
                 jl      short loc_545E8  
   
   
 loc_5463D:                              ; CODE XREF: CWTHal::InitializeWTRegs(void)+D4j  
                 mov     edx, [esp+20h+var_10]  
                 or      edx, 1  
                 mov     [esp+20h+var_10], edx  
                 xor     edi, edi  
                 mov     ebx, 2  
   
 loc_5464F:                              ; CODE XREF: CWTHal::InitializeWTRegs(void)+150j  
                 mov     eax, [esp+20h+var_10]  
                 push    eax  
                 push    edi  
                 push    0Ah  
                 mov     ecx, esi  
                 call    ?SetReg@CWTHal@@QAEXEHK@Z ; CWTHal::SetReg(uchar,int,ulong)  
   
                 inc     edi  
                 dec     ebx  
                 jnz     short loc_5464F  
   
                 pop     edi  
                 pop     esi  
                 pop     ebp  
                 pop     ebx  
                 add     esp, 10h  
                 retn  
   
 ?InitializeWTRegs@CWTHal@@QAEXXZ endp  
   
   
   
 */  

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26