10AA OPT pass*3 10AA CB .error RETF 10AB .sort 10AB 3E 80 7E 00 01 cmp byte ptr ds:[bp],1 10B0 75 F8 jnz error 10B2 3E 80 7E 01 81 cmp byte ptr ds:[bp+1],&81 10B7 75 F1 jnz error 10B9 3E 8B 5E 02 mov bx,ds:[bp+2] 10BD 2E 89 1E 92 11 mov cs:[start],bx 10C2 26 8B 57 FE mov dx,es:[bx-2] 10C6 26 80 7F FD 01 cmp byte ptr es:[bx-3],1 10CB 75 DD jnz error 10CD 06 push es 10CE 1F pop ds 10CF 8B EE mov bp,si 10D1 03 DA add bx,dx 10D3 03 DA add bx,dx 10D5 03 DA add bx,dx 10D7 03 DA add bx,dx 10D9 2E 89 1E 94 11 mov cs:[end],bx 10DE D1 EA shr dx,1 10E0 BB FF FF mov bx,&FFFF 10E3 D1 EB .rotate shr bx,1 10E5 3B D3 cmp dx,bx 10E7 72 FA jc rotate 10E9 03 DB add bx,bx 10EB 03 DB add bx,bx 10ED 2E 89 1E 96 11 mov cs:[spacer],bx 10F2 87 DA xchg bx,dx 10F4 .loop 10F4 2E 8B 3E 92 11 mov di,cs:[start] 10F9 8B F7 mov si,di 10FB 03 FA add di,dx 10FD 2E 89 3E 98 11 mov cs:[next],di 1102 2E 89 36 9A 11 mov cs:[item],si 1107 .newlen 1107 8A 0C mov cl,[si] 1109 3A 0D cmp cl,[di] 110B 72 02 jc short 110D 8A 0D mov cl,[di] 110F 32 ED .short xor ch,ch 1111 E3 26 jcxz null 1113 8B 54 02 mov dx,[si+2] 1116 8B 5D 02 mov bx,[di+2] 1119 8C D8 mov ax,ds 111B 87 D6 xchg dx,si 111D 87 DF xchg bx,di 111F FC cld 1120 83 FD FF cmp bp,&FFFF 1123 75 08 jnz small 1125 8E DE mov ds,si 1127 33 F6 xor si,si 1129 8E C7 mov es,di 112B 33 FF xor di,di 112D F3 A6 .small repz cmpsb 112F 8E D8 mov ds,ax 1131 8B F2 mov si,dx 1133 8B FB mov di,bx 1135 72 27 jc OK 1137 75 06 jnz swap 1139 8A 05 .null mov al,[di] 113B 3A 04 cmp al,[si] 113D 73 1F jnc OK 113F 8B 04 .swap mov ax,[si] 1141 87 05 xchg ax,[di] 1143 89 04 mov [si],ax 1145 8B 44 02 mov ax,[si+2] 1148 87 45 02 xchg ax,[di+2] 114B 89 44 02 mov [si+2],ax 114E 2E 3B 36 98 11 cmp si,cs:[next] 1153 72 09 jc OK 1155 8B FE mov di,si 1157 2E 2B 36 96 11 sub si,cs:[spacer] 115C EB A9 jmps newlen 115E .OK 115E 2E 8B 1E 9A 11 mov bx,cs:[item] 1163 83 C3 04 add bx,4 1166 2E 89 1E 9A 11 mov cs:[item],bx 116B 8B F3 mov si,bx 116D 2E 03 1E 96 11 add bx,cs:[spacer] 1172 8B FB mov di,bx 1174 2E 3B 1E 94 11 cmp bx,cs:[end] 1179 72 8C jc newlen 117B 2E 8B 16 96 11 mov dx,cs:[spacer] 1180 D1 EA shr dx,1 1182 80 E2 FC and dl,&FC 1185 0B D2 or dx,dx 1187 2E 89 16 96 11 mov cs:[spacer],dx 118C 74 03 jz exit 118E E9 63 FF jmp loop 1191 CB .exit RETF 1192 00 00 .start DW 0 1194 00 00 .end DW 0 1196 00 00 .spacer DW 0 1198 00 00 .next DW 0 119A 00 00 .item DW 0