Skip to content

Instantly share code, notes, and snippets.

@kbara
Last active August 29, 2015 14:22
Show Gist options
  • Save kbara/5a93c82f83c62515cf84 to your computer and use it in GitHub Desktop.
Save kbara/5a93c82f83c62515cf84 to your computer and use it in GitHub Desktop.
Minimizing 225
{ "if",
{ ">=",
"len",
54 },
{ "let",
"var1",
{ "[]",
12,
2 },
{ "if",
{ "if",
{ "=",
"var1",
56710 },
{ "let",
"var2",
{ "[]",
20,
1 },
{ "if",
{ "if",
{ "if",
{ "=",
"var2",
58 },
{ "true" },
{ "if",
{ "=",
"var2",
44 },
{ "if",
{ ">=",
"len",
55 },
{ "=",
{ "[]",
54,
1 },
58 },
{ "fail" } },
{ "false" } } },
{ "if",
{ "=",
{ "[]",
22,
4 },
17169983 },
{ "if",
{ "=",
{ "[]",
26,
4 },
17825792 },
{ "if",
{ "=",
{ "[]",
30,
4 },
0 },
{ "=",
{ "[]",
34,
4 },
33554432 },
{ "false" } },
{ "false" } },
{ "false" } },
{ "false" } },
{ "if",
{ "=",
{ "[]",
38,
4 },
117833279 },
{ "if",
{ "=",
{ "[]",
42,
4 },
16777216 },
{ "if",
{ "=",
{ "[]",
46,
4 },
4286971906 },
{ "=",
{ "&",
{ "[]",
50,
4 },
15794175 },
8390142 },
{ "false" } },
{ "false" } },
{ "false" } },
{ "false" } } },
{ "false" } },
{ "match" },
{ "if",
{ "if",
{ "if",
{ "=",
"var1",
56710 },
{ "let",
"var15",
{ "[]",
20,
1 },
{ "if",
{ "if",
{ "if",
{ "=",
"var15",
17 },
{ "true" },
{ "if",
{ "=",
"var15",
44 },
{ "if",
{ ">=",
"len",
55 },
{ "=",
{ "[]",
54,
1 },
17 },
{ "fail" } },
{ "false" } } },
{ "=",
{ "&",
{ "[]",
22,
4 },
-251658241 },
392767 },
{ "false" } },
{ "if",
{ "=",
{ "[]",
38,
4 },
17169983 },
{ "=",
{ "[]",
42,
4 },
6472 },
{ "false" } },
{ "false" } } },
{ "false" } },
{ "if",
{ "=",
"var1",
8 },
{ "let",
"var23",
{ "[]",
23,
1 },
{ "if",
{ "if",
{ "=",
"var23",
6 },
{ "true" },
{ "if",
{ "=",
"var23",
17 },
{ "true" },
{ "=",
"var23",
132 } } },
{ "if",
{ "=",
{ "&",
{ "[]",
20,
2 },
65311 },
0 },
{ "let",
"var30",
{ "<<",
{ "&",
{ "[]",
14,
1 },
15 },
2 },
{ "if",
{ "<=",
{ "+",
"var30",
16 },
"len" },
{ "let",
"var37",
{ "ntohs",
{ "[]",
{ "+",
"var30",
14 },
2 } },
{ "if",
{ ">=",
"var37",
2397 },
{ "<=",
"var37",
2399 },
{ "false" } } },
{ "fail" } } },
{ "false" } },
{ "false" } } },
{ "if",
{ "=",
"var1",
56710 },
{ "let",
"var45",
{ "[]",
20,
1 },
{ "if",
{ "if",
{ "if",
{ "=",
"var45",
6 },
{ "true" },
{ "if",
{ "=",
"var45",
44 },
{ "if",
{ ">=",
"len",
55 },
{ "=",
{ "[]",
54,
1 },
6 },
{ "fail" } },
{ "false" } } },
{ "true" },
{ "if",
{ "if",
{ "=",
"var45",
17 },
{ "true" },
{ "if",
{ "=",
"var45",
44 },
{ "if",
{ ">=",
"len",
55 },
{ "=",
{ "[]",
54,
1 },
17 },
{ "fail" } },
{ "false" } } },
{ "true" },
{ "if",
{ "=",
"var45",
132 },
{ "true" },
{ "if",
{ "=",
"var45",
44 },
{ "if",
{ ">=",
"len",
55 },
{ "=",
{ "[]",
54,
1 },
132 },
{ "fail" } },
{ "false" } } } } },
{ "if",
{ ">=",
"len",
56 },
{ "let",
"var55",
{ "ntohs",
{ "[]",
54,
2 } },
{ "if",
{ ">=",
"var55",
2397 },
{ "<=",
"var55",
2399 },
{ "false" } } },
{ "fail" } },
{ "false" } } },
{ "false" } } },
{ "false" } },
{ "if",
{ "=",
"var1",
8 },
{ "let",
"var59",
{ "[]",
23,
1 },
{ "if",
{ "if",
{ "=",
"var59",
6 },
{ "true" },
{ "if",
{ "=",
"var59",
17 },
{ "true" },
{ "=",
"var59",
132 } } },
{ "if",
{ "=",
{ "&",
{ "[]",
20,
2 },
65311 },
0 },
{ "let",
"var66",
{ "<<",
{ "&",
{ "[]",
14,
1 },
15 },
2 },
{ "if",
{ "<=",
{ "+",
"var66",
18 },
"len" },
{ "=",
{ "[]",
{ "+",
"var66",
16 },
2 },
13568 },
{ "fail" } } },
{ "fail" } },
{ "fail" } } },
{ "if",
{ ">=",
"len",
58 },
{ "if",
{ "=",
"var1",
56710 },
{ "let",
"var74",
{ "[]",
20,
1 },
{ "if",
{ "if",
{ "if",
{ "=",
"var74",
6 },
{ "true" },
{ "if",
{ "=",
"var74",
44 },
{ "=",
{ "[]",
54,
1 },
6 },
{ "false" } } },
{ "true" },
{ "if",
{ "if",
{ "=",
"var74",
17 },
{ "true" },
{ "if",
{ "=",
"var74",
44 },
{ "=",
{ "[]",
54,
1 },
17 },
{ "false" } } },
{ "true" },
{ "if",
{ "=",
"var74",
132 },
{ "true" },
{ "if",
{ "=",
"var74",
44 },
{ "=",
{ "[]",
54,
1 },
132 },
{ "false" } } } } },
{ "=",
{ "[]",
56,
2 },
13568 },
{ "fail" } } },
{ "fail" } },
{ "fail" } } },
{ "fail" } } } },
{ "fail" } }
p = require("parse")
ssa = require("ssa")
data = assert(loadstring('anf = ' .. io.open("anf"):read("*a")))()
ssa.lower(anf)
---- TRACE 2 start ssa.lua:39
0001 UGET 0 0 ; label_counter
0002 ADDVN 0 0 0 ; 1
0003 USETV 0 0 ; label_counter
0004 KSTR 0 0 ; "L"
0005 UGET 1 0 ; label_counter
0006 CAT 0 0 1
0007 TDUP 1 1
0008 TNEW 2 0
0009 TSETS 2 1 2 ; "bindings"
0010 TSETS 0 1 3 ; "label"
0011 UGET 2 1 ; ssa
0012 TGETS 2 2 4 ; "blocks"
0013 TSETV 1 2 0
0014 RET1 1 2
---- TRACE 2 IR
.... SNAP #0 [ ---- ]
0001 rbp fun SLOAD #0 R
0002 rbx > p32 UREFO 0001 #0
0003 xmm7 > num ULOAD 0002
0004 [10] num ADD 0003 +1 
0005 num USTORE 0002 0004
.... SNAP #1 [ ---- ---- ]
0006 str TOSTR 0004 NUM
0007 rdi p32 BUFHDR [0x4009d414] RESET
0008 rdi p32 BUFPUT 0007 "L" 
0009 rdi p32 BUFPUT 0008 0006
0010 [c] str BUFSTR 0009 0007
0011 [8] > tab TDUP {0x41465068}
0012 r15 > tab TNEW #0 #0
0013 rbx p32 FLOAD 0011 tab.node
0014 p32 HREFK 0013 "bindings" @0
0015 tab HSTORE 0014 0012
0016 p32 HREFK 0013 "label" @1
0017 str HSTORE 0016 0010
.... SNAP #2 [ ---- 0010 0011 ---- ]
0018 rbp > p32 UREFO 0001 #1
0019 rbp > tab ULOAD 0018
0020 int FLOAD 0019 tab.hmask
0021 > int EQ 0020 +1 
0022 rbp p32 FLOAD 0019 tab.node
0023 > p32 HREFK 0022 "blocks" @0
0024 rbp > tab HLOAD 0023
0025 rsi p32 HREF 0024 0010
0026 > p32 EQ 0025 [0x4009d458]
0027 tab FLOAD 0024 tab.meta
0028 > tab EQ 0027 [NULL]
0029 rbx p32 NEWREF 0024 0010
0030 tab HSTORE 0029 0011
0031 nil TBAR 0024
0032 p32 FREF 0024 tab.nomm
0033 u8  FSTORE 0032 +0 
.... SNAP #3 [ ---- ---- 0011 ]
---- TRACE 2 mcode 441
0bcbfc50 add rsp, -0x10
0bcbfc54 mov dword [0x4009d410], 0x2
0bcbfc5f mov edi, [0x4009d3d8]
0bcbfc66 cmp edi, [0x4009d3dc]
0bcbfc6d jb 0x0bcbfc86
0bcbfc6f mov esi, 0x3
0bcbfc74 mov edi, 0x4009d3b8
0bcbfc79 call 0x00421730 ->lj_gc_step_jit
0bcbfc7e test eax, eax
0bcbfc80 jnz 0x0bcb0010 ->0
0bcbfc86 mov edx, [0x4009d4b4]
0bcbfc8d mov ebp, [rdx-0x8]
0bcbfc90 mov edi, [rbp+0x14]
0bcbfc93 mov ebx, [rdi+0x10]
0bcbfc96 cmp dword [rbx+0x4], 0xfffeffff
0bcbfc9d jnb 0x0bcb0010 ->0
0bcbfca3 movsd xmm7, [rbx]
0bcbfca7 addsd xmm7, [0x400acda8]
0bcbfcb0 movsd [rsp+0x10], xmm7
0bcbfcb6 movsd [rbx], xmm7
0bcbfcba mov edi, 0x4009d414
0bcbfcbf mov esi, [rdi+0x8]
0bcbfcc2 mov [rdi], esi
0bcbfcc4 mov esi, 0x4c
0bcbfcc9 call 0x00421b60 ->lj_buf_putchar
0bcbfcce mov edi, eax
0bcbfcd0 lea rsi, [rsp+0x10]
0bcbfcd5 call 0x0040a3c0 ->lj_strfmt_putnum
0bcbfcda mov edi, eax
0bcbfcdc call 0x00421ff0 ->lj_buf_tostr
0bcbfce1 mov [rsp+0xc], eax
0bcbfce5 mov edi, [0x4009d4b0]
0bcbfcec mov esi, 0x41465068
0bcbfcf1 call 0x004223c0 ->lj_tab_dup
0bcbfcf6 mov ebx, eax
0bcbfcf8 mov [rsp+0x8], ebx
0bcbfcfc mov edi, [0x4009d4b0]
0bcbfd03 xor esi, esi
0bcbfd05 call 0x00422350 ->lj_tab_new1
0bcbfd0a mov r15d, eax
0bcbfd0d mov edi, [0x4009d4b0]
0bcbfd14 mov eax, [rsp+0xc]
0bcbfd18 mov ebx, [rbx+0x14]
0bcbfd1b mov dword [rbx+0x4], 0xfffffff4
0bcbfd22 mov [rbx], r15d
0bcbfd25 mov dword [rbx+0x1c], 0xfffffffb
0bcbfd2c mov [rbx+0x18], eax
0bcbfd2f mov esi, [rbp+0x18]
0bcbfd32 mov ebp, [rsi+0x10]
0bcbfd35 cmp dword [rbp+0x4], -0x0c
0bcbfd39 jnz 0x0bcb0018 ->2
0bcbfd3f mov ebp, [rbp+0x0]
0bcbfd42 cmp dword [rbp+0x1c], +0x01
0bcbfd46 jnz 0x0bcb0018 ->2
0bcbfd4c mov ebp, [rbp+0x14]
0bcbfd4f mov rsi, 0xfffffffb41466c58
0bcbfd59 cmp rsi, [rbp+0x8]
0bcbfd5d jnz 0x0bcb0018 ->2
0bcbfd63 cmp dword [rbp+0x4], -0x0c
0bcbfd67 jnz 0x0bcb0018 ->2
0bcbfd6d mov ebp, [rbp+0x0]
0bcbfd70 mov esi, [rbp+0x1c]
0bcbfd73 and esi, [rax+0x8]
0bcbfd76 lea esi, [rsi+rsi*2]
0bcbfd79 shl esi, 0x03
0bcbfd7c add esi, [rbp+0x14]
0bcbfd7f cmp dword [rsi+0xc], -0x05
0bcbfd83 jnz 0x0bcbfd8e
0bcbfd85 cmp eax, [rsi+0x8]
0bcbfd88 jz 0x0bcb0018 ->2
0bcbfd8e mov esi, [rsi+0x10]
0bcbfd91 test esi, esi
0bcbfd93 jnz 0x0bcbfd7f
0bcbfd95 cmp dword [rbp+0x10], +0x00
0bcbfd99 jnz 0x0bcb0018 ->2
0bcbfd9f mov edx, 0x4009d448
0bcbfda4 mov dword [rdx+0x4], 0xfffffffb
0bcbfdab mov [rdx], eax
0bcbfdad mov esi, ebp
0bcbfdaf call 0x00422cf0 ->lj_tab_newkey
0bcbfdb4 mov ebx, eax
0bcbfdb6 mov edx, [0x4009d4b4]
0bcbfdbd mov eax, [rsp+0x8]
0bcbfdc1 mov dword [rbx+0x4], 0xfffffff4
0bcbfdc8 mov [rbx], eax
0bcbfdca test byte [rbp+0x4], 0x4
0bcbfdce jz 0x0bcbfde5
0bcbfdd0 and byte [rbp+0x4], 0xfb
0bcbfdd4 mov edi, [0x4009d3f4]
0bcbfddb mov [0x4009d3f4], ebp
0bcbfde2 mov [rbp+0xc], edi
0bcbfde5 mov byte [rbp+0x6], 0x0
0bcbfde9 mov dword [rdx+0xc], 0xfffffff4
0bcbfdf0 mov [rdx+0x8], eax
0bcbfdf3 xor eax, eax
0bcbfdf5 mov ebx, 0x414720d0
0bcbfdfa mov r14d, 0x4009e008
0bcbfe00 add rsp, +0x10
0bcbfe04 jmp 0x00420177
---- TRACE 2 stop -> return
---- TRACE 3 start ssa.lua:55
0001 GGET 4 0 ; "assert"
0002 GGET 5 1 ; "type"
0003 MOV 6 0
0004 CALL 5 2 2
0000 . FUNCC ; type
0005 ISEQS 5 2 ; "table"
0006 JMP 5 => 0009
0009 KPRI 5 2
0010 CALL 4 1 2
0000 . FUNCC ; assert
0011 TGETB 4 0 1
0012 ISNES 4 3 ; "if"
0013 JMP 5 => 0037
0037 ISNES 4 4 ; "let"
0038 JMP 5 => 0056
0056 ISNES 4 10 ; "true"
0057 JMP 5 => 0063
0063 ISNES 4 11 ; "false"
0064 JMP 5 => 0070
0070 ISNES 4 12 ; "match"
0071 JMP 5 => 0077
0077 ISNES 4 14 ; "fail"
0078 JMP 5 => 0084
0084 GGET 5 0 ; "assert"
0085 UGET 6 4 ; relops
0086 TGETV 6 6 4
0087 CALL 5 1 2
0000 . FUNCC ; assert
0088 UGET 5 5 ; finish_if
0089 MOV 6 1
0090 MOV 7 0
0091 MOV 8 2
0092 MOV 9 3
0093 CALL 5 1 5
0000 . FUNCF 6 ; ssa.lua:49
0001 . TDUP 4 1
0002 . TSETB 1 4 2
0003 . TGETS 5 2 2 ; "label"
0004 . TSETB 5 4 3
0005 . TGETS 5 3 2 ; "label"
0006 . TSETB 5 4 4
0007 . TSETS 4 0 0 ; "control"
0008 . RET0 0 1
0094 RET0 0 1
---- TRACE 3 IR
.... SNAP #0 [ ---- ---- ---- ---- ---- ]
0001 rbp fun SLOAD #0 R
0002 r15 tab FLOAD 0001 func.env
0003 rsi p32 HREF 0002 "assert"
0004 > p32 EQ 0003 [0x4009d458]
0005 rbx tab FLOAD 0002 tab.meta
0006 > tab NE 0005 [NULL]
0007 int FLOAD 0005 tab.hmask
0008 > int EQ 0007 +1 
0009 rbx p32 FLOAD 0005 tab.node
0010 > p32 HREFK 0009 "__index" @1
0011 rbx > tab HLOAD 0010
0012 int FLOAD 0011 tab.hmask
0013 > int EQ 0012 +63 
0014 rbx p32 FLOAD 0011 tab.node
0015 > p32 HREFK 0014 "assert" @3
0016 > fun HLOAD 0015
0017 rsi p32 HREF 0002 "type"
0018 > p32 EQ 0017 [0x4009d458]
0019 > p32 HREFK 0014 "type" @60
0020 > fun HLOAD 0019
0021 r15 > tab SLOAD #1 T
0022 > fun EQ 0020 type
0023 > fun EQ 0016 assert
0024 int FLOAD 0021 tab.asize
0025 > int ABC 0024 +1 
0026 rbx p32 FLOAD 0021 tab.array
0027 p32 AREF 0026 +1 
0028 rbx > str ALOAD 0027
.... SNAP #1 [ ---- ---- ---- ---- ---- 0028 ]
0029 > str NE 0028 "if"
.... SNAP #2 [ ---- ---- ---- ---- ---- 0028 ]
0030 > str NE 0028 "let"
.... SNAP #3 [ ---- ---- ---- ---- ---- 0028 ]
0031 > str NE 0028 "true"
.... SNAP #4 [ ---- ---- ---- ---- ---- 0028 ]
0032 > str NE 0028 "false"
.... SNAP #5 [ ---- ---- ---- ---- ---- 0028 ]
0033 > str NE 0028 "match"
.... SNAP #6 [ ---- ---- ---- ---- ---- 0028 ]
0034 > str NE 0028 "fail"
.... SNAP #7 [ ---- ---- ---- ---- ---- 0028 ]
0035 r14 > p32 UREFC 0001 #4
0036 r13 > tab ULOAD 0035
0037 r14 p32 HREF 0036 0028
0038 > tru HLOAD 0037
0039 > fun EQ 0001 ssa.lua:55
0040 rbp > tab SLOAD #2 T
0041 r13 > tab SLOAD #3 T
0042 r14 > tab SLOAD #4 T
0043 [8] > tab TDUP {0x400ba0c0}
0044 rax p32 FLOAD 0043 tab.array
0045 p32 AREF 0044 +2 
0046 tab ASTORE 0045 0021
.... SNAP #8 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:49|0040 ---- 0041 0042 0043 ]
0047 int FLOAD 0041 tab.hmask
0048 > int EQ 0047 +1 
0049 r15 p32 FLOAD 0041 tab.node
0050 > p32 HREFK 0049 "label" @1
0051 r15 > str HLOAD 0050
0052 p32 AREF 0044 +3 
0053 str ASTORE 0052 0051
.... SNAP #9 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:49|0040 ---- ---- 0042 0043 ---- ]
0054 int FLOAD 0042 tab.hmask
0055 > int EQ 0054 +1 
0056 r15 p32 FLOAD 0042 tab.node
0057 > p32 HREFK 0056 "label" @1
0058 r15 > str HLOAD 0057
0059 p32 AREF 0044 +4 
0060 str ASTORE 0059 0058
.... SNAP #10 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:49|0040 ---- ---- ---- 0043 ---- ]
0061 rsi p32 HREF 0040 "control"
0062 > p32 EQ 0061 [0x4009d458]
0063 tab FLOAD 0040 tab.meta
0064 > tab EQ 0063 [NULL]
0065 rbx p32 NEWREF 0040 "control"
0066 tab HSTORE 0065 0043
0067 nil TBAR 0040
.... SNAP #11 [ ssa.lua:55|]
---- TRACE 3 mcode 916
0bcbf8b5 mov dword [0x4009d410], 0x3
0bcbf8c0 mov edi, [0x4009d3d8]
0bcbf8c7 cmp edi, [0x4009d3dc]
0bcbf8ce jb 0x0bcbf8e7
0bcbf8d0 mov esi, 0x1
0bcbf8d5 mov edi, 0x4009d3b8
0bcbf8da call 0x00421730 ->lj_gc_step_jit
0bcbf8df test eax, eax
0bcbf8e1 jnz 0x0bcb0010 ->0
0bcbf8e7 mov edi, [0x4009d4b0]
0bcbf8ee mov edx, [0x4009d4b4]
0bcbf8f5 mov ebp, [rdx-0x8]
0bcbf8f8 mov r15d, [rbp+0x8]
0bcbf8fc mov esi, [r15+0x1c]
0bcbf900 and esi, 0xce2b6183
0bcbf906 lea esi, [rsi+rsi*2]
0bcbf909 shl esi, 0x03
0bcbf90c add esi, [r15+0x14]
0bcbf910 cmp dword [rsi+0xc], -0x05
0bcbf914 jnz 0x0bcbf923
0bcbf916 cmp dword [rsi+0x8], 0x4009fdb0
0bcbf91d jz 0x0bcb0010 ->0
0bcbf923 mov esi, [rsi+0x10]
0bcbf926 test esi, esi
0bcbf928 jnz 0x0bcbf910
0bcbf92a mov ebx, [r15+0x10]
0bcbf92e test ebx, ebx
0bcbf930 jz 0x0bcb0010 ->0
0bcbf936 cmp dword [rbx+0x1c], +0x01
0bcbf93a jnz 0x0bcb0010 ->0
0bcbf940 mov ebx, [rbx+0x14]
0bcbf943 mov rsi, 0xfffffffb4009f4c8
0bcbf94d cmp rsi, [rbx+0x20]
0bcbf951 jnz 0x0bcb0010 ->0
0bcbf957 cmp dword [rbx+0x1c], -0x0c
0bcbf95b jnz 0x0bcb0010 ->0
0bcbf961 mov ebx, [rbx+0x18]
0bcbf964 cmp dword [rbx+0x1c], +0x3f
0bcbf968 jnz 0x0bcb0010 ->0
0bcbf96e mov ebx, [rbx+0x14]
0bcbf971 mov rsi, 0xfffffffb4009fdb0
0bcbf97b cmp rsi, [rbx+0x50]
0bcbf97f jnz 0x0bcb0010 ->0
0bcbf985 cmp dword [rbx+0x4c], -0x09
0bcbf989 jnz 0x0bcb0010 ->0
0bcbf98f mov esi, [r15+0x1c]
0bcbf993 and esi, 0x798a813c
0bcbf999 lea esi, [rsi+rsi*2]
0bcbf99c shl esi, 0x03
0bcbf99f add esi, [r15+0x14]
0bcbf9a3 cmp dword [rsi+0xc], -0x05
0bcbf9a7 jnz 0x0bcbf9b6
0bcbf9a9 cmp dword [rsi+0x8], 0x4009ffb0
0bcbf9b0 jz 0x0bcb0010 ->0
0bcbf9b6 mov esi, [rsi+0x10]
0bcbf9b9 test esi, esi
0bcbf9bb jnz 0x0bcbf9a3
0bcbf9bd mov rsi, 0xfffffffb4009ffb0
0bcbf9c7 cmp rsi, [rbx+0x5a8]
0bcbf9ce jnz 0x0bcb0010 ->0
0bcbf9d4 cmp dword [rbx+0x5a4], -0x09
0bcbf9db jnz 0x0bcb0010 ->0
0bcbf9e1 cmp dword [rdx+0x4], -0x0c
0bcbf9e5 jnz 0x0bcb0010 ->0
0bcbf9eb mov r15d, [rdx]
0bcbf9ee cmp dword [rbx+0x5a0], 0x4009ff18
0bcbf9f8 jnz 0x0bcb0010 ->0
0bcbf9fe cmp dword [rbx+0x48], 0x4009fd88
0bcbfa05 jnz 0x0bcb0010 ->0
0bcbfa0b cmp dword [r15+0x18], +0x01
0bcbfa10 jbe 0x0bcb0010 ->0
0bcbfa16 mov ebx, [r15+0x8]
0bcbfa1a cmp dword [rbx+0xc], -0x05
0bcbfa1e jnz 0x0bcb0010 ->0
0bcbfa24 mov ebx, [rbx+0x8]
0bcbfa27 cmp ebx, 0x4009f8f8
0bcbfa2d jz 0x0bcb0014 ->1
0bcbfa33 cmp ebx, 0x400b9160
0bcbfa39 jz 0x0bcb0018 ->2
0bcbfa3f cmp ebx, 0x4009fa18
0bcbfa45 jz 0x0bcb001c ->3
0bcbfa4b cmp ebx, 0x4009f870
0bcbfa51 jz 0x0bcb0020 ->4
0bcbfa57 cmp ebx, 0x400a2cb0
0bcbfa5d jz 0x0bcb0024 ->5
0bcbfa63 cmp ebx, 0x414627b0
0bcbfa69 jz 0x0bcb0028 ->6
0bcbfa6f mov esi, [rbp+0x24]
0bcbfa72 cmp byte [rsi+0x6], 0x1
0bcbfa76 jnz 0x0bcb002c ->7
0bcbfa7c lea r14d, [rsi+0x8]
0bcbfa80 cmp dword [r14+0x4], -0x0c
0bcbfa85 jnz 0x0bcb002c ->7
0bcbfa8b mov r13d, [r14]
0bcbfa8e mov r14d, [r13+0x1c]
0bcbfa92 and r14d, [rbx+0x8]
0bcbfa96 lea r14d, [r14+r14*2]
0bcbfa9a shl r14d, 0x03
0bcbfa9e add r14d, [r13+0x14]
0bcbfaa2 cmp dword [r14+0xc], -0x05
0bcbfaa7 jnz 0x0bcbfaaf
0bcbfaa9 cmp ebx, [r14+0x8]
0bcbfaad jz 0x0bcbfabe
0bcbfaaf mov r14d, [r14+0x10]
0bcbfab3 test r14d, r14d
0bcbfab6 jnz 0x0bcbfaa2
0bcbfab8 mov r14d, 0x4009d458
0bcbfabe cmp dword [r14+0x4], -0x03
0bcbfac3 jnz 0x0bcb002c ->7
0bcbfac9 cmp ebp, 0x4146c4a8
0bcbfacf jnz 0x0bcb002c ->7
0bcbfad5 cmp dword [rdx+0xc], -0x0c
0bcbfad9 jnz 0x0bcb002c ->7
0bcbfadf mov ebp, [rdx+0x8]
0bcbfae2 cmp dword [rdx+0x14], -0x0c
0bcbfae6 jnz 0x0bcb002c ->7
0bcbfaec mov r13d, [rdx+0x10]
0bcbfaf0 cmp dword [rdx+0x1c], -0x0c
0bcbfaf4 jnz 0x0bcb002c ->7
0bcbfafa mov r14d, [rdx+0x18]
0bcbfafe mov esi, 0x400ba0c0
0bcbfb03 call 0x004223c0 ->lj_tab_dup
0bcbfb08 mov [rsp+0x8], eax
0bcbfb0c mov edi, [0x4009d4b0]
0bcbfb13 mov eax, [rax+0x8]
0bcbfb16 mov dword [rax+0x14], 0xfffffff4
0bcbfb1d mov [rax+0x10], r15d
0bcbfb21 cmp dword [r13+0x1c], +0x01
0bcbfb26 jnz 0x0bcb0030 ->8
0bcbfb2c mov r15d, [r13+0x14]
0bcbfb30 mov rsi, 0xfffffffb41460c98
0bcbfb3a cmp rsi, [r15+0x20]
0bcbfb3e jnz 0x0bcb0030 ->8
0bcbfb44 cmp dword [r15+0x1c], -0x05
0bcbfb49 jnz 0x0bcb0030 ->8
0bcbfb4f mov r15d, [r15+0x18]
0bcbfb53 mov dword [rax+0x1c], 0xfffffffb
0bcbfb5a mov [rax+0x18], r15d
0bcbfb5e cmp dword [r14+0x1c], +0x01
0bcbfb63 jnz 0x0bcb0034 ->9
0bcbfb69 mov r15d, [r14+0x14]
0bcbfb6d mov rsi, 0xfffffffb41460c98
0bcbfb77 cmp rsi, [r15+0x20]
0bcbfb7b jnz 0x0bcb0034 ->9
0bcbfb81 cmp dword [r15+0x1c], -0x05
0bcbfb86 jnz 0x0bcb0034 ->9
0bcbfb8c mov r15d, [r15+0x18]
0bcbfb90 mov dword [rax+0x24], 0xfffffffb
0bcbfb97 mov [rax+0x20], r15d
0bcbfb9b mov esi, [rbp+0x1c]
0bcbfb9e and esi, 0x2a54dc55
0bcbfba4 lea esi, [rsi+rsi*2]
0bcbfba7 shl esi, 0x03
0bcbfbaa add esi, [rbp+0x14]
0bcbfbad cmp dword [rsi+0xc], -0x05
0bcbfbb1 jnz 0x0bcbfbc0
0bcbfbb3 cmp dword [rsi+0x8], 0x414612c0
0bcbfbba jz 0x0bcb0038 ->10
0bcbfbc0 mov esi, [rsi+0x10]
0bcbfbc3 test esi, esi
0bcbfbc5 jnz 0x0bcbfbad
0bcbfbc7 cmp dword [rbp+0x10], +0x00
0bcbfbcb jnz 0x0bcb0038 ->10
0bcbfbd1 mov edx, 0x4009d448
0bcbfbd6 mov dword [rdx+0x4], 0xfffffffb
0bcbfbdd mov dword [rdx], 0x414612c0
0bcbfbe3 mov esi, ebp
0bcbfbe5 call 0x00422cf0 ->lj_tab_newkey
0bcbfbea mov ebx, eax
0bcbfbec mov edx, [0x4009d4b4]
0bcbfbf3 mov eax, [rsp+0x8]
0bcbfbf7 mov dword [rbx+0x4], 0xfffffff4
0bcbfbfe mov [rbx], eax
0bcbfc00 test byte [rbp+0x4], 0x4
0bcbfc04 jz 0x0bcbfc1b
0bcbfc06 and byte [rbp+0x4], 0xfb
0bcbfc0a mov edi, [0x4009d3f4]
0bcbfc11 mov [0x4009d3f4], ebp
0bcbfc18 mov [rbp+0xc], edi
0bcbfc1b mov eax, [0x4009d4b0]
0bcbfc22 mov eax, [rax+0x20]
0bcbfc25 sub eax, edx
0bcbfc27 cmp eax, +0x68
0bcbfc2a jb 0x0bcb003c ->11
0bcbfc30 mov dword [rdx-0x8], 0x4146c4a8
0bcbfc37 xor eax, eax
0bcbfc39 mov ebx, 0x41473430
0bcbfc3e mov r14d, 0x4009e008
0bcbfc44 jmp 0x00420177
---- TRACE 3 stop -> return
---- TRACE 3 exit 2
---- TRACE 3 exit 1
---- TRACE 3 exit 1
---- TRACE 3 exit 2
---- TRACE 3 exit 1
---- TRACE 3 exit 1
---- TRACE 3 exit 1
---- TRACE 3 exit 3
---- TRACE 3 exit 1
---- TRACE 3 exit 1
---- TRACE 3 exit 6
---- TRACE 4 start ssa.lua:46
0001 TDUP 2 1
0002 TSETB 1 2 2
0003 TSETS 2 0 0 ; "control"
0004 RET0 0 1
---- TRACE 4 IR
.... SNAP #0 [ ---- ---- ---- ]
0001 [8] > tab TDUP {0x41460e90}
0002 rbp > tab SLOAD #2 T
0003 rax p32 FLOAD 0001 tab.array
0004 p32 AREF 0003 +2 
0005 tab ASTORE 0004 0002
.... SNAP #1 [ ---- ---- ---- 0001 ]
0006 rbp > tab SLOAD #1 T
0007 rsi p32 HREF 0006 "control"
0008 > p32 EQ 0007 [0x4009d458]
0009 tab FLOAD 0006 tab.meta
0010 > tab EQ 0009 [NULL]
0011 rbx p32 NEWREF 0006 "control"
0012 tab HSTORE 0011 0001
0013 nil TBAR 0006
.... SNAP #2 [ ---- ]
---- TRACE 4 mcode 269
0bcbf7a1 mov dword [0x4009d410], 0x4
0bcbf7ac mov edi, [0x4009d3d8]
0bcbf7b3 cmp edi, [0x4009d3dc]
0bcbf7ba jb 0x0bcbf7d3
0bcbf7bc mov esi, 0x1
0bcbf7c1 mov edi, 0x4009d3b8
0bcbf7c6 call 0x00421730 ->lj_gc_step_jit
0bcbf7cb test eax, eax
0bcbf7cd jnz 0x0bcb0010 ->0
0bcbf7d3 mov edi, [0x4009d4b0]
0bcbf7da mov esi, 0x41460e90
0bcbf7df call 0x004223c0 ->lj_tab_dup
0bcbf7e4 mov [rsp+0x8], eax
0bcbf7e8 mov edi, [0x4009d4b0]
0bcbf7ef mov edx, [0x4009d4b4]
0bcbf7f6 cmp dword [rdx+0xc], -0x0c
0bcbf7fa jnz 0x0bcb0010 ->0
0bcbf800 mov ebp, [rdx+0x8]
0bcbf803 mov eax, [rax+0x8]
0bcbf806 mov dword [rax+0x14], 0xfffffff4
0bcbf80d mov [rax+0x10], ebp
0bcbf810 cmp dword [rdx+0x4], -0x0c
0bcbf814 jnz 0x0bcb0014 ->1
0bcbf81a mov ebp, [rdx]
0bcbf81c mov esi, [rbp+0x1c]
0bcbf81f and esi, 0x2a54dc55
0bcbf825 lea esi, [rsi+rsi*2]
0bcbf828 shl esi, 0x03
0bcbf82b add esi, [rbp+0x14]
0bcbf82e cmp dword [rsi+0xc], -0x05
0bcbf832 jnz 0x0bcbf841
0bcbf834 cmp dword [rsi+0x8], 0x414612c0
0bcbf83b jz 0x0bcb0014 ->1
0bcbf841 mov esi, [rsi+0x10]
0bcbf844 test esi, esi
0bcbf846 jnz 0x0bcbf82e
0bcbf848 cmp dword [rbp+0x10], +0x00
0bcbf84c jnz 0x0bcb0014 ->1
0bcbf852 mov edx, 0x4009d448
0bcbf857 mov dword [rdx+0x4], 0xfffffffb
0bcbf85e mov dword [rdx], 0x414612c0
0bcbf864 mov esi, ebp
0bcbf866 call 0x00422cf0 ->lj_tab_newkey
0bcbf86b mov ebx, eax
0bcbf86d mov edx, [0x4009d4b4]
0bcbf874 mov eax, [rsp+0x8]
0bcbf878 mov dword [rbx+0x4], 0xfffffff4
0bcbf87f mov [rbx], eax
0bcbf881 test byte [rbp+0x4], 0x4
0bcbf885 jz 0x0bcbf89c
0bcbf887 and byte [rbp+0x4], 0xfb
0bcbf88b mov edi, [0x4009d3f4]
0bcbf892 mov [0x4009d3f4], ebp
0bcbf899 mov [rbp+0xc], edi
0bcbf89c xor eax, eax
0bcbf89e mov ebx, 0x41472c38
0bcbf8a3 mov r14d, 0x4009e008
0bcbf8a9 jmp 0x00420177
---- TRACE 4 stop -> return
---- TRACE 3 exit 4
---- TRACE 5 start ssa.lua:52
0001 TDUP 2 1
0002 TGETS 3 1 2 ; "label"
0003 TSETB 3 2 2
0004 TSETS 2 0 0 ; "control"
0005 RET0 0 1
---- TRACE 5 IR
.... SNAP #0 [ ---- ---- ---- ]
0001 [8] > tab TDUP {0x400a5320}
0002 rbp > tab SLOAD #2 T
0003 int FLOAD 0002 tab.hmask
0004 > int EQ 0003 +1 
0005 rbp p32 FLOAD 0002 tab.node
0006 > p32 HREFK 0005 "label" @1
0007 rbp > str HLOAD 0006
0008 rax p32 FLOAD 0001 tab.array
0009 p32 AREF 0008 +2 
0010 str ASTORE 0009 0007
.... SNAP #1 [ ---- ---- ---- 0001 ---- ]
0011 rbp > tab SLOAD #1 T
0012 rsi p32 HREF 0011 "control"
0013 > p32 EQ 0012 [0x4009d458]
0014 tab FLOAD 0011 tab.meta
0015 > tab EQ 0014 [NULL]
0016 rbx p32 NEWREF 0011 "control"
0017 tab HSTORE 0016 0001
0018 nil TBAR 0011
.... SNAP #2 [ ---- ]
---- TRACE 5 mcode 315
0bcbf65f mov dword [0x4009d410], 0x5
0bcbf66a mov edi, [0x4009d3d8]
0bcbf671 cmp edi, [0x4009d3dc]
0bcbf678 jb 0x0bcbf691
0bcbf67a mov esi, 0x1
0bcbf67f mov edi, 0x4009d3b8
0bcbf684 call 0x00421730 ->lj_gc_step_jit
0bcbf689 test eax, eax
0bcbf68b jnz 0x0bcb0010 ->0
0bcbf691 mov edi, [0x4009d4b0]
0bcbf698 mov esi, 0x400a5320
0bcbf69d call 0x004223c0 ->lj_tab_dup
0bcbf6a2 mov [rsp+0x8], eax
0bcbf6a6 mov edi, [0x4009d4b0]
0bcbf6ad mov edx, [0x4009d4b4]
0bcbf6b4 cmp dword [rdx+0xc], -0x0c
0bcbf6b8 jnz 0x0bcb0010 ->0
0bcbf6be mov ebp, [rdx+0x8]
0bcbf6c1 cmp dword [rbp+0x1c], +0x01
0bcbf6c5 jnz 0x0bcb0010 ->0
0bcbf6cb mov ebp, [rbp+0x14]
0bcbf6ce mov rsi, 0xfffffffb41460c98
0bcbf6d8 cmp rsi, [rbp+0x20]
0bcbf6dc jnz 0x0bcb0010 ->0
0bcbf6e2 cmp dword [rbp+0x1c], -0x05
0bcbf6e6 jnz 0x0bcb0010 ->0
0bcbf6ec mov ebp, [rbp+0x18]
0bcbf6ef mov eax, [rax+0x8]
0bcbf6f2 mov dword [rax+0x14], 0xfffffffb
0bcbf6f9 mov [rax+0x10], ebp
0bcbf6fc cmp dword [rdx+0x4], -0x0c
0bcbf700 jnz 0x0bcb0014 ->1
0bcbf706 mov ebp, [rdx]
0bcbf708 mov esi, [rbp+0x1c]
0bcbf70b and esi, 0x2a54dc55
0bcbf711 lea esi, [rsi+rsi*2]
0bcbf714 shl esi, 0x03
0bcbf717 add esi, [rbp+0x14]
0bcbf71a cmp dword [rsi+0xc], -0x05
0bcbf71e jnz 0x0bcbf72d
0bcbf720 cmp dword [rsi+0x8], 0x414612c0
0bcbf727 jz 0x0bcb0014 ->1
0bcbf72d mov esi, [rsi+0x10]
0bcbf730 test esi, esi
0bcbf732 jnz 0x0bcbf71a
0bcbf734 cmp dword [rbp+0x10], +0x00
0bcbf738 jnz 0x0bcb0014 ->1
0bcbf73e mov edx, 0x4009d448
0bcbf743 mov dword [rdx+0x4], 0xfffffffb
0bcbf74a mov dword [rdx], 0x414612c0
0bcbf750 mov esi, ebp
0bcbf752 call 0x00422cf0 ->lj_tab_newkey
0bcbf757 mov ebx, eax
0bcbf759 mov edx, [0x4009d4b4]
0bcbf760 mov eax, [rsp+0x8]
0bcbf764 mov dword [rbx+0x4], 0xfffffff4
0bcbf76b mov [rbx], eax
0bcbf76d test byte [rbp+0x4], 0x4
0bcbf771 jz 0x0bcbf788
0bcbf773 and byte [rbp+0x4], 0xfb
0bcbf777 mov edi, [0x4009d3f4]
0bcbf77e mov [0x4009d3f4], ebp
0bcbf785 mov [rbp+0xc], edi
0bcbf788 xor eax, eax
0bcbf78a mov ebx, 0x400ae9ec
0bcbf78f mov r14d, 0x4009e008
0bcbf795 jmp 0x00420177
---- TRACE 5 stop -> return
---- TRACE 3 exit 1
---- TRACE 3 exit 1
---- TRACE 3 exit 1
---- TRACE 6 start 3/1 ssa.lua:59
0014 UGET 5 0 ; add_block
0015 CALL 5 2 1
0000 . JFUNCF 3 2 ; ssa.lua:39
0001 . UGET 0 0 ; label_counter
0002 . ADDVN 0 0 0 ; 1
0003 . USETV 0 0 ; label_counter
0004 . KSTR 0 0 ; "L"
0005 . UGET 1 0 ; label_counter
0006 . CAT 0 0 1
0007 . TDUP 1 1
0008 . TNEW 2 0
0009 . TSETS 2 1 2 ; "bindings"
0010 . TSETS 0 1 3 ; "label"
0011 . UGET 2 1 ; ssa
0012 . TGETS 2 2 4 ; "blocks"
0013 . TSETV 1 2 0
0014 . RET1 1 2
0016 UGET 6 0 ; add_block
0017 CALL 6 2 1
0000 . JFUNCF 3 2 ; ssa.lua:39
0001 . UGET 0 0 ; label_counter
0002 . ADDVN 0 0 0 ; 1
0003 . USETV 0 0 ; label_counter
0004 . KSTR 0 0 ; "L"
0005 . UGET 1 0 ; label_counter
0006 . CAT 0 0 1
0007 . TDUP 1 1
0008 . TNEW 2 0
0009 . TSETS 2 1 2 ; "bindings"
0010 . TSETS 0 1 3 ; "label"
0011 . UGET 2 1 ; ssa
0012 . TGETS 2 2 4 ; "blocks"
0013 . TSETV 1 2 0
0014 . RET1 1 2
0018 UGET 7 1 ; compile_bool
0019 TGETB 8 0 2
0020 MOV 9 1
0021 MOV 10 5
0022 MOV 11 6
0023 CALL 7 1 5
0000 . JFUNCF 13 3 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0070 . ISNES 4 12 ; "match"
0071 . JMP 5 => 0077
0077 . ISNES 4 14 ; "fail"
0078 . JMP 5 => 0084
0084 . GGET 5 0 ; "assert"
0085 . UGET 6 4 ; relops
0086 . TGETV 6 6 4
0087 . CALL 5 1 2
0000 . . FUNCC ; assert
0088 . UGET 5 5 ; finish_if
0089 . MOV 6 1
0090 . MOV 7 0
0091 . MOV 8 2
0092 . MOV 9 3
0093 . CALL 5 1 5
0000 . . FUNCF 6 ; ssa.lua:49
0001 . . TDUP 4 1
0002 . . TSETB 1 4 2
0003 . . TGETS 5 2 2 ; "label"
0004 . . TSETB 5 4 3
0005 . . TGETS 5 3 2 ; "label"
0006 . . TSETB 5 4 4
0007 . . TSETS 4 0 0 ; "control"
0008 . . RET0 0 1
0094 . RET0 0 1
0024 UGET 7 1 ; compile_bool
0025 TGETB 8 0 3
0026 MOV 9 5
0027 MOV 10 2
0028 MOV 11 3
0029 CALL 7 1 5
0000 . JFUNCF 13 3 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0070 . ISNES 4 12 ; "match"
0071 . JMP 5 => 0077
0077 . ISNES 4 14 ; "fail"
0078 . JMP 5 => 0084
0084 . GGET 5 0 ; "assert"
0085 . UGET 6 4 ; relops
0086 . TGETV 6 6 4
0087 . CALL 5 1 2
0000 . . FUNCC ; assert
0088 . UGET 5 5 ; finish_if
0089 . MOV 6 1
0090 . MOV 7 0
0091 . MOV 8 2
0092 . MOV 9 3
0093 . CALL 5 1 5
0000 . . FUNCF 6 ; ssa.lua:49
0001 . . TDUP 4 1
0002 . . TSETB 1 4 2
0003 . . TGETS 5 2 2 ; "label"
0004 . . TSETB 5 4 3
0005 . . TGETS 5 3 2 ; "label"
0006 . . TSETB 5 4 4
0007 . . TSETS 4 0 0 ; "control"
0008 . . RET0 0 1
0094 . RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . JFUNCF 13 3 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0065 . UGET 5 2 ; finish_goto
0066 . MOV 6 1
0067 . MOV 7 3
0068 . CALL 5 1 3
0000 . . JFUNCF 4 5 ; ssa.lua:52
0001 . . TDUP 2 1
0002 . . TGETS 3 1 2 ; "label"
0003 . . TSETB 3 2 2
0004 . . TSETS 2 0 0 ; "control"
0005 . . RET0 0 1
0069 . JMP 5 => 0094
0094 . RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . JFUNCF 13 3 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0065 . UGET 5 2 ; finish_goto
0066 . MOV 6 1
0067 . MOV 7 3
0068 . CALL 5 1 3
0000 . . JFUNCF 4 5 ; ssa.lua:52
0001 . . TDUP 2 1
0002 . . TGETS 3 1 2 ; "label"
0003 . . TSETB 3 2 2
0004 . . TSETS 2 0 0 ; "control"
0005 . . RET0 0 1
0069 . JMP 5 => 0094
0094 . RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
---- TRACE 6 abort ssa.lua:79 -- down-recursion, restarting
---- TRACE 6 start ssa.lua:79
0094 RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . JFUNCF 13 3 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0065 . UGET 5 2 ; finish_goto
0066 . MOV 6 1
0067 . MOV 7 3
0068 . CALL 5 1 3
0000 . . JFUNCF 4 5 ; ssa.lua:52
0001 . . TDUP 2 1
0002 . . TGETS 3 1 2 ; "label"
0003 . . TSETB 3 2 2
0004 . . TSETS 2 0 0 ; "control"
0005 . . RET0 0 1
0069 . JMP 5 => 0094
0094 . RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . JFUNCF 13 3 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0065 . UGET 5 2 ; finish_goto
0066 . MOV 6 1
0067 . MOV 7 3
0068 . CALL 5 1 3
0000 . . JFUNCF 4 5 ; ssa.lua:52
0001 . . TDUP 2 1
0002 . . TGETS 3 1 2 ; "label"
0003 . . TSETB 3 2 2
0004 . . TSETS 2 0 0 ; "control"
0005 . . RET0 0 1
0069 . JMP 5 => 0094
0094 . RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
0024 UGET 7 1 ; compile_bool
0025 TGETB 8 0 3
0026 MOV 9 5
0027 MOV 10 2
0028 MOV 11 3
0029 CALL 7 1 5
0000 . JFUNCF 13 3 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0014 . UGET 5 0 ; add_block
0015 . CALL 5 2 1
0000 . . JFUNCF 3 2 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0016 . UGET 6 0 ; add_block
0017 . CALL 6 2 1
0000 . . JFUNCF 3 2 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0018 . UGET 7 1 ; compile_bool
0019 . TGETB 8 0 2
0020 . MOV 9 1
0021 . MOV 10 5
0022 . MOV 11 6
0023 . CALL 7 1 5
0000 . . JFUNCF 13 3 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0070 . . ISNES 4 12 ; "match"
0071 . . JMP 5 => 0077
0077 . . ISNES 4 14 ; "fail"
0078 . . JMP 5 => 0084
0084 . . GGET 5 0 ; "assert"
0085 . . UGET 6 4 ; relops
0086 . . TGETV 6 6 4
0087 . . CALL 5 1 2
0000 . . . FUNCC ; assert
0088 . . UGET 5 5 ; finish_if
0089 . . MOV 6 1
0090 . . MOV 7 0
0091 . . MOV 8 2
0092 . . MOV 9 3
0093 . . CALL 5 1 5
0000 . . . FUNCF 6 ; ssa.lua:49
0001 . . . TDUP 4 1
0002 . . . TSETB 1 4 2
0003 . . . TGETS 5 2 2 ; "label"
0004 . . . TSETB 5 4 3
0005 . . . TGETS 5 3 2 ; "label"
0006 . . . TSETB 5 4 4
0007 . . . TSETS 4 0 0 ; "control"
0008 . . . RET0 0 1
0094 . . RET0 0 1
0024 . UGET 7 1 ; compile_bool
0025 . TGETB 8 0 3
0026 . MOV 9 5
0027 . MOV 10 2
0028 . MOV 11 3
0029 . CALL 7 1 5
0000 . . JFUNCF 13 3 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0014 . . UGET 5 0 ; add_block
0015 . . CALL 5 2 1
0000 . . . JFUNCF 3 2 ; ssa.lua:39
0001 . . . UGET 0 0 ; label_counter
0002 . . . ADDVN 0 0 0 ; 1
0003 . . . USETV 0 0 ; label_counter
0004 . . . KSTR 0 0 ; "L"
0005 . . . UGET 1 0 ; label_counter
0006 . . . CAT 0 0 1
0007 . . . TDUP 1 1
0008 . . . TNEW 2 0
0009 . . . TSETS 2 1 2 ; "bindings"
0010 . . . TSETS 0 1 3 ; "label"
0011 . . . UGET 2 1 ; ssa
0012 . . . TGETS 2 2 4 ; "blocks"
0013 . . . TSETV 1 2 0
0014 . . . RET1 1 2
0016 . . UGET 6 0 ; add_block
0017 . . CALL 6 2 1
0000 . . . JFUNCF 3 2 ; ssa.lua:39
0001 . . . UGET 0 0 ; label_counter
0002 . . . ADDVN 0 0 0 ; 1
0003 . . . USETV 0 0 ; label_counter
0004 . . . KSTR 0 0 ; "L"
0005 . . . UGET 1 0 ; label_counter
0006 . . . CAT 0 0 1
0007 . . . TDUP 1 1
0008 . . . TNEW 2 0
0009 . . . TSETS 2 1 2 ; "bindings"
0010 . . . TSETS 0 1 3 ; "label"
0011 . . . UGET 2 1 ; ssa
0012 . . . TGETS 2 2 4 ; "blocks"
0013 . . . TSETV 1 2 0
0014 . . . RET1 1 2
0018 . . UGET 7 1 ; compile_bool
0019 . . TGETB 8 0 2
0020 . . MOV 9 1
0021 . . MOV 10 5
0022 . . MOV 11 6
0023 . . CALL 7 1 5
0000 . . . JFUNCF 13 3 ; ssa.lua:55
0001 . . . GGET 4 0 ; "assert"
0002 . . . GGET 5 1 ; "type"
0003 . . . MOV 6 0
0004 . . . CALL 5 2 2
0000 . . . . FUNCC ; type
0005 . . . ISEQS 5 2 ; "table"
0006 . . . JMP 5 => 0009
0009 . . . KPRI 5 2
0010 . . . CALL 4 1 2
0000 . . . . FUNCC ; assert
0011 . . . TGETB 4 0 1
0012 . . . ISNES 4 3 ; "if"
0013 . . . JMP 5 => 0037
0037 . . . ISNES 4 4 ; "let"
0038 . . . JMP 5 => 0056
0056 . . . ISNES 4 10 ; "true"
0057 . . . JMP 5 => 0063
0063 . . . ISNES 4 11 ; "false"
0064 . . . JMP 5 => 0070
0070 . . . ISNES 4 12 ; "match"
0071 . . . JMP 5 => 0077
0077 . . . ISNES 4 14 ; "fail"
0078 . . . JMP 5 => 0084
0084 . . . GGET 5 0 ; "assert"
0085 . . . UGET 6 4 ; relops
0086 . . . TGETV 6 6 4
0087 . . . CALL 5 1 2
0000 . . . . FUNCC ; assert
0088 . . . UGET 5 5 ; finish_if
0089 . . . MOV 6 1
0090 . . . MOV 7 0
0091 . . . MOV 8 2
0092 . . . MOV 9 3
0093 . . . CALL 5 1 5
0000 . . . . FUNCF 6 ; ssa.lua:49
0001 . . . . TDUP 4 1
0002 . . . . TSETB 1 4 2
0003 . . . . TGETS 5 2 2 ; "label"
0004 . . . . TSETB 5 4 3
0005 . . . . TGETS 5 3 2 ; "label"
0006 . . . . TSETB 5 4 4
0007 . . . . TSETS 4 0 0 ; "control"
0008 . . . . RET0 0 1
0094 . . . RET0 0 1
0024 . . UGET 7 1 ; compile_bool
0025 . . TGETB 8 0 3
0026 . . MOV 9 5
0027 . . MOV 10 2
0028 . . MOV 11 3
0029 . . CALL 7 1 5
0000 . . . JFUNCF 13 3 ; ssa.lua:55
0001 . . . GGET 4 0 ; "assert"
0002 . . . GGET 5 1 ; "type"
0003 . . . MOV 6 0
0004 . . . CALL 5 2 2
0000 . . . . FUNCC ; type
0005 . . . ISEQS 5 2 ; "table"
0006 . . . JMP 5 => 0009
0009 . . . KPRI 5 2
0010 . . . CALL 4 1 2
0000 . . . . FUNCC ; assert
0011 . . . TGETB 4 0 1
0012 . . . ISNES 4 3 ; "if"
0013 . . . JMP 5 => 0037
0014 . . . UGET 5 0 ; add_block
0015 . . . CALL 5 2 1
0000 . . . . JFUNCF 3 2 ; ssa.lua:39
0001 . . . . UGET 0 0 ; label_counter
0002 . . . . ADDVN 0 0 0 ; 1
0003 . . . . USETV 0 0 ; label_counter
0004 . . . . KSTR 0 0 ; "L"
0005 . . . . UGET 1 0 ; label_counter
0006 . . . . CAT 0 0 1
0007 . . . . TDUP 1 1
0008 . . . . TNEW 2 0
0009 . . . . TSETS 2 1 2 ; "bindings"
0010 . . . . TSETS 0 1 3 ; "label"
0011 . . . . UGET 2 1 ; ssa
0012 . . . . TGETS 2 2 4 ; "blocks"
0013 . . . . TSETV 1 2 0
0014 . . . . RET1 1 2
0016 . . . UGET 6 0 ; add_block
0017 . . . CALL 6 2 1
0000 . . . . JFUNCF 3 2 ; ssa.lua:39
0001 . . . . UGET 0 0 ; label_counter
0002 . . . . ADDVN 0 0 0 ; 1
0003 . . . . USETV 0 0 ; label_counter
0004 . . . . KSTR 0 0 ; "L"
0005 . . . . UGET 1 0 ; label_counter
0006 . . . . CAT 0 0 1
0007 . . . . TDUP 1 1
0008 . . . . TNEW 2 0
0009 . . . . TSETS 2 1 2 ; "bindings"
0010 . . . . TSETS 0 1 3 ; "label"
0011 . . . . UGET 2 1 ; ssa
0012 . . . . TGETS 2 2 4 ; "blocks"
0013 . . . . TSETV 1 2 0
0014 . . . . RET1 1 2
0018 . . . UGET 7 1 ; compile_bool
0019 . . . TGETB 8 0 2
0020 . . . MOV 9 1
0021 . . . MOV 10 5
0022 . . . MOV 11 6
0023 . . . CALL 7 1 5
0000 . . . . JFUNCF 13 3 ; ssa.lua:55
---- TRACE 6 abort ssa.lua:55 -- call unroll limit reached
---- TRACE 6 start ssa.lua:49
0001 TDUP 4 1
0002 TSETB 1 4 2
0003 TGETS 5 2 2 ; "label"
0004 TSETB 5 4 3
0005 TGETS 5 3 2 ; "label"
0006 TSETB 5 4 4
0007 TSETS 4 0 0 ; "control"
0008 RET0 0 1
---- TRACE 6 IR
.... SNAP #0 [ ---- ---- ---- ---- ---- ]
0001 rax > tab TDUP {0x400ba0c0}
0002 rbp > tab SLOAD #2 T
0003 rbx p32 FLOAD 0001 tab.array
0004 p32 AREF 0003 +2 
0005 tab ASTORE 0004 0002
.... SNAP #1 [ ---- ---- ---- ---- ---- 0001 ]
0006 rbp > tab SLOAD #3 T
0007 int FLOAD 0006 tab.hmask
0008 > int EQ 0007 +1 
0009 rbp p32 FLOAD 0006 tab.node
0010 > p32 HREFK 0009 "label" @1
0011 rbp > str HLOAD 0010
0012 p32 AREF 0003 +3 
0013 str ASTORE 0012 0011
.... SNAP #2 [ ---- ---- ---- ---- ---- 0001 ---- ]
0014 rbp > tab SLOAD #4 T
0015 int FLOAD 0014 tab.hmask
0016 > int EQ 0015 +1 
0017 rbp p32 FLOAD 0014 tab.node
0018 > p32 HREFK 0017 "label" @1
0019 rbp > str HLOAD 0018
0020 p32 AREF 0003 +4 
0021 str ASTORE 0020 0019
.... SNAP #3 [ ---- ---- ---- ---- ---- 0001 ---- ]
0022 rbp > tab SLOAD #1 T
0023 int FLOAD 0022 tab.hmask
0024 > int EQ 0023 +3 
0025 rbx p32 FLOAD 0022 tab.node
0026 > p32 HREFK 0025 "control" @1
0027 tab FLOAD 0022 tab.meta
0028 > tab EQ 0027 [NULL]
0029 tab HSTORE 0026 0001
0030 nil TBAR 0022
.... SNAP #4 [ ---- ]
---- TRACE 6 mcode 348
0bcbf4fc mov dword [0x4009d410], 0x6
0bcbf507 mov edi, [0x4009d3d8]
0bcbf50e cmp edi, [0x4009d3dc]
0bcbf515 jb 0x0bcbf52e
0bcbf517 mov esi, 0x1
0bcbf51c mov edi, 0x4009d3b8
0bcbf521 call 0x00421730 ->lj_gc_step_jit
0bcbf526 test eax, eax
0bcbf528 jnz 0x0bcb0010 ->0
0bcbf52e mov edi, [0x4009d4b0]
0bcbf535 mov esi, 0x400ba0c0
0bcbf53a call 0x004223c0 ->lj_tab_dup
0bcbf53f mov edx, [0x4009d4b4]
0bcbf546 cmp dword [rdx+0xc], -0x0c
0bcbf54a jnz 0x0bcb0010 ->0
0bcbf550 mov ebp, [rdx+0x8]
0bcbf553 mov ebx, [rax+0x8]
0bcbf556 mov dword [rbx+0x14], 0xfffffff4
0bcbf55d mov [rbx+0x10], ebp
0bcbf560 cmp dword [rdx+0x14], -0x0c
0bcbf564 jnz 0x0bcb0014 ->1
0bcbf56a mov ebp, [rdx+0x10]
0bcbf56d cmp dword [rbp+0x1c], +0x01
0bcbf571 jnz 0x0bcb0014 ->1
0bcbf577 mov ebp, [rbp+0x14]
0bcbf57a mov rdi, 0xfffffffb41460c98
0bcbf584 cmp rdi, [rbp+0x20]
0bcbf588 jnz 0x0bcb0014 ->1
0bcbf58e cmp dword [rbp+0x1c], -0x05
0bcbf592 jnz 0x0bcb0014 ->1
0bcbf598 mov ebp, [rbp+0x18]
0bcbf59b mov dword [rbx+0x1c], 0xfffffffb
0bcbf5a2 mov [rbx+0x18], ebp
0bcbf5a5 cmp dword [rdx+0x1c], -0x0c
0bcbf5a9 jnz 0x0bcb0018 ->2
0bcbf5af mov ebp, [rdx+0x18]
0bcbf5b2 cmp dword [rbp+0x1c], +0x01
0bcbf5b6 jnz 0x0bcb0018 ->2
0bcbf5bc mov ebp, [rbp+0x14]
0bcbf5bf mov rdi, 0xfffffffb41460c98
0bcbf5c9 cmp rdi, [rbp+0x20]
0bcbf5cd jnz 0x0bcb0018 ->2
0bcbf5d3 cmp dword [rbp+0x1c], -0x05
0bcbf5d7 jnz 0x0bcb0018 ->2
0bcbf5dd mov ebp, [rbp+0x18]
0bcbf5e0 mov dword [rbx+0x24], 0xfffffffb
0bcbf5e7 mov [rbx+0x20], ebp
0bcbf5ea cmp dword [rdx+0x4], -0x0c
0bcbf5ee jnz 0x0bcb001c ->3
0bcbf5f4 mov ebp, [rdx]
0bcbf5f6 cmp dword [rbp+0x1c], +0x03
0bcbf5fa jnz 0x0bcb001c ->3
0bcbf600 mov ebx, [rbp+0x14]
0bcbf603 mov rdi, 0xfffffffb414612c0
0bcbf60d cmp rdi, [rbx+0x20]
0bcbf611 jnz 0x0bcb001c ->3
0bcbf617 cmp dword [rbp+0x10], +0x00
0bcbf61b jnz 0x0bcb001c ->3
0bcbf621 mov dword [rbx+0x1c], 0xfffffff4
0bcbf628 mov [rbx+0x18], eax
0bcbf62b test byte [rbp+0x4], 0x4
0bcbf62f jz 0x0bcbf646
0bcbf631 and byte [rbp+0x4], 0xfb
0bcbf635 mov edi, [0x4009d3f4]
0bcbf63c mov [0x4009d3f4], ebp
0bcbf643 mov [rbp+0xc], edi
0bcbf646 xor eax, eax
0bcbf648 mov ebx, 0x400ba820
0bcbf64d mov r14d, 0x4009e008
0bcbf653 jmp 0x00420177
---- TRACE 6 stop -> return
---- TRACE 5 exit 1
---- TRACE 6 exit 1
---- TRACE 1 start ssa.lua:39
0001 UGET 0 0 ; label_counter
0002 ADDVN 0 0 0 ; 1
0003 USETV 0 0 ; label_counter
0004 KSTR 0 0 ; "L"
0005 UGET 1 0 ; label_counter
0006 CAT 0 0 1
0007 TDUP 1 1
0008 TNEW 2 0
0009 TSETS 2 1 2 ; "bindings"
0010 TSETS 0 1 3 ; "label"
0011 UGET 2 1 ; ssa
0012 TGETS 2 2 4 ; "blocks"
0013 TSETV 1 2 0
0014 RET1 1 2
---- TRACE 1 IR
.... SNAP #0 [ ---- ]
0001 rbp fun SLOAD #0 R
0002 rbx > p32 UREFO 0001 #0
0003 xmm7 > num ULOAD 0002
0004 [10] num ADD 0003 +1 
0005 num USTORE 0002 0004
.... SNAP #1 [ ---- ---- ]
0006 str TOSTR 0004 NUM
0007 rdi p32 BUFHDR [0x41937414] RESET
0008 rdi p32 BUFPUT 0007 "L" 
0009 rdi p32 BUFPUT 0008 0006
0010 [c] str BUFSTR 0009 0007
0011 [8] > tab TDUP {0x40372418}
0012 r15 > tab TNEW #0 #0
0013 rbx p32 FLOAD 0011 tab.node
0014 p32 HREFK 0013 "bindings" @0
0015 tab HSTORE 0014 0012
0016 p32 HREFK 0013 "label" @1
0017 str HSTORE 0016 0010
.... SNAP #2 [ ---- 0010 0011 ---- ]
0018 rbp > p32 UREFO 0001 #1
0019 rbp > tab ULOAD 0018
0020 int FLOAD 0019 tab.hmask
0021 > int EQ 0020 +1 
0022 rbp p32 FLOAD 0019 tab.node
0023 > p32 HREFK 0022 "blocks" @0
0024 rbp > tab HLOAD 0023
0025 rsi p32 HREF 0024 0010
0026 > p32 EQ 0025 [0x41937458]
0027 tab FLOAD 0024 tab.meta
0028 > tab EQ 0027 [NULL]
0029 rbx p32 NEWREF 0024 0010
0030 tab HSTORE 0029 0011
0031 nil TBAR 0024
0032 p32 FREF 0024 tab.nomm
0033 u8  FSTORE 0032 +0 
.... SNAP #3 [ ---- ---- 0011 ]
---- TRACE 1 mcode 441
0bcbfe44 add rsp, -0x10
0bcbfe48 mov dword [0x41937410], 0x1
0bcbfe53 mov edi, [0x419373d8]
0bcbfe5a cmp edi, [0x419373dc]
0bcbfe61 jb 0x0bcbfe7a
0bcbfe63 mov esi, 0x3
0bcbfe68 mov edi, 0x419373b8
0bcbfe6d call 0x00421730 ->lj_gc_step_jit
0bcbfe72 test eax, eax
0bcbfe74 jnz 0x0bcb0010 ->0
0bcbfe7a mov edx, [0x419374b4]
0bcbfe81 mov ebp, [rdx-0x8]
0bcbfe84 mov edi, [rbp+0x14]
0bcbfe87 mov ebx, [rdi+0x10]
0bcbfe8a cmp dword [rbx+0x4], 0xfffeffff
0bcbfe91 jnb 0x0bcb0010 ->0
0bcbfe97 movsd xmm7, [rbx]
0bcbfe9b addsd xmm7, [0x403610a0]
0bcbfea4 movsd [rsp+0x10], xmm7
0bcbfeaa movsd [rbx], xmm7
0bcbfeae mov edi, 0x41937414
0bcbfeb3 mov esi, [rdi+0x8]
0bcbfeb6 mov [rdi], esi
0bcbfeb8 mov esi, 0x4c
0bcbfebd call 0x00421b60 ->lj_buf_putchar
0bcbfec2 mov edi, eax
0bcbfec4 lea rsi, [rsp+0x10]
0bcbfec9 call 0x0040a3c0 ->lj_strfmt_putnum
0bcbfece mov edi, eax
0bcbfed0 call 0x00421ff0 ->lj_buf_tostr
0bcbfed5 mov [rsp+0xc], eax
0bcbfed9 mov edi, [0x419374b0]
0bcbfee0 mov esi, 0x40372418
0bcbfee5 call 0x004223c0 ->lj_tab_dup
0bcbfeea mov ebx, eax
0bcbfeec mov [rsp+0x8], ebx
0bcbfef0 mov edi, [0x419374b0]
0bcbfef7 xor esi, esi
0bcbfef9 call 0x00422350 ->lj_tab_new1
0bcbfefe mov r15d, eax
0bcbff01 mov edi, [0x419374b0]
0bcbff08 mov eax, [rsp+0xc]
0bcbff0c mov ebx, [rbx+0x14]
0bcbff0f mov dword [rbx+0x4], 0xfffffff4
0bcbff16 mov [rbx], r15d
0bcbff19 mov dword [rbx+0x1c], 0xfffffffb
0bcbff20 mov [rbx+0x18], eax
0bcbff23 mov esi, [rbp+0x18]
0bcbff26 mov ebp, [rsi+0x10]
0bcbff29 cmp dword [rbp+0x4], -0x0c
0bcbff2d jnz 0x0bcb0018 ->2
0bcbff33 mov ebp, [rbp+0x0]
0bcbff36 cmp dword [rbp+0x1c], +0x01
0bcbff3a jnz 0x0bcb0018 ->2
0bcbff40 mov ebp, [rbp+0x14]
0bcbff43 mov rsi, 0xfffffffb403716f0
0bcbff4d cmp rsi, [rbp+0x8]
0bcbff51 jnz 0x0bcb0018 ->2
0bcbff57 cmp dword [rbp+0x4], -0x0c
0bcbff5b jnz 0x0bcb0018 ->2
0bcbff61 mov ebp, [rbp+0x0]
0bcbff64 mov esi, [rbp+0x1c]
0bcbff67 and esi, [rax+0x8]
0bcbff6a lea esi, [rsi+rsi*2]
0bcbff6d shl esi, 0x03
0bcbff70 add esi, [rbp+0x14]
0bcbff73 cmp dword [rsi+0xc], -0x05
0bcbff77 jnz 0x0bcbff82
0bcbff79 cmp eax, [rsi+0x8]
0bcbff7c jz 0x0bcb0018 ->2
0bcbff82 mov esi, [rsi+0x10]
0bcbff85 test esi, esi
0bcbff87 jnz 0x0bcbff73
0bcbff89 cmp dword [rbp+0x10], +0x00
0bcbff8d jnz 0x0bcb0018 ->2
0bcbff93 mov edx, 0x41937448
0bcbff98 mov dword [rdx+0x4], 0xfffffffb
0bcbff9f mov [rdx], eax
0bcbffa1 mov esi, ebp
0bcbffa3 call 0x00422cf0 ->lj_tab_newkey
0bcbffa8 mov ebx, eax
0bcbffaa mov edx, [0x419374b4]
0bcbffb1 mov eax, [rsp+0x8]
0bcbffb5 mov dword [rbx+0x4], 0xfffffff4
0bcbffbc mov [rbx], eax
0bcbffbe test byte [rbp+0x4], 0x4
0bcbffc2 jz 0x0bcbffd9
0bcbffc4 and byte [rbp+0x4], 0xfb
0bcbffc8 mov edi, [0x419373f4]
0bcbffcf mov [0x419373f4], ebp
0bcbffd6 mov [rbp+0xc], edi
0bcbffd9 mov byte [rbp+0x6], 0x0
0bcbffdd mov dword [rdx+0xc], 0xfffffff4
0bcbffe4 mov [rdx+0x8], eax
0bcbffe7 xor eax, eax
0bcbffe9 mov ebx, 0x403732a0
0bcbffee mov r14d, 0x41938008
0bcbfff4 add rsp, +0x10
0bcbfff8 jmp 0x00420177
---- TRACE 1 stop -> return
---- TRACE 2 start ssa.lua:55
0001 GGET 4 0 ; "assert"
0002 GGET 5 1 ; "type"
0003 MOV 6 0
0004 CALL 5 2 2
0000 . FUNCC ; type
0005 ISEQS 5 2 ; "table"
0006 JMP 5 => 0009
0009 KPRI 5 2
0010 CALL 4 1 2
0000 . FUNCC ; assert
0011 TGETB 4 0 1
0012 ISNES 4 3 ; "if"
0013 JMP 5 => 0037
0037 ISNES 4 4 ; "let"
0038 JMP 5 => 0056
0056 ISNES 4 10 ; "true"
0057 JMP 5 => 0063
0063 ISNES 4 11 ; "false"
0064 JMP 5 => 0070
0070 ISNES 4 12 ; "match"
0071 JMP 5 => 0077
0077 ISNES 4 14 ; "fail"
0078 JMP 5 => 0084
0084 GGET 5 0 ; "assert"
0085 UGET 6 4 ; relops
0086 TGETV 6 6 4
0087 CALL 5 1 2
0000 . FUNCC ; assert
0088 UGET 5 5 ; finish_if
0089 MOV 6 1
0090 MOV 7 0
0091 MOV 8 2
0092 MOV 9 3
0093 CALL 5 1 5
0000 . FUNCF 6 ; ssa.lua:49
0001 . TDUP 4 1
0002 . TSETB 1 4 2
0003 . TGETS 5 2 2 ; "label"
0004 . TSETB 5 4 3
0005 . TGETS 5 3 2 ; "label"
0006 . TSETB 5 4 4
0007 . TSETS 4 0 0 ; "control"
0008 . RET0 0 1
0094 RET0 0 1
---- TRACE 2 IR
.... SNAP #0 [ ---- ---- ---- ---- ---- ]
0001 rbp fun SLOAD #0 R
0002 r15 tab FLOAD 0001 func.env
0003 rsi p32 HREF 0002 "assert"
0004 > p32 EQ 0003 [0x41937458]
0005 rbx tab FLOAD 0002 tab.meta
0006 > tab NE 0005 [NULL]
0007 int FLOAD 0005 tab.hmask
0008 > int EQ 0007 +1 
0009 rbx p32 FLOAD 0005 tab.node
0010 > p32 HREFK 0009 "__index" @1
0011 rbx > tab HLOAD 0010
0012 int FLOAD 0011 tab.hmask
0013 > int EQ 0012 +63 
0014 rbx p32 FLOAD 0011 tab.node
0015 > p32 HREFK 0014 "assert" @3
0016 > fun HLOAD 0015
0017 rsi p32 HREF 0002 "type"
0018 > p32 EQ 0017 [0x41937458]
0019 > p32 HREFK 0014 "type" @60
0020 > fun HLOAD 0019
0021 r15 > tab SLOAD #1 T
0022 > fun EQ 0020 type
0023 > fun EQ 0016 assert
0024 int FLOAD 0021 tab.asize
0025 > int ABC 0024 +1 
0026 rbx p32 FLOAD 0021 tab.array
0027 p32 AREF 0026 +1 
0028 rbx > str ALOAD 0027
.... SNAP #1 [ ---- ---- ---- ---- ---- 0028 ]
0029 > str NE 0028 "if"
.... SNAP #2 [ ---- ---- ---- ---- ---- 0028 ]
0030 > str NE 0028 "let"
.... SNAP #3 [ ---- ---- ---- ---- ---- 0028 ]
0031 > str NE 0028 "true"
.... SNAP #4 [ ---- ---- ---- ---- ---- 0028 ]
0032 > str NE 0028 "false"
.... SNAP #5 [ ---- ---- ---- ---- ---- 0028 ]
0033 > str NE 0028 "match"
.... SNAP #6 [ ---- ---- ---- ---- ---- 0028 ]
0034 > str NE 0028 "fail"
.... SNAP #7 [ ---- ---- ---- ---- ---- 0028 ]
0035 r14 > p32 UREFC 0001 #4
0036 r13 > tab ULOAD 0035
0037 r14 p32 HREF 0036 0028
0038 > tru HLOAD 0037
0039 > fun EQ 0001 ssa.lua:55
0040 rbp > tab SLOAD #2 T
0041 r13 > tab SLOAD #3 T
0042 r14 > tab SLOAD #4 T
0043 [8] > tab TDUP {0x40366b30}
0044 rax p32 FLOAD 0043 tab.array
0045 p32 AREF 0044 +2 
0046 tab ASTORE 0045 0021
.... SNAP #8 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:49|0040 ---- 0041 0042 0043 ]
0047 int FLOAD 0041 tab.hmask
0048 > int EQ 0047 +1 
0049 r15 p32 FLOAD 0041 tab.node
0050 > p32 HREFK 0049 "label" @1
0051 r15 > str HLOAD 0050
0052 p32 AREF 0044 +3 
0053 str ASTORE 0052 0051
.... SNAP #9 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:49|0040 ---- ---- 0042 0043 ---- ]
0054 int FLOAD 0042 tab.hmask
0055 > int EQ 0054 +1 
0056 r15 p32 FLOAD 0042 tab.node
0057 > p32 HREFK 0056 "label" @1
0058 r15 > str HLOAD 0057
0059 p32 AREF 0044 +4 
0060 str ASTORE 0059 0058
.... SNAP #10 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:49|0040 ---- ---- ---- 0043 ---- ]
0061 rsi p32 HREF 0040 "control"
0062 > p32 EQ 0061 [0x41937458]
0063 tab FLOAD 0040 tab.meta
0064 > tab EQ 0063 [NULL]
0065 rbx p32 NEWREF 0040 "control"
0066 tab HSTORE 0065 0043
0067 nil TBAR 0040
.... SNAP #11 [ ssa.lua:55|]
---- TRACE 2 mcode 916
0bcbfaa9 mov dword [0x41937410], 0x2
0bcbfab4 mov edi, [0x419373d8]
0bcbfabb cmp edi, [0x419373dc]
0bcbfac2 jb 0x0bcbfadb
0bcbfac4 mov esi, 0x1
0bcbfac9 mov edi, 0x419373b8
0bcbface call 0x00421730 ->lj_gc_step_jit
0bcbfad3 test eax, eax
0bcbfad5 jnz 0x0bcb0010 ->0
0bcbfadb mov edi, [0x419374b0]
0bcbfae2 mov edx, [0x419374b4]
0bcbfae9 mov ebp, [rdx-0x8]
0bcbfaec mov r15d, [rbp+0x8]
0bcbfaf0 mov esi, [r15+0x1c]
0bcbfaf4 and esi, 0xce2b6183
0bcbfafa lea esi, [rsi+rsi*2]
0bcbfafd shl esi, 0x03
0bcbfb00 add esi, [r15+0x14]
0bcbfb04 cmp dword [rsi+0xc], -0x05
0bcbfb08 jnz 0x0bcbfb17
0bcbfb0a cmp dword [rsi+0x8], 0x41939db0
0bcbfb11 jz 0x0bcb0010 ->0
0bcbfb17 mov esi, [rsi+0x10]
0bcbfb1a test esi, esi
0bcbfb1c jnz 0x0bcbfb04
0bcbfb1e mov ebx, [r15+0x10]
0bcbfb22 test ebx, ebx
0bcbfb24 jz 0x0bcb0010 ->0
0bcbfb2a cmp dword [rbx+0x1c], +0x01
0bcbfb2e jnz 0x0bcb0010 ->0
0bcbfb34 mov ebx, [rbx+0x14]
0bcbfb37 mov rsi, 0xfffffffb419394c8
0bcbfb41 cmp rsi, [rbx+0x20]
0bcbfb45 jnz 0x0bcb0010 ->0
0bcbfb4b cmp dword [rbx+0x1c], -0x0c
0bcbfb4f jnz 0x0bcb0010 ->0
0bcbfb55 mov ebx, [rbx+0x18]
0bcbfb58 cmp dword [rbx+0x1c], +0x3f
0bcbfb5c jnz 0x0bcb0010 ->0
0bcbfb62 mov ebx, [rbx+0x14]
0bcbfb65 mov rsi, 0xfffffffb41939db0
0bcbfb6f cmp rsi, [rbx+0x50]
0bcbfb73 jnz 0x0bcb0010 ->0
0bcbfb79 cmp dword [rbx+0x4c], -0x09
0bcbfb7d jnz 0x0bcb0010 ->0
0bcbfb83 mov esi, [r15+0x1c]
0bcbfb87 and esi, 0x798a813c
0bcbfb8d lea esi, [rsi+rsi*2]
0bcbfb90 shl esi, 0x03
0bcbfb93 add esi, [r15+0x14]
0bcbfb97 cmp dword [rsi+0xc], -0x05
0bcbfb9b jnz 0x0bcbfbaa
0bcbfb9d cmp dword [rsi+0x8], 0x41939fb0
0bcbfba4 jz 0x0bcb0010 ->0
0bcbfbaa mov esi, [rsi+0x10]
0bcbfbad test esi, esi
0bcbfbaf jnz 0x0bcbfb97
0bcbfbb1 mov rsi, 0xfffffffb41939fb0
0bcbfbbb cmp rsi, [rbx+0x5a8]
0bcbfbc2 jnz 0x0bcb0010 ->0
0bcbfbc8 cmp dword [rbx+0x5a4], -0x09
0bcbfbcf jnz 0x0bcb0010 ->0
0bcbfbd5 cmp dword [rdx+0x4], -0x0c
0bcbfbd9 jnz 0x0bcb0010 ->0
0bcbfbdf mov r15d, [rdx]
0bcbfbe2 cmp dword [rbx+0x5a0], 0x41939f18
0bcbfbec jnz 0x0bcb0010 ->0
0bcbfbf2 cmp dword [rbx+0x48], 0x41939d88
0bcbfbf9 jnz 0x0bcb0010 ->0
0bcbfbff cmp dword [r15+0x18], +0x01
0bcbfc04 jbe 0x0bcb0010 ->0
0bcbfc0a mov ebx, [r15+0x8]
0bcbfc0e cmp dword [rbx+0xc], -0x05
0bcbfc12 jnz 0x0bcb0010 ->0
0bcbfc18 mov ebx, [rbx+0x8]
0bcbfc1b cmp ebx, 0x419398f8
0bcbfc21 jz 0x0bcb0014 ->1
0bcbfc27 cmp ebx, 0x40367440
0bcbfc2d jz 0x0bcb0018 ->2
0bcbfc33 cmp ebx, 0x41939a18
0bcbfc39 jz 0x0bcb001c ->3
0bcbfc3f cmp ebx, 0x41939870
0bcbfc45 jz 0x0bcb0020 ->4
0bcbfc4b cmp ebx, 0x4193ccb0
0bcbfc51 jz 0x0bcb0024 ->5
0bcbfc57 cmp ebx, 0x4193f138
0bcbfc5d jz 0x0bcb0028 ->6
0bcbfc63 mov esi, [rbp+0x24]
0bcbfc66 cmp byte [rsi+0x6], 0x1
0bcbfc6a jnz 0x0bcb002c ->7
0bcbfc70 lea r14d, [rsi+0x8]
0bcbfc74 cmp dword [r14+0x4], -0x0c
0bcbfc79 jnz 0x0bcb002c ->7
0bcbfc7f mov r13d, [r14]
0bcbfc82 mov r14d, [r13+0x1c]
0bcbfc86 and r14d, [rbx+0x8]
0bcbfc8a lea r14d, [r14+r14*2]
0bcbfc8e shl r14d, 0x03
0bcbfc92 add r14d, [r13+0x14]
0bcbfc96 cmp dword [r14+0xc], -0x05
0bcbfc9b jnz 0x0bcbfca3
0bcbfc9d cmp ebx, [r14+0x8]
0bcbfca1 jz 0x0bcbfcb2
0bcbfca3 mov r14d, [r14+0x10]
0bcbfca7 test r14d, r14d
0bcbfcaa jnz 0x0bcbfc96
0bcbfcac mov r14d, 0x41937458
0bcbfcb2 cmp dword [r14+0x4], -0x03
0bcbfcb7 jnz 0x0bcb002c ->7
0bcbfcbd cmp ebp, 0x403641d8
0bcbfcc3 jnz 0x0bcb002c ->7
0bcbfcc9 cmp dword [rdx+0xc], -0x0c
0bcbfccd jnz 0x0bcb002c ->7
0bcbfcd3 mov ebp, [rdx+0x8]
0bcbfcd6 cmp dword [rdx+0x14], -0x0c
0bcbfcda jnz 0x0bcb002c ->7
0bcbfce0 mov r13d, [rdx+0x10]
0bcbfce4 cmp dword [rdx+0x1c], -0x0c
0bcbfce8 jnz 0x0bcb002c ->7
0bcbfcee mov r14d, [rdx+0x18]
0bcbfcf2 mov esi, 0x40366b30
0bcbfcf7 call 0x004223c0 ->lj_tab_dup
0bcbfcfc mov [rsp+0x8], eax
0bcbfd00 mov edi, [0x419374b0]
0bcbfd07 mov eax, [rax+0x8]
0bcbfd0a mov dword [rax+0x14], 0xfffffff4
0bcbfd11 mov [rax+0x10], r15d
0bcbfd15 cmp dword [r13+0x1c], +0x01
0bcbfd1a jnz 0x0bcb0030 ->8
0bcbfd20 mov r15d, [r13+0x14]
0bcbfd24 mov rsi, 0xfffffffb40371790
0bcbfd2e cmp rsi, [r15+0x20]
0bcbfd32 jnz 0x0bcb0030 ->8
0bcbfd38 cmp dword [r15+0x1c], -0x05
0bcbfd3d jnz 0x0bcb0030 ->8
0bcbfd43 mov r15d, [r15+0x18]
0bcbfd47 mov dword [rax+0x1c], 0xfffffffb
0bcbfd4e mov [rax+0x18], r15d
0bcbfd52 cmp dword [r14+0x1c], +0x01
0bcbfd57 jnz 0x0bcb0034 ->9
0bcbfd5d mov r15d, [r14+0x14]
0bcbfd61 mov rsi, 0xfffffffb40371790
0bcbfd6b cmp rsi, [r15+0x20]
0bcbfd6f jnz 0x0bcb0034 ->9
0bcbfd75 cmp dword [r15+0x1c], -0x05
0bcbfd7a jnz 0x0bcb0034 ->9
0bcbfd80 mov r15d, [r15+0x18]
0bcbfd84 mov dword [rax+0x24], 0xfffffffb
0bcbfd8b mov [rax+0x20], r15d
0bcbfd8f mov esi, [rbp+0x1c]
0bcbfd92 and esi, 0x2a54dc55
0bcbfd98 lea esi, [rsi+rsi*2]
0bcbfd9b shl esi, 0x03
0bcbfd9e add esi, [rbp+0x14]
0bcbfda1 cmp dword [rsi+0xc], -0x05
0bcbfda5 jnz 0x0bcbfdb4
0bcbfda7 cmp dword [rsi+0x8], 0x40371ef8
0bcbfdae jz 0x0bcb0038 ->10
0bcbfdb4 mov esi, [rsi+0x10]
0bcbfdb7 test esi, esi
0bcbfdb9 jnz 0x0bcbfda1
0bcbfdbb cmp dword [rbp+0x10], +0x00
0bcbfdbf jnz 0x0bcb0038 ->10
0bcbfdc5 mov edx, 0x41937448
0bcbfdca mov dword [rdx+0x4], 0xfffffffb
0bcbfdd1 mov dword [rdx], 0x40371ef8
0bcbfdd7 mov esi, ebp
0bcbfdd9 call 0x00422cf0 ->lj_tab_newkey
0bcbfdde mov ebx, eax
0bcbfde0 mov edx, [0x419374b4]
0bcbfde7 mov eax, [rsp+0x8]
0bcbfdeb mov dword [rbx+0x4], 0xfffffff4
0bcbfdf2 mov [rbx], eax
0bcbfdf4 test byte [rbp+0x4], 0x4
0bcbfdf8 jz 0x0bcbfe0f
0bcbfdfa and byte [rbp+0x4], 0xfb
0bcbfdfe mov edi, [0x419373f4]
0bcbfe05 mov [0x419373f4], ebp
0bcbfe0c mov [rbp+0xc], edi
0bcbfe0f mov eax, [0x419374b0]
0bcbfe16 mov eax, [rax+0x20]
0bcbfe19 sub eax, edx
0bcbfe1b cmp eax, +0x68
0bcbfe1e jb 0x0bcb003c ->11
0bcbfe24 mov dword [rdx-0x8], 0x403641d8
0bcbfe2b xor eax, eax
0bcbfe2d mov ebx, 0x40372f58
0bcbfe32 mov r14d, 0x41938008
0bcbfe38 jmp 0x00420177
---- TRACE 2 stop -> return
---- TRACE 2 exit 2
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 2 exit 3
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 2 exit 6
---- TRACE 2 exit 4
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 3 start ssa.lua:52
0001 TDUP 2 1
0002 TGETS 3 1 2 ; "label"
0003 TSETB 3 2 2
0004 TSETS 2 0 0 ; "control"
0005 RET0 0 1
---- TRACE 3 IR
.... SNAP #0 [ ---- ---- ---- ]
0001 [8] > tab TDUP {0x403608f0}
0002 rbp > tab SLOAD #2 T
0003 int FLOAD 0002 tab.hmask
0004 > int EQ 0003 +1 
0005 rbp p32 FLOAD 0002 tab.node
0006 > p32 HREFK 0005 "label" @1
0007 rbp > str HLOAD 0006
0008 rax p32 FLOAD 0001 tab.array
0009 p32 AREF 0008 +2 
0010 str ASTORE 0009 0007
.... SNAP #1 [ ---- ---- ---- 0001 ---- ]
0011 rbp > tab SLOAD #1 T
0012 rsi p32 HREF 0011 "control"
0013 > p32 EQ 0012 [0x41937458]
0014 tab FLOAD 0011 tab.meta
0015 > tab EQ 0014 [NULL]
0016 rbx p32 NEWREF 0011 "control"
0017 tab HSTORE 0016 0001
0018 nil TBAR 0011
.... SNAP #2 [ ---- ]
---- TRACE 3 mcode 315
0bcbf967 mov dword [0x41937410], 0x3
0bcbf972 mov edi, [0x419373d8]
0bcbf979 cmp edi, [0x419373dc]
0bcbf980 jb 0x0bcbf999
0bcbf982 mov esi, 0x1
0bcbf987 mov edi, 0x419373b8
0bcbf98c call 0x00421730 ->lj_gc_step_jit
0bcbf991 test eax, eax
0bcbf993 jnz 0x0bcb0010 ->0
0bcbf999 mov edi, [0x419374b0]
0bcbf9a0 mov esi, 0x403608f0
0bcbf9a5 call 0x004223c0 ->lj_tab_dup
0bcbf9aa mov [rsp+0x8], eax
0bcbf9ae mov edi, [0x419374b0]
0bcbf9b5 mov edx, [0x419374b4]
0bcbf9bc cmp dword [rdx+0xc], -0x0c
0bcbf9c0 jnz 0x0bcb0010 ->0
0bcbf9c6 mov ebp, [rdx+0x8]
0bcbf9c9 cmp dword [rbp+0x1c], +0x01
0bcbf9cd jnz 0x0bcb0010 ->0
0bcbf9d3 mov ebp, [rbp+0x14]
0bcbf9d6 mov rsi, 0xfffffffb40371790
0bcbf9e0 cmp rsi, [rbp+0x20]
0bcbf9e4 jnz 0x0bcb0010 ->0
0bcbf9ea cmp dword [rbp+0x1c], -0x05
0bcbf9ee jnz 0x0bcb0010 ->0
0bcbf9f4 mov ebp, [rbp+0x18]
0bcbf9f7 mov eax, [rax+0x8]
0bcbf9fa mov dword [rax+0x14], 0xfffffffb
0bcbfa01 mov [rax+0x10], ebp
0bcbfa04 cmp dword [rdx+0x4], -0x0c
0bcbfa08 jnz 0x0bcb0014 ->1
0bcbfa0e mov ebp, [rdx]
0bcbfa10 mov esi, [rbp+0x1c]
0bcbfa13 and esi, 0x2a54dc55
0bcbfa19 lea esi, [rsi+rsi*2]
0bcbfa1c shl esi, 0x03
0bcbfa1f add esi, [rbp+0x14]
0bcbfa22 cmp dword [rsi+0xc], -0x05
0bcbfa26 jnz 0x0bcbfa35
0bcbfa28 cmp dword [rsi+0x8], 0x40371ef8
0bcbfa2f jz 0x0bcb0014 ->1
0bcbfa35 mov esi, [rsi+0x10]
0bcbfa38 test esi, esi
0bcbfa3a jnz 0x0bcbfa22
0bcbfa3c cmp dword [rbp+0x10], +0x00
0bcbfa40 jnz 0x0bcb0014 ->1
0bcbfa46 mov edx, 0x41937448
0bcbfa4b mov dword [rdx+0x4], 0xfffffffb
0bcbfa52 mov dword [rdx], 0x40371ef8
0bcbfa58 mov esi, ebp
0bcbfa5a call 0x00422cf0 ->lj_tab_newkey
0bcbfa5f mov ebx, eax
0bcbfa61 mov edx, [0x419374b4]
0bcbfa68 mov eax, [rsp+0x8]
0bcbfa6c mov dword [rbx+0x4], 0xfffffff4
0bcbfa73 mov [rbx], eax
0bcbfa75 test byte [rbp+0x4], 0x4
0bcbfa79 jz 0x0bcbfa90
0bcbfa7b and byte [rbp+0x4], 0xfb
0bcbfa7f mov edi, [0x419373f4]
0bcbfa86 mov [0x419373f4], ebp
0bcbfa8d mov [rbp+0xc], edi
0bcbfa90 xor eax, eax
0bcbfa92 mov ebx, 0x4037372c
0bcbfa97 mov r14d, 0x41938008
0bcbfa9d jmp 0x00420177
---- TRACE 3 stop -> return
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 4 start 2/1 ssa.lua:59
0014 UGET 5 0 ; add_block
0015 CALL 5 2 1
0000 . JFUNCF 3 1 ; ssa.lua:39
0001 . UGET 0 0 ; label_counter
0002 . ADDVN 0 0 0 ; 1
0003 . USETV 0 0 ; label_counter
0004 . KSTR 0 0 ; "L"
0005 . UGET 1 0 ; label_counter
0006 . CAT 0 0 1
0007 . TDUP 1 1
0008 . TNEW 2 0
0009 . TSETS 2 1 2 ; "bindings"
0010 . TSETS 0 1 3 ; "label"
0011 . UGET 2 1 ; ssa
0012 . TGETS 2 2 4 ; "blocks"
0013 . TSETV 1 2 0
0014 . RET1 1 2
0016 UGET 6 0 ; add_block
0017 CALL 6 2 1
0000 . JFUNCF 3 1 ; ssa.lua:39
0001 . UGET 0 0 ; label_counter
0002 . ADDVN 0 0 0 ; 1
0003 . USETV 0 0 ; label_counter
0004 . KSTR 0 0 ; "L"
0005 . UGET 1 0 ; label_counter
0006 . CAT 0 0 1
0007 . TDUP 1 1
0008 . TNEW 2 0
0009 . TSETS 2 1 2 ; "bindings"
0010 . TSETS 0 1 3 ; "label"
0011 . UGET 2 1 ; ssa
0012 . TGETS 2 2 4 ; "blocks"
0013 . TSETV 1 2 0
0014 . RET1 1 2
0018 UGET 7 1 ; compile_bool
0019 TGETB 8 0 2
0020 MOV 9 1
0021 MOV 10 5
0022 MOV 11 6
0023 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0070 . ISNES 4 12 ; "match"
0071 . JMP 5 => 0077
0077 . ISNES 4 14 ; "fail"
0078 . JMP 5 => 0084
0084 . GGET 5 0 ; "assert"
0085 . UGET 6 4 ; relops
0086 . TGETV 6 6 4
0087 . CALL 5 1 2
0000 . . FUNCC ; assert
0088 . UGET 5 5 ; finish_if
0089 . MOV 6 1
0090 . MOV 7 0
0091 . MOV 8 2
0092 . MOV 9 3
0093 . CALL 5 1 5
0000 . . FUNCF 6 ; ssa.lua:49
0001 . . TDUP 4 1
0002 . . TSETB 1 4 2
0003 . . TGETS 5 2 2 ; "label"
0004 . . TSETB 5 4 3
0005 . . TGETS 5 3 2 ; "label"
0006 . . TSETB 5 4 4
0007 . . TSETS 4 0 0 ; "control"
0008 . . RET0 0 1
0094 . RET0 0 1
0024 UGET 7 1 ; compile_bool
0025 TGETB 8 0 3
0026 MOV 9 5
0027 MOV 10 2
0028 MOV 11 3
0029 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0014 . UGET 5 0 ; add_block
0015 . CALL 5 2 1
0000 . . JFUNCF 3 1 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0016 . UGET 6 0 ; add_block
0017 . CALL 6 2 1
0000 . . JFUNCF 3 1 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0018 . UGET 7 1 ; compile_bool
0019 . TGETB 8 0 2
0020 . MOV 9 1
0021 . MOV 10 5
0022 . MOV 11 6
0023 . CALL 7 1 5
0000 . . JFUNCF 13 2 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0070 . . ISNES 4 12 ; "match"
0071 . . JMP 5 => 0077
0077 . . ISNES 4 14 ; "fail"
0078 . . JMP 5 => 0084
0084 . . GGET 5 0 ; "assert"
0085 . . UGET 6 4 ; relops
0086 . . TGETV 6 6 4
0087 . . CALL 5 1 2
0000 . . . FUNCC ; assert
0088 . . UGET 5 5 ; finish_if
0089 . . MOV 6 1
0090 . . MOV 7 0
0091 . . MOV 8 2
0092 . . MOV 9 3
0093 . . CALL 5 1 5
0000 . . . FUNCF 6 ; ssa.lua:49
0001 . . . TDUP 4 1
0002 . . . TSETB 1 4 2
0003 . . . TGETS 5 2 2 ; "label"
0004 . . . TSETB 5 4 3
0005 . . . TGETS 5 3 2 ; "label"
0006 . . . TSETB 5 4 4
0007 . . . TSETS 4 0 0 ; "control"
0008 . . . RET0 0 1
0094 . . RET0 0 1
0024 . UGET 7 1 ; compile_bool
0025 . TGETB 8 0 3
0026 . MOV 9 5
0027 . MOV 10 2
0028 . MOV 11 3
0029 . CALL 7 1 5
0000 . . JFUNCF 13 2 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0070 . . ISNES 4 12 ; "match"
0071 . . JMP 5 => 0077
0077 . . ISNES 4 14 ; "fail"
0078 . . JMP 5 => 0084
0084 . . GGET 5 0 ; "assert"
0085 . . UGET 6 4 ; relops
0086 . . TGETV 6 6 4
0087 . . CALL 5 1 2
0000 . . . FUNCC ; assert
0088 . . UGET 5 5 ; finish_if
0089 . . MOV 6 1
0090 . . MOV 7 0
0091 . . MOV 8 2
0092 . . MOV 9 3
0093 . . CALL 5 1 5
0000 . . . FUNCF 6 ; ssa.lua:49
0001 . . . TDUP 4 1
0002 . . . TSETB 1 4 2
0003 . . . TGETS 5 2 2 ; "label"
0004 . . . TSETB 5 4 3
0005 . . . TGETS 5 3 2 ; "label"
0006 . . . TSETB 5 4 4
0007 . . . TSETS 4 0 0 ; "control"
0008 . . . RET0 0 1
0094 . . RET0 0 1
0030 . UGET 7 1 ; compile_bool
0031 . TGETB 8 0 4
0032 . MOV 9 6
0033 . MOV 10 2
0034 . MOV 11 3
0035 . CALL 7 1 5
0000 . . JFUNCF 13 2 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0065 . . UGET 5 2 ; finish_goto
0066 . . MOV 6 1
0067 . . MOV 7 3
0068 . . CALL 5 1 3
0000 . . . JFUNCF 4 3 ; ssa.lua:52
0001 . . . TDUP 2 1
0002 . . . TGETS 3 1 2 ; "label"
0003 . . . TSETB 3 2 2
0004 . . . TSETS 2 0 0 ; "control"
0005 . . . RET0 0 1
0069 . . JMP 5 => 0094
0094 . . RET0 0 1
0036 . JMP 5 => 0094
0094 . RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0065 . UGET 5 2 ; finish_goto
0066 . MOV 6 1
0067 . MOV 7 3
0068 . CALL 5 1 3
0000 . . JFUNCF 4 3 ; ssa.lua:52
0001 . . TDUP 2 1
0002 . . TGETS 3 1 2 ; "label"
0003 . . TSETB 3 2 2
0004 . . TSETS 2 0 0 ; "control"
0005 . . RET0 0 1
0069 . JMP 5 => 0094
0094 . RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0065 . UGET 5 2 ; finish_goto
0066 . MOV 6 1
0067 . MOV 7 3
0068 . CALL 5 1 3
0000 . . JFUNCF 4 3 ; ssa.lua:52
0001 . . TDUP 2 1
0002 . . TGETS 3 1 2 ; "label"
0003 . . TSETB 3 2 2
0004 . . TSETS 2 0 0 ; "control"
0005 . . RET0 0 1
0069 . JMP 5 => 0094
0094 . RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
---- TRACE 4 abort ssa.lua:79 -- down-recursion, restarting
---- TRACE 4 start ssa.lua:79
0094 RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0065 . UGET 5 2 ; finish_goto
0066 . MOV 6 1
0067 . MOV 7 3
0068 . CALL 5 1 3
0000 . . JFUNCF 4 3 ; ssa.lua:52
0001 . . TDUP 2 1
0002 . . TGETS 3 1 2 ; "label"
0003 . . TSETB 3 2 2
0004 . . TSETS 2 0 0 ; "control"
0005 . . RET0 0 1
0069 . JMP 5 => 0094
0094 . RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
0055 JMP 5 => 0094
0094 RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0065 . UGET 5 2 ; finish_goto
0066 . MOV 6 1
0067 . MOV 7 3
0068 . CALL 5 1 3
0000 . . JFUNCF 4 3 ; ssa.lua:52
0001 . . TDUP 2 1
0002 . . TGETS 3 1 2 ; "label"
0003 . . TSETB 3 2 2
0004 . . TSETS 2 0 0 ; "control"
0005 . . RET0 0 1
0069 . JMP 5 => 0094
0094 . RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
---- TRACE 4 IR
.... SNAP #0 [ ---- ]
.... SNAP #1 [ ---- ]
0002 > p32 RETF proto: 0x40372da0 [0x40372e58]
.... SNAP #2 [ ---- ---- ---- ---- ---- ---- ---- ---- ]
0003 fun SLOAD #0 R
0004 > fun EQ 0003 ssa.lua:55
0005 rbp > tab SLOAD #1 T
0006 int FLOAD 0005 tab.asize
0007 > int ABC 0006 +4 
0008 rbp p32 FLOAD 0005 tab.array
0009 p32 AREF 0008 +4 
0010 rbx > tab ALOAD 0009
0011 rbp > tab SLOAD #7 T
0012 r15 > tab SLOAD #3 T
0013 r14 > tab SLOAD #4 T
0014 r12 tab FLOAD ssa.lua:55 func.env
0015 rsi p32 HREF 0014 "assert"
0016 > p32 EQ 0015 [0x41937458]
0017 r13 tab FLOAD 0014 tab.meta
0018 > tab NE 0017 [NULL]
0019 int FLOAD 0017 tab.hmask
0020 > int EQ 0019 +1 
0021 rsi p32 FLOAD 0017 tab.node
0022 > p32 HREFK 0021 "__index" @1
0023 rsi > tab HLOAD 0022
0024 int FLOAD 0023 tab.hmask
0025 > int EQ 0024 +63 
0026 rsi p32 FLOAD 0023 tab.node
0027 > p32 HREFK 0026 "assert" @3
0028 > fun HLOAD 0027
0029 rdx p32 HREF 0014 "type"
0030 > p32 EQ 0029 [0x41937458]
0031 > p32 HREFK 0026 "type" @60
0032 > fun HLOAD 0031
0033 > fun EQ 0032 type
0034 > fun EQ 0028 assert
0035 int FLOAD 0010 tab.asize
0036 > int ABC 0035 +1 
0037 rsi p32 FLOAD 0010 tab.array
0038 p32 AREF 0037 +1 
0039 [10] > str ALOAD 0038
.... SNAP #3 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0040 > str NE 0039 "if"
.... SNAP #4 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0041 > str NE 0039 "let"
.... SNAP #5 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0042 > str NE 0039 "true"
.... SNAP #6 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0043 > str EQ 0039 "false"
.... SNAP #7 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0044 [c] > tab TDUP {0x403608f0}
0045 int FLOAD 0013 tab.hmask
0046 > int EQ 0045 +1 
0047 rdx p32 FLOAD 0013 tab.node
0048 > p32 HREFK 0047 "label" @1
0049 rdx > str HLOAD 0048
0050 rax p32 FLOAD 0044 tab.array
0051 p32 AREF 0050 +2 
0052 str ASTORE 0051 0049
.... SNAP #8 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ssa.lua:52|0011 ---- 0044 ---- ]
0053 rdx p32 HREF 0011 "control"
0054 > p32 EQ 0053 [0x41937458]
0055 tab FLOAD 0011 tab.meta
0056 > tab EQ 0055 [NULL]
0057 rbx p32 NEWREF 0011 "control"
0058 tab HSTORE 0057 0044
0059 nil TBAR 0011
.... SNAP #9 [ ssa.lua:55|---- ---- ---- ---- ---- ]
0060 > p32 RETF proto: 0x40372da0 [0x40372ebc]
.... SNAP #10 [ ---- ---- ---- ---- ---- ---- ]
0061 > p32 RETF proto: 0x40372da0 [0x40372e58]
.... SNAP #11 [ ---- ---- ---- ---- ---- ---- ---- ---- ]
0062 fun SLOAD #0 R
0063 > fun EQ 0062 ssa.lua:55
0064 rbp > tab SLOAD #1 T
0065 int FLOAD 0064 tab.asize
0066 > int ABC 0065 +4 
0067 rbp p32 FLOAD 0064 tab.array
0068 p32 AREF 0067 +4 
0069 rbx > tab ALOAD 0068
0070 rbp > tab SLOAD #7 T
0071 r15 > tab SLOAD #3 T
0072 r14 > tab SLOAD #4 T
0073 rsi p32 HREF 0014 "assert"
0074 > p32 EQ 0073 [0x41937458]
0075 int FLOAD 0017 tab.hmask
0076 > int EQ 0075 +1 
0077 r13 p32 FLOAD 0017 tab.node
0078 > p32 HREFK 0077 "__index" @1
0079 r13 > tab HLOAD 0078
0080 int FLOAD 0079 tab.hmask
0081 > int EQ 0080 +63 
0082 r13 p32 FLOAD 0079 tab.node
0083 > p32 HREFK 0082 "assert" @3
0084 > fun HLOAD 0083
0085 rsi p32 HREF 0014 "type"
0086 > p32 EQ 0085 [0x41937458]
0087 > p32 HREFK 0082 "type" @60
0088 > fun HLOAD 0087
0089 > fun EQ 0088 type
0090 > fun EQ 0084 assert
0091 int FLOAD 0069 tab.asize
0092 > int ABC 0091 +1 
0093 r13 p32 FLOAD 0069 tab.array
0094 p32 AREF 0093 +1 
0095 r13 > str ALOAD 0094
.... SNAP #12 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0069 0070 0071 0072 0095 ]
0096 > str NE 0095 "if"
.... SNAP #13 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0069 0070 0071 0072 0095 ]
0097 > str NE 0095 "let"
.... SNAP #14 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0069 0070 0071 0072 0095 ]
0098 > str NE 0095 "true"
.... SNAP #15 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0069 0070 0071 0072 0095 ]
0099 > str EQ 0095 "false"
.... SNAP #16 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0069 0070 0071 0072 0095 ]
0100 [8] > tab TDUP {0x403608f0}
0101 int FLOAD 0072 tab.hmask
0102 > int EQ 0101 +1 
0103 r12 p32 FLOAD 0072 tab.node
0104 > p32 HREFK 0103 "label" @1
0105 r12 > str HLOAD 0104
0106 rax p32 FLOAD 0100 tab.array
0107 p32 AREF 0106 +2 
0108 str ASTORE 0107 0105
.... SNAP #17 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0069 0070 0071 0072 0095 ssa.lua:52|0070 ---- 0100 ---- ]
0109 rsi p32 HREF 0070 "control"
0110 > p32 EQ 0109 [0x41937458]
0111 tab FLOAD 0070 tab.meta
0112 > tab EQ 0111 [NULL]
0113 rbx p32 NEWREF 0070 "control"
0114 tab HSTORE 0113 0100
0115 nil TBAR 0070
.... SNAP #18 [ ssa.lua:55|]
---- TRACE 4 mcode 1484
0bcbf398 add rsp, -0x10
0bcbf39c mov dword [0x41937410], 0x4
0bcbf3a7 mov edi, [0x419373d8]
0bcbf3ae cmp edi, [0x419373dc]
0bcbf3b5 jb 0x0bcbf3ce
0bcbf3b7 mov esi, 0x2
0bcbf3bc mov edi, 0x419373b8
0bcbf3c1 call 0x00421730 ->lj_gc_step_jit
0bcbf3c6 test eax, eax
0bcbf3c8 jnz 0x0bcb0010 ->0
0bcbf3ce mov edi, [0x419374b0]
0bcbf3d5 mov edx, [0x419374b4]
0bcbf3dc cmp dword [rdx-0x4], 0x40372e58
0bcbf3e3 jnz 0x0bcb0014 ->1
0bcbf3e9 add edx, -0x40
0bcbf3ec mov [0x419374b4], edx
0bcbf3f3 cmp dword [rdx-0x8], 0x403641d8
0bcbf3fa jnz 0x0bcb0018 ->2
0bcbf400 cmp dword [rdx+0x4], -0x0c
0bcbf404 jnz 0x0bcb0018 ->2
0bcbf40a mov ebp, [rdx]
0bcbf40c cmp dword [rbp+0x18], +0x04
0bcbf410 jbe 0x0bcb0018 ->2
0bcbf416 mov ebp, [rbp+0x8]
0bcbf419 cmp dword [rbp+0x24], -0x0c
0bcbf41d jnz 0x0bcb0018 ->2
0bcbf423 mov ebx, [rbp+0x20]
0bcbf426 cmp dword [rdx+0x34], -0x0c
0bcbf42a jnz 0x0bcb0018 ->2
0bcbf430 mov ebp, [rdx+0x30]
0bcbf433 cmp dword [rdx+0x14], -0x0c
0bcbf437 jnz 0x0bcb0018 ->2
0bcbf43d mov r15d, [rdx+0x10]
0bcbf441 cmp dword [rdx+0x1c], -0x0c
0bcbf445 jnz 0x0bcb0018 ->2
0bcbf44b mov r14d, [rdx+0x18]
0bcbf44f mov r12d, [0x403641e0]
0bcbf457 mov esi, [r12+0x1c]
0bcbf45c and esi, 0xce2b6183
0bcbf462 lea esi, [rsi+rsi*2]
0bcbf465 shl esi, 0x03
0bcbf468 add esi, [r12+0x14]
0bcbf46d cmp dword [rsi+0xc], -0x05
0bcbf471 jnz 0x0bcbf480
0bcbf473 cmp dword [rsi+0x8], 0x41939db0
0bcbf47a jz 0x0bcb0018 ->2
0bcbf480 mov esi, [rsi+0x10]
0bcbf483 test esi, esi
0bcbf485 jnz 0x0bcbf46d
0bcbf487 mov r13d, [r12+0x10]
0bcbf48c test r13d, r13d
0bcbf48f jz 0x0bcb0018 ->2
0bcbf495 cmp dword [r13+0x1c], +0x01
0bcbf49a jnz 0x0bcb0018 ->2
0bcbf4a0 mov esi, [r13+0x14]
0bcbf4a4 mov rdx, 0xfffffffb419394c8
0bcbf4ae cmp rdx, [rsi+0x20]
0bcbf4b2 jnz 0x0bcb0018 ->2
0bcbf4b8 cmp dword [rsi+0x1c], -0x0c
0bcbf4bc jnz 0x0bcb0018 ->2
0bcbf4c2 mov esi, [rsi+0x18]
0bcbf4c5 cmp dword [rsi+0x1c], +0x3f
0bcbf4c9 jnz 0x0bcb0018 ->2
0bcbf4cf mov esi, [rsi+0x14]
0bcbf4d2 mov rdx, 0xfffffffb41939db0
0bcbf4dc cmp rdx, [rsi+0x50]
0bcbf4e0 jnz 0x0bcb0018 ->2
0bcbf4e6 cmp dword [rsi+0x4c], -0x09
0bcbf4ea jnz 0x0bcb0018 ->2
0bcbf4f0 mov edx, [r12+0x1c]
0bcbf4f5 and edx, 0x798a813c
0bcbf4fb lea edx, [rdx+rdx*2]
0bcbf4fe shl edx, 0x03
0bcbf501 add edx, [r12+0x14]
0bcbf506 cmp dword [rdx+0xc], -0x05
0bcbf50a jnz 0x0bcbf519
0bcbf50c cmp dword [rdx+0x8], 0x41939fb0
0bcbf513 jz 0x0bcb0018 ->2
0bcbf519 mov edx, [rdx+0x10]
0bcbf51c test edx, edx
0bcbf51e jnz 0x0bcbf506
0bcbf520 mov rdx, 0xfffffffb41939fb0
0bcbf52a cmp rdx, [rsi+0x5a8]
0bcbf531 jnz 0x0bcb0018 ->2
0bcbf537 cmp dword [rsi+0x5a4], -0x09
0bcbf53e jnz 0x0bcb0018 ->2
0bcbf544 cmp dword [rsi+0x5a0], 0x41939f18
0bcbf54e jnz 0x0bcb0018 ->2
0bcbf554 cmp dword [rsi+0x48], 0x41939d88
0bcbf55b jnz 0x0bcb0018 ->2
0bcbf561 cmp dword [rbx+0x18], +0x01
0bcbf565 jbe 0x0bcb0018 ->2
0bcbf56b mov esi, [rbx+0x8]
0bcbf56e cmp dword [rsi+0xc], -0x05
0bcbf572 jnz 0x0bcb0018 ->2
0bcbf578 mov esi, [rsi+0x8]
0bcbf57b mov [rsp+0x10], esi
0bcbf57f cmp esi, 0x419398f8
0bcbf585 jz 0x0bcb001c ->3
0bcbf58b cmp esi, 0x40367440
0bcbf591 jz 0x0bcb0020 ->4
0bcbf597 cmp esi, 0x41939a18
0bcbf59d jz 0x0bcb0024 ->5
0bcbf5a3 cmp esi, 0x41939870
0bcbf5a9 jnz 0x0bcb0028 ->6
0bcbf5af mov esi, 0x403608f0
0bcbf5b4 call 0x004223c0 ->lj_tab_dup
0bcbf5b9 mov [rsp+0xc], eax
0bcbf5bd mov edi, [0x419374b0]
0bcbf5c4 cmp dword [r14+0x1c], +0x01
0bcbf5c9 jnz 0x0bcb002c ->7
0bcbf5cf mov edx, [r14+0x14]
0bcbf5d3 mov rcx, 0xfffffffb40371790
0bcbf5dd cmp rcx, [rdx+0x20]
0bcbf5e1 jnz 0x0bcb002c ->7
0bcbf5e7 cmp dword [rdx+0x1c], -0x05
0bcbf5eb jnz 0x0bcb002c ->7
0bcbf5f1 mov edx, [rdx+0x18]
0bcbf5f4 mov eax, [rax+0x8]
0bcbf5f7 mov dword [rax+0x14], 0xfffffffb
0bcbf5fe mov [rax+0x10], edx
0bcbf601 mov edx, [rbp+0x1c]
0bcbf604 and edx, 0x2a54dc55
0bcbf60a lea edx, [rdx+rdx*2]
0bcbf60d shl edx, 0x03
0bcbf610 add edx, [rbp+0x14]
0bcbf613 cmp dword [rdx+0xc], -0x05
0bcbf617 jnz 0x0bcbf626
0bcbf619 cmp dword [rdx+0x8], 0x40371ef8
0bcbf620 jz 0x0bcb0030 ->8
0bcbf626 mov edx, [rdx+0x10]
0bcbf629 test edx, edx
0bcbf62b jnz 0x0bcbf613
0bcbf62d cmp dword [rbp+0x10], +0x00
0bcbf631 jnz 0x0bcb0030 ->8
0bcbf637 mov edx, 0x41937448
0bcbf63c mov dword [rdx+0x4], 0xfffffffb
0bcbf643 mov dword [rdx], 0x40371ef8
0bcbf649 mov esi, ebp
0bcbf64b call 0x00422cf0 ->lj_tab_newkey
0bcbf650 mov ebx, eax
0bcbf652 mov edi, [0x419374b0]
0bcbf659 mov edx, [0x419374b4]
0bcbf660 mov eax, [rsp+0xc]
0bcbf664 mov dword [rbx+0x4], 0xfffffff4
0bcbf66b mov [rbx], eax
0bcbf66d test byte [rbp+0x4], 0x4
0bcbf671 jz 0x0bcbf688
0bcbf673 and byte [rbp+0x4], 0xfb
0bcbf677 mov esi, [0x419373f4]
0bcbf67e mov [0x419373f4], ebp
0bcbf685 mov [rbp+0xc], esi
0bcbf688 cmp dword [rdx-0x4], 0x40372ebc
0bcbf68f jnz 0x0bcb0034 ->9
0bcbf695 add edx, -0x48
0bcbf698 mov [0x419374b4], edx
0bcbf69f cmp dword [rdx-0x4], 0x40372e58
0bcbf6a6 jnz 0x0bcb0038 ->10
0bcbf6ac add edx, -0x40
0bcbf6af mov [0x419374b4], edx
0bcbf6b6 cmp dword [rdx-0x8], 0x403641d8
0bcbf6bd jnz 0x0bcb003c ->11
0bcbf6c3 cmp dword [rdx+0x4], -0x0c
0bcbf6c7 jnz 0x0bcb003c ->11
0bcbf6cd mov ebp, [rdx]
0bcbf6cf cmp dword [rbp+0x18], +0x04
0bcbf6d3 jbe 0x0bcb003c ->11
0bcbf6d9 mov ebp, [rbp+0x8]
0bcbf6dc cmp dword [rbp+0x24], -0x0c
0bcbf6e0 jnz 0x0bcb003c ->11
0bcbf6e6 mov ebx, [rbp+0x20]
0bcbf6e9 cmp dword [rdx+0x34], -0x0c
0bcbf6ed jnz 0x0bcb003c ->11
0bcbf6f3 mov ebp, [rdx+0x30]
0bcbf6f6 cmp dword [rdx+0x14], -0x0c
0bcbf6fa jnz 0x0bcb003c ->11
0bcbf700 mov r15d, [rdx+0x10]
0bcbf704 cmp dword [rdx+0x1c], -0x0c
0bcbf708 jnz 0x0bcb003c ->11
0bcbf70e mov r14d, [rdx+0x18]
0bcbf712 mov esi, [r12+0x1c]
0bcbf717 and esi, 0xce2b6183
0bcbf71d lea esi, [rsi+rsi*2]
0bcbf720 shl esi, 0x03
0bcbf723 add esi, [r12+0x14]
0bcbf728 cmp dword [rsi+0xc], -0x05
0bcbf72c jnz 0x0bcbf73b
0bcbf72e cmp dword [rsi+0x8], 0x41939db0
0bcbf735 jz 0x0bcb003c ->11
0bcbf73b mov esi, [rsi+0x10]
0bcbf73e test esi, esi
0bcbf740 jnz 0x0bcbf728
0bcbf742 cmp dword [r13+0x1c], +0x01
0bcbf747 jnz 0x0bcb003c ->11
0bcbf74d mov r13d, [r13+0x14]
0bcbf751 mov rsi, 0xfffffffb419394c8
0bcbf75b cmp rsi, [r13+0x20]
0bcbf75f jnz 0x0bcb003c ->11
0bcbf765 cmp dword [r13+0x1c], -0x0c
0bcbf76a jnz 0x0bcb003c ->11
0bcbf770 mov r13d, [r13+0x18]
0bcbf774 cmp dword [r13+0x1c], +0x3f
0bcbf779 jnz 0x0bcb003c ->11
0bcbf77f mov r13d, [r13+0x14]
0bcbf783 mov rsi, 0xfffffffb41939db0
0bcbf78d cmp rsi, [r13+0x50]
0bcbf791 jnz 0x0bcb003c ->11
0bcbf797 cmp dword [r13+0x4c], -0x09
0bcbf79c jnz 0x0bcb003c ->11
0bcbf7a2 mov esi, [r12+0x1c]
0bcbf7a7 and esi, 0x798a813c
0bcbf7ad lea esi, [rsi+rsi*2]
0bcbf7b0 shl esi, 0x03
0bcbf7b3 add esi, [r12+0x14]
0bcbf7b8 cmp dword [rsi+0xc], -0x05
0bcbf7bc jnz 0x0bcbf7cb
0bcbf7be cmp dword [rsi+0x8], 0x41939fb0
0bcbf7c5 jz 0x0bcb003c ->11
0bcbf7cb mov esi, [rsi+0x10]
0bcbf7ce test esi, esi
0bcbf7d0 jnz 0x0bcbf7b8
0bcbf7d2 mov rsi, 0xfffffffb41939fb0
0bcbf7dc cmp rsi, [r13+0x5a8]
0bcbf7e3 jnz 0x0bcb003c ->11
0bcbf7e9 cmp dword [r13+0x5a4], -0x09
0bcbf7f1 jnz 0x0bcb003c ->11
0bcbf7f7 cmp dword [r13+0x5a0], 0x41939f18
0bcbf802 jnz 0x0bcb003c ->11
0bcbf808 cmp dword [r13+0x48], 0x41939d88
0bcbf810 jnz 0x0bcb003c ->11
0bcbf816 cmp dword [rbx+0x18], +0x01
0bcbf81a jbe 0x0bcb003c ->11
0bcbf820 mov r13d, [rbx+0x8]
0bcbf824 cmp dword [r13+0xc], -0x05
0bcbf829 jnz 0x0bcb003c ->11
0bcbf82f mov r13d, [r13+0x8]
0bcbf833 cmp r13d, 0x419398f8
0bcbf83a jz 0x0bcb0040 ->12
0bcbf840 cmp r13d, 0x40367440
0bcbf847 jz 0x0bcb0044 ->13
0bcbf84d cmp r13d, 0x41939a18
0bcbf854 jz 0x0bcb0048 ->14
0bcbf85a cmp r13d, 0x41939870
0bcbf861 jnz 0x0bcb004c ->15
0bcbf867 mov esi, 0x403608f0
0bcbf86c call 0x004223c0 ->lj_tab_dup
0bcbf871 mov [rsp+0x8], eax
0bcbf875 mov edi, [0x419374b0]
0bcbf87c cmp dword [r14+0x1c], +0x01
0bcbf881 jnz 0x0bcb0050 ->16
0bcbf887 mov r12d, [r14+0x14]
0bcbf88b mov rsi, 0xfffffffb40371790
0bcbf895 cmp rsi, [r12+0x20]
0bcbf89a jnz 0x0bcb0050 ->16
0bcbf8a0 cmp dword [r12+0x1c], -0x05
0bcbf8a6 jnz 0x0bcb0050 ->16
0bcbf8ac mov r12d, [r12+0x18]
0bcbf8b1 mov eax, [rax+0x8]
0bcbf8b4 mov dword [rax+0x14], 0xfffffffb
0bcbf8bb mov [rax+0x10], r12d
0bcbf8bf mov esi, [rbp+0x1c]
0bcbf8c2 and esi, 0x2a54dc55
0bcbf8c8 lea esi, [rsi+rsi*2]
0bcbf8cb shl esi, 0x03
0bcbf8ce add esi, [rbp+0x14]
0bcbf8d1 cmp dword [rsi+0xc], -0x05
0bcbf8d5 jnz 0x0bcbf8e4
0bcbf8d7 cmp dword [rsi+0x8], 0x40371ef8
0bcbf8de jz 0x0bcb0054 ->17
0bcbf8e4 mov esi, [rsi+0x10]
0bcbf8e7 test esi, esi
0bcbf8e9 jnz 0x0bcbf8d1
0bcbf8eb cmp dword [rbp+0x10], +0x00
0bcbf8ef jnz 0x0bcb0054 ->17
0bcbf8f5 mov edx, 0x41937448
0bcbf8fa mov dword [rdx+0x4], 0xfffffffb
0bcbf901 mov dword [rdx], 0x40371ef8
0bcbf907 mov esi, ebp
0bcbf909 call 0x00422cf0 ->lj_tab_newkey
0bcbf90e mov ebx, eax
0bcbf910 mov edx, [0x419374b4]
0bcbf917 mov eax, [rsp+0x8]
0bcbf91b mov dword [rbx+0x4], 0xfffffff4
0bcbf922 mov [rbx], eax
0bcbf924 test byte [rbp+0x4], 0x4
0bcbf928 jz 0x0bcbf93f
0bcbf92a and byte [rbp+0x4], 0xfb
0bcbf92e mov edi, [0x419373f4]
0bcbf935 mov [0x419373f4], ebp
0bcbf93c mov [rbp+0xc], edi
0bcbf93f mov eax, [0x419374b0]
0bcbf946 mov eax, [rax+0x20]
0bcbf949 sub eax, edx
0bcbf94b cmp eax, +0x68
0bcbf94e jb 0x0bcb0058 ->18
0bcbf954 mov dword [rdx-0x8], 0x403641d8
0bcbf95b add rsp, +0x10
0bcbf95f jmp 0x0bcbf398
---- TRACE 4 stop -> down-recursion
---- TRACE 4 exit 1
---- TRACE 2 exit 5
---- TRACE 4 exit 3
---- TRACE 2 exit 1
---- TRACE 5 start 2/1 ssa.lua:59
0014 UGET 5 0 ; add_block
0015 CALL 5 2 1
0000 . JFUNCF 3 1 ; ssa.lua:39
0001 . UGET 0 0 ; label_counter
0002 . ADDVN 0 0 0 ; 1
0003 . USETV 0 0 ; label_counter
0004 . KSTR 0 0 ; "L"
0005 . UGET 1 0 ; label_counter
0006 . CAT 0 0 1
0007 . TDUP 1 1
0008 . TNEW 2 0
0009 . TSETS 2 1 2 ; "bindings"
0010 . TSETS 0 1 3 ; "label"
0011 . UGET 2 1 ; ssa
0012 . TGETS 2 2 4 ; "blocks"
0013 . TSETV 1 2 0
0014 . RET1 1 2
0016 UGET 6 0 ; add_block
0017 CALL 6 2 1
0000 . JFUNCF 3 1 ; ssa.lua:39
0001 . UGET 0 0 ; label_counter
0002 . ADDVN 0 0 0 ; 1
0003 . USETV 0 0 ; label_counter
0004 . KSTR 0 0 ; "L"
0005 . UGET 1 0 ; label_counter
0006 . CAT 0 0 1
0007 . TDUP 1 1
0008 . TNEW 2 0
0009 . TSETS 2 1 2 ; "bindings"
0010 . TSETS 0 1 3 ; "label"
0011 . UGET 2 1 ; ssa
0012 . TGETS 2 2 4 ; "blocks"
0013 . TSETV 1 2 0
0014 . RET1 1 2
0018 UGET 7 1 ; compile_bool
0019 TGETB 8 0 2
0020 MOV 9 1
0021 MOV 10 5
0022 MOV 11 6
0023 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0014 . UGET 5 0 ; add_block
0015 . CALL 5 2 1
0000 . . JFUNCF 3 1 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0016 . UGET 6 0 ; add_block
0017 . CALL 6 2 1
0000 . . JFUNCF 3 1 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0018 . UGET 7 1 ; compile_bool
0019 . TGETB 8 0 2
0020 . MOV 9 1
0021 . MOV 10 5
0022 . MOV 11 6
0023 . CALL 7 1 5
0000 . . JFUNCF 13 2 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0070 . . ISNES 4 12 ; "match"
0071 . . JMP 5 => 0077
0077 . . ISNES 4 14 ; "fail"
0078 . . JMP 5 => 0084
0084 . . GGET 5 0 ; "assert"
0085 . . UGET 6 4 ; relops
0086 . . TGETV 6 6 4
0087 . . CALL 5 1 2
0000 . . . FUNCC ; assert
0088 . . UGET 5 5 ; finish_if
0089 . . MOV 6 1
0090 . . MOV 7 0
0091 . . MOV 8 2
0092 . . MOV 9 3
0093 . . CALL 5 1 5
0000 . . . FUNCF 6 ; ssa.lua:49
0001 . . . TDUP 4 1
0002 . . . TSETB 1 4 2
0003 . . . TGETS 5 2 2 ; "label"
0004 . . . TSETB 5 4 3
0005 . . . TGETS 5 3 2 ; "label"
0006 . . . TSETB 5 4 4
0007 . . . TSETS 4 0 0 ; "control"
0008 . . . RET0 0 1
0094 . . JLOOP 1 4
---- TRACE 5 IR
0001 rbx str SLOAD #5 PI
.... SNAP #0 [ ---- ---- ---- ---- ---- 0001 ]
0002 fun SLOAD #0 R
0003 > fun EQ 0002 ssa.lua:55
0004 [44] > p32 UREFO ssa.lua:39 #0
0005 xmm7 > num ULOAD 0004
0006 [58] num ADD 0005 +1 
0007 num USTORE 0004 0006
.... SNAP #1 [ ssa.lua:55|---- ---- ---- ---- 0001 ssa.lua:39|---- ]
0008 str TOSTR 0006 NUM
0009 rdi p32 BUFHDR [0x41937414] RESET
0010 rdi p32 BUFPUT 0009 "L" 
0011 rdi p32 BUFPUT 0010 0008
0012 [60] str BUFSTR 0011 0009
0013 [8] > tab TDUP {0x40372418}
0014 r15 > tab TNEW #0 #0
0015 rbp p32 FLOAD 0013 tab.node
0016 p32 HREFK 0015 "bindings" @2
0017 tab HSTORE 0016 0014
0018 p32 HREFK 0015 "label" @3
0019 str HSTORE 0018 0012
.... SNAP #2 [ ssa.lua:55|---- ---- ---- ---- 0001 ssa.lua:39|0012 0013 ---- ]
0020 rbp > p32 UREFO ssa.lua:39 #1
0021 [2c] > tab ULOAD 0020
0022 int FLOAD 0021 tab.hmask
0023 > int EQ 0022 +1 
0024 rbp p32 FLOAD 0021 tab.node
0025 > p32 HREFK 0024 "blocks" @0
0026 rbp > tab HLOAD 0025
0027 rsi p32 HREF 0026 0012
0028 > p32 EQ 0027 [0x41937458]
0029 tab FLOAD 0026 tab.meta
0030 > tab EQ 0029 [NULL]
0031 r15 p32 NEWREF 0026 0012
0032 tab HSTORE 0031 0013
0033 nil TBAR 0026
0034 p32 FREF 0026 tab.nomm
0035 u8  FSTORE 0034 +0 
0036 [50] num ADD 0006 +1 
0037 num USTORE 0004 0036
.... SNAP #3 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 ssa.lua:39|---- ]
0038 str TOSTR 0036 NUM
0039 rdi p32 BUFHDR [0x41937414] RESET
0040 rdi p32 BUFPUT 0039 "L" 
0041 rdi p32 BUFPUT 0040 0038
0042 [4c] str BUFSTR 0041 0039
0043 rbp > tab TDUP {0x40372418}
0044 r14 > tab TNEW #0 #0
0045 r15 p32 FLOAD 0043 tab.node
0046 p32 HREFK 0045 "bindings" @2
0047 tab HSTORE 0046 0044
0048 p32 HREFK 0045 "label" @3
0049 str HSTORE 0048 0042
.... SNAP #4 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 ssa.lua:39|0042 0043 ---- ]
0050 int FLOAD 0021 tab.hmask
0051 > int EQ 0050 +1 
0052 r15 p32 FLOAD 0021 tab.node
0053 > p32 HREFK 0052 "blocks" @0
0054 r15 > tab HLOAD 0053
0055 rsi p32 HREF 0054 0042
0056 > p32 EQ 0055 [0x41937458]
0057 tab FLOAD 0054 tab.meta
0058 > tab EQ 0057 [NULL]
0059 rax p32 NEWREF 0054 0042
0060 tab HSTORE 0059 0043
0061 nil TBAR 0054
0062 p32 FREF 0054 tab.nomm
0063 u8  FSTORE 0062 +0 
.... SNAP #5 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 ssa.lua:39|---- 0043 ---- ]
0064 r15 > tab SLOAD #1 T
0065 int FLOAD 0064 tab.asize
0066 > int ABC 0065 +2 
0067 r15 p32 FLOAD 0064 tab.array
0068 p32 AREF 0067 +2 
0069 r15 > tab ALOAD 0068
0070 r14 > tab SLOAD #2 T
0071 [20] tab FLOAD ssa.lua:55 func.env
0072 rsi p32 HREF 0071 "assert"
0073 > p32 EQ 0072 [0x41937458]
0074 [28] tab FLOAD 0071 tab.meta
0075 > tab NE 0074 [NULL]
0076 int FLOAD 0074 tab.hmask
0077 > int EQ 0076 +1 
0078 r13 p32 FLOAD 0074 tab.node
0079 > p32 HREFK 0078 "__index" @1
0080 r13 > tab HLOAD 0079
0081 int FLOAD 0080 tab.hmask
0082 > int EQ 0081 +63 
0083 r13 p32 FLOAD 0080 tab.node
0084 > p32 HREFK 0083 "assert" @3
0085 > fun HLOAD 0084
0086 rsi p32 HREF 0071 "type"
0087 > p32 EQ 0086 [0x41937458]
0088 > p32 HREFK 0083 "type" @60
0089 > fun HLOAD 0088
0090 > fun EQ 0089 type
0091 > fun EQ 0085 assert
0092 int FLOAD 0069 tab.asize
0093 > int ABC 0092 +1 
0094 r13 p32 FLOAD 0069 tab.array
0095 p32 AREF 0094 +1 
0096 r13 > str ALOAD 0095
.... SNAP #6 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 0043 ssa.lua:55|0069 0070 0013 0043 0096 ]
0097 > str EQ 0096 "if"
0098 [38] num ADD 0036 +1 
0099 num USTORE 0004 0098
.... SNAP #7 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 0043 ssa.lua:55|0069 0070 0013 0043 0096 ssa.lua:39|---- ]
0100 str TOSTR 0098 NUM
0101 rdi p32 BUFHDR [0x41937414] RESET
0102 rdi p32 BUFPUT 0101 "L" 
0103 rdi p32 BUFPUT 0102 0100
0104 [48] str BUFSTR 0103 0101
0105 r12 > tab TDUP {0x40372418}
0106 rcx > tab TNEW #0 #0
0107 rdx p32 FLOAD 0105 tab.node
0108 p32 HREFK 0107 "bindings" @2
0109 tab HSTORE 0108 0106
0110 p32 HREFK 0107 "label" @3
0111 str HSTORE 0110 0104
.... SNAP #8 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 0043 ssa.lua:55|0069 0070 0013 0043 0096 ssa.lua:39|0104 0105 ---- ]
0112 int FLOAD 0021 tab.hmask
0113 > int EQ 0112 +1 
0114 rsi p32 FLOAD 0021 tab.node
0115 > p32 HREFK 0114 "blocks" @0
0116 [40] > tab HLOAD 0115
0117 rdx p32 HREF 0116 0104
0118 > p32 EQ 0117 [0x41937458]
0119 tab FLOAD 0116 tab.meta
0120 > tab EQ 0119 [NULL]
0121 rax p32 NEWREF 0116 0104
0122 tab HSTORE 0121 0105
0123 nil TBAR 0116
0124 p32 FREF 0116 tab.nomm
0125 u8  FSTORE 0124 +0 
0126 [30] num ADD 0098 +1 
0127 num USTORE 0004 0126
.... SNAP #9 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 0043 ssa.lua:55|0069 0070 0013 0043 0096 0105 ssa.lua:39|---- ]
0128 str TOSTR 0126 NUM
0129 rdi p32 BUFHDR [0x41937414] RESET
0130 rdi p32 BUFPUT 0129 "L" 
0131 rdi p32 BUFPUT 0130 0128
0132 [18] str BUFSTR 0131 0129
0133 [14] > tab TDUP {0x40372418}
0134 rcx > tab TNEW #0 #0
0135 rdx p32 FLOAD 0133 tab.node
0136 p32 HREFK 0135 "bindings" @2
0137 tab HSTORE 0136 0134
0138 p32 HREFK 0135 "label" @3
0139 str HSTORE 0138 0132
.... SNAP #10 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 0043 ssa.lua:55|0069 0070 0013 0043 0096 0105 ssa.lua:39|0132 0133 ---- ]
0140 int FLOAD 0021 tab.hmask
0141 > int EQ 0140 +1 
0142 rsi p32 FLOAD 0021 tab.node
0143 > p32 HREFK 0142 "blocks" @0
0144 [24] > tab HLOAD 0143
0145 rdx p32 HREF 0144 0132
0146 > p32 EQ 0145 [0x41937458]
0147 tab FLOAD 0144 tab.meta
0148 > tab EQ 0147 [NULL]
0149 rcx p32 NEWREF 0144 0132
0150 tab HSTORE 0149 0133
0151 nil TBAR 0144
0152 p32 FREF 0144 tab.nomm
0153 u8  FSTORE 0152 +0 
.... SNAP #11 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 0043 ssa.lua:55|0069 0070 0013 0043 0096 0105 ssa.lua:39|---- 0133 ---- ]
0154 int FLOAD 0069 tab.asize
0155 > int ABC 0154 +2 
0156 rdx p32 FLOAD 0069 tab.array
0157 p32 AREF 0156 +2 
0158 [10] > tab ALOAD 0157
0159 rdx p32 HREF 0071 "assert"
0160 > p32 EQ 0159 [0x41937458]
0161 int FLOAD 0074 tab.hmask
0162 > int EQ 0161 +1 
0163 rsi p32 FLOAD 0074 tab.node
0164 > p32 HREFK 0163 "__index" @1
0165 rsi > tab HLOAD 0164
0166 int FLOAD 0165 tab.hmask
0167 > int EQ 0166 +63 
0168 rsi p32 FLOAD 0165 tab.node
0169 > p32 HREFK 0168 "assert" @3
0170 > fun HLOAD 0169
0171 rdx p32 HREF 0071 "type"
0172 > p32 EQ 0171 [0x41937458]
0173 > p32 HREFK 0168 "type" @60
0174 > fun HLOAD 0173
0175 > fun EQ 0174 type
0176 > fun EQ 0170 assert
0177 int FLOAD 0158 tab.asize
0178 > int ABC 0177 +1 
0179 rsi p32 FLOAD 0158 tab.array
0180 p32 AREF 0179 +1 
0181 [1c] > str ALOAD 0180
.... SNAP #12 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 0043 ssa.lua:55|0069 0070 0013 0043 0096 0105 0133 ssa.lua:55|0158 0070 0105 0133 0181 ]
0182 > str NE 0181 "if"
.... SNAP #13 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 0043 ssa.lua:55|0069 0070 0013 0043 0096 0105 0133 ssa.lua:55|0158 0070 0105 0133 0181 ]
0183 > str NE 0181 "let"
.... SNAP #14 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 0043 ssa.lua:55|0069 0070 0013 0043 0096 0105 0133 ssa.lua:55|0158 0070 0105 0133 0181 ]
0184 > str NE 0181 "true"
.... SNAP #15 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 0043 ssa.lua:55|0069 0070 0013 0043 0096 0105 0133 ssa.lua:55|0158 0070 0105 0133 0181 ]
0185 > str NE 0181 "false"
.... SNAP #16 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 0043 ssa.lua:55|0069 0070 0013 0043 0096 0105 0133 ssa.lua:55|0158 0070 0105 0133 0181 ]
0186 > str NE 0181 "match"
.... SNAP #17 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 0043 ssa.lua:55|0069 0070 0013 0043 0096 0105 0133 ssa.lua:55|0158 0070 0105 0133 0181 ]
0187 > str NE 0181 "fail"
.... SNAP #18 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 0043 ssa.lua:55|0069 0070 0013 0043 0096 0105 0133 ssa.lua:55|0158 0070 0105 0133 0181 ]
0188 > p32 UREFC ssa.lua:55 #4
0189 rdx > tab ULOAD 0188
0190 rsi p32 HREF 0189 0181
0191 > tru HLOAD 0190
0192 [c] > tab TDUP {0x40366b30}
0193 rdx p32 FLOAD 0192 tab.array
0194 p32 AREF 0193 +2 
0195 tab ASTORE 0194 0158
.... SNAP #19 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 0043 ssa.lua:55|0069 0070 0013 0043 0096 0105 0133 ssa.lua:55|0158 0070 0105 0133 0181 ssa.lua:49|0070 ---- 0105 0133 0192 ]
0196 int FLOAD 0105 tab.hmask
0197 > int EQ 0196 +3 
0198 rcx p32 FLOAD 0105 tab.node
0199 > p32 HREFK 0198 "label" @3
0200 rcx > str HLOAD 0199
0201 p32 AREF 0193 +3 
0202 str ASTORE 0201 0200
0203 p32 AREF 0193 +4 
0204 str ASTORE 0203 0132
.... SNAP #20 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 0043 ssa.lua:55|0069 0070 0013 0043 0096 0105 0133 ssa.lua:55|0158 0070 0105 0133 0181 ssa.lua:49|0070 ---- ---- ---- 0192 ---- ]
0205 rdx p32 HREF 0070 "control"
0206 > p32 EQ 0205 [0x41937458]
0207 tab FLOAD 0070 tab.meta
0208 > tab EQ 0207 [NULL]
0209 r11 p32 NEWREF 0070 "control"
0210 tab HSTORE 0209 0192
0211 nil TBAR 0070
.... SNAP #21 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 0043 ssa.lua:55|0069 0070 0013 0043 0096 0105 0133 ssa.lua:55|0158 ]
---- TRACE 5 mcode 2681
0bcbe91c mov eax, [0x419374b0]
0bcbe923 mov eax, [rax+0x20]
0bcbe926 sub eax, [0x419374b4]
0bcbe92d cmp eax, 0xe8
0bcbe933 jb 0x0bcb0014 ->1
0bcbe939 add rsp, -0x60
0bcbe93d mov dword [0x41937410], 0x5
0bcbe948 mov edi, [0x419373d8]
0bcbe94f cmp edi, [0x419373dc]
0bcbe956 jb 0x0bcbe96f
0bcbe958 mov esi, 0xd
0bcbe95d mov edi, 0x419373b8
0bcbe962 call 0x00421730 ->lj_gc_step_jit
0bcbe967 test eax, eax
0bcbe969 jnz 0x0bcb0010 ->0
0bcbe96f mov edx, [0x419374b4]
0bcbe976 cmp dword [rdx-0x8], 0x403641d8
0bcbe97d jnz 0x0bcb0010 ->0
0bcbe983 mov edi, [0x4194c860]
0bcbe98a mov [rsp+0x44], edi
0bcbe98e cmp dword [rdi+0x4], 0xfffeffff
0bcbe995 jnb 0x0bcb0010 ->0
0bcbe99b movsd xmm7, [rdi]
0bcbe99f addsd xmm7, [0x403610a0]
0bcbe9a8 movsd [rsp+0x58], xmm7
0bcbe9ae movsd [rdi], xmm7
0bcbe9b2 mov edi, 0x41937414
0bcbe9b7 mov esi, [rdi+0x8]
0bcbe9ba mov [rdi], esi
0bcbe9bc mov esi, 0x4c
0bcbe9c1 call 0x00421b60 ->lj_buf_putchar
0bcbe9c6 mov edi, eax
0bcbe9c8 lea rsi, [rsp+0x58]
0bcbe9cd call 0x0040a3c0 ->lj_strfmt_putnum
0bcbe9d2 mov edi, eax
0bcbe9d4 call 0x00421ff0 ->lj_buf_tostr
0bcbe9d9 mov [rsp+0x60], eax
0bcbe9dd mov edi, [0x419374b0]
0bcbe9e4 mov esi, 0x40372418
0bcbe9e9 call 0x004223c0 ->lj_tab_dup
0bcbe9ee mov ebp, eax
0bcbe9f0 mov [rsp+0x8], ebp
0bcbe9f4 mov edi, [0x419374b0]
0bcbe9fb xor esi, esi
0bcbe9fd call 0x00422350 ->lj_tab_new1
0bcbea02 mov r15d, eax
0bcbea05 mov edi, [0x419374b0]
0bcbea0c mov eax, [rsp+0x60]
0bcbea10 mov ebp, [rbp+0x14]
0bcbea13 mov dword [rbp+0x34], 0xfffffff4
0bcbea1a mov [rbp+0x30], r15d
0bcbea1e mov dword [rbp+0x4c], 0xfffffffb
0bcbea25 mov [rbp+0x48], eax
0bcbea28 mov ebp, [0x4194c0c0]
0bcbea2f cmp dword [rbp+0x4], -0x0c
0bcbea33 jnz 0x0bcb0018 ->2
0bcbea39 mov esi, [rbp+0x0]
0bcbea3c mov [rsp+0x2c], esi
0bcbea40 cmp dword [rsi+0x1c], +0x01
0bcbea44 jnz 0x0bcb0018 ->2
0bcbea4a mov ebp, [rsi+0x14]
0bcbea4d mov rsi, 0xfffffffb403716f0
0bcbea57 cmp rsi, [rbp+0x8]
0bcbea5b jnz 0x0bcb0018 ->2
0bcbea61 cmp dword [rbp+0x4], -0x0c
0bcbea65 jnz 0x0bcb0018 ->2
0bcbea6b mov ebp, [rbp+0x0]
0bcbea6e mov esi, [rbp+0x1c]
0bcbea71 and esi, [rax+0x8]
0bcbea74 lea esi, [rsi+rsi*2]
0bcbea77 shl esi, 0x03
0bcbea7a add esi, [rbp+0x14]
0bcbea7d cmp dword [rsi+0xc], -0x05
0bcbea81 jnz 0x0bcbea8c
0bcbea83 cmp eax, [rsi+0x8]
0bcbea86 jz 0x0bcb0018 ->2
0bcbea8c mov esi, [rsi+0x10]
0bcbea8f test esi, esi
0bcbea91 jnz 0x0bcbea7d
0bcbea93 cmp dword [rbp+0x10], +0x00
0bcbea97 jnz 0x0bcb0018 ->2
0bcbea9d mov edx, 0x41937448
0bcbeaa2 mov dword [rdx+0x4], 0xfffffffb
0bcbeaa9 mov [rdx], eax
0bcbeaab mov esi, ebp
0bcbeaad call 0x00422cf0 ->lj_tab_newkey
0bcbeab2 mov r15d, eax
0bcbeab5 mov edi, [rsp+0x44]
0bcbeab9 mov eax, [rsp+0x8]
0bcbeabd movsd xmm7, [rsp+0x58]
0bcbeac3 mov dword [r15+0x4], 0xfffffff4
0bcbeacb mov [r15], eax
0bcbeace test byte [rbp+0x4], 0x4
0bcbead2 jz 0x0bcbeae9
0bcbead4 and byte [rbp+0x4], 0xfb
0bcbead8 mov esi, [0x419373f4]
0bcbeadf mov [0x419373f4], ebp
0bcbeae6 mov [rbp+0xc], esi
0bcbeae9 mov byte [rbp+0x6], 0x0
0bcbeaed addsd xmm7, [0x403610a0]
0bcbeaf6 movsd [rsp+0x50], xmm7
0bcbeafc movsd [rdi], xmm7
0bcbeb00 mov edi, 0x41937414
0bcbeb05 mov esi, [rdi+0x8]
0bcbeb08 mov [rdi], esi
0bcbeb0a mov esi, 0x4c
0bcbeb0f call 0x00421b60 ->lj_buf_putchar
0bcbeb14 mov edi, eax
0bcbeb16 lea rsi, [rsp+0x50]
0bcbeb1b call 0x0040a3c0 ->lj_strfmt_putnum
0bcbeb20 mov edi, eax
0bcbeb22 call 0x00421ff0 ->lj_buf_tostr
0bcbeb27 mov [rsp+0x4c], eax
0bcbeb2b mov edi, [0x419374b0]
0bcbeb32 mov esi, 0x40372418
0bcbeb37 call 0x004223c0 ->lj_tab_dup
0bcbeb3c mov ebp, eax
0bcbeb3e mov edi, [0x419374b0]
0bcbeb45 xor esi, esi
0bcbeb47 call 0x00422350 ->lj_tab_new1
0bcbeb4c mov r14d, eax
0bcbeb4f mov edi, [0x419374b0]
0bcbeb56 mov esi, [rsp+0x2c]
0bcbeb5a mov eax, [rsp+0x4c]
0bcbeb5e mov r15d, [rbp+0x14]
0bcbeb62 mov dword [r15+0x34], 0xfffffff4
0bcbeb6a mov [r15+0x30], r14d
0bcbeb6e mov dword [r15+0x4c], 0xfffffffb
0bcbeb76 mov [r15+0x48], eax
0bcbeb7a cmp dword [rsi+0x1c], +0x01
0bcbeb7e jnz 0x0bcb0020 ->4
0bcbeb84 mov r15d, [rsi+0x14]
0bcbeb88 mov rsi, 0xfffffffb403716f0
0bcbeb92 cmp rsi, [r15+0x8]
0bcbeb96 jnz 0x0bcb0020 ->4
0bcbeb9c cmp dword [r15+0x4], -0x0c
0bcbeba1 jnz 0x0bcb0020 ->4
0bcbeba7 mov r15d, [r15]
0bcbebaa mov esi, [r15+0x1c]
0bcbebae and esi, [rax+0x8]
0bcbebb1 lea esi, [rsi+rsi*2]
0bcbebb4 shl esi, 0x03
0bcbebb7 add esi, [r15+0x14]
0bcbebbb cmp dword [rsi+0xc], -0x05
0bcbebbf jnz 0x0bcbebca
0bcbebc1 cmp eax, [rsi+0x8]
0bcbebc4 jz 0x0bcb0020 ->4
0bcbebca mov esi, [rsi+0x10]
0bcbebcd test esi, esi
0bcbebcf jnz 0x0bcbebbb
0bcbebd1 cmp dword [r15+0x10], +0x00
0bcbebd6 jnz 0x0bcb0020 ->4
0bcbebdc mov edx, 0x41937448
0bcbebe1 mov dword [rdx+0x4], 0xfffffffb
0bcbebe8 mov [rdx], eax
0bcbebea mov esi, r15d
0bcbebed call 0x00422cf0 ->lj_tab_newkey
0bcbebf2 mov edi, [rsp+0x44]
0bcbebf6 mov edx, [0x419374b4]
0bcbebfd movsd xmm7, [rsp+0x50]
0bcbec03 mov dword [rax+0x4], 0xfffffff4
0bcbec0a mov [rax], ebp
0bcbec0c test byte [r15+0x4], 0x4
0bcbec11 jz 0x0bcbec2b
0bcbec13 and byte [r15+0x4], 0xfb
0bcbec18 mov esi, [0x419373f4]
0bcbec1f mov [0x419373f4], r15d
0bcbec27 mov [r15+0xc], esi
0bcbec2b mov byte [r15+0x6], 0x0
0bcbec30 cmp dword [rdx+0x4], -0x0c
0bcbec34 jnz 0x0bcb0024 ->5
0bcbec3a mov r15d, [rdx]
0bcbec3d cmp dword [r15+0x18], +0x02
0bcbec42 jbe 0x0bcb0024 ->5
0bcbec48 mov r15d, [r15+0x8]
0bcbec4c cmp dword [r15+0x14], -0x0c
0bcbec51 jnz 0x0bcb0024 ->5
0bcbec57 mov r15d, [r15+0x10]
0bcbec5b cmp dword [rdx+0xc], -0x0c
0bcbec5f jnz 0x0bcb0024 ->5
0bcbec65 mov r14d, [rdx+0x8]
0bcbec69 mov eax, [0x403641e0]
0bcbec70 mov [rsp+0x20], eax
0bcbec74 mov esi, [rax+0x1c]
0bcbec77 and esi, 0xce2b6183
0bcbec7d lea esi, [rsi+rsi*2]
0bcbec80 shl esi, 0x03
0bcbec83 add esi, [rax+0x14]
0bcbec86 cmp dword [rsi+0xc], -0x05
0bcbec8a jnz 0x0bcbec99
0bcbec8c cmp dword [rsi+0x8], 0x41939db0
0bcbec93 jz 0x0bcb0024 ->5
0bcbec99 mov esi, [rsi+0x10]
0bcbec9c test esi, esi
0bcbec9e jnz 0x0bcbec86
0bcbeca0 mov esi, [rax+0x10]
0bcbeca3 mov [rsp+0x28], esi
0bcbeca7 test esi, esi
0bcbeca9 jz 0x0bcb0024 ->5
0bcbecaf cmp dword [rsi+0x1c], +0x01
0bcbecb3 jnz 0x0bcb0024 ->5
0bcbecb9 mov r13d, [rsi+0x14]
0bcbecbd mov rsi, 0xfffffffb419394c8
0bcbecc7 cmp rsi, [r13+0x20]
0bcbeccb jnz 0x0bcb0024 ->5
0bcbecd1 cmp dword [r13+0x1c], -0x0c
0bcbecd6 jnz 0x0bcb0024 ->5
0bcbecdc mov r13d, [r13+0x18]
0bcbece0 cmp dword [r13+0x1c], +0x3f
0bcbece5 jnz 0x0bcb0024 ->5
0bcbeceb mov r13d, [r13+0x14]
0bcbecef mov rsi, 0xfffffffb41939db0
0bcbecf9 cmp rsi, [r13+0x50]
0bcbecfd jnz 0x0bcb0024 ->5
0bcbed03 cmp dword [r13+0x4c], -0x09
0bcbed08 jnz 0x0bcb0024 ->5
0bcbed0e mov esi, [rax+0x1c]
0bcbed11 and esi, 0x798a813c
0bcbed17 lea esi, [rsi+rsi*2]
0bcbed1a shl esi, 0x03
0bcbed1d add esi, [rax+0x14]
0bcbed20 cmp dword [rsi+0xc], -0x05
0bcbed24 jnz 0x0bcbed33
0bcbed26 cmp dword [rsi+0x8], 0x41939fb0
0bcbed2d jz 0x0bcb0024 ->5
0bcbed33 mov esi, [rsi+0x10]
0bcbed36 test esi, esi
0bcbed38 jnz 0x0bcbed20
0bcbed3a mov rsi, 0xfffffffb41939fb0
0bcbed44 cmp rsi, [r13+0x5a8]
0bcbed4b jnz 0x0bcb0024 ->5
0bcbed51 cmp dword [r13+0x5a4], -0x09
0bcbed59 jnz 0x0bcb0024 ->5
0bcbed5f cmp dword [r13+0x5a0], 0x41939f18
0bcbed6a jnz 0x0bcb0024 ->5
0bcbed70 cmp dword [r13+0x48], 0x41939d88
0bcbed78 jnz 0x0bcb0024 ->5
0bcbed7e cmp dword [r15+0x18], +0x01
0bcbed83 jbe 0x0bcb0024 ->5
0bcbed89 mov r13d, [r15+0x8]
0bcbed8d cmp dword [r13+0xc], -0x05
0bcbed92 jnz 0x0bcb0024 ->5
0bcbed98 mov r13d, [r13+0x8]
0bcbed9c cmp r13d, 0x419398f8
0bcbeda3 jnz 0x0bcb0028 ->6
0bcbeda9 addsd xmm7, [0x403610a0]
0bcbedb2 movsd [rsp+0x38], xmm7
0bcbedb8 movsd [rdi], xmm7
0bcbedbc mov edi, 0x41937414
0bcbedc1 mov esi, [rdi+0x8]
0bcbedc4 mov [rdi], esi
0bcbedc6 mov esi, 0x4c
0bcbedcb call 0x00421b60 ->lj_buf_putchar
0bcbedd0 mov edi, eax
0bcbedd2 lea rsi, [rsp+0x38]
0bcbedd7 call 0x0040a3c0 ->lj_strfmt_putnum
0bcbeddc mov edi, eax
0bcbedde call 0x00421ff0 ->lj_buf_tostr
0bcbede3 mov [rsp+0x48], eax
0bcbede7 mov edi, [0x419374b0]
0bcbedee mov esi, 0x40372418
0bcbedf3 call 0x004223c0 ->lj_tab_dup
0bcbedf8 mov r12d, eax
0bcbedfb mov edi, [0x419374b0]
0bcbee02 xor esi, esi
0bcbee04 call 0x00422350 ->lj_tab_new1
0bcbee09 mov ecx, eax
0bcbee0b mov edi, [0x419374b0]
0bcbee12 mov esi, [rsp+0x2c]
0bcbee16 mov eax, [rsp+0x48]
0bcbee1a mov edx, [r12+0x14]
0bcbee1f mov dword [rdx+0x34], 0xfffffff4
0bcbee26 mov [rdx+0x30], ecx
0bcbee29 mov dword [rdx+0x4c], 0xfffffffb
0bcbee30 mov [rdx+0x48], eax
0bcbee33 cmp dword [rsi+0x1c], +0x01
0bcbee37 jnz 0x0bcb0030 ->8
0bcbee3d mov esi, [rsi+0x14]
0bcbee40 mov rdx, 0xfffffffb403716f0
0bcbee4a cmp rdx, [rsi+0x8]
0bcbee4e jnz 0x0bcb0030 ->8
0bcbee54 cmp dword [rsi+0x4], -0x0c
0bcbee58 jnz 0x0bcb0030 ->8
0bcbee5e mov esi, [rsi]
0bcbee60 mov [rsp+0x40], esi
0bcbee64 mov edx, [rsi+0x1c]
0bcbee67 and edx, [rax+0x8]
0bcbee6a lea edx, [rdx+rdx*2]
0bcbee6d shl edx, 0x03
0bcbee70 add edx, [rsi+0x14]
0bcbee73 cmp dword [rdx+0xc], -0x05
0bcbee77 jnz 0x0bcbee82
0bcbee79 cmp eax, [rdx+0x8]
0bcbee7c jz 0x0bcb0030 ->8
0bcbee82 mov edx, [rdx+0x10]
0bcbee85 test edx, edx
0bcbee87 jnz 0x0bcbee73
0bcbee89 cmp dword [rsi+0x10], +0x00
0bcbee8d jnz 0x0bcb0030 ->8
0bcbee93 mov edx, 0x41937448
0bcbee98 mov dword [rdx+0x4], 0xfffffffb
0bcbee9f mov [rdx], eax
0bcbeea1 call 0x00422cf0 ->lj_tab_newkey
0bcbeea6 mov edi, [rsp+0x44]
0bcbeeaa mov esi, [rsp+0x40]
0bcbeeae movsd xmm7, [rsp+0x38]
0bcbeeb4 mov dword [rax+0x4], 0xfffffff4
0bcbeebb mov [rax], r12d
0bcbeebe test byte [rsi+0x4], 0x4
0bcbeec2 jz 0x0bcbeed9
0bcbeec4 and byte [rsi+0x4], 0xfb
0bcbeec8 mov edx, [0x419373f4]
0bcbeecf mov [0x419373f4], esi
0bcbeed6 mov [rsi+0xc], edx
0bcbeed9 mov byte [rsi+0x6], 0x0
0bcbeedd addsd xmm7, [0x403610a0]
0bcbeee6 movsd [rsp+0x30], xmm7
0bcbeeec movsd [rdi], xmm7
0bcbeef0 mov edi, 0x41937414
0bcbeef5 mov esi, [rdi+0x8]
0bcbeef8 mov [rdi], esi
0bcbeefa mov esi, 0x4c
0bcbeeff call 0x00421b60 ->lj_buf_putchar
0bcbef04 mov edi, eax
0bcbef06 lea rsi, [rsp+0x30]
0bcbef0b call 0x0040a3c0 ->lj_strfmt_putnum
0bcbef10 mov edi, eax
0bcbef12 call 0x00421ff0 ->lj_buf_tostr
0bcbef17 mov [rsp+0x18], eax
0bcbef1b mov edi, [0x419374b0]
0bcbef22 mov esi, 0x40372418
0bcbef27 call 0x004223c0 ->lj_tab_dup
0bcbef2c mov [rsp+0x14], eax
0bcbef30 mov edi, [0x419374b0]
0bcbef37 xor esi, esi
0bcbef39 call 0x00422350 ->lj_tab_new1
0bcbef3e mov ecx, eax
0bcbef40 mov edi, [rsp+0x14]
0bcbef44 mov esi, [rsp+0x2c]
0bcbef48 mov eax, [rsp+0x18]
0bcbef4c mov edx, [rdi+0x14]
0bcbef4f mov edi, [0x419374b0]
0bcbef56 mov dword [rdx+0x34], 0xfffffff4
0bcbef5d mov [rdx+0x30], ecx
0bcbef60 mov dword [rdx+0x4c], 0xfffffffb
0bcbef67 mov [rdx+0x48], eax
0bcbef6a cmp dword [rsi+0x1c], +0x01
0bcbef6e jnz 0x0bcb0038 ->10
0bcbef74 mov esi, [rsi+0x14]
0bcbef77 mov rdx, 0xfffffffb403716f0
0bcbef81 cmp rdx, [rsi+0x8]
0bcbef85 jnz 0x0bcb0038 ->10
0bcbef8b cmp dword [rsi+0x4], -0x0c
0bcbef8f jnz 0x0bcb0038 ->10
0bcbef95 mov esi, [rsi]
0bcbef97 mov [rsp+0x24], esi
0bcbef9b mov edx, [rsi+0x1c]
0bcbef9e and edx, [rax+0x8]
0bcbefa1 lea edx, [rdx+rdx*2]
0bcbefa4 shl edx, 0x03
0bcbefa7 add edx, [rsi+0x14]
0bcbefaa cmp dword [rdx+0xc], -0x05
0bcbefae jnz 0x0bcbefb9
0bcbefb0 cmp eax, [rdx+0x8]
0bcbefb3 jz 0x0bcb0038 ->10
0bcbefb9 mov edx, [rdx+0x10]
0bcbefbc test edx, edx
0bcbefbe jnz 0x0bcbefaa
0bcbefc0 cmp dword [rsi+0x10], +0x00
0bcbefc4 jnz 0x0bcb0038 ->10
0bcbefca mov edx, 0x41937448
0bcbefcf mov dword [rdx+0x4], 0xfffffffb
0bcbefd6 mov [rdx], eax
0bcbefd8 call 0x00422cf0 ->lj_tab_newkey
0bcbefdd mov ecx, eax
0bcbefdf mov edi, [rsp+0x14]
0bcbefe3 mov esi, [rsp+0x28]
0bcbefe7 mov edx, [rsp+0x24]
0bcbefeb mov eax, [rsp+0x20]
0bcbefef mov dword [rcx+0x4], 0xfffffff4
0bcbeff6 mov [rcx], edi
0bcbeff8 mov edi, [0x419374b0]
0bcbefff test byte [rdx+0x4], 0x4
0bcbf003 jz 0x0bcbf01a
0bcbf005 and byte [rdx+0x4], 0xfb
0bcbf009 mov ecx, [0x419373f4]
0bcbf010 mov [0x419373f4], edx
0bcbf017 mov [rdx+0xc], ecx
0bcbf01a mov byte [rdx+0x6], 0x0
0bcbf01e cmp dword [r15+0x18], +0x02
0bcbf023 jbe 0x0bcb003c ->11
0bcbf029 mov edx, [r15+0x8]
0bcbf02d cmp dword [rdx+0x14], -0x0c
0bcbf031 jnz 0x0bcb003c ->11
0bcbf037 mov ecx, [rdx+0x10]
0bcbf03a mov [rsp+0x10], ecx
0bcbf03e mov edx, [rax+0x1c]
0bcbf041 and edx, 0xce2b6183
0bcbf047 lea edx, [rdx+rdx*2]
0bcbf04a shl edx, 0x03
0bcbf04d add edx, [rax+0x14]
0bcbf050 cmp dword [rdx+0xc], -0x05
0bcbf054 jnz 0x0bcbf063
0bcbf056 cmp dword [rdx+0x8], 0x41939db0
0bcbf05d jz 0x0bcb003c ->11
0bcbf063 mov edx, [rdx+0x10]
0bcbf066 test edx, edx
0bcbf068 jnz 0x0bcbf050
0bcbf06a cmp dword [rsi+0x1c], +0x01
0bcbf06e jnz 0x0bcb003c ->11
0bcbf074 mov esi, [rsi+0x14]
0bcbf077 mov rdx, 0xfffffffb419394c8
0bcbf081 cmp rdx, [rsi+0x20]
0bcbf085 jnz 0x0bcb003c ->11
0bcbf08b cmp dword [rsi+0x1c], -0x0c
0bcbf08f jnz 0x0bcb003c ->11
0bcbf095 mov esi, [rsi+0x18]
0bcbf098 cmp dword [rsi+0x1c], +0x3f
0bcbf09c jnz 0x0bcb003c ->11
0bcbf0a2 mov esi, [rsi+0x14]
0bcbf0a5 mov rdx, 0xfffffffb41939db0
0bcbf0af cmp rdx, [rsi+0x50]
0bcbf0b3 jnz 0x0bcb003c ->11
0bcbf0b9 cmp dword [rsi+0x4c], -0x09
0bcbf0bd jnz 0x0bcb003c ->11
0bcbf0c3 mov edx, [rax+0x1c]
0bcbf0c6 and edx, 0x798a813c
0bcbf0cc lea edx, [rdx+rdx*2]
0bcbf0cf shl edx, 0x03
0bcbf0d2 add edx, [rax+0x14]
0bcbf0d5 cmp dword [rdx+0xc], -0x05
0bcbf0d9 jnz 0x0bcbf0e8
0bcbf0db cmp dword [rdx+0x8], 0x41939fb0
0bcbf0e2 jz 0x0bcb003c ->11
0bcbf0e8 mov edx, [rdx+0x10]
0bcbf0eb test edx, edx
0bcbf0ed jnz 0x0bcbf0d5
0bcbf0ef mov rdx, 0xfffffffb41939fb0
0bcbf0f9 cmp rdx, [rsi+0x5a8]
0bcbf100 jnz 0x0bcb003c ->11
0bcbf106 cmp dword [rsi+0x5a4], -0x09
0bcbf10d jnz 0x0bcb003c ->11
0bcbf113 cmp dword [rsi+0x5a0], 0x41939f18
0bcbf11d jnz 0x0bcb003c ->11
0bcbf123 cmp dword [rsi+0x48], 0x41939d88
0bcbf12a jnz 0x0bcb003c ->11
0bcbf130 cmp dword [rcx+0x18], +0x01
0bcbf134 jbe 0x0bcb003c ->11
0bcbf13a mov esi, [rcx+0x8]
0bcbf13d cmp dword [rsi+0xc], -0x05
0bcbf141 jnz 0x0bcb003c ->11
0bcbf147 mov ecx, [rsi+0x8]
0bcbf14a mov [rsp+0x1c], ecx
0bcbf14e cmp ecx, 0x419398f8
0bcbf154 jz 0x0bcb0040 ->12
0bcbf15a cmp ecx, 0x40367440
0bcbf160 jz 0x0bcb0044 ->13
0bcbf166 cmp ecx, 0x41939a18
0bcbf16c jz 0x0bcb0048 ->14
0bcbf172 cmp ecx, 0x41939870
0bcbf178 jz 0x0bcb004c ->15
0bcbf17e cmp ecx, 0x4193ccb0
0bcbf184 jz 0x0bcb0050 ->16
0bcbf18a cmp ecx, 0x4193f138
0bcbf190 jz 0x0bcb0054 ->17
0bcbf196 cmp dword [0x41952d34], -0x0c
0bcbf19e jnz 0x0bcb0058 ->18
0bcbf1a4 mov edx, [0x41952d30]
0bcbf1ab mov esi, [rdx+0x1c]
0bcbf1ae and esi, [rcx+0x8]
0bcbf1b1 lea esi, [rsi+rsi*2]
0bcbf1b4 shl esi, 0x03
0bcbf1b7 add esi, [rdx+0x14]
0bcbf1ba cmp dword [rsi+0xc], -0x05
0bcbf1be jnz 0x0bcbf1c5
0bcbf1c0 cmp ecx, [rsi+0x8]
0bcbf1c3 jz 0x0bcbf1d1
0bcbf1c5 mov esi, [rsi+0x10]
0bcbf1c8 test esi, esi
0bcbf1ca jnz 0x0bcbf1ba
0bcbf1cc mov esi, 0x41937458
0bcbf1d1 cmp dword [rsi+0x4], -0x03
0bcbf1d5 jnz 0x0bcb0058 ->18
0bcbf1db mov esi, 0x40366b30
0bcbf1e0 call 0x004223c0 ->lj_tab_dup
0bcbf1e5 mov edx, eax
0bcbf1e7 mov [rsp+0xc], edx
0bcbf1eb mov edi, [0x419374b0]
0bcbf1f2 mov ecx, [rsp+0x10]
0bcbf1f6 mov eax, [rsp+0x18]
0bcbf1fa mov edx, [rdx+0x8]
0bcbf1fd mov dword [rdx+0x14], 0xfffffff4
0bcbf204 mov [rdx+0x10], ecx
0bcbf207 cmp dword [r12+0x1c], +0x03
0bcbf20d jnz 0x0bcb005c ->19
0bcbf213 mov ecx, [r12+0x14]
0bcbf218 mov r11, 0xfffffffb40371790
0bcbf222 cmp r11, [rcx+0x50]
0bcbf226 jnz 0x0bcb005c ->19
0bcbf22c cmp dword [rcx+0x4c], -0x05
0bcbf230 jnz 0x0bcb005c ->19
0bcbf236 mov ecx, [rcx+0x48]
0bcbf239 mov dword [rdx+0x1c], 0xfffffffb
0bcbf240 mov [rdx+0x18], ecx
0bcbf243 mov dword [rdx+0x24], 0xfffffffb
0bcbf24a mov [rdx+0x20], eax
0bcbf24d mov edx, [r14+0x1c]
0bcbf251 and edx, 0x2a54dc55
0bcbf257 lea edx, [rdx+rdx*2]
0bcbf25a shl edx, 0x03
0bcbf25d add edx, [r14+0x14]
0bcbf261 cmp dword [rdx+0xc], -0x05
0bcbf265 jnz 0x0bcbf274
0bcbf267 cmp dword [rdx+0x8], 0x40371ef8
0bcbf26e jz 0x0bcb0060 ->20
0bcbf274 mov edx, [rdx+0x10]
0bcbf277 test edx, edx
0bcbf279 jnz 0x0bcbf261
0bcbf27b cmp dword [r14+0x10], +0x00
0bcbf280 jnz 0x0bcb0060 ->20
0bcbf286 mov edx, 0x41937448
0bcbf28b mov dword [rdx+0x4], 0xfffffffb
0bcbf292 mov dword [rdx], 0x40371ef8
0bcbf298 mov esi, r14d
0bcbf29b call 0x00422cf0 ->lj_tab_newkey
0bcbf2a0 mov r11d, eax
0bcbf2a3 mov edi, [rsp+0x14]
0bcbf2a7 mov esi, [rsp+0x10]
0bcbf2ab mov edx, [0x419374b4]
0bcbf2b2 mov ecx, [rsp+0xc]
0bcbf2b6 mov eax, [rsp+0x8]
0bcbf2ba mov dword [r11+0x4], 0xfffffff4
0bcbf2c2 mov [r11], ecx
0bcbf2c5 test byte [r14+0x4], 0x4
0bcbf2ca jz 0x0bcbf2e4
0bcbf2cc and byte [r14+0x4], 0xfb
0bcbf2d1 mov ecx, [0x419373f4]
0bcbf2d8 mov [0x419373f4], r14d
0bcbf2e0 mov [r14+0xc], ecx
0bcbf2e4 mov dword [rdx+0x84], 0xfffffff4
0bcbf2ee mov [rdx+0x80], esi
0bcbf2f4 mov dword [rdx+0x7c], 0x40372e40
0bcbf2fb mov dword [rdx+0x78], 0x403641d8
0bcbf302 mov dword [rdx+0x74], 0xfffffff4
0bcbf309 mov [rdx+0x70], edi
0bcbf30c mov dword [rdx+0x6c], 0xfffffff4
0bcbf313 mov [rdx+0x68], r12d
0bcbf317 mov dword [rdx+0x64], 0xfffffffb
0bcbf31e mov [rdx+0x60], r13d
0bcbf322 mov dword [rdx+0x5c], 0xfffffff4
0bcbf329 mov [rdx+0x58], ebp
0bcbf32c mov dword [rdx+0x54], 0xfffffff4
0bcbf333 mov [rdx+0x50], eax
0bcbf336 mov dword [rdx+0x4c], 0xfffffff4
0bcbf33d mov [rdx+0x48], r14d
0bcbf341 mov dword [rdx+0x44], 0xfffffff4
0bcbf348 mov [rdx+0x40], r15d
0bcbf34c mov dword [rdx+0x3c], 0x40372e40
0bcbf353 mov dword [rdx+0x38], 0x403641d8
0bcbf35a mov dword [rdx+0x34], 0xfffffff4
0bcbf361 mov [rdx+0x30], ebp
0bcbf364 mov dword [rdx+0x2c], 0xfffffff4
0bcbf36b mov [rdx+0x28], eax
0bcbf36e mov dword [rdx+0x24], 0xfffffffb
0bcbf375 mov [rdx+0x20], ebx
0bcbf378 mov dword [rdx-0x8], 0x403641d8
0bcbf37f add edx, 0x80
0bcbf385 mov [0x419374b4], edx
0bcbf38c add rsp, +0x60
0bcbf390 jmp 0x0bcbf398
---- TRACE 5 stop -> 4
---- TRACE 4 exit 1
---- TRACE 2 exit 2
---- TRACE 5 exit 12
---- TRACE 2 exit 8
---- TRACE 4 exit 1
---- TRACE 2 exit 3
---- TRACE 3 exit 0
---- TRACE 4 exit 3
---- TRACE 2 exit 8
---- TRACE 4 exit 1
---- TRACE 5 exit 6
---- TRACE 4 exit 1
---- TRACE 2 exit 8
---- TRACE 4 exit 6
---- TRACE 4 exit 1
---- TRACE 4 exit 7
---- TRACE 3 exit 0
---- TRACE 4 exit 1
---- TRACE 4 exit 1
---- TRACE 4 exit 1
---- TRACE 2 exit 8
---- TRACE 4 exit 7
---- TRACE 3 exit 0
---- TRACE 4 exit 1
---- TRACE 6 start 4/1 ssa.lua:79
0094 RET0 0 1
0036 JMP 5 => 0094
0094 JLOOP 1 4
---- TRACE 6 IR
.... SNAP #0 [ ---- ]
.... SNAP #1 [ ---- ]
0002 > p32 RETF proto: 0x40372da0 [0x40372e70]
.... SNAP #2 [ ---- ---- ]
---- TRACE 6 mcode 50
0bcbe8e7 mov dword [0x41937410], 0x6
0bcbe8f2 mov edx, [0x419374b4]
0bcbe8f9 cmp dword [rdx-0x4], 0x40372e70
0bcbe900 jnz 0x0bcb0014 ->1
0bcbe906 add edx, -0x40
0bcbe909 mov [0x419374b4], edx
0bcbe910 add rsp, +0x10
0bcbe914 jmp 0x0bcbf398
---- TRACE 6 stop -> 4
---- TRACE 6 exit 1
---- TRACE 5 exit 6
---- TRACE 6 exit 1
---- TRACE 2 exit 8
---- TRACE 4 exit 7
---- TRACE 3 exit 0
---- TRACE 4 exit 7
---- TRACE 3 exit 0
---- TRACE 6 exit 1
---- TRACE 4 exit 7
---- TRACE 3 exit 0
---- TRACE 6 exit 1
---- TRACE 5 exit 6
---- TRACE 6 exit 1
---- TRACE 2 exit 2
---- TRACE 5 exit 20
---- TRACE 6 exit 1
---- TRACE 2 exit 3
---- TRACE 3 exit 0
---- TRACE 4 exit 3
---- TRACE 2 exit 8
---- TRACE 6 exit 1
---- TRACE 2 exit 3
---- TRACE 3 exit 0
---- TRACE 4 exit 6
---- TRACE 6 exit 1
---- TRACE 5 exit 6
---- TRACE 7 start ssa.lua:49
0001 TDUP 4 1
0002 TSETB 1 4 2
0003 TGETS 5 2 2 ; "label"
0004 TSETB 5 4 3
0005 TGETS 5 3 2 ; "label"
0006 TSETB 5 4 4
0007 TSETS 4 0 0 ; "control"
0008 RET0 0 1
---- TRACE 7 IR
.... SNAP #0 [ ---- ---- ---- ---- ---- ]
0001 rax > tab TDUP {0x40366b30}
0002 rbp > tab SLOAD #2 T
0003 rbx p32 FLOAD 0001 tab.array
0004 p32 AREF 0003 +2 
0005 tab ASTORE 0004 0002
.... SNAP #1 [ ---- ---- ---- ---- ---- 0001 ]
0006 rbp > tab SLOAD #3 T
0007 int FLOAD 0006 tab.hmask
0008 > int EQ 0007 +3 
0009 rbp p32 FLOAD 0006 tab.node
0010 > p32 HREFK 0009 "label" @3
0011 rbp > str HLOAD 0010
0012 p32 AREF 0003 +3 
0013 str ASTORE 0012 0011
.... SNAP #2 [ ---- ---- ---- ---- ---- 0001 ---- ]
0014 rbp > tab SLOAD #4 T
0015 int FLOAD 0014 tab.hmask
0016 > int EQ 0015 +3 
0017 rbp p32 FLOAD 0014 tab.node
0018 > p32 HREFK 0017 "label" @3
0019 rbp > str HLOAD 0018
0020 p32 AREF 0003 +4 
0021 str ASTORE 0020 0019
.... SNAP #3 [ ---- ---- ---- ---- ---- 0001 ---- ]
0022 rbp > tab SLOAD #1 T
0023 int FLOAD 0022 tab.hmask
0024 > int EQ 0023 +3 
0025 rbx p32 FLOAD 0022 tab.node
0026 > p32 HREFK 0025 "control" @1
0027 tab FLOAD 0022 tab.meta
0028 > tab EQ 0027 [NULL]
0029 tab HSTORE 0026 0001
0030 nil TBAR 0022
.... SNAP #4 [ ---- ]
---- TRACE 7 mcode 348
0bcbe784 mov dword [0x41937410], 0x7
0bcbe78f mov edi, [0x419373d8]
0bcbe796 cmp edi, [0x419373dc]
0bcbe79d jb 0x0bcbe7b6
0bcbe79f mov esi, 0x1
0bcbe7a4 mov edi, 0x419373b8
0bcbe7a9 call 0x00421730 ->lj_gc_step_jit
0bcbe7ae test eax, eax
0bcbe7b0 jnz 0x0bcb0010 ->0
0bcbe7b6 mov edi, [0x419374b0]
0bcbe7bd mov esi, 0x40366b30
0bcbe7c2 call 0x004223c0 ->lj_tab_dup
0bcbe7c7 mov edx, [0x419374b4]
0bcbe7ce cmp dword [rdx+0xc], -0x0c
0bcbe7d2 jnz 0x0bcb0010 ->0
0bcbe7d8 mov ebp, [rdx+0x8]
0bcbe7db mov ebx, [rax+0x8]
0bcbe7de mov dword [rbx+0x14], 0xfffffff4
0bcbe7e5 mov [rbx+0x10], ebp
0bcbe7e8 cmp dword [rdx+0x14], -0x0c
0bcbe7ec jnz 0x0bcb0014 ->1
0bcbe7f2 mov ebp, [rdx+0x10]
0bcbe7f5 cmp dword [rbp+0x1c], +0x03
0bcbe7f9 jnz 0x0bcb0014 ->1
0bcbe7ff mov ebp, [rbp+0x14]
0bcbe802 mov rdi, 0xfffffffb40371790
0bcbe80c cmp rdi, [rbp+0x50]
0bcbe810 jnz 0x0bcb0014 ->1
0bcbe816 cmp dword [rbp+0x4c], -0x05
0bcbe81a jnz 0x0bcb0014 ->1
0bcbe820 mov ebp, [rbp+0x48]
0bcbe823 mov dword [rbx+0x1c], 0xfffffffb
0bcbe82a mov [rbx+0x18], ebp
0bcbe82d cmp dword [rdx+0x1c], -0x0c
0bcbe831 jnz 0x0bcb0018 ->2
0bcbe837 mov ebp, [rdx+0x18]
0bcbe83a cmp dword [rbp+0x1c], +0x03
0bcbe83e jnz 0x0bcb0018 ->2
0bcbe844 mov ebp, [rbp+0x14]
0bcbe847 mov rdi, 0xfffffffb40371790
0bcbe851 cmp rdi, [rbp+0x50]
0bcbe855 jnz 0x0bcb0018 ->2
0bcbe85b cmp dword [rbp+0x4c], -0x05
0bcbe85f jnz 0x0bcb0018 ->2
0bcbe865 mov ebp, [rbp+0x48]
0bcbe868 mov dword [rbx+0x24], 0xfffffffb
0bcbe86f mov [rbx+0x20], ebp
0bcbe872 cmp dword [rdx+0x4], -0x0c
0bcbe876 jnz 0x0bcb001c ->3
0bcbe87c mov ebp, [rdx]
0bcbe87e cmp dword [rbp+0x1c], +0x03
0bcbe882 jnz 0x0bcb001c ->3
0bcbe888 mov ebx, [rbp+0x14]
0bcbe88b mov rdi, 0xfffffffb40371ef8
0bcbe895 cmp rdi, [rbx+0x20]
0bcbe899 jnz 0x0bcb001c ->3
0bcbe89f cmp dword [rbp+0x10], +0x00
0bcbe8a3 jnz 0x0bcb001c ->3
0bcbe8a9 mov dword [rbx+0x1c], 0xfffffff4
0bcbe8b0 mov [rbx+0x18], eax
0bcbe8b3 test byte [rbp+0x4], 0x4
0bcbe8b7 jz 0x0bcbe8ce
0bcbe8b9 and byte [rbp+0x4], 0xfb
0bcbe8bd mov edi, [0x419373f4]
0bcbe8c4 mov [0x419373f4], ebp
0bcbe8cb mov [rbp+0xc], edi
0bcbe8ce xor eax, eax
0bcbe8d0 mov ebx, 0x403728e8
0bcbe8d5 mov r14d, 0x41938008
0bcbe8db jmp 0x00420177
---- TRACE 7 stop -> return
---- TRACE 6 exit 1
---- TRACE 2 exit 2
---- TRACE 5 exit 6
---- TRACE 6 exit 1
---- TRACE 8 start 6/1 ssa.lua:79
0094 RET0 0 1
0024 UGET 7 1 ; compile_bool
0025 TGETB 8 0 3
0026 MOV 9 5
0027 MOV 10 2
0028 MOV 11 3
0029 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0039 . TGETB 5 0 2
0040 . TGETB 6 0 3
0041 . TGETB 7 0 4
0042 . GGET 8 2 ; "table"
0043 . TGETS 8 8 5 ; "insert"
0044 . TGETS 9 1 6 ; "bindings"
0045 . TDUP 10 7
0046 . TSETS 5 10 8 ; "name"
0047 . TSETS 6 10 9 ; "value"
0048 . CALL 8 1 3
0000 . . FUNCC ; table.insert
0049 . UGET 8 1 ; compile_bool
0050 . MOV 9 7
0051 . MOV 10 1
0052 . MOV 11 2
0053 . MOV 12 3
0054 . CALL 8 1 5
0000 . . JFUNCF 13 2 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0014 . . UGET 5 0 ; add_block
0015 . . CALL 5 2 1
0000 . . . JFUNCF 3 1 ; ssa.lua:39
0001 . . . UGET 0 0 ; label_counter
0002 . . . ADDVN 0 0 0 ; 1
0003 . . . USETV 0 0 ; label_counter
0004 . . . KSTR 0 0 ; "L"
0005 . . . UGET 1 0 ; label_counter
0006 . . . CAT 0 0 1
0007 . . . TDUP 1 1
0008 . . . TNEW 2 0
0009 . . . TSETS 2 1 2 ; "bindings"
0010 . . . TSETS 0 1 3 ; "label"
0011 . . . UGET 2 1 ; ssa
0012 . . . TGETS 2 2 4 ; "blocks"
0013 . . . TSETV 1 2 0
0014 . . . RET1 1 2
0016 . . UGET 6 0 ; add_block
0017 . . CALL 6 2 1
0000 . . . JFUNCF 3 1 ; ssa.lua:39
0001 . . . UGET 0 0 ; label_counter
0002 . . . ADDVN 0 0 0 ; 1
0003 . . . USETV 0 0 ; label_counter
0004 . . . KSTR 0 0 ; "L"
0005 . . . UGET 1 0 ; label_counter
0006 . . . CAT 0 0 1
0007 . . . TDUP 1 1
0008 . . . TNEW 2 0
0009 . . . TSETS 2 1 2 ; "bindings"
0010 . . . TSETS 0 1 3 ; "label"
0011 . . . UGET 2 1 ; ssa
0012 . . . TGETS 2 2 4 ; "blocks"
0013 . . . TSETV 1 2 0
0014 . . . RET1 1 2
0018 . . UGET 7 1 ; compile_bool
0019 . . TGETB 8 0 2
0020 . . MOV 9 1
0021 . . MOV 10 5
0022 . . MOV 11 6
0023 . . CALL 7 1 5
0000 . . . JFUNCF 13 2 ; ssa.lua:55
0001 . . . GGET 4 0 ; "assert"
0002 . . . GGET 5 1 ; "type"
0003 . . . MOV 6 0
0004 . . . CALL 5 2 2
0000 . . . . FUNCC ; type
0005 . . . ISEQS 5 2 ; "table"
0006 . . . JMP 5 => 0009
0009 . . . KPRI 5 2
0010 . . . CALL 4 1 2
0000 . . . . FUNCC ; assert
0011 . . . TGETB 4 0 1
0012 . . . ISNES 4 3 ; "if"
0013 . . . JMP 5 => 0037
0037 . . . ISNES 4 4 ; "let"
0038 . . . JMP 5 => 0056
0056 . . . ISNES 4 10 ; "true"
0057 . . . JMP 5 => 0063
0063 . . . ISNES 4 11 ; "false"
0064 . . . JMP 5 => 0070
0070 . . . ISNES 4 12 ; "match"
0071 . . . JMP 5 => 0077
0077 . . . ISNES 4 14 ; "fail"
0078 . . . JMP 5 => 0084
0084 . . . GGET 5 0 ; "assert"
0085 . . . UGET 6 4 ; relops
0086 . . . TGETV 6 6 4
0087 . . . CALL 5 1 2
0000 . . . . FUNCC ; assert
0088 . . . UGET 5 5 ; finish_if
0089 . . . MOV 6 1
0090 . . . MOV 7 0
0091 . . . MOV 8 2
0092 . . . MOV 9 3
0093 . . . CALL 5 1 5
0000 . . . . JFUNCF 6 7 ; ssa.lua:49
0001 . . . . TDUP 4 1
0002 . . . . TSETB 1 4 2
0003 . . . . TGETS 5 2 2 ; "label"
0004 . . . . TSETB 5 4 3
0005 . . . . TGETS 5 3 2 ; "label"
0006 . . . . TSETB 5 4 4
0007 . . . . TSETS 4 0 0 ; "control"
0008 . . . . RET0 0 1
0094 . . . JLOOP 1 4
---- TRACE 8 IR
.... SNAP #0 [ ---- ]
.... SNAP #1 [ ---- ]
0002 > p32 RETF proto: 0x40372da0 [0x40372e40]
.... SNAP #2 [ ---- ---- ---- ---- ---- ---- ---- ---- ]
0003 fun SLOAD #0 R
0004 > fun EQ 0003 ssa.lua:55
0005 rbp > tab SLOAD #1 T
0006 int FLOAD 0005 tab.asize
0007 > int ABC 0006 +3 
0008 rbp p32 FLOAD 0005 tab.array
0009 p32 AREF 0008 +3 
0010 rbp > tab ALOAD 0009
0011 rbx > tab SLOAD #6 T
0012 r15 > tab SLOAD #3 T
0013 r14 > tab SLOAD #4 T
0014 [20] tab FLOAD ssa.lua:55 func.env
0015 rsi p32 HREF 0014 "assert"
0016 > p32 EQ 0015 [0x41937458]
0017 [28] tab FLOAD 0014 tab.meta
0018 > tab NE 0017 [NULL]
0019 int FLOAD 0017 tab.hmask
0020 > int EQ 0019 +1 
0021 r13 p32 FLOAD 0017 tab.node
0022 > p32 HREFK 0021 "__index" @1
0023 r13 > tab HLOAD 0022
0024 int FLOAD 0023 tab.hmask
0025 > int EQ 0024 +63 
0026 rsi p32 FLOAD 0023 tab.node
0027 > p32 HREFK 0026 "assert" @3
0028 > fun HLOAD 0027
0029 rdx p32 HREF 0014 "type"
0030 > p32 EQ 0029 [0x41937458]
0031 > p32 HREFK 0026 "type" @60
0032 > fun HLOAD 0031
0033 > fun EQ 0032 type
0034 > fun EQ 0028 assert
0035 int FLOAD 0010 tab.asize
0036 > int ABC 0035 +4 
0037 r12 p32 FLOAD 0010 tab.array
0038 p32 AREF 0037 +1 
0039 r13 > str ALOAD 0038
.... SNAP #3 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0040 > str NE 0039 "if"
.... SNAP #4 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0041 > str EQ 0039 "let"
.... SNAP #5 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0042 p32 AREF 0037 +2 
0043 [60] > str ALOAD 0042
0044 p32 AREF 0037 +3 
0045 [64] > tab ALOAD 0044
0046 p32 AREF 0037 +4 
0047 r12 > tab ALOAD 0046
0048 rdx p32 HREF 0014 "table"
0049 > p32 EQ 0048 [0x41937458]
0050 > p32 HREFK 0026 "table" @47
0051 rsi > tab HLOAD 0050
0052 int FLOAD 0051 tab.hmask
0053 > int EQ 0052 +7 
0054 rsi p32 FLOAD 0051 tab.node
0055 > p32 HREFK 0054 "insert" @7
0056 [54] > fun HLOAD 0055
0057 int FLOAD 0011 tab.hmask
0058 > int EQ 0057 +3 
0059 rsi p32 FLOAD 0011 tab.node
0060 > p32 HREFK 0059 "bindings" @2
0061 [50] > tab HLOAD 0060
0062 [4c] > tab TDUP {0x419493c8}
0063 rax p32 FLOAD 0062 tab.node
0064 p32 HREFK 0063 "name" @0
0065 str HSTORE 0064 0043
0066 p32 HREFK 0063 "value" @1
0067 tab HSTORE 0066 0045
.... SNAP #6 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 0056 0061 0062 ]
0068 > fun EQ 0056 table.insert
0069 rax int CALLL lj_tab_len (0061)
0070 rax int ADD 0069 +1 
0071 int FLOAD 0061 tab.asize
0072 > int ULE 0071 0070
0073 int FLOAD 0061 tab.hmask
0074 > int EQ 0073 +0 
0075 [58] num CONV 0070 num.int
0076 rcx p32 NEWREF 0061 0075
0077 tab HSTORE 0076 0062
0078 nil TBAR 0061
.... SNAP #7 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ]
0079 rdi p32 HREF 0014 "assert"
0080 > p32 EQ 0079 [0x41937458]
0081 int FLOAD 0017 tab.hmask
0082 > int EQ 0081 +1 
0083 rdi p32 FLOAD 0017 tab.node
0084 > p32 HREFK 0083 "__index" @1
0085 rdi > tab HLOAD 0084
0086 int FLOAD 0085 tab.hmask
0087 > int EQ 0086 +63 
0088 rdi p32 FLOAD 0085 tab.node
0089 > p32 HREFK 0088 "assert" @3
0090 > fun HLOAD 0089
0091 rsi p32 HREF 0014 "type"
0092 > p32 EQ 0091 [0x41937458]
0093 > p32 HREFK 0088 "type" @60
0094 > fun HLOAD 0093
0095 > fun EQ 0094 type
0096 > fun EQ 0090 assert
0097 int FLOAD 0047 tab.asize
0098 > int ABC 0097 +1 
0099 rdi p32 FLOAD 0047 tab.array
0100 p32 AREF 0099 +1 
0101 [18] > str ALOAD 0100
.... SNAP #8 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ssa.lua:55|0047 0011 0012 0013 0101 ]
0102 > str EQ 0101 "if"
.... SNAP #9 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ssa.lua:55|0047 0011 0012 0013 0101 ]
0103 [44] > p32 UREFO ssa.lua:39 #0
0104 xmm7 > num ULOAD 0103
0105 [38] num ADD 0104 +1 
0106 num USTORE 0103 0105
.... SNAP #10 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ssa.lua:55|0047 0011 0012 0013 0101 ssa.lua:39|---- ]
0107 str TOSTR 0105 NUM
0108 rdi p32 BUFHDR [0x41937414] RESET
0109 rdi p32 BUFPUT 0108 "L" 
0110 rdi p32 BUFPUT 0109 0107
0111 [48] str BUFSTR 0110 0108
0112 [c] > tab TDUP {0x40372418}
0113 rdx > tab TNEW #0 #0
0114 rsi p32 FLOAD 0112 tab.node
0115 p32 HREFK 0114 "bindings" @2
0116 tab HSTORE 0115 0113
0117 p32 HREFK 0114 "label" @3
0118 str HSTORE 0117 0111
.... SNAP #11 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ssa.lua:55|0047 0011 0012 0013 0101 ssa.lua:39|0111 0112 ---- ]
0119 rsi > p32 UREFO ssa.lua:39 #1
0120 [2c] > tab ULOAD 0119
0121 int FLOAD 0120 tab.hmask
0122 > int EQ 0121 +1 
0123 rsi p32 FLOAD 0120 tab.node
0124 > p32 HREFK 0123 "blocks" @0
0125 [40] > tab HLOAD 0124
0126 rdx p32 HREF 0125 0111
0127 > p32 EQ 0126 [0x41937458]
0128 tab FLOAD 0125 tab.meta
0129 > tab EQ 0128 [NULL]
0130 rdx p32 NEWREF 0125 0111
0131 tab HSTORE 0130 0112
0132 nil TBAR 0125
0133 p32 FREF 0125 tab.nomm
0134 u8  FSTORE 0133 +0 
0135 [30] num ADD 0105 +1 
0136 num USTORE 0103 0135
.... SNAP #12 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ssa.lua:55|0047 0011 0012 0013 0101 0112 ssa.lua:39|---- ]
0137 str TOSTR 0135 NUM
0138 rdi p32 BUFHDR [0x41937414] RESET
0139 rdi p32 BUFPUT 0138 "L" 
0140 rdi p32 BUFPUT 0139 0137
0141 [1c] str BUFSTR 0140 0138
0142 [14] > tab TDUP {0x40372418}
0143 rdx > tab TNEW #0 #0
0144 rax p32 FLOAD 0142 tab.node
0145 p32 HREFK 0144 "bindings" @2
0146 tab HSTORE 0145 0143
0147 p32 HREFK 0144 "label" @3
0148 str HSTORE 0147 0141
.... SNAP #13 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ssa.lua:55|0047 0011 0012 0013 0101 0112 ssa.lua:39|0141 0142 ---- ]
0149 int FLOAD 0120 tab.hmask
0150 > int EQ 0149 +1 
0151 rsi p32 FLOAD 0120 tab.node
0152 > p32 HREFK 0151 "blocks" @0
0153 [24] > tab HLOAD 0152
0154 rdx p32 HREF 0153 0141
0155 > p32 EQ 0154 [0x41937458]
0156 tab FLOAD 0153 tab.meta
0157 > tab EQ 0156 [NULL]
0158 r11 p32 NEWREF 0153 0141
0159 tab HSTORE 0158 0142
0160 nil TBAR 0153
0161 p32 FREF 0153 tab.nomm
0162 u8  FSTORE 0161 +0 
.... SNAP #14 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ssa.lua:55|0047 0011 0012 0013 0101 0112 ssa.lua:39|---- 0142 ---- ]
0163 int FLOAD 0047 tab.asize
0164 > int ABC 0163 +2 
0165 rdx p32 FLOAD 0047 tab.array
0166 p32 AREF 0165 +2 
0167 [10] > tab ALOAD 0166
0168 rdx p32 HREF 0014 "assert"
0169 > p32 EQ 0168 [0x41937458]
0170 int FLOAD 0017 tab.hmask
0171 > int EQ 0170 +1 
0172 rsi p32 FLOAD 0017 tab.node
0173 > p32 HREFK 0172 "__index" @1
0174 rsi > tab HLOAD 0173
0175 int FLOAD 0174 tab.hmask
0176 > int EQ 0175 +63 
0177 rsi p32 FLOAD 0174 tab.node
0178 > p32 HREFK 0177 "assert" @3
0179 > fun HLOAD 0178
0180 rdx p32 HREF 0014 "type"
0181 > p32 EQ 0180 [0x41937458]
0182 > p32 HREFK 0177 "type" @60
0183 > fun HLOAD 0182
0184 > fun EQ 0183 type
0185 > fun EQ 0179 assert
0186 int FLOAD 0167 tab.asize
0187 > int ABC 0186 +1 
0188 rsi p32 FLOAD 0167 tab.array
0189 p32 AREF 0188 +1 
0190 [8] > str ALOAD 0189
.... SNAP #15 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ssa.lua:55|0047 0011 0012 0013 0101 0112 0142 ssa.lua:55|0167 0011 0112 0142 0190 ]
0191 > str NE 0190 "if"
.... SNAP #16 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ssa.lua:55|0047 0011 0012 0013 0101 0112 0142 ssa.lua:55|0167 0011 0112 0142 0190 ]
0192 > str NE 0190 "let"
.... SNAP #17 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ssa.lua:55|0047 0011 0012 0013 0101 0112 0142 ssa.lua:55|0167 0011 0112 0142 0190 ]
0193 > str NE 0190 "true"
.... SNAP #18 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ssa.lua:55|0047 0011 0012 0013 0101 0112 0142 ssa.lua:55|0167 0011 0112 0142 0190 ]
0194 > str NE 0190 "false"
.... SNAP #19 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ssa.lua:55|0047 0011 0012 0013 0101 0112 0142 ssa.lua:55|0167 0011 0112 0142 0190 ]
0195 > str NE 0190 "match"
.... SNAP #20 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ssa.lua:55|0047 0011 0012 0013 0101 0112 0142 ssa.lua:55|0167 0011 0112 0142 0190 ]
0196 > str NE 0190 "fail"
.... SNAP #21 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ssa.lua:55|0047 0011 0012 0013 0101 0112 0142 ssa.lua:55|0167 0011 0112 0142 0190 ]
0197 > p32 UREFC ssa.lua:55 #4
0198 rdx > tab ULOAD 0197
0199 rsi p32 HREF 0198 0190
0200 > tru HLOAD 0199
0201 r11 > tab TDUP {0x40366b30}
0202 r8 p32 FLOAD 0201 tab.array
0203 p32 AREF 0202 +2 
0204 tab ASTORE 0203 0167
.... SNAP #22 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ssa.lua:55|0047 0011 0012 0013 0101 0112 0142 ssa.lua:55|0167 0011 0112 0142 0190 ssa.lua:49|0011 ---- 0112 0142 0201 ]
0205 int FLOAD 0112 tab.hmask
0206 > int EQ 0205 +3 
0207 r9 p32 FLOAD 0112 tab.node
0208 > p32 HREFK 0207 "label" @3
0209 r9 > str HLOAD 0208
0210 p32 AREF 0202 +3 
0211 str ASTORE 0210 0209
0212 p32 AREF 0202 +4 
0213 str ASTORE 0212 0141
.... SNAP #23 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ssa.lua:55|0047 0011 0012 0013 0101 0112 0142 ssa.lua:55|0167 0011 0112 0142 0190 ssa.lua:49|0011 ---- ---- ---- 0201 ---- ]
0214 int FLOAD 0011 tab.hmask
0215 > int EQ 0214 +3 
0216 r10 p32 FLOAD 0011 tab.node
0217 > p32 HREFK 0216 "control" @1
0218 tab FLOAD 0011 tab.meta
0219 > tab EQ 0218 [NULL]
0220 tab HSTORE 0217 0201
0221 nil TBAR 0011
.... SNAP #24 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ssa.lua:55|0047 0011 0012 0013 0101 0112 0142 ssa.lua:55|0167 ]
---- TRACE 8 mcode 2906
0bcbdc27 mov eax, [0x419374b0]
0bcbdc2e mov eax, [rax+0x20]
0bcbdc31 sub eax, [0x419374b4]
0bcbdc38 cmp eax, 0xf0
0bcbdc3e jb 0x0bcb0014 ->1
0bcbdc44 add rsp, -0x50
0bcbdc48 mov dword [0x41937410], 0x8
0bcbdc53 mov edi, [0x419373d8]
0bcbdc5a cmp edi, [0x419373dc]
0bcbdc61 jb 0x0bcbdc7a
0bcbdc63 mov esi, 0x8
0bcbdc68 mov edi, 0x419373b8
0bcbdc6d call 0x00421730 ->lj_gc_step_jit
0bcbdc72 test eax, eax
0bcbdc74 jnz 0x0bcb0010 ->0
0bcbdc7a mov edi, [0x419374b0]
0bcbdc81 mov edx, [0x419374b4]
0bcbdc88 cmp dword [rdx-0x4], 0x40372e40
0bcbdc8f jnz 0x0bcb0014 ->1
0bcbdc95 add edx, -0x40
0bcbdc98 mov [0x419374b4], edx
0bcbdc9f cmp dword [rdx-0x8], 0x403641d8
0bcbdca6 jnz 0x0bcb0018 ->2
0bcbdcac cmp dword [rdx+0x4], -0x0c
0bcbdcb0 jnz 0x0bcb0018 ->2
0bcbdcb6 mov ebp, [rdx]
0bcbdcb8 cmp dword [rbp+0x18], +0x03
0bcbdcbc jbe 0x0bcb0018 ->2
0bcbdcc2 mov ebp, [rbp+0x8]
0bcbdcc5 cmp dword [rbp+0x1c], -0x0c
0bcbdcc9 jnz 0x0bcb0018 ->2
0bcbdccf mov ebp, [rbp+0x18]
0bcbdcd2 cmp dword [rdx+0x2c], -0x0c
0bcbdcd6 jnz 0x0bcb0018 ->2
0bcbdcdc mov ebx, [rdx+0x28]
0bcbdcdf cmp dword [rdx+0x14], -0x0c
0bcbdce3 jnz 0x0bcb0018 ->2
0bcbdce9 mov r15d, [rdx+0x10]
0bcbdced cmp dword [rdx+0x1c], -0x0c
0bcbdcf1 jnz 0x0bcb0018 ->2
0bcbdcf7 mov r14d, [rdx+0x18]
0bcbdcfb mov eax, [0x403641e0]
0bcbdd02 mov [rsp+0x20], eax
0bcbdd06 mov esi, [rax+0x1c]
0bcbdd09 and esi, 0xce2b6183
0bcbdd0f lea esi, [rsi+rsi*2]
0bcbdd12 shl esi, 0x03
0bcbdd15 add esi, [rax+0x14]
0bcbdd18 cmp dword [rsi+0xc], -0x05
0bcbdd1c jnz 0x0bcbdd2b
0bcbdd1e cmp dword [rsi+0x8], 0x41939db0
0bcbdd25 jz 0x0bcb0018 ->2
0bcbdd2b mov esi, [rsi+0x10]
0bcbdd2e test esi, esi
0bcbdd30 jnz 0x0bcbdd18
0bcbdd32 mov esi, [rax+0x10]
0bcbdd35 mov [rsp+0x28], esi
0bcbdd39 test esi, esi
0bcbdd3b jz 0x0bcb0018 ->2
0bcbdd41 cmp dword [rsi+0x1c], +0x01
0bcbdd45 jnz 0x0bcb0018 ->2
0bcbdd4b mov r13d, [rsi+0x14]
0bcbdd4f mov rsi, 0xfffffffb419394c8
0bcbdd59 cmp rsi, [r13+0x20]
0bcbdd5d jnz 0x0bcb0018 ->2
0bcbdd63 cmp dword [r13+0x1c], -0x0c
0bcbdd68 jnz 0x0bcb0018 ->2
0bcbdd6e mov r13d, [r13+0x18]
0bcbdd72 cmp dword [r13+0x1c], +0x3f
0bcbdd77 jnz 0x0bcb0018 ->2
0bcbdd7d mov esi, [r13+0x14]
0bcbdd81 mov rdx, 0xfffffffb41939db0
0bcbdd8b cmp rdx, [rsi+0x50]
0bcbdd8f jnz 0x0bcb0018 ->2
0bcbdd95 cmp dword [rsi+0x4c], -0x09
0bcbdd99 jnz 0x0bcb0018 ->2
0bcbdd9f mov edx, [rax+0x1c]
0bcbdda2 and edx, 0x798a813c
0bcbdda8 lea edx, [rdx+rdx*2]
0bcbddab shl edx, 0x03
0bcbddae add edx, [rax+0x14]
0bcbddb1 cmp dword [rdx+0xc], -0x05
0bcbddb5 jnz 0x0bcbddc4
0bcbddb7 cmp dword [rdx+0x8], 0x41939fb0
0bcbddbe jz 0x0bcb0018 ->2
0bcbddc4 mov edx, [rdx+0x10]
0bcbddc7 test edx, edx
0bcbddc9 jnz 0x0bcbddb1
0bcbddcb mov rdx, 0xfffffffb41939fb0
0bcbddd5 cmp rdx, [rsi+0x5a8]
0bcbdddc jnz 0x0bcb0018 ->2
0bcbdde2 cmp dword [rsi+0x5a4], -0x09
0bcbdde9 jnz 0x0bcb0018 ->2
0bcbddef cmp dword [rsi+0x5a0], 0x41939f18
0bcbddf9 jnz 0x0bcb0018 ->2
0bcbddff cmp dword [rsi+0x48], 0x41939d88
0bcbde06 jnz 0x0bcb0018 ->2
0bcbde0c cmp dword [rbp+0x18], +0x04
0bcbde10 jbe 0x0bcb0018 ->2
0bcbde16 mov r12d, [rbp+0x8]
0bcbde1a cmp dword [r12+0xc], -0x05
0bcbde20 jnz 0x0bcb0018 ->2
0bcbde26 mov r13d, [r12+0x8]
0bcbde2b cmp r13d, 0x419398f8
0bcbde32 jz 0x0bcb001c ->3
0bcbde38 cmp r13d, 0x40367440
0bcbde3f jnz 0x0bcb0020 ->4
0bcbde45 cmp dword [r12+0x14], -0x05
0bcbde4b jnz 0x0bcb0024 ->5
0bcbde51 mov ecx, [r12+0x10]
0bcbde56 mov [rsp+0x60], ecx
0bcbde5a cmp dword [r12+0x1c], -0x0c
0bcbde60 jnz 0x0bcb0024 ->5
0bcbde66 mov edx, [r12+0x18]
0bcbde6b mov [rsp+0x64], edx
0bcbde6f cmp dword [r12+0x24], -0x0c
0bcbde75 jnz 0x0bcb0024 ->5
0bcbde7b mov r12d, [r12+0x20]
0bcbde80 mov edx, [rax+0x1c]
0bcbde83 and edx, 0x7230fd67
0bcbde89 lea edx, [rdx+rdx*2]
0bcbde8c shl edx, 0x03
0bcbde8f add edx, [rax+0x14]
0bcbde92 cmp dword [rdx+0xc], -0x05
0bcbde96 jnz 0x0bcbdea5
0bcbde98 cmp dword [rdx+0x8], 0x41939ed8
0bcbde9f jz 0x0bcb0024 ->5
0bcbdea5 mov edx, [rdx+0x10]
0bcbdea8 test edx, edx
0bcbdeaa jnz 0x0bcbde92
0bcbdeac mov rdx, 0xfffffffb41939ed8
0bcbdeb6 cmp rdx, [rsi+0x470]
0bcbdebd jnz 0x0bcb0024 ->5
0bcbdec3 cmp dword [rsi+0x46c], -0x0c
0bcbdeca jnz 0x0bcb0024 ->5
0bcbded0 mov esi, [rsi+0x468]
0bcbded6 cmp dword [rsi+0x1c], +0x07
0bcbdeda jnz 0x0bcb0024 ->5
0bcbdee0 mov esi, [rsi+0x14]
0bcbdee3 mov rdx, 0xfffffffb4193b6d0
0bcbdeed cmp rdx, [rsi+0xb0]
0bcbdef4 jnz 0x0bcb0024 ->5
0bcbdefa cmp dword [rsi+0xac], -0x09
0bcbdf01 jnz 0x0bcb0024 ->5
0bcbdf07 mov edx, [rsi+0xa8]
0bcbdf0d mov [rsp+0x54], edx
0bcbdf11 cmp dword [rbx+0x1c], +0x03
0bcbdf15 jnz 0x0bcb0024 ->5
0bcbdf1b mov esi, [rbx+0x14]
0bcbdf1e mov rdx, 0xfffffffb40371a28
0bcbdf28 cmp rdx, [rsi+0x38]
0bcbdf2c jnz 0x0bcb0024 ->5
0bcbdf32 cmp dword [rsi+0x34], -0x0c
0bcbdf36 jnz 0x0bcb0024 ->5
0bcbdf3c mov esi, [rsi+0x30]
0bcbdf3f mov [rsp+0x50], esi
0bcbdf43 mov esi, 0x419493c8
0bcbdf48 call 0x004223c0 ->lj_tab_dup
0bcbdf4d mov [rsp+0x4c], eax
0bcbdf51 mov edi, [rsp+0x50]
0bcbdf55 mov esi, [rsp+0x64]
0bcbdf59 mov edx, [rsp+0x54]
0bcbdf5d mov ecx, [rsp+0x60]
0bcbdf61 mov eax, [rax+0x14]
0bcbdf64 mov dword [rax+0x4], 0xfffffffb
0bcbdf6b mov [rax], ecx
0bcbdf6d mov dword [rax+0x1c], 0xfffffff4
0bcbdf74 mov [rax+0x18], esi
0bcbdf77 cmp edx, 0x4193b6a8
0bcbdf7d jnz 0x0bcb0028 ->6
0bcbdf83 call 0x00423150 ->lj_tab_len
0bcbdf88 mov edi, [0x419374b0]
0bcbdf8f mov esi, [rsp+0x50]
0bcbdf93 add eax, +0x01
0bcbdf96 cmp eax, [rsi+0x18]
0bcbdf99 jb 0x0bcb0028 ->6
0bcbdf9f cmp dword [rsi+0x1c], +0x00
0bcbdfa3 jnz 0x0bcb0028 ->6
0bcbdfa9 xorps xmm7, xmm7
0bcbdfac cvtsi2sd xmm7, eax
0bcbdfb0 movsd [rsp+0x58], xmm7
0bcbdfb6 lea rdx, [rsp+0x58]
0bcbdfbb call 0x00422cf0 ->lj_tab_newkey
0bcbdfc0 mov ecx, eax
0bcbdfc2 mov edi, [rsp+0x50]
0bcbdfc6 mov esi, [rsp+0x28]
0bcbdfca mov edx, [rsp+0x4c]
0bcbdfce mov eax, [rsp+0x20]
0bcbdfd2 mov dword [rcx+0x4], 0xfffffff4
0bcbdfd9 mov [rcx], edx
0bcbdfdb test byte [rdi+0x4], 0x4
0bcbdfdf jz 0x0bcbdff6
0bcbdfe1 and byte [rdi+0x4], 0xfb
0bcbdfe5 mov edx, [0x419373f4]
0bcbdfec mov [0x419373f4], edi
0bcbdff3 mov [rdi+0xc], edx
0bcbdff6 mov edi, [rax+0x1c]
0bcbdff9 and edi, 0xce2b6183
0bcbdfff lea edi, [rdi+rdi*2]
0bcbe002 shl edi, 0x03
0bcbe005 add edi, [rax+0x14]
0bcbe008 cmp dword [rdi+0xc], -0x05
0bcbe00c jnz 0x0bcbe01b
0bcbe00e cmp dword [rdi+0x8], 0x41939db0
0bcbe015 jz 0x0bcb002c ->7
0bcbe01b mov edi, [rdi+0x10]
0bcbe01e test edi, edi
0bcbe020 jnz 0x0bcbe008
0bcbe022 cmp dword [rsi+0x1c], +0x01
0bcbe026 jnz 0x0bcb002c ->7
0bcbe02c mov edi, [rsi+0x14]
0bcbe02f mov rsi, 0xfffffffb419394c8
0bcbe039 cmp rsi, [rdi+0x20]
0bcbe03d jnz 0x0bcb002c ->7
0bcbe043 cmp dword [rdi+0x1c], -0x0c
0bcbe047 jnz 0x0bcb002c ->7
0bcbe04d mov edi, [rdi+0x18]
0bcbe050 cmp dword [rdi+0x1c], +0x3f
0bcbe054 jnz 0x0bcb002c ->7
0bcbe05a mov edi, [rdi+0x14]
0bcbe05d mov rsi, 0xfffffffb41939db0
0bcbe067 cmp rsi, [rdi+0x50]
0bcbe06b jnz 0x0bcb002c ->7
0bcbe071 cmp dword [rdi+0x4c], -0x09
0bcbe075 jnz 0x0bcb002c ->7
0bcbe07b mov esi, [rax+0x1c]
0bcbe07e and esi, 0x798a813c
0bcbe084 lea esi, [rsi+rsi*2]
0bcbe087 shl esi, 0x03
0bcbe08a add esi, [rax+0x14]
0bcbe08d cmp dword [rsi+0xc], -0x05
0bcbe091 jnz 0x0bcbe0a0
0bcbe093 cmp dword [rsi+0x8], 0x41939fb0
0bcbe09a jz 0x0bcb002c ->7
0bcbe0a0 mov esi, [rsi+0x10]
0bcbe0a3 test esi, esi
0bcbe0a5 jnz 0x0bcbe08d
0bcbe0a7 mov rsi, 0xfffffffb41939fb0
0bcbe0b1 cmp rsi, [rdi+0x5a8]
0bcbe0b8 jnz 0x0bcb002c ->7
0bcbe0be cmp dword [rdi+0x5a4], -0x09
0bcbe0c5 jnz 0x0bcb002c ->7
0bcbe0cb cmp dword [rdi+0x5a0], 0x41939f18
0bcbe0d5 jnz 0x0bcb002c ->7
0bcbe0db cmp dword [rdi+0x48], 0x41939d88
0bcbe0e2 jnz 0x0bcb002c ->7
0bcbe0e8 cmp dword [r12+0x18], +0x01
0bcbe0ee jbe 0x0bcb002c ->7
0bcbe0f4 mov edi, [r12+0x8]
0bcbe0f9 cmp dword [rdi+0xc], -0x05
0bcbe0fd jnz 0x0bcb002c ->7
0bcbe103 mov esi, [rdi+0x8]
0bcbe106 mov [rsp+0x18], esi
0bcbe10a cmp dword [rdi+0x8], 0x419398f8
0bcbe111 jnz 0x0bcb0030 ->8
0bcbe117 mov edi, [0x4194c860]
0bcbe11e mov [rsp+0x44], edi
0bcbe122 cmp dword [rdi+0x4], 0xfffeffff
0bcbe129 jnb 0x0bcb0034 ->9
0bcbe12f movsd xmm7, [rdi]
0bcbe133 addsd xmm7, [0x403610a0]
0bcbe13c movsd [rsp+0x38], xmm7
0bcbe142 movsd [rdi], xmm7
0bcbe146 mov edi, 0x41937414
0bcbe14b mov esi, [rdi+0x8]
0bcbe14e mov [rdi], esi
0bcbe150 mov esi, 0x4c
0bcbe155 call 0x00421b60 ->lj_buf_putchar
0bcbe15a mov edi, eax
0bcbe15c lea rsi, [rsp+0x38]
0bcbe161 call 0x0040a3c0 ->lj_strfmt_putnum
0bcbe166 mov edi, eax
0bcbe168 call 0x00421ff0 ->lj_buf_tostr
0bcbe16d mov [rsp+0x48], eax
0bcbe171 mov edi, [0x419374b0]
0bcbe178 mov esi, 0x40372418
0bcbe17d call 0x004223c0 ->lj_tab_dup
0bcbe182 mov [rsp+0xc], eax
0bcbe186 mov edi, [0x419374b0]
0bcbe18d xor esi, esi
0bcbe18f call 0x00422350 ->lj_tab_new1
0bcbe194 mov edx, eax
0bcbe196 mov edi, [0x419374b0]
0bcbe19d mov esi, [rsp+0xc]
0bcbe1a1 mov eax, [rsp+0x48]
0bcbe1a5 mov esi, [rsi+0x14]
0bcbe1a8 mov dword [rsi+0x34], 0xfffffff4
0bcbe1af mov [rsi+0x30], edx
0bcbe1b2 mov dword [rsi+0x4c], 0xfffffffb
0bcbe1b9 mov [rsi+0x48], eax
0bcbe1bc mov esi, [0x4194c0c0]
0bcbe1c3 cmp dword [rsi+0x4], -0x0c
0bcbe1c7 jnz 0x0bcb003c ->11
0bcbe1cd mov esi, [rsi]
0bcbe1cf mov [rsp+0x2c], esi
0bcbe1d3 cmp dword [rsi+0x1c], +0x01
0bcbe1d7 jnz 0x0bcb003c ->11
0bcbe1dd mov esi, [rsi+0x14]
0bcbe1e0 mov rdx, 0xfffffffb403716f0
0bcbe1ea cmp rdx, [rsi+0x8]
0bcbe1ee jnz 0x0bcb003c ->11
0bcbe1f4 cmp dword [rsi+0x4], -0x0c
0bcbe1f8 jnz 0x0bcb003c ->11
0bcbe1fe mov esi, [rsi]
0bcbe200 mov [rsp+0x40], esi
0bcbe204 mov edx, [rsi+0x1c]
0bcbe207 and edx, [rax+0x8]
0bcbe20a lea edx, [rdx+rdx*2]
0bcbe20d shl edx, 0x03
0bcbe210 add edx, [rsi+0x14]
0bcbe213 cmp dword [rdx+0xc], -0x05
0bcbe217 jnz 0x0bcbe222
0bcbe219 cmp eax, [rdx+0x8]
0bcbe21c jz 0x0bcb003c ->11
0bcbe222 mov edx, [rdx+0x10]
0bcbe225 test edx, edx
0bcbe227 jnz 0x0bcbe213
0bcbe229 cmp dword [rsi+0x10], +0x00
0bcbe22d jnz 0x0bcb003c ->11
0bcbe233 mov edx, 0x41937448
0bcbe238 mov dword [rdx+0x4], 0xfffffffb
0bcbe23f mov [rdx], eax
0bcbe241 call 0x00422cf0 ->lj_tab_newkey
0bcbe246 mov edx, eax
0bcbe248 mov edi, [rsp+0x44]
0bcbe24c mov esi, [rsp+0x40]
0bcbe250 mov eax, [rsp+0xc]
0bcbe254 movsd xmm7, [rsp+0x38]
0bcbe25a mov dword [rdx+0x4], 0xfffffff4
0bcbe261 mov [rdx], eax
0bcbe263 test byte [rsi+0x4], 0x4
0bcbe267 jz 0x0bcbe27e
0bcbe269 and byte [rsi+0x4], 0xfb
0bcbe26d mov edx, [0x419373f4]
0bcbe274 mov [0x419373f4], esi
0bcbe27b mov [rsi+0xc], edx
0bcbe27e mov byte [rsi+0x6], 0x0
0bcbe282 addsd xmm7, [0x403610a0]
0bcbe28b movsd [rsp+0x30], xmm7
0bcbe291 movsd [rdi], xmm7
0bcbe295 mov edi, 0x41937414
0bcbe29a mov esi, [rdi+0x8]
0bcbe29d mov [rdi], esi
0bcbe29f mov esi, 0x4c
0bcbe2a4 call 0x00421b60 ->lj_buf_putchar
0bcbe2a9 mov edi, eax
0bcbe2ab lea rsi, [rsp+0x30]
0bcbe2b0 call 0x0040a3c0 ->lj_strfmt_putnum
0bcbe2b5 mov edi, eax
0bcbe2b7 call 0x00421ff0 ->lj_buf_tostr
0bcbe2bc mov [rsp+0x1c], eax
0bcbe2c0 mov edi, [0x419374b0]
0bcbe2c7 mov esi, 0x40372418
0bcbe2cc call 0x004223c0 ->lj_tab_dup
0bcbe2d1 mov [rsp+0x14], eax
0bcbe2d5 mov edi, [0x419374b0]
0bcbe2dc xor esi, esi
0bcbe2de call 0x00422350 ->lj_tab_new1
0bcbe2e3 mov edx, eax
0bcbe2e5 mov r10d, [rsp+0x1c]
0bcbe2ea mov edi, [0x419374b0]
0bcbe2f1 mov esi, [rsp+0x2c]
0bcbe2f5 mov ecx, [rsp+0x14]
0bcbe2f9 mov eax, [rcx+0x14]
0bcbe2fc mov dword [rax+0x34], 0xfffffff4
0bcbe303 mov [rax+0x30], edx
0bcbe306 mov dword [rax+0x4c], 0xfffffffb
0bcbe30d mov [rax+0x48], r10d
0bcbe311 cmp dword [rsi+0x1c], +0x01
0bcbe315 jnz 0x0bcb0044 ->13
0bcbe31b mov esi, [rsi+0x14]
0bcbe31e mov rdx, 0xfffffffb403716f0
0bcbe328 cmp rdx, [rsi+0x8]
0bcbe32c jnz 0x0bcb0044 ->13
0bcbe332 cmp dword [rsi+0x4], -0x0c
0bcbe336 jnz 0x0bcb0044 ->13
0bcbe33c mov esi, [rsi]
0bcbe33e mov [rsp+0x24], esi
0bcbe342 mov edx, [rsi+0x1c]
0bcbe345 and edx, [r10+0x8]
0bcbe349 lea edx, [rdx+rdx*2]
0bcbe34c shl edx, 0x03
0bcbe34f add edx, [rsi+0x14]
0bcbe352 cmp dword [rdx+0xc], -0x05
0bcbe356 jnz 0x0bcbe362
0bcbe358 cmp r10d, [rdx+0x8]
0bcbe35c jz 0x0bcb0044 ->13
0bcbe362 mov edx, [rdx+0x10]
0bcbe365 test edx, edx
0bcbe367 jnz 0x0bcbe352
0bcbe369 cmp dword [rsi+0x10], +0x00
0bcbe36d jnz 0x0bcb0044 ->13
0bcbe373 mov edx, 0x41937448
0bcbe378 mov dword [rdx+0x4], 0xfffffffb
0bcbe37f mov [rdx], r10d
0bcbe382 call 0x00422cf0 ->lj_tab_newkey
0bcbe387 mov r11d, eax
0bcbe38a mov edi, [0x419374b0]
0bcbe391 mov esi, [rsp+0x28]
0bcbe395 mov edx, [rsp+0x24]
0bcbe399 mov ecx, [rsp+0x14]
0bcbe39d mov eax, [rsp+0x20]
0bcbe3a1 mov dword [r11+0x4], 0xfffffff4
0bcbe3a9 mov [r11], ecx
0bcbe3ac test byte [rdx+0x4], 0x4
0bcbe3b0 jz 0x0bcbe3c7
0bcbe3b2 and byte [rdx+0x4], 0xfb
0bcbe3b6 mov ecx, [0x419373f4]
0bcbe3bd mov [0x419373f4], edx
0bcbe3c4 mov [rdx+0xc], ecx
0bcbe3c7 mov byte [rdx+0x6], 0x0
0bcbe3cb cmp dword [r12+0x18], +0x02
0bcbe3d1 jbe 0x0bcb0048 ->14
0bcbe3d7 mov edx, [r12+0x8]
0bcbe3dc cmp dword [rdx+0x14], -0x0c
0bcbe3e0 jnz 0x0bcb0048 ->14
0bcbe3e6 mov ecx, [rdx+0x10]
0bcbe3e9 mov [rsp+0x10], ecx
0bcbe3ed mov edx, [rax+0x1c]
0bcbe3f0 and edx, 0xce2b6183
0bcbe3f6 lea edx, [rdx+rdx*2]
0bcbe3f9 shl edx, 0x03
0bcbe3fc add edx, [rax+0x14]
0bcbe3ff cmp dword [rdx+0xc], -0x05
0bcbe403 jnz 0x0bcbe412
0bcbe405 cmp dword [rdx+0x8], 0x41939db0
0bcbe40c jz 0x0bcb0048 ->14
0bcbe412 mov edx, [rdx+0x10]
0bcbe415 test edx, edx
0bcbe417 jnz 0x0bcbe3ff
0bcbe419 cmp dword [rsi+0x1c], +0x01
0bcbe41d jnz 0x0bcb0048 ->14
0bcbe423 mov esi, [rsi+0x14]
0bcbe426 mov rdx, 0xfffffffb419394c8
0bcbe430 cmp rdx, [rsi+0x20]
0bcbe434 jnz 0x0bcb0048 ->14
0bcbe43a cmp dword [rsi+0x1c], -0x0c
0bcbe43e jnz 0x0bcb0048 ->14
0bcbe444 mov esi, [rsi+0x18]
0bcbe447 cmp dword [rsi+0x1c], +0x3f
0bcbe44b jnz 0x0bcb0048 ->14
0bcbe451 mov esi, [rsi+0x14]
0bcbe454 mov rdx, 0xfffffffb41939db0
0bcbe45e cmp rdx, [rsi+0x50]
0bcbe462 jnz 0x0bcb0048 ->14
0bcbe468 cmp dword [rsi+0x4c], -0x09
0bcbe46c jnz 0x0bcb0048 ->14
0bcbe472 mov edx, [rax+0x1c]
0bcbe475 and edx, 0x798a813c
0bcbe47b lea edx, [rdx+rdx*2]
0bcbe47e shl edx, 0x03
0bcbe481 add edx, [rax+0x14]
0bcbe484 cmp dword [rdx+0xc], -0x05
0bcbe488 jnz 0x0bcbe497
0bcbe48a cmp dword [rdx+0x8], 0x41939fb0
0bcbe491 jz 0x0bcb0048 ->14
0bcbe497 mov edx, [rdx+0x10]
0bcbe49a test edx, edx
0bcbe49c jnz 0x0bcbe484
0bcbe49e mov rdx, 0xfffffffb41939fb0
0bcbe4a8 cmp rdx, [rsi+0x5a8]
0bcbe4af jnz 0x0bcb0048 ->14
0bcbe4b5 cmp dword [rsi+0x5a4], -0x09
0bcbe4bc jnz 0x0bcb0048 ->14
0bcbe4c2 cmp dword [rsi+0x5a0], 0x41939f18
0bcbe4cc jnz 0x0bcb0048 ->14
0bcbe4d2 cmp dword [rsi+0x48], 0x41939d88
0bcbe4d9 jnz 0x0bcb0048 ->14
0bcbe4df cmp dword [rcx+0x18], +0x01
0bcbe4e3 jbe 0x0bcb0048 ->14
0bcbe4e9 mov esi, [rcx+0x8]
0bcbe4ec cmp dword [rsi+0xc], -0x05
0bcbe4f0 jnz 0x0bcb0048 ->14
0bcbe4f6 mov r9d, [rsi+0x8]
0bcbe4fa mov [rsp+0x8], r9d
0bcbe4ff cmp r9d, 0x419398f8
0bcbe506 jz 0x0bcb004c ->15
0bcbe50c cmp r9d, 0x40367440
0bcbe513 jz 0x0bcb0050 ->16
0bcbe519 cmp r9d, 0x41939a18
0bcbe520 jz 0x0bcb0054 ->17
0bcbe526 cmp r9d, 0x41939870
0bcbe52d jz 0x0bcb0058 ->18
0bcbe533 cmp r9d, 0x4193ccb0
0bcbe53a jz 0x0bcb005c ->19
0bcbe540 cmp r9d, 0x4193f138
0bcbe547 jz 0x0bcb0060 ->20
0bcbe54d cmp dword [0x41952d34], -0x0c
0bcbe555 jnz 0x0bcb0064 ->21
0bcbe55b mov edx, [0x41952d30]
0bcbe562 mov esi, [rdx+0x1c]
0bcbe565 and esi, [r9+0x8]
0bcbe569 lea esi, [rsi+rsi*2]
0bcbe56c shl esi, 0x03
0bcbe56f add esi, [rdx+0x14]
0bcbe572 cmp dword [rsi+0xc], -0x05
0bcbe576 jnz 0x0bcbe57e
0bcbe578 cmp r9d, [rsi+0x8]
0bcbe57c jz 0x0bcbe58a
0bcbe57e mov esi, [rsi+0x10]
0bcbe581 test esi, esi
0bcbe583 jnz 0x0bcbe572
0bcbe585 mov esi, 0x41937458
0bcbe58a cmp dword [rsi+0x4], -0x03
0bcbe58e jnz 0x0bcb0064 ->21
0bcbe594 mov esi, 0x40366b30
0bcbe599 call 0x004223c0 ->lj_tab_dup
0bcbe59e mov r11d, eax
0bcbe5a1 mov r10d, [rsp+0x1c]
0bcbe5a6 mov edi, [rsp+0x18]
0bcbe5aa mov esi, [rsp+0x14]
0bcbe5ae mov ecx, [rsp+0x10]
0bcbe5b2 mov eax, [rsp+0xc]
0bcbe5b6 mov r8d, [r11+0x8]
0bcbe5ba mov dword [r8+0x14], 0xfffffff4
0bcbe5c2 mov [r8+0x10], ecx
0bcbe5c6 cmp dword [rax+0x1c], +0x03
0bcbe5ca jnz 0x0bcb0068 ->22
0bcbe5d0 mov r9d, [rax+0x14]
0bcbe5d4 mov rdx, 0xfffffffb40371790
0bcbe5de cmp rdx, [r9+0x50]
0bcbe5e2 mov edx, [0x419374b4]
0bcbe5e9 jnz 0x0bcb0068 ->22
0bcbe5ef cmp dword [r9+0x4c], -0x05
0bcbe5f4 jnz 0x0bcb0068 ->22
0bcbe5fa mov r9d, [r9+0x48]
0bcbe5fe mov dword [r8+0x1c], 0xfffffffb
0bcbe606 mov [r8+0x18], r9d
0bcbe60a mov dword [r8+0x24], 0xfffffffb
0bcbe612 mov [r8+0x20], r10d
0bcbe616 cmp dword [rbx+0x1c], +0x03
0bcbe61a jnz 0x0bcb006c ->23
0bcbe620 mov r10d, [rbx+0x14]
0bcbe624 mov r8, 0xfffffffb40371ef8
0bcbe62e cmp r8, [r10+0x20]
0bcbe632 jnz 0x0bcb006c ->23
0bcbe638 cmp dword [rbx+0x10], +0x00
0bcbe63c jnz 0x0bcb006c ->23
0bcbe642 mov dword [r10+0x1c], 0xfffffff4
0bcbe64a mov [r10+0x18], r11d
0bcbe64e test byte [rbx+0x4], 0x4
0bcbe652 jz 0x0bcbe66b
0bcbe654 and byte [rbx+0x4], 0xfb
0bcbe658 mov r11d, [0x419373f4]
0bcbe660 mov [0x419373f4], ebx
0bcbe667 mov [rbx+0xc], r11d
0bcbe66b mov dword [rdx+0xcc], 0xfffffff4
0bcbe675 mov [rdx+0xc8], ecx
0bcbe67b mov dword [rdx+0xc4], 0x40372e40
0bcbe685 mov dword [rdx+0xc0], 0x403641d8
0bcbe68f mov dword [rdx+0xbc], 0xfffffff4
0bcbe699 mov [rdx+0xb8], esi
0bcbe69f mov dword [rdx+0xb4], 0xfffffff4
0bcbe6a9 mov [rdx+0xb0], eax
0bcbe6af mov dword [rdx+0xac], 0xfffffffb
0bcbe6b9 mov [rdx+0xa8], edi
0bcbe6bf mov dword [rdx+0xa4], 0xfffffff4
0bcbe6c9 mov [rdx+0xa0], r14d
0bcbe6d0 mov dword [rdx+0x9c], 0xfffffff4
0bcbe6da mov [rdx+0x98], r15d
0bcbe6e1 mov dword [rdx+0x94], 0xfffffff4
0bcbe6eb mov [rdx+0x90], ebx
0bcbe6f1 mov dword [rdx+0x8c], 0xfffffff4
0bcbe6fb mov [rdx+0x88], r12d
0bcbe702 mov dword [rdx+0x84], 0x40372ebc
0bcbe70c mov dword [rdx+0x80], 0x403641d8
0bcbe716 mov dword [rdx+0x7c], 0xfffffff4
0bcbe71d mov [rdx+0x78], r12d
0bcbe721 mov dword [rdx+0x64], 0xfffffffb
0bcbe728 mov [rdx+0x60], r13d
0bcbe72c mov dword [rdx+0x5c], 0xfffffff4
0bcbe733 mov [rdx+0x58], r14d
0bcbe737 mov dword [rdx+0x54], 0xfffffff4
0bcbe73e mov [rdx+0x50], r15d
0bcbe742 mov dword [rdx+0x4c], 0xfffffff4
0bcbe749 mov [rdx+0x48], ebx
0bcbe74c mov dword [rdx+0x44], 0xfffffff4
0bcbe753 mov [rdx+0x40], ebp
0bcbe756 mov dword [rdx+0x3c], 0x40372e58
0bcbe75d mov dword [rdx+0x38], 0x403641d8
0bcbe764 mov dword [rdx-0x8], 0x403641d8
0bcbe76b add edx, 0xc8
0bcbe771 mov [0x419374b4], edx
0bcbe778 add rsp, +0x60
0bcbe77c jmp 0x0bcbf398
---- TRACE 8 stop -> 4
---- TRACE 8 exit 4
---- TRACE 7 exit 1
---- TRACE 4 exit 7
---- TRACE 3 exit 0
---- TRACE 8 exit 1
---- TRACE 4 exit 6
---- TRACE 8 exit 1
---- TRACE 4 exit 7
---- TRACE 3 exit 0
---- TRACE 9 start 3/0 ssa.lua:53
0001 TDUP 2 1
0002 TGETS 3 1 2 ; "label"
0003 TSETB 3 2 2
0004 TSETS 2 0 0 ; "control"
0005 RET0 0 1
0069 JMP 5 => 0094
0094 JLOOP 1 4
---- TRACE 9 IR
.... SNAP #0 [ ---- ---- ---- ]
0001 rax > tab TDUP {0x403608f0}
0002 rbp > tab SLOAD #2 T
0003 int FLOAD 0002 tab.hmask
0004 > int EQ 0003 +3 
0005 rbx p32 FLOAD 0002 tab.node
0006 > p32 HREFK 0005 "label" @3
0007 > nil HLOAD 0006
0008 tab FLOAD 0002 tab.meta
0009 > tab EQ 0008 [NULL]
0010 rbp p32 FLOAD 0001 tab.array
0011 p32 AREF 0010 +2 
0012 nil ASTORE 0011 nil
.... SNAP #1 [ ---- ---- ---- 0001 ---- ]
0013 rbp > tab SLOAD #1 T
0014 int FLOAD 0013 tab.hmask
0015 > int EQ 0014 +3 
0016 rbx p32 FLOAD 0013 tab.node
0017 > p32 HREFK 0016 "control" @1
0018 tab FLOAD 0013 tab.meta
0019 > tab EQ 0018 [NULL]
0020 tab HSTORE 0017 0001
0021 nil TBAR 0013
.... SNAP #2 [ ---- ---- ---- ---- ---- ]
0022 > p32 RETF proto: 0x40372da0 [0x40372ef4]
.... SNAP #3 [ ---- ---- ]
---- TRACE 9 mcode 296
0bcbdaf8 mov eax, [0x419374b0]
0bcbdaff mov eax, [rax+0x20]
0bcbdb02 sub eax, [0x419374b4]
0bcbdb09 cmp eax, +0x38
0bcbdb0c jb 0x0bcb0010 ->0
0bcbdb12 mov dword [0x41937410], 0x9
0bcbdb1d mov edi, [0x419373d8]
0bcbdb24 cmp edi, [0x419373dc]
0bcbdb2b jb 0x0bcbdb44
0bcbdb2d mov esi, 0x1
0bcbdb32 mov edi, 0x419373b8
0bcbdb37 call 0x00421730 ->lj_gc_step_jit
0bcbdb3c test eax, eax
0bcbdb3e jnz 0x0bcb0010 ->0
0bcbdb44 mov edi, [0x419374b0]
0bcbdb4b mov esi, 0x403608f0
0bcbdb50 call 0x004223c0 ->lj_tab_dup
0bcbdb55 mov edx, [0x419374b4]
0bcbdb5c cmp dword [rdx+0xc], -0x0c
0bcbdb60 jnz 0x0bcb0010 ->0
0bcbdb66 mov ebp, [rdx+0x8]
0bcbdb69 cmp dword [rbp+0x1c], +0x03
0bcbdb6d jnz 0x0bcb0010 ->0
0bcbdb73 mov ebx, [rbp+0x14]
0bcbdb76 mov rdi, 0xfffffffb40371790
0bcbdb80 cmp rdi, [rbx+0x50]
0bcbdb84 jnz 0x0bcb0010 ->0
0bcbdb8a cmp dword [rbx+0x4c], -0x01
0bcbdb8e jnz 0x0bcb0010 ->0
0bcbdb94 cmp dword [rbp+0x10], +0x00
0bcbdb98 jnz 0x0bcb0010 ->0
0bcbdb9e mov ebp, [rax+0x8]
0bcbdba1 mov dword [rbp+0x14], 0xffffffff
0bcbdba8 cmp dword [rdx+0x4], -0x0c
0bcbdbac jnz 0x0bcb0014 ->1
0bcbdbb2 mov ebp, [rdx]
0bcbdbb4 cmp dword [rbp+0x1c], +0x03
0bcbdbb8 jnz 0x0bcb0014 ->1
0bcbdbbe mov ebx, [rbp+0x14]
0bcbdbc1 mov rdi, 0xfffffffb40371ef8
0bcbdbcb cmp rdi, [rbx+0x20]
0bcbdbcf jnz 0x0bcb0014 ->1
0bcbdbd5 cmp dword [rbp+0x10], +0x00
0bcbdbd9 jnz 0x0bcb0014 ->1
0bcbdbdf mov dword [rbx+0x1c], 0xfffffff4
0bcbdbe6 mov [rbx+0x18], eax
0bcbdbe9 test byte [rbp+0x4], 0x4
0bcbdbed jz 0x0bcbdc04
0bcbdbef and byte [rbp+0x4], 0xfb
0bcbdbf3 mov edi, [0x419373f4]
0bcbdbfa mov [0x419373f4], ebp
0bcbdc01 mov [rbp+0xc], edi
0bcbdc04 cmp dword [rdx-0x4], 0x40372ef4
0bcbdc0b jnz 0x0bcb0018 ->2
0bcbdc11 add edx, -0x30
0bcbdc14 mov [0x419374b4], edx
0bcbdc1b jmp 0x0bcbf398
---- TRACE 9 stop -> 4
---- TRACE 4 exit 7
---- TRACE 8 exit 1
---- TRACE 4 exit 3
---- TRACE 2 exit 8
---- TRACE 8 exit 5
---- TRACE 1 start ssa.lua:39
0001 UGET 0 0 ; label_counter
0002 ADDVN 0 0 0 ; 1
0003 USETV 0 0 ; label_counter
0004 KSTR 0 0 ; "L"
0005 UGET 1 0 ; label_counter
0006 CAT 0 0 1
0007 TDUP 1 1
0008 TNEW 2 0
0009 TSETS 2 1 2 ; "bindings"
0010 TSETS 0 1 3 ; "label"
0011 UGET 2 1 ; ssa
0012 TGETS 2 2 4 ; "blocks"
0013 TSETV 1 2 0
0014 RET1 1 2
---- TRACE 1 IR
.... SNAP #0 [ ---- ]
0001 rbp fun SLOAD #0 R
0002 rbx > p32 UREFO 0001 #0
0003 xmm7 > num ULOAD 0002
0004 [10] num ADD 0003 +1 
0005 num USTORE 0002 0004
.... SNAP #1 [ ---- ---- ]
0006 str TOSTR 0004 NUM
0007 rdi p32 BUFHDR [0x416bd414] RESET
0008 rdi p32 BUFPUT 0007 "L" 
0009 rdi p32 BUFPUT 0008 0006
0010 [c] str BUFSTR 0009 0007
0011 [8] > tab TDUP {0x40ff53c0}
0012 r15 > tab TNEW #0 #0
0013 rbx p32 FLOAD 0011 tab.node
0014 p32 HREFK 0013 "bindings" @0
0015 tab HSTORE 0014 0012
0016 p32 HREFK 0013 "label" @1
0017 str HSTORE 0016 0010
.... SNAP #2 [ ---- 0010 0011 ---- ]
0018 rbp > p32 UREFO 0001 #1
0019 rbp > tab ULOAD 0018
0020 int FLOAD 0019 tab.hmask
0021 > int EQ 0020 +1 
0022 rbp p32 FLOAD 0019 tab.node
0023 > p32 HREFK 0022 "blocks" @0
0024 rbp > tab HLOAD 0023
0025 rsi p32 HREF 0024 0010
0026 > p32 EQ 0025 [0x416bd458]
0027 tab FLOAD 0024 tab.meta
0028 > tab EQ 0027 [NULL]
0029 rbx p32 NEWREF 0024 0010
0030 tab HSTORE 0029 0011
0031 nil TBAR 0024
0032 p32 FREF 0024 tab.nomm
0033 u8  FSTORE 0032 +0 
.... SNAP #3 [ ---- ---- 0011 ]
---- TRACE 1 mcode 441
0bcbfe44 add rsp, -0x10
0bcbfe48 mov dword [0x416bd410], 0x1
0bcbfe53 mov edi, [0x416bd3d8]
0bcbfe5a cmp edi, [0x416bd3dc]
0bcbfe61 jb 0x0bcbfe7a
0bcbfe63 mov esi, 0x3
0bcbfe68 mov edi, 0x416bd3b8
0bcbfe6d call 0x00421730 ->lj_gc_step_jit
0bcbfe72 test eax, eax
0bcbfe74 jnz 0x0bcb0010 ->0
0bcbfe7a mov edx, [0x416bd4b4]
0bcbfe81 mov ebp, [rdx-0x8]
0bcbfe84 mov edi, [rbp+0x14]
0bcbfe87 mov ebx, [rdi+0x10]
0bcbfe8a cmp dword [rbx+0x4], 0xfffeffff
0bcbfe91 jnb 0x0bcb0010 ->0
0bcbfe97 movsd xmm7, [rbx]
0bcbfe9b addsd xmm7, [0x40fe3fc0]
0bcbfea4 movsd [rsp+0x10], xmm7
0bcbfeaa movsd [rbx], xmm7
0bcbfeae mov edi, 0x416bd414
0bcbfeb3 mov esi, [rdi+0x8]
0bcbfeb6 mov [rdi], esi
0bcbfeb8 mov esi, 0x4c
0bcbfebd call 0x00421b60 ->lj_buf_putchar
0bcbfec2 mov edi, eax
0bcbfec4 lea rsi, [rsp+0x10]
0bcbfec9 call 0x0040a3c0 ->lj_strfmt_putnum
0bcbfece mov edi, eax
0bcbfed0 call 0x00421ff0 ->lj_buf_tostr
0bcbfed5 mov [rsp+0xc], eax
0bcbfed9 mov edi, [0x416bd4b0]
0bcbfee0 mov esi, 0x40ff53c0
0bcbfee5 call 0x004223c0 ->lj_tab_dup
0bcbfeea mov ebx, eax
0bcbfeec mov [rsp+0x8], ebx
0bcbfef0 mov edi, [0x416bd4b0]
0bcbfef7 xor esi, esi
0bcbfef9 call 0x00422350 ->lj_tab_new1
0bcbfefe mov r15d, eax
0bcbff01 mov edi, [0x416bd4b0]
0bcbff08 mov eax, [rsp+0xc]
0bcbff0c mov ebx, [rbx+0x14]
0bcbff0f mov dword [rbx+0x4], 0xfffffff4
0bcbff16 mov [rbx], r15d
0bcbff19 mov dword [rbx+0x1c], 0xfffffffb
0bcbff20 mov [rbx+0x18], eax
0bcbff23 mov esi, [rbp+0x18]
0bcbff26 mov ebp, [rsi+0x10]
0bcbff29 cmp dword [rbp+0x4], -0x0c
0bcbff2d jnz 0x0bcb0018 ->2
0bcbff33 mov ebp, [rbp+0x0]
0bcbff36 cmp dword [rbp+0x1c], +0x01
0bcbff3a jnz 0x0bcb0018 ->2
0bcbff40 mov ebp, [rbp+0x14]
0bcbff43 mov rsi, 0xfffffffb40ff4698
0bcbff4d cmp rsi, [rbp+0x8]
0bcbff51 jnz 0x0bcb0018 ->2
0bcbff57 cmp dword [rbp+0x4], -0x0c
0bcbff5b jnz 0x0bcb0018 ->2
0bcbff61 mov ebp, [rbp+0x0]
0bcbff64 mov esi, [rbp+0x1c]
0bcbff67 and esi, [rax+0x8]
0bcbff6a lea esi, [rsi+rsi*2]
0bcbff6d shl esi, 0x03
0bcbff70 add esi, [rbp+0x14]
0bcbff73 cmp dword [rsi+0xc], -0x05
0bcbff77 jnz 0x0bcbff82
0bcbff79 cmp eax, [rsi+0x8]
0bcbff7c jz 0x0bcb0018 ->2
0bcbff82 mov esi, [rsi+0x10]
0bcbff85 test esi, esi
0bcbff87 jnz 0x0bcbff73
0bcbff89 cmp dword [rbp+0x10], +0x00
0bcbff8d jnz 0x0bcb0018 ->2
0bcbff93 mov edx, 0x416bd448
0bcbff98 mov dword [rdx+0x4], 0xfffffffb
0bcbff9f mov [rdx], eax
0bcbffa1 mov esi, ebp
0bcbffa3 call 0x00422cf0 ->lj_tab_newkey
0bcbffa8 mov ebx, eax
0bcbffaa mov edx, [0x416bd4b4]
0bcbffb1 mov eax, [rsp+0x8]
0bcbffb5 mov dword [rbx+0x4], 0xfffffff4
0bcbffbc mov [rbx], eax
0bcbffbe test byte [rbp+0x4], 0x4
0bcbffc2 jz 0x0bcbffd9
0bcbffc4 and byte [rbp+0x4], 0xfb
0bcbffc8 mov edi, [0x416bd3f4]
0bcbffcf mov [0x416bd3f4], ebp
0bcbffd6 mov [rbp+0xc], edi
0bcbffd9 mov byte [rbp+0x6], 0x0
0bcbffdd mov dword [rdx+0xc], 0xfffffff4
0bcbffe4 mov [rdx+0x8], eax
0bcbffe7 xor eax, eax
0bcbffe9 mov ebx, 0x40ff6248
0bcbffee mov r14d, 0x416be008
0bcbfff4 add rsp, +0x10
0bcbfff8 jmp 0x00420177
---- TRACE 1 stop -> return
---- TRACE 2 start ssa.lua:55
0001 GGET 4 0 ; "assert"
0002 GGET 5 1 ; "type"
0003 MOV 6 0
0004 CALL 5 2 2
0000 . FUNCC ; type
0005 ISEQS 5 2 ; "table"
0006 JMP 5 => 0009
0009 KPRI 5 2
0010 CALL 4 1 2
0000 . FUNCC ; assert
0011 TGETB 4 0 1
0012 ISNES 4 3 ; "if"
0013 JMP 5 => 0037
0037 ISNES 4 4 ; "let"
0038 JMP 5 => 0056
0056 ISNES 4 10 ; "true"
0057 JMP 5 => 0063
0063 ISNES 4 11 ; "false"
0064 JMP 5 => 0070
0070 ISNES 4 12 ; "match"
0071 JMP 5 => 0077
0077 ISNES 4 14 ; "fail"
0078 JMP 5 => 0084
0084 GGET 5 0 ; "assert"
0085 UGET 6 4 ; relops
0086 TGETV 6 6 4
0087 CALL 5 1 2
0000 . FUNCC ; assert
0088 UGET 5 5 ; finish_if
0089 MOV 6 1
0090 MOV 7 0
0091 MOV 8 2
0092 MOV 9 3
0093 CALL 5 1 5
0000 . FUNCF 6 ; ssa.lua:49
0001 . TDUP 4 1
0002 . TSETB 1 4 2
0003 . TGETS 5 2 2 ; "label"
0004 . TSETB 5 4 3
0005 . TGETS 5 3 2 ; "label"
0006 . TSETB 5 4 4
0007 . TSETS 4 0 0 ; "control"
0008 . RET0 0 1
0094 RET0 0 1
---- TRACE 2 IR
.... SNAP #0 [ ---- ---- ---- ---- ---- ]
0001 rbp fun SLOAD #0 R
0002 r15 tab FLOAD 0001 func.env
0003 rsi p32 HREF 0002 "assert"
0004 > p32 EQ 0003 [0x416bd458]
0005 rbx tab FLOAD 0002 tab.meta
0006 > tab NE 0005 [NULL]
0007 int FLOAD 0005 tab.hmask
0008 > int EQ 0007 +1 
0009 rbx p32 FLOAD 0005 tab.node
0010 > p32 HREFK 0009 "__index" @1
0011 rbx > tab HLOAD 0010
0012 int FLOAD 0011 tab.hmask
0013 > int EQ 0012 +63 
0014 rbx p32 FLOAD 0011 tab.node
0015 > p32 HREFK 0014 "assert" @3
0016 > fun HLOAD 0015
0017 rsi p32 HREF 0002 "type"
0018 > p32 EQ 0017 [0x416bd458]
0019 > p32 HREFK 0014 "type" @60
0020 > fun HLOAD 0019
0021 r15 > tab SLOAD #1 T
0022 > fun EQ 0020 type
0023 > fun EQ 0016 assert
0024 int FLOAD 0021 tab.asize
0025 > int ABC 0024 +1 
0026 rbx p32 FLOAD 0021 tab.array
0027 p32 AREF 0026 +1 
0028 rbx > str ALOAD 0027
.... SNAP #1 [ ---- ---- ---- ---- ---- 0028 ]
0029 > str NE 0028 "if"
.... SNAP #2 [ ---- ---- ---- ---- ---- 0028 ]
0030 > str NE 0028 "let"
.... SNAP #3 [ ---- ---- ---- ---- ---- 0028 ]
0031 > str NE 0028 "true"
.... SNAP #4 [ ---- ---- ---- ---- ---- 0028 ]
0032 > str NE 0028 "false"
.... SNAP #5 [ ---- ---- ---- ---- ---- 0028 ]
0033 > str NE 0028 "match"
.... SNAP #6 [ ---- ---- ---- ---- ---- 0028 ]
0034 > str NE 0028 "fail"
.... SNAP #7 [ ---- ---- ---- ---- ---- 0028 ]
0035 r14 > p32 UREFC 0001 #4
0036 r13 > tab ULOAD 0035
0037 r14 p32 HREF 0036 0028
0038 > tru HLOAD 0037
0039 > fun EQ 0001 ssa.lua:55
0040 rbp > tab SLOAD #2 T
0041 r13 > tab SLOAD #3 T
0042 r14 > tab SLOAD #4 T
0043 [8] > tab TDUP {0x40fe9ad8}
0044 rax p32 FLOAD 0043 tab.array
0045 p32 AREF 0044 +2 
0046 tab ASTORE 0045 0021
.... SNAP #8 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:49|0040 ---- 0041 0042 0043 ]
0047 int FLOAD 0041 tab.hmask
0048 > int EQ 0047 +1 
0049 r15 p32 FLOAD 0041 tab.node
0050 > p32 HREFK 0049 "label" @1
0051 r15 > str HLOAD 0050
0052 p32 AREF 0044 +3 
0053 str ASTORE 0052 0051
.... SNAP #9 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:49|0040 ---- ---- 0042 0043 ---- ]
0054 int FLOAD 0042 tab.hmask
0055 > int EQ 0054 +1 
0056 r15 p32 FLOAD 0042 tab.node
0057 > p32 HREFK 0056 "label" @1
0058 r15 > str HLOAD 0057
0059 p32 AREF 0044 +4 
0060 str ASTORE 0059 0058
.... SNAP #10 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:49|0040 ---- ---- ---- 0043 ---- ]
0061 rsi p32 HREF 0040 "control"
0062 > p32 EQ 0061 [0x416bd458]
0063 tab FLOAD 0040 tab.meta
0064 > tab EQ 0063 [NULL]
0065 rbx p32 NEWREF 0040 "control"
0066 tab HSTORE 0065 0043
0067 nil TBAR 0040
.... SNAP #11 [ ssa.lua:55|]
---- TRACE 2 mcode 916
0bcbfaa9 mov dword [0x416bd410], 0x2
0bcbfab4 mov edi, [0x416bd3d8]
0bcbfabb cmp edi, [0x416bd3dc]
0bcbfac2 jb 0x0bcbfadb
0bcbfac4 mov esi, 0x1
0bcbfac9 mov edi, 0x416bd3b8
0bcbface call 0x00421730 ->lj_gc_step_jit
0bcbfad3 test eax, eax
0bcbfad5 jnz 0x0bcb0010 ->0
0bcbfadb mov edi, [0x416bd4b0]
0bcbfae2 mov edx, [0x416bd4b4]
0bcbfae9 mov ebp, [rdx-0x8]
0bcbfaec mov r15d, [rbp+0x8]
0bcbfaf0 mov esi, [r15+0x1c]
0bcbfaf4 and esi, 0xce2b6183
0bcbfafa lea esi, [rsi+rsi*2]
0bcbfafd shl esi, 0x03
0bcbfb00 add esi, [r15+0x14]
0bcbfb04 cmp dword [rsi+0xc], -0x05
0bcbfb08 jnz 0x0bcbfb17
0bcbfb0a cmp dword [rsi+0x8], 0x416bfdb0
0bcbfb11 jz 0x0bcb0010 ->0
0bcbfb17 mov esi, [rsi+0x10]
0bcbfb1a test esi, esi
0bcbfb1c jnz 0x0bcbfb04
0bcbfb1e mov ebx, [r15+0x10]
0bcbfb22 test ebx, ebx
0bcbfb24 jz 0x0bcb0010 ->0
0bcbfb2a cmp dword [rbx+0x1c], +0x01
0bcbfb2e jnz 0x0bcb0010 ->0
0bcbfb34 mov ebx, [rbx+0x14]
0bcbfb37 mov rsi, 0xfffffffb416bf4c8
0bcbfb41 cmp rsi, [rbx+0x20]
0bcbfb45 jnz 0x0bcb0010 ->0
0bcbfb4b cmp dword [rbx+0x1c], -0x0c
0bcbfb4f jnz 0x0bcb0010 ->0
0bcbfb55 mov ebx, [rbx+0x18]
0bcbfb58 cmp dword [rbx+0x1c], +0x3f
0bcbfb5c jnz 0x0bcb0010 ->0
0bcbfb62 mov ebx, [rbx+0x14]
0bcbfb65 mov rsi, 0xfffffffb416bfdb0
0bcbfb6f cmp rsi, [rbx+0x50]
0bcbfb73 jnz 0x0bcb0010 ->0
0bcbfb79 cmp dword [rbx+0x4c], -0x09
0bcbfb7d jnz 0x0bcb0010 ->0
0bcbfb83 mov esi, [r15+0x1c]
0bcbfb87 and esi, 0x798a813c
0bcbfb8d lea esi, [rsi+rsi*2]
0bcbfb90 shl esi, 0x03
0bcbfb93 add esi, [r15+0x14]
0bcbfb97 cmp dword [rsi+0xc], -0x05
0bcbfb9b jnz 0x0bcbfbaa
0bcbfb9d cmp dword [rsi+0x8], 0x416bffb0
0bcbfba4 jz 0x0bcb0010 ->0
0bcbfbaa mov esi, [rsi+0x10]
0bcbfbad test esi, esi
0bcbfbaf jnz 0x0bcbfb97
0bcbfbb1 mov rsi, 0xfffffffb416bffb0
0bcbfbbb cmp rsi, [rbx+0x5a8]
0bcbfbc2 jnz 0x0bcb0010 ->0
0bcbfbc8 cmp dword [rbx+0x5a4], -0x09
0bcbfbcf jnz 0x0bcb0010 ->0
0bcbfbd5 cmp dword [rdx+0x4], -0x0c
0bcbfbd9 jnz 0x0bcb0010 ->0
0bcbfbdf mov r15d, [rdx]
0bcbfbe2 cmp dword [rbx+0x5a0], 0x416bff18
0bcbfbec jnz 0x0bcb0010 ->0
0bcbfbf2 cmp dword [rbx+0x48], 0x416bfd88
0bcbfbf9 jnz 0x0bcb0010 ->0
0bcbfbff cmp dword [r15+0x18], +0x01
0bcbfc04 jbe 0x0bcb0010 ->0
0bcbfc0a mov ebx, [r15+0x8]
0bcbfc0e cmp dword [rbx+0xc], -0x05
0bcbfc12 jnz 0x0bcb0010 ->0
0bcbfc18 mov ebx, [rbx+0x8]
0bcbfc1b cmp ebx, 0x416bf8f8
0bcbfc21 jz 0x0bcb0014 ->1
0bcbfc27 cmp ebx, 0x40fea3e8
0bcbfc2d jz 0x0bcb0018 ->2
0bcbfc33 cmp ebx, 0x416bfa18
0bcbfc39 jz 0x0bcb001c ->3
0bcbfc3f cmp ebx, 0x416bf870
0bcbfc45 jz 0x0bcb0020 ->4
0bcbfc4b cmp ebx, 0x416c2cb0
0bcbfc51 jz 0x0bcb0024 ->5
0bcbfc57 cmp ebx, 0x416d1ce0
0bcbfc5d jz 0x0bcb0028 ->6
0bcbfc63 mov esi, [rbp+0x24]
0bcbfc66 cmp byte [rsi+0x6], 0x1
0bcbfc6a jnz 0x0bcb002c ->7
0bcbfc70 lea r14d, [rsi+0x8]
0bcbfc74 cmp dword [r14+0x4], -0x0c
0bcbfc79 jnz 0x0bcb002c ->7
0bcbfc7f mov r13d, [r14]
0bcbfc82 mov r14d, [r13+0x1c]
0bcbfc86 and r14d, [rbx+0x8]
0bcbfc8a lea r14d, [r14+r14*2]
0bcbfc8e shl r14d, 0x03
0bcbfc92 add r14d, [r13+0x14]
0bcbfc96 cmp dword [r14+0xc], -0x05
0bcbfc9b jnz 0x0bcbfca3
0bcbfc9d cmp ebx, [r14+0x8]
0bcbfca1 jz 0x0bcbfcb2
0bcbfca3 mov r14d, [r14+0x10]
0bcbfca7 test r14d, r14d
0bcbfcaa jnz 0x0bcbfc96
0bcbfcac mov r14d, 0x416bd458
0bcbfcb2 cmp dword [r14+0x4], -0x03
0bcbfcb7 jnz 0x0bcb002c ->7
0bcbfcbd cmp ebp, 0x416cd018
0bcbfcc3 jnz 0x0bcb002c ->7
0bcbfcc9 cmp dword [rdx+0xc], -0x0c
0bcbfccd jnz 0x0bcb002c ->7
0bcbfcd3 mov ebp, [rdx+0x8]
0bcbfcd6 cmp dword [rdx+0x14], -0x0c
0bcbfcda jnz 0x0bcb002c ->7
0bcbfce0 mov r13d, [rdx+0x10]
0bcbfce4 cmp dword [rdx+0x1c], -0x0c
0bcbfce8 jnz 0x0bcb002c ->7
0bcbfcee mov r14d, [rdx+0x18]
0bcbfcf2 mov esi, 0x40fe9ad8
0bcbfcf7 call 0x004223c0 ->lj_tab_dup
0bcbfcfc mov [rsp+0x8], eax
0bcbfd00 mov edi, [0x416bd4b0]
0bcbfd07 mov eax, [rax+0x8]
0bcbfd0a mov dword [rax+0x14], 0xfffffff4
0bcbfd11 mov [rax+0x10], r15d
0bcbfd15 cmp dword [r13+0x1c], +0x01
0bcbfd1a jnz 0x0bcb0030 ->8
0bcbfd20 mov r15d, [r13+0x14]
0bcbfd24 mov rsi, 0xfffffffb40ff4738
0bcbfd2e cmp rsi, [r15+0x20]
0bcbfd32 jnz 0x0bcb0030 ->8
0bcbfd38 cmp dword [r15+0x1c], -0x05
0bcbfd3d jnz 0x0bcb0030 ->8
0bcbfd43 mov r15d, [r15+0x18]
0bcbfd47 mov dword [rax+0x1c], 0xfffffffb
0bcbfd4e mov [rax+0x18], r15d
0bcbfd52 cmp dword [r14+0x1c], +0x01
0bcbfd57 jnz 0x0bcb0034 ->9
0bcbfd5d mov r15d, [r14+0x14]
0bcbfd61 mov rsi, 0xfffffffb40ff4738
0bcbfd6b cmp rsi, [r15+0x20]
0bcbfd6f jnz 0x0bcb0034 ->9
0bcbfd75 cmp dword [r15+0x1c], -0x05
0bcbfd7a jnz 0x0bcb0034 ->9
0bcbfd80 mov r15d, [r15+0x18]
0bcbfd84 mov dword [rax+0x24], 0xfffffffb
0bcbfd8b mov [rax+0x20], r15d
0bcbfd8f mov esi, [rbp+0x1c]
0bcbfd92 and esi, 0x2a54dc55
0bcbfd98 lea esi, [rsi+rsi*2]
0bcbfd9b shl esi, 0x03
0bcbfd9e add esi, [rbp+0x14]
0bcbfda1 cmp dword [rsi+0xc], -0x05
0bcbfda5 jnz 0x0bcbfdb4
0bcbfda7 cmp dword [rsi+0x8], 0x40ff4ea0
0bcbfdae jz 0x0bcb0038 ->10
0bcbfdb4 mov esi, [rsi+0x10]
0bcbfdb7 test esi, esi
0bcbfdb9 jnz 0x0bcbfda1
0bcbfdbb cmp dword [rbp+0x10], +0x00
0bcbfdbf jnz 0x0bcb0038 ->10
0bcbfdc5 mov edx, 0x416bd448
0bcbfdca mov dword [rdx+0x4], 0xfffffffb
0bcbfdd1 mov dword [rdx], 0x40ff4ea0
0bcbfdd7 mov esi, ebp
0bcbfdd9 call 0x00422cf0 ->lj_tab_newkey
0bcbfdde mov ebx, eax
0bcbfde0 mov edx, [0x416bd4b4]
0bcbfde7 mov eax, [rsp+0x8]
0bcbfdeb mov dword [rbx+0x4], 0xfffffff4
0bcbfdf2 mov [rbx], eax
0bcbfdf4 test byte [rbp+0x4], 0x4
0bcbfdf8 jz 0x0bcbfe0f
0bcbfdfa and byte [rbp+0x4], 0xfb
0bcbfdfe mov edi, [0x416bd3f4]
0bcbfe05 mov [0x416bd3f4], ebp
0bcbfe0c mov [rbp+0xc], edi
0bcbfe0f mov eax, [0x416bd4b0]
0bcbfe16 mov eax, [rax+0x20]
0bcbfe19 sub eax, edx
0bcbfe1b cmp eax, +0x68
0bcbfe1e jb 0x0bcb003c ->11
0bcbfe24 mov dword [rdx-0x8], 0x416cd018
0bcbfe2b xor eax, eax
0bcbfe2d mov ebx, 0x40ff5f00
0bcbfe32 mov r14d, 0x416be008
0bcbfe38 jmp 0x00420177
---- TRACE 2 stop -> return
---- TRACE 2 exit 2
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 2 exit 3
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 2 exit 6
---- TRACE 2 exit 4
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 3 start ssa.lua:52
0001 TDUP 2 1
0002 TGETS 3 1 2 ; "label"
0003 TSETB 3 2 2
0004 TSETS 2 0 0 ; "control"
0005 RET0 0 1
---- TRACE 3 IR
.... SNAP #0 [ ---- ---- ---- ]
0001 [8] > tab TDUP {0x40fe38f0}
0002 rbp > tab SLOAD #2 T
0003 int FLOAD 0002 tab.hmask
0004 > int EQ 0003 +1 
0005 rbp p32 FLOAD 0002 tab.node
0006 > p32 HREFK 0005 "label" @1
0007 rbp > str HLOAD 0006
0008 rax p32 FLOAD 0001 tab.array
0009 p32 AREF 0008 +2 
0010 str ASTORE 0009 0007
.... SNAP #1 [ ---- ---- ---- 0001 ---- ]
0011 rbp > tab SLOAD #1 T
0012 rsi p32 HREF 0011 "control"
0013 > p32 EQ 0012 [0x416bd458]
0014 tab FLOAD 0011 tab.meta
0015 > tab EQ 0014 [NULL]
0016 rbx p32 NEWREF 0011 "control"
0017 tab HSTORE 0016 0001
0018 nil TBAR 0011
.... SNAP #2 [ ---- ]
---- TRACE 3 mcode 315
0bcbf967 mov dword [0x416bd410], 0x3
0bcbf972 mov edi, [0x416bd3d8]
0bcbf979 cmp edi, [0x416bd3dc]
0bcbf980 jb 0x0bcbf999
0bcbf982 mov esi, 0x1
0bcbf987 mov edi, 0x416bd3b8
0bcbf98c call 0x00421730 ->lj_gc_step_jit
0bcbf991 test eax, eax
0bcbf993 jnz 0x0bcb0010 ->0
0bcbf999 mov edi, [0x416bd4b0]
0bcbf9a0 mov esi, 0x40fe38f0
0bcbf9a5 call 0x004223c0 ->lj_tab_dup
0bcbf9aa mov [rsp+0x8], eax
0bcbf9ae mov edi, [0x416bd4b0]
0bcbf9b5 mov edx, [0x416bd4b4]
0bcbf9bc cmp dword [rdx+0xc], -0x0c
0bcbf9c0 jnz 0x0bcb0010 ->0
0bcbf9c6 mov ebp, [rdx+0x8]
0bcbf9c9 cmp dword [rbp+0x1c], +0x01
0bcbf9cd jnz 0x0bcb0010 ->0
0bcbf9d3 mov ebp, [rbp+0x14]
0bcbf9d6 mov rsi, 0xfffffffb40ff4738
0bcbf9e0 cmp rsi, [rbp+0x20]
0bcbf9e4 jnz 0x0bcb0010 ->0
0bcbf9ea cmp dword [rbp+0x1c], -0x05
0bcbf9ee jnz 0x0bcb0010 ->0
0bcbf9f4 mov ebp, [rbp+0x18]
0bcbf9f7 mov eax, [rax+0x8]
0bcbf9fa mov dword [rax+0x14], 0xfffffffb
0bcbfa01 mov [rax+0x10], ebp
0bcbfa04 cmp dword [rdx+0x4], -0x0c
0bcbfa08 jnz 0x0bcb0014 ->1
0bcbfa0e mov ebp, [rdx]
0bcbfa10 mov esi, [rbp+0x1c]
0bcbfa13 and esi, 0x2a54dc55
0bcbfa19 lea esi, [rsi+rsi*2]
0bcbfa1c shl esi, 0x03
0bcbfa1f add esi, [rbp+0x14]
0bcbfa22 cmp dword [rsi+0xc], -0x05
0bcbfa26 jnz 0x0bcbfa35
0bcbfa28 cmp dword [rsi+0x8], 0x40ff4ea0
0bcbfa2f jz 0x0bcb0014 ->1
0bcbfa35 mov esi, [rsi+0x10]
0bcbfa38 test esi, esi
0bcbfa3a jnz 0x0bcbfa22
0bcbfa3c cmp dword [rbp+0x10], +0x00
0bcbfa40 jnz 0x0bcb0014 ->1
0bcbfa46 mov edx, 0x416bd448
0bcbfa4b mov dword [rdx+0x4], 0xfffffffb
0bcbfa52 mov dword [rdx], 0x40ff4ea0
0bcbfa58 mov esi, ebp
0bcbfa5a call 0x00422cf0 ->lj_tab_newkey
0bcbfa5f mov ebx, eax
0bcbfa61 mov edx, [0x416bd4b4]
0bcbfa68 mov eax, [rsp+0x8]
0bcbfa6c mov dword [rbx+0x4], 0xfffffff4
0bcbfa73 mov [rbx], eax
0bcbfa75 test byte [rbp+0x4], 0x4
0bcbfa79 jz 0x0bcbfa90
0bcbfa7b and byte [rbp+0x4], 0xfb
0bcbfa7f mov edi, [0x416bd3f4]
0bcbfa86 mov [0x416bd3f4], ebp
0bcbfa8d mov [rbp+0xc], edi
0bcbfa90 xor eax, eax
0bcbfa92 mov ebx, 0x40ff66d4
0bcbfa97 mov r14d, 0x416be008
0bcbfa9d jmp 0x00420177
---- TRACE 3 stop -> return
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 4 start 2/1 ssa.lua:59
0014 UGET 5 0 ; add_block
0015 CALL 5 2 1
0000 . JFUNCF 3 1 ; ssa.lua:39
0001 . UGET 0 0 ; label_counter
0002 . ADDVN 0 0 0 ; 1
0003 . USETV 0 0 ; label_counter
0004 . KSTR 0 0 ; "L"
0005 . UGET 1 0 ; label_counter
0006 . CAT 0 0 1
0007 . TDUP 1 1
0008 . TNEW 2 0
0009 . TSETS 2 1 2 ; "bindings"
0010 . TSETS 0 1 3 ; "label"
0011 . UGET 2 1 ; ssa
0012 . TGETS 2 2 4 ; "blocks"
0013 . TSETV 1 2 0
0014 . RET1 1 2
0016 UGET 6 0 ; add_block
0017 CALL 6 2 1
0000 . JFUNCF 3 1 ; ssa.lua:39
0001 . UGET 0 0 ; label_counter
0002 . ADDVN 0 0 0 ; 1
0003 . USETV 0 0 ; label_counter
0004 . KSTR 0 0 ; "L"
0005 . UGET 1 0 ; label_counter
0006 . CAT 0 0 1
0007 . TDUP 1 1
0008 . TNEW 2 0
0009 . TSETS 2 1 2 ; "bindings"
0010 . TSETS 0 1 3 ; "label"
0011 . UGET 2 1 ; ssa
0012 . TGETS 2 2 4 ; "blocks"
0013 . TSETV 1 2 0
0014 . RET1 1 2
0018 UGET 7 1 ; compile_bool
0019 TGETB 8 0 2
0020 MOV 9 1
0021 MOV 10 5
0022 MOV 11 6
0023 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0070 . ISNES 4 12 ; "match"
0071 . JMP 5 => 0077
0077 . ISNES 4 14 ; "fail"
0078 . JMP 5 => 0084
0084 . GGET 5 0 ; "assert"
0085 . UGET 6 4 ; relops
0086 . TGETV 6 6 4
0087 . CALL 5 1 2
0000 . . FUNCC ; assert
0088 . UGET 5 5 ; finish_if
0089 . MOV 6 1
0090 . MOV 7 0
0091 . MOV 8 2
0092 . MOV 9 3
0093 . CALL 5 1 5
0000 . . FUNCF 6 ; ssa.lua:49
0001 . . TDUP 4 1
0002 . . TSETB 1 4 2
0003 . . TGETS 5 2 2 ; "label"
0004 . . TSETB 5 4 3
0005 . . TGETS 5 3 2 ; "label"
0006 . . TSETB 5 4 4
0007 . . TSETS 4 0 0 ; "control"
0008 . . RET0 0 1
0094 . RET0 0 1
0024 UGET 7 1 ; compile_bool
0025 TGETB 8 0 3
0026 MOV 9 5
0027 MOV 10 2
0028 MOV 11 3
0029 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0014 . UGET 5 0 ; add_block
0015 . CALL 5 2 1
0000 . . JFUNCF 3 1 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0016 . UGET 6 0 ; add_block
0017 . CALL 6 2 1
0000 . . JFUNCF 3 1 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0018 . UGET 7 1 ; compile_bool
0019 . TGETB 8 0 2
0020 . MOV 9 1
0021 . MOV 10 5
0022 . MOV 11 6
0023 . CALL 7 1 5
0000 . . JFUNCF 13 2 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0070 . . ISNES 4 12 ; "match"
0071 . . JMP 5 => 0077
0077 . . ISNES 4 14 ; "fail"
0078 . . JMP 5 => 0084
0084 . . GGET 5 0 ; "assert"
0085 . . UGET 6 4 ; relops
0086 . . TGETV 6 6 4
0087 . . CALL 5 1 2
0000 . . . FUNCC ; assert
0088 . . UGET 5 5 ; finish_if
0089 . . MOV 6 1
0090 . . MOV 7 0
0091 . . MOV 8 2
0092 . . MOV 9 3
0093 . . CALL 5 1 5
0000 . . . FUNCF 6 ; ssa.lua:49
0001 . . . TDUP 4 1
0002 . . . TSETB 1 4 2
0003 . . . TGETS 5 2 2 ; "label"
0004 . . . TSETB 5 4 3
0005 . . . TGETS 5 3 2 ; "label"
0006 . . . TSETB 5 4 4
0007 . . . TSETS 4 0 0 ; "control"
0008 . . . RET0 0 1
0094 . . RET0 0 1
0024 . UGET 7 1 ; compile_bool
0025 . TGETB 8 0 3
0026 . MOV 9 5
0027 . MOV 10 2
0028 . MOV 11 3
0029 . CALL 7 1 5
0000 . . JFUNCF 13 2 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0070 . . ISNES 4 12 ; "match"
0071 . . JMP 5 => 0077
0077 . . ISNES 4 14 ; "fail"
0078 . . JMP 5 => 0084
0084 . . GGET 5 0 ; "assert"
0085 . . UGET 6 4 ; relops
0086 . . TGETV 6 6 4
0087 . . CALL 5 1 2
0000 . . . FUNCC ; assert
0088 . . UGET 5 5 ; finish_if
0089 . . MOV 6 1
0090 . . MOV 7 0
0091 . . MOV 8 2
0092 . . MOV 9 3
0093 . . CALL 5 1 5
0000 . . . FUNCF 6 ; ssa.lua:49
0001 . . . TDUP 4 1
0002 . . . TSETB 1 4 2
0003 . . . TGETS 5 2 2 ; "label"
0004 . . . TSETB 5 4 3
0005 . . . TGETS 5 3 2 ; "label"
0006 . . . TSETB 5 4 4
0007 . . . TSETS 4 0 0 ; "control"
0008 . . . RET0 0 1
0094 . . RET0 0 1
0030 . UGET 7 1 ; compile_bool
0031 . TGETB 8 0 4
0032 . MOV 9 6
0033 . MOV 10 2
0034 . MOV 11 3
0035 . CALL 7 1 5
0000 . . JFUNCF 13 2 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0065 . . UGET 5 2 ; finish_goto
0066 . . MOV 6 1
0067 . . MOV 7 3
0068 . . CALL 5 1 3
0000 . . . JFUNCF 4 3 ; ssa.lua:52
0001 . . . TDUP 2 1
0002 . . . TGETS 3 1 2 ; "label"
0003 . . . TSETB 3 2 2
0004 . . . TSETS 2 0 0 ; "control"
0005 . . . RET0 0 1
0069 . . JMP 5 => 0094
0094 . . RET0 0 1
0036 . JMP 5 => 0094
0094 . RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0065 . UGET 5 2 ; finish_goto
0066 . MOV 6 1
0067 . MOV 7 3
0068 . CALL 5 1 3
0000 . . JFUNCF 4 3 ; ssa.lua:52
0001 . . TDUP 2 1
0002 . . TGETS 3 1 2 ; "label"
0003 . . TSETB 3 2 2
0004 . . TSETS 2 0 0 ; "control"
0005 . . RET0 0 1
0069 . JMP 5 => 0094
0094 . RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0065 . UGET 5 2 ; finish_goto
0066 . MOV 6 1
0067 . MOV 7 3
0068 . CALL 5 1 3
0000 . . JFUNCF 4 3 ; ssa.lua:52
0001 . . TDUP 2 1
0002 . . TGETS 3 1 2 ; "label"
0003 . . TSETB 3 2 2
0004 . . TSETS 2 0 0 ; "control"
0005 . . RET0 0 1
0069 . JMP 5 => 0094
0094 . RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
---- TRACE 4 abort ssa.lua:79 -- down-recursion, restarting
---- TRACE 4 start ssa.lua:79
0094 RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0065 . UGET 5 2 ; finish_goto
0066 . MOV 6 1
0067 . MOV 7 3
0068 . CALL 5 1 3
0000 . . JFUNCF 4 3 ; ssa.lua:52
0001 . . TDUP 2 1
0002 . . TGETS 3 1 2 ; "label"
0003 . . TSETB 3 2 2
0004 . . TSETS 2 0 0 ; "control"
0005 . . RET0 0 1
0069 . JMP 5 => 0094
0094 . RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
0055 JMP 5 => 0094
0094 RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0065 . UGET 5 2 ; finish_goto
0066 . MOV 6 1
0067 . MOV 7 3
0068 . CALL 5 1 3
0000 . . JFUNCF 4 3 ; ssa.lua:52
0001 . . TDUP 2 1
0002 . . TGETS 3 1 2 ; "label"
0003 . . TSETB 3 2 2
0004 . . TSETS 2 0 0 ; "control"
0005 . . RET0 0 1
0069 . JMP 5 => 0094
0094 . RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
---- TRACE 4 IR
.... SNAP #0 [ ---- ]
.... SNAP #1 [ ---- ]
0002 > p32 RETF proto: 0x40ff5d48 [0x40ff5e00]
.... SNAP #2 [ ---- ---- ---- ---- ---- ---- ---- ---- ]
0003 fun SLOAD #0 R
0004 > fun EQ 0003 ssa.lua:55
0005 rbp > tab SLOAD #1 T
0006 int FLOAD 0005 tab.asize
0007 > int ABC 0006 +4 
0008 rbp p32 FLOAD 0005 tab.array
0009 p32 AREF 0008 +4 
0010 rbx > tab ALOAD 0009
0011 rbp > tab SLOAD #7 T
0012 r15 > tab SLOAD #3 T
0013 r14 > tab SLOAD #4 T
0014 r12 tab FLOAD ssa.lua:55 func.env
0015 rsi p32 HREF 0014 "assert"
0016 > p32 EQ 0015 [0x416bd458]
0017 r13 tab FLOAD 0014 tab.meta
0018 > tab NE 0017 [NULL]
0019 int FLOAD 0017 tab.hmask
0020 > int EQ 0019 +1 
0021 rsi p32 FLOAD 0017 tab.node
0022 > p32 HREFK 0021 "__index" @1
0023 rsi > tab HLOAD 0022
0024 int FLOAD 0023 tab.hmask
0025 > int EQ 0024 +63 
0026 rsi p32 FLOAD 0023 tab.node
0027 > p32 HREFK 0026 "assert" @3
0028 > fun HLOAD 0027
0029 rdx p32 HREF 0014 "type"
0030 > p32 EQ 0029 [0x416bd458]
0031 > p32 HREFK 0026 "type" @60
0032 > fun HLOAD 0031
0033 > fun EQ 0032 type
0034 > fun EQ 0028 assert
0035 int FLOAD 0010 tab.asize
0036 > int ABC 0035 +1 
0037 rsi p32 FLOAD 0010 tab.array
0038 p32 AREF 0037 +1 
0039 [10] > str ALOAD 0038
.... SNAP #3 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0040 > str NE 0039 "if"
.... SNAP #4 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0041 > str NE 0039 "let"
.... SNAP #5 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0042 > str NE 0039 "true"
.... SNAP #6 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0043 > str EQ 0039 "false"
.... SNAP #7 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0044 [c] > tab TDUP {0x40fe38f0}
0045 int FLOAD 0013 tab.hmask
0046 > int EQ 0045 +1 
0047 rdx p32 FLOAD 0013 tab.node
0048 > p32 HREFK 0047 "label" @1
0049 rdx > str HLOAD 0048
0050 rax p32 FLOAD 0044 tab.array
0051 p32 AREF 0050 +2 
0052 str ASTORE 0051 0049
.... SNAP #8 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ssa.lua:52|0011 ---- 0044 ---- ]
0053 rdx p32 HREF 0011 "control"
0054 > p32 EQ 0053 [0x416bd458]
0055 tab FLOAD 0011 tab.meta
0056 > tab EQ 0055 [NULL]
0057 rbx p32 NEWREF 0011 "control"
0058 tab HSTORE 0057 0044
0059 nil TBAR 0011
.... SNAP #9 [ ssa.lua:55|---- ---- ---- ---- ---- ]
0060 > p32 RETF proto: 0x40ff5d48 [0x40ff5e64]
.... SNAP #10 [ ---- ---- ---- ---- ---- ---- ]
0061 > p32 RETF proto: 0x40ff5d48 [0x40ff5e00]
.... SNAP #11 [ ---- ---- ---- ---- ---- ---- ---- ---- ]
0062 fun SLOAD #0 R
0063 > fun EQ 0062 ssa.lua:55
0064 rbp > tab SLOAD #1 T
0065 int FLOAD 0064 tab.asize
0066 > int ABC 0065 +4 
0067 rbp p32 FLOAD 0064 tab.array
0068 p32 AREF 0067 +4 
0069 rbx > tab ALOAD 0068
0070 rbp > tab SLOAD #7 T
0071 r15 > tab SLOAD #3 T
0072 r14 > tab SLOAD #4 T
0073 rsi p32 HREF 0014 "assert"
0074 > p32 EQ 0073 [0x416bd458]
0075 int FLOAD 0017 tab.hmask
0076 > int EQ 0075 +1 
0077 r13 p32 FLOAD 0017 tab.node
0078 > p32 HREFK 0077 "__index" @1
0079 r13 > tab HLOAD 0078
0080 int FLOAD 0079 tab.hmask
0081 > int EQ 0080 +63 
0082 r13 p32 FLOAD 0079 tab.node
0083 > p32 HREFK 0082 "assert" @3
0084 > fun HLOAD 0083
0085 rsi p32 HREF 0014 "type"
0086 > p32 EQ 0085 [0x416bd458]
0087 > p32 HREFK 0082 "type" @60
0088 > fun HLOAD 0087
0089 > fun EQ 0088 type
0090 > fun EQ 0084 assert
0091 int FLOAD 0069 tab.asize
0092 > int ABC 0091 +1 
0093 r13 p32 FLOAD 0069 tab.array
0094 p32 AREF 0093 +1 
0095 r13 > str ALOAD 0094
.... SNAP #12 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0069 0070 0071 0072 0095 ]
0096 > str NE 0095 "if"
.... SNAP #13 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0069 0070 0071 0072 0095 ]
0097 > str NE 0095 "let"
.... SNAP #14 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0069 0070 0071 0072 0095 ]
0098 > str NE 0095 "true"
.... SNAP #15 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0069 0070 0071 0072 0095 ]
0099 > str EQ 0095 "false"
.... SNAP #16 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0069 0070 0071 0072 0095 ]
0100 [8] > tab TDUP {0x40fe38f0}
0101 int FLOAD 0072 tab.hmask
0102 > int EQ 0101 +1 
0103 r12 p32 FLOAD 0072 tab.node
0104 > p32 HREFK 0103 "label" @1
0105 r12 > str HLOAD 0104
0106 rax p32 FLOAD 0100 tab.array
0107 p32 AREF 0106 +2 
0108 str ASTORE 0107 0105
.... SNAP #17 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0069 0070 0071 0072 0095 ssa.lua:52|0070 ---- 0100 ---- ]
0109 rsi p32 HREF 0070 "control"
0110 > p32 EQ 0109 [0x416bd458]
0111 tab FLOAD 0070 tab.meta
0112 > tab EQ 0111 [NULL]
0113 rbx p32 NEWREF 0070 "control"
0114 tab HSTORE 0113 0100
0115 nil TBAR 0070
.... SNAP #18 [ ssa.lua:55|]
---- TRACE 4 mcode 1484
0bcbf398 add rsp, -0x10
0bcbf39c mov dword [0x416bd410], 0x4
0bcbf3a7 mov edi, [0x416bd3d8]
0bcbf3ae cmp edi, [0x416bd3dc]
0bcbf3b5 jb 0x0bcbf3ce
0bcbf3b7 mov esi, 0x2
0bcbf3bc mov edi, 0x416bd3b8
0bcbf3c1 call 0x00421730 ->lj_gc_step_jit
0bcbf3c6 test eax, eax
0bcbf3c8 jnz 0x0bcb0010 ->0
0bcbf3ce mov edi, [0x416bd4b0]
0bcbf3d5 mov edx, [0x416bd4b4]
0bcbf3dc cmp dword [rdx-0x4], 0x40ff5e00
0bcbf3e3 jnz 0x0bcb0014 ->1
0bcbf3e9 add edx, -0x40
0bcbf3ec mov [0x416bd4b4], edx
0bcbf3f3 cmp dword [rdx-0x8], 0x416cd018
0bcbf3fa jnz 0x0bcb0018 ->2
0bcbf400 cmp dword [rdx+0x4], -0x0c
0bcbf404 jnz 0x0bcb0018 ->2
0bcbf40a mov ebp, [rdx]
0bcbf40c cmp dword [rbp+0x18], +0x04
0bcbf410 jbe 0x0bcb0018 ->2
0bcbf416 mov ebp, [rbp+0x8]
0bcbf419 cmp dword [rbp+0x24], -0x0c
0bcbf41d jnz 0x0bcb0018 ->2
0bcbf423 mov ebx, [rbp+0x20]
0bcbf426 cmp dword [rdx+0x34], -0x0c
0bcbf42a jnz 0x0bcb0018 ->2
0bcbf430 mov ebp, [rdx+0x30]
0bcbf433 cmp dword [rdx+0x14], -0x0c
0bcbf437 jnz 0x0bcb0018 ->2
0bcbf43d mov r15d, [rdx+0x10]
0bcbf441 cmp dword [rdx+0x1c], -0x0c
0bcbf445 jnz 0x0bcb0018 ->2
0bcbf44b mov r14d, [rdx+0x18]
0bcbf44f mov r12d, [0x416cd020]
0bcbf457 mov esi, [r12+0x1c]
0bcbf45c and esi, 0xce2b6183
0bcbf462 lea esi, [rsi+rsi*2]
0bcbf465 shl esi, 0x03
0bcbf468 add esi, [r12+0x14]
0bcbf46d cmp dword [rsi+0xc], -0x05
0bcbf471 jnz 0x0bcbf480
0bcbf473 cmp dword [rsi+0x8], 0x416bfdb0
0bcbf47a jz 0x0bcb0018 ->2
0bcbf480 mov esi, [rsi+0x10]
0bcbf483 test esi, esi
0bcbf485 jnz 0x0bcbf46d
0bcbf487 mov r13d, [r12+0x10]
0bcbf48c test r13d, r13d
0bcbf48f jz 0x0bcb0018 ->2
0bcbf495 cmp dword [r13+0x1c], +0x01
0bcbf49a jnz 0x0bcb0018 ->2
0bcbf4a0 mov esi, [r13+0x14]
0bcbf4a4 mov rdx, 0xfffffffb416bf4c8
0bcbf4ae cmp rdx, [rsi+0x20]
0bcbf4b2 jnz 0x0bcb0018 ->2
0bcbf4b8 cmp dword [rsi+0x1c], -0x0c
0bcbf4bc jnz 0x0bcb0018 ->2
0bcbf4c2 mov esi, [rsi+0x18]
0bcbf4c5 cmp dword [rsi+0x1c], +0x3f
0bcbf4c9 jnz 0x0bcb0018 ->2
0bcbf4cf mov esi, [rsi+0x14]
0bcbf4d2 mov rdx, 0xfffffffb416bfdb0
0bcbf4dc cmp rdx, [rsi+0x50]
0bcbf4e0 jnz 0x0bcb0018 ->2
0bcbf4e6 cmp dword [rsi+0x4c], -0x09
0bcbf4ea jnz 0x0bcb0018 ->2
0bcbf4f0 mov edx, [r12+0x1c]
0bcbf4f5 and edx, 0x798a813c
0bcbf4fb lea edx, [rdx+rdx*2]
0bcbf4fe shl edx, 0x03
0bcbf501 add edx, [r12+0x14]
0bcbf506 cmp dword [rdx+0xc], -0x05
0bcbf50a jnz 0x0bcbf519
0bcbf50c cmp dword [rdx+0x8], 0x416bffb0
0bcbf513 jz 0x0bcb0018 ->2
0bcbf519 mov edx, [rdx+0x10]
0bcbf51c test edx, edx
0bcbf51e jnz 0x0bcbf506
0bcbf520 mov rdx, 0xfffffffb416bffb0
0bcbf52a cmp rdx, [rsi+0x5a8]
0bcbf531 jnz 0x0bcb0018 ->2
0bcbf537 cmp dword [rsi+0x5a4], -0x09
0bcbf53e jnz 0x0bcb0018 ->2
0bcbf544 cmp dword [rsi+0x5a0], 0x416bff18
0bcbf54e jnz 0x0bcb0018 ->2
0bcbf554 cmp dword [rsi+0x48], 0x416bfd88
0bcbf55b jnz 0x0bcb0018 ->2
0bcbf561 cmp dword [rbx+0x18], +0x01
0bcbf565 jbe 0x0bcb0018 ->2
0bcbf56b mov esi, [rbx+0x8]
0bcbf56e cmp dword [rsi+0xc], -0x05
0bcbf572 jnz 0x0bcb0018 ->2
0bcbf578 mov esi, [rsi+0x8]
0bcbf57b mov [rsp+0x10], esi
0bcbf57f cmp esi, 0x416bf8f8
0bcbf585 jz 0x0bcb001c ->3
0bcbf58b cmp esi, 0x40fea3e8
0bcbf591 jz 0x0bcb0020 ->4
0bcbf597 cmp esi, 0x416bfa18
0bcbf59d jz 0x0bcb0024 ->5
0bcbf5a3 cmp esi, 0x416bf870
0bcbf5a9 jnz 0x0bcb0028 ->6
0bcbf5af mov esi, 0x40fe38f0
0bcbf5b4 call 0x004223c0 ->lj_tab_dup
0bcbf5b9 mov [rsp+0xc], eax
0bcbf5bd mov edi, [0x416bd4b0]
0bcbf5c4 cmp dword [r14+0x1c], +0x01
0bcbf5c9 jnz 0x0bcb002c ->7
0bcbf5cf mov edx, [r14+0x14]
0bcbf5d3 mov rcx, 0xfffffffb40ff4738
0bcbf5dd cmp rcx, [rdx+0x20]
0bcbf5e1 jnz 0x0bcb002c ->7
0bcbf5e7 cmp dword [rdx+0x1c], -0x05
0bcbf5eb jnz 0x0bcb002c ->7
0bcbf5f1 mov edx, [rdx+0x18]
0bcbf5f4 mov eax, [rax+0x8]
0bcbf5f7 mov dword [rax+0x14], 0xfffffffb
0bcbf5fe mov [rax+0x10], edx
0bcbf601 mov edx, [rbp+0x1c]
0bcbf604 and edx, 0x2a54dc55
0bcbf60a lea edx, [rdx+rdx*2]
0bcbf60d shl edx, 0x03
0bcbf610 add edx, [rbp+0x14]
0bcbf613 cmp dword [rdx+0xc], -0x05
0bcbf617 jnz 0x0bcbf626
0bcbf619 cmp dword [rdx+0x8], 0x40ff4ea0
0bcbf620 jz 0x0bcb0030 ->8
0bcbf626 mov edx, [rdx+0x10]
0bcbf629 test edx, edx
0bcbf62b jnz 0x0bcbf613
0bcbf62d cmp dword [rbp+0x10], +0x00
0bcbf631 jnz 0x0bcb0030 ->8
0bcbf637 mov edx, 0x416bd448
0bcbf63c mov dword [rdx+0x4], 0xfffffffb
0bcbf643 mov dword [rdx], 0x40ff4ea0
0bcbf649 mov esi, ebp
0bcbf64b call 0x00422cf0 ->lj_tab_newkey
0bcbf650 mov ebx, eax
0bcbf652 mov edi, [0x416bd4b0]
0bcbf659 mov edx, [0x416bd4b4]
0bcbf660 mov eax, [rsp+0xc]
0bcbf664 mov dword [rbx+0x4], 0xfffffff4
0bcbf66b mov [rbx], eax
0bcbf66d test byte [rbp+0x4], 0x4
0bcbf671 jz 0x0bcbf688
0bcbf673 and byte [rbp+0x4], 0xfb
0bcbf677 mov esi, [0x416bd3f4]
0bcbf67e mov [0x416bd3f4], ebp
0bcbf685 mov [rbp+0xc], esi
0bcbf688 cmp dword [rdx-0x4], 0x40ff5e64
0bcbf68f jnz 0x0bcb0034 ->9
0bcbf695 add edx, -0x48
0bcbf698 mov [0x416bd4b4], edx
0bcbf69f cmp dword [rdx-0x4], 0x40ff5e00
0bcbf6a6 jnz 0x0bcb0038 ->10
0bcbf6ac add edx, -0x40
0bcbf6af mov [0x416bd4b4], edx
0bcbf6b6 cmp dword [rdx-0x8], 0x416cd018
0bcbf6bd jnz 0x0bcb003c ->11
0bcbf6c3 cmp dword [rdx+0x4], -0x0c
0bcbf6c7 jnz 0x0bcb003c ->11
0bcbf6cd mov ebp, [rdx]
0bcbf6cf cmp dword [rbp+0x18], +0x04
0bcbf6d3 jbe 0x0bcb003c ->11
0bcbf6d9 mov ebp, [rbp+0x8]
0bcbf6dc cmp dword [rbp+0x24], -0x0c
0bcbf6e0 jnz 0x0bcb003c ->11
0bcbf6e6 mov ebx, [rbp+0x20]
0bcbf6e9 cmp dword [rdx+0x34], -0x0c
0bcbf6ed jnz 0x0bcb003c ->11
0bcbf6f3 mov ebp, [rdx+0x30]
0bcbf6f6 cmp dword [rdx+0x14], -0x0c
0bcbf6fa jnz 0x0bcb003c ->11
0bcbf700 mov r15d, [rdx+0x10]
0bcbf704 cmp dword [rdx+0x1c], -0x0c
0bcbf708 jnz 0x0bcb003c ->11
0bcbf70e mov r14d, [rdx+0x18]
0bcbf712 mov esi, [r12+0x1c]
0bcbf717 and esi, 0xce2b6183
0bcbf71d lea esi, [rsi+rsi*2]
0bcbf720 shl esi, 0x03
0bcbf723 add esi, [r12+0x14]
0bcbf728 cmp dword [rsi+0xc], -0x05
0bcbf72c jnz 0x0bcbf73b
0bcbf72e cmp dword [rsi+0x8], 0x416bfdb0
0bcbf735 jz 0x0bcb003c ->11
0bcbf73b mov esi, [rsi+0x10]
0bcbf73e test esi, esi
0bcbf740 jnz 0x0bcbf728
0bcbf742 cmp dword [r13+0x1c], +0x01
0bcbf747 jnz 0x0bcb003c ->11
0bcbf74d mov r13d, [r13+0x14]
0bcbf751 mov rsi, 0xfffffffb416bf4c8
0bcbf75b cmp rsi, [r13+0x20]
0bcbf75f jnz 0x0bcb003c ->11
0bcbf765 cmp dword [r13+0x1c], -0x0c
0bcbf76a jnz 0x0bcb003c ->11
0bcbf770 mov r13d, [r13+0x18]
0bcbf774 cmp dword [r13+0x1c], +0x3f
0bcbf779 jnz 0x0bcb003c ->11
0bcbf77f mov r13d, [r13+0x14]
0bcbf783 mov rsi, 0xfffffffb416bfdb0
0bcbf78d cmp rsi, [r13+0x50]
0bcbf791 jnz 0x0bcb003c ->11
0bcbf797 cmp dword [r13+0x4c], -0x09
0bcbf79c jnz 0x0bcb003c ->11
0bcbf7a2 mov esi, [r12+0x1c]
0bcbf7a7 and esi, 0x798a813c
0bcbf7ad lea esi, [rsi+rsi*2]
0bcbf7b0 shl esi, 0x03
0bcbf7b3 add esi, [r12+0x14]
0bcbf7b8 cmp dword [rsi+0xc], -0x05
0bcbf7bc jnz 0x0bcbf7cb
0bcbf7be cmp dword [rsi+0x8], 0x416bffb0
0bcbf7c5 jz 0x0bcb003c ->11
0bcbf7cb mov esi, [rsi+0x10]
0bcbf7ce test esi, esi
0bcbf7d0 jnz 0x0bcbf7b8
0bcbf7d2 mov rsi, 0xfffffffb416bffb0
0bcbf7dc cmp rsi, [r13+0x5a8]
0bcbf7e3 jnz 0x0bcb003c ->11
0bcbf7e9 cmp dword [r13+0x5a4], -0x09
0bcbf7f1 jnz 0x0bcb003c ->11
0bcbf7f7 cmp dword [r13+0x5a0], 0x416bff18
0bcbf802 jnz 0x0bcb003c ->11
0bcbf808 cmp dword [r13+0x48], 0x416bfd88
0bcbf810 jnz 0x0bcb003c ->11
0bcbf816 cmp dword [rbx+0x18], +0x01
0bcbf81a jbe 0x0bcb003c ->11
0bcbf820 mov r13d, [rbx+0x8]
0bcbf824 cmp dword [r13+0xc], -0x05
0bcbf829 jnz 0x0bcb003c ->11
0bcbf82f mov r13d, [r13+0x8]
0bcbf833 cmp r13d, 0x416bf8f8
0bcbf83a jz 0x0bcb0040 ->12
0bcbf840 cmp r13d, 0x40fea3e8
0bcbf847 jz 0x0bcb0044 ->13
0bcbf84d cmp r13d, 0x416bfa18
0bcbf854 jz 0x0bcb0048 ->14
0bcbf85a cmp r13d, 0x416bf870
0bcbf861 jnz 0x0bcb004c ->15
0bcbf867 mov esi, 0x40fe38f0
0bcbf86c call 0x004223c0 ->lj_tab_dup
0bcbf871 mov [rsp+0x8], eax
0bcbf875 mov edi, [0x416bd4b0]
0bcbf87c cmp dword [r14+0x1c], +0x01
0bcbf881 jnz 0x0bcb0050 ->16
0bcbf887 mov r12d, [r14+0x14]
0bcbf88b mov rsi, 0xfffffffb40ff4738
0bcbf895 cmp rsi, [r12+0x20]
0bcbf89a jnz 0x0bcb0050 ->16
0bcbf8a0 cmp dword [r12+0x1c], -0x05
0bcbf8a6 jnz 0x0bcb0050 ->16
0bcbf8ac mov r12d, [r12+0x18]
0bcbf8b1 mov eax, [rax+0x8]
0bcbf8b4 mov dword [rax+0x14], 0xfffffffb
0bcbf8bb mov [rax+0x10], r12d
0bcbf8bf mov esi, [rbp+0x1c]
0bcbf8c2 and esi, 0x2a54dc55
0bcbf8c8 lea esi, [rsi+rsi*2]
0bcbf8cb shl esi, 0x03
0bcbf8ce add esi, [rbp+0x14]
0bcbf8d1 cmp dword [rsi+0xc], -0x05
0bcbf8d5 jnz 0x0bcbf8e4
0bcbf8d7 cmp dword [rsi+0x8], 0x40ff4ea0
0bcbf8de jz 0x0bcb0054 ->17
0bcbf8e4 mov esi, [rsi+0x10]
0bcbf8e7 test esi, esi
0bcbf8e9 jnz 0x0bcbf8d1
0bcbf8eb cmp dword [rbp+0x10], +0x00
0bcbf8ef jnz 0x0bcb0054 ->17
0bcbf8f5 mov edx, 0x416bd448
0bcbf8fa mov dword [rdx+0x4], 0xfffffffb
0bcbf901 mov dword [rdx], 0x40ff4ea0
0bcbf907 mov esi, ebp
0bcbf909 call 0x00422cf0 ->lj_tab_newkey
0bcbf90e mov ebx, eax
0bcbf910 mov edx, [0x416bd4b4]
0bcbf917 mov eax, [rsp+0x8]
0bcbf91b mov dword [rbx+0x4], 0xfffffff4
0bcbf922 mov [rbx], eax
0bcbf924 test byte [rbp+0x4], 0x4
0bcbf928 jz 0x0bcbf93f
0bcbf92a and byte [rbp+0x4], 0xfb
0bcbf92e mov edi, [0x416bd3f4]
0bcbf935 mov [0x416bd3f4], ebp
0bcbf93c mov [rbp+0xc], edi
0bcbf93f mov eax, [0x416bd4b0]
0bcbf946 mov eax, [rax+0x20]
0bcbf949 sub eax, edx
0bcbf94b cmp eax, +0x68
0bcbf94e jb 0x0bcb0058 ->18
0bcbf954 mov dword [rdx-0x8], 0x416cd018
0bcbf95b add rsp, +0x10
0bcbf95f jmp 0x0bcbf398
---- TRACE 4 stop -> down-recursion
---- TRACE 4 exit 1
---- TRACE 2 exit 5
---- TRACE 5 start ssa.lua:46
0001 TDUP 2 1
0002 TSETB 1 2 2
0003 TSETS 2 0 0 ; "control"
0004 RET0 0 1
---- TRACE 5 IR
.... SNAP #0 [ ---- ---- ---- ]
0001 [8] > tab TDUP {0x40ff5470}
0002 rbp > tab SLOAD #2 T
0003 rax p32 FLOAD 0001 tab.array
0004 p32 AREF 0003 +2 
0005 tab ASTORE 0004 0002
.... SNAP #1 [ ---- ---- ---- 0001 ]
0006 rbp > tab SLOAD #1 T
0007 rsi p32 HREF 0006 "control"
0008 > p32 EQ 0007 [0x416bd458]
0009 tab FLOAD 0006 tab.meta
0010 > tab EQ 0009 [NULL]
0011 rbx p32 NEWREF 0006 "control"
0012 tab HSTORE 0011 0001
0013 nil TBAR 0006
.... SNAP #2 [ ---- ]
---- TRACE 5 mcode 269
0bcbf284 mov dword [0x416bd410], 0x5
0bcbf28f mov edi, [0x416bd3d8]
0bcbf296 cmp edi, [0x416bd3dc]
0bcbf29d jb 0x0bcbf2b6
0bcbf29f mov esi, 0x1
0bcbf2a4 mov edi, 0x416bd3b8
0bcbf2a9 call 0x00421730 ->lj_gc_step_jit
0bcbf2ae test eax, eax
0bcbf2b0 jnz 0x0bcb0010 ->0
0bcbf2b6 mov edi, [0x416bd4b0]
0bcbf2bd mov esi, 0x40ff5470
0bcbf2c2 call 0x004223c0 ->lj_tab_dup
0bcbf2c7 mov [rsp+0x8], eax
0bcbf2cb mov edi, [0x416bd4b0]
0bcbf2d2 mov edx, [0x416bd4b4]
0bcbf2d9 cmp dword [rdx+0xc], -0x0c
0bcbf2dd jnz 0x0bcb0010 ->0
0bcbf2e3 mov ebp, [rdx+0x8]
0bcbf2e6 mov eax, [rax+0x8]
0bcbf2e9 mov dword [rax+0x14], 0xfffffff4
0bcbf2f0 mov [rax+0x10], ebp
0bcbf2f3 cmp dword [rdx+0x4], -0x0c
0bcbf2f7 jnz 0x0bcb0014 ->1
0bcbf2fd mov ebp, [rdx]
0bcbf2ff mov esi, [rbp+0x1c]
0bcbf302 and esi, 0x2a54dc55
0bcbf308 lea esi, [rsi+rsi*2]
0bcbf30b shl esi, 0x03
0bcbf30e add esi, [rbp+0x14]
0bcbf311 cmp dword [rsi+0xc], -0x05
0bcbf315 jnz 0x0bcbf324
0bcbf317 cmp dword [rsi+0x8], 0x40ff4ea0
0bcbf31e jz 0x0bcb0014 ->1
0bcbf324 mov esi, [rsi+0x10]
0bcbf327 test esi, esi
0bcbf329 jnz 0x0bcbf311
0bcbf32b cmp dword [rbp+0x10], +0x00
0bcbf32f jnz 0x0bcb0014 ->1
0bcbf335 mov edx, 0x416bd448
0bcbf33a mov dword [rdx+0x4], 0xfffffffb
0bcbf341 mov dword [rdx], 0x40ff4ea0
0bcbf347 mov esi, ebp
0bcbf349 call 0x00422cf0 ->lj_tab_newkey
0bcbf34e mov ebx, eax
0bcbf350 mov edx, [0x416bd4b4]
0bcbf357 mov eax, [rsp+0x8]
0bcbf35b mov dword [rbx+0x4], 0xfffffff4
0bcbf362 mov [rbx], eax
0bcbf364 test byte [rbp+0x4], 0x4
0bcbf368 jz 0x0bcbf37f
0bcbf36a and byte [rbp+0x4], 0xfb
0bcbf36e mov edi, [0x416bd3f4]
0bcbf375 mov [0x416bd3f4], ebp
0bcbf37c mov [rbp+0xc], edi
0bcbf37f xor eax, eax
0bcbf381 mov ebx, 0x40ff5800
0bcbf386 mov r14d, 0x416be008
0bcbf38c jmp 0x00420177
---- TRACE 5 stop -> return
---- TRACE 4 exit 3
---- TRACE 2 exit 1
---- TRACE 6 start 2/1 ssa.lua:59
0014 UGET 5 0 ; add_block
0015 CALL 5 2 1
0000 . JFUNCF 3 1 ; ssa.lua:39
0001 . UGET 0 0 ; label_counter
0002 . ADDVN 0 0 0 ; 1
0003 . USETV 0 0 ; label_counter
0004 . KSTR 0 0 ; "L"
0005 . UGET 1 0 ; label_counter
0006 . CAT 0 0 1
0007 . TDUP 1 1
0008 . TNEW 2 0
0009 . TSETS 2 1 2 ; "bindings"
0010 . TSETS 0 1 3 ; "label"
0011 . UGET 2 1 ; ssa
0012 . TGETS 2 2 4 ; "blocks"
0013 . TSETV 1 2 0
0014 . RET1 1 2
0016 UGET 6 0 ; add_block
0017 CALL 6 2 1
0000 . JFUNCF 3 1 ; ssa.lua:39
0001 . UGET 0 0 ; label_counter
0002 . ADDVN 0 0 0 ; 1
0003 . USETV 0 0 ; label_counter
0004 . KSTR 0 0 ; "L"
0005 . UGET 1 0 ; label_counter
0006 . CAT 0 0 1
0007 . TDUP 1 1
0008 . TNEW 2 0
0009 . TSETS 2 1 2 ; "bindings"
0010 . TSETS 0 1 3 ; "label"
0011 . UGET 2 1 ; ssa
0012 . TGETS 2 2 4 ; "blocks"
0013 . TSETV 1 2 0
0014 . RET1 1 2
0018 UGET 7 1 ; compile_bool
0019 TGETB 8 0 2
0020 MOV 9 1
0021 MOV 10 5
0022 MOV 11 6
0023 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0014 . UGET 5 0 ; add_block
0015 . CALL 5 2 1
0000 . . JFUNCF 3 1 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0016 . UGET 6 0 ; add_block
0017 . CALL 6 2 1
0000 . . JFUNCF 3 1 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0018 . UGET 7 1 ; compile_bool
0019 . TGETB 8 0 2
0020 . MOV 9 1
0021 . MOV 10 5
0022 . MOV 11 6
0023 . CALL 7 1 5
0000 . . JFUNCF 13 2 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0070 . . ISNES 4 12 ; "match"
0071 . . JMP 5 => 0077
0077 . . ISNES 4 14 ; "fail"
0078 . . JMP 5 => 0084
0084 . . GGET 5 0 ; "assert"
0085 . . UGET 6 4 ; relops
0086 . . TGETV 6 6 4
0087 . . CALL 5 1 2
0000 . . . FUNCC ; assert
0088 . . UGET 5 5 ; finish_if
0089 . . MOV 6 1
0090 . . MOV 7 0
0091 . . MOV 8 2
0092 . . MOV 9 3
0093 . . CALL 5 1 5
0000 . . . FUNCF 6 ; ssa.lua:49
0001 . . . TDUP 4 1
0002 . . . TSETB 1 4 2
0003 . . . TGETS 5 2 2 ; "label"
0004 . . . TSETB 5 4 3
0005 . . . TGETS 5 3 2 ; "label"
0006 . . . TSETB 5 4 4
0007 . . . TSETS 4 0 0 ; "control"
0008 . . . RET0 0 1
0094 . . JLOOP 1 4
---- TRACE 6 IR
0001 rbx str SLOAD #5 PI
.... SNAP #0 [ ---- ---- ---- ---- ---- 0001 ]
0002 fun SLOAD #0 R
0003 > fun EQ 0002 ssa.lua:55
0004 [44] > p32 UREFO ssa.lua:39 #0
0005 xmm7 > num ULOAD 0004
0006 [58] num ADD 0005 +1 
0007 num USTORE 0004 0006
.... SNAP #1 [ ssa.lua:55|---- ---- ---- ---- 0001 ssa.lua:39|---- ]
0008 str TOSTR 0006 NUM
0009 rdi p32 BUFHDR [0x416bd414] RESET
0010 rdi p32 BUFPUT 0009 "L" 
0011 rdi p32 BUFPUT 0010 0008
0012 [60] str BUFSTR 0011 0009
0013 [8] > tab TDUP {0x40ff53c0}
0014 r15 > tab TNEW #0 #0
0015 rbp p32 FLOAD 0013 tab.node
0016 p32 HREFK 0015 "bindings" @2
0017 tab HSTORE 0016 0014
0018 p32 HREFK 0015 "label" @3
0019 str HSTORE 0018 0012
.... SNAP #2 [ ssa.lua:55|---- ---- ---- ---- 0001 ssa.lua:39|0012 0013 ---- ]
0020 rbp > p32 UREFO ssa.lua:39 #1
0021 [2c] > tab ULOAD 0020
0022 int FLOAD 0021 tab.hmask
0023 > int EQ 0022 +1 
0024 rbp p32 FLOAD 0021 tab.node
0025 > p32 HREFK 0024 "blocks" @0
0026 rbp > tab HLOAD 0025
0027 rsi p32 HREF 0026 0012
0028 > p32 EQ 0027 [0x416bd458]
0029 tab FLOAD 0026 tab.meta
0030 > tab EQ 0029 [NULL]
0031 r15 p32 NEWREF 0026 0012
0032 tab HSTORE 0031 0013
0033 nil TBAR 0026
0034 p32 FREF 0026 tab.nomm
0035 u8  FSTORE 0034 +0 
0036 [50] num ADD 0006 +1 
0037 num USTORE 0004 0036
.... SNAP #3 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 ssa.lua:39|---- ]
0038 str TOSTR 0036 NUM
0039 rdi p32 BUFHDR [0x416bd414] RESET
0040 rdi p32 BUFPUT 0039 "L" 
0041 rdi p32 BUFPUT 0040 0038
0042 [4c] str BUFSTR 0041 0039
0043 rbp > tab TDUP {0x40ff53c0}
0044 r14 > tab TNEW #0 #0
0045 r15 p32 FLOAD 0043 tab.node
0046 p32 HREFK 0045 "bindings" @2
0047 tab HSTORE 0046 0044
0048 p32 HREFK 0045 "label" @3
0049 str HSTORE 0048 0042
.... SNAP #4 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 ssa.lua:39|0042 0043 ---- ]
0050 int FLOAD 0021 tab.hmask
0051 > int EQ 0050 +1 
0052 r15 p32 FLOAD 0021 tab.node
0053 > p32 HREFK 0052 "blocks" @0
0054 r15 > tab HLOAD 0053
0055 rsi p32 HREF 0054 0042
0056 > p32 EQ 0055 [0x416bd458]
0057 tab FLOAD 0054 tab.meta
0058 > tab EQ 0057 [NULL]
0059 rax p32 NEWREF 0054 0042
0060 tab HSTORE 0059 0043
0061 nil TBAR 0054
0062 p32 FREF 0054 tab.nomm
0063 u8  FSTORE 0062 +0 
.... SNAP #5 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 ssa.lua:39|---- 0043 ---- ]
0064 r15 > tab SLOAD #1 T
0065 int FLOAD 0064 tab.asize
0066 > int ABC 0065 +2 
0067 r15 p32 FLOAD 0064 tab.array
0068 p32 AREF 0067 +2 
0069 r15 > tab ALOAD 0068
0070 r14 > tab SLOAD #2 T
0071 [20] tab FLOAD ssa.lua:55 func.env
0072 rsi p32 HREF 0071 "assert"
0073 > p32 EQ 0072 [0x416bd458]
0074 [28] tab FLOAD 0071 tab.meta
0075 > tab NE 0074 [NULL]
0076 int FLOAD 0074 tab.hmask
0077 > int EQ 0076 +1 
0078 r13 p32 FLOAD 0074 tab.node
0079 > p32 HREFK 0078 "__index" @1
0080 r13 > tab HLOAD 0079
0081 int FLOAD 0080 tab.hmask
0082 > int EQ 0081 +63 
0083 r13 p32 FLOAD 0080 tab.node
0084 > p32 HREFK 0083 "assert" @3
0085 > fun HLOAD 0084
0086 rsi p32 HREF 0071 "type"
0087 > p32 EQ 0086 [0x416bd458]
0088 > p32 HREFK 0083 "type" @60
0089 > fun HLOAD 0088
0090 > fun EQ 0089 type
0091 > fun EQ 0085 assert
0092 int FLOAD 0069 tab.asize
0093 > int ABC 0092 +1 
0094 r13 p32 FLOAD 0069 tab.array
0095 p32 AREF 0094 +1 
0096 r13 > str ALOAD 0095
.... SNAP #6 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 0043 ssa.lua:55|0069 0070 0013 0043 0096 ]
0097 > str EQ 0096 "if"
0098 [38] num ADD 0036 +1 
0099 num USTORE 0004 0098
.... SNAP #7 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 0043 ssa.lua:55|0069 0070 0013 0043 0096 ssa.lua:39|---- ]
0100 str TOSTR 0098 NUM
0101 rdi p32 BUFHDR [0x416bd414] RESET
0102 rdi p32 BUFPUT 0101 "L" 
0103 rdi p32 BUFPUT 0102 0100
0104 [48] str BUFSTR 0103 0101
0105 r12 > tab TDUP {0x40ff53c0}
0106 rcx > tab TNEW #0 #0
0107 rdx p32 FLOAD 0105 tab.node
0108 p32 HREFK 0107 "bindings" @2
0109 tab HSTORE 0108 0106
0110 p32 HREFK 0107 "label" @3
0111 str HSTORE 0110 0104
.... SNAP #8 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 0043 ssa.lua:55|0069 0070 0013 0043 0096 ssa.lua:39|0104 0105 ---- ]
0112 int FLOAD 0021 tab.hmask
0113 > int EQ 0112 +1 
0114 rsi p32 FLOAD 0021 tab.node
0115 > p32 HREFK 0114 "blocks" @0
0116 [40] > tab HLOAD 0115
0117 rdx p32 HREF 0116 0104
0118 > p32 EQ 0117 [0x416bd458]
0119 tab FLOAD 0116 tab.meta
0120 > tab EQ 0119 [NULL]
0121 rax p32 NEWREF 0116 0104
0122 tab HSTORE 0121 0105
0123 nil TBAR 0116
0124 p32 FREF 0116 tab.nomm
0125 u8  FSTORE 0124 +0 
0126 [30] num ADD 0098 +1 
0127 num USTORE 0004 0126
.... SNAP #9 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 0043 ssa.lua:55|0069 0070 0013 0043 0096 0105 ssa.lua:39|---- ]
0128 str TOSTR 0126 NUM
0129 rdi p32 BUFHDR [0x416bd414] RESET
0130 rdi p32 BUFPUT 0129 "L" 
0131 rdi p32 BUFPUT 0130 0128
0132 [18] str BUFSTR 0131 0129
0133 [14] > tab TDUP {0x40ff53c0}
0134 rcx > tab TNEW #0 #0
0135 rdx p32 FLOAD 0133 tab.node
0136 p32 HREFK 0135 "bindings" @2
0137 tab HSTORE 0136 0134
0138 p32 HREFK 0135 "label" @3
0139 str HSTORE 0138 0132
.... SNAP #10 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 0043 ssa.lua:55|0069 0070 0013 0043 0096 0105 ssa.lua:39|0132 0133 ---- ]
0140 int FLOAD 0021 tab.hmask
0141 > int EQ 0140 +1 
0142 rsi p32 FLOAD 0021 tab.node
0143 > p32 HREFK 0142 "blocks" @0
0144 [24] > tab HLOAD 0143
0145 rdx p32 HREF 0144 0132
0146 > p32 EQ 0145 [0x416bd458]
0147 tab FLOAD 0144 tab.meta
0148 > tab EQ 0147 [NULL]
0149 rcx p32 NEWREF 0144 0132
0150 tab HSTORE 0149 0133
0151 nil TBAR 0144
0152 p32 FREF 0144 tab.nomm
0153 u8  FSTORE 0152 +0 
.... SNAP #11 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 0043 ssa.lua:55|0069 0070 0013 0043 0096 0105 ssa.lua:39|---- 0133 ---- ]
0154 int FLOAD 0069 tab.asize
0155 > int ABC 0154 +2 
0156 rdx p32 FLOAD 0069 tab.array
0157 p32 AREF 0156 +2 
0158 [10] > tab ALOAD 0157
0159 rdx p32 HREF 0071 "assert"
0160 > p32 EQ 0159 [0x416bd458]
0161 int FLOAD 0074 tab.hmask
0162 > int EQ 0161 +1 
0163 rsi p32 FLOAD 0074 tab.node
0164 > p32 HREFK 0163 "__index" @1
0165 rsi > tab HLOAD 0164
0166 int FLOAD 0165 tab.hmask
0167 > int EQ 0166 +63 
0168 rsi p32 FLOAD 0165 tab.node
0169 > p32 HREFK 0168 "assert" @3
0170 > fun HLOAD 0169
0171 rdx p32 HREF 0071 "type"
0172 > p32 EQ 0171 [0x416bd458]
0173 > p32 HREFK 0168 "type" @60
0174 > fun HLOAD 0173
0175 > fun EQ 0174 type
0176 > fun EQ 0170 assert
0177 int FLOAD 0158 tab.asize
0178 > int ABC 0177 +1 
0179 rsi p32 FLOAD 0158 tab.array
0180 p32 AREF 0179 +1 
0181 [1c] > str ALOAD 0180
.... SNAP #12 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 0043 ssa.lua:55|0069 0070 0013 0043 0096 0105 0133 ssa.lua:55|0158 0070 0105 0133 0181 ]
0182 > str NE 0181 "if"
.... SNAP #13 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 0043 ssa.lua:55|0069 0070 0013 0043 0096 0105 0133 ssa.lua:55|0158 0070 0105 0133 0181 ]
0183 > str NE 0181 "let"
.... SNAP #14 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 0043 ssa.lua:55|0069 0070 0013 0043 0096 0105 0133 ssa.lua:55|0158 0070 0105 0133 0181 ]
0184 > str NE 0181 "true"
.... SNAP #15 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 0043 ssa.lua:55|0069 0070 0013 0043 0096 0105 0133 ssa.lua:55|0158 0070 0105 0133 0181 ]
0185 > str NE 0181 "false"
.... SNAP #16 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 0043 ssa.lua:55|0069 0070 0013 0043 0096 0105 0133 ssa.lua:55|0158 0070 0105 0133 0181 ]
0186 > str NE 0181 "match"
.... SNAP #17 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 0043 ssa.lua:55|0069 0070 0013 0043 0096 0105 0133 ssa.lua:55|0158 0070 0105 0133 0181 ]
0187 > str NE 0181 "fail"
.... SNAP #18 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 0043 ssa.lua:55|0069 0070 0013 0043 0096 0105 0133 ssa.lua:55|0158 0070 0105 0133 0181 ]
0188 > p32 UREFC ssa.lua:55 #4
0189 rdx > tab ULOAD 0188
0190 rsi p32 HREF 0189 0181
0191 > tru HLOAD 0190
0192 [c] > tab TDUP {0x40fe9ad8}
0193 rdx p32 FLOAD 0192 tab.array
0194 p32 AREF 0193 +2 
0195 tab ASTORE 0194 0158
.... SNAP #19 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 0043 ssa.lua:55|0069 0070 0013 0043 0096 0105 0133 ssa.lua:55|0158 0070 0105 0133 0181 ssa.lua:49|0070 ---- 0105 0133 0192 ]
0196 int FLOAD 0105 tab.hmask
0197 > int EQ 0196 +3 
0198 rcx p32 FLOAD 0105 tab.node
0199 > p32 HREFK 0198 "label" @3
0200 rcx > str HLOAD 0199
0201 p32 AREF 0193 +3 
0202 str ASTORE 0201 0200
0203 p32 AREF 0193 +4 
0204 str ASTORE 0203 0132
.... SNAP #20 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 0043 ssa.lua:55|0069 0070 0013 0043 0096 0105 0133 ssa.lua:55|0158 0070 0105 0133 0181 ssa.lua:49|0070 ---- ---- ---- 0192 ---- ]
0205 rdx p32 HREF 0070 "control"
0206 > p32 EQ 0205 [0x416bd458]
0207 tab FLOAD 0070 tab.meta
0208 > tab EQ 0207 [NULL]
0209 r11 p32 NEWREF 0070 "control"
0210 tab HSTORE 0209 0192
0211 nil TBAR 0070
.... SNAP #21 [ ssa.lua:55|---- ---- ---- ---- 0001 0013 0043 ssa.lua:55|0069 0070 0013 0043 0096 0105 0133 ssa.lua:55|0158 ]
---- TRACE 6 mcode 2681
0bcbe808 mov eax, [0x416bd4b0]
0bcbe80f mov eax, [rax+0x20]
0bcbe812 sub eax, [0x416bd4b4]
0bcbe819 cmp eax, 0xe8
0bcbe81f jb 0x0bcb0014 ->1
0bcbe825 add rsp, -0x60
0bcbe829 mov dword [0x416bd410], 0x6
0bcbe834 mov edi, [0x416bd3d8]
0bcbe83b cmp edi, [0x416bd3dc]
0bcbe842 jb 0x0bcbe85b
0bcbe844 mov esi, 0xd
0bcbe849 mov edi, 0x416bd3b8
0bcbe84e call 0x00421730 ->lj_gc_step_jit
0bcbe853 test eax, eax
0bcbe855 jnz 0x0bcb0010 ->0
0bcbe85b mov edx, [0x416bd4b4]
0bcbe862 cmp dword [rdx-0x8], 0x416cd018
0bcbe869 jnz 0x0bcb0010 ->0
0bcbe86f mov edi, [0x40fea350]
0bcbe876 mov [rsp+0x44], edi
0bcbe87a cmp dword [rdi+0x4], 0xfffeffff
0bcbe881 jnb 0x0bcb0010 ->0
0bcbe887 movsd xmm7, [rdi]
0bcbe88b addsd xmm7, [0x40fe3fc0]
0bcbe894 movsd [rsp+0x58], xmm7
0bcbe89a movsd [rdi], xmm7
0bcbe89e mov edi, 0x416bd414
0bcbe8a3 mov esi, [rdi+0x8]
0bcbe8a6 mov [rdi], esi
0bcbe8a8 mov esi, 0x4c
0bcbe8ad call 0x00421b60 ->lj_buf_putchar
0bcbe8b2 mov edi, eax
0bcbe8b4 lea rsi, [rsp+0x58]
0bcbe8b9 call 0x0040a3c0 ->lj_strfmt_putnum
0bcbe8be mov edi, eax
0bcbe8c0 call 0x00421ff0 ->lj_buf_tostr
0bcbe8c5 mov [rsp+0x60], eax
0bcbe8c9 mov edi, [0x416bd4b0]
0bcbe8d0 mov esi, 0x40ff53c0
0bcbe8d5 call 0x004223c0 ->lj_tab_dup
0bcbe8da mov ebp, eax
0bcbe8dc mov [rsp+0x8], ebp
0bcbe8e0 mov edi, [0x416bd4b0]
0bcbe8e7 xor esi, esi
0bcbe8e9 call 0x00422350 ->lj_tab_new1
0bcbe8ee mov r15d, eax
0bcbe8f1 mov edi, [0x416bd4b0]
0bcbe8f8 mov eax, [rsp+0x60]
0bcbe8fc mov ebp, [rbp+0x14]
0bcbe8ff mov dword [rbp+0x34], 0xfffffff4
0bcbe906 mov [rbp+0x30], r15d
0bcbe90a mov dword [rbp+0x4c], 0xfffffffb
0bcbe911 mov [rbp+0x48], eax
0bcbe914 mov ebp, [0x416d20c0]
0bcbe91b cmp dword [rbp+0x4], -0x0c
0bcbe91f jnz 0x0bcb0018 ->2
0bcbe925 mov esi, [rbp+0x0]
0bcbe928 mov [rsp+0x2c], esi
0bcbe92c cmp dword [rsi+0x1c], +0x01
0bcbe930 jnz 0x0bcb0018 ->2
0bcbe936 mov ebp, [rsi+0x14]
0bcbe939 mov rsi, 0xfffffffb40ff4698
0bcbe943 cmp rsi, [rbp+0x8]
0bcbe947 jnz 0x0bcb0018 ->2
0bcbe94d cmp dword [rbp+0x4], -0x0c
0bcbe951 jnz 0x0bcb0018 ->2
0bcbe957 mov ebp, [rbp+0x0]
0bcbe95a mov esi, [rbp+0x1c]
0bcbe95d and esi, [rax+0x8]
0bcbe960 lea esi, [rsi+rsi*2]
0bcbe963 shl esi, 0x03
0bcbe966 add esi, [rbp+0x14]
0bcbe969 cmp dword [rsi+0xc], -0x05
0bcbe96d jnz 0x0bcbe978
0bcbe96f cmp eax, [rsi+0x8]
0bcbe972 jz 0x0bcb0018 ->2
0bcbe978 mov esi, [rsi+0x10]
0bcbe97b test esi, esi
0bcbe97d jnz 0x0bcbe969
0bcbe97f cmp dword [rbp+0x10], +0x00
0bcbe983 jnz 0x0bcb0018 ->2
0bcbe989 mov edx, 0x416bd448
0bcbe98e mov dword [rdx+0x4], 0xfffffffb
0bcbe995 mov [rdx], eax
0bcbe997 mov esi, ebp
0bcbe999 call 0x00422cf0 ->lj_tab_newkey
0bcbe99e mov r15d, eax
0bcbe9a1 mov edi, [rsp+0x44]
0bcbe9a5 mov eax, [rsp+0x8]
0bcbe9a9 movsd xmm7, [rsp+0x58]
0bcbe9af mov dword [r15+0x4], 0xfffffff4
0bcbe9b7 mov [r15], eax
0bcbe9ba test byte [rbp+0x4], 0x4
0bcbe9be jz 0x0bcbe9d5
0bcbe9c0 and byte [rbp+0x4], 0xfb
0bcbe9c4 mov esi, [0x416bd3f4]
0bcbe9cb mov [0x416bd3f4], ebp
0bcbe9d2 mov [rbp+0xc], esi
0bcbe9d5 mov byte [rbp+0x6], 0x0
0bcbe9d9 addsd xmm7, [0x40fe3fc0]
0bcbe9e2 movsd [rsp+0x50], xmm7
0bcbe9e8 movsd [rdi], xmm7
0bcbe9ec mov edi, 0x416bd414
0bcbe9f1 mov esi, [rdi+0x8]
0bcbe9f4 mov [rdi], esi
0bcbe9f6 mov esi, 0x4c
0bcbe9fb call 0x00421b60 ->lj_buf_putchar
0bcbea00 mov edi, eax
0bcbea02 lea rsi, [rsp+0x50]
0bcbea07 call 0x0040a3c0 ->lj_strfmt_putnum
0bcbea0c mov edi, eax
0bcbea0e call 0x00421ff0 ->lj_buf_tostr
0bcbea13 mov [rsp+0x4c], eax
0bcbea17 mov edi, [0x416bd4b0]
0bcbea1e mov esi, 0x40ff53c0
0bcbea23 call 0x004223c0 ->lj_tab_dup
0bcbea28 mov ebp, eax
0bcbea2a mov edi, [0x416bd4b0]
0bcbea31 xor esi, esi
0bcbea33 call 0x00422350 ->lj_tab_new1
0bcbea38 mov r14d, eax
0bcbea3b mov edi, [0x416bd4b0]
0bcbea42 mov esi, [rsp+0x2c]
0bcbea46 mov eax, [rsp+0x4c]
0bcbea4a mov r15d, [rbp+0x14]
0bcbea4e mov dword [r15+0x34], 0xfffffff4
0bcbea56 mov [r15+0x30], r14d
0bcbea5a mov dword [r15+0x4c], 0xfffffffb
0bcbea62 mov [r15+0x48], eax
0bcbea66 cmp dword [rsi+0x1c], +0x01
0bcbea6a jnz 0x0bcb0020 ->4
0bcbea70 mov r15d, [rsi+0x14]
0bcbea74 mov rsi, 0xfffffffb40ff4698
0bcbea7e cmp rsi, [r15+0x8]
0bcbea82 jnz 0x0bcb0020 ->4
0bcbea88 cmp dword [r15+0x4], -0x0c
0bcbea8d jnz 0x0bcb0020 ->4
0bcbea93 mov r15d, [r15]
0bcbea96 mov esi, [r15+0x1c]
0bcbea9a and esi, [rax+0x8]
0bcbea9d lea esi, [rsi+rsi*2]
0bcbeaa0 shl esi, 0x03
0bcbeaa3 add esi, [r15+0x14]
0bcbeaa7 cmp dword [rsi+0xc], -0x05
0bcbeaab jnz 0x0bcbeab6
0bcbeaad cmp eax, [rsi+0x8]
0bcbeab0 jz 0x0bcb0020 ->4
0bcbeab6 mov esi, [rsi+0x10]
0bcbeab9 test esi, esi
0bcbeabb jnz 0x0bcbeaa7
0bcbeabd cmp dword [r15+0x10], +0x00
0bcbeac2 jnz 0x0bcb0020 ->4
0bcbeac8 mov edx, 0x416bd448
0bcbeacd mov dword [rdx+0x4], 0xfffffffb
0bcbead4 mov [rdx], eax
0bcbead6 mov esi, r15d
0bcbead9 call 0x00422cf0 ->lj_tab_newkey
0bcbeade mov edi, [rsp+0x44]
0bcbeae2 mov edx, [0x416bd4b4]
0bcbeae9 movsd xmm7, [rsp+0x50]
0bcbeaef mov dword [rax+0x4], 0xfffffff4
0bcbeaf6 mov [rax], ebp
0bcbeaf8 test byte [r15+0x4], 0x4
0bcbeafd jz 0x0bcbeb17
0bcbeaff and byte [r15+0x4], 0xfb
0bcbeb04 mov esi, [0x416bd3f4]
0bcbeb0b mov [0x416bd3f4], r15d
0bcbeb13 mov [r15+0xc], esi
0bcbeb17 mov byte [r15+0x6], 0x0
0bcbeb1c cmp dword [rdx+0x4], -0x0c
0bcbeb20 jnz 0x0bcb0024 ->5
0bcbeb26 mov r15d, [rdx]
0bcbeb29 cmp dword [r15+0x18], +0x02
0bcbeb2e jbe 0x0bcb0024 ->5
0bcbeb34 mov r15d, [r15+0x8]
0bcbeb38 cmp dword [r15+0x14], -0x0c
0bcbeb3d jnz 0x0bcb0024 ->5
0bcbeb43 mov r15d, [r15+0x10]
0bcbeb47 cmp dword [rdx+0xc], -0x0c
0bcbeb4b jnz 0x0bcb0024 ->5
0bcbeb51 mov r14d, [rdx+0x8]
0bcbeb55 mov eax, [0x416cd020]
0bcbeb5c mov [rsp+0x20], eax
0bcbeb60 mov esi, [rax+0x1c]
0bcbeb63 and esi, 0xce2b6183
0bcbeb69 lea esi, [rsi+rsi*2]
0bcbeb6c shl esi, 0x03
0bcbeb6f add esi, [rax+0x14]
0bcbeb72 cmp dword [rsi+0xc], -0x05
0bcbeb76 jnz 0x0bcbeb85
0bcbeb78 cmp dword [rsi+0x8], 0x416bfdb0
0bcbeb7f jz 0x0bcb0024 ->5
0bcbeb85 mov esi, [rsi+0x10]
0bcbeb88 test esi, esi
0bcbeb8a jnz 0x0bcbeb72
0bcbeb8c mov esi, [rax+0x10]
0bcbeb8f mov [rsp+0x28], esi
0bcbeb93 test esi, esi
0bcbeb95 jz 0x0bcb0024 ->5
0bcbeb9b cmp dword [rsi+0x1c], +0x01
0bcbeb9f jnz 0x0bcb0024 ->5
0bcbeba5 mov r13d, [rsi+0x14]
0bcbeba9 mov rsi, 0xfffffffb416bf4c8
0bcbebb3 cmp rsi, [r13+0x20]
0bcbebb7 jnz 0x0bcb0024 ->5
0bcbebbd cmp dword [r13+0x1c], -0x0c
0bcbebc2 jnz 0x0bcb0024 ->5
0bcbebc8 mov r13d, [r13+0x18]
0bcbebcc cmp dword [r13+0x1c], +0x3f
0bcbebd1 jnz 0x0bcb0024 ->5
0bcbebd7 mov r13d, [r13+0x14]
0bcbebdb mov rsi, 0xfffffffb416bfdb0
0bcbebe5 cmp rsi, [r13+0x50]
0bcbebe9 jnz 0x0bcb0024 ->5
0bcbebef cmp dword [r13+0x4c], -0x09
0bcbebf4 jnz 0x0bcb0024 ->5
0bcbebfa mov esi, [rax+0x1c]
0bcbebfd and esi, 0x798a813c
0bcbec03 lea esi, [rsi+rsi*2]
0bcbec06 shl esi, 0x03
0bcbec09 add esi, [rax+0x14]
0bcbec0c cmp dword [rsi+0xc], -0x05
0bcbec10 jnz 0x0bcbec1f
0bcbec12 cmp dword [rsi+0x8], 0x416bffb0
0bcbec19 jz 0x0bcb0024 ->5
0bcbec1f mov esi, [rsi+0x10]
0bcbec22 test esi, esi
0bcbec24 jnz 0x0bcbec0c
0bcbec26 mov rsi, 0xfffffffb416bffb0
0bcbec30 cmp rsi, [r13+0x5a8]
0bcbec37 jnz 0x0bcb0024 ->5
0bcbec3d cmp dword [r13+0x5a4], -0x09
0bcbec45 jnz 0x0bcb0024 ->5
0bcbec4b cmp dword [r13+0x5a0], 0x416bff18
0bcbec56 jnz 0x0bcb0024 ->5
0bcbec5c cmp dword [r13+0x48], 0x416bfd88
0bcbec64 jnz 0x0bcb0024 ->5
0bcbec6a cmp dword [r15+0x18], +0x01
0bcbec6f jbe 0x0bcb0024 ->5
0bcbec75 mov r13d, [r15+0x8]
0bcbec79 cmp dword [r13+0xc], -0x05
0bcbec7e jnz 0x0bcb0024 ->5
0bcbec84 mov r13d, [r13+0x8]
0bcbec88 cmp r13d, 0x416bf8f8
0bcbec8f jnz 0x0bcb0028 ->6
0bcbec95 addsd xmm7, [0x40fe3fc0]
0bcbec9e movsd [rsp+0x38], xmm7
0bcbeca4 movsd [rdi], xmm7
0bcbeca8 mov edi, 0x416bd414
0bcbecad mov esi, [rdi+0x8]
0bcbecb0 mov [rdi], esi
0bcbecb2 mov esi, 0x4c
0bcbecb7 call 0x00421b60 ->lj_buf_putchar
0bcbecbc mov edi, eax
0bcbecbe lea rsi, [rsp+0x38]
0bcbecc3 call 0x0040a3c0 ->lj_strfmt_putnum
0bcbecc8 mov edi, eax
0bcbecca call 0x00421ff0 ->lj_buf_tostr
0bcbeccf mov [rsp+0x48], eax
0bcbecd3 mov edi, [0x416bd4b0]
0bcbecda mov esi, 0x40ff53c0
0bcbecdf call 0x004223c0 ->lj_tab_dup
0bcbece4 mov r12d, eax
0bcbece7 mov edi, [0x416bd4b0]
0bcbecee xor esi, esi
0bcbecf0 call 0x00422350 ->lj_tab_new1
0bcbecf5 mov ecx, eax
0bcbecf7 mov edi, [0x416bd4b0]
0bcbecfe mov esi, [rsp+0x2c]
0bcbed02 mov eax, [rsp+0x48]
0bcbed06 mov edx, [r12+0x14]
0bcbed0b mov dword [rdx+0x34], 0xfffffff4
0bcbed12 mov [rdx+0x30], ecx
0bcbed15 mov dword [rdx+0x4c], 0xfffffffb
0bcbed1c mov [rdx+0x48], eax
0bcbed1f cmp dword [rsi+0x1c], +0x01
0bcbed23 jnz 0x0bcb0030 ->8
0bcbed29 mov esi, [rsi+0x14]
0bcbed2c mov rdx, 0xfffffffb40ff4698
0bcbed36 cmp rdx, [rsi+0x8]
0bcbed3a jnz 0x0bcb0030 ->8
0bcbed40 cmp dword [rsi+0x4], -0x0c
0bcbed44 jnz 0x0bcb0030 ->8
0bcbed4a mov esi, [rsi]
0bcbed4c mov [rsp+0x40], esi
0bcbed50 mov edx, [rsi+0x1c]
0bcbed53 and edx, [rax+0x8]
0bcbed56 lea edx, [rdx+rdx*2]
0bcbed59 shl edx, 0x03
0bcbed5c add edx, [rsi+0x14]
0bcbed5f cmp dword [rdx+0xc], -0x05
0bcbed63 jnz 0x0bcbed6e
0bcbed65 cmp eax, [rdx+0x8]
0bcbed68 jz 0x0bcb0030 ->8
0bcbed6e mov edx, [rdx+0x10]
0bcbed71 test edx, edx
0bcbed73 jnz 0x0bcbed5f
0bcbed75 cmp dword [rsi+0x10], +0x00
0bcbed79 jnz 0x0bcb0030 ->8
0bcbed7f mov edx, 0x416bd448
0bcbed84 mov dword [rdx+0x4], 0xfffffffb
0bcbed8b mov [rdx], eax
0bcbed8d call 0x00422cf0 ->lj_tab_newkey
0bcbed92 mov edi, [rsp+0x44]
0bcbed96 mov esi, [rsp+0x40]
0bcbed9a movsd xmm7, [rsp+0x38]
0bcbeda0 mov dword [rax+0x4], 0xfffffff4
0bcbeda7 mov [rax], r12d
0bcbedaa test byte [rsi+0x4], 0x4
0bcbedae jz 0x0bcbedc5
0bcbedb0 and byte [rsi+0x4], 0xfb
0bcbedb4 mov edx, [0x416bd3f4]
0bcbedbb mov [0x416bd3f4], esi
0bcbedc2 mov [rsi+0xc], edx
0bcbedc5 mov byte [rsi+0x6], 0x0
0bcbedc9 addsd xmm7, [0x40fe3fc0]
0bcbedd2 movsd [rsp+0x30], xmm7
0bcbedd8 movsd [rdi], xmm7
0bcbeddc mov edi, 0x416bd414
0bcbede1 mov esi, [rdi+0x8]
0bcbede4 mov [rdi], esi
0bcbede6 mov esi, 0x4c
0bcbedeb call 0x00421b60 ->lj_buf_putchar
0bcbedf0 mov edi, eax
0bcbedf2 lea rsi, [rsp+0x30]
0bcbedf7 call 0x0040a3c0 ->lj_strfmt_putnum
0bcbedfc mov edi, eax
0bcbedfe call 0x00421ff0 ->lj_buf_tostr
0bcbee03 mov [rsp+0x18], eax
0bcbee07 mov edi, [0x416bd4b0]
0bcbee0e mov esi, 0x40ff53c0
0bcbee13 call 0x004223c0 ->lj_tab_dup
0bcbee18 mov [rsp+0x14], eax
0bcbee1c mov edi, [0x416bd4b0]
0bcbee23 xor esi, esi
0bcbee25 call 0x00422350 ->lj_tab_new1
0bcbee2a mov ecx, eax
0bcbee2c mov edi, [rsp+0x14]
0bcbee30 mov esi, [rsp+0x2c]
0bcbee34 mov eax, [rsp+0x18]
0bcbee38 mov edx, [rdi+0x14]
0bcbee3b mov edi, [0x416bd4b0]
0bcbee42 mov dword [rdx+0x34], 0xfffffff4
0bcbee49 mov [rdx+0x30], ecx
0bcbee4c mov dword [rdx+0x4c], 0xfffffffb
0bcbee53 mov [rdx+0x48], eax
0bcbee56 cmp dword [rsi+0x1c], +0x01
0bcbee5a jnz 0x0bcb0038 ->10
0bcbee60 mov esi, [rsi+0x14]
0bcbee63 mov rdx, 0xfffffffb40ff4698
0bcbee6d cmp rdx, [rsi+0x8]
0bcbee71 jnz 0x0bcb0038 ->10
0bcbee77 cmp dword [rsi+0x4], -0x0c
0bcbee7b jnz 0x0bcb0038 ->10
0bcbee81 mov esi, [rsi]
0bcbee83 mov [rsp+0x24], esi
0bcbee87 mov edx, [rsi+0x1c]
0bcbee8a and edx, [rax+0x8]
0bcbee8d lea edx, [rdx+rdx*2]
0bcbee90 shl edx, 0x03
0bcbee93 add edx, [rsi+0x14]
0bcbee96 cmp dword [rdx+0xc], -0x05
0bcbee9a jnz 0x0bcbeea5
0bcbee9c cmp eax, [rdx+0x8]
0bcbee9f jz 0x0bcb0038 ->10
0bcbeea5 mov edx, [rdx+0x10]
0bcbeea8 test edx, edx
0bcbeeaa jnz 0x0bcbee96
0bcbeeac cmp dword [rsi+0x10], +0x00
0bcbeeb0 jnz 0x0bcb0038 ->10
0bcbeeb6 mov edx, 0x416bd448
0bcbeebb mov dword [rdx+0x4], 0xfffffffb
0bcbeec2 mov [rdx], eax
0bcbeec4 call 0x00422cf0 ->lj_tab_newkey
0bcbeec9 mov ecx, eax
0bcbeecb mov edi, [rsp+0x14]
0bcbeecf mov esi, [rsp+0x28]
0bcbeed3 mov edx, [rsp+0x24]
0bcbeed7 mov eax, [rsp+0x20]
0bcbeedb mov dword [rcx+0x4], 0xfffffff4
0bcbeee2 mov [rcx], edi
0bcbeee4 mov edi, [0x416bd4b0]
0bcbeeeb test byte [rdx+0x4], 0x4
0bcbeeef jz 0x0bcbef06
0bcbeef1 and byte [rdx+0x4], 0xfb
0bcbeef5 mov ecx, [0x416bd3f4]
0bcbeefc mov [0x416bd3f4], edx
0bcbef03 mov [rdx+0xc], ecx
0bcbef06 mov byte [rdx+0x6], 0x0
0bcbef0a cmp dword [r15+0x18], +0x02
0bcbef0f jbe 0x0bcb003c ->11
0bcbef15 mov edx, [r15+0x8]
0bcbef19 cmp dword [rdx+0x14], -0x0c
0bcbef1d jnz 0x0bcb003c ->11
0bcbef23 mov ecx, [rdx+0x10]
0bcbef26 mov [rsp+0x10], ecx
0bcbef2a mov edx, [rax+0x1c]
0bcbef2d and edx, 0xce2b6183
0bcbef33 lea edx, [rdx+rdx*2]
0bcbef36 shl edx, 0x03
0bcbef39 add edx, [rax+0x14]
0bcbef3c cmp dword [rdx+0xc], -0x05
0bcbef40 jnz 0x0bcbef4f
0bcbef42 cmp dword [rdx+0x8], 0x416bfdb0
0bcbef49 jz 0x0bcb003c ->11
0bcbef4f mov edx, [rdx+0x10]
0bcbef52 test edx, edx
0bcbef54 jnz 0x0bcbef3c
0bcbef56 cmp dword [rsi+0x1c], +0x01
0bcbef5a jnz 0x0bcb003c ->11
0bcbef60 mov esi, [rsi+0x14]
0bcbef63 mov rdx, 0xfffffffb416bf4c8
0bcbef6d cmp rdx, [rsi+0x20]
0bcbef71 jnz 0x0bcb003c ->11
0bcbef77 cmp dword [rsi+0x1c], -0x0c
0bcbef7b jnz 0x0bcb003c ->11
0bcbef81 mov esi, [rsi+0x18]
0bcbef84 cmp dword [rsi+0x1c], +0x3f
0bcbef88 jnz 0x0bcb003c ->11
0bcbef8e mov esi, [rsi+0x14]
0bcbef91 mov rdx, 0xfffffffb416bfdb0
0bcbef9b cmp rdx, [rsi+0x50]
0bcbef9f jnz 0x0bcb003c ->11
0bcbefa5 cmp dword [rsi+0x4c], -0x09
0bcbefa9 jnz 0x0bcb003c ->11
0bcbefaf mov edx, [rax+0x1c]
0bcbefb2 and edx, 0x798a813c
0bcbefb8 lea edx, [rdx+rdx*2]
0bcbefbb shl edx, 0x03
0bcbefbe add edx, [rax+0x14]
0bcbefc1 cmp dword [rdx+0xc], -0x05
0bcbefc5 jnz 0x0bcbefd4
0bcbefc7 cmp dword [rdx+0x8], 0x416bffb0
0bcbefce jz 0x0bcb003c ->11
0bcbefd4 mov edx, [rdx+0x10]
0bcbefd7 test edx, edx
0bcbefd9 jnz 0x0bcbefc1
0bcbefdb mov rdx, 0xfffffffb416bffb0
0bcbefe5 cmp rdx, [rsi+0x5a8]
0bcbefec jnz 0x0bcb003c ->11
0bcbeff2 cmp dword [rsi+0x5a4], -0x09
0bcbeff9 jnz 0x0bcb003c ->11
0bcbefff cmp dword [rsi+0x5a0], 0x416bff18
0bcbf009 jnz 0x0bcb003c ->11
0bcbf00f cmp dword [rsi+0x48], 0x416bfd88
0bcbf016 jnz 0x0bcb003c ->11
0bcbf01c cmp dword [rcx+0x18], +0x01
0bcbf020 jbe 0x0bcb003c ->11
0bcbf026 mov esi, [rcx+0x8]
0bcbf029 cmp dword [rsi+0xc], -0x05
0bcbf02d jnz 0x0bcb003c ->11
0bcbf033 mov ecx, [rsi+0x8]
0bcbf036 mov [rsp+0x1c], ecx
0bcbf03a cmp ecx, 0x416bf8f8
0bcbf040 jz 0x0bcb0040 ->12
0bcbf046 cmp ecx, 0x40fea3e8
0bcbf04c jz 0x0bcb0044 ->13
0bcbf052 cmp ecx, 0x416bfa18
0bcbf058 jz 0x0bcb0048 ->14
0bcbf05e cmp ecx, 0x416bf870
0bcbf064 jz 0x0bcb004c ->15
0bcbf06a cmp ecx, 0x416c2cb0
0bcbf070 jz 0x0bcb0050 ->16
0bcbf076 cmp ecx, 0x416d1ce0
0bcbf07c jz 0x0bcb0054 ->17
0bcbf082 cmp dword [0x416d21c4], -0x0c
0bcbf08a jnz 0x0bcb0058 ->18
0bcbf090 mov edx, [0x416d21c0]
0bcbf097 mov esi, [rdx+0x1c]
0bcbf09a and esi, [rcx+0x8]
0bcbf09d lea esi, [rsi+rsi*2]
0bcbf0a0 shl esi, 0x03
0bcbf0a3 add esi, [rdx+0x14]
0bcbf0a6 cmp dword [rsi+0xc], -0x05
0bcbf0aa jnz 0x0bcbf0b1
0bcbf0ac cmp ecx, [rsi+0x8]
0bcbf0af jz 0x0bcbf0bd
0bcbf0b1 mov esi, [rsi+0x10]
0bcbf0b4 test esi, esi
0bcbf0b6 jnz 0x0bcbf0a6
0bcbf0b8 mov esi, 0x416bd458
0bcbf0bd cmp dword [rsi+0x4], -0x03
0bcbf0c1 jnz 0x0bcb0058 ->18
0bcbf0c7 mov esi, 0x40fe9ad8
0bcbf0cc call 0x004223c0 ->lj_tab_dup
0bcbf0d1 mov edx, eax
0bcbf0d3 mov [rsp+0xc], edx
0bcbf0d7 mov edi, [0x416bd4b0]
0bcbf0de mov ecx, [rsp+0x10]
0bcbf0e2 mov eax, [rsp+0x18]
0bcbf0e6 mov edx, [rdx+0x8]
0bcbf0e9 mov dword [rdx+0x14], 0xfffffff4
0bcbf0f0 mov [rdx+0x10], ecx
0bcbf0f3 cmp dword [r12+0x1c], +0x03
0bcbf0f9 jnz 0x0bcb005c ->19
0bcbf0ff mov ecx, [r12+0x14]
0bcbf104 mov r11, 0xfffffffb40ff4738
0bcbf10e cmp r11, [rcx+0x50]
0bcbf112 jnz 0x0bcb005c ->19
0bcbf118 cmp dword [rcx+0x4c], -0x05
0bcbf11c jnz 0x0bcb005c ->19
0bcbf122 mov ecx, [rcx+0x48]
0bcbf125 mov dword [rdx+0x1c], 0xfffffffb
0bcbf12c mov [rdx+0x18], ecx
0bcbf12f mov dword [rdx+0x24], 0xfffffffb
0bcbf136 mov [rdx+0x20], eax
0bcbf139 mov edx, [r14+0x1c]
0bcbf13d and edx, 0x2a54dc55
0bcbf143 lea edx, [rdx+rdx*2]
0bcbf146 shl edx, 0x03
0bcbf149 add edx, [r14+0x14]
0bcbf14d cmp dword [rdx+0xc], -0x05
0bcbf151 jnz 0x0bcbf160
0bcbf153 cmp dword [rdx+0x8], 0x40ff4ea0
0bcbf15a jz 0x0bcb0060 ->20
0bcbf160 mov edx, [rdx+0x10]
0bcbf163 test edx, edx
0bcbf165 jnz 0x0bcbf14d
0bcbf167 cmp dword [r14+0x10], +0x00
0bcbf16c jnz 0x0bcb0060 ->20
0bcbf172 mov edx, 0x416bd448
0bcbf177 mov dword [rdx+0x4], 0xfffffffb
0bcbf17e mov dword [rdx], 0x40ff4ea0
0bcbf184 mov esi, r14d
0bcbf187 call 0x00422cf0 ->lj_tab_newkey
0bcbf18c mov r11d, eax
0bcbf18f mov edi, [rsp+0x14]
0bcbf193 mov esi, [rsp+0x10]
0bcbf197 mov edx, [0x416bd4b4]
0bcbf19e mov ecx, [rsp+0xc]
0bcbf1a2 mov eax, [rsp+0x8]
0bcbf1a6 mov dword [r11+0x4], 0xfffffff4
0bcbf1ae mov [r11], ecx
0bcbf1b1 test byte [r14+0x4], 0x4
0bcbf1b6 jz 0x0bcbf1d0
0bcbf1b8 and byte [r14+0x4], 0xfb
0bcbf1bd mov ecx, [0x416bd3f4]
0bcbf1c4 mov [0x416bd3f4], r14d
0bcbf1cc mov [r14+0xc], ecx
0bcbf1d0 mov dword [rdx+0x84], 0xfffffff4
0bcbf1da mov [rdx+0x80], esi
0bcbf1e0 mov dword [rdx+0x7c], 0x40ff5de8
0bcbf1e7 mov dword [rdx+0x78], 0x416cd018
0bcbf1ee mov dword [rdx+0x74], 0xfffffff4
0bcbf1f5 mov [rdx+0x70], edi
0bcbf1f8 mov dword [rdx+0x6c], 0xfffffff4
0bcbf1ff mov [rdx+0x68], r12d
0bcbf203 mov dword [rdx+0x64], 0xfffffffb
0bcbf20a mov [rdx+0x60], r13d
0bcbf20e mov dword [rdx+0x5c], 0xfffffff4
0bcbf215 mov [rdx+0x58], ebp
0bcbf218 mov dword [rdx+0x54], 0xfffffff4
0bcbf21f mov [rdx+0x50], eax
0bcbf222 mov dword [rdx+0x4c], 0xfffffff4
0bcbf229 mov [rdx+0x48], r14d
0bcbf22d mov dword [rdx+0x44], 0xfffffff4
0bcbf234 mov [rdx+0x40], r15d
0bcbf238 mov dword [rdx+0x3c], 0x40ff5de8
0bcbf23f mov dword [rdx+0x38], 0x416cd018
0bcbf246 mov dword [rdx+0x34], 0xfffffff4
0bcbf24d mov [rdx+0x30], ebp
0bcbf250 mov dword [rdx+0x2c], 0xfffffff4
0bcbf257 mov [rdx+0x28], eax
0bcbf25a mov dword [rdx+0x24], 0xfffffffb
0bcbf261 mov [rdx+0x20], ebx
0bcbf264 mov dword [rdx-0x8], 0x416cd018
0bcbf26b add edx, 0x80
0bcbf271 mov [0x416bd4b4], edx
0bcbf278 add rsp, +0x60
0bcbf27c jmp 0x0bcbf398
---- TRACE 6 stop -> 4
---- TRACE 4 exit 1
---- TRACE 2 exit 2
---- TRACE 6 exit 12
---- TRACE 2 exit 8
---- TRACE 4 exit 1
---- TRACE 2 exit 3
---- TRACE 3 exit 0
---- TRACE 4 exit 3
---- TRACE 2 exit 8
---- TRACE 4 exit 1
---- TRACE 6 exit 6
---- TRACE 4 exit 1
---- TRACE 2 exit 8
---- TRACE 4 exit 6
---- TRACE 5 exit 1
---- TRACE 4 exit 1
---- TRACE 4 exit 7
---- TRACE 3 exit 0
---- TRACE 4 exit 1
---- TRACE 4 exit 1
---- TRACE 4 exit 1
---- TRACE 2 exit 8
---- TRACE 4 exit 7
---- TRACE 3 exit 0
---- TRACE 4 exit 1
---- TRACE 7 start 4/1 ssa.lua:79
0094 RET0 0 1
0036 JMP 5 => 0094
0094 JLOOP 1 4
---- TRACE 7 IR
.... SNAP #0 [ ---- ]
.... SNAP #1 [ ---- ]
0002 > p32 RETF proto: 0x40ff5d48 [0x40ff5e18]
.... SNAP #2 [ ---- ---- ]
---- TRACE 7 mcode 50
0bcbe7d3 mov dword [0x416bd410], 0x7
0bcbe7de mov edx, [0x416bd4b4]
0bcbe7e5 cmp dword [rdx-0x4], 0x40ff5e18
0bcbe7ec jnz 0x0bcb0014 ->1
0bcbe7f2 add edx, -0x40
0bcbe7f5 mov [0x416bd4b4], edx
0bcbe7fc add rsp, +0x10
0bcbe800 jmp 0x0bcbf398
---- TRACE 7 stop -> 4
---- TRACE 7 exit 1
---- TRACE 6 exit 6
---- TRACE 7 exit 1
---- TRACE 2 exit 8
---- TRACE 4 exit 7
---- TRACE 3 exit 0
---- TRACE 4 exit 7
---- TRACE 3 exit 0
---- TRACE 7 exit 1
---- TRACE 4 exit 7
---- TRACE 3 exit 0
---- TRACE 7 exit 1
---- TRACE 6 exit 6
---- TRACE 7 exit 1
---- TRACE 2 exit 2
---- TRACE 6 exit 20
---- TRACE 7 exit 1
---- TRACE 2 exit 3
---- TRACE 3 exit 0
---- TRACE 4 exit 3
---- TRACE 2 exit 8
---- TRACE 7 exit 1
---- TRACE 2 exit 3
---- TRACE 3 exit 0
---- TRACE 4 exit 6
---- TRACE 7 exit 1
---- TRACE 6 exit 6
---- TRACE 8 start ssa.lua:49
0001 TDUP 4 1
0002 TSETB 1 4 2
0003 TGETS 5 2 2 ; "label"
0004 TSETB 5 4 3
0005 TGETS 5 3 2 ; "label"
0006 TSETB 5 4 4
0007 TSETS 4 0 0 ; "control"
0008 RET0 0 1
---- TRACE 8 IR
.... SNAP #0 [ ---- ---- ---- ---- ---- ]
0001 rax > tab TDUP {0x40fe9ad8}
0002 rbp > tab SLOAD #2 T
0003 rbx p32 FLOAD 0001 tab.array
0004 p32 AREF 0003 +2 
0005 tab ASTORE 0004 0002
.... SNAP #1 [ ---- ---- ---- ---- ---- 0001 ]
0006 rbp > tab SLOAD #3 T
0007 int FLOAD 0006 tab.hmask
0008 > int EQ 0007 +3 
0009 rbp p32 FLOAD 0006 tab.node
0010 > p32 HREFK 0009 "label" @3
0011 rbp > str HLOAD 0010
0012 p32 AREF 0003 +3 
0013 str ASTORE 0012 0011
.... SNAP #2 [ ---- ---- ---- ---- ---- 0001 ---- ]
0014 rbp > tab SLOAD #4 T
0015 int FLOAD 0014 tab.hmask
0016 > int EQ 0015 +3 
0017 rbp p32 FLOAD 0014 tab.node
0018 > p32 HREFK 0017 "label" @3
0019 rbp > str HLOAD 0018
0020 p32 AREF 0003 +4 
0021 str ASTORE 0020 0019
.... SNAP #3 [ ---- ---- ---- ---- ---- 0001 ---- ]
0022 rbp > tab SLOAD #1 T
0023 int FLOAD 0022 tab.hmask
0024 > int EQ 0023 +3 
0025 rbx p32 FLOAD 0022 tab.node
0026 > p32 HREFK 0025 "control" @1
0027 tab FLOAD 0022 tab.meta
0028 > tab EQ 0027 [NULL]
0029 tab HSTORE 0026 0001
0030 nil TBAR 0022
.... SNAP #4 [ ---- ]
---- TRACE 8 mcode 348
0bcbe670 mov dword [0x416bd410], 0x8
0bcbe67b mov edi, [0x416bd3d8]
0bcbe682 cmp edi, [0x416bd3dc]
0bcbe689 jb 0x0bcbe6a2
0bcbe68b mov esi, 0x1
0bcbe690 mov edi, 0x416bd3b8
0bcbe695 call 0x00421730 ->lj_gc_step_jit
0bcbe69a test eax, eax
0bcbe69c jnz 0x0bcb0010 ->0
0bcbe6a2 mov edi, [0x416bd4b0]
0bcbe6a9 mov esi, 0x40fe9ad8
0bcbe6ae call 0x004223c0 ->lj_tab_dup
0bcbe6b3 mov edx, [0x416bd4b4]
0bcbe6ba cmp dword [rdx+0xc], -0x0c
0bcbe6be jnz 0x0bcb0010 ->0
0bcbe6c4 mov ebp, [rdx+0x8]
0bcbe6c7 mov ebx, [rax+0x8]
0bcbe6ca mov dword [rbx+0x14], 0xfffffff4
0bcbe6d1 mov [rbx+0x10], ebp
0bcbe6d4 cmp dword [rdx+0x14], -0x0c
0bcbe6d8 jnz 0x0bcb0014 ->1
0bcbe6de mov ebp, [rdx+0x10]
0bcbe6e1 cmp dword [rbp+0x1c], +0x03
0bcbe6e5 jnz 0x0bcb0014 ->1
0bcbe6eb mov ebp, [rbp+0x14]
0bcbe6ee mov rdi, 0xfffffffb40ff4738
0bcbe6f8 cmp rdi, [rbp+0x50]
0bcbe6fc jnz 0x0bcb0014 ->1
0bcbe702 cmp dword [rbp+0x4c], -0x05
0bcbe706 jnz 0x0bcb0014 ->1
0bcbe70c mov ebp, [rbp+0x48]
0bcbe70f mov dword [rbx+0x1c], 0xfffffffb
0bcbe716 mov [rbx+0x18], ebp
0bcbe719 cmp dword [rdx+0x1c], -0x0c
0bcbe71d jnz 0x0bcb0018 ->2
0bcbe723 mov ebp, [rdx+0x18]
0bcbe726 cmp dword [rbp+0x1c], +0x03
0bcbe72a jnz 0x0bcb0018 ->2
0bcbe730 mov ebp, [rbp+0x14]
0bcbe733 mov rdi, 0xfffffffb40ff4738
0bcbe73d cmp rdi, [rbp+0x50]
0bcbe741 jnz 0x0bcb0018 ->2
0bcbe747 cmp dword [rbp+0x4c], -0x05
0bcbe74b jnz 0x0bcb0018 ->2
0bcbe751 mov ebp, [rbp+0x48]
0bcbe754 mov dword [rbx+0x24], 0xfffffffb
0bcbe75b mov [rbx+0x20], ebp
0bcbe75e cmp dword [rdx+0x4], -0x0c
0bcbe762 jnz 0x0bcb001c ->3
0bcbe768 mov ebp, [rdx]
0bcbe76a cmp dword [rbp+0x1c], +0x03
0bcbe76e jnz 0x0bcb001c ->3
0bcbe774 mov ebx, [rbp+0x14]
0bcbe777 mov rdi, 0xfffffffb40ff4ea0
0bcbe781 cmp rdi, [rbx+0x20]
0bcbe785 jnz 0x0bcb001c ->3
0bcbe78b cmp dword [rbp+0x10], +0x00
0bcbe78f jnz 0x0bcb001c ->3
0bcbe795 mov dword [rbx+0x1c], 0xfffffff4
0bcbe79c mov [rbx+0x18], eax
0bcbe79f test byte [rbp+0x4], 0x4
0bcbe7a3 jz 0x0bcbe7ba
0bcbe7a5 and byte [rbp+0x4], 0xfb
0bcbe7a9 mov edi, [0x416bd3f4]
0bcbe7b0 mov [0x416bd3f4], ebp
0bcbe7b7 mov [rbp+0xc], edi
0bcbe7ba xor eax, eax
0bcbe7bc mov ebx, 0x40ff5890
0bcbe7c1 mov r14d, 0x416be008
0bcbe7c7 jmp 0x00420177
---- TRACE 8 stop -> return
---- TRACE 7 exit 1
---- TRACE 2 exit 2
---- TRACE 6 exit 6
---- TRACE 7 exit 1
---- TRACE 9 start 7/1 ssa.lua:79
0094 RET0 0 1
0024 UGET 7 1 ; compile_bool
0025 TGETB 8 0 3
0026 MOV 9 5
0027 MOV 10 2
0028 MOV 11 3
0029 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0039 . TGETB 5 0 2
0040 . TGETB 6 0 3
0041 . TGETB 7 0 4
0042 . GGET 8 2 ; "table"
0043 . TGETS 8 8 5 ; "insert"
0044 . TGETS 9 1 6 ; "bindings"
0045 . TDUP 10 7
0046 . TSETS 5 10 8 ; "name"
0047 . TSETS 6 10 9 ; "value"
0048 . CALL 8 1 3
0000 . . FUNCC ; table.insert
0049 . UGET 8 1 ; compile_bool
0050 . MOV 9 7
0051 . MOV 10 1
0052 . MOV 11 2
0053 . MOV 12 3
0054 . CALL 8 1 5
0000 . . JFUNCF 13 2 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0014 . . UGET 5 0 ; add_block
0015 . . CALL 5 2 1
0000 . . . JFUNCF 3 1 ; ssa.lua:39
0001 . . . UGET 0 0 ; label_counter
0002 . . . ADDVN 0 0 0 ; 1
0003 . . . USETV 0 0 ; label_counter
0004 . . . KSTR 0 0 ; "L"
0005 . . . UGET 1 0 ; label_counter
0006 . . . CAT 0 0 1
0007 . . . TDUP 1 1
0008 . . . TNEW 2 0
0009 . . . TSETS 2 1 2 ; "bindings"
0010 . . . TSETS 0 1 3 ; "label"
0011 . . . UGET 2 1 ; ssa
0012 . . . TGETS 2 2 4 ; "blocks"
0013 . . . TSETV 1 2 0
0014 . . . RET1 1 2
0016 . . UGET 6 0 ; add_block
0017 . . CALL 6 2 1
0000 . . . JFUNCF 3 1 ; ssa.lua:39
0001 . . . UGET 0 0 ; label_counter
0002 . . . ADDVN 0 0 0 ; 1
0003 . . . USETV 0 0 ; label_counter
0004 . . . KSTR 0 0 ; "L"
0005 . . . UGET 1 0 ; label_counter
0006 . . . CAT 0 0 1
0007 . . . TDUP 1 1
0008 . . . TNEW 2 0
0009 . . . TSETS 2 1 2 ; "bindings"
0010 . . . TSETS 0 1 3 ; "label"
0011 . . . UGET 2 1 ; ssa
0012 . . . TGETS 2 2 4 ; "blocks"
0013 . . . TSETV 1 2 0
0014 . . . RET1 1 2
0018 . . UGET 7 1 ; compile_bool
0019 . . TGETB 8 0 2
0020 . . MOV 9 1
0021 . . MOV 10 5
0022 . . MOV 11 6
0023 . . CALL 7 1 5
0000 . . . JFUNCF 13 2 ; ssa.lua:55
0001 . . . GGET 4 0 ; "assert"
0002 . . . GGET 5 1 ; "type"
0003 . . . MOV 6 0
0004 . . . CALL 5 2 2
0000 . . . . FUNCC ; type
0005 . . . ISEQS 5 2 ; "table"
0006 . . . JMP 5 => 0009
0009 . . . KPRI 5 2
0010 . . . CALL 4 1 2
0000 . . . . FUNCC ; assert
0011 . . . TGETB 4 0 1
0012 . . . ISNES 4 3 ; "if"
0013 . . . JMP 5 => 0037
0037 . . . ISNES 4 4 ; "let"
0038 . . . JMP 5 => 0056
0056 . . . ISNES 4 10 ; "true"
0057 . . . JMP 5 => 0063
0063 . . . ISNES 4 11 ; "false"
0064 . . . JMP 5 => 0070
0070 . . . ISNES 4 12 ; "match"
0071 . . . JMP 5 => 0077
0077 . . . ISNES 4 14 ; "fail"
0078 . . . JMP 5 => 0084
0084 . . . GGET 5 0 ; "assert"
0085 . . . UGET 6 4 ; relops
0086 . . . TGETV 6 6 4
0087 . . . CALL 5 1 2
0000 . . . . FUNCC ; assert
0088 . . . UGET 5 5 ; finish_if
0089 . . . MOV 6 1
0090 . . . MOV 7 0
0091 . . . MOV 8 2
0092 . . . MOV 9 3
0093 . . . CALL 5 1 5
0000 . . . . JFUNCF 6 8 ; ssa.lua:49
0001 . . . . TDUP 4 1
0002 . . . . TSETB 1 4 2
0003 . . . . TGETS 5 2 2 ; "label"
0004 . . . . TSETB 5 4 3
0005 . . . . TGETS 5 3 2 ; "label"
0006 . . . . TSETB 5 4 4
0007 . . . . TSETS 4 0 0 ; "control"
0008 . . . . RET0 0 1
0094 . . . JLOOP 1 4
---- TRACE 9 IR
.... SNAP #0 [ ---- ]
.... SNAP #1 [ ---- ]
0002 > p32 RETF proto: 0x40ff5d48 [0x40ff5de8]
.... SNAP #2 [ ---- ---- ---- ---- ---- ---- ---- ---- ]
0003 fun SLOAD #0 R
0004 > fun EQ 0003 ssa.lua:55
0005 rbp > tab SLOAD #1 T
0006 int FLOAD 0005 tab.asize
0007 > int ABC 0006 +3 
0008 rbp p32 FLOAD 0005 tab.array
0009 p32 AREF 0008 +3 
0010 rbp > tab ALOAD 0009
0011 rbx > tab SLOAD #6 T
0012 r15 > tab SLOAD #3 T
0013 r14 > tab SLOAD #4 T
0014 [20] tab FLOAD ssa.lua:55 func.env
0015 rsi p32 HREF 0014 "assert"
0016 > p32 EQ 0015 [0x416bd458]
0017 [28] tab FLOAD 0014 tab.meta
0018 > tab NE 0017 [NULL]
0019 int FLOAD 0017 tab.hmask
0020 > int EQ 0019 +1 
0021 r13 p32 FLOAD 0017 tab.node
0022 > p32 HREFK 0021 "__index" @1
0023 r13 > tab HLOAD 0022
0024 int FLOAD 0023 tab.hmask
0025 > int EQ 0024 +63 
0026 rsi p32 FLOAD 0023 tab.node
0027 > p32 HREFK 0026 "assert" @3
0028 > fun HLOAD 0027
0029 rdx p32 HREF 0014 "type"
0030 > p32 EQ 0029 [0x416bd458]
0031 > p32 HREFK 0026 "type" @60
0032 > fun HLOAD 0031
0033 > fun EQ 0032 type
0034 > fun EQ 0028 assert
0035 int FLOAD 0010 tab.asize
0036 > int ABC 0035 +4 
0037 r12 p32 FLOAD 0010 tab.array
0038 p32 AREF 0037 +1 
0039 r13 > str ALOAD 0038
.... SNAP #3 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0040 > str NE 0039 "if"
.... SNAP #4 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0041 > str EQ 0039 "let"
.... SNAP #5 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0042 p32 AREF 0037 +2 
0043 [60] > str ALOAD 0042
0044 p32 AREF 0037 +3 
0045 [64] > tab ALOAD 0044
0046 p32 AREF 0037 +4 
0047 r12 > tab ALOAD 0046
0048 rdx p32 HREF 0014 "table"
0049 > p32 EQ 0048 [0x416bd458]
0050 > p32 HREFK 0026 "table" @47
0051 rsi > tab HLOAD 0050
0052 int FLOAD 0051 tab.hmask
0053 > int EQ 0052 +7 
0054 rsi p32 FLOAD 0051 tab.node
0055 > p32 HREFK 0054 "insert" @7
0056 [54] > fun HLOAD 0055
0057 int FLOAD 0011 tab.hmask
0058 > int EQ 0057 +3 
0059 rsi p32 FLOAD 0011 tab.node
0060 > p32 HREFK 0059 "bindings" @2
0061 [50] > tab HLOAD 0060
0062 [4c] > tab TDUP {0x40fe6af8}
0063 rax p32 FLOAD 0062 tab.node
0064 p32 HREFK 0063 "name" @0
0065 str HSTORE 0064 0043
0066 p32 HREFK 0063 "value" @1
0067 tab HSTORE 0066 0045
.... SNAP #6 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 0056 0061 0062 ]
0068 > fun EQ 0056 table.insert
0069 rax int CALLL lj_tab_len (0061)
0070 rax int ADD 0069 +1 
0071 int FLOAD 0061 tab.asize
0072 > int ULE 0071 0070
0073 int FLOAD 0061 tab.hmask
0074 > int EQ 0073 +0 
0075 [58] num CONV 0070 num.int
0076 rcx p32 NEWREF 0061 0075
0077 tab HSTORE 0076 0062
0078 nil TBAR 0061
.... SNAP #7 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ]
0079 rdi p32 HREF 0014 "assert"
0080 > p32 EQ 0079 [0x416bd458]
0081 int FLOAD 0017 tab.hmask
0082 > int EQ 0081 +1 
0083 rdi p32 FLOAD 0017 tab.node
0084 > p32 HREFK 0083 "__index" @1
0085 rdi > tab HLOAD 0084
0086 int FLOAD 0085 tab.hmask
0087 > int EQ 0086 +63 
0088 rdi p32 FLOAD 0085 tab.node
0089 > p32 HREFK 0088 "assert" @3
0090 > fun HLOAD 0089
0091 rsi p32 HREF 0014 "type"
0092 > p32 EQ 0091 [0x416bd458]
0093 > p32 HREFK 0088 "type" @60
0094 > fun HLOAD 0093
0095 > fun EQ 0094 type
0096 > fun EQ 0090 assert
0097 int FLOAD 0047 tab.asize
0098 > int ABC 0097 +1 
0099 rdi p32 FLOAD 0047 tab.array
0100 p32 AREF 0099 +1 
0101 [18] > str ALOAD 0100
.... SNAP #8 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ssa.lua:55|0047 0011 0012 0013 0101 ]
0102 > str EQ 0101 "if"
.... SNAP #9 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ssa.lua:55|0047 0011 0012 0013 0101 ]
0103 [44] > p32 UREFO ssa.lua:39 #0
0104 xmm7 > num ULOAD 0103
0105 [38] num ADD 0104 +1 
0106 num USTORE 0103 0105
.... SNAP #10 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ssa.lua:55|0047 0011 0012 0013 0101 ssa.lua:39|---- ]
0107 str TOSTR 0105 NUM
0108 rdi p32 BUFHDR [0x416bd414] RESET
0109 rdi p32 BUFPUT 0108 "L" 
0110 rdi p32 BUFPUT 0109 0107
0111 [48] str BUFSTR 0110 0108
0112 [c] > tab TDUP {0x40ff53c0}
0113 rdx > tab TNEW #0 #0
0114 rsi p32 FLOAD 0112 tab.node
0115 p32 HREFK 0114 "bindings" @2
0116 tab HSTORE 0115 0113
0117 p32 HREFK 0114 "label" @3
0118 str HSTORE 0117 0111
.... SNAP #11 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ssa.lua:55|0047 0011 0012 0013 0101 ssa.lua:39|0111 0112 ---- ]
0119 rsi > p32 UREFO ssa.lua:39 #1
0120 [2c] > tab ULOAD 0119
0121 int FLOAD 0120 tab.hmask
0122 > int EQ 0121 +1 
0123 rsi p32 FLOAD 0120 tab.node
0124 > p32 HREFK 0123 "blocks" @0
0125 [40] > tab HLOAD 0124
0126 rdx p32 HREF 0125 0111
0127 > p32 EQ 0126 [0x416bd458]
0128 tab FLOAD 0125 tab.meta
0129 > tab EQ 0128 [NULL]
0130 rdx p32 NEWREF 0125 0111
0131 tab HSTORE 0130 0112
0132 nil TBAR 0125
0133 p32 FREF 0125 tab.nomm
0134 u8  FSTORE 0133 +0 
0135 [30] num ADD 0105 +1 
0136 num USTORE 0103 0135
.... SNAP #12 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ssa.lua:55|0047 0011 0012 0013 0101 0112 ssa.lua:39|---- ]
0137 str TOSTR 0135 NUM
0138 rdi p32 BUFHDR [0x416bd414] RESET
0139 rdi p32 BUFPUT 0138 "L" 
0140 rdi p32 BUFPUT 0139 0137
0141 [1c] str BUFSTR 0140 0138
0142 [14] > tab TDUP {0x40ff53c0}
0143 rdx > tab TNEW #0 #0
0144 rax p32 FLOAD 0142 tab.node
0145 p32 HREFK 0144 "bindings" @2
0146 tab HSTORE 0145 0143
0147 p32 HREFK 0144 "label" @3
0148 str HSTORE 0147 0141
.... SNAP #13 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ssa.lua:55|0047 0011 0012 0013 0101 0112 ssa.lua:39|0141 0142 ---- ]
0149 int FLOAD 0120 tab.hmask
0150 > int EQ 0149 +1 
0151 rsi p32 FLOAD 0120 tab.node
0152 > p32 HREFK 0151 "blocks" @0
0153 [24] > tab HLOAD 0152
0154 rdx p32 HREF 0153 0141
0155 > p32 EQ 0154 [0x416bd458]
0156 tab FLOAD 0153 tab.meta
0157 > tab EQ 0156 [NULL]
0158 r11 p32 NEWREF 0153 0141
0159 tab HSTORE 0158 0142
0160 nil TBAR 0153
0161 p32 FREF 0153 tab.nomm
0162 u8  FSTORE 0161 +0 
.... SNAP #14 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ssa.lua:55|0047 0011 0012 0013 0101 0112 ssa.lua:39|---- 0142 ---- ]
0163 int FLOAD 0047 tab.asize
0164 > int ABC 0163 +2 
0165 rdx p32 FLOAD 0047 tab.array
0166 p32 AREF 0165 +2 
0167 [10] > tab ALOAD 0166
0168 rdx p32 HREF 0014 "assert"
0169 > p32 EQ 0168 [0x416bd458]
0170 int FLOAD 0017 tab.hmask
0171 > int EQ 0170 +1 
0172 rsi p32 FLOAD 0017 tab.node
0173 > p32 HREFK 0172 "__index" @1
0174 rsi > tab HLOAD 0173
0175 int FLOAD 0174 tab.hmask
0176 > int EQ 0175 +63 
0177 rsi p32 FLOAD 0174 tab.node
0178 > p32 HREFK 0177 "assert" @3
0179 > fun HLOAD 0178
0180 rdx p32 HREF 0014 "type"
0181 > p32 EQ 0180 [0x416bd458]
0182 > p32 HREFK 0177 "type" @60
0183 > fun HLOAD 0182
0184 > fun EQ 0183 type
0185 > fun EQ 0179 assert
0186 int FLOAD 0167 tab.asize
0187 > int ABC 0186 +1 
0188 rsi p32 FLOAD 0167 tab.array
0189 p32 AREF 0188 +1 
0190 [8] > str ALOAD 0189
.... SNAP #15 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ssa.lua:55|0047 0011 0012 0013 0101 0112 0142 ssa.lua:55|0167 0011 0112 0142 0190 ]
0191 > str NE 0190 "if"
.... SNAP #16 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ssa.lua:55|0047 0011 0012 0013 0101 0112 0142 ssa.lua:55|0167 0011 0112 0142 0190 ]
0192 > str NE 0190 "let"
.... SNAP #17 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ssa.lua:55|0047 0011 0012 0013 0101 0112 0142 ssa.lua:55|0167 0011 0112 0142 0190 ]
0193 > str NE 0190 "true"
.... SNAP #18 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ssa.lua:55|0047 0011 0012 0013 0101 0112 0142 ssa.lua:55|0167 0011 0112 0142 0190 ]
0194 > str NE 0190 "false"
.... SNAP #19 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ssa.lua:55|0047 0011 0012 0013 0101 0112 0142 ssa.lua:55|0167 0011 0112 0142 0190 ]
0195 > str NE 0190 "match"
.... SNAP #20 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ssa.lua:55|0047 0011 0012 0013 0101 0112 0142 ssa.lua:55|0167 0011 0112 0142 0190 ]
0196 > str NE 0190 "fail"
.... SNAP #21 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ssa.lua:55|0047 0011 0012 0013 0101 0112 0142 ssa.lua:55|0167 0011 0112 0142 0190 ]
0197 > p32 UREFC ssa.lua:55 #4
0198 rdx > tab ULOAD 0197
0199 rsi p32 HREF 0198 0190
0200 > tru HLOAD 0199
0201 r11 > tab TDUP {0x40fe9ad8}
0202 r8 p32 FLOAD 0201 tab.array
0203 p32 AREF 0202 +2 
0204 tab ASTORE 0203 0167
.... SNAP #22 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ssa.lua:55|0047 0011 0012 0013 0101 0112 0142 ssa.lua:55|0167 0011 0112 0142 0190 ssa.lua:49|0011 ---- 0112 0142 0201 ]
0205 int FLOAD 0112 tab.hmask
0206 > int EQ 0205 +3 
0207 r9 p32 FLOAD 0112 tab.node
0208 > p32 HREFK 0207 "label" @3
0209 r9 > str HLOAD 0208
0210 p32 AREF 0202 +3 
0211 str ASTORE 0210 0209
0212 p32 AREF 0202 +4 
0213 str ASTORE 0212 0141
.... SNAP #23 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ssa.lua:55|0047 0011 0012 0013 0101 0112 0142 ssa.lua:55|0167 0011 0112 0142 0190 ssa.lua:49|0011 ---- ---- ---- 0201 ---- ]
0214 int FLOAD 0011 tab.hmask
0215 > int EQ 0214 +3 
0216 r10 p32 FLOAD 0011 tab.node
0217 > p32 HREFK 0216 "control" @1
0218 tab FLOAD 0011 tab.meta
0219 > tab EQ 0218 [NULL]
0220 tab HSTORE 0217 0201
0221 nil TBAR 0011
.... SNAP #24 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ---- ---- 0047 ssa.lua:55|0047 0011 0012 0013 0101 0112 0142 ssa.lua:55|0167 ]
---- TRACE 9 mcode 2906
0bcbdb13 mov eax, [0x416bd4b0]
0bcbdb1a mov eax, [rax+0x20]
0bcbdb1d sub eax, [0x416bd4b4]
0bcbdb24 cmp eax, 0xf0
0bcbdb2a jb 0x0bcb0014 ->1
0bcbdb30 add rsp, -0x50
0bcbdb34 mov dword [0x416bd410], 0x9
0bcbdb3f mov edi, [0x416bd3d8]
0bcbdb46 cmp edi, [0x416bd3dc]
0bcbdb4d jb 0x0bcbdb66
0bcbdb4f mov esi, 0x8
0bcbdb54 mov edi, 0x416bd3b8
0bcbdb59 call 0x00421730 ->lj_gc_step_jit
0bcbdb5e test eax, eax
0bcbdb60 jnz 0x0bcb0010 ->0
0bcbdb66 mov edi, [0x416bd4b0]
0bcbdb6d mov edx, [0x416bd4b4]
0bcbdb74 cmp dword [rdx-0x4], 0x40ff5de8
0bcbdb7b jnz 0x0bcb0014 ->1
0bcbdb81 add edx, -0x40
0bcbdb84 mov [0x416bd4b4], edx
0bcbdb8b cmp dword [rdx-0x8], 0x416cd018
0bcbdb92 jnz 0x0bcb0018 ->2
0bcbdb98 cmp dword [rdx+0x4], -0x0c
0bcbdb9c jnz 0x0bcb0018 ->2
0bcbdba2 mov ebp, [rdx]
0bcbdba4 cmp dword [rbp+0x18], +0x03
0bcbdba8 jbe 0x0bcb0018 ->2
0bcbdbae mov ebp, [rbp+0x8]
0bcbdbb1 cmp dword [rbp+0x1c], -0x0c
0bcbdbb5 jnz 0x0bcb0018 ->2
0bcbdbbb mov ebp, [rbp+0x18]
0bcbdbbe cmp dword [rdx+0x2c], -0x0c
0bcbdbc2 jnz 0x0bcb0018 ->2
0bcbdbc8 mov ebx, [rdx+0x28]
0bcbdbcb cmp dword [rdx+0x14], -0x0c
0bcbdbcf jnz 0x0bcb0018 ->2
0bcbdbd5 mov r15d, [rdx+0x10]
0bcbdbd9 cmp dword [rdx+0x1c], -0x0c
0bcbdbdd jnz 0x0bcb0018 ->2
0bcbdbe3 mov r14d, [rdx+0x18]
0bcbdbe7 mov eax, [0x416cd020]
0bcbdbee mov [rsp+0x20], eax
0bcbdbf2 mov esi, [rax+0x1c]
0bcbdbf5 and esi, 0xce2b6183
0bcbdbfb lea esi, [rsi+rsi*2]
0bcbdbfe shl esi, 0x03
0bcbdc01 add esi, [rax+0x14]
0bcbdc04 cmp dword [rsi+0xc], -0x05
0bcbdc08 jnz 0x0bcbdc17
0bcbdc0a cmp dword [rsi+0x8], 0x416bfdb0
0bcbdc11 jz 0x0bcb0018 ->2
0bcbdc17 mov esi, [rsi+0x10]
0bcbdc1a test esi, esi
0bcbdc1c jnz 0x0bcbdc04
0bcbdc1e mov esi, [rax+0x10]
0bcbdc21 mov [rsp+0x28], esi
0bcbdc25 test esi, esi
0bcbdc27 jz 0x0bcb0018 ->2
0bcbdc2d cmp dword [rsi+0x1c], +0x01
0bcbdc31 jnz 0x0bcb0018 ->2
0bcbdc37 mov r13d, [rsi+0x14]
0bcbdc3b mov rsi, 0xfffffffb416bf4c8
0bcbdc45 cmp rsi, [r13+0x20]
0bcbdc49 jnz 0x0bcb0018 ->2
0bcbdc4f cmp dword [r13+0x1c], -0x0c
0bcbdc54 jnz 0x0bcb0018 ->2
0bcbdc5a mov r13d, [r13+0x18]
0bcbdc5e cmp dword [r13+0x1c], +0x3f
0bcbdc63 jnz 0x0bcb0018 ->2
0bcbdc69 mov esi, [r13+0x14]
0bcbdc6d mov rdx, 0xfffffffb416bfdb0
0bcbdc77 cmp rdx, [rsi+0x50]
0bcbdc7b jnz 0x0bcb0018 ->2
0bcbdc81 cmp dword [rsi+0x4c], -0x09
0bcbdc85 jnz 0x0bcb0018 ->2
0bcbdc8b mov edx, [rax+0x1c]
0bcbdc8e and edx, 0x798a813c
0bcbdc94 lea edx, [rdx+rdx*2]
0bcbdc97 shl edx, 0x03
0bcbdc9a add edx, [rax+0x14]
0bcbdc9d cmp dword [rdx+0xc], -0x05
0bcbdca1 jnz 0x0bcbdcb0
0bcbdca3 cmp dword [rdx+0x8], 0x416bffb0
0bcbdcaa jz 0x0bcb0018 ->2
0bcbdcb0 mov edx, [rdx+0x10]
0bcbdcb3 test edx, edx
0bcbdcb5 jnz 0x0bcbdc9d
0bcbdcb7 mov rdx, 0xfffffffb416bffb0
0bcbdcc1 cmp rdx, [rsi+0x5a8]
0bcbdcc8 jnz 0x0bcb0018 ->2
0bcbdcce cmp dword [rsi+0x5a4], -0x09
0bcbdcd5 jnz 0x0bcb0018 ->2
0bcbdcdb cmp dword [rsi+0x5a0], 0x416bff18
0bcbdce5 jnz 0x0bcb0018 ->2
0bcbdceb cmp dword [rsi+0x48], 0x416bfd88
0bcbdcf2 jnz 0x0bcb0018 ->2
0bcbdcf8 cmp dword [rbp+0x18], +0x04
0bcbdcfc jbe 0x0bcb0018 ->2
0bcbdd02 mov r12d, [rbp+0x8]
0bcbdd06 cmp dword [r12+0xc], -0x05
0bcbdd0c jnz 0x0bcb0018 ->2
0bcbdd12 mov r13d, [r12+0x8]
0bcbdd17 cmp r13d, 0x416bf8f8
0bcbdd1e jz 0x0bcb001c ->3
0bcbdd24 cmp r13d, 0x40fea3e8
0bcbdd2b jnz 0x0bcb0020 ->4
0bcbdd31 cmp dword [r12+0x14], -0x05
0bcbdd37 jnz 0x0bcb0024 ->5
0bcbdd3d mov ecx, [r12+0x10]
0bcbdd42 mov [rsp+0x60], ecx
0bcbdd46 cmp dword [r12+0x1c], -0x0c
0bcbdd4c jnz 0x0bcb0024 ->5
0bcbdd52 mov edx, [r12+0x18]
0bcbdd57 mov [rsp+0x64], edx
0bcbdd5b cmp dword [r12+0x24], -0x0c
0bcbdd61 jnz 0x0bcb0024 ->5
0bcbdd67 mov r12d, [r12+0x20]
0bcbdd6c mov edx, [rax+0x1c]
0bcbdd6f and edx, 0x7230fd67
0bcbdd75 lea edx, [rdx+rdx*2]
0bcbdd78 shl edx, 0x03
0bcbdd7b add edx, [rax+0x14]
0bcbdd7e cmp dword [rdx+0xc], -0x05
0bcbdd82 jnz 0x0bcbdd91
0bcbdd84 cmp dword [rdx+0x8], 0x416bfed8
0bcbdd8b jz 0x0bcb0024 ->5
0bcbdd91 mov edx, [rdx+0x10]
0bcbdd94 test edx, edx
0bcbdd96 jnz 0x0bcbdd7e
0bcbdd98 mov rdx, 0xfffffffb416bfed8
0bcbdda2 cmp rdx, [rsi+0x470]
0bcbdda9 jnz 0x0bcb0024 ->5
0bcbddaf cmp dword [rsi+0x46c], -0x0c
0bcbddb6 jnz 0x0bcb0024 ->5
0bcbddbc mov esi, [rsi+0x468]
0bcbddc2 cmp dword [rsi+0x1c], +0x07
0bcbddc6 jnz 0x0bcb0024 ->5
0bcbddcc mov esi, [rsi+0x14]
0bcbddcf mov rdx, 0xfffffffb416c16d0
0bcbddd9 cmp rdx, [rsi+0xb0]
0bcbdde0 jnz 0x0bcb0024 ->5
0bcbdde6 cmp dword [rsi+0xac], -0x09
0bcbdded jnz 0x0bcb0024 ->5
0bcbddf3 mov edx, [rsi+0xa8]
0bcbddf9 mov [rsp+0x54], edx
0bcbddfd cmp dword [rbx+0x1c], +0x03
0bcbde01 jnz 0x0bcb0024 ->5
0bcbde07 mov esi, [rbx+0x14]
0bcbde0a mov rdx, 0xfffffffb40ff49d0
0bcbde14 cmp rdx, [rsi+0x38]
0bcbde18 jnz 0x0bcb0024 ->5
0bcbde1e cmp dword [rsi+0x34], -0x0c
0bcbde22 jnz 0x0bcb0024 ->5
0bcbde28 mov esi, [rsi+0x30]
0bcbde2b mov [rsp+0x50], esi
0bcbde2f mov esi, 0x40fe6af8
0bcbde34 call 0x004223c0 ->lj_tab_dup
0bcbde39 mov [rsp+0x4c], eax
0bcbde3d mov edi, [rsp+0x50]
0bcbde41 mov esi, [rsp+0x64]
0bcbde45 mov edx, [rsp+0x54]
0bcbde49 mov ecx, [rsp+0x60]
0bcbde4d mov eax, [rax+0x14]
0bcbde50 mov dword [rax+0x4], 0xfffffffb
0bcbde57 mov [rax], ecx
0bcbde59 mov dword [rax+0x1c], 0xfffffff4
0bcbde60 mov [rax+0x18], esi
0bcbde63 cmp edx, 0x416c16a8
0bcbde69 jnz 0x0bcb0028 ->6
0bcbde6f call 0x00423150 ->lj_tab_len
0bcbde74 mov edi, [0x416bd4b0]
0bcbde7b mov esi, [rsp+0x50]
0bcbde7f add eax, +0x01
0bcbde82 cmp eax, [rsi+0x18]
0bcbde85 jb 0x0bcb0028 ->6
0bcbde8b cmp dword [rsi+0x1c], +0x00
0bcbde8f jnz 0x0bcb0028 ->6
0bcbde95 xorps xmm7, xmm7
0bcbde98 cvtsi2sd xmm7, eax
0bcbde9c movsd [rsp+0x58], xmm7
0bcbdea2 lea rdx, [rsp+0x58]
0bcbdea7 call 0x00422cf0 ->lj_tab_newkey
0bcbdeac mov ecx, eax
0bcbdeae mov edi, [rsp+0x50]
0bcbdeb2 mov esi, [rsp+0x28]
0bcbdeb6 mov edx, [rsp+0x4c]
0bcbdeba mov eax, [rsp+0x20]
0bcbdebe mov dword [rcx+0x4], 0xfffffff4
0bcbdec5 mov [rcx], edx
0bcbdec7 test byte [rdi+0x4], 0x4
0bcbdecb jz 0x0bcbdee2
0bcbdecd and byte [rdi+0x4], 0xfb
0bcbded1 mov edx, [0x416bd3f4]
0bcbded8 mov [0x416bd3f4], edi
0bcbdedf mov [rdi+0xc], edx
0bcbdee2 mov edi, [rax+0x1c]
0bcbdee5 and edi, 0xce2b6183
0bcbdeeb lea edi, [rdi+rdi*2]
0bcbdeee shl edi, 0x03
0bcbdef1 add edi, [rax+0x14]
0bcbdef4 cmp dword [rdi+0xc], -0x05
0bcbdef8 jnz 0x0bcbdf07
0bcbdefa cmp dword [rdi+0x8], 0x416bfdb0
0bcbdf01 jz 0x0bcb002c ->7
0bcbdf07 mov edi, [rdi+0x10]
0bcbdf0a test edi, edi
0bcbdf0c jnz 0x0bcbdef4
0bcbdf0e cmp dword [rsi+0x1c], +0x01
0bcbdf12 jnz 0x0bcb002c ->7
0bcbdf18 mov edi, [rsi+0x14]
0bcbdf1b mov rsi, 0xfffffffb416bf4c8
0bcbdf25 cmp rsi, [rdi+0x20]
0bcbdf29 jnz 0x0bcb002c ->7
0bcbdf2f cmp dword [rdi+0x1c], -0x0c
0bcbdf33 jnz 0x0bcb002c ->7
0bcbdf39 mov edi, [rdi+0x18]
0bcbdf3c cmp dword [rdi+0x1c], +0x3f
0bcbdf40 jnz 0x0bcb002c ->7
0bcbdf46 mov edi, [rdi+0x14]
0bcbdf49 mov rsi, 0xfffffffb416bfdb0
0bcbdf53 cmp rsi, [rdi+0x50]
0bcbdf57 jnz 0x0bcb002c ->7
0bcbdf5d cmp dword [rdi+0x4c], -0x09
0bcbdf61 jnz 0x0bcb002c ->7
0bcbdf67 mov esi, [rax+0x1c]
0bcbdf6a and esi, 0x798a813c
0bcbdf70 lea esi, [rsi+rsi*2]
0bcbdf73 shl esi, 0x03
0bcbdf76 add esi, [rax+0x14]
0bcbdf79 cmp dword [rsi+0xc], -0x05
0bcbdf7d jnz 0x0bcbdf8c
0bcbdf7f cmp dword [rsi+0x8], 0x416bffb0
0bcbdf86 jz 0x0bcb002c ->7
0bcbdf8c mov esi, [rsi+0x10]
0bcbdf8f test esi, esi
0bcbdf91 jnz 0x0bcbdf79
0bcbdf93 mov rsi, 0xfffffffb416bffb0
0bcbdf9d cmp rsi, [rdi+0x5a8]
0bcbdfa4 jnz 0x0bcb002c ->7
0bcbdfaa cmp dword [rdi+0x5a4], -0x09
0bcbdfb1 jnz 0x0bcb002c ->7
0bcbdfb7 cmp dword [rdi+0x5a0], 0x416bff18
0bcbdfc1 jnz 0x0bcb002c ->7
0bcbdfc7 cmp dword [rdi+0x48], 0x416bfd88
0bcbdfce jnz 0x0bcb002c ->7
0bcbdfd4 cmp dword [r12+0x18], +0x01
0bcbdfda jbe 0x0bcb002c ->7
0bcbdfe0 mov edi, [r12+0x8]
0bcbdfe5 cmp dword [rdi+0xc], -0x05
0bcbdfe9 jnz 0x0bcb002c ->7
0bcbdfef mov esi, [rdi+0x8]
0bcbdff2 mov [rsp+0x18], esi
0bcbdff6 cmp dword [rdi+0x8], 0x416bf8f8
0bcbdffd jnz 0x0bcb0030 ->8
0bcbe003 mov edi, [0x40fea350]
0bcbe00a mov [rsp+0x44], edi
0bcbe00e cmp dword [rdi+0x4], 0xfffeffff
0bcbe015 jnb 0x0bcb0034 ->9
0bcbe01b movsd xmm7, [rdi]
0bcbe01f addsd xmm7, [0x40fe3fc0]
0bcbe028 movsd [rsp+0x38], xmm7
0bcbe02e movsd [rdi], xmm7
0bcbe032 mov edi, 0x416bd414
0bcbe037 mov esi, [rdi+0x8]
0bcbe03a mov [rdi], esi
0bcbe03c mov esi, 0x4c
0bcbe041 call 0x00421b60 ->lj_buf_putchar
0bcbe046 mov edi, eax
0bcbe048 lea rsi, [rsp+0x38]
0bcbe04d call 0x0040a3c0 ->lj_strfmt_putnum
0bcbe052 mov edi, eax
0bcbe054 call 0x00421ff0 ->lj_buf_tostr
0bcbe059 mov [rsp+0x48], eax
0bcbe05d mov edi, [0x416bd4b0]
0bcbe064 mov esi, 0x40ff53c0
0bcbe069 call 0x004223c0 ->lj_tab_dup
0bcbe06e mov [rsp+0xc], eax
0bcbe072 mov edi, [0x416bd4b0]
0bcbe079 xor esi, esi
0bcbe07b call 0x00422350 ->lj_tab_new1
0bcbe080 mov edx, eax
0bcbe082 mov edi, [0x416bd4b0]
0bcbe089 mov esi, [rsp+0xc]
0bcbe08d mov eax, [rsp+0x48]
0bcbe091 mov esi, [rsi+0x14]
0bcbe094 mov dword [rsi+0x34], 0xfffffff4
0bcbe09b mov [rsi+0x30], edx
0bcbe09e mov dword [rsi+0x4c], 0xfffffffb
0bcbe0a5 mov [rsi+0x48], eax
0bcbe0a8 mov esi, [0x416d20c0]
0bcbe0af cmp dword [rsi+0x4], -0x0c
0bcbe0b3 jnz 0x0bcb003c ->11
0bcbe0b9 mov esi, [rsi]
0bcbe0bb mov [rsp+0x2c], esi
0bcbe0bf cmp dword [rsi+0x1c], +0x01
0bcbe0c3 jnz 0x0bcb003c ->11
0bcbe0c9 mov esi, [rsi+0x14]
0bcbe0cc mov rdx, 0xfffffffb40ff4698
0bcbe0d6 cmp rdx, [rsi+0x8]
0bcbe0da jnz 0x0bcb003c ->11
0bcbe0e0 cmp dword [rsi+0x4], -0x0c
0bcbe0e4 jnz 0x0bcb003c ->11
0bcbe0ea mov esi, [rsi]
0bcbe0ec mov [rsp+0x40], esi
0bcbe0f0 mov edx, [rsi+0x1c]
0bcbe0f3 and edx, [rax+0x8]
0bcbe0f6 lea edx, [rdx+rdx*2]
0bcbe0f9 shl edx, 0x03
0bcbe0fc add edx, [rsi+0x14]
0bcbe0ff cmp dword [rdx+0xc], -0x05
0bcbe103 jnz 0x0bcbe10e
0bcbe105 cmp eax, [rdx+0x8]
0bcbe108 jz 0x0bcb003c ->11
0bcbe10e mov edx, [rdx+0x10]
0bcbe111 test edx, edx
0bcbe113 jnz 0x0bcbe0ff
0bcbe115 cmp dword [rsi+0x10], +0x00
0bcbe119 jnz 0x0bcb003c ->11
0bcbe11f mov edx, 0x416bd448
0bcbe124 mov dword [rdx+0x4], 0xfffffffb
0bcbe12b mov [rdx], eax
0bcbe12d call 0x00422cf0 ->lj_tab_newkey
0bcbe132 mov edx, eax
0bcbe134 mov edi, [rsp+0x44]
0bcbe138 mov esi, [rsp+0x40]
0bcbe13c mov eax, [rsp+0xc]
0bcbe140 movsd xmm7, [rsp+0x38]
0bcbe146 mov dword [rdx+0x4], 0xfffffff4
0bcbe14d mov [rdx], eax
0bcbe14f test byte [rsi+0x4], 0x4
0bcbe153 jz 0x0bcbe16a
0bcbe155 and byte [rsi+0x4], 0xfb
0bcbe159 mov edx, [0x416bd3f4]
0bcbe160 mov [0x416bd3f4], esi
0bcbe167 mov [rsi+0xc], edx
0bcbe16a mov byte [rsi+0x6], 0x0
0bcbe16e addsd xmm7, [0x40fe3fc0]
0bcbe177 movsd [rsp+0x30], xmm7
0bcbe17d movsd [rdi], xmm7
0bcbe181 mov edi, 0x416bd414
0bcbe186 mov esi, [rdi+0x8]
0bcbe189 mov [rdi], esi
0bcbe18b mov esi, 0x4c
0bcbe190 call 0x00421b60 ->lj_buf_putchar
0bcbe195 mov edi, eax
0bcbe197 lea rsi, [rsp+0x30]
0bcbe19c call 0x0040a3c0 ->lj_strfmt_putnum
0bcbe1a1 mov edi, eax
0bcbe1a3 call 0x00421ff0 ->lj_buf_tostr
0bcbe1a8 mov [rsp+0x1c], eax
0bcbe1ac mov edi, [0x416bd4b0]
0bcbe1b3 mov esi, 0x40ff53c0
0bcbe1b8 call 0x004223c0 ->lj_tab_dup
0bcbe1bd mov [rsp+0x14], eax
0bcbe1c1 mov edi, [0x416bd4b0]
0bcbe1c8 xor esi, esi
0bcbe1ca call 0x00422350 ->lj_tab_new1
0bcbe1cf mov edx, eax
0bcbe1d1 mov r10d, [rsp+0x1c]
0bcbe1d6 mov edi, [0x416bd4b0]
0bcbe1dd mov esi, [rsp+0x2c]
0bcbe1e1 mov ecx, [rsp+0x14]
0bcbe1e5 mov eax, [rcx+0x14]
0bcbe1e8 mov dword [rax+0x34], 0xfffffff4
0bcbe1ef mov [rax+0x30], edx
0bcbe1f2 mov dword [rax+0x4c], 0xfffffffb
0bcbe1f9 mov [rax+0x48], r10d
0bcbe1fd cmp dword [rsi+0x1c], +0x01
0bcbe201 jnz 0x0bcb0044 ->13
0bcbe207 mov esi, [rsi+0x14]
0bcbe20a mov rdx, 0xfffffffb40ff4698
0bcbe214 cmp rdx, [rsi+0x8]
0bcbe218 jnz 0x0bcb0044 ->13
0bcbe21e cmp dword [rsi+0x4], -0x0c
0bcbe222 jnz 0x0bcb0044 ->13
0bcbe228 mov esi, [rsi]
0bcbe22a mov [rsp+0x24], esi
0bcbe22e mov edx, [rsi+0x1c]
0bcbe231 and edx, [r10+0x8]
0bcbe235 lea edx, [rdx+rdx*2]
0bcbe238 shl edx, 0x03
0bcbe23b add edx, [rsi+0x14]
0bcbe23e cmp dword [rdx+0xc], -0x05
0bcbe242 jnz 0x0bcbe24e
0bcbe244 cmp r10d, [rdx+0x8]
0bcbe248 jz 0x0bcb0044 ->13
0bcbe24e mov edx, [rdx+0x10]
0bcbe251 test edx, edx
0bcbe253 jnz 0x0bcbe23e
0bcbe255 cmp dword [rsi+0x10], +0x00
0bcbe259 jnz 0x0bcb0044 ->13
0bcbe25f mov edx, 0x416bd448
0bcbe264 mov dword [rdx+0x4], 0xfffffffb
0bcbe26b mov [rdx], r10d
0bcbe26e call 0x00422cf0 ->lj_tab_newkey
0bcbe273 mov r11d, eax
0bcbe276 mov edi, [0x416bd4b0]
0bcbe27d mov esi, [rsp+0x28]
0bcbe281 mov edx, [rsp+0x24]
0bcbe285 mov ecx, [rsp+0x14]
0bcbe289 mov eax, [rsp+0x20]
0bcbe28d mov dword [r11+0x4], 0xfffffff4
0bcbe295 mov [r11], ecx
0bcbe298 test byte [rdx+0x4], 0x4
0bcbe29c jz 0x0bcbe2b3
0bcbe29e and byte [rdx+0x4], 0xfb
0bcbe2a2 mov ecx, [0x416bd3f4]
0bcbe2a9 mov [0x416bd3f4], edx
0bcbe2b0 mov [rdx+0xc], ecx
0bcbe2b3 mov byte [rdx+0x6], 0x0
0bcbe2b7 cmp dword [r12+0x18], +0x02
0bcbe2bd jbe 0x0bcb0048 ->14
0bcbe2c3 mov edx, [r12+0x8]
0bcbe2c8 cmp dword [rdx+0x14], -0x0c
0bcbe2cc jnz 0x0bcb0048 ->14
0bcbe2d2 mov ecx, [rdx+0x10]
0bcbe2d5 mov [rsp+0x10], ecx
0bcbe2d9 mov edx, [rax+0x1c]
0bcbe2dc and edx, 0xce2b6183
0bcbe2e2 lea edx, [rdx+rdx*2]
0bcbe2e5 shl edx, 0x03
0bcbe2e8 add edx, [rax+0x14]
0bcbe2eb cmp dword [rdx+0xc], -0x05
0bcbe2ef jnz 0x0bcbe2fe
0bcbe2f1 cmp dword [rdx+0x8], 0x416bfdb0
0bcbe2f8 jz 0x0bcb0048 ->14
0bcbe2fe mov edx, [rdx+0x10]
0bcbe301 test edx, edx
0bcbe303 jnz 0x0bcbe2eb
0bcbe305 cmp dword [rsi+0x1c], +0x01
0bcbe309 jnz 0x0bcb0048 ->14
0bcbe30f mov esi, [rsi+0x14]
0bcbe312 mov rdx, 0xfffffffb416bf4c8
0bcbe31c cmp rdx, [rsi+0x20]
0bcbe320 jnz 0x0bcb0048 ->14
0bcbe326 cmp dword [rsi+0x1c], -0x0c
0bcbe32a jnz 0x0bcb0048 ->14
0bcbe330 mov esi, [rsi+0x18]
0bcbe333 cmp dword [rsi+0x1c], +0x3f
0bcbe337 jnz 0x0bcb0048 ->14
0bcbe33d mov esi, [rsi+0x14]
0bcbe340 mov rdx, 0xfffffffb416bfdb0
0bcbe34a cmp rdx, [rsi+0x50]
0bcbe34e jnz 0x0bcb0048 ->14
0bcbe354 cmp dword [rsi+0x4c], -0x09
0bcbe358 jnz 0x0bcb0048 ->14
0bcbe35e mov edx, [rax+0x1c]
0bcbe361 and edx, 0x798a813c
0bcbe367 lea edx, [rdx+rdx*2]
0bcbe36a shl edx, 0x03
0bcbe36d add edx, [rax+0x14]
0bcbe370 cmp dword [rdx+0xc], -0x05
0bcbe374 jnz 0x0bcbe383
0bcbe376 cmp dword [rdx+0x8], 0x416bffb0
0bcbe37d jz 0x0bcb0048 ->14
0bcbe383 mov edx, [rdx+0x10]
0bcbe386 test edx, edx
0bcbe388 jnz 0x0bcbe370
0bcbe38a mov rdx, 0xfffffffb416bffb0
0bcbe394 cmp rdx, [rsi+0x5a8]
0bcbe39b jnz 0x0bcb0048 ->14
0bcbe3a1 cmp dword [rsi+0x5a4], -0x09
0bcbe3a8 jnz 0x0bcb0048 ->14
0bcbe3ae cmp dword [rsi+0x5a0], 0x416bff18
0bcbe3b8 jnz 0x0bcb0048 ->14
0bcbe3be cmp dword [rsi+0x48], 0x416bfd88
0bcbe3c5 jnz 0x0bcb0048 ->14
0bcbe3cb cmp dword [rcx+0x18], +0x01
0bcbe3cf jbe 0x0bcb0048 ->14
0bcbe3d5 mov esi, [rcx+0x8]
0bcbe3d8 cmp dword [rsi+0xc], -0x05
0bcbe3dc jnz 0x0bcb0048 ->14
0bcbe3e2 mov r9d, [rsi+0x8]
0bcbe3e6 mov [rsp+0x8], r9d
0bcbe3eb cmp r9d, 0x416bf8f8
0bcbe3f2 jz 0x0bcb004c ->15
0bcbe3f8 cmp r9d, 0x40fea3e8
0bcbe3ff jz 0x0bcb0050 ->16
0bcbe405 cmp r9d, 0x416bfa18
0bcbe40c jz 0x0bcb0054 ->17
0bcbe412 cmp r9d, 0x416bf870
0bcbe419 jz 0x0bcb0058 ->18
0bcbe41f cmp r9d, 0x416c2cb0
0bcbe426 jz 0x0bcb005c ->19
0bcbe42c cmp r9d, 0x416d1ce0
0bcbe433 jz 0x0bcb0060 ->20
0bcbe439 cmp dword [0x416d21c4], -0x0c
0bcbe441 jnz 0x0bcb0064 ->21
0bcbe447 mov edx, [0x416d21c0]
0bcbe44e mov esi, [rdx+0x1c]
0bcbe451 and esi, [r9+0x8]
0bcbe455 lea esi, [rsi+rsi*2]
0bcbe458 shl esi, 0x03
0bcbe45b add esi, [rdx+0x14]
0bcbe45e cmp dword [rsi+0xc], -0x05
0bcbe462 jnz 0x0bcbe46a
0bcbe464 cmp r9d, [rsi+0x8]
0bcbe468 jz 0x0bcbe476
0bcbe46a mov esi, [rsi+0x10]
0bcbe46d test esi, esi
0bcbe46f jnz 0x0bcbe45e
0bcbe471 mov esi, 0x416bd458
0bcbe476 cmp dword [rsi+0x4], -0x03
0bcbe47a jnz 0x0bcb0064 ->21
0bcbe480 mov esi, 0x40fe9ad8
0bcbe485 call 0x004223c0 ->lj_tab_dup
0bcbe48a mov r11d, eax
0bcbe48d mov r10d, [rsp+0x1c]
0bcbe492 mov edi, [rsp+0x18]
0bcbe496 mov esi, [rsp+0x14]
0bcbe49a mov ecx, [rsp+0x10]
0bcbe49e mov eax, [rsp+0xc]
0bcbe4a2 mov r8d, [r11+0x8]
0bcbe4a6 mov dword [r8+0x14], 0xfffffff4
0bcbe4ae mov [r8+0x10], ecx
0bcbe4b2 cmp dword [rax+0x1c], +0x03
0bcbe4b6 jnz 0x0bcb0068 ->22
0bcbe4bc mov r9d, [rax+0x14]
0bcbe4c0 mov rdx, 0xfffffffb40ff4738
0bcbe4ca cmp rdx, [r9+0x50]
0bcbe4ce mov edx, [0x416bd4b4]
0bcbe4d5 jnz 0x0bcb0068 ->22
0bcbe4db cmp dword [r9+0x4c], -0x05
0bcbe4e0 jnz 0x0bcb0068 ->22
0bcbe4e6 mov r9d, [r9+0x48]
0bcbe4ea mov dword [r8+0x1c], 0xfffffffb
0bcbe4f2 mov [r8+0x18], r9d
0bcbe4f6 mov dword [r8+0x24], 0xfffffffb
0bcbe4fe mov [r8+0x20], r10d
0bcbe502 cmp dword [rbx+0x1c], +0x03
0bcbe506 jnz 0x0bcb006c ->23
0bcbe50c mov r10d, [rbx+0x14]
0bcbe510 mov r8, 0xfffffffb40ff4ea0
0bcbe51a cmp r8, [r10+0x20]
0bcbe51e jnz 0x0bcb006c ->23
0bcbe524 cmp dword [rbx+0x10], +0x00
0bcbe528 jnz 0x0bcb006c ->23
0bcbe52e mov dword [r10+0x1c], 0xfffffff4
0bcbe536 mov [r10+0x18], r11d
0bcbe53a test byte [rbx+0x4], 0x4
0bcbe53e jz 0x0bcbe557
0bcbe540 and byte [rbx+0x4], 0xfb
0bcbe544 mov r11d, [0x416bd3f4]
0bcbe54c mov [0x416bd3f4], ebx
0bcbe553 mov [rbx+0xc], r11d
0bcbe557 mov dword [rdx+0xcc], 0xfffffff4
0bcbe561 mov [rdx+0xc8], ecx
0bcbe567 mov dword [rdx+0xc4], 0x40ff5de8
0bcbe571 mov dword [rdx+0xc0], 0x416cd018
0bcbe57b mov dword [rdx+0xbc], 0xfffffff4
0bcbe585 mov [rdx+0xb8], esi
0bcbe58b mov dword [rdx+0xb4], 0xfffffff4
0bcbe595 mov [rdx+0xb0], eax
0bcbe59b mov dword [rdx+0xac], 0xfffffffb
0bcbe5a5 mov [rdx+0xa8], edi
0bcbe5ab mov dword [rdx+0xa4], 0xfffffff4
0bcbe5b5 mov [rdx+0xa0], r14d
0bcbe5bc mov dword [rdx+0x9c], 0xfffffff4
0bcbe5c6 mov [rdx+0x98], r15d
0bcbe5cd mov dword [rdx+0x94], 0xfffffff4
0bcbe5d7 mov [rdx+0x90], ebx
0bcbe5dd mov dword [rdx+0x8c], 0xfffffff4
0bcbe5e7 mov [rdx+0x88], r12d
0bcbe5ee mov dword [rdx+0x84], 0x40ff5e64
0bcbe5f8 mov dword [rdx+0x80], 0x416cd018
0bcbe602 mov dword [rdx+0x7c], 0xfffffff4
0bcbe609 mov [rdx+0x78], r12d
0bcbe60d mov dword [rdx+0x64], 0xfffffffb
0bcbe614 mov [rdx+0x60], r13d
0bcbe618 mov dword [rdx+0x5c], 0xfffffff4
0bcbe61f mov [rdx+0x58], r14d
0bcbe623 mov dword [rdx+0x54], 0xfffffff4
0bcbe62a mov [rdx+0x50], r15d
0bcbe62e mov dword [rdx+0x4c], 0xfffffff4
0bcbe635 mov [rdx+0x48], ebx
0bcbe638 mov dword [rdx+0x44], 0xfffffff4
0bcbe63f mov [rdx+0x40], ebp
0bcbe642 mov dword [rdx+0x3c], 0x40ff5e00
0bcbe649 mov dword [rdx+0x38], 0x416cd018
0bcbe650 mov dword [rdx-0x8], 0x416cd018
0bcbe657 add edx, 0xc8
0bcbe65d mov [0x416bd4b4], edx
0bcbe664 add rsp, +0x60
0bcbe668 jmp 0x0bcbf398
---- TRACE 9 stop -> 4
---- TRACE 9 exit 4
---- TRACE 8 exit 1
---- TRACE 4 exit 7
---- TRACE 3 exit 0
---- TRACE 9 exit 1
---- TRACE 4 exit 6
---- TRACE 5 exit 1
---- TRACE 9 exit 1
---- TRACE 4 exit 7
---- TRACE 3 exit 0
---- TRACE 10 start 3/0 ssa.lua:53
0001 TDUP 2 1
0002 TGETS 3 1 2 ; "label"
0003 TSETB 3 2 2
0004 TSETS 2 0 0 ; "control"
0005 RET0 0 1
0069 JMP 5 => 0094
0094 JLOOP 1 4
---- TRACE 10 IR
.... SNAP #0 [ ---- ---- ---- ]
0001 rax > tab TDUP {0x40fe38f0}
0002 rbp > tab SLOAD #2 T
0003 int FLOAD 0002 tab.hmask
0004 > int EQ 0003 +3 
0005 rbx p32 FLOAD 0002 tab.node
0006 > p32 HREFK 0005 "label" @3
0007 > nil HLOAD 0006
0008 tab FLOAD 0002 tab.meta
0009 > tab EQ 0008 [NULL]
0010 rbp p32 FLOAD 0001 tab.array
0011 p32 AREF 0010 +2 
0012 nil ASTORE 0011 nil
.... SNAP #1 [ ---- ---- ---- 0001 ---- ]
0013 rbp > tab SLOAD #1 T
0014 int FLOAD 0013 tab.hmask
0015 > int EQ 0014 +3 
0016 rbx p32 FLOAD 0013 tab.node
0017 > p32 HREFK 0016 "control" @1
0018 tab FLOAD 0013 tab.meta
0019 > tab EQ 0018 [NULL]
0020 tab HSTORE 0017 0001
0021 nil TBAR 0013
.... SNAP #2 [ ---- ---- ---- ---- ---- ]
0022 > p32 RETF proto: 0x40ff5d48 [0x40ff5e9c]
.... SNAP #3 [ ---- ---- ]
---- TRACE 10 mcode 296
0bcbd9e4 mov eax, [0x416bd4b0]
0bcbd9eb mov eax, [rax+0x20]
0bcbd9ee sub eax, [0x416bd4b4]
0bcbd9f5 cmp eax, +0x38
0bcbd9f8 jb 0x0bcb0010 ->0
0bcbd9fe mov dword [0x416bd410], 0xa
0bcbda09 mov edi, [0x416bd3d8]
0bcbda10 cmp edi, [0x416bd3dc]
0bcbda17 jb 0x0bcbda30
0bcbda19 mov esi, 0x1
0bcbda1e mov edi, 0x416bd3b8
0bcbda23 call 0x00421730 ->lj_gc_step_jit
0bcbda28 test eax, eax
0bcbda2a jnz 0x0bcb0010 ->0
0bcbda30 mov edi, [0x416bd4b0]
0bcbda37 mov esi, 0x40fe38f0
0bcbda3c call 0x004223c0 ->lj_tab_dup
0bcbda41 mov edx, [0x416bd4b4]
0bcbda48 cmp dword [rdx+0xc], -0x0c
0bcbda4c jnz 0x0bcb0010 ->0
0bcbda52 mov ebp, [rdx+0x8]
0bcbda55 cmp dword [rbp+0x1c], +0x03
0bcbda59 jnz 0x0bcb0010 ->0
0bcbda5f mov ebx, [rbp+0x14]
0bcbda62 mov rdi, 0xfffffffb40ff4738
0bcbda6c cmp rdi, [rbx+0x50]
0bcbda70 jnz 0x0bcb0010 ->0
0bcbda76 cmp dword [rbx+0x4c], -0x01
0bcbda7a jnz 0x0bcb0010 ->0
0bcbda80 cmp dword [rbp+0x10], +0x00
0bcbda84 jnz 0x0bcb0010 ->0
0bcbda8a mov ebp, [rax+0x8]
0bcbda8d mov dword [rbp+0x14], 0xffffffff
0bcbda94 cmp dword [rdx+0x4], -0x0c
0bcbda98 jnz 0x0bcb0014 ->1
0bcbda9e mov ebp, [rdx]
0bcbdaa0 cmp dword [rbp+0x1c], +0x03
0bcbdaa4 jnz 0x0bcb0014 ->1
0bcbdaaa mov ebx, [rbp+0x14]
0bcbdaad mov rdi, 0xfffffffb40ff4ea0
0bcbdab7 cmp rdi, [rbx+0x20]
0bcbdabb jnz 0x0bcb0014 ->1
0bcbdac1 cmp dword [rbp+0x10], +0x00
0bcbdac5 jnz 0x0bcb0014 ->1
0bcbdacb mov dword [rbx+0x1c], 0xfffffff4
0bcbdad2 mov [rbx+0x18], eax
0bcbdad5 test byte [rbp+0x4], 0x4
0bcbdad9 jz 0x0bcbdaf0
0bcbdadb and byte [rbp+0x4], 0xfb
0bcbdadf mov edi, [0x416bd3f4]
0bcbdae6 mov [0x416bd3f4], ebp
0bcbdaed mov [rbp+0xc], edi
0bcbdaf0 cmp dword [rdx-0x4], 0x40ff5e9c
0bcbdaf7 jnz 0x0bcb0018 ->2
0bcbdafd add edx, -0x30
0bcbdb00 mov [0x416bd4b4], edx
0bcbdb07 jmp 0x0bcbf398
---- TRACE 10 stop -> 4
---- TRACE 4 exit 7
---- TRACE 9 exit 1
---- TRACE 4 exit 3
---- TRACE 2 exit 8
---- TRACE 9 exit 5
---- TRACE 1 start ssa.lua:39
0001 UGET 0 0 ; label_counter
0002 ADDVN 0 0 0 ; 1
0003 USETV 0 0 ; label_counter
0004 KSTR 0 0 ; "L"
0005 UGET 1 0 ; label_counter
0006 CAT 0 0 1
0007 TDUP 1 1
0008 TNEW 2 0
0009 TSETS 2 1 2 ; "bindings"
0010 TSETS 0 1 3 ; "label"
0011 UGET 2 1 ; ssa
0012 TGETS 2 2 4 ; "blocks"
0013 TSETV 1 2 0
0014 RET1 1 2
---- TRACE 1 IR
.... SNAP #0 [ ---- ]
0001 rbp fun SLOAD #0 R
0002 rbx > p32 UREFO 0001 #0
0003 xmm7 > num ULOAD 0002
0004 [10] num ADD 0003 +1 
0005 num USTORE 0002 0004
.... SNAP #1 [ ---- ---- ]
0006 str TOSTR 0004 NUM
0007 rdi p32 BUFHDR [0x41d65414] RESET
0008 rdi p32 BUFPUT 0007 "L" 
0009 rdi p32 BUFPUT 0008 0006
0010 [c] str BUFSTR 0009 0007
0011 [8] > tab TDUP {0x41d69148}
0012 r15 > tab TNEW #0 #0
0013 rbx p32 FLOAD 0011 tab.node
0014 p32 HREFK 0013 "bindings" @0
0015 tab HSTORE 0014 0012
0016 p32 HREFK 0013 "label" @1
0017 str HSTORE 0016 0010
.... SNAP #2 [ ---- 0010 0011 ---- ]
0018 rbp > p32 UREFO 0001 #1
0019 rbp > tab ULOAD 0018
0020 int FLOAD 0019 tab.hmask
0021 > int EQ 0020 +1 
0022 rbp p32 FLOAD 0019 tab.node
0023 > p32 HREFK 0022 "blocks" @0
0024 rbp > tab HLOAD 0023
0025 rsi p32 HREF 0024 0010
0026 > p32 EQ 0025 [0x41d65458]
0027 tab FLOAD 0024 tab.meta
0028 > tab EQ 0027 [NULL]
0029 rbx p32 NEWREF 0024 0010
0030 tab HSTORE 0029 0011
0031 nil TBAR 0024
0032 p32 FREF 0024 tab.nomm
0033 u8  FSTORE 0032 +0 
.... SNAP #3 [ ---- ---- 0011 ]
---- TRACE 1 mcode 441
0bcbfe44 add rsp, -0x10
0bcbfe48 mov dword [0x41d65410], 0x1
0bcbfe53 mov edi, [0x41d653d8]
0bcbfe5a cmp edi, [0x41d653dc]
0bcbfe61 jb 0x0bcbfe7a
0bcbfe63 mov esi, 0x3
0bcbfe68 mov edi, 0x41d653b8
0bcbfe6d call 0x00421730 ->lj_gc_step_jit
0bcbfe72 test eax, eax
0bcbfe74 jnz 0x0bcb0010 ->0
0bcbfe7a mov edx, [0x41d654b4]
0bcbfe81 mov ebp, [rdx-0x8]
0bcbfe84 mov edi, [rbp+0x14]
0bcbfe87 mov ebx, [rdi+0x10]
0bcbfe8a cmp dword [rbx+0x4], 0xfffeffff
0bcbfe91 jnb 0x0bcb0010 ->0
0bcbfe97 movsd xmm7, [rbx]
0bcbfe9b addsd xmm7, [0x41879ee8]
0bcbfea4 movsd [rsp+0x10], xmm7
0bcbfeaa movsd [rbx], xmm7
0bcbfeae mov edi, 0x41d65414
0bcbfeb3 mov esi, [rdi+0x8]
0bcbfeb6 mov [rdi], esi
0bcbfeb8 mov esi, 0x4c
0bcbfebd call 0x00421b60 ->lj_buf_putchar
0bcbfec2 mov edi, eax
0bcbfec4 lea rsi, [rsp+0x10]
0bcbfec9 call 0x0040a3c0 ->lj_strfmt_putnum
0bcbfece mov edi, eax
0bcbfed0 call 0x00421ff0 ->lj_buf_tostr
0bcbfed5 mov [rsp+0xc], eax
0bcbfed9 mov edi, [0x41d654b0]
0bcbfee0 mov esi, 0x41d69148
0bcbfee5 call 0x004223c0 ->lj_tab_dup
0bcbfeea mov ebx, eax
0bcbfeec mov [rsp+0x8], ebx
0bcbfef0 mov edi, [0x41d654b0]
0bcbfef7 xor esi, esi
0bcbfef9 call 0x00422350 ->lj_tab_new1
0bcbfefe mov r15d, eax
0bcbff01 mov edi, [0x41d654b0]
0bcbff08 mov eax, [rsp+0xc]
0bcbff0c mov ebx, [rbx+0x14]
0bcbff0f mov dword [rbx+0x4], 0xfffffff4
0bcbff16 mov [rbx], r15d
0bcbff19 mov dword [rbx+0x1c], 0xfffffffb
0bcbff20 mov [rbx+0x18], eax
0bcbff23 mov esi, [rbp+0x18]
0bcbff26 mov ebp, [rsi+0x10]
0bcbff29 cmp dword [rbp+0x4], -0x0c
0bcbff2d jnz 0x0bcb0018 ->2
0bcbff33 mov ebp, [rbp+0x0]
0bcbff36 cmp dword [rbp+0x1c], +0x01
0bcbff3a jnz 0x0bcb0018 ->2
0bcbff40 mov ebp, [rbp+0x14]
0bcbff43 mov rsi, 0xfffffffb41884340
0bcbff4d cmp rsi, [rbp+0x8]
0bcbff51 jnz 0x0bcb0018 ->2
0bcbff57 cmp dword [rbp+0x4], -0x0c
0bcbff5b jnz 0x0bcb0018 ->2
0bcbff61 mov ebp, [rbp+0x0]
0bcbff64 mov esi, [rbp+0x1c]
0bcbff67 and esi, [rax+0x8]
0bcbff6a lea esi, [rsi+rsi*2]
0bcbff6d shl esi, 0x03
0bcbff70 add esi, [rbp+0x14]
0bcbff73 cmp dword [rsi+0xc], -0x05
0bcbff77 jnz 0x0bcbff82
0bcbff79 cmp eax, [rsi+0x8]
0bcbff7c jz 0x0bcb0018 ->2
0bcbff82 mov esi, [rsi+0x10]
0bcbff85 test esi, esi
0bcbff87 jnz 0x0bcbff73
0bcbff89 cmp dword [rbp+0x10], +0x00
0bcbff8d jnz 0x0bcb0018 ->2
0bcbff93 mov edx, 0x41d65448
0bcbff98 mov dword [rdx+0x4], 0xfffffffb
0bcbff9f mov [rdx], eax
0bcbffa1 mov esi, ebp
0bcbffa3 call 0x00422cf0 ->lj_tab_newkey
0bcbffa8 mov ebx, eax
0bcbffaa mov edx, [0x41d654b4]
0bcbffb1 mov eax, [rsp+0x8]
0bcbffb5 mov dword [rbx+0x4], 0xfffffff4
0bcbffbc mov [rbx], eax
0bcbffbe test byte [rbp+0x4], 0x4
0bcbffc2 jz 0x0bcbffd9
0bcbffc4 and byte [rbp+0x4], 0xfb
0bcbffc8 mov edi, [0x41d653f4]
0bcbffcf mov [0x41d653f4], ebp
0bcbffd6 mov [rbp+0xc], edi
0bcbffd9 mov byte [rbp+0x6], 0x0
0bcbffdd mov dword [rdx+0xc], 0xfffffff4
0bcbffe4 mov [rdx+0x8], eax
0bcbffe7 xor eax, eax
0bcbffe9 mov ebx, 0x41885018
0bcbffee mov r14d, 0x41d66008
0bcbfff4 add rsp, +0x10
0bcbfff8 jmp 0x00420177
---- TRACE 1 stop -> return
---- TRACE 2 start ssa.lua:55
0001 GGET 4 0 ; "assert"
0002 GGET 5 1 ; "type"
0003 MOV 6 0
0004 CALL 5 2 2
0000 . FUNCC ; type
0005 ISEQS 5 2 ; "table"
0006 JMP 5 => 0009
0009 KPRI 5 2
0010 CALL 4 1 2
0000 . FUNCC ; assert
0011 TGETB 4 0 1
0012 ISNES 4 3 ; "if"
0013 JMP 5 => 0037
0014 UGET 5 0 ; add_block
0015 CALL 5 2 1
0000 . JFUNCF 3 1 ; ssa.lua:39
0001 . UGET 0 0 ; label_counter
0002 . ADDVN 0 0 0 ; 1
0003 . USETV 0 0 ; label_counter
0004 . KSTR 0 0 ; "L"
0005 . UGET 1 0 ; label_counter
0006 . CAT 0 0 1
0007 . TDUP 1 1
0008 . TNEW 2 0
0009 . TSETS 2 1 2 ; "bindings"
0010 . TSETS 0 1 3 ; "label"
0011 . UGET 2 1 ; ssa
0012 . TGETS 2 2 4 ; "blocks"
0013 . TSETV 1 2 0
0014 . RET1 1 2
0016 UGET 6 0 ; add_block
0017 CALL 6 2 1
0000 . JFUNCF 3 1 ; ssa.lua:39
0001 . UGET 0 0 ; label_counter
0002 . ADDVN 0 0 0 ; 1
0003 . USETV 0 0 ; label_counter
0004 . KSTR 0 0 ; "L"
0005 . UGET 1 0 ; label_counter
0006 . CAT 0 0 1
0007 . TDUP 1 1
0008 . TNEW 2 0
0009 . TSETS 2 1 2 ; "bindings"
0010 . TSETS 0 1 3 ; "label"
0011 . UGET 2 1 ; ssa
0012 . TGETS 2 2 4 ; "blocks"
0013 . TSETV 1 2 0
0014 . RET1 1 2
0018 UGET 7 1 ; compile_bool
0019 TGETB 8 0 2
0020 MOV 9 1
0021 MOV 10 5
0022 MOV 11 6
0023 CALL 7 1 5
0000 . FUNCF 13 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0070 . ISNES 4 12 ; "match"
0071 . JMP 5 => 0077
0077 . ISNES 4 14 ; "fail"
0078 . JMP 5 => 0084
0084 . GGET 5 0 ; "assert"
0085 . UGET 6 4 ; relops
0086 . TGETV 6 6 4
0087 . CALL 5 1 2
0000 . . FUNCC ; assert
0088 . UGET 5 5 ; finish_if
0089 . MOV 6 1
0090 . MOV 7 0
0091 . MOV 8 2
0092 . MOV 9 3
0093 . CALL 5 1 5
0000 . . FUNCF 6 ; ssa.lua:49
0001 . . TDUP 4 1
0002 . . TSETB 1 4 2
0003 . . TGETS 5 2 2 ; "label"
0004 . . TSETB 5 4 3
0005 . . TGETS 5 3 2 ; "label"
0006 . . TSETB 5 4 4
0007 . . TSETS 4 0 0 ; "control"
0008 . . RET0 0 1
0094 . RET0 0 1
0024 UGET 7 1 ; compile_bool
0025 TGETB 8 0 3
0026 MOV 9 5
0027 MOV 10 2
0028 MOV 11 3
0029 CALL 7 1 5
0000 . FUNCF 13 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0058 . UGET 5 2 ; finish_goto
0059 . MOV 6 1
0060 . MOV 7 2
0061 . CALL 5 1 3
0000 . . FUNCF 4 ; ssa.lua:52
0001 . . TDUP 2 1
0002 . . TGETS 3 1 2 ; "label"
0003 . . TSETB 3 2 2
0004 . . TSETS 2 0 0 ; "control"
0005 . . RET0 0 1
0062 . JMP 5 => 0094
0094 . RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . FUNCF 13 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0014 . UGET 5 0 ; add_block
0015 . CALL 5 2 1
0000 . . JFUNCF 3 1 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0016 . UGET 6 0 ; add_block
0017 . CALL 6 2 1
0000 . . JFUNCF 3 1 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0018 . UGET 7 1 ; compile_bool
0019 . TGETB 8 0 2
0020 . MOV 9 1
0021 . MOV 10 5
0022 . MOV 11 6
0023 . CALL 7 1 5
0000 . . FUNCF 13 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0070 . . ISNES 4 12 ; "match"
0071 . . JMP 5 => 0077
0077 . . ISNES 4 14 ; "fail"
0078 . . JMP 5 => 0084
0084 . . GGET 5 0 ; "assert"
0085 . . UGET 6 4 ; relops
0086 . . TGETV 6 6 4
0087 . . CALL 5 1 2
0000 . . . FUNCC ; assert
0088 . . UGET 5 5 ; finish_if
0089 . . MOV 6 1
0090 . . MOV 7 0
0091 . . MOV 8 2
0092 . . MOV 9 3
0093 . . CALL 5 1 5
0000 . . . FUNCF 6 ; ssa.lua:49
0001 . . . TDUP 4 1
0002 . . . TSETB 1 4 2
0003 . . . TGETS 5 2 2 ; "label"
0004 . . . TSETB 5 4 3
0005 . . . TGETS 5 3 2 ; "label"
0006 . . . TSETB 5 4 4
0007 . . . TSETS 4 0 0 ; "control"
0008 . . . RET0 0 1
0094 . . RET0 0 1
0024 . UGET 7 1 ; compile_bool
0025 . TGETB 8 0 3
0026 . MOV 9 5
0027 . MOV 10 2
0028 . MOV 11 3
0029 . CALL 7 1 5
0000 . . FUNCF 13 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0014 . . UGET 5 0 ; add_block
0015 . . CALL 5 2 1
0000 . . . JFUNCF 3 1 ; ssa.lua:39
0001 . . . UGET 0 0 ; label_counter
0002 . . . ADDVN 0 0 0 ; 1
0003 . . . USETV 0 0 ; label_counter
0004 . . . KSTR 0 0 ; "L"
0005 . . . UGET 1 0 ; label_counter
0006 . . . CAT 0 0 1
0007 . . . TDUP 1 1
0008 . . . TNEW 2 0
0009 . . . TSETS 2 1 2 ; "bindings"
0010 . . . TSETS 0 1 3 ; "label"
0011 . . . UGET 2 1 ; ssa
0012 . . . TGETS 2 2 4 ; "blocks"
0013 . . . TSETV 1 2 0
0014 . . . RET1 1 2
0016 . . UGET 6 0 ; add_block
0017 . . CALL 6 2 1
0000 . . . JFUNCF 3 1 ; ssa.lua:39
0001 . . . UGET 0 0 ; label_counter
0002 . . . ADDVN 0 0 0 ; 1
0003 . . . USETV 0 0 ; label_counter
0004 . . . KSTR 0 0 ; "L"
0005 . . . UGET 1 0 ; label_counter
0006 . . . CAT 0 0 1
0007 . . . TDUP 1 1
0008 . . . TNEW 2 0
0009 . . . TSETS 2 1 2 ; "bindings"
0010 . . . TSETS 0 1 3 ; "label"
0011 . . . UGET 2 1 ; ssa
0012 . . . TGETS 2 2 4 ; "blocks"
0013 . . . TSETV 1 2 0
0014 . . . RET1 1 2
0018 . . UGET 7 1 ; compile_bool
0019 . . TGETB 8 0 2
0020 . . MOV 9 1
0021 . . MOV 10 5
0022 . . MOV 11 6
0023 . . CALL 7 1 5
0000 . . . FUNCF 13 ; ssa.lua:55
---- TRACE 2 abort ssa.lua:56 -- retry recording
---- TRACE 2 start ssa.lua:55
0001 GGET 4 0 ; "assert"
0002 GGET 5 1 ; "type"
0003 MOV 6 0
0004 CALL 5 2 2
0000 . FUNCC ; type
0005 ISEQS 5 2 ; "table"
0006 JMP 5 => 0009
0009 KPRI 5 2
0010 CALL 4 1 2
0000 . FUNCC ; assert
0011 TGETB 4 0 1
0012 ISNES 4 3 ; "if"
0013 JMP 5 => 0037
0037 ISNES 4 4 ; "let"
0038 JMP 5 => 0056
0056 ISNES 4 10 ; "true"
0057 JMP 5 => 0063
0063 ISNES 4 11 ; "false"
0064 JMP 5 => 0070
0070 ISNES 4 12 ; "match"
0071 JMP 5 => 0077
0077 ISNES 4 14 ; "fail"
0078 JMP 5 => 0084
0084 GGET 5 0 ; "assert"
0085 UGET 6 4 ; relops
0086 TGETV 6 6 4
0087 CALL 5 1 2
0000 . FUNCC ; assert
0088 UGET 5 5 ; finish_if
0089 MOV 6 1
0090 MOV 7 0
0091 MOV 8 2
0092 MOV 9 3
0093 CALL 5 1 5
0000 . FUNCF 6 ; ssa.lua:49
0001 . TDUP 4 1
0002 . TSETB 1 4 2
0003 . TGETS 5 2 2 ; "label"
0004 . TSETB 5 4 3
0005 . TGETS 5 3 2 ; "label"
0006 . TSETB 5 4 4
0007 . TSETS 4 0 0 ; "control"
0008 . RET0 0 1
0094 RET0 0 1
---- TRACE 2 IR
.... SNAP #0 [ ---- ---- ---- ---- ---- ]
0001 rbp fun SLOAD #0 R
0002 rbx tab FLOAD 0001 func.env
0003 rsi p32 HREF 0002 "assert"
0004 > p32 EQ 0003 [0x41d65458]
0005 r15 tab FLOAD 0002 tab.meta
0006 > tab NE 0005 [NULL]
0007 int FLOAD 0005 tab.hmask
0008 > int EQ 0007 +1 
0009 r15 p32 FLOAD 0005 tab.node
0010 > p32 HREFK 0009 "__index" @1
0011 r15 > tab HLOAD 0010
0012 int FLOAD 0011 tab.hmask
0013 > int EQ 0012 +63 
0014 r15 p32 FLOAD 0011 tab.node
0015 > p32 HREFK 0014 "assert" @3
0016 > fun HLOAD 0015
0017 rsi p32 HREF 0002 "type"
0018 > p32 EQ 0017 [0x41d65458]
0019 > p32 HREFK 0014 "type" @60
0020 > fun HLOAD 0019
0021 rbx > tab SLOAD #1 T
0022 > fun EQ 0020 type
0023 > fun EQ 0016 assert
0024 int FLOAD 0021 tab.asize
0025 > int ABC 0024 +1 
0026 r15 p32 FLOAD 0021 tab.array
0027 p32 AREF 0026 +1 
0028 r15 > str ALOAD 0027
.... SNAP #1 [ ---- ---- ---- ---- ---- 0028 ]
0029 > str NE 0028 "if"
.... SNAP #2 [ ---- ---- ---- ---- ---- 0028 ]
0030 > str NE 0028 "let"
.... SNAP #3 [ ---- ---- ---- ---- ---- 0028 ]
0031 > str NE 0028 "true"
.... SNAP #4 [ ---- ---- ---- ---- ---- 0028 ]
0032 > str NE 0028 "false"
.... SNAP #5 [ ---- ---- ---- ---- ---- 0028 ]
0033 > str NE 0028 "match"
.... SNAP #6 [ ---- ---- ---- ---- ---- 0028 ]
0034 > str NE 0028 "fail"
.... SNAP #7 [ ---- ---- ---- ---- ---- 0028 ]
0035 r14 > p32 UREFC 0001 #4
0036 r13 > tab ULOAD 0035
0037 r14 p32 HREF 0036 0028
0038 > tru HLOAD 0037
0039 > fun EQ 0001 ssa.lua:55
0040 rbp > tab SLOAD #2 T
0041 r12 > tab SLOAD #3 T
0042 r13 > tab SLOAD #4 T
0043 rax > tab TDUP {0x41878918}
0044 r14 p32 FLOAD 0043 tab.array
0045 p32 AREF 0044 +2 
0046 tab ASTORE 0045 0021
.... SNAP #8 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:49|0040 ---- 0041 0042 0043 ]
0047 int FLOAD 0041 tab.hmask
0048 > int EQ 0047 +1 
0049 rbx p32 FLOAD 0041 tab.node
0050 > p32 HREFK 0049 "label" @1
0051 rbx > str HLOAD 0050
0052 p32 AREF 0044 +3 
0053 str ASTORE 0052 0051
.... SNAP #9 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:49|0040 ---- ---- 0042 0043 ---- ]
0054 int FLOAD 0042 tab.hmask
0055 > int EQ 0054 +1 
0056 rbx p32 FLOAD 0042 tab.node
0057 > p32 HREFK 0056 "label" @1
0058 rbx > str HLOAD 0057
0059 p32 AREF 0044 +4 
0060 str ASTORE 0059 0058
.... SNAP #10 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:49|0040 ---- ---- ---- 0043 ---- ]
0061 int FLOAD 0040 tab.hmask
0062 > int EQ 0061 +3 
0063 rbx p32 FLOAD 0040 tab.node
0064 > p32 HREFK 0063 "control" @1
0065 tab FLOAD 0040 tab.meta
0066 > tab EQ 0065 [NULL]
0067 tab HSTORE 0064 0043
0068 nil TBAR 0040
.... SNAP #11 [ ssa.lua:55|]
---- TRACE 2 mcode 878
0bcbfacf mov dword [0x41d65410], 0x2
0bcbfada mov edi, [0x41d653d8]
0bcbfae1 cmp edi, [0x41d653dc]
0bcbfae8 jb 0x0bcbfb01
0bcbfaea mov esi, 0x1
0bcbfaef mov edi, 0x41d653b8
0bcbfaf4 call 0x00421730 ->lj_gc_step_jit
0bcbfaf9 test eax, eax
0bcbfafb jnz 0x0bcb0010 ->0
0bcbfb01 mov edi, [0x41d654b0]
0bcbfb08 mov edx, [0x41d654b4]
0bcbfb0f mov ebp, [rdx-0x8]
0bcbfb12 mov ebx, [rbp+0x8]
0bcbfb15 mov esi, [rbx+0x1c]
0bcbfb18 and esi, 0xce2b6183
0bcbfb1e lea esi, [rsi+rsi*2]
0bcbfb21 shl esi, 0x03
0bcbfb24 add esi, [rbx+0x14]
0bcbfb27 cmp dword [rsi+0xc], -0x05
0bcbfb2b jnz 0x0bcbfb3a
0bcbfb2d cmp dword [rsi+0x8], 0x41d67db0
0bcbfb34 jz 0x0bcb0010 ->0
0bcbfb3a mov esi, [rsi+0x10]
0bcbfb3d test esi, esi
0bcbfb3f jnz 0x0bcbfb27
0bcbfb41 mov r15d, [rbx+0x10]
0bcbfb45 test r15d, r15d
0bcbfb48 jz 0x0bcb0010 ->0
0bcbfb4e cmp dword [r15+0x1c], +0x01
0bcbfb53 jnz 0x0bcb0010 ->0
0bcbfb59 mov r15d, [r15+0x14]
0bcbfb5d mov rsi, 0xfffffffb41d674c8
0bcbfb67 cmp rsi, [r15+0x20]
0bcbfb6b jnz 0x0bcb0010 ->0
0bcbfb71 cmp dword [r15+0x1c], -0x0c
0bcbfb76 jnz 0x0bcb0010 ->0
0bcbfb7c mov r15d, [r15+0x18]
0bcbfb80 cmp dword [r15+0x1c], +0x3f
0bcbfb85 jnz 0x0bcb0010 ->0
0bcbfb8b mov r15d, [r15+0x14]
0bcbfb8f mov rsi, 0xfffffffb41d67db0
0bcbfb99 cmp rsi, [r15+0x50]
0bcbfb9d jnz 0x0bcb0010 ->0
0bcbfba3 cmp dword [r15+0x4c], -0x09
0bcbfba8 jnz 0x0bcb0010 ->0
0bcbfbae mov esi, [rbx+0x1c]
0bcbfbb1 and esi, 0x798a813c
0bcbfbb7 lea esi, [rsi+rsi*2]
0bcbfbba shl esi, 0x03
0bcbfbbd add esi, [rbx+0x14]
0bcbfbc0 cmp dword [rsi+0xc], -0x05
0bcbfbc4 jnz 0x0bcbfbd3
0bcbfbc6 cmp dword [rsi+0x8], 0x41d67fb0
0bcbfbcd jz 0x0bcb0010 ->0
0bcbfbd3 mov esi, [rsi+0x10]
0bcbfbd6 test esi, esi
0bcbfbd8 jnz 0x0bcbfbc0
0bcbfbda mov rsi, 0xfffffffb41d67fb0
0bcbfbe4 cmp rsi, [r15+0x5a8]
0bcbfbeb jnz 0x0bcb0010 ->0
0bcbfbf1 cmp dword [r15+0x5a4], -0x09
0bcbfbf9 jnz 0x0bcb0010 ->0
0bcbfbff cmp dword [rdx+0x4], -0x0c
0bcbfc03 jnz 0x0bcb0010 ->0
0bcbfc09 mov ebx, [rdx]
0bcbfc0b cmp dword [r15+0x5a0], 0x41d67f18
0bcbfc16 jnz 0x0bcb0010 ->0
0bcbfc1c cmp dword [r15+0x48], 0x41d67d88
0bcbfc24 jnz 0x0bcb0010 ->0
0bcbfc2a cmp dword [rbx+0x18], +0x01
0bcbfc2e jbe 0x0bcb0010 ->0
0bcbfc34 mov r15d, [rbx+0x8]
0bcbfc38 cmp dword [r15+0xc], -0x05
0bcbfc3d jnz 0x0bcb0010 ->0
0bcbfc43 mov r15d, [r15+0x8]
0bcbfc47 cmp r15d, 0x41d678f8
0bcbfc4e jz 0x0bcb0014 ->1
0bcbfc54 cmp r15d, 0x41d826b8
0bcbfc5b jz 0x0bcb0018 ->2
0bcbfc61 cmp r15d, 0x41d67a18
0bcbfc68 jz 0x0bcb001c ->3
0bcbfc6e cmp r15d, 0x41d67870
0bcbfc75 jz 0x0bcb0020 ->4
0bcbfc7b cmp r15d, 0x41d6acb0
0bcbfc82 jz 0x0bcb0024 ->5
0bcbfc88 cmp r15d, 0x41d822b8
0bcbfc8f jz 0x0bcb0028 ->6
0bcbfc95 mov esi, [rbp+0x24]
0bcbfc98 cmp byte [rsi+0x6], 0x1
0bcbfc9c jnz 0x0bcb002c ->7
0bcbfca2 lea r14d, [rsi+0x8]
0bcbfca6 cmp dword [r14+0x4], -0x0c
0bcbfcab jnz 0x0bcb002c ->7
0bcbfcb1 mov r13d, [r14]
0bcbfcb4 mov r14d, [r13+0x1c]
0bcbfcb8 and r14d, [r15+0x8]
0bcbfcbc lea r14d, [r14+r14*2]
0bcbfcc0 shl r14d, 0x03
0bcbfcc4 add r14d, [r13+0x14]
0bcbfcc8 cmp dword [r14+0xc], -0x05
0bcbfccd jnz 0x0bcbfcd5
0bcbfccf cmp r15d, [r14+0x8]
0bcbfcd3 jz 0x0bcbfce4
0bcbfcd5 mov r14d, [r14+0x10]
0bcbfcd9 test r14d, r14d
0bcbfcdc jnz 0x0bcbfcc8
0bcbfcde mov r14d, 0x41d65458
0bcbfce4 cmp dword [r14+0x4], -0x03
0bcbfce9 jnz 0x0bcb002c ->7
0bcbfcef cmp ebp, 0x41879a00
0bcbfcf5 jnz 0x0bcb002c ->7
0bcbfcfb cmp dword [rdx+0xc], -0x0c
0bcbfcff jnz 0x0bcb002c ->7
0bcbfd05 mov ebp, [rdx+0x8]
0bcbfd08 cmp dword [rdx+0x14], -0x0c
0bcbfd0c jnz 0x0bcb002c ->7
0bcbfd12 mov r12d, [rdx+0x10]
0bcbfd16 cmp dword [rdx+0x1c], -0x0c
0bcbfd1a jnz 0x0bcb002c ->7
0bcbfd20 mov r13d, [rdx+0x18]
0bcbfd24 mov esi, 0x41878918
0bcbfd29 call 0x004223c0 ->lj_tab_dup
0bcbfd2e mov edx, [0x41d654b4]
0bcbfd35 mov r14d, [rax+0x8]
0bcbfd39 mov dword [r14+0x14], 0xfffffff4
0bcbfd41 mov [r14+0x10], ebx
0bcbfd45 cmp dword [r12+0x1c], +0x01
0bcbfd4b jnz 0x0bcb0030 ->8
0bcbfd51 mov ebx, [r12+0x14]
0bcbfd56 mov rdi, 0xfffffffb418843e0
0bcbfd60 cmp rdi, [rbx+0x20]
0bcbfd64 jnz 0x0bcb0030 ->8
0bcbfd6a cmp dword [rbx+0x1c], -0x05
0bcbfd6e jnz 0x0bcb0030 ->8
0bcbfd74 mov ebx, [rbx+0x18]
0bcbfd77 mov dword [r14+0x1c], 0xfffffffb
0bcbfd7f mov [r14+0x18], ebx
0bcbfd83 cmp dword [r13+0x1c], +0x01
0bcbfd88 jnz 0x0bcb0034 ->9
0bcbfd8e mov ebx, [r13+0x14]
0bcbfd92 mov rdi, 0xfffffffb418843e0
0bcbfd9c cmp rdi, [rbx+0x20]
0bcbfda0 jnz 0x0bcb0034 ->9
0bcbfda6 cmp dword [rbx+0x1c], -0x05
0bcbfdaa jnz 0x0bcb0034 ->9
0bcbfdb0 mov ebx, [rbx+0x18]
0bcbfdb3 mov dword [r14+0x24], 0xfffffffb
0bcbfdbb mov [r14+0x20], ebx
0bcbfdbf cmp dword [rbp+0x1c], +0x03
0bcbfdc3 jnz 0x0bcb0038 ->10
0bcbfdc9 mov ebx, [rbp+0x14]
0bcbfdcc mov rdi, 0xfffffffb41884b48
0bcbfdd6 cmp rdi, [rbx+0x20]
0bcbfdda jnz 0x0bcb0038 ->10
0bcbfde0 cmp dword [rbp+0x10], +0x00
0bcbfde4 jnz 0x0bcb0038 ->10
0bcbfdea mov dword [rbx+0x1c], 0xfffffff4
0bcbfdf1 mov [rbx+0x18], eax
0bcbfdf4 test byte [rbp+0x4], 0x4
0bcbfdf8 jz 0x0bcbfe0f
0bcbfdfa and byte [rbp+0x4], 0xfb
0bcbfdfe mov edi, [0x41d653f4]
0bcbfe05 mov [0x41d653f4], ebp
0bcbfe0c mov [rbp+0xc], edi
0bcbfe0f mov eax, [0x41d654b0]
0bcbfe16 mov eax, [rax+0x20]
0bcbfe19 sub eax, edx
0bcbfe1b cmp eax, +0x68
0bcbfe1e jb 0x0bcb003c ->11
0bcbfe24 mov dword [rdx-0x8], 0x41879a00
0bcbfe2b xor eax, eax
0bcbfe2d mov ebx, 0x41885ba8
0bcbfe32 mov r14d, 0x41d66008
0bcbfe38 jmp 0x00420177
---- TRACE 2 stop -> return
---- TRACE 2 exit 6
---- TRACE 2 exit 4
---- TRACE 2 exit 1
---- TRACE 2 exit 8
---- TRACE 2 exit 1
---- TRACE 2 exit 8
---- TRACE 2 exit 1
---- TRACE 2 exit 8
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 1
---- TRACE 2 exit 8
---- TRACE 2 exit 1
---- TRACE 2 exit 8
---- TRACE 2 exit 1
---- TRACE 2 exit 8
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 3 start 2/4 ssa.lua:70
0065 UGET 5 2 ; finish_goto
0066 MOV 6 1
0067 MOV 7 3
0068 CALL 5 1 3
0000 . FUNCF 4 ; ssa.lua:52
0001 . TDUP 2 1
0002 . TGETS 3 1 2 ; "label"
0003 . TSETB 3 2 2
0004 . TSETS 2 0 0 ; "control"
0005 . RET0 0 1
0069 JMP 5 => 0094
0094 RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
---- TRACE 3 abort ssa.lua:79 -- down-recursion, restarting
---- TRACE 3 start ssa.lua:79
0094 RET0 0 1
0024 UGET 7 1 ; compile_bool
0025 TGETB 8 0 3
0026 MOV 9 5
0027 MOV 10 2
0028 MOV 11 3
0029 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0070 . ISNES 4 12 ; "match"
0071 . JMP 5 => 0077
0072 . UGET 5 3 ; finish_return
0073 . MOV 6 1
0074 . TDUP 7 13
0075 . CALL 5 1 3
0000 . . FUNCF 3 ; ssa.lua:46
0001 . . TDUP 2 1
0002 . . TSETB 1 2 2
0003 . . TSETS 2 0 0 ; "control"
0004 . . RET0 0 1
0076 . JMP 5 => 0094
0094 . RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0014 . UGET 5 0 ; add_block
0015 . CALL 5 2 1
0000 . . JFUNCF 3 1 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0016 . UGET 6 0 ; add_block
0017 . CALL 6 2 1
0000 . . JFUNCF 3 1 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0018 . UGET 7 1 ; compile_bool
0019 . TGETB 8 0 2
0020 . MOV 9 1
0021 . MOV 10 5
0022 . MOV 11 6
0023 . CALL 7 1 5
0000 . . JFUNCF 13 2 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0014 . . UGET 5 0 ; add_block
0015 . . CALL 5 2 1
0000 . . . JFUNCF 3 1 ; ssa.lua:39
0001 . . . UGET 0 0 ; label_counter
0002 . . . ADDVN 0 0 0 ; 1
0003 . . . USETV 0 0 ; label_counter
0004 . . . KSTR 0 0 ; "L"
0005 . . . UGET 1 0 ; label_counter
0006 . . . CAT 0 0 1
0007 . . . TDUP 1 1
0008 . . . TNEW 2 0
0009 . . . TSETS 2 1 2 ; "bindings"
0010 . . . TSETS 0 1 3 ; "label"
0011 . . . UGET 2 1 ; ssa
0012 . . . TGETS 2 2 4 ; "blocks"
0013 . . . TSETV 1 2 0
0014 . . . RET1 1 2
0016 . . UGET 6 0 ; add_block
0017 . . CALL 6 2 1
0000 . . . JFUNCF 3 1 ; ssa.lua:39
0001 . . . UGET 0 0 ; label_counter
0002 . . . ADDVN 0 0 0 ; 1
0003 . . . USETV 0 0 ; label_counter
0004 . . . KSTR 0 0 ; "L"
0005 . . . UGET 1 0 ; label_counter
0006 . . . CAT 0 0 1
0007 . . . TDUP 1 1
0008 . . . TNEW 2 0
0009 . . . TSETS 2 1 2 ; "bindings"
0010 . . . TSETS 0 1 3 ; "label"
0011 . . . UGET 2 1 ; ssa
0012 . . . TGETS 2 2 4 ; "blocks"
0013 . . . TSETV 1 2 0
0014 . . . RET1 1 2
0018 . . UGET 7 1 ; compile_bool
0019 . . TGETB 8 0 2
0020 . . MOV 9 1
0021 . . MOV 10 5
0022 . . MOV 11 6
0023 . . CALL 7 1 5
0000 . . . JFUNCF 13 2 ; ssa.lua:55
0001 . . . GGET 4 0 ; "assert"
0002 . . . GGET 5 1 ; "type"
0003 . . . MOV 6 0
0004 . . . CALL 5 2 2
0000 . . . . FUNCC ; type
0005 . . . ISEQS 5 2 ; "table"
0006 . . . JMP 5 => 0009
0009 . . . KPRI 5 2
0010 . . . CALL 4 1 2
0000 . . . . FUNCC ; assert
0011 . . . TGETB 4 0 1
0012 . . . ISNES 4 3 ; "if"
0013 . . . JMP 5 => 0037
0014 . . . UGET 5 0 ; add_block
0015 . . . CALL 5 2 1
0000 . . . . JFUNCF 3 1 ; ssa.lua:39
0001 . . . . UGET 0 0 ; label_counter
0002 . . . . ADDVN 0 0 0 ; 1
0003 . . . . USETV 0 0 ; label_counter
0004 . . . . KSTR 0 0 ; "L"
0005 . . . . UGET 1 0 ; label_counter
0006 . . . . CAT 0 0 1
0007 . . . . TDUP 1 1
0008 . . . . TNEW 2 0
0009 . . . . TSETS 2 1 2 ; "bindings"
0010 . . . . TSETS 0 1 3 ; "label"
0011 . . . . UGET 2 1 ; ssa
0012 . . . . TGETS 2 2 4 ; "blocks"
0013 . . . . TSETV 1 2 0
0014 . . . . RET1 1 2
0016 . . . UGET 6 0 ; add_block
0017 . . . CALL 6 2 1
0000 . . . . JFUNCF 3 1 ; ssa.lua:39
0001 . . . . UGET 0 0 ; label_counter
0002 . . . . ADDVN 0 0 0 ; 1
0003 . . . . USETV 0 0 ; label_counter
0004 . . . . KSTR 0 0 ; "L"
0005 . . . . UGET 1 0 ; label_counter
0006 . . . . CAT 0 0 1
0007 . . . . TDUP 1 1
0008 . . . . TNEW 2 0
0009 . . . . TSETS 2 1 2 ; "bindings"
0010 . . . . TSETS 0 1 3 ; "label"
0011 . . . . UGET 2 1 ; ssa
0012 . . . . TGETS 2 2 4 ; "blocks"
0013 . . . . TSETV 1 2 0
0014 . . . . RET1 1 2
0018 . . . UGET 7 1 ; compile_bool
0019 . . . TGETB 8 0 2
0020 . . . MOV 9 1
0021 . . . MOV 10 5
0022 . . . MOV 11 6
0023 . . . CALL 7 1 5
0000 . . . . JFUNCF 13 2 ; ssa.lua:55
---- TRACE 3 abort ssa.lua:55 -- call unroll limit reached
---- TRACE 3 start ssa.lua:52
0001 TDUP 2 1
0002 TGETS 3 1 2 ; "label"
0003 TSETB 3 2 2
0004 TSETS 2 0 0 ; "control"
0005 RET0 0 1
---- TRACE 3 IR
.... SNAP #0 [ ---- ---- ---- ]
0001 rax > tab TDUP {0x41d82678}
0002 rbp > tab SLOAD #2 T
0003 int FLOAD 0002 tab.hmask
0004 > int EQ 0003 +3 
0005 rbx p32 FLOAD 0002 tab.node
0006 > p32 HREFK 0005 "label" @3
0007 > nil HLOAD 0006
0008 tab FLOAD 0002 tab.meta
0009 > tab EQ 0008 [NULL]
0010 rbp p32 FLOAD 0001 tab.array
0011 p32 AREF 0010 +2 
0012 nil ASTORE 0011 nil
.... SNAP #1 [ ---- ---- ---- 0001 ---- ]
0013 rbp > tab SLOAD #1 T
0014 int FLOAD 0013 tab.hmask
0015 > int EQ 0014 +3 
0016 rbx p32 FLOAD 0013 tab.node
0017 > p32 HREFK 0016 "control" @1
0018 tab FLOAD 0013 tab.meta
0019 > tab EQ 0018 [NULL]
0020 tab HSTORE 0017 0001
0021 nil TBAR 0013
.... SNAP #2 [ ---- ]
---- TRACE 3 mcode 260
0bcbf9c4 mov dword [0x41d65410], 0x3
0bcbf9cf mov edi, [0x41d653d8]
0bcbf9d6 cmp edi, [0x41d653dc]
0bcbf9dd jb 0x0bcbf9f6
0bcbf9df mov esi, 0x1
0bcbf9e4 mov edi, 0x41d653b8
0bcbf9e9 call 0x00421730 ->lj_gc_step_jit
0bcbf9ee test eax, eax
0bcbf9f0 jnz 0x0bcb0010 ->0
0bcbf9f6 mov edi, [0x41d654b0]
0bcbf9fd mov esi, 0x41d82678
0bcbfa02 call 0x004223c0 ->lj_tab_dup
0bcbfa07 mov edx, [0x41d654b4]
0bcbfa0e cmp dword [rdx+0xc], -0x0c
0bcbfa12 jnz 0x0bcb0010 ->0
0bcbfa18 mov ebp, [rdx+0x8]
0bcbfa1b cmp dword [rbp+0x1c], +0x03
0bcbfa1f jnz 0x0bcb0010 ->0
0bcbfa25 mov ebx, [rbp+0x14]
0bcbfa28 mov rdi, 0xfffffffb418843e0
0bcbfa32 cmp rdi, [rbx+0x50]
0bcbfa36 jnz 0x0bcb0010 ->0
0bcbfa3c cmp dword [rbx+0x4c], -0x01
0bcbfa40 jnz 0x0bcb0010 ->0
0bcbfa46 cmp dword [rbp+0x10], +0x00
0bcbfa4a jnz 0x0bcb0010 ->0
0bcbfa50 mov ebp, [rax+0x8]
0bcbfa53 mov dword [rbp+0x14], 0xffffffff
0bcbfa5a cmp dword [rdx+0x4], -0x0c
0bcbfa5e jnz 0x0bcb0014 ->1
0bcbfa64 mov ebp, [rdx]
0bcbfa66 cmp dword [rbp+0x1c], +0x03
0bcbfa6a jnz 0x0bcb0014 ->1
0bcbfa70 mov ebx, [rbp+0x14]
0bcbfa73 mov rdi, 0xfffffffb41884b48
0bcbfa7d cmp rdi, [rbx+0x20]
0bcbfa81 jnz 0x0bcb0014 ->1
0bcbfa87 cmp dword [rbp+0x10], +0x00
0bcbfa8b jnz 0x0bcb0014 ->1
0bcbfa91 mov dword [rbx+0x1c], 0xfffffff4
0bcbfa98 mov [rbx+0x18], eax
0bcbfa9b test byte [rbp+0x4], 0x4
0bcbfa9f jz 0x0bcbfab6
0bcbfaa1 and byte [rbp+0x4], 0xfb
0bcbfaa5 mov edi, [0x41d653f4]
0bcbfaac mov [0x41d653f4], ebp
0bcbfab3 mov [rbp+0xc], edi
0bcbfab6 xor eax, eax
0bcbfab8 mov ebx, 0x41d8278c
0bcbfabd mov r14d, 0x41d66008
0bcbfac3 jmp 0x00420177
---- TRACE 3 stop -> return
---- TRACE 4 start ssa.lua:55
0001 GGET 4 0 ; "assert"
0002 GGET 5 1 ; "type"
0003 MOV 6 0
0004 CALL 5 2 2
0000 . FUNCC ; type
0005 ISEQS 5 2 ; "table"
0006 JMP 5 => 0009
0009 KPRI 5 2
0010 CALL 4 1 2
0000 . FUNCC ; assert
0011 TGETB 4 0 1
0012 ISNES 4 3 ; "if"
0013 JMP 5 => 0037
0037 ISNES 4 4 ; "let"
0038 JMP 5 => 0056
0056 ISNES 4 10 ; "true"
0057 JMP 5 => 0063
0063 ISNES 4 11 ; "false"
0064 JMP 5 => 0070
0065 UGET 5 2 ; finish_goto
0066 MOV 6 1
0067 MOV 7 3
0068 CALL 5 1 3
0000 . JFUNCF 4 3 ; ssa.lua:52
0001 . TDUP 2 1
0002 . TGETS 3 1 2 ; "label"
0003 . TSETB 3 2 2
0004 . TSETS 2 0 0 ; "control"
0005 . RET0 0 1
0069 JMP 5 => 0094
0094 RET0 0 1
---- TRACE 4 IR
.... SNAP #0 [ ---- ---- ---- ---- ---- ]
0001 rbp fun SLOAD #0 R
0002 rbx tab FLOAD 0001 func.env
0003 rsi p32 HREF 0002 "assert"
0004 > p32 EQ 0003 [0x41d65458]
0005 r15 tab FLOAD 0002 tab.meta
0006 > tab NE 0005 [NULL]
0007 int FLOAD 0005 tab.hmask
0008 > int EQ 0007 +1 
0009 r15 p32 FLOAD 0005 tab.node
0010 > p32 HREFK 0009 "__index" @1
0011 r15 > tab HLOAD 0010
0012 int FLOAD 0011 tab.hmask
0013 > int EQ 0012 +63 
0014 r15 p32 FLOAD 0011 tab.node
0015 > p32 HREFK 0014 "assert" @3
0016 > fun HLOAD 0015
0017 rsi p32 HREF 0002 "type"
0018 > p32 EQ 0017 [0x41d65458]
0019 > p32 HREFK 0014 "type" @60
0020 > fun HLOAD 0019
0021 rbx > tab SLOAD #1 T
0022 > fun EQ 0020 type
0023 > fun EQ 0016 assert
0024 int FLOAD 0021 tab.asize
0025 > int ABC 0024 +1 
0026 rbx p32 FLOAD 0021 tab.array
0027 p32 AREF 0026 +1 
0028 r15 > str ALOAD 0027
.... SNAP #1 [ ---- ---- ---- ---- ---- 0028 ]
0029 > str NE 0028 "if"
.... SNAP #2 [ ---- ---- ---- ---- ---- 0028 ]
0030 > str NE 0028 "let"
.... SNAP #3 [ ---- ---- ---- ---- ---- 0028 ]
0031 > str NE 0028 "true"
.... SNAP #4 [ ---- ---- ---- ---- ---- 0028 ]
0032 > str EQ 0028 "false"
.... SNAP #5 [ ---- ---- ---- ---- ---- 0028 ]
0033 > fun EQ 0001 ssa.lua:55
0034 rbp > tab SLOAD #2 T
0035 rbx > tab SLOAD #4 T
0036 rax > tab TDUP {0x41d82678}
0037 int FLOAD 0035 tab.hmask
0038 > int EQ 0037 +3 
0039 r14 p32 FLOAD 0035 tab.node
0040 > p32 HREFK 0039 "label" @3
0041 > nil HLOAD 0040
0042 tab FLOAD 0035 tab.meta
0043 > tab EQ 0042 [NULL]
0044 rbx p32 FLOAD 0036 tab.array
0045 p32 AREF 0044 +2 
0046 nil ASTORE 0045 nil
.... SNAP #6 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:52|0034 ---- 0036 ---- ]
0047 int FLOAD 0034 tab.hmask
0048 > int EQ 0047 +3 
0049 rbx p32 FLOAD 0034 tab.node
0050 > p32 HREFK 0049 "control" @1
0051 tab FLOAD 0034 tab.meta
0052 > tab EQ 0051 [NULL]
0053 tab HSTORE 0050 0036
0054 nil TBAR 0034
.... SNAP #7 [ ssa.lua:55|]
---- TRACE 4 mcode 672
0bcbf71d mov dword [0x41d65410], 0x4
0bcbf728 mov edi, [0x41d653d8]
0bcbf72f cmp edi, [0x41d653dc]
0bcbf736 jb 0x0bcbf74f
0bcbf738 mov esi, 0x1
0bcbf73d mov edi, 0x41d653b8
0bcbf742 call 0x00421730 ->lj_gc_step_jit
0bcbf747 test eax, eax
0bcbf749 jnz 0x0bcb0010 ->0
0bcbf74f mov edi, [0x41d654b0]
0bcbf756 mov edx, [0x41d654b4]
0bcbf75d mov ebp, [rdx-0x8]
0bcbf760 mov ebx, [rbp+0x8]
0bcbf763 mov esi, [rbx+0x1c]
0bcbf766 and esi, 0xce2b6183
0bcbf76c lea esi, [rsi+rsi*2]
0bcbf76f shl esi, 0x03
0bcbf772 add esi, [rbx+0x14]
0bcbf775 cmp dword [rsi+0xc], -0x05
0bcbf779 jnz 0x0bcbf788
0bcbf77b cmp dword [rsi+0x8], 0x41d67db0
0bcbf782 jz 0x0bcb0010 ->0
0bcbf788 mov esi, [rsi+0x10]
0bcbf78b test esi, esi
0bcbf78d jnz 0x0bcbf775
0bcbf78f mov r15d, [rbx+0x10]
0bcbf793 test r15d, r15d
0bcbf796 jz 0x0bcb0010 ->0
0bcbf79c cmp dword [r15+0x1c], +0x01
0bcbf7a1 jnz 0x0bcb0010 ->0
0bcbf7a7 mov r15d, [r15+0x14]
0bcbf7ab mov rsi, 0xfffffffb41d674c8
0bcbf7b5 cmp rsi, [r15+0x20]
0bcbf7b9 jnz 0x0bcb0010 ->0
0bcbf7bf cmp dword [r15+0x1c], -0x0c
0bcbf7c4 jnz 0x0bcb0010 ->0
0bcbf7ca mov r15d, [r15+0x18]
0bcbf7ce cmp dword [r15+0x1c], +0x3f
0bcbf7d3 jnz 0x0bcb0010 ->0
0bcbf7d9 mov r15d, [r15+0x14]
0bcbf7dd mov rsi, 0xfffffffb41d67db0
0bcbf7e7 cmp rsi, [r15+0x50]
0bcbf7eb jnz 0x0bcb0010 ->0
0bcbf7f1 cmp dword [r15+0x4c], -0x09
0bcbf7f6 jnz 0x0bcb0010 ->0
0bcbf7fc mov esi, [rbx+0x1c]
0bcbf7ff and esi, 0x798a813c
0bcbf805 lea esi, [rsi+rsi*2]
0bcbf808 shl esi, 0x03
0bcbf80b add esi, [rbx+0x14]
0bcbf80e cmp dword [rsi+0xc], -0x05
0bcbf812 jnz 0x0bcbf821
0bcbf814 cmp dword [rsi+0x8], 0x41d67fb0
0bcbf81b jz 0x0bcb0010 ->0
0bcbf821 mov esi, [rsi+0x10]
0bcbf824 test esi, esi
0bcbf826 jnz 0x0bcbf80e
0bcbf828 mov rsi, 0xfffffffb41d67fb0
0bcbf832 cmp rsi, [r15+0x5a8]
0bcbf839 jnz 0x0bcb0010 ->0
0bcbf83f cmp dword [r15+0x5a4], -0x09
0bcbf847 jnz 0x0bcb0010 ->0
0bcbf84d cmp dword [rdx+0x4], -0x0c
0bcbf851 jnz 0x0bcb0010 ->0
0bcbf857 mov ebx, [rdx]
0bcbf859 cmp dword [r15+0x5a0], 0x41d67f18
0bcbf864 jnz 0x0bcb0010 ->0
0bcbf86a cmp dword [r15+0x48], 0x41d67d88
0bcbf872 jnz 0x0bcb0010 ->0
0bcbf878 cmp dword [rbx+0x18], +0x01
0bcbf87c jbe 0x0bcb0010 ->0
0bcbf882 mov ebx, [rbx+0x8]
0bcbf885 cmp dword [rbx+0xc], -0x05
0bcbf889 jnz 0x0bcb0010 ->0
0bcbf88f mov r15d, [rbx+0x8]
0bcbf893 cmp r15d, 0x41d678f8
0bcbf89a jz 0x0bcb0014 ->1
0bcbf8a0 cmp r15d, 0x41d826b8
0bcbf8a7 jz 0x0bcb0018 ->2
0bcbf8ad cmp r15d, 0x41d67a18
0bcbf8b4 jz 0x0bcb001c ->3
0bcbf8ba cmp r15d, 0x41d67870
0bcbf8c1 jnz 0x0bcb0020 ->4
0bcbf8c7 cmp ebp, 0x41879a00
0bcbf8cd jnz 0x0bcb0024 ->5
0bcbf8d3 cmp dword [rdx+0xc], -0x0c
0bcbf8d7 jnz 0x0bcb0024 ->5
0bcbf8dd mov ebp, [rdx+0x8]
0bcbf8e0 cmp dword [rdx+0x1c], -0x0c
0bcbf8e4 jnz 0x0bcb0024 ->5
0bcbf8ea mov ebx, [rdx+0x18]
0bcbf8ed mov esi, 0x41d82678
0bcbf8f2 call 0x004223c0 ->lj_tab_dup
0bcbf8f7 mov edx, [0x41d654b4]
0bcbf8fe cmp dword [rbx+0x1c], +0x03
0bcbf902 jnz 0x0bcb0024 ->5
0bcbf908 mov r14d, [rbx+0x14]
0bcbf90c mov rdi, 0xfffffffb418843e0
0bcbf916 cmp rdi, [r14+0x50]
0bcbf91a jnz 0x0bcb0024 ->5
0bcbf920 cmp dword [r14+0x4c], -0x01
0bcbf925 jnz 0x0bcb0024 ->5
0bcbf92b cmp dword [rbx+0x10], +0x00
0bcbf92f jnz 0x0bcb0024 ->5
0bcbf935 mov ebx, [rax+0x8]
0bcbf938 mov dword [rbx+0x14], 0xffffffff
0bcbf93f cmp dword [rbp+0x1c], +0x03
0bcbf943 jnz 0x0bcb0028 ->6
0bcbf949 mov ebx, [rbp+0x14]
0bcbf94c mov rdi, 0xfffffffb41884b48
0bcbf956 cmp rdi, [rbx+0x20]
0bcbf95a jnz 0x0bcb0028 ->6
0bcbf960 cmp dword [rbp+0x10], +0x00
0bcbf964 jnz 0x0bcb0028 ->6
0bcbf96a mov dword [rbx+0x1c], 0xfffffff4
0bcbf971 mov [rbx+0x18], eax
0bcbf974 test byte [rbp+0x4], 0x4
0bcbf978 jz 0x0bcbf98f
0bcbf97a and byte [rbp+0x4], 0xfb
0bcbf97e mov edi, [0x41d653f4]
0bcbf985 mov [0x41d653f4], ebp
0bcbf98c mov [rbp+0xc], edi
0bcbf98f mov eax, [0x41d654b0]
0bcbf996 mov eax, [rax+0x20]
0bcbf999 sub eax, edx
0bcbf99b cmp eax, +0x68
0bcbf99e jb 0x0bcb002c ->7
0bcbf9a4 mov dword [rdx-0x8], 0x41879a00
0bcbf9ab xor eax, eax
0bcbf9ad mov ebx, 0x41885ba8
0bcbf9b2 mov r14d, 0x41d66008
0bcbf9b8 jmp 0x00420177
---- TRACE 4 stop -> return
---- TRACE 4 exit 4
---- TRACE 4 exit 1
---- TRACE 4 exit 4
---- TRACE 5 start ssa.lua:49
0001 TDUP 4 1
0002 TSETB 1 4 2
0003 TGETS 5 2 2 ; "label"
0004 TSETB 5 4 3
0005 TGETS 5 3 2 ; "label"
0006 TSETB 5 4 4
0007 TSETS 4 0 0 ; "control"
0008 RET0 0 1
---- TRACE 5 IR
.... SNAP #0 [ ---- ---- ---- ---- ---- ]
0001 rax > tab TDUP {0x41878918}
0002 rbx > tab SLOAD #2 T
0003 rbp p32 FLOAD 0001 tab.array
0004 p32 AREF 0003 +2 
0005 tab ASTORE 0004 0002
.... SNAP #1 [ ---- ---- ---- ---- ---- 0001 ]
0006 rbx > tab SLOAD #3 T
0007 int FLOAD 0006 tab.hmask
0008 > int EQ 0007 +3 
0009 r15 p32 FLOAD 0006 tab.node
0010 > p32 HREFK 0009 "label" @3
0011 > nil HLOAD 0010
0012 tab FLOAD 0006 tab.meta
0013 > tab EQ 0012 [NULL]
0014 p32 AREF 0003 +3 
0015 nil ASTORE 0014 nil
.... SNAP #2 [ ---- ---- ---- ---- ---- 0001 ---- ]
0016 rbx > tab SLOAD #4 T
0017 int FLOAD 0016 tab.hmask
0018 > int EQ 0017 +3 
0019 r15 p32 FLOAD 0016 tab.node
0020 > p32 HREFK 0019 "label" @3
0021 > nil HLOAD 0020
0022 tab FLOAD 0016 tab.meta
0023 > tab EQ 0022 [NULL]
0024 p32 AREF 0003 +4 
0025 nil ASTORE 0024 nil
.... SNAP #3 [ ---- ---- ---- ---- ---- 0001 ---- ]
0026 rbp > tab SLOAD #1 T
0027 int FLOAD 0026 tab.hmask
0028 > int EQ 0027 +3 
0029 rbx p32 FLOAD 0026 tab.node
0030 > p32 HREFK 0029 "control" @1
0031 tab FLOAD 0026 tab.meta
0032 > tab EQ 0031 [NULL]
0033 tab HSTORE 0030 0001
0034 nil TBAR 0026
.... SNAP #4 [ ---- ]
---- TRACE 5 mcode 360
0bcbf5ae mov dword [0x41d65410], 0x5
0bcbf5b9 mov edi, [0x41d653d8]
0bcbf5c0 cmp edi, [0x41d653dc]
0bcbf5c7 jb 0x0bcbf5e0
0bcbf5c9 mov esi, 0x1
0bcbf5ce mov edi, 0x41d653b8
0bcbf5d3 call 0x00421730 ->lj_gc_step_jit
0bcbf5d8 test eax, eax
0bcbf5da jnz 0x0bcb0010 ->0
0bcbf5e0 mov edi, [0x41d654b0]
0bcbf5e7 mov esi, 0x41878918
0bcbf5ec call 0x004223c0 ->lj_tab_dup
0bcbf5f1 mov edx, [0x41d654b4]
0bcbf5f8 cmp dword [rdx+0xc], -0x0c
0bcbf5fc jnz 0x0bcb0010 ->0
0bcbf602 mov ebx, [rdx+0x8]
0bcbf605 mov ebp, [rax+0x8]
0bcbf608 mov dword [rbp+0x14], 0xfffffff4
0bcbf60f mov [rbp+0x10], ebx
0bcbf612 cmp dword [rdx+0x14], -0x0c
0bcbf616 jnz 0x0bcb0014 ->1
0bcbf61c mov ebx, [rdx+0x10]
0bcbf61f cmp dword [rbx+0x1c], +0x03
0bcbf623 jnz 0x0bcb0014 ->1
0bcbf629 mov r15d, [rbx+0x14]
0bcbf62d mov rdi, 0xfffffffb418843e0
0bcbf637 cmp rdi, [r15+0x50]
0bcbf63b jnz 0x0bcb0014 ->1
0bcbf641 cmp dword [r15+0x4c], -0x01
0bcbf646 jnz 0x0bcb0014 ->1
0bcbf64c cmp dword [rbx+0x10], +0x00
0bcbf650 jnz 0x0bcb0014 ->1
0bcbf656 mov dword [rbp+0x1c], 0xffffffff
0bcbf65d cmp dword [rdx+0x1c], -0x0c
0bcbf661 jnz 0x0bcb0018 ->2
0bcbf667 mov ebx, [rdx+0x18]
0bcbf66a cmp dword [rbx+0x1c], +0x03
0bcbf66e jnz 0x0bcb0018 ->2
0bcbf674 mov r15d, [rbx+0x14]
0bcbf678 mov rdi, 0xfffffffb418843e0
0bcbf682 cmp rdi, [r15+0x50]
0bcbf686 jnz 0x0bcb0018 ->2
0bcbf68c cmp dword [r15+0x4c], -0x01
0bcbf691 jnz 0x0bcb0018 ->2
0bcbf697 cmp dword [rbx+0x10], +0x00
0bcbf69b jnz 0x0bcb0018 ->2
0bcbf6a1 mov dword [rbp+0x24], 0xffffffff
0bcbf6a8 cmp dword [rdx+0x4], -0x0c
0bcbf6ac jnz 0x0bcb001c ->3
0bcbf6b2 mov ebp, [rdx]
0bcbf6b4 cmp dword [rbp+0x1c], +0x03
0bcbf6b8 jnz 0x0bcb001c ->3
0bcbf6be mov ebx, [rbp+0x14]
0bcbf6c1 mov rdi, 0xfffffffb41884b48
0bcbf6cb cmp rdi, [rbx+0x20]
0bcbf6cf jnz 0x0bcb001c ->3
0bcbf6d5 cmp dword [rbp+0x10], +0x00
0bcbf6d9 jnz 0x0bcb001c ->3
0bcbf6df mov dword [rbx+0x1c], 0xfffffff4
0bcbf6e6 mov [rbx+0x18], eax
0bcbf6e9 test byte [rbp+0x4], 0x4
0bcbf6ed jz 0x0bcbf704
0bcbf6ef and byte [rbp+0x4], 0xfb
0bcbf6f3 mov edi, [0x41d653f4]
0bcbf6fa mov [0x41d653f4], ebp
0bcbf701 mov [rbp+0xc], edi
0bcbf704 xor eax, eax
0bcbf706 mov ebx, 0x41885538
0bcbf70b mov r14d, 0x41d66008
0bcbf711 jmp 0x00420177
---- TRACE 5 stop -> return
---- TRACE 4 exit 4
---- TRACE 5 exit 1
---- TRACE 4 exit 5
---- TRACE 3 exit 0
---- TRACE 4 exit 5
---- TRACE 3 exit 0
---- TRACE 4 exit 5
---- TRACE 3 exit 0
---- TRACE 4 exit 1
---- TRACE 4 exit 4
---- TRACE 4 exit 2
---- TRACE 1 start ssa.lua:39
0001 UGET 0 0 ; label_counter
0002 ADDVN 0 0 0 ; 1
0003 USETV 0 0 ; label_counter
0004 KSTR 0 0 ; "L"
0005 UGET 1 0 ; label_counter
0006 CAT 0 0 1
0007 TDUP 1 1
0008 TNEW 2 0
0009 TSETS 2 1 2 ; "bindings"
0010 TSETS 0 1 3 ; "label"
0011 UGET 2 1 ; ssa
0012 TGETS 2 2 4 ; "blocks"
0013 TSETV 1 2 0
0014 RET1 1 2
---- TRACE 1 IR
.... SNAP #0 [ ---- ]
0001 rbp fun SLOAD #0 R
0002 rbx > p32 UREFO 0001 #0
0003 xmm7 > num ULOAD 0002
0004 [10] num ADD 0003 +1 
0005 num USTORE 0002 0004
.... SNAP #1 [ ---- ---- ]
0006 str TOSTR 0004 NUM
0007 rdi p32 BUFHDR [0x41307414] RESET
0008 rdi p32 BUFPUT 0007 "L" 
0009 rdi p32 BUFPUT 0008 0006
0010 [c] str BUFSTR 0009 0007
0011 [8] > tab TDUP {0x41317508}
0012 r15 > tab TNEW #0 #0
0013 rbx p32 FLOAD 0011 tab.node
0014 p32 HREFK 0013 "bindings" @0
0015 tab HSTORE 0014 0012
0016 p32 HREFK 0013 "label" @1
0017 str HSTORE 0016 0010
.... SNAP #2 [ ---- 0010 0011 ---- ]
0018 rbp > p32 UREFO 0001 #1
0019 rbp > tab ULOAD 0018
0020 int FLOAD 0019 tab.hmask
0021 > int EQ 0020 +1 
0022 rbp p32 FLOAD 0019 tab.node
0023 > p32 HREFK 0022 "blocks" @0
0024 rbp > tab HLOAD 0023
0025 rsi p32 HREF 0024 0010
0026 > p32 EQ 0025 [0x41307458]
0027 tab FLOAD 0024 tab.meta
0028 > tab EQ 0027 [NULL]
0029 rbx p32 NEWREF 0024 0010
0030 tab HSTORE 0029 0011
0031 nil TBAR 0024
0032 p32 FREF 0024 tab.nomm
0033 u8  FSTORE 0032 +0 
.... SNAP #3 [ ---- ---- 0011 ]
---- TRACE 1 mcode 441
0bcbfe44 add rsp, -0x10
0bcbfe48 mov dword [0x41307410], 0x1
0bcbfe53 mov edi, [0x413073d8]
0bcbfe5a cmp edi, [0x413073dc]
0bcbfe61 jb 0x0bcbfe7a
0bcbfe63 mov esi, 0x3
0bcbfe68 mov edi, 0x413073b8
0bcbfe6d call 0x00421730 ->lj_gc_step_jit
0bcbfe72 test eax, eax
0bcbfe74 jnz 0x0bcb0010 ->0
0bcbfe7a mov edx, [0x413074b4]
0bcbfe81 mov ebp, [rdx-0x8]
0bcbfe84 mov edi, [rbp+0x14]
0bcbfe87 mov ebx, [rdi+0x10]
0bcbfe8a cmp dword [rbx+0x4], 0xfffeffff
0bcbfe91 jnb 0x0bcb0010 ->0
0bcbfe97 movsd xmm7, [rbx]
0bcbfe9b addsd xmm7, [0x41318a78]
0bcbfea4 movsd [rsp+0x10], xmm7
0bcbfeaa movsd [rbx], xmm7
0bcbfeae mov edi, 0x41307414
0bcbfeb3 mov esi, [rdi+0x8]
0bcbfeb6 mov [rdi], esi
0bcbfeb8 mov esi, 0x4c
0bcbfebd call 0x00421b60 ->lj_buf_putchar
0bcbfec2 mov edi, eax
0bcbfec4 lea rsi, [rsp+0x10]
0bcbfec9 call 0x0040a3c0 ->lj_strfmt_putnum
0bcbfece mov edi, eax
0bcbfed0 call 0x00421ff0 ->lj_buf_tostr
0bcbfed5 mov [rsp+0xc], eax
0bcbfed9 mov edi, [0x413074b0]
0bcbfee0 mov esi, 0x41317508
0bcbfee5 call 0x004223c0 ->lj_tab_dup
0bcbfeea mov ebx, eax
0bcbfeec mov [rsp+0x8], ebx
0bcbfef0 mov edi, [0x413074b0]
0bcbfef7 xor esi, esi
0bcbfef9 call 0x00422350 ->lj_tab_new1
0bcbfefe mov r15d, eax
0bcbff01 mov edi, [0x413074b0]
0bcbff08 mov eax, [rsp+0xc]
0bcbff0c mov ebx, [rbx+0x14]
0bcbff0f mov dword [rbx+0x4], 0xfffffff4
0bcbff16 mov [rbx], r15d
0bcbff19 mov dword [rbx+0x1c], 0xfffffffb
0bcbff20 mov [rbx+0x18], eax
0bcbff23 mov esi, [rbp+0x18]
0bcbff26 mov ebp, [rsi+0x10]
0bcbff29 cmp dword [rbp+0x4], -0x0c
0bcbff2d jnz 0x0bcb0018 ->2
0bcbff33 mov ebp, [rbp+0x0]
0bcbff36 cmp dword [rbp+0x1c], +0x01
0bcbff3a jnz 0x0bcb0018 ->2
0bcbff40 mov ebp, [rbp+0x14]
0bcbff43 mov rsi, 0xfffffffb41a311b8
0bcbff4d cmp rsi, [rbp+0x8]
0bcbff51 jnz 0x0bcb0018 ->2
0bcbff57 cmp dword [rbp+0x4], -0x0c
0bcbff5b jnz 0x0bcb0018 ->2
0bcbff61 mov ebp, [rbp+0x0]
0bcbff64 mov esi, [rbp+0x1c]
0bcbff67 and esi, [rax+0x8]
0bcbff6a lea esi, [rsi+rsi*2]
0bcbff6d shl esi, 0x03
0bcbff70 add esi, [rbp+0x14]
0bcbff73 cmp dword [rsi+0xc], -0x05
0bcbff77 jnz 0x0bcbff82
0bcbff79 cmp eax, [rsi+0x8]
0bcbff7c jz 0x0bcb0018 ->2
0bcbff82 mov esi, [rsi+0x10]
0bcbff85 test esi, esi
0bcbff87 jnz 0x0bcbff73
0bcbff89 cmp dword [rbp+0x10], +0x00
0bcbff8d jnz 0x0bcb0018 ->2
0bcbff93 mov edx, 0x41307448
0bcbff98 mov dword [rdx+0x4], 0xfffffffb
0bcbff9f mov [rdx], eax
0bcbffa1 mov esi, ebp
0bcbffa3 call 0x00422cf0 ->lj_tab_newkey
0bcbffa8 mov ebx, eax
0bcbffaa mov edx, [0x413074b4]
0bcbffb1 mov eax, [rsp+0x8]
0bcbffb5 mov dword [rbx+0x4], 0xfffffff4
0bcbffbc mov [rbx], eax
0bcbffbe test byte [rbp+0x4], 0x4
0bcbffc2 jz 0x0bcbffd9
0bcbffc4 and byte [rbp+0x4], 0xfb
0bcbffc8 mov edi, [0x413073f4]
0bcbffcf mov [0x413073f4], ebp
0bcbffd6 mov [rbp+0xc], edi
0bcbffd9 mov byte [rbp+0x6], 0x0
0bcbffdd mov dword [rdx+0xc], 0xfffffff4
0bcbffe4 mov [rdx+0x8], eax
0bcbffe7 xor eax, eax
0bcbffe9 mov ebx, 0x41a31e90
0bcbffee mov r14d, 0x41308008
0bcbfff4 add rsp, +0x10
0bcbfff8 jmp 0x00420177
---- TRACE 1 stop -> return
---- TRACE 2 start ssa.lua:55
0001 GGET 4 0 ; "assert"
0002 GGET 5 1 ; "type"
0003 MOV 6 0
0004 CALL 5 2 2
0000 . FUNCC ; type
0005 ISEQS 5 2 ; "table"
0006 JMP 5 => 0009
0009 KPRI 5 2
0010 CALL 4 1 2
0000 . FUNCC ; assert
0011 TGETB 4 0 1
0012 ISNES 4 3 ; "if"
0013 JMP 5 => 0037
0014 UGET 5 0 ; add_block
0015 CALL 5 2 1
0000 . JFUNCF 3 1 ; ssa.lua:39
0001 . UGET 0 0 ; label_counter
0002 . ADDVN 0 0 0 ; 1
0003 . USETV 0 0 ; label_counter
0004 . KSTR 0 0 ; "L"
0005 . UGET 1 0 ; label_counter
0006 . CAT 0 0 1
0007 . TDUP 1 1
0008 . TNEW 2 0
0009 . TSETS 2 1 2 ; "bindings"
0010 . TSETS 0 1 3 ; "label"
0011 . UGET 2 1 ; ssa
0012 . TGETS 2 2 4 ; "blocks"
0013 . TSETV 1 2 0
0014 . RET1 1 2
0016 UGET 6 0 ; add_block
0017 CALL 6 2 1
0000 . JFUNCF 3 1 ; ssa.lua:39
0001 . UGET 0 0 ; label_counter
0002 . ADDVN 0 0 0 ; 1
0003 . USETV 0 0 ; label_counter
0004 . KSTR 0 0 ; "L"
0005 . UGET 1 0 ; label_counter
0006 . CAT 0 0 1
0007 . TDUP 1 1
0008 . TNEW 2 0
0009 . TSETS 2 1 2 ; "bindings"
0010 . TSETS 0 1 3 ; "label"
0011 . UGET 2 1 ; ssa
0012 . TGETS 2 2 4 ; "blocks"
0013 . TSETV 1 2 0
0014 . RET1 1 2
0018 UGET 7 1 ; compile_bool
0019 TGETB 8 0 2
0020 MOV 9 1
0021 MOV 10 5
0022 MOV 11 6
0023 CALL 7 1 5
0000 . FUNCF 13 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0070 . ISNES 4 12 ; "match"
0071 . JMP 5 => 0077
0077 . ISNES 4 14 ; "fail"
0078 . JMP 5 => 0084
0084 . GGET 5 0 ; "assert"
0085 . UGET 6 4 ; relops
0086 . TGETV 6 6 4
0087 . CALL 5 1 2
0000 . . FUNCC ; assert
0088 . UGET 5 5 ; finish_if
0089 . MOV 6 1
0090 . MOV 7 0
0091 . MOV 8 2
0092 . MOV 9 3
0093 . CALL 5 1 5
0000 . . FUNCF 6 ; ssa.lua:49
0001 . . TDUP 4 1
0002 . . TSETB 1 4 2
0003 . . TGETS 5 2 2 ; "label"
0004 . . TSETB 5 4 3
0005 . . TGETS 5 3 2 ; "label"
0006 . . TSETB 5 4 4
0007 . . TSETS 4 0 0 ; "control"
0008 . . RET0 0 1
0094 . RET0 0 1
0024 UGET 7 1 ; compile_bool
0025 TGETB 8 0 3
0026 MOV 9 5
0027 MOV 10 2
0028 MOV 11 3
0029 CALL 7 1 5
0000 . FUNCF 13 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0058 . UGET 5 2 ; finish_goto
0059 . MOV 6 1
0060 . MOV 7 2
0061 . CALL 5 1 3
0000 . . FUNCF 4 ; ssa.lua:52
0001 . . TDUP 2 1
0002 . . TGETS 3 1 2 ; "label"
0003 . . TSETB 3 2 2
0004 . . TSETS 2 0 0 ; "control"
0005 . . RET0 0 1
0062 . JMP 5 => 0094
0094 . RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . FUNCF 13 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0014 . UGET 5 0 ; add_block
0015 . CALL 5 2 1
0000 . . JFUNCF 3 1 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0016 . UGET 6 0 ; add_block
0017 . CALL 6 2 1
0000 . . JFUNCF 3 1 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0018 . UGET 7 1 ; compile_bool
0019 . TGETB 8 0 2
0020 . MOV 9 1
0021 . MOV 10 5
0022 . MOV 11 6
0023 . CALL 7 1 5
0000 . . FUNCF 13 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0070 . . ISNES 4 12 ; "match"
0071 . . JMP 5 => 0077
0077 . . ISNES 4 14 ; "fail"
0078 . . JMP 5 => 0084
0084 . . GGET 5 0 ; "assert"
0085 . . UGET 6 4 ; relops
0086 . . TGETV 6 6 4
0087 . . CALL 5 1 2
0000 . . . FUNCC ; assert
0088 . . UGET 5 5 ; finish_if
0089 . . MOV 6 1
0090 . . MOV 7 0
0091 . . MOV 8 2
0092 . . MOV 9 3
0093 . . CALL 5 1 5
0000 . . . FUNCF 6 ; ssa.lua:49
0001 . . . TDUP 4 1
0002 . . . TSETB 1 4 2
0003 . . . TGETS 5 2 2 ; "label"
0004 . . . TSETB 5 4 3
0005 . . . TGETS 5 3 2 ; "label"
0006 . . . TSETB 5 4 4
0007 . . . TSETS 4 0 0 ; "control"
0008 . . . RET0 0 1
0094 . . RET0 0 1
0024 . UGET 7 1 ; compile_bool
0025 . TGETB 8 0 3
0026 . MOV 9 5
0027 . MOV 10 2
0028 . MOV 11 3
0029 . CALL 7 1 5
0000 . . FUNCF 13 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0014 . . UGET 5 0 ; add_block
0015 . . CALL 5 2 1
0000 . . . JFUNCF 3 1 ; ssa.lua:39
0001 . . . UGET 0 0 ; label_counter
0002 . . . ADDVN 0 0 0 ; 1
0003 . . . USETV 0 0 ; label_counter
0004 . . . KSTR 0 0 ; "L"
0005 . . . UGET 1 0 ; label_counter
0006 . . . CAT 0 0 1
0007 . . . TDUP 1 1
0008 . . . TNEW 2 0
0009 . . . TSETS 2 1 2 ; "bindings"
0010 . . . TSETS 0 1 3 ; "label"
0011 . . . UGET 2 1 ; ssa
0012 . . . TGETS 2 2 4 ; "blocks"
0013 . . . TSETV 1 2 0
0014 . . . RET1 1 2
0016 . . UGET 6 0 ; add_block
0017 . . CALL 6 2 1
0000 . . . JFUNCF 3 1 ; ssa.lua:39
0001 . . . UGET 0 0 ; label_counter
0002 . . . ADDVN 0 0 0 ; 1
0003 . . . USETV 0 0 ; label_counter
0004 . . . KSTR 0 0 ; "L"
0005 . . . UGET 1 0 ; label_counter
0006 . . . CAT 0 0 1
0007 . . . TDUP 1 1
0008 . . . TNEW 2 0
0009 . . . TSETS 2 1 2 ; "bindings"
0010 . . . TSETS 0 1 3 ; "label"
0011 . . . UGET 2 1 ; ssa
0012 . . . TGETS 2 2 4 ; "blocks"
0013 . . . TSETV 1 2 0
0014 . . . RET1 1 2
0018 . . UGET 7 1 ; compile_bool
0019 . . TGETB 8 0 2
0020 . . MOV 9 1
0021 . . MOV 10 5
0022 . . MOV 11 6
0023 . . CALL 7 1 5
0000 . . . FUNCF 13 ; ssa.lua:55
---- TRACE 2 abort ssa.lua:56 -- retry recording
---- TRACE 2 start ssa.lua:55
0001 GGET 4 0 ; "assert"
0002 GGET 5 1 ; "type"
0003 MOV 6 0
0004 CALL 5 2 2
0000 . FUNCC ; type
0005 ISEQS 5 2 ; "table"
0006 JMP 5 => 0009
0009 KPRI 5 2
0010 CALL 4 1 2
0000 . FUNCC ; assert
0011 TGETB 4 0 1
0012 ISNES 4 3 ; "if"
0013 JMP 5 => 0037
0037 ISNES 4 4 ; "let"
0038 JMP 5 => 0056
0056 ISNES 4 10 ; "true"
0057 JMP 5 => 0063
0063 ISNES 4 11 ; "false"
0064 JMP 5 => 0070
0070 ISNES 4 12 ; "match"
0071 JMP 5 => 0077
0077 ISNES 4 14 ; "fail"
0078 JMP 5 => 0084
0084 GGET 5 0 ; "assert"
0085 UGET 6 4 ; relops
0086 TGETV 6 6 4
0087 CALL 5 1 2
0000 . FUNCC ; assert
0088 UGET 5 5 ; finish_if
0089 MOV 6 1
0090 MOV 7 0
0091 MOV 8 2
0092 MOV 9 3
0093 CALL 5 1 5
0000 . FUNCF 6 ; ssa.lua:49
0001 . TDUP 4 1
0002 . TSETB 1 4 2
0003 . TGETS 5 2 2 ; "label"
0004 . TSETB 5 4 3
0005 . TGETS 5 3 2 ; "label"
0006 . TSETB 5 4 4
0007 . TSETS 4 0 0 ; "control"
0008 . RET0 0 1
0094 RET0 0 1
---- TRACE 2 IR
.... SNAP #0 [ ---- ---- ---- ---- ---- ]
0001 rbp fun SLOAD #0 R
0002 rbx tab FLOAD 0001 func.env
0003 rsi p32 HREF 0002 "assert"
0004 > p32 EQ 0003 [0x41307458]
0005 r15 tab FLOAD 0002 tab.meta
0006 > tab NE 0005 [NULL]
0007 int FLOAD 0005 tab.hmask
0008 > int EQ 0007 +1 
0009 r15 p32 FLOAD 0005 tab.node
0010 > p32 HREFK 0009 "__index" @1
0011 r15 > tab HLOAD 0010
0012 int FLOAD 0011 tab.hmask
0013 > int EQ 0012 +63 
0014 r15 p32 FLOAD 0011 tab.node
0015 > p32 HREFK 0014 "assert" @3
0016 > fun HLOAD 0015
0017 rsi p32 HREF 0002 "type"
0018 > p32 EQ 0017 [0x41307458]
0019 > p32 HREFK 0014 "type" @60
0020 > fun HLOAD 0019
0021 rbx > tab SLOAD #1 T
0022 > fun EQ 0020 type
0023 > fun EQ 0016 assert
0024 int FLOAD 0021 tab.asize
0025 > int ABC 0024 +1 
0026 r15 p32 FLOAD 0021 tab.array
0027 p32 AREF 0026 +1 
0028 r15 > str ALOAD 0027
.... SNAP #1 [ ---- ---- ---- ---- ---- 0028 ]
0029 > str NE 0028 "if"
.... SNAP #2 [ ---- ---- ---- ---- ---- 0028 ]
0030 > str NE 0028 "let"
.... SNAP #3 [ ---- ---- ---- ---- ---- 0028 ]
0031 > str NE 0028 "true"
.... SNAP #4 [ ---- ---- ---- ---- ---- 0028 ]
0032 > str NE 0028 "false"
.... SNAP #5 [ ---- ---- ---- ---- ---- 0028 ]
0033 > str NE 0028 "match"
.... SNAP #6 [ ---- ---- ---- ---- ---- 0028 ]
0034 > str NE 0028 "fail"
.... SNAP #7 [ ---- ---- ---- ---- ---- 0028 ]
0035 r14 > p32 UREFC 0001 #4
0036 r13 > tab ULOAD 0035
0037 r14 p32 HREF 0036 0028
0038 > tru HLOAD 0037
0039 > fun EQ 0001 ssa.lua:55
0040 rbp > tab SLOAD #2 T
0041 r12 > tab SLOAD #3 T
0042 r13 > tab SLOAD #4 T
0043 rax > tab TDUP {0x41a257d8}
0044 r14 p32 FLOAD 0043 tab.array
0045 p32 AREF 0044 +2 
0046 tab ASTORE 0045 0021
.... SNAP #8 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:49|0040 ---- 0041 0042 0043 ]
0047 int FLOAD 0041 tab.hmask
0048 > int EQ 0047 +1 
0049 rbx p32 FLOAD 0041 tab.node
0050 > p32 HREFK 0049 "label" @1
0051 rbx > str HLOAD 0050
0052 p32 AREF 0044 +3 
0053 str ASTORE 0052 0051
.... SNAP #9 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:49|0040 ---- ---- 0042 0043 ---- ]
0054 int FLOAD 0042 tab.hmask
0055 > int EQ 0054 +1 
0056 rbx p32 FLOAD 0042 tab.node
0057 > p32 HREFK 0056 "label" @1
0058 rbx > str HLOAD 0057
0059 p32 AREF 0044 +4 
0060 str ASTORE 0059 0058
.... SNAP #10 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:49|0040 ---- ---- ---- 0043 ---- ]
0061 int FLOAD 0040 tab.hmask
0062 > int EQ 0061 +3 
0063 rbx p32 FLOAD 0040 tab.node
0064 > p32 HREFK 0063 "control" @1
0065 tab FLOAD 0040 tab.meta
0066 > tab EQ 0065 [NULL]
0067 tab HSTORE 0064 0043
0068 nil TBAR 0040
.... SNAP #11 [ ssa.lua:55|]
---- TRACE 2 mcode 878
0bcbfacf mov dword [0x41307410], 0x2
0bcbfada mov edi, [0x413073d8]
0bcbfae1 cmp edi, [0x413073dc]
0bcbfae8 jb 0x0bcbfb01
0bcbfaea mov esi, 0x1
0bcbfaef mov edi, 0x413073b8
0bcbfaf4 call 0x00421730 ->lj_gc_step_jit
0bcbfaf9 test eax, eax
0bcbfafb jnz 0x0bcb0010 ->0
0bcbfb01 mov edi, [0x413074b0]
0bcbfb08 mov edx, [0x413074b4]
0bcbfb0f mov ebp, [rdx-0x8]
0bcbfb12 mov ebx, [rbp+0x8]
0bcbfb15 mov esi, [rbx+0x1c]
0bcbfb18 and esi, 0xce2b6183
0bcbfb1e lea esi, [rsi+rsi*2]
0bcbfb21 shl esi, 0x03
0bcbfb24 add esi, [rbx+0x14]
0bcbfb27 cmp dword [rsi+0xc], -0x05
0bcbfb2b jnz 0x0bcbfb3a
0bcbfb2d cmp dword [rsi+0x8], 0x41309db0
0bcbfb34 jz 0x0bcb0010 ->0
0bcbfb3a mov esi, [rsi+0x10]
0bcbfb3d test esi, esi
0bcbfb3f jnz 0x0bcbfb27
0bcbfb41 mov r15d, [rbx+0x10]
0bcbfb45 test r15d, r15d
0bcbfb48 jz 0x0bcb0010 ->0
0bcbfb4e cmp dword [r15+0x1c], +0x01
0bcbfb53 jnz 0x0bcb0010 ->0
0bcbfb59 mov r15d, [r15+0x14]
0bcbfb5d mov rsi, 0xfffffffb413094c8
0bcbfb67 cmp rsi, [r15+0x20]
0bcbfb6b jnz 0x0bcb0010 ->0
0bcbfb71 cmp dword [r15+0x1c], -0x0c
0bcbfb76 jnz 0x0bcb0010 ->0
0bcbfb7c mov r15d, [r15+0x18]
0bcbfb80 cmp dword [r15+0x1c], +0x3f
0bcbfb85 jnz 0x0bcb0010 ->0
0bcbfb8b mov r15d, [r15+0x14]
0bcbfb8f mov rsi, 0xfffffffb41309db0
0bcbfb99 cmp rsi, [r15+0x50]
0bcbfb9d jnz 0x0bcb0010 ->0
0bcbfba3 cmp dword [r15+0x4c], -0x09
0bcbfba8 jnz 0x0bcb0010 ->0
0bcbfbae mov esi, [rbx+0x1c]
0bcbfbb1 and esi, 0x798a813c
0bcbfbb7 lea esi, [rsi+rsi*2]
0bcbfbba shl esi, 0x03
0bcbfbbd add esi, [rbx+0x14]
0bcbfbc0 cmp dword [rsi+0xc], -0x05
0bcbfbc4 jnz 0x0bcbfbd3
0bcbfbc6 cmp dword [rsi+0x8], 0x41309fb0
0bcbfbcd jz 0x0bcb0010 ->0
0bcbfbd3 mov esi, [rsi+0x10]
0bcbfbd6 test esi, esi
0bcbfbd8 jnz 0x0bcbfbc0
0bcbfbda mov rsi, 0xfffffffb41309fb0
0bcbfbe4 cmp rsi, [r15+0x5a8]
0bcbfbeb jnz 0x0bcb0010 ->0
0bcbfbf1 cmp dword [r15+0x5a4], -0x09
0bcbfbf9 jnz 0x0bcb0010 ->0
0bcbfbff cmp dword [rdx+0x4], -0x0c
0bcbfc03 jnz 0x0bcb0010 ->0
0bcbfc09 mov ebx, [rdx]
0bcbfc0b cmp dword [r15+0x5a0], 0x41309f18
0bcbfc16 jnz 0x0bcb0010 ->0
0bcbfc1c cmp dword [r15+0x48], 0x41309d88
0bcbfc24 jnz 0x0bcb0010 ->0
0bcbfc2a cmp dword [rbx+0x18], +0x01
0bcbfc2e jbe 0x0bcb0010 ->0
0bcbfc34 mov r15d, [rbx+0x8]
0bcbfc38 cmp dword [r15+0xc], -0x05
0bcbfc3d jnz 0x0bcb0010 ->0
0bcbfc43 mov r15d, [r15+0x8]
0bcbfc47 cmp r15d, 0x413098f8
0bcbfc4e jz 0x0bcb0014 ->1
0bcbfc54 cmp r15d, 0x413184a8
0bcbfc5b jz 0x0bcb0018 ->2
0bcbfc61 cmp r15d, 0x41309a18
0bcbfc68 jz 0x0bcb001c ->3
0bcbfc6e cmp r15d, 0x41309870
0bcbfc75 jz 0x0bcb0020 ->4
0bcbfc7b cmp r15d, 0x4130ccb0
0bcbfc82 jz 0x0bcb0024 ->5
0bcbfc88 cmp r15d, 0x41324450
0bcbfc8f jz 0x0bcb0028 ->6
0bcbfc95 mov esi, [rbp+0x24]
0bcbfc98 cmp byte [rsi+0x6], 0x1
0bcbfc9c jnz 0x0bcb002c ->7
0bcbfca2 lea r14d, [rsi+0x8]
0bcbfca6 cmp dword [r14+0x4], -0x0c
0bcbfcab jnz 0x0bcb002c ->7
0bcbfcb1 mov r13d, [r14]
0bcbfcb4 mov r14d, [r13+0x1c]
0bcbfcb8 and r14d, [r15+0x8]
0bcbfcbc lea r14d, [r14+r14*2]
0bcbfcc0 shl r14d, 0x03
0bcbfcc4 add r14d, [r13+0x14]
0bcbfcc8 cmp dword [r14+0xc], -0x05
0bcbfccd jnz 0x0bcbfcd5
0bcbfccf cmp r15d, [r14+0x8]
0bcbfcd3 jz 0x0bcbfce4
0bcbfcd5 mov r14d, [r14+0x10]
0bcbfcd9 test r14d, r14d
0bcbfcdc jnz 0x0bcbfcc8
0bcbfcde mov r14d, 0x41307458
0bcbfce4 cmp dword [r14+0x4], -0x03
0bcbfce9 jnz 0x0bcb002c ->7
0bcbfcef cmp ebp, 0x41318880
0bcbfcf5 jnz 0x0bcb002c ->7
0bcbfcfb cmp dword [rdx+0xc], -0x0c
0bcbfcff jnz 0x0bcb002c ->7
0bcbfd05 mov ebp, [rdx+0x8]
0bcbfd08 cmp dword [rdx+0x14], -0x0c
0bcbfd0c jnz 0x0bcb002c ->7
0bcbfd12 mov r12d, [rdx+0x10]
0bcbfd16 cmp dword [rdx+0x1c], -0x0c
0bcbfd1a jnz 0x0bcb002c ->7
0bcbfd20 mov r13d, [rdx+0x18]
0bcbfd24 mov esi, 0x41a257d8
0bcbfd29 call 0x004223c0 ->lj_tab_dup
0bcbfd2e mov edx, [0x413074b4]
0bcbfd35 mov r14d, [rax+0x8]
0bcbfd39 mov dword [r14+0x14], 0xfffffff4
0bcbfd41 mov [r14+0x10], ebx
0bcbfd45 cmp dword [r12+0x1c], +0x01
0bcbfd4b jnz 0x0bcb0030 ->8
0bcbfd51 mov ebx, [r12+0x14]
0bcbfd56 mov rdi, 0xfffffffb41a31258
0bcbfd60 cmp rdi, [rbx+0x20]
0bcbfd64 jnz 0x0bcb0030 ->8
0bcbfd6a cmp dword [rbx+0x1c], -0x05
0bcbfd6e jnz 0x0bcb0030 ->8
0bcbfd74 mov ebx, [rbx+0x18]
0bcbfd77 mov dword [r14+0x1c], 0xfffffffb
0bcbfd7f mov [r14+0x18], ebx
0bcbfd83 cmp dword [r13+0x1c], +0x01
0bcbfd88 jnz 0x0bcb0034 ->9
0bcbfd8e mov ebx, [r13+0x14]
0bcbfd92 mov rdi, 0xfffffffb41a31258
0bcbfd9c cmp rdi, [rbx+0x20]
0bcbfda0 jnz 0x0bcb0034 ->9
0bcbfda6 cmp dword [rbx+0x1c], -0x05
0bcbfdaa jnz 0x0bcb0034 ->9
0bcbfdb0 mov ebx, [rbx+0x18]
0bcbfdb3 mov dword [r14+0x24], 0xfffffffb
0bcbfdbb mov [r14+0x20], ebx
0bcbfdbf cmp dword [rbp+0x1c], +0x03
0bcbfdc3 jnz 0x0bcb0038 ->10
0bcbfdc9 mov ebx, [rbp+0x14]
0bcbfdcc mov rdi, 0xfffffffb41a319c0
0bcbfdd6 cmp rdi, [rbx+0x20]
0bcbfdda jnz 0x0bcb0038 ->10
0bcbfde0 cmp dword [rbp+0x10], +0x00
0bcbfde4 jnz 0x0bcb0038 ->10
0bcbfdea mov dword [rbx+0x1c], 0xfffffff4
0bcbfdf1 mov [rbx+0x18], eax
0bcbfdf4 test byte [rbp+0x4], 0x4
0bcbfdf8 jz 0x0bcbfe0f
0bcbfdfa and byte [rbp+0x4], 0xfb
0bcbfdfe mov edi, [0x413073f4]
0bcbfe05 mov [0x413073f4], ebp
0bcbfe0c mov [rbp+0xc], edi
0bcbfe0f mov eax, [0x413074b0]
0bcbfe16 mov eax, [rax+0x20]
0bcbfe19 sub eax, edx
0bcbfe1b cmp eax, +0x68
0bcbfe1e jb 0x0bcb003c ->11
0bcbfe24 mov dword [rdx-0x8], 0x41318880
0bcbfe2b xor eax, eax
0bcbfe2d mov ebx, 0x41a32a20
0bcbfe32 mov r14d, 0x41308008
0bcbfe38 jmp 0x00420177
---- TRACE 2 stop -> return
---- TRACE 2 exit 6
---- TRACE 2 exit 4
---- TRACE 2 exit 1
---- TRACE 2 exit 8
---- TRACE 2 exit 1
---- TRACE 2 exit 8
---- TRACE 2 exit 1
---- TRACE 2 exit 8
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 1
---- TRACE 2 exit 8
---- TRACE 2 exit 1
---- TRACE 2 exit 8
---- TRACE 2 exit 1
---- TRACE 2 exit 8
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 3 start 2/4 ssa.lua:70
0065 UGET 5 2 ; finish_goto
0066 MOV 6 1
0067 MOV 7 3
0068 CALL 5 1 3
0000 . FUNCF 4 ; ssa.lua:52
0001 . TDUP 2 1
0002 . TGETS 3 1 2 ; "label"
0003 . TSETB 3 2 2
0004 . TSETS 2 0 0 ; "control"
0005 . RET0 0 1
0069 JMP 5 => 0094
0094 RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
---- TRACE 3 abort ssa.lua:79 -- down-recursion, restarting
---- TRACE 3 start ssa.lua:79
0094 RET0 0 1
0024 UGET 7 1 ; compile_bool
0025 TGETB 8 0 3
0026 MOV 9 5
0027 MOV 10 2
0028 MOV 11 3
0029 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0070 . ISNES 4 12 ; "match"
0071 . JMP 5 => 0077
0072 . UGET 5 3 ; finish_return
0073 . MOV 6 1
0074 . TDUP 7 13
0075 . CALL 5 1 3
0000 . . FUNCF 3 ; ssa.lua:46
0001 . . TDUP 2 1
0002 . . TSETB 1 2 2
0003 . . TSETS 2 0 0 ; "control"
0004 . . RET0 0 1
0076 . JMP 5 => 0094
0094 . RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0014 . UGET 5 0 ; add_block
0015 . CALL 5 2 1
0000 . . JFUNCF 3 1 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0016 . UGET 6 0 ; add_block
0017 . CALL 6 2 1
0000 . . JFUNCF 3 1 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0018 . UGET 7 1 ; compile_bool
0019 . TGETB 8 0 2
0020 . MOV 9 1
0021 . MOV 10 5
0022 . MOV 11 6
0023 . CALL 7 1 5
0000 . . JFUNCF 13 2 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0014 . . UGET 5 0 ; add_block
0015 . . CALL 5 2 1
0000 . . . JFUNCF 3 1 ; ssa.lua:39
0001 . . . UGET 0 0 ; label_counter
0002 . . . ADDVN 0 0 0 ; 1
0003 . . . USETV 0 0 ; label_counter
0004 . . . KSTR 0 0 ; "L"
0005 . . . UGET 1 0 ; label_counter
0006 . . . CAT 0 0 1
0007 . . . TDUP 1 1
0008 . . . TNEW 2 0
0009 . . . TSETS 2 1 2 ; "bindings"
0010 . . . TSETS 0 1 3 ; "label"
0011 . . . UGET 2 1 ; ssa
0012 . . . TGETS 2 2 4 ; "blocks"
0013 . . . TSETV 1 2 0
0014 . . . RET1 1 2
0016 . . UGET 6 0 ; add_block
0017 . . CALL 6 2 1
0000 . . . JFUNCF 3 1 ; ssa.lua:39
0001 . . . UGET 0 0 ; label_counter
0002 . . . ADDVN 0 0 0 ; 1
0003 . . . USETV 0 0 ; label_counter
0004 . . . KSTR 0 0 ; "L"
0005 . . . UGET 1 0 ; label_counter
0006 . . . CAT 0 0 1
0007 . . . TDUP 1 1
0008 . . . TNEW 2 0
0009 . . . TSETS 2 1 2 ; "bindings"
0010 . . . TSETS 0 1 3 ; "label"
0011 . . . UGET 2 1 ; ssa
0012 . . . TGETS 2 2 4 ; "blocks"
0013 . . . TSETV 1 2 0
0014 . . . RET1 1 2
0018 . . UGET 7 1 ; compile_bool
0019 . . TGETB 8 0 2
0020 . . MOV 9 1
0021 . . MOV 10 5
0022 . . MOV 11 6
0023 . . CALL 7 1 5
0000 . . . JFUNCF 13 2 ; ssa.lua:55
0001 . . . GGET 4 0 ; "assert"
0002 . . . GGET 5 1 ; "type"
0003 . . . MOV 6 0
0004 . . . CALL 5 2 2
0000 . . . . FUNCC ; type
0005 . . . ISEQS 5 2 ; "table"
0006 . . . JMP 5 => 0009
0009 . . . KPRI 5 2
0010 . . . CALL 4 1 2
0000 . . . . FUNCC ; assert
0011 . . . TGETB 4 0 1
0012 . . . ISNES 4 3 ; "if"
0013 . . . JMP 5 => 0037
0014 . . . UGET 5 0 ; add_block
0015 . . . CALL 5 2 1
0000 . . . . JFUNCF 3 1 ; ssa.lua:39
0001 . . . . UGET 0 0 ; label_counter
0002 . . . . ADDVN 0 0 0 ; 1
0003 . . . . USETV 0 0 ; label_counter
0004 . . . . KSTR 0 0 ; "L"
0005 . . . . UGET 1 0 ; label_counter
0006 . . . . CAT 0 0 1
0007 . . . . TDUP 1 1
0008 . . . . TNEW 2 0
0009 . . . . TSETS 2 1 2 ; "bindings"
0010 . . . . TSETS 0 1 3 ; "label"
0011 . . . . UGET 2 1 ; ssa
0012 . . . . TGETS 2 2 4 ; "blocks"
0013 . . . . TSETV 1 2 0
0014 . . . . RET1 1 2
0016 . . . UGET 6 0 ; add_block
0017 . . . CALL 6 2 1
0000 . . . . JFUNCF 3 1 ; ssa.lua:39
0001 . . . . UGET 0 0 ; label_counter
0002 . . . . ADDVN 0 0 0 ; 1
0003 . . . . USETV 0 0 ; label_counter
0004 . . . . KSTR 0 0 ; "L"
0005 . . . . UGET 1 0 ; label_counter
0006 . . . . CAT 0 0 1
0007 . . . . TDUP 1 1
0008 . . . . TNEW 2 0
0009 . . . . TSETS 2 1 2 ; "bindings"
0010 . . . . TSETS 0 1 3 ; "label"
0011 . . . . UGET 2 1 ; ssa
0012 . . . . TGETS 2 2 4 ; "blocks"
0013 . . . . TSETV 1 2 0
0014 . . . . RET1 1 2
0018 . . . UGET 7 1 ; compile_bool
0019 . . . TGETB 8 0 2
0020 . . . MOV 9 1
0021 . . . MOV 10 5
0022 . . . MOV 11 6
0023 . . . CALL 7 1 5
0000 . . . . JFUNCF 13 2 ; ssa.lua:55
---- TRACE 3 abort ssa.lua:55 -- call unroll limit reached
---- TRACE 3 start ssa.lua:55
0001 GGET 4 0 ; "assert"
0002 GGET 5 1 ; "type"
0003 MOV 6 0
0004 CALL 5 2 2
0000 . FUNCC ; type
0005 ISEQS 5 2 ; "table"
0006 JMP 5 => 0009
0009 KPRI 5 2
0010 CALL 4 1 2
0000 . FUNCC ; assert
0011 TGETB 4 0 1
0012 ISNES 4 3 ; "if"
0013 JMP 5 => 0037
0037 ISNES 4 4 ; "let"
0038 JMP 5 => 0056
0056 ISNES 4 10 ; "true"
0057 JMP 5 => 0063
0063 ISNES 4 11 ; "false"
0064 JMP 5 => 0070
0065 UGET 5 2 ; finish_goto
0066 MOV 6 1
0067 MOV 7 3
0068 CALL 5 1 3
0000 . FUNCF 4 ; ssa.lua:52
0001 . TDUP 2 1
0002 . TGETS 3 1 2 ; "label"
0003 . TSETB 3 2 2
0004 . TSETS 2 0 0 ; "control"
0005 . RET0 0 1
0069 JMP 5 => 0094
0094 RET0 0 1
---- TRACE 3 IR
.... SNAP #0 [ ---- ---- ---- ---- ---- ]
0001 rbp fun SLOAD #0 R
0002 rbx tab FLOAD 0001 func.env
0003 rsi p32 HREF 0002 "assert"
0004 > p32 EQ 0003 [0x41307458]
0005 r15 tab FLOAD 0002 tab.meta
0006 > tab NE 0005 [NULL]
0007 int FLOAD 0005 tab.hmask
0008 > int EQ 0007 +1 
0009 r15 p32 FLOAD 0005 tab.node
0010 > p32 HREFK 0009 "__index" @1
0011 r15 > tab HLOAD 0010
0012 int FLOAD 0011 tab.hmask
0013 > int EQ 0012 +63 
0014 r15 p32 FLOAD 0011 tab.node
0015 > p32 HREFK 0014 "assert" @3
0016 > fun HLOAD 0015
0017 rsi p32 HREF 0002 "type"
0018 > p32 EQ 0017 [0x41307458]
0019 > p32 HREFK 0014 "type" @60
0020 > fun HLOAD 0019
0021 rbx > tab SLOAD #1 T
0022 > fun EQ 0020 type
0023 > fun EQ 0016 assert
0024 int FLOAD 0021 tab.asize
0025 > int ABC 0024 +1 
0026 rbx p32 FLOAD 0021 tab.array
0027 p32 AREF 0026 +1 
0028 r15 > str ALOAD 0027
.... SNAP #1 [ ---- ---- ---- ---- ---- 0028 ]
0029 > str NE 0028 "if"
.... SNAP #2 [ ---- ---- ---- ---- ---- 0028 ]
0030 > str NE 0028 "let"
.... SNAP #3 [ ---- ---- ---- ---- ---- 0028 ]
0031 > str NE 0028 "true"
.... SNAP #4 [ ---- ---- ---- ---- ---- 0028 ]
0032 > str EQ 0028 "false"
.... SNAP #5 [ ---- ---- ---- ---- ---- 0028 ]
0033 > fun EQ 0001 ssa.lua:55
0034 rbp > tab SLOAD #2 T
0035 rbx > tab SLOAD #4 T
0036 rax > tab TDUP {0x41a2b268}
0037 int FLOAD 0035 tab.hmask
0038 > int EQ 0037 +3 
0039 r14 p32 FLOAD 0035 tab.node
0040 > p32 HREFK 0039 "label" @3
0041 > nil HLOAD 0040
0042 tab FLOAD 0035 tab.meta
0043 > tab EQ 0042 [NULL]
0044 rbx p32 FLOAD 0036 tab.array
0045 p32 AREF 0044 +2 
0046 nil ASTORE 0045 nil
.... SNAP #6 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:52|0034 ---- 0036 ---- ]
0047 int FLOAD 0034 tab.hmask
0048 > int EQ 0047 +3 
0049 rbx p32 FLOAD 0034 tab.node
0050 > p32 HREFK 0049 "control" @1
0051 tab FLOAD 0034 tab.meta
0052 > tab EQ 0051 [NULL]
0053 tab HSTORE 0050 0036
0054 nil TBAR 0034
.... SNAP #7 [ ssa.lua:55|]
---- TRACE 3 mcode 672
0bcbf828 mov dword [0x41307410], 0x3
0bcbf833 mov edi, [0x413073d8]
0bcbf83a cmp edi, [0x413073dc]
0bcbf841 jb 0x0bcbf85a
0bcbf843 mov esi, 0x1
0bcbf848 mov edi, 0x413073b8
0bcbf84d call 0x00421730 ->lj_gc_step_jit
0bcbf852 test eax, eax
0bcbf854 jnz 0x0bcb0010 ->0
0bcbf85a mov edi, [0x413074b0]
0bcbf861 mov edx, [0x413074b4]
0bcbf868 mov ebp, [rdx-0x8]
0bcbf86b mov ebx, [rbp+0x8]
0bcbf86e mov esi, [rbx+0x1c]
0bcbf871 and esi, 0xce2b6183
0bcbf877 lea esi, [rsi+rsi*2]
0bcbf87a shl esi, 0x03
0bcbf87d add esi, [rbx+0x14]
0bcbf880 cmp dword [rsi+0xc], -0x05
0bcbf884 jnz 0x0bcbf893
0bcbf886 cmp dword [rsi+0x8], 0x41309db0
0bcbf88d jz 0x0bcb0010 ->0
0bcbf893 mov esi, [rsi+0x10]
0bcbf896 test esi, esi
0bcbf898 jnz 0x0bcbf880
0bcbf89a mov r15d, [rbx+0x10]
0bcbf89e test r15d, r15d
0bcbf8a1 jz 0x0bcb0010 ->0
0bcbf8a7 cmp dword [r15+0x1c], +0x01
0bcbf8ac jnz 0x0bcb0010 ->0
0bcbf8b2 mov r15d, [r15+0x14]
0bcbf8b6 mov rsi, 0xfffffffb413094c8
0bcbf8c0 cmp rsi, [r15+0x20]
0bcbf8c4 jnz 0x0bcb0010 ->0
0bcbf8ca cmp dword [r15+0x1c], -0x0c
0bcbf8cf jnz 0x0bcb0010 ->0
0bcbf8d5 mov r15d, [r15+0x18]
0bcbf8d9 cmp dword [r15+0x1c], +0x3f
0bcbf8de jnz 0x0bcb0010 ->0
0bcbf8e4 mov r15d, [r15+0x14]
0bcbf8e8 mov rsi, 0xfffffffb41309db0
0bcbf8f2 cmp rsi, [r15+0x50]
0bcbf8f6 jnz 0x0bcb0010 ->0
0bcbf8fc cmp dword [r15+0x4c], -0x09
0bcbf901 jnz 0x0bcb0010 ->0
0bcbf907 mov esi, [rbx+0x1c]
0bcbf90a and esi, 0x798a813c
0bcbf910 lea esi, [rsi+rsi*2]
0bcbf913 shl esi, 0x03
0bcbf916 add esi, [rbx+0x14]
0bcbf919 cmp dword [rsi+0xc], -0x05
0bcbf91d jnz 0x0bcbf92c
0bcbf91f cmp dword [rsi+0x8], 0x41309fb0
0bcbf926 jz 0x0bcb0010 ->0
0bcbf92c mov esi, [rsi+0x10]
0bcbf92f test esi, esi
0bcbf931 jnz 0x0bcbf919
0bcbf933 mov rsi, 0xfffffffb41309fb0
0bcbf93d cmp rsi, [r15+0x5a8]
0bcbf944 jnz 0x0bcb0010 ->0
0bcbf94a cmp dword [r15+0x5a4], -0x09
0bcbf952 jnz 0x0bcb0010 ->0
0bcbf958 cmp dword [rdx+0x4], -0x0c
0bcbf95c jnz 0x0bcb0010 ->0
0bcbf962 mov ebx, [rdx]
0bcbf964 cmp dword [r15+0x5a0], 0x41309f18
0bcbf96f jnz 0x0bcb0010 ->0
0bcbf975 cmp dword [r15+0x48], 0x41309d88
0bcbf97d jnz 0x0bcb0010 ->0
0bcbf983 cmp dword [rbx+0x18], +0x01
0bcbf987 jbe 0x0bcb0010 ->0
0bcbf98d mov ebx, [rbx+0x8]
0bcbf990 cmp dword [rbx+0xc], -0x05
0bcbf994 jnz 0x0bcb0010 ->0
0bcbf99a mov r15d, [rbx+0x8]
0bcbf99e cmp r15d, 0x413098f8
0bcbf9a5 jz 0x0bcb0014 ->1
0bcbf9ab cmp r15d, 0x413184a8
0bcbf9b2 jz 0x0bcb0018 ->2
0bcbf9b8 cmp r15d, 0x41309a18
0bcbf9bf jz 0x0bcb001c ->3
0bcbf9c5 cmp r15d, 0x41309870
0bcbf9cc jnz 0x0bcb0020 ->4
0bcbf9d2 cmp ebp, 0x41318880
0bcbf9d8 jnz 0x0bcb0024 ->5
0bcbf9de cmp dword [rdx+0xc], -0x0c
0bcbf9e2 jnz 0x0bcb0024 ->5
0bcbf9e8 mov ebp, [rdx+0x8]
0bcbf9eb cmp dword [rdx+0x1c], -0x0c
0bcbf9ef jnz 0x0bcb0024 ->5
0bcbf9f5 mov ebx, [rdx+0x18]
0bcbf9f8 mov esi, 0x41a2b268
0bcbf9fd call 0x004223c0 ->lj_tab_dup
0bcbfa02 mov edx, [0x413074b4]
0bcbfa09 cmp dword [rbx+0x1c], +0x03
0bcbfa0d jnz 0x0bcb0024 ->5
0bcbfa13 mov r14d, [rbx+0x14]
0bcbfa17 mov rdi, 0xfffffffb41a31258
0bcbfa21 cmp rdi, [r14+0x50]
0bcbfa25 jnz 0x0bcb0024 ->5
0bcbfa2b cmp dword [r14+0x4c], -0x01
0bcbfa30 jnz 0x0bcb0024 ->5
0bcbfa36 cmp dword [rbx+0x10], +0x00
0bcbfa3a jnz 0x0bcb0024 ->5
0bcbfa40 mov ebx, [rax+0x8]
0bcbfa43 mov dword [rbx+0x14], 0xffffffff
0bcbfa4a cmp dword [rbp+0x1c], +0x03
0bcbfa4e jnz 0x0bcb0028 ->6
0bcbfa54 mov ebx, [rbp+0x14]
0bcbfa57 mov rdi, 0xfffffffb41a319c0
0bcbfa61 cmp rdi, [rbx+0x20]
0bcbfa65 jnz 0x0bcb0028 ->6
0bcbfa6b cmp dword [rbp+0x10], +0x00
0bcbfa6f jnz 0x0bcb0028 ->6
0bcbfa75 mov dword [rbx+0x1c], 0xfffffff4
0bcbfa7c mov [rbx+0x18], eax
0bcbfa7f test byte [rbp+0x4], 0x4
0bcbfa83 jz 0x0bcbfa9a
0bcbfa85 and byte [rbp+0x4], 0xfb
0bcbfa89 mov edi, [0x413073f4]
0bcbfa90 mov [0x413073f4], ebp
0bcbfa97 mov [rbp+0xc], edi
0bcbfa9a mov eax, [0x413074b0]
0bcbfaa1 mov eax, [rax+0x20]
0bcbfaa4 sub eax, edx
0bcbfaa6 cmp eax, +0x68
0bcbfaa9 jb 0x0bcb002c ->7
0bcbfaaf mov dword [rdx-0x8], 0x41318880
0bcbfab6 xor eax, eax
0bcbfab8 mov ebx, 0x41a32a20
0bcbfabd mov r14d, 0x41308008
0bcbfac3 jmp 0x00420177
---- TRACE 3 stop -> return
---- TRACE 3 exit 4
---- TRACE 3 exit 1
---- TRACE 3 exit 4
---- TRACE 3 exit 4
---- TRACE 3 exit 5
---- TRACE 3 exit 5
---- TRACE 4 start ssa.lua:52
0001 TDUP 2 1
0002 TGETS 3 1 2 ; "label"
0003 TSETB 3 2 2
0004 TSETS 2 0 0 ; "control"
0005 RET0 0 1
---- TRACE 4 IR
.... SNAP #0 [ ---- ---- ---- ]
0001 rax > tab TDUP {0x41a2b268}
0002 rbp > tab SLOAD #2 T
0003 int FLOAD 0002 tab.hmask
0004 > int EQ 0003 +3 
0005 rbp p32 FLOAD 0002 tab.node
0006 > p32 HREFK 0005 "label" @3
0007 rbp > str HLOAD 0006
0008 rbx p32 FLOAD 0001 tab.array
0009 p32 AREF 0008 +2 
0010 str ASTORE 0009 0007
.... SNAP #1 [ ---- ---- ---- 0001 ---- ]
0011 rbp > tab SLOAD #1 T
0012 int FLOAD 0011 tab.hmask
0013 > int EQ 0012 +3 
0014 rbx p32 FLOAD 0011 tab.node
0015 > p32 HREFK 0014 "control" @1
0016 tab FLOAD 0011 tab.meta
0017 > tab EQ 0016 [NULL]
0018 tab HSTORE 0015 0001
0019 nil TBAR 0011
.... SNAP #2 [ ---- ]
---- TRACE 4 mcode 256
0bcbf721 mov dword [0x41307410], 0x4
0bcbf72c mov edi, [0x413073d8]
0bcbf733 cmp edi, [0x413073dc]
0bcbf73a jb 0x0bcbf753
0bcbf73c mov esi, 0x1
0bcbf741 mov edi, 0x413073b8
0bcbf746 call 0x00421730 ->lj_gc_step_jit
0bcbf74b test eax, eax
0bcbf74d jnz 0x0bcb0010 ->0
0bcbf753 mov edi, [0x413074b0]
0bcbf75a mov esi, 0x41a2b268
0bcbf75f call 0x004223c0 ->lj_tab_dup
0bcbf764 mov edx, [0x413074b4]
0bcbf76b cmp dword [rdx+0xc], -0x0c
0bcbf76f jnz 0x0bcb0010 ->0
0bcbf775 mov ebp, [rdx+0x8]
0bcbf778 cmp dword [rbp+0x1c], +0x03
0bcbf77c jnz 0x0bcb0010 ->0
0bcbf782 mov ebp, [rbp+0x14]
0bcbf785 mov rdi, 0xfffffffb41a31258
0bcbf78f cmp rdi, [rbp+0x50]
0bcbf793 jnz 0x0bcb0010 ->0
0bcbf799 cmp dword [rbp+0x4c], -0x05
0bcbf79d jnz 0x0bcb0010 ->0
0bcbf7a3 mov ebp, [rbp+0x48]
0bcbf7a6 mov ebx, [rax+0x8]
0bcbf7a9 mov dword [rbx+0x14], 0xfffffffb
0bcbf7b0 mov [rbx+0x10], ebp
0bcbf7b3 cmp dword [rdx+0x4], -0x0c
0bcbf7b7 jnz 0x0bcb0014 ->1
0bcbf7bd mov ebp, [rdx]
0bcbf7bf cmp dword [rbp+0x1c], +0x03
0bcbf7c3 jnz 0x0bcb0014 ->1
0bcbf7c9 mov ebx, [rbp+0x14]
0bcbf7cc mov rdi, 0xfffffffb41a319c0
0bcbf7d6 cmp rdi, [rbx+0x20]
0bcbf7da jnz 0x0bcb0014 ->1
0bcbf7e0 cmp dword [rbp+0x10], +0x00
0bcbf7e4 jnz 0x0bcb0014 ->1
0bcbf7ea mov dword [rbx+0x1c], 0xfffffff4
0bcbf7f1 mov [rbx+0x18], eax
0bcbf7f4 test byte [rbp+0x4], 0x4
0bcbf7f8 jz 0x0bcbf80f
0bcbf7fa and byte [rbp+0x4], 0xfb
0bcbf7fe mov edi, [0x413073f4]
0bcbf805 mov [0x413073f4], ebp
0bcbf80c mov [rbp+0xc], edi
0bcbf80f xor eax, eax
0bcbf811 mov ebx, 0x41324304
0bcbf816 mov r14d, 0x41308008
0bcbf81c jmp 0x00420177
---- TRACE 4 stop -> return
---- TRACE 3 exit 5
---- TRACE 3 exit 1
---- TRACE 3 exit 4
---- TRACE 5 start ssa.lua:49
0001 TDUP 4 1
0002 TSETB 1 4 2
0003 TGETS 5 2 2 ; "label"
0004 TSETB 5 4 3
0005 TGETS 5 3 2 ; "label"
0006 TSETB 5 4 4
0007 TSETS 4 0 0 ; "control"
0008 RET0 0 1
---- TRACE 5 IR
.... SNAP #0 [ ---- ---- ---- ---- ---- ]
0001 rax > tab TDUP {0x41a257d8}
0002 rbx > tab SLOAD #2 T
0003 rbp p32 FLOAD 0001 tab.array
0004 p32 AREF 0003 +2 
0005 tab ASTORE 0004 0002
.... SNAP #1 [ ---- ---- ---- ---- ---- 0001 ]
0006 rbx > tab SLOAD #3 T
0007 int FLOAD 0006 tab.hmask
0008 > int EQ 0007 +3 
0009 r15 p32 FLOAD 0006 tab.node
0010 > p32 HREFK 0009 "label" @3
0011 > nil HLOAD 0010
0012 tab FLOAD 0006 tab.meta
0013 > tab EQ 0012 [NULL]
0014 p32 AREF 0003 +3 
0015 nil ASTORE 0014 nil
.... SNAP #2 [ ---- ---- ---- ---- ---- 0001 ---- ]
0016 rbx > tab SLOAD #4 T
0017 int FLOAD 0016 tab.hmask
0018 > int EQ 0017 +3 
0019 r15 p32 FLOAD 0016 tab.node
0020 > p32 HREFK 0019 "label" @3
0021 > nil HLOAD 0020
0022 tab FLOAD 0016 tab.meta
0023 > tab EQ 0022 [NULL]
0024 p32 AREF 0003 +4 
0025 nil ASTORE 0024 nil
.... SNAP #3 [ ---- ---- ---- ---- ---- 0001 ---- ]
0026 rbp > tab SLOAD #1 T
0027 int FLOAD 0026 tab.hmask
0028 > int EQ 0027 +3 
0029 rbx p32 FLOAD 0026 tab.node
0030 > p32 HREFK 0029 "control" @1
0031 tab FLOAD 0026 tab.meta
0032 > tab EQ 0031 [NULL]
0033 tab HSTORE 0030 0001
0034 nil TBAR 0026
.... SNAP #4 [ ---- ]
---- TRACE 5 mcode 360
0bcbf5b2 mov dword [0x41307410], 0x5
0bcbf5bd mov edi, [0x413073d8]
0bcbf5c4 cmp edi, [0x413073dc]
0bcbf5cb jb 0x0bcbf5e4
0bcbf5cd mov esi, 0x1
0bcbf5d2 mov edi, 0x413073b8
0bcbf5d7 call 0x00421730 ->lj_gc_step_jit
0bcbf5dc test eax, eax
0bcbf5de jnz 0x0bcb0010 ->0
0bcbf5e4 mov edi, [0x413074b0]
0bcbf5eb mov esi, 0x41a257d8
0bcbf5f0 call 0x004223c0 ->lj_tab_dup
0bcbf5f5 mov edx, [0x413074b4]
0bcbf5fc cmp dword [rdx+0xc], -0x0c
0bcbf600 jnz 0x0bcb0010 ->0
0bcbf606 mov ebx, [rdx+0x8]
0bcbf609 mov ebp, [rax+0x8]
0bcbf60c mov dword [rbp+0x14], 0xfffffff4
0bcbf613 mov [rbp+0x10], ebx
0bcbf616 cmp dword [rdx+0x14], -0x0c
0bcbf61a jnz 0x0bcb0014 ->1
0bcbf620 mov ebx, [rdx+0x10]
0bcbf623 cmp dword [rbx+0x1c], +0x03
0bcbf627 jnz 0x0bcb0014 ->1
0bcbf62d mov r15d, [rbx+0x14]
0bcbf631 mov rdi, 0xfffffffb41a31258
0bcbf63b cmp rdi, [r15+0x50]
0bcbf63f jnz 0x0bcb0014 ->1
0bcbf645 cmp dword [r15+0x4c], -0x01
0bcbf64a jnz 0x0bcb0014 ->1
0bcbf650 cmp dword [rbx+0x10], +0x00
0bcbf654 jnz 0x0bcb0014 ->1
0bcbf65a mov dword [rbp+0x1c], 0xffffffff
0bcbf661 cmp dword [rdx+0x1c], -0x0c
0bcbf665 jnz 0x0bcb0018 ->2
0bcbf66b mov ebx, [rdx+0x18]
0bcbf66e cmp dword [rbx+0x1c], +0x03
0bcbf672 jnz 0x0bcb0018 ->2
0bcbf678 mov r15d, [rbx+0x14]
0bcbf67c mov rdi, 0xfffffffb41a31258
0bcbf686 cmp rdi, [r15+0x50]
0bcbf68a jnz 0x0bcb0018 ->2
0bcbf690 cmp dword [r15+0x4c], -0x01
0bcbf695 jnz 0x0bcb0018 ->2
0bcbf69b cmp dword [rbx+0x10], +0x00
0bcbf69f jnz 0x0bcb0018 ->2
0bcbf6a5 mov dword [rbp+0x24], 0xffffffff
0bcbf6ac cmp dword [rdx+0x4], -0x0c
0bcbf6b0 jnz 0x0bcb001c ->3
0bcbf6b6 mov ebp, [rdx]
0bcbf6b8 cmp dword [rbp+0x1c], +0x03
0bcbf6bc jnz 0x0bcb001c ->3
0bcbf6c2 mov ebx, [rbp+0x14]
0bcbf6c5 mov rdi, 0xfffffffb41a319c0
0bcbf6cf cmp rdi, [rbx+0x20]
0bcbf6d3 jnz 0x0bcb001c ->3
0bcbf6d9 cmp dword [rbp+0x10], +0x00
0bcbf6dd jnz 0x0bcb001c ->3
0bcbf6e3 mov dword [rbx+0x1c], 0xfffffff4
0bcbf6ea mov [rbx+0x18], eax
0bcbf6ed test byte [rbp+0x4], 0x4
0bcbf6f1 jz 0x0bcbf708
0bcbf6f3 and byte [rbp+0x4], 0xfb
0bcbf6f7 mov edi, [0x413073f4]
0bcbf6fe mov [0x413073f4], ebp
0bcbf705 mov [rbp+0xc], edi
0bcbf708 xor eax, eax
0bcbf70a mov ebx, 0x41a323b0
0bcbf70f mov r14d, 0x41308008
0bcbf715 jmp 0x00420177
---- TRACE 5 stop -> return
---- TRACE 3 exit 2
---- TRACE 1 start ssa.lua:39
0001 UGET 0 0 ; label_counter
0002 ADDVN 0 0 0 ; 1
0003 USETV 0 0 ; label_counter
0004 KSTR 0 0 ; "L"
0005 UGET 1 0 ; label_counter
0006 CAT 0 0 1
0007 TDUP 1 1
0008 TNEW 2 0
0009 TSETS 2 1 2 ; "bindings"
0010 TSETS 0 1 3 ; "label"
0011 UGET 2 1 ; ssa
0012 TGETS 2 2 4 ; "blocks"
0013 TSETV 1 2 0
0014 RET1 1 2
---- TRACE 1 IR
.... SNAP #0 [ ---- ]
0001 rbp fun SLOAD #0 R
0002 rbx > p32 UREFO 0001 #0
0003 xmm7 > num ULOAD 0002
0004 [10] num ADD 0003 +1 
0005 num USTORE 0002 0004
.... SNAP #1 [ ---- ---- ]
0006 str TOSTR 0004 NUM
0007 rdi p32 BUFHDR [0x41677414] RESET
0008 rdi p32 BUFPUT 0007 "L" 
0009 rdi p32 BUFPUT 0008 0006
0010 [c] str BUFSTR 0009 0007
0011 [8] > tab TDUP {0x41687508}
0012 r15 > tab TNEW #0 #0
0013 rbx p32 FLOAD 0011 tab.node
0014 p32 HREFK 0013 "bindings" @0
0015 tab HSTORE 0014 0012
0016 p32 HREFK 0013 "label" @1
0017 str HSTORE 0016 0010
.... SNAP #2 [ ---- 0010 0011 ---- ]
0018 rbp > p32 UREFO 0001 #1
0019 rbp > tab ULOAD 0018
0020 int FLOAD 0019 tab.hmask
0021 > int EQ 0020 +1 
0022 rbp p32 FLOAD 0019 tab.node
0023 > p32 HREFK 0022 "blocks" @0
0024 rbp > tab HLOAD 0023
0025 rsi p32 HREF 0024 0010
0026 > p32 EQ 0025 [0x41677458]
0027 tab FLOAD 0024 tab.meta
0028 > tab EQ 0027 [NULL]
0029 rbx p32 NEWREF 0024 0010
0030 tab HSTORE 0029 0011
0031 nil TBAR 0024
0032 p32 FREF 0024 tab.nomm
0033 u8  FSTORE 0032 +0 
.... SNAP #3 [ ---- ---- 0011 ]
---- TRACE 1 mcode 441
0bcbfe44 add rsp, -0x10
0bcbfe48 mov dword [0x41677410], 0x1
0bcbfe53 mov edi, [0x416773d8]
0bcbfe5a cmp edi, [0x416773dc]
0bcbfe61 jb 0x0bcbfe7a
0bcbfe63 mov esi, 0x3
0bcbfe68 mov edi, 0x416773b8
0bcbfe6d call 0x00421730 ->lj_gc_step_jit
0bcbfe72 test eax, eax
0bcbfe74 jnz 0x0bcb0010 ->0
0bcbfe7a mov edx, [0x416774b4]
0bcbfe81 mov ebp, [rdx-0x8]
0bcbfe84 mov edi, [rbp+0x14]
0bcbfe87 mov ebx, [rdi+0x10]
0bcbfe8a cmp dword [rbx+0x4], 0xfffeffff
0bcbfe91 jnb 0x0bcb0010 ->0
0bcbfe97 movsd xmm7, [rbx]
0bcbfe9b addsd xmm7, [0x41688a78]
0bcbfea4 movsd [rsp+0x10], xmm7
0bcbfeaa movsd [rbx], xmm7
0bcbfeae mov edi, 0x41677414
0bcbfeb3 mov esi, [rdi+0x8]
0bcbfeb6 mov [rdi], esi
0bcbfeb8 mov esi, 0x4c
0bcbfebd call 0x00421b60 ->lj_buf_putchar
0bcbfec2 mov edi, eax
0bcbfec4 lea rsi, [rsp+0x10]
0bcbfec9 call 0x0040a3c0 ->lj_strfmt_putnum
0bcbfece mov edi, eax
0bcbfed0 call 0x00421ff0 ->lj_buf_tostr
0bcbfed5 mov [rsp+0xc], eax
0bcbfed9 mov edi, [0x416774b0]
0bcbfee0 mov esi, 0x41687508
0bcbfee5 call 0x004223c0 ->lj_tab_dup
0bcbfeea mov ebx, eax
0bcbfeec mov [rsp+0x8], ebx
0bcbfef0 mov edi, [0x416774b0]
0bcbfef7 xor esi, esi
0bcbfef9 call 0x00422350 ->lj_tab_new1
0bcbfefe mov r15d, eax
0bcbff01 mov edi, [0x416774b0]
0bcbff08 mov eax, [rsp+0xc]
0bcbff0c mov ebx, [rbx+0x14]
0bcbff0f mov dword [rbx+0x4], 0xfffffff4
0bcbff16 mov [rbx], r15d
0bcbff19 mov dword [rbx+0x1c], 0xfffffffb
0bcbff20 mov [rbx+0x18], eax
0bcbff23 mov esi, [rbp+0x18]
0bcbff26 mov ebp, [rsi+0x10]
0bcbff29 cmp dword [rbp+0x4], -0x0c
0bcbff2d jnz 0x0bcb0018 ->2
0bcbff33 mov ebp, [rbp+0x0]
0bcbff36 cmp dword [rbp+0x1c], +0x01
0bcbff3a jnz 0x0bcb0018 ->2
0bcbff40 mov ebp, [rbp+0x14]
0bcbff43 mov rsi, 0xfffffffb403dc1b8
0bcbff4d cmp rsi, [rbp+0x8]
0bcbff51 jnz 0x0bcb0018 ->2
0bcbff57 cmp dword [rbp+0x4], -0x0c
0bcbff5b jnz 0x0bcb0018 ->2
0bcbff61 mov ebp, [rbp+0x0]
0bcbff64 mov esi, [rbp+0x1c]
0bcbff67 and esi, [rax+0x8]
0bcbff6a lea esi, [rsi+rsi*2]
0bcbff6d shl esi, 0x03
0bcbff70 add esi, [rbp+0x14]
0bcbff73 cmp dword [rsi+0xc], -0x05
0bcbff77 jnz 0x0bcbff82
0bcbff79 cmp eax, [rsi+0x8]
0bcbff7c jz 0x0bcb0018 ->2
0bcbff82 mov esi, [rsi+0x10]
0bcbff85 test esi, esi
0bcbff87 jnz 0x0bcbff73
0bcbff89 cmp dword [rbp+0x10], +0x00
0bcbff8d jnz 0x0bcb0018 ->2
0bcbff93 mov edx, 0x41677448
0bcbff98 mov dword [rdx+0x4], 0xfffffffb
0bcbff9f mov [rdx], eax
0bcbffa1 mov esi, ebp
0bcbffa3 call 0x00422cf0 ->lj_tab_newkey
0bcbffa8 mov ebx, eax
0bcbffaa mov edx, [0x416774b4]
0bcbffb1 mov eax, [rsp+0x8]
0bcbffb5 mov dword [rbx+0x4], 0xfffffff4
0bcbffbc mov [rbx], eax
0bcbffbe test byte [rbp+0x4], 0x4
0bcbffc2 jz 0x0bcbffd9
0bcbffc4 and byte [rbp+0x4], 0xfb
0bcbffc8 mov edi, [0x416773f4]
0bcbffcf mov [0x416773f4], ebp
0bcbffd6 mov [rbp+0xc], edi
0bcbffd9 mov byte [rbp+0x6], 0x0
0bcbffdd mov dword [rdx+0xc], 0xfffffff4
0bcbffe4 mov [rdx+0x8], eax
0bcbffe7 xor eax, eax
0bcbffe9 mov ebx, 0x403dce90
0bcbffee mov r14d, 0x41678008
0bcbfff4 add rsp, +0x10
0bcbfff8 jmp 0x00420177
---- TRACE 1 stop -> return
---- TRACE 2 start ssa.lua:55
0001 GGET 4 0 ; "assert"
0002 GGET 5 1 ; "type"
0003 MOV 6 0
0004 CALL 5 2 2
0000 . FUNCC ; type
0005 ISEQS 5 2 ; "table"
0006 JMP 5 => 0009
0009 KPRI 5 2
0010 CALL 4 1 2
0000 . FUNCC ; assert
0011 TGETB 4 0 1
0012 ISNES 4 3 ; "if"
0013 JMP 5 => 0037
0014 UGET 5 0 ; add_block
0015 CALL 5 2 1
0000 . JFUNCF 3 1 ; ssa.lua:39
0001 . UGET 0 0 ; label_counter
0002 . ADDVN 0 0 0 ; 1
0003 . USETV 0 0 ; label_counter
0004 . KSTR 0 0 ; "L"
0005 . UGET 1 0 ; label_counter
0006 . CAT 0 0 1
0007 . TDUP 1 1
0008 . TNEW 2 0
0009 . TSETS 2 1 2 ; "bindings"
0010 . TSETS 0 1 3 ; "label"
0011 . UGET 2 1 ; ssa
0012 . TGETS 2 2 4 ; "blocks"
0013 . TSETV 1 2 0
0014 . RET1 1 2
0016 UGET 6 0 ; add_block
0017 CALL 6 2 1
0000 . JFUNCF 3 1 ; ssa.lua:39
0001 . UGET 0 0 ; label_counter
0002 . ADDVN 0 0 0 ; 1
0003 . USETV 0 0 ; label_counter
0004 . KSTR 0 0 ; "L"
0005 . UGET 1 0 ; label_counter
0006 . CAT 0 0 1
0007 . TDUP 1 1
0008 . TNEW 2 0
0009 . TSETS 2 1 2 ; "bindings"
0010 . TSETS 0 1 3 ; "label"
0011 . UGET 2 1 ; ssa
0012 . TGETS 2 2 4 ; "blocks"
0013 . TSETV 1 2 0
0014 . RET1 1 2
0018 UGET 7 1 ; compile_bool
0019 TGETB 8 0 2
0020 MOV 9 1
0021 MOV 10 5
0022 MOV 11 6
0023 CALL 7 1 5
0000 . FUNCF 13 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0070 . ISNES 4 12 ; "match"
0071 . JMP 5 => 0077
0077 . ISNES 4 14 ; "fail"
0078 . JMP 5 => 0084
0084 . GGET 5 0 ; "assert"
0085 . UGET 6 4 ; relops
0086 . TGETV 6 6 4
0087 . CALL 5 1 2
0000 . . FUNCC ; assert
0088 . UGET 5 5 ; finish_if
0089 . MOV 6 1
0090 . MOV 7 0
0091 . MOV 8 2
0092 . MOV 9 3
0093 . CALL 5 1 5
0000 . . FUNCF 6 ; ssa.lua:49
0001 . . TDUP 4 1
0002 . . TSETB 1 4 2
0003 . . TGETS 5 2 2 ; "label"
0004 . . TSETB 5 4 3
0005 . . TGETS 5 3 2 ; "label"
0006 . . TSETB 5 4 4
0007 . . TSETS 4 0 0 ; "control"
0008 . . RET0 0 1
0094 . RET0 0 1
0024 UGET 7 1 ; compile_bool
0025 TGETB 8 0 3
0026 MOV 9 5
0027 MOV 10 2
0028 MOV 11 3
0029 CALL 7 1 5
0000 . FUNCF 13 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0058 . UGET 5 2 ; finish_goto
0059 . MOV 6 1
0060 . MOV 7 2
0061 . CALL 5 1 3
0000 . . FUNCF 4 ; ssa.lua:52
0001 . . TDUP 2 1
0002 . . TGETS 3 1 2 ; "label"
0003 . . TSETB 3 2 2
0004 . . TSETS 2 0 0 ; "control"
0005 . . RET0 0 1
0062 . JMP 5 => 0094
0094 . RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . FUNCF 13 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0014 . UGET 5 0 ; add_block
0015 . CALL 5 2 1
0000 . . JFUNCF 3 1 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0016 . UGET 6 0 ; add_block
0017 . CALL 6 2 1
0000 . . JFUNCF 3 1 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0018 . UGET 7 1 ; compile_bool
0019 . TGETB 8 0 2
0020 . MOV 9 1
0021 . MOV 10 5
0022 . MOV 11 6
0023 . CALL 7 1 5
0000 . . FUNCF 13 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0070 . . ISNES 4 12 ; "match"
0071 . . JMP 5 => 0077
0077 . . ISNES 4 14 ; "fail"
0078 . . JMP 5 => 0084
0084 . . GGET 5 0 ; "assert"
0085 . . UGET 6 4 ; relops
0086 . . TGETV 6 6 4
0087 . . CALL 5 1 2
0000 . . . FUNCC ; assert
0088 . . UGET 5 5 ; finish_if
0089 . . MOV 6 1
0090 . . MOV 7 0
0091 . . MOV 8 2
0092 . . MOV 9 3
0093 . . CALL 5 1 5
0000 . . . FUNCF 6 ; ssa.lua:49
0001 . . . TDUP 4 1
0002 . . . TSETB 1 4 2
0003 . . . TGETS 5 2 2 ; "label"
0004 . . . TSETB 5 4 3
0005 . . . TGETS 5 3 2 ; "label"
0006 . . . TSETB 5 4 4
0007 . . . TSETS 4 0 0 ; "control"
0008 . . . RET0 0 1
0094 . . RET0 0 1
0024 . UGET 7 1 ; compile_bool
0025 . TGETB 8 0 3
0026 . MOV 9 5
0027 . MOV 10 2
0028 . MOV 11 3
0029 . CALL 7 1 5
0000 . . FUNCF 13 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0014 . . UGET 5 0 ; add_block
0015 . . CALL 5 2 1
0000 . . . JFUNCF 3 1 ; ssa.lua:39
0001 . . . UGET 0 0 ; label_counter
0002 . . . ADDVN 0 0 0 ; 1
0003 . . . USETV 0 0 ; label_counter
0004 . . . KSTR 0 0 ; "L"
0005 . . . UGET 1 0 ; label_counter
0006 . . . CAT 0 0 1
0007 . . . TDUP 1 1
0008 . . . TNEW 2 0
0009 . . . TSETS 2 1 2 ; "bindings"
0010 . . . TSETS 0 1 3 ; "label"
0011 . . . UGET 2 1 ; ssa
0012 . . . TGETS 2 2 4 ; "blocks"
0013 . . . TSETV 1 2 0
0014 . . . RET1 1 2
0016 . . UGET 6 0 ; add_block
0017 . . CALL 6 2 1
0000 . . . JFUNCF 3 1 ; ssa.lua:39
0001 . . . UGET 0 0 ; label_counter
0002 . . . ADDVN 0 0 0 ; 1
0003 . . . USETV 0 0 ; label_counter
0004 . . . KSTR 0 0 ; "L"
0005 . . . UGET 1 0 ; label_counter
0006 . . . CAT 0 0 1
0007 . . . TDUP 1 1
0008 . . . TNEW 2 0
0009 . . . TSETS 2 1 2 ; "bindings"
0010 . . . TSETS 0 1 3 ; "label"
0011 . . . UGET 2 1 ; ssa
0012 . . . TGETS 2 2 4 ; "blocks"
0013 . . . TSETV 1 2 0
0014 . . . RET1 1 2
0018 . . UGET 7 1 ; compile_bool
0019 . . TGETB 8 0 2
0020 . . MOV 9 1
0021 . . MOV 10 5
0022 . . MOV 11 6
0023 . . CALL 7 1 5
0000 . . . FUNCF 13 ; ssa.lua:55
---- TRACE 2 abort ssa.lua:56 -- retry recording
---- TRACE 2 start ssa.lua:55
0001 GGET 4 0 ; "assert"
0002 GGET 5 1 ; "type"
0003 MOV 6 0
0004 CALL 5 2 2
0000 . FUNCC ; type
0005 ISEQS 5 2 ; "table"
0006 JMP 5 => 0009
0009 KPRI 5 2
0010 CALL 4 1 2
0000 . FUNCC ; assert
0011 TGETB 4 0 1
0012 ISNES 4 3 ; "if"
0013 JMP 5 => 0037
0037 ISNES 4 4 ; "let"
0038 JMP 5 => 0056
0056 ISNES 4 10 ; "true"
0057 JMP 5 => 0063
0063 ISNES 4 11 ; "false"
0064 JMP 5 => 0070
0070 ISNES 4 12 ; "match"
0071 JMP 5 => 0077
0077 ISNES 4 14 ; "fail"
0078 JMP 5 => 0084
0084 GGET 5 0 ; "assert"
0085 UGET 6 4 ; relops
0086 TGETV 6 6 4
0087 CALL 5 1 2
0000 . FUNCC ; assert
0088 UGET 5 5 ; finish_if
0089 MOV 6 1
0090 MOV 7 0
0091 MOV 8 2
0092 MOV 9 3
0093 CALL 5 1 5
0000 . FUNCF 6 ; ssa.lua:49
0001 . TDUP 4 1
0002 . TSETB 1 4 2
0003 . TGETS 5 2 2 ; "label"
0004 . TSETB 5 4 3
0005 . TGETS 5 3 2 ; "label"
0006 . TSETB 5 4 4
0007 . TSETS 4 0 0 ; "control"
0008 . RET0 0 1
0094 RET0 0 1
---- TRACE 2 IR
.... SNAP #0 [ ---- ---- ---- ---- ---- ]
0001 rbp fun SLOAD #0 R
0002 rbx tab FLOAD 0001 func.env
0003 rsi p32 HREF 0002 "assert"
0004 > p32 EQ 0003 [0x41677458]
0005 r15 tab FLOAD 0002 tab.meta
0006 > tab NE 0005 [NULL]
0007 int FLOAD 0005 tab.hmask
0008 > int EQ 0007 +1 
0009 r15 p32 FLOAD 0005 tab.node
0010 > p32 HREFK 0009 "__index" @1
0011 r15 > tab HLOAD 0010
0012 int FLOAD 0011 tab.hmask
0013 > int EQ 0012 +63 
0014 r15 p32 FLOAD 0011 tab.node
0015 > p32 HREFK 0014 "assert" @3
0016 > fun HLOAD 0015
0017 rsi p32 HREF 0002 "type"
0018 > p32 EQ 0017 [0x41677458]
0019 > p32 HREFK 0014 "type" @60
0020 > fun HLOAD 0019
0021 rbx > tab SLOAD #1 T
0022 > fun EQ 0020 type
0023 > fun EQ 0016 assert
0024 int FLOAD 0021 tab.asize
0025 > int ABC 0024 +1 
0026 r15 p32 FLOAD 0021 tab.array
0027 p32 AREF 0026 +1 
0028 r15 > str ALOAD 0027
.... SNAP #1 [ ---- ---- ---- ---- ---- 0028 ]
0029 > str NE 0028 "if"
.... SNAP #2 [ ---- ---- ---- ---- ---- 0028 ]
0030 > str NE 0028 "let"
.... SNAP #3 [ ---- ---- ---- ---- ---- 0028 ]
0031 > str NE 0028 "true"
.... SNAP #4 [ ---- ---- ---- ---- ---- 0028 ]
0032 > str NE 0028 "false"
.... SNAP #5 [ ---- ---- ---- ---- ---- 0028 ]
0033 > str NE 0028 "match"
.... SNAP #6 [ ---- ---- ---- ---- ---- 0028 ]
0034 > str NE 0028 "fail"
.... SNAP #7 [ ---- ---- ---- ---- ---- 0028 ]
0035 r14 > p32 UREFC 0001 #4
0036 r13 > tab ULOAD 0035
0037 r14 p32 HREF 0036 0028
0038 > tru HLOAD 0037
0039 > fun EQ 0001 ssa.lua:55
0040 rbp > tab SLOAD #2 T
0041 r12 > tab SLOAD #3 T
0042 r13 > tab SLOAD #4 T
0043 rax > tab TDUP {0x403d07d8}
0044 r14 p32 FLOAD 0043 tab.array
0045 p32 AREF 0044 +2 
0046 tab ASTORE 0045 0021
.... SNAP #8 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:49|0040 ---- 0041 0042 0043 ]
0047 int FLOAD 0041 tab.hmask
0048 > int EQ 0047 +1 
0049 rbx p32 FLOAD 0041 tab.node
0050 > p32 HREFK 0049 "label" @1
0051 rbx > str HLOAD 0050
0052 p32 AREF 0044 +3 
0053 str ASTORE 0052 0051
.... SNAP #9 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:49|0040 ---- ---- 0042 0043 ---- ]
0054 int FLOAD 0042 tab.hmask
0055 > int EQ 0054 +1 
0056 rbx p32 FLOAD 0042 tab.node
0057 > p32 HREFK 0056 "label" @1
0058 rbx > str HLOAD 0057
0059 p32 AREF 0044 +4 
0060 str ASTORE 0059 0058
.... SNAP #10 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:49|0040 ---- ---- ---- 0043 ---- ]
0061 int FLOAD 0040 tab.hmask
0062 > int EQ 0061 +3 
0063 rbx p32 FLOAD 0040 tab.node
0064 > p32 HREFK 0063 "control" @1
0065 tab FLOAD 0040 tab.meta
0066 > tab EQ 0065 [NULL]
0067 tab HSTORE 0064 0043
0068 nil TBAR 0040
.... SNAP #11 [ ssa.lua:55|]
---- TRACE 2 mcode 878
0bcbfacf mov dword [0x41677410], 0x2
0bcbfada mov edi, [0x416773d8]
0bcbfae1 cmp edi, [0x416773dc]
0bcbfae8 jb 0x0bcbfb01
0bcbfaea mov esi, 0x1
0bcbfaef mov edi, 0x416773b8
0bcbfaf4 call 0x00421730 ->lj_gc_step_jit
0bcbfaf9 test eax, eax
0bcbfafb jnz 0x0bcb0010 ->0
0bcbfb01 mov edi, [0x416774b0]
0bcbfb08 mov edx, [0x416774b4]
0bcbfb0f mov ebp, [rdx-0x8]
0bcbfb12 mov ebx, [rbp+0x8]
0bcbfb15 mov esi, [rbx+0x1c]
0bcbfb18 and esi, 0xce2b6183
0bcbfb1e lea esi, [rsi+rsi*2]
0bcbfb21 shl esi, 0x03
0bcbfb24 add esi, [rbx+0x14]
0bcbfb27 cmp dword [rsi+0xc], -0x05
0bcbfb2b jnz 0x0bcbfb3a
0bcbfb2d cmp dword [rsi+0x8], 0x41679db0
0bcbfb34 jz 0x0bcb0010 ->0
0bcbfb3a mov esi, [rsi+0x10]
0bcbfb3d test esi, esi
0bcbfb3f jnz 0x0bcbfb27
0bcbfb41 mov r15d, [rbx+0x10]
0bcbfb45 test r15d, r15d
0bcbfb48 jz 0x0bcb0010 ->0
0bcbfb4e cmp dword [r15+0x1c], +0x01
0bcbfb53 jnz 0x0bcb0010 ->0
0bcbfb59 mov r15d, [r15+0x14]
0bcbfb5d mov rsi, 0xfffffffb416794c8
0bcbfb67 cmp rsi, [r15+0x20]
0bcbfb6b jnz 0x0bcb0010 ->0
0bcbfb71 cmp dword [r15+0x1c], -0x0c
0bcbfb76 jnz 0x0bcb0010 ->0
0bcbfb7c mov r15d, [r15+0x18]
0bcbfb80 cmp dword [r15+0x1c], +0x3f
0bcbfb85 jnz 0x0bcb0010 ->0
0bcbfb8b mov r15d, [r15+0x14]
0bcbfb8f mov rsi, 0xfffffffb41679db0
0bcbfb99 cmp rsi, [r15+0x50]
0bcbfb9d jnz 0x0bcb0010 ->0
0bcbfba3 cmp dword [r15+0x4c], -0x09
0bcbfba8 jnz 0x0bcb0010 ->0
0bcbfbae mov esi, [rbx+0x1c]
0bcbfbb1 and esi, 0x798a813c
0bcbfbb7 lea esi, [rsi+rsi*2]
0bcbfbba shl esi, 0x03
0bcbfbbd add esi, [rbx+0x14]
0bcbfbc0 cmp dword [rsi+0xc], -0x05
0bcbfbc4 jnz 0x0bcbfbd3
0bcbfbc6 cmp dword [rsi+0x8], 0x41679fb0
0bcbfbcd jz 0x0bcb0010 ->0
0bcbfbd3 mov esi, [rsi+0x10]
0bcbfbd6 test esi, esi
0bcbfbd8 jnz 0x0bcbfbc0
0bcbfbda mov rsi, 0xfffffffb41679fb0
0bcbfbe4 cmp rsi, [r15+0x5a8]
0bcbfbeb jnz 0x0bcb0010 ->0
0bcbfbf1 cmp dword [r15+0x5a4], -0x09
0bcbfbf9 jnz 0x0bcb0010 ->0
0bcbfbff cmp dword [rdx+0x4], -0x0c
0bcbfc03 jnz 0x0bcb0010 ->0
0bcbfc09 mov ebx, [rdx]
0bcbfc0b cmp dword [r15+0x5a0], 0x41679f18
0bcbfc16 jnz 0x0bcb0010 ->0
0bcbfc1c cmp dword [r15+0x48], 0x41679d88
0bcbfc24 jnz 0x0bcb0010 ->0
0bcbfc2a cmp dword [rbx+0x18], +0x01
0bcbfc2e jbe 0x0bcb0010 ->0
0bcbfc34 mov r15d, [rbx+0x8]
0bcbfc38 cmp dword [r15+0xc], -0x05
0bcbfc3d jnz 0x0bcb0010 ->0
0bcbfc43 mov r15d, [r15+0x8]
0bcbfc47 cmp r15d, 0x416798f8
0bcbfc4e jz 0x0bcb0014 ->1
0bcbfc54 cmp r15d, 0x416884a8
0bcbfc5b jz 0x0bcb0018 ->2
0bcbfc61 cmp r15d, 0x41679a18
0bcbfc68 jz 0x0bcb001c ->3
0bcbfc6e cmp r15d, 0x41679870
0bcbfc75 jz 0x0bcb0020 ->4
0bcbfc7b cmp r15d, 0x4167ccb0
0bcbfc82 jz 0x0bcb0024 ->5
0bcbfc88 cmp r15d, 0x41694450
0bcbfc8f jz 0x0bcb0028 ->6
0bcbfc95 mov esi, [rbp+0x24]
0bcbfc98 cmp byte [rsi+0x6], 0x1
0bcbfc9c jnz 0x0bcb002c ->7
0bcbfca2 lea r14d, [rsi+0x8]
0bcbfca6 cmp dword [r14+0x4], -0x0c
0bcbfcab jnz 0x0bcb002c ->7
0bcbfcb1 mov r13d, [r14]
0bcbfcb4 mov r14d, [r13+0x1c]
0bcbfcb8 and r14d, [r15+0x8]
0bcbfcbc lea r14d, [r14+r14*2]
0bcbfcc0 shl r14d, 0x03
0bcbfcc4 add r14d, [r13+0x14]
0bcbfcc8 cmp dword [r14+0xc], -0x05
0bcbfccd jnz 0x0bcbfcd5
0bcbfccf cmp r15d, [r14+0x8]
0bcbfcd3 jz 0x0bcbfce4
0bcbfcd5 mov r14d, [r14+0x10]
0bcbfcd9 test r14d, r14d
0bcbfcdc jnz 0x0bcbfcc8
0bcbfcde mov r14d, 0x41677458
0bcbfce4 cmp dword [r14+0x4], -0x03
0bcbfce9 jnz 0x0bcb002c ->7
0bcbfcef cmp ebp, 0x41688880
0bcbfcf5 jnz 0x0bcb002c ->7
0bcbfcfb cmp dword [rdx+0xc], -0x0c
0bcbfcff jnz 0x0bcb002c ->7
0bcbfd05 mov ebp, [rdx+0x8]
0bcbfd08 cmp dword [rdx+0x14], -0x0c
0bcbfd0c jnz 0x0bcb002c ->7
0bcbfd12 mov r12d, [rdx+0x10]
0bcbfd16 cmp dword [rdx+0x1c], -0x0c
0bcbfd1a jnz 0x0bcb002c ->7
0bcbfd20 mov r13d, [rdx+0x18]
0bcbfd24 mov esi, 0x403d07d8
0bcbfd29 call 0x004223c0 ->lj_tab_dup
0bcbfd2e mov edx, [0x416774b4]
0bcbfd35 mov r14d, [rax+0x8]
0bcbfd39 mov dword [r14+0x14], 0xfffffff4
0bcbfd41 mov [r14+0x10], ebx
0bcbfd45 cmp dword [r12+0x1c], +0x01
0bcbfd4b jnz 0x0bcb0030 ->8
0bcbfd51 mov ebx, [r12+0x14]
0bcbfd56 mov rdi, 0xfffffffb403dc258
0bcbfd60 cmp rdi, [rbx+0x20]
0bcbfd64 jnz 0x0bcb0030 ->8
0bcbfd6a cmp dword [rbx+0x1c], -0x05
0bcbfd6e jnz 0x0bcb0030 ->8
0bcbfd74 mov ebx, [rbx+0x18]
0bcbfd77 mov dword [r14+0x1c], 0xfffffffb
0bcbfd7f mov [r14+0x18], ebx
0bcbfd83 cmp dword [r13+0x1c], +0x01
0bcbfd88 jnz 0x0bcb0034 ->9
0bcbfd8e mov ebx, [r13+0x14]
0bcbfd92 mov rdi, 0xfffffffb403dc258
0bcbfd9c cmp rdi, [rbx+0x20]
0bcbfda0 jnz 0x0bcb0034 ->9
0bcbfda6 cmp dword [rbx+0x1c], -0x05
0bcbfdaa jnz 0x0bcb0034 ->9
0bcbfdb0 mov ebx, [rbx+0x18]
0bcbfdb3 mov dword [r14+0x24], 0xfffffffb
0bcbfdbb mov [r14+0x20], ebx
0bcbfdbf cmp dword [rbp+0x1c], +0x03
0bcbfdc3 jnz 0x0bcb0038 ->10
0bcbfdc9 mov ebx, [rbp+0x14]
0bcbfdcc mov rdi, 0xfffffffb403dc9c0
0bcbfdd6 cmp rdi, [rbx+0x20]
0bcbfdda jnz 0x0bcb0038 ->10
0bcbfde0 cmp dword [rbp+0x10], +0x00
0bcbfde4 jnz 0x0bcb0038 ->10
0bcbfdea mov dword [rbx+0x1c], 0xfffffff4
0bcbfdf1 mov [rbx+0x18], eax
0bcbfdf4 test byte [rbp+0x4], 0x4
0bcbfdf8 jz 0x0bcbfe0f
0bcbfdfa and byte [rbp+0x4], 0xfb
0bcbfdfe mov edi, [0x416773f4]
0bcbfe05 mov [0x416773f4], ebp
0bcbfe0c mov [rbp+0xc], edi
0bcbfe0f mov eax, [0x416774b0]
0bcbfe16 mov eax, [rax+0x20]
0bcbfe19 sub eax, edx
0bcbfe1b cmp eax, +0x68
0bcbfe1e jb 0x0bcb003c ->11
0bcbfe24 mov dword [rdx-0x8], 0x41688880
0bcbfe2b xor eax, eax
0bcbfe2d mov ebx, 0x403dda20
0bcbfe32 mov r14d, 0x41678008
0bcbfe38 jmp 0x00420177
---- TRACE 2 stop -> return
---- TRACE 2 exit 6
---- TRACE 2 exit 4
---- TRACE 2 exit 1
---- TRACE 2 exit 8
---- TRACE 2 exit 1
---- TRACE 2 exit 8
---- TRACE 2 exit 1
---- TRACE 2 exit 8
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 1
---- TRACE 2 exit 8
---- TRACE 2 exit 1
---- TRACE 2 exit 8
---- TRACE 2 exit 1
---- TRACE 2 exit 8
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 3 start 2/4 ssa.lua:70
0065 UGET 5 2 ; finish_goto
0066 MOV 6 1
0067 MOV 7 3
0068 CALL 5 1 3
0000 . FUNCF 4 ; ssa.lua:52
0001 . TDUP 2 1
0002 . TGETS 3 1 2 ; "label"
0003 . TSETB 3 2 2
0004 . TSETS 2 0 0 ; "control"
0005 . RET0 0 1
0069 JMP 5 => 0094
0094 RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
---- TRACE 3 abort ssa.lua:79 -- down-recursion, restarting
---- TRACE 3 start ssa.lua:79
0094 RET0 0 1
0024 UGET 7 1 ; compile_bool
0025 TGETB 8 0 3
0026 MOV 9 5
0027 MOV 10 2
0028 MOV 11 3
0029 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0070 . ISNES 4 12 ; "match"
0071 . JMP 5 => 0077
0072 . UGET 5 3 ; finish_return
0073 . MOV 6 1
0074 . TDUP 7 13
0075 . CALL 5 1 3
0000 . . FUNCF 3 ; ssa.lua:46
0001 . . TDUP 2 1
0002 . . TSETB 1 2 2
0003 . . TSETS 2 0 0 ; "control"
0004 . . RET0 0 1
0076 . JMP 5 => 0094
0094 . RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0014 . UGET 5 0 ; add_block
0015 . CALL 5 2 1
0000 . . JFUNCF 3 1 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0016 . UGET 6 0 ; add_block
0017 . CALL 6 2 1
0000 . . JFUNCF 3 1 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0018 . UGET 7 1 ; compile_bool
0019 . TGETB 8 0 2
0020 . MOV 9 1
0021 . MOV 10 5
0022 . MOV 11 6
0023 . CALL 7 1 5
0000 . . JFUNCF 13 2 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0014 . . UGET 5 0 ; add_block
0015 . . CALL 5 2 1
0000 . . . JFUNCF 3 1 ; ssa.lua:39
0001 . . . UGET 0 0 ; label_counter
0002 . . . ADDVN 0 0 0 ; 1
0003 . . . USETV 0 0 ; label_counter
0004 . . . KSTR 0 0 ; "L"
0005 . . . UGET 1 0 ; label_counter
0006 . . . CAT 0 0 1
0007 . . . TDUP 1 1
0008 . . . TNEW 2 0
0009 . . . TSETS 2 1 2 ; "bindings"
0010 . . . TSETS 0 1 3 ; "label"
0011 . . . UGET 2 1 ; ssa
0012 . . . TGETS 2 2 4 ; "blocks"
0013 . . . TSETV 1 2 0
0014 . . . RET1 1 2
0016 . . UGET 6 0 ; add_block
0017 . . CALL 6 2 1
0000 . . . JFUNCF 3 1 ; ssa.lua:39
0001 . . . UGET 0 0 ; label_counter
0002 . . . ADDVN 0 0 0 ; 1
0003 . . . USETV 0 0 ; label_counter
0004 . . . KSTR 0 0 ; "L"
0005 . . . UGET 1 0 ; label_counter
0006 . . . CAT 0 0 1
0007 . . . TDUP 1 1
0008 . . . TNEW 2 0
0009 . . . TSETS 2 1 2 ; "bindings"
0010 . . . TSETS 0 1 3 ; "label"
0011 . . . UGET 2 1 ; ssa
0012 . . . TGETS 2 2 4 ; "blocks"
0013 . . . TSETV 1 2 0
0014 . . . RET1 1 2
0018 . . UGET 7 1 ; compile_bool
0019 . . TGETB 8 0 2
0020 . . MOV 9 1
0021 . . MOV 10 5
0022 . . MOV 11 6
0023 . . CALL 7 1 5
0000 . . . JFUNCF 13 2 ; ssa.lua:55
0001 . . . GGET 4 0 ; "assert"
0002 . . . GGET 5 1 ; "type"
0003 . . . MOV 6 0
0004 . . . CALL 5 2 2
0000 . . . . FUNCC ; type
0005 . . . ISEQS 5 2 ; "table"
0006 . . . JMP 5 => 0009
0009 . . . KPRI 5 2
0010 . . . CALL 4 1 2
0000 . . . . FUNCC ; assert
0011 . . . TGETB 4 0 1
0012 . . . ISNES 4 3 ; "if"
0013 . . . JMP 5 => 0037
0014 . . . UGET 5 0 ; add_block
0015 . . . CALL 5 2 1
0000 . . . . JFUNCF 3 1 ; ssa.lua:39
0001 . . . . UGET 0 0 ; label_counter
0002 . . . . ADDVN 0 0 0 ; 1
0003 . . . . USETV 0 0 ; label_counter
0004 . . . . KSTR 0 0 ; "L"
0005 . . . . UGET 1 0 ; label_counter
0006 . . . . CAT 0 0 1
0007 . . . . TDUP 1 1
0008 . . . . TNEW 2 0
0009 . . . . TSETS 2 1 2 ; "bindings"
0010 . . . . TSETS 0 1 3 ; "label"
0011 . . . . UGET 2 1 ; ssa
0012 . . . . TGETS 2 2 4 ; "blocks"
0013 . . . . TSETV 1 2 0
0014 . . . . RET1 1 2
0016 . . . UGET 6 0 ; add_block
0017 . . . CALL 6 2 1
0000 . . . . JFUNCF 3 1 ; ssa.lua:39
0001 . . . . UGET 0 0 ; label_counter
0002 . . . . ADDVN 0 0 0 ; 1
0003 . . . . USETV 0 0 ; label_counter
0004 . . . . KSTR 0 0 ; "L"
0005 . . . . UGET 1 0 ; label_counter
0006 . . . . CAT 0 0 1
0007 . . . . TDUP 1 1
0008 . . . . TNEW 2 0
0009 . . . . TSETS 2 1 2 ; "bindings"
0010 . . . . TSETS 0 1 3 ; "label"
0011 . . . . UGET 2 1 ; ssa
0012 . . . . TGETS 2 2 4 ; "blocks"
0013 . . . . TSETV 1 2 0
0014 . . . . RET1 1 2
0018 . . . UGET 7 1 ; compile_bool
0019 . . . TGETB 8 0 2
0020 . . . MOV 9 1
0021 . . . MOV 10 5
0022 . . . MOV 11 6
0023 . . . CALL 7 1 5
0000 . . . . JFUNCF 13 2 ; ssa.lua:55
---- TRACE 3 abort ssa.lua:55 -- call unroll limit reached
---- TRACE 3 start ssa.lua:55
0001 GGET 4 0 ; "assert"
0002 GGET 5 1 ; "type"
0003 MOV 6 0
0004 CALL 5 2 2
0000 . FUNCC ; type
0005 ISEQS 5 2 ; "table"
0006 JMP 5 => 0009
0009 KPRI 5 2
0010 CALL 4 1 2
0000 . FUNCC ; assert
0011 TGETB 4 0 1
0012 ISNES 4 3 ; "if"
0013 JMP 5 => 0037
0037 ISNES 4 4 ; "let"
0038 JMP 5 => 0056
0056 ISNES 4 10 ; "true"
0057 JMP 5 => 0063
0063 ISNES 4 11 ; "false"
0064 JMP 5 => 0070
0065 UGET 5 2 ; finish_goto
0066 MOV 6 1
0067 MOV 7 3
0068 CALL 5 1 3
0000 . FUNCF 4 ; ssa.lua:52
0001 . TDUP 2 1
0002 . TGETS 3 1 2 ; "label"
0003 . TSETB 3 2 2
0004 . TSETS 2 0 0 ; "control"
0005 . RET0 0 1
0069 JMP 5 => 0094
0094 RET0 0 1
---- TRACE 3 IR
.... SNAP #0 [ ---- ---- ---- ---- ---- ]
0001 rbp fun SLOAD #0 R
0002 rbx tab FLOAD 0001 func.env
0003 rsi p32 HREF 0002 "assert"
0004 > p32 EQ 0003 [0x41677458]
0005 r15 tab FLOAD 0002 tab.meta
0006 > tab NE 0005 [NULL]
0007 int FLOAD 0005 tab.hmask
0008 > int EQ 0007 +1 
0009 r15 p32 FLOAD 0005 tab.node
0010 > p32 HREFK 0009 "__index" @1
0011 r15 > tab HLOAD 0010
0012 int FLOAD 0011 tab.hmask
0013 > int EQ 0012 +63 
0014 r15 p32 FLOAD 0011 tab.node
0015 > p32 HREFK 0014 "assert" @3
0016 > fun HLOAD 0015
0017 rsi p32 HREF 0002 "type"
0018 > p32 EQ 0017 [0x41677458]
0019 > p32 HREFK 0014 "type" @60
0020 > fun HLOAD 0019
0021 rbx > tab SLOAD #1 T
0022 > fun EQ 0020 type
0023 > fun EQ 0016 assert
0024 int FLOAD 0021 tab.asize
0025 > int ABC 0024 +1 
0026 rbx p32 FLOAD 0021 tab.array
0027 p32 AREF 0026 +1 
0028 r15 > str ALOAD 0027
.... SNAP #1 [ ---- ---- ---- ---- ---- 0028 ]
0029 > str NE 0028 "if"
.... SNAP #2 [ ---- ---- ---- ---- ---- 0028 ]
0030 > str NE 0028 "let"
.... SNAP #3 [ ---- ---- ---- ---- ---- 0028 ]
0031 > str NE 0028 "true"
.... SNAP #4 [ ---- ---- ---- ---- ---- 0028 ]
0032 > str EQ 0028 "false"
.... SNAP #5 [ ---- ---- ---- ---- ---- 0028 ]
0033 > fun EQ 0001 ssa.lua:55
0034 rbp > tab SLOAD #2 T
0035 rbx > tab SLOAD #4 T
0036 rax > tab TDUP {0x403d6268}
0037 int FLOAD 0035 tab.hmask
0038 > int EQ 0037 +3 
0039 r14 p32 FLOAD 0035 tab.node
0040 > p32 HREFK 0039 "label" @3
0041 > nil HLOAD 0040
0042 tab FLOAD 0035 tab.meta
0043 > tab EQ 0042 [NULL]
0044 rbx p32 FLOAD 0036 tab.array
0045 p32 AREF 0044 +2 
0046 nil ASTORE 0045 nil
.... SNAP #6 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:52|0034 ---- 0036 ---- ]
0047 int FLOAD 0034 tab.hmask
0048 > int EQ 0047 +3 
0049 rbx p32 FLOAD 0034 tab.node
0050 > p32 HREFK 0049 "control" @1
0051 tab FLOAD 0034 tab.meta
0052 > tab EQ 0051 [NULL]
0053 tab HSTORE 0050 0036
0054 nil TBAR 0034
.... SNAP #7 [ ssa.lua:55|]
---- TRACE 3 mcode 672
0bcbf828 mov dword [0x41677410], 0x3
0bcbf833 mov edi, [0x416773d8]
0bcbf83a cmp edi, [0x416773dc]
0bcbf841 jb 0x0bcbf85a
0bcbf843 mov esi, 0x1
0bcbf848 mov edi, 0x416773b8
0bcbf84d call 0x00421730 ->lj_gc_step_jit
0bcbf852 test eax, eax
0bcbf854 jnz 0x0bcb0010 ->0
0bcbf85a mov edi, [0x416774b0]
0bcbf861 mov edx, [0x416774b4]
0bcbf868 mov ebp, [rdx-0x8]
0bcbf86b mov ebx, [rbp+0x8]
0bcbf86e mov esi, [rbx+0x1c]
0bcbf871 and esi, 0xce2b6183
0bcbf877 lea esi, [rsi+rsi*2]
0bcbf87a shl esi, 0x03
0bcbf87d add esi, [rbx+0x14]
0bcbf880 cmp dword [rsi+0xc], -0x05
0bcbf884 jnz 0x0bcbf893
0bcbf886 cmp dword [rsi+0x8], 0x41679db0
0bcbf88d jz 0x0bcb0010 ->0
0bcbf893 mov esi, [rsi+0x10]
0bcbf896 test esi, esi
0bcbf898 jnz 0x0bcbf880
0bcbf89a mov r15d, [rbx+0x10]
0bcbf89e test r15d, r15d
0bcbf8a1 jz 0x0bcb0010 ->0
0bcbf8a7 cmp dword [r15+0x1c], +0x01
0bcbf8ac jnz 0x0bcb0010 ->0
0bcbf8b2 mov r15d, [r15+0x14]
0bcbf8b6 mov rsi, 0xfffffffb416794c8
0bcbf8c0 cmp rsi, [r15+0x20]
0bcbf8c4 jnz 0x0bcb0010 ->0
0bcbf8ca cmp dword [r15+0x1c], -0x0c
0bcbf8cf jnz 0x0bcb0010 ->0
0bcbf8d5 mov r15d, [r15+0x18]
0bcbf8d9 cmp dword [r15+0x1c], +0x3f
0bcbf8de jnz 0x0bcb0010 ->0
0bcbf8e4 mov r15d, [r15+0x14]
0bcbf8e8 mov rsi, 0xfffffffb41679db0
0bcbf8f2 cmp rsi, [r15+0x50]
0bcbf8f6 jnz 0x0bcb0010 ->0
0bcbf8fc cmp dword [r15+0x4c], -0x09
0bcbf901 jnz 0x0bcb0010 ->0
0bcbf907 mov esi, [rbx+0x1c]
0bcbf90a and esi, 0x798a813c
0bcbf910 lea esi, [rsi+rsi*2]
0bcbf913 shl esi, 0x03
0bcbf916 add esi, [rbx+0x14]
0bcbf919 cmp dword [rsi+0xc], -0x05
0bcbf91d jnz 0x0bcbf92c
0bcbf91f cmp dword [rsi+0x8], 0x41679fb0
0bcbf926 jz 0x0bcb0010 ->0
0bcbf92c mov esi, [rsi+0x10]
0bcbf92f test esi, esi
0bcbf931 jnz 0x0bcbf919
0bcbf933 mov rsi, 0xfffffffb41679fb0
0bcbf93d cmp rsi, [r15+0x5a8]
0bcbf944 jnz 0x0bcb0010 ->0
0bcbf94a cmp dword [r15+0x5a4], -0x09
0bcbf952 jnz 0x0bcb0010 ->0
0bcbf958 cmp dword [rdx+0x4], -0x0c
0bcbf95c jnz 0x0bcb0010 ->0
0bcbf962 mov ebx, [rdx]
0bcbf964 cmp dword [r15+0x5a0], 0x41679f18
0bcbf96f jnz 0x0bcb0010 ->0
0bcbf975 cmp dword [r15+0x48], 0x41679d88
0bcbf97d jnz 0x0bcb0010 ->0
0bcbf983 cmp dword [rbx+0x18], +0x01
0bcbf987 jbe 0x0bcb0010 ->0
0bcbf98d mov ebx, [rbx+0x8]
0bcbf990 cmp dword [rbx+0xc], -0x05
0bcbf994 jnz 0x0bcb0010 ->0
0bcbf99a mov r15d, [rbx+0x8]
0bcbf99e cmp r15d, 0x416798f8
0bcbf9a5 jz 0x0bcb0014 ->1
0bcbf9ab cmp r15d, 0x416884a8
0bcbf9b2 jz 0x0bcb0018 ->2
0bcbf9b8 cmp r15d, 0x41679a18
0bcbf9bf jz 0x0bcb001c ->3
0bcbf9c5 cmp r15d, 0x41679870
0bcbf9cc jnz 0x0bcb0020 ->4
0bcbf9d2 cmp ebp, 0x41688880
0bcbf9d8 jnz 0x0bcb0024 ->5
0bcbf9de cmp dword [rdx+0xc], -0x0c
0bcbf9e2 jnz 0x0bcb0024 ->5
0bcbf9e8 mov ebp, [rdx+0x8]
0bcbf9eb cmp dword [rdx+0x1c], -0x0c
0bcbf9ef jnz 0x0bcb0024 ->5
0bcbf9f5 mov ebx, [rdx+0x18]
0bcbf9f8 mov esi, 0x403d6268
0bcbf9fd call 0x004223c0 ->lj_tab_dup
0bcbfa02 mov edx, [0x416774b4]
0bcbfa09 cmp dword [rbx+0x1c], +0x03
0bcbfa0d jnz 0x0bcb0024 ->5
0bcbfa13 mov r14d, [rbx+0x14]
0bcbfa17 mov rdi, 0xfffffffb403dc258
0bcbfa21 cmp rdi, [r14+0x50]
0bcbfa25 jnz 0x0bcb0024 ->5
0bcbfa2b cmp dword [r14+0x4c], -0x01
0bcbfa30 jnz 0x0bcb0024 ->5
0bcbfa36 cmp dword [rbx+0x10], +0x00
0bcbfa3a jnz 0x0bcb0024 ->5
0bcbfa40 mov ebx, [rax+0x8]
0bcbfa43 mov dword [rbx+0x14], 0xffffffff
0bcbfa4a cmp dword [rbp+0x1c], +0x03
0bcbfa4e jnz 0x0bcb0028 ->6
0bcbfa54 mov ebx, [rbp+0x14]
0bcbfa57 mov rdi, 0xfffffffb403dc9c0
0bcbfa61 cmp rdi, [rbx+0x20]
0bcbfa65 jnz 0x0bcb0028 ->6
0bcbfa6b cmp dword [rbp+0x10], +0x00
0bcbfa6f jnz 0x0bcb0028 ->6
0bcbfa75 mov dword [rbx+0x1c], 0xfffffff4
0bcbfa7c mov [rbx+0x18], eax
0bcbfa7f test byte [rbp+0x4], 0x4
0bcbfa83 jz 0x0bcbfa9a
0bcbfa85 and byte [rbp+0x4], 0xfb
0bcbfa89 mov edi, [0x416773f4]
0bcbfa90 mov [0x416773f4], ebp
0bcbfa97 mov [rbp+0xc], edi
0bcbfa9a mov eax, [0x416774b0]
0bcbfaa1 mov eax, [rax+0x20]
0bcbfaa4 sub eax, edx
0bcbfaa6 cmp eax, +0x68
0bcbfaa9 jb 0x0bcb002c ->7
0bcbfaaf mov dword [rdx-0x8], 0x41688880
0bcbfab6 xor eax, eax
0bcbfab8 mov ebx, 0x403dda20
0bcbfabd mov r14d, 0x41678008
0bcbfac3 jmp 0x00420177
---- TRACE 3 stop -> return
---- TRACE 3 exit 4
---- TRACE 3 exit 1
---- TRACE 3 exit 4
---- TRACE 3 exit 4
---- TRACE 3 exit 5
---- TRACE 3 exit 5
---- TRACE 4 start ssa.lua:52
0001 TDUP 2 1
0002 TGETS 3 1 2 ; "label"
0003 TSETB 3 2 2
0004 TSETS 2 0 0 ; "control"
0005 RET0 0 1
---- TRACE 4 IR
.... SNAP #0 [ ---- ---- ---- ]
0001 rax > tab TDUP {0x403d6268}
0002 rbp > tab SLOAD #2 T
0003 int FLOAD 0002 tab.hmask
0004 > int EQ 0003 +3 
0005 rbp p32 FLOAD 0002 tab.node
0006 > p32 HREFK 0005 "label" @3
0007 rbp > str HLOAD 0006
0008 rbx p32 FLOAD 0001 tab.array
0009 p32 AREF 0008 +2 
0010 str ASTORE 0009 0007
.... SNAP #1 [ ---- ---- ---- 0001 ---- ]
0011 rbp > tab SLOAD #1 T
0012 int FLOAD 0011 tab.hmask
0013 > int EQ 0012 +3 
0014 rbx p32 FLOAD 0011 tab.node
0015 > p32 HREFK 0014 "control" @1
0016 tab FLOAD 0011 tab.meta
0017 > tab EQ 0016 [NULL]
0018 tab HSTORE 0015 0001
0019 nil TBAR 0011
.... SNAP #2 [ ---- ]
---- TRACE 4 mcode 256
0bcbf721 mov dword [0x41677410], 0x4
0bcbf72c mov edi, [0x416773d8]
0bcbf733 cmp edi, [0x416773dc]
0bcbf73a jb 0x0bcbf753
0bcbf73c mov esi, 0x1
0bcbf741 mov edi, 0x416773b8
0bcbf746 call 0x00421730 ->lj_gc_step_jit
0bcbf74b test eax, eax
0bcbf74d jnz 0x0bcb0010 ->0
0bcbf753 mov edi, [0x416774b0]
0bcbf75a mov esi, 0x403d6268
0bcbf75f call 0x004223c0 ->lj_tab_dup
0bcbf764 mov edx, [0x416774b4]
0bcbf76b cmp dword [rdx+0xc], -0x0c
0bcbf76f jnz 0x0bcb0010 ->0
0bcbf775 mov ebp, [rdx+0x8]
0bcbf778 cmp dword [rbp+0x1c], +0x03
0bcbf77c jnz 0x0bcb0010 ->0
0bcbf782 mov ebp, [rbp+0x14]
0bcbf785 mov rdi, 0xfffffffb403dc258
0bcbf78f cmp rdi, [rbp+0x50]
0bcbf793 jnz 0x0bcb0010 ->0
0bcbf799 cmp dword [rbp+0x4c], -0x05
0bcbf79d jnz 0x0bcb0010 ->0
0bcbf7a3 mov ebp, [rbp+0x48]
0bcbf7a6 mov ebx, [rax+0x8]
0bcbf7a9 mov dword [rbx+0x14], 0xfffffffb
0bcbf7b0 mov [rbx+0x10], ebp
0bcbf7b3 cmp dword [rdx+0x4], -0x0c
0bcbf7b7 jnz 0x0bcb0014 ->1
0bcbf7bd mov ebp, [rdx]
0bcbf7bf cmp dword [rbp+0x1c], +0x03
0bcbf7c3 jnz 0x0bcb0014 ->1
0bcbf7c9 mov ebx, [rbp+0x14]
0bcbf7cc mov rdi, 0xfffffffb403dc9c0
0bcbf7d6 cmp rdi, [rbx+0x20]
0bcbf7da jnz 0x0bcb0014 ->1
0bcbf7e0 cmp dword [rbp+0x10], +0x00
0bcbf7e4 jnz 0x0bcb0014 ->1
0bcbf7ea mov dword [rbx+0x1c], 0xfffffff4
0bcbf7f1 mov [rbx+0x18], eax
0bcbf7f4 test byte [rbp+0x4], 0x4
0bcbf7f8 jz 0x0bcbf80f
0bcbf7fa and byte [rbp+0x4], 0xfb
0bcbf7fe mov edi, [0x416773f4]
0bcbf805 mov [0x416773f4], ebp
0bcbf80c mov [rbp+0xc], edi
0bcbf80f xor eax, eax
0bcbf811 mov ebx, 0x41694304
0bcbf816 mov r14d, 0x41678008
0bcbf81c jmp 0x00420177
---- TRACE 4 stop -> return
---- TRACE 3 exit 5
---- TRACE 3 exit 1
---- TRACE 3 exit 4
---- TRACE 5 start ssa.lua:49
0001 TDUP 4 1
0002 TSETB 1 4 2
0003 TGETS 5 2 2 ; "label"
0004 TSETB 5 4 3
0005 TGETS 5 3 2 ; "label"
0006 TSETB 5 4 4
0007 TSETS 4 0 0 ; "control"
0008 RET0 0 1
---- TRACE 5 IR
.... SNAP #0 [ ---- ---- ---- ---- ---- ]
0001 rax > tab TDUP {0x403d07d8}
0002 rbx > tab SLOAD #2 T
0003 rbp p32 FLOAD 0001 tab.array
0004 p32 AREF 0003 +2 
0005 tab ASTORE 0004 0002
.... SNAP #1 [ ---- ---- ---- ---- ---- 0001 ]
0006 rbx > tab SLOAD #3 T
0007 int FLOAD 0006 tab.hmask
0008 > int EQ 0007 +3 
0009 r15 p32 FLOAD 0006 tab.node
0010 > p32 HREFK 0009 "label" @3
0011 > nil HLOAD 0010
0012 tab FLOAD 0006 tab.meta
0013 > tab EQ 0012 [NULL]
0014 p32 AREF 0003 +3 
0015 nil ASTORE 0014 nil
.... SNAP #2 [ ---- ---- ---- ---- ---- 0001 ---- ]
0016 rbx > tab SLOAD #4 T
0017 int FLOAD 0016 tab.hmask
0018 > int EQ 0017 +3 
0019 r15 p32 FLOAD 0016 tab.node
0020 > p32 HREFK 0019 "label" @3
0021 > nil HLOAD 0020
0022 tab FLOAD 0016 tab.meta
0023 > tab EQ 0022 [NULL]
0024 p32 AREF 0003 +4 
0025 nil ASTORE 0024 nil
.... SNAP #3 [ ---- ---- ---- ---- ---- 0001 ---- ]
0026 rbp > tab SLOAD #1 T
0027 int FLOAD 0026 tab.hmask
0028 > int EQ 0027 +3 
0029 rbx p32 FLOAD 0026 tab.node
0030 > p32 HREFK 0029 "control" @1
0031 tab FLOAD 0026 tab.meta
0032 > tab EQ 0031 [NULL]
0033 tab HSTORE 0030 0001
0034 nil TBAR 0026
.... SNAP #4 [ ---- ]
---- TRACE 5 mcode 360
0bcbf5b2 mov dword [0x41677410], 0x5
0bcbf5bd mov edi, [0x416773d8]
0bcbf5c4 cmp edi, [0x416773dc]
0bcbf5cb jb 0x0bcbf5e4
0bcbf5cd mov esi, 0x1
0bcbf5d2 mov edi, 0x416773b8
0bcbf5d7 call 0x00421730 ->lj_gc_step_jit
0bcbf5dc test eax, eax
0bcbf5de jnz 0x0bcb0010 ->0
0bcbf5e4 mov edi, [0x416774b0]
0bcbf5eb mov esi, 0x403d07d8
0bcbf5f0 call 0x004223c0 ->lj_tab_dup
0bcbf5f5 mov edx, [0x416774b4]
0bcbf5fc cmp dword [rdx+0xc], -0x0c
0bcbf600 jnz 0x0bcb0010 ->0
0bcbf606 mov ebx, [rdx+0x8]
0bcbf609 mov ebp, [rax+0x8]
0bcbf60c mov dword [rbp+0x14], 0xfffffff4
0bcbf613 mov [rbp+0x10], ebx
0bcbf616 cmp dword [rdx+0x14], -0x0c
0bcbf61a jnz 0x0bcb0014 ->1
0bcbf620 mov ebx, [rdx+0x10]
0bcbf623 cmp dword [rbx+0x1c], +0x03
0bcbf627 jnz 0x0bcb0014 ->1
0bcbf62d mov r15d, [rbx+0x14]
0bcbf631 mov rdi, 0xfffffffb403dc258
0bcbf63b cmp rdi, [r15+0x50]
0bcbf63f jnz 0x0bcb0014 ->1
0bcbf645 cmp dword [r15+0x4c], -0x01
0bcbf64a jnz 0x0bcb0014 ->1
0bcbf650 cmp dword [rbx+0x10], +0x00
0bcbf654 jnz 0x0bcb0014 ->1
0bcbf65a mov dword [rbp+0x1c], 0xffffffff
0bcbf661 cmp dword [rdx+0x1c], -0x0c
0bcbf665 jnz 0x0bcb0018 ->2
0bcbf66b mov ebx, [rdx+0x18]
0bcbf66e cmp dword [rbx+0x1c], +0x03
0bcbf672 jnz 0x0bcb0018 ->2
0bcbf678 mov r15d, [rbx+0x14]
0bcbf67c mov rdi, 0xfffffffb403dc258
0bcbf686 cmp rdi, [r15+0x50]
0bcbf68a jnz 0x0bcb0018 ->2
0bcbf690 cmp dword [r15+0x4c], -0x01
0bcbf695 jnz 0x0bcb0018 ->2
0bcbf69b cmp dword [rbx+0x10], +0x00
0bcbf69f jnz 0x0bcb0018 ->2
0bcbf6a5 mov dword [rbp+0x24], 0xffffffff
0bcbf6ac cmp dword [rdx+0x4], -0x0c
0bcbf6b0 jnz 0x0bcb001c ->3
0bcbf6b6 mov ebp, [rdx]
0bcbf6b8 cmp dword [rbp+0x1c], +0x03
0bcbf6bc jnz 0x0bcb001c ->3
0bcbf6c2 mov ebx, [rbp+0x14]
0bcbf6c5 mov rdi, 0xfffffffb403dc9c0
0bcbf6cf cmp rdi, [rbx+0x20]
0bcbf6d3 jnz 0x0bcb001c ->3
0bcbf6d9 cmp dword [rbp+0x10], +0x00
0bcbf6dd jnz 0x0bcb001c ->3
0bcbf6e3 mov dword [rbx+0x1c], 0xfffffff4
0bcbf6ea mov [rbx+0x18], eax
0bcbf6ed test byte [rbp+0x4], 0x4
0bcbf6f1 jz 0x0bcbf708
0bcbf6f3 and byte [rbp+0x4], 0xfb
0bcbf6f7 mov edi, [0x416773f4]
0bcbf6fe mov [0x416773f4], ebp
0bcbf705 mov [rbp+0xc], edi
0bcbf708 xor eax, eax
0bcbf70a mov ebx, 0x403dd3b0
0bcbf70f mov r14d, 0x41678008
0bcbf715 jmp 0x00420177
---- TRACE 5 stop -> return
---- TRACE 3 exit 2
---- TRACE 1 start ssa.lua:39
0001 UGET 0 0 ; label_counter
0002 ADDVN 0 0 0 ; 1
0003 USETV 0 0 ; label_counter
0004 KSTR 0 0 ; "L"
0005 UGET 1 0 ; label_counter
0006 CAT 0 0 1
0007 TDUP 1 1
0008 TNEW 2 0
0009 TSETS 2 1 2 ; "bindings"
0010 TSETS 0 1 3 ; "label"
0011 UGET 2 1 ; ssa
0012 TGETS 2 2 4 ; "blocks"
0013 TSETV 1 2 0
0014 RET1 1 2
---- TRACE 1 IR
.... SNAP #0 [ ---- ]
0001 rbp fun SLOAD #0 R
0002 rbx > p32 UREFO 0001 #0
0003 xmm7 > num ULOAD 0002
0004 [10] num ADD 0003 +1 
0005 num USTORE 0002 0004
.... SNAP #1 [ ---- ---- ]
0006 str TOSTR 0004 NUM
0007 rdi p32 BUFHDR [0x41ee4414] RESET
0008 rdi p32 BUFPUT 0007 "L" 
0009 rdi p32 BUFPUT 0008 0006
0010 [c] str BUFSTR 0009 0007
0011 [8] > tab TDUP {0x41eeb660}
0012 r15 > tab TNEW #0 #0
0013 rbx p32 FLOAD 0011 tab.node
0014 p32 HREFK 0013 "bindings" @0
0015 tab HSTORE 0014 0012
0016 p32 HREFK 0013 "label" @1
0017 str HSTORE 0016 0010
.... SNAP #2 [ ---- 0010 0011 ---- ]
0018 rbp > p32 UREFO 0001 #1
0019 rbp > tab ULOAD 0018
0020 int FLOAD 0019 tab.hmask
0021 > int EQ 0020 +1 
0022 rbp p32 FLOAD 0019 tab.node
0023 > p32 HREFK 0022 "blocks" @0
0024 rbp > tab HLOAD 0023
0025 rsi p32 HREF 0024 0010
0026 > p32 EQ 0025 [0x41ee4458]
0027 tab FLOAD 0024 tab.meta
0028 > tab EQ 0027 [NULL]
0029 rbx p32 NEWREF 0024 0010
0030 tab HSTORE 0029 0011
0031 nil TBAR 0024
0032 p32 FREF 0024 tab.nomm
0033 u8  FSTORE 0032 +0 
.... SNAP #3 [ ---- ---- 0011 ]
---- TRACE 1 mcode 441
0bcbfe44 add rsp, -0x10
0bcbfe48 mov dword [0x41ee4410], 0x1
0bcbfe53 mov edi, [0x41ee43d8]
0bcbfe5a cmp edi, [0x41ee43dc]
0bcbfe61 jb 0x0bcbfe7a
0bcbfe63 mov esi, 0x3
0bcbfe68 mov edi, 0x41ee43b8
0bcbfe6d call 0x00421730 ->lj_gc_step_jit
0bcbfe72 test eax, eax
0bcbfe74 jnz 0x0bcb0010 ->0
0bcbfe7a mov edx, [0x41ee44b4]
0bcbfe81 mov ebp, [rdx-0x8]
0bcbfe84 mov edi, [rbp+0x14]
0bcbfe87 mov ebx, [rdi+0x10]
0bcbfe8a cmp dword [rbx+0x4], 0xfffeffff
0bcbfe91 jnb 0x0bcb0010 ->0
0bcbfe97 movsd xmm7, [rbx]
0bcbfe9b addsd xmm7, [0x41efadf8]
0bcbfea4 movsd [rsp+0x10], xmm7
0bcbfeaa movsd [rbx], xmm7
0bcbfeae mov edi, 0x41ee4414
0bcbfeb3 mov esi, [rdi+0x8]
0bcbfeb6 mov [rdi], esi
0bcbfeb8 mov esi, 0x4c
0bcbfebd call 0x00421b60 ->lj_buf_putchar
0bcbfec2 mov edi, eax
0bcbfec4 lea rsi, [rsp+0x10]
0bcbfec9 call 0x0040a3c0 ->lj_strfmt_putnum
0bcbfece mov edi, eax
0bcbfed0 call 0x00421ff0 ->lj_buf_tostr
0bcbfed5 mov [rsp+0xc], eax
0bcbfed9 mov edi, [0x41ee44b0]
0bcbfee0 mov esi, 0x41eeb660
0bcbfee5 call 0x004223c0 ->lj_tab_dup
0bcbfeea mov ebx, eax
0bcbfeec mov [rsp+0x8], ebx
0bcbfef0 mov edi, [0x41ee44b0]
0bcbfef7 xor esi, esi
0bcbfef9 call 0x00422350 ->lj_tab_new1
0bcbfefe mov r15d, eax
0bcbff01 mov edi, [0x41ee44b0]
0bcbff08 mov eax, [rsp+0xc]
0bcbff0c mov ebx, [rbx+0x14]
0bcbff0f mov dword [rbx+0x4], 0xfffffff4
0bcbff16 mov [rbx], r15d
0bcbff19 mov dword [rbx+0x1c], 0xfffffffb
0bcbff20 mov [rbx+0x18], eax
0bcbff23 mov esi, [rbp+0x18]
0bcbff26 mov ebp, [rsi+0x10]
0bcbff29 cmp dword [rbp+0x4], -0x0c
0bcbff2d jnz 0x0bcb0018 ->2
0bcbff33 mov ebp, [rbp+0x0]
0bcbff36 cmp dword [rbp+0x1c], +0x01
0bcbff3a jnz 0x0bcb0018 ->2
0bcbff40 mov ebp, [rbp+0x14]
0bcbff43 mov rsi, 0xfffffffb415a3200
0bcbff4d cmp rsi, [rbp+0x8]
0bcbff51 jnz 0x0bcb0018 ->2
0bcbff57 cmp dword [rbp+0x4], -0x0c
0bcbff5b jnz 0x0bcb0018 ->2
0bcbff61 mov ebp, [rbp+0x0]
0bcbff64 mov esi, [rbp+0x1c]
0bcbff67 and esi, [rax+0x8]
0bcbff6a lea esi, [rsi+rsi*2]
0bcbff6d shl esi, 0x03
0bcbff70 add esi, [rbp+0x14]
0bcbff73 cmp dword [rsi+0xc], -0x05
0bcbff77 jnz 0x0bcbff82
0bcbff79 cmp eax, [rsi+0x8]
0bcbff7c jz 0x0bcb0018 ->2
0bcbff82 mov esi, [rsi+0x10]
0bcbff85 test esi, esi
0bcbff87 jnz 0x0bcbff73
0bcbff89 cmp dword [rbp+0x10], +0x00
0bcbff8d jnz 0x0bcb0018 ->2
0bcbff93 mov edx, 0x41ee4448
0bcbff98 mov dword [rdx+0x4], 0xfffffffb
0bcbff9f mov [rdx], eax
0bcbffa1 mov esi, ebp
0bcbffa3 call 0x00422cf0 ->lj_tab_newkey
0bcbffa8 mov ebx, eax
0bcbffaa mov edx, [0x41ee44b4]
0bcbffb1 mov eax, [rsp+0x8]
0bcbffb5 mov dword [rbx+0x4], 0xfffffff4
0bcbffbc mov [rbx], eax
0bcbffbe test byte [rbp+0x4], 0x4
0bcbffc2 jz 0x0bcbffd9
0bcbffc4 and byte [rbp+0x4], 0xfb
0bcbffc8 mov edi, [0x41ee43f4]
0bcbffcf mov [0x41ee43f4], ebp
0bcbffd6 mov [rbp+0xc], edi
0bcbffd9 mov byte [rbp+0x6], 0x0
0bcbffdd mov dword [rdx+0xc], 0xfffffff4
0bcbffe4 mov [rdx+0x8], eax
0bcbffe7 xor eax, eax
0bcbffe9 mov ebx, 0x415a3ed8
0bcbffee mov r14d, 0x41ee5008
0bcbfff4 add rsp, +0x10
0bcbfff8 jmp 0x00420177
---- TRACE 1 stop -> return
---- TRACE 2 start ssa.lua:55
0001 GGET 4 0 ; "assert"
0002 GGET 5 1 ; "type"
0003 MOV 6 0
0004 CALL 5 2 2
0000 . FUNCC ; type
0005 ISEQS 5 2 ; "table"
0006 JMP 5 => 0009
0009 KPRI 5 2
0010 CALL 4 1 2
0000 . FUNCC ; assert
0011 TGETB 4 0 1
0012 ISNES 4 3 ; "if"
0013 JMP 5 => 0037
0014 UGET 5 0 ; add_block
0015 CALL 5 2 1
0000 . JFUNCF 3 1 ; ssa.lua:39
0001 . UGET 0 0 ; label_counter
0002 . ADDVN 0 0 0 ; 1
0003 . USETV 0 0 ; label_counter
0004 . KSTR 0 0 ; "L"
0005 . UGET 1 0 ; label_counter
0006 . CAT 0 0 1
0007 . TDUP 1 1
0008 . TNEW 2 0
0009 . TSETS 2 1 2 ; "bindings"
0010 . TSETS 0 1 3 ; "label"
0011 . UGET 2 1 ; ssa
0012 . TGETS 2 2 4 ; "blocks"
0013 . TSETV 1 2 0
0014 . RET1 1 2
0016 UGET 6 0 ; add_block
0017 CALL 6 2 1
0000 . JFUNCF 3 1 ; ssa.lua:39
0001 . UGET 0 0 ; label_counter
0002 . ADDVN 0 0 0 ; 1
0003 . USETV 0 0 ; label_counter
0004 . KSTR 0 0 ; "L"
0005 . UGET 1 0 ; label_counter
0006 . CAT 0 0 1
0007 . TDUP 1 1
0008 . TNEW 2 0
0009 . TSETS 2 1 2 ; "bindings"
0010 . TSETS 0 1 3 ; "label"
0011 . UGET 2 1 ; ssa
0012 . TGETS 2 2 4 ; "blocks"
0013 . TSETV 1 2 0
0014 . RET1 1 2
0018 UGET 7 1 ; compile_bool
0019 TGETB 8 0 2
0020 MOV 9 1
0021 MOV 10 5
0022 MOV 11 6
0023 CALL 7 1 5
0000 . FUNCF 13 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0070 . ISNES 4 12 ; "match"
0071 . JMP 5 => 0077
0077 . ISNES 4 14 ; "fail"
0078 . JMP 5 => 0084
0084 . GGET 5 0 ; "assert"
0085 . UGET 6 4 ; relops
0086 . TGETV 6 6 4
0087 . CALL 5 1 2
0000 . . FUNCC ; assert
0088 . UGET 5 5 ; finish_if
0089 . MOV 6 1
0090 . MOV 7 0
0091 . MOV 8 2
0092 . MOV 9 3
0093 . CALL 5 1 5
0000 . . FUNCF 6 ; ssa.lua:49
0001 . . TDUP 4 1
0002 . . TSETB 1 4 2
0003 . . TGETS 5 2 2 ; "label"
0004 . . TSETB 5 4 3
0005 . . TGETS 5 3 2 ; "label"
0006 . . TSETB 5 4 4
0007 . . TSETS 4 0 0 ; "control"
0008 . . RET0 0 1
0094 . RET0 0 1
0024 UGET 7 1 ; compile_bool
0025 TGETB 8 0 3
0026 MOV 9 5
0027 MOV 10 2
0028 MOV 11 3
0029 CALL 7 1 5
0000 . FUNCF 13 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0014 . UGET 5 0 ; add_block
0015 . CALL 5 2 1
0000 . . JFUNCF 3 1 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0016 . UGET 6 0 ; add_block
0017 . CALL 6 2 1
0000 . . JFUNCF 3 1 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0018 . UGET 7 1 ; compile_bool
0019 . TGETB 8 0 2
0020 . MOV 9 1
0021 . MOV 10 5
0022 . MOV 11 6
0023 . CALL 7 1 5
0000 . . FUNCF 13 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0070 . . ISNES 4 12 ; "match"
0071 . . JMP 5 => 0077
0077 . . ISNES 4 14 ; "fail"
0078 . . JMP 5 => 0084
0084 . . GGET 5 0 ; "assert"
0085 . . UGET 6 4 ; relops
0086 . . TGETV 6 6 4
0087 . . CALL 5 1 2
0000 . . . FUNCC ; assert
0088 . . UGET 5 5 ; finish_if
0089 . . MOV 6 1
0090 . . MOV 7 0
0091 . . MOV 8 2
0092 . . MOV 9 3
0093 . . CALL 5 1 5
0000 . . . FUNCF 6 ; ssa.lua:49
0001 . . . TDUP 4 1
0002 . . . TSETB 1 4 2
0003 . . . TGETS 5 2 2 ; "label"
0004 . . . TSETB 5 4 3
0005 . . . TGETS 5 3 2 ; "label"
0006 . . . TSETB 5 4 4
0007 . . . TSETS 4 0 0 ; "control"
0008 . . . RET0 0 1
0094 . . RET0 0 1
0024 . UGET 7 1 ; compile_bool
0025 . TGETB 8 0 3
0026 . MOV 9 5
0027 . MOV 10 2
0028 . MOV 11 3
0029 . CALL 7 1 5
0000 . . FUNCF 13 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0070 . . ISNES 4 12 ; "match"
0071 . . JMP 5 => 0077
0077 . . ISNES 4 14 ; "fail"
0078 . . JMP 5 => 0084
0084 . . GGET 5 0 ; "assert"
0085 . . UGET 6 4 ; relops
0086 . . TGETV 6 6 4
0087 . . CALL 5 1 2
0000 . . . FUNCC ; assert
0088 . . UGET 5 5 ; finish_if
0089 . . MOV 6 1
0090 . . MOV 7 0
0091 . . MOV 8 2
0092 . . MOV 9 3
0093 . . CALL 5 1 5
0000 . . . FUNCF 6 ; ssa.lua:49
0001 . . . TDUP 4 1
0002 . . . TSETB 1 4 2
0003 . . . TGETS 5 2 2 ; "label"
0004 . . . TSETB 5 4 3
0005 . . . TGETS 5 3 2 ; "label"
0006 . . . TSETB 5 4 4
0007 . . . TSETS 4 0 0 ; "control"
0008 . . . RET0 0 1
0094 . . RET0 0 1
0030 . UGET 7 1 ; compile_bool
0031 . TGETB 8 0 4
0032 . MOV 9 6
0033 . MOV 10 2
0034 . MOV 11 3
0035 . CALL 7 1 5
0000 . . FUNCF 13 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0070 . . ISNES 4 12 ; "match"
0071 . . JMP 5 => 0077
0077 . . ISNES 4 14 ; "fail"
0078 . . JMP 5 => 0084
0079 . . UGET 5 3 ; finish_return
0080 . . MOV 6 1
0081 . . TDUP 7 15
0082 . . CALL 5 1 3
0000 . . . FUNCF 3 ; ssa.lua:46
0001 . . . TDUP 2 1
0002 . . . TSETB 1 2 2
0003 . . . TSETS 2 0 0 ; "control"
0004 . . . RET0 0 1
0083 . . JMP 5 => 0094
0094 . . RET0 0 1
0036 . JMP 5 => 0094
0094 . RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . FUNCF 13 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0065 . UGET 5 2 ; finish_goto
0066 . MOV 6 1
0067 . MOV 7 3
0068 . CALL 5 1 3
0000 . . FUNCF 4 ; ssa.lua:52
0001 . . TDUP 2 1
0002 . . TGETS 3 1 2 ; "label"
0003 . . TSETB 3 2 2
0004 . . TSETS 2 0 0 ; "control"
0005 . . RET0 0 1
0069 . JMP 5 => 0094
0094 . RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
---- TRACE 2 abort ssa.lua:79 -- retry recording
---- TRACE 2 start ssa.lua:55
0001 GGET 4 0 ; "assert"
0002 GGET 5 1 ; "type"
0003 MOV 6 0
0004 CALL 5 2 2
0000 . FUNCC ; type
0005 ISEQS 5 2 ; "table"
0006 JMP 5 => 0009
0009 KPRI 5 2
0010 CALL 4 1 2
0000 . FUNCC ; assert
0011 TGETB 4 0 1
0012 ISNES 4 3 ; "if"
0013 JMP 5 => 0037
0037 ISNES 4 4 ; "let"
0038 JMP 5 => 0056
0056 ISNES 4 10 ; "true"
0057 JMP 5 => 0063
0063 ISNES 4 11 ; "false"
0064 JMP 5 => 0070
0070 ISNES 4 12 ; "match"
0071 JMP 5 => 0077
0077 ISNES 4 14 ; "fail"
0078 JMP 5 => 0084
0084 GGET 5 0 ; "assert"
0085 UGET 6 4 ; relops
0086 TGETV 6 6 4
0087 CALL 5 1 2
0000 . FUNCC ; assert
0088 UGET 5 5 ; finish_if
0089 MOV 6 1
0090 MOV 7 0
0091 MOV 8 2
0092 MOV 9 3
0093 CALL 5 1 5
0000 . FUNCF 6 ; ssa.lua:49
0001 . TDUP 4 1
0002 . TSETB 1 4 2
0003 . TGETS 5 2 2 ; "label"
0004 . TSETB 5 4 3
0005 . TGETS 5 3 2 ; "label"
0006 . TSETB 5 4 4
0007 . TSETS 4 0 0 ; "control"
0008 . RET0 0 1
0094 RET0 0 1
---- TRACE 2 IR
.... SNAP #0 [ ---- ---- ---- ---- ---- ]
0001 rbp fun SLOAD #0 R
0002 r15 tab FLOAD 0001 func.env
0003 rsi p32 HREF 0002 "assert"
0004 > p32 EQ 0003 [0x41ee4458]
0005 rbx tab FLOAD 0002 tab.meta
0006 > tab NE 0005 [NULL]
0007 int FLOAD 0005 tab.hmask
0008 > int EQ 0007 +1 
0009 rbx p32 FLOAD 0005 tab.node
0010 > p32 HREFK 0009 "__index" @1
0011 rbx > tab HLOAD 0010
0012 int FLOAD 0011 tab.hmask
0013 > int EQ 0012 +63 
0014 rbx p32 FLOAD 0011 tab.node
0015 > p32 HREFK 0014 "assert" @3
0016 > fun HLOAD 0015
0017 rsi p32 HREF 0002 "type"
0018 > p32 EQ 0017 [0x41ee4458]
0019 > p32 HREFK 0014 "type" @60
0020 > fun HLOAD 0019
0021 r13 > tab SLOAD #1 T
0022 > fun EQ 0020 type
0023 > fun EQ 0016 assert
0024 int FLOAD 0021 tab.asize
0025 > int ABC 0024 +1 
0026 rbx p32 FLOAD 0021 tab.array
0027 p32 AREF 0026 +1 
0028 rbx > str ALOAD 0027
.... SNAP #1 [ ---- ---- ---- ---- ---- 0028 ]
0029 > str NE 0028 "if"
.... SNAP #2 [ ---- ---- ---- ---- ---- 0028 ]
0030 > str NE 0028 "let"
.... SNAP #3 [ ---- ---- ---- ---- ---- 0028 ]
0031 > str NE 0028 "true"
.... SNAP #4 [ ---- ---- ---- ---- ---- 0028 ]
0032 > str NE 0028 "false"
.... SNAP #5 [ ---- ---- ---- ---- ---- 0028 ]
0033 > str NE 0028 "match"
.... SNAP #6 [ ---- ---- ---- ---- ---- 0028 ]
0034 > str NE 0028 "fail"
.... SNAP #7 [ ---- ---- ---- ---- ---- 0028 ]
0035 r15 > p32 UREFC 0001 #4
0036 r14 > tab ULOAD 0035
0037 r15 p32 HREF 0036 0028
0038 > tru HLOAD 0037
0039 > fun EQ 0001 ssa.lua:55
0040 rbp > tab SLOAD #2 T
0041 r14 > tab SLOAD #3 T
0042 r15 > tab SLOAD #4 T
0043 [8] > tab TDUP {0x41ef15a0}
0044 rax p32 FLOAD 0043 tab.array
0045 p32 AREF 0044 +2 
0046 tab ASTORE 0045 0021
.... SNAP #8 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:49|0040 ---- 0041 0042 0043 ]
0047 int FLOAD 0041 tab.hmask
0048 > int EQ 0047 +3 
0049 r13 p32 FLOAD 0041 tab.node
0050 > p32 HREFK 0049 "label" @3
0051 > nil HLOAD 0050
0052 tab FLOAD 0041 tab.meta
0053 > tab EQ 0052 [NULL]
0054 p32 AREF 0044 +3 
0055 nil ASTORE 0054 nil
.... SNAP #9 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:49|0040 ---- ---- 0042 0043 ---- ]
0056 int FLOAD 0042 tab.hmask
0057 > int EQ 0056 +3 
0058 r14 p32 FLOAD 0042 tab.node
0059 > p32 HREFK 0058 "label" @3
0060 > nil HLOAD 0059
0061 tab FLOAD 0042 tab.meta
0062 > tab EQ 0061 [NULL]
0063 p32 AREF 0044 +4 
0064 nil ASTORE 0063 nil
.... SNAP #10 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:49|0040 ---- ---- ---- 0043 ---- ]
0065 rsi p32 HREF 0040 "control"
0066 > p32 EQ 0065 [0x41ee4458]
0067 tab FLOAD 0040 tab.meta
0068 > tab EQ 0067 [NULL]
0069 rbx p32 NEWREF 0040 "control"
0070 tab HSTORE 0069 0043
0071 nil TBAR 0040
.... SNAP #11 [ ssa.lua:55|]
---- TRACE 2 mcode 922
0bcbfaa3 mov dword [0x41ee4410], 0x2
0bcbfaae mov edi, [0x41ee43d8]
0bcbfab5 cmp edi, [0x41ee43dc]
0bcbfabc jb 0x0bcbfad5
0bcbfabe mov esi, 0x1
0bcbfac3 mov edi, 0x41ee43b8
0bcbfac8 call 0x00421730 ->lj_gc_step_jit
0bcbfacd test eax, eax
0bcbfacf jnz 0x0bcb0010 ->0
0bcbfad5 mov edi, [0x41ee44b0]
0bcbfadc mov edx, [0x41ee44b4]
0bcbfae3 mov ebp, [rdx-0x8]
0bcbfae6 mov r15d, [rbp+0x8]
0bcbfaea mov esi, [r15+0x1c]
0bcbfaee and esi, 0xce2b6183
0bcbfaf4 lea esi, [rsi+rsi*2]
0bcbfaf7 shl esi, 0x03
0bcbfafa add esi, [r15+0x14]
0bcbfafe cmp dword [rsi+0xc], -0x05
0bcbfb02 jnz 0x0bcbfb11
0bcbfb04 cmp dword [rsi+0x8], 0x41ee6db0
0bcbfb0b jz 0x0bcb0010 ->0
0bcbfb11 mov esi, [rsi+0x10]
0bcbfb14 test esi, esi
0bcbfb16 jnz 0x0bcbfafe
0bcbfb18 mov ebx, [r15+0x10]
0bcbfb1c test ebx, ebx
0bcbfb1e jz 0x0bcb0010 ->0
0bcbfb24 cmp dword [rbx+0x1c], +0x01
0bcbfb28 jnz 0x0bcb0010 ->0
0bcbfb2e mov ebx, [rbx+0x14]
0bcbfb31 mov rsi, 0xfffffffb41ee64c8
0bcbfb3b cmp rsi, [rbx+0x20]
0bcbfb3f jnz 0x0bcb0010 ->0
0bcbfb45 cmp dword [rbx+0x1c], -0x0c
0bcbfb49 jnz 0x0bcb0010 ->0
0bcbfb4f mov ebx, [rbx+0x18]
0bcbfb52 cmp dword [rbx+0x1c], +0x3f
0bcbfb56 jnz 0x0bcb0010 ->0
0bcbfb5c mov ebx, [rbx+0x14]
0bcbfb5f mov rsi, 0xfffffffb41ee6db0
0bcbfb69 cmp rsi, [rbx+0x50]
0bcbfb6d jnz 0x0bcb0010 ->0
0bcbfb73 cmp dword [rbx+0x4c], -0x09
0bcbfb77 jnz 0x0bcb0010 ->0
0bcbfb7d mov esi, [r15+0x1c]
0bcbfb81 and esi, 0x798a813c
0bcbfb87 lea esi, [rsi+rsi*2]
0bcbfb8a shl esi, 0x03
0bcbfb8d add esi, [r15+0x14]
0bcbfb91 cmp dword [rsi+0xc], -0x05
0bcbfb95 jnz 0x0bcbfba4
0bcbfb97 cmp dword [rsi+0x8], 0x41ee6fb0
0bcbfb9e jz 0x0bcb0010 ->0
0bcbfba4 mov esi, [rsi+0x10]
0bcbfba7 test esi, esi
0bcbfba9 jnz 0x0bcbfb91
0bcbfbab mov rsi, 0xfffffffb41ee6fb0
0bcbfbb5 cmp rsi, [rbx+0x5a8]
0bcbfbbc jnz 0x0bcb0010 ->0
0bcbfbc2 cmp dword [rbx+0x5a4], -0x09
0bcbfbc9 jnz 0x0bcb0010 ->0
0bcbfbcf cmp dword [rdx+0x4], -0x0c
0bcbfbd3 jnz 0x0bcb0010 ->0
0bcbfbd9 mov r13d, [rdx]
0bcbfbdc cmp dword [rbx+0x5a0], 0x41ee6f18
0bcbfbe6 jnz 0x0bcb0010 ->0
0bcbfbec cmp dword [rbx+0x48], 0x41ee6d88
0bcbfbf3 jnz 0x0bcb0010 ->0
0bcbfbf9 cmp dword [r13+0x18], +0x01
0bcbfbfe jbe 0x0bcb0010 ->0
0bcbfc04 mov ebx, [r13+0x8]
0bcbfc08 cmp dword [rbx+0xc], -0x05
0bcbfc0c jnz 0x0bcb0010 ->0
0bcbfc12 mov ebx, [rbx+0x8]
0bcbfc15 cmp ebx, 0x41ee68f8
0bcbfc1b jz 0x0bcb0014 ->1
0bcbfc21 cmp ebx, 0x41ef8bd8
0bcbfc27 jz 0x0bcb0018 ->2
0bcbfc2d cmp ebx, 0x41ee6a18
0bcbfc33 jz 0x0bcb001c ->3
0bcbfc39 cmp ebx, 0x41ee6870
0bcbfc3f jz 0x0bcb0020 ->4
0bcbfc45 cmp ebx, 0x41ee9cb0
0bcbfc4b jz 0x0bcb0024 ->5
0bcbfc51 cmp ebx, 0x41f01450
0bcbfc57 jz 0x0bcb0028 ->6
0bcbfc5d mov esi, [rbp+0x24]
0bcbfc60 cmp byte [rsi+0x6], 0x1
0bcbfc64 jnz 0x0bcb002c ->7
0bcbfc6a lea r15d, [rsi+0x8]
0bcbfc6e cmp dword [r15+0x4], -0x0c
0bcbfc73 jnz 0x0bcb002c ->7
0bcbfc79 mov r14d, [r15]
0bcbfc7c mov r15d, [r14+0x1c]
0bcbfc80 and r15d, [rbx+0x8]
0bcbfc84 lea r15d, [r15+r15*2]
0bcbfc88 shl r15d, 0x03
0bcbfc8c add r15d, [r14+0x14]
0bcbfc90 cmp dword [r15+0xc], -0x05
0bcbfc95 jnz 0x0bcbfc9d
0bcbfc97 cmp ebx, [r15+0x8]
0bcbfc9b jz 0x0bcbfcac
0bcbfc9d mov r15d, [r15+0x10]
0bcbfca1 test r15d, r15d
0bcbfca4 jnz 0x0bcbfc90
0bcbfca6 mov r15d, 0x41ee4458
0bcbfcac cmp dword [r15+0x4], -0x03
0bcbfcb1 jnz 0x0bcb002c ->7
0bcbfcb7 cmp ebp, 0x41ef5620
0bcbfcbd jnz 0x0bcb002c ->7
0bcbfcc3 cmp dword [rdx+0xc], -0x0c
0bcbfcc7 jnz 0x0bcb002c ->7
0bcbfccd mov ebp, [rdx+0x8]
0bcbfcd0 cmp dword [rdx+0x14], -0x0c
0bcbfcd4 jnz 0x0bcb002c ->7
0bcbfcda mov r14d, [rdx+0x10]
0bcbfcde cmp dword [rdx+0x1c], -0x0c
0bcbfce2 jnz 0x0bcb002c ->7
0bcbfce8 mov r15d, [rdx+0x18]
0bcbfcec mov esi, 0x41ef15a0
0bcbfcf1 call 0x004223c0 ->lj_tab_dup
0bcbfcf6 mov [rsp+0x8], eax
0bcbfcfa mov edi, [0x41ee44b0]
0bcbfd01 mov eax, [rax+0x8]
0bcbfd04 mov dword [rax+0x14], 0xfffffff4
0bcbfd0b mov [rax+0x10], r13d
0bcbfd0f cmp dword [r14+0x1c], +0x03
0bcbfd14 jnz 0x0bcb0030 ->8
0bcbfd1a mov r13d, [r14+0x14]
0bcbfd1e mov rsi, 0xfffffffb415a32a0
0bcbfd28 cmp rsi, [r13+0x50]
0bcbfd2c jnz 0x0bcb0030 ->8
0bcbfd32 cmp dword [r13+0x4c], -0x01
0bcbfd37 jnz 0x0bcb0030 ->8
0bcbfd3d cmp dword [r14+0x10], +0x00
0bcbfd42 jnz 0x0bcb0030 ->8
0bcbfd48 mov dword [rax+0x1c], 0xffffffff
0bcbfd4f cmp dword [r15+0x1c], +0x03
0bcbfd54 jnz 0x0bcb0034 ->9
0bcbfd5a mov r14d, [r15+0x14]
0bcbfd5e mov rsi, 0xfffffffb415a32a0
0bcbfd68 cmp rsi, [r14+0x50]
0bcbfd6c jnz 0x0bcb0034 ->9
0bcbfd72 cmp dword [r14+0x4c], -0x01
0bcbfd77 jnz 0x0bcb0034 ->9
0bcbfd7d cmp dword [r15+0x10], +0x00
0bcbfd82 jnz 0x0bcb0034 ->9
0bcbfd88 mov dword [rax+0x24], 0xffffffff
0bcbfd8f mov esi, [rbp+0x1c]
0bcbfd92 and esi, 0x2a54dc55
0bcbfd98 lea esi, [rsi+rsi*2]
0bcbfd9b shl esi, 0x03
0bcbfd9e add esi, [rbp+0x14]
0bcbfda1 cmp dword [rsi+0xc], -0x05
0bcbfda5 jnz 0x0bcbfdb4
0bcbfda7 cmp dword [rsi+0x8], 0x415a3a08
0bcbfdae jz 0x0bcb0038 ->10
0bcbfdb4 mov esi, [rsi+0x10]
0bcbfdb7 test esi, esi
0bcbfdb9 jnz 0x0bcbfda1
0bcbfdbb cmp dword [rbp+0x10], +0x00
0bcbfdbf jnz 0x0bcb0038 ->10
0bcbfdc5 mov edx, 0x41ee4448
0bcbfdca mov dword [rdx+0x4], 0xfffffffb
0bcbfdd1 mov dword [rdx], 0x415a3a08
0bcbfdd7 mov esi, ebp
0bcbfdd9 call 0x00422cf0 ->lj_tab_newkey
0bcbfdde mov ebx, eax
0bcbfde0 mov edx, [0x41ee44b4]
0bcbfde7 mov eax, [rsp+0x8]
0bcbfdeb mov dword [rbx+0x4], 0xfffffff4
0bcbfdf2 mov [rbx], eax
0bcbfdf4 test byte [rbp+0x4], 0x4
0bcbfdf8 jz 0x0bcbfe0f
0bcbfdfa and byte [rbp+0x4], 0xfb
0bcbfdfe mov edi, [0x41ee43f4]
0bcbfe05 mov [0x41ee43f4], ebp
0bcbfe0c mov [rbp+0xc], edi
0bcbfe0f mov eax, [0x41ee44b0]
0bcbfe16 mov eax, [rax+0x20]
0bcbfe19 sub eax, edx
0bcbfe1b cmp eax, +0x68
0bcbfe1e jb 0x0bcb003c ->11
0bcbfe24 mov dword [rdx-0x8], 0x41ef5620
0bcbfe2b xor eax, eax
0bcbfe2d mov ebx, 0x415a4a68
0bcbfe32 mov r14d, 0x41ee5008
0bcbfe38 jmp 0x00420177
---- TRACE 2 stop -> return
---- TRACE 2 exit 1
---- TRACE 2 exit 10
---- TRACE 2 exit 1
---- TRACE 2 exit 10
---- TRACE 2 exit 8
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 2 exit 10
---- TRACE 2 exit 1
---- TRACE 2 exit 10
---- TRACE 2 exit 8
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 5
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 2 exit 2
---- TRACE 1 start ssa.lua:39
0001 UGET 0 0 ; label_counter
0002 ADDVN 0 0 0 ; 1
0003 USETV 0 0 ; label_counter
0004 KSTR 0 0 ; "L"
0005 UGET 1 0 ; label_counter
0006 CAT 0 0 1
0007 TDUP 1 1
0008 TNEW 2 0
0009 TSETS 2 1 2 ; "bindings"
0010 TSETS 0 1 3 ; "label"
0011 UGET 2 1 ; ssa
0012 TGETS 2 2 4 ; "blocks"
0013 TSETV 1 2 0
0014 RET1 1 2
---- TRACE 1 IR
.... SNAP #0 [ ---- ]
0001 rbp fun SLOAD #0 R
0002 rbx > p32 UREFO 0001 #0
0003 xmm7 > num ULOAD 0002
0004 [10] num ADD 0003 +1 
0005 num USTORE 0002 0004
.... SNAP #1 [ ---- ---- ]
0006 str TOSTR 0004 NUM
0007 rdi p32 BUFHDR [0x4126e414] RESET
0008 rdi p32 BUFPUT 0007 "L" 
0009 rdi p32 BUFPUT 0008 0006
0010 [c] str BUFSTR 0009 0007
0011 [8] > tab TDUP {0x41282fc8}
0012 r15 > tab TNEW #0 #0
0013 rbx p32 FLOAD 0011 tab.node
0014 p32 HREFK 0013 "bindings" @0
0015 tab HSTORE 0014 0012
0016 p32 HREFK 0013 "label" @1
0017 str HSTORE 0016 0010
.... SNAP #2 [ ---- 0010 0011 ---- ]
0018 rbp > p32 UREFO 0001 #1
0019 rbp > tab ULOAD 0018
0020 int FLOAD 0019 tab.hmask
0021 > int EQ 0020 +1 
0022 rbp p32 FLOAD 0019 tab.node
0023 > p32 HREFK 0022 "blocks" @0
0024 rbp > tab HLOAD 0023
0025 rsi p32 HREF 0024 0010
0026 > p32 EQ 0025 [0x4126e458]
0027 tab FLOAD 0024 tab.meta
0028 > tab EQ 0027 [NULL]
0029 rbx p32 NEWREF 0024 0010
0030 tab HSTORE 0029 0011
0031 nil TBAR 0024
0032 p32 FREF 0024 tab.nomm
0033 u8  FSTORE 0032 +0 
.... SNAP #3 [ ---- ---- 0011 ]
---- TRACE 1 mcode 441
0bcbfe44 add rsp, -0x10
0bcbfe48 mov dword [0x4126e410], 0x1
0bcbfe53 mov edi, [0x4126e3d8]
0bcbfe5a cmp edi, [0x4126e3dc]
0bcbfe61 jb 0x0bcbfe7a
0bcbfe63 mov esi, 0x3
0bcbfe68 mov edi, 0x4126e3b8
0bcbfe6d call 0x00421730 ->lj_gc_step_jit
0bcbfe72 test eax, eax
0bcbfe74 jnz 0x0bcb0010 ->0
0bcbfe7a mov edx, [0x4126e4b4]
0bcbfe81 mov ebp, [rdx-0x8]
0bcbfe84 mov edi, [rbp+0x14]
0bcbfe87 mov ebx, [rdi+0x10]
0bcbfe8a cmp dword [rbx+0x4], 0xfffeffff
0bcbfe91 jnb 0x0bcb0010 ->0
0bcbfe97 movsd xmm7, [rbx]
0bcbfe9b addsd xmm7, [0x414eee88]
0bcbfea4 movsd [rsp+0x10], xmm7
0bcbfeaa movsd [rbx], xmm7
0bcbfeae mov edi, 0x4126e414
0bcbfeb3 mov esi, [rdi+0x8]
0bcbfeb6 mov [rdi], esi
0bcbfeb8 mov esi, 0x4c
0bcbfebd call 0x00421b60 ->lj_buf_putchar
0bcbfec2 mov edi, eax
0bcbfec4 lea rsi, [rsp+0x10]
0bcbfec9 call 0x0040a3c0 ->lj_strfmt_putnum
0bcbfece mov edi, eax
0bcbfed0 call 0x00421ff0 ->lj_buf_tostr
0bcbfed5 mov [rsp+0xc], eax
0bcbfed9 mov edi, [0x4126e4b0]
0bcbfee0 mov esi, 0x41282fc8
0bcbfee5 call 0x004223c0 ->lj_tab_dup
0bcbfeea mov ebx, eax
0bcbfeec mov [rsp+0x8], ebx
0bcbfef0 mov edi, [0x4126e4b0]
0bcbfef7 xor esi, esi
0bcbfef9 call 0x00422350 ->lj_tab_new1
0bcbfefe mov r15d, eax
0bcbff01 mov edi, [0x4126e4b0]
0bcbff08 mov eax, [rsp+0xc]
0bcbff0c mov ebx, [rbx+0x14]
0bcbff0f mov dword [rbx+0x4], 0xfffffff4
0bcbff16 mov [rbx], r15d
0bcbff19 mov dword [rbx+0x1c], 0xfffffffb
0bcbff20 mov [rbx+0x18], eax
0bcbff23 mov esi, [rbp+0x18]
0bcbff26 mov ebp, [rsi+0x10]
0bcbff29 cmp dword [rbp+0x4], -0x0c
0bcbff2d jnz 0x0bcb0018 ->2
0bcbff33 mov ebp, [rbp+0x0]
0bcbff36 cmp dword [rbp+0x1c], +0x01
0bcbff3a jnz 0x0bcb0018 ->2
0bcbff40 mov ebp, [rbp+0x14]
0bcbff43 mov rsi, 0xfffffffb414f9428
0bcbff4d cmp rsi, [rbp+0x8]
0bcbff51 jnz 0x0bcb0018 ->2
0bcbff57 cmp dword [rbp+0x4], -0x0c
0bcbff5b jnz 0x0bcb0018 ->2
0bcbff61 mov ebp, [rbp+0x0]
0bcbff64 mov esi, [rbp+0x1c]
0bcbff67 and esi, [rax+0x8]
0bcbff6a lea esi, [rsi+rsi*2]
0bcbff6d shl esi, 0x03
0bcbff70 add esi, [rbp+0x14]
0bcbff73 cmp dword [rsi+0xc], -0x05
0bcbff77 jnz 0x0bcbff82
0bcbff79 cmp eax, [rsi+0x8]
0bcbff7c jz 0x0bcb0018 ->2
0bcbff82 mov esi, [rsi+0x10]
0bcbff85 test esi, esi
0bcbff87 jnz 0x0bcbff73
0bcbff89 cmp dword [rbp+0x10], +0x00
0bcbff8d jnz 0x0bcb0018 ->2
0bcbff93 mov edx, 0x4126e448
0bcbff98 mov dword [rdx+0x4], 0xfffffffb
0bcbff9f mov [rdx], eax
0bcbffa1 mov esi, ebp
0bcbffa3 call 0x00422cf0 ->lj_tab_newkey
0bcbffa8 mov ebx, eax
0bcbffaa mov edx, [0x4126e4b4]
0bcbffb1 mov eax, [rsp+0x8]
0bcbffb5 mov dword [rbx+0x4], 0xfffffff4
0bcbffbc mov [rbx], eax
0bcbffbe test byte [rbp+0x4], 0x4
0bcbffc2 jz 0x0bcbffd9
0bcbffc4 and byte [rbp+0x4], 0xfb
0bcbffc8 mov edi, [0x4126e3f4]
0bcbffcf mov [0x4126e3f4], ebp
0bcbffd6 mov [rbp+0xc], edi
0bcbffd9 mov byte [rbp+0x6], 0x0
0bcbffdd mov dword [rdx+0xc], 0xfffffff4
0bcbffe4 mov [rdx+0x8], eax
0bcbffe7 xor eax, eax
0bcbffe9 mov ebx, 0x414fa100
0bcbffee mov r14d, 0x4126f008
0bcbfff4 add rsp, +0x10
0bcbfff8 jmp 0x00420177
---- TRACE 1 stop -> return
---- TRACE 2 start ssa.lua:55
0001 GGET 4 0 ; "assert"
0002 GGET 5 1 ; "type"
0003 MOV 6 0
0004 CALL 5 2 2
0000 . FUNCC ; type
0005 ISEQS 5 2 ; "table"
0006 JMP 5 => 0009
0009 KPRI 5 2
0010 CALL 4 1 2
0000 . FUNCC ; assert
0011 TGETB 4 0 1
0012 ISNES 4 3 ; "if"
0013 JMP 5 => 0037
0014 UGET 5 0 ; add_block
0015 CALL 5 2 1
0000 . JFUNCF 3 1 ; ssa.lua:39
0001 . UGET 0 0 ; label_counter
0002 . ADDVN 0 0 0 ; 1
0003 . USETV 0 0 ; label_counter
0004 . KSTR 0 0 ; "L"
0005 . UGET 1 0 ; label_counter
0006 . CAT 0 0 1
0007 . TDUP 1 1
0008 . TNEW 2 0
0009 . TSETS 2 1 2 ; "bindings"
0010 . TSETS 0 1 3 ; "label"
0011 . UGET 2 1 ; ssa
0012 . TGETS 2 2 4 ; "blocks"
0013 . TSETV 1 2 0
0014 . RET1 1 2
0016 UGET 6 0 ; add_block
0017 CALL 6 2 1
0000 . JFUNCF 3 1 ; ssa.lua:39
0001 . UGET 0 0 ; label_counter
0002 . ADDVN 0 0 0 ; 1
0003 . USETV 0 0 ; label_counter
0004 . KSTR 0 0 ; "L"
0005 . UGET 1 0 ; label_counter
0006 . CAT 0 0 1
0007 . TDUP 1 1
0008 . TNEW 2 0
0009 . TSETS 2 1 2 ; "bindings"
0010 . TSETS 0 1 3 ; "label"
0011 . UGET 2 1 ; ssa
0012 . TGETS 2 2 4 ; "blocks"
0013 . TSETV 1 2 0
0014 . RET1 1 2
0018 UGET 7 1 ; compile_bool
0019 TGETB 8 0 2
0020 MOV 9 1
0021 MOV 10 5
0022 MOV 11 6
0023 CALL 7 1 5
0000 . FUNCF 13 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0070 . ISNES 4 12 ; "match"
0071 . JMP 5 => 0077
0077 . ISNES 4 14 ; "fail"
0078 . JMP 5 => 0084
0084 . GGET 5 0 ; "assert"
0085 . UGET 6 4 ; relops
0086 . TGETV 6 6 4
0087 . CALL 5 1 2
0000 . . FUNCC ; assert
0088 . UGET 5 5 ; finish_if
0089 . MOV 6 1
0090 . MOV 7 0
0091 . MOV 8 2
0092 . MOV 9 3
0093 . CALL 5 1 5
0000 . . FUNCF 6 ; ssa.lua:49
0001 . . TDUP 4 1
0002 . . TSETB 1 4 2
0003 . . TGETS 5 2 2 ; "label"
0004 . . TSETB 5 4 3
0005 . . TGETS 5 3 2 ; "label"
0006 . . TSETB 5 4 4
0007 . . TSETS 4 0 0 ; "control"
0008 . . RET0 0 1
0094 . RET0 0 1
0024 UGET 7 1 ; compile_bool
0025 TGETB 8 0 3
0026 MOV 9 5
0027 MOV 10 2
0028 MOV 11 3
0029 CALL 7 1 5
0000 . FUNCF 13 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0070 . ISNES 4 12 ; "match"
0071 . JMP 5 => 0077
0077 . ISNES 4 14 ; "fail"
0078 . JMP 5 => 0084
0084 . GGET 5 0 ; "assert"
0085 . UGET 6 4 ; relops
0086 . TGETV 6 6 4
0087 . CALL 5 1 2
0000 . . FUNCC ; assert
0088 . UGET 5 5 ; finish_if
0089 . MOV 6 1
0090 . MOV 7 0
0091 . MOV 8 2
0092 . MOV 9 3
0093 . CALL 5 1 5
0000 . . FUNCF 6 ; ssa.lua:49
0001 . . TDUP 4 1
0002 . . TSETB 1 4 2
0003 . . TGETS 5 2 2 ; "label"
0004 . . TSETB 5 4 3
0005 . . TGETS 5 3 2 ; "label"
0006 . . TSETB 5 4 4
0007 . . TSETS 4 0 0 ; "control"
0008 . . RET0 0 1
0094 . RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . FUNCF 13 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0070 . ISNES 4 12 ; "match"
0071 . JMP 5 => 0077
0077 . ISNES 4 14 ; "fail"
0078 . JMP 5 => 0084
0079 . UGET 5 3 ; finish_return
0080 . MOV 6 1
0081 . TDUP 7 15
0082 . CALL 5 1 3
0000 . . FUNCF 3 ; ssa.lua:46
0001 . . TDUP 2 1
0002 . . TSETB 1 2 2
0003 . . TSETS 2 0 0 ; "control"
0004 . . RET0 0 1
0083 . JMP 5 => 0094
0094 . RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
---- TRACE 2 abort ssa.lua:79 -- retry recording
---- TRACE 2 start ssa.lua:52
0001 TDUP 2 1
0002 TGETS 3 1 2 ; "label"
0003 TSETB 3 2 2
0004 TSETS 2 0 0 ; "control"
0005 RET0 0 1
---- TRACE 2 IR
.... SNAP #0 [ ---- ---- ---- ]
0001 [8] > tab TDUP {0x412803e8}
0002 rbp > tab SLOAD #2 T
0003 int FLOAD 0002 tab.hmask
0004 > int EQ 0003 +1 
0005 rbp p32 FLOAD 0002 tab.node
0006 > p32 HREFK 0005 "label" @1
0007 rbp > str HLOAD 0006
0008 rax p32 FLOAD 0001 tab.array
0009 p32 AREF 0008 +2 
0010 str ASTORE 0009 0007
.... SNAP #1 [ ---- ---- ---- 0001 ---- ]
0011 rbp > tab SLOAD #1 T
0012 rsi p32 HREF 0011 "control"
0013 > p32 EQ 0012 [0x4126e458]
0014 tab FLOAD 0011 tab.meta
0015 > tab EQ 0014 [NULL]
0016 rbx p32 NEWREF 0011 "control"
0017 tab HSTORE 0016 0001
0018 nil TBAR 0011
.... SNAP #2 [ ---- ]
---- TRACE 2 mcode 315
0bcbfd02 mov dword [0x4126e410], 0x2
0bcbfd0d mov edi, [0x4126e3d8]
0bcbfd14 cmp edi, [0x4126e3dc]
0bcbfd1b jb 0x0bcbfd34
0bcbfd1d mov esi, 0x1
0bcbfd22 mov edi, 0x4126e3b8
0bcbfd27 call 0x00421730 ->lj_gc_step_jit
0bcbfd2c test eax, eax
0bcbfd2e jnz 0x0bcb0010 ->0
0bcbfd34 mov edi, [0x4126e4b0]
0bcbfd3b mov esi, 0x412803e8
0bcbfd40 call 0x004223c0 ->lj_tab_dup
0bcbfd45 mov [rsp+0x8], eax
0bcbfd49 mov edi, [0x4126e4b0]
0bcbfd50 mov edx, [0x4126e4b4]
0bcbfd57 cmp dword [rdx+0xc], -0x0c
0bcbfd5b jnz 0x0bcb0010 ->0
0bcbfd61 mov ebp, [rdx+0x8]
0bcbfd64 cmp dword [rbp+0x1c], +0x01
0bcbfd68 jnz 0x0bcb0010 ->0
0bcbfd6e mov ebp, [rbp+0x14]
0bcbfd71 mov rsi, 0xfffffffb414f94c8
0bcbfd7b cmp rsi, [rbp+0x20]
0bcbfd7f jnz 0x0bcb0010 ->0
0bcbfd85 cmp dword [rbp+0x1c], -0x05
0bcbfd89 jnz 0x0bcb0010 ->0
0bcbfd8f mov ebp, [rbp+0x18]
0bcbfd92 mov eax, [rax+0x8]
0bcbfd95 mov dword [rax+0x14], 0xfffffffb
0bcbfd9c mov [rax+0x10], ebp
0bcbfd9f cmp dword [rdx+0x4], -0x0c
0bcbfda3 jnz 0x0bcb0014 ->1
0bcbfda9 mov ebp, [rdx]
0bcbfdab mov esi, [rbp+0x1c]
0bcbfdae and esi, 0x2a54dc55
0bcbfdb4 lea esi, [rsi+rsi*2]
0bcbfdb7 shl esi, 0x03
0bcbfdba add esi, [rbp+0x14]
0bcbfdbd cmp dword [rsi+0xc], -0x05
0bcbfdc1 jnz 0x0bcbfdd0
0bcbfdc3 cmp dword [rsi+0x8], 0x414f9c30
0bcbfdca jz 0x0bcb0014 ->1
0bcbfdd0 mov esi, [rsi+0x10]
0bcbfdd3 test esi, esi
0bcbfdd5 jnz 0x0bcbfdbd
0bcbfdd7 cmp dword [rbp+0x10], +0x00
0bcbfddb jnz 0x0bcb0014 ->1
0bcbfde1 mov edx, 0x4126e448
0bcbfde6 mov dword [rdx+0x4], 0xfffffffb
0bcbfded mov dword [rdx], 0x414f9c30
0bcbfdf3 mov esi, ebp
0bcbfdf5 call 0x00422cf0 ->lj_tab_newkey
0bcbfdfa mov ebx, eax
0bcbfdfc mov edx, [0x4126e4b4]
0bcbfe03 mov eax, [rsp+0x8]
0bcbfe07 mov dword [rbx+0x4], 0xfffffff4
0bcbfe0e mov [rbx], eax
0bcbfe10 test byte [rbp+0x4], 0x4
0bcbfe14 jz 0x0bcbfe2b
0bcbfe16 and byte [rbp+0x4], 0xfb
0bcbfe1a mov edi, [0x4126e3f4]
0bcbfe21 mov [0x4126e3f4], ebp
0bcbfe28 mov [rbp+0xc], edi
0bcbfe2b xor eax, eax
0bcbfe2d mov ebx, 0x4128b92c
0bcbfe32 mov r14d, 0x4126f008
0bcbfe38 jmp 0x00420177
---- TRACE 2 stop -> return
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 3 start ssa.lua:55
0001 GGET 4 0 ; "assert"
0002 GGET 5 1 ; "type"
0003 MOV 6 0
0004 CALL 5 2 2
0000 . FUNCC ; type
0005 ISEQS 5 2 ; "table"
0006 JMP 5 => 0009
0009 KPRI 5 2
0010 CALL 4 1 2
0000 . FUNCC ; assert
0011 TGETB 4 0 1
0012 ISNES 4 3 ; "if"
0013 JMP 5 => 0037
0037 ISNES 4 4 ; "let"
0038 JMP 5 => 0056
0056 ISNES 4 10 ; "true"
0057 JMP 5 => 0063
0063 ISNES 4 11 ; "false"
0064 JMP 5 => 0070
0070 ISNES 4 12 ; "match"
0071 JMP 5 => 0077
0077 ISNES 4 14 ; "fail"
0078 JMP 5 => 0084
0084 GGET 5 0 ; "assert"
0085 UGET 6 4 ; relops
0086 TGETV 6 6 4
0087 CALL 5 1 2
0000 . FUNCC ; assert
0088 UGET 5 5 ; finish_if
0089 MOV 6 1
0090 MOV 7 0
0091 MOV 8 2
0092 MOV 9 3
0093 CALL 5 1 5
0000 . FUNCF 6 ; ssa.lua:49
0001 . TDUP 4 1
0002 . TSETB 1 4 2
0003 . TGETS 5 2 2 ; "label"
0004 . TSETB 5 4 3
0005 . TGETS 5 3 2 ; "label"
0006 . TSETB 5 4 4
0007 . TSETS 4 0 0 ; "control"
0008 . RET0 0 1
0094 RET0 0 1
---- TRACE 3 IR
.... SNAP #0 [ ---- ---- ---- ---- ---- ]
0001 rbp fun SLOAD #0 R
0002 r15 tab FLOAD 0001 func.env
0003 rsi p32 HREF 0002 "assert"
0004 > p32 EQ 0003 [0x4126e458]
0005 rbx tab FLOAD 0002 tab.meta
0006 > tab NE 0005 [NULL]
0007 int FLOAD 0005 tab.hmask
0008 > int EQ 0007 +1 
0009 rbx p32 FLOAD 0005 tab.node
0010 > p32 HREFK 0009 "__index" @1
0011 rbx > tab HLOAD 0010
0012 int FLOAD 0011 tab.hmask
0013 > int EQ 0012 +63 
0014 rbx p32 FLOAD 0011 tab.node
0015 > p32 HREFK 0014 "assert" @3
0016 > fun HLOAD 0015
0017 rsi p32 HREF 0002 "type"
0018 > p32 EQ 0017 [0x4126e458]
0019 > p32 HREFK 0014 "type" @60
0020 > fun HLOAD 0019
0021 r12 > tab SLOAD #1 T
0022 > fun EQ 0020 type
0023 > fun EQ 0016 assert
0024 int FLOAD 0021 tab.asize
0025 > int ABC 0024 +1 
0026 rbx p32 FLOAD 0021 tab.array
0027 p32 AREF 0026 +1 
0028 r15 > str ALOAD 0027
.... SNAP #1 [ ---- ---- ---- ---- ---- 0028 ]
0029 > str NE 0028 "if"
.... SNAP #2 [ ---- ---- ---- ---- ---- 0028 ]
0030 > str NE 0028 "let"
.... SNAP #3 [ ---- ---- ---- ---- ---- 0028 ]
0031 > str NE 0028 "true"
.... SNAP #4 [ ---- ---- ---- ---- ---- 0028 ]
0032 > str NE 0028 "false"
.... SNAP #5 [ ---- ---- ---- ---- ---- 0028 ]
0033 > str NE 0028 "match"
.... SNAP #6 [ ---- ---- ---- ---- ---- 0028 ]
0034 > str NE 0028 "fail"
.... SNAP #7 [ ---- ---- ---- ---- ---- 0028 ]
0035 rbx > p32 UREFC 0001 #4
0036 r14 > tab ULOAD 0035
0037 rbx p32 HREF 0036 0028
0038 > tru HLOAD 0037
0039 > fun EQ 0001 ssa.lua:55
0040 rbp > tab SLOAD #2 T
0041 r13 > tab SLOAD #3 T
0042 r14 > tab SLOAD #4 T
0043 rax > tab TDUP {0x414eda00}
0044 rbx p32 FLOAD 0043 tab.array
0045 p32 AREF 0044 +2 
0046 tab ASTORE 0045 0021
.... SNAP #8 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:49|0040 ---- 0041 0042 0043 ]
0047 int FLOAD 0041 tab.hmask
0048 > int EQ 0047 +3 
0049 r12 p32 FLOAD 0041 tab.node
0050 > p32 HREFK 0049 "label" @3
0051 > nil HLOAD 0050
0052 tab FLOAD 0041 tab.meta
0053 > tab EQ 0052 [NULL]
0054 p32 AREF 0044 +3 
0055 nil ASTORE 0054 nil
.... SNAP #9 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:49|0040 ---- ---- 0042 0043 ---- ]
0056 int FLOAD 0042 tab.hmask
0057 > int EQ 0056 +3 
0058 r13 p32 FLOAD 0042 tab.node
0059 > p32 HREFK 0058 "label" @3
0060 > nil HLOAD 0059
0061 tab FLOAD 0042 tab.meta
0062 > tab EQ 0061 [NULL]
0063 p32 AREF 0044 +4 
0064 nil ASTORE 0063 nil
.... SNAP #10 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:49|0040 ---- ---- ---- 0043 ---- ]
0065 int FLOAD 0040 tab.hmask
0066 > int EQ 0065 +3 
0067 rbx p32 FLOAD 0040 tab.node
0068 > p32 HREFK 0067 "control" @1
0069 tab FLOAD 0040 tab.meta
0070 > tab EQ 0069 [NULL]
0071 tab HSTORE 0068 0043
0072 nil TBAR 0040
.... SNAP #11 [ ssa.lua:55|]
---- TRACE 3 mcode 872
0bcbf993 mov dword [0x4126e410], 0x3
0bcbf99e mov edi, [0x4126e3d8]
0bcbf9a5 cmp edi, [0x4126e3dc]
0bcbf9ac jb 0x0bcbf9c5
0bcbf9ae mov esi, 0x1
0bcbf9b3 mov edi, 0x4126e3b8
0bcbf9b8 call 0x00421730 ->lj_gc_step_jit
0bcbf9bd test eax, eax
0bcbf9bf jnz 0x0bcb0010 ->0
0bcbf9c5 mov edi, [0x4126e4b0]
0bcbf9cc mov edx, [0x4126e4b4]
0bcbf9d3 mov ebp, [rdx-0x8]
0bcbf9d6 mov r15d, [rbp+0x8]
0bcbf9da mov esi, [r15+0x1c]
0bcbf9de and esi, 0xce2b6183
0bcbf9e4 lea esi, [rsi+rsi*2]
0bcbf9e7 shl esi, 0x03
0bcbf9ea add esi, [r15+0x14]
0bcbf9ee cmp dword [rsi+0xc], -0x05
0bcbf9f2 jnz 0x0bcbfa01
0bcbf9f4 cmp dword [rsi+0x8], 0x41270db0
0bcbf9fb jz 0x0bcb0010 ->0
0bcbfa01 mov esi, [rsi+0x10]
0bcbfa04 test esi, esi
0bcbfa06 jnz 0x0bcbf9ee
0bcbfa08 mov ebx, [r15+0x10]
0bcbfa0c test ebx, ebx
0bcbfa0e jz 0x0bcb0010 ->0
0bcbfa14 cmp dword [rbx+0x1c], +0x01
0bcbfa18 jnz 0x0bcb0010 ->0
0bcbfa1e mov ebx, [rbx+0x14]
0bcbfa21 mov rsi, 0xfffffffb412704c8
0bcbfa2b cmp rsi, [rbx+0x20]
0bcbfa2f jnz 0x0bcb0010 ->0
0bcbfa35 cmp dword [rbx+0x1c], -0x0c
0bcbfa39 jnz 0x0bcb0010 ->0
0bcbfa3f mov ebx, [rbx+0x18]
0bcbfa42 cmp dword [rbx+0x1c], +0x3f
0bcbfa46 jnz 0x0bcb0010 ->0
0bcbfa4c mov ebx, [rbx+0x14]
0bcbfa4f mov rsi, 0xfffffffb41270db0
0bcbfa59 cmp rsi, [rbx+0x50]
0bcbfa5d jnz 0x0bcb0010 ->0
0bcbfa63 cmp dword [rbx+0x4c], -0x09
0bcbfa67 jnz 0x0bcb0010 ->0
0bcbfa6d mov esi, [r15+0x1c]
0bcbfa71 and esi, 0x798a813c
0bcbfa77 lea esi, [rsi+rsi*2]
0bcbfa7a shl esi, 0x03
0bcbfa7d add esi, [r15+0x14]
0bcbfa81 cmp dword [rsi+0xc], -0x05
0bcbfa85 jnz 0x0bcbfa94
0bcbfa87 cmp dword [rsi+0x8], 0x41270fb0
0bcbfa8e jz 0x0bcb0010 ->0
0bcbfa94 mov esi, [rsi+0x10]
0bcbfa97 test esi, esi
0bcbfa99 jnz 0x0bcbfa81
0bcbfa9b mov rsi, 0xfffffffb41270fb0
0bcbfaa5 cmp rsi, [rbx+0x5a8]
0bcbfaac jnz 0x0bcb0010 ->0
0bcbfab2 cmp dword [rbx+0x5a4], -0x09
0bcbfab9 jnz 0x0bcb0010 ->0
0bcbfabf cmp dword [rdx+0x4], -0x0c
0bcbfac3 jnz 0x0bcb0010 ->0
0bcbfac9 mov r12d, [rdx]
0bcbfacc cmp dword [rbx+0x5a0], 0x41270f18
0bcbfad6 jnz 0x0bcb0010 ->0
0bcbfadc cmp dword [rbx+0x48], 0x41270d88
0bcbfae3 jnz 0x0bcb0010 ->0
0bcbfae9 cmp dword [r12+0x18], +0x01
0bcbfaef jbe 0x0bcb0010 ->0
0bcbfaf5 mov ebx, [r12+0x8]
0bcbfafa cmp dword [rbx+0xc], -0x05
0bcbfafe jnz 0x0bcb0010 ->0
0bcbfb04 mov r15d, [rbx+0x8]
0bcbfb08 cmp r15d, 0x412708f8
0bcbfb0f jz 0x0bcb0014 ->1
0bcbfb15 cmp r15d, 0x41287360
0bcbfb1c jz 0x0bcb0018 ->2
0bcbfb22 cmp r15d, 0x41270a18
0bcbfb29 jz 0x0bcb001c ->3
0bcbfb2f cmp r15d, 0x41270870
0bcbfb36 jz 0x0bcb0020 ->4
0bcbfb3c cmp r15d, 0x41273cb0
0bcbfb43 jz 0x0bcb0024 ->5
0bcbfb49 cmp r15d, 0x412892e8
0bcbfb50 jz 0x0bcb0028 ->6
0bcbfb56 mov esi, [rbp+0x24]
0bcbfb59 cmp byte [rsi+0x6], 0x1
0bcbfb5d jnz 0x0bcb002c ->7
0bcbfb63 lea ebx, [rsi+0x8]
0bcbfb66 cmp dword [rbx+0x4], -0x0c
0bcbfb6a jnz 0x0bcb002c ->7
0bcbfb70 mov r14d, [rbx]
0bcbfb73 mov ebx, [r14+0x1c]
0bcbfb77 and ebx, [r15+0x8]
0bcbfb7b lea ebx, [rbx+rbx*2]
0bcbfb7e shl ebx, 0x03
0bcbfb81 add ebx, [r14+0x14]
0bcbfb85 cmp dword [rbx+0xc], -0x05
0bcbfb89 jnz 0x0bcbfb91
0bcbfb8b cmp r15d, [rbx+0x8]
0bcbfb8f jz 0x0bcbfb9d
0bcbfb91 mov ebx, [rbx+0x10]
0bcbfb94 test ebx, ebx
0bcbfb96 jnz 0x0bcbfb85
0bcbfb98 mov ebx, 0x4126e458
0bcbfb9d cmp dword [rbx+0x4], -0x03
0bcbfba1 jnz 0x0bcb002c ->7
0bcbfba7 cmp ebp, 0x4127fc88
0bcbfbad jnz 0x0bcb002c ->7
0bcbfbb3 cmp dword [rdx+0xc], -0x0c
0bcbfbb7 jnz 0x0bcb002c ->7
0bcbfbbd mov ebp, [rdx+0x8]
0bcbfbc0 cmp dword [rdx+0x14], -0x0c
0bcbfbc4 jnz 0x0bcb002c ->7
0bcbfbca mov r13d, [rdx+0x10]
0bcbfbce cmp dword [rdx+0x1c], -0x0c
0bcbfbd2 jnz 0x0bcb002c ->7
0bcbfbd8 mov r14d, [rdx+0x18]
0bcbfbdc mov esi, 0x414eda00
0bcbfbe1 call 0x004223c0 ->lj_tab_dup
0bcbfbe6 mov edx, [0x4126e4b4]
0bcbfbed mov ebx, [rax+0x8]
0bcbfbf0 mov dword [rbx+0x14], 0xfffffff4
0bcbfbf7 mov [rbx+0x10], r12d
0bcbfbfb cmp dword [r13+0x1c], +0x03
0bcbfc00 jnz 0x0bcb0030 ->8
0bcbfc06 mov r12d, [r13+0x14]
0bcbfc0a mov rdi, 0xfffffffb414f94c8
0bcbfc14 cmp rdi, [r12+0x50]
0bcbfc19 jnz 0x0bcb0030 ->8
0bcbfc1f cmp dword [r12+0x4c], -0x01
0bcbfc25 jnz 0x0bcb0030 ->8
0bcbfc2b cmp dword [r13+0x10], +0x00
0bcbfc30 jnz 0x0bcb0030 ->8
0bcbfc36 mov dword [rbx+0x1c], 0xffffffff
0bcbfc3d cmp dword [r14+0x1c], +0x03
0bcbfc42 jnz 0x0bcb0034 ->9
0bcbfc48 mov r13d, [r14+0x14]
0bcbfc4c mov rdi, 0xfffffffb414f94c8
0bcbfc56 cmp rdi, [r13+0x50]
0bcbfc5a jnz 0x0bcb0034 ->9
0bcbfc60 cmp dword [r13+0x4c], -0x01
0bcbfc65 jnz 0x0bcb0034 ->9
0bcbfc6b cmp dword [r14+0x10], +0x00
0bcbfc70 jnz 0x0bcb0034 ->9
0bcbfc76 mov dword [rbx+0x24], 0xffffffff
0bcbfc7d cmp dword [rbp+0x1c], +0x03
0bcbfc81 jnz 0x0bcb0038 ->10
0bcbfc87 mov ebx, [rbp+0x14]
0bcbfc8a mov rdi, 0xfffffffb414f9c30
0bcbfc94 cmp rdi, [rbx+0x20]
0bcbfc98 jnz 0x0bcb0038 ->10
0bcbfc9e cmp dword [rbp+0x10], +0x00
0bcbfca2 jnz 0x0bcb0038 ->10
0bcbfca8 mov dword [rbx+0x1c], 0xfffffff4
0bcbfcaf mov [rbx+0x18], eax
0bcbfcb2 test byte [rbp+0x4], 0x4
0bcbfcb6 jz 0x0bcbfccd
0bcbfcb8 and byte [rbp+0x4], 0xfb
0bcbfcbc mov edi, [0x4126e3f4]
0bcbfcc3 mov [0x4126e3f4], ebp
0bcbfcca mov [rbp+0xc], edi
0bcbfccd mov eax, [0x4126e4b0]
0bcbfcd4 mov eax, [rax+0x20]
0bcbfcd7 sub eax, edx
0bcbfcd9 cmp eax, +0x68
0bcbfcdc jb 0x0bcb003c ->11
0bcbfce2 mov dword [rdx-0x8], 0x4127fc88
0bcbfce9 xor eax, eax
0bcbfceb mov ebx, 0x414fac90
0bcbfcf0 mov r14d, 0x4126f008
0bcbfcf6 jmp 0x00420177
---- TRACE 3 stop -> return
---- TRACE 3 exit 8
---- TRACE 3 exit 4
---- TRACE 2 exit 1
---- TRACE 3 exit 4
---- TRACE 2 exit 1
---- TRACE 3 exit 4
---- TRACE 2 exit 1
---- TRACE 3 exit 4
---- TRACE 3 exit 4
---- TRACE 3 exit 5
---- TRACE 3 exit 1
---- TRACE 3 exit 1
---- TRACE 3 exit 1
---- TRACE 3 exit 10
---- TRACE 3 exit 2
---- TRACE 1 start ssa.lua:39
0001 UGET 0 0 ; label_counter
0002 ADDVN 0 0 0 ; 1
0003 USETV 0 0 ; label_counter
0004 KSTR 0 0 ; "L"
0005 UGET 1 0 ; label_counter
0006 CAT 0 0 1
0007 TDUP 1 1
0008 TNEW 2 0
0009 TSETS 2 1 2 ; "bindings"
0010 TSETS 0 1 3 ; "label"
0011 UGET 2 1 ; ssa
0012 TGETS 2 2 4 ; "blocks"
0013 TSETV 1 2 0
0014 RET1 1 2
---- TRACE 1 IR
.... SNAP #0 [ ---- ]
0001 rbp fun SLOAD #0 R
0002 rbx > p32 UREFO 0001 #0
0003 xmm7 > num ULOAD 0002
0004 [10] num ADD 0003 +1 
0005 num USTORE 0002 0004
.... SNAP #1 [ ---- ---- ]
0006 str TOSTR 0004 NUM
0007 rdi p32 BUFHDR [0x40a35414] RESET
0008 rdi p32 BUFPUT 0007 "L" 
0009 rdi p32 BUFPUT 0008 0006
0010 [c] str BUFSTR 0009 0007
0011 [8] > tab TDUP {0x41107138}
0012 r15 > tab TNEW #0 #0
0013 rbx p32 FLOAD 0011 tab.node
0014 p32 HREFK 0013 "bindings" @0
0015 tab HSTORE 0014 0012
0016 p32 HREFK 0013 "label" @1
0017 str HSTORE 0016 0010
.... SNAP #2 [ ---- 0010 0011 ---- ]
0018 rbp > p32 UREFO 0001 #1
0019 rbp > tab ULOAD 0018
0020 int FLOAD 0019 tab.hmask
0021 > int EQ 0020 +1 
0022 rbp p32 FLOAD 0019 tab.node
0023 > p32 HREFK 0022 "blocks" @0
0024 rbp > tab HLOAD 0023
0025 rsi p32 HREF 0024 0010
0026 > p32 EQ 0025 [0x40a35458]
0027 tab FLOAD 0024 tab.meta
0028 > tab EQ 0027 [NULL]
0029 rbx p32 NEWREF 0024 0010
0030 tab HSTORE 0029 0011
0031 nil TBAR 0024
0032 p32 FREF 0024 tab.nomm
0033 u8  FSTORE 0032 +0 
.... SNAP #3 [ ---- ---- 0011 ]
---- TRACE 1 mcode 441
0bcbfe44 add rsp, -0x10
0bcbfe48 mov dword [0x40a35410], 0x1
0bcbfe53 mov edi, [0x40a353d8]
0bcbfe5a cmp edi, [0x40a353dc]
0bcbfe61 jb 0x0bcbfe7a
0bcbfe63 mov esi, 0x3
0bcbfe68 mov edi, 0x40a353b8
0bcbfe6d call 0x00421730 ->lj_gc_step_jit
0bcbfe72 test eax, eax
0bcbfe74 jnz 0x0bcb0010 ->0
0bcbfe7a mov edx, [0x40a354b4]
0bcbfe81 mov ebp, [rdx-0x8]
0bcbfe84 mov edi, [rbp+0x14]
0bcbfe87 mov ebx, [rdi+0x10]
0bcbfe8a cmp dword [rbx+0x4], 0xfffeffff
0bcbfe91 jnb 0x0bcb0010 ->0
0bcbfe97 movsd xmm7, [rbx]
0bcbfe9b addsd xmm7, [0x410fa9e0]
0bcbfea4 movsd [rsp+0x10], xmm7
0bcbfeaa movsd [rbx], xmm7
0bcbfeae mov edi, 0x40a35414
0bcbfeb3 mov esi, [rdi+0x8]
0bcbfeb6 mov [rdi], esi
0bcbfeb8 mov esi, 0x4c
0bcbfebd call 0x00421b60 ->lj_buf_putchar
0bcbfec2 mov edi, eax
0bcbfec4 lea rsi, [rsp+0x10]
0bcbfec9 call 0x0040a3c0 ->lj_strfmt_putnum
0bcbfece mov edi, eax
0bcbfed0 call 0x00421ff0 ->lj_buf_tostr
0bcbfed5 mov [rsp+0xc], eax
0bcbfed9 mov edi, [0x40a354b0]
0bcbfee0 mov esi, 0x41107138
0bcbfee5 call 0x004223c0 ->lj_tab_dup
0bcbfeea mov ebx, eax
0bcbfeec mov [rsp+0x8], ebx
0bcbfef0 mov edi, [0x40a354b0]
0bcbfef7 xor esi, esi
0bcbfef9 call 0x00422350 ->lj_tab_new1
0bcbfefe mov r15d, eax
0bcbff01 mov edi, [0x40a354b0]
0bcbff08 mov eax, [rsp+0xc]
0bcbff0c mov ebx, [rbx+0x14]
0bcbff0f mov dword [rbx+0x4], 0xfffffff4
0bcbff16 mov [rbx], r15d
0bcbff19 mov dword [rbx+0x1c], 0xfffffffb
0bcbff20 mov [rbx+0x18], eax
0bcbff23 mov esi, [rbp+0x18]
0bcbff26 mov ebp, [rsi+0x10]
0bcbff29 cmp dword [rbp+0x4], -0x0c
0bcbff2d jnz 0x0bcb0018 ->2
0bcbff33 mov ebp, [rbp+0x0]
0bcbff36 cmp dword [rbp+0x1c], +0x01
0bcbff3a jnz 0x0bcb0018 ->2
0bcbff40 mov ebp, [rbp+0x14]
0bcbff43 mov rsi, 0xfffffffb411063b0
0bcbff4d cmp rsi, [rbp+0x8]
0bcbff51 jnz 0x0bcb0018 ->2
0bcbff57 cmp dword [rbp+0x4], -0x0c
0bcbff5b jnz 0x0bcb0018 ->2
0bcbff61 mov ebp, [rbp+0x0]
0bcbff64 mov esi, [rbp+0x1c]
0bcbff67 and esi, [rax+0x8]
0bcbff6a lea esi, [rsi+rsi*2]
0bcbff6d shl esi, 0x03
0bcbff70 add esi, [rbp+0x14]
0bcbff73 cmp dword [rsi+0xc], -0x05
0bcbff77 jnz 0x0bcbff82
0bcbff79 cmp eax, [rsi+0x8]
0bcbff7c jz 0x0bcb0018 ->2
0bcbff82 mov esi, [rsi+0x10]
0bcbff85 test esi, esi
0bcbff87 jnz 0x0bcbff73
0bcbff89 cmp dword [rbp+0x10], +0x00
0bcbff8d jnz 0x0bcb0018 ->2
0bcbff93 mov edx, 0x40a35448
0bcbff98 mov dword [rdx+0x4], 0xfffffffb
0bcbff9f mov [rdx], eax
0bcbffa1 mov esi, ebp
0bcbffa3 call 0x00422cf0 ->lj_tab_newkey
0bcbffa8 mov ebx, eax
0bcbffaa mov edx, [0x40a354b4]
0bcbffb1 mov eax, [rsp+0x8]
0bcbffb5 mov dword [rbx+0x4], 0xfffffff4
0bcbffbc mov [rbx], eax
0bcbffbe test byte [rbp+0x4], 0x4
0bcbffc2 jz 0x0bcbffd9
0bcbffc4 and byte [rbp+0x4], 0xfb
0bcbffc8 mov edi, [0x40a353f4]
0bcbffcf mov [0x40a353f4], ebp
0bcbffd6 mov [rbp+0xc], edi
0bcbffd9 mov byte [rbp+0x6], 0x0
0bcbffdd mov dword [rdx+0xc], 0xfffffff4
0bcbffe4 mov [rdx+0x8], eax
0bcbffe7 xor eax, eax
0bcbffe9 mov ebx, 0x41107dd8
0bcbffee mov r14d, 0x40a36008
0bcbfff4 add rsp, +0x10
0bcbfff8 jmp 0x00420177
---- TRACE 1 stop -> return
---- TRACE 2 start ssa.lua:55
0001 GGET 4 0 ; "assert"
0002 GGET 5 1 ; "type"
0003 MOV 6 0
0004 CALL 5 2 2
0000 . FUNCC ; type
0005 ISEQS 5 2 ; "table"
0006 JMP 5 => 0009
0009 KPRI 5 2
0010 CALL 4 1 2
0000 . FUNCC ; assert
0011 TGETB 4 0 1
0012 ISNES 4 3 ; "if"
0013 JMP 5 => 0037
0037 ISNES 4 4 ; "let"
0038 JMP 5 => 0056
0056 ISNES 4 10 ; "true"
0057 JMP 5 => 0063
0063 ISNES 4 11 ; "false"
0064 JMP 5 => 0070
0065 UGET 5 2 ; finish_goto
0066 MOV 6 1
0067 MOV 7 3
0068 CALL 5 1 3
0000 . FUNCF 4 ; ssa.lua:52
0001 . TDUP 2 1
0002 . TGETS 3 1 2 ; "label"
0003 . TSETB 3 2 2
0004 . TSETS 2 0 0 ; "control"
0005 . RET0 0 1
0069 JMP 5 => 0094
0094 RET0 0 1
---- TRACE 2 IR
.... SNAP #0 [ ---- ---- ---- ---- ---- ]
0001 rbp fun SLOAD #0 R
0002 rbx tab FLOAD 0001 func.env
0003 rsi p32 HREF 0002 "assert"
0004 > p32 EQ 0003 [0x40a35458]
0005 r15 tab FLOAD 0002 tab.meta
0006 > tab NE 0005 [NULL]
0007 int FLOAD 0005 tab.hmask
0008 > int EQ 0007 +1 
0009 r15 p32 FLOAD 0005 tab.node
0010 > p32 HREFK 0009 "__index" @1
0011 r15 > tab HLOAD 0010
0012 int FLOAD 0011 tab.hmask
0013 > int EQ 0012 +63 
0014 r15 p32 FLOAD 0011 tab.node
0015 > p32 HREFK 0014 "assert" @3
0016 > fun HLOAD 0015
0017 rsi p32 HREF 0002 "type"
0018 > p32 EQ 0017 [0x40a35458]
0019 > p32 HREFK 0014 "type" @60
0020 > fun HLOAD 0019
0021 rbx > tab SLOAD #1 T
0022 > fun EQ 0020 type
0023 > fun EQ 0016 assert
0024 int FLOAD 0021 tab.asize
0025 > int ABC 0024 +1 
0026 rbx p32 FLOAD 0021 tab.array
0027 p32 AREF 0026 +1 
0028 rbx > str ALOAD 0027
.... SNAP #1 [ ---- ---- ---- ---- ---- 0028 ]
0029 > str NE 0028 "if"
.... SNAP #2 [ ---- ---- ---- ---- ---- 0028 ]
0030 > str NE 0028 "let"
.... SNAP #3 [ ---- ---- ---- ---- ---- 0028 ]
0031 > str NE 0028 "true"
.... SNAP #4 [ ---- ---- ---- ---- ---- 0028 ]
0032 > str EQ 0028 "false"
.... SNAP #5 [ ---- ---- ---- ---- ---- 0028 ]
0033 > fun EQ 0001 ssa.lua:55
0034 rbp > tab SLOAD #2 T
0035 r15 > tab SLOAD #4 T
0036 [8] > tab TDUP {0x411085c8}
0037 int FLOAD 0035 tab.hmask
0038 > int EQ 0037 +1 
0039 r15 p32 FLOAD 0035 tab.node
0040 > p32 HREFK 0039 "label" @1
0041 r15 > str HLOAD 0040
0042 rax p32 FLOAD 0036 tab.array
0043 p32 AREF 0042 +2 
0044 str ASTORE 0043 0041
.... SNAP #6 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:52|0034 ---- 0036 ---- ]
0045 rsi p32 HREF 0034 "control"
0046 > p32 EQ 0045 [0x40a35458]
0047 tab FLOAD 0034 tab.meta
0048 > tab EQ 0047 [NULL]
0049 rbx p32 NEWREF 0034 "control"
0050 tab HSTORE 0049 0036
0051 nil TBAR 0034
.... SNAP #7 [ ssa.lua:55|]
---- TRACE 2 mcode 719
0bcbfb6e mov dword [0x40a35410], 0x2
0bcbfb79 mov edi, [0x40a353d8]
0bcbfb80 cmp edi, [0x40a353dc]
0bcbfb87 jb 0x0bcbfba0
0bcbfb89 mov esi, 0x1
0bcbfb8e mov edi, 0x40a353b8
0bcbfb93 call 0x00421730 ->lj_gc_step_jit
0bcbfb98 test eax, eax
0bcbfb9a jnz 0x0bcb0010 ->0
0bcbfba0 mov edi, [0x40a354b0]
0bcbfba7 mov edx, [0x40a354b4]
0bcbfbae mov ebp, [rdx-0x8]
0bcbfbb1 mov ebx, [rbp+0x8]
0bcbfbb4 mov esi, [rbx+0x1c]
0bcbfbb7 and esi, 0xce2b6183
0bcbfbbd lea esi, [rsi+rsi*2]
0bcbfbc0 shl esi, 0x03
0bcbfbc3 add esi, [rbx+0x14]
0bcbfbc6 cmp dword [rsi+0xc], -0x05
0bcbfbca jnz 0x0bcbfbd9
0bcbfbcc cmp dword [rsi+0x8], 0x40a37db0
0bcbfbd3 jz 0x0bcb0010 ->0
0bcbfbd9 mov esi, [rsi+0x10]
0bcbfbdc test esi, esi
0bcbfbde jnz 0x0bcbfbc6
0bcbfbe0 mov r15d, [rbx+0x10]
0bcbfbe4 test r15d, r15d
0bcbfbe7 jz 0x0bcb0010 ->0
0bcbfbed cmp dword [r15+0x1c], +0x01
0bcbfbf2 jnz 0x0bcb0010 ->0
0bcbfbf8 mov r15d, [r15+0x14]
0bcbfbfc mov rsi, 0xfffffffb40a374c8
0bcbfc06 cmp rsi, [r15+0x20]
0bcbfc0a jnz 0x0bcb0010 ->0
0bcbfc10 cmp dword [r15+0x1c], -0x0c
0bcbfc15 jnz 0x0bcb0010 ->0
0bcbfc1b mov r15d, [r15+0x18]
0bcbfc1f cmp dword [r15+0x1c], +0x3f
0bcbfc24 jnz 0x0bcb0010 ->0
0bcbfc2a mov r15d, [r15+0x14]
0bcbfc2e mov rsi, 0xfffffffb40a37db0
0bcbfc38 cmp rsi, [r15+0x50]
0bcbfc3c jnz 0x0bcb0010 ->0
0bcbfc42 cmp dword [r15+0x4c], -0x09
0bcbfc47 jnz 0x0bcb0010 ->0
0bcbfc4d mov esi, [rbx+0x1c]
0bcbfc50 and esi, 0x798a813c
0bcbfc56 lea esi, [rsi+rsi*2]
0bcbfc59 shl esi, 0x03
0bcbfc5c add esi, [rbx+0x14]
0bcbfc5f cmp dword [rsi+0xc], -0x05
0bcbfc63 jnz 0x0bcbfc72
0bcbfc65 cmp dword [rsi+0x8], 0x40a37fb0
0bcbfc6c jz 0x0bcb0010 ->0
0bcbfc72 mov esi, [rsi+0x10]
0bcbfc75 test esi, esi
0bcbfc77 jnz 0x0bcbfc5f
0bcbfc79 mov rsi, 0xfffffffb40a37fb0
0bcbfc83 cmp rsi, [r15+0x5a8]
0bcbfc8a jnz 0x0bcb0010 ->0
0bcbfc90 cmp dword [r15+0x5a4], -0x09
0bcbfc98 jnz 0x0bcb0010 ->0
0bcbfc9e cmp dword [rdx+0x4], -0x0c
0bcbfca2 jnz 0x0bcb0010 ->0
0bcbfca8 mov ebx, [rdx]
0bcbfcaa cmp dword [r15+0x5a0], 0x40a37f18
0bcbfcb5 jnz 0x0bcb0010 ->0
0bcbfcbb cmp dword [r15+0x48], 0x40a37d88
0bcbfcc3 jnz 0x0bcb0010 ->0
0bcbfcc9 cmp dword [rbx+0x18], +0x01
0bcbfccd jbe 0x0bcb0010 ->0
0bcbfcd3 mov ebx, [rbx+0x8]
0bcbfcd6 cmp dword [rbx+0xc], -0x05
0bcbfcda jnz 0x0bcb0010 ->0
0bcbfce0 mov ebx, [rbx+0x8]
0bcbfce3 cmp ebx, 0x40a378f8
0bcbfce9 jz 0x0bcb0014 ->1
0bcbfcef cmp ebx, 0x410f6fc8
0bcbfcf5 jz 0x0bcb0018 ->2
0bcbfcfb cmp ebx, 0x40a37a18
0bcbfd01 jz 0x0bcb001c ->3
0bcbfd07 cmp ebx, 0x40a37870
0bcbfd0d jnz 0x0bcb0020 ->4
0bcbfd13 cmp ebp, 0x40a49b78
0bcbfd19 jnz 0x0bcb0024 ->5
0bcbfd1f cmp dword [rdx+0xc], -0x0c
0bcbfd23 jnz 0x0bcb0024 ->5
0bcbfd29 mov ebp, [rdx+0x8]
0bcbfd2c cmp dword [rdx+0x1c], -0x0c
0bcbfd30 jnz 0x0bcb0024 ->5
0bcbfd36 mov r15d, [rdx+0x18]
0bcbfd3a mov esi, 0x411085c8
0bcbfd3f call 0x004223c0 ->lj_tab_dup
0bcbfd44 mov [rsp+0x8], eax
0bcbfd48 mov edi, [0x40a354b0]
0bcbfd4f cmp dword [r15+0x1c], +0x01
0bcbfd54 jnz 0x0bcb0024 ->5
0bcbfd5a mov r15d, [r15+0x14]
0bcbfd5e mov rsi, 0xfffffffb41106450
0bcbfd68 cmp rsi, [r15+0x20]
0bcbfd6c jnz 0x0bcb0024 ->5
0bcbfd72 cmp dword [r15+0x1c], -0x05
0bcbfd77 jnz 0x0bcb0024 ->5
0bcbfd7d mov r15d, [r15+0x18]
0bcbfd81 mov eax, [rax+0x8]
0bcbfd84 mov dword [rax+0x14], 0xfffffffb
0bcbfd8b mov [rax+0x10], r15d
0bcbfd8f mov esi, [rbp+0x1c]
0bcbfd92 and esi, 0x2a54dc55
0bcbfd98 lea esi, [rsi+rsi*2]
0bcbfd9b shl esi, 0x03
0bcbfd9e add esi, [rbp+0x14]
0bcbfda1 cmp dword [rsi+0xc], -0x05
0bcbfda5 jnz 0x0bcbfdb4
0bcbfda7 cmp dword [rsi+0x8], 0x41106bb8
0bcbfdae jz 0x0bcb0028 ->6
0bcbfdb4 mov esi, [rsi+0x10]
0bcbfdb7 test esi, esi
0bcbfdb9 jnz 0x0bcbfda1
0bcbfdbb cmp dword [rbp+0x10], +0x00
0bcbfdbf jnz 0x0bcb0028 ->6
0bcbfdc5 mov edx, 0x40a35448
0bcbfdca mov dword [rdx+0x4], 0xfffffffb
0bcbfdd1 mov dword [rdx], 0x41106bb8
0bcbfdd7 mov esi, ebp
0bcbfdd9 call 0x00422cf0 ->lj_tab_newkey
0bcbfdde mov ebx, eax
0bcbfde0 mov edx, [0x40a354b4]
0bcbfde7 mov eax, [rsp+0x8]
0bcbfdeb mov dword [rbx+0x4], 0xfffffff4
0bcbfdf2 mov [rbx], eax
0bcbfdf4 test byte [rbp+0x4], 0x4
0bcbfdf8 jz 0x0bcbfe0f
0bcbfdfa and byte [rbp+0x4], 0xfb
0bcbfdfe mov edi, [0x40a353f4]
0bcbfe05 mov [0x40a353f4], ebp
0bcbfe0c mov [rbp+0xc], edi
0bcbfe0f mov eax, [0x40a354b0]
0bcbfe16 mov eax, [rax+0x20]
0bcbfe19 sub eax, edx
0bcbfe1b cmp eax, +0x68
0bcbfe1e jb 0x0bcb002c ->7
0bcbfe24 mov dword [rdx-0x8], 0x40a49b78
0bcbfe2b xor eax, eax
0bcbfe2d mov ebx, 0x41107c18
0bcbfe32 mov r14d, 0x40a36008
0bcbfe38 jmp 0x00420177
---- TRACE 2 stop -> return
---- TRACE 2 exit 1
---- TRACE 2 exit 4
---- TRACE 2 exit 1
---- TRACE 2 exit 4
---- TRACE 2 exit 1
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 2 exit 4
---- TRACE 2 exit 2
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 2 exit 4
---- TRACE 2 exit 3
---- TRACE 2 exit 1
---- TRACE 3 start 2/1 ssa.lua:59
0014 UGET 5 0 ; add_block
0015 CALL 5 2 1
0000 . JFUNCF 3 1 ; ssa.lua:39
0001 . UGET 0 0 ; label_counter
0002 . ADDVN 0 0 0 ; 1
0003 . USETV 0 0 ; label_counter
0004 . KSTR 0 0 ; "L"
0005 . UGET 1 0 ; label_counter
0006 . CAT 0 0 1
0007 . TDUP 1 1
0008 . TNEW 2 0
0009 . TSETS 2 1 2 ; "bindings"
0010 . TSETS 0 1 3 ; "label"
0011 . UGET 2 1 ; ssa
0012 . TGETS 2 2 4 ; "blocks"
0013 . TSETV 1 2 0
0014 . RET1 1 2
0016 UGET 6 0 ; add_block
0017 CALL 6 2 1
0000 . JFUNCF 3 1 ; ssa.lua:39
0001 . UGET 0 0 ; label_counter
0002 . ADDVN 0 0 0 ; 1
0003 . USETV 0 0 ; label_counter
0004 . KSTR 0 0 ; "L"
0005 . UGET 1 0 ; label_counter
0006 . CAT 0 0 1
0007 . TDUP 1 1
0008 . TNEW 2 0
0009 . TSETS 2 1 2 ; "bindings"
0010 . TSETS 0 1 3 ; "label"
0011 . UGET 2 1 ; ssa
0012 . TGETS 2 2 4 ; "blocks"
0013 . TSETV 1 2 0
0014 . RET1 1 2
0018 UGET 7 1 ; compile_bool
0019 TGETB 8 0 2
0020 MOV 9 1
0021 MOV 10 5
0022 MOV 11 6
0023 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0070 . ISNES 4 12 ; "match"
0071 . JMP 5 => 0077
0077 . ISNES 4 14 ; "fail"
0078 . JMP 5 => 0084
0084 . GGET 5 0 ; "assert"
0085 . UGET 6 4 ; relops
0086 . TGETV 6 6 4
0087 . CALL 5 1 2
0000 . . FUNCC ; assert
0088 . UGET 5 5 ; finish_if
0089 . MOV 6 1
0090 . MOV 7 0
0091 . MOV 8 2
0092 . MOV 9 3
0093 . CALL 5 1 5
0000 . . FUNCF 6 ; ssa.lua:49
0001 . . TDUP 4 1
0002 . . TSETB 1 4 2
0003 . . TGETS 5 2 2 ; "label"
0004 . . TSETB 5 4 3
0005 . . TGETS 5 3 2 ; "label"
0006 . . TSETB 5 4 4
0007 . . TSETS 4 0 0 ; "control"
0008 . . RET0 0 1
0094 . RET0 0 1
0024 UGET 7 1 ; compile_bool
0025 TGETB 8 0 3
0026 MOV 9 5
0027 MOV 10 2
0028 MOV 11 3
0029 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0014 . UGET 5 0 ; add_block
0015 . CALL 5 2 1
0000 . . JFUNCF 3 1 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0016 . UGET 6 0 ; add_block
0017 . CALL 6 2 1
0000 . . JFUNCF 3 1 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0018 . UGET 7 1 ; compile_bool
0019 . TGETB 8 0 2
0020 . MOV 9 1
0021 . MOV 10 5
0022 . MOV 11 6
0023 . CALL 7 1 5
0000 . . JFUNCF 13 2 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0070 . . ISNES 4 12 ; "match"
0071 . . JMP 5 => 0077
0077 . . ISNES 4 14 ; "fail"
0078 . . JMP 5 => 0084
0084 . . GGET 5 0 ; "assert"
0085 . . UGET 6 4 ; relops
0086 . . TGETV 6 6 4
0087 . . CALL 5 1 2
0000 . . . FUNCC ; assert
0088 . . UGET 5 5 ; finish_if
0089 . . MOV 6 1
0090 . . MOV 7 0
0091 . . MOV 8 2
0092 . . MOV 9 3
0093 . . CALL 5 1 5
0000 . . . FUNCF 6 ; ssa.lua:49
0001 . . . TDUP 4 1
0002 . . . TSETB 1 4 2
0003 . . . TGETS 5 2 2 ; "label"
0004 . . . TSETB 5 4 3
0005 . . . TGETS 5 3 2 ; "label"
0006 . . . TSETB 5 4 4
0007 . . . TSETS 4 0 0 ; "control"
0008 . . . RET0 0 1
0094 . . RET0 0 1
0024 . UGET 7 1 ; compile_bool
0025 . TGETB 8 0 3
0026 . MOV 9 5
0027 . MOV 10 2
0028 . MOV 11 3
0029 . CALL 7 1 5
0000 . . JFUNCF 13 2 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0070 . . ISNES 4 12 ; "match"
0071 . . JMP 5 => 0077
0077 . . ISNES 4 14 ; "fail"
0078 . . JMP 5 => 0084
0084 . . GGET 5 0 ; "assert"
0085 . . UGET 6 4 ; relops
0086 . . TGETV 6 6 4
0087 . . CALL 5 1 2
0000 . . . FUNCC ; assert
0088 . . UGET 5 5 ; finish_if
0089 . . MOV 6 1
0090 . . MOV 7 0
0091 . . MOV 8 2
0092 . . MOV 9 3
0093 . . CALL 5 1 5
0000 . . . FUNCF 6 ; ssa.lua:49
0001 . . . TDUP 4 1
0002 . . . TSETB 1 4 2
0003 . . . TGETS 5 2 2 ; "label"
0004 . . . TSETB 5 4 3
0005 . . . TGETS 5 3 2 ; "label"
0006 . . . TSETB 5 4 4
0007 . . . TSETS 4 0 0 ; "control"
0008 . . . RET0 0 1
0094 . . RET0 0 1
0030 . UGET 7 1 ; compile_bool
0031 . TGETB 8 0 4
0032 . MOV 9 6
0033 . MOV 10 2
0034 . MOV 11 3
0035 . CALL 7 1 5
0000 . . JFUNCF 13 2 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0070 . . ISNES 4 12 ; "match"
0071 . . JMP 5 => 0077
0077 . . ISNES 4 14 ; "fail"
0078 . . JMP 5 => 0084
0079 . . UGET 5 3 ; finish_return
0080 . . MOV 6 1
0081 . . TDUP 7 15
0082 . . CALL 5 1 3
0000 . . . FUNCF 3 ; ssa.lua:46
0001 . . . TDUP 2 1
0002 . . . TSETB 1 2 2
0003 . . . TSETS 2 0 0 ; "control"
0004 . . . RET0 0 1
0083 . . JMP 5 => 0094
0094 . . RET0 0 1
0036 . JMP 5 => 0094
0094 . RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0065 . UGET 5 2 ; finish_goto
0066 . MOV 6 1
0067 . MOV 7 3
0068 . CALL 5 1 3
0000 . . FUNCF 4 ; ssa.lua:52
0001 . . TDUP 2 1
0002 . . TGETS 3 1 2 ; "label"
0003 . . TSETB 3 2 2
0004 . . TSETS 2 0 0 ; "control"
0005 . . RET0 0 1
0069 . JMP 5 => 0094
0094 . RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
---- TRACE 3 abort ssa.lua:79 -- down-recursion, restarting
---- TRACE 3 start ssa.lua:79
0094 RET0 0 1
0024 UGET 7 1 ; compile_bool
0025 TGETB 8 0 3
0026 MOV 9 5
0027 MOV 10 2
0028 MOV 11 3
0029 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0070 . ISNES 4 12 ; "match"
0071 . JMP 5 => 0077
0077 . ISNES 4 14 ; "fail"
0078 . JMP 5 => 0084
0084 . GGET 5 0 ; "assert"
0085 . UGET 6 4 ; relops
0086 . TGETV 6 6 4
0087 . CALL 5 1 2
0000 . . FUNCC ; assert
0088 . UGET 5 5 ; finish_if
0089 . MOV 6 1
0090 . MOV 7 0
0091 . MOV 8 2
0092 . MOV 9 3
0093 . CALL 5 1 5
0000 . . FUNCF 6 ; ssa.lua:49
0001 . . TDUP 4 1
0002 . . TSETB 1 4 2
0003 . . TGETS 5 2 2 ; "label"
0004 . . TSETB 5 4 3
0005 . . TGETS 5 3 2 ; "label"
0006 . . TSETB 5 4 4
0007 . . TSETS 4 0 0 ; "control"
0008 . . RET0 0 1
0094 . RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0065 . UGET 5 2 ; finish_goto
0066 . MOV 6 1
0067 . MOV 7 3
0068 . CALL 5 1 3
0000 . . FUNCF 4 ; ssa.lua:52
0001 . . TDUP 2 1
0002 . . TGETS 3 1 2 ; "label"
0003 . . TSETB 3 2 2
0004 . . TSETS 2 0 0 ; "control"
0005 . . RET0 0 1
0069 . JMP 5 => 0094
0094 . RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
0024 UGET 7 1 ; compile_bool
0025 TGETB 8 0 3
0026 MOV 9 5
0027 MOV 10 2
0028 MOV 11 3
0029 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0014 . UGET 5 0 ; add_block
0015 . CALL 5 2 1
0000 . . JFUNCF 3 1 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0016 . UGET 6 0 ; add_block
0017 . CALL 6 2 1
0000 . . JFUNCF 3 1 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0018 . UGET 7 1 ; compile_bool
0019 . TGETB 8 0 2
0020 . MOV 9 1
0021 . MOV 10 5
0022 . MOV 11 6
0023 . CALL 7 1 5
0000 . . JFUNCF 13 2 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0070 . . ISNES 4 12 ; "match"
0071 . . JMP 5 => 0077
0077 . . ISNES 4 14 ; "fail"
0078 . . JMP 5 => 0084
0084 . . GGET 5 0 ; "assert"
0085 . . UGET 6 4 ; relops
0086 . . TGETV 6 6 4
0087 . . CALL 5 1 2
0000 . . . FUNCC ; assert
0088 . . UGET 5 5 ; finish_if
0089 . . MOV 6 1
0090 . . MOV 7 0
0091 . . MOV 8 2
0092 . . MOV 9 3
0093 . . CALL 5 1 5
0000 . . . FUNCF 6 ; ssa.lua:49
0001 . . . TDUP 4 1
0002 . . . TSETB 1 4 2
0003 . . . TGETS 5 2 2 ; "label"
0004 . . . TSETB 5 4 3
0005 . . . TGETS 5 3 2 ; "label"
0006 . . . TSETB 5 4 4
0007 . . . TSETS 4 0 0 ; "control"
0008 . . . RET0 0 1
0094 . . RET0 0 1
0024 . UGET 7 1 ; compile_bool
0025 . TGETB 8 0 3
0026 . MOV 9 5
0027 . MOV 10 2
0028 . MOV 11 3
0029 . CALL 7 1 5
0000 . . JFUNCF 13 2 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0070 . . ISNES 4 12 ; "match"
0071 . . JMP 5 => 0077
0077 . . ISNES 4 14 ; "fail"
0078 . . JMP 5 => 0084
0084 . . GGET 5 0 ; "assert"
0085 . . UGET 6 4 ; relops
0086 . . TGETV 6 6 4
0087 . . CALL 5 1 2
0000 . . . FUNCC ; assert
0088 . . UGET 5 5 ; finish_if
0089 . . MOV 6 1
0090 . . MOV 7 0
0091 . . MOV 8 2
0092 . . MOV 9 3
0093 . . CALL 5 1 5
0000 . . . FUNCF 6 ; ssa.lua:49
0001 . . . TDUP 4 1
0002 . . . TSETB 1 4 2
0003 . . . TGETS 5 2 2 ; "label"
0004 . . . TSETB 5 4 3
0005 . . . TGETS 5 3 2 ; "label"
0006 . . . TSETB 5 4 4
0007 . . . TSETS 4 0 0 ; "control"
0008 . . . RET0 0 1
0094 . . RET0 0 1
0030 . UGET 7 1 ; compile_bool
0031 . TGETB 8 0 4
0032 . MOV 9 6
0033 . MOV 10 2
0034 . MOV 11 3
0035 . CALL 7 1 5
0000 . . JFUNCF 13 2 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0065 . . UGET 5 2 ; finish_goto
0066 . . MOV 6 1
0067 . . MOV 7 3
0068 . . CALL 5 1 3
0000 . . . FUNCF 4 ; ssa.lua:52
0001 . . . TDUP 2 1
0002 . . . TGETS 3 1 2 ; "label"
0003 . . . TSETB 3 2 2
0004 . . . TSETS 2 0 0 ; "control"
0005 . . . RET0 0 1
0069 . . JMP 5 => 0094
0094 . . RET0 0 1
0036 . JMP 5 => 0094
0094 . RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0065 . UGET 5 2 ; finish_goto
0066 . MOV 6 1
0067 . MOV 7 3
0068 . CALL 5 1 3
0000 . . FUNCF 4 ; ssa.lua:52
0001 . . TDUP 2 1
0002 . . TGETS 3 1 2 ; "label"
0003 . . TSETB 3 2 2
0004 . . TSETS 2 0 0 ; "control"
0005 . . RET0 0 1
0069 . JMP 5 => 0094
0094 . RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
0055 JMP 5 => 0094
0094 RET0 0 1
---- TRACE 3 IR
.... SNAP #0 [ ---- ]
.... SNAP #1 [ ---- ]
0002 > p32 RETF proto: 0x41107a60 [0x41107b00]
.... SNAP #2 [ ---- ---- ---- ---- ---- ---- ---- ---- ]
0003 fun SLOAD #0 R
0004 > fun EQ 0003 ssa.lua:55
0005 rbx > tab SLOAD #1 T
0006 int FLOAD 0005 tab.asize
0007 > int ABC 0006 +3 
0008 r15 p32 FLOAD 0005 tab.array
0009 p32 AREF 0008 +3 
0010 [7c] > tab ALOAD 0009
0011 [78] > tab SLOAD #6 T
0012 r14 > tab SLOAD #3 T
0013 r13 > tab SLOAD #4 T
0014 [48] tab FLOAD ssa.lua:55 func.env
0015 rsi p32 HREF 0014 "assert"
0016 > p32 EQ 0015 [0x40a35458]
0017 [3c] tab FLOAD 0014 tab.meta
0018 > tab NE 0017 [NULL]
0019 int FLOAD 0017 tab.hmask
0020 > int EQ 0019 +1 
0021 rsi p32 FLOAD 0017 tab.node
0022 > p32 HREFK 0021 "__index" @1
0023 rsi > tab HLOAD 0022
0024 int FLOAD 0023 tab.hmask
0025 > int EQ 0024 +63 
0026 rsi p32 FLOAD 0023 tab.node
0027 > p32 HREFK 0026 "assert" @3
0028 > fun HLOAD 0027
0029 rdx p32 HREF 0014 "type"
0030 > p32 EQ 0029 [0x40a35458]
0031 > p32 HREFK 0026 "type" @60
0032 > fun HLOAD 0031
0033 > fun EQ 0032 type
0034 > fun EQ 0028 assert
0035 int FLOAD 0010 tab.asize
0036 > int ABC 0035 +1 
0037 rsi p32 FLOAD 0010 tab.array
0038 p32 AREF 0037 +1 
0039 [74] > str ALOAD 0038
.... SNAP #3 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0040 > str NE 0039 "if"
.... SNAP #4 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0041 > str NE 0039 "let"
.... SNAP #5 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0042 > str NE 0039 "true"
.... SNAP #6 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0043 > str NE 0039 "false"
.... SNAP #7 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0044 > str NE 0039 "match"
.... SNAP #8 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0045 > str NE 0039 "fail"
.... SNAP #9 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0046 > p32 UREFC ssa.lua:55 #4
0047 [40] > tab ULOAD 0046
0048 rsi p32 HREF 0047 0039
0049 > tru HLOAD 0048
0050 [70] > tab TDUP {0x411082e8}
0051 rax p32 FLOAD 0050 tab.array
0052 p32 AREF 0051 +2 
0053 tab ASTORE 0052 0010
.... SNAP #10 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ssa.lua:49|0011 ---- 0012 0013 0050 ]
0054 int FLOAD 0012 tab.hmask
0055 > int EQ 0054 +1 
0056 r15 p32 FLOAD 0012 tab.node
0057 > p32 HREFK 0056 "label" @1
0058 r15 > str HLOAD 0057
0059 p32 AREF 0051 +3 
0060 str ASTORE 0059 0058
.... SNAP #11 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ssa.lua:49|0011 ---- ---- 0013 0050 ---- ]
0061 int FLOAD 0013 tab.hmask
0062 > int EQ 0061 +1 
0063 r15 p32 FLOAD 0013 tab.node
0064 > p32 HREFK 0063 "label" @1
0065 r15 > str HLOAD 0064
0066 p32 AREF 0051 +4 
0067 str ASTORE 0066 0065
.... SNAP #12 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ssa.lua:49|0011 ---- ---- ---- 0050 ---- ]
0068 rdx p32 HREF 0011 "control"
0069 > p32 EQ 0068 [0x40a35458]
0070 tab FLOAD 0011 tab.meta
0071 > tab EQ 0070 [NULL]
0072 r15 p32 NEWREF 0011 "control"
0073 tab HSTORE 0072 0050
0074 nil TBAR 0011
.... SNAP #13 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ssa.lua:49|---- ---- ---- ---- ---- ---- ]
0075 int FLOAD 0005 tab.asize
0076 > int ABC 0075 +4 
0077 rbx p32 FLOAD 0005 tab.array
0078 p32 AREF 0077 +4 
0079 r15 > tab ALOAD 0078
0080 rbx > tab SLOAD #7 T
0081 rax p32 HREF 0014 "assert"
0082 > p32 EQ 0081 [0x40a35458]
0083 int FLOAD 0017 tab.hmask
0084 > int EQ 0083 +1 
0085 r12 p32 FLOAD 0017 tab.node
0086 > p32 HREFK 0085 "__index" @1
0087 r12 > tab HLOAD 0086
0088 int FLOAD 0087 tab.hmask
0089 > int EQ 0088 +63 
0090 r12 p32 FLOAD 0087 tab.node
0091 > p32 HREFK 0090 "assert" @3
0092 > fun HLOAD 0091
0093 rax p32 HREF 0014 "type"
0094 > p32 EQ 0093 [0x40a35458]
0095 > p32 HREFK 0090 "type" @60
0096 > fun HLOAD 0095
0097 > fun EQ 0096 type
0098 > fun EQ 0092 assert
0099 int FLOAD 0079 tab.asize
0100 > int ABC 0099 +1 
0101 r12 p32 FLOAD 0079 tab.array
0102 p32 AREF 0101 +1 
0103 r12 > str ALOAD 0102
.... SNAP #14 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0079 0080 0012 0013 0103 ]
0104 > str NE 0103 "if"
.... SNAP #15 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0079 0080 0012 0013 0103 ]
0105 > str NE 0103 "let"
.... SNAP #16 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0079 0080 0012 0013 0103 ]
0106 > str NE 0103 "true"
.... SNAP #17 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0079 0080 0012 0013 0103 ]
0107 > str EQ 0103 "false"
.... SNAP #18 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0079 0080 0012 0013 0103 ]
0108 [6c] > tab TDUP {0x411085c8}
0109 int FLOAD 0013 tab.hmask
0110 > int EQ 0109 +1 
0111 rsi p32 FLOAD 0013 tab.node
0112 > p32 HREFK 0111 "label" @1
0113 rsi > str HLOAD 0112
0114 rax p32 FLOAD 0108 tab.array
0115 p32 AREF 0114 +2 
0116 str ASTORE 0115 0113
.... SNAP #19 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0079 0080 0012 0013 0103 ssa.lua:52|0080 ---- 0108 ---- ]
0117 rsi p32 HREF 0080 "control"
0118 > p32 EQ 0117 [0x40a35458]
0119 tab FLOAD 0080 tab.meta
0120 > tab EQ 0119 [NULL]
0121 r15 p32 NEWREF 0080 "control"
0122 tab HSTORE 0121 0108
0123 nil TBAR 0080
.... SNAP #20 [ ssa.lua:55|---- ---- ---- ---- ---- ]
0124 > p32 RETF proto: 0x41107a60 [0x41107b00]
.... SNAP #21 [ ---- ---- ---- ---- ---- ---- ---- ---- ]
0125 fun SLOAD #0 R
0126 > fun EQ 0125 ssa.lua:55
0127 rbx > tab SLOAD #1 T
0128 int FLOAD 0127 tab.asize
0129 > int ABC 0128 +3 
0130 r15 p32 FLOAD 0127 tab.array
0131 p32 AREF 0130 +3 
0132 [18] > tab ALOAD 0131
0133 [14] > tab SLOAD #6 T
0134 r15 > tab SLOAD #3 T
0135 r14 > tab SLOAD #4 T
0136 rdi p32 HREF 0014 "assert"
0137 > p32 EQ 0136 [0x40a35458]
0138 int FLOAD 0017 tab.hmask
0139 > int EQ 0138 +1 
0140 r12 p32 FLOAD 0017 tab.node
0141 > p32 HREFK 0140 "__index" @1
0142 r12 > tab HLOAD 0141
0143 int FLOAD 0142 tab.hmask
0144 > int EQ 0143 +63 
0145 r12 p32 FLOAD 0142 tab.node
0146 > p32 HREFK 0145 "assert" @3
0147 > fun HLOAD 0146
0148 rdi p32 HREF 0014 "type"
0149 > p32 EQ 0148 [0x40a35458]
0150 > p32 HREFK 0145 "type" @60
0151 > fun HLOAD 0150
0152 > fun EQ 0151 type
0153 > fun EQ 0147 assert
0154 int FLOAD 0132 tab.asize
0155 > int ABC 0154 +1 
0156 r12 p32 FLOAD 0132 tab.array
0157 p32 AREF 0156 +1 
0158 [10] > str ALOAD 0157
.... SNAP #22 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 ]
0159 > str EQ 0158 "if"
.... SNAP #23 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 ]
0160 [64] > p32 UREFO ssa.lua:39 #0
0161 xmm7 > num ULOAD 0160
0162 [58] num ADD 0161 +1 
0163 num USTORE 0160 0162
.... SNAP #24 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 ssa.lua:39|---- ]
0164 str TOSTR 0162 NUM
0165 rdi p32 BUFHDR [0x40a35414] RESET
0166 rdi p32 BUFPUT 0165 "L" 
0167 rdi p32 BUFPUT 0166 0164
0168 [68] str BUFSTR 0167 0165
0169 [c] > tab TDUP {0x41107138}
0170 rsi > tab TNEW #0 #0
0171 r12 p32 FLOAD 0169 tab.node
0172 p32 HREFK 0171 "bindings" @2
0173 tab HSTORE 0172 0170
0174 p32 HREFK 0171 "label" @3
0175 str HSTORE 0174 0168
.... SNAP #25 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 ssa.lua:39|0168 0169 ---- ]
0176 r12 > p32 UREFO ssa.lua:39 #1
0177 r12 > tab ULOAD 0176
0178 int FLOAD 0177 tab.hmask
0179 > int EQ 0178 +1 
0180 rsi p32 FLOAD 0177 tab.node
0181 > p32 HREFK 0180 "blocks" @0
0182 [60] > tab HLOAD 0181
0183 rdx p32 HREF 0182 0168
0184 > p32 EQ 0183 [0x40a35458]
0185 tab FLOAD 0182 tab.meta
0186 > tab EQ 0185 [NULL]
0187 rax p32 NEWREF 0182 0168
0188 tab HSTORE 0187 0169
0189 nil TBAR 0182
0190 p32 FREF 0182 tab.nomm
0191 u8  FSTORE 0190 +0 
0192 [50] num ADD 0162 +1 
0193 num USTORE 0160 0192
.... SNAP #26 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 ssa.lua:39|---- ]
0194 str TOSTR 0192 NUM
0195 rdi p32 BUFHDR [0x40a35414] RESET
0196 rdi p32 BUFPUT 0195 "L" 
0197 rdi p32 BUFPUT 0196 0194
0198 [4c] str BUFSTR 0197 0195
0199 [28] > tab TDUP {0x41107138}
0200 rsi > tab TNEW #0 #0
0201 [1c] p32 FLOAD 0199 tab.node
0202 p32 HREFK 0201 "bindings" @2
0203 tab HSTORE 0202 0200
0204 p32 HREFK 0201 "label" @3
0205 str HSTORE 0204 0198
.... SNAP #27 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 ssa.lua:39|0198 0199 ---- ]
0206 int FLOAD 0177 tab.hmask
0207 > int EQ 0206 +1 
0208 r12 p32 FLOAD 0177 tab.node
0209 > p32 HREFK 0208 "blocks" @0
0210 r12 > tab HLOAD 0209
0211 rsi p32 HREF 0210 0198
0212 > p32 EQ 0211 [0x40a35458]
0213 tab FLOAD 0210 tab.meta
0214 > tab EQ 0213 [NULL]
0215 rax p32 NEWREF 0210 0198
0216 tab HSTORE 0215 0199
0217 nil TBAR 0210
0218 p32 FREF 0210 tab.nomm
0219 u8  FSTORE 0218 +0 
.... SNAP #28 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 ssa.lua:39|---- 0199 ---- ]
0220 int FLOAD 0132 tab.asize
0221 > int ABC 0220 +2 
0222 r12 p32 FLOAD 0132 tab.array
0223 p32 AREF 0222 +2 
0224 r12 > tab ALOAD 0223
0225 rcx p32 HREF 0014 "assert"
0226 > p32 EQ 0225 [0x40a35458]
0227 int FLOAD 0017 tab.hmask
0228 > int EQ 0227 +1 
0229 rsi p32 FLOAD 0017 tab.node
0230 > p32 HREFK 0229 "__index" @1
0231 rsi > tab HLOAD 0230
0232 int FLOAD 0231 tab.hmask
0233 > int EQ 0232 +63 
0234 rsi p32 FLOAD 0231 tab.node
0235 > p32 HREFK 0234 "assert" @3
0236 > fun HLOAD 0235
0237 rcx p32 HREF 0014 "type"
0238 > p32 EQ 0237 [0x40a35458]
0239 > p32 HREFK 0234 "type" @60
0240 > fun HLOAD 0239
0241 > fun EQ 0240 type
0242 > fun EQ 0236 assert
0243 int FLOAD 0224 tab.asize
0244 > int ABC 0243 +1 
0245 rsi p32 FLOAD 0224 tab.array
0246 p32 AREF 0245 +1 
0247 [38] > str ALOAD 0246
.... SNAP #29 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0224 0133 0169 0199 0247 ]
0248 > str NE 0247 "if"
.... SNAP #30 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0224 0133 0169 0199 0247 ]
0249 > str NE 0247 "let"
.... SNAP #31 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0224 0133 0169 0199 0247 ]
0250 > str NE 0247 "true"
.... SNAP #32 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0224 0133 0169 0199 0247 ]
0251 > str NE 0247 "false"
.... SNAP #33 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0224 0133 0169 0199 0247 ]
0252 > str NE 0247 "match"
.... SNAP #34 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0224 0133 0169 0199 0247 ]
0253 > str NE 0247 "fail"
.... SNAP #35 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0224 0133 0169 0199 0247 ]
0254 rsi p32 HREF 0047 0247
0255 > tru HLOAD 0254
0256 [44] > tab TDUP {0x411082e8}
0257 rdx p32 FLOAD 0256 tab.array
0258 p32 AREF 0257 +2 
0259 tab ASTORE 0258 0224
.... SNAP #36 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0224 0133 0169 0199 0247 ssa.lua:49|0133 ---- 0169 0199 0256 ]
0260 int FLOAD 0169 tab.hmask
0261 > int EQ 0260 +3 
0262 [2c] p32 FLOAD 0169 tab.node
0263 > p32 HREFK 0262 "label" @3
0264 rcx > str HLOAD 0263
0265 p32 AREF 0257 +3 
0266 str ASTORE 0265 0264
0267 p32 AREF 0257 +4 
0268 str ASTORE 0267 0198
.... SNAP #37 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0224 0133 0169 0199 0247 ssa.lua:49|0133 ---- ---- ---- 0256 ---- ]
0269 rdx p32 HREF 0133 "control"
0270 > p32 EQ 0269 [0x40a35458]
0271 tab FLOAD 0133 tab.meta
0272 > tab EQ 0271 [NULL]
0273 r9 p32 NEWREF 0133 "control"
0274 tab HSTORE 0273 0256
0275 nil TBAR 0133
.... SNAP #38 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0224 0133 0169 0199 0247 ssa.lua:49|---- ---- ---- ---- ---- ---- ]
0276 int FLOAD 0132 tab.asize
0277 > int ABC 0276 +4 
0278 [30] p32 FLOAD 0132 tab.array
0279 p32 AREF 0278 +3 
0280 r13 > tab ALOAD 0279
0281 rax p32 HREF 0014 "assert"
0282 > p32 EQ 0281 [0x40a35458]
0283 int FLOAD 0017 tab.hmask
0284 > int EQ 0283 +1 
0285 rdx p32 FLOAD 0017 tab.node
0286 > p32 HREFK 0285 "__index" @1
0287 rdx > tab HLOAD 0286
0288 int FLOAD 0287 tab.hmask
0289 > int EQ 0288 +63 
0290 rdx p32 FLOAD 0287 tab.node
0291 > p32 HREFK 0290 "assert" @3
0292 > fun HLOAD 0291
0293 rax p32 HREF 0014 "type"
0294 > p32 EQ 0293 [0x40a35458]
0295 > p32 HREFK 0290 "type" @60
0296 > fun HLOAD 0295
0297 > fun EQ 0296 type
0298 > fun EQ 0292 assert
0299 int FLOAD 0280 tab.asize
0300 > int ABC 0299 +1 
0301 rdx p32 FLOAD 0280 tab.array
0302 p32 AREF 0301 +1 
0303 [34] > str ALOAD 0302
.... SNAP #39 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0280 0169 0134 0135 0303 ]
0304 > str NE 0303 "if"
.... SNAP #40 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0280 0169 0134 0135 0303 ]
0305 > str NE 0303 "let"
.... SNAP #41 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0280 0169 0134 0135 0303 ]
0306 > str NE 0303 "true"
.... SNAP #42 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0280 0169 0134 0135 0303 ]
0307 > str NE 0303 "false"
.... SNAP #43 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0280 0169 0134 0135 0303 ]
0308 > str NE 0303 "match"
.... SNAP #44 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0280 0169 0134 0135 0303 ]
0309 > str NE 0303 "fail"
.... SNAP #45 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0280 0169 0134 0135 0303 ]
0310 r12 p32 HREF 0047 0303
0311 > tru HLOAD 0310
0312 rax > tab TDUP {0x411082e8}
0313 r11 p32 FLOAD 0312 tab.array
0314 p32 AREF 0313 +2 
0315 tab ASTORE 0314 0280
.... SNAP #46 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0280 0169 0134 0135 0303 ssa.lua:49|0169 ---- 0134 0135 0312 ]
0316 int FLOAD 0134 tab.hmask
0317 > int EQ 0316 +1 
0318 r12 p32 FLOAD 0134 tab.node
0319 > p32 HREFK 0318 "label" @1
0320 r12 > str HLOAD 0319
0321 p32 AREF 0313 +3 
0322 str ASTORE 0321 0320
.... SNAP #47 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0280 0169 0134 0135 0303 ssa.lua:49|0169 ---- ---- 0135 0312 ---- ]
0323 int FLOAD 0135 tab.hmask
0324 > int EQ 0323 +1 
0325 r12 p32 FLOAD 0135 tab.node
0326 > p32 HREFK 0325 "label" @1
0327 r12 > str HLOAD 0326
0328 p32 AREF 0313 +4 
0329 str ASTORE 0328 0327
.... SNAP #48 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0280 0169 0134 0135 0303 ssa.lua:49|0169 ---- ---- ---- 0312 ---- ]
0330 > p32 HREFK 0262 "control" @1
0331 tab HSTORE 0330 0312
.... SNAP #49 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0280 0169 0134 0135 0303 ssa.lua:49|---- ---- ---- ---- ---- ---- ]
0332 p32 AREF 0278 +4 
0333 [24] > tab ALOAD 0332
0334 int FLOAD 0333 tab.asize
0335 > int ABC 0334 +1 
0336 rdx p32 FLOAD 0333 tab.array
0337 p32 AREF 0336 +1 
0338 [20] > str ALOAD 0337
.... SNAP #50 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0333 0199 0134 0135 0338 ]
0339 > str NE 0338 "if"
.... SNAP #51 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0333 0199 0134 0135 0338 ]
0340 > str NE 0338 "let"
.... SNAP #52 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0333 0199 0134 0135 0338 ]
0341 > str NE 0338 "true"
.... SNAP #53 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0333 0199 0134 0135 0338 ]
0342 > str EQ 0338 "false"
.... SNAP #54 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0333 0199 0134 0135 0338 ]
0343 r13 > tab TDUP {0x411085c8}
0344 rdi p32 FLOAD 0343 tab.array
0345 p32 AREF 0344 +2 
0346 str ASTORE 0345 0327
0347 p32 HREFK 0201 "control" @1
0348 tab HSTORE 0347 0343
.... SNAP #55 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0333 0199 0134 0135 0338 ssa.lua:52|---- ---- ---- ---- ]
0349 int FLOAD 0127 tab.asize
0350 > int ABC 0349 +4 
0351 rbx p32 FLOAD 0127 tab.array
0352 p32 AREF 0351 +4 
0353 rbx > tab ALOAD 0352
0354 rbp > tab SLOAD #7 T
0355 int FLOAD 0353 tab.asize
0356 > int ABC 0355 +1 
0357 r13 p32 FLOAD 0353 tab.array
0358 p32 AREF 0357 +1 
0359 r13 > str ALOAD 0358
.... SNAP #56 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0353 0354 0134 0135 0359 ]
0360 > str NE 0359 "if"
.... SNAP #57 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0353 0354 0134 0135 0359 ]
0361 > str NE 0359 "let"
.... SNAP #58 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0353 0354 0134 0135 0359 ]
0362 > str NE 0359 "true"
.... SNAP #59 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0353 0354 0134 0135 0359 ]
0363 > str EQ 0359 "false"
.... SNAP #60 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0353 0354 0134 0135 0359 ]
0364 [8] > tab TDUP {0x411085c8}
0365 rax p32 FLOAD 0364 tab.array
0366 p32 AREF 0365 +2 
0367 str ASTORE 0366 0327
.... SNAP #61 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0353 0354 0134 0135 0359 ssa.lua:52|0354 ---- 0364 ---- ]
0368 rsi p32 HREF 0354 "control"
0369 > p32 EQ 0368 [0x40a35458]
0370 tab FLOAD 0354 tab.meta
0371 > tab EQ 0370 [NULL]
0372 rbx p32 NEWREF 0354 "control"
0373 tab HSTORE 0372 0364
0374 nil TBAR 0354
.... SNAP #62 [ ssa.lua:55|---- ---- ---- ---- ---- ]
0375 > p32 RETF proto: 0x41107a60 [0x41107b7c]
.... SNAP #63 [ ---- ]
---- TRACE 3 mcode 4549
0bcbe9a6 add rsp, -0x70
0bcbe9aa mov dword [0x40a35410], 0x3
0bcbe9b5 mov ebp, edx
0bcbe9b7 mov edi, [0x40a353d8]
0bcbe9be cmp edi, [0x40a353dc]
0bcbe9c5 jb 0x0bcbe9de
0bcbe9c7 mov esi, 0xc
0bcbe9cc mov edi, 0x40a353b8
0bcbe9d1 call 0x00421730 ->lj_gc_step_jit
0bcbe9d6 test eax, eax
0bcbe9d8 jnz 0x0bcb0010 ->0
0bcbe9de mov edi, [0x40a354b0]
0bcbe9e5 cmp dword [rbp-0x4], 0x41107b00
0bcbe9ec jnz 0x0bcb0014 ->1
0bcbe9f2 add ebp, -0x40
0bcbe9f5 mov [0x40a354b4], ebp
0bcbe9fc cmp dword [rbp-0x8], 0x40a49b78
0bcbea03 jnz 0x0bcb0018 ->2
0bcbea09 cmp dword [rbp+0x4], -0x0c
0bcbea0d jnz 0x0bcb0018 ->2
0bcbea13 mov ebx, [rbp+0x0]
0bcbea16 cmp dword [rbx+0x18], +0x03
0bcbea1a jbe 0x0bcb0018 ->2
0bcbea20 mov r15d, [rbx+0x8]
0bcbea24 cmp dword [r15+0x1c], -0x0c
0bcbea29 jnz 0x0bcb0018 ->2
0bcbea2f mov r15d, [r15+0x18]
0bcbea33 mov [rsp+0x7c], r15d
0bcbea38 cmp dword [rbp+0x2c], -0x0c
0bcbea3c jnz 0x0bcb0018 ->2
0bcbea42 mov esi, [rbp+0x28]
0bcbea45 mov [rsp+0x78], esi
0bcbea49 cmp dword [rbp+0x14], -0x0c
0bcbea4d jnz 0x0bcb0018 ->2
0bcbea53 mov r14d, [rbp+0x10]
0bcbea57 cmp dword [rbp+0x1c], -0x0c
0bcbea5b jnz 0x0bcb0018 ->2
0bcbea61 mov r13d, [rbp+0x18]
0bcbea65 mov r11d, [0x40a49b80]
0bcbea6d mov [rsp+0x48], r11d
0bcbea72 mov esi, [r11+0x1c]
0bcbea76 and esi, 0xce2b6183
0bcbea7c lea esi, [rsi+rsi*2]
0bcbea7f shl esi, 0x03
0bcbea82 add esi, [r11+0x14]
0bcbea86 cmp dword [rsi+0xc], -0x05
0bcbea8a jnz 0x0bcbea99
0bcbea8c cmp dword [rsi+0x8], 0x40a37db0
0bcbea93 jz 0x0bcb0018 ->2
0bcbea99 mov esi, [rsi+0x10]
0bcbea9c test esi, esi
0bcbea9e jnz 0x0bcbea86
0bcbeaa0 mov r12d, [r11+0x10]
0bcbeaa4 mov [rsp+0x3c], r12d
0bcbeaa9 test r12d, r12d
0bcbeaac jz 0x0bcb0018 ->2
0bcbeab2 cmp dword [r12+0x1c], +0x01
0bcbeab8 jnz 0x0bcb0018 ->2
0bcbeabe mov esi, [r12+0x14]
0bcbeac3 mov rdx, 0xfffffffb40a374c8
0bcbeacd cmp rdx, [rsi+0x20]
0bcbead1 jnz 0x0bcb0018 ->2
0bcbead7 cmp dword [rsi+0x1c], -0x0c
0bcbeadb jnz 0x0bcb0018 ->2
0bcbeae1 mov esi, [rsi+0x18]
0bcbeae4 cmp dword [rsi+0x1c], +0x3f
0bcbeae8 jnz 0x0bcb0018 ->2
0bcbeaee mov esi, [rsi+0x14]
0bcbeaf1 mov rdx, 0xfffffffb40a37db0
0bcbeafb cmp rdx, [rsi+0x50]
0bcbeaff jnz 0x0bcb0018 ->2
0bcbeb05 cmp dword [rsi+0x4c], -0x09
0bcbeb09 jnz 0x0bcb0018 ->2
0bcbeb0f mov edx, [r11+0x1c]
0bcbeb13 and edx, 0x798a813c
0bcbeb19 lea edx, [rdx+rdx*2]
0bcbeb1c shl edx, 0x03
0bcbeb1f add edx, [r11+0x14]
0bcbeb23 cmp dword [rdx+0xc], -0x05
0bcbeb27 jnz 0x0bcbeb36
0bcbeb29 cmp dword [rdx+0x8], 0x40a37fb0
0bcbeb30 jz 0x0bcb0018 ->2
0bcbeb36 mov edx, [rdx+0x10]
0bcbeb39 test edx, edx
0bcbeb3b jnz 0x0bcbeb23
0bcbeb3d mov rdx, 0xfffffffb40a37fb0
0bcbeb47 cmp rdx, [rsi+0x5a8]
0bcbeb4e jnz 0x0bcb0018 ->2
0bcbeb54 cmp dword [rsi+0x5a4], -0x09
0bcbeb5b jnz 0x0bcb0018 ->2
0bcbeb61 cmp dword [rsi+0x5a0], 0x40a37f18
0bcbeb6b jnz 0x0bcb0018 ->2
0bcbeb71 cmp dword [rsi+0x48], 0x40a37d88
0bcbeb78 jnz 0x0bcb0018 ->2
0bcbeb7e cmp dword [r15+0x18], +0x01
0bcbeb83 jbe 0x0bcb0018 ->2
0bcbeb89 mov esi, [r15+0x8]
0bcbeb8d cmp dword [rsi+0xc], -0x05
0bcbeb91 jnz 0x0bcb0018 ->2
0bcbeb97 mov ecx, [rsi+0x8]
0bcbeb9a mov [rsp+0x74], ecx
0bcbeb9e cmp ecx, 0x40a378f8
0bcbeba4 jz 0x0bcb001c ->3
0bcbebaa cmp ecx, 0x410f6fc8
0bcbebb0 jz 0x0bcb0020 ->4
0bcbebb6 cmp ecx, 0x40a37a18
0bcbebbc jz 0x0bcb0024 ->5
0bcbebc2 cmp ecx, 0x40a37870
0bcbebc8 jz 0x0bcb0028 ->6
0bcbebce cmp ecx, 0x40a3acb0
0bcbebd4 jz 0x0bcb002c ->7
0bcbebda cmp ecx, 0x40a527f8
0bcbebe0 jz 0x0bcb0030 ->8
0bcbebe6 cmp dword [0x410fb854], -0x0c
0bcbebee jnz 0x0bcb0034 ->9
0bcbebf4 mov edx, [0x410fb850]
0bcbebfb mov [rsp+0x40], edx
0bcbebff mov esi, [rdx+0x1c]
0bcbec02 and esi, [rcx+0x8]
0bcbec05 lea esi, [rsi+rsi*2]
0bcbec08 shl esi, 0x03
0bcbec0b add esi, [rdx+0x14]
0bcbec0e cmp dword [rsi+0xc], -0x05
0bcbec12 jnz 0x0bcbec19
0bcbec14 cmp ecx, [rsi+0x8]
0bcbec17 jz 0x0bcbec25
0bcbec19 mov esi, [rsi+0x10]
0bcbec1c test esi, esi
0bcbec1e jnz 0x0bcbec0e
0bcbec20 mov esi, 0x40a35458
0bcbec25 cmp dword [rsi+0x4], -0x03
0bcbec29 jnz 0x0bcb0034 ->9
0bcbec2f mov esi, 0x411082e8
0bcbec34 call 0x004223c0 ->lj_tab_dup
0bcbec39 mov [rsp+0x70], eax
0bcbec3d mov edi, [0x40a354b0]
0bcbec44 mov esi, [rsp+0x78]
0bcbec48 mov eax, [rax+0x8]
0bcbec4b mov dword [rax+0x14], 0xfffffff4
0bcbec52 mov [rax+0x10], r15d
0bcbec56 cmp dword [r14+0x1c], +0x01
0bcbec5b jnz 0x0bcb0038 ->10
0bcbec61 mov r15d, [r14+0x14]
0bcbec65 mov rdx, 0xfffffffb41106450
0bcbec6f cmp rdx, [r15+0x20]
0bcbec73 jnz 0x0bcb0038 ->10
0bcbec79 cmp dword [r15+0x1c], -0x05
0bcbec7e jnz 0x0bcb0038 ->10
0bcbec84 mov r15d, [r15+0x18]
0bcbec88 mov dword [rax+0x1c], 0xfffffffb
0bcbec8f mov [rax+0x18], r15d
0bcbec93 cmp dword [r13+0x1c], +0x01
0bcbec98 jnz 0x0bcb003c ->11
0bcbec9e mov r15d, [r13+0x14]
0bcbeca2 mov rdx, 0xfffffffb41106450
0bcbecac cmp rdx, [r15+0x20]
0bcbecb0 jnz 0x0bcb003c ->11
0bcbecb6 cmp dword [r15+0x1c], -0x05
0bcbecbb jnz 0x0bcb003c ->11
0bcbecc1 mov r15d, [r15+0x18]
0bcbecc5 mov dword [rax+0x24], 0xfffffffb
0bcbeccc mov [rax+0x20], r15d
0bcbecd0 mov edx, [rsi+0x1c]
0bcbecd3 and edx, 0x2a54dc55
0bcbecd9 lea edx, [rdx+rdx*2]
0bcbecdc shl edx, 0x03
0bcbecdf add edx, [rsi+0x14]
0bcbece2 cmp dword [rdx+0xc], -0x05
0bcbece6 jnz 0x0bcbecf5
0bcbece8 cmp dword [rdx+0x8], 0x41106bb8
0bcbecef jz 0x0bcb0040 ->12
0bcbecf5 mov edx, [rdx+0x10]
0bcbecf8 test edx, edx
0bcbecfa jnz 0x0bcbece2
0bcbecfc cmp dword [rsi+0x10], +0x00
0bcbed00 jnz 0x0bcb0040 ->12
0bcbed06 mov edx, 0x40a35448
0bcbed0b mov dword [rdx+0x4], 0xfffffffb
0bcbed12 mov dword [rdx], 0x41106bb8
0bcbed18 call 0x00422cf0 ->lj_tab_newkey
0bcbed1d mov r15d, eax
0bcbed20 mov r11d, [rsp+0x48]
0bcbed25 mov edi, [0x40a354b0]
0bcbed2c mov edx, [rsp+0x78]
0bcbed30 mov eax, [rsp+0x70]
0bcbed34 mov dword [r15+0x4], 0xfffffff4
0bcbed3c mov [r15], eax
0bcbed3f test byte [rdx+0x4], 0x4
0bcbed43 jz 0x0bcbed5a
0bcbed45 and byte [rdx+0x4], 0xfb
0bcbed49 mov eax, [0x40a353f4]
0bcbed50 mov [0x40a353f4], edx
0bcbed57 mov [rdx+0xc], eax
0bcbed5a cmp dword [rbx+0x18], +0x04
0bcbed5e jbe 0x0bcb0044 ->13
0bcbed64 mov ebx, [rbx+0x8]
0bcbed67 cmp dword [rbx+0x24], -0x0c
0bcbed6b jnz 0x0bcb0044 ->13
0bcbed71 mov r15d, [rbx+0x20]
0bcbed75 cmp dword [rbp+0x34], -0x0c
0bcbed79 jnz 0x0bcb0044 ->13
0bcbed7f mov ebx, [rbp+0x30]
0bcbed82 mov eax, [r11+0x1c]
0bcbed86 and eax, 0xce2b6183
0bcbed8c lea eax, [rax+rax*2]
0bcbed8f shl eax, 0x03
0bcbed92 add eax, [r11+0x14]
0bcbed96 cmp dword [rax+0xc], -0x05
0bcbed9a jnz 0x0bcbeda9
0bcbed9c cmp dword [rax+0x8], 0x40a37db0
0bcbeda3 jz 0x0bcb0044 ->13
0bcbeda9 mov eax, [rax+0x10]
0bcbedac test eax, eax
0bcbedae jnz 0x0bcbed96
0bcbedb0 cmp dword [r12+0x1c], +0x01
0bcbedb6 jnz 0x0bcb0044 ->13
0bcbedbc mov r12d, [r12+0x14]
0bcbedc1 mov rax, 0xfffffffb40a374c8
0bcbedcb cmp rax, [r12+0x20]
0bcbedd0 jnz 0x0bcb0044 ->13
0bcbedd6 cmp dword [r12+0x1c], -0x0c
0bcbeddc jnz 0x0bcb0044 ->13
0bcbede2 mov r12d, [r12+0x18]
0bcbede7 cmp dword [r12+0x1c], +0x3f
0bcbeded jnz 0x0bcb0044 ->13
0bcbedf3 mov r12d, [r12+0x14]
0bcbedf8 mov rax, 0xfffffffb40a37db0
0bcbee02 cmp rax, [r12+0x50]
0bcbee07 jnz 0x0bcb0044 ->13
0bcbee0d cmp dword [r12+0x4c], -0x09
0bcbee13 jnz 0x0bcb0044 ->13
0bcbee19 mov eax, [r11+0x1c]
0bcbee1d and eax, 0x798a813c
0bcbee23 lea eax, [rax+rax*2]
0bcbee26 shl eax, 0x03
0bcbee29 add eax, [r11+0x14]
0bcbee2d cmp dword [rax+0xc], -0x05
0bcbee31 jnz 0x0bcbee40
0bcbee33 cmp dword [rax+0x8], 0x40a37fb0
0bcbee3a jz 0x0bcb0044 ->13
0bcbee40 mov eax, [rax+0x10]
0bcbee43 test eax, eax
0bcbee45 jnz 0x0bcbee2d
0bcbee47 mov rax, 0xfffffffb40a37fb0
0bcbee51 cmp rax, [r12+0x5a8]
0bcbee59 jnz 0x0bcb0044 ->13
0bcbee5f cmp dword [r12+0x5a4], -0x09
0bcbee68 jnz 0x0bcb0044 ->13
0bcbee6e cmp dword [r12+0x5a0], 0x40a37f18
0bcbee7a jnz 0x0bcb0044 ->13
0bcbee80 cmp dword [r12+0x48], 0x40a37d88
0bcbee89 jnz 0x0bcb0044 ->13
0bcbee8f cmp dword [r15+0x18], +0x01
0bcbee94 jbe 0x0bcb0044 ->13
0bcbee9a mov r12d, [r15+0x8]
0bcbee9e cmp dword [r12+0xc], -0x05
0bcbeea4 jnz 0x0bcb0044 ->13
0bcbeeaa mov r12d, [r12+0x8]
0bcbeeaf cmp r12d, 0x40a378f8
0bcbeeb6 jz 0x0bcb0048 ->14
0bcbeebc cmp r12d, 0x410f6fc8
0bcbeec3 jz 0x0bcb004c ->15
0bcbeec9 cmp r12d, 0x40a37a18
0bcbeed0 jz 0x0bcb0050 ->16
0bcbeed6 cmp r12d, 0x40a37870
0bcbeedd jnz 0x0bcb0054 ->17
0bcbeee3 mov esi, 0x411085c8
0bcbeee8 call 0x004223c0 ->lj_tab_dup
0bcbeeed mov [rsp+0x6c], eax
0bcbeef1 mov edi, [0x40a354b0]
0bcbeef8 cmp dword [r13+0x1c], +0x01
0bcbeefd jnz 0x0bcb0058 ->18
0bcbef03 mov esi, [r13+0x14]
0bcbef07 mov rdx, 0xfffffffb41106450
0bcbef11 cmp rdx, [rsi+0x20]
0bcbef15 jnz 0x0bcb0058 ->18
0bcbef1b cmp dword [rsi+0x1c], -0x05
0bcbef1f jnz 0x0bcb0058 ->18
0bcbef25 mov esi, [rsi+0x18]
0bcbef28 mov eax, [rax+0x8]
0bcbef2b mov dword [rax+0x14], 0xfffffffb
0bcbef32 mov [rax+0x10], esi
0bcbef35 mov esi, [rbx+0x1c]
0bcbef38 and esi, 0x2a54dc55
0bcbef3e lea esi, [rsi+rsi*2]
0bcbef41 shl esi, 0x03
0bcbef44 add esi, [rbx+0x14]
0bcbef47 cmp dword [rsi+0xc], -0x05
0bcbef4b jnz 0x0bcbef5a
0bcbef4d cmp dword [rsi+0x8], 0x41106bb8
0bcbef54 jz 0x0bcb005c ->19
0bcbef5a mov esi, [rsi+0x10]
0bcbef5d test esi, esi
0bcbef5f jnz 0x0bcbef47
0bcbef61 cmp dword [rbx+0x10], +0x00
0bcbef65 jnz 0x0bcb005c ->19
0bcbef6b mov edx, 0x40a35448
0bcbef70 mov dword [rdx+0x4], 0xfffffffb
0bcbef77 mov dword [rdx], 0x41106bb8
0bcbef7d mov esi, ebx
0bcbef7f call 0x00422cf0 ->lj_tab_newkey
0bcbef84 mov r15d, eax
0bcbef87 mov r11d, [rsp+0x48]
0bcbef8c mov esi, [rsp+0x3c]
0bcbef90 mov eax, [rsp+0x6c]
0bcbef94 mov dword [r15+0x4], 0xfffffff4
0bcbef9c mov [r15], eax
0bcbef9f test byte [rbx+0x4], 0x4
0bcbefa3 jz 0x0bcbefba
0bcbefa5 and byte [rbx+0x4], 0xfb
0bcbefa9 mov edi, [0x40a353f4]
0bcbefb0 mov [0x40a353f4], ebx
0bcbefb7 mov [rbx+0xc], edi
0bcbefba cmp dword [rbp-0x4], 0x41107b00
0bcbefc1 jnz 0x0bcb0060 ->20
0bcbefc7 add ebp, -0x40
0bcbefca mov [0x40a354b4], ebp
0bcbefd1 cmp dword [rbp-0x8], 0x40a49b78
0bcbefd8 jnz 0x0bcb0064 ->21
0bcbefde cmp dword [rbp+0x4], -0x0c
0bcbefe2 jnz 0x0bcb0064 ->21
0bcbefe8 mov ebx, [rbp+0x0]
0bcbefeb cmp dword [rbx+0x18], +0x03
0bcbefef jbe 0x0bcb0064 ->21
0bcbeff5 mov r15d, [rbx+0x8]
0bcbeff9 cmp dword [r15+0x1c], -0x0c
0bcbeffe jnz 0x0bcb0064 ->21
0bcbf004 mov r13d, [r15+0x18]
0bcbf008 mov [rsp+0x18], r13d
0bcbf00d cmp dword [rbp+0x2c], -0x0c
0bcbf011 jnz 0x0bcb0064 ->21
0bcbf017 mov edi, [rbp+0x28]
0bcbf01a mov [rsp+0x14], edi
0bcbf01e cmp dword [rbp+0x14], -0x0c
0bcbf022 jnz 0x0bcb0064 ->21
0bcbf028 mov r15d, [rbp+0x10]
0bcbf02c cmp dword [rbp+0x1c], -0x0c
0bcbf030 jnz 0x0bcb0064 ->21
0bcbf036 mov r14d, [rbp+0x18]
0bcbf03a mov edi, [r11+0x1c]
0bcbf03e and edi, 0xce2b6183
0bcbf044 lea edi, [rdi+rdi*2]
0bcbf047 shl edi, 0x03
0bcbf04a add edi, [r11+0x14]
0bcbf04e cmp dword [rdi+0xc], -0x05
0bcbf052 jnz 0x0bcbf061
0bcbf054 cmp dword [rdi+0x8], 0x40a37db0
0bcbf05b jz 0x0bcb0064 ->21
0bcbf061 mov edi, [rdi+0x10]
0bcbf064 test edi, edi
0bcbf066 jnz 0x0bcbf04e
0bcbf068 cmp dword [rsi+0x1c], +0x01
0bcbf06c jnz 0x0bcb0064 ->21
0bcbf072 mov r12d, [rsi+0x14]
0bcbf076 mov rdi, 0xfffffffb40a374c8
0bcbf080 cmp rdi, [r12+0x20]
0bcbf085 jnz 0x0bcb0064 ->21
0bcbf08b cmp dword [r12+0x1c], -0x0c
0bcbf091 jnz 0x0bcb0064 ->21
0bcbf097 mov r12d, [r12+0x18]
0bcbf09c cmp dword [r12+0x1c], +0x3f
0bcbf0a2 jnz 0x0bcb0064 ->21
0bcbf0a8 mov r12d, [r12+0x14]
0bcbf0ad mov rdi, 0xfffffffb40a37db0
0bcbf0b7 cmp rdi, [r12+0x50]
0bcbf0bc jnz 0x0bcb0064 ->21
0bcbf0c2 cmp dword [r12+0x4c], -0x09
0bcbf0c8 jnz 0x0bcb0064 ->21
0bcbf0ce mov edi, [r11+0x1c]
0bcbf0d2 and edi, 0x798a813c
0bcbf0d8 lea edi, [rdi+rdi*2]
0bcbf0db shl edi, 0x03
0bcbf0de add edi, [r11+0x14]
0bcbf0e2 cmp dword [rdi+0xc], -0x05
0bcbf0e6 jnz 0x0bcbf0f5
0bcbf0e8 cmp dword [rdi+0x8], 0x40a37fb0
0bcbf0ef jz 0x0bcb0064 ->21
0bcbf0f5 mov edi, [rdi+0x10]
0bcbf0f8 test edi, edi
0bcbf0fa jnz 0x0bcbf0e2
0bcbf0fc mov rdi, 0xfffffffb40a37fb0
0bcbf106 cmp rdi, [r12+0x5a8]
0bcbf10e jnz 0x0bcb0064 ->21
0bcbf114 cmp dword [r12+0x5a4], -0x09
0bcbf11d jnz 0x0bcb0064 ->21
0bcbf123 cmp dword [r12+0x5a0], 0x40a37f18
0bcbf12f jnz 0x0bcb0064 ->21
0bcbf135 cmp dword [r12+0x48], 0x40a37d88
0bcbf13e jnz 0x0bcb0064 ->21
0bcbf144 cmp dword [r13+0x18], +0x01
0bcbf149 jbe 0x0bcb0064 ->21
0bcbf14f mov r12d, [r13+0x8]
0bcbf153 cmp dword [r12+0xc], -0x05
0bcbf159 jnz 0x0bcb0064 ->21
0bcbf15f mov ecx, [r12+0x8]
0bcbf164 mov [rsp+0x10], ecx
0bcbf168 cmp dword [r12+0x8], 0x40a378f8
0bcbf171 jnz 0x0bcb0068 ->22
0bcbf177 mov edi, [0x410f60b0]
0bcbf17e mov [rsp+0x64], edi
0bcbf182 cmp dword [rdi+0x4], 0xfffeffff
0bcbf189 jnb 0x0bcb006c ->23
0bcbf18f movsd xmm7, [rdi]
0bcbf193 addsd xmm7, [0x410fa9e0]
0bcbf19c movsd [rsp+0x58], xmm7
0bcbf1a2 movsd [rdi], xmm7
0bcbf1a6 mov edi, 0x40a35414
0bcbf1ab mov esi, [rdi+0x8]
0bcbf1ae mov [rdi], esi
0bcbf1b0 mov esi, 0x4c
0bcbf1b5 call 0x00421b60 ->lj_buf_putchar
0bcbf1ba mov edi, eax
0bcbf1bc lea rsi, [rsp+0x58]
0bcbf1c1 call 0x0040a3c0 ->lj_strfmt_putnum
0bcbf1c6 mov edi, eax
0bcbf1c8 call 0x00421ff0 ->lj_buf_tostr
0bcbf1cd mov [rsp+0x68], eax
0bcbf1d1 mov edi, [0x40a354b0]
0bcbf1d8 mov esi, 0x41107138
0bcbf1dd call 0x004223c0 ->lj_tab_dup
0bcbf1e2 mov [rsp+0xc], eax
0bcbf1e6 mov edi, [0x40a354b0]
0bcbf1ed xor esi, esi
0bcbf1ef call 0x00422350 ->lj_tab_new1
0bcbf1f4 mov esi, eax
0bcbf1f6 mov edi, [0x40a354b0]
0bcbf1fd mov ecx, [rsp+0xc]
0bcbf201 mov eax, [rsp+0x68]
0bcbf205 mov r12d, [rcx+0x14]
0bcbf209 mov dword [r12+0x34], 0xfffffff4
0bcbf212 mov [r12+0x30], esi
0bcbf217 mov dword [r12+0x4c], 0xfffffffb
0bcbf220 mov [r12+0x48], eax
0bcbf225 mov r12d, [0x410fb838]
0bcbf22d cmp dword [r12+0x4], -0x0c
0bcbf233 jnz 0x0bcb0074 ->25
0bcbf239 mov r12d, [r12]
0bcbf23d cmp dword [r12+0x1c], +0x01
0bcbf243 jnz 0x0bcb0074 ->25
0bcbf249 mov esi, [r12+0x14]
0bcbf24e mov rdx, 0xfffffffb411063b0
0bcbf258 cmp rdx, [rsi+0x8]
0bcbf25c jnz 0x0bcb0074 ->25
0bcbf262 cmp dword [rsi+0x4], -0x0c
0bcbf266 jnz 0x0bcb0074 ->25
0bcbf26c mov esi, [rsi]
0bcbf26e mov [rsp+0x60], esi
0bcbf272 mov edx, [rsi+0x1c]
0bcbf275 and edx, [rax+0x8]
0bcbf278 lea edx, [rdx+rdx*2]
0bcbf27b shl edx, 0x03
0bcbf27e add edx, [rsi+0x14]
0bcbf281 cmp dword [rdx+0xc], -0x05
0bcbf285 jnz 0x0bcbf290
0bcbf287 cmp eax, [rdx+0x8]
0bcbf28a jz 0x0bcb0074 ->25
0bcbf290 mov edx, [rdx+0x10]
0bcbf293 test edx, edx
0bcbf295 jnz 0x0bcbf281
0bcbf297 cmp dword [rsi+0x10], +0x00
0bcbf29b jnz 0x0bcb0074 ->25
0bcbf2a1 mov edx, 0x40a35448
0bcbf2a6 mov dword [rdx+0x4], 0xfffffffb
0bcbf2ad mov [rdx], eax
0bcbf2af call 0x00422cf0 ->lj_tab_newkey
0bcbf2b4 mov edi, [rsp+0x64]
0bcbf2b8 mov esi, [rsp+0x60]
0bcbf2bc mov ecx, [rsp+0xc]
0bcbf2c0 movsd xmm7, [rsp+0x58]
0bcbf2c6 mov dword [rax+0x4], 0xfffffff4
0bcbf2cd mov [rax], ecx
0bcbf2cf test byte [rsi+0x4], 0x4
0bcbf2d3 jz 0x0bcbf2ea
0bcbf2d5 and byte [rsi+0x4], 0xfb
0bcbf2d9 mov edx, [0x40a353f4]
0bcbf2e0 mov [0x40a353f4], esi
0bcbf2e7 mov [rsi+0xc], edx
0bcbf2ea mov byte [rsi+0x6], 0x0
0bcbf2ee addsd xmm7, [0x410fa9e0]
0bcbf2f7 movsd [rsp+0x50], xmm7
0bcbf2fd movsd [rdi], xmm7
0bcbf301 mov edi, 0x40a35414
0bcbf306 mov esi, [rdi+0x8]
0bcbf309 mov [rdi], esi
0bcbf30b mov esi, 0x4c
0bcbf310 call 0x00421b60 ->lj_buf_putchar
0bcbf315 mov edi, eax
0bcbf317 lea rsi, [rsp+0x50]
0bcbf31c call 0x0040a3c0 ->lj_strfmt_putnum
0bcbf321 mov edi, eax
0bcbf323 call 0x00421ff0 ->lj_buf_tostr
0bcbf328 mov [rsp+0x4c], eax
0bcbf32c mov edi, [0x40a354b0]
0bcbf333 mov esi, 0x41107138
0bcbf338 call 0x004223c0 ->lj_tab_dup
0bcbf33d mov [rsp+0x28], eax
0bcbf341 mov edi, [0x40a354b0]
0bcbf348 xor esi, esi
0bcbf34a call 0x00422350 ->lj_tab_new1
0bcbf34f mov esi, eax
0bcbf351 mov edi, [0x40a354b0]
0bcbf358 mov ecx, [rsp+0x28]
0bcbf35c mov eax, [rsp+0x4c]
0bcbf360 mov r8d, [rcx+0x14]
0bcbf364 mov [rsp+0x1c], r8d
0bcbf369 mov dword [r8+0x34], 0xfffffff4
0bcbf371 mov [r8+0x30], esi
0bcbf375 mov dword [r8+0x4c], 0xfffffffb
0bcbf37d mov [r8+0x48], eax
0bcbf381 cmp dword [r12+0x1c], +0x01
0bcbf387 jnz 0x0bcb007c ->27
0bcbf38d mov r12d, [r12+0x14]
0bcbf392 mov rsi, 0xfffffffb411063b0
0bcbf39c cmp rsi, [r12+0x8]
0bcbf3a1 jnz 0x0bcb007c ->27
0bcbf3a7 cmp dword [r12+0x4], -0x0c
0bcbf3ad jnz 0x0bcb007c ->27
0bcbf3b3 mov r12d, [r12]
0bcbf3b7 mov esi, [r12+0x1c]
0bcbf3bc and esi, [rax+0x8]
0bcbf3bf lea esi, [rsi+rsi*2]
0bcbf3c2 shl esi, 0x03
0bcbf3c5 add esi, [r12+0x14]
0bcbf3ca cmp dword [rsi+0xc], -0x05
0bcbf3ce jnz 0x0bcbf3d9
0bcbf3d0 cmp eax, [rsi+0x8]
0bcbf3d3 jz 0x0bcb007c ->27
0bcbf3d9 mov esi, [rsi+0x10]
0bcbf3dc test esi, esi
0bcbf3de jnz 0x0bcbf3ca
0bcbf3e0 cmp dword [r12+0x10], +0x00
0bcbf3e6 jnz 0x0bcb007c ->27
0bcbf3ec mov edx, 0x40a35448
0bcbf3f1 mov dword [rdx+0x4], 0xfffffffb
0bcbf3f8 mov [rdx], eax
0bcbf3fa mov esi, r12d
0bcbf3fd call 0x00422cf0 ->lj_tab_newkey
0bcbf402 mov r11d, [rsp+0x48]
0bcbf407 mov edi, [0x40a354b0]
0bcbf40e mov esi, [rsp+0x3c]
0bcbf412 mov edx, [rsp+0x40]
0bcbf416 mov ecx, [rsp+0x28]
0bcbf41a mov dword [rax+0x4], 0xfffffff4
0bcbf421 mov [rax], ecx
0bcbf423 test byte [r12+0x4], 0x4
0bcbf429 jz 0x0bcbf445
0bcbf42b and byte [r12+0x4], 0xfb
0bcbf431 mov ecx, [0x40a353f4]
0bcbf438 mov [0x40a353f4], r12d
0bcbf440 mov [r12+0xc], ecx
0bcbf445 mov byte [r12+0x6], 0x0
0bcbf44b cmp dword [r13+0x18], +0x02
0bcbf450 jbe 0x0bcb0080 ->28
0bcbf456 mov r12d, [r13+0x8]
0bcbf45a cmp dword [r12+0x14], -0x0c
0bcbf460 jnz 0x0bcb0080 ->28
0bcbf466 mov r12d, [r12+0x10]
0bcbf46b mov ecx, [r11+0x1c]
0bcbf46f and ecx, 0xce2b6183
0bcbf475 lea ecx, [rcx+rcx*2]
0bcbf478 shl ecx, 0x03
0bcbf47b add ecx, [r11+0x14]
0bcbf47f cmp dword [rcx+0xc], -0x05
0bcbf483 jnz 0x0bcbf492
0bcbf485 cmp dword [rcx+0x8], 0x40a37db0
0bcbf48c jz 0x0bcb0080 ->28
0bcbf492 mov ecx, [rcx+0x10]
0bcbf495 test ecx, ecx
0bcbf497 jnz 0x0bcbf47f
0bcbf499 cmp dword [rsi+0x1c], +0x01
0bcbf49d jnz 0x0bcb0080 ->28
0bcbf4a3 mov esi, [rsi+0x14]
0bcbf4a6 mov rcx, 0xfffffffb40a374c8
0bcbf4b0 cmp rcx, [rsi+0x20]
0bcbf4b4 jnz 0x0bcb0080 ->28
0bcbf4ba cmp dword [rsi+0x1c], -0x0c
0bcbf4be jnz 0x0bcb0080 ->28
0bcbf4c4 mov esi, [rsi+0x18]
0bcbf4c7 cmp dword [rsi+0x1c], +0x3f
0bcbf4cb jnz 0x0bcb0080 ->28
0bcbf4d1 mov esi, [rsi+0x14]
0bcbf4d4 mov rcx, 0xfffffffb40a37db0
0bcbf4de cmp rcx, [rsi+0x50]
0bcbf4e2 jnz 0x0bcb0080 ->28
0bcbf4e8 cmp dword [rsi+0x4c], -0x09
0bcbf4ec jnz 0x0bcb0080 ->28
0bcbf4f2 mov ecx, [r11+0x1c]
0bcbf4f6 and ecx, 0x798a813c
0bcbf4fc lea ecx, [rcx+rcx*2]
0bcbf4ff shl ecx, 0x03
0bcbf502 add ecx, [r11+0x14]
0bcbf506 cmp dword [rcx+0xc], -0x05
0bcbf50a jnz 0x0bcbf519
0bcbf50c cmp dword [rcx+0x8], 0x40a37fb0
0bcbf513 jz 0x0bcb0080 ->28
0bcbf519 mov ecx, [rcx+0x10]
0bcbf51c test ecx, ecx
0bcbf51e jnz 0x0bcbf506
0bcbf520 mov rcx, 0xfffffffb40a37fb0
0bcbf52a cmp rcx, [rsi+0x5a8]
0bcbf531 jnz 0x0bcb0080 ->28
0bcbf537 cmp dword [rsi+0x5a4], -0x09
0bcbf53e jnz 0x0bcb0080 ->28
0bcbf544 cmp dword [rsi+0x5a0], 0x40a37f18
0bcbf54e jnz 0x0bcb0080 ->28
0bcbf554 cmp dword [rsi+0x48], 0x40a37d88
0bcbf55b jnz 0x0bcb0080 ->28
0bcbf561 cmp dword [r12+0x18], +0x01
0bcbf567 jbe 0x0bcb0080 ->28
0bcbf56d mov esi, [r12+0x8]
0bcbf572 cmp dword [rsi+0xc], -0x05
0bcbf576 jnz 0x0bcb0080 ->28
0bcbf57c mov ecx, [rsi+0x8]
0bcbf57f mov [rsp+0x38], ecx
0bcbf583 cmp ecx, 0x40a378f8
0bcbf589 jz 0x0bcb0084 ->29
0bcbf58f cmp ecx, 0x410f6fc8
0bcbf595 jz 0x0bcb0088 ->30
0bcbf59b cmp ecx, 0x40a37a18
0bcbf5a1 jz 0x0bcb008c ->31
0bcbf5a7 cmp ecx, 0x40a37870
0bcbf5ad jz 0x0bcb009d ->32
0bcbf5b3 cmp ecx, 0x40a3acb0
0bcbf5b9 jz 0x0bcb00a1 ->33
0bcbf5bf cmp ecx, 0x40a527f8
0bcbf5c5 jz 0x0bcb00a5 ->34
0bcbf5cb mov esi, [rdx+0x1c]
0bcbf5ce and esi, [rcx+0x8]
0bcbf5d1 lea esi, [rsi+rsi*2]
0bcbf5d4 shl esi, 0x03
0bcbf5d7 add esi, [rdx+0x14]
0bcbf5da cmp dword [rsi+0xc], -0x05
0bcbf5de jnz 0x0bcbf5e5
0bcbf5e0 cmp ecx, [rsi+0x8]
0bcbf5e3 jz 0x0bcbf5f1
0bcbf5e5 mov esi, [rsi+0x10]
0bcbf5e8 test esi, esi
0bcbf5ea jnz 0x0bcbf5da
0bcbf5ec mov esi, 0x40a35458
0bcbf5f1 cmp dword [rsi+0x4], -0x03
0bcbf5f5 jnz 0x0bcb00a9 ->35
0bcbf5fb mov esi, 0x411082e8
0bcbf600 call 0x004223c0 ->lj_tab_dup
0bcbf605 mov r10d, eax
0bcbf608 mov [rsp+0x44], r10d
0bcbf60d mov edi, [0x40a354b0]
0bcbf614 mov esi, [rsp+0x14]
0bcbf618 mov ecx, [rsp+0xc]
0bcbf61c mov eax, [rsp+0x4c]
0bcbf620 mov edx, [r10+0x8]
0bcbf624 mov dword [rdx+0x14], 0xfffffff4
0bcbf62b mov [rdx+0x10], r12d
0bcbf62f cmp dword [rcx+0x1c], +0x03
0bcbf633 jnz 0x0bcb00ad ->36
0bcbf639 mov ecx, [rcx+0x14]
0bcbf63c mov [rsp+0x2c], ecx
0bcbf640 mov r11, 0xfffffffb41106450
0bcbf64a cmp r11, [rcx+0x50]
0bcbf64e jnz 0x0bcb00ad ->36
0bcbf654 cmp dword [rcx+0x4c], -0x05
0bcbf658 jnz 0x0bcb00ad ->36
0bcbf65e mov ecx, [rcx+0x48]
0bcbf661 mov dword [rdx+0x1c], 0xfffffffb
0bcbf668 mov [rdx+0x18], ecx
0bcbf66b mov dword [rdx+0x24], 0xfffffffb
0bcbf672 mov [rdx+0x20], eax
0bcbf675 mov edx, [rsi+0x1c]
0bcbf678 and edx, 0x2a54dc55
0bcbf67e lea edx, [rdx+rdx*2]
0bcbf681 shl edx, 0x03
0bcbf684 add edx, [rsi+0x14]
0bcbf687 cmp dword [rdx+0xc], -0x05
0bcbf68b jnz 0x0bcbf69a
0bcbf68d cmp dword [rdx+0x8], 0x41106bb8
0bcbf694 jz 0x0bcb00b1 ->37
0bcbf69a mov edx, [rdx+0x10]
0bcbf69d test edx, edx
0bcbf69f jnz 0x0bcbf687
0bcbf6a1 cmp dword [rsi+0x10], +0x00
0bcbf6a5 jnz 0x0bcb00b1 ->37
0bcbf6ab mov edx, 0x40a35448
0bcbf6b0 mov dword [rdx+0x4], 0xfffffffb
0bcbf6b7 mov dword [rdx], 0x41106bb8
0bcbf6bd call 0x00422cf0 ->lj_tab_newkey
0bcbf6c2 mov r9d, eax
0bcbf6c5 mov r11d, [rsp+0x48]
0bcbf6ca mov r10d, [rsp+0x44]
0bcbf6cf mov edi, [0x40a354b0]
0bcbf6d6 mov esi, [rsp+0x40]
0bcbf6da mov edx, [rsp+0x3c]
0bcbf6de mov eax, [rsp+0x14]
0bcbf6e2 mov dword [r9+0x4], 0xfffffff4
0bcbf6ea mov [r9], r10d
0bcbf6ed test byte [rax+0x4], 0x4
0bcbf6f1 jz 0x0bcbf70a
0bcbf6f3 and byte [rax+0x4], 0xfb
0bcbf6f7 mov r10d, [0x40a353f4]
0bcbf6ff mov [0x40a353f4], eax
0bcbf706 mov [rax+0xc], r10d
0bcbf70a cmp dword [r13+0x18], +0x04
0bcbf70f jbe 0x0bcb00b5 ->38
0bcbf715 mov r13d, [r13+0x8]
0bcbf719 mov [rsp+0x30], r13d
0bcbf71e cmp dword [r13+0x1c], -0x0c
0bcbf723 jnz 0x0bcb00b5 ->38
0bcbf729 mov r13d, [r13+0x18]
0bcbf72d mov eax, [r11+0x1c]
0bcbf731 and eax, 0xce2b6183
0bcbf737 lea eax, [rax+rax*2]
0bcbf73a shl eax, 0x03
0bcbf73d add eax, [r11+0x14]
0bcbf741 cmp dword [rax+0xc], -0x05
0bcbf745 jnz 0x0bcbf754
0bcbf747 cmp dword [rax+0x8], 0x40a37db0
0bcbf74e jz 0x0bcb00b5 ->38
0bcbf754 mov eax, [rax+0x10]
0bcbf757 test eax, eax
0bcbf759 jnz 0x0bcbf741
0bcbf75b cmp dword [rdx+0x1c], +0x01
0bcbf75f jnz 0x0bcb00b5 ->38
0bcbf765 mov edx, [rdx+0x14]
0bcbf768 mov rax, 0xfffffffb40a374c8
0bcbf772 cmp rax, [rdx+0x20]
0bcbf776 jnz 0x0bcb00b5 ->38
0bcbf77c cmp dword [rdx+0x1c], -0x0c
0bcbf780 jnz 0x0bcb00b5 ->38
0bcbf786 mov edx, [rdx+0x18]
0bcbf789 cmp dword [rdx+0x1c], +0x3f
0bcbf78d jnz 0x0bcb00b5 ->38
0bcbf793 mov edx, [rdx+0x14]
0bcbf796 mov rax, 0xfffffffb40a37db0
0bcbf7a0 cmp rax, [rdx+0x50]
0bcbf7a4 jnz 0x0bcb00b5 ->38
0bcbf7aa cmp dword [rdx+0x4c], -0x09
0bcbf7ae jnz 0x0bcb00b5 ->38
0bcbf7b4 mov eax, [r11+0x1c]
0bcbf7b8 and eax, 0x798a813c
0bcbf7be lea eax, [rax+rax*2]
0bcbf7c1 shl eax, 0x03
0bcbf7c4 add eax, [r11+0x14]
0bcbf7c8 cmp dword [rax+0xc], -0x05
0bcbf7cc jnz 0x0bcbf7db
0bcbf7ce cmp dword [rax+0x8], 0x40a37fb0
0bcbf7d5 jz 0x0bcb00b5 ->38
0bcbf7db mov eax, [rax+0x10]
0bcbf7de test eax, eax
0bcbf7e0 jnz 0x0bcbf7c8
0bcbf7e2 mov rax, 0xfffffffb40a37fb0
0bcbf7ec cmp rax, [rdx+0x5a8]
0bcbf7f3 jnz 0x0bcb00b5 ->38
0bcbf7f9 cmp dword [rdx+0x5a4], -0x09
0bcbf800 jnz 0x0bcb00b5 ->38
0bcbf806 cmp dword [rdx+0x5a0], 0x40a37f18
0bcbf810 jnz 0x0bcb00b5 ->38
0bcbf816 cmp dword [rdx+0x48], 0x40a37d88
0bcbf81d jnz 0x0bcb00b5 ->38
0bcbf823 cmp dword [r13+0x18], +0x01
0bcbf828 jbe 0x0bcb00b5 ->38
0bcbf82e mov edx, [r13+0x8]
0bcbf832 cmp dword [rdx+0xc], -0x05
0bcbf836 jnz 0x0bcb00b5 ->38
0bcbf83c mov edx, [rdx+0x8]
0bcbf83f mov [rsp+0x34], edx
0bcbf843 cmp edx, 0x40a378f8
0bcbf849 jz 0x0bcb00b9 ->39
0bcbf84f cmp edx, 0x410f6fc8
0bcbf855 jz 0x0bcb00bd ->40
0bcbf85b cmp edx, 0x40a37a18
0bcbf861 jz 0x0bcb00c1 ->41
0bcbf867 cmp edx, 0x40a37870
0bcbf86d jz 0x0bcb00c5 ->42
0bcbf873 cmp edx, 0x40a3acb0
0bcbf879 jz 0x0bcb00c9 ->43
0bcbf87f cmp edx, 0x40a527f8
0bcbf885 jz 0x0bcb00cd ->44
0bcbf88b mov r12d, [rsi+0x1c]
0bcbf88f and r12d, [rdx+0x8]
0bcbf893 lea r12d, [r12+r12*2]
0bcbf897 shl r12d, 0x03
0bcbf89b add r12d, [rsi+0x14]
0bcbf89f cmp dword [r12+0xc], -0x05
0bcbf8a5 jnz 0x0bcbf8ae
0bcbf8a7 cmp edx, [r12+0x8]
0bcbf8ac jz 0x0bcbf8be
0bcbf8ae mov r12d, [r12+0x10]
0bcbf8b3 test r12d, r12d
0bcbf8b6 jnz 0x0bcbf89f
0bcbf8b8 mov r12d, 0x40a35458
0bcbf8be cmp dword [r12+0x4], -0x03
0bcbf8c4 jnz 0x0bcb00d1 ->45
0bcbf8ca mov esi, 0x411082e8
0bcbf8cf call 0x004223c0 ->lj_tab_dup
0bcbf8d4 mov edi, [0x40a354b0]
0bcbf8db mov edx, [rsp+0x30]
0bcbf8df mov ecx, [rsp+0x2c]
0bcbf8e3 mov r11d, [rax+0x8]
0bcbf8e7 mov dword [r11+0x14], 0xfffffff4
0bcbf8ef mov [r11+0x10], r13d
0bcbf8f3 cmp dword [r15+0x1c], +0x01
0bcbf8f8 jnz 0x0bcb00d5 ->46
0bcbf8fe mov r12d, [r15+0x14]
0bcbf902 mov r10, 0xfffffffb41106450
0bcbf90c cmp r10, [r12+0x20]
0bcbf911 jnz 0x0bcb00d5 ->46
0bcbf917 cmp dword [r12+0x1c], -0x05
0bcbf91d jnz 0x0bcb00d5 ->46
0bcbf923 mov r12d, [r12+0x18]
0bcbf928 mov dword [r11+0x1c], 0xfffffffb
0bcbf930 mov [r11+0x18], r12d
0bcbf934 cmp dword [r14+0x1c], +0x01
0bcbf939 jnz 0x0bcb00d9 ->47
0bcbf93f mov r12d, [r14+0x14]
0bcbf943 mov r10, 0xfffffffb41106450
0bcbf94d cmp r10, [r12+0x20]
0bcbf952 jnz 0x0bcb00d9 ->47
0bcbf958 cmp dword [r12+0x1c], -0x05
0bcbf95e jnz 0x0bcb00d9 ->47
0bcbf964 mov r12d, [r12+0x18]
0bcbf969 mov dword [r11+0x24], 0xfffffffb
0bcbf971 mov [r11+0x20], r12d
0bcbf975 mov r11, 0xfffffffb41106bb8
0bcbf97f cmp r11, [rcx+0x20]
0bcbf983 jnz 0x0bcb00dd ->48
0bcbf989 mov dword [rcx+0x1c], 0xfffffff4
0bcbf990 mov [rcx+0x18], eax
0bcbf993 cmp dword [rdx+0x24], -0x0c
0bcbf997 jnz 0x0bcb00e1 ->49
0bcbf99d mov r10d, [rdx+0x20]
0bcbf9a1 mov [rsp+0x24], r10d
0bcbf9a6 cmp dword [r10+0x18], +0x01
0bcbf9ab jbe 0x0bcb00e1 ->49
0bcbf9b1 mov edx, [r10+0x8]
0bcbf9b5 cmp dword [rdx+0xc], -0x05
0bcbf9b9 jnz 0x0bcb00e1 ->49
0bcbf9bf mov r9d, [rdx+0x8]
0bcbf9c3 mov [rsp+0x20], r9d
0bcbf9c8 cmp r9d, 0x40a378f8
0bcbf9cf jz 0x0bcb00e5 ->50
0bcbf9d5 cmp r9d, 0x410f6fc8
0bcbf9dc jz 0x0bcb00e9 ->51
0bcbf9e2 cmp r9d, 0x40a37a18
0bcbf9e9 jz 0x0bcb00ed ->52
0bcbf9ef cmp r9d, 0x40a37870
0bcbf9f6 jnz 0x0bcb00f1 ->53
0bcbf9fc mov esi, 0x411085c8
0bcbfa01 call 0x004223c0 ->lj_tab_dup
0bcbfa06 mov r13d, eax
0bcbfa09 mov r8d, [rsp+0x1c]
0bcbfa0e mov edi, [r13+0x8]
0bcbfa12 mov dword [rdi+0x14], 0xfffffffb
0bcbfa19 mov [rdi+0x10], r12d
0bcbfa1d mov edi, [0x40a354b0]
0bcbfa24 mov dword [r8+0x1c], 0xfffffff4
0bcbfa2c mov [r8+0x18], r13d
0bcbfa30 cmp dword [rbx+0x18], +0x04
0bcbfa34 jbe 0x0bcb00f9 ->55
0bcbfa3a mov ebx, [rbx+0x8]
0bcbfa3d cmp dword [rbx+0x24], -0x0c
0bcbfa41 jnz 0x0bcb00f9 ->55
0bcbfa47 mov ebx, [rbx+0x20]
0bcbfa4a cmp dword [rbp+0x34], -0x0c
0bcbfa4e jnz 0x0bcb00f9 ->55
0bcbfa54 mov ebp, [rbp+0x30]
0bcbfa57 cmp dword [rbx+0x18], +0x01
0bcbfa5b jbe 0x0bcb00f9 ->55
0bcbfa61 mov r13d, [rbx+0x8]
0bcbfa65 cmp dword [r13+0xc], -0x05
0bcbfa6a jnz 0x0bcb00f9 ->55
0bcbfa70 mov r13d, [r13+0x8]
0bcbfa74 cmp r13d, 0x40a378f8
0bcbfa7b jz 0x0bcb00fd ->56
0bcbfa81 cmp r13d, 0x410f6fc8
0bcbfa88 jz 0x0bcb0101 ->57
0bcbfa8e cmp r13d, 0x40a37a18
0bcbfa95 jz 0x0bcb0105 ->58
0bcbfa9b cmp r13d, 0x40a37870
0bcbfaa2 jnz 0x0bcb0109 ->59
0bcbfaa8 mov esi, 0x411085c8
0bcbfaad call 0x004223c0 ->lj_tab_dup
0bcbfab2 mov [rsp+0x8], eax
0bcbfab6 mov edi, [0x40a354b0]
0bcbfabd mov eax, [rax+0x8]
0bcbfac0 mov dword [rax+0x14], 0xfffffffb
0bcbfac7 mov [rax+0x10], r12d
0bcbfacb mov esi, [rbp+0x1c]
0bcbface and esi, 0x2a54dc55
0bcbfad4 lea esi, [rsi+rsi*2]
0bcbfad7 shl esi, 0x03
0bcbfada add esi, [rbp+0x14]
0bcbfadd cmp dword [rsi+0xc], -0x05
0bcbfae1 jnz 0x0bcbfaf0
0bcbfae3 cmp dword [rsi+0x8], 0x41106bb8
0bcbfaea jz 0x0bcb0111 ->61
0bcbfaf0 mov esi, [rsi+0x10]
0bcbfaf3 test esi, esi
0bcbfaf5 jnz 0x0bcbfadd
0bcbfaf7 cmp dword [rbp+0x10], +0x00
0bcbfafb jnz 0x0bcb0111 ->61
0bcbfb01 mov edx, 0x40a35448
0bcbfb06 mov dword [rdx+0x4], 0xfffffffb
0bcbfb0d mov dword [rdx], 0x41106bb8
0bcbfb13 mov esi, ebp
0bcbfb15 call 0x00422cf0 ->lj_tab_newkey
0bcbfb1a mov ebx, eax
0bcbfb1c mov edx, [0x40a354b4]
0bcbfb23 mov eax, [rsp+0x8]
0bcbfb27 mov dword [rbx+0x4], 0xfffffff4
0bcbfb2e mov [rbx], eax
0bcbfb30 test byte [rbp+0x4], 0x4
0bcbfb34 jz 0x0bcbfb4b
0bcbfb36 and byte [rbp+0x4], 0xfb
0bcbfb3a mov edi, [0x40a353f4]
0bcbfb41 mov [0x40a353f4], ebp
0bcbfb48 mov [rbp+0xc], edi
0bcbfb4b cmp dword [rdx-0x4], 0x41107b7c
0bcbfb52 jnz 0x0bcb0115 ->62
0bcbfb58 add edx, -0x48
0bcbfb5b mov [0x40a354b4], edx
0bcbfb62 add rsp, +0x70
0bcbfb66 jmp 0x0bcbe9a6
---- TRACE 3 stop -> down-recursion
---- TRACE 3 exit 1
---- TRACE 3 exit 1
---- TRACE 3 exit 3
---- TRACE 2 exit 4
---- TRACE 3 exit 4
---- TRACE 1 start ssa.lua:39
0001 UGET 0 0 ; label_counter
0002 ADDVN 0 0 0 ; 1
0003 USETV 0 0 ; label_counter
0004 KSTR 0 0 ; "L"
0005 UGET 1 0 ; label_counter
0006 CAT 0 0 1
0007 TDUP 1 1
0008 TNEW 2 0
0009 TSETS 2 1 2 ; "bindings"
0010 TSETS 0 1 3 ; "label"
0011 UGET 2 1 ; ssa
0012 TGETS 2 2 4 ; "blocks"
0013 TSETV 1 2 0
0014 RET1 1 2
---- TRACE 1 IR
.... SNAP #0 [ ---- ]
0001 rbp fun SLOAD #0 R
0002 rbx > p32 UREFO 0001 #0
0003 xmm7 > num ULOAD 0002
0004 [10] num ADD 0003 +1 
0005 num USTORE 0002 0004
.... SNAP #1 [ ---- ---- ]
0006 str TOSTR 0004 NUM
0007 rdi p32 BUFHDR [0x4105e414] RESET
0008 rdi p32 BUFPUT 0007 "L" 
0009 rdi p32 BUFPUT 0008 0006
0010 [c] str BUFSTR 0009 0007
0011 [8] > tab TDUP {0x419b0f30}
0012 r15 > tab TNEW #0 #0
0013 rbx p32 FLOAD 0011 tab.node
0014 p32 HREFK 0013 "bindings" @0
0015 tab HSTORE 0014 0012
0016 p32 HREFK 0013 "label" @1
0017 str HSTORE 0016 0010
.... SNAP #2 [ ---- 0010 0011 ---- ]
0018 rbp > p32 UREFO 0001 #1
0019 rbp > tab ULOAD 0018
0020 int FLOAD 0019 tab.hmask
0021 > int EQ 0020 +1 
0022 rbp p32 FLOAD 0019 tab.node
0023 > p32 HREFK 0022 "blocks" @0
0024 rbp > tab HLOAD 0023
0025 rsi p32 HREF 0024 0010
0026 > p32 EQ 0025 [0x4105e458]
0027 tab FLOAD 0024 tab.meta
0028 > tab EQ 0027 [NULL]
0029 rbx p32 NEWREF 0024 0010
0030 tab HSTORE 0029 0011
0031 nil TBAR 0024
0032 p32 FREF 0024 tab.nomm
0033 u8  FSTORE 0032 +0 
.... SNAP #3 [ ---- ---- 0011 ]
---- TRACE 1 mcode 441
0bcbfe44 add rsp, -0x10
0bcbfe48 mov dword [0x4105e410], 0x1
0bcbfe53 mov edi, [0x4105e3d8]
0bcbfe5a cmp edi, [0x4105e3dc]
0bcbfe61 jb 0x0bcbfe7a
0bcbfe63 mov esi, 0x3
0bcbfe68 mov edi, 0x4105e3b8
0bcbfe6d call 0x00421730 ->lj_gc_step_jit
0bcbfe72 test eax, eax
0bcbfe74 jnz 0x0bcb0010 ->0
0bcbfe7a mov edx, [0x4105e4b4]
0bcbfe81 mov ebp, [rdx-0x8]
0bcbfe84 mov edi, [rbp+0x14]
0bcbfe87 mov ebx, [rdi+0x10]
0bcbfe8a cmp dword [rbx+0x4], 0xfffeffff
0bcbfe91 jnb 0x0bcb0010 ->0
0bcbfe97 movsd xmm7, [rbx]
0bcbfe9b addsd xmm7, [0x4107b120]
0bcbfea4 movsd [rsp+0x10], xmm7
0bcbfeaa movsd [rbx], xmm7
0bcbfeae mov edi, 0x4105e414
0bcbfeb3 mov esi, [rdi+0x8]
0bcbfeb6 mov [rdi], esi
0bcbfeb8 mov esi, 0x4c
0bcbfebd call 0x00421b60 ->lj_buf_putchar
0bcbfec2 mov edi, eax
0bcbfec4 lea rsi, [rsp+0x10]
0bcbfec9 call 0x0040a3c0 ->lj_strfmt_putnum
0bcbfece mov edi, eax
0bcbfed0 call 0x00421ff0 ->lj_buf_tostr
0bcbfed5 mov [rsp+0xc], eax
0bcbfed9 mov edi, [0x4105e4b0]
0bcbfee0 mov esi, 0x419b0f30
0bcbfee5 call 0x004223c0 ->lj_tab_dup
0bcbfeea mov ebx, eax
0bcbfeec mov [rsp+0x8], ebx
0bcbfef0 mov edi, [0x4105e4b0]
0bcbfef7 xor esi, esi
0bcbfef9 call 0x00422350 ->lj_tab_new1
0bcbfefe mov r15d, eax
0bcbff01 mov edi, [0x4105e4b0]
0bcbff08 mov eax, [rsp+0xc]
0bcbff0c mov ebx, [rbx+0x14]
0bcbff0f mov dword [rbx+0x4], 0xfffffff4
0bcbff16 mov [rbx], r15d
0bcbff19 mov dword [rbx+0x1c], 0xfffffffb
0bcbff20 mov [rbx+0x18], eax
0bcbff23 mov esi, [rbp+0x18]
0bcbff26 mov ebp, [rsi+0x10]
0bcbff29 cmp dword [rbp+0x4], -0x0c
0bcbff2d jnz 0x0bcb0018 ->2
0bcbff33 mov ebp, [rbp+0x0]
0bcbff36 cmp dword [rbp+0x1c], +0x01
0bcbff3a jnz 0x0bcb0018 ->2
0bcbff40 mov ebp, [rbp+0x14]
0bcbff43 mov rsi, 0xfffffffb419b01a8
0bcbff4d cmp rsi, [rbp+0x8]
0bcbff51 jnz 0x0bcb0018 ->2
0bcbff57 cmp dword [rbp+0x4], -0x0c
0bcbff5b jnz 0x0bcb0018 ->2
0bcbff61 mov ebp, [rbp+0x0]
0bcbff64 mov esi, [rbp+0x1c]
0bcbff67 and esi, [rax+0x8]
0bcbff6a lea esi, [rsi+rsi*2]
0bcbff6d shl esi, 0x03
0bcbff70 add esi, [rbp+0x14]
0bcbff73 cmp dword [rsi+0xc], -0x05
0bcbff77 jnz 0x0bcbff82
0bcbff79 cmp eax, [rsi+0x8]
0bcbff7c jz 0x0bcb0018 ->2
0bcbff82 mov esi, [rsi+0x10]
0bcbff85 test esi, esi
0bcbff87 jnz 0x0bcbff73
0bcbff89 cmp dword [rbp+0x10], +0x00
0bcbff8d jnz 0x0bcb0018 ->2
0bcbff93 mov edx, 0x4105e448
0bcbff98 mov dword [rdx+0x4], 0xfffffffb
0bcbff9f mov [rdx], eax
0bcbffa1 mov esi, ebp
0bcbffa3 call 0x00422cf0 ->lj_tab_newkey
0bcbffa8 mov ebx, eax
0bcbffaa mov edx, [0x4105e4b4]
0bcbffb1 mov eax, [rsp+0x8]
0bcbffb5 mov dword [rbx+0x4], 0xfffffff4
0bcbffbc mov [rbx], eax
0bcbffbe test byte [rbp+0x4], 0x4
0bcbffc2 jz 0x0bcbffd9
0bcbffc4 and byte [rbp+0x4], 0xfb
0bcbffc8 mov edi, [0x4105e3f4]
0bcbffcf mov [0x4105e3f4], ebp
0bcbffd6 mov [rbp+0xc], edi
0bcbffd9 mov byte [rbp+0x6], 0x0
0bcbffdd mov dword [rdx+0xc], 0xfffffff4
0bcbffe4 mov [rdx+0x8], eax
0bcbffe7 xor eax, eax
0bcbffe9 mov ebx, 0x419b1bd0
0bcbffee mov r14d, 0x4105f008
0bcbfff4 add rsp, +0x10
0bcbfff8 jmp 0x00420177
---- TRACE 1 stop -> return
---- TRACE 2 start ssa.lua:55
0001 GGET 4 0 ; "assert"
0002 GGET 5 1 ; "type"
0003 MOV 6 0
0004 CALL 5 2 2
0000 . FUNCC ; type
0005 ISEQS 5 2 ; "table"
0006 JMP 5 => 0009
0009 KPRI 5 2
0010 CALL 4 1 2
0000 . FUNCC ; assert
0011 TGETB 4 0 1
0012 ISNES 4 3 ; "if"
0013 JMP 5 => 0037
0037 ISNES 4 4 ; "let"
0038 JMP 5 => 0056
0056 ISNES 4 10 ; "true"
0057 JMP 5 => 0063
0063 ISNES 4 11 ; "false"
0064 JMP 5 => 0070
0070 ISNES 4 12 ; "match"
0071 JMP 5 => 0077
0077 ISNES 4 14 ; "fail"
0078 JMP 5 => 0084
0084 GGET 5 0 ; "assert"
0085 UGET 6 4 ; relops
0086 TGETV 6 6 4
0087 CALL 5 1 2
0000 . FUNCC ; assert
0088 UGET 5 5 ; finish_if
0089 MOV 6 1
0090 MOV 7 0
0091 MOV 8 2
0092 MOV 9 3
0093 CALL 5 1 5
0000 . FUNCF 6 ; ssa.lua:49
0001 . TDUP 4 1
0002 . TSETB 1 4 2
0003 . TGETS 5 2 2 ; "label"
0004 . TSETB 5 4 3
0005 . TGETS 5 3 2 ; "label"
0006 . TSETB 5 4 4
0007 . TSETS 4 0 0 ; "control"
0008 . RET0 0 1
0094 RET0 0 1
---- TRACE 2 IR
.... SNAP #0 [ ---- ---- ---- ---- ---- ]
0001 rbp fun SLOAD #0 R
0002 r15 tab FLOAD 0001 func.env
0003 rsi p32 HREF 0002 "assert"
0004 > p32 EQ 0003 [0x4105e458]
0005 rbx tab FLOAD 0002 tab.meta
0006 > tab NE 0005 [NULL]
0007 int FLOAD 0005 tab.hmask
0008 > int EQ 0007 +1 
0009 rbx p32 FLOAD 0005 tab.node
0010 > p32 HREFK 0009 "__index" @1
0011 rbx > tab HLOAD 0010
0012 int FLOAD 0011 tab.hmask
0013 > int EQ 0012 +63 
0014 rbx p32 FLOAD 0011 tab.node
0015 > p32 HREFK 0014 "assert" @3
0016 > fun HLOAD 0015
0017 rsi p32 HREF 0002 "type"
0018 > p32 EQ 0017 [0x4105e458]
0019 > p32 HREFK 0014 "type" @60
0020 > fun HLOAD 0019
0021 r15 > tab SLOAD #1 T
0022 > fun EQ 0020 type
0023 > fun EQ 0016 assert
0024 int FLOAD 0021 tab.asize
0025 > int ABC 0024 +1 
0026 rbx p32 FLOAD 0021 tab.array
0027 p32 AREF 0026 +1 
0028 rbx > str ALOAD 0027
.... SNAP #1 [ ---- ---- ---- ---- ---- 0028 ]
0029 > str NE 0028 "if"
.... SNAP #2 [ ---- ---- ---- ---- ---- 0028 ]
0030 > str NE 0028 "let"
.... SNAP #3 [ ---- ---- ---- ---- ---- 0028 ]
0031 > str NE 0028 "true"
.... SNAP #4 [ ---- ---- ---- ---- ---- 0028 ]
0032 > str NE 0028 "false"
.... SNAP #5 [ ---- ---- ---- ---- ---- 0028 ]
0033 > str NE 0028 "match"
.... SNAP #6 [ ---- ---- ---- ---- ---- 0028 ]
0034 > str NE 0028 "fail"
.... SNAP #7 [ ---- ---- ---- ---- ---- 0028 ]
0035 r14 > p32 UREFC 0001 #4
0036 r13 > tab ULOAD 0035
0037 r14 p32 HREF 0036 0028
0038 > tru HLOAD 0037
0039 > fun EQ 0001 ssa.lua:55
0040 rbp > tab SLOAD #2 T
0041 r13 > tab SLOAD #3 T
0042 r14 > tab SLOAD #4 T
0043 [8] > tab TDUP {0x419b20e0}
0044 rax p32 FLOAD 0043 tab.array
0045 p32 AREF 0044 +2 
0046 tab ASTORE 0045 0021
.... SNAP #8 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:49|0040 ---- 0041 0042 0043 ]
0047 int FLOAD 0041 tab.hmask
0048 > int EQ 0047 +1 
0049 r15 p32 FLOAD 0041 tab.node
0050 > p32 HREFK 0049 "label" @1
0051 r15 > str HLOAD 0050
0052 p32 AREF 0044 +3 
0053 str ASTORE 0052 0051
.... SNAP #9 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:49|0040 ---- ---- 0042 0043 ---- ]
0054 int FLOAD 0042 tab.hmask
0055 > int EQ 0054 +1 
0056 r15 p32 FLOAD 0042 tab.node
0057 > p32 HREFK 0056 "label" @1
0058 r15 > str HLOAD 0057
0059 p32 AREF 0044 +4 
0060 str ASTORE 0059 0058
.... SNAP #10 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:49|0040 ---- ---- ---- 0043 ---- ]
0061 rsi p32 HREF 0040 "control"
0062 > p32 EQ 0061 [0x4105e458]
0063 tab FLOAD 0040 tab.meta
0064 > tab EQ 0063 [NULL]
0065 rbx p32 NEWREF 0040 "control"
0066 tab HSTORE 0065 0043
0067 nil TBAR 0040
.... SNAP #11 [ ssa.lua:55|]
---- TRACE 2 mcode 916
0bcbfaa9 mov dword [0x4105e410], 0x2
0bcbfab4 mov edi, [0x4105e3d8]
0bcbfabb cmp edi, [0x4105e3dc]
0bcbfac2 jb 0x0bcbfadb
0bcbfac4 mov esi, 0x1
0bcbfac9 mov edi, 0x4105e3b8
0bcbface call 0x00421730 ->lj_gc_step_jit
0bcbfad3 test eax, eax
0bcbfad5 jnz 0x0bcb0010 ->0
0bcbfadb mov edi, [0x4105e4b0]
0bcbfae2 mov edx, [0x4105e4b4]
0bcbfae9 mov ebp, [rdx-0x8]
0bcbfaec mov r15d, [rbp+0x8]
0bcbfaf0 mov esi, [r15+0x1c]
0bcbfaf4 and esi, 0xce2b6183
0bcbfafa lea esi, [rsi+rsi*2]
0bcbfafd shl esi, 0x03
0bcbfb00 add esi, [r15+0x14]
0bcbfb04 cmp dword [rsi+0xc], -0x05
0bcbfb08 jnz 0x0bcbfb17
0bcbfb0a cmp dword [rsi+0x8], 0x41060db0
0bcbfb11 jz 0x0bcb0010 ->0
0bcbfb17 mov esi, [rsi+0x10]
0bcbfb1a test esi, esi
0bcbfb1c jnz 0x0bcbfb04
0bcbfb1e mov ebx, [r15+0x10]
0bcbfb22 test ebx, ebx
0bcbfb24 jz 0x0bcb0010 ->0
0bcbfb2a cmp dword [rbx+0x1c], +0x01
0bcbfb2e jnz 0x0bcb0010 ->0
0bcbfb34 mov ebx, [rbx+0x14]
0bcbfb37 mov rsi, 0xfffffffb410604c8
0bcbfb41 cmp rsi, [rbx+0x20]
0bcbfb45 jnz 0x0bcb0010 ->0
0bcbfb4b cmp dword [rbx+0x1c], -0x0c
0bcbfb4f jnz 0x0bcb0010 ->0
0bcbfb55 mov ebx, [rbx+0x18]
0bcbfb58 cmp dword [rbx+0x1c], +0x3f
0bcbfb5c jnz 0x0bcb0010 ->0
0bcbfb62 mov ebx, [rbx+0x14]
0bcbfb65 mov rsi, 0xfffffffb41060db0
0bcbfb6f cmp rsi, [rbx+0x50]
0bcbfb73 jnz 0x0bcb0010 ->0
0bcbfb79 cmp dword [rbx+0x4c], -0x09
0bcbfb7d jnz 0x0bcb0010 ->0
0bcbfb83 mov esi, [r15+0x1c]
0bcbfb87 and esi, 0x798a813c
0bcbfb8d lea esi, [rsi+rsi*2]
0bcbfb90 shl esi, 0x03
0bcbfb93 add esi, [r15+0x14]
0bcbfb97 cmp dword [rsi+0xc], -0x05
0bcbfb9b jnz 0x0bcbfbaa
0bcbfb9d cmp dword [rsi+0x8], 0x41060fb0
0bcbfba4 jz 0x0bcb0010 ->0
0bcbfbaa mov esi, [rsi+0x10]
0bcbfbad test esi, esi
0bcbfbaf jnz 0x0bcbfb97
0bcbfbb1 mov rsi, 0xfffffffb41060fb0
0bcbfbbb cmp rsi, [rbx+0x5a8]
0bcbfbc2 jnz 0x0bcb0010 ->0
0bcbfbc8 cmp dword [rbx+0x5a4], -0x09
0bcbfbcf jnz 0x0bcb0010 ->0
0bcbfbd5 cmp dword [rdx+0x4], -0x0c
0bcbfbd9 jnz 0x0bcb0010 ->0
0bcbfbdf mov r15d, [rdx]
0bcbfbe2 cmp dword [rbx+0x5a0], 0x41060f18
0bcbfbec jnz 0x0bcb0010 ->0
0bcbfbf2 cmp dword [rbx+0x48], 0x41060d88
0bcbfbf9 jnz 0x0bcb0010 ->0
0bcbfbff cmp dword [r15+0x18], +0x01
0bcbfc04 jbe 0x0bcb0010 ->0
0bcbfc0a mov ebx, [r15+0x8]
0bcbfc0e cmp dword [rbx+0xc], -0x05
0bcbfc12 jnz 0x0bcb0010 ->0
0bcbfc18 mov ebx, [rbx+0x8]
0bcbfc1b cmp ebx, 0x410608f8
0bcbfc21 jz 0x0bcb0014 ->1
0bcbfc27 cmp ebx, 0x410741f0
0bcbfc2d jz 0x0bcb0018 ->2
0bcbfc33 cmp ebx, 0x41060a18
0bcbfc39 jz 0x0bcb001c ->3
0bcbfc3f cmp ebx, 0x41060870
0bcbfc45 jz 0x0bcb0020 ->4
0bcbfc4b cmp ebx, 0x41063cb0
0bcbfc51 jz 0x0bcb0024 ->5
0bcbfc57 cmp ebx, 0x4106e448
0bcbfc5d jz 0x0bcb0028 ->6
0bcbfc63 mov esi, [rbp+0x24]
0bcbfc66 cmp byte [rsi+0x6], 0x1
0bcbfc6a jnz 0x0bcb002c ->7
0bcbfc70 lea r14d, [rsi+0x8]
0bcbfc74 cmp dword [r14+0x4], -0x0c
0bcbfc79 jnz 0x0bcb002c ->7
0bcbfc7f mov r13d, [r14]
0bcbfc82 mov r14d, [r13+0x1c]
0bcbfc86 and r14d, [rbx+0x8]
0bcbfc8a lea r14d, [r14+r14*2]
0bcbfc8e shl r14d, 0x03
0bcbfc92 add r14d, [r13+0x14]
0bcbfc96 cmp dword [r14+0xc], -0x05
0bcbfc9b jnz 0x0bcbfca3
0bcbfc9d cmp ebx, [r14+0x8]
0bcbfca1 jz 0x0bcbfcb2
0bcbfca3 mov r14d, [r14+0x10]
0bcbfca7 test r14d, r14d
0bcbfcaa jnz 0x0bcbfc96
0bcbfcac mov r14d, 0x4105e458
0bcbfcb2 cmp dword [r14+0x4], -0x03
0bcbfcb7 jnz 0x0bcb002c ->7
0bcbfcbd cmp ebp, 0x419b31b0
0bcbfcc3 jnz 0x0bcb002c ->7
0bcbfcc9 cmp dword [rdx+0xc], -0x0c
0bcbfccd jnz 0x0bcb002c ->7
0bcbfcd3 mov ebp, [rdx+0x8]
0bcbfcd6 cmp dword [rdx+0x14], -0x0c
0bcbfcda jnz 0x0bcb002c ->7
0bcbfce0 mov r13d, [rdx+0x10]
0bcbfce4 cmp dword [rdx+0x1c], -0x0c
0bcbfce8 jnz 0x0bcb002c ->7
0bcbfcee mov r14d, [rdx+0x18]
0bcbfcf2 mov esi, 0x419b20e0
0bcbfcf7 call 0x004223c0 ->lj_tab_dup
0bcbfcfc mov [rsp+0x8], eax
0bcbfd00 mov edi, [0x4105e4b0]
0bcbfd07 mov eax, [rax+0x8]
0bcbfd0a mov dword [rax+0x14], 0xfffffff4
0bcbfd11 mov [rax+0x10], r15d
0bcbfd15 cmp dword [r13+0x1c], +0x01
0bcbfd1a jnz 0x0bcb0030 ->8
0bcbfd20 mov r15d, [r13+0x14]
0bcbfd24 mov rsi, 0xfffffffb419b0248
0bcbfd2e cmp rsi, [r15+0x20]
0bcbfd32 jnz 0x0bcb0030 ->8
0bcbfd38 cmp dword [r15+0x1c], -0x05
0bcbfd3d jnz 0x0bcb0030 ->8
0bcbfd43 mov r15d, [r15+0x18]
0bcbfd47 mov dword [rax+0x1c], 0xfffffffb
0bcbfd4e mov [rax+0x18], r15d
0bcbfd52 cmp dword [r14+0x1c], +0x01
0bcbfd57 jnz 0x0bcb0034 ->9
0bcbfd5d mov r15d, [r14+0x14]
0bcbfd61 mov rsi, 0xfffffffb419b0248
0bcbfd6b cmp rsi, [r15+0x20]
0bcbfd6f jnz 0x0bcb0034 ->9
0bcbfd75 cmp dword [r15+0x1c], -0x05
0bcbfd7a jnz 0x0bcb0034 ->9
0bcbfd80 mov r15d, [r15+0x18]
0bcbfd84 mov dword [rax+0x24], 0xfffffffb
0bcbfd8b mov [rax+0x20], r15d
0bcbfd8f mov esi, [rbp+0x1c]
0bcbfd92 and esi, 0x2a54dc55
0bcbfd98 lea esi, [rsi+rsi*2]
0bcbfd9b shl esi, 0x03
0bcbfd9e add esi, [rbp+0x14]
0bcbfda1 cmp dword [rsi+0xc], -0x05
0bcbfda5 jnz 0x0bcbfdb4
0bcbfda7 cmp dword [rsi+0x8], 0x419b09b0
0bcbfdae jz 0x0bcb0038 ->10
0bcbfdb4 mov esi, [rsi+0x10]
0bcbfdb7 test esi, esi
0bcbfdb9 jnz 0x0bcbfda1
0bcbfdbb cmp dword [rbp+0x10], +0x00
0bcbfdbf jnz 0x0bcb0038 ->10
0bcbfdc5 mov edx, 0x4105e448
0bcbfdca mov dword [rdx+0x4], 0xfffffffb
0bcbfdd1 mov dword [rdx], 0x419b09b0
0bcbfdd7 mov esi, ebp
0bcbfdd9 call 0x00422cf0 ->lj_tab_newkey
0bcbfdde mov ebx, eax
0bcbfde0 mov edx, [0x4105e4b4]
0bcbfde7 mov eax, [rsp+0x8]
0bcbfdeb mov dword [rbx+0x4], 0xfffffff4
0bcbfdf2 mov [rbx], eax
0bcbfdf4 test byte [rbp+0x4], 0x4
0bcbfdf8 jz 0x0bcbfe0f
0bcbfdfa and byte [rbp+0x4], 0xfb
0bcbfdfe mov edi, [0x4105e3f4]
0bcbfe05 mov [0x4105e3f4], ebp
0bcbfe0c mov [rbp+0xc], edi
0bcbfe0f mov eax, [0x4105e4b0]
0bcbfe16 mov eax, [rax+0x20]
0bcbfe19 sub eax, edx
0bcbfe1b cmp eax, +0x68
0bcbfe1e jb 0x0bcb003c ->11
0bcbfe24 mov dword [rdx-0x8], 0x419b31b0
0bcbfe2b xor eax, eax
0bcbfe2d mov ebx, 0x419b1a10
0bcbfe32 mov r14d, 0x4105f008
0bcbfe38 jmp 0x00420177
---- TRACE 2 stop -> return
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 5
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 2 exit 2
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 2 exit 3
---- TRACE 2 exit 1
---- TRACE 3 start 2/1 ssa.lua:59
0014 UGET 5 0 ; add_block
0015 CALL 5 2 1
0000 . JFUNCF 3 1 ; ssa.lua:39
0001 . UGET 0 0 ; label_counter
0002 . ADDVN 0 0 0 ; 1
0003 . USETV 0 0 ; label_counter
0004 . KSTR 0 0 ; "L"
0005 . UGET 1 0 ; label_counter
0006 . CAT 0 0 1
0007 . TDUP 1 1
0008 . TNEW 2 0
0009 . TSETS 2 1 2 ; "bindings"
0010 . TSETS 0 1 3 ; "label"
0011 . UGET 2 1 ; ssa
0012 . TGETS 2 2 4 ; "blocks"
0013 . TSETV 1 2 0
0014 . RET1 1 2
0016 UGET 6 0 ; add_block
0017 CALL 6 2 1
0000 . JFUNCF 3 1 ; ssa.lua:39
0001 . UGET 0 0 ; label_counter
0002 . ADDVN 0 0 0 ; 1
0003 . USETV 0 0 ; label_counter
0004 . KSTR 0 0 ; "L"
0005 . UGET 1 0 ; label_counter
0006 . CAT 0 0 1
0007 . TDUP 1 1
0008 . TNEW 2 0
0009 . TSETS 2 1 2 ; "bindings"
0010 . TSETS 0 1 3 ; "label"
0011 . UGET 2 1 ; ssa
0012 . TGETS 2 2 4 ; "blocks"
0013 . TSETV 1 2 0
0014 . RET1 1 2
0018 UGET 7 1 ; compile_bool
0019 TGETB 8 0 2
0020 MOV 9 1
0021 MOV 10 5
0022 MOV 11 6
0023 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0070 . ISNES 4 12 ; "match"
0071 . JMP 5 => 0077
0077 . ISNES 4 14 ; "fail"
0078 . JMP 5 => 0084
0084 . GGET 5 0 ; "assert"
0085 . UGET 6 4 ; relops
0086 . TGETV 6 6 4
0087 . CALL 5 1 2
0000 . . FUNCC ; assert
0088 . UGET 5 5 ; finish_if
0089 . MOV 6 1
0090 . MOV 7 0
0091 . MOV 8 2
0092 . MOV 9 3
0093 . CALL 5 1 5
0000 . . FUNCF 6 ; ssa.lua:49
0001 . . TDUP 4 1
0002 . . TSETB 1 4 2
0003 . . TGETS 5 2 2 ; "label"
0004 . . TSETB 5 4 3
0005 . . TGETS 5 3 2 ; "label"
0006 . . TSETB 5 4 4
0007 . . TSETS 4 0 0 ; "control"
0008 . . RET0 0 1
0094 . RET0 0 1
0024 UGET 7 1 ; compile_bool
0025 TGETB 8 0 3
0026 MOV 9 5
0027 MOV 10 2
0028 MOV 11 3
0029 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0014 . UGET 5 0 ; add_block
0015 . CALL 5 2 1
0000 . . JFUNCF 3 1 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0016 . UGET 6 0 ; add_block
0017 . CALL 6 2 1
0000 . . JFUNCF 3 1 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0018 . UGET 7 1 ; compile_bool
0019 . TGETB 8 0 2
0020 . MOV 9 1
0021 . MOV 10 5
0022 . MOV 11 6
0023 . CALL 7 1 5
0000 . . JFUNCF 13 2 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0070 . . ISNES 4 12 ; "match"
0071 . . JMP 5 => 0077
0077 . . ISNES 4 14 ; "fail"
0078 . . JMP 5 => 0084
0084 . . GGET 5 0 ; "assert"
0085 . . UGET 6 4 ; relops
0086 . . TGETV 6 6 4
0087 . . CALL 5 1 2
0000 . . . FUNCC ; assert
0088 . . UGET 5 5 ; finish_if
0089 . . MOV 6 1
0090 . . MOV 7 0
0091 . . MOV 8 2
0092 . . MOV 9 3
0093 . . CALL 5 1 5
0000 . . . FUNCF 6 ; ssa.lua:49
0001 . . . TDUP 4 1
0002 . . . TSETB 1 4 2
0003 . . . TGETS 5 2 2 ; "label"
0004 . . . TSETB 5 4 3
0005 . . . TGETS 5 3 2 ; "label"
0006 . . . TSETB 5 4 4
0007 . . . TSETS 4 0 0 ; "control"
0008 . . . RET0 0 1
0094 . . RET0 0 1
0024 . UGET 7 1 ; compile_bool
0025 . TGETB 8 0 3
0026 . MOV 9 5
0027 . MOV 10 2
0028 . MOV 11 3
0029 . CALL 7 1 5
0000 . . JFUNCF 13 2 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0070 . . ISNES 4 12 ; "match"
0071 . . JMP 5 => 0077
0077 . . ISNES 4 14 ; "fail"
0078 . . JMP 5 => 0084
0084 . . GGET 5 0 ; "assert"
0085 . . UGET 6 4 ; relops
0086 . . TGETV 6 6 4
0087 . . CALL 5 1 2
0000 . . . FUNCC ; assert
0088 . . UGET 5 5 ; finish_if
0089 . . MOV 6 1
0090 . . MOV 7 0
0091 . . MOV 8 2
0092 . . MOV 9 3
0093 . . CALL 5 1 5
0000 . . . FUNCF 6 ; ssa.lua:49
0001 . . . TDUP 4 1
0002 . . . TSETB 1 4 2
0003 . . . TGETS 5 2 2 ; "label"
0004 . . . TSETB 5 4 3
0005 . . . TGETS 5 3 2 ; "label"
0006 . . . TSETB 5 4 4
0007 . . . TSETS 4 0 0 ; "control"
0008 . . . RET0 0 1
0094 . . RET0 0 1
0030 . UGET 7 1 ; compile_bool
0031 . TGETB 8 0 4
0032 . MOV 9 6
0033 . MOV 10 2
0034 . MOV 11 3
0035 . CALL 7 1 5
0000 . . JFUNCF 13 2 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0070 . . ISNES 4 12 ; "match"
0071 . . JMP 5 => 0077
0077 . . ISNES 4 14 ; "fail"
0078 . . JMP 5 => 0084
0079 . . UGET 5 3 ; finish_return
0080 . . MOV 6 1
0081 . . TDUP 7 15
0082 . . CALL 5 1 3
0000 . . . FUNCF 3 ; ssa.lua:46
0001 . . . TDUP 2 1
0002 . . . TSETB 1 2 2
0003 . . . TSETS 2 0 0 ; "control"
0004 . . . RET0 0 1
0083 . . JMP 5 => 0094
0094 . . RET0 0 1
0036 . JMP 5 => 0094
0094 . RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0065 . UGET 5 2 ; finish_goto
0066 . MOV 6 1
0067 . MOV 7 3
0068 . CALL 5 1 3
0000 . . FUNCF 4 ; ssa.lua:52
0001 . . TDUP 2 1
0002 . . TGETS 3 1 2 ; "label"
0003 . . TSETB 3 2 2
0004 . . TSETS 2 0 0 ; "control"
0005 . . RET0 0 1
0069 . JMP 5 => 0094
0094 . RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
---- TRACE 3 abort ssa.lua:79 -- down-recursion, restarting
---- TRACE 3 start ssa.lua:79
0094 RET0 0 1
0024 UGET 7 1 ; compile_bool
0025 TGETB 8 0 3
0026 MOV 9 5
0027 MOV 10 2
0028 MOV 11 3
0029 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0070 . ISNES 4 12 ; "match"
0071 . JMP 5 => 0077
0077 . ISNES 4 14 ; "fail"
0078 . JMP 5 => 0084
0084 . GGET 5 0 ; "assert"
0085 . UGET 6 4 ; relops
0086 . TGETV 6 6 4
0087 . CALL 5 1 2
0000 . . FUNCC ; assert
0088 . UGET 5 5 ; finish_if
0089 . MOV 6 1
0090 . MOV 7 0
0091 . MOV 8 2
0092 . MOV 9 3
0093 . CALL 5 1 5
0000 . . FUNCF 6 ; ssa.lua:49
0001 . . TDUP 4 1
0002 . . TSETB 1 4 2
0003 . . TGETS 5 2 2 ; "label"
0004 . . TSETB 5 4 3
0005 . . TGETS 5 3 2 ; "label"
0006 . . TSETB 5 4 4
0007 . . TSETS 4 0 0 ; "control"
0008 . . RET0 0 1
0094 . RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0065 . UGET 5 2 ; finish_goto
0066 . MOV 6 1
0067 . MOV 7 3
0068 . CALL 5 1 3
0000 . . FUNCF 4 ; ssa.lua:52
0001 . . TDUP 2 1
0002 . . TGETS 3 1 2 ; "label"
0003 . . TSETB 3 2 2
0004 . . TSETS 2 0 0 ; "control"
0005 . . RET0 0 1
0069 . JMP 5 => 0094
0094 . RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
0024 UGET 7 1 ; compile_bool
0025 TGETB 8 0 3
0026 MOV 9 5
0027 MOV 10 2
0028 MOV 11 3
0029 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0014 . UGET 5 0 ; add_block
0015 . CALL 5 2 1
0000 . . JFUNCF 3 1 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0016 . UGET 6 0 ; add_block
0017 . CALL 6 2 1
0000 . . JFUNCF 3 1 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0018 . UGET 7 1 ; compile_bool
0019 . TGETB 8 0 2
0020 . MOV 9 1
0021 . MOV 10 5
0022 . MOV 11 6
0023 . CALL 7 1 5
0000 . . JFUNCF 13 2 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0070 . . ISNES 4 12 ; "match"
0071 . . JMP 5 => 0077
0077 . . ISNES 4 14 ; "fail"
0078 . . JMP 5 => 0084
0084 . . GGET 5 0 ; "assert"
0085 . . UGET 6 4 ; relops
0086 . . TGETV 6 6 4
0087 . . CALL 5 1 2
0000 . . . FUNCC ; assert
0088 . . UGET 5 5 ; finish_if
0089 . . MOV 6 1
0090 . . MOV 7 0
0091 . . MOV 8 2
0092 . . MOV 9 3
0093 . . CALL 5 1 5
0000 . . . FUNCF 6 ; ssa.lua:49
0001 . . . TDUP 4 1
0002 . . . TSETB 1 4 2
0003 . . . TGETS 5 2 2 ; "label"
0004 . . . TSETB 5 4 3
0005 . . . TGETS 5 3 2 ; "label"
0006 . . . TSETB 5 4 4
0007 . . . TSETS 4 0 0 ; "control"
0008 . . . RET0 0 1
0094 . . RET0 0 1
0024 . UGET 7 1 ; compile_bool
0025 . TGETB 8 0 3
0026 . MOV 9 5
0027 . MOV 10 2
0028 . MOV 11 3
0029 . CALL 7 1 5
0000 . . JFUNCF 13 2 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0070 . . ISNES 4 12 ; "match"
0071 . . JMP 5 => 0077
0077 . . ISNES 4 14 ; "fail"
0078 . . JMP 5 => 0084
0084 . . GGET 5 0 ; "assert"
0085 . . UGET 6 4 ; relops
0086 . . TGETV 6 6 4
0087 . . CALL 5 1 2
0000 . . . FUNCC ; assert
0088 . . UGET 5 5 ; finish_if
0089 . . MOV 6 1
0090 . . MOV 7 0
0091 . . MOV 8 2
0092 . . MOV 9 3
0093 . . CALL 5 1 5
0000 . . . FUNCF 6 ; ssa.lua:49
0001 . . . TDUP 4 1
0002 . . . TSETB 1 4 2
0003 . . . TGETS 5 2 2 ; "label"
0004 . . . TSETB 5 4 3
0005 . . . TGETS 5 3 2 ; "label"
0006 . . . TSETB 5 4 4
0007 . . . TSETS 4 0 0 ; "control"
0008 . . . RET0 0 1
0094 . . RET0 0 1
0030 . UGET 7 1 ; compile_bool
0031 . TGETB 8 0 4
0032 . MOV 9 6
0033 . MOV 10 2
0034 . MOV 11 3
0035 . CALL 7 1 5
0000 . . JFUNCF 13 2 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0065 . . UGET 5 2 ; finish_goto
0066 . . MOV 6 1
0067 . . MOV 7 3
0068 . . CALL 5 1 3
0000 . . . FUNCF 4 ; ssa.lua:52
0001 . . . TDUP 2 1
0002 . . . TGETS 3 1 2 ; "label"
0003 . . . TSETB 3 2 2
0004 . . . TSETS 2 0 0 ; "control"
0005 . . . RET0 0 1
0069 . . JMP 5 => 0094
0094 . . RET0 0 1
0036 . JMP 5 => 0094
0094 . RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0065 . UGET 5 2 ; finish_goto
0066 . MOV 6 1
0067 . MOV 7 3
0068 . CALL 5 1 3
0000 . . FUNCF 4 ; ssa.lua:52
0001 . . TDUP 2 1
0002 . . TGETS 3 1 2 ; "label"
0003 . . TSETB 3 2 2
0004 . . TSETS 2 0 0 ; "control"
0005 . . RET0 0 1
0069 . JMP 5 => 0094
0094 . RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
0055 JMP 5 => 0094
0094 RET0 0 1
---- TRACE 3 IR
.... SNAP #0 [ ---- ]
.... SNAP #1 [ ---- ]
0002 > p32 RETF proto: 0x419b1858 [0x419b18f8]
.... SNAP #2 [ ---- ---- ---- ---- ---- ---- ---- ---- ]
0003 fun SLOAD #0 R
0004 > fun EQ 0003 ssa.lua:55
0005 rbx > tab SLOAD #1 T
0006 int FLOAD 0005 tab.asize
0007 > int ABC 0006 +3 
0008 r15 p32 FLOAD 0005 tab.array
0009 p32 AREF 0008 +3 
0010 [7c] > tab ALOAD 0009
0011 [78] > tab SLOAD #6 T
0012 r14 > tab SLOAD #3 T
0013 r13 > tab SLOAD #4 T
0014 [48] tab FLOAD ssa.lua:55 func.env
0015 rsi p32 HREF 0014 "assert"
0016 > p32 EQ 0015 [0x4105e458]
0017 [3c] tab FLOAD 0014 tab.meta
0018 > tab NE 0017 [NULL]
0019 int FLOAD 0017 tab.hmask
0020 > int EQ 0019 +1 
0021 rsi p32 FLOAD 0017 tab.node
0022 > p32 HREFK 0021 "__index" @1
0023 rsi > tab HLOAD 0022
0024 int FLOAD 0023 tab.hmask
0025 > int EQ 0024 +63 
0026 rsi p32 FLOAD 0023 tab.node
0027 > p32 HREFK 0026 "assert" @3
0028 > fun HLOAD 0027
0029 rdx p32 HREF 0014 "type"
0030 > p32 EQ 0029 [0x4105e458]
0031 > p32 HREFK 0026 "type" @60
0032 > fun HLOAD 0031
0033 > fun EQ 0032 type
0034 > fun EQ 0028 assert
0035 int FLOAD 0010 tab.asize
0036 > int ABC 0035 +1 
0037 rsi p32 FLOAD 0010 tab.array
0038 p32 AREF 0037 +1 
0039 [74] > str ALOAD 0038
.... SNAP #3 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0040 > str NE 0039 "if"
.... SNAP #4 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0041 > str NE 0039 "let"
.... SNAP #5 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0042 > str NE 0039 "true"
.... SNAP #6 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0043 > str NE 0039 "false"
.... SNAP #7 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0044 > str NE 0039 "match"
.... SNAP #8 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0045 > str NE 0039 "fail"
.... SNAP #9 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0046 > p32 UREFC ssa.lua:55 #4
0047 [40] > tab ULOAD 0046
0048 rsi p32 HREF 0047 0039
0049 > tru HLOAD 0048
0050 [70] > tab TDUP {0x419b20e0}
0051 rax p32 FLOAD 0050 tab.array
0052 p32 AREF 0051 +2 
0053 tab ASTORE 0052 0010
.... SNAP #10 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ssa.lua:49|0011 ---- 0012 0013 0050 ]
0054 int FLOAD 0012 tab.hmask
0055 > int EQ 0054 +1 
0056 r15 p32 FLOAD 0012 tab.node
0057 > p32 HREFK 0056 "label" @1
0058 r15 > str HLOAD 0057
0059 p32 AREF 0051 +3 
0060 str ASTORE 0059 0058
.... SNAP #11 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ssa.lua:49|0011 ---- ---- 0013 0050 ---- ]
0061 int FLOAD 0013 tab.hmask
0062 > int EQ 0061 +1 
0063 r15 p32 FLOAD 0013 tab.node
0064 > p32 HREFK 0063 "label" @1
0065 r15 > str HLOAD 0064
0066 p32 AREF 0051 +4 
0067 str ASTORE 0066 0065
.... SNAP #12 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ssa.lua:49|0011 ---- ---- ---- 0050 ---- ]
0068 rdx p32 HREF 0011 "control"
0069 > p32 EQ 0068 [0x4105e458]
0070 tab FLOAD 0011 tab.meta
0071 > tab EQ 0070 [NULL]
0072 r15 p32 NEWREF 0011 "control"
0073 tab HSTORE 0072 0050
0074 nil TBAR 0011
.... SNAP #13 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ssa.lua:49|---- ---- ---- ---- ---- ---- ]
0075 int FLOAD 0005 tab.asize
0076 > int ABC 0075 +4 
0077 rbx p32 FLOAD 0005 tab.array
0078 p32 AREF 0077 +4 
0079 r15 > tab ALOAD 0078
0080 rbx > tab SLOAD #7 T
0081 rax p32 HREF 0014 "assert"
0082 > p32 EQ 0081 [0x4105e458]
0083 int FLOAD 0017 tab.hmask
0084 > int EQ 0083 +1 
0085 r12 p32 FLOAD 0017 tab.node
0086 > p32 HREFK 0085 "__index" @1
0087 r12 > tab HLOAD 0086
0088 int FLOAD 0087 tab.hmask
0089 > int EQ 0088 +63 
0090 r12 p32 FLOAD 0087 tab.node
0091 > p32 HREFK 0090 "assert" @3
0092 > fun HLOAD 0091
0093 rax p32 HREF 0014 "type"
0094 > p32 EQ 0093 [0x4105e458]
0095 > p32 HREFK 0090 "type" @60
0096 > fun HLOAD 0095
0097 > fun EQ 0096 type
0098 > fun EQ 0092 assert
0099 int FLOAD 0079 tab.asize
0100 > int ABC 0099 +1 
0101 r12 p32 FLOAD 0079 tab.array
0102 p32 AREF 0101 +1 
0103 r12 > str ALOAD 0102
.... SNAP #14 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0079 0080 0012 0013 0103 ]
0104 > str NE 0103 "if"
.... SNAP #15 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0079 0080 0012 0013 0103 ]
0105 > str NE 0103 "let"
.... SNAP #16 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0079 0080 0012 0013 0103 ]
0106 > str NE 0103 "true"
.... SNAP #17 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0079 0080 0012 0013 0103 ]
0107 > str EQ 0103 "false"
.... SNAP #18 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0079 0080 0012 0013 0103 ]
0108 [6c] > tab TDUP {0x419b23c0}
0109 int FLOAD 0013 tab.hmask
0110 > int EQ 0109 +1 
0111 rsi p32 FLOAD 0013 tab.node
0112 > p32 HREFK 0111 "label" @1
0113 rsi > str HLOAD 0112
0114 rax p32 FLOAD 0108 tab.array
0115 p32 AREF 0114 +2 
0116 str ASTORE 0115 0113
.... SNAP #19 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0079 0080 0012 0013 0103 ssa.lua:52|0080 ---- 0108 ---- ]
0117 rsi p32 HREF 0080 "control"
0118 > p32 EQ 0117 [0x4105e458]
0119 tab FLOAD 0080 tab.meta
0120 > tab EQ 0119 [NULL]
0121 r15 p32 NEWREF 0080 "control"
0122 tab HSTORE 0121 0108
0123 nil TBAR 0080
.... SNAP #20 [ ssa.lua:55|---- ---- ---- ---- ---- ]
0124 > p32 RETF proto: 0x419b1858 [0x419b18f8]
.... SNAP #21 [ ---- ---- ---- ---- ---- ---- ---- ---- ]
0125 fun SLOAD #0 R
0126 > fun EQ 0125 ssa.lua:55
0127 rbx > tab SLOAD #1 T
0128 int FLOAD 0127 tab.asize
0129 > int ABC 0128 +3 
0130 r15 p32 FLOAD 0127 tab.array
0131 p32 AREF 0130 +3 
0132 [18] > tab ALOAD 0131
0133 [14] > tab SLOAD #6 T
0134 r15 > tab SLOAD #3 T
0135 r14 > tab SLOAD #4 T
0136 rdi p32 HREF 0014 "assert"
0137 > p32 EQ 0136 [0x4105e458]
0138 int FLOAD 0017 tab.hmask
0139 > int EQ 0138 +1 
0140 r12 p32 FLOAD 0017 tab.node
0141 > p32 HREFK 0140 "__index" @1
0142 r12 > tab HLOAD 0141
0143 int FLOAD 0142 tab.hmask
0144 > int EQ 0143 +63 
0145 r12 p32 FLOAD 0142 tab.node
0146 > p32 HREFK 0145 "assert" @3
0147 > fun HLOAD 0146
0148 rdi p32 HREF 0014 "type"
0149 > p32 EQ 0148 [0x4105e458]
0150 > p32 HREFK 0145 "type" @60
0151 > fun HLOAD 0150
0152 > fun EQ 0151 type
0153 > fun EQ 0147 assert
0154 int FLOAD 0132 tab.asize
0155 > int ABC 0154 +1 
0156 r12 p32 FLOAD 0132 tab.array
0157 p32 AREF 0156 +1 
0158 [10] > str ALOAD 0157
.... SNAP #22 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 ]
0159 > str EQ 0158 "if"
.... SNAP #23 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 ]
0160 [64] > p32 UREFO ssa.lua:39 #0
0161 xmm7 > num ULOAD 0160
0162 [58] num ADD 0161 +1 
0163 num USTORE 0160 0162
.... SNAP #24 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 ssa.lua:39|---- ]
0164 str TOSTR 0162 NUM
0165 rdi p32 BUFHDR [0x4105e414] RESET
0166 rdi p32 BUFPUT 0165 "L" 
0167 rdi p32 BUFPUT 0166 0164
0168 [68] str BUFSTR 0167 0165
0169 [c] > tab TDUP {0x419b0f30}
0170 rsi > tab TNEW #0 #0
0171 r12 p32 FLOAD 0169 tab.node
0172 p32 HREFK 0171 "bindings" @2
0173 tab HSTORE 0172 0170
0174 p32 HREFK 0171 "label" @3
0175 str HSTORE 0174 0168
.... SNAP #25 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 ssa.lua:39|0168 0169 ---- ]
0176 r12 > p32 UREFO ssa.lua:39 #1
0177 r12 > tab ULOAD 0176
0178 int FLOAD 0177 tab.hmask
0179 > int EQ 0178 +1 
0180 rsi p32 FLOAD 0177 tab.node
0181 > p32 HREFK 0180 "blocks" @0
0182 [60] > tab HLOAD 0181
0183 rdx p32 HREF 0182 0168
0184 > p32 EQ 0183 [0x4105e458]
0185 tab FLOAD 0182 tab.meta
0186 > tab EQ 0185 [NULL]
0187 rax p32 NEWREF 0182 0168
0188 tab HSTORE 0187 0169
0189 nil TBAR 0182
0190 p32 FREF 0182 tab.nomm
0191 u8  FSTORE 0190 +0 
0192 [50] num ADD 0162 +1 
0193 num USTORE 0160 0192
.... SNAP #26 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 ssa.lua:39|---- ]
0194 str TOSTR 0192 NUM
0195 rdi p32 BUFHDR [0x4105e414] RESET
0196 rdi p32 BUFPUT 0195 "L" 
0197 rdi p32 BUFPUT 0196 0194
0198 [4c] str BUFSTR 0197 0195
0199 [28] > tab TDUP {0x419b0f30}
0200 rsi > tab TNEW #0 #0
0201 [1c] p32 FLOAD 0199 tab.node
0202 p32 HREFK 0201 "bindings" @2
0203 tab HSTORE 0202 0200
0204 p32 HREFK 0201 "label" @3
0205 str HSTORE 0204 0198
.... SNAP #27 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 ssa.lua:39|0198 0199 ---- ]
0206 int FLOAD 0177 tab.hmask
0207 > int EQ 0206 +1 
0208 r12 p32 FLOAD 0177 tab.node
0209 > p32 HREFK 0208 "blocks" @0
0210 r12 > tab HLOAD 0209
0211 rsi p32 HREF 0210 0198
0212 > p32 EQ 0211 [0x4105e458]
0213 tab FLOAD 0210 tab.meta
0214 > tab EQ 0213 [NULL]
0215 rax p32 NEWREF 0210 0198
0216 tab HSTORE 0215 0199
0217 nil TBAR 0210
0218 p32 FREF 0210 tab.nomm
0219 u8  FSTORE 0218 +0 
.... SNAP #28 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 ssa.lua:39|---- 0199 ---- ]
0220 int FLOAD 0132 tab.asize
0221 > int ABC 0220 +2 
0222 r12 p32 FLOAD 0132 tab.array
0223 p32 AREF 0222 +2 
0224 r12 > tab ALOAD 0223
0225 rcx p32 HREF 0014 "assert"
0226 > p32 EQ 0225 [0x4105e458]
0227 int FLOAD 0017 tab.hmask
0228 > int EQ 0227 +1 
0229 rsi p32 FLOAD 0017 tab.node
0230 > p32 HREFK 0229 "__index" @1
0231 rsi > tab HLOAD 0230
0232 int FLOAD 0231 tab.hmask
0233 > int EQ 0232 +63 
0234 rsi p32 FLOAD 0231 tab.node
0235 > p32 HREFK 0234 "assert" @3
0236 > fun HLOAD 0235
0237 rcx p32 HREF 0014 "type"
0238 > p32 EQ 0237 [0x4105e458]
0239 > p32 HREFK 0234 "type" @60
0240 > fun HLOAD 0239
0241 > fun EQ 0240 type
0242 > fun EQ 0236 assert
0243 int FLOAD 0224 tab.asize
0244 > int ABC 0243 +1 
0245 rsi p32 FLOAD 0224 tab.array
0246 p32 AREF 0245 +1 
0247 [38] > str ALOAD 0246
.... SNAP #29 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0224 0133 0169 0199 0247 ]
0248 > str NE 0247 "if"
.... SNAP #30 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0224 0133 0169 0199 0247 ]
0249 > str NE 0247 "let"
.... SNAP #31 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0224 0133 0169 0199 0247 ]
0250 > str NE 0247 "true"
.... SNAP #32 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0224 0133 0169 0199 0247 ]
0251 > str NE 0247 "false"
.... SNAP #33 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0224 0133 0169 0199 0247 ]
0252 > str NE 0247 "match"
.... SNAP #34 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0224 0133 0169 0199 0247 ]
0253 > str NE 0247 "fail"
.... SNAP #35 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0224 0133 0169 0199 0247 ]
0254 rsi p32 HREF 0047 0247
0255 > tru HLOAD 0254
0256 [44] > tab TDUP {0x419b20e0}
0257 rdx p32 FLOAD 0256 tab.array
0258 p32 AREF 0257 +2 
0259 tab ASTORE 0258 0224
.... SNAP #36 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0224 0133 0169 0199 0247 ssa.lua:49|0133 ---- 0169 0199 0256 ]
0260 int FLOAD 0169 tab.hmask
0261 > int EQ 0260 +3 
0262 [2c] p32 FLOAD 0169 tab.node
0263 > p32 HREFK 0262 "label" @3
0264 rcx > str HLOAD 0263
0265 p32 AREF 0257 +3 
0266 str ASTORE 0265 0264
0267 p32 AREF 0257 +4 
0268 str ASTORE 0267 0198
.... SNAP #37 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0224 0133 0169 0199 0247 ssa.lua:49|0133 ---- ---- ---- 0256 ---- ]
0269 rdx p32 HREF 0133 "control"
0270 > p32 EQ 0269 [0x4105e458]
0271 tab FLOAD 0133 tab.meta
0272 > tab EQ 0271 [NULL]
0273 r9 p32 NEWREF 0133 "control"
0274 tab HSTORE 0273 0256
0275 nil TBAR 0133
.... SNAP #38 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0224 0133 0169 0199 0247 ssa.lua:49|---- ---- ---- ---- ---- ---- ]
0276 int FLOAD 0132 tab.asize
0277 > int ABC 0276 +4 
0278 [30] p32 FLOAD 0132 tab.array
0279 p32 AREF 0278 +3 
0280 r13 > tab ALOAD 0279
0281 rax p32 HREF 0014 "assert"
0282 > p32 EQ 0281 [0x4105e458]
0283 int FLOAD 0017 tab.hmask
0284 > int EQ 0283 +1 
0285 rdx p32 FLOAD 0017 tab.node
0286 > p32 HREFK 0285 "__index" @1
0287 rdx > tab HLOAD 0286
0288 int FLOAD 0287 tab.hmask
0289 > int EQ 0288 +63 
0290 rdx p32 FLOAD 0287 tab.node
0291 > p32 HREFK 0290 "assert" @3
0292 > fun HLOAD 0291
0293 rax p32 HREF 0014 "type"
0294 > p32 EQ 0293 [0x4105e458]
0295 > p32 HREFK 0290 "type" @60
0296 > fun HLOAD 0295
0297 > fun EQ 0296 type
0298 > fun EQ 0292 assert
0299 int FLOAD 0280 tab.asize
0300 > int ABC 0299 +1 
0301 rdx p32 FLOAD 0280 tab.array
0302 p32 AREF 0301 +1 
0303 [34] > str ALOAD 0302
.... SNAP #39 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0280 0169 0134 0135 0303 ]
0304 > str NE 0303 "if"
.... SNAP #40 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0280 0169 0134 0135 0303 ]
0305 > str NE 0303 "let"
.... SNAP #41 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0280 0169 0134 0135 0303 ]
0306 > str NE 0303 "true"
.... SNAP #42 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0280 0169 0134 0135 0303 ]
0307 > str NE 0303 "false"
.... SNAP #43 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0280 0169 0134 0135 0303 ]
0308 > str NE 0303 "match"
.... SNAP #44 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0280 0169 0134 0135 0303 ]
0309 > str NE 0303 "fail"
.... SNAP #45 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0280 0169 0134 0135 0303 ]
0310 r12 p32 HREF 0047 0303
0311 > tru HLOAD 0310
0312 rax > tab TDUP {0x419b20e0}
0313 r11 p32 FLOAD 0312 tab.array
0314 p32 AREF 0313 +2 
0315 tab ASTORE 0314 0280
.... SNAP #46 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0280 0169 0134 0135 0303 ssa.lua:49|0169 ---- 0134 0135 0312 ]
0316 int FLOAD 0134 tab.hmask
0317 > int EQ 0316 +1 
0318 r12 p32 FLOAD 0134 tab.node
0319 > p32 HREFK 0318 "label" @1
0320 r12 > str HLOAD 0319
0321 p32 AREF 0313 +3 
0322 str ASTORE 0321 0320
.... SNAP #47 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0280 0169 0134 0135 0303 ssa.lua:49|0169 ---- ---- 0135 0312 ---- ]
0323 int FLOAD 0135 tab.hmask
0324 > int EQ 0323 +1 
0325 r12 p32 FLOAD 0135 tab.node
0326 > p32 HREFK 0325 "label" @1
0327 r12 > str HLOAD 0326
0328 p32 AREF 0313 +4 
0329 str ASTORE 0328 0327
.... SNAP #48 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0280 0169 0134 0135 0303 ssa.lua:49|0169 ---- ---- ---- 0312 ---- ]
0330 > p32 HREFK 0262 "control" @1
0331 tab HSTORE 0330 0312
.... SNAP #49 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0280 0169 0134 0135 0303 ssa.lua:49|---- ---- ---- ---- ---- ---- ]
0332 p32 AREF 0278 +4 
0333 [24] > tab ALOAD 0332
0334 int FLOAD 0333 tab.asize
0335 > int ABC 0334 +1 
0336 rdx p32 FLOAD 0333 tab.array
0337 p32 AREF 0336 +1 
0338 [20] > str ALOAD 0337
.... SNAP #50 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0333 0199 0134 0135 0338 ]
0339 > str NE 0338 "if"
.... SNAP #51 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0333 0199 0134 0135 0338 ]
0340 > str NE 0338 "let"
.... SNAP #52 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0333 0199 0134 0135 0338 ]
0341 > str NE 0338 "true"
.... SNAP #53 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0333 0199 0134 0135 0338 ]
0342 > str EQ 0338 "false"
.... SNAP #54 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0333 0199 0134 0135 0338 ]
0343 r13 > tab TDUP {0x419b23c0}
0344 rdi p32 FLOAD 0343 tab.array
0345 p32 AREF 0344 +2 
0346 str ASTORE 0345 0327
0347 p32 HREFK 0201 "control" @1
0348 tab HSTORE 0347 0343
.... SNAP #55 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0333 0199 0134 0135 0338 ssa.lua:52|---- ---- ---- ---- ]
0349 int FLOAD 0127 tab.asize
0350 > int ABC 0349 +4 
0351 rbx p32 FLOAD 0127 tab.array
0352 p32 AREF 0351 +4 
0353 rbx > tab ALOAD 0352
0354 rbp > tab SLOAD #7 T
0355 int FLOAD 0353 tab.asize
0356 > int ABC 0355 +1 
0357 r13 p32 FLOAD 0353 tab.array
0358 p32 AREF 0357 +1 
0359 r13 > str ALOAD 0358
.... SNAP #56 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0353 0354 0134 0135 0359 ]
0360 > str NE 0359 "if"
.... SNAP #57 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0353 0354 0134 0135 0359 ]
0361 > str NE 0359 "let"
.... SNAP #58 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0353 0354 0134 0135 0359 ]
0362 > str NE 0359 "true"
.... SNAP #59 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0353 0354 0134 0135 0359 ]
0363 > str EQ 0359 "false"
.... SNAP #60 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0353 0354 0134 0135 0359 ]
0364 [8] > tab TDUP {0x419b23c0}
0365 rax p32 FLOAD 0364 tab.array
0366 p32 AREF 0365 +2 
0367 str ASTORE 0366 0327
.... SNAP #61 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0353 0354 0134 0135 0359 ssa.lua:52|0354 ---- 0364 ---- ]
0368 rsi p32 HREF 0354 "control"
0369 > p32 EQ 0368 [0x4105e458]
0370 tab FLOAD 0354 tab.meta
0371 > tab EQ 0370 [NULL]
0372 rbx p32 NEWREF 0354 "control"
0373 tab HSTORE 0372 0364
0374 nil TBAR 0354
.... SNAP #62 [ ssa.lua:55|---- ---- ---- ---- ---- ]
0375 > p32 RETF proto: 0x419b1858 [0x419b1974]
.... SNAP #63 [ ---- ]
---- TRACE 3 mcode 4549
0bcbe8e1 add rsp, -0x70
0bcbe8e5 mov dword [0x4105e410], 0x3
0bcbe8f0 mov ebp, edx
0bcbe8f2 mov edi, [0x4105e3d8]
0bcbe8f9 cmp edi, [0x4105e3dc]
0bcbe900 jb 0x0bcbe919
0bcbe902 mov esi, 0xc
0bcbe907 mov edi, 0x4105e3b8
0bcbe90c call 0x00421730 ->lj_gc_step_jit
0bcbe911 test eax, eax
0bcbe913 jnz 0x0bcb0010 ->0
0bcbe919 mov edi, [0x4105e4b0]
0bcbe920 cmp dword [rbp-0x4], 0x419b18f8
0bcbe927 jnz 0x0bcb0014 ->1
0bcbe92d add ebp, -0x40
0bcbe930 mov [0x4105e4b4], ebp
0bcbe937 cmp dword [rbp-0x8], 0x419b31b0
0bcbe93e jnz 0x0bcb0018 ->2
0bcbe944 cmp dword [rbp+0x4], -0x0c
0bcbe948 jnz 0x0bcb0018 ->2
0bcbe94e mov ebx, [rbp+0x0]
0bcbe951 cmp dword [rbx+0x18], +0x03
0bcbe955 jbe 0x0bcb0018 ->2
0bcbe95b mov r15d, [rbx+0x8]
0bcbe95f cmp dword [r15+0x1c], -0x0c
0bcbe964 jnz 0x0bcb0018 ->2
0bcbe96a mov r15d, [r15+0x18]
0bcbe96e mov [rsp+0x7c], r15d
0bcbe973 cmp dword [rbp+0x2c], -0x0c
0bcbe977 jnz 0x0bcb0018 ->2
0bcbe97d mov esi, [rbp+0x28]
0bcbe980 mov [rsp+0x78], esi
0bcbe984 cmp dword [rbp+0x14], -0x0c
0bcbe988 jnz 0x0bcb0018 ->2
0bcbe98e mov r14d, [rbp+0x10]
0bcbe992 cmp dword [rbp+0x1c], -0x0c
0bcbe996 jnz 0x0bcb0018 ->2
0bcbe99c mov r13d, [rbp+0x18]
0bcbe9a0 mov r11d, [0x419b31b8]
0bcbe9a8 mov [rsp+0x48], r11d
0bcbe9ad mov esi, [r11+0x1c]
0bcbe9b1 and esi, 0xce2b6183
0bcbe9b7 lea esi, [rsi+rsi*2]
0bcbe9ba shl esi, 0x03
0bcbe9bd add esi, [r11+0x14]
0bcbe9c1 cmp dword [rsi+0xc], -0x05
0bcbe9c5 jnz 0x0bcbe9d4
0bcbe9c7 cmp dword [rsi+0x8], 0x41060db0
0bcbe9ce jz 0x0bcb0018 ->2
0bcbe9d4 mov esi, [rsi+0x10]
0bcbe9d7 test esi, esi
0bcbe9d9 jnz 0x0bcbe9c1
0bcbe9db mov r12d, [r11+0x10]
0bcbe9df mov [rsp+0x3c], r12d
0bcbe9e4 test r12d, r12d
0bcbe9e7 jz 0x0bcb0018 ->2
0bcbe9ed cmp dword [r12+0x1c], +0x01
0bcbe9f3 jnz 0x0bcb0018 ->2
0bcbe9f9 mov esi, [r12+0x14]
0bcbe9fe mov rdx, 0xfffffffb410604c8
0bcbea08 cmp rdx, [rsi+0x20]
0bcbea0c jnz 0x0bcb0018 ->2
0bcbea12 cmp dword [rsi+0x1c], -0x0c
0bcbea16 jnz 0x0bcb0018 ->2
0bcbea1c mov esi, [rsi+0x18]
0bcbea1f cmp dword [rsi+0x1c], +0x3f
0bcbea23 jnz 0x0bcb0018 ->2
0bcbea29 mov esi, [rsi+0x14]
0bcbea2c mov rdx, 0xfffffffb41060db0
0bcbea36 cmp rdx, [rsi+0x50]
0bcbea3a jnz 0x0bcb0018 ->2
0bcbea40 cmp dword [rsi+0x4c], -0x09
0bcbea44 jnz 0x0bcb0018 ->2
0bcbea4a mov edx, [r11+0x1c]
0bcbea4e and edx, 0x798a813c
0bcbea54 lea edx, [rdx+rdx*2]
0bcbea57 shl edx, 0x03
0bcbea5a add edx, [r11+0x14]
0bcbea5e cmp dword [rdx+0xc], -0x05
0bcbea62 jnz 0x0bcbea71
0bcbea64 cmp dword [rdx+0x8], 0x41060fb0
0bcbea6b jz 0x0bcb0018 ->2
0bcbea71 mov edx, [rdx+0x10]
0bcbea74 test edx, edx
0bcbea76 jnz 0x0bcbea5e
0bcbea78 mov rdx, 0xfffffffb41060fb0
0bcbea82 cmp rdx, [rsi+0x5a8]
0bcbea89 jnz 0x0bcb0018 ->2
0bcbea8f cmp dword [rsi+0x5a4], -0x09
0bcbea96 jnz 0x0bcb0018 ->2
0bcbea9c cmp dword [rsi+0x5a0], 0x41060f18
0bcbeaa6 jnz 0x0bcb0018 ->2
0bcbeaac cmp dword [rsi+0x48], 0x41060d88
0bcbeab3 jnz 0x0bcb0018 ->2
0bcbeab9 cmp dword [r15+0x18], +0x01
0bcbeabe jbe 0x0bcb0018 ->2
0bcbeac4 mov esi, [r15+0x8]
0bcbeac8 cmp dword [rsi+0xc], -0x05
0bcbeacc jnz 0x0bcb0018 ->2
0bcbead2 mov ecx, [rsi+0x8]
0bcbead5 mov [rsp+0x74], ecx
0bcbead9 cmp ecx, 0x410608f8
0bcbeadf jz 0x0bcb001c ->3
0bcbeae5 cmp ecx, 0x410741f0
0bcbeaeb jz 0x0bcb0020 ->4
0bcbeaf1 cmp ecx, 0x41060a18
0bcbeaf7 jz 0x0bcb0024 ->5
0bcbeafd cmp ecx, 0x41060870
0bcbeb03 jz 0x0bcb0028 ->6
0bcbeb09 cmp ecx, 0x41063cb0
0bcbeb0f jz 0x0bcb002c ->7
0bcbeb15 cmp ecx, 0x4106e448
0bcbeb1b jz 0x0bcb0030 ->8
0bcbeb21 cmp dword [0x41072a74], -0x0c
0bcbeb29 jnz 0x0bcb0034 ->9
0bcbeb2f mov edx, [0x41072a70]
0bcbeb36 mov [rsp+0x40], edx
0bcbeb3a mov esi, [rdx+0x1c]
0bcbeb3d and esi, [rcx+0x8]
0bcbeb40 lea esi, [rsi+rsi*2]
0bcbeb43 shl esi, 0x03
0bcbeb46 add esi, [rdx+0x14]
0bcbeb49 cmp dword [rsi+0xc], -0x05
0bcbeb4d jnz 0x0bcbeb54
0bcbeb4f cmp ecx, [rsi+0x8]
0bcbeb52 jz 0x0bcbeb60
0bcbeb54 mov esi, [rsi+0x10]
0bcbeb57 test esi, esi
0bcbeb59 jnz 0x0bcbeb49
0bcbeb5b mov esi, 0x4105e458
0bcbeb60 cmp dword [rsi+0x4], -0x03
0bcbeb64 jnz 0x0bcb0034 ->9
0bcbeb6a mov esi, 0x419b20e0
0bcbeb6f call 0x004223c0 ->lj_tab_dup
0bcbeb74 mov [rsp+0x70], eax
0bcbeb78 mov edi, [0x4105e4b0]
0bcbeb7f mov esi, [rsp+0x78]
0bcbeb83 mov eax, [rax+0x8]
0bcbeb86 mov dword [rax+0x14], 0xfffffff4
0bcbeb8d mov [rax+0x10], r15d
0bcbeb91 cmp dword [r14+0x1c], +0x01
0bcbeb96 jnz 0x0bcb0038 ->10
0bcbeb9c mov r15d, [r14+0x14]
0bcbeba0 mov rdx, 0xfffffffb419b0248
0bcbebaa cmp rdx, [r15+0x20]
0bcbebae jnz 0x0bcb0038 ->10
0bcbebb4 cmp dword [r15+0x1c], -0x05
0bcbebb9 jnz 0x0bcb0038 ->10
0bcbebbf mov r15d, [r15+0x18]
0bcbebc3 mov dword [rax+0x1c], 0xfffffffb
0bcbebca mov [rax+0x18], r15d
0bcbebce cmp dword [r13+0x1c], +0x01
0bcbebd3 jnz 0x0bcb003c ->11
0bcbebd9 mov r15d, [r13+0x14]
0bcbebdd mov rdx, 0xfffffffb419b0248
0bcbebe7 cmp rdx, [r15+0x20]
0bcbebeb jnz 0x0bcb003c ->11
0bcbebf1 cmp dword [r15+0x1c], -0x05
0bcbebf6 jnz 0x0bcb003c ->11
0bcbebfc mov r15d, [r15+0x18]
0bcbec00 mov dword [rax+0x24], 0xfffffffb
0bcbec07 mov [rax+0x20], r15d
0bcbec0b mov edx, [rsi+0x1c]
0bcbec0e and edx, 0x2a54dc55
0bcbec14 lea edx, [rdx+rdx*2]
0bcbec17 shl edx, 0x03
0bcbec1a add edx, [rsi+0x14]
0bcbec1d cmp dword [rdx+0xc], -0x05
0bcbec21 jnz 0x0bcbec30
0bcbec23 cmp dword [rdx+0x8], 0x419b09b0
0bcbec2a jz 0x0bcb0040 ->12
0bcbec30 mov edx, [rdx+0x10]
0bcbec33 test edx, edx
0bcbec35 jnz 0x0bcbec1d
0bcbec37 cmp dword [rsi+0x10], +0x00
0bcbec3b jnz 0x0bcb0040 ->12
0bcbec41 mov edx, 0x4105e448
0bcbec46 mov dword [rdx+0x4], 0xfffffffb
0bcbec4d mov dword [rdx], 0x419b09b0
0bcbec53 call 0x00422cf0 ->lj_tab_newkey
0bcbec58 mov r15d, eax
0bcbec5b mov r11d, [rsp+0x48]
0bcbec60 mov edi, [0x4105e4b0]
0bcbec67 mov edx, [rsp+0x78]
0bcbec6b mov eax, [rsp+0x70]
0bcbec6f mov dword [r15+0x4], 0xfffffff4
0bcbec77 mov [r15], eax
0bcbec7a test byte [rdx+0x4], 0x4
0bcbec7e jz 0x0bcbec95
0bcbec80 and byte [rdx+0x4], 0xfb
0bcbec84 mov eax, [0x4105e3f4]
0bcbec8b mov [0x4105e3f4], edx
0bcbec92 mov [rdx+0xc], eax
0bcbec95 cmp dword [rbx+0x18], +0x04
0bcbec99 jbe 0x0bcb0044 ->13
0bcbec9f mov ebx, [rbx+0x8]
0bcbeca2 cmp dword [rbx+0x24], -0x0c
0bcbeca6 jnz 0x0bcb0044 ->13
0bcbecac mov r15d, [rbx+0x20]
0bcbecb0 cmp dword [rbp+0x34], -0x0c
0bcbecb4 jnz 0x0bcb0044 ->13
0bcbecba mov ebx, [rbp+0x30]
0bcbecbd mov eax, [r11+0x1c]
0bcbecc1 and eax, 0xce2b6183
0bcbecc7 lea eax, [rax+rax*2]
0bcbecca shl eax, 0x03
0bcbeccd add eax, [r11+0x14]
0bcbecd1 cmp dword [rax+0xc], -0x05
0bcbecd5 jnz 0x0bcbece4
0bcbecd7 cmp dword [rax+0x8], 0x41060db0
0bcbecde jz 0x0bcb0044 ->13
0bcbece4 mov eax, [rax+0x10]
0bcbece7 test eax, eax
0bcbece9 jnz 0x0bcbecd1
0bcbeceb cmp dword [r12+0x1c], +0x01
0bcbecf1 jnz 0x0bcb0044 ->13
0bcbecf7 mov r12d, [r12+0x14]
0bcbecfc mov rax, 0xfffffffb410604c8
0bcbed06 cmp rax, [r12+0x20]
0bcbed0b jnz 0x0bcb0044 ->13
0bcbed11 cmp dword [r12+0x1c], -0x0c
0bcbed17 jnz 0x0bcb0044 ->13
0bcbed1d mov r12d, [r12+0x18]
0bcbed22 cmp dword [r12+0x1c], +0x3f
0bcbed28 jnz 0x0bcb0044 ->13
0bcbed2e mov r12d, [r12+0x14]
0bcbed33 mov rax, 0xfffffffb41060db0
0bcbed3d cmp rax, [r12+0x50]
0bcbed42 jnz 0x0bcb0044 ->13
0bcbed48 cmp dword [r12+0x4c], -0x09
0bcbed4e jnz 0x0bcb0044 ->13
0bcbed54 mov eax, [r11+0x1c]
0bcbed58 and eax, 0x798a813c
0bcbed5e lea eax, [rax+rax*2]
0bcbed61 shl eax, 0x03
0bcbed64 add eax, [r11+0x14]
0bcbed68 cmp dword [rax+0xc], -0x05
0bcbed6c jnz 0x0bcbed7b
0bcbed6e cmp dword [rax+0x8], 0x41060fb0
0bcbed75 jz 0x0bcb0044 ->13
0bcbed7b mov eax, [rax+0x10]
0bcbed7e test eax, eax
0bcbed80 jnz 0x0bcbed68
0bcbed82 mov rax, 0xfffffffb41060fb0
0bcbed8c cmp rax, [r12+0x5a8]
0bcbed94 jnz 0x0bcb0044 ->13
0bcbed9a cmp dword [r12+0x5a4], -0x09
0bcbeda3 jnz 0x0bcb0044 ->13
0bcbeda9 cmp dword [r12+0x5a0], 0x41060f18
0bcbedb5 jnz 0x0bcb0044 ->13
0bcbedbb cmp dword [r12+0x48], 0x41060d88
0bcbedc4 jnz 0x0bcb0044 ->13
0bcbedca cmp dword [r15+0x18], +0x01
0bcbedcf jbe 0x0bcb0044 ->13
0bcbedd5 mov r12d, [r15+0x8]
0bcbedd9 cmp dword [r12+0xc], -0x05
0bcbeddf jnz 0x0bcb0044 ->13
0bcbede5 mov r12d, [r12+0x8]
0bcbedea cmp r12d, 0x410608f8
0bcbedf1 jz 0x0bcb0048 ->14
0bcbedf7 cmp r12d, 0x410741f0
0bcbedfe jz 0x0bcb004c ->15
0bcbee04 cmp r12d, 0x41060a18
0bcbee0b jz 0x0bcb0050 ->16
0bcbee11 cmp r12d, 0x41060870
0bcbee18 jnz 0x0bcb0054 ->17
0bcbee1e mov esi, 0x419b23c0
0bcbee23 call 0x004223c0 ->lj_tab_dup
0bcbee28 mov [rsp+0x6c], eax
0bcbee2c mov edi, [0x4105e4b0]
0bcbee33 cmp dword [r13+0x1c], +0x01
0bcbee38 jnz 0x0bcb0058 ->18
0bcbee3e mov esi, [r13+0x14]
0bcbee42 mov rdx, 0xfffffffb419b0248
0bcbee4c cmp rdx, [rsi+0x20]
0bcbee50 jnz 0x0bcb0058 ->18
0bcbee56 cmp dword [rsi+0x1c], -0x05
0bcbee5a jnz 0x0bcb0058 ->18
0bcbee60 mov esi, [rsi+0x18]
0bcbee63 mov eax, [rax+0x8]
0bcbee66 mov dword [rax+0x14], 0xfffffffb
0bcbee6d mov [rax+0x10], esi
0bcbee70 mov esi, [rbx+0x1c]
0bcbee73 and esi, 0x2a54dc55
0bcbee79 lea esi, [rsi+rsi*2]
0bcbee7c shl esi, 0x03
0bcbee7f add esi, [rbx+0x14]
0bcbee82 cmp dword [rsi+0xc], -0x05
0bcbee86 jnz 0x0bcbee95
0bcbee88 cmp dword [rsi+0x8], 0x419b09b0
0bcbee8f jz 0x0bcb005c ->19
0bcbee95 mov esi, [rsi+0x10]
0bcbee98 test esi, esi
0bcbee9a jnz 0x0bcbee82
0bcbee9c cmp dword [rbx+0x10], +0x00
0bcbeea0 jnz 0x0bcb005c ->19
0bcbeea6 mov edx, 0x4105e448
0bcbeeab mov dword [rdx+0x4], 0xfffffffb
0bcbeeb2 mov dword [rdx], 0x419b09b0
0bcbeeb8 mov esi, ebx
0bcbeeba call 0x00422cf0 ->lj_tab_newkey
0bcbeebf mov r15d, eax
0bcbeec2 mov r11d, [rsp+0x48]
0bcbeec7 mov esi, [rsp+0x3c]
0bcbeecb mov eax, [rsp+0x6c]
0bcbeecf mov dword [r15+0x4], 0xfffffff4
0bcbeed7 mov [r15], eax
0bcbeeda test byte [rbx+0x4], 0x4
0bcbeede jz 0x0bcbeef5
0bcbeee0 and byte [rbx+0x4], 0xfb
0bcbeee4 mov edi, [0x4105e3f4]
0bcbeeeb mov [0x4105e3f4], ebx
0bcbeef2 mov [rbx+0xc], edi
0bcbeef5 cmp dword [rbp-0x4], 0x419b18f8
0bcbeefc jnz 0x0bcb0060 ->20
0bcbef02 add ebp, -0x40
0bcbef05 mov [0x4105e4b4], ebp
0bcbef0c cmp dword [rbp-0x8], 0x419b31b0
0bcbef13 jnz 0x0bcb0064 ->21
0bcbef19 cmp dword [rbp+0x4], -0x0c
0bcbef1d jnz 0x0bcb0064 ->21
0bcbef23 mov ebx, [rbp+0x0]
0bcbef26 cmp dword [rbx+0x18], +0x03
0bcbef2a jbe 0x0bcb0064 ->21
0bcbef30 mov r15d, [rbx+0x8]
0bcbef34 cmp dword [r15+0x1c], -0x0c
0bcbef39 jnz 0x0bcb0064 ->21
0bcbef3f mov r13d, [r15+0x18]
0bcbef43 mov [rsp+0x18], r13d
0bcbef48 cmp dword [rbp+0x2c], -0x0c
0bcbef4c jnz 0x0bcb0064 ->21
0bcbef52 mov edi, [rbp+0x28]
0bcbef55 mov [rsp+0x14], edi
0bcbef59 cmp dword [rbp+0x14], -0x0c
0bcbef5d jnz 0x0bcb0064 ->21
0bcbef63 mov r15d, [rbp+0x10]
0bcbef67 cmp dword [rbp+0x1c], -0x0c
0bcbef6b jnz 0x0bcb0064 ->21
0bcbef71 mov r14d, [rbp+0x18]
0bcbef75 mov edi, [r11+0x1c]
0bcbef79 and edi, 0xce2b6183
0bcbef7f lea edi, [rdi+rdi*2]
0bcbef82 shl edi, 0x03
0bcbef85 add edi, [r11+0x14]
0bcbef89 cmp dword [rdi+0xc], -0x05
0bcbef8d jnz 0x0bcbef9c
0bcbef8f cmp dword [rdi+0x8], 0x41060db0
0bcbef96 jz 0x0bcb0064 ->21
0bcbef9c mov edi, [rdi+0x10]
0bcbef9f test edi, edi
0bcbefa1 jnz 0x0bcbef89
0bcbefa3 cmp dword [rsi+0x1c], +0x01
0bcbefa7 jnz 0x0bcb0064 ->21
0bcbefad mov r12d, [rsi+0x14]
0bcbefb1 mov rdi, 0xfffffffb410604c8
0bcbefbb cmp rdi, [r12+0x20]
0bcbefc0 jnz 0x0bcb0064 ->21
0bcbefc6 cmp dword [r12+0x1c], -0x0c
0bcbefcc jnz 0x0bcb0064 ->21
0bcbefd2 mov r12d, [r12+0x18]
0bcbefd7 cmp dword [r12+0x1c], +0x3f
0bcbefdd jnz 0x0bcb0064 ->21
0bcbefe3 mov r12d, [r12+0x14]
0bcbefe8 mov rdi, 0xfffffffb41060db0
0bcbeff2 cmp rdi, [r12+0x50]
0bcbeff7 jnz 0x0bcb0064 ->21
0bcbeffd cmp dword [r12+0x4c], -0x09
0bcbf003 jnz 0x0bcb0064 ->21
0bcbf009 mov edi, [r11+0x1c]
0bcbf00d and edi, 0x798a813c
0bcbf013 lea edi, [rdi+rdi*2]
0bcbf016 shl edi, 0x03
0bcbf019 add edi, [r11+0x14]
0bcbf01d cmp dword [rdi+0xc], -0x05
0bcbf021 jnz 0x0bcbf030
0bcbf023 cmp dword [rdi+0x8], 0x41060fb0
0bcbf02a jz 0x0bcb0064 ->21
0bcbf030 mov edi, [rdi+0x10]
0bcbf033 test edi, edi
0bcbf035 jnz 0x0bcbf01d
0bcbf037 mov rdi, 0xfffffffb41060fb0
0bcbf041 cmp rdi, [r12+0x5a8]
0bcbf049 jnz 0x0bcb0064 ->21
0bcbf04f cmp dword [r12+0x5a4], -0x09
0bcbf058 jnz 0x0bcb0064 ->21
0bcbf05e cmp dword [r12+0x5a0], 0x41060f18
0bcbf06a jnz 0x0bcb0064 ->21
0bcbf070 cmp dword [r12+0x48], 0x41060d88
0bcbf079 jnz 0x0bcb0064 ->21
0bcbf07f cmp dword [r13+0x18], +0x01
0bcbf084 jbe 0x0bcb0064 ->21
0bcbf08a mov r12d, [r13+0x8]
0bcbf08e cmp dword [r12+0xc], -0x05
0bcbf094 jnz 0x0bcb0064 ->21
0bcbf09a mov ecx, [r12+0x8]
0bcbf09f mov [rsp+0x10], ecx
0bcbf0a3 cmp dword [r12+0x8], 0x410608f8
0bcbf0ac jnz 0x0bcb0068 ->22
0bcbf0b2 mov edi, [0x419befc0]
0bcbf0b9 mov [rsp+0x64], edi
0bcbf0bd cmp dword [rdi+0x4], 0xfffeffff
0bcbf0c4 jnb 0x0bcb006c ->23
0bcbf0ca movsd xmm7, [rdi]
0bcbf0ce addsd xmm7, [0x4107b120]
0bcbf0d7 movsd [rsp+0x58], xmm7
0bcbf0dd movsd [rdi], xmm7
0bcbf0e1 mov edi, 0x4105e414
0bcbf0e6 mov esi, [rdi+0x8]
0bcbf0e9 mov [rdi], esi
0bcbf0eb mov esi, 0x4c
0bcbf0f0 call 0x00421b60 ->lj_buf_putchar
0bcbf0f5 mov edi, eax
0bcbf0f7 lea rsi, [rsp+0x58]
0bcbf0fc call 0x0040a3c0 ->lj_strfmt_putnum
0bcbf101 mov edi, eax
0bcbf103 call 0x00421ff0 ->lj_buf_tostr
0bcbf108 mov [rsp+0x68], eax
0bcbf10c mov edi, [0x4105e4b0]
0bcbf113 mov esi, 0x419b0f30
0bcbf118 call 0x004223c0 ->lj_tab_dup
0bcbf11d mov [rsp+0xc], eax
0bcbf121 mov edi, [0x4105e4b0]
0bcbf128 xor esi, esi
0bcbf12a call 0x00422350 ->lj_tab_new1
0bcbf12f mov esi, eax
0bcbf131 mov edi, [0x4105e4b0]
0bcbf138 mov ecx, [rsp+0xc]
0bcbf13c mov eax, [rsp+0x68]
0bcbf140 mov r12d, [rcx+0x14]
0bcbf144 mov dword [r12+0x34], 0xfffffff4
0bcbf14d mov [r12+0x30], esi
0bcbf152 mov dword [r12+0x4c], 0xfffffffb
0bcbf15b mov [r12+0x48], eax
0bcbf160 mov r12d, [0x419ad340]
0bcbf168 cmp dword [r12+0x4], -0x0c
0bcbf16e jnz 0x0bcb0074 ->25
0bcbf174 mov r12d, [r12]
0bcbf178 cmp dword [r12+0x1c], +0x01
0bcbf17e jnz 0x0bcb0074 ->25
0bcbf184 mov esi, [r12+0x14]
0bcbf189 mov rdx, 0xfffffffb419b01a8
0bcbf193 cmp rdx, [rsi+0x8]
0bcbf197 jnz 0x0bcb0074 ->25
0bcbf19d cmp dword [rsi+0x4], -0x0c
0bcbf1a1 jnz 0x0bcb0074 ->25
0bcbf1a7 mov esi, [rsi]
0bcbf1a9 mov [rsp+0x60], esi
0bcbf1ad mov edx, [rsi+0x1c]
0bcbf1b0 and edx, [rax+0x8]
0bcbf1b3 lea edx, [rdx+rdx*2]
0bcbf1b6 shl edx, 0x03
0bcbf1b9 add edx, [rsi+0x14]
0bcbf1bc cmp dword [rdx+0xc], -0x05
0bcbf1c0 jnz 0x0bcbf1cb
0bcbf1c2 cmp eax, [rdx+0x8]
0bcbf1c5 jz 0x0bcb0074 ->25
0bcbf1cb mov edx, [rdx+0x10]
0bcbf1ce test edx, edx
0bcbf1d0 jnz 0x0bcbf1bc
0bcbf1d2 cmp dword [rsi+0x10], +0x00
0bcbf1d6 jnz 0x0bcb0074 ->25
0bcbf1dc mov edx, 0x4105e448
0bcbf1e1 mov dword [rdx+0x4], 0xfffffffb
0bcbf1e8 mov [rdx], eax
0bcbf1ea call 0x00422cf0 ->lj_tab_newkey
0bcbf1ef mov edi, [rsp+0x64]
0bcbf1f3 mov esi, [rsp+0x60]
0bcbf1f7 mov ecx, [rsp+0xc]
0bcbf1fb movsd xmm7, [rsp+0x58]
0bcbf201 mov dword [rax+0x4], 0xfffffff4
0bcbf208 mov [rax], ecx
0bcbf20a test byte [rsi+0x4], 0x4
0bcbf20e jz 0x0bcbf225
0bcbf210 and byte [rsi+0x4], 0xfb
0bcbf214 mov edx, [0x4105e3f4]
0bcbf21b mov [0x4105e3f4], esi
0bcbf222 mov [rsi+0xc], edx
0bcbf225 mov byte [rsi+0x6], 0x0
0bcbf229 addsd xmm7, [0x4107b120]
0bcbf232 movsd [rsp+0x50], xmm7
0bcbf238 movsd [rdi], xmm7
0bcbf23c mov edi, 0x4105e414
0bcbf241 mov esi, [rdi+0x8]
0bcbf244 mov [rdi], esi
0bcbf246 mov esi, 0x4c
0bcbf24b call 0x00421b60 ->lj_buf_putchar
0bcbf250 mov edi, eax
0bcbf252 lea rsi, [rsp+0x50]
0bcbf257 call 0x0040a3c0 ->lj_strfmt_putnum
0bcbf25c mov edi, eax
0bcbf25e call 0x00421ff0 ->lj_buf_tostr
0bcbf263 mov [rsp+0x4c], eax
0bcbf267 mov edi, [0x4105e4b0]
0bcbf26e mov esi, 0x419b0f30
0bcbf273 call 0x004223c0 ->lj_tab_dup
0bcbf278 mov [rsp+0x28], eax
0bcbf27c mov edi, [0x4105e4b0]
0bcbf283 xor esi, esi
0bcbf285 call 0x00422350 ->lj_tab_new1
0bcbf28a mov esi, eax
0bcbf28c mov edi, [0x4105e4b0]
0bcbf293 mov ecx, [rsp+0x28]
0bcbf297 mov eax, [rsp+0x4c]
0bcbf29b mov r8d, [rcx+0x14]
0bcbf29f mov [rsp+0x1c], r8d
0bcbf2a4 mov dword [r8+0x34], 0xfffffff4
0bcbf2ac mov [r8+0x30], esi
0bcbf2b0 mov dword [r8+0x4c], 0xfffffffb
0bcbf2b8 mov [r8+0x48], eax
0bcbf2bc cmp dword [r12+0x1c], +0x01
0bcbf2c2 jnz 0x0bcb007c ->27
0bcbf2c8 mov r12d, [r12+0x14]
0bcbf2cd mov rsi, 0xfffffffb419b01a8
0bcbf2d7 cmp rsi, [r12+0x8]
0bcbf2dc jnz 0x0bcb007c ->27
0bcbf2e2 cmp dword [r12+0x4], -0x0c
0bcbf2e8 jnz 0x0bcb007c ->27
0bcbf2ee mov r12d, [r12]
0bcbf2f2 mov esi, [r12+0x1c]
0bcbf2f7 and esi, [rax+0x8]
0bcbf2fa lea esi, [rsi+rsi*2]
0bcbf2fd shl esi, 0x03
0bcbf300 add esi, [r12+0x14]
0bcbf305 cmp dword [rsi+0xc], -0x05
0bcbf309 jnz 0x0bcbf314
0bcbf30b cmp eax, [rsi+0x8]
0bcbf30e jz 0x0bcb007c ->27
0bcbf314 mov esi, [rsi+0x10]
0bcbf317 test esi, esi
0bcbf319 jnz 0x0bcbf305
0bcbf31b cmp dword [r12+0x10], +0x00
0bcbf321 jnz 0x0bcb007c ->27
0bcbf327 mov edx, 0x4105e448
0bcbf32c mov dword [rdx+0x4], 0xfffffffb
0bcbf333 mov [rdx], eax
0bcbf335 mov esi, r12d
0bcbf338 call 0x00422cf0 ->lj_tab_newkey
0bcbf33d mov r11d, [rsp+0x48]
0bcbf342 mov edi, [0x4105e4b0]
0bcbf349 mov esi, [rsp+0x3c]
0bcbf34d mov edx, [rsp+0x40]
0bcbf351 mov ecx, [rsp+0x28]
0bcbf355 mov dword [rax+0x4], 0xfffffff4
0bcbf35c mov [rax], ecx
0bcbf35e test byte [r12+0x4], 0x4
0bcbf364 jz 0x0bcbf380
0bcbf366 and byte [r12+0x4], 0xfb
0bcbf36c mov ecx, [0x4105e3f4]
0bcbf373 mov [0x4105e3f4], r12d
0bcbf37b mov [r12+0xc], ecx
0bcbf380 mov byte [r12+0x6], 0x0
0bcbf386 cmp dword [r13+0x18], +0x02
0bcbf38b jbe 0x0bcb0080 ->28
0bcbf391 mov r12d, [r13+0x8]
0bcbf395 cmp dword [r12+0x14], -0x0c
0bcbf39b jnz 0x0bcb0080 ->28
0bcbf3a1 mov r12d, [r12+0x10]
0bcbf3a6 mov ecx, [r11+0x1c]
0bcbf3aa and ecx, 0xce2b6183
0bcbf3b0 lea ecx, [rcx+rcx*2]
0bcbf3b3 shl ecx, 0x03
0bcbf3b6 add ecx, [r11+0x14]
0bcbf3ba cmp dword [rcx+0xc], -0x05
0bcbf3be jnz 0x0bcbf3cd
0bcbf3c0 cmp dword [rcx+0x8], 0x41060db0
0bcbf3c7 jz 0x0bcb0080 ->28
0bcbf3cd mov ecx, [rcx+0x10]
0bcbf3d0 test ecx, ecx
0bcbf3d2 jnz 0x0bcbf3ba
0bcbf3d4 cmp dword [rsi+0x1c], +0x01
0bcbf3d8 jnz 0x0bcb0080 ->28
0bcbf3de mov esi, [rsi+0x14]
0bcbf3e1 mov rcx, 0xfffffffb410604c8
0bcbf3eb cmp rcx, [rsi+0x20]
0bcbf3ef jnz 0x0bcb0080 ->28
0bcbf3f5 cmp dword [rsi+0x1c], -0x0c
0bcbf3f9 jnz 0x0bcb0080 ->28
0bcbf3ff mov esi, [rsi+0x18]
0bcbf402 cmp dword [rsi+0x1c], +0x3f
0bcbf406 jnz 0x0bcb0080 ->28
0bcbf40c mov esi, [rsi+0x14]
0bcbf40f mov rcx, 0xfffffffb41060db0
0bcbf419 cmp rcx, [rsi+0x50]
0bcbf41d jnz 0x0bcb0080 ->28
0bcbf423 cmp dword [rsi+0x4c], -0x09
0bcbf427 jnz 0x0bcb0080 ->28
0bcbf42d mov ecx, [r11+0x1c]
0bcbf431 and ecx, 0x798a813c
0bcbf437 lea ecx, [rcx+rcx*2]
0bcbf43a shl ecx, 0x03
0bcbf43d add ecx, [r11+0x14]
0bcbf441 cmp dword [rcx+0xc], -0x05
0bcbf445 jnz 0x0bcbf454
0bcbf447 cmp dword [rcx+0x8], 0x41060fb0
0bcbf44e jz 0x0bcb0080 ->28
0bcbf454 mov ecx, [rcx+0x10]
0bcbf457 test ecx, ecx
0bcbf459 jnz 0x0bcbf441
0bcbf45b mov rcx, 0xfffffffb41060fb0
0bcbf465 cmp rcx, [rsi+0x5a8]
0bcbf46c jnz 0x0bcb0080 ->28
0bcbf472 cmp dword [rsi+0x5a4], -0x09
0bcbf479 jnz 0x0bcb0080 ->28
0bcbf47f cmp dword [rsi+0x5a0], 0x41060f18
0bcbf489 jnz 0x0bcb0080 ->28
0bcbf48f cmp dword [rsi+0x48], 0x41060d88
0bcbf496 jnz 0x0bcb0080 ->28
0bcbf49c cmp dword [r12+0x18], +0x01
0bcbf4a2 jbe 0x0bcb0080 ->28
0bcbf4a8 mov esi, [r12+0x8]
0bcbf4ad cmp dword [rsi+0xc], -0x05
0bcbf4b1 jnz 0x0bcb0080 ->28
0bcbf4b7 mov ecx, [rsi+0x8]
0bcbf4ba mov [rsp+0x38], ecx
0bcbf4be cmp ecx, 0x410608f8
0bcbf4c4 jz 0x0bcb0084 ->29
0bcbf4ca cmp ecx, 0x410741f0
0bcbf4d0 jz 0x0bcb0088 ->30
0bcbf4d6 cmp ecx, 0x41060a18
0bcbf4dc jz 0x0bcb008c ->31
0bcbf4e2 cmp ecx, 0x41060870
0bcbf4e8 jz 0x0bcb009d ->32
0bcbf4ee cmp ecx, 0x41063cb0
0bcbf4f4 jz 0x0bcb00a1 ->33
0bcbf4fa cmp ecx, 0x4106e448
0bcbf500 jz 0x0bcb00a5 ->34
0bcbf506 mov esi, [rdx+0x1c]
0bcbf509 and esi, [rcx+0x8]
0bcbf50c lea esi, [rsi+rsi*2]
0bcbf50f shl esi, 0x03
0bcbf512 add esi, [rdx+0x14]
0bcbf515 cmp dword [rsi+0xc], -0x05
0bcbf519 jnz 0x0bcbf520
0bcbf51b cmp ecx, [rsi+0x8]
0bcbf51e jz 0x0bcbf52c
0bcbf520 mov esi, [rsi+0x10]
0bcbf523 test esi, esi
0bcbf525 jnz 0x0bcbf515
0bcbf527 mov esi, 0x4105e458
0bcbf52c cmp dword [rsi+0x4], -0x03
0bcbf530 jnz 0x0bcb00a9 ->35
0bcbf536 mov esi, 0x419b20e0
0bcbf53b call 0x004223c0 ->lj_tab_dup
0bcbf540 mov r10d, eax
0bcbf543 mov [rsp+0x44], r10d
0bcbf548 mov edi, [0x4105e4b0]
0bcbf54f mov esi, [rsp+0x14]
0bcbf553 mov ecx, [rsp+0xc]
0bcbf557 mov eax, [rsp+0x4c]
0bcbf55b mov edx, [r10+0x8]
0bcbf55f mov dword [rdx+0x14], 0xfffffff4
0bcbf566 mov [rdx+0x10], r12d
0bcbf56a cmp dword [rcx+0x1c], +0x03
0bcbf56e jnz 0x0bcb00ad ->36
0bcbf574 mov ecx, [rcx+0x14]
0bcbf577 mov [rsp+0x2c], ecx
0bcbf57b mov r11, 0xfffffffb419b0248
0bcbf585 cmp r11, [rcx+0x50]
0bcbf589 jnz 0x0bcb00ad ->36
0bcbf58f cmp dword [rcx+0x4c], -0x05
0bcbf593 jnz 0x0bcb00ad ->36
0bcbf599 mov ecx, [rcx+0x48]
0bcbf59c mov dword [rdx+0x1c], 0xfffffffb
0bcbf5a3 mov [rdx+0x18], ecx
0bcbf5a6 mov dword [rdx+0x24], 0xfffffffb
0bcbf5ad mov [rdx+0x20], eax
0bcbf5b0 mov edx, [rsi+0x1c]
0bcbf5b3 and edx, 0x2a54dc55
0bcbf5b9 lea edx, [rdx+rdx*2]
0bcbf5bc shl edx, 0x03
0bcbf5bf add edx, [rsi+0x14]
0bcbf5c2 cmp dword [rdx+0xc], -0x05
0bcbf5c6 jnz 0x0bcbf5d5
0bcbf5c8 cmp dword [rdx+0x8], 0x419b09b0
0bcbf5cf jz 0x0bcb00b1 ->37
0bcbf5d5 mov edx, [rdx+0x10]
0bcbf5d8 test edx, edx
0bcbf5da jnz 0x0bcbf5c2
0bcbf5dc cmp dword [rsi+0x10], +0x00
0bcbf5e0 jnz 0x0bcb00b1 ->37
0bcbf5e6 mov edx, 0x4105e448
0bcbf5eb mov dword [rdx+0x4], 0xfffffffb
0bcbf5f2 mov dword [rdx], 0x419b09b0
0bcbf5f8 call 0x00422cf0 ->lj_tab_newkey
0bcbf5fd mov r9d, eax
0bcbf600 mov r11d, [rsp+0x48]
0bcbf605 mov r10d, [rsp+0x44]
0bcbf60a mov edi, [0x4105e4b0]
0bcbf611 mov esi, [rsp+0x40]
0bcbf615 mov edx, [rsp+0x3c]
0bcbf619 mov eax, [rsp+0x14]
0bcbf61d mov dword [r9+0x4], 0xfffffff4
0bcbf625 mov [r9], r10d
0bcbf628 test byte [rax+0x4], 0x4
0bcbf62c jz 0x0bcbf645
0bcbf62e and byte [rax+0x4], 0xfb
0bcbf632 mov r10d, [0x4105e3f4]
0bcbf63a mov [0x4105e3f4], eax
0bcbf641 mov [rax+0xc], r10d
0bcbf645 cmp dword [r13+0x18], +0x04
0bcbf64a jbe 0x0bcb00b5 ->38
0bcbf650 mov r13d, [r13+0x8]
0bcbf654 mov [rsp+0x30], r13d
0bcbf659 cmp dword [r13+0x1c], -0x0c
0bcbf65e jnz 0x0bcb00b5 ->38
0bcbf664 mov r13d, [r13+0x18]
0bcbf668 mov eax, [r11+0x1c]
0bcbf66c and eax, 0xce2b6183
0bcbf672 lea eax, [rax+rax*2]
0bcbf675 shl eax, 0x03
0bcbf678 add eax, [r11+0x14]
0bcbf67c cmp dword [rax+0xc], -0x05
0bcbf680 jnz 0x0bcbf68f
0bcbf682 cmp dword [rax+0x8], 0x41060db0
0bcbf689 jz 0x0bcb00b5 ->38
0bcbf68f mov eax, [rax+0x10]
0bcbf692 test eax, eax
0bcbf694 jnz 0x0bcbf67c
0bcbf696 cmp dword [rdx+0x1c], +0x01
0bcbf69a jnz 0x0bcb00b5 ->38
0bcbf6a0 mov edx, [rdx+0x14]
0bcbf6a3 mov rax, 0xfffffffb410604c8
0bcbf6ad cmp rax, [rdx+0x20]
0bcbf6b1 jnz 0x0bcb00b5 ->38
0bcbf6b7 cmp dword [rdx+0x1c], -0x0c
0bcbf6bb jnz 0x0bcb00b5 ->38
0bcbf6c1 mov edx, [rdx+0x18]
0bcbf6c4 cmp dword [rdx+0x1c], +0x3f
0bcbf6c8 jnz 0x0bcb00b5 ->38
0bcbf6ce mov edx, [rdx+0x14]
0bcbf6d1 mov rax, 0xfffffffb41060db0
0bcbf6db cmp rax, [rdx+0x50]
0bcbf6df jnz 0x0bcb00b5 ->38
0bcbf6e5 cmp dword [rdx+0x4c], -0x09
0bcbf6e9 jnz 0x0bcb00b5 ->38
0bcbf6ef mov eax, [r11+0x1c]
0bcbf6f3 and eax, 0x798a813c
0bcbf6f9 lea eax, [rax+rax*2]
0bcbf6fc shl eax, 0x03
0bcbf6ff add eax, [r11+0x14]
0bcbf703 cmp dword [rax+0xc], -0x05
0bcbf707 jnz 0x0bcbf716
0bcbf709 cmp dword [rax+0x8], 0x41060fb0
0bcbf710 jz 0x0bcb00b5 ->38
0bcbf716 mov eax, [rax+0x10]
0bcbf719 test eax, eax
0bcbf71b jnz 0x0bcbf703
0bcbf71d mov rax, 0xfffffffb41060fb0
0bcbf727 cmp rax, [rdx+0x5a8]
0bcbf72e jnz 0x0bcb00b5 ->38
0bcbf734 cmp dword [rdx+0x5a4], -0x09
0bcbf73b jnz 0x0bcb00b5 ->38
0bcbf741 cmp dword [rdx+0x5a0], 0x41060f18
0bcbf74b jnz 0x0bcb00b5 ->38
0bcbf751 cmp dword [rdx+0x48], 0x41060d88
0bcbf758 jnz 0x0bcb00b5 ->38
0bcbf75e cmp dword [r13+0x18], +0x01
0bcbf763 jbe 0x0bcb00b5 ->38
0bcbf769 mov edx, [r13+0x8]
0bcbf76d cmp dword [rdx+0xc], -0x05
0bcbf771 jnz 0x0bcb00b5 ->38
0bcbf777 mov edx, [rdx+0x8]
0bcbf77a mov [rsp+0x34], edx
0bcbf77e cmp edx, 0x410608f8
0bcbf784 jz 0x0bcb00b9 ->39
0bcbf78a cmp edx, 0x410741f0
0bcbf790 jz 0x0bcb00bd ->40
0bcbf796 cmp edx, 0x41060a18
0bcbf79c jz 0x0bcb00c1 ->41
0bcbf7a2 cmp edx, 0x41060870
0bcbf7a8 jz 0x0bcb00c5 ->42
0bcbf7ae cmp edx, 0x41063cb0
0bcbf7b4 jz 0x0bcb00c9 ->43
0bcbf7ba cmp edx, 0x4106e448
0bcbf7c0 jz 0x0bcb00cd ->44
0bcbf7c6 mov r12d, [rsi+0x1c]
0bcbf7ca and r12d, [rdx+0x8]
0bcbf7ce lea r12d, [r12+r12*2]
0bcbf7d2 shl r12d, 0x03
0bcbf7d6 add r12d, [rsi+0x14]
0bcbf7da cmp dword [r12+0xc], -0x05
0bcbf7e0 jnz 0x0bcbf7e9
0bcbf7e2 cmp edx, [r12+0x8]
0bcbf7e7 jz 0x0bcbf7f9
0bcbf7e9 mov r12d, [r12+0x10]
0bcbf7ee test r12d, r12d
0bcbf7f1 jnz 0x0bcbf7da
0bcbf7f3 mov r12d, 0x4105e458
0bcbf7f9 cmp dword [r12+0x4], -0x03
0bcbf7ff jnz 0x0bcb00d1 ->45
0bcbf805 mov esi, 0x419b20e0
0bcbf80a call 0x004223c0 ->lj_tab_dup
0bcbf80f mov edi, [0x4105e4b0]
0bcbf816 mov edx, [rsp+0x30]
0bcbf81a mov ecx, [rsp+0x2c]
0bcbf81e mov r11d, [rax+0x8]
0bcbf822 mov dword [r11+0x14], 0xfffffff4
0bcbf82a mov [r11+0x10], r13d
0bcbf82e cmp dword [r15+0x1c], +0x01
0bcbf833 jnz 0x0bcb00d5 ->46
0bcbf839 mov r12d, [r15+0x14]
0bcbf83d mov r10, 0xfffffffb419b0248
0bcbf847 cmp r10, [r12+0x20]
0bcbf84c jnz 0x0bcb00d5 ->46
0bcbf852 cmp dword [r12+0x1c], -0x05
0bcbf858 jnz 0x0bcb00d5 ->46
0bcbf85e mov r12d, [r12+0x18]
0bcbf863 mov dword [r11+0x1c], 0xfffffffb
0bcbf86b mov [r11+0x18], r12d
0bcbf86f cmp dword [r14+0x1c], +0x01
0bcbf874 jnz 0x0bcb00d9 ->47
0bcbf87a mov r12d, [r14+0x14]
0bcbf87e mov r10, 0xfffffffb419b0248
0bcbf888 cmp r10, [r12+0x20]
0bcbf88d jnz 0x0bcb00d9 ->47
0bcbf893 cmp dword [r12+0x1c], -0x05
0bcbf899 jnz 0x0bcb00d9 ->47
0bcbf89f mov r12d, [r12+0x18]
0bcbf8a4 mov dword [r11+0x24], 0xfffffffb
0bcbf8ac mov [r11+0x20], r12d
0bcbf8b0 mov r11, 0xfffffffb419b09b0
0bcbf8ba cmp r11, [rcx+0x20]
0bcbf8be jnz 0x0bcb00dd ->48
0bcbf8c4 mov dword [rcx+0x1c], 0xfffffff4
0bcbf8cb mov [rcx+0x18], eax
0bcbf8ce cmp dword [rdx+0x24], -0x0c
0bcbf8d2 jnz 0x0bcb00e1 ->49
0bcbf8d8 mov r10d, [rdx+0x20]
0bcbf8dc mov [rsp+0x24], r10d
0bcbf8e1 cmp dword [r10+0x18], +0x01
0bcbf8e6 jbe 0x0bcb00e1 ->49
0bcbf8ec mov edx, [r10+0x8]
0bcbf8f0 cmp dword [rdx+0xc], -0x05
0bcbf8f4 jnz 0x0bcb00e1 ->49
0bcbf8fa mov r9d, [rdx+0x8]
0bcbf8fe mov [rsp+0x20], r9d
0bcbf903 cmp r9d, 0x410608f8
0bcbf90a jz 0x0bcb00e5 ->50
0bcbf910 cmp r9d, 0x410741f0
0bcbf917 jz 0x0bcb00e9 ->51
0bcbf91d cmp r9d, 0x41060a18
0bcbf924 jz 0x0bcb00ed ->52
0bcbf92a cmp r9d, 0x41060870
0bcbf931 jnz 0x0bcb00f1 ->53
0bcbf937 mov esi, 0x419b23c0
0bcbf93c call 0x004223c0 ->lj_tab_dup
0bcbf941 mov r13d, eax
0bcbf944 mov r8d, [rsp+0x1c]
0bcbf949 mov edi, [r13+0x8]
0bcbf94d mov dword [rdi+0x14], 0xfffffffb
0bcbf954 mov [rdi+0x10], r12d
0bcbf958 mov edi, [0x4105e4b0]
0bcbf95f mov dword [r8+0x1c], 0xfffffff4
0bcbf967 mov [r8+0x18], r13d
0bcbf96b cmp dword [rbx+0x18], +0x04
0bcbf96f jbe 0x0bcb00f9 ->55
0bcbf975 mov ebx, [rbx+0x8]
0bcbf978 cmp dword [rbx+0x24], -0x0c
0bcbf97c jnz 0x0bcb00f9 ->55
0bcbf982 mov ebx, [rbx+0x20]
0bcbf985 cmp dword [rbp+0x34], -0x0c
0bcbf989 jnz 0x0bcb00f9 ->55
0bcbf98f mov ebp, [rbp+0x30]
0bcbf992 cmp dword [rbx+0x18], +0x01
0bcbf996 jbe 0x0bcb00f9 ->55
0bcbf99c mov r13d, [rbx+0x8]
0bcbf9a0 cmp dword [r13+0xc], -0x05
0bcbf9a5 jnz 0x0bcb00f9 ->55
0bcbf9ab mov r13d, [r13+0x8]
0bcbf9af cmp r13d, 0x410608f8
0bcbf9b6 jz 0x0bcb00fd ->56
0bcbf9bc cmp r13d, 0x410741f0
0bcbf9c3 jz 0x0bcb0101 ->57
0bcbf9c9 cmp r13d, 0x41060a18
0bcbf9d0 jz 0x0bcb0105 ->58
0bcbf9d6 cmp r13d, 0x41060870
0bcbf9dd jnz 0x0bcb0109 ->59
0bcbf9e3 mov esi, 0x419b23c0
0bcbf9e8 call 0x004223c0 ->lj_tab_dup
0bcbf9ed mov [rsp+0x8], eax
0bcbf9f1 mov edi, [0x4105e4b0]
0bcbf9f8 mov eax, [rax+0x8]
0bcbf9fb mov dword [rax+0x14], 0xfffffffb
0bcbfa02 mov [rax+0x10], r12d
0bcbfa06 mov esi, [rbp+0x1c]
0bcbfa09 and esi, 0x2a54dc55
0bcbfa0f lea esi, [rsi+rsi*2]
0bcbfa12 shl esi, 0x03
0bcbfa15 add esi, [rbp+0x14]
0bcbfa18 cmp dword [rsi+0xc], -0x05
0bcbfa1c jnz 0x0bcbfa2b
0bcbfa1e cmp dword [rsi+0x8], 0x419b09b0
0bcbfa25 jz 0x0bcb0111 ->61
0bcbfa2b mov esi, [rsi+0x10]
0bcbfa2e test esi, esi
0bcbfa30 jnz 0x0bcbfa18
0bcbfa32 cmp dword [rbp+0x10], +0x00
0bcbfa36 jnz 0x0bcb0111 ->61
0bcbfa3c mov edx, 0x4105e448
0bcbfa41 mov dword [rdx+0x4], 0xfffffffb
0bcbfa48 mov dword [rdx], 0x419b09b0
0bcbfa4e mov esi, ebp
0bcbfa50 call 0x00422cf0 ->lj_tab_newkey
0bcbfa55 mov ebx, eax
0bcbfa57 mov edx, [0x4105e4b4]
0bcbfa5e mov eax, [rsp+0x8]
0bcbfa62 mov dword [rbx+0x4], 0xfffffff4
0bcbfa69 mov [rbx], eax
0bcbfa6b test byte [rbp+0x4], 0x4
0bcbfa6f jz 0x0bcbfa86
0bcbfa71 and byte [rbp+0x4], 0xfb
0bcbfa75 mov edi, [0x4105e3f4]
0bcbfa7c mov [0x4105e3f4], ebp
0bcbfa83 mov [rbp+0xc], edi
0bcbfa86 cmp dword [rdx-0x4], 0x419b1974
0bcbfa8d jnz 0x0bcb0115 ->62
0bcbfa93 add edx, -0x48
0bcbfa96 mov [0x4105e4b4], edx
0bcbfa9d add rsp, +0x70
0bcbfaa1 jmp 0x0bcbe8e1
---- TRACE 3 stop -> down-recursion
---- TRACE 3 exit 1
---- TRACE 2 exit 4
---- TRACE 4 start 2/4 ssa.lua:70
0065 UGET 5 2 ; finish_goto
0066 MOV 6 1
0067 MOV 7 3
0068 CALL 5 1 3
0000 . FUNCF 4 ; ssa.lua:52
0001 . TDUP 2 1
0002 . TGETS 3 1 2 ; "label"
0003 . TSETB 3 2 2
0004 . TSETS 2 0 0 ; "control"
0005 . RET0 0 1
0069 JMP 5 => 0094
0094 JLOOP 1 3
---- TRACE 4 IR
0001 rbx str SLOAD #5 PI
.... SNAP #0 [ ---- ---- ---- ---- ---- 0001 ]
0002 fun SLOAD #0 R
0003 > fun EQ 0002 ssa.lua:55
0004 rbp > tab SLOAD #2 T
0005 r15 > tab SLOAD #4 T
0006 [8] > tab TDUP {0x419b23c0}
0007 int FLOAD 0005 tab.hmask
0008 > int EQ 0007 +1 
0009 r15 p32 FLOAD 0005 tab.node
0010 > p32 HREFK 0009 "label" @1
0011 r15 > str HLOAD 0010
0012 rax p32 FLOAD 0006 tab.array
0013 p32 AREF 0012 +2 
0014 str ASTORE 0013 0011
.... SNAP #1 [ ssa.lua:55|---- ---- ---- ---- 0001 ssa.lua:52|0004 ---- 0006 ---- ]
0015 rsi p32 HREF 0004 "control"
0016 > p32 EQ 0015 [0x4105e458]
0017 tab FLOAD 0004 tab.meta
0018 > tab EQ 0017 [NULL]
0019 rbx p32 NEWREF 0004 "control"
0020 tab HSTORE 0019 0006
0021 nil TBAR 0004
.... SNAP #2 [ ssa.lua:55|---- ]
---- TRACE 4 mcode 329
0bcbe791 mov dword [0x4105e410], 0x4
0bcbe79c mov edi, [0x4105e3d8]
0bcbe7a3 cmp edi, [0x4105e3dc]
0bcbe7aa jb 0x0bcbe7c3
0bcbe7ac mov esi, 0x1
0bcbe7b1 mov edi, 0x4105e3b8
0bcbe7b6 call 0x00421730 ->lj_gc_step_jit
0bcbe7bb test eax, eax
0bcbe7bd jnz 0x0bcb0010 ->0
0bcbe7c3 mov edi, [0x4105e4b0]
0bcbe7ca mov edx, [0x4105e4b4]
0bcbe7d1 cmp dword [rdx-0x8], 0x419b31b0
0bcbe7d8 jnz 0x0bcb0010 ->0
0bcbe7de cmp dword [rdx+0xc], -0x0c
0bcbe7e2 jnz 0x0bcb0010 ->0
0bcbe7e8 mov ebp, [rdx+0x8]
0bcbe7eb cmp dword [rdx+0x1c], -0x0c
0bcbe7ef jnz 0x0bcb0010 ->0
0bcbe7f5 mov r15d, [rdx+0x18]
0bcbe7f9 mov esi, 0x419b23c0
0bcbe7fe call 0x004223c0 ->lj_tab_dup
0bcbe803 mov [rsp+0x8], eax
0bcbe807 mov edi, [0x4105e4b0]
0bcbe80e cmp dword [r15+0x1c], +0x01
0bcbe813 jnz 0x0bcb0010 ->0
0bcbe819 mov r15d, [r15+0x14]
0bcbe81d mov rsi, 0xfffffffb419b0248
0bcbe827 cmp rsi, [r15+0x20]
0bcbe82b jnz 0x0bcb0010 ->0
0bcbe831 cmp dword [r15+0x1c], -0x05
0bcbe836 jnz 0x0bcb0010 ->0
0bcbe83c mov r15d, [r15+0x18]
0bcbe840 mov eax, [rax+0x8]
0bcbe843 mov dword [rax+0x14], 0xfffffffb
0bcbe84a mov [rax+0x10], r15d
0bcbe84e mov esi, [rbp+0x1c]
0bcbe851 and esi, 0x2a54dc55
0bcbe857 lea esi, [rsi+rsi*2]
0bcbe85a shl esi, 0x03
0bcbe85d add esi, [rbp+0x14]
0bcbe860 cmp dword [rsi+0xc], -0x05
0bcbe864 jnz 0x0bcbe873
0bcbe866 cmp dword [rsi+0x8], 0x419b09b0
0bcbe86d jz 0x0bcb0014 ->1
0bcbe873 mov esi, [rsi+0x10]
0bcbe876 test esi, esi
0bcbe878 jnz 0x0bcbe860
0bcbe87a cmp dword [rbp+0x10], +0x00
0bcbe87e jnz 0x0bcb0014 ->1
0bcbe884 mov edx, 0x4105e448
0bcbe889 mov dword [rdx+0x4], 0xfffffffb
0bcbe890 mov dword [rdx], 0x419b09b0
0bcbe896 mov esi, ebp
0bcbe898 call 0x00422cf0 ->lj_tab_newkey
0bcbe89d mov ebx, eax
0bcbe89f mov edx, [0x4105e4b4]
0bcbe8a6 mov eax, [rsp+0x8]
0bcbe8aa mov dword [rbx+0x4], 0xfffffff4
0bcbe8b1 mov [rbx], eax
0bcbe8b3 test byte [rbp+0x4], 0x4
0bcbe8b7 jz 0x0bcbe8ce
0bcbe8b9 and byte [rbp+0x4], 0xfb
0bcbe8bd mov edi, [0x4105e3f4]
0bcbe8c4 mov [0x4105e3f4], ebp
0bcbe8cb mov [rbp+0xc], edi
0bcbe8ce mov dword [rdx-0x8], 0x419b31b0
0bcbe8d5 jmp 0x0bcbe8e1
---- TRACE 4 stop -> 3
---- TRACE 3 exit 1
---- TRACE 3 exit 3
---- TRACE 2 exit 8
---- TRACE 3 exit 4
---- TRACE 1 start ssa.lua:39
0001 UGET 0 0 ; label_counter
0002 ADDVN 0 0 0 ; 1
0003 USETV 0 0 ; label_counter
0004 KSTR 0 0 ; "L"
0005 UGET 1 0 ; label_counter
0006 CAT 0 0 1
0007 TDUP 1 1
0008 TNEW 2 0
0009 TSETS 2 1 2 ; "bindings"
0010 TSETS 0 1 3 ; "label"
0011 UGET 2 1 ; ssa
0012 TGETS 2 2 4 ; "blocks"
0013 TSETV 1 2 0
0014 RET1 1 2
---- TRACE 1 IR
.... SNAP #0 [ ---- ]
0001 rbp fun SLOAD #0 R
0002 rbx > p32 UREFO 0001 #0
0003 xmm7 > num ULOAD 0002
0004 [10] num ADD 0003 +1 
0005 num USTORE 0002 0004
.... SNAP #1 [ ---- ---- ]
0006 str TOSTR 0004 NUM
0007 rdi p32 BUFHDR [0x41afa414] RESET
0008 rdi p32 BUFPUT 0007 "L" 
0009 rdi p32 BUFPUT 0008 0006
0010 [c] str BUFSTR 0009 0007
0011 [8] > tab TDUP {0x40077138}
0012 r15 > tab TNEW #0 #0
0013 rbx p32 FLOAD 0011 tab.node
0014 p32 HREFK 0013 "bindings" @0
0015 tab HSTORE 0014 0012
0016 p32 HREFK 0013 "label" @1
0017 str HSTORE 0016 0010
.... SNAP #2 [ ---- 0010 0011 ---- ]
0018 rbp > p32 UREFO 0001 #1
0019 rbp > tab ULOAD 0018
0020 int FLOAD 0019 tab.hmask
0021 > int EQ 0020 +1 
0022 rbp p32 FLOAD 0019 tab.node
0023 > p32 HREFK 0022 "blocks" @0
0024 rbp > tab HLOAD 0023
0025 rsi p32 HREF 0024 0010
0026 > p32 EQ 0025 [0x41afa458]
0027 tab FLOAD 0024 tab.meta
0028 > tab EQ 0027 [NULL]
0029 rbx p32 NEWREF 0024 0010
0030 tab HSTORE 0029 0011
0031 nil TBAR 0024
0032 p32 FREF 0024 tab.nomm
0033 u8  FSTORE 0032 +0 
.... SNAP #3 [ ---- ---- 0011 ]
---- TRACE 1 mcode 441
0bcbfe44 add rsp, -0x10
0bcbfe48 mov dword [0x41afa410], 0x1
0bcbfe53 mov edi, [0x41afa3d8]
0bcbfe5a cmp edi, [0x41afa3dc]
0bcbfe61 jb 0x0bcbfe7a
0bcbfe63 mov esi, 0x3
0bcbfe68 mov edi, 0x41afa3b8
0bcbfe6d call 0x00421730 ->lj_gc_step_jit
0bcbfe72 test eax, eax
0bcbfe74 jnz 0x0bcb0010 ->0
0bcbfe7a mov edx, [0x41afa4b4]
0bcbfe81 mov ebp, [rdx-0x8]
0bcbfe84 mov edi, [rbp+0x14]
0bcbfe87 mov ebx, [rdi+0x10]
0bcbfe8a cmp dword [rbx+0x4], 0xfffeffff
0bcbfe91 jnb 0x0bcb0010 ->0
0bcbfe97 movsd xmm7, [rbx]
0bcbfe9b addsd xmm7, [0x4006abc0]
0bcbfea4 movsd [rsp+0x10], xmm7
0bcbfeaa movsd [rbx], xmm7
0bcbfeae mov edi, 0x41afa414
0bcbfeb3 mov esi, [rdi+0x8]
0bcbfeb6 mov [rdi], esi
0bcbfeb8 mov esi, 0x4c
0bcbfebd call 0x00421b60 ->lj_buf_putchar
0bcbfec2 mov edi, eax
0bcbfec4 lea rsi, [rsp+0x10]
0bcbfec9 call 0x0040a3c0 ->lj_strfmt_putnum
0bcbfece mov edi, eax
0bcbfed0 call 0x00421ff0 ->lj_buf_tostr
0bcbfed5 mov [rsp+0xc], eax
0bcbfed9 mov edi, [0x41afa4b0]
0bcbfee0 mov esi, 0x40077138
0bcbfee5 call 0x004223c0 ->lj_tab_dup
0bcbfeea mov ebx, eax
0bcbfeec mov [rsp+0x8], ebx
0bcbfef0 mov edi, [0x41afa4b0]
0bcbfef7 xor esi, esi
0bcbfef9 call 0x00422350 ->lj_tab_new1
0bcbfefe mov r15d, eax
0bcbff01 mov edi, [0x41afa4b0]
0bcbff08 mov eax, [rsp+0xc]
0bcbff0c mov ebx, [rbx+0x14]
0bcbff0f mov dword [rbx+0x4], 0xfffffff4
0bcbff16 mov [rbx], r15d
0bcbff19 mov dword [rbx+0x1c], 0xfffffffb
0bcbff20 mov [rbx+0x18], eax
0bcbff23 mov esi, [rbp+0x18]
0bcbff26 mov ebp, [rsi+0x10]
0bcbff29 cmp dword [rbp+0x4], -0x0c
0bcbff2d jnz 0x0bcb0018 ->2
0bcbff33 mov ebp, [rbp+0x0]
0bcbff36 cmp dword [rbp+0x1c], +0x01
0bcbff3a jnz 0x0bcb0018 ->2
0bcbff40 mov ebp, [rbp+0x14]
0bcbff43 mov rsi, 0xfffffffb400763b0
0bcbff4d cmp rsi, [rbp+0x8]
0bcbff51 jnz 0x0bcb0018 ->2
0bcbff57 cmp dword [rbp+0x4], -0x0c
0bcbff5b jnz 0x0bcb0018 ->2
0bcbff61 mov ebp, [rbp+0x0]
0bcbff64 mov esi, [rbp+0x1c]
0bcbff67 and esi, [rax+0x8]
0bcbff6a lea esi, [rsi+rsi*2]
0bcbff6d shl esi, 0x03
0bcbff70 add esi, [rbp+0x14]
0bcbff73 cmp dword [rsi+0xc], -0x05
0bcbff77 jnz 0x0bcbff82
0bcbff79 cmp eax, [rsi+0x8]
0bcbff7c jz 0x0bcb0018 ->2
0bcbff82 mov esi, [rsi+0x10]
0bcbff85 test esi, esi
0bcbff87 jnz 0x0bcbff73
0bcbff89 cmp dword [rbp+0x10], +0x00
0bcbff8d jnz 0x0bcb0018 ->2
0bcbff93 mov edx, 0x41afa448
0bcbff98 mov dword [rdx+0x4], 0xfffffffb
0bcbff9f mov [rdx], eax
0bcbffa1 mov esi, ebp
0bcbffa3 call 0x00422cf0 ->lj_tab_newkey
0bcbffa8 mov ebx, eax
0bcbffaa mov edx, [0x41afa4b4]
0bcbffb1 mov eax, [rsp+0x8]
0bcbffb5 mov dword [rbx+0x4], 0xfffffff4
0bcbffbc mov [rbx], eax
0bcbffbe test byte [rbp+0x4], 0x4
0bcbffc2 jz 0x0bcbffd9
0bcbffc4 and byte [rbp+0x4], 0xfb
0bcbffc8 mov edi, [0x41afa3f4]
0bcbffcf mov [0x41afa3f4], ebp
0bcbffd6 mov [rbp+0xc], edi
0bcbffd9 mov byte [rbp+0x6], 0x0
0bcbffdd mov dword [rdx+0xc], 0xfffffff4
0bcbffe4 mov [rdx+0x8], eax
0bcbffe7 xor eax, eax
0bcbffe9 mov ebx, 0x40077dd8
0bcbffee mov r14d, 0x41afb008
0bcbfff4 add rsp, +0x10
0bcbfff8 jmp 0x00420177
---- TRACE 1 stop -> return
---- TRACE 2 start ssa.lua:55
0001 GGET 4 0 ; "assert"
0002 GGET 5 1 ; "type"
0003 MOV 6 0
0004 CALL 5 2 2
0000 . FUNCC ; type
0005 ISEQS 5 2 ; "table"
0006 JMP 5 => 0009
0009 KPRI 5 2
0010 CALL 4 1 2
0000 . FUNCC ; assert
0011 TGETB 4 0 1
0012 ISNES 4 3 ; "if"
0013 JMP 5 => 0037
0037 ISNES 4 4 ; "let"
0038 JMP 5 => 0056
0056 ISNES 4 10 ; "true"
0057 JMP 5 => 0063
0063 ISNES 4 11 ; "false"
0064 JMP 5 => 0070
0070 ISNES 4 12 ; "match"
0071 JMP 5 => 0077
0077 ISNES 4 14 ; "fail"
0078 JMP 5 => 0084
0084 GGET 5 0 ; "assert"
0085 UGET 6 4 ; relops
0086 TGETV 6 6 4
0087 CALL 5 1 2
0000 . FUNCC ; assert
0088 UGET 5 5 ; finish_if
0089 MOV 6 1
0090 MOV 7 0
0091 MOV 8 2
0092 MOV 9 3
0093 CALL 5 1 5
0000 . FUNCF 6 ; ssa.lua:49
0001 . TDUP 4 1
0002 . TSETB 1 4 2
0003 . TGETS 5 2 2 ; "label"
0004 . TSETB 5 4 3
0005 . TGETS 5 3 2 ; "label"
0006 . TSETB 5 4 4
0007 . TSETS 4 0 0 ; "control"
0008 . RET0 0 1
0094 RET0 0 1
---- TRACE 2 IR
.... SNAP #0 [ ---- ---- ---- ---- ---- ]
0001 rbp fun SLOAD #0 R
0002 r15 tab FLOAD 0001 func.env
0003 rsi p32 HREF 0002 "assert"
0004 > p32 EQ 0003 [0x41afa458]
0005 rbx tab FLOAD 0002 tab.meta
0006 > tab NE 0005 [NULL]
0007 int FLOAD 0005 tab.hmask
0008 > int EQ 0007 +1 
0009 rbx p32 FLOAD 0005 tab.node
0010 > p32 HREFK 0009 "__index" @1
0011 rbx > tab HLOAD 0010
0012 int FLOAD 0011 tab.hmask
0013 > int EQ 0012 +63 
0014 rbx p32 FLOAD 0011 tab.node
0015 > p32 HREFK 0014 "assert" @3
0016 > fun HLOAD 0015
0017 rsi p32 HREF 0002 "type"
0018 > p32 EQ 0017 [0x41afa458]
0019 > p32 HREFK 0014 "type" @60
0020 > fun HLOAD 0019
0021 r15 > tab SLOAD #1 T
0022 > fun EQ 0020 type
0023 > fun EQ 0016 assert
0024 int FLOAD 0021 tab.asize
0025 > int ABC 0024 +1 
0026 rbx p32 FLOAD 0021 tab.array
0027 p32 AREF 0026 +1 
0028 rbx > str ALOAD 0027
.... SNAP #1 [ ---- ---- ---- ---- ---- 0028 ]
0029 > str NE 0028 "if"
.... SNAP #2 [ ---- ---- ---- ---- ---- 0028 ]
0030 > str NE 0028 "let"
.... SNAP #3 [ ---- ---- ---- ---- ---- 0028 ]
0031 > str NE 0028 "true"
.... SNAP #4 [ ---- ---- ---- ---- ---- 0028 ]
0032 > str NE 0028 "false"
.... SNAP #5 [ ---- ---- ---- ---- ---- 0028 ]
0033 > str NE 0028 "match"
.... SNAP #6 [ ---- ---- ---- ---- ---- 0028 ]
0034 > str NE 0028 "fail"
.... SNAP #7 [ ---- ---- ---- ---- ---- 0028 ]
0035 r14 > p32 UREFC 0001 #4
0036 r13 > tab ULOAD 0035
0037 r14 p32 HREF 0036 0028
0038 > tru HLOAD 0037
0039 > fun EQ 0001 ssa.lua:55
0040 rbp > tab SLOAD #2 T
0041 r13 > tab SLOAD #3 T
0042 r14 > tab SLOAD #4 T
0043 [8] > tab TDUP {0x400782e8}
0044 rax p32 FLOAD 0043 tab.array
0045 p32 AREF 0044 +2 
0046 tab ASTORE 0045 0021
.... SNAP #8 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:49|0040 ---- 0041 0042 0043 ]
0047 int FLOAD 0041 tab.hmask
0048 > int EQ 0047 +1 
0049 r15 p32 FLOAD 0041 tab.node
0050 > p32 HREFK 0049 "label" @1
0051 r15 > str HLOAD 0050
0052 p32 AREF 0044 +3 
0053 str ASTORE 0052 0051
.... SNAP #9 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:49|0040 ---- ---- 0042 0043 ---- ]
0054 int FLOAD 0042 tab.hmask
0055 > int EQ 0054 +1 
0056 r15 p32 FLOAD 0042 tab.node
0057 > p32 HREFK 0056 "label" @1
0058 r15 > str HLOAD 0057
0059 p32 AREF 0044 +4 
0060 str ASTORE 0059 0058
.... SNAP #10 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:49|0040 ---- ---- ---- 0043 ---- ]
0061 rsi p32 HREF 0040 "control"
0062 > p32 EQ 0061 [0x41afa458]
0063 tab FLOAD 0040 tab.meta
0064 > tab EQ 0063 [NULL]
0065 rbx p32 NEWREF 0040 "control"
0066 tab HSTORE 0065 0043
0067 nil TBAR 0040
.... SNAP #11 [ ssa.lua:55|]
---- TRACE 2 mcode 916
0bcbfaa9 mov dword [0x41afa410], 0x2
0bcbfab4 mov edi, [0x41afa3d8]
0bcbfabb cmp edi, [0x41afa3dc]
0bcbfac2 jb 0x0bcbfadb
0bcbfac4 mov esi, 0x1
0bcbfac9 mov edi, 0x41afa3b8
0bcbface call 0x00421730 ->lj_gc_step_jit
0bcbfad3 test eax, eax
0bcbfad5 jnz 0x0bcb0010 ->0
0bcbfadb mov edi, [0x41afa4b0]
0bcbfae2 mov edx, [0x41afa4b4]
0bcbfae9 mov ebp, [rdx-0x8]
0bcbfaec mov r15d, [rbp+0x8]
0bcbfaf0 mov esi, [r15+0x1c]
0bcbfaf4 and esi, 0xce2b6183
0bcbfafa lea esi, [rsi+rsi*2]
0bcbfafd shl esi, 0x03
0bcbfb00 add esi, [r15+0x14]
0bcbfb04 cmp dword [rsi+0xc], -0x05
0bcbfb08 jnz 0x0bcbfb17
0bcbfb0a cmp dword [rsi+0x8], 0x41afcdb0
0bcbfb11 jz 0x0bcb0010 ->0
0bcbfb17 mov esi, [rsi+0x10]
0bcbfb1a test esi, esi
0bcbfb1c jnz 0x0bcbfb04
0bcbfb1e mov ebx, [r15+0x10]
0bcbfb22 test ebx, ebx
0bcbfb24 jz 0x0bcb0010 ->0
0bcbfb2a cmp dword [rbx+0x1c], +0x01
0bcbfb2e jnz 0x0bcb0010 ->0
0bcbfb34 mov ebx, [rbx+0x14]
0bcbfb37 mov rsi, 0xfffffffb41afc4c8
0bcbfb41 cmp rsi, [rbx+0x20]
0bcbfb45 jnz 0x0bcb0010 ->0
0bcbfb4b cmp dword [rbx+0x1c], -0x0c
0bcbfb4f jnz 0x0bcb0010 ->0
0bcbfb55 mov ebx, [rbx+0x18]
0bcbfb58 cmp dword [rbx+0x1c], +0x3f
0bcbfb5c jnz 0x0bcb0010 ->0
0bcbfb62 mov ebx, [rbx+0x14]
0bcbfb65 mov rsi, 0xfffffffb41afcdb0
0bcbfb6f cmp rsi, [rbx+0x50]
0bcbfb73 jnz 0x0bcb0010 ->0
0bcbfb79 cmp dword [rbx+0x4c], -0x09
0bcbfb7d jnz 0x0bcb0010 ->0
0bcbfb83 mov esi, [r15+0x1c]
0bcbfb87 and esi, 0x798a813c
0bcbfb8d lea esi, [rsi+rsi*2]
0bcbfb90 shl esi, 0x03
0bcbfb93 add esi, [r15+0x14]
0bcbfb97 cmp dword [rsi+0xc], -0x05
0bcbfb9b jnz 0x0bcbfbaa
0bcbfb9d cmp dword [rsi+0x8], 0x41afcfb0
0bcbfba4 jz 0x0bcb0010 ->0
0bcbfbaa mov esi, [rsi+0x10]
0bcbfbad test esi, esi
0bcbfbaf jnz 0x0bcbfb97
0bcbfbb1 mov rsi, 0xfffffffb41afcfb0
0bcbfbbb cmp rsi, [rbx+0x5a8]
0bcbfbc2 jnz 0x0bcb0010 ->0
0bcbfbc8 cmp dword [rbx+0x5a4], -0x09
0bcbfbcf jnz 0x0bcb0010 ->0
0bcbfbd5 cmp dword [rdx+0x4], -0x0c
0bcbfbd9 jnz 0x0bcb0010 ->0
0bcbfbdf mov r15d, [rdx]
0bcbfbe2 cmp dword [rbx+0x5a0], 0x41afcf18
0bcbfbec jnz 0x0bcb0010 ->0
0bcbfbf2 cmp dword [rbx+0x48], 0x41afcd88
0bcbfbf9 jnz 0x0bcb0010 ->0
0bcbfbff cmp dword [r15+0x18], +0x01
0bcbfc04 jbe 0x0bcb0010 ->0
0bcbfc0a mov ebx, [r15+0x8]
0bcbfc0e cmp dword [rbx+0xc], -0x05
0bcbfc12 jnz 0x0bcb0010 ->0
0bcbfc18 mov ebx, [rbx+0x8]
0bcbfc1b cmp ebx, 0x41afc8f8
0bcbfc21 jz 0x0bcb0014 ->1
0bcbfc27 cmp ebx, 0x40066fc8
0bcbfc2d jz 0x0bcb0018 ->2
0bcbfc33 cmp ebx, 0x41afca18
0bcbfc39 jz 0x0bcb001c ->3
0bcbfc3f cmp ebx, 0x41afc870
0bcbfc45 jz 0x0bcb0020 ->4
0bcbfc4b cmp ebx, 0x41affcb0
0bcbfc51 jz 0x0bcb0024 ->5
0bcbfc57 cmp ebx, 0x41b177f8
0bcbfc5d jz 0x0bcb0028 ->6
0bcbfc63 mov esi, [rbp+0x24]
0bcbfc66 cmp byte [rsi+0x6], 0x1
0bcbfc6a jnz 0x0bcb002c ->7
0bcbfc70 lea r14d, [rsi+0x8]
0bcbfc74 cmp dword [r14+0x4], -0x0c
0bcbfc79 jnz 0x0bcb002c ->7
0bcbfc7f mov r13d, [r14]
0bcbfc82 mov r14d, [r13+0x1c]
0bcbfc86 and r14d, [rbx+0x8]
0bcbfc8a lea r14d, [r14+r14*2]
0bcbfc8e shl r14d, 0x03
0bcbfc92 add r14d, [r13+0x14]
0bcbfc96 cmp dword [r14+0xc], -0x05
0bcbfc9b jnz 0x0bcbfca3
0bcbfc9d cmp ebx, [r14+0x8]
0bcbfca1 jz 0x0bcbfcb2
0bcbfca3 mov r14d, [r14+0x10]
0bcbfca7 test r14d, r14d
0bcbfcaa jnz 0x0bcbfc96
0bcbfcac mov r14d, 0x41afa458
0bcbfcb2 cmp dword [r14+0x4], -0x03
0bcbfcb7 jnz 0x0bcb002c ->7
0bcbfcbd cmp ebp, 0x41b0eb78
0bcbfcc3 jnz 0x0bcb002c ->7
0bcbfcc9 cmp dword [rdx+0xc], -0x0c
0bcbfccd jnz 0x0bcb002c ->7
0bcbfcd3 mov ebp, [rdx+0x8]
0bcbfcd6 cmp dword [rdx+0x14], -0x0c
0bcbfcda jnz 0x0bcb002c ->7
0bcbfce0 mov r13d, [rdx+0x10]
0bcbfce4 cmp dword [rdx+0x1c], -0x0c
0bcbfce8 jnz 0x0bcb002c ->7
0bcbfcee mov r14d, [rdx+0x18]
0bcbfcf2 mov esi, 0x400782e8
0bcbfcf7 call 0x004223c0 ->lj_tab_dup
0bcbfcfc mov [rsp+0x8], eax
0bcbfd00 mov edi, [0x41afa4b0]
0bcbfd07 mov eax, [rax+0x8]
0bcbfd0a mov dword [rax+0x14], 0xfffffff4
0bcbfd11 mov [rax+0x10], r15d
0bcbfd15 cmp dword [r13+0x1c], +0x01
0bcbfd1a jnz 0x0bcb0030 ->8
0bcbfd20 mov r15d, [r13+0x14]
0bcbfd24 mov rsi, 0xfffffffb40076450
0bcbfd2e cmp rsi, [r15+0x20]
0bcbfd32 jnz 0x0bcb0030 ->8
0bcbfd38 cmp dword [r15+0x1c], -0x05
0bcbfd3d jnz 0x0bcb0030 ->8
0bcbfd43 mov r15d, [r15+0x18]
0bcbfd47 mov dword [rax+0x1c], 0xfffffffb
0bcbfd4e mov [rax+0x18], r15d
0bcbfd52 cmp dword [r14+0x1c], +0x01
0bcbfd57 jnz 0x0bcb0034 ->9
0bcbfd5d mov r15d, [r14+0x14]
0bcbfd61 mov rsi, 0xfffffffb40076450
0bcbfd6b cmp rsi, [r15+0x20]
0bcbfd6f jnz 0x0bcb0034 ->9
0bcbfd75 cmp dword [r15+0x1c], -0x05
0bcbfd7a jnz 0x0bcb0034 ->9
0bcbfd80 mov r15d, [r15+0x18]
0bcbfd84 mov dword [rax+0x24], 0xfffffffb
0bcbfd8b mov [rax+0x20], r15d
0bcbfd8f mov esi, [rbp+0x1c]
0bcbfd92 and esi, 0x2a54dc55
0bcbfd98 lea esi, [rsi+rsi*2]
0bcbfd9b shl esi, 0x03
0bcbfd9e add esi, [rbp+0x14]
0bcbfda1 cmp dword [rsi+0xc], -0x05
0bcbfda5 jnz 0x0bcbfdb4
0bcbfda7 cmp dword [rsi+0x8], 0x40076bb8
0bcbfdae jz 0x0bcb0038 ->10
0bcbfdb4 mov esi, [rsi+0x10]
0bcbfdb7 test esi, esi
0bcbfdb9 jnz 0x0bcbfda1
0bcbfdbb cmp dword [rbp+0x10], +0x00
0bcbfdbf jnz 0x0bcb0038 ->10
0bcbfdc5 mov edx, 0x41afa448
0bcbfdca mov dword [rdx+0x4], 0xfffffffb
0bcbfdd1 mov dword [rdx], 0x40076bb8
0bcbfdd7 mov esi, ebp
0bcbfdd9 call 0x00422cf0 ->lj_tab_newkey
0bcbfdde mov ebx, eax
0bcbfde0 mov edx, [0x41afa4b4]
0bcbfde7 mov eax, [rsp+0x8]
0bcbfdeb mov dword [rbx+0x4], 0xfffffff4
0bcbfdf2 mov [rbx], eax
0bcbfdf4 test byte [rbp+0x4], 0x4
0bcbfdf8 jz 0x0bcbfe0f
0bcbfdfa and byte [rbp+0x4], 0xfb
0bcbfdfe mov edi, [0x41afa3f4]
0bcbfe05 mov [0x41afa3f4], ebp
0bcbfe0c mov [rbp+0xc], edi
0bcbfe0f mov eax, [0x41afa4b0]
0bcbfe16 mov eax, [rax+0x20]
0bcbfe19 sub eax, edx
0bcbfe1b cmp eax, +0x68
0bcbfe1e jb 0x0bcb003c ->11
0bcbfe24 mov dword [rdx-0x8], 0x41b0eb78
0bcbfe2b xor eax, eax
0bcbfe2d mov ebx, 0x40077c18
0bcbfe32 mov r14d, 0x41afb008
0bcbfe38 jmp 0x00420177
---- TRACE 2 stop -> return
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 5
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 2 exit 2
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 2 exit 3
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 3 start 2/1 ssa.lua:59
0014 UGET 5 0 ; add_block
0015 CALL 5 2 1
0000 . JFUNCF 3 1 ; ssa.lua:39
0001 . UGET 0 0 ; label_counter
0002 . ADDVN 0 0 0 ; 1
0003 . USETV 0 0 ; label_counter
0004 . KSTR 0 0 ; "L"
0005 . UGET 1 0 ; label_counter
0006 . CAT 0 0 1
0007 . TDUP 1 1
0008 . TNEW 2 0
0009 . TSETS 2 1 2 ; "bindings"
0010 . TSETS 0 1 3 ; "label"
0011 . UGET 2 1 ; ssa
0012 . TGETS 2 2 4 ; "blocks"
0013 . TSETV 1 2 0
0014 . RET1 1 2
0016 UGET 6 0 ; add_block
0017 CALL 6 2 1
0000 . JFUNCF 3 1 ; ssa.lua:39
0001 . UGET 0 0 ; label_counter
0002 . ADDVN 0 0 0 ; 1
0003 . USETV 0 0 ; label_counter
0004 . KSTR 0 0 ; "L"
0005 . UGET 1 0 ; label_counter
0006 . CAT 0 0 1
0007 . TDUP 1 1
0008 . TNEW 2 0
0009 . TSETS 2 1 2 ; "bindings"
0010 . TSETS 0 1 3 ; "label"
0011 . UGET 2 1 ; ssa
0012 . TGETS 2 2 4 ; "blocks"
0013 . TSETV 1 2 0
0014 . RET1 1 2
0018 UGET 7 1 ; compile_bool
0019 TGETB 8 0 2
0020 MOV 9 1
0021 MOV 10 5
0022 MOV 11 6
0023 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0070 . ISNES 4 12 ; "match"
0071 . JMP 5 => 0077
0077 . ISNES 4 14 ; "fail"
0078 . JMP 5 => 0084
0084 . GGET 5 0 ; "assert"
0085 . UGET 6 4 ; relops
0086 . TGETV 6 6 4
0087 . CALL 5 1 2
0000 . . FUNCC ; assert
0088 . UGET 5 5 ; finish_if
0089 . MOV 6 1
0090 . MOV 7 0
0091 . MOV 8 2
0092 . MOV 9 3
0093 . CALL 5 1 5
0000 . . FUNCF 6 ; ssa.lua:49
0001 . . TDUP 4 1
0002 . . TSETB 1 4 2
0003 . . TGETS 5 2 2 ; "label"
0004 . . TSETB 5 4 3
0005 . . TGETS 5 3 2 ; "label"
0006 . . TSETB 5 4 4
0007 . . TSETS 4 0 0 ; "control"
0008 . . RET0 0 1
0094 . RET0 0 1
0024 UGET 7 1 ; compile_bool
0025 TGETB 8 0 3
0026 MOV 9 5
0027 MOV 10 2
0028 MOV 11 3
0029 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0070 . ISNES 4 12 ; "match"
0071 . JMP 5 => 0077
0077 . ISNES 4 14 ; "fail"
0078 . JMP 5 => 0084
0084 . GGET 5 0 ; "assert"
0085 . UGET 6 4 ; relops
0086 . TGETV 6 6 4
0087 . CALL 5 1 2
0000 . . FUNCC ; assert
0088 . UGET 5 5 ; finish_if
0089 . MOV 6 1
0090 . MOV 7 0
0091 . MOV 8 2
0092 . MOV 9 3
0093 . CALL 5 1 5
0000 . . FUNCF 6 ; ssa.lua:49
0001 . . TDUP 4 1
0002 . . TSETB 1 4 2
0003 . . TGETS 5 2 2 ; "label"
0004 . . TSETB 5 4 3
0005 . . TGETS 5 3 2 ; "label"
0006 . . TSETB 5 4 4
0007 . . TSETS 4 0 0 ; "control"
0008 . . RET0 0 1
0094 . RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0070 . ISNES 4 12 ; "match"
0071 . JMP 5 => 0077
0077 . ISNES 4 14 ; "fail"
0078 . JMP 5 => 0084
0079 . UGET 5 3 ; finish_return
0080 . MOV 6 1
0081 . TDUP 7 15
0082 . CALL 5 1 3
0000 . . FUNCF 3 ; ssa.lua:46
0001 . . TDUP 2 1
0002 . . TSETB 1 2 2
0003 . . TSETS 2 0 0 ; "control"
0004 . . RET0 0 1
0083 . JMP 5 => 0094
0094 . RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0065 . UGET 5 2 ; finish_goto
0066 . MOV 6 1
0067 . MOV 7 3
0068 . CALL 5 1 3
0000 . . FUNCF 4 ; ssa.lua:52
0001 . . TDUP 2 1
0002 . . TGETS 3 1 2 ; "label"
0003 . . TSETB 3 2 2
0004 . . TSETS 2 0 0 ; "control"
0005 . . RET0 0 1
0069 . JMP 5 => 0094
0094 . RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
---- TRACE 3 abort ssa.lua:79 -- down-recursion, restarting
---- TRACE 3 start ssa.lua:79
0094 RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
0024 UGET 7 1 ; compile_bool
0025 TGETB 8 0 3
0026 MOV 9 5
0027 MOV 10 2
0028 MOV 11 3
0029 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0070 . ISNES 4 12 ; "match"
0071 . JMP 5 => 0077
0077 . ISNES 4 14 ; "fail"
0078 . JMP 5 => 0084
0084 . GGET 5 0 ; "assert"
0085 . UGET 6 4 ; relops
0086 . TGETV 6 6 4
0087 . CALL 5 1 2
0000 . . FUNCC ; assert
0088 . UGET 5 5 ; finish_if
0089 . MOV 6 1
0090 . MOV 7 0
0091 . MOV 8 2
0092 . MOV 9 3
0093 . CALL 5 1 5
0000 . . FUNCF 6 ; ssa.lua:49
0001 . . TDUP 4 1
0002 . . TSETB 1 4 2
0003 . . TGETS 5 2 2 ; "label"
0004 . . TSETB 5 4 3
0005 . . TGETS 5 3 2 ; "label"
0006 . . TSETB 5 4 4
0007 . . TSETS 4 0 0 ; "control"
0008 . . RET0 0 1
0094 . RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0065 . UGET 5 2 ; finish_goto
0066 . MOV 6 1
0067 . MOV 7 3
0068 . CALL 5 1 3
0000 . . FUNCF 4 ; ssa.lua:52
0001 . . TDUP 2 1
0002 . . TGETS 3 1 2 ; "label"
0003 . . TSETB 3 2 2
0004 . . TSETS 2 0 0 ; "control"
0005 . . RET0 0 1
0069 . JMP 5 => 0094
0094 . RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
0024 UGET 7 1 ; compile_bool
0025 TGETB 8 0 3
0026 MOV 9 5
0027 MOV 10 2
0028 MOV 11 3
0029 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0014 . UGET 5 0 ; add_block
0015 . CALL 5 2 1
0000 . . JFUNCF 3 1 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0016 . UGET 6 0 ; add_block
0017 . CALL 6 2 1
0000 . . JFUNCF 3 1 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0018 . UGET 7 1 ; compile_bool
0019 . TGETB 8 0 2
0020 . MOV 9 1
0021 . MOV 10 5
0022 . MOV 11 6
0023 . CALL 7 1 5
0000 . . JFUNCF 13 2 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0070 . . ISNES 4 12 ; "match"
0071 . . JMP 5 => 0077
0077 . . ISNES 4 14 ; "fail"
0078 . . JMP 5 => 0084
0084 . . GGET 5 0 ; "assert"
0085 . . UGET 6 4 ; relops
0086 . . TGETV 6 6 4
0087 . . CALL 5 1 2
0000 . . . FUNCC ; assert
0088 . . UGET 5 5 ; finish_if
0089 . . MOV 6 1
0090 . . MOV 7 0
0091 . . MOV 8 2
0092 . . MOV 9 3
0093 . . CALL 5 1 5
0000 . . . FUNCF 6 ; ssa.lua:49
0001 . . . TDUP 4 1
0002 . . . TSETB 1 4 2
0003 . . . TGETS 5 2 2 ; "label"
0004 . . . TSETB 5 4 3
0005 . . . TGETS 5 3 2 ; "label"
0006 . . . TSETB 5 4 4
0007 . . . TSETS 4 0 0 ; "control"
0008 . . . RET0 0 1
0094 . . RET0 0 1
0024 . UGET 7 1 ; compile_bool
0025 . TGETB 8 0 3
0026 . MOV 9 5
0027 . MOV 10 2
0028 . MOV 11 3
0029 . CALL 7 1 5
0000 . . JFUNCF 13 2 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0070 . . ISNES 4 12 ; "match"
0071 . . JMP 5 => 0077
0077 . . ISNES 4 14 ; "fail"
0078 . . JMP 5 => 0084
0084 . . GGET 5 0 ; "assert"
0085 . . UGET 6 4 ; relops
0086 . . TGETV 6 6 4
0087 . . CALL 5 1 2
0000 . . . FUNCC ; assert
0088 . . UGET 5 5 ; finish_if
0089 . . MOV 6 1
0090 . . MOV 7 0
0091 . . MOV 8 2
0092 . . MOV 9 3
0093 . . CALL 5 1 5
0000 . . . FUNCF 6 ; ssa.lua:49
0001 . . . TDUP 4 1
0002 . . . TSETB 1 4 2
0003 . . . TGETS 5 2 2 ; "label"
0004 . . . TSETB 5 4 3
0005 . . . TGETS 5 3 2 ; "label"
0006 . . . TSETB 5 4 4
0007 . . . TSETS 4 0 0 ; "control"
0008 . . . RET0 0 1
0094 . . RET0 0 1
0030 . UGET 7 1 ; compile_bool
0031 . TGETB 8 0 4
0032 . MOV 9 6
0033 . MOV 10 2
0034 . MOV 11 3
0035 . CALL 7 1 5
0000 . . JFUNCF 13 2 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0065 . . UGET 5 2 ; finish_goto
0066 . . MOV 6 1
0067 . . MOV 7 3
0068 . . CALL 5 1 3
0000 . . . FUNCF 4 ; ssa.lua:52
0001 . . . TDUP 2 1
0002 . . . TGETS 3 1 2 ; "label"
0003 . . . TSETB 3 2 2
0004 . . . TSETS 2 0 0 ; "control"
0005 . . . RET0 0 1
0069 . . JMP 5 => 0094
0094 . . RET0 0 1
0036 . JMP 5 => 0094
0094 . RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0065 . UGET 5 2 ; finish_goto
0066 . MOV 6 1
0067 . MOV 7 3
0068 . CALL 5 1 3
0000 . . FUNCF 4 ; ssa.lua:52
0001 . . TDUP 2 1
0002 . . TGETS 3 1 2 ; "label"
0003 . . TSETB 3 2 2
0004 . . TSETS 2 0 0 ; "control"
0005 . . RET0 0 1
0069 . JMP 5 => 0094
0094 . RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
---- TRACE 3 abort ssa.lua:79 -- retry recording
---- TRACE 2 exit 4
---- TRACE 2 exit 1
---- TRACE 3 start 2/1 ssa.lua:59
0014 UGET 5 0 ; add_block
0015 CALL 5 2 1
0000 . JFUNCF 3 1 ; ssa.lua:39
0001 . UGET 0 0 ; label_counter
0002 . ADDVN 0 0 0 ; 1
0003 . USETV 0 0 ; label_counter
0004 . KSTR 0 0 ; "L"
0005 . UGET 1 0 ; label_counter
0006 . CAT 0 0 1
0007 . TDUP 1 1
0008 . TNEW 2 0
0009 . TSETS 2 1 2 ; "bindings"
0010 . TSETS 0 1 3 ; "label"
0011 . UGET 2 1 ; ssa
0012 . TGETS 2 2 4 ; "blocks"
0013 . TSETV 1 2 0
0014 . RET1 1 2
0016 UGET 6 0 ; add_block
0017 CALL 6 2 1
0000 . JFUNCF 3 1 ; ssa.lua:39
0001 . UGET 0 0 ; label_counter
0002 . ADDVN 0 0 0 ; 1
0003 . USETV 0 0 ; label_counter
0004 . KSTR 0 0 ; "L"
0005 . UGET 1 0 ; label_counter
0006 . CAT 0 0 1
0007 . TDUP 1 1
0008 . TNEW 2 0
0009 . TSETS 2 1 2 ; "bindings"
0010 . TSETS 0 1 3 ; "label"
0011 . UGET 2 1 ; ssa
0012 . TGETS 2 2 4 ; "blocks"
0013 . TSETV 1 2 0
0014 . RET1 1 2
0018 UGET 7 1 ; compile_bool
0019 TGETB 8 0 2
0020 MOV 9 1
0021 MOV 10 5
0022 MOV 11 6
0023 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0070 . ISNES 4 12 ; "match"
0071 . JMP 5 => 0077
0077 . ISNES 4 14 ; "fail"
0078 . JMP 5 => 0084
0084 . GGET 5 0 ; "assert"
0085 . UGET 6 4 ; relops
0086 . TGETV 6 6 4
0087 . CALL 5 1 2
0000 . . FUNCC ; assert
0088 . UGET 5 5 ; finish_if
0089 . MOV 6 1
0090 . MOV 7 0
0091 . MOV 8 2
0092 . MOV 9 3
0093 . CALL 5 1 5
0000 . . FUNCF 6 ; ssa.lua:49
0001 . . TDUP 4 1
0002 . . TSETB 1 4 2
0003 . . TGETS 5 2 2 ; "label"
0004 . . TSETB 5 4 3
0005 . . TGETS 5 3 2 ; "label"
0006 . . TSETB 5 4 4
0007 . . TSETS 4 0 0 ; "control"
0008 . . RET0 0 1
0094 . RET0 0 1
0024 UGET 7 1 ; compile_bool
0025 TGETB 8 0 3
0026 MOV 9 5
0027 MOV 10 2
0028 MOV 11 3
0029 CALL 7 1 5
0000 . JFUNCF 13 2 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0039 . TGETB 5 0 2
0040 . TGETB 6 0 3
0041 . TGETB 7 0 4
0042 . GGET 8 2 ; "table"
0043 . TGETS 8 8 5 ; "insert"
0044 . TGETS 9 1 6 ; "bindings"
0045 . TDUP 10 7
0046 . TSETS 5 10 8 ; "name"
0047 . TSETS 6 10 9 ; "value"
0048 . CALL 8 1 3
0000 . . FUNCC ; table.insert
0049 . UGET 8 1 ; compile_bool
0050 . MOV 9 7
0051 . MOV 10 1
0052 . MOV 11 2
0053 . MOV 12 3
0054 . CALL 8 1 5
0000 . . JFUNCF 13 2 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0014 . . UGET 5 0 ; add_block
0015 . . CALL 5 2 1
0000 . . . JFUNCF 3 1 ; ssa.lua:39
0001 . . . UGET 0 0 ; label_counter
0002 . . . ADDVN 0 0 0 ; 1
0003 . . . USETV 0 0 ; label_counter
0004 . . . KSTR 0 0 ; "L"
0005 . . . UGET 1 0 ; label_counter
0006 . . . CAT 0 0 1
0007 . . . TDUP 1 1
0008 . . . TNEW 2 0
0009 . . . TSETS 2 1 2 ; "bindings"
0010 . . . TSETS 0 1 3 ; "label"
0011 . . . UGET 2 1 ; ssa
0012 . . . TGETS 2 2 4 ; "blocks"
0013 . . . TSETV 1 2 0
0014 . . . RET1 1 2
0016 . . UGET 6 0 ; add_block
0017 . . CALL 6 2 1
0000 . . . JFUNCF 3 1 ; ssa.lua:39
0001 . . . UGET 0 0 ; label_counter
0002 . . . ADDVN 0 0 0 ; 1
0003 . . . USETV 0 0 ; label_counter
0004 . . . KSTR 0 0 ; "L"
0005 . . . UGET 1 0 ; label_counter
0006 . . . CAT 0 0 1
0007 . . . TDUP 1 1
0008 . . . TNEW 2 0
0009 . . . TSETS 2 1 2 ; "bindings"
0010 . . . TSETS 0 1 3 ; "label"
0011 . . . UGET 2 1 ; ssa
0012 . . . TGETS 2 2 4 ; "blocks"
0013 . . . TSETV 1 2 0
0014 . . . RET1 1 2
0018 . . UGET 7 1 ; compile_bool
0019 . . TGETB 8 0 2
0020 . . MOV 9 1
0021 . . MOV 10 5
0022 . . MOV 11 6
0023 . . CALL 7 1 5
0000 . . . JFUNCF 13 2 ; ssa.lua:55
0001 . . . GGET 4 0 ; "assert"
0002 . . . GGET 5 1 ; "type"
0003 . . . MOV 6 0
0004 . . . CALL 5 2 2
0000 . . . . FUNCC ; type
0005 . . . ISEQS 5 2 ; "table"
0006 . . . JMP 5 => 0009
0009 . . . KPRI 5 2
0010 . . . CALL 4 1 2
0000 . . . . FUNCC ; assert
0011 . . . TGETB 4 0 1
0012 . . . ISNES 4 3 ; "if"
0013 . . . JMP 5 => 0037
0014 . . . UGET 5 0 ; add_block
0015 . . . CALL 5 2 1
0000 . . . . JFUNCF 3 1 ; ssa.lua:39
0001 . . . . UGET 0 0 ; label_counter
0002 . . . . ADDVN 0 0 0 ; 1
0003 . . . . USETV 0 0 ; label_counter
0004 . . . . KSTR 0 0 ; "L"
0005 . . . . UGET 1 0 ; label_counter
0006 . . . . CAT 0 0 1
0007 . . . . TDUP 1 1
0008 . . . . TNEW 2 0
0009 . . . . TSETS 2 1 2 ; "bindings"
0010 . . . . TSETS 0 1 3 ; "label"
0011 . . . . UGET 2 1 ; ssa
0012 . . . . TGETS 2 2 4 ; "blocks"
0013 . . . . TSETV 1 2 0
0014 . . . . RET1 1 2
0016 . . . UGET 6 0 ; add_block
0017 . . . CALL 6 2 1
0000 . . . . JFUNCF 3 1 ; ssa.lua:39
0001 . . . . UGET 0 0 ; label_counter
0002 . . . . ADDVN 0 0 0 ; 1
0003 . . . . USETV 0 0 ; label_counter
0004 . . . . KSTR 0 0 ; "L"
0005 . . . . UGET 1 0 ; label_counter
0006 . . . . CAT 0 0 1
0007 . . . . TDUP 1 1
0008 . . . . TNEW 2 0
0009 . . . . TSETS 2 1 2 ; "bindings"
0010 . . . . TSETS 0 1 3 ; "label"
0011 . . . . UGET 2 1 ; ssa
0012 . . . . TGETS 2 2 4 ; "blocks"
0013 . . . . TSETV 1 2 0
0014 . . . . RET1 1 2
0018 . . . UGET 7 1 ; compile_bool
0019 . . . TGETB 8 0 2
0020 . . . MOV 9 1
0021 . . . MOV 10 5
0022 . . . MOV 11 6
0023 . . . CALL 7 1 5
0000 . . . . JFUNCF 13 2 ; ssa.lua:55
---- TRACE 3 abort ssa.lua:55 -- call unroll limit reached
---- TRACE 1 start ssa.lua:39
0001 UGET 0 0 ; label_counter
0002 ADDVN 0 0 0 ; 1
0003 USETV 0 0 ; label_counter
0004 KSTR 0 0 ; "L"
0005 UGET 1 0 ; label_counter
0006 CAT 0 0 1
0007 TDUP 1 1
0008 TNEW 2 0
0009 TSETS 2 1 2 ; "bindings"
0010 TSETS 0 1 3 ; "label"
0011 UGET 2 1 ; ssa
0012 TGETS 2 2 4 ; "blocks"
0013 TSETV 1 2 0
0014 RET1 1 2
---- TRACE 1 IR
.... SNAP #0 [ ---- ]
0001 rbp fun SLOAD #0 R
0002 rbx > p32 UREFO 0001 #0
0003 xmm7 > num ULOAD 0002
0004 [10] num ADD 0003 +1 
0005 num USTORE 0002 0004
.... SNAP #1 [ ---- ---- ]
0006 str TOSTR 0004 NUM
0007 rdi p32 BUFHDR [0x40098414] RESET
0008 rdi p32 BUFPUT 0007 "L" 
0009 rdi p32 BUFPUT 0008 0006
0010 [c] str BUFSTR 0009 0007
0011 [8] > tab TDUP {0x40ff2f58}
0012 r15 > tab TNEW #0 #0
0013 rbx p32 FLOAD 0011 tab.node
0014 p32 HREFK 0013 "bindings" @0
0015 tab HSTORE 0014 0012
0016 p32 HREFK 0013 "label" @1
0017 str HSTORE 0016 0010
.... SNAP #2 [ ---- 0010 0011 ---- ]
0018 rbp > p32 UREFO 0001 #1
0019 rbp > tab ULOAD 0018
0020 int FLOAD 0019 tab.hmask
0021 > int EQ 0020 +1 
0022 rbp p32 FLOAD 0019 tab.node
0023 > p32 HREFK 0022 "blocks" @0
0024 rbp > tab HLOAD 0023
0025 rsi p32 HREF 0024 0010
0026 > p32 EQ 0025 [0x40098458]
0027 tab FLOAD 0024 tab.meta
0028 > tab EQ 0027 [NULL]
0029 rbx p32 NEWREF 0024 0010
0030 tab HSTORE 0029 0011
0031 nil TBAR 0024
0032 p32 FREF 0024 tab.nomm
0033 u8  FSTORE 0032 +0 
.... SNAP #3 [ ---- ---- 0011 ]
---- TRACE 1 mcode 441
0bcbfe44 add rsp, -0x10
0bcbfe48 mov dword [0x40098410], 0x1
0bcbfe53 mov edi, [0x400983d8]
0bcbfe5a cmp edi, [0x400983dc]
0bcbfe61 jb 0x0bcbfe7a
0bcbfe63 mov esi, 0x3
0bcbfe68 mov edi, 0x400983b8
0bcbfe6d call 0x00421730 ->lj_gc_step_jit
0bcbfe72 test eax, eax
0bcbfe74 jnz 0x0bcb0010 ->0
0bcbfe7a mov edx, [0x400984b4]
0bcbfe81 mov ebp, [rdx-0x8]
0bcbfe84 mov edi, [rbp+0x14]
0bcbfe87 mov ebx, [rdi+0x10]
0bcbfe8a cmp dword [rbx+0x4], 0xfffeffff
0bcbfe91 jnb 0x0bcb0010 ->0
0bcbfe97 movsd xmm7, [rbx]
0bcbfe9b addsd xmm7, [0x400a9568]
0bcbfea4 movsd [rsp+0x10], xmm7
0bcbfeaa movsd [rbx], xmm7
0bcbfeae mov edi, 0x40098414
0bcbfeb3 mov esi, [rdi+0x8]
0bcbfeb6 mov [rdi], esi
0bcbfeb8 mov esi, 0x4c
0bcbfebd call 0x00421b60 ->lj_buf_putchar
0bcbfec2 mov edi, eax
0bcbfec4 lea rsi, [rsp+0x10]
0bcbfec9 call 0x0040a3c0 ->lj_strfmt_putnum
0bcbfece mov edi, eax
0bcbfed0 call 0x00421ff0 ->lj_buf_tostr
0bcbfed5 mov [rsp+0xc], eax
0bcbfed9 mov edi, [0x400984b0]
0bcbfee0 mov esi, 0x40ff2f58
0bcbfee5 call 0x004223c0 ->lj_tab_dup
0bcbfeea mov ebx, eax
0bcbfeec mov [rsp+0x8], ebx
0bcbfef0 mov edi, [0x400984b0]
0bcbfef7 xor esi, esi
0bcbfef9 call 0x00422350 ->lj_tab_new1
0bcbfefe mov r15d, eax
0bcbff01 mov edi, [0x400984b0]
0bcbff08 mov eax, [rsp+0xc]
0bcbff0c mov ebx, [rbx+0x14]
0bcbff0f mov dword [rbx+0x4], 0xfffffff4
0bcbff16 mov [rbx], r15d
0bcbff19 mov dword [rbx+0x1c], 0xfffffffb
0bcbff20 mov [rbx+0x18], eax
0bcbff23 mov esi, [rbp+0x18]
0bcbff26 mov ebp, [rsi+0x10]
0bcbff29 cmp dword [rbp+0x4], -0x0c
0bcbff2d jnz 0x0bcb0018 ->2
0bcbff33 mov ebp, [rbp+0x0]
0bcbff36 cmp dword [rbp+0x1c], +0x01
0bcbff3a jnz 0x0bcb0018 ->2
0bcbff40 mov ebp, [rbp+0x14]
0bcbff43 mov rsi, 0xfffffffb40ff21d0
0bcbff4d cmp rsi, [rbp+0x8]
0bcbff51 jnz 0x0bcb0018 ->2
0bcbff57 cmp dword [rbp+0x4], -0x0c
0bcbff5b jnz 0x0bcb0018 ->2
0bcbff61 mov ebp, [rbp+0x0]
0bcbff64 mov esi, [rbp+0x1c]
0bcbff67 and esi, [rax+0x8]
0bcbff6a lea esi, [rsi+rsi*2]
0bcbff6d shl esi, 0x03
0bcbff70 add esi, [rbp+0x14]
0bcbff73 cmp dword [rsi+0xc], -0x05
0bcbff77 jnz 0x0bcbff82
0bcbff79 cmp eax, [rsi+0x8]
0bcbff7c jz 0x0bcb0018 ->2
0bcbff82 mov esi, [rsi+0x10]
0bcbff85 test esi, esi
0bcbff87 jnz 0x0bcbff73
0bcbff89 cmp dword [rbp+0x10], +0x00
0bcbff8d jnz 0x0bcb0018 ->2
0bcbff93 mov edx, 0x40098448
0bcbff98 mov dword [rdx+0x4], 0xfffffffb
0bcbff9f mov [rdx], eax
0bcbffa1 mov esi, ebp
0bcbffa3 call 0x00422cf0 ->lj_tab_newkey
0bcbffa8 mov ebx, eax
0bcbffaa mov edx, [0x400984b4]
0bcbffb1 mov eax, [rsp+0x8]
0bcbffb5 mov dword [rbx+0x4], 0xfffffff4
0bcbffbc mov [rbx], eax
0bcbffbe test byte [rbp+0x4], 0x4
0bcbffc2 jz 0x0bcbffd9
0bcbffc4 and byte [rbp+0x4], 0xfb
0bcbffc8 mov edi, [0x400983f4]
0bcbffcf mov [0x400983f4], ebp
0bcbffd6 mov [rbp+0xc], edi
0bcbffd9 mov byte [rbp+0x6], 0x0
0bcbffdd mov dword [rdx+0xc], 0xfffffff4
0bcbffe4 mov [rdx+0x8], eax
0bcbffe7 xor eax, eax
0bcbffe9 mov ebx, 0x40ff3bf8
0bcbffee mov r14d, 0x40099008
0bcbfff4 add rsp, +0x10
0bcbfff8 jmp 0x00420177
---- TRACE 1 stop -> return
---- TRACE 2 start ssa.lua:55
0001 GGET 4 0 ; "assert"
0002 GGET 5 1 ; "type"
0003 MOV 6 0
0004 CALL 5 2 2
0000 . FUNCC ; type
0005 ISEQS 5 2 ; "table"
0006 JMP 5 => 0009
0009 KPRI 5 2
0010 CALL 4 1 2
0000 . FUNCC ; assert
0011 TGETB 4 0 1
0012 ISNES 4 3 ; "if"
0013 JMP 5 => 0037
0014 UGET 5 0 ; add_block
0015 CALL 5 2 1
0000 . JFUNCF 3 1 ; ssa.lua:39
0001 . UGET 0 0 ; label_counter
0002 . ADDVN 0 0 0 ; 1
0003 . USETV 0 0 ; label_counter
0004 . KSTR 0 0 ; "L"
0005 . UGET 1 0 ; label_counter
0006 . CAT 0 0 1
0007 . TDUP 1 1
0008 . TNEW 2 0
0009 . TSETS 2 1 2 ; "bindings"
0010 . TSETS 0 1 3 ; "label"
0011 . UGET 2 1 ; ssa
0012 . TGETS 2 2 4 ; "blocks"
0013 . TSETV 1 2 0
0014 . RET1 1 2
0016 UGET 6 0 ; add_block
0017 CALL 6 2 1
0000 . JFUNCF 3 1 ; ssa.lua:39
0001 . UGET 0 0 ; label_counter
0002 . ADDVN 0 0 0 ; 1
0003 . USETV 0 0 ; label_counter
0004 . KSTR 0 0 ; "L"
0005 . UGET 1 0 ; label_counter
0006 . CAT 0 0 1
0007 . TDUP 1 1
0008 . TNEW 2 0
0009 . TSETS 2 1 2 ; "bindings"
0010 . TSETS 0 1 3 ; "label"
0011 . UGET 2 1 ; ssa
0012 . TGETS 2 2 4 ; "blocks"
0013 . TSETV 1 2 0
0014 . RET1 1 2
0018 UGET 7 1 ; compile_bool
0019 TGETB 8 0 2
0020 MOV 9 1
0021 MOV 10 5
0022 MOV 11 6
0023 CALL 7 1 5
0000 . FUNCF 13 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0070 . ISNES 4 12 ; "match"
0071 . JMP 5 => 0077
0077 . ISNES 4 14 ; "fail"
0078 . JMP 5 => 0084
0084 . GGET 5 0 ; "assert"
0085 . UGET 6 4 ; relops
0086 . TGETV 6 6 4
0087 . CALL 5 1 2
0000 . . FUNCC ; assert
0088 . UGET 5 5 ; finish_if
0089 . MOV 6 1
0090 . MOV 7 0
0091 . MOV 8 2
0092 . MOV 9 3
0093 . CALL 5 1 5
0000 . . FUNCF 6 ; ssa.lua:49
0001 . . TDUP 4 1
0002 . . TSETB 1 4 2
0003 . . TGETS 5 2 2 ; "label"
0004 . . TSETB 5 4 3
0005 . . TGETS 5 3 2 ; "label"
0006 . . TSETB 5 4 4
0007 . . TSETS 4 0 0 ; "control"
0008 . . RET0 0 1
0094 . RET0 0 1
0024 UGET 7 1 ; compile_bool
0025 TGETB 8 0 3
0026 MOV 9 5
0027 MOV 10 2
0028 MOV 11 3
0029 CALL 7 1 5
0000 . FUNCF 13 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0070 . ISNES 4 12 ; "match"
0071 . JMP 5 => 0077
0077 . ISNES 4 14 ; "fail"
0078 . JMP 5 => 0084
0084 . GGET 5 0 ; "assert"
0085 . UGET 6 4 ; relops
0086 . TGETV 6 6 4
0087 . CALL 5 1 2
0000 . . FUNCC ; assert
0088 . UGET 5 5 ; finish_if
0089 . MOV 6 1
0090 . MOV 7 0
0091 . MOV 8 2
0092 . MOV 9 3
0093 . CALL 5 1 5
0000 . . FUNCF 6 ; ssa.lua:49
0001 . . TDUP 4 1
0002 . . TSETB 1 4 2
0003 . . TGETS 5 2 2 ; "label"
0004 . . TSETB 5 4 3
0005 . . TGETS 5 3 2 ; "label"
0006 . . TSETB 5 4 4
0007 . . TSETS 4 0 0 ; "control"
0008 . . RET0 0 1
0094 . RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . FUNCF 13 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0065 . UGET 5 2 ; finish_goto
0066 . MOV 6 1
0067 . MOV 7 3
0068 . CALL 5 1 3
0000 . . FUNCF 4 ; ssa.lua:52
0001 . . TDUP 2 1
0002 . . TGETS 3 1 2 ; "label"
0003 . . TSETB 3 2 2
0004 . . TSETS 2 0 0 ; "control"
0005 . . RET0 0 1
0069 . JMP 5 => 0094
0094 . RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
---- TRACE 2 abort ssa.lua:79 -- retry recording
---- TRACE 2 start ssa.lua:55
0001 GGET 4 0 ; "assert"
0002 GGET 5 1 ; "type"
0003 MOV 6 0
0004 CALL 5 2 2
0000 . FUNCC ; type
0005 ISEQS 5 2 ; "table"
0006 JMP 5 => 0009
0009 KPRI 5 2
0010 CALL 4 1 2
0000 . FUNCC ; assert
0011 TGETB 4 0 1
0012 ISNES 4 3 ; "if"
0013 JMP 5 => 0037
0037 ISNES 4 4 ; "let"
0038 JMP 5 => 0056
0056 ISNES 4 10 ; "true"
0057 JMP 5 => 0063
0063 ISNES 4 11 ; "false"
0064 JMP 5 => 0070
0065 UGET 5 2 ; finish_goto
0066 MOV 6 1
0067 MOV 7 3
0068 CALL 5 1 3
0000 . FUNCF 4 ; ssa.lua:52
0001 . TDUP 2 1
0002 . TGETS 3 1 2 ; "label"
0003 . TSETB 3 2 2
0004 . TSETS 2 0 0 ; "control"
0005 . RET0 0 1
0069 JMP 5 => 0094
0094 RET0 0 1
---- TRACE 2 IR
.... SNAP #0 [ ---- ---- ---- ---- ---- ]
0001 rbp fun SLOAD #0 R
0002 rbx tab FLOAD 0001 func.env
0003 rsi p32 HREF 0002 "assert"
0004 > p32 EQ 0003 [0x40098458]
0005 r15 tab FLOAD 0002 tab.meta
0006 > tab NE 0005 [NULL]
0007 int FLOAD 0005 tab.hmask
0008 > int EQ 0007 +1 
0009 r15 p32 FLOAD 0005 tab.node
0010 > p32 HREFK 0009 "__index" @1
0011 r15 > tab HLOAD 0010
0012 int FLOAD 0011 tab.hmask
0013 > int EQ 0012 +63 
0014 r15 p32 FLOAD 0011 tab.node
0015 > p32 HREFK 0014 "assert" @3
0016 > fun HLOAD 0015
0017 rsi p32 HREF 0002 "type"
0018 > p32 EQ 0017 [0x40098458]
0019 > p32 HREFK 0014 "type" @60
0020 > fun HLOAD 0019
0021 rbx > tab SLOAD #1 T
0022 > fun EQ 0020 type
0023 > fun EQ 0016 assert
0024 int FLOAD 0021 tab.asize
0025 > int ABC 0024 +1 
0026 rbx p32 FLOAD 0021 tab.array
0027 p32 AREF 0026 +1 
0028 rbx > str ALOAD 0027
.... SNAP #1 [ ---- ---- ---- ---- ---- 0028 ]
0029 > str NE 0028 "if"
.... SNAP #2 [ ---- ---- ---- ---- ---- 0028 ]
0030 > str NE 0028 "let"
.... SNAP #3 [ ---- ---- ---- ---- ---- 0028 ]
0031 > str NE 0028 "true"
.... SNAP #4 [ ---- ---- ---- ---- ---- 0028 ]
0032 > str EQ 0028 "false"
.... SNAP #5 [ ---- ---- ---- ---- ---- 0028 ]
0033 > fun EQ 0001 ssa.lua:55
0034 rbp > tab SLOAD #2 T
0035 r15 > tab SLOAD #4 T
0036 [8] > tab TDUP {0x40ff43e8}
0037 int FLOAD 0035 tab.hmask
0038 > int EQ 0037 +1 
0039 r15 p32 FLOAD 0035 tab.node
0040 > p32 HREFK 0039 "label" @1
0041 r15 > str HLOAD 0040
0042 rax p32 FLOAD 0036 tab.array
0043 p32 AREF 0042 +2 
0044 str ASTORE 0043 0041
.... SNAP #6 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:52|0034 ---- 0036 ---- ]
0045 rsi p32 HREF 0034 "control"
0046 > p32 EQ 0045 [0x40098458]
0047 tab FLOAD 0034 tab.meta
0048 > tab EQ 0047 [NULL]
0049 rbx p32 NEWREF 0034 "control"
0050 tab HSTORE 0049 0036
0051 nil TBAR 0034
.... SNAP #7 [ ssa.lua:55|]
---- TRACE 2 mcode 719
0bcbfb6e mov dword [0x40098410], 0x2
0bcbfb79 mov edi, [0x400983d8]
0bcbfb80 cmp edi, [0x400983dc]
0bcbfb87 jb 0x0bcbfba0
0bcbfb89 mov esi, 0x1
0bcbfb8e mov edi, 0x400983b8
0bcbfb93 call 0x00421730 ->lj_gc_step_jit
0bcbfb98 test eax, eax
0bcbfb9a jnz 0x0bcb0010 ->0
0bcbfba0 mov edi, [0x400984b0]
0bcbfba7 mov edx, [0x400984b4]
0bcbfbae mov ebp, [rdx-0x8]
0bcbfbb1 mov ebx, [rbp+0x8]
0bcbfbb4 mov esi, [rbx+0x1c]
0bcbfbb7 and esi, 0xce2b6183
0bcbfbbd lea esi, [rsi+rsi*2]
0bcbfbc0 shl esi, 0x03
0bcbfbc3 add esi, [rbx+0x14]
0bcbfbc6 cmp dword [rsi+0xc], -0x05
0bcbfbca jnz 0x0bcbfbd9
0bcbfbcc cmp dword [rsi+0x8], 0x4009adb0
0bcbfbd3 jz 0x0bcb0010 ->0
0bcbfbd9 mov esi, [rsi+0x10]
0bcbfbdc test esi, esi
0bcbfbde jnz 0x0bcbfbc6
0bcbfbe0 mov r15d, [rbx+0x10]
0bcbfbe4 test r15d, r15d
0bcbfbe7 jz 0x0bcb0010 ->0
0bcbfbed cmp dword [r15+0x1c], +0x01
0bcbfbf2 jnz 0x0bcb0010 ->0
0bcbfbf8 mov r15d, [r15+0x14]
0bcbfbfc mov rsi, 0xfffffffb4009a4c8
0bcbfc06 cmp rsi, [r15+0x20]
0bcbfc0a jnz 0x0bcb0010 ->0
0bcbfc10 cmp dword [r15+0x1c], -0x0c
0bcbfc15 jnz 0x0bcb0010 ->0
0bcbfc1b mov r15d, [r15+0x18]
0bcbfc1f cmp dword [r15+0x1c], +0x3f
0bcbfc24 jnz 0x0bcb0010 ->0
0bcbfc2a mov r15d, [r15+0x14]
0bcbfc2e mov rsi, 0xfffffffb4009adb0
0bcbfc38 cmp rsi, [r15+0x50]
0bcbfc3c jnz 0x0bcb0010 ->0
0bcbfc42 cmp dword [r15+0x4c], -0x09
0bcbfc47 jnz 0x0bcb0010 ->0
0bcbfc4d mov esi, [rbx+0x1c]
0bcbfc50 and esi, 0x798a813c
0bcbfc56 lea esi, [rsi+rsi*2]
0bcbfc59 shl esi, 0x03
0bcbfc5c add esi, [rbx+0x14]
0bcbfc5f cmp dword [rsi+0xc], -0x05
0bcbfc63 jnz 0x0bcbfc72
0bcbfc65 cmp dword [rsi+0x8], 0x4009afb0
0bcbfc6c jz 0x0bcb0010 ->0
0bcbfc72 mov esi, [rsi+0x10]
0bcbfc75 test esi, esi
0bcbfc77 jnz 0x0bcbfc5f
0bcbfc79 mov rsi, 0xfffffffb4009afb0
0bcbfc83 cmp rsi, [r15+0x5a8]
0bcbfc8a jnz 0x0bcb0010 ->0
0bcbfc90 cmp dword [r15+0x5a4], -0x09
0bcbfc98 jnz 0x0bcb0010 ->0
0bcbfc9e cmp dword [rdx+0x4], -0x0c
0bcbfca2 jnz 0x0bcb0010 ->0
0bcbfca8 mov ebx, [rdx]
0bcbfcaa cmp dword [r15+0x5a0], 0x4009af18
0bcbfcb5 jnz 0x0bcb0010 ->0
0bcbfcbb cmp dword [r15+0x48], 0x4009ad88
0bcbfcc3 jnz 0x0bcb0010 ->0
0bcbfcc9 cmp dword [rbx+0x18], +0x01
0bcbfccd jbe 0x0bcb0010 ->0
0bcbfcd3 mov ebx, [rbx+0x8]
0bcbfcd6 cmp dword [rbx+0xc], -0x05
0bcbfcda jnz 0x0bcb0010 ->0
0bcbfce0 mov ebx, [rbx+0x8]
0bcbfce3 cmp ebx, 0x4009a8f8
0bcbfce9 jz 0x0bcb0014 ->1
0bcbfcef cmp ebx, 0x400ae1f0
0bcbfcf5 jz 0x0bcb0018 ->2
0bcbfcfb cmp ebx, 0x4009aa18
0bcbfd01 jz 0x0bcb001c ->3
0bcbfd07 cmp ebx, 0x4009a870
0bcbfd0d jnz 0x0bcb0020 ->4
0bcbfd13 cmp ebp, 0x400b5240
0bcbfd19 jnz 0x0bcb0024 ->5
0bcbfd1f cmp dword [rdx+0xc], -0x0c
0bcbfd23 jnz 0x0bcb0024 ->5
0bcbfd29 mov ebp, [rdx+0x8]
0bcbfd2c cmp dword [rdx+0x1c], -0x0c
0bcbfd30 jnz 0x0bcb0024 ->5
0bcbfd36 mov r15d, [rdx+0x18]
0bcbfd3a mov esi, 0x40ff43e8
0bcbfd3f call 0x004223c0 ->lj_tab_dup
0bcbfd44 mov [rsp+0x8], eax
0bcbfd48 mov edi, [0x400984b0]
0bcbfd4f cmp dword [r15+0x1c], +0x01
0bcbfd54 jnz 0x0bcb0024 ->5
0bcbfd5a mov r15d, [r15+0x14]
0bcbfd5e mov rsi, 0xfffffffb40ff2270
0bcbfd68 cmp rsi, [r15+0x20]
0bcbfd6c jnz 0x0bcb0024 ->5
0bcbfd72 cmp dword [r15+0x1c], -0x05
0bcbfd77 jnz 0x0bcb0024 ->5
0bcbfd7d mov r15d, [r15+0x18]
0bcbfd81 mov eax, [rax+0x8]
0bcbfd84 mov dword [rax+0x14], 0xfffffffb
0bcbfd8b mov [rax+0x10], r15d
0bcbfd8f mov esi, [rbp+0x1c]
0bcbfd92 and esi, 0x2a54dc55
0bcbfd98 lea esi, [rsi+rsi*2]
0bcbfd9b shl esi, 0x03
0bcbfd9e add esi, [rbp+0x14]
0bcbfda1 cmp dword [rsi+0xc], -0x05
0bcbfda5 jnz 0x0bcbfdb4
0bcbfda7 cmp dword [rsi+0x8], 0x40ff29d8
0bcbfdae jz 0x0bcb0028 ->6
0bcbfdb4 mov esi, [rsi+0x10]
0bcbfdb7 test esi, esi
0bcbfdb9 jnz 0x0bcbfda1
0bcbfdbb cmp dword [rbp+0x10], +0x00
0bcbfdbf jnz 0x0bcb0028 ->6
0bcbfdc5 mov edx, 0x40098448
0bcbfdca mov dword [rdx+0x4], 0xfffffffb
0bcbfdd1 mov dword [rdx], 0x40ff29d8
0bcbfdd7 mov esi, ebp
0bcbfdd9 call 0x00422cf0 ->lj_tab_newkey
0bcbfdde mov ebx, eax
0bcbfde0 mov edx, [0x400984b4]
0bcbfde7 mov eax, [rsp+0x8]
0bcbfdeb mov dword [rbx+0x4], 0xfffffff4
0bcbfdf2 mov [rbx], eax
0bcbfdf4 test byte [rbp+0x4], 0x4
0bcbfdf8 jz 0x0bcbfe0f
0bcbfdfa and byte [rbp+0x4], 0xfb
0bcbfdfe mov edi, [0x400983f4]
0bcbfe05 mov [0x400983f4], ebp
0bcbfe0c mov [rbp+0xc], edi
0bcbfe0f mov eax, [0x400984b0]
0bcbfe16 mov eax, [rax+0x20]
0bcbfe19 sub eax, edx
0bcbfe1b cmp eax, +0x68
0bcbfe1e jb 0x0bcb002c ->7
0bcbfe24 mov dword [rdx-0x8], 0x400b5240
0bcbfe2b xor eax, eax
0bcbfe2d mov ebx, 0x40ff3a38
0bcbfe32 mov r14d, 0x40099008
0bcbfe38 jmp 0x00420177
---- TRACE 2 stop -> return
---- TRACE 2 exit 4
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 2 exit 4
---- TRACE 2 exit 2
---- TRACE 1 start ssa.lua:39
0001 UGET 0 0 ; label_counter
0002 ADDVN 0 0 0 ; 1
0003 USETV 0 0 ; label_counter
0004 KSTR 0 0 ; "L"
0005 UGET 1 0 ; label_counter
0006 CAT 0 0 1
0007 TDUP 1 1
0008 TNEW 2 0
0009 TSETS 2 1 2 ; "bindings"
0010 TSETS 0 1 3 ; "label"
0011 UGET 2 1 ; ssa
0012 TGETS 2 2 4 ; "blocks"
0013 TSETV 1 2 0
0014 RET1 1 2
---- TRACE 1 IR
.... SNAP #0 [ ---- ]
0001 rbp fun SLOAD #0 R
0002 rbx > p32 UREFO 0001 #0
0003 xmm7 > num ULOAD 0002
0004 [10] num ADD 0003 +1 
0005 num USTORE 0002 0004
.... SNAP #1 [ ---- ---- ]
0006 str TOSTR 0004 NUM
0007 rdi p32 BUFHDR [0x405d9414] RESET
0008 rdi p32 BUFPUT 0007 "L" 
0009 rdi p32 BUFPUT 0008 0006
0010 [c] str BUFSTR 0009 0007
0011 [8] > tab TDUP {0x405ee0d0}
0012 r15 > tab TNEW #0 #0
0013 rbx p32 FLOAD 0011 tab.node
0014 p32 HREFK 0013 "bindings" @0
0015 tab HSTORE 0014 0012
0016 p32 HREFK 0013 "label" @1
0017 str HSTORE 0016 0010
.... SNAP #2 [ ---- 0010 0011 ---- ]
0018 rbp > p32 UREFO 0001 #1
0019 rbp > tab ULOAD 0018
0020 int FLOAD 0019 tab.hmask
0021 > int EQ 0020 +1 
0022 rbp p32 FLOAD 0019 tab.node
0023 > p32 HREFK 0022 "blocks" @0
0024 rbp > tab HLOAD 0023
0025 rsi p32 HREF 0024 0010
0026 > p32 EQ 0025 [0x405d9458]
0027 tab FLOAD 0024 tab.meta
0028 > tab EQ 0027 [NULL]
0029 rbx p32 NEWREF 0024 0010
0030 tab HSTORE 0029 0011
0031 nil TBAR 0024
0032 p32 FREF 0024 tab.nomm
0033 u8  FSTORE 0032 +0 
.... SNAP #3 [ ---- ---- 0011 ]
---- TRACE 1 mcode 441
0bcbfe44 add rsp, -0x10
0bcbfe48 mov dword [0x405d9410], 0x1
0bcbfe53 mov edi, [0x405d93d8]
0bcbfe5a cmp edi, [0x405d93dc]
0bcbfe61 jb 0x0bcbfe7a
0bcbfe63 mov esi, 0x3
0bcbfe68 mov edi, 0x405d93b8
0bcbfe6d call 0x00421730 ->lj_gc_step_jit
0bcbfe72 test eax, eax
0bcbfe74 jnz 0x0bcb0010 ->0
0bcbfe7a mov edx, [0x405d94b4]
0bcbfe81 mov ebp, [rdx-0x8]
0bcbfe84 mov edi, [rbp+0x14]
0bcbfe87 mov ebx, [rdi+0x10]
0bcbfe8a cmp dword [rbx+0x4], 0xfffeffff
0bcbfe91 jnb 0x0bcb0010 ->0
0bcbfe97 movsd xmm7, [rbx]
0bcbfe9b addsd xmm7, [0x400bfab8]
0bcbfea4 movsd [rsp+0x10], xmm7
0bcbfeaa movsd [rbx], xmm7
0bcbfeae mov edi, 0x405d9414
0bcbfeb3 mov esi, [rdi+0x8]
0bcbfeb6 mov [rdi], esi
0bcbfeb8 mov esi, 0x4c
0bcbfebd call 0x00421b60 ->lj_buf_putchar
0bcbfec2 mov edi, eax
0bcbfec4 lea rsi, [rsp+0x10]
0bcbfec9 call 0x0040a3c0 ->lj_strfmt_putnum
0bcbfece mov edi, eax
0bcbfed0 call 0x00421ff0 ->lj_buf_tostr
0bcbfed5 mov [rsp+0xc], eax
0bcbfed9 mov edi, [0x405d94b0]
0bcbfee0 mov esi, 0x405ee0d0
0bcbfee5 call 0x004223c0 ->lj_tab_dup
0bcbfeea mov ebx, eax
0bcbfeec mov [rsp+0x8], ebx
0bcbfef0 mov edi, [0x405d94b0]
0bcbfef7 xor esi, esi
0bcbfef9 call 0x00422350 ->lj_tab_new1
0bcbfefe mov r15d, eax
0bcbff01 mov edi, [0x405d94b0]
0bcbff08 mov eax, [rsp+0xc]
0bcbff0c mov ebx, [rbx+0x14]
0bcbff0f mov dword [rbx+0x4], 0xfffffff4
0bcbff16 mov [rbx], r15d
0bcbff19 mov dword [rbx+0x1c], 0xfffffffb
0bcbff20 mov [rbx+0x18], eax
0bcbff23 mov esi, [rbp+0x18]
0bcbff26 mov ebp, [rsi+0x10]
0bcbff29 cmp dword [rbp+0x4], -0x0c
0bcbff2d jnz 0x0bcb0018 ->2
0bcbff33 mov ebp, [rbp+0x0]
0bcbff36 cmp dword [rbp+0x1c], +0x01
0bcbff3a jnz 0x0bcb0018 ->2
0bcbff40 mov ebp, [rbp+0x14]
0bcbff43 mov rsi, 0xfffffffb400cb340
0bcbff4d cmp rsi, [rbp+0x8]
0bcbff51 jnz 0x0bcb0018 ->2
0bcbff57 cmp dword [rbp+0x4], -0x0c
0bcbff5b jnz 0x0bcb0018 ->2
0bcbff61 mov ebp, [rbp+0x0]
0bcbff64 mov esi, [rbp+0x1c]
0bcbff67 and esi, [rax+0x8]
0bcbff6a lea esi, [rsi+rsi*2]
0bcbff6d shl esi, 0x03
0bcbff70 add esi, [rbp+0x14]
0bcbff73 cmp dword [rsi+0xc], -0x05
0bcbff77 jnz 0x0bcbff82
0bcbff79 cmp eax, [rsi+0x8]
0bcbff7c jz 0x0bcb0018 ->2
0bcbff82 mov esi, [rsi+0x10]
0bcbff85 test esi, esi
0bcbff87 jnz 0x0bcbff73
0bcbff89 cmp dword [rbp+0x10], +0x00
0bcbff8d jnz 0x0bcb0018 ->2
0bcbff93 mov edx, 0x405d9448
0bcbff98 mov dword [rdx+0x4], 0xfffffffb
0bcbff9f mov [rdx], eax
0bcbffa1 mov esi, ebp
0bcbffa3 call 0x00422cf0 ->lj_tab_newkey
0bcbffa8 mov ebx, eax
0bcbffaa mov edx, [0x405d94b4]
0bcbffb1 mov eax, [rsp+0x8]
0bcbffb5 mov dword [rbx+0x4], 0xfffffff4
0bcbffbc mov [rbx], eax
0bcbffbe test byte [rbp+0x4], 0x4
0bcbffc2 jz 0x0bcbffd9
0bcbffc4 and byte [rbp+0x4], 0xfb
0bcbffc8 mov edi, [0x405d93f4]
0bcbffcf mov [0x405d93f4], ebp
0bcbffd6 mov [rbp+0xc], edi
0bcbffd9 mov byte [rbp+0x6], 0x0
0bcbffdd mov dword [rdx+0xc], 0xfffffff4
0bcbffe4 mov [rdx+0x8], eax
0bcbffe7 xor eax, eax
0bcbffe9 mov ebx, 0x400cc018
0bcbffee mov r14d, 0x405da008
0bcbfff4 add rsp, +0x10
0bcbfff8 jmp 0x00420177
---- TRACE 1 stop -> return
---- TRACE 2 start ssa.lua:55
0001 GGET 4 0 ; "assert"
0002 GGET 5 1 ; "type"
0003 MOV 6 0
0004 CALL 5 2 2
0000 . FUNCC ; type
0005 ISEQS 5 2 ; "table"
0006 JMP 5 => 0009
0009 KPRI 5 2
0010 CALL 4 1 2
0000 . FUNCC ; assert
0011 TGETB 4 0 1
0012 ISNES 4 3 ; "if"
0013 JMP 5 => 0037
0014 UGET 5 0 ; add_block
0015 CALL 5 2 1
0000 . JFUNCF 3 1 ; ssa.lua:39
0001 . UGET 0 0 ; label_counter
0002 . ADDVN 0 0 0 ; 1
0003 . USETV 0 0 ; label_counter
0004 . KSTR 0 0 ; "L"
0005 . UGET 1 0 ; label_counter
0006 . CAT 0 0 1
0007 . TDUP 1 1
0008 . TNEW 2 0
0009 . TSETS 2 1 2 ; "bindings"
0010 . TSETS 0 1 3 ; "label"
0011 . UGET 2 1 ; ssa
0012 . TGETS 2 2 4 ; "blocks"
0013 . TSETV 1 2 0
0014 . RET1 1 2
0016 UGET 6 0 ; add_block
0017 CALL 6 2 1
0000 . JFUNCF 3 1 ; ssa.lua:39
0001 . UGET 0 0 ; label_counter
0002 . ADDVN 0 0 0 ; 1
0003 . USETV 0 0 ; label_counter
0004 . KSTR 0 0 ; "L"
0005 . UGET 1 0 ; label_counter
0006 . CAT 0 0 1
0007 . TDUP 1 1
0008 . TNEW 2 0
0009 . TSETS 2 1 2 ; "bindings"
0010 . TSETS 0 1 3 ; "label"
0011 . UGET 2 1 ; ssa
0012 . TGETS 2 2 4 ; "blocks"
0013 . TSETV 1 2 0
0014 . RET1 1 2
0018 UGET 7 1 ; compile_bool
0019 TGETB 8 0 2
0020 MOV 9 1
0021 MOV 10 5
0022 MOV 11 6
0023 CALL 7 1 5
0000 . FUNCF 13 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0070 . ISNES 4 12 ; "match"
0071 . JMP 5 => 0077
0077 . ISNES 4 14 ; "fail"
0078 . JMP 5 => 0084
0084 . GGET 5 0 ; "assert"
0085 . UGET 6 4 ; relops
0086 . TGETV 6 6 4
0087 . CALL 5 1 2
0000 . . FUNCC ; assert
0088 . UGET 5 5 ; finish_if
0089 . MOV 6 1
0090 . MOV 7 0
0091 . MOV 8 2
0092 . MOV 9 3
0093 . CALL 5 1 5
0000 . . FUNCF 6 ; ssa.lua:49
0001 . . TDUP 4 1
0002 . . TSETB 1 4 2
0003 . . TGETS 5 2 2 ; "label"
0004 . . TSETB 5 4 3
0005 . . TGETS 5 3 2 ; "label"
0006 . . TSETB 5 4 4
0007 . . TSETS 4 0 0 ; "control"
0008 . . RET0 0 1
0094 . RET0 0 1
0024 UGET 7 1 ; compile_bool
0025 TGETB 8 0 3
0026 MOV 9 5
0027 MOV 10 2
0028 MOV 11 3
0029 CALL 7 1 5
0000 . FUNCF 13 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0070 . ISNES 4 12 ; "match"
0071 . JMP 5 => 0077
0077 . ISNES 4 14 ; "fail"
0078 . JMP 5 => 0084
0084 . GGET 5 0 ; "assert"
0085 . UGET 6 4 ; relops
0086 . TGETV 6 6 4
0087 . CALL 5 1 2
0000 . . FUNCC ; assert
0088 . UGET 5 5 ; finish_if
0089 . MOV 6 1
0090 . MOV 7 0
0091 . MOV 8 2
0092 . MOV 9 3
0093 . CALL 5 1 5
0000 . . FUNCF 6 ; ssa.lua:49
0001 . . TDUP 4 1
0002 . . TSETB 1 4 2
0003 . . TGETS 5 2 2 ; "label"
0004 . . TSETB 5 4 3
0005 . . TGETS 5 3 2 ; "label"
0006 . . TSETB 5 4 4
0007 . . TSETS 4 0 0 ; "control"
0008 . . RET0 0 1
0094 . RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . FUNCF 13 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0065 . UGET 5 2 ; finish_goto
0066 . MOV 6 1
0067 . MOV 7 3
0068 . CALL 5 1 3
0000 . . FUNCF 4 ; ssa.lua:52
0001 . . TDUP 2 1
0002 . . TGETS 3 1 2 ; "label"
0003 . . TSETB 3 2 2
0004 . . TSETS 2 0 0 ; "control"
0005 . . RET0 0 1
0069 . JMP 5 => 0094
0094 . RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
---- TRACE 2 abort ssa.lua:79 -- retry recording
---- TRACE 2 start ssa.lua:55
0001 GGET 4 0 ; "assert"
0002 GGET 5 1 ; "type"
0003 MOV 6 0
0004 CALL 5 2 2
0000 . FUNCC ; type
0005 ISEQS 5 2 ; "table"
0006 JMP 5 => 0009
0009 KPRI 5 2
0010 CALL 4 1 2
0000 . FUNCC ; assert
0011 TGETB 4 0 1
0012 ISNES 4 3 ; "if"
0013 JMP 5 => 0037
0037 ISNES 4 4 ; "let"
0038 JMP 5 => 0056
0056 ISNES 4 10 ; "true"
0057 JMP 5 => 0063
0063 ISNES 4 11 ; "false"
0064 JMP 5 => 0070
0065 UGET 5 2 ; finish_goto
0066 MOV 6 1
0067 MOV 7 3
0068 CALL 5 1 3
0000 . FUNCF 4 ; ssa.lua:52
0001 . TDUP 2 1
0002 . TGETS 3 1 2 ; "label"
0003 . TSETB 3 2 2
0004 . TSETS 2 0 0 ; "control"
0005 . RET0 0 1
0069 JMP 5 => 0094
0094 RET0 0 1
---- TRACE 2 IR
.... SNAP #0 [ ---- ---- ---- ---- ---- ]
0001 rbp fun SLOAD #0 R
0002 rbx tab FLOAD 0001 func.env
0003 rsi p32 HREF 0002 "assert"
0004 > p32 EQ 0003 [0x405d9458]
0005 r15 tab FLOAD 0002 tab.meta
0006 > tab NE 0005 [NULL]
0007 int FLOAD 0005 tab.hmask
0008 > int EQ 0007 +1 
0009 r15 p32 FLOAD 0005 tab.node
0010 > p32 HREFK 0009 "__index" @1
0011 r15 > tab HLOAD 0010
0012 int FLOAD 0011 tab.hmask
0013 > int EQ 0012 +63 
0014 r15 p32 FLOAD 0011 tab.node
0015 > p32 HREFK 0014 "assert" @3
0016 > fun HLOAD 0015
0017 rsi p32 HREF 0002 "type"
0018 > p32 EQ 0017 [0x405d9458]
0019 > p32 HREFK 0014 "type" @60
0020 > fun HLOAD 0019
0021 rbx > tab SLOAD #1 T
0022 > fun EQ 0020 type
0023 > fun EQ 0016 assert
0024 int FLOAD 0021 tab.asize
0025 > int ABC 0024 +1 
0026 rbx p32 FLOAD 0021 tab.array
0027 p32 AREF 0026 +1 
0028 rbx > str ALOAD 0027
.... SNAP #1 [ ---- ---- ---- ---- ---- 0028 ]
0029 > str NE 0028 "if"
.... SNAP #2 [ ---- ---- ---- ---- ---- 0028 ]
0030 > str NE 0028 "let"
.... SNAP #3 [ ---- ---- ---- ---- ---- 0028 ]
0031 > str NE 0028 "true"
.... SNAP #4 [ ---- ---- ---- ---- ---- 0028 ]
0032 > str EQ 0028 "false"
.... SNAP #5 [ ---- ---- ---- ---- ---- 0028 ]
0033 > fun EQ 0001 ssa.lua:55
0034 rbp > tab SLOAD #2 T
0035 r15 > tab SLOAD #4 T
0036 [8] > tab TDUP {0x405eaf58}
0037 int FLOAD 0035 tab.hmask
0038 > int EQ 0037 +1 
0039 r15 p32 FLOAD 0035 tab.node
0040 > p32 HREFK 0039 "label" @1
0041 r15 > str HLOAD 0040
0042 rax p32 FLOAD 0036 tab.array
0043 p32 AREF 0042 +2 
0044 str ASTORE 0043 0041
.... SNAP #6 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:52|0034 ---- 0036 ---- ]
0045 rsi p32 HREF 0034 "control"
0046 > p32 EQ 0045 [0x405d9458]
0047 tab FLOAD 0034 tab.meta
0048 > tab EQ 0047 [NULL]
0049 rbx p32 NEWREF 0034 "control"
0050 tab HSTORE 0049 0036
0051 nil TBAR 0034
.... SNAP #7 [ ssa.lua:55|]
---- TRACE 2 mcode 719
0bcbfb6e mov dword [0x405d9410], 0x2
0bcbfb79 mov edi, [0x405d93d8]
0bcbfb80 cmp edi, [0x405d93dc]
0bcbfb87 jb 0x0bcbfba0
0bcbfb89 mov esi, 0x1
0bcbfb8e mov edi, 0x405d93b8
0bcbfb93 call 0x00421730 ->lj_gc_step_jit
0bcbfb98 test eax, eax
0bcbfb9a jnz 0x0bcb0010 ->0
0bcbfba0 mov edi, [0x405d94b0]
0bcbfba7 mov edx, [0x405d94b4]
0bcbfbae mov ebp, [rdx-0x8]
0bcbfbb1 mov ebx, [rbp+0x8]
0bcbfbb4 mov esi, [rbx+0x1c]
0bcbfbb7 and esi, 0xce2b6183
0bcbfbbd lea esi, [rsi+rsi*2]
0bcbfbc0 shl esi, 0x03
0bcbfbc3 add esi, [rbx+0x14]
0bcbfbc6 cmp dword [rsi+0xc], -0x05
0bcbfbca jnz 0x0bcbfbd9
0bcbfbcc cmp dword [rsi+0x8], 0x405dbdb0
0bcbfbd3 jz 0x0bcb0010 ->0
0bcbfbd9 mov esi, [rsi+0x10]
0bcbfbdc test esi, esi
0bcbfbde jnz 0x0bcbfbc6
0bcbfbe0 mov r15d, [rbx+0x10]
0bcbfbe4 test r15d, r15d
0bcbfbe7 jz 0x0bcb0010 ->0
0bcbfbed cmp dword [r15+0x1c], +0x01
0bcbfbf2 jnz 0x0bcb0010 ->0
0bcbfbf8 mov r15d, [r15+0x14]
0bcbfbfc mov rsi, 0xfffffffb405db4c8
0bcbfc06 cmp rsi, [r15+0x20]
0bcbfc0a jnz 0x0bcb0010 ->0
0bcbfc10 cmp dword [r15+0x1c], -0x0c
0bcbfc15 jnz 0x0bcb0010 ->0
0bcbfc1b mov r15d, [r15+0x18]
0bcbfc1f cmp dword [r15+0x1c], +0x3f
0bcbfc24 jnz 0x0bcb0010 ->0
0bcbfc2a mov r15d, [r15+0x14]
0bcbfc2e mov rsi, 0xfffffffb405dbdb0
0bcbfc38 cmp rsi, [r15+0x50]
0bcbfc3c jnz 0x0bcb0010 ->0
0bcbfc42 cmp dword [r15+0x4c], -0x09
0bcbfc47 jnz 0x0bcb0010 ->0
0bcbfc4d mov esi, [rbx+0x1c]
0bcbfc50 and esi, 0x798a813c
0bcbfc56 lea esi, [rsi+rsi*2]
0bcbfc59 shl esi, 0x03
0bcbfc5c add esi, [rbx+0x14]
0bcbfc5f cmp dword [rsi+0xc], -0x05
0bcbfc63 jnz 0x0bcbfc72
0bcbfc65 cmp dword [rsi+0x8], 0x405dbfb0
0bcbfc6c jz 0x0bcb0010 ->0
0bcbfc72 mov esi, [rsi+0x10]
0bcbfc75 test esi, esi
0bcbfc77 jnz 0x0bcbfc5f
0bcbfc79 mov rsi, 0xfffffffb405dbfb0
0bcbfc83 cmp rsi, [r15+0x5a8]
0bcbfc8a jnz 0x0bcb0010 ->0
0bcbfc90 cmp dword [r15+0x5a4], -0x09
0bcbfc98 jnz 0x0bcb0010 ->0
0bcbfc9e cmp dword [rdx+0x4], -0x0c
0bcbfca2 jnz 0x0bcb0010 ->0
0bcbfca8 mov ebx, [rdx]
0bcbfcaa cmp dword [r15+0x5a0], 0x405dbf18
0bcbfcb5 jnz 0x0bcb0010 ->0
0bcbfcbb cmp dword [r15+0x48], 0x405dbd88
0bcbfcc3 jnz 0x0bcb0010 ->0
0bcbfcc9 cmp dword [rbx+0x18], +0x01
0bcbfccd jbe 0x0bcb0010 ->0
0bcbfcd3 mov ebx, [rbx+0x8]
0bcbfcd6 cmp dword [rbx+0xc], -0x05
0bcbfcda jnz 0x0bcb0010 ->0
0bcbfce0 mov ebx, [rbx+0x8]
0bcbfce3 cmp ebx, 0x405db8f8
0bcbfce9 jz 0x0bcb0014 ->1
0bcbfcef cmp ebx, 0x405edce0
0bcbfcf5 jz 0x0bcb0018 ->2
0bcbfcfb cmp ebx, 0x405dba18
0bcbfd01 jz 0x0bcb001c ->3
0bcbfd07 cmp ebx, 0x405db870
0bcbfd0d jnz 0x0bcb0020 ->4
0bcbfd13 cmp ebp, 0x400ba6d8
0bcbfd19 jnz 0x0bcb0024 ->5
0bcbfd1f cmp dword [rdx+0xc], -0x0c
0bcbfd23 jnz 0x0bcb0024 ->5
0bcbfd29 mov ebp, [rdx+0x8]
0bcbfd2c cmp dword [rdx+0x1c], -0x0c
0bcbfd30 jnz 0x0bcb0024 ->5
0bcbfd36 mov r15d, [rdx+0x18]
0bcbfd3a mov esi, 0x405eaf58
0bcbfd3f call 0x004223c0 ->lj_tab_dup
0bcbfd44 mov [rsp+0x8], eax
0bcbfd48 mov edi, [0x405d94b0]
0bcbfd4f cmp dword [r15+0x1c], +0x01
0bcbfd54 jnz 0x0bcb0024 ->5
0bcbfd5a mov r15d, [r15+0x14]
0bcbfd5e mov rsi, 0xfffffffb400cb3e0
0bcbfd68 cmp rsi, [r15+0x20]
0bcbfd6c jnz 0x0bcb0024 ->5
0bcbfd72 cmp dword [r15+0x1c], -0x05
0bcbfd77 jnz 0x0bcb0024 ->5
0bcbfd7d mov r15d, [r15+0x18]
0bcbfd81 mov eax, [rax+0x8]
0bcbfd84 mov dword [rax+0x14], 0xfffffffb
0bcbfd8b mov [rax+0x10], r15d
0bcbfd8f mov esi, [rbp+0x1c]
0bcbfd92 and esi, 0x2a54dc55
0bcbfd98 lea esi, [rsi+rsi*2]
0bcbfd9b shl esi, 0x03
0bcbfd9e add esi, [rbp+0x14]
0bcbfda1 cmp dword [rsi+0xc], -0x05
0bcbfda5 jnz 0x0bcbfdb4
0bcbfda7 cmp dword [rsi+0x8], 0x400cbb48
0bcbfdae jz 0x0bcb0028 ->6
0bcbfdb4 mov esi, [rsi+0x10]
0bcbfdb7 test esi, esi
0bcbfdb9 jnz 0x0bcbfda1
0bcbfdbb cmp dword [rbp+0x10], +0x00
0bcbfdbf jnz 0x0bcb0028 ->6
0bcbfdc5 mov edx, 0x405d9448
0bcbfdca mov dword [rdx+0x4], 0xfffffffb
0bcbfdd1 mov dword [rdx], 0x400cbb48
0bcbfdd7 mov esi, ebp
0bcbfdd9 call 0x00422cf0 ->lj_tab_newkey
0bcbfdde mov ebx, eax
0bcbfde0 mov edx, [0x405d94b4]
0bcbfde7 mov eax, [rsp+0x8]
0bcbfdeb mov dword [rbx+0x4], 0xfffffff4
0bcbfdf2 mov [rbx], eax
0bcbfdf4 test byte [rbp+0x4], 0x4
0bcbfdf8 jz 0x0bcbfe0f
0bcbfdfa and byte [rbp+0x4], 0xfb
0bcbfdfe mov edi, [0x405d93f4]
0bcbfe05 mov [0x405d93f4], ebp
0bcbfe0c mov [rbp+0xc], edi
0bcbfe0f mov eax, [0x405d94b0]
0bcbfe16 mov eax, [rax+0x20]
0bcbfe19 sub eax, edx
0bcbfe1b cmp eax, +0x68
0bcbfe1e jb 0x0bcb002c ->7
0bcbfe24 mov dword [rdx-0x8], 0x400ba6d8
0bcbfe2b xor eax, eax
0bcbfe2d mov ebx, 0x400ccba8
0bcbfe32 mov r14d, 0x405da008
0bcbfe38 jmp 0x00420177
---- TRACE 2 stop -> return
---- TRACE 2 exit 1
---- TRACE 2 exit 4
---- TRACE 2 exit 1
---- TRACE 2 exit 4
---- TRACE 2 exit 1
---- TRACE 2 exit 4
---- TRACE 2 exit 4
---- TRACE 2 exit 6
---- TRACE 2 exit 6
---- TRACE 2 exit 6
---- TRACE 2 exit 4
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 2 exit 1
---- TRACE 2 exit 4
---- TRACE 2 exit 2
This file has been truncated, but you can view the full file.
---- TRACE 1 start ssa.lua:55
0001 GGET 4 0 ; "assert"
0002 GGET 5 1 ; "type"
0003 MOV 6 0
0004 CALL 5 2 2
0000 . FUNCC ; type
0005 ISEQS 5 2 ; "table"
0006 JMP 5 => 0009
0009 KPRI 5 2
0010 CALL 4 1 2
0000 . FUNCC ; assert
0011 TGETB 4 0 1
0012 ISNES 4 3 ; "if"
0013 JMP 5 => 0037
0037 ISNES 4 4 ; "let"
0038 JMP 5 => 0056
0056 ISNES 4 10 ; "true"
0057 JMP 5 => 0063
0063 ISNES 4 11 ; "false"
0064 JMP 5 => 0070
0070 ISNES 4 12 ; "match"
0071 JMP 5 => 0077
0077 ISNES 4 14 ; "fail"
0078 JMP 5 => 0084
0084 GGET 5 0 ; "assert"
0085 UGET 6 4 ; relops
0086 TGETV 6 6 4
0087 CALL 5 1 2
0000 . FUNCC ; assert
0088 UGET 5 5 ; finish_if
0089 MOV 6 1
0090 MOV 7 0
0091 MOV 8 2
0092 MOV 9 3
0093 CALL 5 1 5
0000 . FUNCF 6 ; ssa.lua:49
0001 . TDUP 4 1
0002 . TSETB 1 4 2
0003 . TGETS 5 2 2 ; "label"
0004 . TSETB 5 4 3
0005 . TGETS 5 3 2 ; "label"
0006 . TSETB 5 4 4
0007 . TSETS 4 0 0 ; "control"
0008 . RET0 0 1
0094 RET0 0 1
---- TRACE 1 IR
.... SNAP #0 [ ---- ---- ---- ---- ---- ]
0001 rbp fun SLOAD #0 R
0002 r15 tab FLOAD 0001 func.env
0003 rsi p32 HREF 0002 "assert"
0004 > p32 EQ 0003 [0x40eb3458]
0005 rbx tab FLOAD 0002 tab.meta
0006 > tab NE 0005 [NULL]
0007 int FLOAD 0005 tab.hmask
0008 > int EQ 0007 +1 
0009 rbx p32 FLOAD 0005 tab.node
0010 > p32 HREFK 0009 "__index" @1
0011 rbx > tab HLOAD 0010
0012 int FLOAD 0011 tab.hmask
0013 > int EQ 0012 +63 
0014 rbx p32 FLOAD 0011 tab.node
0015 > p32 HREFK 0014 "assert" @3
0016 > fun HLOAD 0015
0017 rsi p32 HREF 0002 "type"
0018 > p32 EQ 0017 [0x40eb3458]
0019 > p32 HREFK 0014 "type" @60
0020 > fun HLOAD 0019
0021 r15 > tab SLOAD #1 T
0022 > fun EQ 0020 type
0023 > fun EQ 0016 assert
0024 int FLOAD 0021 tab.asize
0025 > int ABC 0024 +1 
0026 rbx p32 FLOAD 0021 tab.array
0027 p32 AREF 0026 +1 
0028 rbx > str ALOAD 0027
.... SNAP #1 [ ---- ---- ---- ---- ---- 0028 ]
0029 > str NE 0028 "if"
.... SNAP #2 [ ---- ---- ---- ---- ---- 0028 ]
0030 > str NE 0028 "let"
.... SNAP #3 [ ---- ---- ---- ---- ---- 0028 ]
0031 > str NE 0028 "true"
.... SNAP #4 [ ---- ---- ---- ---- ---- 0028 ]
0032 > str NE 0028 "false"
.... SNAP #5 [ ---- ---- ---- ---- ---- 0028 ]
0033 > str NE 0028 "match"
.... SNAP #6 [ ---- ---- ---- ---- ---- 0028 ]
0034 > str NE 0028 "fail"
.... SNAP #7 [ ---- ---- ---- ---- ---- 0028 ]
0035 r14 > p32 UREFC 0001 #4
0036 r13 > tab ULOAD 0035
0037 r14 p32 HREF 0036 0028
0038 > tru HLOAD 0037
0039 > fun EQ 0001 ssa.lua:55
0040 rbp > tab SLOAD #2 T
0041 r13 > tab SLOAD #3 T
0042 r14 > tab SLOAD #4 T
0043 [8] > tab TDUP {0x41f91468}
0044 rax p32 FLOAD 0043 tab.array
0045 p32 AREF 0044 +2 
0046 tab ASTORE 0045 0021
.... SNAP #8 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:49|0040 ---- 0041 0042 0043 ]
0047 int FLOAD 0041 tab.hmask
0048 > int EQ 0047 +1 
0049 r15 p32 FLOAD 0041 tab.node
0050 > p32 HREFK 0049 "label" @1
0051 r15 > str HLOAD 0050
0052 p32 AREF 0044 +3 
0053 str ASTORE 0052 0051
.... SNAP #9 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:49|0040 ---- ---- 0042 0043 ---- ]
0054 int FLOAD 0042 tab.hmask
0055 > int EQ 0054 +1 
0056 r15 p32 FLOAD 0042 tab.node
0057 > p32 HREFK 0056 "label" @1
0058 r15 > str HLOAD 0057
0059 p32 AREF 0044 +4 
0060 str ASTORE 0059 0058
.... SNAP #10 [ ssa.lua:55|---- ---- ---- ---- 0028 ssa.lua:49|0040 ---- ---- ---- 0043 ---- ]
0061 rsi p32 HREF 0040 "control"
0062 > p32 EQ 0061 [0x40eb3458]
0063 tab FLOAD 0040 tab.meta
0064 > tab EQ 0063 [NULL]
0065 rbx p32 NEWREF 0040 "control"
0066 tab HSTORE 0065 0043
0067 nil TBAR 0040
.... SNAP #11 [ ssa.lua:55|]
---- TRACE 1 mcode 916
0bcbfc65 mov dword [0x40eb3410], 0x1
0bcbfc70 mov edi, [0x40eb33d8]
0bcbfc77 cmp edi, [0x40eb33dc]
0bcbfc7e jb 0x0bcbfc97
0bcbfc80 mov esi, 0x1
0bcbfc85 mov edi, 0x40eb33b8
0bcbfc8a call 0x00421730 ->lj_gc_step_jit
0bcbfc8f test eax, eax
0bcbfc91 jnz 0x0bcb0010 ->0
0bcbfc97 mov edi, [0x40eb34b0]
0bcbfc9e mov edx, [0x40eb34b4]
0bcbfca5 mov ebp, [rdx-0x8]
0bcbfca8 mov r15d, [rbp+0x8]
0bcbfcac mov esi, [r15+0x1c]
0bcbfcb0 and esi, 0xce2b6183
0bcbfcb6 lea esi, [rsi+rsi*2]
0bcbfcb9 shl esi, 0x03
0bcbfcbc add esi, [r15+0x14]
0bcbfcc0 cmp dword [rsi+0xc], -0x05
0bcbfcc4 jnz 0x0bcbfcd3
0bcbfcc6 cmp dword [rsi+0x8], 0x40eb5db0
0bcbfccd jz 0x0bcb0010 ->0
0bcbfcd3 mov esi, [rsi+0x10]
0bcbfcd6 test esi, esi
0bcbfcd8 jnz 0x0bcbfcc0
0bcbfcda mov ebx, [r15+0x10]
0bcbfcde test ebx, ebx
0bcbfce0 jz 0x0bcb0010 ->0
0bcbfce6 cmp dword [rbx+0x1c], +0x01
0bcbfcea jnz 0x0bcb0010 ->0
0bcbfcf0 mov ebx, [rbx+0x14]
0bcbfcf3 mov rsi, 0xfffffffb40eb54c8
0bcbfcfd cmp rsi, [rbx+0x20]
0bcbfd01 jnz 0x0bcb0010 ->0
0bcbfd07 cmp dword [rbx+0x1c], -0x0c
0bcbfd0b jnz 0x0bcb0010 ->0
0bcbfd11 mov ebx, [rbx+0x18]
0bcbfd14 cmp dword [rbx+0x1c], +0x3f
0bcbfd18 jnz 0x0bcb0010 ->0
0bcbfd1e mov ebx, [rbx+0x14]
0bcbfd21 mov rsi, 0xfffffffb40eb5db0
0bcbfd2b cmp rsi, [rbx+0x50]
0bcbfd2f jnz 0x0bcb0010 ->0
0bcbfd35 cmp dword [rbx+0x4c], -0x09
0bcbfd39 jnz 0x0bcb0010 ->0
0bcbfd3f mov esi, [r15+0x1c]
0bcbfd43 and esi, 0x798a813c
0bcbfd49 lea esi, [rsi+rsi*2]
0bcbfd4c shl esi, 0x03
0bcbfd4f add esi, [r15+0x14]
0bcbfd53 cmp dword [rsi+0xc], -0x05
0bcbfd57 jnz 0x0bcbfd66
0bcbfd59 cmp dword [rsi+0x8], 0x40eb5fb0
0bcbfd60 jz 0x0bcb0010 ->0
0bcbfd66 mov esi, [rsi+0x10]
0bcbfd69 test esi, esi
0bcbfd6b jnz 0x0bcbfd53
0bcbfd6d mov rsi, 0xfffffffb40eb5fb0
0bcbfd77 cmp rsi, [rbx+0x5a8]
0bcbfd7e jnz 0x0bcb0010 ->0
0bcbfd84 cmp dword [rbx+0x5a4], -0x09
0bcbfd8b jnz 0x0bcb0010 ->0
0bcbfd91 cmp dword [rdx+0x4], -0x0c
0bcbfd95 jnz 0x0bcb0010 ->0
0bcbfd9b mov r15d, [rdx]
0bcbfd9e cmp dword [rbx+0x5a0], 0x40eb5f18
0bcbfda8 jnz 0x0bcb0010 ->0
0bcbfdae cmp dword [rbx+0x48], 0x40eb5d88
0bcbfdb5 jnz 0x0bcb0010 ->0
0bcbfdbb cmp dword [r15+0x18], +0x01
0bcbfdc0 jbe 0x0bcb0010 ->0
0bcbfdc6 mov ebx, [r15+0x8]
0bcbfdca cmp dword [rbx+0xc], -0x05
0bcbfdce jnz 0x0bcb0010 ->0
0bcbfdd4 mov ebx, [rbx+0x8]
0bcbfdd7 cmp ebx, 0x40eb58f8
0bcbfddd jz 0x0bcb0014 ->1
0bcbfde3 cmp ebx, 0x41f91978
0bcbfde9 jz 0x0bcb0018 ->2
0bcbfdef cmp ebx, 0x40eb5a18
0bcbfdf5 jz 0x0bcb001c ->3
0bcbfdfb cmp ebx, 0x40eb5870
0bcbfe01 jz 0x0bcb0020 ->4
0bcbfe07 cmp ebx, 0x40eb8cb0
0bcbfe0d jz 0x0bcb0024 ->5
0bcbfe13 cmp ebx, 0x41f91a50
0bcbfe19 jz 0x0bcb0028 ->6
0bcbfe1f mov esi, [rbp+0x24]
0bcbfe22 cmp byte [rsi+0x6], 0x1
0bcbfe26 jnz 0x0bcb002c ->7
0bcbfe2c lea r14d, [rsi+0x8]
0bcbfe30 cmp dword [r14+0x4], -0x0c
0bcbfe35 jnz 0x0bcb002c ->7
0bcbfe3b mov r13d, [r14]
0bcbfe3e mov r14d, [r13+0x1c]
0bcbfe42 and r14d, [rbx+0x8]
0bcbfe46 lea r14d, [r14+r14*2]
0bcbfe4a shl r14d, 0x03
0bcbfe4e add r14d, [r13+0x14]
0bcbfe52 cmp dword [r14+0xc], -0x05
0bcbfe57 jnz 0x0bcbfe5f
0bcbfe59 cmp ebx, [r14+0x8]
0bcbfe5d jz 0x0bcbfe6e
0bcbfe5f mov r14d, [r14+0x10]
0bcbfe63 test r14d, r14d
0bcbfe66 jnz 0x0bcbfe52
0bcbfe68 mov r14d, 0x40eb3458
0bcbfe6e cmp dword [r14+0x4], -0x03
0bcbfe73 jnz 0x0bcb002c ->7
0bcbfe79 cmp ebp, 0x40ecf6e0
0bcbfe7f jnz 0x0bcb002c ->7
0bcbfe85 cmp dword [rdx+0xc], -0x0c
0bcbfe89 jnz 0x0bcb002c ->7
0bcbfe8f mov ebp, [rdx+0x8]
0bcbfe92 cmp dword [rdx+0x14], -0x0c
0bcbfe96 jnz 0x0bcb002c ->7
0bcbfe9c mov r13d, [rdx+0x10]
0bcbfea0 cmp dword [rdx+0x1c], -0x0c
0bcbfea4 jnz 0x0bcb002c ->7
0bcbfeaa mov r14d, [rdx+0x18]
0bcbfeae mov esi, 0x41f91468
0bcbfeb3 call 0x004223c0 ->lj_tab_dup
0bcbfeb8 mov [rsp+0x8], eax
0bcbfebc mov edi, [0x40eb34b0]
0bcbfec3 mov eax, [rax+0x8]
0bcbfec6 mov dword [rax+0x14], 0xfffffff4
0bcbfecd mov [rax+0x10], r15d
0bcbfed1 cmp dword [r13+0x1c], +0x01
0bcbfed6 jnz 0x0bcb0030 ->8
0bcbfedc mov r15d, [r13+0x14]
0bcbfee0 mov rsi, 0xfffffffb41f8f5d0
0bcbfeea cmp rsi, [r15+0x20]
0bcbfeee jnz 0x0bcb0030 ->8
0bcbfef4 cmp dword [r15+0x1c], -0x05
0bcbfef9 jnz 0x0bcb0030 ->8
0bcbfeff mov r15d, [r15+0x18]
0bcbff03 mov dword [rax+0x1c], 0xfffffffb
0bcbff0a mov [rax+0x18], r15d
0bcbff0e cmp dword [r14+0x1c], +0x01
0bcbff13 jnz 0x0bcb0034 ->9
0bcbff19 mov r15d, [r14+0x14]
0bcbff1d mov rsi, 0xfffffffb41f8f5d0
0bcbff27 cmp rsi, [r15+0x20]
0bcbff2b jnz 0x0bcb0034 ->9
0bcbff31 cmp dword [r15+0x1c], -0x05
0bcbff36 jnz 0x0bcb0034 ->9
0bcbff3c mov r15d, [r15+0x18]
0bcbff40 mov dword [rax+0x24], 0xfffffffb
0bcbff47 mov [rax+0x20], r15d
0bcbff4b mov esi, [rbp+0x1c]
0bcbff4e and esi, 0x2a54dc55
0bcbff54 lea esi, [rsi+rsi*2]
0bcbff57 shl esi, 0x03
0bcbff5a add esi, [rbp+0x14]
0bcbff5d cmp dword [rsi+0xc], -0x05
0bcbff61 jnz 0x0bcbff70
0bcbff63 cmp dword [rsi+0x8], 0x41f8fd38
0bcbff6a jz 0x0bcb0038 ->10
0bcbff70 mov esi, [rsi+0x10]
0bcbff73 test esi, esi
0bcbff75 jnz 0x0bcbff5d
0bcbff77 cmp dword [rbp+0x10], +0x00
0bcbff7b jnz 0x0bcb0038 ->10
0bcbff81 mov edx, 0x40eb3448
0bcbff86 mov dword [rdx+0x4], 0xfffffffb
0bcbff8d mov dword [rdx], 0x41f8fd38
0bcbff93 mov esi, ebp
0bcbff95 call 0x00422cf0 ->lj_tab_newkey
0bcbff9a mov ebx, eax
0bcbff9c mov edx, [0x40eb34b4]
0bcbffa3 mov eax, [rsp+0x8]
0bcbffa7 mov dword [rbx+0x4], 0xfffffff4
0bcbffae mov [rbx], eax
0bcbffb0 test byte [rbp+0x4], 0x4
0bcbffb4 jz 0x0bcbffcb
0bcbffb6 and byte [rbp+0x4], 0xfb
0bcbffba mov edi, [0x40eb33f4]
0bcbffc1 mov [0x40eb33f4], ebp
0bcbffc8 mov [rbp+0xc], edi
0bcbffcb mov eax, [0x40eb34b0]
0bcbffd2 mov eax, [rax+0x20]
0bcbffd5 sub eax, edx
0bcbffd7 cmp eax, +0x68
0bcbffda jb 0x0bcb003c ->11
0bcbffe0 mov dword [rdx-0x8], 0x40ecf6e0
0bcbffe7 xor eax, eax
0bcbffe9 mov ebx, 0x41f90c90
0bcbffee mov r14d, 0x40eb4008
0bcbfff4 jmp 0x00420177
---- TRACE 1 stop -> return
---- TRACE 1 exit 4
---- TRACE 1 exit 4
---- TRACE 1 exit 4
---- TRACE 1 exit 4
---- TRACE 1 exit 1
---- TRACE 2 start ssa.lua:39
0001 UGET 0 0 ; label_counter
0002 ADDVN 0 0 0 ; 1
0003 USETV 0 0 ; label_counter
0004 KSTR 0 0 ; "L"
0005 UGET 1 0 ; label_counter
0006 CAT 0 0 1
0007 TDUP 1 1
0008 TNEW 2 0
0009 TSETS 2 1 2 ; "bindings"
0010 TSETS 0 1 3 ; "label"
0011 UGET 2 1 ; ssa
0012 TGETS 2 2 4 ; "blocks"
0013 TSETV 1 2 0
0014 RET1 1 2
---- TRACE 2 IR
.... SNAP #0 [ ---- ]
0001 rbp fun SLOAD #0 R
0002 rbx > p32 UREFO 0001 #0
0003 xmm7 > num ULOAD 0002
0004 [10] num ADD 0003 +1 
0005 num USTORE 0002 0004
.... SNAP #1 [ ---- ---- ]
0006 str TOSTR 0004 NUM
0007 rdi p32 BUFHDR [0x40eb3414] RESET
0008 rdi p32 BUFPUT 0007 "L" 
0009 rdi p32 BUFPUT 0008 0006
0010 [c] str BUFSTR 0009 0007
0011 [8] > tab TDUP {0x41f902b8}
0012 r15 > tab TNEW #0 #0
0013 rbx p32 FLOAD 0011 tab.node
0014 p32 HREFK 0013 "bindings" @0
0015 tab HSTORE 0014 0012
0016 p32 HREFK 0013 "label" @1
0017 str HSTORE 0016 0010
.... SNAP #2 [ ---- 0010 0011 ---- ]
0018 rbp > p32 UREFO 0001 #1
0019 rbp > tab ULOAD 0018
0020 int FLOAD 0019 tab.hmask
0021 > int EQ 0020 +1 
0022 rbp p32 FLOAD 0019 tab.node
0023 > p32 HREFK 0022 "blocks" @0
0024 rbp > tab HLOAD 0023
0025 rsi p32 HREF 0024 0010
0026 > p32 EQ 0025 [0x40eb3458]
0027 tab FLOAD 0024 tab.meta
0028 > tab EQ 0027 [NULL]
0029 rbx p32 NEWREF 0024 0010
0030 tab HSTORE 0029 0011
0031 nil TBAR 0024
0032 p32 FREF 0024 tab.nomm
0033 u8  FSTORE 0032 +0 
.... SNAP #3 [ ---- ---- 0011 ]
---- TRACE 2 mcode 441
0bcbfaa9 add rsp, -0x10
0bcbfaad mov dword [0x40eb3410], 0x2
0bcbfab8 mov edi, [0x40eb33d8]
0bcbfabf cmp edi, [0x40eb33dc]
0bcbfac6 jb 0x0bcbfadf
0bcbfac8 mov esi, 0x3
0bcbfacd mov edi, 0x40eb33b8
0bcbfad2 call 0x00421730 ->lj_gc_step_jit
0bcbfad7 test eax, eax
0bcbfad9 jnz 0x0bcb0010 ->0
0bcbfadf mov edx, [0x40eb34b4]
0bcbfae6 mov ebp, [rdx-0x8]
0bcbfae9 mov edi, [rbp+0x14]
0bcbfaec mov ebx, [rdi+0x10]
0bcbfaef cmp dword [rbx+0x4], 0xfffeffff
0bcbfaf6 jnb 0x0bcb0010 ->0
0bcbfafc movsd xmm7, [rbx]
0bcbfb00 addsd xmm7, [0x41bafd78]
0bcbfb09 movsd [rsp+0x10], xmm7
0bcbfb0f movsd [rbx], xmm7
0bcbfb13 mov edi, 0x40eb3414
0bcbfb18 mov esi, [rdi+0x8]
0bcbfb1b mov [rdi], esi
0bcbfb1d mov esi, 0x4c
0bcbfb22 call 0x00421b60 ->lj_buf_putchar
0bcbfb27 mov edi, eax
0bcbfb29 lea rsi, [rsp+0x10]
0bcbfb2e call 0x0040a3c0 ->lj_strfmt_putnum
0bcbfb33 mov edi, eax
0bcbfb35 call 0x00421ff0 ->lj_buf_tostr
0bcbfb3a mov [rsp+0xc], eax
0bcbfb3e mov edi, [0x40eb34b0]
0bcbfb45 mov esi, 0x41f902b8
0bcbfb4a call 0x004223c0 ->lj_tab_dup
0bcbfb4f mov ebx, eax
0bcbfb51 mov [rsp+0x8], ebx
0bcbfb55 mov edi, [0x40eb34b0]
0bcbfb5c xor esi, esi
0bcbfb5e call 0x00422350 ->lj_tab_new1
0bcbfb63 mov r15d, eax
0bcbfb66 mov edi, [0x40eb34b0]
0bcbfb6d mov eax, [rsp+0xc]
0bcbfb71 mov ebx, [rbx+0x14]
0bcbfb74 mov dword [rbx+0x4], 0xfffffff4
0bcbfb7b mov [rbx], r15d
0bcbfb7e mov dword [rbx+0x1c], 0xfffffffb
0bcbfb85 mov [rbx+0x18], eax
0bcbfb88 mov esi, [rbp+0x18]
0bcbfb8b mov ebp, [rsi+0x10]
0bcbfb8e cmp dword [rbp+0x4], -0x0c
0bcbfb92 jnz 0x0bcb0018 ->2
0bcbfb98 mov ebp, [rbp+0x0]
0bcbfb9b cmp dword [rbp+0x1c], +0x01
0bcbfb9f jnz 0x0bcb0018 ->2
0bcbfba5 mov ebp, [rbp+0x14]
0bcbfba8 mov rsi, 0xfffffffb41f8f530
0bcbfbb2 cmp rsi, [rbp+0x8]
0bcbfbb6 jnz 0x0bcb0018 ->2
0bcbfbbc cmp dword [rbp+0x4], -0x0c
0bcbfbc0 jnz 0x0bcb0018 ->2
0bcbfbc6 mov ebp, [rbp+0x0]
0bcbfbc9 mov esi, [rbp+0x1c]
0bcbfbcc and esi, [rax+0x8]
0bcbfbcf lea esi, [rsi+rsi*2]
0bcbfbd2 shl esi, 0x03
0bcbfbd5 add esi, [rbp+0x14]
0bcbfbd8 cmp dword [rsi+0xc], -0x05
0bcbfbdc jnz 0x0bcbfbe7
0bcbfbde cmp eax, [rsi+0x8]
0bcbfbe1 jz 0x0bcb0018 ->2
0bcbfbe7 mov esi, [rsi+0x10]
0bcbfbea test esi, esi
0bcbfbec jnz 0x0bcbfbd8
0bcbfbee cmp dword [rbp+0x10], +0x00
0bcbfbf2 jnz 0x0bcb0018 ->2
0bcbfbf8 mov edx, 0x40eb3448
0bcbfbfd mov dword [rdx+0x4], 0xfffffffb
0bcbfc04 mov [rdx], eax
0bcbfc06 mov esi, ebp
0bcbfc08 call 0x00422cf0 ->lj_tab_newkey
0bcbfc0d mov ebx, eax
0bcbfc0f mov edx, [0x40eb34b4]
0bcbfc16 mov eax, [rsp+0x8]
0bcbfc1a mov dword [rbx+0x4], 0xfffffff4
0bcbfc21 mov [rbx], eax
0bcbfc23 test byte [rbp+0x4], 0x4
0bcbfc27 jz 0x0bcbfc3e
0bcbfc29 and byte [rbp+0x4], 0xfb
0bcbfc2d mov edi, [0x40eb33f4]
0bcbfc34 mov [0x40eb33f4], ebp
0bcbfc3b mov [rbp+0xc], edi
0bcbfc3e mov byte [rbp+0x6], 0x0
0bcbfc42 mov dword [rdx+0xc], 0xfffffff4
0bcbfc49 mov [rdx+0x8], eax
0bcbfc4c xor eax, eax
0bcbfc4e mov ebx, 0x41f90f58
0bcbfc53 mov r14d, 0x40eb4008
0bcbfc59 add rsp, +0x10
0bcbfc5d jmp 0x00420177
---- TRACE 2 stop -> return
---- TRACE 1 exit 1
---- TRACE 1 exit 1
---- TRACE 1 exit 4
---- TRACE 1 exit 4
---- TRACE 1 exit 4
---- TRACE 1 exit 4
---- TRACE 1 exit 4
---- TRACE 1 exit 5
---- TRACE 1 exit 1
---- TRACE 1 exit 1
---- TRACE 1 exit 1
---- TRACE 1 exit 2
---- TRACE 1 exit 1
---- TRACE 1 exit 1
---- TRACE 1 exit 1
---- TRACE 1 exit 3
---- TRACE 1 exit 1
---- TRACE 3 start 1/1 ssa.lua:59
0014 UGET 5 0 ; add_block
0015 CALL 5 2 1
0000 . JFUNCF 3 2 ; ssa.lua:39
0001 . UGET 0 0 ; label_counter
0002 . ADDVN 0 0 0 ; 1
0003 . USETV 0 0 ; label_counter
0004 . KSTR 0 0 ; "L"
0005 . UGET 1 0 ; label_counter
0006 . CAT 0 0 1
0007 . TDUP 1 1
0008 . TNEW 2 0
0009 . TSETS 2 1 2 ; "bindings"
0010 . TSETS 0 1 3 ; "label"
0011 . UGET 2 1 ; ssa
0012 . TGETS 2 2 4 ; "blocks"
0013 . TSETV 1 2 0
0014 . RET1 1 2
0016 UGET 6 0 ; add_block
0017 CALL 6 2 1
0000 . JFUNCF 3 2 ; ssa.lua:39
0001 . UGET 0 0 ; label_counter
0002 . ADDVN 0 0 0 ; 1
0003 . USETV 0 0 ; label_counter
0004 . KSTR 0 0 ; "L"
0005 . UGET 1 0 ; label_counter
0006 . CAT 0 0 1
0007 . TDUP 1 1
0008 . TNEW 2 0
0009 . TSETS 2 1 2 ; "bindings"
0010 . TSETS 0 1 3 ; "label"
0011 . UGET 2 1 ; ssa
0012 . TGETS 2 2 4 ; "blocks"
0013 . TSETV 1 2 0
0014 . RET1 1 2
0018 UGET 7 1 ; compile_bool
0019 TGETB 8 0 2
0020 MOV 9 1
0021 MOV 10 5
0022 MOV 11 6
0023 CALL 7 1 5
0000 . JFUNCF 13 1 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0070 . ISNES 4 12 ; "match"
0071 . JMP 5 => 0077
0077 . ISNES 4 14 ; "fail"
0078 . JMP 5 => 0084
0084 . GGET 5 0 ; "assert"
0085 . UGET 6 4 ; relops
0086 . TGETV 6 6 4
0087 . CALL 5 1 2
0000 . . FUNCC ; assert
0088 . UGET 5 5 ; finish_if
0089 . MOV 6 1
0090 . MOV 7 0
0091 . MOV 8 2
0092 . MOV 9 3
0093 . CALL 5 1 5
0000 . . FUNCF 6 ; ssa.lua:49
0001 . . TDUP 4 1
0002 . . TSETB 1 4 2
0003 . . TGETS 5 2 2 ; "label"
0004 . . TSETB 5 4 3
0005 . . TGETS 5 3 2 ; "label"
0006 . . TSETB 5 4 4
0007 . . TSETS 4 0 0 ; "control"
0008 . . RET0 0 1
0094 . RET0 0 1
0024 UGET 7 1 ; compile_bool
0025 TGETB 8 0 3
0026 MOV 9 5
0027 MOV 10 2
0028 MOV 11 3
0029 CALL 7 1 5
0000 . JFUNCF 13 1 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0014 . UGET 5 0 ; add_block
0015 . CALL 5 2 1
0000 . . JFUNCF 3 2 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0016 . UGET 6 0 ; add_block
0017 . CALL 6 2 1
0000 . . JFUNCF 3 2 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0018 . UGET 7 1 ; compile_bool
0019 . TGETB 8 0 2
0020 . MOV 9 1
0021 . MOV 10 5
0022 . MOV 11 6
0023 . CALL 7 1 5
0000 . . JFUNCF 13 1 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0070 . . ISNES 4 12 ; "match"
0071 . . JMP 5 => 0077
0077 . . ISNES 4 14 ; "fail"
0078 . . JMP 5 => 0084
0084 . . GGET 5 0 ; "assert"
0085 . . UGET 6 4 ; relops
0086 . . TGETV 6 6 4
0087 . . CALL 5 1 2
0000 . . . FUNCC ; assert
0088 . . UGET 5 5 ; finish_if
0089 . . MOV 6 1
0090 . . MOV 7 0
0091 . . MOV 8 2
0092 . . MOV 9 3
0093 . . CALL 5 1 5
0000 . . . FUNCF 6 ; ssa.lua:49
0001 . . . TDUP 4 1
0002 . . . TSETB 1 4 2
0003 . . . TGETS 5 2 2 ; "label"
0004 . . . TSETB 5 4 3
0005 . . . TGETS 5 3 2 ; "label"
0006 . . . TSETB 5 4 4
0007 . . . TSETS 4 0 0 ; "control"
0008 . . . RET0 0 1
0094 . . RET0 0 1
0024 . UGET 7 1 ; compile_bool
0025 . TGETB 8 0 3
0026 . MOV 9 5
0027 . MOV 10 2
0028 . MOV 11 3
0029 . CALL 7 1 5
0000 . . JFUNCF 13 1 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0070 . . ISNES 4 12 ; "match"
0071 . . JMP 5 => 0077
0077 . . ISNES 4 14 ; "fail"
0078 . . JMP 5 => 0084
0084 . . GGET 5 0 ; "assert"
0085 . . UGET 6 4 ; relops
0086 . . TGETV 6 6 4
0087 . . CALL 5 1 2
0000 . . . FUNCC ; assert
0088 . . UGET 5 5 ; finish_if
0089 . . MOV 6 1
0090 . . MOV 7 0
0091 . . MOV 8 2
0092 . . MOV 9 3
0093 . . CALL 5 1 5
0000 . . . FUNCF 6 ; ssa.lua:49
0001 . . . TDUP 4 1
0002 . . . TSETB 1 4 2
0003 . . . TGETS 5 2 2 ; "label"
0004 . . . TSETB 5 4 3
0005 . . . TGETS 5 3 2 ; "label"
0006 . . . TSETB 5 4 4
0007 . . . TSETS 4 0 0 ; "control"
0008 . . . RET0 0 1
0094 . . RET0 0 1
0030 . UGET 7 1 ; compile_bool
0031 . TGETB 8 0 4
0032 . MOV 9 6
0033 . MOV 10 2
0034 . MOV 11 3
0035 . CALL 7 1 5
0000 . . JFUNCF 13 1 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0070 . . ISNES 4 12 ; "match"
0071 . . JMP 5 => 0077
0077 . . ISNES 4 14 ; "fail"
0078 . . JMP 5 => 0084
0079 . . UGET 5 3 ; finish_return
0080 . . MOV 6 1
0081 . . TDUP 7 15
0082 . . CALL 5 1 3
0000 . . . FUNCF 3 ; ssa.lua:46
0001 . . . TDUP 2 1
0002 . . . TSETB 1 2 2
0003 . . . TSETS 2 0 0 ; "control"
0004 . . . RET0 0 1
0083 . . JMP 5 => 0094
0094 . . RET0 0 1
0036 . JMP 5 => 0094
0094 . RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . JFUNCF 13 1 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0065 . UGET 5 2 ; finish_goto
0066 . MOV 6 1
0067 . MOV 7 3
0068 . CALL 5 1 3
0000 . . FUNCF 4 ; ssa.lua:52
0001 . . TDUP 2 1
0002 . . TGETS 3 1 2 ; "label"
0003 . . TSETB 3 2 2
0004 . . TSETS 2 0 0 ; "control"
0005 . . RET0 0 1
0069 . JMP 5 => 0094
0094 . RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
---- TRACE 3 abort ssa.lua:79 -- down-recursion, restarting
---- TRACE 3 start ssa.lua:79
0094 RET0 0 1
0024 UGET 7 1 ; compile_bool
0025 TGETB 8 0 3
0026 MOV 9 5
0027 MOV 10 2
0028 MOV 11 3
0029 CALL 7 1 5
0000 . JFUNCF 13 1 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0070 . ISNES 4 12 ; "match"
0071 . JMP 5 => 0077
0077 . ISNES 4 14 ; "fail"
0078 . JMP 5 => 0084
0084 . GGET 5 0 ; "assert"
0085 . UGET 6 4 ; relops
0086 . TGETV 6 6 4
0087 . CALL 5 1 2
0000 . . FUNCC ; assert
0088 . UGET 5 5 ; finish_if
0089 . MOV 6 1
0090 . MOV 7 0
0091 . MOV 8 2
0092 . MOV 9 3
0093 . CALL 5 1 5
0000 . . FUNCF 6 ; ssa.lua:49
0001 . . TDUP 4 1
0002 . . TSETB 1 4 2
0003 . . TGETS 5 2 2 ; "label"
0004 . . TSETB 5 4 3
0005 . . TGETS 5 3 2 ; "label"
0006 . . TSETB 5 4 4
0007 . . TSETS 4 0 0 ; "control"
0008 . . RET0 0 1
0094 . RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . JFUNCF 13 1 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0065 . UGET 5 2 ; finish_goto
0066 . MOV 6 1
0067 . MOV 7 3
0068 . CALL 5 1 3
0000 . . FUNCF 4 ; ssa.lua:52
0001 . . TDUP 2 1
0002 . . TGETS 3 1 2 ; "label"
0003 . . TSETB 3 2 2
0004 . . TSETS 2 0 0 ; "control"
0005 . . RET0 0 1
0069 . JMP 5 => 0094
0094 . RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
0024 UGET 7 1 ; compile_bool
0025 TGETB 8 0 3
0026 MOV 9 5
0027 MOV 10 2
0028 MOV 11 3
0029 CALL 7 1 5
0000 . JFUNCF 13 1 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0014 . UGET 5 0 ; add_block
0015 . CALL 5 2 1
0000 . . JFUNCF 3 2 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0016 . UGET 6 0 ; add_block
0017 . CALL 6 2 1
0000 . . JFUNCF 3 2 ; ssa.lua:39
0001 . . UGET 0 0 ; label_counter
0002 . . ADDVN 0 0 0 ; 1
0003 . . USETV 0 0 ; label_counter
0004 . . KSTR 0 0 ; "L"
0005 . . UGET 1 0 ; label_counter
0006 . . CAT 0 0 1
0007 . . TDUP 1 1
0008 . . TNEW 2 0
0009 . . TSETS 2 1 2 ; "bindings"
0010 . . TSETS 0 1 3 ; "label"
0011 . . UGET 2 1 ; ssa
0012 . . TGETS 2 2 4 ; "blocks"
0013 . . TSETV 1 2 0
0014 . . RET1 1 2
0018 . UGET 7 1 ; compile_bool
0019 . TGETB 8 0 2
0020 . MOV 9 1
0021 . MOV 10 5
0022 . MOV 11 6
0023 . CALL 7 1 5
0000 . . JFUNCF 13 1 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0070 . . ISNES 4 12 ; "match"
0071 . . JMP 5 => 0077
0077 . . ISNES 4 14 ; "fail"
0078 . . JMP 5 => 0084
0084 . . GGET 5 0 ; "assert"
0085 . . UGET 6 4 ; relops
0086 . . TGETV 6 6 4
0087 . . CALL 5 1 2
0000 . . . FUNCC ; assert
0088 . . UGET 5 5 ; finish_if
0089 . . MOV 6 1
0090 . . MOV 7 0
0091 . . MOV 8 2
0092 . . MOV 9 3
0093 . . CALL 5 1 5
0000 . . . FUNCF 6 ; ssa.lua:49
0001 . . . TDUP 4 1
0002 . . . TSETB 1 4 2
0003 . . . TGETS 5 2 2 ; "label"
0004 . . . TSETB 5 4 3
0005 . . . TGETS 5 3 2 ; "label"
0006 . . . TSETB 5 4 4
0007 . . . TSETS 4 0 0 ; "control"
0008 . . . RET0 0 1
0094 . . RET0 0 1
0024 . UGET 7 1 ; compile_bool
0025 . TGETB 8 0 3
0026 . MOV 9 5
0027 . MOV 10 2
0028 . MOV 11 3
0029 . CALL 7 1 5
0000 . . JFUNCF 13 1 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0070 . . ISNES 4 12 ; "match"
0071 . . JMP 5 => 0077
0077 . . ISNES 4 14 ; "fail"
0078 . . JMP 5 => 0084
0084 . . GGET 5 0 ; "assert"
0085 . . UGET 6 4 ; relops
0086 . . TGETV 6 6 4
0087 . . CALL 5 1 2
0000 . . . FUNCC ; assert
0088 . . UGET 5 5 ; finish_if
0089 . . MOV 6 1
0090 . . MOV 7 0
0091 . . MOV 8 2
0092 . . MOV 9 3
0093 . . CALL 5 1 5
0000 . . . FUNCF 6 ; ssa.lua:49
0001 . . . TDUP 4 1
0002 . . . TSETB 1 4 2
0003 . . . TGETS 5 2 2 ; "label"
0004 . . . TSETB 5 4 3
0005 . . . TGETS 5 3 2 ; "label"
0006 . . . TSETB 5 4 4
0007 . . . TSETS 4 0 0 ; "control"
0008 . . . RET0 0 1
0094 . . RET0 0 1
0030 . UGET 7 1 ; compile_bool
0031 . TGETB 8 0 4
0032 . MOV 9 6
0033 . MOV 10 2
0034 . MOV 11 3
0035 . CALL 7 1 5
0000 . . JFUNCF 13 1 ; ssa.lua:55
0001 . . GGET 4 0 ; "assert"
0002 . . GGET 5 1 ; "type"
0003 . . MOV 6 0
0004 . . CALL 5 2 2
0000 . . . FUNCC ; type
0005 . . ISEQS 5 2 ; "table"
0006 . . JMP 5 => 0009
0009 . . KPRI 5 2
0010 . . CALL 4 1 2
0000 . . . FUNCC ; assert
0011 . . TGETB 4 0 1
0012 . . ISNES 4 3 ; "if"
0013 . . JMP 5 => 0037
0037 . . ISNES 4 4 ; "let"
0038 . . JMP 5 => 0056
0056 . . ISNES 4 10 ; "true"
0057 . . JMP 5 => 0063
0063 . . ISNES 4 11 ; "false"
0064 . . JMP 5 => 0070
0065 . . UGET 5 2 ; finish_goto
0066 . . MOV 6 1
0067 . . MOV 7 3
0068 . . CALL 5 1 3
0000 . . . FUNCF 4 ; ssa.lua:52
0001 . . . TDUP 2 1
0002 . . . TGETS 3 1 2 ; "label"
0003 . . . TSETB 3 2 2
0004 . . . TSETS 2 0 0 ; "control"
0005 . . . RET0 0 1
0069 . . JMP 5 => 0094
0094 . . RET0 0 1
0036 . JMP 5 => 0094
0094 . RET0 0 1
0030 UGET 7 1 ; compile_bool
0031 TGETB 8 0 4
0032 MOV 9 6
0033 MOV 10 2
0034 MOV 11 3
0035 CALL 7 1 5
0000 . JFUNCF 13 1 ; ssa.lua:55
0001 . GGET 4 0 ; "assert"
0002 . GGET 5 1 ; "type"
0003 . MOV 6 0
0004 . CALL 5 2 2
0000 . . FUNCC ; type
0005 . ISEQS 5 2 ; "table"
0006 . JMP 5 => 0009
0009 . KPRI 5 2
0010 . CALL 4 1 2
0000 . . FUNCC ; assert
0011 . TGETB 4 0 1
0012 . ISNES 4 3 ; "if"
0013 . JMP 5 => 0037
0037 . ISNES 4 4 ; "let"
0038 . JMP 5 => 0056
0056 . ISNES 4 10 ; "true"
0057 . JMP 5 => 0063
0063 . ISNES 4 11 ; "false"
0064 . JMP 5 => 0070
0065 . UGET 5 2 ; finish_goto
0066 . MOV 6 1
0067 . MOV 7 3
0068 . CALL 5 1 3
0000 . . FUNCF 4 ; ssa.lua:52
0001 . . TDUP 2 1
0002 . . TGETS 3 1 2 ; "label"
0003 . . TSETB 3 2 2
0004 . . TSETS 2 0 0 ; "control"
0005 . . RET0 0 1
0069 . JMP 5 => 0094
0094 . RET0 0 1
0036 JMP 5 => 0094
0094 RET0 0 1
0055 JMP 5 => 0094
0094 RET0 0 1
---- TRACE 3 IR
.... SNAP #0 [ ---- ]
.... SNAP #1 [ ---- ]
0002 > p32 RETF proto: 0x41f90ad8 [0x41f90b78]
.... SNAP #2 [ ---- ---- ---- ---- ---- ---- ---- ---- ]
0003 fun SLOAD #0 R
0004 > fun EQ 0003 ssa.lua:55
0005 rbx > tab SLOAD #1 T
0006 int FLOAD 0005 tab.asize
0007 > int ABC 0006 +3 
0008 r15 p32 FLOAD 0005 tab.array
0009 p32 AREF 0008 +3 
0010 [7c] > tab ALOAD 0009
0011 [78] > tab SLOAD #6 T
0012 r14 > tab SLOAD #3 T
0013 r13 > tab SLOAD #4 T
0014 [48] tab FLOAD ssa.lua:55 func.env
0015 rsi p32 HREF 0014 "assert"
0016 > p32 EQ 0015 [0x40eb3458]
0017 [3c] tab FLOAD 0014 tab.meta
0018 > tab NE 0017 [NULL]
0019 int FLOAD 0017 tab.hmask
0020 > int EQ 0019 +1 
0021 rsi p32 FLOAD 0017 tab.node
0022 > p32 HREFK 0021 "__index" @1
0023 rsi > tab HLOAD 0022
0024 int FLOAD 0023 tab.hmask
0025 > int EQ 0024 +63 
0026 rsi p32 FLOAD 0023 tab.node
0027 > p32 HREFK 0026 "assert" @3
0028 > fun HLOAD 0027
0029 rdx p32 HREF 0014 "type"
0030 > p32 EQ 0029 [0x40eb3458]
0031 > p32 HREFK 0026 "type" @60
0032 > fun HLOAD 0031
0033 > fun EQ 0032 type
0034 > fun EQ 0028 assert
0035 int FLOAD 0010 tab.asize
0036 > int ABC 0035 +1 
0037 rsi p32 FLOAD 0010 tab.array
0038 p32 AREF 0037 +1 
0039 [74] > str ALOAD 0038
.... SNAP #3 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0040 > str NE 0039 "if"
.... SNAP #4 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0041 > str NE 0039 "let"
.... SNAP #5 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0042 > str NE 0039 "true"
.... SNAP #6 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0043 > str NE 0039 "false"
.... SNAP #7 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0044 > str NE 0039 "match"
.... SNAP #8 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0045 > str NE 0039 "fail"
.... SNAP #9 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ]
0046 > p32 UREFC ssa.lua:55 #4
0047 [40] > tab ULOAD 0046
0048 rsi p32 HREF 0047 0039
0049 > tru HLOAD 0048
0050 [70] > tab TDUP {0x41f91468}
0051 rax p32 FLOAD 0050 tab.array
0052 p32 AREF 0051 +2 
0053 tab ASTORE 0052 0010
.... SNAP #10 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ssa.lua:49|0011 ---- 0012 0013 0050 ]
0054 int FLOAD 0012 tab.hmask
0055 > int EQ 0054 +1 
0056 r15 p32 FLOAD 0012 tab.node
0057 > p32 HREFK 0056 "label" @1
0058 r15 > str HLOAD 0057
0059 p32 AREF 0051 +3 
0060 str ASTORE 0059 0058
.... SNAP #11 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ssa.lua:49|0011 ---- ---- 0013 0050 ---- ]
0061 int FLOAD 0013 tab.hmask
0062 > int EQ 0061 +1 
0063 r15 p32 FLOAD 0013 tab.node
0064 > p32 HREFK 0063 "label" @1
0065 r15 > str HLOAD 0064
0066 p32 AREF 0051 +4 
0067 str ASTORE 0066 0065
.... SNAP #12 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ssa.lua:49|0011 ---- ---- ---- 0050 ---- ]
0068 rdx p32 HREF 0011 "control"
0069 > p32 EQ 0068 [0x40eb3458]
0070 tab FLOAD 0011 tab.meta
0071 > tab EQ 0070 [NULL]
0072 r15 p32 NEWREF 0011 "control"
0073 tab HSTORE 0072 0050
0074 nil TBAR 0011
.... SNAP #13 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0010 0011 0012 0013 0039 ssa.lua:49|---- ---- ---- ---- ---- ---- ]
0075 int FLOAD 0005 tab.asize
0076 > int ABC 0075 +4 
0077 rbx p32 FLOAD 0005 tab.array
0078 p32 AREF 0077 +4 
0079 r15 > tab ALOAD 0078
0080 rbx > tab SLOAD #7 T
0081 rax p32 HREF 0014 "assert"
0082 > p32 EQ 0081 [0x40eb3458]
0083 int FLOAD 0017 tab.hmask
0084 > int EQ 0083 +1 
0085 r12 p32 FLOAD 0017 tab.node
0086 > p32 HREFK 0085 "__index" @1
0087 r12 > tab HLOAD 0086
0088 int FLOAD 0087 tab.hmask
0089 > int EQ 0088 +63 
0090 r12 p32 FLOAD 0087 tab.node
0091 > p32 HREFK 0090 "assert" @3
0092 > fun HLOAD 0091
0093 rax p32 HREF 0014 "type"
0094 > p32 EQ 0093 [0x40eb3458]
0095 > p32 HREFK 0090 "type" @60
0096 > fun HLOAD 0095
0097 > fun EQ 0096 type
0098 > fun EQ 0092 assert
0099 int FLOAD 0079 tab.asize
0100 > int ABC 0099 +1 
0101 r12 p32 FLOAD 0079 tab.array
0102 p32 AREF 0101 +1 
0103 r12 > str ALOAD 0102
.... SNAP #14 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0079 0080 0012 0013 0103 ]
0104 > str NE 0103 "if"
.... SNAP #15 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0079 0080 0012 0013 0103 ]
0105 > str NE 0103 "let"
.... SNAP #16 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0079 0080 0012 0013 0103 ]
0106 > str NE 0103 "true"
.... SNAP #17 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0079 0080 0012 0013 0103 ]
0107 > str EQ 0103 "false"
.... SNAP #18 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0079 0080 0012 0013 0103 ]
0108 [6c] > tab TDUP {0x41f91748}
0109 int FLOAD 0013 tab.hmask
0110 > int EQ 0109 +1 
0111 rsi p32 FLOAD 0013 tab.node
0112 > p32 HREFK 0111 "label" @1
0113 rsi > str HLOAD 0112
0114 rax p32 FLOAD 0108 tab.array
0115 p32 AREF 0114 +2 
0116 str ASTORE 0115 0113
.... SNAP #19 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0079 0080 0012 0013 0103 ssa.lua:52|0080 ---- 0108 ---- ]
0117 rsi p32 HREF 0080 "control"
0118 > p32 EQ 0117 [0x40eb3458]
0119 tab FLOAD 0080 tab.meta
0120 > tab EQ 0119 [NULL]
0121 r15 p32 NEWREF 0080 "control"
0122 tab HSTORE 0121 0108
0123 nil TBAR 0080
.... SNAP #20 [ ssa.lua:55|---- ---- ---- ---- ---- ]
0124 > p32 RETF proto: 0x41f90ad8 [0x41f90b78]
.... SNAP #21 [ ---- ---- ---- ---- ---- ---- ---- ---- ]
0125 fun SLOAD #0 R
0126 > fun EQ 0125 ssa.lua:55
0127 rbx > tab SLOAD #1 T
0128 int FLOAD 0127 tab.asize
0129 > int ABC 0128 +3 
0130 r15 p32 FLOAD 0127 tab.array
0131 p32 AREF 0130 +3 
0132 [18] > tab ALOAD 0131
0133 [14] > tab SLOAD #6 T
0134 r15 > tab SLOAD #3 T
0135 r14 > tab SLOAD #4 T
0136 rdi p32 HREF 0014 "assert"
0137 > p32 EQ 0136 [0x40eb3458]
0138 int FLOAD 0017 tab.hmask
0139 > int EQ 0138 +1 
0140 r12 p32 FLOAD 0017 tab.node
0141 > p32 HREFK 0140 "__index" @1
0142 r12 > tab HLOAD 0141
0143 int FLOAD 0142 tab.hmask
0144 > int EQ 0143 +63 
0145 r12 p32 FLOAD 0142 tab.node
0146 > p32 HREFK 0145 "assert" @3
0147 > fun HLOAD 0146
0148 rdi p32 HREF 0014 "type"
0149 > p32 EQ 0148 [0x40eb3458]
0150 > p32 HREFK 0145 "type" @60
0151 > fun HLOAD 0150
0152 > fun EQ 0151 type
0153 > fun EQ 0147 assert
0154 int FLOAD 0132 tab.asize
0155 > int ABC 0154 +1 
0156 r12 p32 FLOAD 0132 tab.array
0157 p32 AREF 0156 +1 
0158 [10] > str ALOAD 0157
.... SNAP #22 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 ]
0159 > str EQ 0158 "if"
.... SNAP #23 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 ]
0160 [64] > p32 UREFO ssa.lua:39 #0
0161 xmm7 > num ULOAD 0160
0162 [58] num ADD 0161 +1 
0163 num USTORE 0160 0162
.... SNAP #24 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 ssa.lua:39|---- ]
0164 str TOSTR 0162 NUM
0165 rdi p32 BUFHDR [0x40eb3414] RESET
0166 rdi p32 BUFPUT 0165 "L" 
0167 rdi p32 BUFPUT 0166 0164
0168 [68] str BUFSTR 0167 0165
0169 [c] > tab TDUP {0x41f902b8}
0170 rsi > tab TNEW #0 #0
0171 r12 p32 FLOAD 0169 tab.node
0172 p32 HREFK 0171 "bindings" @2
0173 tab HSTORE 0172 0170
0174 p32 HREFK 0171 "label" @3
0175 str HSTORE 0174 0168
.... SNAP #25 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 ssa.lua:39|0168 0169 ---- ]
0176 r12 > p32 UREFO ssa.lua:39 #1
0177 r12 > tab ULOAD 0176
0178 int FLOAD 0177 tab.hmask
0179 > int EQ 0178 +1 
0180 rsi p32 FLOAD 0177 tab.node
0181 > p32 HREFK 0180 "blocks" @0
0182 [60] > tab HLOAD 0181
0183 rdx p32 HREF 0182 0168
0184 > p32 EQ 0183 [0x40eb3458]
0185 tab FLOAD 0182 tab.meta
0186 > tab EQ 0185 [NULL]
0187 rax p32 NEWREF 0182 0168
0188 tab HSTORE 0187 0169
0189 nil TBAR 0182
0190 p32 FREF 0182 tab.nomm
0191 u8  FSTORE 0190 +0 
0192 [50] num ADD 0162 +1 
0193 num USTORE 0160 0192
.... SNAP #26 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 ssa.lua:39|---- ]
0194 str TOSTR 0192 NUM
0195 rdi p32 BUFHDR [0x40eb3414] RESET
0196 rdi p32 BUFPUT 0195 "L" 
0197 rdi p32 BUFPUT 0196 0194
0198 [4c] str BUFSTR 0197 0195
0199 [28] > tab TDUP {0x41f902b8}
0200 rsi > tab TNEW #0 #0
0201 [1c] p32 FLOAD 0199 tab.node
0202 p32 HREFK 0201 "bindings" @2
0203 tab HSTORE 0202 0200
0204 p32 HREFK 0201 "label" @3
0205 str HSTORE 0204 0198
.... SNAP #27 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 ssa.lua:39|0198 0199 ---- ]
0206 int FLOAD 0177 tab.hmask
0207 > int EQ 0206 +1 
0208 r12 p32 FLOAD 0177 tab.node
0209 > p32 HREFK 0208 "blocks" @0
0210 r12 > tab HLOAD 0209
0211 rsi p32 HREF 0210 0198
0212 > p32 EQ 0211 [0x40eb3458]
0213 tab FLOAD 0210 tab.meta
0214 > tab EQ 0213 [NULL]
0215 rax p32 NEWREF 0210 0198
0216 tab HSTORE 0215 0199
0217 nil TBAR 0210
0218 p32 FREF 0210 tab.nomm
0219 u8  FSTORE 0218 +0 
.... SNAP #28 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 ssa.lua:39|---- 0199 ---- ]
0220 int FLOAD 0132 tab.asize
0221 > int ABC 0220 +2 
0222 r12 p32 FLOAD 0132 tab.array
0223 p32 AREF 0222 +2 
0224 r12 > tab ALOAD 0223
0225 rcx p32 HREF 0014 "assert"
0226 > p32 EQ 0225 [0x40eb3458]
0227 int FLOAD 0017 tab.hmask
0228 > int EQ 0227 +1 
0229 rsi p32 FLOAD 0017 tab.node
0230 > p32 HREFK 0229 "__index" @1
0231 rsi > tab HLOAD 0230
0232 int FLOAD 0231 tab.hmask
0233 > int EQ 0232 +63 
0234 rsi p32 FLOAD 0231 tab.node
0235 > p32 HREFK 0234 "assert" @3
0236 > fun HLOAD 0235
0237 rcx p32 HREF 0014 "type"
0238 > p32 EQ 0237 [0x40eb3458]
0239 > p32 HREFK 0234 "type" @60
0240 > fun HLOAD 0239
0241 > fun EQ 0240 type
0242 > fun EQ 0236 assert
0243 int FLOAD 0224 tab.asize
0244 > int ABC 0243 +1 
0245 rsi p32 FLOAD 0224 tab.array
0246 p32 AREF 0245 +1 
0247 [38] > str ALOAD 0246
.... SNAP #29 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0224 0133 0169 0199 0247 ]
0248 > str NE 0247 "if"
.... SNAP #30 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0224 0133 0169 0199 0247 ]
0249 > str NE 0247 "let"
.... SNAP #31 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0224 0133 0169 0199 0247 ]
0250 > str NE 0247 "true"
.... SNAP #32 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0224 0133 0169 0199 0247 ]
0251 > str NE 0247 "false"
.... SNAP #33 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0224 0133 0169 0199 0247 ]
0252 > str NE 0247 "match"
.... SNAP #34 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0224 0133 0169 0199 0247 ]
0253 > str NE 0247 "fail"
.... SNAP #35 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0224 0133 0169 0199 0247 ]
0254 rsi p32 HREF 0047 0247
0255 > tru HLOAD 0254
0256 [44] > tab TDUP {0x41f91468}
0257 rdx p32 FLOAD 0256 tab.array
0258 p32 AREF 0257 +2 
0259 tab ASTORE 0258 0224
.... SNAP #36 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0224 0133 0169 0199 0247 ssa.lua:49|0133 ---- 0169 0199 0256 ]
0260 int FLOAD 0169 tab.hmask
0261 > int EQ 0260 +3 
0262 [2c] p32 FLOAD 0169 tab.node
0263 > p32 HREFK 0262 "label" @3
0264 rcx > str HLOAD 0263
0265 p32 AREF 0257 +3 
0266 str ASTORE 0265 0264
0267 p32 AREF 0257 +4 
0268 str ASTORE 0267 0198
.... SNAP #37 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0224 0133 0169 0199 0247 ssa.lua:49|0133 ---- ---- ---- 0256 ---- ]
0269 rdx p32 HREF 0133 "control"
0270 > p32 EQ 0269 [0x40eb3458]
0271 tab FLOAD 0133 tab.meta
0272 > tab EQ 0271 [NULL]
0273 r9 p32 NEWREF 0133 "control"
0274 tab HSTORE 0273 0256
0275 nil TBAR 0133
.... SNAP #38 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0224 0133 0169 0199 0247 ssa.lua:49|---- ---- ---- ---- ---- ---- ]
0276 int FLOAD 0132 tab.asize
0277 > int ABC 0276 +4 
0278 [30] p32 FLOAD 0132 tab.array
0279 p32 AREF 0278 +3 
0280 r13 > tab ALOAD 0279
0281 rax p32 HREF 0014 "assert"
0282 > p32 EQ 0281 [0x40eb3458]
0283 int FLOAD 0017 tab.hmask
0284 > int EQ 0283 +1 
0285 rdx p32 FLOAD 0017 tab.node
0286 > p32 HREFK 0285 "__index" @1
0287 rdx > tab HLOAD 0286
0288 int FLOAD 0287 tab.hmask
0289 > int EQ 0288 +63 
0290 rdx p32 FLOAD 0287 tab.node
0291 > p32 HREFK 0290 "assert" @3
0292 > fun HLOAD 0291
0293 rax p32 HREF 0014 "type"
0294 > p32 EQ 0293 [0x40eb3458]
0295 > p32 HREFK 0290 "type" @60
0296 > fun HLOAD 0295
0297 > fun EQ 0296 type
0298 > fun EQ 0292 assert
0299 int FLOAD 0280 tab.asize
0300 > int ABC 0299 +1 
0301 rdx p32 FLOAD 0280 tab.array
0302 p32 AREF 0301 +1 
0303 [34] > str ALOAD 0302
.... SNAP #39 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0280 0169 0134 0135 0303 ]
0304 > str NE 0303 "if"
.... SNAP #40 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0280 0169 0134 0135 0303 ]
0305 > str NE 0303 "let"
.... SNAP #41 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0280 0169 0134 0135 0303 ]
0306 > str NE 0303 "true"
.... SNAP #42 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0280 0169 0134 0135 0303 ]
0307 > str NE 0303 "false"
.... SNAP #43 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0280 0169 0134 0135 0303 ]
0308 > str NE 0303 "match"
.... SNAP #44 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0280 0169 0134 0135 0303 ]
0309 > str NE 0303 "fail"
.... SNAP #45 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0280 0169 0134 0135 0303 ]
0310 r12 p32 HREF 0047 0303
0311 > tru HLOAD 0310
0312 rax > tab TDUP {0x41f91468}
0313 r11 p32 FLOAD 0312 tab.array
0314 p32 AREF 0313 +2 
0315 tab ASTORE 0314 0280
.... SNAP #46 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0280 0169 0134 0135 0303 ssa.lua:49|0169 ---- 0134 0135 0312 ]
0316 int FLOAD 0134 tab.hmask
0317 > int EQ 0316 +1 
0318 r12 p32 FLOAD 0134 tab.node
0319 > p32 HREFK 0318 "label" @1
0320 r12 > str HLOAD 0319
0321 p32 AREF 0313 +3 
0322 str ASTORE 0321 0320
.... SNAP #47 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0280 0169 0134 0135 0303 ssa.lua:49|0169 ---- ---- 0135 0312 ---- ]
0323 int FLOAD 0135 tab.hmask
0324 > int EQ 0323 +1 
0325 r12 p32 FLOAD 0135 tab.node
0326 > p32 HREFK 0325 "label" @1
0327 r12 > str HLOAD 0326
0328 p32 AREF 0313 +4 
0329 str ASTORE 0328 0327
.... SNAP #48 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0280 0169 0134 0135 0303 ssa.lua:49|0169 ---- ---- ---- 0312 ---- ]
0330 > p32 HREFK 0262 "control" @1
0331 tab HSTORE 0330 0312
.... SNAP #49 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0280 0169 0134 0135 0303 ssa.lua:49|---- ---- ---- ---- ---- ---- ]
0332 p32 AREF 0278 +4 
0333 [24] > tab ALOAD 0332
0334 int FLOAD 0333 tab.asize
0335 > int ABC 0334 +1 
0336 rdx p32 FLOAD 0333 tab.array
0337 p32 AREF 0336 +1 
0338 [20] > str ALOAD 0337
.... SNAP #50 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0333 0199 0134 0135 0338 ]
0339 > str NE 0338 "if"
.... SNAP #51 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0333 0199 0134 0135 0338 ]
0340 > str NE 0338 "let"
.... SNAP #52 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0333 0199 0134 0135 0338 ]
0341 > str NE 0338 "true"
.... SNAP #53 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0333 0199 0134 0135 0338 ]
0342 > str EQ 0338 "false"
.... SNAP #54 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0333 0199 0134 0135 0338 ]
0343 r13 > tab TDUP {0x41f91748}
0344 rdi p32 FLOAD 0343 tab.array
0345 p32 AREF 0344 +2 
0346 str ASTORE 0345 0327
0347 p32 HREFK 0201 "control" @1
0348 tab HSTORE 0347 0343
.... SNAP #55 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0132 0133 0134 0135 0158 0169 0199 ssa.lua:55|0333 0199 0134 0135 0338 ssa.lua:52|---- ---- ---- ---- ]
0349 int FLOAD 0127 tab.asize
0350 > int ABC 0349 +4 
0351 rbx p32 FLOAD 0127 tab.array
0352 p32 AREF 0351 +4 
0353 rbx > tab ALOAD 0352
0354 rbp > tab SLOAD #7 T
0355 int FLOAD 0353 tab.asize
0356 > int ABC 0355 +1 
0357 r13 p32 FLOAD 0353 tab.array
0358 p32 AREF 0357 +1 
0359 r13 > str ALOAD 0358
.... SNAP #56 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0353 0354 0134 0135 0359 ]
0360 > str NE 0359 "if"
.... SNAP #57 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0353 0354 0134 0135 0359 ]
0361 > str NE 0359 "let"
.... SNAP #58 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0353 0354 0134 0135 0359 ]
0362 > str NE 0359 "true"
.... SNAP #59 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0353 0354 0134 0135 0359 ]
0363 > str EQ 0359 "false"
.... SNAP #60 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0353 0354 0134 0135 0359 ]
0364 [8] > tab TDUP {0x41f91748}
0365 rax p32 FLOAD 0364 tab.array
0366 p32 AREF 0365 +2 
0367 str ASTORE 0366 0327
.... SNAP #61 [ ssa.lua:55|---- ---- ---- ---- ---- ---- ---- ssa.lua:55|0353 0354 0134 0135 0359 ssa.lua:52|0354 ---- 0364 ---- ]
0368 rsi p32 HREF 0354 "control"
0369 > p32 EQ 0368 [0x40eb3458]
0370 tab FLOAD 0354 tab.meta
0371 > tab EQ 0370 [NULL]
0372 rbx p32 NEWREF 0354 "control"
0373 tab HSTORE 0372 0364
0374 nil TBAR 0354
.... SNAP #62 [ ssa.lua:55|---- ---- ---- ---- ---- ]
0375 > p32 RETF proto: 0x41f90ad8 [0x41f90bf4]
.... SNAP #63 [ ---- ]
---- TRACE 3 mcode 4549
0bcbe8e1 add rsp, -0x70
0bcbe8e5 mov dword [0x40eb3410], 0x3
0bcbe8f0 mov ebp, edx
0bcbe8f2 mov edi, [0x40eb33d8]
0bcbe8f9 cmp edi, [0x40eb33dc]
0bcbe900 jb 0x0bcbe919
0bcbe902 mov esi, 0xc
0bcbe907 mov edi, 0x40eb33b8
0bcbe90c call 0x00421730 ->lj_gc_step_jit
0bcbe911 test eax, eax
0bcbe913 jnz 0x0bcb0010 ->0
0bcbe919 mov edi, [0x40eb34b0]
0bcbe920 cmp dword [rbp-0x4], 0x41f90b78
0bcbe927 jnz 0x0bcb0014 ->1
0bcbe92d add ebp, -0x40
0bcbe930 mov [0x40eb34b4], ebp
0bcbe937 cmp dword [rbp-0x8], 0x40ecf6e0
0bcbe93e jnz 0x0bcb0018 ->2
0bcbe944 cmp dword [rbp+0x4], -0x0c
0bcbe948 jnz 0x0bcb0018 ->2
0bcbe94e mov ebx, [rbp+0x0]
0bcbe951 cmp dword [rbx+0x18], +0x03
0bcbe955 jbe 0x0bcb0018 ->2
0bcbe95b mov r15d, [rbx+0x8]
0bcbe95f cmp dword [r15+0x1c], -0x0c
0bcbe964 jnz 0x0bcb0018 ->2
0bcbe96a mov r15d, [r15+0x18]
0bcbe96e mov [rsp+0x7c], r15d
0bcbe973 cmp dword [rbp+0x2c], -0x0c
0bcbe977 jnz 0x0bcb0018 ->2
0bcbe97d mov esi, [rbp+0x28]
0bcbe980 mov [rsp+0x78], esi
0bcbe984 cmp dword [rbp+0x14], -0x0c
0bcbe988 jnz 0x0bcb0018 ->2
0bcbe98e mov r14d, [rbp+0x10]
0bcbe992 cmp dword [rbp+0x1c], -0x0c
0bcbe996 jnz 0x0bcb0018 ->2
0bcbe99c mov r13d, [rbp+0x18]
0bcbe9a0 mov r11d, [0x40ecf6e8]
0bcbe9a8 mov [rsp+0x48], r11d
0bcbe9ad mov esi, [r11+0x1c]
0bcbe9b1 and esi, 0xce2b6183
0bcbe9b7 lea esi, [rsi+rsi*2]
0bcbe9ba shl esi, 0x03
0bcbe9bd add esi, [r11+0x14]
0bcbe9c1 cmp dword [rsi+0xc], -0x05
0bcbe9c5 jnz 0x0bcbe9d4
0bcbe9c7 cmp dword [rsi+0x8], 0x40eb5db0
0bcbe9ce jz 0x0bcb0018 ->2
0bcbe9d4 mov esi, [rsi+0x10]
0bcbe9d7 test esi, esi
0bcbe9d9 jnz 0x0bcbe9c1
0bcbe9db mov r12d, [r11+0x10]
0bcbe9df mov [rsp+0x3c], r12d
0bcbe9e4 test r12d, r12d
0bcbe9e7 jz 0x0bcb0018 ->2
0bcbe9ed cmp dword [r12+0x1c], +0x01
0bcbe9f3 jnz 0x0bcb0018 ->2
0bcbe9f9 mov esi, [r12+0x14]
0bcbe9fe mov rdx, 0xfffffffb40eb54c8
0bcbea08 cmp rdx, [rsi+0x20]
0bcbea0c jnz 0x0bcb0018 ->2
0bcbea12 cmp dword [rsi+0x1c], -0x0c
0bcbea16 jnz 0x0bcb0018 ->2
0bcbea1c mov esi, [rsi+0x18]
0bcbea1f cmp dword [rsi+0x1c], +0x3f
0bcbea23 jnz 0x0bcb0018 ->2
0bcbea29 mov esi, [rsi+0x14]
0bcbea2c mov rdx, 0xfffffffb40eb5db0
0bcbea36 cmp rdx, [rsi+0x50]
0bcbea3a jnz 0x0bcb0018 ->2
0bcbea40 cmp dword [rsi+0x4c], -0x09
0bcbea44 jnz 0x0bcb0018 ->2
0bcbea4a mov edx, [r11+0x1c]
0bcbea4e and edx, 0x798a813c
0bcbea54 lea edx, [rdx+rdx*2]
0bcbea57 shl edx, 0x03
0bcbea5a add edx, [r11+0x14]
0bcbea5e cmp dword [rdx+0xc], -0x05
0bcbea62 jnz 0x0bcbea71
0bcbea64 cmp dword [rdx+0x8], 0x40eb5fb0
0bcbea6b jz 0x0bcb0018 ->2
0bcbea71 mov edx, [rdx+0x10]
0bcbea74 test edx, edx
0bcbea76 jnz 0x0bcbea5e
0bcbea78 mov rdx, 0xfffffffb40eb5fb0
0bcbea82 cmp rdx, [rsi+0x5a8]
0bcbea89 jnz 0x0bcb0018 ->2
0bcbea8f cmp dword [rsi+0x5a4], -0x09
0bcbea96 jnz 0x0bcb0018 ->2
0bcbea9c cmp dword [rsi+0x5a0], 0x40eb5f18
0bcbeaa6 jnz 0x0bcb0018 ->2
0bcbeaac cmp dword [rsi+0x48], 0x40eb5d88
0bcbeab3 jnz 0x0bcb0018 ->2
0bcbeab9 cmp dword [r15+0x18], +0x01
0bcbeabe jbe 0x0bcb0018 ->2
0bcbeac4 mov esi, [r15+0x8]
0bcbeac8 cmp dword [rsi+0xc], -0x05
0bcbeacc jnz 0x0bcb0018 ->2
0bcbead2 mov ecx, [rsi+0x8]
0bcbead5 mov [rsp+0x74], ecx
0bcbead9 cmp ecx, 0x40eb58f8
0bcbeadf jz 0x0bcb001c ->3
0bcbeae5 cmp ecx, 0x41f91978
0bcbeaeb jz 0x0bcb0020 ->4
0bcbeaf1 cmp ecx, 0x40eb5a18
0bcbeaf7 jz 0x0bcb0024 ->5
0bcbeafd cmp ecx, 0x40eb5870
0bcbeb03 jz 0x0bcb0028 ->6
0bcbeb09 cmp ecx, 0x40eb8cb0
0bcbeb0f jz 0x0bcb002c ->7
0bcbeb15 cmp ecx, 0x41f91a50
0bcbeb1b jz 0x0bcb0030 ->8
0bcbeb21 cmp dword [0x41f85324], -0x0c
0bcbeb29 jnz 0x0bcb0034 ->9
0bcbeb2f mov edx, [0x41f85320]
0bcbeb36 mov [rsp+0x40], edx
0bcbeb3a mov esi, [rdx+0x1c]
0bcbeb3d and esi, [rcx+0x8]
0bcbeb40 lea esi, [rsi+rsi*2]
0bcbeb43 shl esi, 0x03
0bcbeb46 add esi, [rdx+0x14]
0bcbeb49 cmp dword [rsi+0xc], -0x05
0bcbeb4d jnz 0x0bcbeb54
0bcbeb4f cmp ecx, [rsi+0x8]
0bcbeb52 jz 0x0bcbeb60
0bcbeb54 mov esi, [rsi+0x10]
0bcbeb57 test esi, esi
0bcbeb59 jnz 0x0bcbeb49
0bcbeb5b mov esi, 0x40eb3458
0bcbeb60 cmp dword [rsi+0x4], -0x03
0bcbeb64 jnz 0x0bcb0034 ->9
0bcbeb6a mov esi, 0x41f91468
0bcbeb6f call 0x004223c0 ->lj_tab_dup
0bcbeb74 mov [rsp+0x70], eax
0bcbeb78 mov edi, [0x40eb34b0]
0bcbeb7f mov esi, [rsp+0x78]
0bcbeb83 mov eax, [rax+0x8]
0bcbeb86 mov dword [rax+0x14], 0xfffffff4
0bcbeb8d mov [rax+0x10], r15d
0bcbeb91 cmp dword [r14+0x1c], +0x01
0bcbeb96 jnz 0x0bcb0038 ->10
0bcbeb9c mov r15d, [r14+0x14]
0bcbeba0 mov rdx, 0xfffffffb41f8f5d0
0bcbebaa cmp rdx, [r15+0x20]
0bcbebae jnz 0x0bcb0038 ->10
0bcbebb4 cmp dword [r15+0x1c], -0x05
0bcbebb9 jnz 0x0bcb0038 ->10
0bcbebbf mov r15d, [r15+0x18]
0bcbebc3 mov dword [rax+0x1c], 0xfffffffb
0bcbebca mov [rax+0x18], r15d
0bcbebce cmp dword [r13+0x1c], +0x01
0bcbebd3 jnz 0x0bcb003c ->11
0bcbebd9 mov r15d, [r13+0x14]
0bcbebdd mov rdx, 0xfffffffb41f8f5d0
0bcbebe7 cmp rdx, [r15+0x20]
0bcbebeb jnz 0x0bcb003c ->11
0bcbebf1 cmp dword [r15+0x1c], -0x05
0bcbebf6 jnz 0x0bcb003c ->11
0bcbebfc mov r15d, [r15+0x18]
0bcbec00 mov dword [rax+0x24], 0xfffffffb
0bcbec07 mov [rax+0x20], r15d
0bcbec0b mov edx, [rsi+0x1c]
0bcbec0e and edx, 0x2a54dc55
0bcbec14 lea edx, [rdx+rdx*2]
0bcbec17 shl edx, 0x03
0bcbec1a add edx, [rsi+0x14]
0bcbec1d cmp dword [rdx+0xc], -0x05
0bcbec21 jnz 0x0bcbec30
0bcbec23 cmp dword [rdx+0x8], 0x41f8fd38
0bcbec2a jz 0x0bcb0040 ->12
0bcbec30 mov edx, [rdx+0x10]
0bcbec33 test edx, edx
0bcbec35 jnz 0x0bcbec1d
0bcbec37 cmp dword [rsi+0x10], +0x00
0bcbec3b jnz 0x0bcb0040 ->12
0bcbec41 mov edx, 0x40eb3448
0bcbec46 mov dword [rdx+0x4], 0xfffffffb
0bcbec4d mov dword [rdx], 0x41f8fd38
0bcbec53 call 0x00422cf0 ->lj_tab_newkey
0bcbec58 mov r15d, eax
0bcbec5b mov r11d, [rsp+0x48]
0bcbec60 mov edi, [0x40eb34b0]
0bcbec67 mov edx, [rsp+0x78]
0bcbec6b mov eax, [rsp+0x70]
0bcbec6f mov dword [r15+0x4], 0xfffffff4
0bcbec77 mov [r15], eax
0bcbec7a test byte [rdx+0x4], 0x4
0bcbec7e jz 0x0bcbec95
0bcbec80 and byte [rdx+0x4], 0xfb
0bcbec84 mov eax, [0x40eb33f4]
0bcbec8b mov [0x40eb33f4], edx
0bcbec92 mov [rdx+0xc], eax
0bcbec95 cmp dword [rbx+0x18], +0x04
0bcbec99 jbe 0x0bcb0044 ->13
0bcbec9f mov ebx, [rbx+0x8]
0bcbeca2 cmp dword [rbx+0x24], -0x0c
0bcbeca6 jnz 0x0bcb0044 ->13
0bcbecac mov r15d, [rbx+0x20]
0bcbecb0 cmp dword [rbp+0x34], -0x0c
0bcbecb4 jnz 0x0bcb0044 ->13
0bcbecba mov ebx, [rbp+0x30]
0bcbecbd mov eax, [r11+0x1c]
0bcbecc1 and eax, 0xce2b6183
0bcbecc7 lea eax, [rax+rax*2]
0bcbecca shl eax, 0x03
0bcbeccd add eax, [r11+0x14]
0bcbecd1 cmp dword [rax+0xc], -0x05
0bcbecd5 jnz 0x0bcbece4
0bcbecd7 cmp dword [rax+0x8], 0x40eb5db0
0bcbecde jz 0x0bcb0044 ->13
0bcbece4 mov eax, [rax+0x10]
0bcbece7 test eax, eax
0bcbece9 jnz 0x0bcbecd1
0bcbeceb cmp dword [r12+0x1c], +0x01
0bcbecf1 jnz 0x0bcb0044 ->13
0bcbecf7 mov r12d, [r12+0x14]
0bcbecfc mov rax, 0xfffffffb40eb54c8
0bcbed06 cmp rax, [r12+0x20]
0bcbed0b jnz 0x0bcb0044 ->13
0bcbed11 cmp dword [r12+0x1c], -0x0c
0bcbed17 jnz 0x0bcb0044 ->13
0bcbed1d mov r12d, [r12+0x18]
0bcbed22 cmp dword [r12+0x1c], +0x3f
0bcbed28 jnz 0x0bcb0044 ->13
0bcbed2e mov r12d, [r12+0x14]
0bcbed33 mov rax, 0xfffffffb40eb5db0
0bcbed3d cmp rax, [r12+0x50]
0bcbed42 jnz 0x0bcb0044 ->13
0bcbed48 cmp dword [r12+0x4c], -0x09
0bcbed4e jnz 0x0bcb0044 ->13
0bcbed54 mov eax, [r11+0x1c]
0bcbed58 and eax, 0x798a813c
0bcbed5e lea eax, [rax+rax*2]
0bcbed61 shl eax, 0x03
0bcbed64 add eax, [r11+0x14]
0bcbed68 cmp dword [rax+0xc], -0x05
0bcbed6c jnz 0x0bcbed7b
0bcbed6e cmp dword [rax+0x8], 0x40eb5fb0
0bcbed75 jz 0x0bcb0044 ->13
0bcbed7b mov eax, [rax+0x10]
0bcbed7e test eax, eax
0bcbed80 jnz 0x0bcbed68
0bcbed82 mov rax, 0xfffffffb40eb5fb0
0bcbed8c cmp rax, [r12+0x5a8]
0bcbed94 jnz 0x0bcb0044 ->13
0bcbed9a cmp dword [r12+0x5a4], -0x09
0bcbeda3 jnz 0x0bcb0044 ->13
0bcbeda9 cmp dword [r12+0x5a0], 0x40eb5f18
0bcbedb5 jnz 0x0bcb0044 ->13
0bcbedbb cmp dword [r12+0x48], 0x40eb5d88
0bcbedc4 jnz 0x0bcb0044 ->13
0bcbedca cmp dword [r15+0x18], +0x01
0bcbedcf jbe 0x0bcb0044 ->13
0bcbedd5 mov r12d, [r15+0x8]
0bcbedd9 cmp dword [r12+0xc], -0x05
0bcbeddf jnz 0x0bcb0044 ->13
0bcbede5 mov r12d, [r12+0x8]
0bcbedea cmp r12d, 0x40eb58f8
0bcbedf1 jz 0x0bcb0048 ->14
0bcbedf7 cmp r12d, 0x41f91978
0bcbedfe jz 0x0bcb004c ->15
0bcbee04 cmp r12d, 0x40eb5a18
0bcbee0b jz 0x0bcb0050 ->16
0bcbee11 cmp r12d, 0x40eb5870
0bcbee18 jnz 0x0bcb0054 ->17
0bcbee1e mov esi, 0x41f91748
0bcbee23 call 0x004223c0 ->lj_tab_dup
0bcbee28 mov [rsp+0x6c], eax
0bcbee2c mov edi, [0x40eb34b0]
0bcbee33 cmp dword [r13+0x1c], +0x01
0bcbee38 jnz 0x0bcb0058 ->18
0bcbee3e mov esi, [r13+0x14]
0bcbee42 mov rdx, 0xfffffffb41f8f5d0
0bcbee4c cmp rdx, [rsi+0x20]
0bcbee50 jnz 0x0bcb0058 ->18
0bcbee56 cmp dword [rsi+0x1c], -0x05
0bcbee5a jnz 0x0bcb0058 ->18
0bcbee60 mov esi, [rsi+0x18]
0bcbee63 mov eax, [rax+0x8]
0bcbee66 mov dword [rax+0x14], 0xfffffffb
0bcbee6d mov [rax+0x10], esi
0bcbee70 mov esi, [rbx+0x1c]
0bcbee73 and esi, 0x2a54dc55
0bcbee79 lea esi, [rsi+rsi*2]
0bcbee7c shl esi, 0x03
0bcbee7f add esi, [rbx+0x14]
0bcbee82 cmp dword [rsi+0xc], -0x05
0bcbee86 jnz 0x0bcbee95
0bcbee88 cmp dword [rsi+0x8], 0x41f8fd38
0bcbee8f jz 0x0bcb005c ->19
0bcbee95 mov esi, [rsi+0x10]
0bcbee98 test esi, esi
0bcbee9a jnz 0x0bcbee82
0bcbee9c cmp dword [rbx+0x10], +0x00
0bcbeea0 jnz 0x0bcb005c ->19
0bcbeea6 mov edx, 0x40eb3448
0bcbeeab mov dword [rdx+0x4], 0xfffffffb
0bcbeeb2 mov dword [rdx], 0x41f8fd38
0bcbeeb8 mov esi, ebx
0bcbeeba call 0x00422cf0 ->lj_tab_newkey
0bcbeebf mov r15d, eax
0bcbeec2 mov r11d, [rsp+0x48]
0bcbeec7 mov esi, [rsp+0x3c]
0bcbeecb mov eax, [rsp+0x6c]
0bcbeecf mov dword [r15+0x4], 0xfffffff4
0bcbeed7 mov [r15], eax
0bcbeeda test byte [rbx+0x4], 0x4
0bcbeede jz 0x0bcbeef5
0bcbeee0 and byte [rbx+0x4], 0xfb
0bcbeee4 mov edi, [0x40eb33f4]
0bcbeeeb mov [0x40eb33f4], ebx
0bcbeef2 mov [rbx+0xc], edi
0bcbeef5 cmp dword [rbp-0x4], 0x41f90b78
0bcbeefc jnz 0x0bcb0060 ->20
0bcbef02 add ebp, -0x40
0bcbef05 mov [0x40eb34b4], ebp
0bcbef0c cmp dword [rbp-0x8], 0x40ecf6e0
0bcbef13 jnz 0x0bcb0064 ->21
0bcbef19 cmp dword [rbp+0x4], -0x0c
0bcbef1d jnz 0x0bcb0064 ->21
0bcbef23 mov ebx, [rbp+0x0]
0bcbef26 cmp dword [rbx+0x18], +0x03
0bcbef2a jbe 0x0bcb0064 ->21
0bcbef30 mov r15d, [rbx+0x8]
0bcbef34 cmp dword [r15+0x1c], -0x0c
0bcbef39 jnz 0x0bcb0064 ->21
0bcbef3f mov r13d, [r15+0x18]
0bcbef43 mov [rsp+0x18], r13d
0bcbef48 cmp dword [rbp+0x2c], -0x0c
0bcbef4c jnz 0x0bcb0064 ->21
0bcbef52 mov edi, [rbp+0x28]
0bcbef55 mov [rsp+0x14], edi
0bcbef59 cmp dword [rbp+0x14], -0x0c
0bcbef5d jnz 0x0bcb0064 ->21
0bcbef63 mov r15d, [rbp+0x10]
0bcbef67 cmp dword [rbp+0x1c], -0x0c
0bcbef6b jnz 0x0bcb0064 ->21
0bcbef71 mov r14d, [rbp+0x18]
0bcbef75 mov edi, [r11+0x1c]
0bcbef79 and edi, 0xce2b6183
0bcbef7f lea edi, [rdi+rdi*2]
0bcbef82 shl edi, 0x03
0bcbef85 add edi, [r11+0x14]
0bcbef89 cmp dword [rdi+0xc], -0x05
0bcbef8d jnz 0x0bcbef9c
0bcbef8f cmp dword [rdi+0x8], 0x40eb5db0
0bcbef96 jz 0x0bcb0064 ->21
0bcbef9c mov edi, [rdi+0x10]
0bcbef9f test edi, edi
0bcbefa1 jnz 0x0bcbef89
0bcbefa3 cmp dword [rsi+0x1c], +0x01
0bcbefa7 jnz 0x0bcb0064 ->21
0bcbefad mov r12d, [rsi+0x14]
0bcbefb1 mov rdi, 0xfffffffb40eb54c8
0bcbefbb cmp rdi, [r12+0x20]
0bcbefc0 jnz 0x0bcb0064 ->21
0bcbefc6 cmp dword [r12+0x1c], -0x0c
0bcbefcc jnz 0x0bcb0064 ->21
0bcbefd2 mov r12d, [r12+0x18]
0bcbefd7 cmp dword [r12+0x1c], +0x3f
0bcbefdd jnz 0x0bcb0064 ->21
0bcbefe3 mov r12d, [r12+0x14]
0bcbefe8 mov rdi, 0xfffffffb40eb5db0
0bcbeff2 cmp rdi, [r12+0x50]
0bcbeff7 jnz 0x0bcb0064 ->21
0bcbeffd cmp dword [r12+0x4c], -0x09
0bcbf003 jnz 0x0bcb0064 ->21
0bcbf009 mov edi, [r11+0x1c]
0bcbf00d and edi, 0x798a813c
0bcbf013 lea edi, [rdi+rdi*2]
0bcbf016 shl edi, 0x03
0bcbf019 add edi, [r11+0x14]
0bcbf01d cmp dword [rdi+0xc], -0x05
0bcbf021 jnz 0x0bcbf030
0bcbf023 cmp dword [rdi+0x8], 0x40eb5fb0
0bcbf02a jz 0x0bcb0064 ->21
0bcbf030 mov edi, [rdi+0x10]
0bcbf033 test edi, edi
0bcbf035 jnz 0x0bcbf01d
0bcbf037 mov rdi, 0xfffffffb40eb5fb0
0bcbf041 cmp rdi, [r12+0x5a8]
0bcbf049 jnz 0x0bcb0064 ->21
0bcbf04f cmp dword [r12+0x5a4], -0x09
0bcbf058 jnz 0x0bcb0064 ->21
0bcbf05e cmp dword [r12+0x5a0], 0x40eb5f18
0bcbf06a jnz 0x0bcb0064 ->21
0bcbf070 cmp dword [r12+0x48], 0x40eb5d88
0bcbf079 jnz 0x0bcb0064 ->21
0bcbf07f cmp dword [r13+0x18], +0x01
0bcbf084 jbe 0x0bcb0064 ->21
0bcbf08a mov r12d, [r13+0x8]
0bcbf08e cmp dword [r12+0xc], -0x05
0bcbf094 jnz 0x0bcb0064 ->21
0bcbf09a mov ecx, [r12+0x8]
0bcbf09f mov [rsp+0x10], ecx
0bcbf0a3 cmp dword [r12+0x8], 0x40eb58f8
0bcbf0ac jnz 0x0bcb0068 ->22
0bcbf0b2 mov edi, [0x40ece2e0]
0bcbf0b9 mov [rsp+0x64], edi
0bcbf0bd cmp dword [rdi+0x4], 0xfffeffff
0bcbf0c4 jnb 0x0bcb006c ->23
0bcbf0ca movsd xmm7, [rdi]
0bcbf0ce addsd xmm7, [0x41bafd78]
0bcbf0d7 movsd [rsp+0x58], xmm7
0bcbf0dd movsd [rdi], xmm7
0bcbf0e1 mov edi, 0x40eb3414
0bcbf0e6 mov esi, [rdi+0x8]
0bcbf0e9 mov [rdi], esi
0bcbf0eb mov esi, 0x4c
0bcbf0f0 call 0x00421b60 ->lj_buf_putchar
0bcbf0f5 mov edi, eax
0bcbf0f7 lea rsi, [rsp+0x58]
0bcbf0fc call 0x0040a3c0 ->lj_strfmt_putnum
0bcbf101 mov edi, eax
0bcbf103 call 0x00421ff0 ->lj_buf_tostr
0bcbf108 mov [rsp+0x68], eax
0bcbf10c mov edi, [0x40eb34b0]
0bcbf113 mov esi, 0x41f902b8
0bcbf118 call 0x004223c0 ->lj_tab_dup
0bcbf11d mov [rsp+0xc], eax
0bcbf121 mov edi, [0x40eb34b0]
0bcbf128 xor esi, esi
0bcbf12a call 0x00422350 ->lj_tab_new1
0bcbf12f mov esi, eax
0bcbf131 mov edi, [0x40eb34b0]
0bcbf138 mov ecx, [rsp+0xc]
0bcbf13c mov eax, [rsp+0x68]
0bcbf140 mov r12d, [rcx+0x14]
0bcbf144 mov dword [r12+0x34], 0xfffffff4
0bcbf14d mov [r12+0x30], esi
0bcbf152 mov dword [r12+0x4c], 0xfffffffb
0bcbf15b mov [r12+0x48], eax
0bcbf160 mov r12d, [0x40ed06a0]
0bcbf168 cmp dword [r12+0x4], -0x0c
0bcbf16e jnz 0x0bcb0074 ->25
0bcbf174 mov r12d, [r12]
0bcbf178 cmp dword [r12+0x1c], +0x01
0bcbf17e jnz 0x0bcb0074 ->25
0bcbf184 mov esi, [r12+0x14]
0bcbf189 mov rdx, 0xfffffffb41f8f530
0bcbf193 cmp rdx, [rsi+0x8]
0bcbf197 jnz 0x0bcb0074 ->25
0bcbf19d cmp dword [rsi+0x4], -0x0c
0bcbf1a1 jnz 0x0bcb0074 ->25
0bcbf1a7 mov esi, [rsi]
0bcbf1a9 mov [rsp+0x60], esi
0bcbf1ad mov edx, [rsi+0x1c]
0bcbf1b0 and edx, [rax+0x8]
0bcbf1b3 lea edx, [rdx+rdx*2]
0bcbf1b6 shl edx, 0x03
0bcbf1b9 add edx, [rsi+0x14]
0bcbf1bc cmp dword [rdx+0xc], -0x05
0bcbf1c0 jnz 0x0bcbf1cb
0bcbf1c2 cmp eax, [rdx+0x8]
0bcbf1c5 jz 0x0bcb0074 ->25
0bcbf1cb mov edx, [rdx+0x10]
0bcbf1ce test edx, edx
0bcbf1d0 jnz 0x0bcbf1bc
0bcbf1d2 cmp dword [rsi+0x10], +0x00
0bcbf1d6 jnz 0x0bcb0074 ->25
0bcbf1dc mov edx, 0x40eb3448
0bcbf1e1 mov dword [rdx+0x4], 0xfffffffb
0bcbf1e8 mov [rdx], eax
0bcbf1ea call 0x00422cf0 ->lj_tab_newkey
0bcbf1ef mov edi, [rsp+0x64]
0bcbf1f3 mov esi, [rsp+0x60]
0bcbf1f7 mov ecx, [rsp+0xc]
0bcbf1fb movsd xmm7, [rsp+0x58]
0bcbf201 mov dword [rax+0x4], 0xfffffff4
0bcbf208 mov [rax], ecx
0bcbf20a test byte [rsi+0x4], 0x4
0bcbf20e jz 0x0bcbf225
0bcbf210 and byte [rsi+0x4], 0xfb
0bcbf214 mov edx, [0x40eb33f4]
0bcbf21b mov [0x40eb33f4], esi
0bcbf222 mov [rsi+0xc], edx
0bcbf225 mov byte [rsi+0x6], 0x0
0bcbf229 addsd xmm7, [0x41bafd78]
0bcbf232 movsd [rsp+0x50], xmm7
0bcbf238 movsd [rdi], xmm7
0bcbf23c mov edi, 0x40eb3414
0bcbf241 mov esi, [rdi+0x8]
0bcbf244 mov [rdi], esi
0bcbf246 mov esi, 0x4c
0bcbf24b call 0x00421b60 ->lj_buf_putchar
0bcbf250 mov edi, eax
0bcbf252 lea rsi, [rsp+0x50]
0bcbf257 call 0x0040a3c0 ->lj_strfmt_putnum
0bcbf25c mov edi, eax
0bcbf25e call 0x00421ff0 ->lj_buf_tostr
0bcbf263 mov [rsp+0x4c], eax
0bcbf267 mov edi, [0x40eb34b0]
0bcbf26e mov esi, 0x41f902b8
0bcbf273 call 0x004223c0 ->lj_tab_dup
0bcbf278 mov [rsp+0x28], eax
0bcbf27c mov edi, [0x40eb34b0]
0bcbf283 xor esi, esi
0bcbf285 call 0x00422350 ->lj_tab_new1
0bcbf28a mov esi, eax
0bcbf28c mov edi, [0x40eb34b0]
0bcbf293 mov ecx, [rsp+0x28]
0bcbf297 mov eax, [rsp+0x4c]
0bcbf29b mov r8d, [rcx+0x14]
0bcbf29f mov [rsp+0x1c], r8d
0bcbf2a4 mov dword [r8+0x34], 0xfffffff4
0bcbf2ac mov [r8+0x30], esi
0bcbf2b0 mov dword [r8+0x4c], 0xfffffffb
0bcbf2b8 mov [r8+0x48], eax
0bcbf2bc cmp dword [r12+0x1c], +0x01
0bcbf2c2 jnz 0x0bcb007c ->27
0bcbf2c8 mov r12d, [r12+0x14]
0bcbf2cd mov rsi, 0xfffffffb41f8f530
0bcbf2d7 cmp rsi, [r12+0x8]
0bcbf2dc jnz 0x0bcb007c ->27
0bcbf2e2 cmp dword [r12+0x4], -0x0c
0bcbf2e8 jnz 0x0bcb007c ->27
0bcbf2ee mov r12d, [r12]
0bcbf2f2 mov esi, [r12+0x1c]
0bcbf2f7 and esi, [rax+0x8]
0bcbf2fa lea esi, [rsi+rsi*2]
0bcbf2fd shl esi, 0x03
0bcbf300 add esi, [r12+0x14]
0bcbf305 cmp dword [rsi+0xc], -0x05
0bcbf309 jnz 0x0bcbf314
0bcbf30b cmp eax, [rsi+0x8]
0bcbf30e jz 0x0bcb007c ->27
0bcbf314 mov esi, [rsi+0x10]
0bcbf317 test esi, esi
0bcbf319 jnz 0x0bcbf305
0bcbf31b cmp dword [r12+0x10], +0x00
0bcbf321 jnz 0x0bcb007c ->27
0bcbf327 mov edx, 0x40eb3448
0bcbf32c mov dword [rdx+0x4], 0xfffffffb
0bcbf333 mov [rdx], eax
0bcbf335 mov esi, r12d
0bcbf338 call 0x00422cf0 ->lj_tab_newkey
0bcbf33d mov r11d, [rsp+0x48]
0bcbf342 mov edi, [0x40eb34b0]
0bcbf349 mov esi, [rsp+0x3c]
0bcbf34d mov edx, [rsp+0x40]
0bcbf351 mov ecx, [rsp+0x28]
0bcbf355 mov dword [rax+0x4], 0xfffffff4
0bcbf35c mov [rax], ecx
0bcbf35e test byte [r12+0x4], 0x4
0bcbf364 jz 0x0bcbf380
0bcbf366 and byte [r12+0x4], 0xfb
0bcbf36c mov ecx, [0x40eb33f4]
0bcbf373 mov [0x40eb33f4], r12d
0bcbf37b mov [r12+0xc], ecx
0bcbf380 mov byte [r12+0x6], 0x0
0bcbf386 cmp dword [r13+0x18], +0x02
0bcbf38b jbe 0x0bcb0080 ->28
0bcbf391 mov r12d, [r13+0x8]
0bcbf395 cmp dword [r12+0x14], -0x0c
0bcbf39b jnz 0x0bcb0080 ->28
0bcbf3a1 mov r12d, [r12+0x10]
0bcbf3a6 mov ecx, [r11+0x1c]
0bcbf3aa and ecx, 0xce2b6183
0bcbf3b0 lea ecx, [rcx+rcx*2]
0bcbf3b3 shl ecx, 0x03
0bcbf3b6 add ecx, [r11+0x14]
0bcbf3ba cmp dword [rcx+0xc], -0x05
0bcbf3be jnz 0x0bcbf3cd
0bcbf3c0 cmp dword [rcx+0x8], 0x40eb5db0
0bcbf3c7 jz 0x0bcb0080 ->28
0bcbf3cd mov ecx, [rcx+0x10]
0bcbf3d0 test ecx, ecx
0bcbf3d2 jnz 0x0bcbf3ba
0bcbf3d4 cmp dword [rsi+0x1c], +0x01
0bcbf3d8 jnz 0x0bcb0080 ->28
0bcbf3de mov esi, [rsi+0x14]
0bcbf3e1 mov rcx, 0xfffffffb40eb54c8
0bcbf3eb cmp rcx, [rsi+0x20]
0bcbf3ef jnz 0x0bcb0080 ->28
0bcbf3f5 cmp dword [rsi+0x1c], -0x0c
0bcbf3f9 jnz 0x0bcb0080 ->28
0bcbf3ff mov esi, [rsi+0x18]
0bcbf402 cmp dword [rsi+0x1c], +0x3f
0bcbf406 jnz 0x0bcb0080 ->28
0bcbf40c mov esi, [rsi+0x14]
0bcbf40f mov rcx, 0xfffffffb40eb5db0
0bcbf419 cmp rcx, [rsi+0x50]
0bcbf41d jnz 0x0bcb0080 ->28
0bcbf423 cmp dword [rsi+0x4c], -0x09
0bcbf427 jnz 0x0bcb0080 ->28
0bcbf42d mov ecx, [r11+0x1c]
0bcbf431 and ecx, 0x798a813c
0bcbf437 lea ecx, [rcx+rcx*2]
0bcbf43a shl ecx, 0x03
0bcbf43d add ecx, [r11+0x14]
0bcbf441 cmp dword [rcx+0xc], -0x05
0bcbf445 jnz 0x0bcbf454
0bcbf447 cmp dword [rcx+0x8], 0x40eb5fb0
0bcbf44e jz 0x0bcb0080 ->28
0bcbf454 mov ecx, [rcx+0x10]
0bcbf457 test ecx, ecx
0bcbf459 jnz 0x0bcbf441
0bcbf45b mov rcx, 0xfffffffb40eb5fb0
0bcbf465 cmp rcx, [rsi+0x5a8]
0bcbf46c jnz 0x0bcb0080 ->28
0bcbf472 cmp dword [rsi+0x5a4], -0x09
0bcbf479 jnz 0x0bcb0080 ->28
0bcbf47f cmp dword [rsi+0x5a0], 0x40eb5f18
0bcbf489 jnz 0x0bcb0080 ->28
0bcbf48f cmp dword [rsi+0x48], 0x40eb5d88
0bcbf496 jnz 0x0bcb0080 ->28
0bcbf49c cmp dword [r12+0x18], +0x01
0bcbf4a2 jbe 0x0bcb0080 ->28
0bcbf4a8 mov esi, [r12+0x8]
0bcbf4ad cmp dword [rsi+0xc], -0x05
0bcbf4b1 jnz 0x0bcb0080 ->28
0bcbf4b7 mov ecx, [rsi+0x8]
0bcbf4ba mov [rsp+0x38], ecx
0bcbf4be cmp ecx, 0x40eb58f8
0bcbf4c4 jz 0x0bcb0084 ->29
0bcbf4ca cmp ecx, 0x41f91978
0bcbf4d0 jz 0x0bcb0088 ->30
0bcbf4d6 cmp ecx, 0x40eb5a18
0bcbf4dc jz 0x0bcb008c ->31
0bcbf4e2 cmp ecx, 0x40eb5870
0bcbf4e8 jz 0x0bcb009d ->32
0bcbf4ee cmp ecx, 0x40eb8cb0
0bcbf4f4 jz 0x0bcb00a1 ->33
0bcbf4fa cmp ecx, 0x41f91a50
0bcbf500 jz 0x0bcb00a5 ->34
0bcbf506 mov esi, [rdx+0x1c]
0bcbf509 and esi, [rcx+0x8]
0bcbf50c lea esi, [rsi+rsi*2]
0bcbf50f shl esi, 0x03
0bcbf512 add esi, [rdx+0x14]
0bcbf515 cmp dword [rsi+0xc], -0x05
0bcbf519 jnz 0x0bcbf520
0bcbf51b cmp ecx, [rsi+0x8]
0bcbf51e jz 0x0bcbf52c
0bcbf520 mov esi, [rsi+0x10]
0bcbf523 test esi, esi
0bcbf525 jnz 0x0bcbf515
0bcbf527 mov esi, 0x40eb3458
0bcbf52c cmp dword [rsi+0x4], -0x03
0bcbf530 jnz 0x0bcb00a9 ->35
0bcbf536 mov esi, 0x41f91468
0bcbf53b call 0x004223c0 ->lj_tab_dup
0bcbf540 mov r10d, eax
0bcbf543 mov [rsp+0x44], r10d
0bcbf548 mov edi, [0x40eb34b0]
0bcbf54f mov esi, [rsp+0x14]
0bcbf553 mov ecx, [rsp+0xc]
0bcbf557 mov eax, [rsp+0x4c]
0bcbf55b mov edx, [r10+0x8]
0bcbf55f mov dword [rdx+0x14], 0xfffffff4
0bcbf566 mov [rdx+0x10], r12d
0bcbf56a cmp dword [rcx+0x1c], +0x03
0bcbf56e jnz 0x0bcb00ad ->36
0bcbf574 mov ecx, [rcx+0x14]
0bcbf577 mov [rsp+0x2c], ecx
0bcbf57b mov r11, 0xfffffffb41f8f5d0
0bcbf585 cmp r11, [rcx+0x50]
0bcbf589 jnz 0x0bcb00ad ->36
0bcbf58f cmp dword [rcx+0x4c], -0x05
0bcbf593 jnz 0x0bcb00ad ->36
0bcbf599 mov ecx, [rcx+0x48]
0bcbf59c mov dword [rdx+0x1c], 0xfffffffb
0bcbf5a3 mov [rdx+0x18], ecx
0bcbf5a6 mov dword [rdx+0x24], 0xfffffffb
0bcbf5ad mov [rdx+0x20], eax
0bcbf5b0 mov edx, [rsi+0x1c]
0bcbf5b3 and edx, 0x2a54dc55
0bcbf5b9 lea edx, [rdx+rdx*2]
0bcbf5bc shl edx, 0x03
0bcbf5bf add edx, [rsi+0x14]
0bcbf5c2 cmp dword [rdx+0xc], -0x05
0bcbf5c6 jnz 0x0bcbf5d5
0bcbf5c8 cmp dword [rdx+0x8], 0x41f8fd38
0bcbf5cf jz 0x0bcb00b1 ->37
0bcbf5d5 mov edx, [rdx+0x10]
0bcbf5d8 test edx, edx
0bcbf5da jnz 0x0bcbf5c2
0bcbf5dc cmp dword [rsi+0x10], +0x00
0bcbf5e0 jnz 0x0bcb00b1 ->37
0bcbf5e6 mov edx, 0x40eb3448
0bcbf5eb mov dword [rdx+0x4], 0xfffffffb
0bcbf5f2 mov dword [rdx], 0x41f8fd38
0bcbf5f8 call 0x00422cf0 ->lj_tab_newkey
0bcbf5fd mov r9d, eax
0bcbf600 mov r11d, [rsp+0x48]
0bcbf605 mov r10d, [rsp+0x44]
0bcbf60a mov edi, [0x40eb34b0]
0bcbf611 mov esi, [rsp+0x40]
0bcbf615 mov edx, [rsp+0x3c]
0bcbf619 mov eax, [rsp+0x14]
0bcbf61d mov dword [r9+0x4], 0xfffffff4
0bcbf625 mov [r9], r10d
0bcbf628 test byte [rax+0x4], 0x4
0bcbf62c jz 0x0bcbf645
0bcbf62e and byte [rax+0x4], 0xfb
0bcbf632 mov r10d, [0x40eb33f4]
0bcbf63a mov [0x40eb33f4], eax
0bcbf641 mov [rax+0xc], r10d
0bcbf645 cmp dword [r13+0x18], +0x04
0bcbf64a jbe 0x0bcb00b5 ->38
0bcbf650 mov r13d, [r13+0x8]
0bcbf654 mov [rsp+0x30], r13d
0bcbf659 cmp dword [r13+0x1c], -0x0c
0bcbf65e jnz 0x0bcb00b5 ->38
0bcbf664 mov r13d, [r13+0x18]
0bcbf668 mov eax, [r11+0x1c]
0bcbf66c and eax, 0xce2b6183
0bcbf672 lea eax, [rax+rax*2]
0bcbf675 shl eax, 0x03
0bcbf678 add eax, [r11+0x14]
0bcbf67c cmp dword [rax+0xc], -0x05
0bcbf680 jnz 0x0bcbf68f
0bcbf682 cmp dword [rax+0x8], 0x40eb5db0
0bcbf689 jz 0x0bcb00b5 ->38
0bcbf68f mov eax, [rax+0x10]
0bcbf692 test eax, eax
0bcbf694 jnz 0x0bcbf67c
0bcbf696 cmp dword [rdx+0x1c], +0x01
0bcbf69a jnz 0x0bcb00b5 ->38
0bcbf6a0 mov edx, [rdx+0x14]
0bcbf6a3 mov rax, 0xfffffffb40eb54c8
0bcbf6ad cmp rax, [rdx+0x20]
0bcbf6b1 jnz 0x0bcb00b5 ->38
0bcbf6b7 cmp dword [rdx+0x1c], -0x0c
0bcbf6bb jnz 0x0bcb00b5 ->38
0bcbf6c1 mov edx, [rdx+0x18]
0bcbf6c4 cmp dword [rdx+0x1c], +0x3f
0bcbf6c8 jnz 0x0bcb00b5 ->38
0bcbf6ce mov edx, [rdx+0x14]
0bcbf6d1 mov rax, 0xfffffffb40eb5db0
0bcbf6db cmp rax, [rdx+0x50]
0bcbf6df jnz 0x0bcb00b5 ->38
0bcbf6e5 cmp dword [rdx+0x4c], -0x09
0bcbf6e9 jnz 0x0bcb00b5 ->38
0bcbf6ef mov eax, [r11+0x1c]
0bcbf6f3 and eax, 0x798a813c
0bcbf6f9 lea eax, [rax
View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment