Skip to content

Instantly share code, notes, and snippets.

@wingo
Created September 2, 2014 13:59
Show Gist options
  • Save wingo/ca53c62937324dade1f9 to your computer and use it in GitHub Desktop.
Save wingo/ca53c62937324dade1f9 to your computer and use it in GitHub Desktop.
portrange 0-6000, disabling CSE and caching runtime functions in outer scope
return (function()
local cast = ffi.cast
local band = bit.band
local lshift = bit.lshift
local rshift = bit.rshift
local bswap = bit.bswap
return function(P,length)
if not (length >= 34) then return false end
do
if not (cast("uint16_t*", P+12)[0] == 8) then goto L3 end
do
if P[23] == 6 then goto L4 end
do
if P[23] == 17 then goto L4 end
do
if not (P[23] == 132) then return false end
end
end
::L4::
do
if not (band(cast("uint16_t*", P+20)[0],65311) == 0) then return false end
do
if not (lshift(band(P[14],15),2)+16 <= length) then return false end
do
if rshift(bswap(cast("uint16_t*", P+lshift(band(P[14],15),2)+14)[0]), 16) <= 6000 then return true end
do
if not (lshift(band(P[14],15),2)+18 <= length) then return false end
do
do return rshift(bswap(cast("uint16_t*", P+lshift(band(P[14],15),2)+16)[0]), 16) <= 6000 end
end
end
end
end
end
end
::L3::
do
if not (length >= 56) then return false end
do
if not (cast("uint16_t*", P+12)[0] == 56710) then return false end
do
if P[20] == 6 then goto L13 end
do
if not (P[20] == 44) then goto L14 end
do
if P[54] == 6 then goto L13 end
end
end
::L14::
do
if P[20] == 17 then goto L13 end
do
if not (P[20] == 44) then goto L17 end
do
if P[54] == 17 then goto L13 end
end
end
::L17::
do
if P[20] == 132 then goto L13 end
do
if not (P[20] == 44) then return false end
do
if not (P[54] == 132) then return false end
end
end
end
end
::L13::
do
if rshift(bswap(cast("uint16_t*", P+54)[0]), 16) <= 6000 then return true end
do
if not (length >= 58) then return false end
do
do return rshift(bswap(cast("uint16_t*", P+56)[0]), 16) <= 6000 end
end
end
end
end
end
end
end
end
end)()
---- TRACE 55 start pflua-match:12
0006 UGET 5 0 ; ffi
0007 TGETS 5 5 0 ; "cast"
0008 KSTR 6 1 ; "struct pcap_record *"
0009 MOV 7 0
0010 CALL 5 2 3
0000 . FUNCC ; ffi.cast
0011 UGET 6 0 ; ffi
0012 TGETS 6 6 0 ; "cast"
0013 KSTR 7 2 ; "unsigned char *"
0014 ADDVN 8 5 0 ; 1
0000 . . FUNCC ; ffi.meta.__add
0015 CALL 6 2 3
0000 . FUNCC ; ffi.cast
0016 TGETS 7 5 3 ; "incl_len"
0000 . . FUNCC ; ffi.meta.__index
0017 ADDVV 7 6 7
0000 . . FUNCC ; ffi.meta.__add
0018 MOV 8 2
0019 MOV 9 6
0020 TGETS 10 5 3 ; "incl_len"
0000 . . FUNCC ; ffi.meta.__index
0021 CALL 8 2 3
0000 . FUNCF 10 ; "portrange 0-6000":7
0001 . KSHORT 2 34
0002 . ISLE 2 1
0003 . JMP 2 => 0006
0006 . UGET 2 0 ; cast
0007 . KSTR 3 0 ; "uint16_t*"
0008 . ADDVN 4 0 0 ; 12
0000 . . . FUNCC ; ffi.meta.__add
0009 . CALL 2 2 3
0000 . . FUNCC ; ffi.cast
0010 . TGETB 2 2 0
0000 . . . FUNCC ; ffi.meta.__index
0011 . ISEQN 2 1 ; 8
0012 . JMP 2 => 0014
0014 . TGETB 2 0 23
0000 . . . FUNCC ; ffi.meta.__index
0015 . ISNEN 2 2 ; 6
0016 . JMP 2 => 0018
0017 . JMP 2 => 0027
0027 . UGET 2 1 ; band
0028 . UGET 3 0 ; cast
0029 . KSTR 4 0 ; "uint16_t*"
0030 . ADDVN 5 0 5 ; 20
0000 . . . FUNCC ; ffi.meta.__add
0031 . CALL 3 2 3
0000 . . FUNCC ; ffi.cast
0032 . TGETB 3 3 0
0000 . . . FUNCC ; ffi.meta.__index
0033 . KNUM 4 6 ; 65311
0034 . CALL 2 2 3
0000 . . FUNCC ; bit.band
0035 . ISEQN 2 7 ; 0
0036 . JMP 2 => 0039
0039 . UGET 2 2 ; lshift
0040 . UGET 3 1 ; band
0041 . TGETB 4 0 14
0000 . . . FUNCC ; ffi.meta.__index
0042 . KSHORT 5 15
0043 . CALL 3 2 3
0000 . . FUNCC ; bit.band
0044 . KSHORT 4 2
0045 . CALL 2 2 3
0000 . . FUNCC ; bit.lshift
0046 . ADDVN 2 2 8 ; 16
0047 . ISLE 2 1
0048 . JMP 2 => 0051
0051 . UGET 2 3 ; rshift
0052 . UGET 3 4 ; bswap
0053 . UGET 4 0 ; cast
0054 . KSTR 5 0 ; "uint16_t*"
0055 . UGET 6 2 ; lshift
0056 . UGET 7 1 ; band
0057 . TGETB 8 0 14
0000 . . . FUNCC ; ffi.meta.__index
0058 . KSHORT 9 15
0059 . CALL 7 2 3
0000 . . FUNCC ; bit.band
0060 . KSHORT 8 2
0061 . CALL 6 2 3
0000 . . FUNCC ; bit.lshift
0062 . ADDVV 6 0 6
0000 . . . FUNCC ; ffi.meta.__add
0063 . ADDVN 6 6 9 ; 14
0000 . . . FUNCC ; ffi.meta.__add
0064 . CALL 4 2 3
0000 . . FUNCC ; ffi.cast
0065 . TGETB 4 4 0
0000 . . . FUNCC ; ffi.meta.__index
0066 . CALL 3 2 2
0000 . . FUNCC ; bit.bswap
0067 . KSHORT 4 16
0068 . CALL 2 2 3
0000 . . FUNCC ; bit.rshift
0069 . KSHORT 3 6000
0070 . ISGT 2 3
0071 . JMP 2 => 0074
0072 . KPRI 2 2
0073 . RET1 2 2
0022 ISF 8
0023 JMP 9 => 0025
0024 ADDVN 4 4 0 ; 1
0025 ADDVN 3 3 0 ; 1
0026 MOV 0 7
0027 JMP 5 => 0003
0003 ISGE 0 1
0004 JMP 5 => 0028
0000 . . FUNCC ; ffi.meta.__lt
0005 LOOP 5 => 0028
---- TRACE 55 IR
0001 fun SLOAD #0 R
0002 > p32 UREFO 0001 #0
0003 > tab ULOAD 0002
0004 int FLOAD 0003 tab.hmask
0005 > int EQ 0004 +31
0006 p32 FLOAD 0003 tab.node
0007 > p32 HREFK 0006 "cast" @6
0008 > fun HLOAD 0007
0009 > cdt SLOAD #1 T
0010 > fun EQ 0008 ffi.cast
0011 u16 FLOAD 0009 cdata.ctypeid
0012 > int EQ 0011 +181
0013 p64 FLOAD 0009 cdata.ptr
0014 } cdt CNEWI +183 0013
0015 p64 ADD 0013 +16
0017 } cdt CNEWI +181 0015
0018 p64 ADD 0013 +8
0019 u32 XLOAD 0018
0020 num CONV 0019 num.u32
0021 + p64 ADD 0019 0015
0022 }+ cdt CNEWI +181 0021
0023 > fun SLOAD #3 T
0024 > fun EQ 0023 "portrange 0-6000":7
0025 > num GE 0020 +34
0026 p64 ADD 0013 +28
0029 u16 XLOAD 0026
0030 > int EQ 0029 +8
0032 p64 ADD 0013 +39
0033 u8 XLOAD 0032
0034 > int EQ 0033 +6
0035 p64 ADD 0013 +36
0038 u16 XLOAD 0035
0039 int BAND 0038 +65311
0040 > int EQ 0039 +0
0042 p64 ADD 0013 +30
0043 u8 XLOAD 0042
0045 int BSHL 0043 +2
0046 int BAND 0045 +60
0047 > int ADDOV 0046 +16
0048 num CONV 0047 num.int
0049 > num LE 0048 0020
0050 i64 CONV 0046 i64.int sext
0051 p64 ADD 0050 0015
0053 p64 ADD 0051 +14
0056 u16 XLOAD 0053
0057 int BSWAP 0056
0058 int BSHR 0057 +16
0059 > int LE 0058 +6000
0060 > num SLOAD #5 T
0061 + num ADD 0060 +1
0062 > num SLOAD #4 T
0063 + num ADD 0062 +1
0064 > cdt SLOAD #2 T
0065 u16 FLOAD 0064 cdata.ctypeid
0066 > int EQ 0065 +181
0067 p64 FLOAD 0064 cdata.ptr
0068 > p64 UGT 0067 0021
0069 ------ LOOP ------------
0070 > p32 UREFO 0001 #0
0071 } cdt CNEWI +183 0021
0072 p64 ADD 0021 +16
0073 } cdt CNEWI +181 0072
0074 p64 ADD 0021 +8
0075 u32 XLOAD 0074
0076 num CONV 0075 num.u32
0077 + p64 ADD 0075 0072
0078 }+ cdt CNEWI +181 0077
0079 > num GE 0076 +34
0080 p64 ADD 0021 +28
0081 u16 XLOAD 0080
0082 > int EQ 0081 +8
0083 p64 ADD 0021 +39
0084 u8 XLOAD 0083
0085 > int EQ 0084 +6
0086 p64 ADD 0021 +36
0087 u16 XLOAD 0086
0088 int BAND 0087 +65311
0089 > int EQ 0088 +0
0090 p64 ADD 0021 +30
0091 u8 XLOAD 0090
0092 int BSHL 0091 +2
0093 int BAND 0092 +60
0094 > int ADDOV 0093 +16
0095 num CONV 0094 num.int
0096 > num LE 0095 0076
0097 i64 CONV 0093 i64.int sext
0098 p64 ADD 0097 0072
0099 p64 ADD 0098 +14
0100 u16 XLOAD 0099
0101 int BSWAP 0100
0102 int BSHR 0101 +16
0103 > int LE 0102 +6000
0104 + num ADD 0061 +1
0105 + num ADD 0063 +1
0106 > p64 ULT 0077 0067
0107 } cdt PHI 0022 0078
0108 p64 PHI 0021 0077
0109 num PHI 0061 0104
0110 num PHI 0063 0105
---- TRACE 55 mcode 567
0bcaa8a2 mov dword [0x4120a4a0], 0x37
0bcaa8ad movsd xmm1, [0x405fe548]
0bcaa8b6 movsd xmm0, [0x405fe4f0]
0bcaa8bf mov eax, [rdx-0x8]
0bcaa8c2 mov edi, [rax+0x14]
0bcaa8c5 mov eax, [rdi+0x10]
0bcaa8c8 cmp dword [rax+0x4], -0x0c
0bcaa8cc jnz 0x0bca0010 ->0
0bcaa8d2 mov eax, [rax]
0bcaa8d4 cmp dword [rax+0x1c], +0x1f
0bcaa8d8 jnz 0x0bca0010 ->0
0bcaa8de mov ecx, [rax+0x14]
0bcaa8e1 mov rdi, 0xfffffffb41229298
0bcaa8eb cmp rdi, [rcx+0x98]
0bcaa8f2 jnz 0x0bca0010 ->0
0bcaa8f8 cmp dword [rcx+0x94], -0x09
0bcaa8ff jnz 0x0bca0010 ->0
0bcaa905 cmp dword [rdx+0x4], -0x0b
0bcaa909 jnz 0x0bca0010 ->0
0bcaa90f mov eax, [rdx]
0bcaa911 cmp dword [rcx+0x90], 0x4121f0d0
0bcaa91b jnz 0x0bca0010 ->0
0bcaa921 movzx ecx, word [rax+0x6]
0bcaa925 cmp ecx, 0xb5
0bcaa92b jnz 0x0bca0010 ->0
0bcaa931 mov rsi, [rax+0x8]
0bcaa935 mov rdi, rsi
0bcaa938 add rdi, +0x10
0bcaa93c mov ebp, [rsi+0x8]
0bcaa93f xorps xmm2, xmm2
0bcaa942 cvtsi2sd xmm2, rbp
0bcaa947 add rbp, rdi
0bcaa94a cmp dword [rdx+0x14], -0x09
0bcaa94e jnz 0x0bca0010 ->0
0bcaa954 cmp dword [rdx+0x10], 0x409907d0
0bcaa95b jnz 0x0bca0010 ->0
0bcaa961 ucomisd xmm2, xmm1
0bcaa965 jb 0x0bca0014 ->1
0bcaa96b cmp word [rsi+0x1c], +0x08
0bcaa970 jnz 0x0bca001c ->3
0bcaa976 cmp byte [rsi+0x27], 0x6
0bcaa97a jnz 0x0bca0020 ->4
0bcaa980 movzx r12d, word [rsi+0x24]
0bcaa985 test r12d, 0xff1f
0bcaa98c jnz 0x0bca0028 ->6
0bcaa992 movzx r10d, byte [rsi+0x1e]
0bcaa997 shl r10d, 0x02
0bcaa99b and r10d, +0x3c
0bcaa99f mov r11d, r10d
0bcaa9a2 add r11d, +0x10
0bcaa9a6 jo 0x0bca002c ->7
0bcaa9ac xorps xmm3, xmm3
0bcaa9af cvtsi2sd xmm3, r11d
0bcaa9b4 ucomisd xmm2, xmm3
0bcaa9b8 jb 0x0bca0030 ->8
0bcaa9be movsxd r9, r10d
0bcaa9c1 movzx r8d, word [r9+rdi+0xe]
0bcaa9c7 bswap r8d
0bcaa9ca shr r8d, 0x10
0bcaa9ce cmp r8d, 0x1770
0bcaa9d5 jg 0x0bca0038 ->10
0bcaa9db cmp dword [rdx+0x24], 0xfffeffff
0bcaa9e2 jnb 0x0bca003c ->11
0bcaa9e8 movsd xmm6, [rdx+0x20]
0bcaa9ed addsd xmm6, xmm0
0bcaa9f1 cmp dword [rdx+0x1c], 0xfffeffff
0bcaa9f8 jnb 0x0bca003c ->11
0bcaa9fe movsd xmm7, [rdx+0x18]
0bcaaa03 addsd xmm7, xmm0
0bcaaa07 cmp dword [rdx+0xc], -0x0b
0bcaaa0b jnz 0x0bca003c ->11
0bcaaa11 mov ecx, [rdx+0x8]
0bcaaa14 movzx edx, word [rcx+0x6]
0bcaaa18 cmp edx, 0xb5
0bcaaa1e jnz 0x0bca0040 ->12
0bcaaa24 mov rax, [rcx+0x8]
0bcaaa28 cmp rbp, rax
0bcaaa2b jnb 0x0bca0040 ->12
->LOOP:
0bcaaa31 mov rbx, rbp
0bcaaa34 mov r15, rbx
0bcaaa37 add r15, +0x10
0bcaaa3b mov ebp, [rbx+0x8]
0bcaaa3e xorps xmm5, xmm5
0bcaaa41 cvtsi2sd xmm5, rbp
0bcaaa46 add rbp, r15
0bcaaa49 ucomisd xmm5, xmm1
0bcaaa4d jb 0x0bca0048 ->14
0bcaaa53 cmp word [rbx+0x1c], +0x08
0bcaaa58 jnz 0x0bca004c ->15
0bcaaa5e cmp byte [rbx+0x27], 0x6
0bcaaa62 jnz 0x0bca0050 ->16
0bcaaa68 movzx r14d, word [rbx+0x24]
0bcaaa6d test r14d, 0xff1f
0bcaaa74 jnz 0x0bca0054 ->17
0bcaaa7a movzx r14d, byte [rbx+0x1e]
0bcaaa7f shl r14d, 0x02
0bcaaa83 and r14d, +0x3c
0bcaaa87 mov r13d, r14d
0bcaaa8a add r13d, +0x10
0bcaaa8e jo 0x0bca0058 ->18
0bcaaa94 xorps xmm4, xmm4
0bcaaa97 cvtsi2sd xmm4, r13d
0bcaaa9c ucomisd xmm5, xmm4
0bcaaaa0 jb 0x0bca005c ->19
0bcaaaa6 movsxd r14, r14d
0bcaaaa9 movzx r14d, word [r14+r15+0xe]
0bcaaaaf bswap r14d
0bcaaab2 shr r14d, 0x10
0bcaaab6 cmp r14d, 0x1770
0bcaaabd jg 0x0bca0060 ->20
0bcaaac3 addsd xmm6, xmm0
0bcaaac7 addsd xmm7, xmm0
0bcaaacb cmp rbp, rax
0bcaaace jb 0x0bcaaa31 ->LOOP
0bcaaad4 jmp 0x0bca0064 ->21
---- TRACE 55 stop -> loop
---- TRACE 56 start 55/20 "portrange 0-6000":27
0074 . UGET 2 2 ; lshift
0075 . UGET 3 1 ; band
0076 . TGETB 4 0 14
0000 . . . FUNCC ; ffi.meta.__index
0077 . KSHORT 5 15
0078 . CALL 3 2 3
0000 . . FUNCC ; bit.band
0079 . KSHORT 4 2
0080 . CALL 2 2 3
0000 . . FUNCC ; bit.lshift
0081 . ADDVN 2 2 10 ; 18
0082 . ISLE 2 1
0083 . JMP 2 => 0086
0086 . UGET 2 3 ; rshift
0087 . UGET 3 4 ; bswap
0088 . UGET 4 0 ; cast
0089 . KSTR 5 0 ; "uint16_t*"
0090 . UGET 6 2 ; lshift
0091 . UGET 7 1 ; band
0092 . TGETB 8 0 14
0000 . . . FUNCC ; ffi.meta.__index
0093 . KSHORT 9 15
0094 . CALL 7 2 3
0000 . . FUNCC ; bit.band
0095 . KSHORT 8 2
0096 . CALL 6 2 3
0000 . . FUNCC ; bit.lshift
0097 . ADDVV 6 0 6
0000 . . . FUNCC ; ffi.meta.__add
0098 . ADDVN 6 6 8 ; 16
0000 . . . FUNCC ; ffi.meta.__add
0099 . CALL 4 2 3
0000 . . FUNCC ; ffi.cast
0100 . TGETB 4 4 0
0000 . . . FUNCC ; ffi.meta.__index
0101 . CALL 3 2 2
0000 . . FUNCC ; bit.bswap
0102 . KSHORT 4 16
0103 . CALL 2 2 3
0000 . . FUNCC ; bit.rshift
0104 . KSHORT 3 6000
0105 . ISLE 2 3
0106 . JMP 2 => 0109
0109 . KPRI 2 2
0110 . RET1 2 2
0022 ISF 8
0023 JMP 9 => 0025
0024 ADDVN 4 4 0 ; 1
0025 ADDVN 3 3 0 ; 1
0026 MOV 0 7
0027 JMP 5 => 0003
0003 ISGE 0 1
0004 JMP 5 => 0028
0000 . . FUNCC ; ffi.meta.__lt
0005 JLOOP 5 55
---- TRACE 56 IR
0001 num SLOAD #4 PI
0002 num SLOAD #5 PI
0003 num SLOAD #11 PI
0004 p64 PVAL #21
0005 p64 PVAL #72
0006 p64 PVAL #77
0007 + cdt CNEWI +181 0004
0008 } cdt CNEWI +183 0004
0009 } cdt CNEWI +181 0005
0010 + cdt CNEWI +181 0006
0011 > nil GCSTEP
0012 p64 ADD 0005 +14
0013 u8 XLOAD 0012
0014 int BAND 0013 +15
0015 int BSHL 0013 +2
0016 int BAND 0015 +60
0017 > int ADDOV 0016 +18
0018 num CONV 0017 num.int
0019 > num LE 0018 0003
0020 i64 CONV 0016 i64.int sext
0021 p64 ADD 0020 0005
0022 } cdt CNEWI +181 0021
0023 p64 ADD 0021 +16
0024 } cdt CNEWI +181 0023
0025 } cdt CNEWI +184 0023
0026 u16 XLOAD 0023
0027 int BSWAP 0026
0028 int BSHR 0027 +16
0029 > int LE 0028 +6000
0030 num ADD 0002 +1
0031 num ADD 0001 +1
0032 > cdt SLOAD #2 T
0033 u16 FLOAD 0032 cdata.ctypeid
0034 > int EQ 0033 +181
0035 p64 FLOAD 0032 cdata.ptr
0036 > p64 UGT 0035 0006
---- TRACE 56 mcode 356
0bcaa73b mov r13, r15
0bcaa73e mov r14, rbx
0bcaa741 add rsp, -0x20
0bcaa745 mov dword [0x4120a4a0], 0x38
0bcaa750 movsd [rsp+0x10], xmm7
0bcaa756 movsd [rsp+0x8], xmm6
0bcaa75c movsd [rsp+0x18], xmm5
0bcaa762 mov edi, [0x4120a4ac]
0bcaa769 mov esi, 0x10
0bcaa76e call 0x0041f4e0 ->lj_mem_newgco
0bcaa773 movzx ecx, byte [0x4120a3e0]
0bcaa77b and ecx, +0x03
0bcaa77e or ecx, 0x00b50a00
0bcaa784 mov [rax+0x4], ecx
0bcaa787 mov [rax+0x8], r14
0bcaa78b mov r15d, eax
0bcaa78e mov edi, [0x4120a4ac]
0bcaa795 mov esi, 0x10
0bcaa79a call 0x0041f4e0 ->lj_mem_newgco
0bcaa79f movzx ecx, byte [0x4120a3e0]
0bcaa7a7 and ecx, +0x03
0bcaa7aa or ecx, 0x00b50a00
0bcaa7b0 mov [rax+0x4], ecx
0bcaa7b3 mov [rax+0x8], rbp
0bcaa7b7 mov [rsp+0x20], eax
0bcaa7bb mov edi, [0x4120a3d8]
0bcaa7c2 cmp edi, [0x4120a3dc]
0bcaa7c9 jb 0x0bcaa7e2
0bcaa7cb mov esi, 0x2
0bcaa7d0 mov edi, 0x4120a3b8
0bcaa7d5 call 0x0041f3d0 ->lj_gc_step_jit
0bcaa7da test eax, eax
0bcaa7dc jnz 0x0bca0010 ->0
0bcaa7e2 mov edx, [0x4120a4b0]
0bcaa7e9 mov eax, [rsp+0x20]
0bcaa7ed movsd xmm7, [rsp+0x18]
0bcaa7f3 movsd xmm5, [rsp+0x10]
0bcaa7f9 movsd xmm4, [rsp+0x8]
0bcaa7ff movsd xmm3, [0x405fe4f0]
0bcaa808 movzx ebx, byte [r13+0xe]
0bcaa80d shl ebx, 0x02
0bcaa810 and ebx, +0x3c
0bcaa813 mov r12d, ebx
0bcaa816 add r12d, +0x12
0bcaa81a jo 0x0bca0010 ->0
0bcaa820 xorps xmm6, xmm6
0bcaa823 cvtsi2sd xmm6, r12d
0bcaa828 ucomisd xmm7, xmm6
0bcaa82c jb 0x0bca0014 ->1
0bcaa832 movsxd rbx, ebx
0bcaa835 movzx ebx, word [rbx+r13+0x10]
0bcaa83b bswap ebx
0bcaa83d shr ebx, 0x10
0bcaa840 cmp ebx, 0x1770
0bcaa846 jg 0x0bca001c ->3
0bcaa84c movaps xmm6, xmm4
0bcaa84f addsd xmm6, xmm3
0bcaa853 movaps xmm7, xmm5
0bcaa856 addsd xmm7, xmm3
0bcaa85a cmp dword [rdx+0xc], -0x0b
0bcaa85e jnz 0x0bca0020 ->4
0bcaa864 mov ebx, [rdx+0x8]
0bcaa867 movzx r15d, word [rbx+0x6]
0bcaa86c cmp r15d, 0xb5
0bcaa873 jnz 0x0bca0024 ->5
0bcaa879 cmp rbp, [rbx+0x8]
0bcaa87d jnb 0x0bca0024 ->5
0bcaa883 movsd [rdx+0x20], xmm6
0bcaa888 movsd [rdx+0x18], xmm7
0bcaa88d mov dword [rdx+0x4], 0xfffffff5
0bcaa894 mov [rdx], eax
0bcaa896 add rsp, +0x20
0bcaa89a jmp 0x0bcaa8a2
---- TRACE 56 stop -> 55
---- TRACE 57 start 55/10 "portrange 0-6000":27
0074 . UGET 2 2 ; lshift
0075 . UGET 3 1 ; band
0076 . TGETB 4 0 14
0000 . . . FUNCC ; ffi.meta.__index
0077 . KSHORT 5 15
0078 . CALL 3 2 3
0000 . . FUNCC ; bit.band
0079 . KSHORT 4 2
0080 . CALL 2 2 3
0000 . . FUNCC ; bit.lshift
0081 . ADDVN 2 2 10 ; 18
0082 . ISLE 2 1
0083 . JMP 2 => 0086
0086 . UGET 2 3 ; rshift
0087 . UGET 3 4 ; bswap
0088 . UGET 4 0 ; cast
0089 . KSTR 5 0 ; "uint16_t*"
0090 . UGET 6 2 ; lshift
0091 . UGET 7 1 ; band
0092 . TGETB 8 0 14
0000 . . . FUNCC ; ffi.meta.__index
0093 . KSHORT 9 15
0094 . CALL 7 2 3
0000 . . FUNCC ; bit.band
0095 . KSHORT 8 2
0096 . CALL 6 2 3
0000 . . FUNCC ; bit.lshift
0097 . ADDVV 6 0 6
0000 . . . FUNCC ; ffi.meta.__add
0098 . ADDVN 6 6 8 ; 16
0000 . . . FUNCC ; ffi.meta.__add
0099 . CALL 4 2 3
0000 . . FUNCC ; ffi.cast
0100 . TGETB 4 4 0
0000 . . . FUNCC ; ffi.meta.__index
0101 . CALL 3 2 2
0000 . . FUNCC ; bit.bswap
0102 . KSHORT 4 16
0103 . CALL 2 2 3
0000 . . FUNCC ; bit.rshift
0104 . KSHORT 3 6000
0105 . ISLE 2 3
0106 . JMP 2 => 0109
0109 . KPRI 2 2
0110 . RET1 2 2
0022 ISF 8
0023 JMP 9 => 0025
0024 ADDVN 4 4 0 ; 1
0025 ADDVN 3 3 0 ; 1
0026 MOV 0 7
0027 JMP 5 => 0003
0003 ISGE 0 1
0004 JMP 5 => 0028
0000 . . FUNCC ; ffi.meta.__lt
0005 JLOOP 5 55
---- TRACE 57 IR
0001 num SLOAD #11 PI
0002 p64 PVAL #13
0003 p64 PVAL #15
0004 p64 PVAL #21
0005 } cdt CNEWI +183 0002
0006 } cdt CNEWI +181 0003
0007 + cdt CNEWI +181 0004
0008 > nil GCSTEP
0009 p64 ADD 0003 +14
0010 u8 XLOAD 0009
0011 int BAND 0010 +15
0012 int BSHL 0010 +2
0013 int BAND 0012 +60
0014 > int ADDOV 0013 +18
0015 num CONV 0014 num.int
0016 > num LE 0015 0001
0017 i64 CONV 0013 i64.int sext
0018 p64 ADD 0017 0003
0019 } cdt CNEWI +181 0018
0020 p64 ADD 0018 +16
0021 } cdt CNEWI +181 0020
0022 } cdt CNEWI +184 0020
0023 u16 XLOAD 0020
0024 int BSWAP 0023
0025 int BSHR 0024 +16
0026 > int LE 0025 +6000
0027 > num SLOAD #5 T
0028 num ADD 0027 +1
0029 > num SLOAD #4 T
0030 num ADD 0029 +1
0031 > cdt SLOAD #2 T
0032 u16 FLOAD 0031 cdata.ctypeid
0033 > int EQ 0032 +181
0034 p64 FLOAD 0031 cdata.ptr
0035 > p64 UGT 0034 0004
---- TRACE 57 mcode 325
0bcaa5f3 add rsp, -0x20
0bcaa5f7 mov dword [0x4120a4a0], 0x39
0bcaa602 movsd [rsp+0x8], xmm2
0bcaa608 mov [rsp+0x18], rsi
0bcaa60d mov [rsp+0x20], rdi
0bcaa612 mov edi, [0x4120a4ac]
0bcaa619 mov esi, 0x10
0bcaa61e call 0x0041f4e0 ->lj_mem_newgco
0bcaa623 movzx ecx, byte [0x4120a3e0]
0bcaa62b and ecx, +0x03
0bcaa62e or ecx, 0x00b50a00
0bcaa634 mov [rax+0x4], ecx
0bcaa637 mov [rax+0x8], rbp
0bcaa63b mov [rsp+0x10], eax
0bcaa63f mov edi, [0x4120a3d8]
0bcaa646 cmp edi, [0x4120a3dc]
0bcaa64d jb 0x0bcaa666
0bcaa64f mov esi, 0x1
0bcaa654 mov edi, 0x4120a3b8
0bcaa659 call 0x0041f3d0 ->lj_gc_step_jit
0bcaa65e test eax, eax
0bcaa660 jnz 0x0bca0010 ->0
0bcaa666 mov rdi, [rsp+0x20]
0bcaa66b mov edx, [0x4120a4b0]
0bcaa672 mov eax, [rsp+0x10]
0bcaa676 movsd xmm5, [0x405fe4f0]
0bcaa67f movsd xmm2, [rsp+0x8]
0bcaa685 movzx ebx, byte [rdi+0xe]
0bcaa689 shl ebx, 0x02
0bcaa68c and ebx, +0x3c
0bcaa68f mov r15d, ebx
0bcaa692 add r15d, +0x12
0bcaa696 jo 0x0bca0010 ->0
0bcaa69c xorps xmm7, xmm7
0bcaa69f cvtsi2sd xmm7, r15d
0bcaa6a4 ucomisd xmm2, xmm7
0bcaa6a8 jb 0x0bca0014 ->1
0bcaa6ae movsxd rbx, ebx
0bcaa6b1 movzx ebx, word [rbx+rdi+0x10]
0bcaa6b6 bswap ebx
0bcaa6b8 shr ebx, 0x10
0bcaa6bb cmp ebx, 0x1770
0bcaa6c1 jg 0x0bca001c ->3
0bcaa6c7 cmp dword [rdx+0x24], 0xfffeffff
0bcaa6ce jnb 0x0bca0020 ->4
0bcaa6d4 movsd xmm6, [rdx+0x20]
0bcaa6d9 addsd xmm6, xmm5
0bcaa6dd cmp dword [rdx+0x1c], 0xfffeffff
0bcaa6e4 jnb 0x0bca0020 ->4
0bcaa6ea movsd xmm7, [rdx+0x18]
0bcaa6ef addsd xmm7, xmm5
0bcaa6f3 cmp dword [rdx+0xc], -0x0b
0bcaa6f7 jnz 0x0bca0020 ->4
0bcaa6fd mov ebx, [rdx+0x8]
0bcaa700 movzx r15d, word [rbx+0x6]
0bcaa705 cmp r15d, 0xb5
0bcaa70c jnz 0x0bca0024 ->5
0bcaa712 cmp rbp, [rbx+0x8]
0bcaa716 jnb 0x0bca0024 ->5
0bcaa71c movsd [rdx+0x20], xmm6
0bcaa721 movsd [rdx+0x18], xmm7
0bcaa726 mov dword [rdx+0x4], 0xfffffff5
0bcaa72d mov [rdx], eax
0bcaa72f add rsp, +0x20
0bcaa733 jmp 0x0bcaa8a2
---- TRACE 57 stop -> 55
---- TRACE 58 start 55/4 "portrange 0-6000":14
0018 . TGETB 2 0 23
0000 . . . FUNCC ; ffi.meta.__index
0019 . ISNEN 2 3 ; 17
0020 . JMP 2 => 0022
0021 . JMP 2 => 0027
0027 . UGET 2 1 ; band
0028 . UGET 3 0 ; cast
0029 . KSTR 4 0 ; "uint16_t*"
0030 . ADDVN 5 0 5 ; 20
0000 . . . FUNCC ; ffi.meta.__add
0031 . CALL 3 2 3
0000 . . FUNCC ; ffi.cast
0032 . TGETB 3 3 0
0000 . . . FUNCC ; ffi.meta.__index
0033 . KNUM 4 6 ; 65311
0034 . CALL 2 2 3
0000 . . FUNCC ; bit.band
0035 . ISEQN 2 7 ; 0
0036 . JMP 2 => 0039
0039 . UGET 2 2 ; lshift
0040 . UGET 3 1 ; band
0041 . TGETB 4 0 14
0000 . . . FUNCC ; ffi.meta.__index
0042 . KSHORT 5 15
0043 . CALL 3 2 3
0000 . . FUNCC ; bit.band
0044 . KSHORT 4 2
0045 . CALL 2 2 3
0000 . . FUNCC ; bit.lshift
0046 . ADDVN 2 2 8 ; 16
0047 . ISLE 2 1
0048 . JMP 2 => 0051
0051 . UGET 2 3 ; rshift
0052 . UGET 3 4 ; bswap
0053 . UGET 4 0 ; cast
0054 . KSTR 5 0 ; "uint16_t*"
0055 . UGET 6 2 ; lshift
0056 . UGET 7 1 ; band
0057 . TGETB 8 0 14
0000 . . . FUNCC ; ffi.meta.__index
0058 . KSHORT 9 15
0059 . CALL 7 2 3
0000 . . FUNCC ; bit.band
0060 . KSHORT 8 2
0061 . CALL 6 2 3
0000 . . FUNCC ; bit.lshift
0062 . ADDVV 6 0 6
0000 . . . FUNCC ; ffi.meta.__add
0063 . ADDVN 6 6 9 ; 14
0000 . . . FUNCC ; ffi.meta.__add
0064 . CALL 4 2 3
0000 . . FUNCC ; ffi.cast
0065 . TGETB 4 4 0
0000 . . . FUNCC ; ffi.meta.__index
0066 . CALL 3 2 2
0000 . . FUNCC ; bit.bswap
0067 . KSHORT 4 16
0068 . CALL 2 2 3
0000 . . FUNCC ; bit.rshift
0069 . KSHORT 3 6000
0070 . ISGT 2 3
0071 . JMP 2 => 0074
0072 . KPRI 2 2
0073 . RET1 2 2
0022 ISF 8
0023 JMP 9 => 0025
0024 ADDVN 4 4 0 ; 1
0025 ADDVN 3 3 0 ; 1
0026 MOV 0 7
0027 JMP 5 => 0003
0003 ISGE 0 1
0004 JMP 5 => 0028
0000 . . FUNCC ; ffi.meta.__lt
0005 JLOOP 5 55
---- TRACE 58 IR
0001 num SLOAD #11 PI
0002 p64 PVAL #13
0003 p64 PVAL #15
0004 p64 PVAL #21
0005 } cdt CNEWI +183 0002
0006 } cdt CNEWI +181 0003
0007 + cdt CNEWI +181 0004
0008 > nil GCSTEP
0009 p64 ADD 0003 +23
0010 u8 XLOAD 0009
0011 > int EQ 0010 +17
0012 p64 ADD 0003 +20
0013 } cdt CNEWI +181 0012
0014 } cdt CNEWI +184 0012
0015 u16 XLOAD 0012
0016 int BAND 0015 +65311
0017 > int EQ 0016 +0
0018 p64 ADD 0003 +14
0019 u8 XLOAD 0018
0020 int BAND 0019 +15
0021 int BSHL 0019 +2
0022 int BAND 0021 +60
0023 > int ADDOV 0022 +16
0024 num CONV 0023 num.int
0025 > num LE 0024 0001
0026 i64 CONV 0022 i64.int sext
0027 p64 ADD 0026 0003
0028 } cdt CNEWI +181 0027
0029 p64 ADD 0027 +14
0030 } cdt CNEWI +181 0029
0031 } cdt CNEWI +184 0029
0032 u16 XLOAD 0029
0033 int BSWAP 0032
0034 int BSHR 0033 +16
0035 > int LE 0034 +6000
0036 > num SLOAD #5 T
0037 num ADD 0036 +1
0038 > num SLOAD #4 T
0039 num ADD 0038 +1
0040 > cdt SLOAD #2 T
0041 u16 FLOAD 0040 cdata.ctypeid
0042 > int EQ 0041 +181
0043 p64 FLOAD 0040 cdata.ptr
0044 > p64 UGT 0043 0004
---- TRACE 58 mcode 351
0bcaa491 add rsp, -0x20
0bcaa495 mov dword [0x4120a4a0], 0x3a
0bcaa4a0 movsd [rsp+0x8], xmm2
0bcaa4a6 mov [rsp+0x18], rsi
0bcaa4ab mov [rsp+0x20], rdi
0bcaa4b0 mov edi, [0x4120a4ac]
0bcaa4b7 mov esi, 0x10
0bcaa4bc call 0x0041f4e0 ->lj_mem_newgco
0bcaa4c1 movzx ecx, byte [0x4120a3e0]
0bcaa4c9 and ecx, +0x03
0bcaa4cc or ecx, 0x00b50a00
0bcaa4d2 mov [rax+0x4], ecx
0bcaa4d5 mov [rax+0x8], rbp
0bcaa4d9 mov [rsp+0x10], eax
0bcaa4dd mov edi, [0x4120a3d8]
0bcaa4e4 cmp edi, [0x4120a3dc]
0bcaa4eb jb 0x0bcaa504
0bcaa4ed mov esi, 0x1
0bcaa4f2 mov edi, 0x4120a3b8
0bcaa4f7 call 0x0041f3d0 ->lj_gc_step_jit
0bcaa4fc test eax, eax
0bcaa4fe jnz 0x0bca0010 ->0
0bcaa504 mov rdi, [rsp+0x20]
0bcaa509 mov edx, [0x4120a4b0]
0bcaa510 mov eax, [rsp+0x10]
0bcaa514 movsd xmm5, [0x405fe4f0]
0bcaa51d movsd xmm2, [rsp+0x8]
0bcaa523 cmp byte [rdi+0x17], 0x11
0bcaa527 jnz 0x0bca0014 ->1
0bcaa52d movzx ebx, word [rdi+0x14]
0bcaa531 test ebx, 0xff1f
0bcaa537 jnz 0x0bca001c ->3
0bcaa53d movzx ebx, byte [rdi+0xe]
0bcaa541 shl ebx, 0x02
0bcaa544 and ebx, +0x3c
0bcaa547 mov r15d, ebx
0bcaa54a add r15d, +0x10
0bcaa54e jo 0x0bca0020 ->4
0bcaa554 xorps xmm7, xmm7
0bcaa557 cvtsi2sd xmm7, r15d
0bcaa55c ucomisd xmm2, xmm7
0bcaa560 jb 0x0bca0024 ->5
0bcaa566 movsxd rbx, ebx
0bcaa569 movzx ebx, word [rbx+rdi+0xe]
0bcaa56e bswap ebx
0bcaa570 shr ebx, 0x10
0bcaa573 cmp ebx, 0x1770
0bcaa579 jg 0x0bca002c ->7
0bcaa57f cmp dword [rdx+0x24], 0xfffeffff
0bcaa586 jnb 0x0bca0030 ->8
0bcaa58c movsd xmm6, [rdx+0x20]
0bcaa591 addsd xmm6, xmm5
0bcaa595 cmp dword [rdx+0x1c], 0xfffeffff
0bcaa59c jnb 0x0bca0030 ->8
0bcaa5a2 movsd xmm7, [rdx+0x18]
0bcaa5a7 addsd xmm7, xmm5
0bcaa5ab cmp dword [rdx+0xc], -0x0b
0bcaa5af jnz 0x0bca0030 ->8
0bcaa5b5 mov ebx, [rdx+0x8]
0bcaa5b8 movzx r15d, word [rbx+0x6]
0bcaa5bd cmp r15d, 0xb5
0bcaa5c4 jnz 0x0bca0034 ->9
0bcaa5ca cmp rbp, [rbx+0x8]
0bcaa5ce jnb 0x0bca0034 ->9
0bcaa5d4 movsd [rdx+0x20], xmm6
0bcaa5d9 movsd [rdx+0x18], xmm7
0bcaa5de mov dword [rdx+0x4], 0xfffffff5
0bcaa5e5 mov [rdx], eax
0bcaa5e7 add rsp, +0x20
0bcaa5eb jmp 0x0bcaa8a2
---- TRACE 58 stop -> 55
---- TRACE 59 start 55/1 "portrange 0-6000":8
0004 . KPRI 2 1
0005 . RET1 2 2
0022 ISF 8
0023 JMP 9 => 0025
0025 ADDVN 3 3 0 ; 1
0026 MOV 0 7
0027 JMP 5 => 0003
0003 ISGE 0 1
0004 JMP 5 => 0028
0000 . . FUNCC ; ffi.meta.__lt
0005 JLOOP 5 55
---- TRACE 59 IR
0001 p64 PVAL #13
0002 p64 PVAL #15
0003 p64 PVAL #21
0004 } cdt CNEWI +183 0001
0005 } cdt CNEWI +181 0002
0006 + cdt CNEWI +181 0003
0007 > nil GCSTEP
0008 > num SLOAD #4 T
0009 num ADD 0008 +1
0010 > cdt SLOAD #2 T
0011 u16 FLOAD 0010 cdata.ctypeid
0012 > int EQ 0011 +181
0013 p64 FLOAD 0010 cdata.ptr
0014 > p64 UGT 0013 0003
---- TRACE 59 mcode 215
0bcaa3b7 add rsp, -0x10
0bcaa3bb mov dword [0x4120a4a0], 0x3b
0bcaa3c6 mov [rsp+0x10], rsi
0bcaa3cb mov [rsp+0x18], rdi
0bcaa3d0 mov edi, [0x4120a4ac]
0bcaa3d7 mov esi, 0x10
0bcaa3dc call 0x0041f4e0 ->lj_mem_newgco
0bcaa3e1 movzx ecx, byte [0x4120a3e0]
0bcaa3e9 and ecx, +0x03
0bcaa3ec or ecx, 0x00b50a00
0bcaa3f2 mov [rax+0x4], ecx
0bcaa3f5 mov [rax+0x8], rbp
0bcaa3f9 mov [rsp+0x8], eax
0bcaa3fd mov edi, [0x4120a3d8]
0bcaa404 cmp edi, [0x4120a3dc]
0bcaa40b jb 0x0bcaa424
0bcaa40d mov esi, 0x1
0bcaa412 mov edi, 0x4120a3b8
0bcaa417 call 0x0041f3d0 ->lj_gc_step_jit
0bcaa41c test eax, eax
0bcaa41e jnz 0x0bca0010 ->0
0bcaa424 mov edx, [0x4120a4b0]
0bcaa42b mov eax, [rsp+0x8]
0bcaa42f movsd xmm6, [0x405fe4f0]
0bcaa438 cmp dword [rdx+0x1c], 0xfffeffff
0bcaa43f jnb 0x0bca0010 ->0
0bcaa445 movsd xmm7, [rdx+0x18]
0bcaa44a addsd xmm7, xmm6
0bcaa44e cmp dword [rdx+0xc], -0x0b
0bcaa452 jnz 0x0bca0010 ->0
0bcaa458 mov ebx, [rdx+0x8]
0bcaa45b movzx r15d, word [rbx+0x6]
0bcaa460 cmp r15d, 0xb5
0bcaa467 jnz 0x0bca0014 ->1
0bcaa46d cmp rbp, [rbx+0x8]
0bcaa471 jnb 0x0bca0014 ->1
0bcaa477 movsd [rdx+0x18], xmm7
0bcaa47c mov dword [rdx+0x4], 0xfffffff5
0bcaa483 mov [rdx], eax
0bcaa485 add rsp, +0x10
0bcaa489 jmp 0x0bcaa8a2
---- TRACE 59 stop -> 55
---- TRACE 60 start 55/14 "portrange 0-6000":8
0004 . KPRI 2 1
0005 . RET1 2 2
0022 ISF 8
0023 JMP 9 => 0025
0025 ADDVN 3 3 0 ; 1
0026 MOV 0 7
0027 JMP 5 => 0003
0003 ISGE 0 1
0004 JMP 5 => 0028
0000 . . FUNCC ; ffi.meta.__lt
0005 JLOOP 5 55
---- TRACE 60 IR
0001 num SLOAD #4 PI
0002 num SLOAD #5 PI
0003 p64 PVAL #21
0004 p64 PVAL #72
0005 p64 PVAL #77
0006 + cdt CNEWI +181 0003
0007 } cdt CNEWI +183 0003
0008 } cdt CNEWI +181 0004
0009 + cdt CNEWI +181 0005
0010 > nil GCSTEP
0011 num ADD 0001 +1
0012 > cdt SLOAD #2 T
0013 u16 FLOAD 0012 cdata.ctypeid
0014 > int EQ 0013 +181
0015 p64 FLOAD 0012 cdata.ptr
0016 > p64 UGT 0015 0005
---- TRACE 60 mcode 269
0bcaa2a7 mov r13, r15
0bcaa2aa mov r14, rbx
0bcaa2ad add rsp, -0x10
0bcaa2b1 mov dword [0x4120a4a0], 0x3c
0bcaa2bc movsd [rsp+0x8], xmm7
0bcaa2c2 movsd [rsp+0x10], xmm6
0bcaa2c8 mov edi, [0x4120a4ac]
0bcaa2cf mov esi, 0x10
0bcaa2d4 call 0x0041f4e0 ->lj_mem_newgco
0bcaa2d9 movzx ecx, byte [0x4120a3e0]
0bcaa2e1 and ecx, +0x03
0bcaa2e4 or ecx, 0x00b50a00
0bcaa2ea mov [rax+0x4], ecx
0bcaa2ed mov [rax+0x8], r14
0bcaa2f1 mov r15d, eax
0bcaa2f4 mov edi, [0x4120a4ac]
0bcaa2fb mov esi, 0x10
0bcaa300 call 0x0041f4e0 ->lj_mem_newgco
0bcaa305 movzx ecx, byte [0x4120a3e0]
0bcaa30d and ecx, +0x03
0bcaa310 or ecx, 0x00b50a00
0bcaa316 mov [rax+0x4], ecx
0bcaa319 mov [rax+0x8], rbp
0bcaa31d mov [rsp+0x18], eax
0bcaa321 mov edi, [0x4120a3d8]
0bcaa328 cmp edi, [0x4120a3dc]
0bcaa32f jb 0x0bcaa348
0bcaa331 mov esi, 0x2
0bcaa336 mov edi, 0x4120a3b8
0bcaa33b call 0x0041f3d0 ->lj_gc_step_jit
0bcaa340 test eax, eax
0bcaa342 jnz 0x0bca0010 ->0
0bcaa348 mov edx, [0x4120a4b0]
0bcaa34f mov eax, [rsp+0x18]
0bcaa353 movsd xmm6, [rsp+0x10]
0bcaa359 movsd xmm5, [rsp+0x8]
0bcaa35f movsd xmm4, [0x405fe4f0]
0bcaa368 movaps xmm7, xmm5
0bcaa36b addsd xmm7, xmm4
0bcaa36f cmp dword [rdx+0xc], -0x0b
0bcaa373 jnz 0x0bca0010 ->0
0bcaa379 mov ebx, [rdx+0x8]
0bcaa37c movzx r15d, word [rbx+0x6]
0bcaa381 cmp r15d, 0xb5
0bcaa388 jnz 0x0bca0014 ->1
0bcaa38e cmp rbp, [rbx+0x8]
0bcaa392 jnb 0x0bca0014 ->1
0bcaa398 movsd [rdx+0x20], xmm6
0bcaa39d movsd [rdx+0x18], xmm7
0bcaa3a2 mov dword [rdx+0x4], 0xfffffff5
0bcaa3a9 mov [rdx], eax
0bcaa3ab add rsp, +0x10
0bcaa3af jmp 0x0bcaa8a2
---- TRACE 60 stop -> 55
Matched 19574/19589 packets from /home/wingo/src/pflua-bench/savefiles/wingolog.org.pcap (10.663582 MPPS).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment