diff --git a/doc/dst-host-192.68.1.1-and-greater-100.md b/doc/dst-host-192.68.1.1-and-greater-100.md index 9b27d95..04fadc0 100644 --- a/doc/dst-host-192.68.1.1-and-greater-100.md +++ b/doc/dst-host-192.68.1.1-and-greater-100.md @@ -53,27 +53,19 @@ end ``` return function(P,length) - if not (length >= 100) then do return false end end + if length < 100 then return false end + local var1 = cast("uint16_t*", P+12)[0] + if var1 == 8 then + return cast("uint32_t*", P+30)[0] == 16860352 + end + if var1 == 1544 then goto L8 end do - local v1 = ffi.cast("uint16_t*", P+12)[0] - if not (v1 == 8) then goto L3 end - do - local v2 = ffi.cast("uint32_t*", P+30)[0] - do return v2 == 16860352 end - end -::L3:: - do - if v1 == 1544 then goto L4 end - do - if not (v1 == 13696) then do return false end end - end -::L4:: - do - local v3 = ffi.cast("uint32_t*", P+38)[0] - do return v3 == 16860352 end - end - end + if var1 == 13696 then goto L8 end + return false end +::L8:: + return cast("uint32_t*", P+38)[0] == 16860352 end + ``` diff --git a/doc/host-127.0.0.1.md b/doc/host-127.0.0.1.md index ce636f2..0810576 100644 --- a/doc/host-127.0.0.1.md +++ b/doc/host-127.0.0.1.md @@ -59,38 +59,23 @@ end ``` return function(P,length) - if not (length >= 34) then do return false end end - do - local v1 = ffi.cast("uint16_t*", P+12)[0] - if not (v1 == 8) then goto L3 end + if length < 34 then return false end + local var1 = cast("uint16_t*", P+12)[0] + if var1 == 8 then + if cast("uint32_t*", P+26)[0] == 16777343 then return true end + return cast("uint32_t*", P+30)[0] == 16777343 + else + if length < 42 then return false end + if var1 == 1544 then goto L12 end do - local v2 = ffi.cast("uint32_t*", P+26)[0] - if v2 == 16777343 then do return true end end - do - local v3 = ffi.cast("uint32_t*", P+30)[0] - do return v3 == 16777343 end - end - end -::L3:: - do - if not (length >= 42) then do return false end end - do - if v1 == 1544 then goto L6 end - do - if not (v1 == 13696) then do return false end end - end -::L6:: - do - local v4 = ffi.cast("uint32_t*", P+28)[0] - if v4 == 16777343 then do return true end end - do - local v5 = ffi.cast("uint32_t*", P+38)[0] - do return v5 == 16777343 end - end - end - end + if var1 == 13696 then goto L12 end + return false end +::L12:: + if cast("uint32_t*", P+28)[0] == 16777343 then return true end + return cast("uint32_t*", P+38)[0] == 16777343 end end + ``` diff --git a/doc/host-ipv6-localhost.md b/doc/host-ipv6-localhost.md index 74da310..dd2f47e 100644 --- a/doc/host-ipv6-localhost.md +++ b/doc/host-ipv6-localhost.md @@ -73,44 +73,21 @@ end ``` return function(P,length) - if not (length >= 54) then do return false end end + if length < 54 then return false end + if cast("uint16_t*", P+12)[0] ~= 56710 then return false end + if cast("uint32_t*", P+22)[0] ~= 0 then goto L9 end do - local v1 = ffi.cast("uint16_t*", P+12)[0] - if not (v1 == 56710) then do return false end end - do - local v2 = ffi.cast("uint32_t*", P+22)[0] - if not (v2 == 0) then goto L3 end - do - local v3 = ffi.cast("uint32_t*", P+26)[0] - if not (v3 == 0) then goto L3 end - do - local v4 = ffi.cast("uint32_t*", P+30)[0] - if not (v4 == 0) then goto L3 end - do - local v5 = ffi.cast("uint32_t*", P+34)[0] - if v5 == 16777216 then do return true end end - end - end - end -::L3:: - do - local v6 = ffi.cast("uint32_t*", P+38)[0] - if not (v6 == 0) then do return false end end - do - local v7 = ffi.cast("uint32_t*", P+42)[0] - if not (v7 == 0) then do return false end end - do - local v8 = ffi.cast("uint32_t*", P+46)[0] - if not (v8 == 0) then do return false end end - do - local v9 = ffi.cast("uint32_t*", P+50)[0] - do return v9 == 16777216 end - end - end - end - end - end + if cast("uint32_t*", P+26)[0] ~= 0 then goto L9 end + if cast("uint32_t*", P+30)[0] ~= 0 then goto L9 end + if cast("uint32_t*", P+34)[0] == 16777216 then return true end + goto L9 end +::L9:: + if cast("uint32_t*", P+38)[0] ~= 0 then return false end + if cast("uint32_t*", P+42)[0] ~= 0 then return false end + if cast("uint32_t*", P+46)[0] ~= 0 then return false end + return cast("uint32_t*", P+50)[0] == 16777216 end + ``` diff --git a/doc/icmp-or-tcp-or-udp.md b/doc/icmp-or-tcp-or-udp.md index 7097d14..bd8ed70 100644 --- a/doc/icmp-or-tcp-or-udp.md +++ b/doc/icmp-or-tcp-or-udp.md @@ -58,70 +58,39 @@ end ``` return function(P,length) - if not (length >= 34) then do return false end end - do - local v1 = ffi.cast("uint16_t*", P+12)[0] - if not (v1 == 8) then goto L3 end + if length < 34 then return false end + local var1 = cast("uint16_t*", P+12)[0] + if var1 == 8 then + local var2 = P[23] + if var2 == 1 then return true end + if var2 == 6 then return true end + return var2 == 17 + else + if length < 54 then return false end + if var1 ~= 56710 then return false end + local var6 = P[20] + if var6 == 1 then return true end + if length < 55 then return false end + if var6 ~= 44 then goto L19 end do - local v2 = P[23] - if v2 == 1 then do return true end end - do - if v2 == 6 then do return true end end - end - do - do return v2 == 17 end - end + if P[54] == 1 then return true end + goto L19 end -::L3:: +::L19:: + if var6 == 6 then return true end + if length < 55 then return false end + if var6 ~= 44 then goto L17 end do - if not (length >= 54) then do return false end end - do - if not (v1 == 56710) then do return false end end - do - local v3 = P[20] - if v3 == 1 then do return true end end - do - if not (length >= 55) then do return false end end - do - if not (v3 == 44) then goto L9 end - do - local v4 = P[54] - if v4 == 1 then do return true end end - end - end - end -::L9:: - do - if v3 == 6 then do return true end end - do - if not (length >= 55) then do return false end end - do - if not (v3 == 44) then goto L8 end - do - local v5 = P[54] - if v5 == 6 then do return true end end - end - end - end - end -::L8:: - do - if v3 == 17 then do return true end end - do - if not (length >= 55) then do return false end end - do - if not (v3 == 44) then do return false end end - do - local v6 = P[54] - do return v6 == 17 end - end - end - end - end - end - end + if P[54] == 6 then return true end + goto L17 end +::L17:: + if var6 == 17 then return true end + if length < 55 then return false end + if var6 ~= 44 then return false end + return P[54] == 17 end end + ``` diff --git a/doc/net-127.0.0.0-8.md b/doc/net-127.0.0.0-8.md index 4875bff..fbc52b0 100644 --- a/doc/net-127.0.0.0-8.md +++ b/doc/net-127.0.0.0-8.md @@ -67,42 +67,23 @@ end ``` return function(P,length) - if not (length >= 34) then do return false end end - do - local v1 = ffi.cast("uint16_t*", P+12)[0] - if not (v1 == 8) then goto L3 end + if length < 34 then return false end + local var1 = cast("uint16_t*", P+12)[0] + if var1 == 8 then + if band(cast("uint32_t*", P+26)[0],255) == 127 then return true end + return band(cast("uint32_t*", P+30)[0],255) == 127 + else + if length < 42 then return false end + if var1 == 1544 then goto L12 end do - local v2 = ffi.cast("uint32_t*", P+26)[0] - local v3 = bit.band(v2,255) - if v3 == 127 then do return true end end - do - local v4 = ffi.cast("uint32_t*", P+30)[0] - local v5 = bit.band(v4,255) - do return v5 == 127 end - end - end -::L3:: - do - if not (length >= 42) then do return false end end - do - if v1 == 1544 then goto L6 end - do - if not (v1 == 13696) then do return false end end - end -::L6:: - do - local v6 = ffi.cast("uint32_t*", P+28)[0] - local v7 = bit.band(v6,255) - if v7 == 127 then do return true end end - do - local v8 = ffi.cast("uint32_t*", P+38)[0] - local v9 = bit.band(v8,255) - do return v9 == 127 end - end - end - end + if var1 == 13696 then goto L12 end + return false end +::L12:: + if band(cast("uint32_t*", P+28)[0],255) == 127 then return true end + return band(cast("uint32_t*", P+38)[0],255) == 127 end end + ``` diff --git a/doc/net-ipv6-0-mask-16.md b/doc/net-ipv6-0-mask-16.md index 1187041..baac568 100644 --- a/doc/net-ipv6-0-mask-16.md +++ b/doc/net-ipv6-0-mask-16.md @@ -42,21 +42,11 @@ end ``` return function(P,length) - if not (length >= 54) then do return false end end - do - local v1 = ffi.cast("uint16_t*", P+12)[0] - if not (v1 == 56710) then do return false end end - do - local v2 = ffi.cast("uint32_t*", P+22)[0] - local v3 = bit.band(v2,65535) - if v3 == 0 then do return true end end - do - local v4 = ffi.cast("uint32_t*", P+38)[0] - local v5 = bit.band(v4,65535) - do return v5 == 0 end - end - end - end + if length < 54 then return false end + if cast("uint16_t*", P+12)[0] ~= 56710 then return false end + if band(cast("uint32_t*", P+22)[0],65535) == 0 then return true end + return band(cast("uint32_t*", P+38)[0],65535) == 0 end + ``` diff --git a/doc/net-ipv6-ee.cc.9954.0-mask-111.md b/doc/net-ipv6-ee.cc.9954.0-mask-111.md index 3017403..bddd12a 100644 --- a/doc/net-ipv6-ee.cc.9954.0-mask-111.md +++ b/doc/net-ipv6-ee.cc.9954.0-mask-111.md @@ -77,46 +77,21 @@ end ``` return function(P,length) - if not (length >= 54) then do return false end end + if length < 54 then return false end + if cast("uint16_t*", P+12)[0] ~= 56710 then return false end + if cast("uint32_t*", P+22)[0] ~= 3422612992 then goto L9 end do - local v1 = ffi.cast("uint16_t*", P+12)[0] - if not (v1 == 56710) then do return false end end - do - local v2 = ffi.cast("uint32_t*", P+22)[0] - if not (v2 == 3422612992) then goto L3 end - do - local v3 = ffi.cast("uint32_t*", P+26)[0] - if not (v3 == 0) then goto L3 end - do - local v4 = ffi.cast("uint32_t*", P+30)[0] - if not (v4 == 0) then goto L3 end - do - local v5 = ffi.cast("uint32_t*", P+34)[0] - local v6 = bit.band(v5,65279) - if v6 == 21657 then do return true end end - end - end - end -::L3:: - do - local v7 = ffi.cast("uint32_t*", P+38)[0] - if not (v7 == 3422612992) then do return false end end - do - local v8 = ffi.cast("uint32_t*", P+42)[0] - if not (v8 == 0) then do return false end end - do - local v9 = ffi.cast("uint32_t*", P+46)[0] - if not (v9 == 0) then do return false end end - do - local v10 = ffi.cast("uint32_t*", P+50)[0] - local v11 = bit.band(v10,65279) - do return v11 == 21657 end - end - end - end - end - end + if cast("uint32_t*", P+26)[0] ~= 0 then goto L9 end + if cast("uint32_t*", P+30)[0] ~= 0 then goto L9 end + if band(cast("uint32_t*", P+34)[0],65279) == 21657 then return true end + goto L9 end +::L9:: + if cast("uint32_t*", P+38)[0] ~= 3422612992 then return false end + if cast("uint32_t*", P+42)[0] ~= 0 then return false end + if cast("uint32_t*", P+46)[0] ~= 0 then return false end + return band(cast("uint32_t*", P+50)[0],65279) == 21657 end + ``` diff --git a/doc/portrange-0-6000.md b/doc/portrange-0-6000.md index 6dedff3..c4a7fb4 100644 --- a/doc/portrange-0-6000.md +++ b/doc/portrange-0-6000.md @@ -97,103 +97,54 @@ end ``` return function(P,length) - if not (length >= 34) then do return false end end - do - local v1 = ffi.cast("uint16_t*", P+12)[0] - if not (v1 == 8) then goto L3 end + if length < 34 then return false end + local var1 = cast("uint16_t*", P+12)[0] + if var1 == 8 then + local var2 = P[23] + if var2 == 6 then goto L8 end do - local v2 = P[23] - if v2 == 6 then goto L4 end - do - if v2 == 17 then goto L4 end - do - if not (v2 == 132) then do return false end end - end - end -::L4:: - do - local v3 = ffi.cast("uint16_t*", P+20)[0] - local v4 = bit.band(v3,65311) - if not (v4 == 0) then do return false end end - do - local v5 = P[14] - local v6 = bit.band(v5,15) - local v7 = bit.lshift(v6,2) - local v8 = v7 + 16 - if not (v8 <= length) then do return false end end - do - local v9 = v7 + 14 - local v10 = ffi.cast("uint16_t*", P+v9)[0] - local v11 = bit.rshift(bit.bswap(v10), 16) - if v11 <= 6000 then do return true end end - do - local v12 = v7 + 18 - if not (v12 <= length) then do return false end end - do - local v13 = ffi.cast("uint16_t*", P+v8)[0] - local v14 = bit.rshift(bit.bswap(v13), 16) - do return v14 <= 6000 end - end - end - end - end - end + if var2 == 17 then goto L8 end + if var2 == 132 then goto L8 end + return false end -::L3:: +::L8:: + if band(cast("uint16_t*", P+20)[0],65311) ~= 0 then return false end + local var9 = lshift(band(P[14],15),2) + local var10 = (var9 + 16) + if var10 > length then return false end + if rshift(bswap(cast("uint16_t*", P+(var9 + 14))[0]), 16) <= 6000 then return true end + if (var9 + 18) > length then return false end + return rshift(bswap(cast("uint16_t*", P+var10)[0]), 16) <= 6000 + else + if length < 56 then return false end + if var1 ~= 56710 then return false end + local var28 = P[20] + if var28 == 6 then goto L26 end do - if not (length >= 56) then do return false end end + if var28 ~= 44 then goto L29 end do - if not (v1 == 56710) then do return false end end - do - local v15 = P[20] - if v15 == 6 then goto L13 end - do - if not (v15 == 44) then goto L14 end - do - local v16 = P[54] - if v16 == 6 then goto L13 end - end - end -::L14:: - do - if v15 == 17 then goto L13 end - do - if not (v15 == 44) then goto L17 end - do - local v17 = P[54] - if v17 == 17 then goto L13 end - end - end -::L17:: - do - if v15 == 132 then goto L13 end - do - if not (v15 == 44) then do return false end end - do - local v18 = P[54] - if not (v18 == 132) then do return false end end - end - end - end - end -::L13:: - do - local v19 = ffi.cast("uint16_t*", P+54)[0] - local v20 = bit.rshift(bit.bswap(v19), 16) - if v20 <= 6000 then do return true end end - do - if not (length >= 58) then do return false end end - do - local v21 = ffi.cast("uint16_t*", P+56)[0] - local v22 = bit.rshift(bit.bswap(v21), 16) - do return v22 <= 6000 end - end - end - end - end + if P[54] == 6 then goto L26 end + goto L29 end +::L29:: + if var28 == 17 then goto L26 end + if var28 ~= 44 then goto L35 end + do + if P[54] == 17 then goto L26 end + goto L35 + end +::L35:: + if var28 == 132 then goto L26 end + if var28 ~= 44 then return false end + if P[54] == 132 then goto L26 end + return false end +::L26:: + if rshift(bswap(cast("uint16_t*", P+54)[0]), 16) <= 6000 then return true end + if length < 58 then return false end + return rshift(bswap(cast("uint16_t*", P+56)[0]), 16) <= 6000 end end + ``` diff --git a/doc/src-host-192.68.1.1-and-less-100.md b/doc/src-host-192.68.1.1-and-less-100.md index 8356a72..b8c6acb 100644 --- a/doc/src-host-192.68.1.1-and-less-100.md +++ b/doc/src-host-192.68.1.1-and-less-100.md @@ -53,35 +53,29 @@ end ``` return function(P,length) - if not (length >= 34) then do return false end end - do - local v1 = ffi.cast("uint16_t*", P+12)[0] - if not (v1 == 8) then goto L4 end + if length < 34 then return false end + local var1 = cast("uint16_t*", P+12)[0] + if var1 == 8 then + if cast("uint32_t*", P+26)[0] == 16860352 then goto L6 end + goto L7 + else + if length < 42 then return false end + if var1 == 1544 then goto L12 end do - local v2 = ffi.cast("uint32_t*", P+26)[0] - if v2 == 16860352 then goto L2 end - do do return false end end + if var1 == 13696 then goto L12 end + return false end -::L4:: - do - if not (length >= 42) then do return false end end - do - if v1 == 1544 then goto L6 end - do - if not (v1 == 13696) then do return false end end - end +::L12:: + if cast("uint32_t*", P+28)[0] == 16860352 then goto L6 end + goto L7 + end ::L6:: - do - local v3 = ffi.cast("uint32_t*", P+28)[0] - if not (v3 == 16860352) then do return false end end - end - end - end -::L2:: - do - do return length <= 100 end - end + do + return length <= 100 end +::L7:: + return false end + ``` diff --git a/doc/src-net-ffff.ffff.eeee.eeee.0.0.0.0-72.md b/doc/src-net-ffff.ffff.eeee.eeee.0.0.0.0-72.md index e7cc793..9302bf1 100644 --- a/doc/src-net-ffff.ffff.eeee.eeee.0.0.0.0-72.md +++ b/doc/src-net-ffff.ffff.eeee.eeee.0.0.0.0-72.md @@ -46,24 +46,12 @@ end ``` return function(P,length) - if not (length >= 54) then do return false end end - do - local v1 = ffi.cast("uint16_t*", P+12)[0] - if not (v1 == 56710) then do return false end end - do - local v2 = ffi.cast("uint32_t*", P+22)[0] - if not (v2 == 4294967295) then do return false end end - do - local v3 = ffi.cast("uint32_t*", P+26)[0] - if not (v3 == 4008636142) then do return false end end - do - local v4 = ffi.cast("uint32_t*", P+30)[0] - local v5 = bit.band(v4,255) - do return v5 == 0 end - end - end - end - end + if length < 54 then return false end + if cast("uint16_t*", P+12)[0] ~= 56710 then return false end + if cast("uint32_t*", P+22)[0] ~= 4294967295 then return false end + if cast("uint32_t*", P+26)[0] ~= 4008636142 then return false end + return band(cast("uint32_t*", P+30)[0],255) == 0 end + ``` diff --git a/doc/src-net-ffff.ffff.eeee.eeee.1.0.0.0-82.md b/doc/src-net-ffff.ffff.eeee.eeee.1.0.0.0-82.md index 6dafcbd..372ba15 100644 --- a/doc/src-net-ffff.ffff.eeee.eeee.1.0.0.0-82.md +++ b/doc/src-net-ffff.ffff.eeee.eeee.1.0.0.0-82.md @@ -48,24 +48,12 @@ end ``` return function(P,length) - if not (length >= 54) then do return false end end - do - local v1 = ffi.cast("uint16_t*", P+12)[0] - if not (v1 == 56710) then do return false end end - do - local v2 = ffi.cast("uint32_t*", P+22)[0] - if not (v2 == 4294967295) then do return false end end - do - local v3 = ffi.cast("uint32_t*", P+26)[0] - if not (v3 == 4008636142) then do return false end end - do - local v4 = ffi.cast("uint32_t*", P+30)[0] - local v5 = bit.band(v4,12648447) - do return v5 == 256 end - end - end - end - end + if length < 54 then return false end + if cast("uint16_t*", P+12)[0] ~= 56710 then return false end + if cast("uint32_t*", P+22)[0] ~= 4294967295 then return false end + if cast("uint32_t*", P+26)[0] ~= 4008636142 then return false end + return band(cast("uint32_t*", P+30)[0],12648447) == 256 end + ``` diff --git a/doc/tcp-port-80.md b/doc/tcp-port-80.md index d15a4bc..d87214f 100644 --- a/doc/tcp-port-80.md +++ b/doc/tcp-port-80.md @@ -78,70 +78,33 @@ end ``` return function(P,length) - if not (length >= 34) then do return false end end - do - local v1 = ffi.cast("uint16_t*", P+12)[0] - if not (v1 == 8) then goto L3 end + if length < 34 then return false end + local var1 = cast("uint16_t*", P+12)[0] + if var1 == 8 then + if P[23] ~= 6 then return false end + if band(cast("uint16_t*", P+20)[0],65311) ~= 0 then return false end + local var7 = lshift(band(P[14],15),2) + local var8 = (var7 + 16) + if var8 > length then return false end + if cast("uint16_t*", P+(var7 + 14))[0] == 20480 then return true end + if (var7 + 18) > length then return false end + return cast("uint16_t*", P+var8)[0] == 20480 + else + if length < 56 then return false end + if var1 ~= 56710 then return false end + local var24 = P[20] + if var24 == 6 then goto L22 end do - local v2 = P[23] - if not (v2 == 6) then do return false end end - do - local v3 = ffi.cast("uint16_t*", P+20)[0] - local v4 = bit.band(v3,65311) - if not (v4 == 0) then do return false end end - do - local v5 = P[14] - local v6 = bit.band(v5,15) - local v7 = bit.lshift(v6,2) - local v8 = v7 + 16 - if not (v8 <= length) then do return false end end - do - local v9 = v7 + 14 - local v10 = ffi.cast("uint16_t*", P+v9)[0] - if v10 == 20480 then do return true end end - do - local v11 = v7 + 18 - if not (v11 <= length) then do return false end end - do - local v12 = ffi.cast("uint16_t*", P+v8)[0] - do return v12 == 20480 end - end - end - end - end - end - end -::L3:: - do - if not (length >= 56) then do return false end end - do - if not (v1 == 56710) then do return false end end - do - local v13 = P[20] - if v13 == 6 then goto L11 end - do - if not (v13 == 44) then do return false end end - do - local v14 = P[54] - if not (v14 == 6) then do return false end end - end - end -::L11:: - do - local v15 = ffi.cast("uint16_t*", P+54)[0] - if v15 == 20480 then do return true end end - do - if not (length >= 58) then do return false end end - do - local v16 = ffi.cast("uint16_t*", P+56)[0] - do return v16 == 20480 end - end - end - end - end - end + if var24 ~= 44 then return false end + if P[54] == 6 then goto L22 end + return false end +::L22:: + if cast("uint16_t*", P+54)[0] == 20480 then return true end + if length < 58 then return false end + return cast("uint16_t*", P+56)[0] == 20480 end end + ```