RORBIN ;HCIOFO/SG - BINARY OPERATIONS ; 1/23/06 1:54pm
;;1.5;CLINICAL CASE REGISTRIES;;Feb 17, 2006
;
Q
;
;***** BINARY "AND" OPERATION
;
; V1 Operands formatted as strings of "1" and "0"
; V2
;
AND(V1,V2) ;
N I,L1,L2,N,RES
S L1=$L(V1),L2=$L(V2),RES=""
I L1<L2 S N=L1,V2=$E(V2,L2-L1+1,L2)
E S N=L2,V1=$E(V1,L1-L2+1,L1)
F I=1:1:N S RES=RES_$S($E(V1,I)&$E(V2,I):"1",1:"0")
Q RES
;
;***** FAST CONVERSIONS FROM HEXADECIMAL TO BINARY
;
; VAL Hexadecimal value
;
C16TO2(VAL) ;
N I,J,L,RES
S L=$L(VAL),RES=""
F I=1:1:L D
. S J=$F("0123456789ABCDEF",$E(VAL,I))-1
. S RES=RES_$P("0000^0001^0010^0011^0100^0101^0110^0111^1000^1001^1010^1011^1100^1101^1110^1111","^",J)
Q RES
;
;***** CALCULATES CRC-32 FOR PROVIDED DATA
;
; ROR8NODE Closed root of an array that contains the data
;
CRC32(ROR8NODE) ;
N TMPCRC S TMPCRC=$$C16TO2("FFFFFFFF")
F S ROR8NODE=$Q(@ROR8NODE) Q:ROR8NODE="" D
. S TMPCRC=$$UPDCRC32(TMPCRC,@ROR8NODE)
S TMPCRC=$$BASE^XLFUTL($$NOT(TMPCRC),2,16)
Q $TR($J(TMPCRC,8)," ","0")
;
;***** BINARY "NOT" OPERATION
;
; V1 Operand formatted as string of "1" and "0"
;
NOT(VAL) ;
Q $TR(VAL,"01","10")
;
;***** BINARY "OR" OPERATION
;
; V1 Operands formatted as strings of "1" and "0"
; V2
;
OR(V1,V2) ;
N I,L1,L2,N,RES,TMP
S L1=$L(V1),L2=$L(V2)
I L1<L2 S N=L1,RES=$E(V2,1,L2-L1),V2=$E(V2,L2-L1+1,L2)
E S N=L2,RES=$E(V1,1,L1-L2),V1=$E(V1,L1-L2+1,L1)
F I=1:1:N S RES=RES_$S($E(V1,I)!$E(V2,I):"1",1:"0")
Q RES
;
;***** RIGHT SHIFT (SIGNED OF UNSIGNED)
;
; V1 Operands formatted as strings of "1" and "0"
; V2
;
; N Number of bits to shift by
;
; SIGN If this parameter defined and greater than 0, then
; "signed" shift is performed (sign bit is propagated).
; Parameter value defines the maximum number of bits
; allowed for the values.
;
; By default ($G(SIGN)'>0), "unsigned" shift is
; performed.
;
SHR(VAL,N,SIGN) ;
N FILL,L,RES,SIZE
S L=$L(VAL)
Q:$G(SIGN)'>0 $S(N<L:$E(VAL,1,L-N),1:"0")
S SIZE=+SIGN
;---
S:L>SIZE VAL=$E(VAL,L-SIZE+1,L),L=SIZE
S SIGN=$S(L<SIZE:0,1:$E(VAL,1))
S:N>SIZE N=SIZE
S:SIGN $P(FILL,"1",N+1)=""
Q $E($G(FILL)_$S(N<L:$E(VAL,1,L-N),1:"0"),1,SIZE)
;
;***** INTERNAL ENTRY POINT FOR CRC-32 CALCULATION
UPDCRC32(CRC32,STR) ;
N FFFFFF,I,I32,L
S L=$L(STR),FFFFFF=$$C16TO2("FFFFFF")
F I=1:1:L D
. S I32=$$XOR(CRC32,$$CNV^XLFUTL($A(STR,I),2))
. S I32=$$DEC^XLFUTL(I32,2)#256+1
. S TMP=$$C16TO2($P($T(TBL+I32),";;",2))
. S CRC32=$$XOR($$AND($$SHR(CRC32,8,32),FFFFFF),TMP)
Q CRC32
;
;***** BINARY "EXCLUSIVE OR" OPERATION
;
; V1 Operands formatted as strings of "1" and "0"
; V2
;
XOR(V1,V2) ;
N I,L1,L2,N,RES,TMP
S L1=$L(V1),L2=$L(V2)
I L1<L2 S N=L1,RES=$E(V2,1,L2-L1),V2=$E(V2,L2-L1+1,L2)
E S N=L2,RES=$E(V1,1,L1-L2),V1=$E(V1,L1-L2+1,L1)
F I=1:1:N S RES=RES_$S($E(V1,I)+$E(V2,I)=1:"1",1:"0")
Q RES
;
;***** TABLE FOR CRC-32 CALCULATION
TBL ;
;;00000000
;;77073096
;;EE0E612C
;;990951BA
;;076DC419
;;706AF48F
;;E963A535
;;9E6495A3
;;0EDB8832
;;79DCB8A4
;;E0D5E91E
;;97D2D988
;;09B64C2B
;;7EB17CBD
;;E7B82D07
;;90BF1D91
;;1DB71064
;;6AB020F2
;;F3B97148
;;84BE41DE
;;1ADAD47D
;;6DDDE4EB
;;F4D4B551
;;83D385C7
;;136C9856
;;646BA8C0
;;FD62F97A
;;8A65C9EC
;;14015C4F
;;63066CD9
;;FA0F3D63
;;8D080DF5
;;3B6E20C8
;;4C69105E
;;D56041E4
;;A2677172
;;3C03E4D1
;;4B04D447
;;D20D85FD
;;A50AB56B
;;35B5A8FA
;;42B2986C
;;DBBBC9D6
;;ACBCF940
;;32D86CE3
;;45DF5C75
;;DCD60DCF
;;ABD13D59
;;26D930AC
;;51DE003A
;;C8D75180
;;BFD06116
;;21B4F4B5
;;56B3C423
;;CFBA9599
;;B8BDA50F
;;2802B89E
;;5F058808
;;C60CD9B2
;;B10BE924
;;2F6F7C87
;;58684C11
;;C1611DAB
;;B6662D3D
;;76DC4190
;;01DB7106
;;98D220BC
;;EFD5102A
;;71B18589
;;06B6B51F
;;9FBFE4A5
;;E8B8D433
;;7807C9A2
;;0F00F934
;;9609A88E
;;E10E9818
;;7F6A0DBB
;;086D3D2D
;;91646C97
;;E6635C01
;;6B6B51F4
;;1C6C6162
;;856530D8
;;F262004E
;;6C0695ED
;;1B01A57B
;;8208F4C1
;;F50FC457
;;65B0D9C6
;;12B7E950
;;8BBEB8EA
;;FCB9887C
;;62DD1DDF
;;15DA2D49
;;8CD37CF3
;;FBD44C65
;;4DB26158
;;3AB551CE
;;A3BC0074
;;D4BB30E2
;;4ADFA541
;;3DD895D7
;;A4D1C46D
;;D3D6F4FB
;;4369E96A
;;346ED9FC
;;AD678846
;;DA60B8D0
;;44042D73
;;33031DE5
;;AA0A4C5F
;;DD0D7CC9
;;5005713C
;;270241AA
;;BE0B1010
;;C90C2086
;;5768B525
;;206F85B3
;;B966D409
;;CE61E49F
;;5EDEF90E
;;29D9C998
;;B0D09822
;;C7D7A8B4
;;59B33D17
;;2EB40D81
;;B7BD5C3B
;;C0BA6CAD
;;EDB88320
;;9ABFB3B6
;;03B6E20C
;;74B1D29A
;;EAD54739
;;9DD277AF
;;04DB2615
;;73DC1683
;;E3630B12
;;94643B84
;;0D6D6A3E
;;7A6A5AA8
;;E40ECF0B
;;9309FF9D
;;0A00AE27
;;7D079EB1
;;F00F9344
;;8708A3D2
;;1E01F268
;;6906C2FE
;;F762575D
;;806567CB
;;196C3671
;;6E6B06E7
;;FED41B76
;;89D32BE0
;;10DA7A5A
;;67DD4ACC
;;F9B9DF6F
;;8EBEEFF9
;;17B7BE43
;;60B08ED5
;;D6D6A3E8
;;A1D1937E
;;38D8C2C4
;;4FDFF252
;;D1BB67F1
;;A6BC5767
;;3FB506DD
;;48B2364B
;;D80D2BDA
;;AF0A1B4C
;;36034AF6
;;41047A60
;;DF60EFC3
;;A867DF55
;;316E8EEF
;;4669BE79
;;CB61B38C
;;BC66831A
;;256FD2A0
;;5268E236
;;CC0C7795
;;BB0B4703
;;220216B9
;;5505262F
;;C5BA3BBE
;;B2BD0B28
;;2BB45A92
;;5CB36A04
;;C2D7FFA7
;;B5D0CF31
;;2CD99E8B
;;5BDEAE1D
;;9B64C2B0
;;EC63F226
;;756AA39C
;;026D930A
;;9C0906A9
;;EB0E363F
;;72076785
;;05005713
;;95BF4A82
;;E2B87A14
;;7BB12BAE
;;0CB61B38
;;92D28E9B
;;E5D5BE0D
;;7CDCEFB7
;;0BDBDF21
;;86D3D2D4
;;F1D4E242
;;68DDB3F8
;;1FDA836E
;;81BE16CD
;;F6B9265B
;;6FB077E1
;;18B74777
;;88085AE6
;;FF0F6A70
;;66063BCA
;;11010B5C
;;8F659EFF
;;F862AE69
;;616BFFD3
;;166CCF45
;;A00AE278
;;D70DD2EE
;;4E048354
;;3903B3C2
;;A7672661
;;D06016F7
;;4969474D
;;3E6E77DB
;;AED16A4A
;;D9D65ADC
;;40DF0B66
;;37D83BF0
;;A9BCAE53
;;DEBB9EC5
;;47B2CF7F
;;30B5FFE9
;;BDBDF21C
;;CABAC28A
;;53B39330
;;24B4A3A6
;;BAD03605
;;CDD70693
;;54DE5729
;;23D967BF
;;B3667A2E
;;C4614AB8
;;5D681B02
;;2A6F2B94
;;B40BBE37
;;C30C8EA1
;;5A05DF1B
;;2D02EF8D
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HRORBIN 6499 printed Nov 22, 2024@16:51:34 Page 2
RORBIN ;HCIOFO/SG - BINARY OPERATIONS ; 1/23/06 1:54pm
+1 ;;1.5;CLINICAL CASE REGISTRIES;;Feb 17, 2006
+2 ;
+3 QUIT
+4 ;
+5 ;***** BINARY "AND" OPERATION
+6 ;
+7 ; V1 Operands formatted as strings of "1" and "0"
+8 ; V2
+9 ;
AND(V1,V2) ;
+1 NEW I,L1,L2,N,RES
+2 SET L1=$LENGTH(V1)
SET L2=$LENGTH(V2)
SET RES=""
+3 IF L1<L2
SET N=L1
SET V2=$EXTRACT(V2,L2-L1+1,L2)
+4 IF '$TEST
SET N=L2
SET V1=$EXTRACT(V1,L1-L2+1,L1)
+5 FOR I=1:1:N
SET RES=RES_$SELECT($EXTRACT(V1,I)&$EXTRACT(V2,I):"1",1:"0")
+6 QUIT RES
+7 ;
+8 ;***** FAST CONVERSIONS FROM HEXADECIMAL TO BINARY
+9 ;
+10 ; VAL Hexadecimal value
+11 ;
C16TO2(VAL) ;
+1 NEW I,J,L,RES
+2 SET L=$LENGTH(VAL)
SET RES=""
+3 FOR I=1:1:L
Begin DoDot:1
+4 SET J=$FIND("0123456789ABCDEF",$EXTRACT(VAL,I))-1
+5 SET RES=RES_$PIECE("0000^0001^0010^0011^0100^0101^0110^0111^1000^1001^1010^1011^1100^1101^1110^1111","^",J)
End DoDot:1
+6 QUIT RES
+7 ;
+8 ;***** CALCULATES CRC-32 FOR PROVIDED DATA
+9 ;
+10 ; ROR8NODE Closed root of an array that contains the data
+11 ;
CRC32(ROR8NODE) ;
+1 NEW TMPCRC
SET TMPCRC=$$C16TO2("FFFFFFFF")
+2 FOR
SET ROR8NODE=$QUERY(@ROR8NODE)
if ROR8NODE=""
QUIT
Begin DoDot:1
+3 SET TMPCRC=$$UPDCRC32(TMPCRC,@ROR8NODE)
End DoDot:1
+4 SET TMPCRC=$$BASE^XLFUTL($$NOT(TMPCRC),2,16)
+5 QUIT $TRANSLATE($JUSTIFY(TMPCRC,8)," ","0")
+6 ;
+7 ;***** BINARY "NOT" OPERATION
+8 ;
+9 ; V1 Operand formatted as string of "1" and "0"
+10 ;
NOT(VAL) ;
+1 QUIT $TRANSLATE(VAL,"01","10")
+2 ;
+3 ;***** BINARY "OR" OPERATION
+4 ;
+5 ; V1 Operands formatted as strings of "1" and "0"
+6 ; V2
+7 ;
OR(V1,V2) ;
+1 NEW I,L1,L2,N,RES,TMP
+2 SET L1=$LENGTH(V1)
SET L2=$LENGTH(V2)
+3 IF L1<L2
SET N=L1
SET RES=$EXTRACT(V2,1,L2-L1)
SET V2=$EXTRACT(V2,L2-L1+1,L2)
+4 IF '$TEST
SET N=L2
SET RES=$EXTRACT(V1,1,L1-L2)
SET V1=$EXTRACT(V1,L1-L2+1,L1)
+5 FOR I=1:1:N
SET RES=RES_$SELECT($EXTRACT(V1,I)!$EXTRACT(V2,I):"1",1:"0")
+6 QUIT RES
+7 ;
+8 ;***** RIGHT SHIFT (SIGNED OF UNSIGNED)
+9 ;
+10 ; V1 Operands formatted as strings of "1" and "0"
+11 ; V2
+12 ;
+13 ; N Number of bits to shift by
+14 ;
+15 ; SIGN If this parameter defined and greater than 0, then
+16 ; "signed" shift is performed (sign bit is propagated).
+17 ; Parameter value defines the maximum number of bits
+18 ; allowed for the values.
+19 ;
+20 ; By default ($G(SIGN)'>0), "unsigned" shift is
+21 ; performed.
+22 ;
SHR(VAL,N,SIGN) ;
+1 NEW FILL,L,RES,SIZE
+2 SET L=$LENGTH(VAL)
+3 if $GET(SIGN)'>0
QUIT $SELECT(N<L:$EXTRACT(VAL,1,L-N),1:"0")
+4 SET SIZE=+SIGN
+5 ;---
+6 if L>SIZE
SET VAL=$EXTRACT(VAL,L-SIZE+1,L)
SET L=SIZE
+7 SET SIGN=$SELECT(L<SIZE:0,1:$EXTRACT(VAL,1))
+8 if N>SIZE
SET N=SIZE
+9 if SIGN
SET $PIECE(FILL,"1",N+1)=""
+10 QUIT $EXTRACT($GET(FILL)_$SELECT(N<L:$EXTRACT(VAL,1,L-N),1:"0"),1,SIZE)
+11 ;
+12 ;***** INTERNAL ENTRY POINT FOR CRC-32 CALCULATION
UPDCRC32(CRC32,STR) ;
+1 NEW FFFFFF,I,I32,L
+2 SET L=$LENGTH(STR)
SET FFFFFF=$$C16TO2("FFFFFF")
+3 FOR I=1:1:L
Begin DoDot:1
+4 SET I32=$$XOR(CRC32,$$CNV^XLFUTL($ASCII(STR,I),2))
+5 SET I32=$$DEC^XLFUTL(I32,2)#256+1
+6 SET TMP=$$C16TO2($PIECE($TEXT(TBL+I32),";;",2))
+7 SET CRC32=$$XOR($$AND($$SHR(CRC32,8,32),FFFFFF),TMP)
End DoDot:1
+8 QUIT CRC32
+9 ;
+10 ;***** BINARY "EXCLUSIVE OR" OPERATION
+11 ;
+12 ; V1 Operands formatted as strings of "1" and "0"
+13 ; V2
+14 ;
XOR(V1,V2) ;
+1 NEW I,L1,L2,N,RES,TMP
+2 SET L1=$LENGTH(V1)
SET L2=$LENGTH(V2)
+3 IF L1<L2
SET N=L1
SET RES=$EXTRACT(V2,1,L2-L1)
SET V2=$EXTRACT(V2,L2-L1+1,L2)
+4 IF '$TEST
SET N=L2
SET RES=$EXTRACT(V1,1,L1-L2)
SET V1=$EXTRACT(V1,L1-L2+1,L1)
+5 FOR I=1:1:N
SET RES=RES_$SELECT($EXTRACT(V1,I)+$EXTRACT(V2,I)=1:"1",1:"0")
+6 QUIT RES
+7 ;
+8 ;***** TABLE FOR CRC-32 CALCULATION
TBL ;
+1 ;;00000000
+2 ;;77073096
+3 ;;EE0E612C
+4 ;;990951BA
+5 ;;076DC419
+6 ;;706AF48F
+7 ;;E963A535
+8 ;;9E6495A3
+9 ;;0EDB8832
+10 ;;79DCB8A4
+11 ;;E0D5E91E
+12 ;;97D2D988
+13 ;;09B64C2B
+14 ;;7EB17CBD
+15 ;;E7B82D07
+16 ;;90BF1D91
+17 ;;1DB71064
+18 ;;6AB020F2
+19 ;;F3B97148
+20 ;;84BE41DE
+21 ;;1ADAD47D
+22 ;;6DDDE4EB
+23 ;;F4D4B551
+24 ;;83D385C7
+25 ;;136C9856
+26 ;;646BA8C0
+27 ;;FD62F97A
+28 ;;8A65C9EC
+29 ;;14015C4F
+30 ;;63066CD9
+31 ;;FA0F3D63
+32 ;;8D080DF5
+33 ;;3B6E20C8
+34 ;;4C69105E
+35 ;;D56041E4
+36 ;;A2677172
+37 ;;3C03E4D1
+38 ;;4B04D447
+39 ;;D20D85FD
+40 ;;A50AB56B
+41 ;;35B5A8FA
+42 ;;42B2986C
+43 ;;DBBBC9D6
+44 ;;ACBCF940
+45 ;;32D86CE3
+46 ;;45DF5C75
+47 ;;DCD60DCF
+48 ;;ABD13D59
+49 ;;26D930AC
+50 ;;51DE003A
+51 ;;C8D75180
+52 ;;BFD06116
+53 ;;21B4F4B5
+54 ;;56B3C423
+55 ;;CFBA9599
+56 ;;B8BDA50F
+57 ;;2802B89E
+58 ;;5F058808
+59 ;;C60CD9B2
+60 ;;B10BE924
+61 ;;2F6F7C87
+62 ;;58684C11
+63 ;;C1611DAB
+64 ;;B6662D3D
+65 ;;76DC4190
+66 ;;01DB7106
+67 ;;98D220BC
+68 ;;EFD5102A
+69 ;;71B18589
+70 ;;06B6B51F
+71 ;;9FBFE4A5
+72 ;;E8B8D433
+73 ;;7807C9A2
+74 ;;0F00F934
+75 ;;9609A88E
+76 ;;E10E9818
+77 ;;7F6A0DBB
+78 ;;086D3D2D
+79 ;;91646C97
+80 ;;E6635C01
+81 ;;6B6B51F4
+82 ;;1C6C6162
+83 ;;856530D8
+84 ;;F262004E
+85 ;;6C0695ED
+86 ;;1B01A57B
+87 ;;8208F4C1
+88 ;;F50FC457
+89 ;;65B0D9C6
+90 ;;12B7E950
+91 ;;8BBEB8EA
+92 ;;FCB9887C
+93 ;;62DD1DDF
+94 ;;15DA2D49
+95 ;;8CD37CF3
+96 ;;FBD44C65
+97 ;;4DB26158
+98 ;;3AB551CE
+99 ;;A3BC0074
+100 ;;D4BB30E2
+101 ;;4ADFA541
+102 ;;3DD895D7
+103 ;;A4D1C46D
+104 ;;D3D6F4FB
+105 ;;4369E96A
+106 ;;346ED9FC
+107 ;;AD678846
+108 ;;DA60B8D0
+109 ;;44042D73
+110 ;;33031DE5
+111 ;;AA0A4C5F
+112 ;;DD0D7CC9
+113 ;;5005713C
+114 ;;270241AA
+115 ;;BE0B1010
+116 ;;C90C2086
+117 ;;5768B525
+118 ;;206F85B3
+119 ;;B966D409
+120 ;;CE61E49F
+121 ;;5EDEF90E
+122 ;;29D9C998
+123 ;;B0D09822
+124 ;;C7D7A8B4
+125 ;;59B33D17
+126 ;;2EB40D81
+127 ;;B7BD5C3B
+128 ;;C0BA6CAD
+129 ;;EDB88320
+130 ;;9ABFB3B6
+131 ;;03B6E20C
+132 ;;74B1D29A
+133 ;;EAD54739
+134 ;;9DD277AF
+135 ;;04DB2615
+136 ;;73DC1683
+137 ;;E3630B12
+138 ;;94643B84
+139 ;;0D6D6A3E
+140 ;;7A6A5AA8
+141 ;;E40ECF0B
+142 ;;9309FF9D
+143 ;;0A00AE27
+144 ;;7D079EB1
+145 ;;F00F9344
+146 ;;8708A3D2
+147 ;;1E01F268
+148 ;;6906C2FE
+149 ;;F762575D
+150 ;;806567CB
+151 ;;196C3671
+152 ;;6E6B06E7
+153 ;;FED41B76
+154 ;;89D32BE0
+155 ;;10DA7A5A
+156 ;;67DD4ACC
+157 ;;F9B9DF6F
+158 ;;8EBEEFF9
+159 ;;17B7BE43
+160 ;;60B08ED5
+161 ;;D6D6A3E8
+162 ;;A1D1937E
+163 ;;38D8C2C4
+164 ;;4FDFF252
+165 ;;D1BB67F1
+166 ;;A6BC5767
+167 ;;3FB506DD
+168 ;;48B2364B
+169 ;;D80D2BDA
+170 ;;AF0A1B4C
+171 ;;36034AF6
+172 ;;41047A60
+173 ;;DF60EFC3
+174 ;;A867DF55
+175 ;;316E8EEF
+176 ;;4669BE79
+177 ;;CB61B38C
+178 ;;BC66831A
+179 ;;256FD2A0
+180 ;;5268E236
+181 ;;CC0C7795
+182 ;;BB0B4703
+183 ;;220216B9
+184 ;;5505262F
+185 ;;C5BA3BBE
+186 ;;B2BD0B28
+187 ;;2BB45A92
+188 ;;5CB36A04
+189 ;;C2D7FFA7
+190 ;;B5D0CF31
+191 ;;2CD99E8B
+192 ;;5BDEAE1D
+193 ;;9B64C2B0
+194 ;;EC63F226
+195 ;;756AA39C
+196 ;;026D930A
+197 ;;9C0906A9
+198 ;;EB0E363F
+199 ;;72076785
+200 ;;05005713
+201 ;;95BF4A82
+202 ;;E2B87A14
+203 ;;7BB12BAE
+204 ;;0CB61B38
+205 ;;92D28E9B
+206 ;;E5D5BE0D
+207 ;;7CDCEFB7
+208 ;;0BDBDF21
+209 ;;86D3D2D4
+210 ;;F1D4E242
+211 ;;68DDB3F8
+212 ;;1FDA836E
+213 ;;81BE16CD
+214 ;;F6B9265B
+215 ;;6FB077E1
+216 ;;18B74777
+217 ;;88085AE6
+218 ;;FF0F6A70
+219 ;;66063BCA
+220 ;;11010B5C
+221 ;;8F659EFF
+222 ;;F862AE69
+223 ;;616BFFD3
+224 ;;166CCF45
+225 ;;A00AE278
+226 ;;D70DD2EE
+227 ;;4E048354
+228 ;;3903B3C2
+229 ;;A7672661
+230 ;;D06016F7
+231 ;;4969474D
+232 ;;3E6E77DB
+233 ;;AED16A4A
+234 ;;D9D65ADC
+235 ;;40DF0B66
+236 ;;37D83BF0
+237 ;;A9BCAE53
+238 ;;DEBB9EC5
+239 ;;47B2CF7F
+240 ;;30B5FFE9
+241 ;;BDBDF21C
+242 ;;CABAC28A
+243 ;;53B39330
+244 ;;24B4A3A6
+245 ;;BAD03605
+246 ;;CDD70693
+247 ;;54DE5729
+248 ;;23D967BF
+249 ;;B3667A2E
+250 ;;C4614AB8
+251 ;;5D681B02
+252 ;;2A6F2B94
+253 ;;B40BBE37
+254 ;;C30C8EA1
+255 ;;5A05DF1B
+256 ;;2D02EF8D