.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 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 DWORD PTR [EBP-4], EAX L_1: MOV EAX,DWORD PTR [EBP-4] CMP EAX,1024 SETL AL AND AL,AL JZ L_2 JMP SHORT L_3 L_4: MOV EAX,DWORD PTR [EBP-4] INC DWORD PTR [EBP-4] JMP SHORT L_1 L_3: MOV EAX,DWORD PTR [EBP-4] SHL EAX,2 MOV ESI,DWORD PTR [EBP+8] ADD ESI,EAX MOV EAX,DWORD PTR [ESI] AND EAX,EAX JZ L_5 MOV EAX,DWORD PTR [EBP-4] SHL EAX,2 MOV ESI,DWORD PTR [EBP+8] ADD ESI,EAX MOV EAX,DWORD PTR [ESI] AND EAX,-4096 MOV DWORD PTR [EBP-20], EAX XOR EAX,EAX MOV DWORD PTR [EBP-8], EAX L_6: MOV EAX,DWORD PTR [EBP-8] CMP EAX,1024 SETL AL AND AL,AL JZ L_7 JMP SHORT L_8 L_9: MOV EAX,DWORD PTR [EBP-8] INC DWORD PTR [EBP-8] JMP SHORT L_6 L_8: XOR EAX,EAX MOV DWORD PTR [EBP-12], EAX MOV EAX,DWORD PTR [EBP-4] SUB EAX,512 MOV ECX,4194304 IMUL ECX MOV EBX,EAX MOV EAX,DWORD PTR [EBP-8] MOV ECX,4096 IMUL ECX ADD EAX,EBX MOV DWORD PTR [EBP-24], EAX L_10: MOV EAX,DWORD PTR [EBP-8] INC DWORD PTR [EBP-8] SHL EAX,2 MOV ESI,DWORD PTR [EBP-20] ADD ESI,EAX MOV EAX,DWORD PTR [ESI] AND EAX,EAX JZ L_12 MOV EAX,DWORD PTR [EBP-8] CMP EAX,1024 SETL AL AND AL,AL L_12: JZ L_11 MOV EAX,DWORD PTR [EBP-12] INC DWORD PTR [EBP-12] JMP L_10 L_11: MOV EAX,DWORD PTR [EBP-12] AND EAX,EAX JZ L_13 PUSH DWORD PTR [EBP-24] PUSH DWORD PTR [EBP-12] CALL FWORD PTR _DeAllocPage MOV DWORD PTR [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 XOR EAX,EAX MOV DWORD PTR [EBP-12], EAX MOV ESI,DWORD PTR [EBP+8] XOR EAX,EAX MOV DWORD PTR [ESI], EAX PUSH DWORD PTR [EBP+16] PUSH DWORD PTR [EBP+12] XOR EAX,EAX PUSH EAX PUSH 1 LEA EAX,DWORD PTR [EBP-12] PUSH EAX CALL FWORD PTR _OpenFile MOV DWORD PTR [EBP-4], EAX MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JNZ L_14 XOR EAX,EAX MOV BYTE PTR [EBP-17], AL L_15: MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX SETZ AL AND AL,AL JZ L_17 MOVSX EAX,BYTE PTR [EBP-17] AND EAX,EAX SETZ AL AND AL,AL L_17: JZ L_16 MOV ESI,OFFSET _tag XOR EAX,EAX MOV BYTE PTR [ESI], AL PUSH DWORD PTR [EBP-12] PUSH OFFSET _tag PUSH 5 LEA EAX,DWORD PTR [EBP-16] PUSH EAX CALL FWORD PTR _ReadBytes MOV DWORD PTR [EBP-4], EAX MOV ESI,OFFSET _tag XOR EAX,EAX MOV AL,BYTE PTR [ESI] JMP L_19 L_20: PUSH DWORD PTR [EBP-12] PUSH OFFSET _filetype PUSH 1 LEA EAX,DWORD PTR [EBP-16] PUSH EAX CALL FWORD PTR _ReadBytes MOV DWORD PTR [EBP-4], EAX MOVSX EAX,_filetype CMP EAX,1 SETL AL AND AL,AL JNZ L_21 MOVSX EAX,_filetype CMP EAX,3 SETG AL AND AL,AL L_21: JZ L_22 MOV EAX,30074 MOV DWORD PTR [EBP-4], EAX L_22: JMP L_18 L_23: PUSH DWORD PTR [EBP-12] PUSH OFFSET _sStack PUSH 4 LEA EAX,DWORD PTR [EBP-16] PUSH EAX CALL FWORD PTR _ReadBytes MOV DWORD PTR [EBP-4], EAX MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JNZ L_24 PUSH DWORD PTR [EBP-12] PUSH OFFSET _sCode PUSH 4 LEA EAX,DWORD PTR [EBP-16] PUSH EAX CALL FWORD PTR _ReadBytes MOV DWORD PTR [EBP-4], EAX L_24: MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JNZ L_25 PUSH DWORD PTR [EBP-12] PUSH OFFSET _sData PUSH 4 LEA EAX,DWORD PTR [EBP-16] PUSH EAX CALL FWORD PTR _ReadBytes MOV DWORD PTR [EBP-4], EAX L_25: JMP L_18 L_26: PUSH DWORD PTR [EBP-12] PUSH OFFSET _offData PUSH 4 LEA EAX,DWORD PTR [EBP-16] PUSH EAX CALL FWORD PTR _ReadBytes MOV DWORD PTR [EBP-4], EAX JMP L_18 L_27: PUSH DWORD PTR [EBP-12] PUSH OFFSET _offCode PUSH 4 LEA EAX,DWORD PTR [EBP-16] PUSH EAX CALL FWORD PTR _ReadBytes MOV DWORD PTR [EBP-4], EAX JMP L_18 L_28: PUSH DWORD PTR [EBP-12] PUSH OFFSET _pStart PUSH 4 LEA EAX,DWORD PTR [EBP-16] PUSH EAX CALL FWORD PTR _ReadBytes MOV DWORD PTR [EBP-4], EAX JMP L_18 L_29: PUSH DWORD PTR [EBP-12] PUSH OFFSET _oCode CALL FWORD PTR _GetFileLFA MOV DWORD PTR [EBP-4], EAX MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JNZ L_30 PUSH DWORD PTR [EBP-12] MOV ESI,OFFSET _tag MOV EAX,_oCode ADD EAX,DWORD PTR [ESI+1] PUSH EAX CALL FWORD PTR _SetFileLFA MOV DWORD PTR [EBP-4], EAX L_30: JMP L_18 L_31: PUSH DWORD PTR [EBP-12] PUSH OFFSET _oData CALL FWORD PTR _GetFileLFA MOV DWORD PTR [EBP-4], EAX MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JNZ L_32 PUSH DWORD PTR [EBP-12] MOV ESI,OFFSET _tag MOV EAX,_oData ADD EAX,DWORD PTR [ESI+1] PUSH EAX CALL FWORD PTR _SetFileLFA MOV DWORD PTR [EBP-4], EAX L_32: JMP L_18 L_33: PUSH DWORD PTR [EBP-12] PUSH OFFSET _oCDFIX CALL FWORD PTR _GetFileLFA MOV DWORD PTR [EBP-4], EAX MOV ESI,OFFSET _tag MOV EAX,DWORD PTR [ESI+1] MOV ECX,4 CDQ IDIV ECX MOV _nCDFIX, EAX MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JNZ L_34 PUSH DWORD PTR [EBP-12] MOV ESI,OFFSET _tag MOV EAX,_oCDFIX ADD EAX,DWORD PTR [ESI+1] PUSH EAX CALL FWORD PTR _SetFileLFA MOV DWORD PTR [EBP-4], EAX L_34: JMP L_18 L_35: PUSH DWORD PTR [EBP-12] PUSH OFFSET _oCCFIX CALL FWORD PTR _GetFileLFA MOV DWORD PTR [EBP-4], EAX MOV ESI,OFFSET _tag MOV EAX,DWORD PTR [ESI+1] MOV ECX,4 CDQ IDIV ECX MOV _nCCFIX, EAX MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JNZ L_36 PUSH DWORD PTR [EBP-12] MOV ESI,OFFSET _tag MOV EAX,_oCCFIX ADD EAX,DWORD PTR [ESI+1] PUSH EAX CALL FWORD PTR _SetFileLFA MOV DWORD PTR [EBP-4], EAX L_36: JMP L_18 L_37: PUSH DWORD PTR [EBP-12] PUSH OFFSET _oDDFIX CALL FWORD PTR _GetFileLFA MOV DWORD PTR [EBP-4], EAX MOV ESI,OFFSET _tag MOV EAX,DWORD PTR [ESI+1] MOV ECX,4 CDQ IDIV ECX MOV _nDDFIX, EAX MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JNZ L_38 PUSH DWORD PTR [EBP-12] MOV ESI,OFFSET _tag MOV EAX,_oDDFIX ADD EAX,DWORD PTR [ESI+1] PUSH EAX CALL FWORD PTR _SetFileLFA MOV DWORD PTR [EBP-4], EAX L_38: JMP L_18 L_39: PUSH DWORD PTR [EBP-12] PUSH OFFSET _oDCFIX CALL FWORD PTR _GetFileLFA MOV DWORD PTR [EBP-4], EAX MOV ESI,OFFSET _tag MOV EAX,DWORD PTR [ESI+1] MOV ECX,4 CDQ IDIV ECX MOV _nDCFIX, EAX MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JNZ L_40 PUSH DWORD PTR [EBP-12] MOV ESI,OFFSET _tag MOV EAX,_oDCFIX ADD EAX,DWORD PTR [ESI+1] PUSH EAX CALL FWORD PTR _SetFileLFA MOV DWORD PTR [EBP-4], EAX L_40: JMP L_18 L_41: MOV EAX,1 MOV BYTE PTR [EBP-17], AL JMP L_18 L_42: PUSH DWORD PTR [EBP-12] LEA EAX,DWORD PTR [EBP-8] PUSH EAX CALL FWORD PTR _GetFileLFA MOV DWORD PTR [EBP-4], EAX MOV ESI,OFFSET _tag MOV EAX,DWORD PTR [ESI+1] CMP EAX,1024 SETG AL AND AL,AL JZ L_43 MOV EAX,74 MOV DWORD PTR [EBP-4], EAX L_43: MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JNZ L_44 PUSH DWORD PTR [EBP-12] MOV ESI,OFFSET _tag MOV EAX,DWORD PTR [EBP-8] ADD EAX,DWORD PTR [ESI+1] PUSH EAX CALL FWORD PTR _SetFileLFA MOV DWORD PTR [EBP-4], EAX L_44: MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JZ L_45 MOV EAX,74 MOV DWORD PTR [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,DWORD PTR [EBP-4] AND EAX,EAX JZ L_46 PUSH DWORD PTR [EBP-12] CALL FWORD PTR _CloseFile L_46: L_14: MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JNZ L_47 MOV ESI,DWORD PTR [EBP+8] MOV EAX,DWORD PTR [EBP-12] MOV DWORD PTR [ESI], EAX L_47: MOV EAX,DWORD PTR [EBP-4] L_48: MOV ESP,EBP POP EBP RETN 12 PUBLIC __SetExitJob: PUSH EBP MOV EBP,ESP SUB ESP,4 LEA EAX,DWORD PTR [EBP-4] PUSH EAX CALL FWORD PTR _GetJobNum PUSH DWORD PTR [EBP-4] PUSH OFFSET _pTmpJCB CALL FWORD PTR _GetpJCB MOV EAX,DWORD PTR [EBP+12] CMP EAX,79 SETG AL AND AL,AL JZ L_49 MOV EAX,76 JMP L_50 L_49: MOV EAX,DWORD PTR [EBP+12] AND EAX,EAX JNZ L_52 MOV ESI,_pTmpJCB XOR EAX,EAX MOV BYTE PTR [ESI+146], AL JMP L_53 L_52: PUSH DWORD PTR [EBP+16] MOV ESI,_pTmpJCB MOV EAX,1 ADD ESI,EAX MOV EAX,ESI ADD EAX,146 PUSH EAX PUSH DWORD PTR [EBP+12] CALL FWORD PTR _CopyData MOV ESI,_pTmpJCB MOV EAX,DWORD PTR [EBP+12] MOV BYTE PTR [ESI+146], AL L_53: L_51: XOR EAX,EAX L_50: MOV ESP,EBP POP EBP RETF 8 PUBLIC __GetExitJob: PUSH EBP MOV EBP,ESP SUB ESP,8 LEA EAX,DWORD PTR [EBP-4] PUSH EAX CALL FWORD PTR _GetJobNum PUSH DWORD PTR [EBP-4] PUSH OFFSET _pTmpJCB CALL FWORD PTR _GetpJCB MOV ESI,_pTmpJCB MOVSX EAX,BYTE PTR [ESI+146] MOV DWORD PTR [EBP-8], EAX MOV EAX,DWORD PTR [EBP-8] AND EAX,EAX JZ L_54 MOV ESI,_pTmpJCB MOV EAX,1 ADD ESI,EAX MOV EAX,ESI ADD EAX,146 PUSH EAX PUSH DWORD PTR [EBP+16] PUSH DWORD PTR [EBP-8] CALL FWORD PTR _CopyData L_54: MOV ESI,DWORD PTR [EBP+12] MOV EAX,DWORD PTR [EBP-8] MOV DWORD PTR [ESI], EAX XOR EAX,EAX MOV ESP,EBP POP EBP RETF 8 PUBLIC __SetPath: PUSH EBP MOV EBP,ESP SUB ESP,4 LEA EAX,DWORD PTR [EBP-4] PUSH EAX CALL FWORD PTR _GetJobNum PUSH DWORD PTR [EBP-4] PUSH OFFSET _pTmpJCB CALL FWORD PTR _GetpJCB MOV EAX,DWORD PTR [EBP+12] CMP EAX,69 SETG AL AND AL,AL JZ L_56 MOV EAX,76 JMP L_57 L_56: MOV EAX,DWORD PTR [EBP+12] AND EAX,EAX JNZ L_59 MOV ESI,_pTmpJCB XOR EAX,EAX MOV BYTE PTR [ESI+76], AL JMP L_60 L_59: PUSH DWORD PTR [EBP+16] MOV ESI,_pTmpJCB MOV EAX,1 ADD ESI,EAX MOV EAX,ESI ADD EAX,76 PUSH EAX PUSH DWORD PTR [EBP+12] CALL FWORD PTR _CopyData MOV ESI,_pTmpJCB MOV EAX,DWORD PTR [EBP+12] MOV BYTE PTR [ESI+76], AL L_60: L_58: XOR EAX,EAX L_57: 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 DWORD PTR [EBP-8], EAX MOV EAX,DWORD PTR [EBP-8] AND EAX,EAX JNZ L_61 MOV ESI,_pTmpJCB MOVSX EAX,BYTE PTR [ESI+76] MOV DWORD PTR [EBP-4], EAX MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JZ L_62 MOV ESI,_pTmpJCB MOV EAX,1 ADD ESI,EAX MOV EAX,ESI ADD EAX,76 PUSH EAX PUSH DWORD PTR [EBP+16] PUSH DWORD PTR [EBP-4] CALL FWORD PTR _CopyData L_62: MOV ESI,DWORD PTR [EBP+12] MOV EAX,DWORD PTR [EBP-4] MOV DWORD PTR [ESI], EAX L_61: MOV EAX,DWORD PTR [EBP-8] MOV ESP,EBP POP EBP RETF 12 PUBLIC __SetCmdLine: PUSH EBP MOV EBP,ESP SUB ESP,4 LEA EAX,DWORD PTR [EBP-4] PUSH EAX CALL FWORD PTR _GetJobNum PUSH DWORD PTR [EBP-4] PUSH OFFSET _pTmpJCB CALL FWORD PTR _GetpJCB MOV EAX,DWORD PTR [EBP+12] CMP EAX,79 SETG AL AND AL,AL JZ L_64 MOV EAX,76 JMP L_65 L_64: MOV EAX,DWORD PTR [EBP+12] AND EAX,EAX JNZ L_67 MOV ESI,_pTmpJCB XOR EAX,EAX MOV BYTE PTR [ESI+226], AL JMP L_68 L_67: PUSH DWORD PTR [EBP+16] MOV ESI,_pTmpJCB MOV EAX,1 ADD ESI,EAX MOV EAX,ESI ADD EAX,226 PUSH EAX PUSH DWORD PTR [EBP+12] CALL FWORD PTR _CopyData MOV ESI,_pTmpJCB MOV EAX,DWORD PTR [EBP+12] MOV BYTE PTR [ESI+226], AL L_68: L_66: XOR EAX,EAX L_65: MOV ESP,EBP POP EBP RETF 8 PUBLIC __GetCmdLine: PUSH EBP MOV EBP,ESP SUB ESP,8 LEA EAX,DWORD PTR [EBP-4] PUSH EAX CALL FWORD PTR _GetJobNum PUSH DWORD PTR [EBP-4] PUSH OFFSET _pTmpJCB CALL FWORD PTR _GetpJCB MOV ESI,_pTmpJCB MOVSX EAX,BYTE PTR [ESI+226] MOV DWORD PTR [EBP-8], EAX MOV EAX,DWORD PTR [EBP-8] AND EAX,EAX JZ L_69 MOV ESI,_pTmpJCB MOV EAX,1 ADD ESI,EAX MOV EAX,ESI ADD EAX,226 PUSH EAX PUSH DWORD PTR [EBP+16] PUSH DWORD PTR [EBP-8] CALL FWORD PTR _CopyData L_69: MOV ESI,DWORD PTR [EBP+12] MOV EAX,DWORD PTR [EBP-8] MOV DWORD PTR [ESI], EAX XOR EAX,EAX MOV ESP,EBP POP EBP RETF 8 PUBLIC __SetUserName: PUSH EBP MOV EBP,ESP SUB ESP,4 LEA EAX,DWORD PTR [EBP-4] PUSH EAX CALL FWORD PTR _GetJobNum PUSH DWORD PTR [EBP-4] PUSH OFFSET _pTmpJCB CALL FWORD PTR _GetpJCB MOV EAX,DWORD PTR [EBP+12] CMP EAX,29 SETG AL AND AL,AL JZ L_71 MOV EAX,76 JMP L_72 L_71: MOV EAX,DWORD PTR [EBP+12] AND EAX,EAX JNZ L_74 MOV ESI,_pTmpJCB XOR EAX,EAX MOV BYTE PTR [ESI+46], AL JMP L_75 L_74: PUSH DWORD PTR [EBP+16] MOV ESI,_pTmpJCB MOV EAX,1 ADD ESI,EAX MOV EAX,ESI ADD EAX,46 PUSH EAX PUSH DWORD PTR [EBP+12] CALL FWORD PTR _CopyData MOV ESI,_pTmpJCB MOV EAX,DWORD PTR [EBP+12] MOV BYTE PTR [ESI+46], AL L_75: L_73: XOR EAX,EAX L_72: MOV ESP,EBP POP EBP RETF 8 PUBLIC __GetUserName: PUSH EBP MOV EBP,ESP SUB ESP,8 LEA EAX,DWORD PTR [EBP-4] PUSH EAX CALL FWORD PTR _GetJobNum PUSH DWORD PTR [EBP-4] PUSH OFFSET _pTmpJCB CALL FWORD PTR _GetpJCB MOV ESI,_pTmpJCB MOVSX EAX,BYTE PTR [ESI+46] MOV DWORD PTR [EBP-8], EAX MOV EAX,DWORD PTR [EBP-8] AND EAX,EAX JZ L_76 MOV ESI,_pTmpJCB MOV EAX,1 ADD ESI,EAX MOV EAX,ESI ADD EAX,46 PUSH EAX PUSH DWORD PTR [EBP+16] PUSH DWORD PTR [EBP-8] CALL FWORD PTR _CopyData L_76: MOV ESI,DWORD PTR [EBP+12] MOV EAX,DWORD PTR [EBP-8] MOV DWORD PTR [ESI], EAX XOR EAX,EAX MOV ESP,EBP POP EBP RETF 8 PUBLIC __SetSysIn: PUSH EBP MOV EBP,ESP SUB ESP,4 LEA EAX,DWORD PTR [EBP-4] PUSH EAX CALL FWORD PTR _GetJobNum PUSH DWORD PTR [EBP-4] PUSH OFFSET _pTmpJCB CALL FWORD PTR _GetpJCB MOV EAX,DWORD PTR [EBP+12] CMP EAX,49 SETG AL AND AL,AL JNZ L_78 MOV EAX,DWORD PTR [EBP+12] AND EAX,EAX SETZ AL AND AL,AL L_78: JZ L_79 MOV EAX,76 JMP L_80 L_79: PUSH DWORD PTR [EBP+16] MOV ESI,_pTmpJCB MOV EAX,1 ADD ESI,EAX MOV EAX,ESI ADD EAX,306 PUSH EAX PUSH DWORD PTR [EBP+12] CALL FWORD PTR _CopyData MOV ESI,_pTmpJCB MOV EAX,DWORD PTR [EBP+12] MOV BYTE PTR [ESI+306], AL L_81: XOR EAX,EAX L_80: MOV ESP,EBP POP EBP RETF 8 PUBLIC __GetSysIn: PUSH EBP MOV EBP,ESP SUB ESP,8 LEA EAX,DWORD PTR [EBP-4] PUSH EAX CALL FWORD PTR _GetJobNum PUSH DWORD PTR [EBP-4] PUSH OFFSET _pTmpJCB CALL FWORD PTR _GetpJCB MOV ESI,_pTmpJCB MOVSX EAX,BYTE PTR [ESI+306] MOV DWORD PTR [EBP-8], EAX MOV EAX,DWORD PTR [EBP-8] AND EAX,EAX JZ L_82 MOV ESI,_pTmpJCB MOV EAX,1 ADD ESI,EAX MOV EAX,ESI ADD EAX,306 PUSH EAX PUSH DWORD PTR [EBP+16] PUSH DWORD PTR [EBP-8] CALL FWORD PTR _CopyData L_82: MOV ESI,DWORD PTR [EBP+12] MOV EAX,DWORD PTR [EBP-8] MOV DWORD PTR [ESI], EAX XOR EAX,EAX MOV ESP,EBP POP EBP RETF 8 PUBLIC __SetSysOut: PUSH EBP MOV EBP,ESP SUB ESP,4 LEA EAX,DWORD PTR [EBP-4] PUSH EAX CALL FWORD PTR _GetJobNum PUSH DWORD PTR [EBP-4] PUSH OFFSET _pTmpJCB CALL FWORD PTR _GetpJCB MOV EAX,DWORD PTR [EBP+12] CMP EAX,49 SETG AL AND AL,AL JNZ L_84 MOV EAX,DWORD PTR [EBP+12] AND EAX,EAX SETZ AL AND AL,AL L_84: JZ L_85 MOV EAX,76 JMP L_86 L_85: PUSH DWORD PTR [EBP+16] MOV ESI,_pTmpJCB MOV EAX,1 ADD ESI,EAX MOV EAX,ESI ADD EAX,356 PUSH EAX PUSH DWORD PTR [EBP+12] CALL FWORD PTR _CopyData MOV ESI,_pTmpJCB MOV EAX,DWORD PTR [EBP+12] MOV BYTE PTR [ESI+356], AL L_87: XOR EAX,EAX L_86: MOV ESP,EBP POP EBP RETF 8 PUBLIC __GetSysOut: PUSH EBP MOV EBP,ESP SUB ESP,8 LEA EAX,DWORD PTR [EBP-4] PUSH EAX CALL FWORD PTR _GetJobNum PUSH DWORD PTR [EBP-4] PUSH OFFSET _pTmpJCB CALL FWORD PTR _GetpJCB MOV ESI,_pTmpJCB MOVSX EAX,BYTE PTR [ESI+356] MOV DWORD PTR [EBP-8], EAX MOV EAX,DWORD PTR [EBP-8] AND EAX,EAX JZ L_88 MOV ESI,_pTmpJCB MOV EAX,1 ADD ESI,EAX MOV EAX,ESI ADD EAX,356 PUSH EAX PUSH DWORD PTR [EBP+16] PUSH DWORD PTR [EBP-8] CALL FWORD PTR _CopyData L_88: MOV ESI,DWORD PTR [EBP+12] MOV EAX,DWORD PTR [EBP-8] MOV DWORD PTR [ESI], EAX XOR EAX,EAX MOV ESP,EBP POP EBP RETF 8 PUBLIC __SetJobName: PUSH EBP MOV EBP,ESP SUB ESP,4 LEA EAX,DWORD PTR [EBP-4] PUSH EAX CALL FWORD PTR _GetJobNum PUSH DWORD PTR [EBP-4] PUSH OFFSET _pTmpJCB CALL FWORD PTR _GetpJCB MOV EAX,DWORD PTR [EBP+12] CMP EAX,13 SETG AL AND AL,AL JZ L_90 MOV EAX,13 MOV DWORD PTR [EBP+12], EAX L_90: MOV EAX,DWORD PTR [EBP+12] AND EAX,EAX JZ L_91 PUSH DWORD PTR [EBP+16] MOV ESI,_pTmpJCB MOV EAX,1 ADD ESI,EAX MOV EAX,ESI ADD EAX,4 PUSH EAX PUSH DWORD PTR [EBP+12] CALL FWORD PTR _CopyData L_91: MOV ESI,_pTmpJCB MOV EAX,DWORD PTR [EBP+12] MOV BYTE PTR [ESI+4], 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,DWORD PTR [EBP-12] PUSH EAX CALL _GetRunFile MOV DWORD PTR [EBP-4], EAX MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JNZ L_93 XOR EAX,EAX MOV _JobNum, EAX XOR EAX,EAX MOV _pNewJCB, EAX XOR EAX,EAX MOV DWORD PTR [EBP-24], EAX XOR EAX,EAX MOV DWORD PTR [EBP-28], EAX XOR EAX,EAX MOV DWORD PTR [EBP-32], EAX PUSH OFFSET _JobNum PUSH OFFSET _pNewJCB CALL _AllocJCB MOV DWORD PTR [EBP-4], EAX MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JNZ L_94 PUSH 3 LEA EAX,DWORD PTR [EBP-24] PUSH EAX CALL FWORD PTR _AllocOSPage MOV DWORD PTR [EBP-4], EAX L_94: MOV EAX,DWORD PTR [EBP-24] ADD EAX,4096 MOV DWORD PTR [EBP-28], EAX MOV EAX,DWORD PTR [EBP-24] ADD EAX,8192 MOV DWORD PTR [EBP-32], EAX MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JNZ L_95 PUSH DWORD PTR [EBP-28] PUSH 4096 XOR EAX,EAX PUSH EAX CALL FWORD PTR _FillData PUSH DWORD PTR [EBP-32] PUSH 4096 XOR EAX,EAX PUSH EAX CALL FWORD PTR _FillData PUSH 1 PUSH OFFSET _pTmpJCB CALL FWORD PTR _GetpJCB MOV ESI,_pTmpJCB MOV EAX,DWORD PTR [ESI+18] MOV DWORD PTR [EBP-36], EAX PUSH 1 PUSH DWORD PTR [EBP-28] LEA EAX,DWORD PTR [EBP-44] PUSH EAX CALL FWORD PTR _GetPhyAdd MOV EAX,DWORD PTR [EBP-44] OR EAX,7 MOV DWORD PTR [EBP-44], EAX MOV EAX,1024 MOV ESI,DWORD PTR [EBP-36] ADD ESI,EAX MOV EAX,DWORD PTR [EBP-44] MOV DWORD PTR [ESI], EAX MOV EAX,3072 MOV ESI,DWORD PTR [EBP-36] ADD ESI,EAX MOV EAX,DWORD PTR [EBP-28] MOV DWORD PTR [ESI], EAX MOV EAX,_sStack MOV ECX,4096 CDQ IDIV ECX MOV DWORD PTR [EBP-20], EAX MOV EAX,_sStack MOV ECX,4096 CDQ IDIV ECX MOV EAX,EDX AND EAX,EAX JZ L_96 MOV EAX,DWORD PTR [EBP-20] INC DWORD PTR [EBP-20] L_96: PUSH DWORD PTR [EBP-20] PUSH OFFSET _pStack CALL FWORD PTR _AllocPage MOV DWORD PTR [EBP-4], EAX MOV EAX,DWORD PTR [EBP-20] MOV ECX,4096 IMUL ECX MOV _sStack, EAX MOV EAX,_sCode MOV ECX,4096 CDQ IDIV ECX MOV DWORD PTR [EBP-20], EAX MOV EAX,_sCode MOV ECX,4096 CDQ IDIV ECX MOV EAX,EDX AND EAX,EAX JZ L_97 MOV EAX,DWORD PTR [EBP-20] INC DWORD PTR [EBP-20] L_97: MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JNZ L_98 PUSH DWORD PTR [EBP-20] PUSH OFFSET _pCode CALL FWORD PTR _AllocPage MOV DWORD PTR [EBP-4], EAX L_98: MOV EAX,_sData MOV ECX,4096 CDQ IDIV ECX MOV DWORD PTR [EBP-20], EAX MOV EAX,_sData MOV ECX,4096 CDQ IDIV ECX MOV EAX,EDX AND EAX,EAX JZ L_99 MOV EAX,DWORD PTR [EBP-20] INC DWORD PTR [EBP-20] L_99: MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JNZ L_100 PUSH DWORD PTR [EBP-20] PUSH OFFSET _pData CALL FWORD PTR _AllocPage MOV DWORD PTR [EBP-4], EAX L_100: PUSH DWORD PTR [EBP-36] PUSH DWORD PTR [EBP-24] PUSH 4096 CALL FWORD PTR _CopyData MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JNZ L_101 PUSH DWORD PTR [EBP-12] PUSH _oCode CALL FWORD PTR _SetFileLFA MOV DWORD PTR [EBP-4], EAX L_101: MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JNZ L_102 PUSH DWORD PTR [EBP-12] PUSH _pCode PUSH _sCode LEA EAX,DWORD PTR [EBP-16] PUSH EAX CALL FWORD PTR _ReadBytes MOV DWORD PTR [EBP-4], EAX L_102: MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JNZ L_103 PUSH DWORD PTR [EBP-12] PUSH _oData CALL FWORD PTR _SetFileLFA MOV DWORD PTR [EBP-4], EAX L_103: MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JNZ L_104 PUSH DWORD PTR [EBP-12] PUSH _pData PUSH _sData LEA EAX,DWORD PTR [EBP-16] PUSH EAX CALL FWORD PTR _ReadBytes MOV DWORD PTR [EBP-4], EAX L_104: MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JNZ L_105 MOV EAX,_nCDFIX AND EAX,EAX JZ L_106 PUSH DWORD PTR [EBP-12] PUSH _oCDFIX CALL FWORD PTR _SetFileLFA MOV DWORD PTR [EBP-4], EAX L_107: MOV EAX,_nCDFIX DEC _nCDFIX AND EAX,EAX JZ L_109 MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX SETZ AL AND AL,AL L_109: JZ L_108 PUSH DWORD PTR [EBP-12] LEA EAX,DWORD PTR [EBP-8] PUSH EAX PUSH 4 LEA EAX,DWORD PTR [EBP-16] PUSH EAX CALL FWORD PTR _ReadBytes MOV DWORD PTR [EBP-4], EAX MOV EAX,_pCode ADD EAX,DWORD PTR [EBP-8] MOV DWORD PTR [EBP-40], EAX MOV ESI,DWORD PTR [EBP-40] MOV EBX,ESI MOV ESI,DWORD PTR [EBP-40] MOV EAX,DWORD PTR [ESI] SUB EAX,_offData ADD EAX,_pData MOV DWORD PTR [EBX], EAX JMP L_107 L_108: L_106: MOV EAX,_nCCFIX AND EAX,EAX JZ L_110 PUSH DWORD PTR [EBP-12] PUSH _oCCFIX CALL FWORD PTR _SetFileLFA MOV DWORD PTR [EBP-4], EAX L_111: MOV EAX,_nCCFIX DEC _nCCFIX AND EAX,EAX JZ L_113 MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX SETZ AL AND AL,AL L_113: JZ L_112 PUSH DWORD PTR [EBP-12] LEA EAX,DWORD PTR [EBP-8] PUSH EAX PUSH 4 LEA EAX,DWORD PTR [EBP-16] PUSH EAX CALL FWORD PTR _ReadBytes MOV DWORD PTR [EBP-4], EAX MOV EAX,_pCode ADD EAX,DWORD PTR [EBP-8] MOV DWORD PTR [EBP-40], EAX MOV ESI,DWORD PTR [EBP-40] MOV EBX,ESI MOV ESI,DWORD PTR [EBP-40] MOV EAX,DWORD PTR [ESI] SUB EAX,_offCode ADD EAX,_pCode MOV DWORD PTR [EBX], EAX JMP L_111 L_112: L_110: MOV EAX,_nDCFIX AND EAX,EAX JZ L_114 PUSH DWORD PTR [EBP-12] PUSH _oDCFIX CALL FWORD PTR _SetFileLFA MOV DWORD PTR [EBP-4], EAX L_115: MOV EAX,_nDCFIX DEC _nDCFIX AND EAX,EAX JZ L_117 MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX SETZ AL AND AL,AL L_117: JZ L_116 PUSH DWORD PTR [EBP-12] LEA EAX,DWORD PTR [EBP-8] PUSH EAX PUSH 4 LEA EAX,DWORD PTR [EBP-16] PUSH EAX CALL FWORD PTR _ReadBytes MOV DWORD PTR [EBP-4], EAX MOV EAX,_pData ADD EAX,DWORD PTR [EBP-8] MOV DWORD PTR [EBP-40], EAX MOV ESI,DWORD PTR [EBP-40] MOV EBX,ESI MOV ESI,DWORD PTR [EBP-40] MOV EAX,DWORD PTR [ESI] SUB EAX,_offCode ADD EAX,_pCode MOV DWORD PTR [EBX], EAX JMP L_115 L_116: L_114: MOV EAX,_nDDFIX AND EAX,EAX JZ L_118 PUSH DWORD PTR [EBP-12] PUSH _oDDFIX CALL FWORD PTR _SetFileLFA MOV DWORD PTR [EBP-4], EAX L_119: MOV EAX,_nDDFIX DEC _nDDFIX AND EAX,EAX JZ L_121 MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX SETZ AL AND AL,AL L_121: JZ L_120 PUSH DWORD PTR [EBP-12] LEA EAX,DWORD PTR [EBP-8] PUSH EAX PUSH 4 LEA EAX,DWORD PTR [EBP-16] PUSH EAX CALL FWORD PTR _ReadBytes MOV DWORD PTR [EBP-4], EAX MOV EAX,_pData ADD EAX,DWORD PTR [EBP-8] MOV DWORD PTR [EBP-40], EAX MOV ESI,DWORD PTR [EBP-40] MOV EBX,ESI MOV ESI,DWORD PTR [EBP-40] MOV EAX,DWORD PTR [ESI] SUB EAX,_offData ADD EAX,_pData MOV DWORD PTR [EBX], EAX JMP L_119 L_120: L_118: L_105: MOV EAX,1024 MOV ESI,DWORD PTR [EBP-36] ADD ESI,EAX PUSH ESI PUSH 1024 XOR EAX,EAX PUSH EAX CALL FWORD PTR _FillData MOV EAX,3072 MOV ESI,DWORD PTR [EBP-36] ADD ESI,EAX PUSH ESI PUSH 1024 XOR EAX,EAX PUSH EAX CALL FWORD PTR _FillData MOV ESI,_pNewJCB MOV EAX,DWORD PTR [EBP-24] MOV DWORD PTR [ESI+18], EAX MOV ESI,_pNewJCB MOV EAX,_pStack MOV DWORD PTR [ESI+38], EAX MOV ESI,_pNewJCB MOV EAX,_sStack MOV DWORD PTR [ESI+42], EAX MOV ESI,_pNewJCB MOV EAX,_pCode MOV DWORD PTR [ESI+22], EAX MOV ESI,_pNewJCB MOV EAX,_sCode MOV DWORD PTR [ESI+26], EAX MOV ESI,_pNewJCB MOV EAX,_pData MOV DWORD PTR [ESI+30], EAX MOV ESI,_pNewJCB MOV EAX,_sData MOV DWORD PTR [ESI+34], EAX MOV ESI,_pNewJCB XOR EAX,EAX MOV BYTE PTR [ESI+46], AL MOV ESI,_pNewJCB XOR EAX,EAX MOV BYTE PTR [ESI+76], AL MOV ESI,_pNewJCB XOR EAX,EAX MOV BYTE PTR [ESI+146], AL MOV ESI,_pNewJCB XOR EAX,EAX MOV BYTE PTR [ESI+226], AL PUSH OFFSET L_lit+0 MOV ESI,_pNewJCB MOV EAX,1 ADD ESI,EAX MOV EAX,ESI ADD EAX,306 PUSH EAX PUSH 3 CALL FWORD PTR _CopyData MOV ESI,_pNewJCB MOV EAX,3 MOV BYTE PTR [ESI+306], AL PUSH OFFSET L_lit+4 MOV ESI,_pNewJCB MOV EAX,1 ADD ESI,EAX MOV EAX,ESI ADD EAX,356 PUSH EAX PUSH 3 CALL FWORD PTR _CopyData MOV ESI,_pNewJCB MOV EAX,3 MOV BYTE PTR [ESI+356], AL MOV ESI,_pNewJCB MOV EAX,DWORD PTR [EBP-32] MOV DWORD PTR [ESI+410], EAX MOV ESI,_pNewJCB MOV EAX,DWORD PTR [EBP-32] MOV DWORD PTR [ESI+414], EAX MOV ESI,_pNewJCB XOR EAX,EAX MOV DWORD PTR [ESI+418], EAX MOV ESI,_pNewJCB XOR EAX,EAX MOV DWORD PTR [ESI+422], EAX MOV ESI,_pNewJCB MOV EAX,80 MOV DWORD PTR [ESI+426], EAX MOV ESI,_pNewJCB MOV EAX,25 MOV DWORD PTR [ESI+430], EAX MOV ESI,_pNewJCB XOR EAX,EAX MOV DWORD PTR [ESI+434], EAX MOV ESI,_pNewJCB MOV EAX,1 MOV BYTE PTR [ESI+442], AL MOV ESI,_pNewJCB XOR EAX,EAX MOV BYTE PTR [ESI+443], AL MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JNZ L_122 LEA EAX,DWORD PTR [EBP-8] PUSH EAX CALL FWORD PTR _AllocExch MOV DWORD PTR [EBP-4], EAX L_122: MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JNZ L_123 PUSH _JobNum PUSH 24 PUSH 25 XOR EAX,EAX PUSH EAX 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 DWORD PTR [EBP-4], EAX L_123: MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JNZ L_124 PUSH DWORD PTR [EBP-8] PUSH _pNewJCB CALL _SetExchOwner L_124: L_95: PUSH DWORD PTR [EBP-12] CALL FWORD PTR _CloseFile L_93: MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JNZ L_125 MOV ESI,DWORD PTR [EBP+12] MOV EAX,_JobNum MOV DWORD PTR [ESI], EAX L_125: MOV EAX,DWORD PTR [EBP-4] MOV ESP,EBP POP EBP RETF 12 _LoadJob: PUSH EBP MOV EBP,ESP SUB ESP,20 MOV EAX,DWORD PTR [EBP+12] MOV _pNewJCB, EAX MOV EAX,_sStack MOV ECX,4096 CDQ IDIV ECX MOV DWORD PTR [EBP-16], EAX MOV EAX,_sStack MOV ECX,4096 CDQ IDIV ECX MOV EAX,EDX AND EAX,EAX JZ L_127 MOV EAX,DWORD PTR [EBP-16] INC DWORD PTR [EBP-16] L_127: PUSH DWORD PTR [EBP-16] PUSH OFFSET _pStack CALL FWORD PTR _AllocPage MOV DWORD PTR [EBP-4], EAX MOV EAX,DWORD PTR [EBP-16] MOV ECX,4096 IMUL ECX MOV _sStack, EAX MOV EAX,_sCode MOV ECX,4096 CDQ IDIV ECX MOV DWORD PTR [EBP-16], EAX MOV EAX,_sCode MOV ECX,4096 CDQ IDIV ECX MOV EAX,EDX AND EAX,EAX JZ L_128 MOV EAX,DWORD PTR [EBP-16] INC DWORD PTR [EBP-16] L_128: MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JNZ L_129 PUSH DWORD PTR [EBP-16] PUSH OFFSET _pCode CALL FWORD PTR _AllocPage MOV DWORD PTR [EBP-4], EAX L_129: MOV EAX,_sData MOV ECX,4096 CDQ IDIV ECX MOV DWORD PTR [EBP-16], EAX MOV EAX,_sData MOV ECX,4096 CDQ IDIV ECX MOV EAX,EDX AND EAX,EAX JZ L_130 MOV EAX,DWORD PTR [EBP-16] INC DWORD PTR [EBP-16] L_130: PUSH DWORD PTR [EBP-16] PUSH OFFSET _pData CALL FWORD PTR _AllocPage MOV DWORD PTR [EBP-4], EAX MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JNZ L_131 PUSH DWORD PTR [EBP+8] PUSH _oCode CALL FWORD PTR _SetFileLFA MOV DWORD PTR [EBP-4], EAX L_131: MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JNZ L_132 PUSH DWORD PTR [EBP+8] PUSH _pCode PUSH _sCode LEA EAX,DWORD PTR [EBP-12] PUSH EAX CALL FWORD PTR _ReadBytes MOV DWORD PTR [EBP-4], EAX L_132: MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JNZ L_133 PUSH DWORD PTR [EBP+8] PUSH _oData CALL FWORD PTR _SetFileLFA MOV DWORD PTR [EBP-4], EAX L_133: MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JNZ L_134 PUSH DWORD PTR [EBP+8] PUSH _pData PUSH _sData LEA EAX,DWORD PTR [EBP-12] PUSH EAX CALL FWORD PTR _ReadBytes MOV DWORD PTR [EBP-4], EAX L_134: MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JNZ L_135 MOV EAX,_nCDFIX AND EAX,EAX JZ L_136 PUSH DWORD PTR [EBP+8] PUSH _oCDFIX CALL FWORD PTR _SetFileLFA MOV DWORD PTR [EBP-4], EAX L_137: MOV EAX,_nCDFIX DEC _nCDFIX AND EAX,EAX JZ L_139 MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX SETZ AL AND AL,AL L_139: JZ L_138 PUSH DWORD PTR [EBP+8] LEA EAX,DWORD PTR [EBP-8] PUSH EAX PUSH 4 LEA EAX,DWORD PTR [EBP-12] PUSH EAX CALL FWORD PTR _ReadBytes MOV DWORD PTR [EBP-4], EAX MOV EAX,_pCode ADD EAX,DWORD PTR [EBP-8] MOV DWORD PTR [EBP-20], EAX MOV ESI,DWORD PTR [EBP-20] MOV EBX,ESI MOV ESI,DWORD PTR [EBP-20] MOV EAX,DWORD PTR [ESI] SUB EAX,_offData ADD EAX,_pData MOV DWORD PTR [EBX], EAX JMP L_137 L_138: L_136: MOV EAX,_nCCFIX AND EAX,EAX JZ L_140 PUSH DWORD PTR [EBP+8] PUSH _oCCFIX CALL FWORD PTR _SetFileLFA MOV DWORD PTR [EBP-4], EAX L_141: MOV EAX,_nCCFIX DEC _nCCFIX AND EAX,EAX JZ L_143 MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX SETZ AL AND AL,AL L_143: JZ L_142 PUSH DWORD PTR [EBP+8] LEA EAX,DWORD PTR [EBP-8] PUSH EAX PUSH 4 LEA EAX,DWORD PTR [EBP-12] PUSH EAX CALL FWORD PTR _ReadBytes MOV DWORD PTR [EBP-4], EAX MOV EAX,_pCode ADD EAX,DWORD PTR [EBP-8] MOV DWORD PTR [EBP-20], EAX MOV ESI,DWORD PTR [EBP-20] MOV EBX,ESI MOV ESI,DWORD PTR [EBP-20] MOV EAX,DWORD PTR [ESI] SUB EAX,_offCode ADD EAX,_pCode MOV DWORD PTR [EBX], EAX JMP L_141 L_142: L_140: MOV EAX,_nDCFIX AND EAX,EAX JZ L_144 PUSH DWORD PTR [EBP+8] PUSH _oDCFIX CALL FWORD PTR _SetFileLFA MOV DWORD PTR [EBP-4], EAX L_145: MOV EAX,_nDCFIX DEC _nDCFIX AND EAX,EAX JZ L_147 MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX SETZ AL AND AL,AL L_147: JZ L_146 PUSH DWORD PTR [EBP+8] LEA EAX,DWORD PTR [EBP-8] PUSH EAX PUSH 4 LEA EAX,DWORD PTR [EBP-12] PUSH EAX CALL FWORD PTR _ReadBytes MOV DWORD PTR [EBP-4], EAX MOV EAX,_pData ADD EAX,DWORD PTR [EBP-8] MOV DWORD PTR [EBP-20], EAX MOV ESI,DWORD PTR [EBP-20] MOV EBX,ESI MOV ESI,DWORD PTR [EBP-20] MOV EAX,DWORD PTR [ESI] SUB EAX,_offCode ADD EAX,_pCode MOV DWORD PTR [EBX], EAX JMP L_145 L_146: L_144: MOV EAX,_nDDFIX AND EAX,EAX JZ L_148 PUSH DWORD PTR [EBP+8] PUSH _oDDFIX CALL FWORD PTR _SetFileLFA MOV DWORD PTR [EBP-4], EAX L_149: MOV EAX,_nDDFIX DEC _nDDFIX AND EAX,EAX JZ L_151 MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX SETZ AL AND AL,AL L_151: JZ L_150 PUSH DWORD PTR [EBP+8] LEA EAX,DWORD PTR [EBP-8] PUSH EAX PUSH 4 LEA EAX,DWORD PTR [EBP-12] PUSH EAX CALL FWORD PTR _ReadBytes MOV DWORD PTR [EBP-4], EAX MOV EAX,_pData ADD EAX,DWORD PTR [EBP-8] MOV DWORD PTR [EBP-20], EAX MOV ESI,DWORD PTR [EBP-20] MOV EBX,ESI MOV ESI,DWORD PTR [EBP-20] MOV EAX,DWORD PTR [ESI] SUB EAX,_offData ADD EAX,_pData MOV DWORD PTR [EBX], EAX JMP L_149 L_150: L_148: MOV ESI,_pNewJCB MOV EAX,_pStack MOV DWORD PTR [ESI+38], EAX MOV ESI,_pNewJCB MOV EAX,_sStack MOV DWORD PTR [ESI+42], EAX MOV ESI,_pNewJCB MOV EAX,_pCode MOV DWORD PTR [ESI+22], EAX MOV ESI,_pNewJCB MOV EAX,_sCode MOV DWORD PTR [ESI+26], EAX MOV ESI,_pNewJCB MOV EAX,_pData MOV DWORD PTR [ESI+30], EAX MOV ESI,_pNewJCB MOV EAX,_sData MOV DWORD PTR [ESI+34], EAX L_135: PUSH DWORD PTR [EBP+8] CALL FWORD PTR _CloseFile MOV EAX,DWORD PTR [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 MOV EAX,DWORD PTR [ESI+18] MOV _pPDE, EAX PUSH _pPDE CALL _CleanUserPD PUSH OFFSET _ExchE CALL FWORD PTR _GetTSSExch XOR EAX,EAX MOV _ercE, EAX L_153: MOV EAX,_ercE AND EAX,EAX JNZ L_154 PUSH _ExchE PUSH OFFSET _BogusMsg CALL FWORD PTR _CheckMsg MOV _ercE, EAX JMP L_153 L_154: 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_155: MOV EAX,1 AND EAX,EAX JZ L_156 JMP L_155 L_156: POP EBP RETN PUBLIC __KillJob: PUSH EBP MOV EBP,ESP SUB ESP,4 PUSH OFFSET _JobNumE CALL FWORD PTR _GetJobNum MOV EAX,DWORD PTR [EBP+12] CMP EAX,_JobNumE SETE AL AND AL,AL JNZ L_157 MOV EAX,DWORD PTR [EBP+12] CMP EAX,1 SETE AL AND AL,AL JNZ L_158 MOV EAX,DWORD PTR [EBP+12] CMP EAX,2 SETE AL AND AL,AL L_158: L_157: JZ L_159 MOV EAX,70 JMP L_160 L_159: PUSH DWORD PTR [EBP+12] PUSH OFFSET _pTmpJCB CALL FWORD PTR _GetpJCB MOV DWORD PTR [EBP-4], EAX MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JZ L_161 MOV EAX,DWORD PTR [EBP-4] JMP L_160 L_161: MOV ESI,_pTmpJCB MOV EAX,4 MOV DWORD PTR [ESI+406], EAX PUSH _pTmpJCB CALL _RemoveRdyJob XOR EAX,EAX MOV _ercE, EAX XOR EAX,EAX MOV _iE, EAX L_162: MOV EAX,_ercE CMP EAX,10 SETNE AL AND AL,AL JZ L_163 PUSH _iE PUSH OFFSET _pExchJCBE CALL _GetExchOwner MOV _ercE, EAX MOV EAX,_ercE AND EAX,EAX SETZ AL AND AL,AL JZ L_164 MOV EAX,_pExchJCBE CMP EAX,_pTmpJCB SETE AL AND AL,AL L_164: JZ L_165 PUSH _iE CALL FWORD PTR _DeAllocExch L_165: MOV EAX,_iE INC _iE JMP L_162 L_163: XOR EAX,EAX MOV _ercE, EAX PUSH OFFSET _ExchE CALL FWORD PTR _AllocExch MOV DWORD PTR [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 XOR EAX,EAX PUSH EAX PUSH _ExchE MOV EAX,508 MOV ESI,OFFSET _TmpStack ADD ESI,EAX PUSH ESI PUSH OFFSET __KillTask CALL FWORD PTR _NewTask MOV DWORD PTR [EBP-4], EAX MOV EAX,DWORD PTR [EBP-4] L_160: 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 MOV EAX,DWORD PTR [EBP+12] MOV DWORD PTR [ESI+406], 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_166: MOV EAX,_ercE CMP EAX,10 SETNE AL AND AL,AL JZ L_167 PUSH _iE PUSH OFFSET _pExchJCBE CALL _GetExchOwner MOV _ercE, EAX MOV EAX,_ercE AND EAX,EAX SETZ AL AND AL,AL JZ L_168 MOV EAX,_iE CMP EAX,_ExchE SETNE AL AND AL,AL JZ L_169 MOV EAX,_pExchJCBE CMP EAX,_pCrntJCB SETE AL AND AL,AL L_169: L_168: JZ L_170 PUSH _iE CALL FWORD PTR _DeAllocExch L_170: MOV EAX,_iE INC _iE JMP L_166 L_167: PUSH _JobNumE PUSH _ExchE CALL _SendAbort XOR EAX,EAX MOV _ercE, EAX L_171: MOV EAX,_ercE AND EAX,EAX JNZ L_172 PUSH _ExchE PUSH OFFSET _BogusMsg CALL FWORD PTR _CheckMsg MOV _ercE, EAX JMP L_171 L_172: XOR EAX,EAX MOV _ercE, EAX MOV EAX, OFFSET _TmpStack ADD EAX, 508 MOV ESP, EAX MOV EBP, EAX MOV ESI,_pCrntJCB MOV EAX,DWORD PTR [ESI+18] MOV _pPDE, EAX PUSH _pPDE CALL _CleanUserPD PUSH OFFSET _aFileE PUSH OFFSET _cbFileE CALL FWORD PTR _GetExitJob MOV EAX,_cbFileE AND EAX,EAX JNZ L_173 MOV EAX,76 MOV _ercE, EAX L_173: MOV EAX,_ercE AND EAX,EAX JNZ L_174 PUSH OFFSET _aFileE PUSH _cbFileE PUSH OFFSET _job_fhE CALL _GetRunFile MOV _ercE, EAX L_174: MOV EAX,_ercE AND EAX,EAX JNZ L_175 PUSH _pCrntJCB PUSH _job_fhE CALL _LoadJob MOV _ercE, EAX L_175: MOV EAX,_ercE AND EAX,EAX JNZ L_176 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_176: MOV EAX,_ercE AND EAX,EAX JZ L_177 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_178: MOV EAX,1 AND EAX,EAX JZ L_179 JMP L_178 L_179: L_177: 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,DWORD PTR [EBP+16] MOV _cbFileE, EAX PUSH DWORD PTR [EBP+20] PUSH DWORD PTR [EBP+16] PUSH OFFSET _job_fhE CALL _GetRunFile MOV _ercE, EAX MOV EAX,_ercE AND EAX,EAX JZ L_180 PUSH _job_fhE CALL FWORD PTR _CloseFile MOV EAX,_ercE JMP L_181 L_180: 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 MOV EAX,DWORD PTR [EBP+12] MOV DWORD PTR [ESI+406], 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_182: MOV EAX,_ercE CMP EAX,10 SETNE AL AND AL,AL JZ L_183 PUSH _iE PUSH OFFSET _pExchJCBE CALL _GetExchOwner MOV _ercE, EAX MOV EAX,_ercE AND EAX,EAX SETZ AL AND AL,AL JZ L_184 MOV EAX,_iE CMP EAX,_ExchE SETNE AL AND AL,AL JZ L_185 MOV EAX,_pExchJCBE CMP EAX,_pCrntJCB SETE AL AND AL,AL L_185: L_184: JZ L_186 PUSH _iE CALL FWORD PTR _DeAllocExch L_186: MOV EAX,_iE INC _iE JMP L_182 L_183: PUSH _JobNumE PUSH _ExchE CALL _SendAbort XOR EAX,EAX MOV _ercE, EAX L_187: MOV EAX,_ercE AND EAX,EAX JNZ L_188 PUSH _ExchE PUSH OFFSET _BogusMsg CALL FWORD PTR _CheckMsg MOV _ercE, EAX JMP L_187 L_188: XOR EAX,EAX MOV _ercE, EAX MOV EAX, OFFSET _TmpStack ADD EAX, 508 MOV ESP, EAX MOV EBP, EAX MOV ESI,_pCrntJCB MOV EAX,DWORD PTR [ESI+18] MOV _pPDE, EAX PUSH _pPDE CALL _CleanUserPD PUSH OFFSET _aFileE PUSH _cbFileE PUSH OFFSET _job_fhE CALL _GetRunFile PUSH _pCrntJCB PUSH _job_fhE CALL _LoadJob MOV _ercE, EAX MOV EAX,_ercE AND EAX,EAX JZ L_189 PUSH OFFSET _aFileE PUSH OFFSET _cbFileE CALL FWORD PTR _GetExitJob MOV EAX,_cbFileE AND EAX,EAX JNZ L_190 MOV EAX,76 MOV _ercE, EAX L_190: MOV EAX,_ercE AND EAX,EAX JNZ L_191 PUSH OFFSET _aFileE PUSH _cbFileE PUSH OFFSET _job_fhE CALL _GetRunFile MOV _ercE, EAX L_191: MOV EAX,_ercE AND EAX,EAX JNZ L_192 PUSH _pCrntJCB PUSH _job_fhE CALL _LoadJob MOV _ercE, EAX L_192: L_189: MOV EAX,_ercE AND EAX,EAX JNZ L_193 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_193: MOV EAX,_ercE AND EAX,EAX JZ L_194 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_195: MOV EAX,1 AND EAX,EAX JZ L_196 JMP L_195 L_196: L_194: L_181: POP EBP RETF 12