.DATA EXTRN _AllocExch FWORD EXTRN _DeAllocExch FWORD EXTRN _GetTSSExch FWORD EXTRN _SetPriority FWORD EXTRN _NewTask FWORD EXTRN _SpawnTask FWORD EXTRN _SendMsg FWORD EXTRN _ISendMsg FWORD EXTRN _WaitMsg FWORD EXTRN _CheckMsg FWORD EXTRN _Request FWORD EXTRN _MoveRequest FWORD EXTRN _Respond FWORD EXTRN _AllocPage FWORD EXTRN _AllocOSPage FWORD EXTRN _AllocDMAPage FWORD EXTRN _DeAllocPage FWORD EXTRN _QueryPages FWORD EXTRN _GetPhyAdd FWORD EXTRN _AliasMem FWORD EXTRN _DeAliasMem FWORD EXTRN _CopyData FWORD EXTRN _FillData FWORD EXTRN _CompareNCS FWORD EXTRN _Compare FWORD EXTRN _OutByte FWORD EXTRN _OutWord FWORD EXTRN _InByte FWORD EXTRN _InWord FWORD EXTRN _ReadCMOS FWORD EXTRN _Alarm FWORD EXTRN _KillAlarm FWORD EXTRN _Sleep FWORD EXTRN _MicroDelay FWORD EXTRN _GetCMOSTime FWORD EXTRN _GetCMOSDate FWORD EXTRN _GetTimerTick FWORD EXTRN _Tone FWORD EXTRN _Beep FWORD EXTRN _SetVidOwner FWORD EXTRN _SetNormVid FWORD EXTRN _GetNormVid FWORD EXTRN _ClrScr FWORD EXTRN _GetVidChar FWORD EXTRN _SetXY FWORD EXTRN _PutVidAttrs FWORD EXTRN _PutVidChars FWORD EXTRN _GetVidOwner FWORD EXTRN _GetXY FWORD EXTRN _ScrollVid FWORD EXTRN _TTYOut FWORD EXTRN _EditLine FWORD EXTRN _ReadKbd FWORD EXTRN _GetpJCB FWORD EXTRN _GetJobNum FWORD EXTRN _LoadNewJob FWORD EXTRN _Chain FWORD EXTRN _ExitJob FWORD EXTRN _KillJob FWORD EXTRN _SetUserName FWORD EXTRN _GetUserName FWORD EXTRN _SetCmdLine FWORD EXTRN _GetCmdLine FWORD EXTRN _SetPath FWORD EXTRN _GetPath FWORD EXTRN _SetExitJob FWORD EXTRN _GetExitJob FWORD EXTRN _SetSysIn FWORD EXTRN _GetSysIn FWORD EXTRN _SetSysOut FWORD EXTRN _GetSysOut FWORD EXTRN _SetJobName FWORD EXTRN _RegisterSvc FWORD EXTRN _UnRegisterSvc FWORD EXTRN _GetSystemDisk FWORD EXTRN _CreateFile FWORD EXTRN _CreateDir FWORD EXTRN _DeleteDir FWORD EXTRN _OpenFile FWORD EXTRN _RenameFile FWORD EXTRN _GetFileSize FWORD EXTRN _SetFileSize FWORD EXTRN _ReadBlock FWORD EXTRN _WriteBlock FWORD EXTRN _ReadBytes FWORD EXTRN _WriteBytes FWORD EXTRN _GetFileLFA FWORD EXTRN _SetFileLFA FWORD EXTRN _CloseFile FWORD EXTRN _DeleteFile FWORD EXTRN _GetDirSector FWORD _offCode DD 0 _offData DD 0 _nCDFIX DD 0 _oCDFIX DD 0 _nCCFIX DD 0 _oCCFIX DD 0 _nDDFIX DD 0 _oDDFIX DD 0 _nDCFIX DD 0 _oDCFIX DD 0 EXTRN _KillExch DD L_lit DB 69,114,99,32,102,114,111,109,32,71,101,116,82,117,110,70 DB 105,108,101,32,105,110,32,74,111,98,67,58,32,37,100,13 DB 10,0,75,66,68,0,86,73,68,0 _TmpStack DD 128 DUP(0) _pNewJCB DD 0h _pTmpJCB DD 0h _pCrntJCB DD 0h _JobNum DD 0h _JobNumE DD 0h _job_fhE DD 0h _ExchE DD 0h _ercE DD 0h _iE DD 0h _BogusMsg DD 2 DUP(0) _pPDE DD 0h _pExchJCBE DD 0h _KeyCodeE DD 0h _aFileE DB 80 DUP(0) _cbFileE DD 0h _pCode DD 0h _pData DD 0h _pStack DD 0h _sCode DD 0h _sData DD 0h _sStack DD 0h _oCode DD 0h _oData DD 0h _pStart DD 0h _filetype DB 0h _tag DB 5 DUP(0) .CODE EXTRN _AllocJCB: NEAR EXTRN _RemoveRdyJob: NEAR EXTRN _GetExchOwner: NEAR EXTRN _SetExchOwner: NEAR EXTRN _SendAbort: NEAR EXTRN _xprintf: NEAR EXTRN _Dump: NEAR _CleanUserPD: PUSH EBP MOV EBP,ESP SUB ESP,24 MOV EAX,768 MOV [EBP-4],EAX L_1: MOV EAX,[EBP-4] CMP EAX,1024 SETL AL AND EAX,01h JZ L_2 JMP SHORT L_3 L_4: MOV EAX,[EBP-4] INC DWORD PTR [EBP-4] JMP SHORT L_1 L_3: MOV EAX,[EBP-4] SHL EAX,2 MOV ESI,[EBP+8] ADD ESI,EAX MOV EAX,[ESI] AND EAX,EAX JZ L_5 MOV EAX,[EBP-4] SHL EAX,2 MOV ESI,[EBP+8] ADD ESI,EAX MOV EAX,[ESI] AND EAX,-4096 MOV [EBP-20],EAX XOR EAX,EAX MOV [EBP-8],EAX L_6: MOV EAX,[EBP-8] CMP EAX,1024 SETL AL AND EAX,01h JZ L_7 JMP SHORT L_8 L_9: MOV EAX,[EBP-8] INC DWORD PTR [EBP-8] JMP SHORT L_6 L_8: XOR EAX,EAX MOV [EBP-12],EAX MOV EAX,[EBP-4] SUB EAX,512 MOV ECX,4194304 IMUL ECX PUSH EAX MOV EAX,[EBP-8] MOV ECX,4096 IMUL ECX POP EBX ADD EAX,EBX MOV [EBP-24],EAX L_10: MOV EAX,[EBP-8] INC DWORD PTR [EBP-8] SHL EAX,2 MOV ESI,[EBP-20] ADD ESI,EAX MOV EAX,[ESI] AND EAX,EAX JZ L_12 MOV EAX,[EBP-8] CMP EAX,1024 SETL AL AND EAX,01h L_12: JZ L_11 MOV EAX,[EBP-12] INC DWORD PTR [EBP-12] JMP L_10 L_11: MOV EAX,[EBP-12] AND EAX,EAX JZ L_13 PUSH DWORD PTR [EBP-24] PUSH DWORD PTR [EBP-12] CALL FWORD PTR _DeAllocPage MOV [EBP-16],EAX L_13: JMP L_9 L_7: L_5: JMP L_4 L_2: MOV ESP,EBP POP EBP RETN 4 _GetRunFile: PUSH EBP MOV EBP,ESP SUB ESP,18 XOR EAX,EAX MOV _offCode,EAX XOR EAX,EAX MOV _offData,EAX XOR EAX,EAX MOV _nCDFIX,EAX XOR EAX,EAX MOV _oCDFIX,EAX XOR EAX,EAX MOV _nCCFIX,EAX XOR EAX,EAX MOV _oCCFIX,EAX XOR EAX,EAX MOV _nDDFIX,EAX XOR EAX,EAX MOV _oDDFIX,EAX XOR EAX,EAX MOV _nDCFIX,EAX XOR EAX,EAX MOV _oDCFIX,EAX MOV ESI,[EBP+8] XOR EAX,EAX MOV [ESI],EAX PUSH DWORD PTR [EBP+16] PUSH DWORD PTR [EBP+12] PUSH 0 PUSH 1 LEA EAX,[EBP-12] PUSH EAX CALL FWORD PTR _OpenFile MOV [EBP-4],EAX AND EAX,EAX JNZ L_14 XOR AL,AL MOV [EBP-17],AL L_15: MOV EAX,[EBP-4] AND EAX,EAX SETZ AL AND EAX,01 AND EAX,EAX JZ L_17 MOVSX EAX,BYTE PTR [EBP-17] AND EAX,EAX SETZ AL AND EAX,01 L_17: AND EAX,EAX JZ L_16 MOV ESI,OFFSET _tag XOR AL,AL MOV [ESI],AL PUSH DWORD PTR [EBP-12] PUSH OFFSET _tag PUSH 5 LEA EAX,[EBP-16] PUSH EAX CALL FWORD PTR _ReadBytes MOV [EBP-4],EAX MOV ESI,OFFSET _tag MOV AL,[ESI] AND EAX,0FFh JMP L_19 L_20: PUSH DWORD PTR [EBP-12] PUSH OFFSET _filetype PUSH 1 LEA EAX,[EBP-16] PUSH EAX CALL FWORD PTR _ReadBytes MOV [EBP-4],EAX MOVSX EAX,BYTE PTR _filetype CMP EAX,1 SETL AL AND EAX,01h JNZ L_21 MOVSX EAX,BYTE PTR _filetype CMP EAX,3 SETG AL AND EAX,01h L_21: JZ L_22 MOV EAX,74 MOV [EBP-4],EAX L_22: JMP L_18 L_23: PUSH DWORD PTR [EBP-12] PUSH OFFSET _sStack PUSH 4 LEA EAX,[EBP-16] PUSH EAX CALL FWORD PTR _ReadBytes MOV [EBP-4],EAX AND EAX,EAX JNZ L_24 PUSH DWORD PTR [EBP-12] PUSH OFFSET _sCode PUSH 4 LEA EAX,[EBP-16] PUSH EAX CALL FWORD PTR _ReadBytes MOV [EBP-4],EAX L_24: MOV EAX,[EBP-4] AND EAX,EAX JNZ L_25 PUSH DWORD PTR [EBP-12] PUSH OFFSET _sData PUSH 4 LEA EAX,[EBP-16] PUSH EAX CALL FWORD PTR _ReadBytes MOV [EBP-4],EAX L_25: JMP L_18 L_26: PUSH DWORD PTR [EBP-12] PUSH OFFSET _offData PUSH 4 LEA EAX,[EBP-16] PUSH EAX CALL FWORD PTR _ReadBytes MOV [EBP-4],EAX JMP L_18 L_27: PUSH DWORD PTR [EBP-12] PUSH OFFSET _offCode PUSH 4 LEA EAX,[EBP-16] PUSH EAX CALL FWORD PTR _ReadBytes MOV [EBP-4],EAX JMP L_18 L_28: PUSH DWORD PTR [EBP-12] PUSH OFFSET _pStart PUSH 4 LEA EAX,[EBP-16] PUSH EAX CALL FWORD PTR _ReadBytes MOV [EBP-4],EAX JMP L_18 L_29: PUSH DWORD PTR [EBP-12] PUSH OFFSET _oCode CALL FWORD PTR _GetFileLFA MOV [EBP-4],EAX AND EAX,EAX JNZ L_30 PUSH DWORD PTR [EBP-12] MOV ESI,OFFSET _tag ADD ESI,1 MOV EAX,_oCode ADD EAX,[ESI] PUSH EAX CALL FWORD PTR _SetFileLFA MOV [EBP-4],EAX L_30: JMP L_18 L_31: PUSH DWORD PTR [EBP-12] PUSH OFFSET _oData CALL FWORD PTR _GetFileLFA MOV [EBP-4],EAX AND EAX,EAX JNZ L_32 PUSH DWORD PTR [EBP-12] MOV ESI,OFFSET _tag ADD ESI,1 MOV EAX,_oData ADD EAX,[ESI] PUSH EAX CALL FWORD PTR _SetFileLFA MOV [EBP-4],EAX L_32: JMP L_18 L_33: PUSH DWORD PTR [EBP-12] PUSH OFFSET _oCDFIX CALL FWORD PTR _GetFileLFA MOV [EBP-4],EAX MOV ESI,OFFSET _tag ADD ESI,1 MOV EAX,[ESI] MOV ECX,4 CDQ IDIV ECX MOV _nCDFIX,EAX MOV EAX,[EBP-4] AND EAX,EAX JNZ L_34 PUSH DWORD PTR [EBP-12] MOV ESI,OFFSET _tag ADD ESI,1 MOV EAX,_oCDFIX ADD EAX,[ESI] PUSH EAX CALL FWORD PTR _SetFileLFA MOV [EBP-4],EAX L_34: JMP L_18 L_35: PUSH DWORD PTR [EBP-12] PUSH OFFSET _oCCFIX CALL FWORD PTR _GetFileLFA MOV [EBP-4],EAX MOV ESI,OFFSET _tag ADD ESI,1 MOV EAX,[ESI] MOV ECX,4 CDQ IDIV ECX MOV _nCCFIX,EAX MOV EAX,[EBP-4] AND EAX,EAX JNZ L_36 PUSH DWORD PTR [EBP-12] MOV ESI,OFFSET _tag ADD ESI,1 MOV EAX,_oCCFIX ADD EAX,[ESI] PUSH EAX CALL FWORD PTR _SetFileLFA MOV [EBP-4],EAX L_36: JMP L_18 L_37: PUSH DWORD PTR [EBP-12] PUSH OFFSET _oDDFIX CALL FWORD PTR _GetFileLFA MOV [EBP-4],EAX MOV ESI,OFFSET _tag ADD ESI,1 MOV EAX,[ESI] MOV ECX,4 CDQ IDIV ECX MOV _nDDFIX,EAX MOV EAX,[EBP-4] AND EAX,EAX JNZ L_38 PUSH DWORD PTR [EBP-12] MOV ESI,OFFSET _tag ADD ESI,1 MOV EAX,_oDDFIX ADD EAX,[ESI] PUSH EAX CALL FWORD PTR _SetFileLFA MOV [EBP-4],EAX L_38: JMP L_18 L_39: PUSH DWORD PTR [EBP-12] PUSH OFFSET _oDCFIX CALL FWORD PTR _GetFileLFA MOV [EBP-4],EAX MOV ESI,OFFSET _tag ADD ESI,1 MOV EAX,[ESI] MOV ECX,4 CDQ IDIV ECX MOV _nDCFIX,EAX MOV EAX,[EBP-4] AND EAX,EAX JNZ L_40 PUSH DWORD PTR [EBP-12] MOV ESI,OFFSET _tag ADD ESI,1 MOV EAX,_oDCFIX ADD EAX,[ESI] PUSH EAX CALL FWORD PTR _SetFileLFA MOV [EBP-4],EAX L_40: JMP L_18 L_41: MOV AL,1 MOV [EBP-17],AL JMP L_18 L_42: PUSH DWORD PTR [EBP-12] LEA EAX,[EBP-8] PUSH EAX CALL FWORD PTR _GetFileLFA MOV [EBP-4],EAX MOV ESI,OFFSET _tag ADD ESI,1 MOV EAX,[ESI] CMP EAX,1024 SETG AL AND EAX,01h JZ L_43 MOV EAX,74 MOV [EBP-4],EAX L_43: MOV EAX,[EBP-4] AND EAX,EAX JNZ L_44 PUSH DWORD PTR [EBP-12] MOV ESI,OFFSET _tag ADD ESI,1 MOV EAX,[EBP-8] ADD EAX,[ESI] PUSH EAX CALL FWORD PTR _SetFileLFA MOV [EBP-4],EAX L_44: MOV EAX,[EBP-4] AND EAX,EAX JZ L_45 MOV EAX,74 MOV [EBP-4],EAX L_45: JMP L_18 L_19: CMP EAX,255 JE L_41 CMP EAX,195 JE L_39 CMP EAX,194 JE L_37 CMP EAX,193 JE L_35 CMP EAX,192 JE L_33 CMP EAX,178 JE L_31 CMP EAX,176 JE L_29 CMP EAX,150 JE L_28 CMP EAX,148 JE L_27 CMP EAX,146 JE L_26 CMP EAX,144 JE L_23 CMP EAX,128 JE L_20 JMP L_42 L_18: JMP L_15 L_16: MOV EAX,[EBP-4] AND EAX,EAX JZ L_46 PUSH DWORD PTR [EBP-12] CALL FWORD PTR _CloseFile L_46: L_14: MOV EAX,[EBP-4] AND EAX,EAX JNZ L_47 MOV ESI,[EBP+8] MOV EAX,[EBP-12] MOV [ESI],EAX L_47: MOV EAX,[EBP-4] AND EAX,EAX JZ L_48 PUSH OFFSET L_lit+0 PUSH DWORD PTR [EBP-4] MOV EDI, 4 CALL _xprintf ADD ESP,8 L_48: MOV EAX,[EBP-4] L_49: MOV ESP,EBP POP EBP RETN 12 PUBLIC __SetExitJob: PUSH EBP MOV EBP,ESP SUB ESP,4 LEA EAX,[EBP-4] PUSH EAX CALL FWORD PTR _GetJobNum PUSH DWORD PTR [EBP-4] PUSH OFFSET _pTmpJCB CALL FWORD PTR _GetpJCB MOV EAX,[EBP+12] CMP EAX,79 SETG AL AND EAX,01h JZ L_50 MOV EAX,76 JMP L_51 L_50: MOV EAX,[EBP+12] AND EAX,EAX JNZ L_53 MOV ESI,_pTmpJCB ADD ESI,146 XOR AL,AL MOV [ESI],AL JMP L_54 L_53: PUSH DWORD PTR [EBP+16] MOV ESI,_pTmpJCB ADD ESI,146 MOV EAX,1 ADD ESI,EAX PUSH ESI PUSH DWORD PTR [EBP+12] CALL FWORD PTR _CopyData MOV ESI,_pTmpJCB ADD ESI,146 MOV EAX,[EBP+12] MOV [ESI],AL L_54: L_52: XOR EAX,EAX L_51: MOV ESP,EBP POP EBP RETF 8 PUBLIC __GetExitJob: PUSH EBP MOV EBP,ESP SUB ESP,8 LEA EAX,[EBP-4] PUSH EAX CALL FWORD PTR _GetJobNum PUSH DWORD PTR [EBP-4] PUSH OFFSET _pTmpJCB CALL FWORD PTR _GetpJCB MOV ESI,_pTmpJCB ADD ESI,146 MOVSX EAX,BYTE PTR [ESI] MOV [EBP-8],EAX AND EAX,EAX JZ L_55 MOV ESI,_pTmpJCB ADD ESI,146 MOV EAX,1 ADD ESI,EAX PUSH ESI PUSH DWORD PTR [EBP+16] PUSH DWORD PTR [EBP-8] CALL FWORD PTR _CopyData L_55: MOV ESI,[EBP+12] MOV EAX,[EBP-8] MOV [ESI],EAX XOR EAX,EAX MOV ESP,EBP POP EBP RETF 8 PUBLIC __SetPath: PUSH EBP MOV EBP,ESP SUB ESP,4 LEA EAX,[EBP-4] PUSH EAX CALL FWORD PTR _GetJobNum PUSH DWORD PTR [EBP-4] PUSH OFFSET _pTmpJCB CALL FWORD PTR _GetpJCB MOV EAX,[EBP+12] CMP EAX,69 SETG AL AND EAX,01h JZ L_57 MOV EAX,76 JMP L_58 L_57: MOV EAX,[EBP+12] AND EAX,EAX JNZ L_60 MOV ESI,_pTmpJCB ADD ESI,76 XOR AL,AL MOV [ESI],AL JMP L_61 L_60: PUSH DWORD PTR [EBP+16] MOV ESI,_pTmpJCB ADD ESI,76 MOV EAX,1 ADD ESI,EAX PUSH ESI PUSH DWORD PTR [EBP+12] CALL FWORD PTR _CopyData MOV ESI,_pTmpJCB ADD ESI,76 MOV EAX,[EBP+12] MOV [ESI],AL L_61: L_59: XOR EAX,EAX L_58: MOV ESP,EBP POP EBP RETF 8 PUBLIC __GetPath: PUSH EBP MOV EBP,ESP SUB ESP,8 PUSH DWORD PTR [EBP+20] PUSH OFFSET _pTmpJCB CALL FWORD PTR _GetpJCB MOV [EBP-8],EAX AND EAX,EAX JNZ L_62 MOV ESI,_pTmpJCB ADD ESI,76 MOVSX EAX,BYTE PTR [ESI] MOV [EBP-4],EAX AND EAX,EAX JZ L_63 MOV ESI,_pTmpJCB ADD ESI,76 MOV EAX,1 ADD ESI,EAX PUSH ESI PUSH DWORD PTR [EBP+16] PUSH DWORD PTR [EBP-4] CALL FWORD PTR _CopyData L_63: MOV ESI,[EBP+12] MOV EAX,[EBP-4] MOV [ESI],EAX L_62: MOV EAX,[EBP-8] MOV ESP,EBP POP EBP RETF 12 PUBLIC __SetCmdLine: PUSH EBP MOV EBP,ESP SUB ESP,4 LEA EAX,[EBP-4] PUSH EAX CALL FWORD PTR _GetJobNum PUSH DWORD PTR [EBP-4] PUSH OFFSET _pTmpJCB CALL FWORD PTR _GetpJCB MOV EAX,[EBP+12] CMP EAX,79 SETG AL AND EAX,01h JZ L_65 MOV EAX,76 JMP L_66 L_65: MOV EAX,[EBP+12] AND EAX,EAX JNZ L_68 MOV ESI,_pTmpJCB ADD ESI,226 XOR AL,AL MOV [ESI],AL JMP L_69 L_68: PUSH DWORD PTR [EBP+16] MOV ESI,_pTmpJCB ADD ESI,226 MOV EAX,1 ADD ESI,EAX PUSH ESI PUSH DWORD PTR [EBP+12] CALL FWORD PTR _CopyData MOV ESI,_pTmpJCB ADD ESI,226 MOV EAX,[EBP+12] MOV [ESI],AL L_69: L_67: XOR EAX,EAX L_66: MOV ESP,EBP POP EBP RETF 8 PUBLIC __GetCmdLine: PUSH EBP MOV EBP,ESP SUB ESP,8 LEA EAX,[EBP-4] PUSH EAX CALL FWORD PTR _GetJobNum PUSH DWORD PTR [EBP-4] PUSH OFFSET _pTmpJCB CALL FWORD PTR _GetpJCB MOV ESI,_pTmpJCB ADD ESI,226 MOVSX EAX,BYTE PTR [ESI] MOV [EBP-8],EAX AND EAX,EAX JZ L_70 MOV ESI,_pTmpJCB ADD ESI,226 MOV EAX,1 ADD ESI,EAX PUSH ESI PUSH DWORD PTR [EBP+16] PUSH DWORD PTR [EBP-8] CALL FWORD PTR _CopyData L_70: MOV ESI,[EBP+12] MOV EAX,[EBP-8] MOV [ESI],EAX XOR EAX,EAX MOV ESP,EBP POP EBP RETF 8 PUBLIC __SetUserName: PUSH EBP MOV EBP,ESP SUB ESP,4 LEA EAX,[EBP-4] PUSH EAX CALL FWORD PTR _GetJobNum PUSH DWORD PTR [EBP-4] PUSH OFFSET _pTmpJCB CALL FWORD PTR _GetpJCB MOV EAX,[EBP+12] CMP EAX,29 SETG AL AND EAX,01h JZ L_72 MOV EAX,76 JMP L_73 L_72: MOV EAX,[EBP+12] AND EAX,EAX JNZ L_75 MOV ESI,_pTmpJCB ADD ESI,46 XOR AL,AL MOV [ESI],AL JMP L_76 L_75: PUSH DWORD PTR [EBP+16] MOV ESI,_pTmpJCB ADD ESI,46 MOV EAX,1 ADD ESI,EAX PUSH ESI PUSH DWORD PTR [EBP+12] CALL FWORD PTR _CopyData MOV ESI,_pTmpJCB ADD ESI,46 MOV EAX,[EBP+12] MOV [ESI],AL L_76: L_74: XOR EAX,EAX L_73: MOV ESP,EBP POP EBP RETF 8 PUBLIC __GetUserName: PUSH EBP MOV EBP,ESP SUB ESP,8 LEA EAX,[EBP-4] PUSH EAX CALL FWORD PTR _GetJobNum PUSH DWORD PTR [EBP-4] PUSH OFFSET _pTmpJCB CALL FWORD PTR _GetpJCB MOV ESI,_pTmpJCB ADD ESI,46 MOVSX EAX,BYTE PTR [ESI] MOV [EBP-8],EAX AND EAX,EAX JZ L_77 MOV ESI,_pTmpJCB ADD ESI,46 MOV EAX,1 ADD ESI,EAX PUSH ESI PUSH DWORD PTR [EBP+16] PUSH DWORD PTR [EBP-8] CALL FWORD PTR _CopyData L_77: MOV ESI,[EBP+12] MOV EAX,[EBP-8] MOV [ESI],EAX XOR EAX,EAX MOV ESP,EBP POP EBP RETF 8 PUBLIC __SetSysIn: PUSH EBP MOV EBP,ESP SUB ESP,4 LEA EAX,[EBP-4] PUSH EAX CALL FWORD PTR _GetJobNum PUSH DWORD PTR [EBP-4] PUSH OFFSET _pTmpJCB CALL FWORD PTR _GetpJCB MOV EAX,[EBP+12] CMP EAX,49 SETG AL AND EAX,01h JNZ L_79 MOV EAX,[EBP+12] AND EAX,EAX SETZ AL AND EAX,01 L_79: AND EAX,EAX JZ L_80 MOV EAX,76 JMP L_81 L_80: PUSH DWORD PTR [EBP+16] MOV ESI,_pTmpJCB ADD ESI,306 MOV EAX,1 ADD ESI,EAX PUSH ESI PUSH DWORD PTR [EBP+12] CALL FWORD PTR _CopyData MOV ESI,_pTmpJCB ADD ESI,306 MOV EAX,[EBP+12] MOV [ESI],AL L_82: XOR EAX,EAX L_81: MOV ESP,EBP POP EBP RETF 8 PUBLIC __GetSysIn: PUSH EBP MOV EBP,ESP SUB ESP,8 LEA EAX,[EBP-4] PUSH EAX CALL FWORD PTR _GetJobNum PUSH DWORD PTR [EBP-4] PUSH OFFSET _pTmpJCB CALL FWORD PTR _GetpJCB MOV ESI,_pTmpJCB ADD ESI,306 MOVSX EAX,BYTE PTR [ESI] MOV [EBP-8],EAX AND EAX,EAX JZ L_83 MOV ESI,_pTmpJCB ADD ESI,306 MOV EAX,1 ADD ESI,EAX PUSH ESI PUSH DWORD PTR [EBP+16] PUSH DWORD PTR [EBP-8] CALL FWORD PTR _CopyData L_83: MOV ESI,[EBP+12] MOV EAX,[EBP-8] MOV [ESI],EAX XOR EAX,EAX MOV ESP,EBP POP EBP RETF 8 PUBLIC __SetSysOut: PUSH EBP MOV EBP,ESP SUB ESP,4 LEA EAX,[EBP-4] PUSH EAX CALL FWORD PTR _GetJobNum PUSH DWORD PTR [EBP-4] PUSH OFFSET _pTmpJCB CALL FWORD PTR _GetpJCB MOV EAX,[EBP+12] CMP EAX,49 SETG AL AND EAX,01h JNZ L_85 MOV EAX,[EBP+12] AND EAX,EAX SETZ AL AND EAX,01 L_85: AND EAX,EAX JZ L_86 MOV EAX,76 JMP L_87 L_86: PUSH DWORD PTR [EBP+16] MOV ESI,_pTmpJCB ADD ESI,356 MOV EAX,1 ADD ESI,EAX PUSH ESI PUSH DWORD PTR [EBP+12] CALL FWORD PTR _CopyData MOV ESI,_pTmpJCB ADD ESI,356 MOV EAX,[EBP+12] MOV [ESI],AL L_88: XOR EAX,EAX L_87: MOV ESP,EBP POP EBP RETF 8 PUBLIC __GetSysOut: PUSH EBP MOV EBP,ESP SUB ESP,8 LEA EAX,[EBP-4] PUSH EAX CALL FWORD PTR _GetJobNum PUSH DWORD PTR [EBP-4] PUSH OFFSET _pTmpJCB CALL FWORD PTR _GetpJCB MOV ESI,_pTmpJCB ADD ESI,356 MOVSX EAX,BYTE PTR [ESI] MOV [EBP-8],EAX AND EAX,EAX JZ L_89 MOV ESI,_pTmpJCB ADD ESI,356 MOV EAX,1 ADD ESI,EAX PUSH ESI PUSH DWORD PTR [EBP+16] PUSH DWORD PTR [EBP-8] CALL FWORD PTR _CopyData L_89: MOV ESI,[EBP+12] MOV EAX,[EBP-8] MOV [ESI],EAX XOR EAX,EAX MOV ESP,EBP POP EBP RETF 8 PUBLIC __SetJobName: PUSH EBP MOV EBP,ESP SUB ESP,4 LEA EAX,[EBP-4] PUSH EAX CALL FWORD PTR _GetJobNum PUSH DWORD PTR [EBP-4] PUSH OFFSET _pTmpJCB CALL FWORD PTR _GetpJCB MOV EAX,[EBP+12] CMP EAX,13 SETG AL AND EAX,01h JZ L_91 MOV EAX,13 MOV [EBP+12],EAX L_91: MOV EAX,[EBP+12] AND EAX,EAX JZ L_92 PUSH DWORD PTR [EBP+16] MOV ESI,_pTmpJCB ADD ESI,4 MOV EAX,1 ADD ESI,EAX PUSH ESI PUSH DWORD PTR [EBP+12] CALL FWORD PTR _CopyData L_92: MOV ESI,_pTmpJCB ADD ESI,4 MOV EAX,[EBP+12] MOV [ESI],AL XOR EAX,EAX MOV ESP,EBP POP EBP RETF 8 PUBLIC __LoadNewJob: PUSH EBP MOV EBP,ESP SUB ESP,44 PUSH DWORD PTR [EBP+20] PUSH DWORD PTR [EBP+16] LEA EAX,[EBP-12] PUSH EAX CALL _GetRunFile MOV [EBP-4],EAX AND EAX,EAX JNZ L_94 XOR EAX,EAX MOV _JobNum,EAX XOR EAX,EAX MOV _pNewJCB,EAX XOR EAX,EAX MOV [EBP-24],EAX XOR EAX,EAX MOV [EBP-28],EAX XOR EAX,EAX MOV [EBP-32],EAX PUSH OFFSET _JobNum PUSH OFFSET _pNewJCB CALL _AllocJCB MOV [EBP-4],EAX AND EAX,EAX JNZ L_95 PUSH 3 LEA EAX,[EBP-24] PUSH EAX CALL FWORD PTR _AllocOSPage MOV [EBP-4],EAX L_95: MOV EAX,[EBP-24] ADD EAX,4096 MOV [EBP-28],EAX MOV EAX,[EBP-24] ADD EAX,8192 MOV [EBP-32],EAX MOV EAX,[EBP-4] AND EAX,EAX JNZ L_96 PUSH DWORD PTR [EBP-28] PUSH 4096 PUSH 0 CALL FWORD PTR _FillData PUSH DWORD PTR [EBP-32] PUSH 4096 PUSH 0 CALL FWORD PTR _FillData PUSH 1 PUSH OFFSET _pTmpJCB CALL FWORD PTR _GetpJCB MOV ESI,_pTmpJCB ADD ESI,18 MOV EAX,[ESI] MOV [EBP-36],EAX PUSH 1 PUSH DWORD PTR [EBP-28] LEA EAX,[EBP-44] PUSH EAX CALL FWORD PTR _GetPhyAdd MOV EAX,[EBP-44] OR EAX,7 MOV [EBP-44],EAX MOV EAX,1024 MOV ESI,[EBP-36] ADD ESI,EAX MOV EAX,[EBP-44] MOV [ESI],EAX MOV EAX,3072 MOV ESI,[EBP-36] ADD ESI,EAX MOV EAX,[EBP-28] MOV [ESI],EAX MOV EAX,_sStack MOV ECX,4096 CDQ IDIV ECX MOV [EBP-20],EAX MOV EAX,_sStack MOV ECX,4096 CDQ IDIV ECX MOV EAX,EDX AND EAX,EAX JZ L_97 MOV EAX,[EBP-20] INC DWORD PTR [EBP-20] L_97: PUSH DWORD PTR [EBP-20] PUSH OFFSET _pStack CALL FWORD PTR _AllocPage MOV [EBP-4],EAX MOV EAX,[EBP-20] MOV ECX,4096 IMUL ECX MOV _sStack,EAX MOV EAX,_sCode MOV ECX,4096 CDQ IDIV ECX MOV [EBP-20],EAX MOV EAX,_sCode MOV ECX,4096 CDQ IDIV ECX MOV EAX,EDX AND EAX,EAX JZ L_98 MOV EAX,[EBP-20] INC DWORD PTR [EBP-20] L_98: MOV EAX,[EBP-4] AND EAX,EAX JNZ L_99 PUSH DWORD PTR [EBP-20] PUSH OFFSET _pCode CALL FWORD PTR _AllocPage MOV [EBP-4],EAX L_99: MOV EAX,_sData MOV ECX,4096 CDQ IDIV ECX MOV [EBP-20],EAX MOV EAX,_sData MOV ECX,4096 CDQ IDIV ECX MOV EAX,EDX AND EAX,EAX JZ L_100 MOV EAX,[EBP-20] INC DWORD PTR [EBP-20] L_100: MOV EAX,[EBP-4] AND EAX,EAX JNZ L_101 PUSH DWORD PTR [EBP-20] PUSH OFFSET _pData CALL FWORD PTR _AllocPage MOV [EBP-4],EAX L_101: PUSH DWORD PTR [EBP-36] PUSH DWORD PTR [EBP-24] PUSH 4096 CALL FWORD PTR _CopyData MOV EAX,[EBP-4] AND EAX,EAX JNZ L_102 PUSH DWORD PTR [EBP-12] PUSH _oCode CALL FWORD PTR _SetFileLFA MOV [EBP-4],EAX L_102: MOV EAX,[EBP-4] AND EAX,EAX JNZ L_103 PUSH DWORD PTR [EBP-12] PUSH _pCode PUSH _sCode LEA EAX,[EBP-16] PUSH EAX CALL FWORD PTR _ReadBytes MOV [EBP-4],EAX L_103: MOV EAX,[EBP-4] AND EAX,EAX JNZ L_104 PUSH DWORD PTR [EBP-12] PUSH _oData CALL FWORD PTR _SetFileLFA MOV [EBP-4],EAX L_104: MOV EAX,[EBP-4] AND EAX,EAX JNZ L_105 PUSH DWORD PTR [EBP-12] PUSH _pData PUSH _sData LEA EAX,[EBP-16] PUSH EAX CALL FWORD PTR _ReadBytes MOV [EBP-4],EAX L_105: MOV EAX,[EBP-4] AND EAX,EAX JNZ L_106 MOV EAX,_nCDFIX AND EAX,EAX JZ L_107 PUSH DWORD PTR [EBP-12] PUSH _oCDFIX CALL FWORD PTR _SetFileLFA MOV [EBP-4],EAX L_108: MOV EAX,_nCDFIX DEC DWORD PTR _nCDFIX AND EAX,EAX JZ L_110 MOV EAX,[EBP-4] AND EAX,EAX SETZ AL AND EAX,01 L_110: AND EAX,EAX JZ L_109 PUSH DWORD PTR [EBP-12] LEA EAX,[EBP-8] PUSH EAX PUSH 4 LEA EAX,[EBP-16] PUSH EAX CALL FWORD PTR _ReadBytes MOV [EBP-4],EAX MOV EAX,_pCode ADD EAX,[EBP-8] MOV [EBP-40],EAX MOV ESI,[EBP-40] PUSH ESI MOV ESI,[EBP-40] MOV EAX,[ESI] SUB EAX,_offData ADD EAX,_pData POP EBX MOV [EBX],EAX JMP L_108 L_109: L_107: MOV EAX,_nCCFIX AND EAX,EAX JZ L_111 PUSH DWORD PTR [EBP-12] PUSH _oCCFIX CALL FWORD PTR _SetFileLFA MOV [EBP-4],EAX L_112: MOV EAX,_nCCFIX DEC DWORD PTR _nCCFIX AND EAX,EAX JZ L_114 MOV EAX,[EBP-4] AND EAX,EAX SETZ AL AND EAX,01 L_114: AND EAX,EAX JZ L_113 PUSH DWORD PTR [EBP-12] LEA EAX,[EBP-8] PUSH EAX PUSH 4 LEA EAX,[EBP-16] PUSH EAX CALL FWORD PTR _ReadBytes MOV [EBP-4],EAX MOV EAX,_pCode ADD EAX,[EBP-8] MOV [EBP-40],EAX MOV ESI,[EBP-40] PUSH ESI MOV ESI,[EBP-40] MOV EAX,[ESI] SUB EAX,_offCode ADD EAX,_pCode POP EBX MOV [EBX],EAX JMP L_112 L_113: L_111: MOV EAX,_nDCFIX AND EAX,EAX JZ L_115 PUSH DWORD PTR [EBP-12] PUSH _oDCFIX CALL FWORD PTR _SetFileLFA MOV [EBP-4],EAX L_116: MOV EAX,_nDCFIX DEC DWORD PTR _nDCFIX AND EAX,EAX JZ L_118 MOV EAX,[EBP-4] AND EAX,EAX SETZ AL AND EAX,01 L_118: AND EAX,EAX JZ L_117 PUSH DWORD PTR [EBP-12] LEA EAX,[EBP-8] PUSH EAX PUSH 4 LEA EAX,[EBP-16] PUSH EAX CALL FWORD PTR _ReadBytes MOV [EBP-4],EAX MOV EAX,_pData ADD EAX,[EBP-8] MOV [EBP-40],EAX MOV ESI,[EBP-40] PUSH ESI MOV ESI,[EBP-40] MOV EAX,[ESI] SUB EAX,_offCode ADD EAX,_pCode POP EBX MOV [EBX],EAX JMP L_116 L_117: L_115: MOV EAX,_nDDFIX AND EAX,EAX JZ L_119 PUSH DWORD PTR [EBP-12] PUSH _oDDFIX CALL FWORD PTR _SetFileLFA MOV [EBP-4],EAX L_120: MOV EAX,_nDDFIX DEC DWORD PTR _nDDFIX AND EAX,EAX JZ L_122 MOV EAX,[EBP-4] AND EAX,EAX SETZ AL AND EAX,01 L_122: AND EAX,EAX JZ L_121 PUSH DWORD PTR [EBP-12] LEA EAX,[EBP-8] PUSH EAX PUSH 4 LEA EAX,[EBP-16] PUSH EAX CALL FWORD PTR _ReadBytes MOV [EBP-4],EAX MOV EAX,_pData ADD EAX,[EBP-8] MOV [EBP-40],EAX MOV ESI,[EBP-40] PUSH ESI MOV ESI,[EBP-40] MOV EAX,[ESI] SUB EAX,_offData ADD EAX,_pData POP EBX MOV [EBX],EAX JMP L_120 L_121: L_119: L_106: MOV EAX,1024 MOV ESI,[EBP-36] ADD ESI,EAX PUSH ESI PUSH 1024 PUSH 0 CALL FWORD PTR _FillData MOV EAX,3072 MOV ESI,[EBP-36] ADD ESI,EAX PUSH ESI PUSH 1024 PUSH 0 CALL FWORD PTR _FillData MOV ESI,_pNewJCB ADD ESI,18 MOV EAX,[EBP-24] MOV [ESI],EAX MOV ESI,_pNewJCB ADD ESI,38 MOV EAX,_pStack MOV [ESI],EAX MOV ESI,_pNewJCB ADD ESI,42 MOV EAX,_sStack MOV [ESI],EAX MOV ESI,_pNewJCB ADD ESI,22 MOV EAX,_pCode MOV [ESI],EAX MOV ESI,_pNewJCB ADD ESI,26 MOV EAX,_sCode MOV [ESI],EAX MOV ESI,_pNewJCB ADD ESI,30 MOV EAX,_pData MOV [ESI],EAX MOV ESI,_pNewJCB ADD ESI,34 MOV EAX,_sData MOV [ESI],EAX MOV ESI,_pNewJCB ADD ESI,46 XOR AL,AL MOV [ESI],AL MOV ESI,_pNewJCB ADD ESI,76 XOR AL,AL MOV [ESI],AL MOV ESI,_pNewJCB ADD ESI,146 XOR AL,AL MOV [ESI],AL MOV ESI,_pNewJCB ADD ESI,226 XOR AL,AL MOV [ESI],AL PUSH OFFSET L_lit+34 MOV ESI,_pNewJCB ADD ESI,306 MOV EAX,1 ADD ESI,EAX PUSH ESI PUSH 3 CALL FWORD PTR _CopyData MOV ESI,_pNewJCB ADD ESI,306 MOV AL,3 MOV [ESI],AL PUSH OFFSET L_lit+38 MOV ESI,_pNewJCB ADD ESI,356 MOV EAX,1 ADD ESI,EAX PUSH ESI PUSH 3 CALL FWORD PTR _CopyData MOV ESI,_pNewJCB ADD ESI,356 MOV AL,3 MOV [ESI],AL MOV ESI,_pNewJCB ADD ESI,410 MOV EAX,[EBP-32] MOV [ESI],EAX MOV ESI,_pNewJCB ADD ESI,414 MOV EAX,[EBP-32] MOV [ESI],EAX MOV ESI,_pNewJCB ADD ESI,418 XOR EAX,EAX MOV [ESI],EAX MOV ESI,_pNewJCB ADD ESI,422 XOR EAX,EAX MOV [ESI],EAX MOV ESI,_pNewJCB ADD ESI,426 MOV EAX,80 MOV [ESI],EAX MOV ESI,_pNewJCB ADD ESI,430 MOV EAX,25 MOV [ESI],EAX MOV ESI,_pNewJCB ADD ESI,434 XOR EAX,EAX MOV [ESI],EAX MOV ESI,_pNewJCB ADD ESI,442 MOV AL,1 MOV [ESI],AL MOV ESI,_pNewJCB ADD ESI,443 XOR AL,AL MOV [ESI],AL MOV EAX,[EBP-4] AND EAX,EAX JNZ L_123 LEA EAX,[EBP-8] PUSH EAX CALL FWORD PTR _AllocExch MOV [EBP-4],EAX L_123: MOV EAX,[EBP-4] AND EAX,EAX JNZ L_124 PUSH _JobNum PUSH 24 PUSH 25 PUSH 0 PUSH DWORD PTR [EBP-8] MOV EAX,_pStack ADD EAX,_sStack SUB EAX,4 PUSH EAX MOV EAX,_pStart ADD EAX,_pCode SUB EAX,_offCode PUSH EAX CALL FWORD PTR _NewTask MOV [EBP-4],EAX L_124: MOV EAX,[EBP-4] AND EAX,EAX JNZ L_125 PUSH DWORD PTR [EBP-8] PUSH _pNewJCB CALL _SetExchOwner L_125: L_96: PUSH DWORD PTR [EBP-12] CALL FWORD PTR _CloseFile L_94: MOV EAX,[EBP-4] AND EAX,EAX JNZ L_126 MOV ESI,[EBP+12] MOV EAX,_JobNum MOV [ESI],EAX L_126: MOV EAX,[EBP-4] MOV ESP,EBP POP EBP RETF 12 _LoadJob: PUSH EBP MOV EBP,ESP SUB ESP,20 MOV EAX,[EBP+12] MOV _pNewJCB,EAX MOV EAX,_sStack MOV ECX,4096 CDQ IDIV ECX MOV [EBP-16],EAX MOV EAX,_sStack MOV ECX,4096 CDQ IDIV ECX MOV EAX,EDX AND EAX,EAX JZ L_128 MOV EAX,[EBP-16] INC DWORD PTR [EBP-16] L_128: PUSH DWORD PTR [EBP-16] PUSH OFFSET _pStack CALL FWORD PTR _AllocPage MOV [EBP-4],EAX MOV EAX,[EBP-16] MOV ECX,4096 IMUL ECX MOV _sStack,EAX MOV EAX,_sCode MOV ECX,4096 CDQ IDIV ECX MOV [EBP-16],EAX MOV EAX,_sCode MOV ECX,4096 CDQ IDIV ECX MOV EAX,EDX AND EAX,EAX JZ L_129 MOV EAX,[EBP-16] INC DWORD PTR [EBP-16] L_129: MOV EAX,[EBP-4] AND EAX,EAX JNZ L_130 PUSH DWORD PTR [EBP-16] PUSH OFFSET _pCode CALL FWORD PTR _AllocPage MOV [EBP-4],EAX L_130: MOV EAX,_sData MOV ECX,4096 CDQ IDIV ECX MOV [EBP-16],EAX MOV EAX,_sData MOV ECX,4096 CDQ IDIV ECX MOV EAX,EDX AND EAX,EAX JZ L_131 MOV EAX,[EBP-16] INC DWORD PTR [EBP-16] L_131: PUSH DWORD PTR [EBP-16] PUSH OFFSET _pData CALL FWORD PTR _AllocPage MOV [EBP-4],EAX AND EAX,EAX JNZ L_132 PUSH DWORD PTR [EBP+8] PUSH _oCode CALL FWORD PTR _SetFileLFA MOV [EBP-4],EAX L_132: MOV EAX,[EBP-4] AND EAX,EAX JNZ L_133 PUSH DWORD PTR [EBP+8] PUSH _pCode PUSH _sCode LEA EAX,[EBP-12] PUSH EAX CALL FWORD PTR _ReadBytes MOV [EBP-4],EAX L_133: MOV EAX,[EBP-4] AND EAX,EAX JNZ L_134 PUSH DWORD PTR [EBP+8] PUSH _oData CALL FWORD PTR _SetFileLFA MOV [EBP-4],EAX L_134: MOV EAX,[EBP-4] AND EAX,EAX JNZ L_135 PUSH DWORD PTR [EBP+8] PUSH _pData PUSH _sData LEA EAX,[EBP-12] PUSH EAX CALL FWORD PTR _ReadBytes MOV [EBP-4],EAX L_135: MOV EAX,[EBP-4] AND EAX,EAX JNZ L_136 MOV EAX,_nCDFIX AND EAX,EAX JZ L_137 PUSH DWORD PTR [EBP+8] PUSH _oCDFIX CALL FWORD PTR _SetFileLFA MOV [EBP-4],EAX L_138: MOV EAX,_nCDFIX DEC DWORD PTR _nCDFIX AND EAX,EAX JZ L_140 MOV EAX,[EBP-4] AND EAX,EAX SETZ AL AND EAX,01 L_140: AND EAX,EAX JZ L_139 PUSH DWORD PTR [EBP+8] LEA EAX,[EBP-8] PUSH EAX PUSH 4 LEA EAX,[EBP-12] PUSH EAX CALL FWORD PTR _ReadBytes MOV [EBP-4],EAX MOV EAX,_pCode ADD EAX,[EBP-8] MOV [EBP-20],EAX MOV ESI,[EBP-20] PUSH ESI MOV ESI,[EBP-20] MOV EAX,[ESI] SUB EAX,_offData ADD EAX,_pData POP EBX MOV [EBX],EAX JMP L_138 L_139: L_137: MOV EAX,_nCCFIX AND EAX,EAX JZ L_141 PUSH DWORD PTR [EBP+8] PUSH _oCCFIX CALL FWORD PTR _SetFileLFA MOV [EBP-4],EAX L_142: MOV EAX,_nCCFIX DEC DWORD PTR _nCCFIX AND EAX,EAX JZ L_144 MOV EAX,[EBP-4] AND EAX,EAX SETZ AL AND EAX,01 L_144: AND EAX,EAX JZ L_143 PUSH DWORD PTR [EBP+8] LEA EAX,[EBP-8] PUSH EAX PUSH 4 LEA EAX,[EBP-12] PUSH EAX CALL FWORD PTR _ReadBytes MOV [EBP-4],EAX MOV EAX,_pCode ADD EAX,[EBP-8] MOV [EBP-20],EAX MOV ESI,[EBP-20] PUSH ESI MOV ESI,[EBP-20] MOV EAX,[ESI] SUB EAX,_offCode ADD EAX,_pCode POP EBX MOV [EBX],EAX JMP L_142 L_143: L_141: MOV EAX,_nDCFIX AND EAX,EAX JZ L_145 PUSH DWORD PTR [EBP+8] PUSH _oDCFIX CALL FWORD PTR _SetFileLFA MOV [EBP-4],EAX L_146: MOV EAX,_nDCFIX DEC DWORD PTR _nDCFIX AND EAX,EAX JZ L_148 MOV EAX,[EBP-4] AND EAX,EAX SETZ AL AND EAX,01 L_148: AND EAX,EAX JZ L_147 PUSH DWORD PTR [EBP+8] LEA EAX,[EBP-8] PUSH EAX PUSH 4 LEA EAX,[EBP-12] PUSH EAX CALL FWORD PTR _ReadBytes MOV [EBP-4],EAX MOV EAX,_pData ADD EAX,[EBP-8] MOV [EBP-20],EAX MOV ESI,[EBP-20] PUSH ESI MOV ESI,[EBP-20] MOV EAX,[ESI] SUB EAX,_offCode ADD EAX,_pCode POP EBX MOV [EBX],EAX JMP L_146 L_147: L_145: MOV EAX,_nDDFIX AND EAX,EAX JZ L_149 PUSH DWORD PTR [EBP+8] PUSH _oDDFIX CALL FWORD PTR _SetFileLFA MOV [EBP-4],EAX L_150: MOV EAX,_nDDFIX DEC DWORD PTR _nDDFIX AND EAX,EAX JZ L_152 MOV EAX,[EBP-4] AND EAX,EAX SETZ AL AND EAX,01 L_152: AND EAX,EAX JZ L_151 PUSH DWORD PTR [EBP+8] LEA EAX,[EBP-8] PUSH EAX PUSH 4 LEA EAX,[EBP-12] PUSH EAX CALL FWORD PTR _ReadBytes MOV [EBP-4],EAX MOV EAX,_pData ADD EAX,[EBP-8] MOV [EBP-20],EAX MOV ESI,[EBP-20] PUSH ESI MOV ESI,[EBP-20] MOV EAX,[ESI] SUB EAX,_offData ADD EAX,_pData POP EBX MOV [EBX],EAX JMP L_150 L_151: L_149: MOV ESI,_pNewJCB ADD ESI,38 MOV EAX,_pStack MOV [ESI],EAX MOV ESI,_pNewJCB ADD ESI,42 MOV EAX,_sStack MOV [ESI],EAX MOV ESI,_pNewJCB ADD ESI,22 MOV EAX,_pCode MOV [ESI],EAX MOV ESI,_pNewJCB ADD ESI,26 MOV EAX,_sCode MOV [ESI],EAX MOV ESI,_pNewJCB ADD ESI,30 MOV EAX,_pData MOV [ESI],EAX MOV ESI,_pNewJCB ADD ESI,34 MOV EAX,_sData MOV [ESI],EAX L_136: PUSH DWORD PTR [EBP+8] CALL FWORD PTR _CloseFile MOV EAX,[EBP-4] MOV ESP,EBP POP EBP RETN 8 PUBLIC __KillTask: PUSH EBP MOV EBP,ESP PUSH OFFSET _JobNumE CALL FWORD PTR _GetJobNum PUSH _JobNumE PUSH OFFSET _pTmpJCB CALL FWORD PTR _GetpJCB MOV ESI,_pTmpJCB ADD ESI,18 MOV EAX,[ESI] MOV _pPDE,EAX PUSH EAX CALL _CleanUserPD PUSH OFFSET _ExchE CALL FWORD PTR _GetTSSExch XOR EAX,EAX MOV _ercE,EAX L_154: MOV EAX,_ercE AND EAX,EAX JNZ L_155 PUSH _ExchE PUSH OFFSET _BogusMsg CALL FWORD PTR _CheckMsg MOV _ercE,EAX JMP L_154 L_155: PUSH _KillExch PUSH _ExchE PUSH 4 CALL FWORD PTR _ISendMsg PUSH 31 CALL FWORD PTR _SetPriority PUSH _ExchE PUSH OFFSET _BogusMsg CALL FWORD PTR _WaitMsg L_156: MOV EAX,1 AND EAX,EAX JZ L_157 JMP L_156 L_157: POP EBP RETN PUBLIC __KillJob: PUSH EBP MOV EBP,ESP SUB ESP,4 PUSH OFFSET _JobNumE CALL FWORD PTR _GetJobNum MOV EAX,[EBP+12] CMP EAX,_JobNumE SETE AL AND EAX,01h JNZ L_158 MOV EAX,[EBP+12] CMP EAX,1 SETE AL AND EAX,01h JNZ L_159 MOV EAX,[EBP+12] CMP EAX,2 SETE AL AND EAX,01h L_159: L_158: JZ L_160 MOV EAX,70 JMP L_161 L_160: PUSH DWORD PTR [EBP+12] PUSH OFFSET _pTmpJCB CALL FWORD PTR _GetpJCB MOV [EBP-4],EAX AND EAX,EAX JZ L_162 MOV EAX,[EBP-4] JMP L_161 L_162: MOV ESI,_pTmpJCB ADD ESI,406 MOV EAX,4 MOV [ESI],EAX PUSH _pTmpJCB CALL _RemoveRdyJob XOR EAX,EAX MOV _ercE,EAX XOR EAX,EAX MOV _iE,EAX L_163: MOV EAX,_ercE CMP EAX,10 SETNE AL AND EAX,01h JZ L_164 PUSH _iE PUSH OFFSET _pExchJCBE CALL _GetExchOwner MOV _ercE,EAX AND EAX,EAX SETZ AL AND EAX,01 AND EAX,EAX JZ L_165 MOV EAX,_pExchJCBE CMP EAX,_pTmpJCB SETE AL AND EAX,01h L_165: JZ L_166 PUSH _iE CALL FWORD PTR _DeAllocExch L_166: MOV EAX,_iE INC DWORD PTR _iE JMP L_163 L_164: XOR EAX,EAX MOV _ercE,EAX PUSH OFFSET _ExchE CALL FWORD PTR _AllocExch MOV [EBP-4],EAX PUSH _ExchE PUSH _pTmpJCB CALL _SetExchOwner PUSH DWORD PTR [EBP+12] PUSH _ExchE CALL _SendAbort PUSH DWORD PTR [EBP+12] PUSH 8 PUSH 3 PUSH 0 PUSH _ExchE MOV EAX,508 MOV ESI,OFFSET _TmpStack ADD ESI,EAX PUSH ESI PUSH OFFSET __KillTask CALL FWORD PTR _NewTask MOV [EBP-4],EAX L_161: MOV ESP,EBP POP EBP RETF 4 PUBLIC __ExitJob: PUSH EBP MOV EBP,ESP PUSH OFFSET _JobNumE CALL FWORD PTR _GetJobNum PUSH _JobNumE PUSH OFFSET _pCrntJCB CALL FWORD PTR _GetpJCB MOV ESI,_pCrntJCB ADD ESI,406 MOV EAX,[EBP+12] MOV [ESI],EAX PUSH _pCrntJCB CALL _RemoveRdyJob PUSH OFFSET _ExchE CALL FWORD PTR _GetTSSExch XOR EAX,EAX MOV _ercE,EAX XOR EAX,EAX MOV _iE,EAX L_167: MOV EAX,_ercE CMP EAX,10 SETNE AL AND EAX,01h JZ L_168 PUSH _iE PUSH OFFSET _pExchJCBE CALL _GetExchOwner MOV _ercE,EAX AND EAX,EAX SETZ AL AND EAX,01 AND EAX,EAX JZ L_169 MOV EAX,_iE CMP EAX,_ExchE SETNE AL AND EAX,01h JZ L_170 MOV EAX,_pExchJCBE CMP EAX,_pCrntJCB SETE AL AND EAX,01h L_170: L_169: JZ L_171 PUSH _iE CALL FWORD PTR _DeAllocExch L_171: MOV EAX,_iE INC DWORD PTR _iE JMP L_167 L_168: PUSH _JobNumE PUSH _ExchE CALL _SendAbort XOR EAX,EAX MOV _ercE,EAX L_172: MOV EAX,_ercE AND EAX,EAX JNZ L_173 PUSH _ExchE PUSH OFFSET _BogusMsg CALL FWORD PTR _CheckMsg MOV _ercE,EAX JMP L_172 L_173: XOR EAX,EAX MOV _ercE,EAX MOV EAX, OFFSET _TmpStack ADD EAX, 508 MOV ESP, EAX MOV EBP, EAX MOV ESI,_pCrntJCB ADD ESI,18 MOV EAX,[ESI] MOV _pPDE,EAX PUSH EAX CALL _CleanUserPD PUSH OFFSET _aFileE PUSH OFFSET _cbFileE CALL FWORD PTR _GetExitJob MOV EAX,_cbFileE AND EAX,EAX JNZ L_174 MOV EAX,76 MOV _ercE,EAX L_174: MOV EAX,_ercE AND EAX,EAX JNZ L_175 PUSH OFFSET _aFileE PUSH _cbFileE PUSH OFFSET _job_fhE CALL _GetRunFile MOV _ercE,EAX L_175: MOV EAX,_ercE AND EAX,EAX JNZ L_176 PUSH _pCrntJCB PUSH _job_fhE CALL _LoadJob MOV _ercE,EAX L_176: MOV EAX,_ercE AND EAX,EAX JNZ L_177 MOV EAX,_pStart ADD EAX,_pCode SUB EAX,_offCode MOV _pStart,EAX MOV EAX, _pStack MOV EBX, _sStack ADD EAX, EBX SUB EAX, 4 MOV ESP, EAX MOV EBP, EAX PUSH 18h MOV EAX, _pStart PUSH EAX RETF ;We are history! L_177: MOV EAX,_ercE AND EAX,EAX JZ L_178 PUSH _KillExch PUSH _ExchE PUSH _ercE CALL FWORD PTR _ISendMsg PUSH 31 CALL FWORD PTR _SetPriority PUSH _ExchE PUSH OFFSET _BogusMsg CALL FWORD PTR _WaitMsg L_179: MOV EAX,1 AND EAX,EAX JZ L_180 JMP L_179 L_180: L_178: POP EBP RETF 4 PUBLIC __Chain: PUSH EBP MOV EBP,ESP PUSH DWORD PTR [EBP+20] PUSH OFFSET _aFileE PUSH DWORD PTR [EBP+16] CALL FWORD PTR _CopyData MOV EAX,[EBP+16] MOV _cbFileE,EAX PUSH DWORD PTR [EBP+20] PUSH DWORD PTR [EBP+16] PUSH OFFSET _job_fhE CALL _GetRunFile MOV _ercE,EAX AND EAX,EAX JZ L_181 PUSH _job_fhE CALL FWORD PTR _CloseFile MOV EAX,_ercE JMP L_182 L_181: PUSH _job_fhE CALL FWORD PTR _CloseFile PUSH OFFSET _JobNumE CALL FWORD PTR _GetJobNum PUSH _JobNumE PUSH OFFSET _pCrntJCB CALL FWORD PTR _GetpJCB MOV ESI,_pCrntJCB ADD ESI,406 MOV EAX,[EBP+12] MOV [ESI],EAX PUSH _pCrntJCB CALL _RemoveRdyJob PUSH OFFSET _ExchE CALL FWORD PTR _GetTSSExch XOR EAX,EAX MOV _ercE,EAX XOR EAX,EAX MOV _iE,EAX L_183: MOV EAX,_ercE CMP EAX,10 SETNE AL AND EAX,01h JZ L_184 PUSH _iE PUSH OFFSET _pExchJCBE CALL _GetExchOwner MOV _ercE,EAX AND EAX,EAX SETZ AL AND EAX,01 AND EAX,EAX JZ L_185 MOV EAX,_iE CMP EAX,_ExchE SETNE AL AND EAX,01h JZ L_186 MOV EAX,_pExchJCBE CMP EAX,_pCrntJCB SETE AL AND EAX,01h L_186: L_185: JZ L_187 PUSH _iE CALL FWORD PTR _DeAllocExch L_187: MOV EAX,_iE INC DWORD PTR _iE JMP L_183 L_184: PUSH _JobNumE PUSH _ExchE CALL _SendAbort XOR EAX,EAX MOV _ercE,EAX L_188: MOV EAX,_ercE AND EAX,EAX JNZ L_189 PUSH _ExchE PUSH OFFSET _BogusMsg CALL FWORD PTR _CheckMsg MOV _ercE,EAX JMP L_188 L_189: XOR EAX,EAX MOV _ercE,EAX MOV EAX, OFFSET _TmpStack ADD EAX, 508 MOV ESP, EAX MOV EBP, EAX MOV ESI,_pCrntJCB ADD ESI,18 MOV EAX,[ESI] MOV _pPDE,EAX PUSH EAX CALL _CleanUserPD PUSH OFFSET _aFileE PUSH _cbFileE PUSH OFFSET _job_fhE CALL _GetRunFile PUSH _pCrntJCB PUSH _job_fhE CALL _LoadJob MOV _ercE,EAX AND EAX,EAX JZ L_190 PUSH OFFSET _aFileE PUSH OFFSET _cbFileE CALL FWORD PTR _GetExitJob MOV EAX,_cbFileE AND EAX,EAX JNZ L_191 MOV EAX,76 MOV _ercE,EAX L_191: MOV EAX,_ercE AND EAX,EAX JNZ L_192 PUSH OFFSET _aFileE PUSH _cbFileE PUSH OFFSET _job_fhE CALL _GetRunFile MOV _ercE,EAX L_192: MOV EAX,_ercE AND EAX,EAX JNZ L_193 PUSH _pCrntJCB PUSH _job_fhE CALL _LoadJob MOV _ercE,EAX L_193: L_190: MOV EAX,_ercE AND EAX,EAX JNZ L_194 MOV EAX,_pStart ADD EAX,_pCode SUB EAX,_offCode MOV _pStart,EAX MOV EAX, _pStack MOV EBX, _sStack ADD EAX, EBX SUB EAX, 4 MOV ESP, EAX MOV EBP, EAX PUSH 18h MOV EAX, _pStart PUSH EAX RETF ;We are history! L_194: MOV EAX,_ercE AND EAX,EAX JZ L_195 PUSH _KillExch PUSH _ExchE PUSH _ercE CALL FWORD PTR _ISendMsg STI PUSH 31 CALL FWORD PTR _SetPriority PUSH _ExchE PUSH OFFSET _BogusMsg CALL FWORD PTR _WaitMsg L_196: MOV EAX,1 AND EAX,EAX JZ L_197 JMP L_196 L_197: L_195: L_182: POP EBP RETF 12