seg000:0001FFD0                         sub_2FFD0       proc near               ; CODE XREF: sub_2FB79+1E4p
seg000:0001FFD0 56                                      push    esi
seg000:0001FFD1 64 8A 6D 00                             mov     ch, fs:[ebp+0]
seg000:0001FFD5 45                                      inc     ebp
seg000:0001FFD6 66 D1 E6                                shl     si, 1
seg000:0001FFD9 66 26 FF 44 33 0E                       inc     word ptr es:[ebx+esi+0Eh]
seg000:0001FFDF 66 D1 EE                                shr     si, 1
seg000:0001FFE2 64 8A 4D 00                             mov     cl, fs:[ebp+0]
seg000:0001FFE6 45                                      inc     ebp
seg000:0001FFE7 66 D1 E6                                shl     si, 1
seg000:0001FFEA 66 26 FF 44 33 0E                       inc     word ptr es:[ebx+esi+0Eh]
seg000:0001FFF0 66 D1 EE                                shr     si, 1
seg000:0001FFF3 F6 05 71 45 00 00 FF                    test    large byte ptr ds:4571h, 0FFh
seg000:0001FFFA 74 16                                   jz      short loc_30012
seg000:0001FFFC 56                                      push    esi
seg000:0001FFFD 66 8B F0                                mov     si, ax
seg000:00020000 83 E6 0F                                and     esi, 0Fh
seg000:00020003 80 BE 87 44 00 00 FF                    cmp     byte ptr [esi+4487h], 0FFh
seg000:0002000A 5E                                      pop     esi
seg000:0002000B 74 05                                   jz      short loc_30012
seg000:0002000D E9 12 01 00 00                          jmp     loc_30124
seg000:00020012                         ; ---------------------------------------------------------------------------
seg000:00020012
seg000:00020012                         loc_30012:                              ; CODE XREF: sub_2FFD0+2Aj
seg000:00020012                                                                 ; sub_2FFD0+3Bj
seg000:00020012 50                                      push    eax
seg000:00020013 26 8A 84 33 8E 00 00 00                 mov     al, es:[ebx+esi+8Eh]
seg000:0002001B 66 8B F0                                mov     si, ax
seg000:0002001E 83 E6 0F                                and     esi, 0Fh
seg000:00020021 58                                      pop     eax
seg000:00020022 80 FD 07                                cmp     ch, 7
seg000:00020025 75 34                                   jnz     short loc_3005B
seg000:00020027 26 88 8C 33 09 01 00 00                 mov     es:[ebx+esi+109h], cl
seg000:0002002F 26 8A 93 60 01 00 00                    mov     dl, es:[ebx+160h]
seg000:00020036 E8 E7 03 00 00                          call    sub_30422
seg000:0002003B 3C 20                                   cmp     al, 20h ; ' '
seg000:0002003D 72 05                                   jb      short loc_30044
seg000:0002003F E9 E0 00 00 00                          jmp     loc_30124
seg000:00020044                         ; ---------------------------------------------------------------------------
seg000:00020044
seg000:00020044                         loc_30044:                              ; CODE XREF: sub_2FFD0+6Dj
seg000:00020044 56                                      push    esi
seg000:00020045 66 8B F0                                mov     si, ax
seg000:00020048 81 E6 FF 00 00 00                       and     esi, 0FFh
seg000:0002004E C6 86 27 45 00 00 FF                    mov     byte ptr [esi+4527h], 0FFh
seg000:00020055 5E                                      pop     esi
seg000:00020056 E9 A8 00 00 00                          jmp     loc_30103
seg000:0002005B                         ; ---------------------------------------------------------------------------
seg000:0002005B
seg000:0002005B                         loc_3005B:                              ; CODE XREF: sub_2FFD0+55j
seg000:0002005B 80 FD 0A                                cmp     ch, 0Ah
seg000:0002005E 75 0D                                   jnz     short loc_3006D
seg000:00020060 26 88 8C 33 FA 00 00 00                 mov     es:[ebx+esi+0FAh], cl
seg000:00020068 E9 96 00 00 00                          jmp     loc_30103
seg000:0002006D                         ; ---------------------------------------------------------------------------
seg000:0002006D
seg000:0002006D                         loc_3006D:                              ; CODE XREF: sub_2FFD0+8Ej
seg000:0002006D 80 FD 01                                cmp     ch, 1
seg000:00020070 75 0D                                   jnz     short loc_3007F
seg000:00020072 26 88 8C 33 EB 00 00 00                 mov     es:[ebx+esi+0EBh], cl
seg000:0002007A E9 84 00 00 00                          jmp     loc_30103
seg000:0002007F                         ; ---------------------------------------------------------------------------
seg000:0002007F
seg000:0002007F                         loc_3007F:                              ; CODE XREF: sub_2FFD0+A0j
seg000:0002007F 80 FD 40                                cmp     ch, 40h ; '@'
seg000:00020082 75 29                                   jnz     short loc_300AD
seg000:00020084 66 52                                   push    dx
seg000:00020086 66 D1 E6                                shl     si, 1
seg000:00020089 66 26 8B 94 33 BE 00 00+                mov     dx, es:[ebx+esi+0BEh]
seg000:00020092 80 CE 80                                or      dh, 80h
seg000:00020095 80 F9 00                                cmp     cl, 0
seg000:00020098 75 03                                   jnz     short loc_3009D
seg000:0002009A 80 E6 7F                                and     dh, 7Fh
seg000:0002009D
seg000:0002009D                         loc_3009D:                              ; CODE XREF: sub_2FFD0+C8j
seg000:0002009D 66 26 89 94 33 BE 00 00+                mov     es:[ebx+esi+0BEh], dx
seg000:000200A6 66 D1 EE                                shr     si, 1
seg000:000200A9 66 5A                                   pop     dx
seg000:000200AB EB 56                                   jmp     short loc_30103
seg000:000200AD                         ; ---------------------------------------------------------------------------
seg000:000200AD
seg000:000200AD                         loc_300AD:                              ; CODE XREF: sub_2FFD0+B2j


; genmidi = ignore this  (channel reserve)
seg000:000200AD 80 FD 4B                                cmp     ch, 4Bh ; 'K'
seg000:000200B0 75 25                                   jnz     short loc_300D7


seg000:000200B2 66 51                                   push    cx
seg000:000200B4 26 8A AC 33 DC 00 00 00                 mov     ch, es:[ebx+esi+0DCh]
seg000:000200BC 80 E5 F0                                and     ch, 0F0h
seg000:000200BF 80 E1 0F                                and     cl, 0Fh
seg000:000200C2 0A E9                                   or      ch, cl
seg000:000200C4 26 88 AC 33 DC 00 00 00                 mov     es:[ebx+esi+0DCh], ch
seg000:000200CC 66 59                                   pop     cx
seg000:000200CE C6 05 76 45 00 00 01                    mov     large byte ptr ds:4576h, 1
seg000:000200D5 EB 2C                                   jmp     short loc_30103
seg000:000200D7                         ; ---------------------------------------------------------------------------
seg000:000200D7
seg000:000200D7                         loc_300D7:                              ; CODE XREF: sub_2FFD0+E0j
seg000:000200D7 80 FD 4E                                cmp     ch, 4Eh ; 'N'
seg000:000200DA 75 27                                   jnz     short loc_30103
seg000:000200DC 66 51                                   push    cx
seg000:000200DE 26 8A AC 33 45 01 00 00                 mov     ch, es:[ebx+esi+145h]
seg000:000200E6 80 E5 F0                                and     ch, 0F0h
seg000:000200E9 F6 C1 FF                                test    cl, 0FFh
seg000:000200EC 74 02                                   jz      short loc_300F0
seg000:000200EE B1 01                                   mov     cl, 1
seg000:000200F0
seg000:000200F0                         loc_300F0:                              ; CODE XREF: sub_2FFD0+11Cj
seg000:000200F0 0A E9                                   or      ch, cl
seg000:000200F2 26 88 AC 33 45 01 00 00                 mov     es:[ebx+esi+145h], ch
seg000:000200FA 66 59                                   pop     cx
seg000:000200FC C6 05 76 45 00 00 01                    mov     large byte ptr ds:4576h, 1

