Source Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 1 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 1 /*****************************************************************************/ 2 /* 3 netIO.c 4 5 The fundamental structure and code for the a/synchronous $QIO with the network. 6 If the NETIO structure contain a Transport Layer Security (secure-sockets) 7 pointer it implicitly uses the TLS/SSL encrypted equivalent. If the NEIO 8 struct contains a pointer to an HTTP/2 stream struct then uses the HTTP/2 9 pointer within that to perform HTTP/2 I/O (of course the HTTP/2 I/O ultimately 10 uses a NETIO struct to mediate the actual I/O, most often via TLS/SSL). 11 12 Reading and writing data size now have no architectural limit. It's handled 13 internally. Same for SSL/TLS. With the potential for data size/length greater 14 than a single QIO the IO status block is deprecated in favour of 15 |ioptr->Read/WriteCount| and |ioptr->Read/WriteStatus|. 16 17 18 $QIO WRITE BUFFER 19 ----------------- 20 Using logical name WASD_QIO_MAXSEG as described in NetIoQioMaxSeg() maximising 21 the $QIO write buffer definitely results the most efficient transfer of network 22 data. Note the MONITOR MODES data for interupt, kernel, user and idle 23 percentages. Roughly half the higher modes for the same USER mode. 24 25 $QIO at MSS * ((65535 / MSS) - 1) 26 i.e. for a MSS of 1460 would use 62780 where a maximum buffer would write 43 27 full MSS datagrams. The 62780 also corresponds to the mysterious "Socket 28 buffer bytes" and "Socket buffer quota" values. 29 30 $ tcpip show device /full bg29146 31 Device_socket: bg29146 Type: STREAM 32 RECEIVE SEND 33 Queued I/O 0 0 34 Q0LEN 0 Socket buffer bytes 0 62780 35 QLEN 0 Socket buffer quota 62780 62780 36 8< snip 8< 37 38 The test setup and monitor results: 39 40 $ curl -vo /dev/null http://n.n.n.n/stream/octet/ 41 42 HP TCP/IP Services for OpenVMS Alpha Version V5.7 - ECO 5 43 on a Digital Personal WorkStation running OpenVMS V8.4-2L1 44 45 $QIO at MSS 46 $ curl -vo /dev/null http://192.168.1.3/stream/octet/ 47 Interrupt State 39 |*************** 48 Kernel Mode 15 |****** 49 User Mode 20 |******** 50 Idle Time 26 |********** 51 52 $QIO at MSS 53 $ curl -vo /dev/null http://192.168.1.3/stream/qio/ 54 Interrupt State 32 |************ 55 Kernel Mode 49 |******************* 56 User Mode 6 |** 57 Idle Time 12 |**** Source Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 2 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 58 59 $QIO at (65535 / MSS) * MSS 60 $ curl -vo /dev/null http://192.168.1.3/stream/octet/ 61 Interrupt State 17 |****** 62 Kernel Mode 4 |* 63 User Mode 17 |****** 64 Idle Time 62 |************************ 65 66 $QIO at (65535 / MSS) * MSS 67 $ curl -vo /dev/null http://192.168.1.3/stream/qio/ 68 Interrupt State 19 |******* 69 Kernel Mode 9 |*** 70 Executive Mode 1 | 71 User Mode 1 | 72 Idle Time 71 |**************************** 73 74 VSI TCP/IP Services for OpenVMS x86_64 Version X6.0 75 on an innotek GmbH VirtualBox running OpenVMS V9.1-A (2 x CPU) 76 77 $QIO at MSS 78 $ curl -vo /dev/null http://192.168.1.86/stream/octet/ 79 Interrupt State 58 |*********** 80 MP Synchronization 3 | 81 Kernel Mode 19 |*** 82 User Mode 8 |* 83 Idle Time 112 |********************** 84 85 $QIO at MSS 86 $ curl -vo /dev/null http://192.168.1.86/stream/qio/ 87 Interrupt State 80 |**************** 88 MP Synchronization 1 | 89 Kernel Mode 50 |********** 90 User Mode 1 | 91 Idle Time 68 |************* 92 93 $QIO at (65535 / MSS) * MSS 94 $ curl -vo /dev/null http://192.168.1.86/stream/octet/ 95 Interrupt State 33 |****** 96 Kernel Mode 1 | 97 User Mode 7 |* 98 Idle Time 159 |******************************* 99 100 $QIO at (65535 / MSS) * MSS 101 $ curl -vo /dev/null http://192.168.1.86/stream/qio/ 102 Interrupt State 32 |****** 103 Kernel Mode 4 | 104 Idle Time 164 |******************************** 105 106 107 There was also a corresponding increase in data transfer rate (MB/s). 108 109 110 VERSION HISTORY 111 --------------- 112 29-JAN-2025 MGD limit NetIoCancel() to NET_CANCEL_FAIL_MAX attempts 113 15-JUL-2020 MGD bugfix; NetIoWriteStatus() and NetIoReadStatus() 114 18-APR-2020 MGD NetIoQioMaxSeg() tune QIO to TCP MSS Source Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 3 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 115 24-DEC-2019 MGD NetIoWriteStatus() and NetIoReadStatus() count parameter 116 20-JAN-2018 MGD refactor NetPeek() into NetIoPeek() 117 NetIoRead() and NetIoWrite() ..IOsb.Status = 0 118 NetIoRead() and NetIoWrite() blocking NetIo..Ast() each I/O 119 11-AUG-2015 MGD restructure of network I/O abstractions 120 */ 121 /*****************************************************************************/ 122 X 123 #ifdef WASD_VMS_V7 X 124 # undef __VMS_VER X 125 # define __VMS_VER 70000000 X 126 # undef __CRTL_VER X 127 # define __CRTL_VER 70000000 X 128 #else X 129 # ifdef WASD_VMS_V7 X 130 # undef _VMS__V6__SOURCE X 131 # define _VMS__V6__SOURCE X 132 # undef __VMS_VER X 133 # define __VMS_VER 70000000 X 134 # undef __CRTL_VER X 135 # define __CRTL_VER 70000000 X 136 # endif 137 #endif 138 139 #include 1790 #include 2136 2137 #include 4013 4014 #include "wasd.h" 62564 62565 #define WASD_MODULE "NETIO" 62566 62567 /* calculate $QIO buffer size */ 62568 #define NETIO_QIO_SIZE(mss) (mss * ((65535 / mss) - 1)) 62569 62570 /******************/ 62571 /* global storage */ 62572 /******************/ 62573 62574 /********************/ 62575 /* external storage */ 62576 /********************/ 62577 62578 extern uint EfnWait, 62579 EfnNoWait, 62580 HttpdTickSecond; 62581 62582 extern char ErrorSanityCheck[]; 62583 62584 extern struct dsc$descriptor TcpIpDeviceDsc; 62585 62586 extern ACCOUNTING_STRUCT *AccountingPtr; 62587 extern CONFIG_STRUCT Config; 62588 extern WATCH_STRUCT Watch; 62589 62590 /*****************************************************************************/ Source Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 4 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 62591 /* 62592 Allocate (global) memory for the network I/O structure and assign a channel to 62593 the internet template device. Return a pointer to the structure if successful 62594 or NULL if not. At a maximum of every second or so reports any channel 62595 assignment failure until the maximum period is exceeded (currently one minute). 62596 */ 62597 62598 NETIO_STRUCT* NetIoBegin () 62599 1 62600 { 1 62601 static ulong ExitTickSecond, 1 62602 PrevTickSecond; 1 62603 int status; 1 62604 ushort channel; 1 62605 char *cptr; 1 62606 NETIO_STRUCT *ioptr; 1 62607 1 62608 /*********/ 1 62609 /* begin */ 1 62610 /*********/ 1 62611 1 62612 if (WATCH_MODULE (WATCH_MOD_NET)) 1 62613 WatchThis (WATCHALL, WATCH_MOD_NET, "NetIoBegin()"); 1 62614 1 62615 status = sys$assign (&TcpIpDeviceDsc, &channel, 0, 0); 1 62616 1 62617 if (VMSnok (status)) 2 62618 { 2 62619 /* manage channel assignment failure */ 2 62620 if (HttpdTickSecond < ExitTickSecond) 3 62621 { 3 62622 if (HttpdTickSecond != PrevTickSecond) 4 62623 { 4 62624 ErrorNoticed (NULL, status, NULL, FI_LI); 4 62625 PrevTickSecond = HttpdTickSecond; 4 62626 if (!ExitTickSecond) 4 62627 ExitTickSecond = HttpdTickSecond + NET_ASSIGN_FAIL_MAX; 3 62628 } 3 62629 /* hmmm, probably BYTLM exhausted */ 3 62630 if (status == SS$_EXQUOTA) return (NULL); 3 62631 /* shouldn't have exhausted these, but seem to have */ 3 62632 if (status == SS$_NOIOCHAN) return (NULL); 3 62633 /* some other (serious) error */ 2 62634 } 2 62635 ErrorExitVmsStatus (status, "sys$assign()", FI_LI); 1 62636 } 1 62637 ExitTickSecond = PrevTickSecond = 0; 1 62638 1 62639 ioptr = VmGet (sizeof(NETIO_STRUCT)); 1 62640 ioptr->Channel = channel; 1 62641 1 62642 return (ioptr); 1 62643 } 62644 62645 /*****************************************************************************/ 62646 /* 62647 Proxy NETIO does not need the client data structure used by request processing Source Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 5 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 62648 and so conserve a little memory by not allocating that (bit shonky I know). 62649 This is noted in NET.H as well. 62650 */ 62651 62652 NETIO_STRUCT* NetIoProxyBegin () 62653 1 62654 { 1 62655 NETIO_STRUCT *ioptr; 1 62656 1 62657 /*********/ 1 62658 /* begin */ 1 62659 /*********/ 1 62660 1 62661 if (WATCH_MODULE (WATCH_MOD_NET)) 1 62662 WatchThis (WATCHALL, WATCH_MOD_NET, "NetIoProxyBegin()"); 1 62663 1 62664 ioptr = VmGet (sizeof(NETIO_STRUCT) - sizeof(CLIENT_STRUCT)); 1 62665 1 62666 return (ioptr); 1 62667 } 62668 62669 /*****************************************************************************/ 62670 /* 62671 Deassign the channel as necessary and free the network I/O structure. 62672 If a TLS/SSL then do the equivalent. 62673 */ 62674 62675 void NetIoEnd (NETIO_STRUCT *ioptr) 62676 1 62677 { 1 62678 /*********/ 1 62679 /* begin */ 1 62680 /*********/ 1 62681 1 62682 if (WATCHMOD (ioptr, WATCH_MOD_NET)) 1 62683 WatchThis (WATCHITM(ioptr), WATCH_MOD_NET, "NetIoEnd()"); 1 62684 1 62685 if (!ioptr) return; 1 62686 1 62687 if (ioptr->SesolaPtr) 1 62688 SesolaNetEnd (ioptr->SesolaPtr); 1 62689 else 2 62690 { 2 62691 sys$dassgn (ioptr->Channel); 2 62692 VmFree (ioptr, FI_LI); 1 62693 } 1 62694 } 62695 62696 /*****************************************************************************/ 62697 /* 62698 Write 'DataLength' bytes located at 'DataPtr' to the client either using either 62699 the "raw" network, or via HTTP/2, or via the Secure Sockets Layer. 62700 62701 If 'AstFunction' zero then use sys$qiow(), waiting for completion. If 62702 an AST completion address is supplied then use sys$qio(). If empty data 62703 buffer is supplied (zero length) then declare an AST to service any AST 62704 routine supplied. If none then just return. Source Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 6 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 62705 62706 Explicitly declares any AST routine if an error occurs. The calling function 62707 must not do any error recovery if an AST routine has been supplied but the 62708 associated AST routine must! If an AST was not supplied then the return 62709 status can be checked. 62710 */ 62711 62712 int NetIoWrite 62713 ( 62714 NETIO_STRUCT *ioptr, 62715 VOID_AST AstFunction, 62716 void *AstParam, 62717 void *DataPtr, 62718 uint DataLength 62719 ) 1 62720 { 1 62721 int status; 1 62722 1 62723 /*********/ 1 62724 /* begin */ 1 62725 /*********/ 1 62726 1 62727 if (WATCHMOD (ioptr, WATCH_MOD_NET)) 1 62728 WatchThis (WATCHITM(ioptr), WATCH_MOD_NET, 1 62729 "NetIoWrite() !&X !&A !&X !UL", 1 62730 ioptr, AstFunction, DataPtr, DataLength); 1 62731 1 62732 if (DataPtr) 2 62733 { 2 62734 /* first call */ 2 62735 if (!ioptr->Stream2Ptr || AstFunction) 3 62736 { 3 62737 /* not HTTP/2 or non-blocking */ 3 62738 if (ioptr->WriteAstFunction) 4 62739 { 4 62740 HttpdStackTrace ("NetIoWrite()", FI_LI); 4 62741 status = SS$_BUGCHECK; 4 62742 ErrorNoticed (ioptr->RequestPtr, status, "!&A", 4 62743 FI_LI, ioptr->WriteAstFunction); 4 62744 return (status); 3 62745 } 3 62746 ioptr->WriteCount = 0; 3 62747 ioptr->WriteStatus = 0; 3 62748 ioptr->WriteAstFunction = AstFunction; 3 62749 ioptr->WriteAstParam = AstParam; 3 62750 ioptr->WritePtr = DataPtr; 3 62751 ioptr->WriteLength = DataLength; 3 62752 ioptr->WriteIOsb.Count = 0; 3 62753 ioptr->WriteIOsb.Status = 0; 2 62754 } 1 62755 } 1 62756 1 62757 if (ioptr->Stream2Ptr) 2 62758 { 2 62759 /**********/ 2 62760 /* HTTP/2 */ 2 62761 /**********/ Source Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 7 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 2 62762 2 62763 status = Http2NetIoWrite (ioptr, AstFunction, AstParam, 2 62764 DataPtr, DataLength); 2 62765 return (status); 1 62766 } 1 62767 1 62768 if (ioptr->SesolaPtr) 2 62769 { 2 62770 /*****************/ 2 62771 /* secure socket */ 2 62772 /*****************/ 2 62773 2 62774 status = SesolaNetIoWrite (ioptr, DataPtr, DataLength); 2 62775 return (status); 1 62776 } 1 62777 1 62778 if (ioptr->VmsStatus) 2 62779 { 2 62780 /*********************************/ 2 62781 /* deliver explicitly set status */ 2 62782 /*********************************/ 2 62783 2 62784 if (ioptr->WriteAstFunction) 2 62785 SysDclAst (NetIoWriteAst, ioptr); 2 62786 else 2 62787 NetIoWriteAst (ioptr); 2 62788 return (ioptr->VmsStatus); 1 62789 } 1 62790 1 62791 if (WATCHING (ioptr, WATCH_NETWORK_OCTETS)) 2 62792 { 2 62793 int dlen = ioptr->WriteLength - ioptr->WriteCount; 2 62794 if (dlen > ioptr->TcpMaxQio) dlen = ioptr->TcpMaxQio; 2 62795 WatchThis (WATCHITM(ioptr), WATCH_NETWORK, 2 62796 "WRITE !UL (!UL/!UL) bytes (!&?non-blocking\rblocking\r)", 2 62797 dlen, ioptr->WriteCount, ioptr->WriteLength, 2 62798 ioptr->WriteAstFunction); 2 62799 WatchDataDump ((uchar*)ioptr->WritePtr + ioptr->WriteCount, dlen); 1 62800 } 1 62801 1 62802 if (Watch.TriggerTxCount) 2 62803 { 2 62804 int dlen = ioptr->WriteLength - ioptr->WriteCount; 2 62805 if (dlen > ioptr->TcpMaxQio) dlen = ioptr->TcpMaxQio; 2 62806 2 62807 if (!ioptr->WatchTriggerTxPlus) 3 62808 { 3 62809 if (WatchTrigger ((uchar*)ioptr->WritePtr + ioptr->WriteCount, 3 62810 dlen, Watch.TriggerTx)) 4 62811 { 4 62812 ioptr->WatchTriggerTx = true; 4 62813 if (Watch.TriggerPlus) ioptr->WatchTriggerTxPlus = true; 3 62814 } 2 62815 } 2 62816 if (ioptr->WatchTriggerTx || ioptr->WatchTriggerTxPlus) 3 62817 { 3 62818 WatchSetTrigger (ioptr); Source Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 8 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 3 62819 ioptr->WatchTriggerTx = false; 2 62820 } 1 62821 } 1 62822 1 62823 if (!ioptr->WriteLength) 1 62824 status = ioptr->WriteStatus = SS$_BUGCHECK; 1 62825 else 1 62826 if (ioptr->WriteAstFunction) 2 62827 { 2 62828 /*******************/ 2 62829 /* non-blocking IO */ 2 62830 /*******************/ 2 62831 2 62832 /* limit size of QIO */ 2 62833 DataLength = ioptr->WriteLength - ioptr->WriteCount; 2 62834 if (DataLength > ioptr->TcpMaxQio) DataLength = ioptr->TcpMaxQio; 2 62835 2 62836 status = sys$qio (EfnNoWait, ioptr->Channel, 2 62837 IO$_WRITEVBLK, &ioptr->WriteIOsb, 2 62838 &NetIoWriteAst, ioptr, 2 62839 (uchar*)ioptr->WritePtr + ioptr->WriteCount, 2 62840 DataLength, 2 62841 0, 0, 0, 0); 2 62842 2 62843 if (VMSnok (status)) ioptr->WriteStatus = status; 1 62844 } 1 62845 else 2 62846 { 2 62847 /***************/ 2 62848 /* blocking IO */ 2 62849 /***************/ 2 62850 2 62851 while (ioptr->WriteCount < ioptr->WriteLength) 3 62852 { 3 62853 /* limit size of QIO */ 3 62854 DataLength = ioptr->WriteLength - ioptr->WriteCount; 3 62855 if (DataLength > ioptr->TcpMaxQio) DataLength = ioptr->TcpMaxQio; 3 62856 3 62857 status = sys$qiow (EfnWait, ioptr->Channel, 3 62858 IO$_WRITEVBLK, &ioptr->WriteIOsb, 0, 0, 3 62859 (uchar*)ioptr->WritePtr + ioptr->WriteCount, 3 62860 DataLength, 3 62861 0, 0, 0, 0); 3 62862 3 62863 if (VMSnok (status)) 3 62864 ioptr->WriteStatus = status; 3 62865 else 3 62866 NetIoWriteAst (ioptr); 3 62867 3 62868 if (VMSnok (ioptr->WriteStatus)) break; 2 62869 } 1 62870 } 1 62871 1 62872 /****************/ 1 62873 /* check status */ 1 62874 /****************/ 1 62875 Source Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 9 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 1 62876 if (VMSok (status)) return (status); 1 62877 1 62878 /* if resource wait enabled the only quota not waited for is ASTLM */ 1 62879 if (status == SS$_EXQUOTA) 2 62880 { 2 62881 /* no ASTs means not much of anything else can happen so just exit! */ 2 62882 sys$canexh(0); 2 62883 /* make the message a little more meaningful */ 2 62884 sys$exit (SS$_EXASTLM); 1 62885 } 1 62886 1 62887 /* write failed, call AST explicitly, status in the IOsb */ 1 62888 ioptr->WriteIOsb.Status = status; 1 62889 ioptr->WriteIOsb.Count = 0; 1 62890 if (ioptr->WriteAstFunction) 1 62891 SysDclAst (NetIoWriteAst, ioptr); 1 62892 else 1 62893 NetIoWriteAst (ioptr); 1 62894 1 62895 return (status); 1 62896 } 62897 62898 /*****************************************************************************/ 62899 /* 62900 AST from NetIoWrite(). Call the AST function. 62901 */ 62902 62903 void NetIoWriteAst (NETIO_STRUCT *ioptr) 62904 1 62905 { 1 62906 void *AstParam; 1 62907 VOID_AST AstFunction; 1 62908 1 62909 /*********/ 1 62910 /* begin */ 1 62911 /*********/ 1 62912 1 62913 if (WATCHMOD (ioptr, WATCH_MOD_NET)) 1 62914 WatchThis (WATCHITM(ioptr), WATCH_MOD_NET, 1 62915 "NetIoWriteAst() !&F !&X !&X !&S !UL !UL !UL !&A", 1 62916 &NetIoWriteAst, ioptr, ioptr->VmsStatus, 1 62917 ioptr->WriteIOsb.Status, ioptr->WriteIOsb.Count, 1 62918 ioptr->WriteLength, ioptr->WriteCount+ioptr->WriteIOsb.Count, 1 62919 ioptr->WriteAstFunction); 1 62920 1 62921 if (ioptr->VmsStatus) 2 62922 { 2 62923 /* explicitly set status */ 2 62924 ioptr->WriteIOsb.Status = ioptr->VmsStatus; 2 62925 ioptr->WriteIOsb.Count = 0; 1 62926 } 1 62927 1 62928 ioptr->WriteStatus = ioptr->WriteIOsb.Status; 1 62929 1 62930 if (ioptr->WriteIOsb.Status == SS$_NORMAL && 1 62931 !(ioptr->WriteCount || ioptr->WriteLength)) 2 62932 { Source Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 10 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 2 62933 /* special case, do not tally or report via WATCH */ 2 62934 if (AstFunction = ioptr->WriteAstFunction) 3 62935 { 3 62936 AstParam = ioptr->WriteAstParam; 3 62937 ioptr->WriteAstFunction = ioptr->WriteAstParam = NULL; 3 62938 AstFunction (AstParam); 2 62939 } 2 62940 return; 1 62941 } 1 62942 1 62943 if (WATCHPNT(ioptr)) 2 62944 { 2 62945 /* the SS$_WASECC is returned when GZIPing network data */ 2 62946 if (ioptr->WriteIOsb.Status != SS$_WASECC) 3 62947 { 3 62948 if (WATCH_CATEGORY(WATCH_NETWORK)) 3 62949 WatchThis (WATCHITM(ioptr), WATCH_NETWORK, 3 62950 "WRITE !&S !UL (!UL/!UL) bytes (!&?non-blocking\rblocking\r)", 3 62951 ioptr->WriteIOsb.Status, 3 62952 ioptr->WriteIOsb.Count, 3 62953 ioptr->WriteCount + ioptr->WriteIOsb.Count, 3 62954 ioptr->WriteLength, ioptr->WriteAstFunction); 3 62955 if (WATCH_CATEGORY(WATCH_RESPONSE)) 3 62956 if (VMSnok (ioptr->WriteIOsb.Status)) 3 62957 WatchThis (WATCHITM(ioptr), WATCH_RESPONSE, 3 62958 "NETWORK !&S (!&?non-blocking\rblocking\r)", 3 62959 ioptr->WriteIOsb.Status, ioptr->WriteAstFunction); 2 62960 } 1 62961 } 1 62962 1 62963 1 62964 if (VMSok (ioptr->WriteIOsb.Status)) 2 62965 { 2 62966 ioptr->BlocksRawTx64++; 2 62967 ioptr->BlocksTallyTx64++; 2 62968 ioptr->BytesRawTx64 += ioptr->WriteIOsb.Count; 2 62969 ioptr->BytesTallyTx64 += ioptr->WriteIOsb.Count; 2 62970 ioptr->WriteCount += ioptr->WriteIOsb.Count; 2 62971 if (ioptr->WriteAstFunction) 3 62972 { 3 62973 if (ioptr->WriteCount < ioptr->WriteLength) 4 62974 { 4 62975 /* continue to write */ 4 62976 NetIoWrite (ioptr, NULL, NULL, NULL, 0); 4 62977 return; 3 62978 } 2 62979 } 1 62980 } 1 62981 else 2 62982 { 2 62983 /* abort is explicitly used and therefore not an error per se */ 2 62984 if (ioptr->WriteIOsb.Status != SS$_ABORT) 2 62985 ioptr->WriteErrorCount++; 2 62986 /* just note the first error status */ 2 62987 if (!ioptr->WriteErrorStatus) 2 62988 ioptr->WriteErrorStatus = ioptr->WriteIOsb.Status; 2 62989 if (ioptr->WriteIOsb.Status && Source Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 11 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 2 62990 !(ioptr->WriteIOsb.Status == SS$_ABORT || 2 62991 ioptr->WriteIOsb.Status == SS$_CANCEL || 2 62992 ioptr->WriteIOsb.Status == SS$_CONNECFAIL || 2 62993 ioptr->WriteIOsb.Status == SS$_IVCHAN || 2 62994 ioptr->WriteIOsb.Status == SS$_LINKDISCON || 2 62995 ioptr->WriteIOsb.Status == SS$_TIMEOUT || 2 62996 ioptr->WriteIOsb.Status == SS$_UNREACHABLE || 2 62997 ioptr->WriteIOsb.Status == SS$_VCCLOSED)) 3 62998 { 3 62999 char *sptr = "(none)"; 3 63000 REQUEST_STRUCT *rqptr; 3 63001 if (rqptr = ioptr->RequestPtr) 3 63002 if (rqptr->rqHeader.RequestUriPtr) 3 63003 sptr = rqptr->rqHeader.RequestUriPtr; 3 63004 ErrorNoticed (NULL, ioptr->WriteIOsb.Status, "!AZ", FI_LI, sptr); 2 63005 } 1 63006 } 1 63007 1 63008 if (AstFunction = ioptr->WriteAstFunction) 2 63009 { 2 63010 AstParam = ioptr->WriteAstParam; 2 63011 ioptr->WriteAstFunction = ioptr->WriteAstParam = NULL; 2 63012 AstFunction (AstParam); 1 63013 } 1 63014 } 63015 63016 /*****************************************************************************/ 63017 /* 63018 Deliver the supplied VMS status code via AST while maintaining the network 63019 write in-progress conditions. As with other I/O the delivery needs to be 63020 decoupled in case it gets called again during that delivery. 63021 */ 63022 63023 int NetIoWriteStatus 63024 ( 63025 NETIO_STRUCT *ioptr, 63026 VOID_AST AstFunction, 63027 void *AstParam, 63028 int AstStatus, 63029 int WriteCount 63030 ) 1 63031 { 1 63032 int status; 1 63033 1 63034 /*********/ 1 63035 /* begin */ 1 63036 /*********/ 1 63037 1 63038 if (WATCHMOD (ioptr, WATCH_MOD_NET)) 1 63039 WatchThis (WATCHITM(ioptr), WATCH_MOD_NET, 1 63040 "NetIoWriteStatus() !&X !&A !&S", 1 63041 ioptr, AstFunction, AstStatus); 1 63042 1 63043 if (ioptr->WriteAstFunction) 2 63044 { 2 63045 char buf [256]; 2 63046 FaoToBuffer (buf, sizeof(buf), NULL, "!&A", ioptr->WriteAstFunction); Source Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 12 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 2 63047 ErrorExitVmsStatus (SS$_BUGCHECK, buf, FI_LI); 1 63048 } 1 63049 ioptr->WriteAstFunction = AstFunction; 1 63050 ioptr->WriteAstParam = AstParam; 1 63051 if (!WriteCount) ioptr->WritePtr = NULL; 1 63052 ioptr->WriteCount = 0; 1 63053 ioptr->WriteLength = WriteCount; 1 63054 ioptr->WriteIOsb.Count = WriteCount; 1 63055 ioptr->WriteIOsb.Status = AstStatus; 1 63056 1 63057 if (AstFunction) 1 63058 SysDclAst (NetIoWriteAst, ioptr); 1 63059 else 1 63060 NetIoWriteAst (ioptr); 1 63061 1 63062 return (AstStatus); 1 63063 } 63064 63065 /*****************************************************************************/ 63066 /* 63067 Queue up a read from the client over the network. If 'AstFunction' 63068 is zero then no I/O completion AST routine is called. If it is non-zero then 63069 the function pointed to by the parameter is called when the network write 63070 completes. 63071 63072 Explicitly declares any AST routine if an error occurs. The calling function 63073 must not do any error recovery if an AST routine has been supplied but the 63074 associated AST routine must! If an AST was not supplied then the return 63075 status can be checked. 63076 */ 63077 63078 int NetIoRead 63079 ( 63080 NETIO_STRUCT *ioptr, 63081 VOID_AST AstFunction, 63082 void *AstParam, 63083 void *DataPtr, 63084 uint DataSize 63085 ) 1 63086 { 1 63087 int status; 1 63088 1 63089 /*********/ 1 63090 /* begin */ 1 63091 /*********/ 1 63092 1 63093 if (WATCHMOD (ioptr, WATCH_MOD_NET)) 1 63094 WatchThis (WATCHITM(ioptr), WATCH_MOD_NET, 1 63095 "NetIoRead() !&X !&A !&X !UL", 1 63096 ioptr, AstFunction, DataPtr, DataSize); 1 63097 1 63098 if (DataPtr) 2 63099 { 2 63100 /* first call */ 2 63101 if (ioptr->ReadAstFunction) 3 63102 { 3 63103 char buf [256]; Source Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 13 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 3 63104 HttpdStackTrace ("NetIoRead()", FI_LI); 3 63105 FaoToBuffer (buf, sizeof(buf), NULL, "!&A", ioptr->ReadAstFunction); 3 63106 status = SS$_BUGCHECK; 3 63107 ErrorNoticed (ioptr->RequestPtr, status, buf, FI_LI); 3 63108 return (status); 2 63109 } 2 63110 ioptr->ReadCount = 0; 2 63111 ioptr->ReadStatus = 0; 2 63112 ioptr->ReadAstFunction = AstFunction; 2 63113 ioptr->ReadAstParam = AstParam; 2 63114 ioptr->ReadPtr = DataPtr; 2 63115 ioptr->ReadSize = DataSize; 2 63116 ioptr->ReadIOsb.Count = 0; 2 63117 ioptr->ReadIOsb.Status = 0; 1 63118 } 1 63119 1 63120 if (ioptr->Stream2Ptr) 2 63121 { 2 63122 /**********/ 2 63123 /* HTTP/2 */ 2 63124 /**********/ 2 63125 2 63126 status = Http2NetIoRead (ioptr); 2 63127 return (status); 1 63128 } 1 63129 1 63130 if (ioptr->SesolaPtr) 2 63131 { 2 63132 /*****************/ 2 63133 /* secure socket */ 2 63134 /*****************/ 2 63135 2 63136 status = SesolaNetIoRead (ioptr, DataPtr, DataSize); 2 63137 return (status); 1 63138 } 1 63139 1 63140 if (WATCHING (ioptr, WATCH_NETWORK)) 1 63141 WatchThis (WATCHITM(ioptr), WATCH_NETWORK, 1 63142 "!AZ !UL/!UL bytes (!&?non-blocking\rblocking\r)", 1 63143 ioptr->ReadSize & NETIO_DATA_FILL_BUF ? "FILL" : "READ", 1 63144 ioptr->ReadCount, ioptr->ReadSize & ~NETIO_DATA_FILL_BUF, 1 63145 ioptr->ReadAstFunction); 1 63146 1 63147 if (ioptr->VmsStatus) 2 63148 { 2 63149 /*********************************/ 2 63150 /* deliver explicitly set status */ 2 63151 /*********************************/ 2 63152 2 63153 if (ioptr->ReadAstFunction) 2 63154 SysDclAst (NetIoReadAst, ioptr); 2 63155 else 2 63156 NetIoReadAst (ioptr); 2 63157 return (ioptr->VmsStatus); 1 63158 } 1 63159 1 63160 if (!ioptr->ReadSize) Source Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 14 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 1 63161 status = ioptr->ReadStatus = SS$_BUGCHECK; 1 63162 else 1 63163 if (ioptr->ReadAstFunction) 2 63164 { 2 63165 /*******************/ 2 63166 /* non-blocking IO */ 2 63167 /*******************/ 2 63168 2 63169 DataSize = ioptr->ReadSize & ~NETIO_DATA_FILL_BUF; 2 63170 DataSize -= ioptr->ReadCount; 2 63171 if (DataSize > ioptr->TcpMaxQio) DataSize = ioptr->TcpMaxQio; 2 63172 2 63173 status = sys$qio (EfnNoWait, ioptr->Channel, 2 63174 IO$_READVBLK, &ioptr->ReadIOsb, 2 63175 &NetIoReadAst, ioptr, 2 63176 (uchar*)ioptr->ReadPtr+ioptr->ReadCount, DataSize, 2 63177 0, 0, 0, 0); 2 63178 2 63179 if (VMSnok (status)) ioptr->ReadStatus = status; 1 63180 } 1 63181 else 2 63182 { 2 63183 /***************/ 2 63184 /* blocking IO */ 2 63185 /***************/ 2 63186 2 63187 for (;;) 3 63188 { 3 63189 DataSize = ioptr->ReadSize & ~NETIO_DATA_FILL_BUF; 3 63190 DataSize -= ioptr->ReadCount; 3 63191 if (DataSize > ioptr->TcpMaxQio) DataSize = ioptr->TcpMaxQio; 3 63192 3 63193 status = sys$qiow (EfnWait, ioptr->Channel, 3 63194 IO$_READVBLK, &ioptr->ReadIOsb, 0, 0, 3 63195 (uchar*)ioptr->ReadPtr+ioptr->ReadCount, DataSize, 3 63196 0, 0, 0, 0); 3 63197 3 63198 if (VMSnok (status)) 3 63199 ioptr->ReadStatus = status; 3 63200 else 3 63201 NetIoReadAst (ioptr); 3 63202 3 63203 if (VMSnok (ioptr->ReadStatus)) break; 2 63204 } 1 63205 } 1 63206 1 63207 /****************/ 1 63208 /* check status */ 1 63209 /****************/ 1 63210 1 63211 /* if I/O successful */ 1 63212 if (VMSok (status)) return (status); 1 63213 1 63214 /* with resource wait enabled the only quota not waited for is ASTLM */ 1 63215 if (status == SS$_EXQUOTA) 2 63216 { 2 63217 /* no ASTs means not much of anything else can happen so just exit! */ Source Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 15 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 2 63218 sys$canexh(0); 2 63219 /* make the message a little more meaningful */ 2 63220 sys$exit (SS$_EXASTLM); 1 63221 } 1 63222 1 63223 /* write failed, call AST explicitly, status in the IOsb */ 1 63224 ioptr->ReadIOsb.Status = status; 1 63225 ioptr->ReadIOsb.Count = 0; 1 63226 if (ioptr->ReadAstFunction) 1 63227 SysDclAst (NetIoReadAst, ioptr); 1 63228 else 1 63229 NetIoReadAst (ioptr); 1 63230 1 63231 return (status); 1 63232 } 63233 63234 /*****************************************************************************/ 63235 /* 63236 AST from NetIoRead(). Call the AST function. 63237 */ 63238 63239 void NetIoReadAst (NETIO_STRUCT *ioptr) 63240 1 63241 { 1 63242 void *AstParam; 1 63243 VOID_AST AstFunction; 1 63244 1 63245 /*********/ 1 63246 /* begin */ 1 63247 /*********/ 1 63248 1 63249 if (WATCHMOD (ioptr, WATCH_MOD_NET)) 1 63250 WatchThis (WATCHITM(ioptr), WATCH_MOD_NET, 1 63251 "NetIoReadAst() !&F !&X !&X !&S !UL !UL !&A", 1 63252 NetIoReadAst, ioptr, ioptr->VmsStatus, 1 63253 ioptr->ReadIOsb.Status, ioptr->ReadIOsb.Count, 1 63254 ioptr->ReadCount, ioptr->ReadAstFunction); 1 63255 1 63256 if (VMSok (ioptr->ReadIOsb.Status)) 2 63257 { 2 63258 /* zero bytes with a normal status (once seen with TGV-Multinet) */ 2 63259 // if (!ioptr->ReadIOsb.Count) ioptr->ReadIOsb.Status = SS$_ABORT; 1 63260 } 1 63261 1 63262 if (ioptr->VmsStatus) 2 63263 { 2 63264 /* explicitly set status */ 2 63265 ioptr->ReadIOsb.Status = ioptr->VmsStatus; 2 63266 ioptr->ReadIOsb.Count = 0; 1 63267 } 1 63268 1 63269 ioptr->ReadStatus = ioptr->ReadIOsb.Status; 1 63270 1 63271 if (ioptr->ReadIOsb.Status == SS$_NORMAL && 1 63272 !(ioptr->ReadCount || ioptr->ReadSize)) 2 63273 { 2 63274 /* special case, do not tally or report via WATCH */ Source Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 16 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 2 63275 if (AstFunction = ioptr->ReadAstFunction) 3 63276 { 3 63277 AstParam = ioptr->ReadAstParam; 3 63278 ioptr->ReadAstFunction = ioptr->ReadAstParam = NULL; 3 63279 AstFunction (AstParam); 2 63280 } 2 63281 return; 1 63282 } 1 63283 1 63284 if (WATCHPNT(ioptr)) 2 63285 { 2 63286 if (WATCH_CATEGORY(WATCH_NETWORK) || 2 63287 WATCH_CATEGORY(WATCH_NETWORK_OCTETS)) 3 63288 { 3 63289 WatchThis (WATCHITM(ioptr), WATCH_NETWORK, 3 63290 "!AZ !&S !UL (!UL/!UL) bytes (!&?non-blocking\rblocking\r)", 3 63291 ioptr->ReadSize & NETIO_DATA_FILL_BUF ? "FILL" : "READ", 3 63292 ioptr->ReadIOsb.Status, 3 63293 ioptr->ReadIOsb.Count, 3 63294 ioptr->ReadCount + ioptr->ReadIOsb.Count, 3 63295 ioptr->ReadSize & ~NETIO_DATA_FILL_BUF, 3 63296 ioptr->ReadAstFunction); 3 63297 if (WATCH_CATEGORY(WATCH_NETWORK_OCTETS)) 3 63298 if (VMSok(ioptr->ReadIOsb.Status)) 3 63299 WatchDataDump (ioptr->ReadPtr + ioptr->ReadCount, 3 63300 ioptr->ReadIOsb.Count); 2 63301 } 1 63302 } 1 63303 1 63304 if (VMSok (ioptr->ReadIOsb.Status)) 2 63305 { 2 63306 ioptr->BlocksRawRx64++; 2 63307 ioptr->BlocksTallyRx64++; 2 63308 ioptr->BytesRawRx64 += ioptr->ReadIOsb.Count; 2 63309 ioptr->BytesTallyRx64 += ioptr->ReadIOsb.Count; 2 63310 ioptr->ReadCount += ioptr->ReadIOsb.Count; 2 63311 if (ioptr->ReadAstFunction) 3 63312 { 3 63313 if (ioptr->ReadSize & NETIO_DATA_FILL_BUF) 4 63314 { 4 63315 if (ioptr->ReadCount < (ioptr->ReadSize & ~NETIO_DATA_FILL_BUF)) 5 63316 { 5 63317 /* read more to fill buffer */ 5 63318 NetIoRead (ioptr, NULL, NULL, NULL, 0); 5 63319 return; 4 63320 } 3 63321 } 2 63322 } 2 63323 2 63324 if (Watch.TriggerRxCount) 3 63325 { 3 63326 if (!ioptr->WatchTriggerRxPlus) 4 63327 { 4 63328 if (WatchTrigger (ioptr->ReadPtr, ioptr->ReadCount, 4 63329 Watch.TriggerRx)) 5 63330 { 5 63331 ioptr->WatchTriggerRx = true; Source Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 17 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 5 63332 if (Watch.TriggerPlus) ioptr->WatchTriggerRxPlus = true; 4 63333 } 3 63334 } 3 63335 if (ioptr->WatchTriggerRx || ioptr->WatchTriggerRxPlus) 4 63336 { 4 63337 WatchSetTrigger (ioptr); 4 63338 ioptr->WatchTriggerRx = false; 3 63339 } 2 63340 } 1 63341 } 1 63342 else 2 63343 { 2 63344 /* abort is explicitly used and therefore not an error per se */ 2 63345 if (ioptr->ReadIOsb.Status != SS$_ABORT) 2 63346 ioptr->ReadErrorCount++; 2 63347 /* just note the first error status */ 2 63348 if (!ioptr->ReadErrorStatus) 2 63349 ioptr->ReadErrorStatus = ioptr->ReadIOsb.Status; 2 63350 if (!(ioptr->ReadIOsb.Status == SS$_ABORT || 2 63351 ioptr->ReadIOsb.Status == SS$_CANCEL || 2 63352 ioptr->ReadIOsb.Status == SS$_CONNECFAIL || 2 63353 ioptr->ReadIOsb.Status == SS$_IVCHAN || 2 63354 ioptr->ReadIOsb.Status == SS$_LINKDISCON || 2 63355 ioptr->ReadIOsb.Status == SS$_TIMEOUT || 2 63356 ioptr->ReadIOsb.Status == SS$_UNREACHABLE || 2 63357 ioptr->ReadIOsb.Status == SS$_VCCLOSED)) 3 63358 { 3 63359 char *sptr = "(none)"; 3 63360 REQUEST_STRUCT *rqptr; 3 63361 if (rqptr = ioptr->RequestPtr) 3 63362 if (rqptr->rqHeader.RequestUriPtr) 3 63363 sptr = rqptr->rqHeader.RequestUriPtr; 3 63364 ErrorNoticed (NULL, ioptr->ReadIOsb.Status, "!AZ", FI_LI, sptr); 2 63365 } 1 63366 } 1 63367 1 63368 if (AstFunction = ioptr->ReadAstFunction) 2 63369 { 2 63370 AstParam = ioptr->ReadAstParam; 2 63371 ioptr->ReadAstFunction = ioptr->ReadAstParam = NULL; 2 63372 AstFunction (AstParam); 1 63373 } 1 63374 } 63375 63376 /*****************************************************************************/ 63377 /* 63378 Deliver the supplied VMS status code via AST while maintaining the network 63379 write in-progress conditions. As with other I/O the delivery needs to be 63380 decoupled in case it gets called again during that delivery. Primarily used to 63381 indicate SS$_CANCEL in HTTP/2 processing. 63382 */ 63383 63384 void NetIoReadStatus 63385 ( 63386 NETIO_STRUCT *ioptr, 63387 VOID_AST AstFunction, 63388 void *AstParam, Source Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 18 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 63389 int AstStatus, 63390 uint ReadCount 63391 ) 1 63392 { 1 63393 int status; 1 63394 1 63395 /*********/ 1 63396 /* begin */ 1 63397 /*********/ 1 63398 1 63399 if (WATCHMOD (ioptr, WATCH_MOD_NET)) 1 63400 WatchThis (WATCHITM(ioptr), WATCH_MOD_NET, 1 63401 "NetIoReadStatus() !&X !UL !&A !&S", 1 63402 ioptr, ReadCount, AstFunction, AstStatus); 1 63403 1 63404 if (ioptr->ReadAstFunction) 2 63405 { 2 63406 char buf [256]; 2 63407 FaoToBuffer (buf, sizeof(buf), NULL, "!&A", ioptr->ReadAstFunction); 2 63408 ErrorExitVmsStatus (SS$_BUGCHECK, buf, FI_LI); 1 63409 } 1 63410 ioptr->ReadAstFunction = AstFunction; 1 63411 ioptr->ReadAstParam = AstParam; 1 63412 if (!ReadCount) 2 63413 { 2 63414 ioptr->ReadPtr = NULL; 2 63415 ioptr->ReadSize = 0; 1 63416 } 1 63417 ioptr->ReadCount = 0; 1 63418 ioptr->ReadIOsb.Count = ReadCount; 1 63419 ioptr->ReadIOsb.Status = AstStatus; 1 63420 1 63421 if (AstFunction) 1 63422 SysDclAst (NetIoReadAst, ioptr); 1 63423 else 1 63424 NetIoReadAst (ioptr); 1 63425 } 63426 63427 /****************************************************************************/ 63428 /* 63429 Check that the socket is still working by asking for an innocuous datum. 63430 */ 63431 63432 int NetIoCheck (NETIO_STRUCT *ioptr) 63433 1 63434 { 1 63435 extern VMS_ITEM_LIST2 TcpIpSocketMaxSegSense; 1 63436 1 63437 int status; 1 63438 IO_SB SenseIOsb; 1 63439 1 63440 /*********/ 1 63441 /* begin */ 1 63442 /*********/ 1 63443 1 63444 /* check that it's really a working socket */ 1 63445 status = sys$qiow (EfnWait, ioptr->Channel, IO$_SENSEMODE, &SenseIOsb, Source Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 19 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 1 63446 0, 0, 0, 0, 0, 0, 0, &TcpIpSocketMaxSegSense); 1 63447 if (VMSok (status)) status = SenseIOsb.Status; 1 63448 return (status); 1 63449 } 63450 63451 /****************************************************************************/ 63452 /* 63453 Any $QIO I/O currently outstanding? 63454 */ 63455 63456 BOOL NetIoInProgress (NETIO_STRUCT *ioptr) 63457 1 63458 { 1 63459 int channel, status; 1 63460 1 63461 /*********/ 1 63462 /* begin */ 1 63463 /*********/ 1 63464 1 63465 if (WATCHMOD (ioptr, WATCH_MOD_NET)) 1 63466 WatchThis (WATCHITM(ioptr), WATCH_MOD_NET, "NetIoInProgress()"); 1 63467 1 63468 if (ioptr->Stream2Ptr) 1 63469 return (Http2NetIoInProgress (ioptr->Stream2Ptr)); 1 63470 1 63471 if (ioptr->SesolaPtr) 1 63472 return (SesolaNetIoInProgress (ioptr->SesolaPtr)); 1 63473 1 63474 return (ioptr->WriteAstFunction || ioptr->ReadAstFunction); 1 63475 } 63476 63477 /****************************************************************************/ 63478 /* 63479 Cancel network I/O in-progress. 63480 */ 63481 63482 void NetIoCancel (NETIO_STRUCT *ioptr) 63483 1 63484 { 1 63485 /*********/ 1 63486 /* begin */ 1 63487 /*********/ 1 63488 1 63489 if (WATCHMOD (ioptr, WATCH_MOD_NET)) 1 63490 WatchThis (WATCHITM(ioptr), WATCH_MOD_NET, "NetIoCancel()"); 1 63491 1 63492 ioptr->VmsStatus = SS$_CANCEL; 1 63493 1 63494 if (ioptr->Stream2Ptr) 1 63495 Http2NetIoCancel (ioptr); 1 63496 else 1 63497 if (ioptr->SesolaPtr) 1 63498 SesolaNetIoCancel (ioptr); 1 63499 else 1 63500 if (ioptr->WriteErrorCount > NET_CANCEL_FAIL_MAX) 2 63501 { 2 63502 if (ioptr->WriteAstFunction && ioptr->WriteAstParam) Source Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 20 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 3 63503 { 3 63504 SysDclAst (ioptr->WriteAstFunction, ioptr->WriteAstParam); 3 63505 ioptr->WriteAstFunction = ioptr->WriteAstParam = NULL; 2 63506 } 1 63507 } 1 63508 else 1 63509 if (ioptr->ReadErrorCount > NET_CANCEL_FAIL_MAX) 2 63510 { 2 63511 if (ioptr->ReadAstFunction && ioptr->ReadAstParam) 3 63512 { 3 63513 SysDclAst (ioptr->ReadAstFunction, ioptr->ReadAstParam); 3 63514 ioptr->ReadAstFunction = ioptr->ReadAstParam = NULL; 2 63515 } 1 63516 } 1 63517 else 1 63518 if (ioptr->WriteAstFunction || ioptr->ReadAstFunction) 1 63519 sys$cancel (ioptr->Channel); 1 63520 } 63521 63522 /****************************************************************************/ 63523 /* 63524 Just close the socket (channel), bang! 63525 */ 63526 63527 int NetIoCloseSocket (NETIO_STRUCT *ioptr) 63528 1 63529 { 1 63530 int channel, status; 1 63531 1 63532 /*********/ 1 63533 /* begin */ 1 63534 /*********/ 1 63535 1 63536 if (WATCHMOD (ioptr, WATCH_MOD_NET)) 1 63537 WatchThis (WATCHITM(ioptr), WATCH_MOD_NET, "NetIoCloseSocket()"); 1 63538 1 63539 if (ioptr->Stream2Ptr) return (SS$_NORMAL); 1 63540 1 63541 if (!ioptr->Channel) return (SS$_NORMAL); 1 63542 1 63543 status = sys$dassgn (channel = ioptr->Channel); 1 63544 ioptr->Channel = 0; 1 63545 1 63546 if (WATCH_CATEGORY(WATCH_CONNECT)) 1 63547 WatchThis (WATCHITM(ioptr), WATCH_CONNECT, "CLOSE channel !UL !&S", 1 63548 channel, status); 1 63549 1 63550 return (status); 1 63551 } 63552 63553 /****************************************************************************/ 63554 /* 63555 Just close the socket (channel), bang! 63556 */ 63557 63558 int NetIoDassgnChannel (NETIO_STRUCT *ioptr) 63559 Source Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 21 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 1 63560 { 1 63561 int channel, status; 1 63562 1 63563 /*********/ 1 63564 /* begin */ 1 63565 /*********/ 1 63566 1 63567 if (WATCHMOD (ioptr, WATCH_MOD_NET)) 1 63568 WatchThis (WATCHITM(ioptr), WATCH_MOD_NET, "NetIoDassgnChannel()"); 1 63569 1 63570 status = sys$dassgn (channel = ioptr->Channel); 1 63571 ioptr->Channel = 0; 1 63572 1 63573 return (status); 1 63574 } 63575 63576 /*****************************************************************************/ 63577 /* 63578 Allows *testing* of NetIoWrite() for small, medium, large and huge buffers. 63579 A request to UTI "/$/NetIoWriteTest/?" will invoke this function. 63580 Writes responses of ASCII in quantities from 1 byte to whatever. Non-blocking 63581 by default, negative quantity to make blocking. 63582 */ 63583 X 63584 #if WATCH_MOD X 63585 X 63586 void NetIoWriteTest (REQUEST_STRUCT *rqptr) X 63587 X 63588 { X 63589 int ch, nonblock, size; X 63590 char *cptr, *sptr, *zptr; X 63591 X 63592 /*********/ X 63593 /* begin */ X 63594 /*********/ X 63595 X 63596 if (WATCHMOD (rqptr, WATCH_MOD_NET)) X 63597 WatchThis (WATCHITM(rqptr), WATCH_MOD_NET, "NetIoWriteTest()"); X 63598 X 63599 if (rqptr->NotePadPtr != NetIoWriteTest) X 63600 { X 63601 rqptr->NotePadPtr = NetIoWriteTest; X 63602 if (!(cptr = rqptr->rqHeader.QueryStringPtr)) cptr = "32767"; X 63603 size = atoi(cptr); X 63604 if (size >= 0) nonblock = 1; else nonblock = 0; X 63605 size = abs(size); X 63606 X 63607 cptr = VmGetHeap (rqptr, size+32); X 63608 zptr = (sptr = cptr) + size; X 63609 ch = '!'; X 63610 while (sptr < zptr) X 63611 { X 63612 while (ch <= '~' && sptr < zptr) *sptr++ = ch++; X 63613 if (sptr < zptr) *sptr++ = '\n'; X 63614 ch = '!'; X 63615 } X 63616 Source Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 22 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 X 63617 rqptr->rqResponse.NoGzip = true; X 63618 ResponseHeader (rqptr, 200, "text/plain", size, NULL, NULL); X 63619 if (nonblock) X 63620 { X 63621 NetWrite (rqptr, NetIoWriteTest, cptr, size); X 63622 return; X 63623 } X 63624 NetWrite (rqptr, NULL, cptr, size); X 63625 } X 63626 X 63627 RequestEnd2 (rqptr); X 63628 } X 63629 X 63630 #endif /* WATCH_MOD */ 63631 63632 /*****************************************************************************/ 63633 /* 63634 Allows *testing* of NetIoRead() for small, medium, large and huge buffers. 63635 Using cURL and a POSTed file to buffer. Non-blocking by default, negative 63636 quantity to make blocking. 63637 63638 $ curl --insecure "-XPOST" --data-binary @ - 63639 "http[s]:///$/NetIoReadTest/?" 63640 */ 63641 X 63642 #if WATCH_MOD X 63643 X 63644 void NetIoReadTest (REQUEST_STRUCT *rqptr) X 63645 X 63646 { X 63647 int nonblock = 1; X 63648 int64 size; X 63649 ushort slen; X 63650 char *cptr; X 63651 char buf [256]; X 63652 X 63653 /*********/ X 63654 /* begin */ X 63655 /*********/ X 63656 X 63657 if (WATCHMOD (rqptr, WATCH_MOD_NET)) X 63658 WatchThis (WATCHITM(rqptr), WATCH_MOD_NET, "NetIoReadTest()"); X 63659 X 63660 if (rqptr->NotePadPtr != NetIoWriteTest) X 63661 { X 63662 rqptr->NotePadPtr = NetIoWriteTest; X 63663 if (atoi(rqptr->rqHeader.QueryStringPtr) < 0) nonblock = 0; X 63664 size = rqptr->rqHeader.ContentLength64; X 63665 cptr = VmGetHeap (rqptr, size+32); X 63666 size |= NETIO_DATA_FILL_BUF; X 63667 if (nonblock) X 63668 { X 63669 NetRead (rqptr, &NetIoReadTest, cptr, size); X 63670 return; X 63671 } X 63672 NetRead (rqptr, NULL, cptr, size); X 63673 } Source Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 23 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 X 63674 X 63675 rqptr->NetIoPtr->BytesRawRx64 += rqptr->NetIoPtr->ReadCount; X 63676 rqptr->NetIoPtr->BytesTallyRx64 += rqptr->NetIoPtr->ReadCount; X 63677 FaoToBuffer (buf, sizeof(buf), &slen, "status:!&S count:!UL\n", X 63678 rqptr->NetIoPtr->ReadStatus, X 63679 rqptr->NetIoPtr->ReadCount); X 63680 rqptr->rqResponse.NoGzip = true; X 63681 ResponseHeader (rqptr, 200, "text/plain", slen, NULL, NULL); X 63682 NetWrite (rqptr, NULL, buf, slen); X 63683 X 63684 RequestEnd2 (rqptr); X 63685 } X 63686 X 63687 #endif /* WATCH_MOD */ 63688 63689 /*****************************************************************************/ Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 24 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 .psect $CODE$, CON, LCL, SHR, EXE, NOWRT, NOVEC, NOSHORT .proc NetIoBegin .align 32 .global NetIoBegin NetIoBegin: // 062598 { .mii 002C00B20A40 0000 alloc r41 = rspfs, 0, 11, 5, 0 012000020380 0001 mov r14 = 16 012000100AC0 0002 add out0 = @ltoffx(TcpIpDeviceDsc), // r43 = @ltoffx(TcpIpDeviceDsc), r1 // 062615 gp } { .mmi 010800C00080 0010 mov r2 = sp ;; // r2 = r12 // 062598 010028E183C0 0011 sub r15 = sp, r14 // r15 = r12, r14 000188000A00 0012 mov r40 = rp // r40 = br0 } { .mii 0080C2B00AC0 0020 ld8.mov out0 = [r43], TcpIpDeviceDsc // 062615 012000008640 0021 mov ai = 4 ;; // r25 = 4 012000000B80 0022 mov out3 = 0 // r46 = 0 } { .mii 0080C0F00380 0030 ld8 r14 = [r15] // 062598 010800F00300 0031 mov sp = r15 // r12 = r15 010800100A80 0032 mov r42 = gp ;; // r42 = r1 } { .mib 012000000B40 0040 mov out2 = 0 // r45 = 0 // 062615 010800F20B00 0041 adds out1 = 16, r15 // r44 = 16, r15 00A000001000 0042 br.call.sptk.many rp = SYS$ASSIGN ;; // br0 = SYS$ASSIGN } { .mii 010802A00040 0050 mov gp = r42 // r1 = r42 00A0308001C0 0051 tbit.z pr7, pr6 = r8, 0 // 062617 010800800800 0052 mov status = r8 ;; // r32 = r8 // 062615 } { .mfb 012000100840 0060 add r33 = @gprel(PrevTickSecond), // r33 = @gprel(PrevTickSecond), r1 // 062637 gp 000008000000 0061 nop.f 0 00860002E006 0062 (pr6) br.cond.dpnt.many L$4 ;; // 062617 } { .mii 012000100880 0070 add r34 = @ltoffx(HttpdTickSecond), // r34 = @ltoffx(HttpdTickSecond), r1 // 062620 gp 010802108840 0071 adds r33 = 4, r33 000008000000 0072 nop.i 0 ;; } { .mmi 0080C2200880 0080 ld8.mov r34 = [r34], HttpdTickSecond 00B08A1F8900 0081 ld4 r36 = [r33], -4 000008000000 0082 nop.i 0 ;; } { .mmi 008082100940 0090 ld4 r37 = [r33] ;; // 062622 0080822008C0 0091 ld4 r35 = [r34] // 062620 000008000000 0092 nop.i 0 ;; Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 25 NetIoBegin 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 } { .mfb 01A44A446000 00A0 cmp4.ltu pr0, pr9 = r35, r36 000008000000 00A1 nop.f 0 00860001E009 00A2 (pr9) br.cond.dpnt.many L$7 ;; } { .mfb 01C4025462C0 00B0 cmp4.eq pr11, pr0 = r35, r37 // 062622 000008000000 00B1 nop.f 0 00860001200B 00B2 (pr11) br.cond.dpnt.many L$9 ;; } { .mii 012000100BC0 00C0 add out4 = @ltoff($LITERAL$+16), // r47 = @ltoff($LITERAL$+16), r1 // 062624 gp 01200000A640 00C1 mov ai = 5 // r25 = 5 010800000B40 00C2 mov out2 = r0 // r45 = r0 } { .mmi 010800000AC0 00D0 mov out0 = r0 ;; // r43 = r0 0080C2F00B80 00D1 ld8 out3 = $LITERAL$ // r46 = [r47] 01200809ABC0 00D2 mov out4 = 205 // r47 = 205 } { .mib 000008000000 00E0 nop.m 0 0000B0800B00 00E1 sxt4 out1 = r8 // r44 = r8 00A000001000 00E2 br.call.sptk.many rp = ErrorNoticed ;; // br0 = ErrorNoticed } { .mii 008082200880 00F0 ld4 r34 = [r34] // 062625 010802108840 00F1 adds r33 = 4, r33 // 062626 010802A00040 00F2 mov gp = r42 ;; // r1 = r42 // 062624 } { .mmi 00B08A1F8980 0100 ld4 r38 = [r33], -4 ;; // 062626 008C82144000 0101 st4 [r33] = r34 // 062625 01C432600000 0102 cmp4.eq pr0, pr6 = r0, r38 // 062626 } { .mfi 010802278880 0110 adds r34 = 60, r34 // 062625 000008000000 0111 nop.f 0 000008000000 0112 nop.i 0 ;; } { .mfb 000008000000 0120 nop.m 0 000008000000 0121 nop.f 0 008600004006 0122 (pr6) br.cond.dpnt.many L$9 ;; // 062626 } { .mmi 010802108840 0130 adds r33 = 4, r33 ;; // 062627 00BC8A145F00 0131 st4 [r33] = r34, -4 000008000000 0132 nop.i 0 ;; } 0140 L$9: // 062628 { .mfb 01CC42038000 0140 cmp4.eq pr0, pr8 = 28, status // pr0, pr8 = 28, r32 // 062630 000008000000 0141 nop.f 0 008600004008 0142 (pr8) br.cond.dpnt.many L$13 ;; Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 26 NetIoBegin 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 } { .mfb 010800000200 0150 mov r8 = r0 000008000000 0151 nop.f 0 008000019000 0152 br.sptk.many L$15 ;; } 0160 L$13: { .mmi 0120180688C0 0160 mov r35 = 436 ;; // 062632 01C452340000 0161 cmp4.eq pr0, pr10 = status, r35 // pr0, pr10 = r32, r35 000008000000 0162 nop.i 0 } { .mfb 000008000000 0170 nop.m 0 000008000000 0171 nop.f 0 00860000400A 0172 (pr10) br.cond.dpnt.many L$7 ;; } { .mfb 010800000200 0180 mov r8 = r0 000008000000 0181 nop.f 0 008000013000 0182 br.sptk.many L$15 ;; } 0190 L$7: // 062634 { .mii 012000100B80 0190 add out3 = @ltoff($LITERAL$+16), // r46 = @ltoff($LITERAL$+16), r1 // 062635 gp 012000100940 0191 add r37 = @ltoffx($LITERAL$), gp // r37 = @ltoffx($LITERAL$), r1 012000008640 0192 mov ai = 4 ;; // r25 = 4 } { .mmi 0080C2E00B40 01A0 ld8 out2 = $LITERAL$ // r45 = [r46] 0080C2500B00 01A1 ld8.mov out1 = [r37], $LITERAL$ 0120080B0B80 01A2 mov out3 = 216 ;; // r46 = 216 } { .mib 000008000000 01B0 nop.m 0 0000B2000AC0 01B1 sxt4 out0 = status // r43 = r32 00A000001000 01B2 br.call.sptk.many rp = // br0 = ErrorExitVmsStatus ErrorExitVmsStatus ;; } { .mfi 010802A00040 01C0 mov gp = r42 // r1 = r42 000008000000 01C1 nop.f 0 000008000000 01C2 nop.i 0 } 01D0 L$4: // 062636 { .mii 00AC82100100 01D0 st4 [r33] = r0, 4 // 062637 012000002640 01D1 mov ai = 1 // r25 = 1 // 062639 0120700E0AC0 01D2 mov out0 = 1904 ;; // r43 = 1904 } { .mfb 008C82100000 01E0 st4 [r33] = r0 // 062637 000008000000 01E1 nop.f 0 00A000001000 01E2 br.call.sptk.many rp = VmGet ;; // br0 = VmGet // 062639 } { .mii Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 27 NetIoBegin 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 010800C209C0 01F0 adds r39 = 16, sp // r39 = 16, r12 // 062640 010802A00040 01F1 mov gp = r42 // r1 = r42 // 062639 000008000000 01F2 nop.i 0 ;; } { .mmi 0080C27009C0 0200 ld8 r39 = [r39] ;; // 062640 008C4084E000 0201 st2 [r8] = r39 000008000000 0202 nop.i 0 ;; } 0210 L$15: // 062642 { .mii 000008000000 0210 nop.m 0 000154052000 0211 mov.i rspfs = r41 ;; 000E00150000 0212 mov rp = r40 // br0 = r40 } { .mfb 010800C20300 0220 adds sp = 16, sp // r12 = 16, r12 000008000000 0221 nop.f 0 000108001100 0222 br.ret.sptk.many rp ;; // br0 } .endp NetIoBegin Routine Size: 560 bytes, Routine Base: $CODE$ + 0000 .proc NetIoProxyBegin .align 32 .global NetIoProxyBegin NetIoProxyBegin: // 062652 { .mii 002C00308840 0230 alloc r33 = rspfs, 0, 3, 1, 0 000188000800 0231 mov r32 = rp // r32 = br0 010800100880 0232 mov r34 = gp // r34 = r1 } { .mmi 012000002640 0240 mov ai = 1 ;; // r25 = 1 // 062664 0120100208C0 0241 mov out0 = 272 // r35 = 272 000008000000 0242 nop.i 0 } { .mfb 000008000000 0250 nop.m 0 000008000000 0251 nop.f 0 00A000001000 0252 br.call.sptk.many rp = VmGet ;; // br0 = VmGet } { .mii 010802200040 0260 mov gp = r34 // r1 = r34 000154042000 0261 mov.i rspfs = r33 ;; // 062666 000E00140000 0262 mov rp = r32 // br0 = r32 } { .mfb 000008000000 0270 nop.m 0 000008000000 0271 nop.f 0 000108001100 0272 br.ret.sptk.many rp ;; // br0 } .endp NetIoProxyBegin Routine Size: 80 bytes, Routine Base: $CODE$ + 0230 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 28 NetIoEnd 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 .proc NetIoEnd .align 32 .global NetIoEnd NetIoEnd: // 062675 { .mii 002C005108C0 0280 alloc r35 = rspfs, 1, 4, 3, 0 000188000880 0281 mov r34 = rp // r34 = br0 01C438040000 0282 cmp4.eq pr0, pr7 = ioptr, r0 // pr0, pr7 = r32, r0 // 062685 } { .mbb 010800100900 0290 mov r36 = gp // r36 = r1 // 062675 008600002007 0291 (pr7) br.cond.dpnt.many L$259 // 062685 008000015000 0292 br.sptk.many L$264 ;; } 02A0 L$259: { .mmi 01080A070200 02A0 adds r8 = 184, in0 ;; // r8 = 184, r32 // 062687 008080800940 02A1 ld4 out0 = [r8] // r37 = [r8] 000008000000 02A2 nop.i 0 ;; } { .mib 01C40004A280 02B0 cmp4.eq pr10, pr0 = out0, r0 // pr10, pr0 = r37, r0 0000B2500940 02B1 sxt4 out0 = out0 // r37 = r37 00860000600A 02B2 (pr10) br.cond.dpnt.many L$263 ;; } { .mfb 012000002640 02C0 mov ai = 1 // r25 = 1 // 062688 000008000000 02C1 nop.f 0 00A000001000 02C2 br.call.sptk.many rp = SesolaNetEnd ;; // br0 = SesolaNetEnd } { .mfb 000008000000 02D0 nop.m 0 000008000000 02D1 nop.f 0 00800000B000 02D2 br.sptk.many L$266 ;; } 02E0 L$263: // 062689 { .mib 008042000940 02E0 ld2 out0 = [in0] // r37 = [r32] // 062691 012000002640 02E1 mov ai = 1 // r25 = 1 00A000001000 02E2 br.call.sptk.many rp = SYS$DASSGN ;; // br0 = SYS$DASSGN } { .mii 010802400040 02F0 mov gp = r36 // r1 = r36 012000006640 02F1 mov ai = 3 // r25 = 3 // 062692 010802000940 02F2 mov out0 = ioptr ;; // r37 = r32 } { .mmi 0120001009C0 0300 add out2 = @ltoff($LITERAL$+16), // r39 = @ltoff($LITERAL$+16), r1 gp ;; 0080C2700980 0301 ld8 out1 = $LITERAL$ // r38 = [r39] 0120100229C0 0302 mov out2 = 273 // r39 = 273 } { .mfb 000008000000 0310 nop.m 0 000008000000 0311 nop.f 0 00A000001000 0312 br.call.sptk.many rp = VmFree ;; // br0 = VmFree } Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 29 NetIoEnd 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 0320 L$266: { .mfi 010802400040 0320 mov gp = r36 // r1 = r36 000008000000 0321 nop.f 0 000008000000 0322 nop.i 0 } 0330 L$264: // 062694 { .mii 000008000000 0330 nop.m 0 000154046000 0331 mov.i rspfs = r35 ;; 000E00144000 0332 mov rp = r34 // br0 = r34 } { .mfb 000008000000 0340 nop.m 0 000008000000 0341 nop.f 0 000108001100 0342 br.ret.sptk.many rp ;; // br0 } .endp NetIoEnd Routine Size: 208 bytes, Routine Base: $CODE$ + 0280 .proc NetIoWrite .align 32 .global NetIoWrite NetIoWrite: // 062712 { .mii 002C00820980 0350 alloc r38 = rspfs, 5, 3, 8, 0 012000040380 0351 mov r14 = 32 01080A0780C0 0352 adds r3 = 188, in0 // r3 = 188, r32 // 062735 } { .mmi 010800C00080 0360 mov r2 = sp ;; // r2 = r12 // 062712 010028E183C0 0361 sub r15 = sp, r14 // r15 = r12, r14 01C440042240 0362 cmp4.eq pr9, pr8 = AstFunction, r0 // pr9, pr8 = r33, r0 // 062735 } { .mmi 01C4500462C0 0370 cmp4.eq pr11, pr10 = DataPtr, r0 ;; // pr11, pr10 = r35, r0 // 062732 0080C0F00380 0371 ld8 r14 = [r15] // 062712 010800F00300 0372 mov sp = r15 // r12 = r15 } { .mmi 0080803000C0 0380 ld4 r3 = [r3] ;; // 062735 01C4300061C0 0381 cmp4.eq pr7, pr6 = r3, r0 000188000940 0382 mov r37 = rp // r37 = br0 // 062712 } { .mii 0108001009C0 0390 mov r39 = gp // r39 = r1 0000B03000C0 0391 sxt4 r3 = r3 ;; // 062735 01C000001246 0392 (pr6) cmp.eq.unc pr9, pr0 = r0, r0 // 062757 } { .mmi 01C000001307 03A0 (pr7) cmp.eq.unc pr12, pr0 = r0, r0 ;; 01C000001389 03A1 (pr9) cmp.eq.unc pr14, pr0 = r0, r0 // 062735 000008000000 03A2 nop.i 0 ;; } { .mmi 01C270000008 03B0 (pr8) cmp.eq.or.andcm pr0, pr14 = r0, r0 ;; Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 30 NetIoWrite 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 01C2000002CE 03B1 (pr14) cmp.eq.or.andcm pr11, pr0 = r0, r0 000008000000 03B2 nop.i 0 } { .mfb 000008000000 03C0 nop.m 0 000008000000 03C1 nop.f 0 00860002600B 03C2 (pr11) br.cond.dpnt.many L$201 ;; } { .mmi 01080A0800C0 03D0 adds r3 = 192, in0 ;; // r3 = 192, r32 // 062738 0080803000C0 03D1 ld4 r3 = [r3] 000008000000 03D2 nop.i 0 ;; } { .mfb 01C4000061C0 03E0 cmp4.eq pr7, pr0 = r3, r0 000008000000 03E1 nop.f 0 008600014007 03E2 (pr7) br.cond.dpnt.many L$203 ;; } { .mii 0120001000C0 03F0 add r3 = @ltoff($LITERAL$+384), gp // r3 = @ltoff($LITERAL$+384), r1 // 062740 012000100A80 03F1 add out2 = @ltoff($LITERAL$+16), // r42 = @ltoff($LITERAL$+16), r1 gp 012000006640 03F2 mov ai = 3 ;; // r25 = 3 } { .mmi 0080C03000C0 0400 ld8 r3 = $LITERAL$ // r3 = [r3] 0080C2A00A40 0401 ld8 out1 = $LITERAL$ // r41 = [r42] 012010082A80 0402 mov out2 = 321 ;; // r42 = 321 } { .mfb 010800300A00 0410 mov out0 = r3 // r40 = r3 000008000000 0411 nop.f 0 00A000001000 0412 br.call.sptk.many rp = HttpdStackTrace ;; // br0 = HttpdStackTrace } { .mii 010802700040 0420 mov gp = r39 // r1 = r39 01080A080B40 0421 adds out5 = 192, in0 // r45 = 192, r32 // 062742 01080A068A00 0422 adds out0 = 180, in0 // r40 = 180, r32 } { .mmi 01200000C640 0430 mov ai = 6 ;; // r25 = 6 012000100B00 0431 add out4 = @ltoff($LITERAL$+16), // r44 = @ltoff($LITERAL$+16), r1 // 062743 gp 012000100880 0432 add in2 = @ltoff($LITERAL$+192), // r34 = @ltoff($LITERAL$+192), r1 // 062742 gp } { .mii 008082D00B40 0440 ld4 out5 = [out5] // r45 = [r45] 012028048A40 0441 mov out1 = 676 ;; // r41 = 676 0000B2D00B40 0442 sxt4 out5 = out5 // r45 = r45 } { .mmi 008082800A00 0450 ld4 out0 = [out0] // r40 = [r40] 0080C2C00AC0 0451 ld8 out3 = $LITERAL$ // r43 = [r44] // 062743 012010088B00 0452 mov out4 = 324 ;; // r44 = 324 // 062742 } { .mib Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 31 NetIoWrite 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 0080C2200A80 0460 ld8 out2 = $LITERAL$ // r42 = [r34] 0000B2800A00 0461 sxt4 out0 = out0 // r40 = r40 00A000001000 0462 br.call.sptk.many rp = ErrorNoticed ;; // br0 = ErrorNoticed } { .mib 012028048200 0470 mov r8 = 676 // 062744 010802700040 0471 mov gp = r39 // r1 = r39 // 062742 008000131000 0472 br.sptk.many L$204 ;; // 062744 } 0480 L$203: // 062745 { .mii 01080A0F4240 0480 adds r9 = 250, in0 // r9 = 250, r32 // 062752 01080A0F0280 0481 adds r10 = 248, in0 // r10 = 248, r32 // 062753 01080A080440 0482 adds r17 = 192, in0 // r17 = 192, r32 // 062748 } { .mmi 010802000800 0490 adds in0 = 0, in0 ;; // r32 = 0, r32 // 062746 01080A088480 0491 adds r18 = 196, in0 // r18 = 196, r32 // 062749 01080A0504C0 0492 adds r19 = 168, in0 // r19 = 168, r32 // 062750 } { .mmi 010802090800 04A0 adds in0 = 72, in0 ;; // r32 = 72, r32 // 062746 008C82000000 04A1 st4 [in0] = r0 // [r32] = r0 0108020000C0 04A2 adds r3 = 0, in0 // r3 = 0, r32 } { .mmi 008C40900000 04B0 st2 [r9] = r0 ;; // 062752 008C40A00000 04B1 st2 [r10] = r0 // 062753 010802010800 04B2 adds in0 = 8, in0 ;; // r32 = 8, r32 // 062747 } { .mmi 00BC8A001F00 04C0 st4 [in0] = r0, -4 // [r32] = r0, -4 008C81142000 04C1 st4 [r17] = AstFunction // [r17] = r33 // 062748 000008000000 04C2 nop.i 0 ;; } { .mmi 008C81244000 04D0 st4 [r18] = AstParam // [r18] = r34 // 062749 008C81346000 04D1 st4 [r19] = DataPtr // [r19] = r35 // 062750 000008000000 04D2 nop.i 0 ;; } { .mmi 00BC8A048D00 04E0 st4 [in0] = DataLength, -76 ;; // [r32] = r36, -76 // 062751 000008000000 04E1 nop.m 0 000008000000 04E2 nop.i 0 } 04F0 L$201: // 062755 { .bbb 008600002009 04F0 (pr9) br.cond.dpnt.many L$205 // 062757 004000000000 04F1 nop.b 0 00860000A00C 04F2 (pr12) br.cond.dpnt.many L$206 ;; } 0500 L$205: { .mii 01200000A640 0500 mov ai = 5 // r25 = 5 // 062763 0000B2400B00 0501 sxt4 out4 = DataLength // r44 = r36 010802300AC0 0502 mov out3 = DataPtr // r43 = r35 } Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 32 NetIoWrite 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 { .mmi 010802200A80 0510 mov out2 = AstParam ;; // r42 = r34 010802100A40 0511 mov out1 = AstFunction // r41 = r33 010802000A00 0512 mov out0 = ioptr // r40 = r32 } { .mfb 000008000000 0520 nop.m 0 000008000000 0521 nop.f 0 00A000001000 0522 br.call.sptk.many rp = Http2NetIoWrite ;; // br0 = Http2NetIoWrite } { .mfb 010802700040 0530 mov gp = r39 // r1 = r39 000008000000 0531 nop.f 0 008000117000 0532 br.sptk.many L$267 ;; } 0540 L$206: // 062766 { .mmi 01080A070840 0540 adds in1 = 184, in0 ;; // r33 = 184, r32 // 062768 008082100840 0541 ld4 in1 = [in1] // r33 = [r33] 000008000000 0542 nop.i 0 ;; } { .mib 01C4000421C0 0550 cmp4.eq pr7, pr0 = in1, r0 // pr7, pr0 = r33, r0 0000B2100840 0551 sxt4 in1 = in1 // r33 = r33 008600008007 0552 (pr7) br.cond.dpnt.many L$208 ;; } { .mii 012000006640 0560 mov ai = 3 // r25 = 3 // 062774 0000B2400A80 0561 sxt4 out2 = DataLength // r42 = r36 010802300A40 0562 mov out1 = DataPtr // r41 = r35 } { .mfb 010802000A00 0570 mov out0 = ioptr // r40 = r32 000008000000 0571 nop.f 0 00A000001000 0572 br.call.sptk.many rp = // br0 = SesolaNetIoWrite SesolaNetIoWrite ;; } { .mfb 010802700040 0580 mov gp = r39 // r1 = r39 000008000000 0581 nop.f 0 00800010D000 0582 br.sptk.many L$267 ;; } 0590 L$208: // 062776 { .mmi 010802080800 0590 adds in0 = 64, in0 ;; // r32 = 64, r32 // 062778 00B08A080880 0591 ld4 in2 = [in0], -64 // r34 = [r32], -64 000008000000 0592 nop.i 0 ;; } { .mfb 01C4022001C0 05A0 cmp4.eq pr7, pr0 = r0, in2 // pr7, pr0 = r0, r34 000008000000 05A1 nop.f 0 008600014007 05A2 (pr7) br.cond.dpnt.many L$210 ;; } { .mmi 01080A080840 05B0 adds in1 = 192, in0 ;; // r33 = 192, r32 // 062784 008082100840 05B1 ld4 in1 = [in1] // r33 = [r33] 000008000000 05B2 nop.i 0 ;; Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 33 NetIoWrite 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 } { .mfb 01C400042240 05C0 cmp4.eq pr9, pr0 = in1, r0 // pr9, pr0 = r33, r0 000008000000 05C1 nop.f 0 00860000A009 05C2 (pr9) br.cond.dpnt.many L$212 ;; } { .mii 012000100A00 05D0 add out0 = // r40 = @ltoff(@fptr(NetIoWriteAst)), // 062785 @ltoff(@fptr(NetIoWriteAst)), // r1 gp 012000004640 05D1 mov ai = 2 // r25 = 2 010802000A40 05D2 mov out1 = ioptr ;; // r41 = r32 } { .mfb 0080C2800A00 05E0 ld8 out0 = NetIoWriteAst // r40 = [r40] 000008000000 05E1 nop.f 0 00A000001000 05E2 br.call.sptk.many rp = SysDclAst ;; // br0 = SysDclAst } { .mii 010802080800 05F0 adds in0 = 64, in0 // r32 = 64, r32 // 062788 010802700040 05F1 mov gp = r39 // r1 = r39 // 062785 000008000000 05F2 nop.i 0 ;; } { .mfb 008082000200 0600 ld4 r8 = [in0] // r8 = [r32] // 062788 000008000000 0601 nop.f 0 0080000FD000 0602 br.sptk.many L$267 ;; } 0610 L$212: // 062786 { .mfb 010802000A00 0610 mov out0 = ioptr // r40 = r32 // 062787 000008000000 0611 nop.f 0 00A000001000 0612 br.call.sptk.many rp = NetIoWriteAst ;; // br0 = NetIoWriteAst } { .mmi 010802080800 0620 adds in0 = 64, in0 ;; // r32 = 64, r32 // 062788 008082000200 0621 ld4 r8 = [in0] // r8 = [r32] 000008000000 0622 nop.i 0 } { .mfb 000008000000 0630 nop.m 0 000008000000 0631 nop.f 0 0080000F7000 0632 br.sptk.many L$267 ;; } 0640 L$210: // 062789 { .mii 0120001008C0 0640 add in3 = @ltoffx(Watch), gp // r35 = @ltoffx(Watch), r1 // 062802 01C4300401C0 0641 cmp4.eq pr7, pr6 = ioptr, r0 ;; // pr7, pr6 = r32, r0 // 062791 01C000001247 0642 (pr7) cmp.eq.unc pr9, pr0 = r0, r0 } { .mib 0080C23008C0 0650 ld8.mov in3 = [r35], Watch // 062802 01C000001206 0651 (pr6) cmp.eq.unc pr8, pr0 = r0, r0 // 062791 008600004008 0652 (pr8) br.cond.dpnt.many L$214 ;; } { .mfb 000008000000 0660 nop.m 0 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 34 NetIoWrite 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 000008000000 0661 nop.f 0 008600034009 0662 (pr9) br.cond.dpnt.many L$215 ;; } 0670 L$214: { .mii 0108023F8900 0670 adds in4 = 124, in3 // r36 = 124, r35 012080000280 0671 mov r10 = 2048 010802088800 0672 adds in0 = 68, in0 ;; // r32 = 68, r32 } { .mmi 0111624F0880 0680 and in2 = -8, in4 // r34 = -8, r36 00B08A078580 0681 ld4 r22 = [in0], -68 // r22 = [r32], -68 000008000000 0682 nop.i 0 ;; } { .mmi 01C05A248000 0690 cmp.eq pr0, pr11 = in4, in2 // pr0, pr11 = r36, r34 00A0C2210240 0691 ld8 r9 = [in2], 8 // r9 = [r34], 8 01C461600340 0692 cmp4.eq pr13, pr12 = r0, r22 ;; } { .mib 000008000000 06A0 nop.m 0 009E1004884B 06A1 (pr11) dep in1 = in4, r0, 3, 3 // r33 = r36, r0, 3, 3 004000000000 06A2 nop.b 0 ;; } { .mmi 0080C22000CB 06B0 (pr11) ld8 r3 = [in2] ;; // r3 = [r34] 000008000000 06B1 nop.m 0 00F20094224B 06B2 (pr11) shr.u r9 = r9, in1 // r9 = r9, r33 } { .mmi 01012A18084B 06C0 (pr11) sub in1 = 64, in1 ;; // r33 = 64, r33 000008000000 06C1 nop.m 0 00F2421060CB 06C2 (pr11) shl r3 = r3, in1 ;; // r3 = r3, r33 } { .mmi 01007090624B 06D0 (pr11) or r9 = r3, r9 ;; 010060A12240 06D1 and r9 = r9, r10 000008000000 06D2 nop.i 0 ;; } { .mmi 01C0009003C0 06E0 cmp.eq pr15, pr0 = r0, r9 ;; 01C20000034F 06E1 (pr15) cmp.eq.or.andcm pr13, pr0 = r0, r0 000008000000 06E2 nop.i 0 } { .mfb 000008000000 06F0 nop.m 0 000008000000 06F1 nop.f 0 00860002200D 06F2 (pr13) br.cond.dpnt.many L$215 ;; } { .mii 010802090800 0700 adds in0 = 72, in0 // r32 = 72, r32 // 062793 01C000001240 0701 cmp.eq.unc pr9, pr0 = r0, r0 ;; // 062795 01A000000248 0702 (pr8) cmp.ltu pr9, pr0 = r0, r0 } { .mmi 00A0820084C0 0710 ld4 r19 = [in0], 4 ;; // r19 = [r32], 4 // 062793 00B08A0B8500 0711 ld4 r20 = [in0], -36 // r20 = [r32], -36 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 35 NetIoWrite 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 000008000000 0712 nop.i 0 ;; } { .mii 00B08A0B0540 0720 ld4 r21 = [in0], -40 // r21 = [r32], -40 // 062794 010029328840 0721 sub dlen = r20, r19 ;; // r33 = r20, r19 // 062793 01A40212A1C0 0722 cmp4.ltu pr7, pr0 = r21, dlen ;; // pr7, pr0 = r21, r33 // 062794 } { .mbb 010801500847 0730 (pr7) mov dlen = r21 // r33 = r21 008600002009 0731 (pr9) br.cond.dpnt.many L$219 // 062795 008000005000 0732 br.sptk.many L$218 ;; } 0740 L$219: { .mfi 010800000580 0740 mov r22 = r0 000008000000 0741 nop.f 0 000008000000 0742 nop.i 0 } 0750 L$218: { .mii 01080A0805C0 0750 adds r23 = 192, in0 // r23 = 192, r32 // 062798 012000100640 0751 add ai = @ltoff($LITERAL$+328), gp // r25 = @ltoff($LITERAL$+328), r1 // 062796 012000100A80 0752 add out2 = @ltoff($LITERAL$+16), // r42 = @ltoff($LITERAL$+16), r1 // 062795 gp ;; } { .mii 0080817005C0 0760 ld4 r23 = [r23] // 062798 010800C20600 0761 adds r24 = 16, sp // r24 = 16, r12 // 062795 0000B1400BC0 0762 sxt4 out7 = r20 // r47 = r20 } { .mmi 0080C1900B00 0770 ld8 out4 = $LITERAL$ ;; // r44 = [r25] // 062796 0080C2A00A40 0771 ld8 out1 = $LITERAL$ // r41 = [r42] // 062795 0000B17005C0 0772 sxt4 r23 = r23 // 062798 } { .mii 012000012640 0780 mov ai = 9 // r25 = 9 // 062795 0000B1300B80 0781 sxt4 out6 = r19 ;; // r46 = r19 0000B2100B40 0782 sxt4 out5 = dlen // r45 = r33 } { .mii 012040000AC0 0790 mov out3 = 1024 // r43 = 1024 0120100F0A80 0791 mov out2 = 376 // r42 = 376 0000B1600A00 0792 sxt4 out0 = r22 ;; // r40 = r22 } { .mfb 008CC182E000 07A0 st8 [r24] = r23 000008000000 07A1 nop.f 0 00A000001000 07A2 br.call.sptk.many rp = WatchThis ;; // br0 = WatchThis } { .mii 01080A050880 07B0 adds in2 = 168, in0 // r34 = 168, r32 // 062799 010802090800 07B1 adds in0 = 72, in0 // r32 = 72, r32 012000004640 07B2 mov ai = 2 // r25 = 2 } { .mmi 010802700040 07C0 mov gp = r39 ;; // r1 = r39 // 062795 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 36 NetIoWrite 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 008082200880 07C1 ld4 in2 = [in2] // r34 = [r34] // 062799 0000B2100A40 07C2 sxt4 out1 = dlen // r41 = r33 } { .mmi 00B08A070900 07D0 ld4 in4 = [in0], -72 ;; // r36 = [r32], -72 000008000000 07D1 nop.m 0 0000B2200880 07D2 sxt4 in2 = in2 ;; // r34 = r34 } { .mfb 010002444A00 07E0 add out0 = in2, in4 // r40 = r34, r36 000008000000 07E1 nop.f 0 00A000001000 07E2 br.call.sptk.many rp = WatchDataDump ;; // br0 = WatchDataDump } { .mfi 010802700040 07F0 mov gp = r39 // r1 = r39 000008000000 07F1 nop.f 0 000008000000 07F2 nop.i 0 } 0800 L$215: // 062800 { .mmi 0108023F0900 0800 adds in4 = 120, in3 ;; // r36 = 120, r35 // 062802 0111624F8880 0801 and in2 = -4, in4 // r34 = -4, r36 000008000000 0802 nop.i 0 ;; } { .mmi 01C03A248180 0810 cmp.eq pr6, pr7 = in4, in2 ;; // pr6, pr7 = r36, r34 008082200206 0811 (pr6) ld4 r8 = [in2] // r8 = [r34] 009E08048847 0812 (pr7) dep in1 = in4, r0, 3, 2 ;; // r33 = r36, r0, 3, 2 } { .mmi 00A082208207 0820 (pr7) ld4 r8 = [in2], 4 ;; // r8 = [r34], 4 0080822000C7 0821 (pr7) ld4 r3 = [in2] // r3 = [r34] 00F200842207 0822 (pr7) shr.u r8 = r8, in1 // r8 = r8, r33 } { .mmi 01012A140847 0830 (pr7) sub in1 = 32, in1 ;; // r33 = 32, r33 000008000000 0831 nop.m 0 00F2421060C7 0832 (pr7) shl r3 = r3, in1 ;; // r3 = r3, r33 } { .mmi 010070806207 0840 (pr7) or r8 = r3, r8 ;; 000008000000 0841 nop.m 0 000090800207 0842 (pr7) zxt4 r8 = r8 ;; } { .mfb 01C400800240 0850 cmp4.eq pr9, pr0 = r0, r8 000008000000 0851 nop.f 0 008600032009 0852 (pr9) br.cond.dpnt.many L$221 ;; } { .mmi 010802098800 0860 adds in0 = 76, in0 ;; // r32 = 76, r32 // 062804 00B08A0F8280 0861 ld4 r10 = [in0], -4 // r10 = [r32], -4 000008000000 0862 nop.i 0 ;; } { .mmi 00B08A0C0240 0870 ld4 r9 = [in0], -32 ;; // r9 = [r32], -32 00B08A0D02C0 0871 ld4 r11 = [in0], -24 // r11 = [r32], -24 // 062805 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 37 NetIoWrite 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 010028914280 0872 sub dlen = r10, r9 ;; // r10 = r10, r9 // 062804 } { .mii 00B08A0E0440 0880 ld4 r17 = [in0], -16 // r17 = [r32], -16 // 062807 01A400A162C0 0881 cmp4.ltu pr11, pr0 = r11, dlen ;; // pr11, pr0 = r11, r10 // 062805 010800B0028B 0882 (pr11) mov dlen = r11 // r10 = r11 } { .mfb 01C461100000 0890 cmp4.eq pr0, pr12 = r0, r17 // 062807 000008000000 0891 nop.f 0 00860001C00C 0892 (pr12) br.cond.dpnt.many L$222 ;; } { .mii 01080A050480 08A0 adds r18 = 168, in0 // r18 = 168, r32 // 062809 0120001004C0 08A1 add r19 = @ltoffx(Watch), gp // r19 = @ltoffx(Watch), r1 // 062810 012000006640 08A2 mov ai = 3 ;; // r25 = 3 // 062809 } { .mmi 008081200480 08B0 ld4 r18 = [r18] 0080C13004C0 08B1 ld8.mov r19 = [r19], Watch // 062810 0000B0A00A40 08B2 sxt4 out1 = dlen ;; // r41 = r10 // 062809 } { .mii 010829338A80 08C0 adds out2 = 668, r19 // r42 = 668, r19 // 062810 0000B1200480 08C1 sxt4 r18 = r18 ;; // 062809 010000924A00 08C2 add out0 = r18, r9 // r40 = r18, r9 } { .mfb 000008000000 08D0 nop.m 0 000008000000 08D1 nop.f 0 00A000001000 08D2 br.call.sptk.many rp = WatchTrigger ;; // br0 = WatchTrigger } { .mib 01C4008001C0 08E0 cmp4.eq pr7, pr0 = r0, r8 010802700040 08E1 mov gp = r39 // r1 = r39 008600012007 08E2 (pr7) br.cond.dpnt.many L$222 ;; } { .mii 010802390900 08F0 adds in4 = 72, in3 // r36 = 72, r35 // 062813 012000002840 08F1 mov in1 = 1 // r33 = 1 // 062812 010802018880 08F2 adds in2 = 12, in0 ;; // r34 = 12, r32 } { .mii 0111624F80C0 0900 and r3 = -4, in4 // r3 = -4, r36 // 062813 010802018800 0901 adds in0 = 12, in0 ;; // r32 = 12, r32 // 062812 01C048348200 0902 cmp.eq pr8, pr9 = in4, r3 // pr8, pr9 = r36, r3 // 062813 } { .mmi 00BC8A043D00 0910 st4 [in0] = in1, -12 ;; // [r32] = r33, -12 // 062812 0080803002C8 0911 (pr8) ld4 r11 = [r3] // 062813 009E08048249 0912 (pr9) dep r9 = in4, r0, 3, 2 ;; // r9 = r36, r0, 3, 2 } { .mmi 00A0803082C9 0920 (pr9) ld4 r11 = [r3], 4 ;; 008080300289 0921 (pr9) ld4 r10 = [r3] 00F200B122C9 0922 (pr9) shr.u r11 = r11, r9 } Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 38 NetIoWrite 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 { .mmi 010128940249 0930 (pr9) sub r9 = 32, r9 ;; 000008000000 0931 nop.m 0 00F240914289 0932 (pr9) shl r10 = r10, r9 ;; } { .mmi 010070B142C9 0940 (pr9) or r11 = r10, r11 ;; 000008000000 0941 nop.m 0 000090B002C9 0942 (pr9) zxt4 r11 = r11 ;; } { .mfb 01C400B002C0 0950 cmp4.eq pr11, pr0 = r0, r11 000008000000 0951 nop.f 0 00860000400B 0952 (pr11) br.cond.dpnt.many L$222 ;; } { .mmi 010802020800 0960 adds in0 = 16, in0 ;; // r32 = 16, r32 00BC8A043C00 0961 st4 [in0] = in1, -16 // [r32] = r33, -16 000008000000 0962 nop.i 0 ;; } 0970 L$222: // 062815 { .mmi 010802018800 0970 adds in0 = 12, in0 ;; // r32 = 12, r32 // 062816 00B08A0E8480 0971 ld4 r18 = [in0], -12 // r18 = [r32], -12 000008000000 0972 nop.i 0 ;; } { .mfb 01C461200000 0980 cmp4.eq pr0, pr12 = r0, r18 000008000000 0981 nop.f 0 00860000600C 0982 (pr12) br.cond.dpnt.many L$226 ;; } { .mmi 010802020800 0990 adds in0 = 16, in0 ;; // r32 = 16, r32 00B08A0E04C0 0991 ld4 r19 = [in0], -16 // r19 = [r32], -16 000008000000 0992 nop.i 0 ;; } { .mfb 01C4013003C0 09A0 cmp4.eq pr15, pr0 = r0, r19 000008000000 09A1 nop.f 0 00860000800F 09A2 (pr15) br.cond.dpnt.many L$221 ;; } 09B0 L$226: { .mib 012000002640 09B0 mov ai = 1 // r25 = 1 // 062818 010802000A00 09B1 mov out0 = ioptr // r40 = r32 00A000001000 09B2 br.call.sptk.many rp = WatchSetTrigger ;; // br0 = WatchSetTrigger } { .mmi 010802018800 09C0 adds in0 = 12, in0 ;; // r32 = 12, r32 // 062819 008C82000000 09C1 st4 [in0] = r0 // [r32] = r0 010802000880 09C2 adds in2 = 0, in0 // r34 = 0, r32 } { .mii 0119FA0E8800 09D0 adds in0 = -12, in0 // r32 = -12, r32 010802700040 09D1 mov gp = r39 ;; // r1 = r39 // 062818 000008000000 09D2 nop.i 0 } Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 39 NetIoWrite 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 09E0 L$221: // 062821 { .mmi 010802098800 09E0 adds in0 = 76, in0 ;; // r32 = 76, r32 // 062823 00B08A0688C0 09E1 ld4 in3 = [in0], -76 // r35 = [r32], -76 000008000000 09E2 nop.i 0 ;; } { .mfb 01C432300000 09F0 cmp4.eq pr0, pr6 = r0, in3 // pr0, pr6 = r0, r35 000008000000 09F1 nop.f 0 008600008006 09F2 (pr6) br.cond.dpnt.many L$228 ;; } { .mii 012028048880 0A00 mov status = 676 // r34 = 676 // 062824 012028048900 0A01 mov in4 = 676 ;; // r36 = 676 0108020A0800 0A02 adds in0 = 80, in0 ;; // r32 = 80, r32 } { .mii 008C82048000 0A10 st4 [in0] = in4 // [r32] = r36 00A042200240 0A11 tbit.z pr9, pr8 = status, 0 // pr9, pr8 = r34, 0 // 062876 0119FA060800 0A12 adds in0 = -80, in0 ;; // r32 = -80, r32 // 062824 } { .bbb 00860005E009 0A20 (pr9) br.cond.dpnt.many L$240 // 062876 008000077000 0A21 br.sptk.many L$247 004000000000 0A22 nop.b 0 ;; } 0A30 L$228: // 062825 { .mii 01080A0800C0 0A30 adds r3 = 192, in0 // r3 = 192, r32 // 062826 01080A0F0840 0A31 adds in1 = 248, ioptr // r33 = 248, r32 // 062837 000008000000 0A32 nop.i 0 ;; } { .mmi 0080803000C0 0A40 ld4 r3 = [r3] ;; // 062826 000008000000 0A41 nop.m 0 0000B03000C0 0A42 sxt4 r3 = r3 ;; } { .mfb 01C440006000 0A50 cmp4.eq pr0, pr8 = r3, r0 000008000000 0A51 nop.f 0 008600036008 0A52 (pr8) br.cond.dpnt.many L$231 ;; } { .mmi 012000100900 0A60 add in4 = @ltoffx(EfnWait), gp ;; // r36 = @ltoffx(EfnWait), r1 // 062857 0080C2400900 0A61 ld8.mov in4 = [r36], EfnWait 000008000000 0A62 nop.i 0 ;; } 0A70 L$233: // 062851 { .mmi 010802090800 0A70 adds in0 = 72, in0 // r32 = 72, r32 008082400A00 0A71 ld4 out0 = [in4] // r40 = [r36] // 062857 000008000000 0A72 nop.i 0 ;; } { .mmi 00A082008200 0A80 ld4 r8 = [in0], 4 ;; // r8 = [r32], 4 // 062851 00B08A068240 0A81 ld4 r9 = [in0], -76 // r9 = [r32], -76 000008000000 0A82 nop.i 0 ;; Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 40 NetIoWrite 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 } { .mfb 01A458910000 0A90 cmp4.ltu pr0, pr11 = r8, r9 000008000000 0A91 nop.f 0 00860004C00B 0A92 (pr11) br.cond.dpnt.many L$230 ;; } { .mii 010802050800 0AA0 adds in0 = 40, in0 // r32 = 40, r32 // 062855 0000B2800A00 0AA1 sxt4 out0 = out0 ;; // r40 = r40 // 062857 01080A000440 0AA2 adds r17 = 128, in0 // r17 = 128, r32 // 062859 } { .mii 008082000BC0 0AB0 ld4 out7 = [in0] // r47 = [r32] // 062855 010028812240 0AB1 sub r9 = r9, r8 // 062854 010800C204C0 0AB2 adds r19 = 16, sp ;; // r19 = 16, r12 // 062857 } { .mii 008081100440 0AC0 ld4 r17 = [r17] // 062859 01A402F12300 0AC1 cmp4.ltu pr12, pr0 = r9, out7 // pr12, pr0 = r9, r47 // 062855 010800C30500 0AC2 adds r20 = 24, sp // r20 = 24, r12 // 062857 } { .mmi 010800C40540 0AD0 adds r21 = 32, sp ;; // r21 = 32, r12 010800C50580 0AD1 adds r22 = 40, sp // r22 = 40, r12 0000B1100440 0AD2 sxt4 r17 = r17 // 062859 } { .mii 010800900BCC 0AE0 (pr12) mov out7 = r9 // r47 = r9 // 062855 0119FA0B0800 0AE1 adds in0 = -40, in0 ;; // r32 = -40, r32 // 062857 012000018640 0AE2 mov ai = 12 // r25 = 12 } { .mmi 008CC1300000 0AF0 st8 [r19] = r0 008CC1400000 0AF1 st8 [r20] = r0 0000B2F00BC0 0AF2 sxt4 out7 = out7 ;; // r47 = r47 } { .mii 008CC1500000 0B00 st8 [r21] = r0 012000000B40 0B01 mov out5 = 0 // r45 = 0 012000000B00 0B02 mov out4 = 0 // r44 = 0 } { .mmi 010802100AC0 0B10 mov out3 = in1 ;; // r43 = r33 008042000A40 0B11 ld2 out1 = [in0] // r41 = [r32] 012000060A80 0B12 mov out2 = 48 // r42 = 48 } { .mmi 010000822B80 0B20 add out6 = r17, r8 ;; // r46 = r17, r8 // 062859 008CC1600000 0B21 st8 [r22] = r0 // 062857 000008000000 0B22 nop.i 0 } { .mfb 000008000000 0B30 nop.m 0 000008000000 0B31 nop.f 0 00A000001000 0B32 br.call.sptk.many rp = SYS$QIOW ;; // br0 = SYS$QIOW } { .mii Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 41 NetIoWrite 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 010800800880 0B40 mov status = r8 // r34 = r8 00A0308001C0 0B41 tbit.z pr7, pr6 = r8, 0 // 062863 010802700040 0B42 mov gp = r39 // r1 = r39 // 062857 } { .mfb 000008000000 0B50 nop.m 0 000008000000 0B51 nop.f 0 00860000C006 0B52 (pr6) br.cond.dpnt.many L$235 ;; // 062863 } { .mmi 0108020A0800 0B60 adds in0 = 80, in0 ;; // r32 = 80, r32 // 062864 008C82010000 0B61 st4 [in0] = r8 // [r32] = r8 000008000000 0B62 nop.i 0 ;; } { .mmi 00B00A0608C0 0B70 ld1 in3 = [in0], -80 ;; // r35 = [r32], -80 // 062868 000008000000 0B71 nop.m 0 00A0323001C0 0B72 tbit.z pr7, pr6 = in3, 0 // pr7, pr6 = r35, 0 } { .mfb 000008000000 0B80 nop.m 0 000008000000 0B81 nop.f 0 0095FFFDE006 0B82 (pr6) br.cond.dptk.many L$233 ;; } { .mib 000008000000 0B90 nop.m 0 00A040800240 0B91 tbit.z pr9, pr8 = r8, 0 // 062876 008600030009 0B92 (pr9) br.cond.dpnt.many L$240 ;; } { .mfb 000008000000 0BA0 nop.m 0 000008000000 0BA1 nop.f 0 008000047000 0BA2 br.sptk.many L$247 ;; } 0BB0 L$235: // 062865 { .mfb 010802000A00 0BB0 mov out0 = ioptr // r40 = r32 // 062866 000008000000 0BB1 nop.f 0 00A000001000 0BB2 br.call.sptk.many rp = NetIoWriteAst ;; // br0 = NetIoWriteAst } { .mmi 0108020A0800 0BC0 adds in0 = 80, in0 ;; // r32 = 80, r32 // 062868 00B00A0608C0 0BC1 ld1 in3 = [in0], -80 // r35 = [r32], -80 000008000000 0BC2 nop.i 0 ;; } { .mib 000008000000 0BD0 nop.m 0 00A0323001C0 0BD1 tbit.z pr7, pr6 = in3, 0 // pr7, pr6 = r35, 0 0095FFFD4006 0BD2 (pr6) br.cond.dptk.many L$233 ;; } { .mib 000008000000 0BE0 nop.m 0 00A042200240 0BE1 tbit.z pr9, pr8 = status, 0 // pr9, pr8 = r34, 0 // 062876 008600026009 0BE2 (pr9) br.cond.dpnt.many L$240 ;; } { .mfb 000008000000 0BF0 nop.m 0 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 42 NetIoWrite 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 000008000000 0BF1 nop.f 0 00800003D000 0BF2 br.sptk.many L$247 ;; } 0C00 L$231: // 062826 { .mii 010802090800 0C00 adds in0 = 72, in0 // r32 = 72, r32 // 062833 0120001002C0 0C01 add r11 = @ltoffx(EfnNoWait), gp ;; // r11 = @ltoffx(EfnNoWait), r1 // 062836 0108020C0200 0C02 adds r8 = 96, in0 // r8 = 96, r32 // 062839 } { .mmi 0080820000C0 0C10 ld4 r3 = [in0] // r3 = [r32] // 062833 0080C0B002C0 0C11 ld8.mov r11 = [r11], EfnNoWait // 062836 010800C20480 0C12 adds r18 = 16, sp ;; // r18 = 16, r12 } { .mmi 0119FA0C0800 0C20 adds in0 = -32, in0 // r32 = -32, r32 008080800200 0C21 ld4 r8 = [r8] // 062839 0100283468C0 0C22 sub in3 = in3, r3 ;; // r35 = r35, r3 // 062833 } { .mii 00B08A0B0BC0 0C30 ld4 out7 = [in0], -40 // r47 = [r32], -40 // 062834 0000B0800200 0C31 sxt4 r8 = r8 // 062839 010800C304C0 0C32 adds r19 = 24, sp // r19 = 24, r12 // 062836 } { .mmi 010800C40500 0C40 adds r20 = 32, sp ;; // r20 = 32, r12 01A402F46200 0C41 cmp4.ltu pr8, pr0 = in3, out7 // pr8, pr0 = r35, r47 // 062834 012000100B00 0C42 add out4 = // r44 = @ltoff(@fptr(NetIoWriteAst)), // 062836 @ltoff(@fptr(NetIoWriteAst)), // r1 gp } { .mii 008080B002C0 0C50 ld4 r11 = EfnNoWait // r11 = [r11] 010800C50540 0C51 adds r21 = 40, sp ;; // r21 = 40, r12 010802300BC8 0C52 (pr8) mov out7 = in3 // r47 = r35 // 062834 } { .mmi 0100003100C0 0C60 add r3 = r8, r3 // 062839 008CC1200000 0C61 st8 [r18] = r0 // 062836 012000018640 0C62 mov ai = 12 ;; // r25 = 12 } { .mmi 008CC1300000 0C70 st8 [r19] = r0 008CC1400000 0C71 st8 [r20] = r0 0000B2F00BC0 0C72 sxt4 out7 = out7 ;; // r47 = r47 } { .mmi 008042000A40 0C80 ld2 out1 = [in0] // r41 = [r32] 0080C2C00B00 0C81 ld8 out4 = NetIoWriteAst // r44 = [r44] 010800300B80 0C82 mov out6 = r3 ;; // r46 = r3 } { .mii 010802000B40 0C90 mov out5 = ioptr // r45 = r32 010802100AC0 0C91 mov out3 = in1 // r43 = r33 012000060A80 0C92 mov out2 = 48 // r42 = 48 } { .mmi Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 43 NetIoWrite 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 008CC1500000 0CA0 st8 [r21] = r0 ;; 000008000000 0CA1 nop.m 0 0000B0B00A00 0CA2 sxt4 out0 = r11 // r40 = r11 } { .mfb 000008000000 0CB0 nop.m 0 000008000000 0CB1 nop.f 0 00A000001000 0CB2 br.call.sptk.many rp = SYS$QIO ;; // br0 = SYS$QIO } { .mii 010800800880 0CC0 mov status = r8 // r34 = r8 00A0308001C0 0CC1 tbit.z pr7, pr6 = r8, 0 // 062843 010802700040 0CC2 mov gp = r39 // r1 = r39 // 062836 } { .mfb 000008000000 0CD0 nop.m 0 000008000000 0CD1 nop.f 0 008600004006 0CD2 (pr6) br.cond.dpnt.many L$230 ;; // 062843 } { .mmi 0108020A0800 0CE0 adds in0 = 80, in0 ;; // r32 = 80, r32 00BC8A010C00 0CE1 st4 [in0] = r8, -80 // [r32] = r8, -80 000008000000 0CE2 nop.i 0 ;; } 0CF0 L$230: // 062870 { .mib 000008000000 0CF0 nop.m 0 00A042200240 0CF1 tbit.z pr9, pr8 = status, 0 // pr9, pr8 = r34, 0 // 062876 008600004009 0CF2 (pr9) br.cond.dpnt.many L$240 ;; } { .mfb 000008000000 0D00 nop.m 0 000008000000 0D01 nop.f 0 00800001B000 0D02 br.sptk.many L$247 ;; } 0D10 L$240: { .mfb 01CC52238000 0D10 cmp4.eq pr0, pr10 = 28, status // pr0, pr10 = 28, r34 // 062879 000008000000 0D11 nop.f 0 00860000A00A 0D12 (pr10) br.cond.dpnt.many L$243 ;; } { .mib 012000002640 0D20 mov ai = 1 // r25 = 1 // 062882 012000000A00 0D21 mov out0 = 0 // r40 = 0 00A000001000 0D22 br.call.sptk.many rp = SYS$CANEXH ;; // br0 = SYS$CANEXH } { .mii 012000002640 0D30 mov ai = 1 // r25 = 1 // 062884 0122A0008A00 0D31 addl out0 = 10756, r0 // r40 = 10756, r0 010802700040 0D32 mov gp = r39 ;; // r1 = r39 // 062882 } { .mfb 000008000000 0D40 nop.m 0 000008000000 0D41 nop.f 0 00A000001000 0D42 br.call.sptk.many rp = SYS$EXIT ;; // br0 = SYS$EXIT // 062884 } { .mfi Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 44 NetIoWrite 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 010802700040 0D50 mov gp = r39 // r1 = r39 000008000000 0D51 nop.f 0 000008000000 0D52 nop.i 0 } 0D60 L$243: // 062885 { .mii 01080A0808C0 0D60 adds in3 = 192, in0 // r35 = 192, r32 // 062890 01080A0F0840 0D61 adds in1 = 248, in0 // r33 = 248, r32 // 062888 01080A0F4900 0D62 adds in4 = 250, in0 ;; // r36 = 250, r32 // 062889 } { .mmi 0080823008C0 0D70 ld4 in3 = [in3] ;; // r35 = [r35] // 062890 008C42144000 0D71 st2 [in1] = status // [r33] = r34 // 062888 01C4000461C0 0D72 cmp4.eq pr7, pr0 = in3, r0 // pr7, pr0 = r35, r0 // 062890 } { .mfb 008C42400000 0D80 st2 [in4] = r0 // [r36] = r0 // 062889 000008000000 0D81 nop.f 0 008600008007 0D82 (pr7) br.cond.dpnt.many L$246 ;; // 062890 } { .mii 012000100A00 0D90 add out0 = // r40 = @ltoff(@fptr(NetIoWriteAst)), // 062891 @ltoff(@fptr(NetIoWriteAst)), // r1 gp 012000004640 0D91 mov ai = 2 // r25 = 2 010802000A40 0D92 mov out1 = ioptr ;; // r41 = r32 } { .mfb 0080C2800A00 0DA0 ld8 out0 = NetIoWriteAst // r40 = [r40] 000008000000 0DA1 nop.f 0 00A000001000 0DA2 br.call.sptk.many rp = SysDclAst ;; // br0 = SysDclAst } { .mfb 010802700040 0DB0 mov gp = r39 // r1 = r39 000008000000 0DB1 nop.f 0 008000005000 0DB2 br.sptk.many L$247 ;; // 062892 } 0DC0 L$246: { .mfb 010802000A00 0DC0 mov out0 = ioptr // r40 = r32 // 062893 000008000000 0DC1 nop.f 0 00A000001000 0DC2 br.call.sptk.many rp = NetIoWriteAst ;; // br0 = NetIoWriteAst } 0DD0 L$247: { .mfi 010802200200 0DD0 mov r8 = status // r8 = r34 // 062895 000008000000 0DD1 nop.f 0 000008000000 0DD2 nop.i 0 ;; } 0DE0 L$267: { .mib 000008000000 0DE0 nop.m 0 0000B0800200 0DE1 sxt4 r8 = r8 004000000000 0DE2 nop.b 0 } 0DF0 L$204: { .mii Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 45 NetIoWrite 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 000008000000 0DF0 nop.m 0 00015404C000 0DF1 mov.i rspfs = r38 ;; 000E0014A000 0DF2 mov rp = r37 // br0 = r37 } { .mfb 010800C40300 0E00 adds sp = 32, sp // r12 = 32, r12 000008000000 0E01 nop.f 0 000108001100 0E02 br.ret.sptk.many rp ;; // br0 } .endp NetIoWrite Routine Size: 2752 bytes, Routine Base: $CODE$ + 0350 .proc NetIoWriteAst .align 32 .global NetIoWriteAst NetIoWriteAst: // 062903 { .mii 002C0061C8C0 0E10 alloc r35 = rspfs, 1, 5, 8, 0 012000020380 0E11 mov r14 = 16 010800C00080 0E12 mov r2 = sp // r2 = r12 } { .mmi 010800100940 0E20 mov r37 = gp ;; // r37 = r1 010028E183C0 0E21 sub r15 = sp, r14 // r15 = r12, r14 000188000880 0E22 mov r34 = rp // r34 = br0 } { .mii 0119F80FE440 0E30 adds r17 = -1, r0 0119F80FE2C0 0E31 adds r11 = -1, r0 000008000000 0E32 nop.i 0 ;; } { .mii 0080C0F00380 0E40 ld8 r14 = [r15] 010800F00300 0E41 mov sp = r15 // r12 = r15 010802080800 0E42 adds in0 = 64, in0 ;; // r32 = 64, r32 // 062921 } { .mii 00B08A080200 0E50 ld4 r8 = [in0], -64 // r8 = [r32], -64 000198000900 0E51 mov r36 = pr ;; // 062903 01C400800200 0E52 cmp4.eq pr8, pr0 = r0, r8 // 062921 } { .mfb 000008000000 0E60 nop.m 0 000008000000 0E61 nop.f 0 008600006008 0E62 (pr8) br.cond.dpnt.many L$160 ;; } { .mii 01080A0F00C0 0E70 adds r3 = 248, in0 // r3 = 248, r32 // 062924 01080A0F4240 0E71 adds r9 = 250, in0 // r9 = 250, r32 // 062925 000008000000 0E72 nop.i 0 ;; } { .mmi 008C40310000 0E80 st2 [r3] = r8 // 062924 008C40900000 0E81 st2 [r9] = r0 // 062925 000008000000 0E82 nop.i 0 ;; } Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 46 NetIoWriteAst 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 0E90 L$160: // 062926 { .mii 01080A0F00C0 0E90 adds r3 = 248, in0 // r3 = 248, r32 // 062928 01080A0F0200 0E91 adds r8 = 248, in0 // r8 = 248, r32 // 062930 000008000000 0E92 nop.i 0 ;; } { .mmi 0080403000C0 0EA0 ld2 r3 = [r3] // 062928 008040800840 0EA1 ld2 r33 = [r8] // 062930 000008000000 0EA2 nop.i 0 ;; } { .mii 0108020A0800 0EB0 adds in0 = 80, in0 // r32 = 80, r32 // 062928 01C832102000 0EB1 cmp.eq pr0, pr6 = 1, r33 // 062930 000008000000 0EB2 nop.i 0 ;; } { .mfi 00BC8A006C00 0EC0 st4 [in0] = r3, -80 // [r32] = r3, -80 // 062928 000008000000 0EC1 nop.f 0 000008000000 0EC2 nop.i 0 ;; } { .mfb 000008000000 0ED0 nop.m 0 000008000000 0ED1 nop.f 0 00860001E006 0ED2 (pr6) br.cond.dpnt.many L$163 ;; // 062930 } { .mmi 010802090800 0EE0 adds in0 = 72, in0 ;; // r32 = 72, r32 // 062931 00B08A070200 0EE1 ld4 r8 = [in0], -72 // r8 = [r32], -72 000008000000 0EE2 nop.i 0 ;; } { .mfb 01C440800000 0EF0 cmp4.eq pr0, pr8 = r0, r8 000008000000 0EF1 nop.f 0 00860001A008 0EF2 (pr8) br.cond.dpnt.many L$163 ;; // 062930 } { .mmi 010802098800 0F00 adds in0 = 76, in0 ;; // r32 = 76, r32 // 062931 00B08A0680C0 0F01 ld4 r3 = [in0], -76 // r3 = [r32], -76 000008000000 0F02 nop.i 0 ;; } { .mfb 01C430300000 0F10 cmp4.eq pr0, pr6 = r0, r3 000008000000 0F11 nop.f 0 008600016006 0F12 (pr6) br.cond.dpnt.many L$163 ;; // 062930 } { .mmi 01080A080240 0F20 adds r9 = 192, in0 ;; // r9 = 192, r32 // 062934 008080900240 0F21 ld4 AstFunction = [r9] // r9 = [r9] 000008000000 0F22 nop.i 0 ;; } { .mib 01C400012240 0F30 cmp4.eq pr9, pr0 = AstFunction, r0 // pr9, pr0 = r9, r0 0000B0900240 0F31 sxt4 AstFunction = AstFunction // r9 = r9 008600010009 0F32 (pr9) br.cond.dpnt.many L$168 ;; } { .mii Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 47 NetIoWriteAst 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 01080A088200 0F40 adds r8 = 196, in0 // r8 = 196, r32 // 062936 01080A0880C0 0F41 adds r3 = 196, in0 // r3 = 196, r32 // 062937 01080A080800 0F42 adds in0 = 192, in0 // r32 = 192, r32 } { .mmi 012000002640 0F50 mov ai = 1 ;; // r25 = 1 // 062938 008080800200 0F51 ld4 r8 = [r8] // 062936 000008000000 0F52 nop.i 0 ;; } { .mmi 008C80300000 0F60 st4 [r3] = r0 // 062937 008C82000000 0F61 st4 [in0] = r0 // [r32] = r0 010800900240 0F62 adds r9 = 0, r9 ;; // 062938 } { .mii 00A0C09100C0 0F70 ld8 r3 = [r9], 8 0000B0800980 0F71 sxt4 out0 = r8 ;; // r38 = r8 // 062936 000E00106180 0F72 mov br6 = r3 // 062938 } { .mfi 0080C0900040 0F80 ld8 gp = [r9] // r1 = [r9] 000008000000 0F81 nop.f 0 000008000000 0F82 nop.i 0 ;; } { .mfb 000008000000 0F90 nop.m 0 000008000000 0F91 nop.f 0 00210000C000 0F92 br.call.sptk.few rp = br6 ;; // br0 = br6 } { .mfi 010802500040 0FA0 mov gp = r37 // r1 = r37 000008000000 0FA1 nop.f 0 000008000000 0FA2 nop.i 0 } 0FB0 L$168: // 062939 { .mfb 000008000000 0FB0 nop.m 0 000008000000 0FB1 nop.f 0 0080000D7000 0FB2 br.sptk.many L$196 ;; // 062940 } 0FC0 L$163: // 062941 { .mmi 01C4300401C0 0FC0 cmp4.eq pr7, pr6 = ioptr, r0 ;; // pr7, pr6 = r32, r0 // 062943 01C000001207 0FC1 (pr7) cmp.eq.unc pr8, pr0 = r0, r0 01C000001086 0FC2 (pr6) cmp.eq.unc pr2, pr0 = r0, r0 } { .bbb 008600002002 0FD0 (pr2) br.cond.dpnt.many L$170 004000000000 0FD1 nop.b 0 00860005E008 0FD2 (pr8) br.cond.dpnt.many L$171 ;; } 0FE0 L$170: { .mii 010802088800 0FE0 adds in0 = 68, in0 // r32 = 68, r32 012060072200 0FE1 mov r8 = 1593 ;; // 062946 01C000842280 0FE2 cmp.eq pr10, pr0 = r33, r8 } Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 48 NetIoWriteAst 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 { .mmi 00B08A0780C0 0FF0 ld4 r3 = [in0], -68 ;; // r3 = [r32], -68 // 062943 01C458300300 0FF1 cmp4.eq pr12, pr11 = r0, r3 000008000000 0FF2 nop.i 0 ;; } { .mfb 01C20000030A 1000 (pr10) cmp.eq.or.andcm pr12, pr0 = r0, r0 // 062946 000008000000 1001 nop.f 0 00860005800C 1002 (pr12) br.cond.dpnt.many L$171 ;; } { .mii 012000100840 1010 add r33 = @ltoffx(Watch), gp // r33 = @ltoffx(Watch), r1 // 062948 0120400004C0 1011 mov r19 = 1024 000008000000 1012 nop.i 0 ;; } { .mmi 0080C2100840 1020 ld8.mov r33 = [r33], Watch ;; 0108021F8240 1021 adds r9 = 124, r33 000008000000 1022 nop.i 0 ;; } { .mmi 0111609F0280 1030 and r10 = -8, r9 ;; 01C070A12000 1031 cmp.eq pr0, pr14 = r9, r10 000008000000 1032 nop.i 0 } { .mmi 00A0C0A10480 1040 ld8 r18 = [r10], 8 ;; 000008000000 1041 nop.m 0 009E100122CE 1042 (pr14) dep r11 = r9, r0, 3, 3 ;; } { .mmi 0080C0A0044E 1050 (pr14) ld8 r17 = [r10] ;; 000008000000 1051 nop.m 0 00F20121648E 1052 (pr14) shr.u r18 = r18, r11 } { .mmi 010128B802CE 1060 (pr14) sub r11 = 64, r11 ;; 000008000000 1061 nop.m 0 00F240B2244E 1062 (pr14) shl r17 = r17, r11 ;; } { .mmi 01007122248E 1070 (pr14) or r18 = r17, r18 ;; 010061324480 1071 and r18 = r18, r19 000008000000 1072 nop.i 0 ;; } { .mfb 01C001200180 1080 cmp.eq pr6, pr0 = r0, r18 000008000000 1081 nop.f 0 008600020006 1082 (pr6) br.cond.dpnt.many L$174 ;; } { .mmi 01C0000011C0 1090 cmp.eq.unc pr7, pr0 = r0, r0 ;; // 062949 01A0000001C2 1091 (pr2) cmp.ltu pr7, pr0 = r0, r0 000008000000 1092 nop.i 0 } { .mfb 000008000000 10A0 nop.m 0 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 49 NetIoWriteAst 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 000008000000 10A1 nop.f 0 008600004007 10A2 (pr7) br.cond.dpnt.many L$177 ;; } { .mfb 010800300500 10B0 mov r20 = r3 000008000000 10B1 nop.f 0 008000005000 10B2 br.sptk.many L$176 ;; } 10C0 L$177: { .mfi 010800000500 10C0 mov r20 = r0 000008000000 10C1 nop.f 0 000008000000 10C2 nop.i 0 } 10D0 L$176: { .mii 01080A080680 10D0 adds r26 = 192, in0 // r26 = 192, r32 // 062954 01080A0F4540 10D1 adds r21 = 250, in0 // r21 = 250, r32 // 062953 010802090800 10D2 adds in0 = 72, in0 ;; // r32 = 72, r32 } { .mmi 00A082008580 10E0 ld4 r22 = [in0], 4 // r22 = [r32], 4 008081A00680 10E1 ld4 r26 = [r26] // 062954 012000100A00 10E2 add out2 = @ltoff($LITERAL$+16), // r40 = @ltoff($LITERAL$+16), r1 // 062949 gp ;; } { .mmi 008082000640 10F0 ld4 ai = [in0] // r25 = [r32] // 062954 008041500540 10F1 ld2 r21 = [r21] // 062953 010800C206C0 10F2 adds r27 = 16, sp ;; // r27 = 16, r12 // 062949 } { .mii 012000100740 1100 add r29 = @ltoff($LITERAL$+264), // r29 = @ltoff($LITERAL$+264), r1 // 062950 gp 0000B1900640 1101 sxt4 ai = ai // r25 = r25 // 062949 010800C30700 1102 adds r28 = 24, sp // r28 = 24, r12 } { .mmi 01000152C540 1110 add r21 = r22, r21 ;; // 062953 01080A05C600 1111 adds r24 = 174, in0 // r24 = 174, r32 // 062952 0000B1A00680 1112 sxt4 r26 = r26 // 062954 } { .mii 01080A0585C0 1120 adds r23 = 172, in0 // r23 = 172, r32 // 062951 0119FA068800 1121 adds in0 = -76, in0 ;; // r32 = -76, r32 0000B1500B40 1122 sxt4 out7 = r21 // r45 = r21 // 062949 } { .mmi 0080C28009C0 1130 ld8 out1 = $LITERAL$ // r39 = [r40] 0080C1D00A80 1131 ld8 out4 = $LITERAL$ // r42 = [r29] // 062950 012040000A40 1132 mov out3 = 1024 ;; // r41 = 1024 // 062949 } { .mii 008CC1B32000 1140 st8 [r27] = ai // [r27] = r25 012000014640 1141 mov ai = 10 // r25 = 10 012020024A00 1142 mov out2 = 530 // r40 = 530 } Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 50 NetIoWriteAst 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 { .mmi 008CC1C34000 1150 st8 [r28] = r26 ;; 008041800B00 1151 ld2 out6 = [r24] // r44 = [r24] // 062952 0000B1400980 1152 sxt4 out0 = r20 // r38 = r20 // 062949 } { .mfb 008041700AC0 1160 ld2 out5 = [r23] // r43 = [r23] // 062951 000008000000 1161 nop.f 0 00A000001000 1162 br.call.sptk.many rp = WatchThis ;; // br0 = WatchThis // 062949 } { .mfi 010802500040 1170 mov gp = r37 // r1 = r37 000008000000 1171 nop.f 0 000008000000 1172 nop.i 0 } 1180 L$174: // 062954 { .mmi 0108021F80C0 1180 adds r3 = 124, r33 ;; // 062955 0111603F0200 1181 and r8 = -8, r3 000008000000 1182 nop.i 0 ;; } { .mmi 01C038806000 1190 cmp.eq pr0, pr7 = r3, r8 00A0C08102C0 1191 ld8 r11 = [r8], 8 000008000000 1192 nop.i 0 ;; } { .mib 000008000000 11A0 nop.m 0 009E10006247 11A1 (pr7) dep r9 = r3, r0, 3, 3 004000000000 11A2 nop.b 0 ;; } { .mmi 0080C0800287 11B0 (pr7) ld8 r10 = [r8] ;; 000008000000 11B1 nop.m 0 00F200B122C7 11B2 (pr7) shr.u r11 = r11, r9 } { .mmi 010128980247 11C0 (pr7) sub r9 = 64, r9 ;; 000008000000 11C1 nop.m 0 00F240914287 11C2 (pr7) shl r10 = r10, r9 ;; } { .mmi 010070B142C7 11D0 (pr7) or r11 = r10, r11 ;; 010160B202C0 11D1 and r11 = 16, r11 000008000000 11D2 nop.i 0 ;; } { .mfb 01C040B00240 11E0 cmp.eq pr9, pr8 = r0, r11 000008000000 11E1 nop.f 0 00860001C009 11E2 (pr9) br.cond.dpnt.many L$171 ;; } { .mmi 01080A0F0440 11F0 adds r17 = 248, in0 ;; // r17 = 248, r32 // 062956 008041100440 11F1 ld2 r17 = [r17] 000008000000 11F2 nop.i 0 ;; } { .mib Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 51 NetIoWriteAst 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 000008000000 1200 nop.m 0 00A0511002C0 1201 tbit.z pr11, pr10 = r17, 0 00860001800A 1202 (pr10) br.cond.dpnt.many L$171 ;; } { .mmi 01C000001300 1210 cmp.eq.unc pr12, pr0 = r0, r0 ;; // 062957 01A000000302 1211 (pr2) cmp.ltu pr12, pr0 = r0, r0 000008000000 1212 nop.i 0 } { .mfb 000008000000 1220 nop.m 0 000008000000 1221 nop.f 0 00860000600C 1222 (pr12) br.cond.dpnt.many L$182 ;; } { .mmi 010802088800 1230 adds in0 = 68, in0 ;; // r32 = 68, r32 00B08A0784C0 1231 ld4 r19 = [in0], -68 // r19 = [r32], -68 000008000000 1232 nop.i 0 ;; } { .mfb 000008000000 1240 nop.m 0 000008000000 1241 nop.f 0 008000005000 1242 br.sptk.many L$181 ;; } 1250 L$182: { .mfi 0108000004C0 1250 mov r19 = r0 000008000000 1251 nop.f 0 000008000000 1252 nop.i 0 } 1260 L$181: { .mii 01080A080B00 1260 adds out6 = 192, in0 // r44 = 192, r32 012000100A00 1261 add out2 = @ltoff($LITERAL$+16), // r40 = @ltoff($LITERAL$+16), r1 gp 012000100540 1262 add r21 = @ltoff($LITERAL$+216), // r21 = @ltoff($LITERAL$+216), r1 // 062958 gp ;; } { .mii 008082C00B00 1270 ld4 out6 = [out6] // r44 = [r44] // 062957 01080A0F0500 1271 adds r20 = 248, in0 // r20 = 248, r32 // 062959 01200000E640 1272 mov ai = 7 // r25 = 7 // 062957 } { .mmi 0080C28009C0 1280 ld8 out1 = $LITERAL$ ;; // r39 = [r40] 0080C1500A80 1281 ld8 out4 = $LITERAL$ // r42 = [r21] // 062958 0000B2C00B00 1282 sxt4 out6 = out6 // r44 = r44 // 062957 } { .mii 008041400AC0 1290 ld2 out5 = [r20] // r43 = [r20] // 062959 012000020A40 1291 mov out3 = 16 ;; // r41 = 16 // 062957 012020034A00 1292 mov out2 = 538 // r40 = 538 } { .mib 000008000000 12A0 nop.m 0 0000B1300980 12A1 sxt4 out0 = r19 // r38 = r19 00A000001000 12A2 br.call.sptk.many rp = WatchThis ;; // br0 = WatchThis Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 52 NetIoWriteAst 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 } { .mfi 010802500040 12B0 mov gp = r37 // r1 = r37 000008000000 12B1 nop.f 0 000008000000 12B2 nop.i 0 } 12C0 L$171: // 062961 { .mmi 01080A0F0840 12C0 adds r33 = 248, in0 ;; // r33 = 248, r32 // 062964 008042100840 12C1 ld2 r33 = [r33] 000008000000 12C2 nop.i 0 ;; } { .mib 000008000000 12D0 nop.m 0 00A012100180 12D1 tbit.z pr6, pr2 = r33, 0 008600026006 12D2 (pr6) br.cond.dpnt.many L$184 ;; } { .mii 01080A0000C0 12E0 adds r3 = 128, in0 // r3 = 128, r32 // 062966 01080A010280 12E1 adds r10 = 136, in0 // r10 = 136, r32 // 062967 01080A0202C0 12E2 adds r11 = 144, in0 // r11 = 144, r32 // 062968 } { .mmi 01080A0F4200 12F0 adds r8 = 250, in0 ;; // r8 = 250, r32 01080A030440 12F1 adds r17 = 152, in0 // r17 = 152, r32 // 062969 01080A0804C0 12F2 adds r19 = 192, in0 // r19 = 192, r32 // 062971 } { .mii 01080A0F4240 1300 adds r9 = 250, in0 // r9 = 250, r32 // 062970 01080A000500 1301 adds r20 = 128, in0 ;; // r20 = 128, r32 // 062966 01080A010540 1302 adds r21 = 136, in0 // r21 = 136, r32 // 062967 } { .mmi 0080C03000C0 1310 ld8 r3 = [r3] // 062966 008040800200 1311 ld2 r8 = [r8] // 062968 01080A020580 1312 adds r22 = 144, in0 ;; // r22 = 144, r32 } { .mmi 0080C0A00280 1320 ld8 r10 = [r10] // 062967 0080C0B002C0 1321 ld8 r11 = [r11] // 062968 0108003020C0 1322 adds r3 = 1, r3 ;; // 062966 } { .mmi 0080C1100440 1330 ld8 r17 = [r17] // 062969 0080813004C0 1331 ld4 r19 = [r19] // 062971 010802090800 1332 adds in0 = 72, in0 ;; // r32 = 72, r32 // 062970 } { .mmi 008082000480 1340 ld4 r18 = [in0] // r18 = [r32] 008040900240 1341 ld2 r9 = [r9] 0100008162C0 1342 add r11 = r11, r8 ;; // 062968 } { .mii 0108020A05C0 1350 adds r23 = 80, in0 // r23 = 80, r32 // 062969 010000822200 1351 add r8 = r17, r8 010800A02280 1352 adds r10 = 1, r10 // 062967 } Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 53 NetIoWriteAst 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 { .mmi 010000924240 1360 add r9 = r18, r9 ;; // 062970 008CC1406000 1361 st8 [r20] = r3 // 062966 0000B13004C0 1362 sxt4 r19 = r19 // 062971 } { .mmi 008CC1514000 1370 st8 [r21] = r10 ;; // 062967 008CC1616000 1371 st8 [r22] = r11 // 062968 01C400026200 1372 cmp4.eq pr8, pr0 = r19, r0 // 062971 } { .mmi 008CC1710000 1380 st8 [r23] = r8 ;; // 062969 00BC8A012E00 1381 st4 [in0] = r9, -72 // [r32] = r9, -72 // 062970 000008000000 1382 nop.i 0 ;; } { .mfb 000008000000 1390 nop.m 0 000008000000 1391 nop.f 0 008600048008 1392 (pr8) br.cond.dpnt.many L$186 ;; // 062971 } { .mmi 010802098800 13A0 adds in0 = 76, in0 ;; // r32 = 76, r32 // 062973 00B08A068640 13A1 ld4 ai = [in0], -76 // r25 = [r32], -76 000008000000 13A2 nop.i 0 ;; } { .mfb 01A451912000 13B0 cmp4.ltu pr0, pr10 = r9, ai // pr0, pr10 = r9, r25 000008000000 13B1 nop.f 0 00860004400A 13B2 (pr10) br.cond.dpnt.many L$186 ;; } { .mii 01200000A640 13C0 mov ai = 5 // r25 = 5 // 062976 012000000A80 13C1 mov out4 = 0 // r42 = 0 010800000A40 13C2 mov out3 = r0 // r41 = r0 } { .mmi 010800000A00 13D0 mov out2 = r0 ;; // r40 = r0 0108000009C0 13D1 mov out1 = r0 // r39 = r0 010802000980 13D2 mov out0 = ioptr // r38 = r32 } { .mfb 000008000000 13E0 nop.m 0 000008000000 13E1 nop.f 0 00A000001000 13E2 br.call.sptk.many rp = NetIoWrite ;; // br0 = NetIoWrite } { .mfb 000008000000 13F0 nop.m 0 000008000000 13F1 nop.f 0 00800004F000 13F2 br.sptk.many L$196 ;; // 062977 } 1400 L$184: // 062981 { .mmi 01C812158180 1400 cmp.eq pr6, pr2 = 44, r33 ;; // 062984 01C000001206 1401 (pr6) cmp.eq.unc pr8, pr0 = r0, r0 01C0000011C2 1402 (pr2) cmp.eq.unc pr7, pr0 = r0, r0 } { .bbb Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 54 NetIoWriteAst 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 008600002007 1410 (pr7) br.cond.dpnt.many L$188 004000000000 1411 nop.b 0 008600006008 1412 (pr8) br.cond.dpnt.many L$189 ;; } 1420 L$188: { .mmi 0108020A8800 1420 adds in0 = 84, in0 ;; // r32 = 84, r32 // 062985 0080820000C0 1421 ld4 r3 = [in0] // r3 = [r32] 000008000000 1422 nop.i 0 ;; } { .mmi 0108003020C0 1430 adds r3 = 1, r3 ;; 00BC8A006B00 1431 st4 [in0] = r3, -84 // [r32] = r3, -84 000008000000 1432 nop.i 0 ;; } 1440 L$189: { .mmi 0108020B0800 1440 adds in0 = 88, in0 ;; // r32 = 88, r32 // 062987 00B08A050240 1441 ld4 r9 = [in0], -88 // r9 = [r32], -88 000008000000 1442 nop.i 0 ;; } { .mfb 01C448900000 1450 cmp4.eq pr0, pr9 = r0, r9 000008000000 1451 nop.f 0 008600006009 1452 (pr9) br.cond.dpnt.many L$190 ;; } { .mmi 01080A0F0280 1460 adds r10 = 248, in0 ;; // r10 = 248, r32 // 062988 008040A00280 1461 ld2 r10 = [r10] 000008000000 1462 nop.i 0 ;; } { .mmi 0108020B0800 1470 adds in0 = 88, in0 ;; // r32 = 88, r32 00BC8A014A00 1471 st4 [in0] = r10, -88 // [r32] = r10, -88 000008000000 1472 nop.i 0 ;; } 1480 L$190: { .mii 012208028580 1480 addl r22 = 8340, r0 // 062996 012020058540 1481 mov r21 = 556 // 062995 0122080D8500 1482 addl r20 = 8428, r0 // 062994 } { .mmi 0120100784C0 1490 mov r19 = 316 ;; // 062993 0122080B8480 1491 addl r18 = 8412, r0 // 062992 012080060440 1492 mov r17 = 2096 // 062991 } { .mii 01C06A1000C0 14A0 cmp.eq pr3, pr13 = r0, r33 // 062989 01C001642180 14A1 cmp.eq pr6, pr0 = r33, r22 ;; // 062996 01C049542280 14A2 cmp.eq pr10, pr9 = r33, r21 // 062995 } { .mii 01C0014421C0 14B0 cmp.eq pr7, pr0 = r33, r20 // 062994 01C079342080 14B1 cmp.eq pr2, pr15 = r33, r19 // 062993 01C001242380 14B2 cmp.eq pr14, pr0 = r33, r18 ;; // 062992 } Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 55 NetIoWriteAst 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 { .mii 01C059142300 14C0 cmp.eq pr12, pr11 = r33, r17 // 062991 01C2680000C8 14C1 (pr8) cmp.eq.or.andcm pr3, pr13 = r0, r0 // 062990 01C200000286 14C2 (pr6) cmp.eq.or.andcm pr10, pr0 = r0, r0 // 062996 } { .mmi 01C278000087 14D0 (pr7) cmp.eq.or.andcm pr2, pr15 = r0, r0 ;; // 062994 01C20000030E 14D1 (pr14) cmp.eq.or.andcm pr12, pr0 = r0, r0 // 062992 0122180485C0 14D2 addl r23 = 8612, r0 // 062997 } { .mmi 01C20000008A 14E0 (pr10) cmp.eq.or.andcm pr2, pr0 = r0, r0 ;; // 062996 01C2680000CC 14E1 (pr12) cmp.eq.or.andcm pr3, pr13 = r0, r0 // 062992 01C001742380 14E2 cmp.eq pr14, pr0 = r33, r23 ;; // 062997 } { .mmi 01C2680000C2 14F0 (pr2) cmp.eq.or.andcm pr3, pr13 = r0, r0 ;; // 062996 01C2000000CE 14F1 (pr14) cmp.eq.or.andcm pr3, pr0 = r0, r0 // 062997 000008000000 14F2 nop.i 0 } { .mfb 000008000000 1500 nop.m 0 000008000000 1501 nop.f 0 00860001A003 1502 (pr3) br.cond.dpnt.many L$186 ;; // 062989 } { .mii 01080A068600 1510 adds r24 = 180, in0 // r24 = 180, r32 // 063001 012000100640 1511 add ai = @ltoff($LITERAL$+56), gp // r25 = @ltoff($LITERAL$+56), r1 // 062999 000008000000 1512 nop.i 0 ;; } { .mmi 008081800600 1520 ld4 rqptr = [r24] // r24 = [r24] // 063001 0080C1900640 1521 ld8 ai = $LITERAL$ // r25 = [r25] // 062999 000008000000 1522 nop.i 0 ;; } { .mib 01C400030180 1530 cmp4.eq pr6, pr0 = rqptr, r0 // pr6, pr0 = r24, r0 // 063001 0000B1800600 1531 sxt4 rqptr = rqptr // r24 = r24 00860000A006 1532 (pr6) br.cond.dpnt.many L$194 ;; } { .mii 0108B1850600 1540 adds r24 = 2856, r24 // 063002 012000100680 1541 add r26 = @ltoff($LITERAL$+56), gp // r26 = @ltoff($LITERAL$+56), r1 // 062999 000008000000 1542 nop.i 0 ;; } { .mmi 008081800600 1550 ld4 r24 = [r24] // 063002 0080C1A00680 1551 ld8 r26 = $LITERAL$ // r26 = [r26] // 062999 000008000000 1552 nop.i 0 ;; } { .mii 01C400030240 1560 cmp4.eq pr9, pr0 = r24, r0 // 063002 0000B18006C0 1561 sxt4 r27 = r24 ;; 010801A006C9 1562 (pr9) mov r27 = r26 ;; // 063003 } { .mfi 010801B00640 1570 mov sptr = r27 // r25 = r27 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 56 NetIoWriteAst 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 000008000000 1571 nop.f 0 000008000000 1572 nop.i 0 } 1580 L$194: { .mii 012000100A80 1580 add out4 = @ltoff($LITERAL$+16), // r42 = @ltoff($LITERAL$+16), r1 // 063004 gp 012000100740 1581 add r29 = @ltoff($LITERAL$+48), gp // r29 = @ltoff($LITERAL$+48), r1 01080A0F0700 1582 adds r28 = 248, in0 ;; // r28 = 248, r32 } { .mii 0080C2A00A40 1590 ld8 out3 = $LITERAL$ // r41 = [r42] 010801900AC0 1591 mov out5 = sptr // r43 = r25 01200000C640 1592 mov ai = 6 // r25 = 6 } { .mmi 0080C1D00A00 15A0 ld8 out2 = $LITERAL$ ;; // r40 = [r29] 008041C009C0 15A1 ld2 out1 = [r28] // r39 = [r28] 012020092A80 15A2 mov out4 = 585 // r42 = 585 } { .mfb 010800000980 15B0 mov out0 = r0 // r38 = r0 000008000000 15B1 nop.f 0 00A000001000 15B2 br.call.sptk.many rp = ErrorNoticed ;; // br0 = ErrorNoticed } { .mfi 010802500040 15C0 mov gp = r37 // r1 = r37 000008000000 15C1 nop.f 0 000008000000 15C2 nop.i 0 } 15D0 L$186: // 063006 { .mmi 01080A080840 15D0 adds r33 = 192, in0 ;; // r33 = 192, r32 // 063008 008082100840 15D1 ld4 AstFunction = [r33] // r33 = [r33] 000008000000 15D2 nop.i 0 ;; } { .mib 01C4000420C0 15E0 cmp4.eq pr3, pr0 = AstFunction, r0 // pr3, pr0 = r33, r0 0000B2100840 15E1 sxt4 AstFunction = AstFunction // r33 = r33 008600010003 15E2 (pr3) br.cond.dpnt.many L$196 ;; } { .mii 01080A0880C0 15F0 adds r3 = 196, in0 // r3 = 196, r32 // 063010 01080A088200 15F1 adds r8 = 196, in0 // r8 = 196, r32 // 063011 01080A080800 15F2 adds in0 = 192, in0 // r32 = 192, r32 } { .mmi 012000002640 1600 mov ai = 1 ;; // r25 = 1 // 063012 0080803000C0 1601 ld4 r3 = [r3] // 063010 000008000000 1602 nop.i 0 ;; } { .mmi 008C80800000 1610 st4 [r8] = r0 // 063011 008C82000000 1611 st4 [in0] = r0 // [r32] = r0 0000B03000C0 1612 sxt4 r3 = r3 ;; // 063010 } { .mii Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 57 NetIoWriteAst 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 0080C2100240 1620 ld8 r9 = [r33] // 063012 010802100840 1621 adds r33 = 0, r33 ;; 010802110840 1622 adds r33 = 8, r33 } { .mmi 010800300980 1630 mov out0 = r3 ;; // r38 = r3 0080C2100040 1631 ld8 gp = [r33] // r1 = [r33] 000E00112180 1632 mov br6 = r9 ;; } { .mfb 000008000000 1640 nop.m 0 000008000000 1641 nop.f 0 00210000C000 1642 br.call.sptk.few rp = br6 ;; // br0 = br6 } { .mfi 010802500040 1650 mov gp = r37 // r1 = r37 000008000000 1651 nop.f 0 000008000000 1652 nop.i 0 } 1660 L$196: // 063014 { .mii 000008000000 1660 nop.m 0 0016000487C0 1661 mov pr = r36, -65474 ;; 000154046000 1662 mov.i rspfs = r35 ;; } { .mii 000008000000 1670 nop.m 0 000E00144000 1671 mov rp = r34 // br0 = r34 010800C20300 1672 adds sp = 16, sp // r12 = 16, r12 } { .mfb 000008000000 1680 nop.m 0 000008000000 1681 nop.f 0 000108001100 1682 br.ret.sptk.many rp ;; // br0 } .endp NetIoWriteAst Routine Size: 2176 bytes, Routine Base: $CODE$ + 0E10 .proc NetIoWriteStatus .align 32 .global NetIoWriteStatus NetIoWriteStatus: // 063023 { .mii 002C00B20A40 1690 alloc r41 = rspfs, 5, 6, 5, 0 012010000380 1691 mov r14 = 256 01080A080200 1692 adds r8 = 192, in0 // r8 = 192, r32 // 063043 } { .mmi 010800C00080 16A0 mov r2 = sp ;; // r2 = r12 // 063023 010028E183C0 16A1 sub r15 = sp, r14 // r15 = r12, r14 000188000A00 16A2 mov r40 = rp ;; // r40 = br0 } { .mii 0080C0F00380 16B0 ld8 r14 = [r15] 010800F00300 16B1 mov sp = r15 // r12 = r15 010800100A80 16B2 mov r42 = gp // r42 = r1 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 58 NetIoWriteStatus 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 } { .mmi 008080800BC0 16C0 ld4 out4 = [r8] ;; // r47 = [r8] // 063043 01C40005E200 16C1 cmp4.eq pr8, pr0 = out4, r0 // pr8, pr0 = r47, r0 0000B2F00BC0 16C2 sxt4 out4 = out4 // r47 = r47 } { .mfb 000008000000 16D0 nop.m 0 000008000000 16D1 nop.f 0 008600010008 16D2 (pr8) br.cond.dpnt.many L$252 ;; } { .mii 012000100280 16E0 add r10 = @ltoff($LITERAL$+192), // r10 = @ltoff($LITERAL$+192), r1 // 063046 gp 01200000A640 16E1 mov ai = 5 // r25 = 5 010800000B40 16E2 mov out2 = r0 // r45 = r0 } { .mmi 012010000B00 16F0 mov out1 = 256 ;; // r44 = 256 0080C0A00B80 16F1 ld8 out3 = $LITERAL$ // r46 = [r10] 010800F20AC0 16F2 adds out0 = 16, r15 // r43 = 16, r15 } { .mfb 000008000000 1700 nop.m 0 000008000000 1701 nop.f 0 00A000001000 1702 br.call.sptk.many rp = FaoToBuffer ;; // br0 = FaoToBuffer } { .mii 010802A00040 1710 mov gp = r42 // r1 = r42 012000008640 1711 mov ai = 4 // r25 = 4 // 063047 010800C20B00 1712 adds out1 = 16, sp // r44 = 16, r12 } { .mmi 012028048AC0 1720 mov out0 = 676 ;; // r43 = 676 012000100B80 1721 add out3 = @ltoff($LITERAL$+16), // r46 = @ltoff($LITERAL$+16), r1 gp 000008000000 1722 nop.i 0 ;; } { .mib 0080C2E00B40 1730 ld8 out2 = $LITERAL$ // r45 = [r46] 0120200E8B80 1731 mov out3 = 628 // r46 = 628 00A000001000 1732 br.call.sptk.many rp = // br0 = ErrorExitVmsStatus ErrorExitVmsStatus ;; } { .mfi 010802A00040 1740 mov gp = r42 // r1 = r42 000008000000 1741 nop.f 0 000008000000 1742 nop.i 0 } 1750 L$252: // 063048 { .mii 01080A080940 1750 adds r37 = 192, in0 // r37 = 192, r32 // 063049 01080A088980 1751 adds r38 = 196, in0 // r38 = 196, r32 // 063050 01C432400000 1752 cmp4.eq pr0, pr6 = r0, WriteCount ;; // pr0, pr6 = r0, r36 // 063051 } { .mmb 008C82542000 1760 st4 [r37] = AstFunction // [r37] = r33 // 063049 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 59 NetIoWriteStatus 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 008C82644000 1761 st4 [r38] = AstParam // [r38] = r34 // 063050 008600004006 1762 (pr6) br.cond.dpnt.many L$253 ;; // 063051 } { .mmi 01080A0509C0 1770 adds r39 = 168, in0 ;; // r39 = 168, r32 008C82700000 1771 st4 [r39] = r0 000008000000 1772 nop.i 0 } 1780 L$253: { .mii 01080A0F4200 1780 adds r8 = 250, in0 // r8 = 250, r32 // 063054 01080A0F0240 1781 adds r9 = 248, in0 ;; // r9 = 248, r32 // 063055 010802090800 1782 adds in0 = 72, in0 // r32 = 72, r32 // 063052 } { .mmi 01C400042240 1790 cmp4.eq pr9, pr0 = AstFunction, r0 ;; // pr9, pr0 = r33, r0 // 063057 00AC82000100 1791 st4 [in0] = r0, 4 // [r32] = r0, 4 // 063052 000008000000 1792 nop.i 0 } { .mmi 008C40848000 17A0 st2 [r8] = WriteCount ;; // [r8] = r36 // 063054 008C40946000 17A1 st2 [r9] = AstStatus // [r9] = r35 // 063055 000008000000 17A2 nop.i 0 } { .mfi 00BC8A048D00 17B0 st4 [in0] = WriteCount, -76 // [r32] = r36, -76 // 063053 000008000000 17B1 nop.f 0 000008000000 17B2 nop.i 0 ;; } { .mfb 000008000000 17C0 nop.m 0 000008000000 17C1 nop.f 0 008600008009 17C2 (pr9) br.cond.dpnt.many L$256 ;; // 063057 } { .mii 012000100AC0 17D0 add out0 = // r43 = @ltoff(@fptr(NetIoWriteAst)), // 063058 @ltoff(@fptr(NetIoWriteAst)), // r1 gp 012000004640 17D1 mov ai = 2 // r25 = 2 010802000B00 17D2 mov out1 = ioptr ;; // r44 = r32 } { .mfb 0080C2B00AC0 17E0 ld8 out0 = NetIoWriteAst // r43 = [r43] 000008000000 17E1 nop.f 0 00A000001000 17E2 br.call.sptk.many rp = SysDclAst ;; // br0 = SysDclAst } { .mfb 010802A00040 17F0 mov gp = r42 // r1 = r42 000008000000 17F1 nop.f 0 008000005000 17F2 br.sptk.many L$257 ;; // 063059 } 1800 L$256: { .mfb 010802000AC0 1800 mov out0 = ioptr // r43 = r32 // 063060 000008000000 1801 nop.f 0 00A000001000 1802 br.call.sptk.many rp = NetIoWriteAst ;; // br0 = NetIoWriteAst } Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 60 NetIoWriteStatus 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 1810 L$257: { .mib 000008000000 1810 nop.m 0 0000B2300200 1811 sxt4 r8 = AstStatus // r8 = r35 // 063062 004000000000 1812 nop.b 0 } { .mii 000008000000 1820 nop.m 0 000154052000 1821 mov.i rspfs = r41 ;; 000E00150000 1822 mov rp = r40 // br0 = r40 } { .mfb 010810C00300 1830 adds sp = 256, sp // r12 = 256, r12 000008000000 1831 nop.f 0 000108001100 1832 br.ret.sptk.many rp ;; // br0 } .endp NetIoWriteStatus Routine Size: 432 bytes, Routine Base: $CODE$ + 1690 .proc NetIoRead .align 32 .global NetIoRead NetIoRead: // 063078 { .mii 002C009229C0 1840 alloc r39 = rspfs, 5, 4, 8, 0 012010040380 1841 mov r14 = 288 010800C00080 1842 mov r2 = sp // r2 = r12 } { .mmi 01C4000461C0 1850 cmp4.eq pr7, pr0 = DataPtr, r0 ;; // pr7, pr0 = r35, r0 // 063098 010028E183C0 1851 sub r15 = sp, r14 // r15 = r12, r14 // 063078 000188000980 1852 mov r38 = rp ;; // r38 = br0 } { .mii 0080C0F00380 1860 ld8 r14 = [r15] 010800F00300 1861 mov sp = r15 // r12 = r15 010800100A00 1862 mov r40 = gp // r40 = r1 } { .mfb 000008000000 1870 nop.m 0 000008000000 1871 nop.f 0 00860002C007 1872 (pr7) br.cond.dpnt.many L$108 ;; // 063098 } { .mmi 01080A0580C0 1880 adds r3 = 172, in0 ;; // r3 = 172, r32 // 063101 0080803000C0 1881 ld4 r3 = [r3] 000008000000 1882 nop.i 0 ;; } { .mfb 01C4000061C0 1890 cmp4.eq pr7, pr0 = r3, r0 000008000000 1891 nop.f 0 00860001A007 1892 (pr7) br.cond.dpnt.many L$110 ;; } { .mii 0120001000C0 18A0 add r3 = @ltoff($LITERAL$+200), gp // r3 = @ltoff($LITERAL$+200), r1 // 063104 012000100AC0 18A1 add out2 = @ltoff($LITERAL$+16), // r43 = @ltoff($LITERAL$+16), r1 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 61 NetIoRead 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 gp 012000006640 18A2 mov ai = 3 ;; // r25 = 3 } { .mmi 0080C03000C0 18B0 ld8 r3 = $LITERAL$ // r3 = [r3] 0080C2B00A80 18B1 ld8 out1 = $LITERAL$ // r42 = [r43] 01202805AAC0 18B2 mov out2 = 685 ;; // r43 = 685 } { .mfb 010800300A40 18C0 mov out0 = r3 // r41 = r3 000008000000 18C1 nop.f 0 00A000001000 18C2 br.call.sptk.many rp = HttpdStackTrace ;; // br0 = HttpdStackTrace } { .mii 01080A058B40 18D0 adds out4 = 172, in0 // r45 = 172, r32 // 063105 010802800040 18D1 mov gp = r40 // r1 = r40 // 063104 01200000A640 18D2 mov ai = 5 // r25 = 5 // 063105 } { .mmi 010800000AC0 18E0 mov out2 = r0 ;; // r43 = r0 008082D00B40 18E1 ld4 out4 = [out4] // r45 = [r45] 012000100840 18E2 add in1 = @ltoff($LITERAL$+192), // r33 = @ltoff($LITERAL$+192), r1 gp } { .mii 012010000A80 18F0 mov out1 = 256 // r42 = 256 010800C60A40 18F1 adds out0 = 48, sp ;; // r41 = 48, r12 0000B2D00B40 18F2 sxt4 out4 = out4 // r45 = r45 } { .mfb 0080C2100B00 1900 ld8 out3 = $LITERAL$ // r44 = [r33] 000008000000 1901 nop.f 0 00A000001000 1902 br.call.sptk.many rp = FaoToBuffer ;; // br0 = FaoToBuffer } { .mii 010802800040 1910 mov gp = r40 // r1 = r40 01080A068A40 1911 adds out0 = 180, in0 // r41 = 180, r32 // 063107 01200000A640 1912 mov ai = 5 // r25 = 5 } { .mmi 010800C60AC0 1920 adds out2 = 48, sp ;; // r43 = 48, r12 012000100B40 1921 add out4 = @ltoff($LITERAL$+16), // r45 = @ltoff($LITERAL$+16), r1 gp 012028048A80 1922 mov out1 = 676 // r42 = 676 } { .mmi 008082900A40 1930 ld4 out0 = [out0] ;; // r41 = [r41] 0080C2D00B00 1931 ld8 out3 = $LITERAL$ // r44 = [r45] 012028060B40 1932 mov out4 = 688 // r45 = 688 } { .mib 000008000000 1940 nop.m 0 0000B2900A40 1941 sxt4 out0 = out0 // r41 = r41 00A000001000 1942 br.call.sptk.many rp = ErrorNoticed ;; // br0 = ErrorNoticed } { .mib 012028048200 1950 mov r8 = 676 // 063108 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 62 NetIoRead 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 010802800040 1951 mov gp = r40 // r1 = r40 // 063107 0080000ED000 1952 br.sptk.many L$111 ;; // 063108 } 1960 L$110: // 063109 { .mii 01080A0E4240 1960 adds r9 = 242, in0 // r9 = 242, r32 // 063116 01080A0E0280 1961 adds r10 = 240, in0 // r10 = 240, r32 // 063117 01080A058440 1962 adds r17 = 172, in0 // r17 = 172, r32 // 063112 } { .mmi 010802000800 1970 adds in0 = 0, in0 ;; // r32 = 0, r32 // 063110 01080A060480 1971 adds r18 = 176, in0 // r18 = 176, r32 // 063113 01080A0484C0 1972 adds r19 = 164, in0 // r19 = 164, r32 // 063114 } { .mmi 010802028800 1980 adds in0 = 20, in0 ;; // r32 = 20, r32 // 063110 00AC82000200 1981 st4 [in0] = r0, 8 // [r32] = r0, 8 000008000000 1982 nop.i 0 } { .mmi 008C40900000 1990 st2 [r9] = r0 ;; // 063116 008C40A00000 1991 st2 [r10] = r0 // 063117 000008000000 1992 nop.i 0 } { .mmi 00BC8A001F00 19A0 st4 [in0] = r0, -4 ;; // [r32] = r0, -4 // 063111 008C81142000 19A1 st4 [r17] = AstFunction // [r17] = r33 // 063112 000008000000 19A2 nop.i 0 } { .mmi 008C81244000 19B0 st4 [r18] = AstParam ;; // [r18] = r34 // 063113 008C81346000 19B1 st4 [r19] = DataPtr // [r19] = r35 // 063114 000008000000 19B2 nop.i 0 } { .mmi 00BC8A049A00 19C0 st4 [in0] = DataSize, -24 ;; // [r32] = r36, -24 // 063115 000008000000 19C1 nop.m 0 000008000000 19C2 nop.i 0 } 19D0 L$108: // 063118 { .mmi 01080A078540 19D0 adds r21 = 188, in0 ;; // r21 = 188, r32 // 063120 008081500540 19D1 ld4 r21 = [r21] 000008000000 19D2 nop.i 0 ;; } { .mfb 01C40002A1C0 19E0 cmp4.eq pr7, pr0 = r21, r0 000008000000 19E1 nop.f 0 008600006007 19E2 (pr7) br.cond.dpnt.many L$113 ;; } { .mib 012000002640 19F0 mov ai = 1 // r25 = 1 // 063126 010802000A40 19F1 mov out0 = ioptr // r41 = r32 00A000001000 19F2 br.call.sptk.many rp = Http2NetIoRead ;; // br0 = Http2NetIoRead } { .mfb 010802800040 1A00 mov gp = r40 // r1 = r40 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 63 NetIoRead 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 000008000000 1A01 nop.f 0 0080000D5000 1A02 br.sptk.many L$268 ;; } 1A10 L$113: // 063128 { .mmi 01080A070840 1A10 adds in1 = 184, in0 ;; // r33 = 184, r32 // 063130 008082100840 1A11 ld4 in1 = [in1] // r33 = [r33] 000008000000 1A12 nop.i 0 ;; } { .mfb 01C4000421C0 1A20 cmp4.eq pr7, pr0 = in1, r0 // pr7, pr0 = r33, r0 000008000000 1A21 nop.f 0 008600008007 1A22 (pr7) br.cond.dpnt.many L$115 ;; } { .mii 012000006640 1A30 mov ai = 3 // r25 = 3 // 063136 0000B2400AC0 1A31 sxt4 out2 = DataSize // r43 = r36 010802300A80 1A32 mov out1 = DataPtr // r42 = r35 } { .mfb 010802000A40 1A40 mov out0 = ioptr // r41 = r32 000008000000 1A41 nop.f 0 00A000001000 1A42 br.call.sptk.many rp = SesolaNetIoRead ;; // br0 = SesolaNetIoRead } { .mfb 010802800040 1A50 mov gp = r40 // r1 = r40 000008000000 1A51 nop.f 0 0080000CB000 1A52 br.sptk.many L$268 ;; } 1A60 L$115: // 063138 { .mmi 01C4300401C0 1A60 cmp4.eq pr7, pr6 = ioptr, r0 ;; // pr7, pr6 = r32, r0 // 063140 01C000001247 1A61 (pr7) cmp.eq.unc pr9, pr0 = r0, r0 01C000001206 1A62 (pr6) cmp.eq.unc pr8, pr0 = r0, r0 } { .bbb 008600002008 1A70 (pr8) br.cond.dpnt.many L$116 004000000000 1A71 nop.b 0 008600032009 1A72 (pr9) br.cond.dpnt.many L$117 ;; } 1A80 L$116: { .mii 012000100880 1A80 add in2 = @ltoff(Watch+124), gp // r34 = @ltoff(Watch+124), r1 012040000240 1A81 mov r9 = 1024 010802088800 1A82 adds in0 = 68, in0 ;; // r32 = 68, r32 } { .mmi 0080C2200880 1A90 ld8 in2 = Watch // r34 = [r34] 00B08A0782C0 1A91 ld4 r11 = [in0], -68 // r11 = [r32], -68 000008000000 1A92 nop.i 0 ;; } { .mii 0111622F0840 1AA0 and in1 = -8, in2 // r33 = -8, r34 01C460B00340 1AA1 cmp4.eq pr13, pr12 = r0, r11 ;; 01C05A144000 1AA2 cmp.eq pr0, pr11 = in2, in1 // pr0, pr11 = r34, r33 } { .mmi Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 64 NetIoRead 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 00A0C21100C0 1AB0 ld8 r3 = Watch, 8 ;; // r3 = [r33], 8 000008000000 1AB1 nop.m 0 009E100448CB 1AB2 (pr11) dep in3 = Watch, r0, 3, 3 ;; // r35 = r34, r0, 3, 3 } { .mmi 0080C210090B 1AC0 (pr11) ld8 in4 = Watch ;; // r36 = [r33] 000008000000 1AC1 nop.m 0 00F2003460CB 1AC2 (pr11) shr.u r3 = r3, in3 // r3 = r3, r35 } { .mmi 01012A3808CB 1AD0 (pr11) sub in3 = 64, in3 ;; // r35 = 64, r35 000008000000 1AD1 nop.m 0 00F24234890B 1AD2 (pr11) shl in4 = in4, in3 ;; // r36 = r36, r35 } { .mmi 0100703480CB 1AE0 (pr11) or r3 = in4, r3 ;; // r3 = r36, r3 0100609060C0 1AE1 and r3 = r3, r9 000008000000 1AE2 nop.i 0 ;; } { .mmi 01C0003003C0 1AF0 cmp.eq pr15, pr0 = r0, r3 ;; 01C20000034F 1AF1 (pr15) cmp.eq.or.andcm pr13, pr0 = r0, r0 000008000000 1AF2 nop.i 0 } { .mfb 000008000000 1B00 nop.m 0 000008000000 1B01 nop.f 0 00860002000D 1B02 (pr13) br.cond.dpnt.many L$117 ;; } { .mmi 01C000001180 1B10 cmp.eq.unc pr6, pr0 = r0, r0 ;; // 063141 01A000000188 1B11 (pr8) cmp.ltu pr6, pr0 = r0, r0 000008000000 1B12 nop.i 0 } { .bbb 008600002006 1B20 (pr6) br.cond.dpnt.many L$121 004000000000 1B21 nop.b 0 008000005000 1B22 br.sptk.many L$120 ;; } 1B30 L$121: { .mfi 0108000002C0 1B30 mov r11 = r0 000008000000 1B31 nop.f 0 000008000000 1B32 nop.i 0 } 1B40 L$120: { .mlx 010802030800 1B40 adds in0 = 24, in0 // r32 = 24, r32 // 063143 01FFFFFFFE00 1B41 movl r18 = -2147483648 ;; 01A0000009 } { .mii 008082000440 1B50 ld4 r17 = [in0] // r17 = [r32] 01080A0285C0 1B51 adds r23 = 148, in0 // r23 = 148, r32 // 063145 012000100500 1B52 add r20 = @ltoff($LITERAL$+128), // r20 = @ltoff($LITERAL$+128), r1 // 063143 gp } Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 65 NetIoRead 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 { .mmi 0120001004C0 1B60 add r19 = @ltoff($LITERAL$+136), // r19 = @ltoff($LITERAL$+136), r1 gp ;; 010061222480 1B61 and r18 = r17, r18 0119FA0F8800 1B62 adds in0 = -4, in0 // r32 = -4, r32 // 063141 } { .mii 0080817005C0 1B70 ld4 r23 = [r23] // 063145 012000100640 1B71 add ai = @ltoff($LITERAL$+144), gp ;; // r25 = @ltoff($LITERAL$+144), r1 // 063142 01C439200000 1B72 cmp4.eq pr0, pr7 = r0, r18 // 063143 } { .mmi 0080C1400500 1B80 ld8 r20 = $LITERAL$ // r20 = [r20] 0080C1300540 1B81 ld8 r21 = $LITERAL$ // r21 = [r19] 012000100AC0 1B82 add out2 = @ltoff($LITERAL$+16), // r43 = @ltoff($LITERAL$+16), r1 // 063141 gp ;; } { .mii 00B08A0D8BC0 1B90 ld4 out6 = [in0], -20 // r47 = [r32], -20 010800C20600 1B91 adds r24 = 16, sp // r24 = 16, r12 0000B17005C0 1B92 sxt4 r23 = r23 // 063145 } { .mmi 010801400547 1BA0 (pr7) mov r21 = r20 ;; // 063143 0080C1900B40 1BA1 ld8 out4 = $LITERAL$ // r45 = [r25] // 063142 012000012640 1BA2 mov ai = 9 // r25 = 9 // 063141 } { .mlx 0080C2B00A80 1BB0 ld8 out1 = $LITERAL$ // r42 = [r43] 0000000001FF 1BB1 movl r22 = 2147483647 ;; // 063144 019FFFDFCB } { .mii 010801500B80 1BC0 mov out5 = r21 // r46 = r21 // 063141 0000B2F00BC0 1BC1 sxt4 out6 = out6 // r47 = r47 012040000B00 1BC2 mov out3 = 1024 // r44 = 1024 } { .mmi 0120280A4AC0 1BD0 mov out2 = 722 ;; // r43 = 722 008CC182E000 1BD1 st8 [r24] = r23 0000B0B00A40 1BD2 sxt4 out0 = r11 // r41 = r11 } { .mfb 010061622C00 1BE0 and out7 = r17, r22 // r48 = r17, r22 // 063144 000008000000 1BE1 nop.f 0 00A000001000 1BE2 br.call.sptk.many rp = WatchThis ;; // br0 = WatchThis // 063141 } { .mfi 010802800040 1BF0 mov gp = r40 // r1 = r40 000008000000 1BF1 nop.f 0 000008000000 1BF2 nop.i 0 } 1C00 L$117: // 063145 { .mmi 010802080800 1C00 adds in0 = 64, in0 ;; // r32 = 64, r32 // 063147 00B08A080840 1C01 ld4 in1 = [in0], -64 // r33 = [r32], -64 000008000000 1C02 nop.i 0 ;; Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 66 NetIoRead 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 } { .mfb 01C4021001C0 1C10 cmp4.eq pr7, pr0 = r0, in1 // pr7, pr0 = r0, r33 000008000000 1C11 nop.f 0 008600014007 1C12 (pr7) br.cond.dpnt.many L$123 ;; } { .mmi 01080A058880 1C20 adds in2 = 172, in0 ;; // r34 = 172, r32 // 063153 008082200880 1C21 ld4 in2 = [in2] // r34 = [r34] 000008000000 1C22 nop.i 0 ;; } { .mfb 01C400044240 1C30 cmp4.eq pr9, pr0 = in2, r0 // pr9, pr0 = r34, r0 000008000000 1C31 nop.f 0 00860000A009 1C32 (pr9) br.cond.dpnt.many L$125 ;; } { .mii 012000100A40 1C40 add out0 = // r41 = @ltoff(@fptr(NetIoReadAst)), // 063154 @ltoff(@fptr(NetIoReadAst)), // r1 gp 012000004640 1C41 mov ai = 2 // r25 = 2 010802000A80 1C42 mov out1 = ioptr ;; // r42 = r32 } { .mfb 0080C2900A40 1C50 ld8 out0 = NetIoReadAst // r41 = [r41] 000008000000 1C51 nop.f 0 00A000001000 1C52 br.call.sptk.many rp = SysDclAst ;; // br0 = SysDclAst } { .mii 010802080800 1C60 adds in0 = 64, in0 // r32 = 64, r32 // 063157 010802800040 1C61 mov gp = r40 // r1 = r40 // 063154 000008000000 1C62 nop.i 0 ;; } { .mfb 008082000200 1C70 ld4 r8 = [in0] // r8 = [r32] // 063157 000008000000 1C71 nop.f 0 008000087000 1C72 br.sptk.many L$268 ;; } 1C80 L$125: // 063155 { .mfb 010802000A40 1C80 mov out0 = ioptr // r41 = r32 // 063156 000008000000 1C81 nop.f 0 00A000001000 1C82 br.call.sptk.many rp = NetIoReadAst ;; // br0 = NetIoReadAst } { .mmi 010802080800 1C90 adds in0 = 64, in0 ;; // r32 = 64, r32 // 063157 008082000200 1C91 ld4 r8 = [in0] // r8 = [r32] 000008000000 1C92 nop.i 0 } { .mfb 000008000000 1CA0 nop.m 0 000008000000 1CA1 nop.f 0 008000081000 1CA2 br.sptk.many L$268 ;; } 1CB0 L$123: // 063158 { .mmi 010802030800 1CB0 adds in0 = 24, in0 ;; // r32 = 24, r32 // 063160 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 67 NetIoRead 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 00B08A0D0900 1CB1 ld4 in4 = [in0], -24 // r36 = [r32], -24 000008000000 1CB2 nop.i 0 ;; } { .mfb 01C432400000 1CC0 cmp4.eq pr0, pr6 = r0, in4 // pr0, pr6 = r0, r36 000008000000 1CC1 nop.f 0 008600008006 1CC2 (pr6) br.cond.dpnt.many L$127 ;; } { .mii 0120280488C0 1CD0 mov status = 676 // r35 = 676 // 063161 012028048840 1CD1 mov in1 = 676 ;; // r33 = 676 010802038800 1CD2 adds in0 = 28, in0 ;; // r32 = 28, r32 } { .mii 008C82042000 1CE0 st4 [in0] = in1 // [r32] = r33 00A042300240 1CE1 tbit.z pr9, pr8 = status, 0 // pr9, pr8 = r35, 0 // 063212 0119FA0C8800 1CE2 adds in0 = -28, in0 ;; // r32 = -28, r32 // 063161 } { .bbb 00860005C009 1CF0 (pr9) br.cond.dpnt.many L$138 // 063212 008000075000 1CF1 br.sptk.many L$145 004000000000 1CF2 nop.b 0 ;; } 1D00 L$127: // 063162 { .mii 01080A0580C0 1D00 adds r3 = 172, in0 // r3 = 172, r32 // 063163 01080A0E0840 1D01 adds in1 = 240, ioptr // r33 = 240, r32 // 063174 000008000000 1D02 nop.i 0 } { .mlx 000008000000 1D10 nop.m 0 0000000001FF 1D11 movl in2 = 2147483647 ;; // r34 = 2147483647 // 063189 019FFFDFD1 } { .mmi 0080803000C0 1D20 ld4 r3 = [r3] ;; // 063163 000008000000 1D21 nop.m 0 0000B03000C0 1D22 sxt4 r3 = r3 ;; } { .mfb 01C440006000 1D30 cmp4.eq pr0, pr8 = r3, r0 000008000000 1D31 nop.f 0 008600032008 1D32 (pr8) br.cond.dpnt.many L$130 ;; } { .mmi 012000100900 1D40 add in4 = @ltoffx(EfnWait), gp ;; // r36 = @ltoffx(EfnWait), r1 // 063193 0080C2400900 1D41 ld8.mov in4 = [r36], EfnWait 000008000000 1D42 nop.i 0 ;; } 1D50 L$132: // 063187 { .mmi 010802030800 1D50 adds in0 = 24, in0 // r32 = 24, r32 // 063189 008082400A40 1D51 ld4 out0 = [in4] // r41 = [r36] // 063193 000008000000 1D52 nop.i 0 ;; } { .mii 008082000240 1D60 ld4 r9 = [in0] // r9 = [r32] // 063189 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 68 NetIoRead 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 01080A018480 1D61 adds r18 = 140, in0 // r18 = 140, r32 // 063195 010800C20500 1D62 adds r20 = 16, sp // r20 = 16, r12 // 063193 } { .mmi 010800C30540 1D70 adds r21 = 24, sp ;; // r21 = 24, r12 0119FA0F8800 1D71 adds in0 = -4, in0 // r32 = -4, r32 010062212240 1D72 and r9 = r9, in2 // r9 = r9, r34 // 063189 } { .mii 008081200480 1D80 ld4 r18 = [r18] // 063195 010800C40580 1D81 adds r22 = 32, sp ;; // r22 = 32, r12 // 063193 010800C505C0 1D82 adds r23 = 40, sp // r23 = 40, r12 } { .mii 00A082028280 1D90 ld4 r10 = [in0], 20 // r10 = [r32], 20 // 063190 0000B1200480 1D91 sxt4 r18 = r18 ;; // 063195 010028A12240 1D92 sub r9 = r9, r10 // 063190 } { .mii 00B08A0B0C00 1DA0 ld4 out7 = [in0], -40 // r48 = [r32], -40 // 063191 012000018640 1DA1 mov ai = 12 // r25 = 12 // 063193 012000000B80 1DA2 mov out5 = 0 ;; // r46 = 0 } { .mmi 01A403012280 1DB0 cmp4.ltu pr10, pr0 = r9, out7 // pr10, pr0 = r9, r48 // 063191 008CC1400000 1DB1 st8 [r20] = r0 // 063193 012000000B40 1DB2 mov out4 = 0 ;; // r45 = 0 } { .mmi 010800900C0A 1DC0 (pr10) mov out7 = r9 // r48 = r9 // 063191 008CC1500000 1DC1 st8 [r21] = r0 // 063193 010802100B00 1DC2 mov out3 = in1 ;; // r44 = r33 } { .mii 008CC1600000 1DD0 st8 [r22] = r0 0000B3000C00 1DD1 sxt4 out7 = out7 // r48 = r48 012000062AC0 1DD2 mov out2 = 49 // r43 = 49 } { .mmi 008CC1700000 1DE0 st8 [r23] = r0 ;; 008042000A80 1DE1 ld2 out1 = [in0] // r42 = [r32] 0000B2900A40 1DE2 sxt4 out0 = out0 // r41 = r41 } { .mfb 010000A24BC0 1DF0 add out6 = r18, r10 // r47 = r18, r10 // 063195 000008000000 1DF1 nop.f 0 00A000001000 1DF2 br.call.sptk.many rp = SYS$QIOW ;; // br0 = SYS$QIOW // 063193 } { .mii 0108008008C0 1E00 mov status = r8 // r35 = r8 00A0308001C0 1E01 tbit.z pr7, pr6 = r8, 0 // 063198 010802800040 1E02 mov gp = r40 // r1 = r40 // 063193 } { .mfb 000008000000 1E10 nop.m 0 000008000000 1E11 nop.f 0 00860000C006 1E12 (pr6) br.cond.dpnt.many L$133 ;; // 063198 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 69 NetIoRead 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 } { .mmi 010802038800 1E20 adds in0 = 28, in0 ;; // r32 = 28, r32 // 063199 008C82010000 1E21 st4 [in0] = r8 // [r32] = r8 000008000000 1E22 nop.i 0 ;; } { .mmi 00B00A0C8940 1E30 ld1 r37 = [in0], -28 ;; // r37 = [r32], -28 // 063203 000008000000 1E31 nop.m 0 00A0325001C0 1E32 tbit.z pr7, pr6 = r37, 0 } { .mfb 000008000000 1E40 nop.m 0 000008000000 1E41 nop.f 0 0095FFFE2006 1E42 (pr6) br.cond.dptk.many L$132 ;; } { .mib 000008000000 1E50 nop.m 0 00A040800240 1E51 tbit.z pr9, pr8 = r8, 0 // 063212 008600030009 1E52 (pr9) br.cond.dpnt.many L$138 ;; } { .mfb 000008000000 1E60 nop.m 0 000008000000 1E61 nop.f 0 008000047000 1E62 br.sptk.many L$145 ;; } 1E70 L$133: // 063200 { .mfb 010802000A40 1E70 mov out0 = ioptr // r41 = r32 // 063201 000008000000 1E71 nop.f 0 00A000001000 1E72 br.call.sptk.many rp = NetIoReadAst ;; // br0 = NetIoReadAst } { .mmi 010802038800 1E80 adds in0 = 28, in0 ;; // r32 = 28, r32 // 063203 00B00A0C8940 1E81 ld1 r37 = [in0], -28 // r37 = [r32], -28 000008000000 1E82 nop.i 0 ;; } { .mib 000008000000 1E90 nop.m 0 00A0325001C0 1E91 tbit.z pr7, pr6 = r37, 0 0095FFFD8006 1E92 (pr6) br.cond.dptk.many L$132 ;; } { .mib 000008000000 1EA0 nop.m 0 00A042300240 1EA1 tbit.z pr9, pr8 = status, 0 // pr9, pr8 = r35, 0 // 063212 008600026009 1EA2 (pr9) br.cond.dpnt.many L$138 ;; } { .mfb 000008000000 1EB0 nop.m 0 000008000000 1EB1 nop.f 0 00800003D000 1EB2 br.sptk.many L$145 ;; } 1EC0 L$130: // 063163 { .mii 010802028800 1EC0 adds in0 = 20, in0 // r32 = 20, r32 // 063170 0120001002C0 1EC1 add r11 = @ltoffx(EfnNoWait), gp ;; // r11 = @ltoffx(EfnNoWait), r1 // 063173 01080A020200 1EC2 adds r8 = 144, in0 // r8 = 144, r32 // 063176 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 70 NetIoRead 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 } { .mii 0080820000C0 1ED0 ld4 r3 = [in0] // r3 = [r32] // 063170 010062248880 1ED1 and in2 = in4, in2 // r34 = r36, r34 // 063169 010800C20480 1ED2 adds r18 = 16, sp ;; // r18 = 16, r12 // 063173 } { .mmi 010802028800 1EE0 adds in0 = 20, in0 // r32 = 20, r32 0080C0B002C0 1EE1 ld8.mov r11 = [r11], EfnNoWait 010028344880 1EE2 sub in2 = in2, r3 ;; // r34 = r34, r3 // 063170 } { .mmi 00B08A0B0C00 1EF0 ld4 out7 = [in0], -40 // r48 = [r32], -40 // 063171 008080800200 1EF1 ld4 r8 = [r8] // 063176 010800C304C0 1EF2 adds r19 = 24, sp ;; // r19 = 24, r12 // 063173 } { .mii 01A403044200 1F00 cmp4.ltu pr8, pr0 = in2, out7 // pr8, pr0 = r34, r48 // 063171 0000B0800200 1F01 sxt4 r8 = r8 // 063176 010800C40500 1F02 adds r20 = 32, sp // r20 = 32, r12 // 063173 } { .mmi 008080B002C0 1F10 ld4 r11 = EfnNoWait ;; // r11 = [r11] 012000100B40 1F11 add out4 = // r45 = @ltoff(@fptr(NetIoReadAst)), @ltoff(@fptr(NetIoReadAst)), // r1 gp 010800C50540 1F12 adds r21 = 40, sp // r21 = 40, r12 } { .mii 010802200C08 1F20 (pr8) mov out7 = in2 // r48 = r34 // 063171 0100003100C0 1F21 add r3 = r8, r3 ;; // 063176 012000018640 1F22 mov ai = 12 // r25 = 12 // 063173 } { .mmi 008CC1200000 1F30 st8 [r18] = r0 008CC1300000 1F31 st8 [r19] = r0 0000B3000C00 1F32 sxt4 out7 = out7 ;; // r48 = r48 } { .mmi 008042000A80 1F40 ld2 out1 = [in0] // r42 = [r32] 0080C2D00B40 1F41 ld8 out4 = NetIoReadAst // r45 = [r45] 010800300BC0 1F42 mov out6 = r3 ;; // r47 = r3 } { .mii 008CC1400000 1F50 st8 [r20] = r0 010802000B80 1F51 mov out5 = ioptr // r46 = r32 010802100B00 1F52 mov out3 = in1 // r44 = r33 } { .mmi 012000062AC0 1F60 mov out2 = 49 ;; // r43 = 49 008CC1500000 1F61 st8 [r21] = r0 0000B0B00A40 1F62 sxt4 out0 = r11 // r41 = r11 } { .mfb 000008000000 1F70 nop.m 0 000008000000 1F71 nop.f 0 00A000001000 1F72 br.call.sptk.many rp = SYS$QIO ;; // br0 = SYS$QIO Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 71 NetIoRead 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 } { .mii 0108008008C0 1F80 mov status = r8 // r35 = r8 00A0308001C0 1F81 tbit.z pr7, pr6 = r8, 0 // 063179 010802800040 1F82 mov gp = r40 // r1 = r40 // 063173 } { .mfb 000008000000 1F90 nop.m 0 000008000000 1F91 nop.f 0 008600004006 1F92 (pr6) br.cond.dpnt.many L$129 ;; // 063179 } { .mmi 010802038800 1FA0 adds in0 = 28, in0 ;; // r32 = 28, r32 00BC8A011900 1FA1 st4 [in0] = r8, -28 // [r32] = r8, -28 000008000000 1FA2 nop.i 0 ;; } 1FB0 L$129: // 063205 { .mib 000008000000 1FB0 nop.m 0 00A042300240 1FB1 tbit.z pr9, pr8 = status, 0 // pr9, pr8 = r35, 0 // 063212 008600004009 1FB2 (pr9) br.cond.dpnt.many L$138 ;; } { .mfb 000008000000 1FC0 nop.m 0 000008000000 1FC1 nop.f 0 00800001B000 1FC2 br.sptk.many L$145 ;; } 1FD0 L$138: { .mfb 01CC52338000 1FD0 cmp4.eq pr0, pr10 = 28, status // pr0, pr10 = 28, r35 // 063215 000008000000 1FD1 nop.f 0 00860000A00A 1FD2 (pr10) br.cond.dpnt.many L$141 ;; } { .mib 012000002640 1FE0 mov ai = 1 // r25 = 1 // 063218 012000000A40 1FE1 mov out0 = 0 // r41 = 0 00A000001000 1FE2 br.call.sptk.many rp = SYS$CANEXH ;; // br0 = SYS$CANEXH } { .mii 012000002640 1FF0 mov ai = 1 // r25 = 1 // 063220 0122A0008A40 1FF1 addl out0 = 10756, r0 // r41 = 10756, r0 010802800040 1FF2 mov gp = r40 ;; // r1 = r40 // 063218 } { .mfb 000008000000 2000 nop.m 0 000008000000 2001 nop.f 0 00A000001000 2002 br.call.sptk.many rp = SYS$EXIT ;; // br0 = SYS$EXIT // 063220 } { .mfi 010802800040 2010 mov gp = r40 // r1 = r40 000008000000 2011 nop.f 0 000008000000 2012 nop.i 0 } 2020 L$141: // 063221 { .mii 01080A058900 2020 adds in4 = 172, in0 // r36 = 172, r32 // 063226 01080A0E0880 2021 adds in2 = 240, in0 // r34 = 240, r32 // 063224 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 72 NetIoRead 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 01080A0E4840 2022 adds in1 = 242, in0 ;; // r33 = 242, r32 // 063225 } { .mmi 008082400900 2030 ld4 in4 = [in4] ;; // r36 = [r36] // 063226 008C42246000 2031 st2 [in2] = status // [r34] = r35 // 063224 01C4000481C0 2032 cmp4.eq pr7, pr0 = in4, r0 // pr7, pr0 = r36, r0 // 063226 } { .mfb 008C42100000 2040 st2 [in1] = r0 // [r33] = r0 // 063225 000008000000 2041 nop.f 0 008600008007 2042 (pr7) br.cond.dpnt.many L$144 ;; // 063226 } { .mii 012000100A40 2050 add out0 = // r41 = @ltoff(@fptr(NetIoReadAst)), // 063227 @ltoff(@fptr(NetIoReadAst)), // r1 gp 012000004640 2051 mov ai = 2 // r25 = 2 010802000A80 2052 mov out1 = ioptr ;; // r42 = r32 } { .mfb 0080C2900A40 2060 ld8 out0 = NetIoReadAst // r41 = [r41] 000008000000 2061 nop.f 0 00A000001000 2062 br.call.sptk.many rp = SysDclAst ;; // br0 = SysDclAst } { .mfb 010802800040 2070 mov gp = r40 // r1 = r40 000008000000 2071 nop.f 0 008000005000 2072 br.sptk.many L$145 ;; // 063228 } 2080 L$144: { .mfb 010802000A40 2080 mov out0 = ioptr // r41 = r32 // 063229 000008000000 2081 nop.f 0 00A000001000 2082 br.call.sptk.many rp = NetIoReadAst ;; // br0 = NetIoReadAst } 2090 L$145: { .mfi 010802300200 2090 mov r8 = status // r8 = r35 // 063231 000008000000 2091 nop.f 0 000008000000 2092 nop.i 0 ;; } 20A0 L$268: { .mib 000008000000 20A0 nop.m 0 0000B0800200 20A1 sxt4 r8 = r8 004000000000 20A2 nop.b 0 } 20B0 L$111: { .mii 000008000000 20B0 nop.m 0 00015404E000 20B1 mov.i rspfs = r39 ;; 000E0014C000 20B2 mov rp = r38 // br0 = r38 } { .mfb 010810C40300 20C0 adds sp = 288, sp // r12 = 288, r12 000008000000 20C1 nop.f 0 000108001100 20C2 br.ret.sptk.many rp ;; // br0 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 73 NetIoRead 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 } .endp NetIoRead Routine Size: 2192 bytes, Routine Base: $CODE$ + 1840 .proc NetIoReadAst .align 32 .global NetIoReadAst NetIoReadAst: // 063239 { .mii 002C00B26A00 20D0 alloc r40 = rspfs, 1, 10, 8, 0 012000040380 20D1 mov r14 = 32 010800C00080 20D2 mov r2 = sp // r2 = r12 } { .mmi 010800100A80 20E0 mov r42 = gp ;; // r42 = r1 010028E183C0 20E1 sub r15 = sp, r14 // r15 = r12, r14 0001880009C0 20E2 mov r39 = rp ;; // r39 = br0 } { .mii 0080C0F00380 20F0 ld8 r14 = [r15] 010800F00300 20F1 mov sp = r15 // r12 = r15 010802080800 20F2 adds in0 = 64, in0 ;; // r32 = 64, r32 // 063262 } { .mii 00B08A080200 2100 ld4 r8 = [in0], -64 // r8 = [r32], -64 000198000A40 2101 mov r41 = pr ;; // 063239 01C400800200 2102 cmp4.eq pr8, pr0 = r0, r8 // 063262 } { .mfb 000008000000 2110 nop.m 0 000008000000 2111 nop.f 0 008600006008 2112 (pr8) br.cond.dpnt.many L$64 ;; } { .mii 01080A0E00C0 2120 adds r3 = 240, in0 // r3 = 240, r32 // 063265 01080A0E4240 2121 adds r9 = 242, in0 // r9 = 242, r32 // 063266 000008000000 2122 nop.i 0 ;; } { .mmi 008C40310000 2130 st2 [r3] = r8 // 063265 008C40900000 2131 st2 [r9] = r0 // 063266 000008000000 2132 nop.i 0 ;; } 2140 L$64: // 063267 { .mii 01080A0E00C0 2140 adds r3 = 240, in0 // r3 = 240, r32 // 063269 01080A0E0200 2141 adds r8 = 240, in0 // r8 = 240, r32 // 063271 010802038240 2142 adds r9 = 28, in0 ;; // r9 = 28, r32 // 063269 } { .mmi 0080403000C0 2150 ld2 r3 = [r3] 008040800200 2151 ld2 r8 = [r8] // 063271 000008000000 2152 nop.i 0 ;; } { .mii 010802038800 2160 adds in0 = 28, in0 // r32 = 28, r32 // 063269 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 74 NetIoReadAst 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 01C830802000 2161 cmp.eq pr0, pr6 = 1, r8 // 063271 000008000000 2162 nop.i 0 ;; } { .mfi 00BC8A007900 2170 st4 [in0] = r3, -28 // [r32] = r3, -28 // 063269 000008000000 2171 nop.f 0 000008000000 2172 nop.i 0 ;; } { .mfb 000008000000 2180 nop.m 0 000008000000 2181 nop.f 0 00860001E006 2182 (pr6) br.cond.dpnt.many L$67 ;; // 063271 } { .mmi 010802028800 2190 adds in0 = 20, in0 ;; // r32 = 20, r32 // 063272 00B08A0D8280 2191 ld4 r10 = [in0], -20 // r10 = [r32], -20 000008000000 2192 nop.i 0 ;; } { .mfb 01C440A00240 21A0 cmp4.eq pr9, pr8 = r0, r10 000008000000 21A1 nop.f 0 00860001A008 21A2 (pr8) br.cond.dpnt.many L$67 ;; // 063271 } { .mmi 010802030800 21B0 adds in0 = 24, in0 ;; // r32 = 24, r32 // 063272 00B08A0D00C0 21B1 ld4 r3 = [in0], -24 // r3 = [r32], -24 000008000000 21B2 nop.i 0 ;; } { .mfb 01C430300000 21C0 cmp4.eq pr0, pr6 = r0, r3 000008000000 21C1 nop.f 0 008600016006 21C2 (pr6) br.cond.dpnt.many L$67 ;; // 063271 } { .mmi 01080A058240 21D0 adds r9 = 172, in0 ;; // r9 = 172, r32 // 063275 008080900240 21D1 ld4 AstFunction = [r9] // r9 = [r9] 000008000000 21D2 nop.i 0 ;; } { .mib 01C400012240 21E0 cmp4.eq pr9, pr0 = AstFunction, r0 // pr9, pr0 = r9, r0 0000B0900240 21E1 sxt4 AstFunction = AstFunction // r9 = r9 008600010009 21E2 (pr9) br.cond.dpnt.many L$72 ;; } { .mii 01080A060200 21F0 adds r8 = 176, in0 // r8 = 176, r32 // 063277 01080A060280 21F1 adds r10 = 176, in0 // r10 = 176, r32 // 063278 01080A058800 21F2 adds in0 = 172, in0 // r32 = 172, r32 } { .mmi 012000002640 2200 mov ai = 1 ;; // r25 = 1 // 063279 008080800200 2201 ld4 r8 = [r8] // 063277 000008000000 2202 nop.i 0 ;; } { .mmi 008C80A00000 2210 st4 [r10] = r0 // 063278 008C82000000 2211 st4 [in0] = r0 // [r32] = r0 010800900240 2212 adds r9 = 0, r9 ;; // 063279 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 75 NetIoReadAst 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 } { .mii 00A0C09100C0 2220 ld8 r3 = [r9], 8 0000B0800AC0 2221 sxt4 out0 = r8 ;; // r43 = r8 // 063277 000E00106180 2222 mov br6 = r3 // 063279 } { .mfi 0080C0900040 2230 ld8 gp = [r9] // r1 = [r9] 000008000000 2231 nop.f 0 000008000000 2232 nop.i 0 ;; } { .mfb 000008000000 2240 nop.m 0 000008000000 2241 nop.f 0 00210000C000 2242 br.call.sptk.few rp = br6 ;; // br0 = br6 } { .mfi 010802A00040 2250 mov gp = r42 // r1 = r42 000008000000 2251 nop.f 0 000008000000 2252 nop.i 0 } 2260 L$72: // 063280 { .mfb 000008000000 2260 nop.m 0 000008000000 2261 nop.f 0 00800010B000 2262 br.sptk.many L$103 ;; // 063281 } 2270 L$67: // 063282 { .mmi 01C4300401C0 2270 cmp4.eq pr7, pr6 = ioptr, r0 ;; // pr7, pr6 = r32, r0 // 063284 01C000001247 2271 (pr7) cmp.eq.unc pr9, pr0 = r0, r0 01C000001206 2272 (pr6) cmp.eq.unc pr8, pr0 = r0, r0 } { .bbb 008600002008 2280 (pr8) br.cond.dpnt.many L$74 004000000000 2281 nop.b 0 008600056009 2282 (pr9) br.cond.dpnt.many L$75 ;; } 2290 L$74: { .mii 012000100840 2290 add r33 = @ltoffx(Watch), gp // r33 = @ltoffx(Watch), r1 // 063286 0120C0000440 2291 mov r17 = 3072 010802088800 2292 adds in0 = 68, in0 ;; // r32 = 68, r32 // 063284 } { .mmi 0080C2100840 22A0 ld8.mov r33 = [r33], Watch // 063286 00B08A0784C0 22A1 ld4 r19 = [in0], -68 // r19 = [r32], -68 // 063284 000008000000 22A2 nop.i 0 ;; } { .mii 0108021F80C0 22B0 adds r3 = 124, r33 // 063286 01C461300340 22B1 cmp4.eq pr13, pr12 = r0, r19 ;; // 063284 0111603F0200 22B2 and r8 = -8, r3 ;; // 063286 } { .mmi 01C058806000 22C0 cmp.eq pr0, pr11 = r3, r8 00A0C08102C0 22C1 ld8 r11 = [r8], 8 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 76 NetIoReadAst 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 000008000000 22C2 nop.i 0 ;; } { .mib 000008000000 22D0 nop.m 0 009E1000624B 22D1 (pr11) dep r9 = r3, r0, 3, 3 004000000000 22D2 nop.b 0 ;; } { .mmi 0080C080028B 22E0 (pr11) ld8 r10 = [r8] ;; 000008000000 22E1 nop.m 0 00F200B122CB 22E2 (pr11) shr.u r11 = r11, r9 } { .mmi 01012898024B 22F0 (pr11) sub r9 = 64, r9 ;; 000008000000 22F1 nop.m 0 00F24091428B 22F2 (pr11) shl r10 = r10, r9 ;; } { .mmi 010070B142CB 2300 (pr11) or r11 = r10, r11 ;; 0100611162C0 2301 and r11 = r11, r17 000008000000 2302 nop.i 0 ;; } { .mmi 01C000B003C0 2310 cmp.eq pr15, pr0 = r0, r11 ;; 01C20000034F 2311 (pr15) cmp.eq.or.andcm pr13, pr0 = r0, r0 000008000000 2312 nop.i 0 } { .mfb 000008000000 2320 nop.m 0 000008000000 2321 nop.f 0 00860004200D 2322 (pr13) br.cond.dpnt.many L$75 ;; } { .mmi 01C000001180 2330 cmp.eq.unc pr6, pr0 = r0, r0 ;; // 063289 01A000000188 2331 (pr8) cmp.ltu pr6, pr0 = r0, r0 000008000000 2332 nop.i 0 } { .bbb 008600002006 2340 (pr6) br.cond.dpnt.many L$79 004000000000 2341 nop.b 0 008000005000 2342 br.sptk.many L$78 ;; } 2350 L$79: { .mfi 0108000004C0 2350 mov r19 = r0 000008000000 2351 nop.f 0 000008000000 2352 nop.i 0 } 2360 L$78: { .mii 01080A0E4580 2360 adds r22 = 242, in0 // r22 = 242, r32 // 063294 010802030800 2361 adds in0 = 24, in0 ;; // r32 = 24, r32 // 063291 01080A028740 2362 adds r29 = 148, in0 // r29 = 148, r32 // 063296 } { .mlx 008082000500 2370 ld4 r20 = [in0] // r20 = [r32] // 063291 81FFFFFFFE00 2371 movl r21 = -2147483648 ;; Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 77 NetIoReadAst 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 01A000000A } { .mmi 0119FA0F8800 2380 adds in0 = -4, in0 // r32 = -4, r32 // 063294 008041600580 2381 ld2 r22 = [r22] 0120001006C0 2382 add r27 = @ltoff($LITERAL$+128), // r27 = @ltoff($LITERAL$+128), r1 // 063291 gp ;; } { .mii 0080820005C0 2390 ld4 r23 = [in0] // r23 = [r32] // 063294 012000100680 2391 add r26 = @ltoff($LITERAL$+136), // r26 = @ltoff($LITERAL$+136), r1 // 063291 gp 010061528540 2392 and r21 = r20, r21 } { .mmi 008081D00740 23A0 ld4 r29 = [r29] ;; // 063296 01000162E580 23A1 add r22 = r23, r22 // 063294 01C439500000 23A2 cmp4.eq pr0, pr7 = r0, r21 // 063291 } { .mlx 0080C1B006C0 23B0 ld8 r27 = $LITERAL$ // r27 = [r27] 0000000001FF 23B1 movl r30 = 2147483647 ;; // 063295 019FFFDFCF } { .mii 0080C1A00700 23C0 ld8 r28 = $LITERAL$ // r28 = [r26] // 063291 010800C207C0 23C1 adds r31 = 16, sp // r31 = 16, r12 // 063289 0000B1600580 23C2 sxt4 r22 = r22 } { .mmi 010800C30AC0 23D0 adds out0 = 24, sp ;; // r43 = 24, r12 010061E28500 23D1 and r20 = r20, r30 // 063295 010800C40B00 23D2 adds out1 = 32, sp // r44 = 32, r12 // 063289 } { .mii 012000100C00 23E0 add out5 = @ltoff($LITERAL$+64), // r48 = @ltoff($LITERAL$+64), r1 // 063290 gp 0000B1D00740 23E1 sxt4 r29 = r29 ;; // 063296 012000100B40 23E2 add out2 = @ltoff($LITERAL$+16), // r45 = @ltoff($LITERAL$+16), r1 // 063289 gp } { .mii 01080A0B8640 23F0 adds ai = 220, in0 // r25 = 220, r32 // 063292 010801B00707 23F1 (pr7) mov r28 = r27 // 063291 01080A0BC600 23F2 adds r24 = 222, in0 ;; // r24 = 222, r32 // 063293 } { .mmi 008CC1F2C000 2400 st8 [r31] = r22 // 063289 008CC2B28000 2401 st8 [out0] = r20 // [r43] = r20 012040000B80 2402 mov out3 = 1024 ;; // r46 = 1024 } { .mii 008CC2C3A000 2410 st8 [out1] = r29 // [r44] = r29 0000B1300AC0 2411 sxt4 out0 = r19 // r43 = r19 0119FA0D8800 2412 adds in0 = -20, in0 ;; // r32 = -20, r32 // 063293 } { .mmi Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 78 NetIoReadAst 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 0080C3000BC0 2420 ld8 out4 = $LITERAL$ // r47 = [r48] // 063290 0080C2D00B00 2421 ld8 out1 = $LITERAL$ // r44 = [r45] // 063289 010801C00C00 2422 mov out5 = r28 ;; // r48 = r28 } { .mmi 008041900C40 2430 ld2 out6 = [ai] // r49 = [r25] // 063292 008041800C80 2431 ld2 out7 = [r24] // r50 = [r24] // 063293 012000016640 2432 mov ai = 11 ;; // r25 = 11 // 063289 } { .mfb 0120300CCB40 2440 mov out2 = 870 // r45 = 870 000008000000 2441 nop.f 0 00A000001000 2442 br.call.sptk.many rp = WatchThis ;; // br0 = WatchThis } { .mii 0108021F8880 2450 adds r34 = 124, r33 // 063297 0120800000C0 2451 mov r3 = 2048 010802A00040 2452 mov gp = r42 ;; // r1 = r42 // 063289 } { .mmi 0111622F08C0 2460 and r35 = -8, r34 ;; // 063297 01C03A344000 2461 cmp.eq pr0, pr7 = r34, r35 000008000000 2462 nop.i 0 } { .mmi 00A0C2310980 2470 ld8 r38 = [r35], 8 ;; 000008000000 2471 nop.m 0 009E10044907 2472 (pr7) dep r36 = r34, r0, 3, 3 ;; } { .mmi 0080C2300947 2480 (pr7) ld8 r37 = [r35] ;; 000008000000 2481 nop.m 0 00F202648987 2482 (pr7) shr.u r38 = r38, r36 } { .mmi 01012A480907 2490 (pr7) sub r36 = 64, r36 ;; 000008000000 2491 nop.m 0 00F24244A947 2492 (pr7) shl r37 = r37, r36 ;; } { .mmi 01007264A987 24A0 (pr7) or r38 = r37, r38 ;; 01006034C0C0 24A1 and r3 = r38, r3 000008000000 24A2 nop.i 0 ;; } { .mfb 01C040300240 24B0 cmp.eq pr9, pr8 = r0, r3 000008000000 24B1 nop.f 0 008600010009 24B2 (pr9) br.cond.dpnt.many L$75 ;; } { .mmi 01080A0E0200 24C0 adds r8 = 240, in0 ;; // r8 = 240, r32 // 063298 008040800200 24C1 ld2 r8 = [r8] 000008000000 24C2 nop.i 0 ;; } { .mib 000008000000 24D0 nop.m 0 00A0508002C0 24D1 tbit.z pr11, pr10 = r8, 0 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 79 NetIoReadAst 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 00860000C00B 24D2 (pr11) br.cond.dpnt.many L$75 ;; } { .mii 01080A048240 24E0 adds r9 = 164, in0 // r9 = 164, r32 // 063299 010802028800 24E1 adds in0 = 20, in0 ;; // r32 = 20, r32 01080A0BC2C0 24E2 adds r11 = 222, in0 // r11 = 222, r32 // 063300 } { .mmi 008080900240 24F0 ld4 r9 = [r9] // 063299 008082000280 24F1 ld4 r10 = [in0] // r10 = [r32] 0119FA0D8800 24F2 adds in0 = -20, in0 ;; // r32 = -20, r32 } { .mii 008040B00B00 2500 ld2 out1 = [r11] // r44 = [r11] // 063300 0000B0900240 2501 sxt4 r9 = r9 // 063299 012000004640 2502 mov ai = 2 ;; // r25 = 2 } { .mfb 010000A12AC0 2510 add out0 = r9, r10 // r43 = r9, r10 000008000000 2511 nop.f 0 00A000001000 2512 br.call.sptk.many rp = WatchDataDump ;; // br0 = WatchDataDump } { .mfi 010802A00040 2520 mov gp = r42 // r1 = r42 000008000000 2521 nop.f 0 000008000000 2522 nop.i 0 } 2530 L$75: // 063302 { .mmi 01080A0E0840 2530 adds r33 = 240, in0 ;; // r33 = 240, r32 // 063304 008042100840 2531 ld2 r33 = [r33] 000008000000 2532 nop.i 0 ;; } { .mib 000008000000 2540 nop.m 0 00A0321001C0 2541 tbit.z pr7, pr6 = r33, 0 008600064007 2542 (pr7) br.cond.dpnt.many L$83 ;; } { .mii 01080A058240 2550 adds r9 = 172, in0 // r9 = 172, r32 // 063311 01080A0E4900 2551 adds r36 = 242, in0 // r36 = 242, r32 // 063310 01080A0E48C0 2552 adds r35 = 242, in0 // r35 = 242, r32 // 063308 } { .mmi 010802028800 2560 adds in0 = 20, in0 ;; // r32 = 20, r32 // 063310 008080900240 2561 ld4 r9 = [r9] // 063311 000008000000 2562 nop.i 0 } { .mmi 00A0820C8200 2570 ld4 r8 = [in0], 100 ;; // r8 = [r32], 100 // 063310 00B0CA0F00C0 2571 ld8 r3 = [in0], -8 // r3 = [r32], -8 // 063309 0000B0900240 2572 sxt4 r9 = r9 // 063311 } { .mmi 008042400900 2580 ld2 r36 = [r36] ;; // 063310 00B0CA0F0980 2581 ld8 r38 = [in0], -8 // r38 = [r32], -8 // 063308 0100024104C0 2582 add r19 = r8, r36 // 063310 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 80 NetIoReadAst 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 } { .mii 0080423008C0 2590 ld2 r35 = [r35] // 063308 01C400012240 2591 cmp4.eq pr9, pr0 = r9, r0 ;; // 063311 0100023060C0 2592 add r3 = r3, r35 // 063309 } { .mmi 01000234C980 25A0 add r38 = r38, r35 // 063308 00B0CA0F0940 25A1 ld8 r37 = [in0], -8 // r37 = [r32], -8 // 063307 000008000000 25A2 nop.i 0 ;; } { .mmi 010802502940 25B0 adds r37 = 1, r37 00B0CA068880 25B1 ld8 r34 = [in0], -76 // r34 = [r32], -76 // 063306 000008000000 25B2 nop.i 0 ;; } { .mmi 010802202880 25C0 adds r34 = 1, r34 00AC82027900 25C1 st4 [in0] = r19, 100 // [r32] = r19, 100 // 063310 000008000000 25C2 nop.i 0 ;; } { .mmi 00BCCA007E00 25D0 st8 [in0] = r3, -8 ;; // [r32] = r3, -8 // 063309 00BCCA04DE00 25D1 st8 [in0] = r38, -8 // [r32] = r38, -8 // 063308 000008000000 25D2 nop.i 0 ;; } { .mmi 00BCCA04BE00 25E0 st8 [in0] = r37, -8 ;; // [r32] = r37, -8 // 063307 00BCCA044800 25E1 st8 [in0] = r34, -96 // [r32] = r34, -96 // 063306 000008000000 25E2 nop.i 0 ;; } { .mfb 000008000000 25F0 nop.m 0 000008000000 25F1 nop.f 0 008600014009 25F2 (pr9) br.cond.dpnt.many L$85 ;; // 063311 } { .mlx 010802030800 2600 adds in0 = 24, in0 // r32 = 24, r32 // 063313 01FFFFFFFE00 2601 movl r22 = -2147483648 ;; 01A000000B } { .mlx 00B08A0D0540 2610 ld4 r21 = [in0], -24 // r21 = [r32], -24 8000000001FF 2611 movl r23 = 2147483647 ;; // 063315 019FFFDFCB } { .mii 01006162A580 2620 and r22 = r21, r22 // 063313 01006172A540 2621 and r21 = r21, r23 ;; // 063315 01A469526000 2622 cmp4.ltu pr0, pr13 = r19, r21 } { .mmi 01C4516002C0 2630 cmp4.eq pr11, pr10 = r0, r22 ;; // 063313 01C2000002CD 2631 (pr13) cmp.eq.or.andcm pr11, pr0 = r0, r0 // 063315 000008000000 2632 nop.i 0 } { .mfb Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 81 NetIoReadAst 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 000008000000 2640 nop.m 0 000008000000 2641 nop.f 0 00860000A00B 2642 (pr11) br.cond.dpnt.many L$85 ;; } { .mii 01200000A640 2650 mov ai = 5 // r25 = 5 // 063318 012000000BC0 2651 mov out4 = 0 // r47 = 0 010800000B80 2652 mov out3 = r0 // r46 = r0 } { .mmi 010800000B40 2660 mov out2 = r0 ;; // r45 = r0 010800000B00 2661 mov out1 = r0 // r44 = r0 010802000AC0 2662 mov out0 = ioptr // r43 = r32 } { .mfb 000008000000 2670 nop.m 0 000008000000 2671 nop.f 0 00A000001000 2672 br.call.sptk.many rp = NetIoRead ;; // br0 = NetIoRead } { .mfb 000008000000 2680 nop.m 0 000008000000 2681 nop.f 0 008000087000 2682 br.sptk.many L$103 ;; // 063319 } 2690 L$85: // 063322 { .mmi 0120001008C0 2690 add r35 = @ltoffx(Watch), gp ;; // r35 = @ltoffx(Watch), r1 // 063324 0080C23008C0 2691 ld8.mov r35 = [r35], Watch 000008000000 2692 nop.i 0 ;; } { .mmi 0108023E8900 26A0 adds r36 = 116, r35 ;; 0111624F8880 26A1 and r34 = -4, r36 000008000000 26A2 nop.i 0 ;; } { .mmi 01C03A248180 26B0 cmp.eq pr6, pr7 = r36, r34 ;; 0080822000C6 26B1 (pr6) ld4 r3 = [r34] 009E08048947 26B2 (pr7) dep r37 = r36, r0, 3, 2 ;; } { .mmi 00A0822080C7 26C0 (pr7) ld4 r3 = [r34], 4 ;; 008082200987 26C1 (pr7) ld4 r38 = [r34] 00F20034A0C7 26C2 (pr7) shr.u r3 = r3, r37 } { .mmi 01012A540947 26D0 (pr7) sub r37 = 32, r37 ;; 000008000000 26D1 nop.m 0 00F24254C987 26D2 (pr7) shl r38 = r38, r37 ;; } { .mmi 01007034C0C7 26E0 (pr7) or r3 = r38, r3 ;; 000008000000 26E1 nop.m 0 0000903000C7 26E2 (pr7) zxt4 r3 = r3 ;; } { .mfb 01C400300240 26F0 cmp4.eq pr9, pr0 = r0, r3 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 82 NetIoReadAst 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 000008000000 26F1 nop.f 0 008600066009 26F2 (pr9) br.cond.dpnt.many L$88 ;; } { .mmi 010802010800 2700 adds in0 = 8, in0 ;; // r32 = 8, r32 // 063326 00B08A0F0200 2701 ld4 r8 = [in0], -8 // r8 = [r32], -8 000008000000 2702 nop.i 0 ;; } { .mfb 01C450800000 2710 cmp4.eq pr0, pr10 = r0, r8 000008000000 2711 nop.f 0 00860001A00A 2712 (pr10) br.cond.dpnt.many L$89 ;; } { .mii 01080A048AC0 2720 adds out0 = 164, in0 // r43 = 164, r32 // 063328 012000100240 2721 add r9 = @ltoffx(Watch), gp // r9 = @ltoffx(Watch), r1 // 063329 012000006640 2722 mov ai = 3 ;; // r25 = 3 // 063328 } { .mmi 008082B00AC0 2730 ld4 out0 = [out0] // r43 = [r43] 0080C0900240 2731 ld8.mov r9 = [r9], Watch // 063329 0000B1300B00 2732 sxt4 out1 = r19 ;; // r44 = r19 // 063328 } { .mib 0108209B8B40 2740 adds out2 = 604, r9 // r45 = 604, r9 // 063329 0000B2B00AC0 2741 sxt4 out0 = out0 // r43 = r43 // 063328 00A000001000 2742 br.call.sptk.many rp = WatchTrigger ;; // br0 = WatchTrigger } { .mib 01C4008001C0 2750 cmp4.eq pr7, pr0 = r0, r8 010802A00040 2751 mov gp = r42 // r1 = r42 008600012007 2752 (pr7) br.cond.dpnt.many L$89 ;; } { .mii 010802390940 2760 adds r37 = 72, r35 // 063332 012000002880 2761 mov r34 = 1 ;; // 063331 0111625F8980 2762 and r38 = -4, r37 // 063332 } { .mmi 010802008800 2770 adds in0 = 4, in0 ;; // r32 = 4, r32 // 063331 01C04A64A200 2771 cmp.eq pr8, pr9 = r37, r38 // 063332 000008000000 2772 nop.i 0 } { .mmi 00BC8A045F00 2780 st4 [in0] = r34, -4 ;; // [r32] = r34, -4 // 063331 008082600288 2781 (pr8) ld4 r10 = [r38] // 063332 009E0804A0C9 2782 (pr9) dep r3 = r37, r0, 3, 2 ;; } { .mmi 00A082608289 2790 (pr9) ld4 r10 = [r38], 4 ;; 008082600249 2791 (pr9) ld4 r9 = [r38] 00F200A06289 2792 (pr9) shr.u r10 = r10, r3 } { .mmi 0101283400C9 27A0 (pr9) sub r3 = 32, r3 ;; 000008000000 27A1 nop.m 0 00F240312249 27A2 (pr9) shl r9 = r9, r3 ;; Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 83 NetIoReadAst 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 } { .mmi 010070A12289 27B0 (pr9) or r10 = r9, r10 ;; 000008000000 27B1 nop.m 0 000090A00289 27B2 (pr9) zxt4 r10 = r10 ;; } { .mfb 01C400A002C0 27C0 cmp4.eq pr11, pr0 = r0, r10 000008000000 27C1 nop.f 0 00860000400B 27C2 (pr11) br.cond.dpnt.many L$89 ;; } { .mmi 010802010800 27D0 adds in0 = 8, in0 ;; // r32 = 8, r32 00BC8A045E00 27D1 st4 [in0] = r34, -8 // [r32] = r34, -8 000008000000 27D2 nop.i 0 ;; } 27E0 L$89: // 063334 { .mmi 010802008800 27E0 adds in0 = 4, in0 ;; // r32 = 4, r32 // 063335 00B08A0F8440 27E1 ld4 r17 = [in0], -4 // r17 = [r32], -4 000008000000 27E2 nop.i 0 ;; } { .mfb 01C461100000 27F0 cmp4.eq pr0, pr12 = r0, r17 000008000000 27F1 nop.f 0 00860000600C 27F2 (pr12) br.cond.dpnt.many L$93 ;; } { .mmi 010802010800 2800 adds in0 = 8, in0 ;; // r32 = 8, r32 00B08A0F0480 2801 ld4 r18 = [in0], -8 // r18 = [r32], -8 000008000000 2802 nop.i 0 ;; } { .mfb 01C4012003C0 2810 cmp4.eq pr15, pr0 = r0, r18 000008000000 2811 nop.f 0 00860004200F 2812 (pr15) br.cond.dpnt.many L$88 ;; } 2820 L$93: { .mib 012000002640 2820 mov ai = 1 // r25 = 1 // 063337 010802000AC0 2821 mov out0 = ioptr // r43 = r32 00A000001000 2822 br.call.sptk.many rp = WatchSetTrigger ;; // br0 = WatchSetTrigger } { .mii 010802008800 2830 adds in0 = 4, in0 // r32 = 4, r32 // 063338 010802A00040 2831 mov gp = r42 // r1 = r42 // 063337 000008000000 2832 nop.i 0 ;; } { .mfi 00BC8A001F00 2840 st4 [in0] = r0, -4 // [r32] = r0, -4 // 063338 000008000000 2841 nop.f 0 000008000000 2842 nop.i 0 ;; } { .mfb 000008000000 2850 nop.m 0 000008000000 2851 nop.f 0 00800003B000 2852 br.sptk.many L$88 ;; // 063339 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 84 NetIoReadAst 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 } 2860 L$83: // 063342 { .mmi 01C8321581C0 2860 cmp.eq pr7, pr6 = 44, r33 ;; // 063345 01C000001247 2861 (pr7) cmp.eq.unc pr9, pr0 = r0, r0 01C000001206 2862 (pr6) cmp.eq.unc pr8, pr0 = r0, r0 } { .bbb 008600002008 2870 (pr8) br.cond.dpnt.many L$95 004000000000 2871 nop.b 0 008600006009 2872 (pr9) br.cond.dpnt.many L$96 ;; } 2880 L$95: { .mmi 010802040800 2880 adds in0 = 32, in0 ;; // r32 = 32, r32 // 063346 0080820008C0 2881 ld4 r35 = [in0] // r35 = [r32] 000008000000 2882 nop.i 0 ;; } { .mmi 0108023028C0 2890 adds r35 = 1, r35 ;; 00BC8A047800 2891 st4 [in0] = r35, -32 // [r32] = r35, -32 000008000000 2892 nop.i 0 ;; } 28A0 L$96: { .mmi 010802048800 28A0 adds in0 = 36, in0 ;; // r32 = 36, r32 // 063348 00B08A0B8980 28A1 ld4 r38 = [in0], -36 // r38 = [r32], -36 000008000000 28A2 nop.i 0 ;; } { .mfb 01C452600000 28B0 cmp4.eq pr0, pr10 = r0, r38 000008000000 28B1 nop.f 0 00860000600A 28B2 (pr10) br.cond.dpnt.many L$97 ;; } { .mmi 01080A0E0880 28C0 adds r34 = 240, in0 ;; // r34 = 240, r32 // 063349 008042200880 28C1 ld2 r34 = [r34] 000008000000 28C2 nop.i 0 ;; } { .mmi 010802048800 28D0 adds in0 = 36, in0 ;; // r32 = 36, r32 00BC8A045700 28D1 st4 [in0] = r34, -36 // [r32] = r34, -36 000008000000 28D2 nop.i 0 ;; } 28E0 L$97: { .mii 0120800604C0 28E0 mov r19 = 2096 // 063351 012218048480 28E1 addl r18 = 8612, r0 // 063357 012208028440 28E2 addl r17 = 8340, r0 // 063356 } { .mmi 0120200582C0 28F0 mov r11 = 556 ;; // 063355 0122080D8280 28F1 addl r10 = 8428, r0 // 063354 012010078240 28F2 mov r9 = 316 // 063353 } { .mii 0122080B8200 2900 addl r8 = 8412, r0 // 063352 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 85 NetIoReadAst 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 01C001342100 2901 cmp.eq pr4, pr0 = r33, r19 ;; // 063351 01C0012420C0 2902 cmp.eq pr3, pr0 = r33, r18 // 063357 } { .mii 01C071142280 2910 cmp.eq pr10, pr14 = r33, r17 // 063356 01C000B422C0 2911 cmp.eq pr11, pr0 = r33, r11 // 063355 01C030A421C0 2912 cmp.eq pr7, pr6 = r33, r10 ;; // 063354 } { .mii 01C0009423C0 2920 cmp.eq pr15, pr0 = r33, r9 // 063353 01C060842340 2921 cmp.eq pr13, pr12 = r33, r8 // 063352 01C240000244 2922 (pr4) cmp.eq.or.andcm pr9, pr8 = r0, r0 // 063351 } { .mmi 01C200000283 2930 (pr3) cmp.eq.or.andcm pr10, pr0 = r0, r0 ;; // 063357 01C2300001CB 2931 (pr11) cmp.eq.or.andcm pr7, pr6 = r0, r0 // 063355 01C20000034F 2932 (pr15) cmp.eq.or.andcm pr13, pr0 = r0, r0 ;; // 063353 } { .mii 01C24000024D 2940 (pr13) cmp.eq.or.andcm pr9, pr8 = r0, r0 01C2000001CA 2941 (pr10) cmp.eq.or.andcm pr7, pr0 = r0, r0 ;; // 063357 01C200000247 2942 (pr7) cmp.eq.or.andcm pr9, pr0 = r0, r0 } { .mfb 000008000000 2950 nop.m 0 000008000000 2951 nop.f 0 00860001A009 2952 (pr9) br.cond.dpnt.many L$88 ;; // 063350 } { .mii 01080A068500 2960 adds r20 = 180, in0 // r20 = 180, r32 // 063361 012000100540 2961 add r21 = @ltoff($LITERAL$+56), gp // r21 = @ltoff($LITERAL$+56), r1 // 063359 000008000000 2962 nop.i 0 ;; } { .mmi 008081400500 2970 ld4 rqptr = [r20] // r20 = [r20] // 063361 0080C1500540 2971 ld8 r21 = $LITERAL$ // r21 = [r21] // 063359 000008000000 2972 nop.i 0 ;; } { .mib 01C400028300 2980 cmp4.eq pr12, pr0 = rqptr, r0 // pr12, pr0 = r20, r0 // 063361 0000B1400500 2981 sxt4 rqptr = rqptr // r20 = r20 00860000A00C 2982 (pr12) br.cond.dpnt.many L$101 ;; } { .mii 0108B1450500 2990 adds r20 = 2856, r20 // 063362 012000100580 2991 add r22 = @ltoff($LITERAL$+56), gp // r22 = @ltoff($LITERAL$+56), r1 // 063359 000008000000 2992 nop.i 0 ;; } { .mmi 008081400500 29A0 ld4 r20 = [r20] // 063362 0080C1600580 29A1 ld8 r22 = $LITERAL$ // r22 = [r22] // 063359 000008000000 29A2 nop.i 0 ;; } { .mii 01C4000283C0 29B0 cmp4.eq pr15, pr0 = r20, r0 // 063362 0000B14005C0 29B1 sxt4 r23 = r20 ;; 0108016005CF 29B2 (pr15) mov r23 = r22 ;; // 063363 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 86 NetIoReadAst 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 } { .mfi 010801700540 29C0 mov sptr = r23 // r21 = r23 000008000000 29C1 nop.f 0 000008000000 29C2 nop.i 0 } 29D0 L$101: { .mii 012000100BC0 29D0 add out4 = @ltoff($LITERAL$+16), // r47 = @ltoff($LITERAL$+16), r1 // 063364 gp 012000100640 29D1 add ai = @ltoff($LITERAL$+48), gp // r25 = @ltoff($LITERAL$+48), r1 01080A0E0600 29D2 adds r24 = 240, in0 ;; // r24 = 240, r32 } { .mmi 0080C2F00B80 29E0 ld8 out3 = $LITERAL$ // r46 = [r47] 0080C1900B40 29E1 ld8 out2 = $LITERAL$ // r45 = [r25] 01200000C640 29E2 mov ai = 6 ;; // r25 = 6 } { .mii 008041800B00 29F0 ld2 out1 = [r24] // r44 = [r24] 010801500C00 29F1 mov out5 = sptr // r48 = r21 012038062BC0 29F2 mov out4 = 945 // r47 = 945 } { .mfb 010800000AC0 2A00 mov out0 = r0 // r43 = r0 000008000000 2A01 nop.f 0 00A000001000 2A02 br.call.sptk.many rp = ErrorNoticed ;; // br0 = ErrorNoticed } { .mfi 010802A00040 2A10 mov gp = r42 // r1 = r42 000008000000 2A11 nop.f 0 000008000000 2A12 nop.i 0 } 2A20 L$88: // 063366 { .mmi 01080A058900 2A20 adds r36 = 172, in0 ;; // r36 = 172, r32 // 063368 008082400900 2A21 ld4 AstFunction = [r36] // r36 = [r36] 000008000000 2A22 nop.i 0 ;; } { .mib 01C400048100 2A30 cmp4.eq pr4, pr0 = AstFunction, r0 // pr4, pr0 = r36, r0 0000B2400900 2A31 sxt4 AstFunction = AstFunction // r36 = r36 008600010004 2A32 (pr4) br.cond.dpnt.many L$103 ;; } { .mii 01080A0608C0 2A40 adds r35 = 176, in0 // r35 = 176, r32 // 063370 01080A060940 2A41 adds r37 = 176, in0 // r37 = 176, r32 // 063371 01080A058800 2A42 adds in0 = 172, in0 // r32 = 172, r32 } { .mmi 012000002640 2A50 mov ai = 1 ;; // r25 = 1 // 063372 0080823008C0 2A51 ld4 r35 = [r35] // 063370 000008000000 2A52 nop.i 0 ;; } { .mmi 008C82500000 2A60 st4 [r37] = r0 // 063371 008C82000000 2A61 st4 [in0] = r0 // [r32] = r0 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 87 NetIoReadAst 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 010802400900 2A62 adds r36 = 0, r36 ;; // 063372 } { .mii 00A0C2410880 2A70 ld8 r34 = [r36], 8 0000B2300AC0 2A71 sxt4 out0 = r35 ;; // r43 = r35 // 063370 000E00144180 2A72 mov br6 = r34 // 063372 } { .mfi 0080C2400040 2A80 ld8 gp = [r36] // r1 = [r36] 000008000000 2A81 nop.f 0 000008000000 2A82 nop.i 0 ;; } { .mfb 000008000000 2A90 nop.m 0 000008000000 2A91 nop.f 0 00210000C000 2A92 br.call.sptk.few rp = br6 ;; // br0 = br6 } { .mfi 010802A00040 2AA0 mov gp = r42 // r1 = r42 000008000000 2AA1 nop.f 0 000008000000 2AA2 nop.i 0 } 2AB0 L$103: // 063374 { .mii 000008000000 2AB0 nop.m 0 0016000527C0 2AB1 mov pr = r41, -65474 ;; 000154050000 2AB2 mov.i rspfs = r40 ;; } { .mii 000008000000 2AC0 nop.m 0 000E0014E000 2AC1 mov rp = r39 // br0 = r39 010800C40300 2AC2 adds sp = 32, sp // r12 = 32, r12 } { .mfb 000008000000 2AD0 nop.m 0 000008000000 2AD1 nop.f 0 000108001100 2AD2 br.ret.sptk.many rp ;; // br0 } .endp NetIoReadAst Routine Size: 2576 bytes, Routine Base: $CODE$ + 20D0 .proc NetIoReadStatus .align 32 .global NetIoReadStatus NetIoReadStatus: // 063384 { .mii 002C00B20A40 2AE0 alloc r41 = rspfs, 5, 6, 5, 0 012010000380 2AE1 mov r14 = 256 01080A058200 2AE2 adds r8 = 172, in0 // r8 = 172, r32 // 063404 } { .mmi 010800C00080 2AF0 mov r2 = sp ;; // r2 = r12 // 063384 010028E183C0 2AF1 sub r15 = sp, r14 // r15 = r12, r14 000188000A00 2AF2 mov r40 = rp ;; // r40 = br0 } { .mii Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 88 NetIoReadStatus 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 0080C0F00380 2B00 ld8 r14 = [r15] 010800F00300 2B01 mov sp = r15 // r12 = r15 010800100A80 2B02 mov r42 = gp // r42 = r1 } { .mmi 008080800BC0 2B10 ld4 out4 = [r8] ;; // r47 = [r8] // 063404 01C40005E200 2B11 cmp4.eq pr8, pr0 = out4, r0 // pr8, pr0 = r47, r0 0000B2F00BC0 2B12 sxt4 out4 = out4 // r47 = r47 } { .mfb 000008000000 2B20 nop.m 0 000008000000 2B21 nop.f 0 008600010008 2B22 (pr8) br.cond.dpnt.many L$150 ;; } { .mii 012000100280 2B30 add r10 = @ltoff($LITERAL$+192), // r10 = @ltoff($LITERAL$+192), r1 // 063407 gp 01200000A640 2B31 mov ai = 5 // r25 = 5 010800000B40 2B32 mov out2 = r0 // r45 = r0 } { .mmi 012010000B00 2B40 mov out1 = 256 ;; // r44 = 256 0080C0A00B80 2B41 ld8 out3 = $LITERAL$ // r46 = [r10] 010800F20AC0 2B42 adds out0 = 16, r15 // r43 = 16, r15 } { .mfb 000008000000 2B50 nop.m 0 000008000000 2B51 nop.f 0 00A000001000 2B52 br.call.sptk.many rp = FaoToBuffer ;; // br0 = FaoToBuffer } { .mii 010802A00040 2B60 mov gp = r42 // r1 = r42 012000008640 2B61 mov ai = 4 // r25 = 4 // 063408 010800C20B00 2B62 adds out1 = 16, sp // r44 = 16, r12 } { .mmi 012028048AC0 2B70 mov out0 = 676 ;; // r43 = 676 012000100B80 2B71 add out3 = @ltoff($LITERAL$+16), // r46 = @ltoff($LITERAL$+16), r1 gp 000008000000 2B72 nop.i 0 ;; } { .mib 0080C2E00B40 2B80 ld8 out2 = $LITERAL$ // r45 = [r46] 0120380BAB80 2B81 mov out3 = 989 // r46 = 989 00A000001000 2B82 br.call.sptk.many rp = // br0 = ErrorExitVmsStatus ErrorExitVmsStatus ;; } { .mfi 010802A00040 2B90 mov gp = r42 // r1 = r42 000008000000 2B91 nop.f 0 000008000000 2B92 nop.i 0 } 2BA0 L$150: // 063409 { .mii 01080A058940 2BA0 adds r37 = 172, in0 // r37 = 172, r32 // 063410 01080A060980 2BA1 adds r38 = 176, in0 // r38 = 176, r32 // 063411 01C432400000 2BA2 cmp4.eq pr0, pr6 = r0, ReadCount ;; // pr0, pr6 = r0, r36 // 063412 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 89 NetIoReadStatus 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 } { .mmb 008C82542000 2BB0 st4 [r37] = AstFunction // [r37] = r33 // 063410 008C82644000 2BB1 st4 [r38] = AstParam // [r38] = r34 // 063411 008600006006 2BB2 (pr6) br.cond.dpnt.many L$151 ;; // 063412 } { .mmi 01080A0489C0 2BC0 adds r39 = 164, in0 ;; // r39 = 164, r32 // 063414 008C82700000 2BC1 st4 [r39] = r0 010802030800 2BC2 adds in0 = 24, in0 ;; // r32 = 24, r32 // 063415 } { .mmi 00BC8A001A00 2BD0 st4 [in0] = r0, -24 ;; // [r32] = r0, -24 000008000000 2BD1 nop.m 0 000008000000 2BD2 nop.i 0 } 2BE0 L$151: // 063416 { .mii 01080A0E4240 2BE0 adds r9 = 242, in0 // r9 = 242, r32 // 063418 01080A0E0280 2BE1 adds r10 = 240, in0 ;; // r10 = 240, r32 // 063419 010802028800 2BE2 adds in0 = 20, in0 // r32 = 20, r32 // 063417 } { .mmi 01C400042240 2BF0 cmp4.eq pr9, pr0 = AstFunction, r0 ;; // pr9, pr0 = r33, r0 // 063421 00BC8A001B00 2BF1 st4 [in0] = r0, -20 // [r32] = r0, -20 // 063417 000008000000 2BF2 nop.i 0 } { .mmi 008C40948000 2C00 st2 [r9] = ReadCount ;; // [r9] = r36 // 063418 008C40A46000 2C01 st2 [r10] = AstStatus // [r10] = r35 // 063419 000008000000 2C02 nop.i 0 } { .mfb 000008000000 2C10 nop.m 0 000008000000 2C11 nop.f 0 008600008009 2C12 (pr9) br.cond.dpnt.many L$154 ;; // 063421 } { .mii 012000100AC0 2C20 add out0 = // r43 = @ltoff(@fptr(NetIoReadAst)), // 063422 @ltoff(@fptr(NetIoReadAst)), // r1 gp 012000004640 2C21 mov ai = 2 // r25 = 2 010802000B00 2C22 mov out1 = ioptr ;; // r44 = r32 } { .mfb 0080C2B00AC0 2C30 ld8 out0 = NetIoReadAst // r43 = [r43] 000008000000 2C31 nop.f 0 00A000001000 2C32 br.call.sptk.many rp = SysDclAst ;; // br0 = SysDclAst } { .mfb 010802A00040 2C40 mov gp = r42 // r1 = r42 000008000000 2C41 nop.f 0 008000005000 2C42 br.sptk.many L$155 ;; // 063423 } 2C50 L$154: { .mfb 010802000AC0 2C50 mov out0 = ioptr // r43 = r32 // 063424 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 90 NetIoReadStatus 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 000008000000 2C51 nop.f 0 00A000001000 2C52 br.call.sptk.many rp = NetIoReadAst ;; // br0 = NetIoReadAst } 2C60 L$155: // 063425 { .mii 000008000000 2C60 nop.m 0 000154052000 2C61 mov.i rspfs = r41 ;; 000E00150000 2C62 mov rp = r40 // br0 = r40 } { .mfb 010810C00300 2C70 adds sp = 256, sp // r12 = 256, r12 000008000000 2C71 nop.f 0 000108001100 2C72 br.ret.sptk.many rp ;; // br0 } .endp NetIoReadStatus Routine Size: 416 bytes, Routine Base: $CODE$ + 2AE0 .proc NetIoCheck .align 32 .global NetIoCheck NetIoCheck: // 063432 { .mii 002C0061C900 2C80 alloc r36 = rspfs, 1, 5, 8, 0 012000100200 2C81 add r8 = @ltoffx(EfnWait), gp // r8 = @ltoffx(EfnWait), r1 // 063445 012000060380 2C82 mov r14 = 48 // 063432 } { .mmi 0120001002C0 2C90 add r11 = // r11 = // 063446 @ltoffx(TcpIpSocketMaxSegSense), // @ltoffx(TcpIpSocketMaxSegSense), r1 gp ;; 0080C0800200 2C91 ld8.mov r8 = [r8], EfnWait // 063445 010028E183C0 2C92 sub r15 = sp, r14 // r15 = r12, r14 // 063432 } { .mii 0080C0B002C0 2CA0 ld8.mov r11 = [r11], TcpIpSocketMaxSegSense // 063446 010800C00080 2CA1 mov r2 = sp ;; // r2 = r12 // 063432 0001880008C0 2CA2 mov r35 = rp // r35 = br0 } { .mii 0080C0F00380 2CB0 ld8 r14 = [r15] 010800F00300 2CB1 mov sp = r15 // r12 = r15 010800F203C0 2CB2 adds r15 = 16, r15 ;; // 063445 } { .mmi 008080800200 2CC0 ld4 r8 = EfnWait // r8 = [r8] 0080420009C0 2CC1 ld2 out1 = [in0] // r39 = [r32] 012000018640 2CC2 mov ai = 12 ;; // r25 = 12 } { .mii 008CC0F00000 2CD0 st8 [r15] = r0 012000000B40 2CD1 mov out7 = 0 // r45 = 0 012000000B00 2CD2 mov out6 = 0 // r44 = 0 } { .mmi 012000000AC0 2CE0 mov out5 = 0 ;; // r43 = 0 012000000A80 2CE1 mov out4 = 0 // r42 = 0 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 91 NetIoCheck 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 010800F40A40 2CE2 adds out3 = 32, r15 // r41 = 32, r15 } { .mii 010800F303C0 2CF0 adds r15 = 24, r15 01200004EA00 2CF1 mov out2 = 39 ;; // r40 = 39 0000B0800980 2CF2 sxt4 out0 = r8 // r38 = r8 } { .mii 00BCC8F17E00 2D00 st8 [r15] = r11, -8 010800100940 2D01 mov r37 = gp // r37 = r1 // 063432 000008000000 2D02 nop.i 0 ;; } { .mmi 00BCC8F01E00 2D10 st8 [r15] = r0, -8 ;; // 063445 00BCC8F01A00 2D11 st8 [r15] = r0, -24 000008000000 2D12 nop.i 0 ;; } { .mfb 000008000000 2D20 nop.m 0 000008000000 2D21 nop.f 0 00A000001000 2D22 br.call.sptk.many rp = SYS$QIOW ;; // br0 = SYS$QIOW } { .mii 010800C60840 2D30 adds r33 = 48, sp // r33 = 48, r12 // 063447 00A0308001C0 2D31 tbit.z pr7, pr6 = status, 0 // pr7, pr6 = r8, 0 010802500040 2D32 mov gp = r37 ;; // r1 = r37 // 063445 } { .mmi 008042100840 2D40 ld2 r33 = [r33] ;; // 063447 010802100886 2D41 (pr6) mov r34 = r33 000008000000 2D42 nop.i 0 ;; } { .mmi 010800800887 2D50 (pr7) mov r34 = status ;; // r34 = r8 000008000000 2D51 nop.m 0 0000B2200200 2D52 sxt4 r8 = r34 ;; // 063448 } { .mii 000008000000 2D60 nop.m 0 000154048000 2D61 mov.i rspfs = r36 ;; 000E00146000 2D62 mov rp = r35 // br0 = r35 } { .mfb 010800C60300 2D70 adds sp = 48, sp // r12 = 48, r12 000008000000 2D71 nop.f 0 000108001100 2D72 br.ret.sptk.many rp ;; // br0 } .endp NetIoCheck Routine Size: 256 bytes, Routine Base: $CODE$ + 2C80 .proc NetIoInProgress .align 32 .global NetIoInProgress NetIoInProgress: // 063456 { .mii 002C00710940 2D80 alloc r37 = rspfs, 1, 6, 1, 0 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 92 NetIoInProgress 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 01080A078200 2D81 adds r8 = 188, in0 // r8 = 188, r32 // 063468 000188000900 2D82 mov r36 = rp ;; // r36 = br0 // 063456 } { .mii 0080808009C0 2D90 ld4 out0 = [r8] // r39 = [r8] // 063468 010800100980 2D91 mov r38 = gp ;; // r38 = r1 // 063456 01C40004E200 2D92 cmp4.eq pr8, pr0 = out0, r0 // pr8, pr0 = r39, r0 // 063468 } { .mib 000008000000 2DA0 nop.m 0 0000B27009C0 2DA1 sxt4 out0 = out0 // r39 = r39 008600006008 2DA2 (pr8) br.cond.dpnt.many L$52 ;; } { .mfb 012000002640 2DB0 mov ai = 1 // r25 = 1 // 063469 000008000000 2DB1 nop.f 0 00A000001000 2DB2 br.call.sptk.many rp = // br0 = Http2NetIoInProgress Http2NetIoInProgress ;; } { .mfb 010802600040 2DC0 mov gp = r38 // r1 = r38 000008000000 2DC1 nop.f 0 008000015000 2DC2 br.sptk.many L$269 ;; } 2DD0 L$52: { .mmi 01080A070840 2DD0 adds r33 = 184, in0 ;; // r33 = 184, r32 // 063471 0080821009C0 2DD1 ld4 out0 = [r33] // r39 = [r33] 000008000000 2DD2 nop.i 0 ;; } { .mib 01C40004E1C0 2DE0 cmp4.eq pr7, pr0 = out0, r0 // pr7, pr0 = r39, r0 0000B27009C0 2DE1 sxt4 out0 = out0 // r39 = r39 008600006007 2DE2 (pr7) br.cond.dpnt.many L$55 ;; } { .mfb 012000002640 2DF0 mov ai = 1 // r25 = 1 // 063472 000008000000 2DF1 nop.f 0 00A000001000 2DF2 br.call.sptk.many rp = // br0 = SesolaNetIoInProgress SesolaNetIoInProgress ;; } { .mfb 010802600040 2E00 mov gp = r38 // r1 = r38 000008000000 2E01 nop.f 0 00800000D000 2E02 br.sptk.many L$269 ;; } 2E10 L$55: { .mmi 01080A0808C0 2E10 adds r35 = 192, in0 ;; // r35 = 192, r32 // 063474 0080823008C0 2E11 ld4 r35 = [r35] 000008000000 2E12 nop.i 0 ;; } { .mfb 01C430046000 2E20 cmp4.eq pr0, pr6 = r35, r0 000008000000 2E21 nop.f 0 008600006006 2E22 (pr6) br.cond.dpnt.many L$56 ;; } Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 93 NetIoInProgress 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 { .mmi 01080A058800 2E30 adds in0 = 172, in0 ;; // r32 = 172, r32 008082000800 2E31 ld4 in0 = [in0] // r32 = [r32] 000008000000 2E32 nop.i 0 ;; } { .mmi 01C438040000 2E40 cmp4.eq pr0, pr7 = in0, r0 ;; // pr0, pr7 = r32, r0 01C000001187 2E41 (pr7) cmp.eq.unc pr6, pr0 = r0, r0 000008000000 2E42 nop.i 0 } 2E50 L$56: { .mmi 010800000200 2E50 mov r8 = r0 ;; 010800002206 2E51 (pr6) adds r8 = 1, r0 000008000000 2E52 nop.i 0 ;; } 2E60 L$269: { .mib 000008000000 2E60 nop.m 0 0000B0800200 2E61 sxt4 r8 = r8 004000000000 2E62 nop.b 0 } { .mii 000008000000 2E70 nop.m 0 00015404A000 2E71 mov.i rspfs = r37 ;; 000E00148000 2E72 mov rp = r36 // br0 = r36 } { .mfb 000008000000 2E80 nop.m 0 000008000000 2E81 nop.f 0 000108001100 2E82 br.ret.sptk.many rp ;; // br0 } .endp NetIoInProgress Routine Size: 272 bytes, Routine Base: $CODE$ + 2D80 .proc NetIoCancel .align 32 .global NetIoCancel NetIoCancel: // 063482 { .mii 002C00B1AA40 2E90 alloc r41 = rspfs, 1, 10, 2, 0 01080A078200 2E91 adds r8 = 188, in0 // r8 = 188, r32 // 063494 012080060240 2E92 mov r9 = 2096 ;; // 063492 } { .mii 008080800200 2EA0 ld4 r8 = [r8] // 063494 000188000A00 2EA1 mov r40 = rp // r40 = br0 // 063482 010802080800 2EA2 adds in0 = 64, in0 // r32 = 64, r32 // 063492 } { .mmi 010800100A80 2EB0 mov r42 = gp ;; // r42 = r1 // 063482 00BC8A013000 2EB1 st4 [in0] = r9, -64 // [r32] = r9, -64 // 063492 01C400010200 2EB2 cmp4.eq pr8, pr0 = r8, r0 ;; // 063494 } { .mfb 000008000000 2EC0 nop.m 0 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 94 NetIoCancel 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 000008000000 2EC1 nop.f 0 008600006008 2EC2 (pr8) br.cond.dpnt.many L$32 ;; } { .mib 012000002640 2ED0 mov ai = 1 // r25 = 1 // 063495 010802000AC0 2ED1 mov out0 = ioptr // r43 = r32 00A000001000 2ED2 br.call.sptk.many rp = // br0 = Http2NetIoCancel Http2NetIoCancel ;; } { .mfb 000008000000 2EE0 nop.m 0 000008000000 2EE1 nop.f 0 008000039000 2EE2 br.sptk.many L$270 ;; } 2EF0 L$32: // 063496 { .mmi 01080A070840 2EF0 adds r33 = 184, in0 ;; // r33 = 184, r32 // 063497 008082100840 2EF1 ld4 r33 = [r33] 000008000000 2EF2 nop.i 0 ;; } { .mfb 01C4000421C0 2F00 cmp4.eq pr7, pr0 = r33, r0 000008000000 2F01 nop.f 0 008600006007 2F02 (pr7) br.cond.dpnt.many L$35 ;; } { .mib 012000002640 2F10 mov ai = 1 // r25 = 1 // 063498 010802000AC0 2F11 mov out0 = ioptr // r43 = r32 00A000001000 2F12 br.call.sptk.many rp = // br0 = SesolaNetIoCancel SesolaNetIoCancel ;; } { .mfb 000008000000 2F20 nop.m 0 000008000000 2F21 nop.f 0 008000031000 2F22 br.sptk.many L$270 ;; } 2F30 L$35: // 063499 { .mmi 0108020A8800 2F30 adds in0 = 84, in0 ;; // r32 = 84, r32 // 063500 00B08A058880 2F31 ld4 r34 = [in0], -84 // r34 = [r32], -84 000008000000 2F32 nop.i 0 ;; } { .mfb 01AC32220000 2F40 cmp4.ltu pr0, pr6 = 16, r34 000008000000 2F41 nop.f 0 008600010006 2F42 (pr6) br.cond.dpnt.many L$38 ;; } { .mmi 01080A0808C0 2F50 adds r35 = 192, in0 ;; // r35 = 192, r32 // 063502 008082300AC0 2F51 ld4 out0 = [r35] // r43 = [r35] 000008000000 2F52 nop.i 0 ;; } { .mib 01C400056240 2F60 cmp4.eq pr9, pr0 = out0, r0 // pr9, pr0 = r43, r0 0000B2B00AC0 2F61 sxt4 out0 = out0 // r43 = r43 00860002A009 2F62 (pr9) br.cond.dpnt.many L$33 ;; } Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 95 NetIoCancel 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 { .mmi 01080A088940 2F70 adds r37 = 196, in0 ;; // r37 = 196, r32 008082500B00 2F71 ld4 out1 = [r37] // r44 = [r37] 000008000000 2F72 nop.i 0 ;; } { .mib 01C4000582C0 2F80 cmp4.eq pr11, pr0 = out1, r0 // pr11, pr0 = r44, r0 0000B2C00B00 2F81 sxt4 out1 = out1 // r44 = r44 00860002600B 2F82 (pr11) br.cond.dpnt.many L$33 ;; } { .mfb 012000004640 2F90 mov ai = 2 // r25 = 2 // 063504 000008000000 2F91 nop.f 0 00A000001000 2F92 br.call.sptk.many rp = SysDclAst ;; // br0 = SysDclAst } { .mii 01080A0889C0 2FA0 adds r39 = 196, in0 // r39 = 196, r32 // 063505 01080A080800 2FA1 adds in0 = 192, in0 // r32 = 192, r32 010802A00040 2FA2 mov gp = r42 ;; // r1 = r42 // 063504 } { .mmb 008C82700000 2FB0 st4 [r39] = r0 // 063505 008C82000000 2FB1 st4 [in0] = r0 // [r32] = r0 008000021000 2FB2 br.sptk.many L$33 ;; // 063506 } 2FC0 L$38: // 063508 { .mmi 010802040800 2FC0 adds in0 = 32, in0 ;; // r32 = 32, r32 // 063509 00B08A0C0840 2FC1 ld4 r33 = [in0], -32 // r33 = [r32], -32 000008000000 2FC2 nop.i 0 ;; } { .mfb 01AC32120000 2FD0 cmp4.ltu pr0, pr6 = 16, r33 000008000000 2FD1 nop.f 0 008600010006 2FD2 (pr6) br.cond.dpnt.many L$44 ;; } { .mmi 01080A058880 2FE0 adds r34 = 172, in0 ;; // r34 = 172, r32 // 063511 008082200AC0 2FE1 ld4 out0 = [r34] // r43 = [r34] 000008000000 2FE2 nop.i 0 ;; } { .mib 01C400056240 2FF0 cmp4.eq pr9, pr0 = out0, r0 // pr9, pr0 = r43, r0 0000B2B00AC0 2FF1 sxt4 out0 = out0 // r43 = r43 008600018009 2FF2 (pr9) br.cond.dpnt.many L$33 ;; } { .mmi 01080A060940 3000 adds r37 = 176, in0 ;; // r37 = 176, r32 008082500B00 3001 ld4 out1 = [r37] // r44 = [r37] 000008000000 3002 nop.i 0 ;; } { .mib 01C4000582C0 3010 cmp4.eq pr11, pr0 = out1, r0 // pr11, pr0 = r44, r0 0000B2C00B00 3011 sxt4 out1 = out1 // r44 = r44 00860001400B 3012 (pr11) br.cond.dpnt.many L$33 ;; } { .mfb Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 96 NetIoCancel 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 012000004640 3020 mov ai = 2 // r25 = 2 // 063513 000008000000 3021 nop.f 0 00A000001000 3022 br.call.sptk.many rp = SysDclAst ;; // br0 = SysDclAst } { .mii 01080A060980 3030 adds r38 = 176, in0 // r38 = 176, r32 // 063514 01080A058800 3031 adds in0 = 172, in0 // r32 = 172, r32 010802A00040 3032 mov gp = r42 ;; // r1 = r42 // 063513 } { .mmb 008C82600000 3040 st4 [r38] = r0 // 063514 008C82000000 3041 st4 [in0] = r0 // [r32] = r0 00800000F000 3042 br.sptk.many L$33 ;; // 063515 } 3050 L$44: // 063517 { .mmi 01080A0809C0 3050 adds r39 = 192, in0 ;; // r39 = 192, r32 // 063518 0080827009C0 3051 ld4 r39 = [r39] 000008000000 3052 nop.i 0 ;; } { .mfb 01C43004E000 3060 cmp4.eq pr0, pr6 = r39, r0 000008000000 3061 nop.f 0 008600006006 3062 (pr6) br.cond.dpnt.many L$48 ;; } { .mmi 01080A058840 3070 adds r33 = 172, in0 ;; // r33 = 172, r32 008082100840 3071 ld4 r33 = [r33] 000008000000 3072 nop.i 0 ;; } { .mfb 01C400042240 3080 cmp4.eq pr9, pr0 = r33, r0 000008000000 3081 nop.f 0 008600006009 3082 (pr9) br.cond.dpnt.many L$33 ;; } 3090 L$48: { .mib 008042000AC0 3090 ld2 out0 = [in0] // r43 = [r32] // 063519 012000002640 3091 mov ai = 1 // r25 = 1 00A000001000 3092 br.call.sptk.many rp = SYS$CANCEL ;; // br0 = SYS$CANCEL } 30A0 L$270: { .mfi 010802A00040 30A0 mov gp = r42 // r1 = r42 000008000000 30A1 nop.f 0 000008000000 30A2 nop.i 0 } 30B0 L$33: // 063520 { .mii 000008000000 30B0 nop.m 0 000154052000 30B1 mov.i rspfs = r41 ;; 000E00150000 30B2 mov rp = r40 // br0 = r40 } { .mfb 000008000000 30C0 nop.m 0 000008000000 30C1 nop.f 0 000108001100 30C2 br.ret.sptk.many rp ;; // br0 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 97 NetIoCancel 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 } .endp NetIoCancel Routine Size: 576 bytes, Routine Base: $CODE$ + 2E90 .proc NetIoCloseSocket .align 32 .global NetIoCloseSocket NetIoCloseSocket: // 063527 { .mii 002C00A22A00 30D0 alloc r40 = rspfs, 1, 9, 7, 0 01080A078200 30D1 adds r8 = 188, in0 // r8 = 188, r32 // 063539 0001880009C0 30D2 mov r39 = rp ;; // r39 = br0 // 063527 } { .mii 008080800200 30E0 ld4 r8 = [r8] // 063539 010800100A40 30E1 mov r41 = gp ;; // r41 = r1 // 063527 01C400010200 30E2 cmp4.eq pr8, pr0 = r8, r0 // 063539 } { .mfb 000008000000 30F0 nop.m 0 000008000000 30F1 nop.f 0 008600004008 30F2 (pr8) br.cond.dpnt.many L$20 ;; } { .mfb 012000002200 3100 mov r8 = 1 000008000000 3101 nop.f 0 008000029000 3102 br.sptk.many L$21 ;; } 3110 L$20: { .mmi 008042000240 3110 ld2 r9 = [in0] ;; // r9 = [r32] // 063541 01C048900000 3111 cmp.eq pr0, pr9 = r0, r9 000008000000 3112 nop.i 0 } { .mfb 000008000000 3120 nop.m 0 000008000000 3121 nop.f 0 008600004009 3122 (pr9) br.cond.dpnt.many L$22 ;; } { .mfb 012000002200 3130 mov r8 = 1 000008000000 3131 nop.f 0 008000023000 3132 br.sptk.many L$21 ;; } 3140 L$22: { .mii 008042000840 3140 ld2 channel = [in0] // r33 = [r32] // 063543 012000002640 3141 mov ai = 1 ;; // r25 = 1 010802100A80 3142 mov out0 = channel // r42 = r33 } { .mfb 000008000000 3150 nop.m 0 000008000000 3151 nop.f 0 00A000001000 3152 br.call.sptk.many rp = SYS$DASSGN ;; // br0 = SYS$DASSGN } { .mmi Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 98 NetIoCloseSocket 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 010802900040 3160 mov gp = r41 // r1 = r41 008C42000000 3161 st2 [in0] = r0 // [r32] = r0 // 063544 010800800880 3162 mov status = r8 ;; // r34 = r8 // 063543 } { .mmi 012000100900 3170 add r36 = @ltoff(Watch+124), gp ;; // r36 = @ltoff(Watch+124), r1 // 063546 0080C2400900 3171 ld8 r36 = Watch // r36 = [r36] 000008000000 3172 nop.i 0 ;; } { .mmi 008002400900 3180 ld1 r36 = Watch ;; // r36 = [r36] 000008000000 3181 nop.m 0 00A0324001C0 3182 tbit.z pr7, pr6 = r36, 0 } { .mfb 000008000000 3190 nop.m 0 000008000000 3191 nop.f 0 008600014007 3192 (pr7) br.cond.dpnt.many L$25 ;; } { .mfb 01C400040240 31A0 cmp4.eq pr9, pr0 = ioptr, r0 // pr9, pr0 = r32, r0 // 063547 000008000000 31A1 nop.f 0 008600006009 31A2 (pr9) br.cond.dpnt.many L$29 ;; } { .mmi 010802088800 31B0 adds in0 = 68, in0 ;; // r32 = 68, r32 008082000940 31B1 ld4 r37 = [in0] // r37 = [r32] 000008000000 31B2 nop.i 0 } { .mfb 000008000000 31C0 nop.m 0 000008000000 31C1 nop.f 0 008000005000 31C2 br.sptk.many L$28 ;; } 31D0 L$29: { .mfi 010800000940 31D0 mov r37 = r0 000008000000 31D1 nop.f 0 000008000000 31D2 nop.i 0 } 31E0 L$28: { .mii 012000100B00 31E0 add out2 = @ltoff($LITERAL$+16), // r44 = @ltoff($LITERAL$+16), r1 gp 012000100980 31E1 add r38 = @ltoff($LITERAL$+24), gp // r38 = @ltoff($LITERAL$+24), r1 01200000E640 31E2 mov ai = 7 ;; // r25 = 7 } { .mmi 0080C2C00AC0 31F0 ld8 out1 = $LITERAL$ // r43 = [r44] 0080C2600B80 31F1 ld8 out4 = $LITERAL$ // r46 = [r38] 0000B2200C00 31F2 sxt4 out6 = status ;; // r48 = r34 } { .mii 012000002B40 3200 mov out3 = 1 // r45 = 1 0000B2100BC0 3201 sxt4 out5 = channel // r47 = r33 0120400D0B00 3202 mov out2 = 1128 ;; // r44 = 1128 } Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 99 NetIoCloseSocket 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 { .mib 000008000000 3210 nop.m 0 0000B2500A80 3211 sxt4 out0 = r37 // r42 = r37 00A000001000 3212 br.call.sptk.many rp = WatchThis ;; // br0 = WatchThis } { .mfi 010802900040 3220 mov gp = r41 // r1 = r41 000008000000 3221 nop.f 0 000008000000 3222 nop.i 0 } 3230 L$25: // 063548 { .mib 000008000000 3230 nop.m 0 0000B2200200 3231 sxt4 r8 = status // r8 = r34 // 063550 004000000000 3232 nop.b 0 ;; } 3240 L$21: { .mii 000008000000 3240 nop.m 0 000154050000 3241 mov.i rspfs = r40 ;; 000E0014E000 3242 mov rp = r39 // br0 = r39 } { .mfb 000008000000 3250 nop.m 0 000008000000 3251 nop.f 0 000108001100 3252 br.ret.sptk.many rp ;; // br0 } .endp NetIoCloseSocket Routine Size: 400 bytes, Routine Base: $CODE$ + 30D0 .proc NetIoDassgnChannel .align 32 .global NetIoDassgnChannel NetIoDassgnChannel: // 063558 { .mii 002C0050C8C0 3260 alloc r35 = rspfs, 1, 4, 1, 0 000188000880 3261 mov r34 = rp // r34 = br0 010800100900 3262 mov r36 = gp // r36 = r1 } { .mmi 008042000940 3270 ld2 out0 = [in0] ;; // r37 = [r32] // 063570 012000002640 3271 mov ai = 1 // r25 = 1 000008000000 3272 nop.i 0 } { .mfb 000008000000 3280 nop.m 0 000008000000 3281 nop.f 0 00A000001000 3282 br.call.sptk.many rp = SYS$DASSGN ;; // br0 = SYS$DASSGN } { .mii 008C42000000 3290 st2 [in0] = r0 // [r32] = r0 // 063571 0000B0800200 3291 sxt4 r8 = r8 // 063573 010802400040 3292 mov gp = r36 ;; // r1 = r36 // 063570 } { .mii 000008000000 32A0 nop.m 0 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 100 NetIoDassgnChannel 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 000154046000 32A1 mov.i rspfs = r35 ;; // 063573 000E00144000 32A2 mov rp = r34 // br0 = r34 } { .mfb 000008000000 32B0 nop.m 0 000008000000 32B1 nop.f 0 000108001100 32B2 br.ret.sptk.many rp ;; // br0 } .endp NetIoDassgnChannel Routine Size: 96 bytes, Routine Base: $CODE$ + 3260 .psect $READONLY$, CON, LCL, SHR, NOEXE, NOWRT, NOVEC, NOSHORT .lcomm _SIG_EMPTY_SET, 8, 8 .lcomm _SIG_FULL_SET, 8, 8 .lcomm PrevTickSecond, 4, 4 .lcomm ExitTickSecond, 4, 4 _SIG_EMPTY_SET: 00 0000 .repeat 8 data1 0x00 .endr _SIG_FULL_SET: FF 0008 data1 0xFF FF 0009 data1 0xFF FF 000A data1 0xFF FF 000B data1 0xFF FF 000C data1 0xFF FF 000D data1 0xFF FF 000E data1 0xFF FF 000F data1 0xFF .psect $LITERAL$, CON, LCL, SHR, NOEXE, NOWRT, NOVEC, NOSHORT 24737973 0000 string "sys$assign()\X00" 69737361 0004 29286E67 0008 00 000C 4954454E 0010 string "NETIO\X00" 004F 0014 534F4C43 0018 string "CLOSE channel !UL !&S\X00" 68632045 001C 656E6E61 0020 5521206C 0024 2621204C 0028 0053 002C 005A4121 0030 string "!AZ\X00" 6E6F6E28 0038 string "(none)\X00" 002965 003C 205A4121 0040 string "!AZ !&S !UL (!UL/!UL) bytes (!&?non-blocking\X0Dblocking\X0D)\X00" 20532621 0044 204C5521 0048 4C552128 004C 4C55212F 0050 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 101 NetIoDassgnChannel 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 79622029 0054 20736574 0058 3F262128 005C 2D6E6F6E 0060 636F6C62 0064 676E696B 0068 6F6C620D 006C 6E696B63 0070 00290D67 0074 4C4C4946 0080 string "FILL\X00" 00 0084 44414552 0088 string "READ\X00" 00 008C 205A4121 0090 string "!AZ !UL/!UL bytes (!&?non-blocking\X0Dblocking\X0D)\X00" 2F4C5521 0094 204C5521 0098 65747962 009C 21282073 00A0 6F6E3F26 00A4 6C622D6E 00A8 696B636F 00AC 620D676E 00B0 6B636F6C 00B4 0D676E69 00B8 0029 00BC 00412621 00C0 string "!&A\X00" 4974654E 00C8 string "NetIoRead()\X00" 6165526F 00CC 00292864 00D0 5754454E 00D8 string "NETWORK !&S (!&?non-blocking\X0Dblocking\X0D)\X00" 204B524F 00DC 20532621 00E0 3F262128 00E4 2D6E6F6E 00E8 636F6C62 00EC 676E696B 00F0 6F6C620D 00F4 6E696B63 00F8 00290D67 00FC 54495257 0108 string "WRITE !&S !UL (!UL/!UL) bytes (!&?non-blocking\X0Dblocking\X0D)\X00" 26212045 010C 55212053 0110 2128204C 0114 212F4C55 0118 20294C55 011C 65747962 0120 21282073 0124 6F6E3F26 0128 6C622D6E 012C 696B636F 0130 Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 102 NetIoDassgnChannel 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 620D676E 0134 6B636F6C 0138 0D676E69 013C 0029 0140 54495257 0148 string "WRITE !UL (!UL/!UL) bytes (!&?non-blocking\X0Dblocking\X0D)\X00" 55212045 014C 2128204C 0150 212F4C55 0154 20294C55 0158 65747962 015C 21282073 0160 6F6E3F26 0164 6C622D6E 0168 696B636F 016C 620D676E 0170 6B636F6C 0174 0D676E69 0178 0029 017C 4974654E 0180 string "NetIoWrite()\X00" 6972576F 0184 29286574 0188 00 018C .global TcpIpDeviceDsc .section .data .type SYS$ASSIGN, @function .global SYS$ASSIGN .global HttpdTickSecond .section .data .type ErrorNoticed, @function .global ErrorNoticed .section .data .type ErrorExitVmsStatus, @function .global ErrorExitVmsStatus .section .data .type VmGet, @function .global VmGet .section .data .type SesolaNetEnd, @function .global SesolaNetEnd .section .data .type SYS$DASSGN, @function .global SYS$DASSGN .section .data .type VmFree, @function .global VmFree .section .data .type HttpdStackTrace, @function .global HttpdStackTrace .section .data .type Http2NetIoWrite, @function .global Http2NetIoWrite .section .data .type SesolaNetIoWrite, @function .global SesolaNetIoWrite Machine Code Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 103 NetIoDassgnChannel 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 .section .data .type SysDclAst, @function .global SysDclAst .global Watch .section .data .type WatchThis, @function .global WatchThis .section .data .type WatchDataDump, @function .global WatchDataDump .section .data .type WatchTrigger, @function .global WatchTrigger .section .data .type WatchSetTrigger, @function .global WatchSetTrigger .global EfnWait .section .data .type SYS$QIOW, @function .global SYS$QIOW .global EfnNoWait .section .data .type SYS$QIO, @function .global SYS$QIO .section .data .type SYS$CANEXH, @function .global SYS$CANEXH .section .data .type SYS$EXIT, @function .global SYS$EXIT .section .data .type FaoToBuffer, @function .global FaoToBuffer .section .data .type Http2NetIoRead, @function .global Http2NetIoRead .section .data .type SesolaNetIoRead, @function .global SesolaNetIoRead .global TcpIpSocketMaxSegSense .section .data .type Http2NetIoInProgress, @function .global Http2NetIoInProgress .section .data .type SesolaNetIoInProgress, @function .global SesolaNetIoInProgress .section .data .type Http2NetIoCancel, @function .global Http2NetIoCancel .section .data .type SesolaNetIoCancel, @function .global SesolaNetIoCancel .section .data .type SYS$CANCEL, @function .global SYS$CANCEL Source Listing 20-OCT-2025 03:54:36 VSI C V7.4-001-50L7J Page 104 4-SEP-2025 07:52:09 WASD_ROOT:[src.httpd]netio.c;1 Command Line ------- ---- CC/DECC/STAND=RELAXED_ANSI/PREFIX=ALL/NAMES=AS_IS/OPTIMIZE=(INLINE=AUTO,LEVEL=4 ,UNROLL=0,TUNE=HOST)/LIST/MACHINE/NODEBUG/WARNING=(NOINFORM,DISABLE=(PREOPTW))/ FLOAT=IEEE/IEEE=DENORM/DEFINE=(WASD_VMS_V0,SESOLA,WATCH_CAT=1,WATCH_MOD=0,WASD_ ACME=1,WASD_GETSPI=1)/OBJ=[.obj_IA64]NetIO NetIO.c Hardware: /ARCHITECTURE=GENERIC /OPTIMIZE=TUNE=GENERIC These macros are in effect at the start of the compilation. ----- ------ --- -- ------ -- --- ----- -- --- ------------ WASD_VMS_V0=1 __G_FLOAT=0 __DECC=1 vms=1 VMS=1 __32BITS=1 __PRAGMA_ENVIRONMENT=1 WATCH_CAT=1 __ia64__=1 __CRTL_VER=80500000 __vms_version="V8.4-2L3" CC$gfloat=0 __X_FLOAT=1 WASD_GETSPI=1 vms_version="V8.4-2L3" __DATE__="Oct 20 2025" __STDC_VERSION__=199901L __DECC_MODE_RELAXED=1 __DECC_VER=70490001 __VMS=1 WASD_ACME=1 VMS_VERSION="V8.4-2L3" __IEEE_FLOAT=1 __VMS_VERSION="V8.4-2L3" SESOLA=1 __TIME__="03:54:36" __ia64=1 __VMS_VER=80421222 __BIASED_FLT_ROUNDS=2 __INITIAL_POINTER_SIZE=0 WATCH_MOD=0 __STDC__=2 _IEEE_FP=1 __LANGUAGE_C__=1 __vms=1 __D_FLOAT=0