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