]> pd.if.org Git - mmurtl/commitdiff
autocommit for file dated 1995-02-09 11:17:22
authorRichard Burgess <>
Thu, 9 Feb 1995 11:17:22 +0000 (11:17 +0000)
committerNathan Wagner <nw@hydaspes.if.org>
Mon, 17 Oct 2016 14:03:48 +0000 (14:03 +0000)
ossource/rs232.asm [new file with mode: 0644]

diff --git a/ossource/rs232.asm b/ossource/rs232.asm
new file mode 100644 (file)
index 0000000..7fdd40e
--- /dev/null
@@ -0,0 +1,2192 @@
+\r
+.DATA\r
+EXTRN _AllocExch FWORD\r
+EXTRN _InitDevDr FWORD\r
+EXTRN _AllocOSPage FWORD\r
+EXTRN _DeAllocPage FWORD\r
+EXTRN _UnMaskIRQ FWORD\r
+EXTRN _MaskIRQ FWORD\r
+EXTRN _SetIRQVector FWORD\r
+EXTRN _EndOfIRQ FWORD\r
+EXTRN _SendMsg FWORD\r
+EXTRN _ISendMsg FWORD\r
+EXTRN _WaitMsg FWORD\r
+EXTRN _CheckMsg FWORD\r
+EXTRN _GetTimerTick FWORD\r
+EXTRN _Alarm FWORD\r
+EXTRN _KillAlarm FWORD\r
+EXTRN _Sleep FWORD\r
+EXTRN _MicroDelay FWORD\r
+EXTRN _OutByte FWORD\r
+EXTRN _InByte FWORD\r
+EXTRN _CopyData FWORD\r
+EXTRN _GetJobNum FWORD\r
+_recv_timeout DD 1,0,0\r
+_xmit_timeout DD 10,0,0\r
+_control_byte DB 0,0,0\r
+_f16550 DB 2 DUP(0)\r
+_stat_byte DB 2 DUP(0)\r
+_mstat_byte DB 2 DUP(0)\r
+_int_id DB 2 DUP(0)\r
+_fExpectInt DB 2 DUP(0)\r
+_recv_error DD 2 DUP(0)\r
+_pSendBuf DD 2 DUP(0)\r
+_head_send DD 2 DUP(0)\r
+_tail_send DD 2 DUP(0)\r
+_cSendBuf DD 2 DUP(0)\r
+_sSendBuf DD 2 DUP(0)\r
+_pRecvBuf DD 2 DUP(0)\r
+_head_recv DD 2 DUP(0)\r
+_tail_recv DD 2 DUP(0)\r
+_cRecvBuf DD 2 DUP(0)\r
+_sRecvBuf DD 2 DUP(0)\r
+_THR DW 2 DUP(0)\r
+_IER DW 2 DUP(0)\r
+_IIR DW 2 DUP(0)\r
+_FCR DW 2 DUP(0)\r
+_LCR DW 2 DUP(0)\r
+_MCR DW 2 DUP(0)\r
+_LSR DW 2 DUP(0)\r
+_MSR DW 2 DUP(0)\r
+_DLAB_LO DW 2 DUP(0)\r
+_DLAB_HI DW 2 DUP(0)\r
+_comstat DB 128 DUP(0)\r
+_pCS DD 0h\r
+_comdcb DB 128 DUP(0)\r
+\r
+\r
+.CODE\r
+PUBLIC _coms_setup:\r
+       PUSH EBP\r
+       MOV EBP,ESP\r
+       SUB ESP,4\r
+       MOV ESI,OFFSET _comdcb\r
+       MOV EAX,67\r
+       MOV BYTE PTR [ESI], AL\r
+       MOV ESI,OFFSET _comdcb\r
+       MOV EAX,1\r
+       ADD ESI,EAX\r
+       MOV EAX,79\r
+       MOV BYTE PTR [ESI], AL\r
+       MOV ESI,OFFSET _comdcb\r
+       MOV EAX,2\r
+       ADD ESI,EAX\r
+       MOV EAX,77\r
+       MOV BYTE PTR [ESI], AL\r
+       MOV ESI,OFFSET _comdcb\r
+       MOV EAX,3\r
+       ADD ESI,EAX\r
+       MOV EAX,49\r
+       MOV BYTE PTR [ESI], AL\r
+       MOV ESI,OFFSET _comdcb\r
+       MOV EAX,4\r
+       MOV BYTE PTR [ESI+12], AL\r
+       MOV ESI,OFFSET _comdcb\r
+       MOV EAX,2\r
+       MOV BYTE PTR [ESI+13], AL\r
+       MOV ESI,OFFSET _comdcb\r
+       MOV EAX,1\r
+       MOV WORD PTR [ESI+14], AX\r
+       MOV ESI,OFFSET _comdcb\r
+       XOR EAX,EAX\r
+       MOV DWORD PTR [ESI+20], EAX\r
+       MOV ESI,OFFSET _comdcb\r
+       MOV EAX,OFFSET _comdev_op\r
+       MOV DWORD PTR [ESI+24], EAX\r
+       MOV ESI,OFFSET _comdcb\r
+       MOV EAX,OFFSET _comdev_init\r
+       MOV DWORD PTR [ESI+28], EAX\r
+       MOV ESI,OFFSET _comdcb\r
+       MOV EAX,OFFSET _comdev_stat\r
+       MOV DWORD PTR [ESI+32], EAX\r
+       MOV EAX,64\r
+       MOV ESI,OFFSET _comdcb\r
+       ADD ESI,EAX\r
+       MOV EAX,67\r
+       MOV BYTE PTR [ESI], AL\r
+       MOV EAX,64\r
+       MOV ESI,OFFSET _comdcb\r
+       ADD ESI,EAX\r
+       MOV EAX,1\r
+       ADD ESI,EAX\r
+       MOV EAX,79\r
+       MOV BYTE PTR [ESI], AL\r
+       MOV EAX,64\r
+       MOV ESI,OFFSET _comdcb\r
+       ADD ESI,EAX\r
+       MOV EAX,2\r
+       ADD ESI,EAX\r
+       MOV EAX,77\r
+       MOV BYTE PTR [ESI], AL\r
+       MOV EAX,64\r
+       MOV ESI,OFFSET _comdcb\r
+       ADD ESI,EAX\r
+       MOV EAX,3\r
+       ADD ESI,EAX\r
+       MOV EAX,50\r
+       MOV BYTE PTR [ESI], AL\r
+       MOV EAX,64\r
+       MOV ESI,OFFSET _comdcb\r
+       ADD ESI,EAX\r
+       MOV EAX,4\r
+       MOV BYTE PTR [ESI+12], AL\r
+       MOV EAX,64\r
+       MOV ESI,OFFSET _comdcb\r
+       ADD ESI,EAX\r
+       MOV EAX,2\r
+       MOV BYTE PTR [ESI+13], AL\r
+       MOV EAX,64\r
+       MOV ESI,OFFSET _comdcb\r
+       ADD ESI,EAX\r
+       MOV EAX,1\r
+       MOV WORD PTR [ESI+14], AX\r
+       MOV EAX,64\r
+       MOV ESI,OFFSET _comdcb\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV DWORD PTR [ESI+20], EAX\r
+       MOV EAX,64\r
+       MOV ESI,OFFSET _comdcb\r
+       ADD ESI,EAX\r
+       MOV EAX,OFFSET _comdev_op\r
+       MOV DWORD PTR [ESI+24], EAX\r
+       MOV EAX,64\r
+       MOV ESI,OFFSET _comdcb\r
+       ADD ESI,EAX\r
+       MOV EAX,OFFSET _comdev_init\r
+       MOV DWORD PTR [ESI+28], EAX\r
+       MOV EAX,64\r
+       MOV ESI,OFFSET _comdcb\r
+       ADD ESI,EAX\r
+       MOV EAX,OFFSET _comdev_stat\r
+       MOV DWORD PTR [ESI+32], EAX\r
+       MOV ESI,OFFSET _comstat\r
+       MOV EAX,9600\r
+       MOV DWORD PTR [ESI+12], EAX\r
+       MOV ESI,OFFSET _comstat\r
+       XOR EAX,EAX\r
+       MOV BYTE PTR [ESI+16], AL\r
+       MOV ESI,OFFSET _comstat\r
+       MOV EAX,8\r
+       MOV BYTE PTR [ESI+17], AL\r
+       MOV ESI,OFFSET _comstat\r
+       MOV EAX,1\r
+       MOV BYTE PTR [ESI+18], AL\r
+       MOV ESI,OFFSET _comstat\r
+       MOV EAX,100\r
+       MOV DWORD PTR [ESI+32], EAX\r
+       MOV ESI,OFFSET _comstat\r
+       MOV EAX,2\r
+       MOV DWORD PTR [ESI+36], EAX\r
+       MOV ESI,OFFSET _comstat\r
+       MOV EAX,1016\r
+       MOV DWORD PTR [ESI+20], EAX\r
+       MOV ESI,OFFSET _comstat\r
+       MOV EAX,4\r
+       MOV BYTE PTR [ESI+19], AL\r
+       MOV ESI,OFFSET _comstat\r
+       MOV EAX,4096\r
+       MOV DWORD PTR [ESI+24], EAX\r
+       MOV ESI,OFFSET _comstat\r
+       MOV EAX,4096\r
+       MOV DWORD PTR [ESI+28], EAX\r
+       MOV ESI,OFFSET _sSendBuf\r
+       MOV EAX,4096\r
+       MOV DWORD PTR [ESI], EAX\r
+       MOV ESI,OFFSET _sRecvBuf\r
+       MOV EAX,4096\r
+       MOV DWORD PTR [ESI], EAX\r
+       MOV EAX,64\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,9600\r
+       MOV DWORD PTR [ESI+12], EAX\r
+       MOV EAX,64\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV BYTE PTR [ESI+16], AL\r
+       MOV EAX,64\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,8\r
+       MOV BYTE PTR [ESI+17], AL\r
+       MOV EAX,64\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,1\r
+       MOV BYTE PTR [ESI+18], AL\r
+       MOV EAX,64\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,100\r
+       MOV DWORD PTR [ESI+32], EAX\r
+       MOV EAX,64\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,2\r
+       MOV DWORD PTR [ESI+36], EAX\r
+       MOV EAX,64\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,760\r
+       MOV DWORD PTR [ESI+20], EAX\r
+       MOV EAX,64\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,3\r
+       MOV BYTE PTR [ESI+19], AL\r
+       MOV EAX,64\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,4096\r
+       MOV DWORD PTR [ESI+24], EAX\r
+       MOV EAX,64\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,4096\r
+       MOV DWORD PTR [ESI+28], EAX\r
+       MOV EAX,4\r
+       MOV ESI,OFFSET _sSendBuf\r
+       ADD ESI,EAX\r
+       MOV EAX,4096\r
+       MOV DWORD PTR [ESI], EAX\r
+       MOV EAX,4\r
+       MOV ESI,OFFSET _sRecvBuf\r
+       ADD ESI,EAX\r
+       MOV EAX,4096\r
+       MOV DWORD PTR [ESI], EAX\r
+       PUSH 4\r
+       CALL FWORD PTR _MaskIRQ\r
+       PUSH 3\r
+       CALL FWORD PTR _MaskIRQ\r
+       PUSH 4\r
+       PUSH OFFSET _comISR0\r
+       CALL FWORD PTR _SetIRQVector\r
+       PUSH 3\r
+       PUSH OFFSET _comISR1\r
+       CALL FWORD PTR _SetIRQVector\r
+       PUSH 5\r
+       PUSH OFFSET _comdcb\r
+       PUSH 2\r
+       PUSH 1\r
+       CALL FWORD PTR _InitDevDr\r
+       MOV DWORD PTR [EBP-4], EAX\r
+       MOV ESP,EBP\r
+       POP EBP\r
+       RETN\r
+_handleISR:\r
+       PUSH EBP\r
+       MOV EBP,ESP\r
+       SUB ESP,8\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _pRecvBuf\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [ESI]\r
+       MOV DWORD PTR [EBP-4], EAX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _pSendBuf\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [ESI]\r
+       MOV DWORD PTR [EBP-8], EAX\r
+L_2:\r
+       MOV EAX,1\r
+       AND EAX,EAX\r
+       JZ L_3\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       MOV ESI,OFFSET _int_id\r
+       ADD ESI,EAX\r
+       MOV EBX,ESI\r
+       PUSH EBX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _IIR\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [ESI]\r
+       PUSH EAX\r
+       CALL FWORD PTR _InByte\r
+       POP EDX\r
+       MOV BYTE PTR [EDX], AL\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       MOV ESI,OFFSET _int_id\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [ESI]\r
+       JMP L_5\r
+L_6:\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       MOV ESI,OFFSET _stat_byte\r
+       ADD ESI,EAX\r
+       MOV EBX,ESI\r
+       PUSH EBX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _LSR\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [ESI]\r
+       PUSH EAX\r
+       CALL FWORD PTR _InByte\r
+       POP EDX\r
+       MOV BYTE PTR [EDX], AL\r
+       JMP L_4\r
+L_7:\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _cRecvBuf\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,2\r
+       MOV EBX,ESI\r
+       MOV ESI,OFFSET _sRecvBuf\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [EBX]\r
+       CMP EAX,DWORD PTR [ESI]\r
+       SETE AL\r
+       AND AL,AL\r
+       JZ L_8\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _recv_error\r
+       ADD ESI,EAX\r
+       MOV EAX,805\r
+       MOV DWORD PTR [ESI], EAX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _THR\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [ESI]\r
+       PUSH EAX\r
+       CALL FWORD PTR _InByte\r
+       JMP L_9\r
+L_8:\r
+       CLI\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _head_recv\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [ESI]\r
+       MOV ESI,DWORD PTR [EBP-4]\r
+       ADD ESI,EAX\r
+       MOV EBX,ESI\r
+       PUSH EBX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _THR\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [ESI]\r
+       PUSH EAX\r
+       CALL FWORD PTR _InByte\r
+       POP EDX\r
+       MOV BYTE PTR [EDX], AL\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _cRecvBuf\r
+       ADD ESI,EAX\r
+       INC DWORD PTR [ESI]\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _head_recv\r
+       ADD ESI,EAX\r
+       INC DWORD PTR [ESI]\r
+       MOV EAX,DWORD PTR [ESI]\r
+       CMP EAX,4096\r
+       SETE AL\r
+       AND AL,AL\r
+       JZ L_10\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _head_recv\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV DWORD PTR [ESI], EAX\r
+       STI\r
+L_10:\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _recv_error\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV DWORD PTR [ESI], EAX\r
+L_9:\r
+       JMP L_4\r
+L_11:\r
+       CLI\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _cSendBuf\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [ESI]\r
+       AND EAX,EAX\r
+       JZ L_12\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _tail_send\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [ESI]\r
+       MOV ESI,DWORD PTR [EBP-8]\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [ESI]\r
+       PUSH EAX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _THR\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [ESI]\r
+       PUSH EAX\r
+       CALL FWORD PTR _OutByte\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _tail_send\r
+       ADD ESI,EAX\r
+       INC DWORD PTR [ESI]\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,2\r
+       MOV EBX,ESI\r
+       MOV ESI,OFFSET _sSendBuf\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [EBX]\r
+       CMP EAX,DWORD PTR [ESI]\r
+       SETE AL\r
+       AND AL,AL\r
+       JZ L_13\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _tail_send\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV DWORD PTR [ESI], EAX\r
+L_13:\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _cSendBuf\r
+       ADD ESI,EAX\r
+       DEC DWORD PTR [ESI]\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       MOV ESI,OFFSET _fExpectInt\r
+       ADD ESI,EAX\r
+       MOV EAX,1\r
+       MOV BYTE PTR [ESI], AL\r
+       JMP L_14\r
+L_12:\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       MOV ESI,OFFSET _fExpectInt\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV BYTE PTR [ESI], AL\r
+L_14:\r
+       STI\r
+       JMP L_4\r
+L_15:\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       MOV ESI,OFFSET _mstat_byte\r
+       ADD ESI,EAX\r
+       MOV EBX,ESI\r
+       PUSH EBX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _MSR\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [ESI]\r
+       PUSH EAX\r
+       CALL FWORD PTR _InByte\r
+       POP EDX\r
+       MOV BYTE PTR [EDX], AL\r
+       JMP L_4\r
+L_16:\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       MOV ESI,OFFSET _stat_byte\r
+       ADD ESI,EAX\r
+       MOV EBX,ESI\r
+       PUSH EBX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _LSR\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [ESI]\r
+       PUSH EAX\r
+       CALL FWORD PTR _InByte\r
+       POP EDX\r
+       MOV BYTE PTR [EDX], AL\r
+L_17:\r
+       JMP L_18\r
+L_5:\r
+       CMP EAX,1\r
+       JE L_16\r
+       CMP EAX,0\r
+       JE L_15\r
+       CMP EAX,2\r
+       JE L_11\r
+       CMP EAX,4\r
+       JE L_7\r
+       CMP EAX,6\r
+       JE L_6\r
+       JMP L_17\r
+L_4:\r
+       JMP L_2\r
+L_3:\r
+L_18:\r
+       MOV ESP,EBP\r
+       POP EBP\r
+       RETN 4\r
+_comISR0:\r
+       PUSHAD\r
+       STI\r
+       XOR EAX,EAX\r
+       PUSH EAX\r
+       CALL _handleISR\r
+       PUSH 4\r
+       CALL FWORD PTR _EndOfIRQ\r
+       POPAD\r
+       IRETD\r
+_comISR1:\r
+       PUSHAD\r
+       STI\r
+       PUSH 1\r
+       CALL _handleISR\r
+       PUSH 3\r
+       CALL FWORD PTR _EndOfIRQ\r
+       POPAD\r
+       IRETD\r
+_ReadByteC:\r
+       PUSH EBP\r
+       MOV EBP,ESP\r
+       SUB ESP,8\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _pRecvBuf\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [ESI]\r
+       MOV DWORD PTR [EBP-8], EAX\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _recv_error\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [ESI]\r
+       AND EAX,EAX\r
+       JZ L_21\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _recv_error\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [ESI]\r
+       JMP L_22\r
+L_21:\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _cRecvBuf\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [ESI]\r
+       AND EAX,EAX\r
+       JZ L_23\r
+       MOV ESI,DWORD PTR [EBP+8]\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       SHL EAX,2\r
+       MOV EBX,ESI\r
+       MOV ESI,OFFSET _tail_recv\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [ESI]\r
+       MOV ESI,DWORD PTR [EBP-8]\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [ESI]\r
+       MOV BYTE PTR [EBX], AL\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _tail_recv\r
+       ADD ESI,EAX\r
+       INC DWORD PTR [ESI]\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       SHL EAX,2\r
+       MOV EBX,ESI\r
+       MOV ESI,OFFSET _sRecvBuf\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [EBX]\r
+       CMP EAX,DWORD PTR [ESI]\r
+       SETE AL\r
+       AND AL,AL\r
+       JZ L_24\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _tail_recv\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV DWORD PTR [ESI], EAX\r
+L_24:\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _cRecvBuf\r
+       ADD ESI,EAX\r
+       DEC DWORD PTR [ESI]\r
+       MOV EAX,DWORD PTR [ESI]\r
+       XOR EAX,EAX\r
+       JMP L_22\r
+L_23:\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [ESI+36]\r
+       MOV DWORD PTR [EBP-4], EAX\r
+L_25:\r
+       MOV EAX,DWORD PTR [EBP-4]\r
+       DEC DWORD PTR [EBP-4]\r
+       AND EAX,EAX\r
+       JZ L_26\r
+       PUSH 1\r
+       CALL FWORD PTR _Sleep\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _cRecvBuf\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [ESI]\r
+       AND EAX,EAX\r
+       JZ L_27\r
+       MOV ESI,DWORD PTR [EBP+8]\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       SHL EAX,2\r
+       MOV EBX,ESI\r
+       MOV ESI,OFFSET _tail_recv\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [ESI]\r
+       MOV ESI,DWORD PTR [EBP-8]\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [ESI]\r
+       MOV BYTE PTR [EBX], AL\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _tail_recv\r
+       ADD ESI,EAX\r
+       INC DWORD PTR [ESI]\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       SHL EAX,2\r
+       MOV EBX,ESI\r
+       MOV ESI,OFFSET _sRecvBuf\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [EBX]\r
+       CMP EAX,DWORD PTR [ESI]\r
+       SETE AL\r
+       AND AL,AL\r
+       JZ L_28\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _tail_recv\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV DWORD PTR [ESI], EAX\r
+L_28:\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _cRecvBuf\r
+       ADD ESI,EAX\r
+       DEC DWORD PTR [ESI]\r
+       MOV EAX,DWORD PTR [ESI]\r
+       XOR EAX,EAX\r
+       JMP L_22\r
+L_27:\r
+       JMP L_25\r
+L_26:\r
+       MOV EAX,800\r
+L_22:\r
+       MOV ESP,EBP\r
+       POP EBP\r
+       RETN 8\r
+_ReadRecordC:\r
+       PUSH EBP\r
+       MOV EBP,ESP\r
+       SUB ESP,4\r
+       XOR EAX,EAX\r
+       MOV WORD PTR [EBP-2], AX\r
+       XOR EAX,EAX\r
+       MOV WORD PTR [EBP-4], AX\r
+L_29:\r
+       MOVSX EAX,WORD PTR [EBP-4]\r
+       MOVZX ECX,WORD PTR [EBP+12]\r
+       CMP EAX,ECX\r
+       SETB AL\r
+       AND AL,AL\r
+       JZ L_31\r
+       MOVSX EAX,WORD PTR [EBP-2]\r
+       AND EAX,EAX\r
+       SETZ AL\r
+       AND AL,AL\r
+L_31:\r
+       JZ L_30\r
+       PUSH DWORD PTR [EBP+20]\r
+       MOV ESI,DWORD PTR [EBP+16]\r
+       INC DWORD PTR [EBP+16]\r
+       PUSH DWORD PTR [ESI]\r
+       CALL _ReadByteC\r
+       MOV WORD PTR [EBP-2], AX\r
+       MOVSX EAX,WORD PTR [EBP-2]\r
+       AND EAX,EAX\r
+       JNZ L_32\r
+       INC WORD PTR [EBP-4]\r
+       MOVSX EAX,WORD PTR [EBP-4]\r
+L_32:\r
+       JMP L_29\r
+L_30:\r
+       MOV ESI,DWORD PTR [EBP+8]\r
+       MOVSX EAX,WORD PTR [EBP-4]\r
+       MOV WORD PTR [ESI], AX\r
+       MOVSX EAX,WORD PTR [EBP-2]\r
+       MOV ESP,EBP\r
+       POP EBP\r
+       RETN 16\r
+_WriteByteC:\r
+       PUSH EBP\r
+       MOV EBP,ESP\r
+       SUB ESP,12\r
+       XOR EAX,EAX\r
+       MOV DWORD PTR [EBP-4], EAX\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _pSendBuf\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [ESI]\r
+       MOV DWORD PTR [EBP-12], EAX\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [ESI+32]\r
+       MOV DWORD PTR [EBP-8], EAX\r
+L_34:\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _cSendBuf\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       SHL EAX,2\r
+       MOV EBX,ESI\r
+       MOV ESI,OFFSET _sSendBuf\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [EBX]\r
+       CMP EAX,DWORD PTR [ESI]\r
+       SETE AL\r
+       AND AL,AL\r
+       JZ L_35\r
+       PUSH 1\r
+       CALL FWORD PTR _Sleep\r
+       MOV EAX,DWORD PTR [EBP-8]\r
+       DEC DWORD PTR [EBP-8]\r
+       MOV EAX,DWORD PTR [EBP-8]\r
+       AND EAX,EAX\r
+       JNZ L_36\r
+       MOV EAX,801\r
+       JMP L_37\r
+L_36:\r
+       JMP L_34\r
+L_35:\r
+       CLI\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       MOV ESI,OFFSET _fExpectInt\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [ESI]\r
+       AND EAX,EAX\r
+       JNZ L_38\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [EBP+8]\r
+       PUSH EAX\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _THR\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [ESI]\r
+       PUSH EAX\r
+       CALL FWORD PTR _OutByte\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       MOV ESI,OFFSET _fExpectInt\r
+       ADD ESI,EAX\r
+       MOV EAX,1\r
+       MOV BYTE PTR [ESI], AL\r
+       JMP L_39\r
+L_38:\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _head_send\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [ESI]\r
+       MOV ESI,DWORD PTR [EBP-12]\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [EBP+8]\r
+       MOV BYTE PTR [ESI], AL\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _head_send\r
+       ADD ESI,EAX\r
+       INC DWORD PTR [ESI]\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       SHL EAX,2\r
+       MOV EBX,ESI\r
+       MOV ESI,OFFSET _sSendBuf\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [EBX]\r
+       CMP EAX,DWORD PTR [ESI]\r
+       SETE AL\r
+       AND AL,AL\r
+       JZ L_40\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _head_send\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV DWORD PTR [ESI], EAX\r
+L_40:\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _cSendBuf\r
+       ADD ESI,EAX\r
+       INC DWORD PTR [ESI]\r
+       MOV EAX,DWORD PTR [ESI]\r
+L_39:\r
+       STI\r
+       MOV EAX,DWORD PTR [EBP-4]\r
+L_37:\r
+       MOV ESP,EBP\r
+       POP EBP\r
+       RETN 8\r
+_WriteRecordC:\r
+       PUSH EBP\r
+       MOV EBP,ESP\r
+       SUB ESP,2\r
+       XOR EAX,EAX\r
+       MOV WORD PTR [EBP-2], AX\r
+L_41:\r
+       MOVZX EAX,WORD PTR [EBP+8]\r
+       AND EAX,EAX\r
+       JZ L_43\r
+       MOVSX EAX,WORD PTR [EBP-2]\r
+       AND EAX,EAX\r
+       SETZ AL\r
+       AND AL,AL\r
+L_43:\r
+       JZ L_42\r
+       PUSH DWORD PTR [EBP+16]\r
+       MOV ESI,DWORD PTR [EBP+12]\r
+       INC DWORD PTR [EBP+12]\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [ESI]\r
+       PUSH EAX\r
+       CALL _WriteByteC\r
+       MOV WORD PTR [EBP-2], AX\r
+       DEC WORD PTR [EBP+8]\r
+       MOVZX EAX,WORD PTR [EBP+8]\r
+       JMP L_41\r
+L_42:\r
+       MOVSX EAX,WORD PTR [EBP-2]\r
+       MOV ESP,EBP\r
+       POP EBP\r
+       RETN 12\r
+_DiscardRecvC:\r
+       PUSH EBP\r
+       MOV EBP,ESP\r
+       SUB ESP,9\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [ESI+36]\r
+       MOV DWORD PTR [EBP-4], EAX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,1\r
+       MOV DWORD PTR [ESI+36], EAX\r
+       XOR EAX,EAX\r
+       MOV DWORD PTR [EBP-8], EAX\r
+L_45:\r
+       MOV EAX,DWORD PTR [EBP-8]\r
+       AND EAX,EAX\r
+       JNZ L_46\r
+       PUSH DWORD PTR [EBP+8]\r
+       LEA EAX,BYTE PTR [EBP-9]\r
+       PUSH EAX\r
+       CALL _ReadByteC\r
+       MOV DWORD PTR [EBP-8], EAX\r
+       JMP L_45\r
+L_46:\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [EBP-4]\r
+       MOV DWORD PTR [ESI+36], EAX\r
+       XOR EAX,EAX\r
+       MOV ESP,EBP\r
+       POP EBP\r
+       RETN 4\r
+_SetParams:\r
+       PUSH EBP\r
+       MOV EBP,ESP\r
+       SUB ESP,13\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [ESI+16]\r
+       MOV BYTE PTR [EBP-10], AL\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [ESI+17]\r
+       MOV BYTE PTR [EBP-11], AL\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [ESI+18]\r
+       MOV BYTE PTR [EBP-12], AL\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [ESI+12]\r
+       MOV DWORD PTR [EBP-8], EAX\r
+       MOV EAX,115200\r
+       MOV ECX,DWORD PTR [EBP-8]\r
+       XOR EDX,EDX\r
+       DIV ECX\r
+       MOV DWORD PTR [EBP-4], EAX\r
+       CLI\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _LCR\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [ESI]\r
+       PUSH EAX\r
+       CALL FWORD PTR _InByte\r
+       MOV BYTE PTR [EBP-9], AL\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [EBP-9]\r
+       MOV ECX,128\r
+       OR EAX,ECX\r
+       PUSH EAX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _LCR\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [ESI]\r
+       PUSH EAX\r
+       CALL FWORD PTR _OutByte\r
+       MOV EAX,DWORD PTR [EBP-4]\r
+       AND EAX,255\r
+       PUSH EAX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _DLAB_LO\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [ESI]\r
+       PUSH EAX\r
+       CALL FWORD PTR _OutByte\r
+       MOV EAX,DWORD PTR [EBP-4]\r
+       MOV ECX,8\r
+       SHR EAX,CL\r
+       AND EAX,255\r
+       PUSH EAX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _DLAB_HI\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [ESI]\r
+       PUSH EAX\r
+       CALL FWORD PTR _OutByte\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [EBP-9]\r
+       PUSH EAX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _LCR\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [ESI]\r
+       PUSH EAX\r
+       CALL FWORD PTR _OutByte\r
+       STI\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [EBP-11]\r
+       MOV ECX,5\r
+       SUB EAX,ECX\r
+       MOV BYTE PTR [EBP-13], AL\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [EBP-12]\r
+       CMP EAX,1\r
+       SETE AL\r
+       AND AL,AL\r
+       JZ SHORT L_49\r
+       XOR EAX,EAX\r
+       JMP SHORT L_48\r
+L_49:\r
+       MOV EAX,4\r
+L_48:\r
+       XOR ECX,ECX\r
+       MOV CL,BYTE PTR [EBP-13]\r
+       OR EAX,ECX\r
+       MOV BYTE PTR [EBP-13], AL\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [EBP-10]\r
+       JMP L_51\r
+L_52:\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [EBP-13]\r
+       XOR ECX,ECX\r
+       OR EAX,ECX\r
+       MOV BYTE PTR [EBP-13], AL\r
+       JMP L_50\r
+L_53:\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [EBP-13]\r
+       MOV ECX,8\r
+       OR EAX,ECX\r
+       MOV BYTE PTR [EBP-13], AL\r
+       JMP L_50\r
+L_54:\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [EBP-13]\r
+       MOV ECX,24\r
+       OR EAX,ECX\r
+       MOV BYTE PTR [EBP-13], AL\r
+       JMP L_50\r
+L_51:\r
+       CMP EAX,1\r
+       JE L_54\r
+       CMP EAX,2\r
+       JE L_53\r
+       CMP EAX,0\r
+       JE L_52\r
+L_50:\r
+       CLI\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [EBP-13]\r
+       PUSH EAX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _LCR\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [ESI]\r
+       PUSH EAX\r
+       CALL FWORD PTR _OutByte\r
+       STI\r
+       XOR EAX,EAX\r
+L_55:\r
+       MOV ESP,EBP\r
+       POP EBP\r
+       RETN 4\r
+_OpenCommC:\r
+       PUSH EBP\r
+       MOV EBP,ESP\r
+       SUB ESP,7\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [ESI]\r
+       AND EAX,EAX\r
+       JZ L_56\r
+       MOV EAX,809\r
+       JMP L_57\r
+L_56:\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       PUSH ESI\r
+       CALL FWORD PTR _GetJobNum\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [ESI+24]\r
+       MOV ECX,4096\r
+       XOR EDX,EDX\r
+       DIV ECX\r
+       PUSH EAX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _pSendBuf\r
+       ADD ESI,EAX\r
+       PUSH ESI\r
+       CALL FWORD PTR _AllocOSPage\r
+       MOV DWORD PTR [EBP-4], EAX\r
+       MOV EAX,DWORD PTR [EBP-4]\r
+       AND EAX,EAX\r
+       JNZ L_58\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [ESI+28]\r
+       MOV ECX,4096\r
+       XOR EDX,EDX\r
+       DIV ECX\r
+       PUSH EAX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _pRecvBuf\r
+       ADD ESI,EAX\r
+       PUSH ESI\r
+       CALL FWORD PTR _AllocOSPage\r
+       MOV DWORD PTR [EBP-4], EAX\r
+       MOV EAX,DWORD PTR [EBP-4]\r
+       AND EAX,EAX\r
+       JZ L_59\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _pSendBuf\r
+       ADD ESI,EAX\r
+       PUSH DWORD PTR [ESI]\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [ESI+24]\r
+       MOV ECX,4096\r
+       XOR EDX,EDX\r
+       DIV ECX\r
+       PUSH EAX\r
+       CALL FWORD PTR _DeAllocPage\r
+L_59:\r
+L_58:\r
+       MOV EAX,DWORD PTR [EBP-4]\r
+       AND EAX,EAX\r
+       JZ L_60\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV DWORD PTR [ESI], EAX\r
+       MOV EAX,DWORD PTR [EBP-4]\r
+       JMP L_57\r
+L_60:\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [ESI+20]\r
+       MOV WORD PTR [EBP-6], AX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _cSendBuf\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV DWORD PTR [ESI], EAX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _head_send\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV DWORD PTR [ESI], EAX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _tail_send\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV DWORD PTR [ESI], EAX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _cRecvBuf\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV DWORD PTR [ESI], EAX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _head_recv\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV DWORD PTR [ESI], EAX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _tail_recv\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV DWORD PTR [ESI], EAX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _recv_error\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV DWORD PTR [ESI], EAX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _THR\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [EBP-6]\r
+       MOV WORD PTR [ESI], AX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _IER\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [EBP-6]\r
+       MOV ECX,1\r
+       ADD EAX,ECX\r
+       MOV WORD PTR [ESI], AX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _IIR\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [EBP-6]\r
+       MOV ECX,2\r
+       ADD EAX,ECX\r
+       MOV WORD PTR [ESI], AX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _FCR\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [EBP-6]\r
+       MOV ECX,2\r
+       ADD EAX,ECX\r
+       MOV WORD PTR [ESI], AX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _LCR\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [EBP-6]\r
+       MOV ECX,3\r
+       ADD EAX,ECX\r
+       MOV WORD PTR [ESI], AX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _MCR\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [EBP-6]\r
+       MOV ECX,4\r
+       ADD EAX,ECX\r
+       MOV WORD PTR [ESI], AX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _LSR\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [EBP-6]\r
+       MOV ECX,5\r
+       ADD EAX,ECX\r
+       MOV WORD PTR [ESI], AX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _MSR\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [EBP-6]\r
+       MOV ECX,6\r
+       ADD EAX,ECX\r
+       MOV WORD PTR [ESI], AX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _DLAB_HI\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [EBP-6]\r
+       MOV ECX,1\r
+       ADD EAX,ECX\r
+       MOV WORD PTR [ESI], AX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _DLAB_LO\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [EBP-6]\r
+       MOV WORD PTR [ESI], AX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _THR\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [ESI]\r
+       PUSH EAX\r
+       CALL FWORD PTR _InByte\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _LSR\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [ESI]\r
+       PUSH EAX\r
+       CALL FWORD PTR _InByte\r
+       CLI\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       MOV ESI,OFFSET _control_byte\r
+       ADD ESI,EAX\r
+       MOV EAX,11\r
+       MOV BYTE PTR [ESI], AL\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       MOV ESI,OFFSET _control_byte\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [ESI]\r
+       PUSH EAX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _MCR\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [ESI]\r
+       PUSH EAX\r
+       CALL FWORD PTR _OutByte\r
+       PUSH 15\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _IER\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [ESI]\r
+       PUSH EAX\r
+       CALL FWORD PTR _OutByte\r
+       PUSH 3\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _FCR\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [ESI]\r
+       PUSH EAX\r
+       CALL FWORD PTR _OutByte\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _IIR\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [ESI]\r
+       PUSH EAX\r
+       CALL FWORD PTR _InByte\r
+       MOV BYTE PTR [EBP-7], AL\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [EBP-7]\r
+       MOV ECX,192\r
+       AND EAX,ECX\r
+       JZ L_61\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       MOV ESI,OFFSET _f16550\r
+       ADD ESI,EAX\r
+       MOV EAX,1\r
+       MOV BYTE PTR [ESI], AL\r
+       JMP L_62\r
+L_61:\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       MOV ESI,OFFSET _f16550\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV BYTE PTR [ESI], AL\r
+L_62:\r
+       STI\r
+       PUSH DWORD PTR [EBP+8]\r
+       CALL _SetParams\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [ESI+19]\r
+       PUSH EAX\r
+       CALL FWORD PTR _UnMaskIRQ\r
+       XOR EAX,EAX\r
+L_57:\r
+       MOV ESP,EBP\r
+       POP EBP\r
+       RETN 4\r
+_CloseCommC:\r
+       PUSH EBP\r
+       MOV EBP,ESP\r
+       SUB ESP,4\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [ESI+19]\r
+       PUSH EAX\r
+       CALL FWORD PTR _MaskIRQ\r
+       XOR EAX,EAX\r
+       PUSH EAX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _MCR\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [ESI]\r
+       PUSH EAX\r
+       CALL FWORD PTR _OutByte\r
+       XOR EAX,EAX\r
+       PUSH EAX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _IER\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [ESI]\r
+       PUSH EAX\r
+       CALL FWORD PTR _OutByte\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _pSendBuf\r
+       ADD ESI,EAX\r
+       PUSH DWORD PTR [ESI]\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [ESI+24]\r
+       MOV ECX,4096\r
+       XOR EDX,EDX\r
+       DIV ECX\r
+       PUSH EAX\r
+       CALL FWORD PTR _DeAllocPage\r
+       MOV DWORD PTR [EBP-4], EAX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _pRecvBuf\r
+       ADD ESI,EAX\r
+       PUSH DWORD PTR [ESI]\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [ESI+28]\r
+       MOV ECX,4096\r
+       XOR EDX,EDX\r
+       DIV ECX\r
+       PUSH EAX\r
+       CALL FWORD PTR _DeAllocPage\r
+       MOV DWORD PTR [EBP-4], EAX\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV DWORD PTR [ESI], EAX\r
+       MOV EAX,DWORD PTR [EBP-4]\r
+       MOV ESP,EBP\r
+       POP EBP\r
+       RETN 4\r
+_comdev_op:\r
+       PUSH EBP\r
+       MOV EBP,ESP\r
+       SUB ESP,13\r
+       MOV EAX,DWORD PTR [EBP+24]\r
+       CMP EAX,5\r
+       SETE AL\r
+       AND AL,AL\r
+       JZ L_64\r
+       XOR EAX,EAX\r
+       MOV DWORD PTR [EBP-12], EAX\r
+       JMP L_65\r
+L_64:\r
+       MOV EAX,1\r
+       MOV DWORD PTR [EBP-12], EAX\r
+L_65:\r
+       LEA EAX,DWORD PTR [EBP-8]\r
+       PUSH EAX\r
+       CALL FWORD PTR _GetJobNum\r
+       MOV EAX,DWORD PTR [EBP-12]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [ESI]\r
+       AND EAX,EAX\r
+       SETZ AL\r
+       AND AL,AL\r
+       JZ L_66\r
+       MOV EAX,DWORD PTR [EBP+20]\r
+       CMP EAX,10\r
+       SETNE AL\r
+       AND AL,AL\r
+L_66:\r
+       JZ L_67\r
+       MOV EAX,807\r
+       JMP L_68\r
+L_67:\r
+       MOV EAX,DWORD PTR [EBP-12]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [ESI]\r
+       AND EAX,EAX\r
+       JZ L_69\r
+       MOV EAX,DWORD PTR [EBP-12]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [ESI]\r
+       CMP EAX,DWORD PTR [EBP-8]\r
+       SETNE AL\r
+       AND AL,AL\r
+       JZ L_70\r
+       MOV EAX,DWORD PTR [EBP-8]\r
+       CMP EAX,1\r
+       SETNE AL\r
+       AND AL,AL\r
+L_70:\r
+       JZ L_71\r
+       MOV EAX,812\r
+       JMP L_68\r
+L_71:\r
+L_69:\r
+       XOR EAX,EAX\r
+       MOV DWORD PTR [EBP-4], EAX\r
+       MOV EAX,DWORD PTR [EBP+20]\r
+       JMP L_73\r
+L_74:\r
+       JMP L_72\r
+L_75:\r
+       PUSH DWORD PTR [EBP-12]\r
+       PUSH DWORD PTR [EBP+8]\r
+       CALL _ReadByteC\r
+       MOV DWORD PTR [EBP-4], EAX\r
+       JMP L_72\r
+L_76:\r
+       PUSH DWORD PTR [EBP-12]\r
+       MOV ESI,DWORD PTR [EBP+8]\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [ESI]\r
+       PUSH EAX\r
+       CALL _WriteByteC\r
+       MOV DWORD PTR [EBP-4], EAX\r
+       JMP L_72\r
+L_77:\r
+       PUSH DWORD PTR [EBP-12]\r
+       PUSH DWORD PTR [EBP+8]\r
+       PUSH DWORD PTR [EBP+12]\r
+       MOV EAX,DWORD PTR [EBP-12]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,ESI\r
+       ADD EAX,8\r
+       PUSH EAX\r
+       CALL _ReadRecordC\r
+       MOV DWORD PTR [EBP-4], EAX\r
+       JMP L_72\r
+L_78:\r
+       PUSH DWORD PTR [EBP-12]\r
+       PUSH DWORD PTR [EBP+8]\r
+       PUSH DWORD PTR [EBP+12]\r
+       CALL _WriteRecordC\r
+       MOV DWORD PTR [EBP-4], EAX\r
+       JMP L_72\r
+L_79:\r
+       MOV EAX,DWORD PTR [EBP-12]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [EBP+16]\r
+       MOV DWORD PTR [ESI+36], EAX\r
+       JMP L_72\r
+L_80:\r
+       MOV EAX,DWORD PTR [EBP-12]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [EBP+16]\r
+       MOV DWORD PTR [ESI+32], EAX\r
+       JMP L_72\r
+L_81:\r
+       PUSH DWORD PTR [EBP-12]\r
+       CALL _OpenCommC\r
+       MOV DWORD PTR [EBP-4], EAX\r
+       JMP L_72\r
+L_82:\r
+       PUSH DWORD PTR [EBP-12]\r
+       CALL _CloseCommC\r
+       MOV DWORD PTR [EBP-4], EAX\r
+       JMP L_72\r
+L_83:\r
+       PUSH DWORD PTR [EBP-12]\r
+       CALL _DiscardRecvC\r
+       MOV DWORD PTR [EBP-4], EAX\r
+       JMP L_72\r
+L_84:\r
+       MOV EAX,DWORD PTR [EBP-12]\r
+       MOV ESI,OFFSET _control_byte\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [ESI]\r
+       MOV ECX,1\r
+       OR EAX,ECX\r
+       MOV BYTE PTR [ESI], AL\r
+       MOV EAX,DWORD PTR [EBP-12]\r
+       MOV ESI,OFFSET _control_byte\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [ESI]\r
+       PUSH EAX\r
+       MOV EAX,DWORD PTR [EBP-12]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _LCR\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [ESI]\r
+       PUSH EAX\r
+       CALL FWORD PTR _OutByte\r
+       JMP L_72\r
+L_85:\r
+       MOV EAX,DWORD PTR [EBP-12]\r
+       MOV ESI,OFFSET _control_byte\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [ESI]\r
+       MOV ECX,2\r
+       OR EAX,ECX\r
+       MOV BYTE PTR [ESI], AL\r
+       MOV EAX,DWORD PTR [EBP-12]\r
+       MOV ESI,OFFSET _control_byte\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [ESI]\r
+       PUSH EAX\r
+       MOV EAX,DWORD PTR [EBP-12]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _MCR\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [ESI]\r
+       PUSH EAX\r
+       CALL FWORD PTR _OutByte\r
+       JMP L_72\r
+L_86:\r
+       MOV EAX,DWORD PTR [EBP-12]\r
+       MOV ESI,OFFSET _control_byte\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [ESI]\r
+       MOV ECX,-2\r
+       AND EAX,ECX\r
+       MOV BYTE PTR [ESI], AL\r
+       MOV EAX,DWORD PTR [EBP-12]\r
+       MOV ESI,OFFSET _control_byte\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [ESI]\r
+       PUSH EAX\r
+       MOV EAX,DWORD PTR [EBP-12]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _LCR\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [ESI]\r
+       PUSH EAX\r
+       CALL FWORD PTR _OutByte\r
+L_87:\r
+       MOV EAX,DWORD PTR [EBP-12]\r
+       MOV ESI,OFFSET _control_byte\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [ESI]\r
+       MOV ECX,-3\r
+       AND EAX,ECX\r
+       MOV BYTE PTR [ESI], AL\r
+       MOV EAX,DWORD PTR [EBP-12]\r
+       MOV ESI,OFFSET _control_byte\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [ESI]\r
+       PUSH EAX\r
+       MOV EAX,DWORD PTR [EBP-12]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _MCR\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [ESI]\r
+       PUSH EAX\r
+       CALL FWORD PTR _OutByte\r
+       JMP L_72\r
+L_88:\r
+       MOV EAX,DWORD PTR [EBP-12]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _LCR\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [ESI]\r
+       PUSH EAX\r
+       CALL FWORD PTR _InByte\r
+       MOV BYTE PTR [EBP-13], AL\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [EBP-13]\r
+       MOV ECX,64\r
+       OR EAX,ECX\r
+       PUSH EAX\r
+       MOV EAX,DWORD PTR [EBP-12]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _LCR\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [ESI]\r
+       PUSH EAX\r
+       CALL FWORD PTR _OutByte\r
+       PUSH DWORD PTR [EBP+16]\r
+       CALL FWORD PTR _Sleep\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [EBP-13]\r
+       PUSH EAX\r
+       MOV EAX,DWORD PTR [EBP-12]\r
+       SHL EAX,1\r
+       MOV ESI,OFFSET _LCR\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [ESI]\r
+       PUSH EAX\r
+       CALL FWORD PTR _OutByte\r
+       JMP L_72\r
+L_89:\r
+       MOV ESI,DWORD PTR [EBP+8]\r
+       MOV EAX,DWORD PTR [EBP-12]\r
+       MOV EBX,ESI\r
+       MOV ESI,OFFSET _mstat_byte\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [ESI]\r
+       MOV ECX,128\r
+       AND EAX,ECX\r
+       MOV BYTE PTR [EBX], AL\r
+       JMP L_72\r
+L_90:\r
+       MOV ESI,DWORD PTR [EBP+8]\r
+       MOV EAX,DWORD PTR [EBP-12]\r
+       MOV EBX,ESI\r
+       MOV ESI,OFFSET _mstat_byte\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [ESI]\r
+       MOV ECX,32\r
+       AND EAX,ECX\r
+       MOV BYTE PTR [EBX], AL\r
+       JMP L_72\r
+L_91:\r
+       MOV ESI,DWORD PTR [EBP+8]\r
+       MOV EAX,DWORD PTR [EBP-12]\r
+       MOV EBX,ESI\r
+       MOV ESI,OFFSET _mstat_byte\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [ESI]\r
+       MOV ECX,16\r
+       AND EAX,ECX\r
+       MOV BYTE PTR [EBX], AL\r
+       JMP L_72\r
+L_92:\r
+       MOV ESI,DWORD PTR [EBP+8]\r
+       MOV EAX,DWORD PTR [EBP-12]\r
+       MOV EBX,ESI\r
+       MOV ESI,OFFSET _mstat_byte\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [ESI]\r
+       MOV ECX,64\r
+       AND EAX,ECX\r
+       MOV BYTE PTR [EBX], AL\r
+       JMP L_72\r
+L_93:\r
+       JMP L_72\r
+L_73:\r
+       CMP EAX,23\r
+       JE L_92\r
+       CMP EAX,22\r
+       JE L_91\r
+       CMP EAX,21\r
+       JE L_90\r
+       CMP EAX,20\r
+       JE L_89\r
+       CMP EAX,19\r
+       JE L_88\r
+       CMP EAX,18\r
+       JE L_87\r
+       CMP EAX,17\r
+       JE L_86\r
+       CMP EAX,16\r
+       JE L_85\r
+       CMP EAX,15\r
+       JE L_84\r
+       CMP EAX,12\r
+       JE L_83\r
+       CMP EAX,11\r
+       JE L_82\r
+       CMP EAX,10\r
+       JE L_81\r
+       CMP EAX,14\r
+       JE L_80\r
+       CMP EAX,13\r
+       JE L_79\r
+       CMP EAX,2\r
+       JE L_78\r
+       CMP EAX,1\r
+       JE L_77\r
+       CMP EAX,32\r
+       JE L_76\r
+       CMP EAX,31\r
+       JE L_75\r
+       CMP EAX,0\r
+       JE L_74\r
+       JMP L_93\r
+L_72:\r
+       MOV EAX,DWORD PTR [EBP-12]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [EBP-4]\r
+       MOV DWORD PTR [ESI+4], EAX\r
+       MOV EAX,DWORD PTR [EBP-4]\r
+L_68:\r
+       MOV ESP,EBP\r
+       POP EBP\r
+       RETN 20\r
+_comdev_stat:\r
+       PUSH EBP\r
+       MOV EBP,ESP\r
+       SUB ESP,8\r
+       MOV EAX,DWORD PTR [EBP+20]\r
+       CMP EAX,5\r
+       SETE AL\r
+       AND AL,AL\r
+       JZ L_94\r
+       XOR EAX,EAX\r
+       MOV DWORD PTR [EBP-8], EAX\r
+       JMP L_95\r
+L_94:\r
+       MOV EAX,1\r
+       MOV DWORD PTR [EBP-8], EAX\r
+L_95:\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       CMP EAX,64\r
+       SETA AL\r
+       AND AL,AL\r
+       JZ L_96\r
+       MOV EAX,64\r
+       MOV DWORD PTR [EBP-4], EAX\r
+       JMP L_97\r
+L_96:\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       MOV DWORD PTR [EBP-4], EAX\r
+L_97:\r
+       MOV EAX,DWORD PTR [EBP-8]\r
+       AND EAX,EAX\r
+       JNZ L_98\r
+       PUSH OFFSET _comstat\r
+       PUSH DWORD PTR [EBP+16]\r
+       PUSH DWORD PTR [EBP-4]\r
+       CALL FWORD PTR _CopyData\r
+       JMP L_99\r
+L_98:\r
+       MOV EAX,64\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       PUSH ESI\r
+       PUSH DWORD PTR [EBP+16]\r
+       PUSH DWORD PTR [EBP-4]\r
+       CALL FWORD PTR _CopyData\r
+L_99:\r
+       MOV ESI,DWORD PTR [EBP+8]\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       MOV DWORD PTR [ESI], EAX\r
+       XOR EAX,EAX\r
+       MOV ESP,EBP\r
+       POP EBP\r
+       RETN 16\r
+_comdev_init:\r
+       PUSH EBP\r
+       MOV EBP,ESP\r
+       SUB ESP,34\r
+       MOV EAX,DWORD PTR [EBP+16]\r
+       CMP EAX,5\r
+       SETE AL\r
+       AND AL,AL\r
+       JZ L_101\r
+       XOR EAX,EAX\r
+       MOV DWORD PTR [EBP-16], EAX\r
+       JMP L_102\r
+L_101:\r
+       MOV EAX,1\r
+       MOV DWORD PTR [EBP-16], EAX\r
+L_102:\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       CMP EAX,40\r
+       SETB AL\r
+       AND AL,AL\r
+       JZ L_103\r
+       MOV EAX,827\r
+       JMP L_104\r
+L_103:\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       MOV _pCS, EAX\r
+       MOV ESI,_pCS\r
+       MOV EAX,DWORD PTR [ESI+12]\r
+       MOV DWORD PTR [EBP-20], EAX\r
+       MOV ESI,_pCS\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [ESI+16]\r
+       MOV BYTE PTR [EBP-31], AL\r
+       MOV ESI,_pCS\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [ESI+17]\r
+       MOV BYTE PTR [EBP-32], AL\r
+       MOV ESI,_pCS\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [ESI+18]\r
+       MOV BYTE PTR [EBP-33], AL\r
+       MOV ESI,_pCS\r
+       MOV EAX,DWORD PTR [ESI+32]\r
+       MOV DWORD PTR [EBP-24], EAX\r
+       MOV ESI,_pCS\r
+       MOV EAX,DWORD PTR [ESI+36]\r
+       MOV DWORD PTR [EBP-28], EAX\r
+       MOV ESI,_pCS\r
+       MOV EAX,DWORD PTR [ESI+20]\r
+       MOV WORD PTR [EBP-30], AX\r
+       MOV ESI,_pCS\r
+       MOV EAX,DWORD PTR [ESI+24]\r
+       MOV DWORD PTR [EBP-8], EAX\r
+       MOV ESI,_pCS\r
+       MOV EAX,DWORD PTR [ESI+28]\r
+       MOV DWORD PTR [EBP-12], EAX\r
+       MOV ESI,_pCS\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [ESI+19]\r
+       MOV BYTE PTR [EBP-34], AL\r
+       MOV EAX,DWORD PTR [EBP-20]\r
+       CMP EAX,38400\r
+       SETA AL\r
+       AND AL,AL\r
+       JNZ L_105\r
+       MOV EAX,DWORD PTR [EBP-20]\r
+       CMP EAX,150\r
+       SETB AL\r
+       AND AL,AL\r
+L_105:\r
+       JZ L_106\r
+       MOV EAX,820\r
+       JMP L_104\r
+L_106:\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [EBP-31]\r
+       XOR ECX,ECX\r
+       CMP EAX,ECX\r
+       SETB AL\r
+       AND AL,AL\r
+       JNZ L_107\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [EBP-31]\r
+       CMP EAX,2\r
+       SETA AL\r
+       AND AL,AL\r
+L_107:\r
+       JZ L_108\r
+       MOV EAX,821\r
+       JMP L_104\r
+L_108:\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [EBP-32]\r
+       CMP EAX,5\r
+       SETB AL\r
+       AND AL,AL\r
+       JNZ L_109\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [EBP-32]\r
+       CMP EAX,8\r
+       SETA AL\r
+       AND AL,AL\r
+L_109:\r
+       JZ L_110\r
+       MOV EAX,822\r
+       JMP L_104\r
+L_110:\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [EBP-33]\r
+       CMP EAX,1\r
+       SETB AL\r
+       AND AL,AL\r
+       JNZ L_111\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [EBP-33]\r
+       CMP EAX,2\r
+       SETA AL\r
+       AND AL,AL\r
+L_111:\r
+       JZ L_112\r
+       MOV EAX,823\r
+       JMP L_104\r
+L_112:\r
+       MOV EAX,DWORD PTR [EBP-24]\r
+       AND EAX,EAX\r
+       JNZ L_113\r
+       MOV EAX,1\r
+       MOV DWORD PTR [EBP-24], EAX\r
+L_113:\r
+       MOV EAX,DWORD PTR [EBP-28]\r
+       AND EAX,EAX\r
+       JNZ L_114\r
+       MOV EAX,1\r
+       MOV DWORD PTR [EBP-28], EAX\r
+L_114:\r
+       MOV EAX,DWORD PTR [EBP-16]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [EBP-20]\r
+       MOV DWORD PTR [ESI+12], EAX\r
+       MOV EAX,DWORD PTR [EBP-16]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [EBP-31]\r
+       MOV BYTE PTR [ESI+16], AL\r
+       MOV EAX,DWORD PTR [EBP-16]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [EBP-32]\r
+       MOV BYTE PTR [ESI+17], AL\r
+       MOV EAX,DWORD PTR [EBP-16]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [EBP-33]\r
+       MOV BYTE PTR [ESI+18], AL\r
+       MOV EAX,DWORD PTR [EBP-16]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [EBP-24]\r
+       MOV DWORD PTR [ESI+32], EAX\r
+       MOV EAX,DWORD PTR [EBP-16]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [EBP-28]\r
+       MOV DWORD PTR [ESI+36], EAX\r
+       MOV EAX,DWORD PTR [EBP-16]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [ESI]\r
+       AND EAX,EAX\r
+       JZ L_115\r
+       PUSH DWORD PTR [EBP-16]\r
+       CALL _SetParams\r
+       JMP L_116\r
+L_115:\r
+       MOVZX EAX,WORD PTR [EBP-30]\r
+       AND EAX,EAX\r
+       JNZ L_117\r
+       MOV EAX,824\r
+       JMP L_104\r
+L_117:\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [EBP-34]\r
+       CMP EAX,3\r
+       SETB AL\r
+       AND AL,AL\r
+       JZ L_118\r
+       MOV EAX,825\r
+       JMP L_104\r
+L_118:\r
+       MOV EAX,DWORD PTR [EBP-8]\r
+       MOV ECX,4096\r
+       XOR EDX,EDX\r
+       DIV ECX\r
+       MOV ECX,4096\r
+       MUL ECX\r
+       MOV DWORD PTR [EBP-8], EAX\r
+       MOV EAX,DWORD PTR [EBP-8]\r
+       MOV ECX,4096\r
+       XOR EDX,EDX\r
+       DIV ECX\r
+       MOV EAX,EDX\r
+       AND EAX,EAX\r
+       JZ L_119\r
+       MOV EAX,DWORD PTR [EBP-8]\r
+       ADD EAX,4096\r
+       MOV DWORD PTR [EBP-8], EAX\r
+L_119:\r
+       MOV EAX,DWORD PTR [EBP-12]\r
+       MOV ECX,4096\r
+       XOR EDX,EDX\r
+       DIV ECX\r
+       MOV ECX,4096\r
+       MUL ECX\r
+       MOV DWORD PTR [EBP-12], EAX\r
+       MOV EAX,DWORD PTR [EBP-12]\r
+       MOV ECX,4096\r
+       XOR EDX,EDX\r
+       DIV ECX\r
+       MOV EAX,EDX\r
+       AND EAX,EAX\r
+       JZ L_120\r
+       MOV EAX,DWORD PTR [EBP-12]\r
+       ADD EAX,4096\r
+       MOV DWORD PTR [EBP-12], EAX\r
+L_120:\r
+       MOV EAX,DWORD PTR [EBP-16]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOVZX EAX,WORD PTR [EBP-30]\r
+       MOV DWORD PTR [ESI+20], EAX\r
+       MOV EAX,DWORD PTR [EBP-16]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [EBP-34]\r
+       MOV BYTE PTR [ESI+19], AL\r
+       MOV EAX,DWORD PTR [EBP-16]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [EBP-8]\r
+       MOV DWORD PTR [ESI+24], EAX\r
+       MOV EAX,DWORD PTR [EBP-16]\r
+       MOV ECX,64\r
+       MUL ECX\r
+       MOV ESI,OFFSET _comstat\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [EBP-12]\r
+       MOV DWORD PTR [ESI+28], EAX\r
+       MOV EAX,DWORD PTR [EBP-16]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _sSendBuf\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [EBP-8]\r
+       MOV DWORD PTR [ESI], EAX\r
+       MOV EAX,DWORD PTR [EBP-16]\r
+       SHL EAX,2\r
+       MOV ESI,OFFSET _sRecvBuf\r
+       ADD ESI,EAX\r
+       MOV EAX,DWORD PTR [EBP-12]\r
+       MOV DWORD PTR [ESI], EAX\r
+       XOR EAX,EAX\r
+       MOV DWORD PTR [EBP-4], EAX\r
+L_116:\r
+       MOV EAX,DWORD PTR [EBP-4]\r
+L_104:\r
+       MOV ESP,EBP\r
+       POP EBP\r
+       RETN 12\r