Skip to content

Instantly share code, notes, and snippets.

@p0pr0ck5
Created May 23, 2017 16:34
Show Gist options
  • Save p0pr0ck5/abec548d3cb56710a58bb44f000264b5 to your computer and use it in GitHub Desktop.
Save p0pr0ck5/abec548d3cb56710a58bb44f000264b5 to your computer and use it in GitHub Desktop.
$ luajit ./t.lua > /dev/null
---- TRACE 1 start t.lua:10
0014 GGET 7 5 ; "math"
0015 TGETS 7 7 6 ; "random"
0016 KSHORT 8 1
0017 KSHORT 9 10
0018 CALL 7 2 3
0000 . FUNCC ; math.random
0019 ISGE 0 7
0020 JMP 7 => 0024
0021 MOV 7 1
0022 KSTR 8 7 ; "foo"
0023 CALL 7 1 2
0000 . FUNCF 4 ; t.lua:3
0001 . GGET 1 0 ; "io"
0002 . TGETS 1 1 1 ; "stdout"
0003 . MOV 2 1
0004 . TGETS 1 1 2 ; "write"
0005 . MOV 3 0
0006 . CALL 1 1 3
0000 . . FUNCC ; io.method.write
0007 . RET0 0 1
0024 FORL 3 => 0014
---- TRACE 1 IR
0001 int SLOAD #4 CI
0002 fun SLOAD #0 R
0003 tab FLOAD 0002 func.env
0004 int FLOAD 0003 tab.hmask
0005 > int EQ 0004 +63
0006 p32 FLOAD 0003 tab.node
0007 > p32 HREFK 0006 "math" @54
0008 > tab HLOAD 0007
0009 int FLOAD 0008 tab.hmask
0010 > int EQ 0009 +31
0011 p32 FLOAD 0008 tab.node
0012 > p32 HREFK 0011 "random" @8
0013 > fun HLOAD 0012
0014 > fun EQ 0013 math.random
0015 num CALLS lj_math_random_step ([0x409a9dc0])
0016 num SUB 0015 +1
0017 num MUL 0016 +10
0018 num FPMATH 0017 floor
0019 num ADD 0018 +1
0020 > num SLOAD #1 T
0021 > num LT 0020 0019
0022 > fun SLOAD #2 T
0023 > fun EQ 0022 t.lua:3
0024 tab FLOAD t.lua:3 func.env
0025 int FLOAD 0024 tab.hmask
0026 > int EQ 0025 +63
0027 p32 FLOAD 0024 tab.node
0028 > p32 HREFK 0027 "io" @9
0029 > tab HLOAD 0028
0030 int FLOAD 0029 tab.hmask
0031 > int EQ 0030 +15
0032 p32 FLOAD 0029 tab.node
0033 > p32 HREFK 0032 "stdout" @14
0034 > udt HLOAD 0033
0035 u8 FLOAD 0034 udata.udtype
0036 > int EQ 0035 +1
0037 int FLOAD {0x409a88b8} tab.hmask
0038 > int EQ 0037 +15
0039 p32 FLOAD {0x409a88b8} tab.node
0040 > p32 HREFK 0039 "write" @2
0041 > fun HLOAD 0040
0042 > fun EQ 0041 io.method.write
0043 p64 FLOAD 0034 udata.file
0044 > p64 NE 0043 [NULL]
0048 int CALLS fwrite ([0x409abeb0] +1 +3 0043)
0049 + int ADD 0001 +1
0050 > int LE 0049 +10000
0051 ------ LOOP ------------
0052 num CALLS lj_math_random_step ([0x409a9dc0])
0053 num SUB 0052 +1
0054 num MUL 0053 +10
0055 num FPMATH 0054 floor
0056 num ADD 0055 +1
0057 > num GT 0056 0020
0058 int CALLS fwrite ([0x409abeb0] +1 +3 0043)
0059 + int ADD 0049 +1
0060 > int LE 0059 +10000
0061 int PHI 0049 0059
---- TRACE 1 mcode 619
0bcbfd8e add rsp, -0x10
0bcbfd92 mov dword [0x409a4410], 0x1
0bcbfd9d cvttsd2si ebp, [rdx+0x18]
0bcbfda2 mov eax, [rdx-0x8]
0bcbfda5 mov eax, [rax+0x8]
0bcbfda8 cmp dword [rax+0x1c], +0x3f
0bcbfdac jnz 0x0bcb0010 ->0
0bcbfdb2 mov eax, [rax+0x14]
0bcbfdb5 mov rdi, 0xfffffffb409a9d88
0bcbfdbf cmp rdi, [rax+0x518]
0bcbfdc6 jnz 0x0bcb0010 ->0
0bcbfdcc cmp dword [rax+0x514], -0x0c
0bcbfdd3 jnz 0x0bcb0010 ->0
0bcbfdd9 mov eax, [rax+0x510]
0bcbfddf cmp dword [rax+0x1c], +0x1f
0bcbfde3 jnz 0x0bcb0010 ->0
0bcbfde9 mov eax, [rax+0x14]
0bcbfdec mov rdi, 0xfffffffb409aa990
0bcbfdf6 cmp rdi, [rax+0xc8]
0bcbfdfd jnz 0x0bcb0010 ->0
0bcbfe03 cmp dword [rax+0xc4], -0x09
0bcbfe0a jnz 0x0bcb0010 ->0
0bcbfe10 cmp dword [rax+0xc0], 0x409aa960
0bcbfe1a jnz 0x0bcb0010 ->0
0bcbfe20 mov edi, 0x409a9dc0
0bcbfe25 call 0x0044d750 ->lj_math_random_step
0bcbfe2a movq xmm0, rax
0bcbfe2f mov edx, [0x409a44b4]
0bcbfe36 subsd xmm0, [0x409be328]
0bcbfe3f mulsd xmm0, [0x409be330]
0bcbfe48 roundsd xmm0, xmm0, 0x09
0bcbfe4e addsd xmm0, [0x409be328]
0bcbfe57 cmp dword [rdx+0x4], 0xfffeffff
0bcbfe5e jnb 0x0bcb0014 ->1
0bcbfe64 movsd xmm7, [rdx]
0bcbfe68 movsd [rsp+0x10], xmm7
0bcbfe6e ucomisd xmm0, [rdx]
0bcbfe72 jbe 0x0bcb0018 ->2
0bcbfe78 cmp dword [rdx+0xc], -0x09
0bcbfe7c jnz 0x0bcb001c ->3
0bcbfe82 cmp dword [rdx+0x8], 0x409abf08
0bcbfe89 jnz 0x0bcb001c ->3
0bcbfe8f mov eax, [0x409abf10]
0bcbfe96 cmp dword [rax+0x1c], +0x3f
0bcbfe9a jnz 0x0bcb001c ->3
0bcbfea0 mov r15d, [rax+0x14]
0bcbfea4 mov rdi, 0xfffffffb409a8898
0bcbfeae cmp rdi, [r15+0xe0]
0bcbfeb5 jnz 0x0bcb001c ->3
0bcbfebb cmp dword [r15+0xdc], -0x0c
0bcbfec3 jnz 0x0bcb001c ->3
0bcbfec9 mov r14d, [r15+0xd8]
0bcbfed0 cmp dword [r14+0x1c], +0x0f
0bcbfed5 jnz 0x0bcb001c ->3
0bcbfedb mov r13d, [r14+0x14]
0bcbfedf mov rdi, 0xfffffffb409a9158
0bcbfee9 cmp rdi, [r13+0x158]
0bcbfef0 jnz 0x0bcb001c ->3
0bcbfef6 cmp dword [r13+0x154], -0x0d
0bcbfefe jnz 0x0bcb001c ->3
0bcbff04 mov ebx, [r13+0x150]
0bcbff0b cmp byte [rbx+0x6], 0x1
0bcbff0f jnz 0x0bcb001c ->3
0bcbff15 cmp dword [0x409a88d4], +0x0f
0bcbff1d jnz 0x0bcb001c ->3
0bcbff23 mov r12d, [0x409a88cc]
0bcbff2b mov rdi, 0xfffffffb409a8b20
0bcbff35 cmp rdi, [r12+0x38]
0bcbff3a jnz 0x0bcb001c ->3
0bcbff40 cmp dword [r12+0x34], -0x09
0bcbff46 jnz 0x0bcb001c ->3
0bcbff4c cmp dword [r12+0x30], 0x409a8af8
0bcbff55 jnz 0x0bcb001c ->3
0bcbff5b mov rcx, [rbx+0x18]
0bcbff5f mov [rsp+0x8], rcx
0bcbff64 test rcx, rcx
0bcbff67 jz 0x0bcb001c ->3
0bcbff6d mov edx, 0x3
0bcbff72 mov esi, 0x1
0bcbff77 mov edi, 0x409abeb0
0bcbff7c call 0x00403b00 ->fwrite
0bcbff81 add ebp, +0x01
0bcbff84 cmp ebp, 0x2710
0bcbff8a jg 0x0bcb0020 ->4
->LOOP:
0bcbff90 movsd xmm0, [rsp+0x10]
0bcbff96 mov edi, 0x409a9dc0
0bcbff9b call 0x0044d750 ->lj_math_random_step
0bcbffa0 movq xmm7, rax
0bcbffa5 mov rcx, [rsp+0x8]
0bcbffaa subsd xmm7, [0x409be328]
0bcbffb3 mulsd xmm7, [0x409be330]
0bcbffbc roundsd xmm7, xmm7, 0x09
0bcbffc2 addsd xmm7, [0x409be328]
0bcbffcb ucomisd xmm7, xmm0
0bcbffcf jbe 0x0bcb0028 ->6
0bcbffd5 mov edx, 0x3
0bcbffda mov esi, 0x1
0bcbffdf mov edi, 0x409abeb0
0bcbffe4 call 0x00403b00 ->fwrite
0bcbffe9 add ebp, +0x01
0bcbffec cmp ebp, 0x2710
0bcbfff2 jle 0x0bcbff90 ->LOOP
0bcbfff4 jmp 0x0bcb002c ->7
---- TRACE 1 stop -> loop
---- TRACE 2 start 1/6 t.lua:10
0024 JFORL 3 1
---- TRACE 2 IR
0001 int SLOAD #4 PI
0002 int ADD 0001 +1
0003 > int LE 0002 +10000
0004 num CONV 0002 num.int
---- TRACE 2 mcode 59
0bcbfd50 mov dword [0x409a4410], 0x2
0bcbfd5b mov edx, [0x409a44b4]
0bcbfd62 add ebp, +0x01
0bcbfd65 cmp ebp, 0x2710
0bcbfd6b jg 0x0bcb0014 ->1
0bcbfd71 xorps xmm7, xmm7
0bcbfd74 cvtsi2sd xmm7, ebp
0bcbfd78 movsd [rdx+0x30], xmm7
0bcbfd7d movsd [rdx+0x18], xmm7
0bcbfd82 add rsp, +0x10
0bcbfd86 jmp 0x0bcbfd8e
---- TRACE 2 stop -> 1
---- TRACE 3 start 1/2 t.lua:10
0024 JFORL 3 1
---- TRACE 3 IR
0001 int SLOAD #4 PI
0002 int ADD 0001 +1
0003 > int LE 0002 +10000
0004 num CONV 0002 num.int
---- TRACE 3 mcode 59
0bcbfd12 mov dword [0x409a4410], 0x3
0bcbfd1d mov edx, [0x409a44b4]
0bcbfd24 add ebp, +0x01
0bcbfd27 cmp ebp, 0x2710
0bcbfd2d jg 0x0bcb0014 ->1
0bcbfd33 xorps xmm7, xmm7
0bcbfd36 cvtsi2sd xmm7, ebp
0bcbfd3a movsd [rdx+0x30], xmm7
0bcbfd3f movsd [rdx+0x18], xmm7
0bcbfd44 add rsp, +0x10
0bcbfd48 jmp 0x0bcbfd8e
---- TRACE 3 stop -> 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment