Skip to content

Instantly share code, notes, and snippets.

@LeadroyaL
Created October 13, 2019 15:44
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save LeadroyaL/4e068787e075e9ff030c4937f5c113bd to your computer and use it in GitHub Desktop.
Save LeadroyaL/4e068787e075e9ff030c4937f5c113bd to your computer and use it in GitHub Desktop.
从汇编语句生成CFG:以balsnctf2019 Hack Compiler为例
# coding:utf-8
from graphviz import Digraph
# 先加载asm文件,按照列表的方式去存
fd = open("main.asm")
lines = [l.strip('\n') for l in fd.readlines()]
fd.close()
# 遍历label,找到label对应的addr(应该是第一个label的addr)
label_addrs = dict()
for i in range(len(lines)):
a = lines[i]
if a[0] == '(' and a[-1] == ')':
j = i - 1
while True:
if lines[j][0] == '(' and lines[j][-1] == ')':
j -= 1
continue
label_addrs[a.strip("()")] = j + 1
break
# 按顺序遍历汇编,以 branch 语句作为BB的结束,以 branch 语句的目的地作为BB的开始
# sps存放各个BB的开头地址
sps = set()
sps.add(0)
sps.add(len(lines))
for i in range(len(lines) - 1):
a, b = lines[i], lines[i + 1]
if "JMP" in b or "JLT" in b or "JEQ" in b or "JGT" in b or "JLE" in b or "JNE" in b or "JGE" in b:
if "@" in a:
# 找到label对应的addr
print "Branch at", b, "to", a, label_addrs[a.strip('@')]
# 检查是不是最后一个指令
if i + 2 < len(lines):
sps.add(i + 2)
sps.add(label_addrs[a.strip('@')])
else:
print "Indirect Branch:", a, b
sps = list(sps)
sps.sort()
print sps
bbs = []
for i in range(len(sps) - 1):
a, b = sps[i], sps[i + 1]
bbs.append((a, b))
# 使用API,按地址从小到大顺序创建各个BB
dot = Digraph(comment='The Round Table')
for start, end in bbs:
dot.node('Node%d' % start, 'Some data %d~%d' % (start, end), shape='box')
# 创建连接关系:如果末尾是普通语句,就连接到下一个,如果末尾是跳转语句,就连接到跳转的位置
for start, end in bbs:
bb = lines[start:end]
a, b = bb[-2], bb[-1]
if "JMP" in b and '@' in a:
nextBB = label_addrs[a.strip('@')]
dot.edge('Node%d' % start, 'Node%d' % nextBB)
elif ("JLT" in b or "JEQ" in b or "JGT" in b or "JLE" in b or "JNE" in b or "JGE" in b) and '@' in a:
nextBB = label_addrs[a.strip('@')]
dot.edge('Node%d' % start, 'Node%d' % nextBB)
dot.edge('Node%d' % start, 'Node%d' % end)
else:
dot.edge('Node%d' % start, 'Node%d' % end)
print dot.source
dot.view() # 后面这句就注释了,也可以使用这个命令查看效果
// The Round Table
digraph {
Node0 [label="Some data 0~4087" shape=box]
Node4087 [label="Some data 4087~4101" shape=box]
Node4101 [label="Some data 4101~4115" shape=box]
Node4115 [label="Some data 4115~4118" shape=box]
Node4118 [label="Some data 4118~4150" shape=box]
Node4150 [label="Some data 4150~4173" shape=box]
Node4173 [label="Some data 4173~4196" shape=box]
Node4196 [label="Some data 4196~4206" shape=box]
Node4206 [label="Some data 4206~4245" shape=box]
Node4245 [label="Some data 4245~4250" shape=box]
Node4250 [label="Some data 4250~4285" shape=box]
Node4285 [label="Some data 4285~4294" shape=box]
Node4294 [label="Some data 4294~4615" shape=box]
Node4615 [label="Some data 4615~4634" shape=box]
Node4634 [label="Some data 4634~4642" shape=box]
Node4642 [label="Some data 4642~4656" shape=box]
Node4656 [label="Some data 4656~4673" shape=box]
Node4673 [label="Some data 4673~4695" shape=box]
Node4695 [label="Some data 4695~4705" shape=box]
Node4705 [label="Some data 4705~4729" shape=box]
Node4729 [label="Some data 4729~4783" shape=box]
Node4783 [label="Some data 4783~4802" shape=box]
Node4802 [label="Some data 4802~4816" shape=box]
Node4816 [label="Some data 4816~4830" shape=box]
Node4830 [label="Some data 4830~4833" shape=box]
Node4833 [label="Some data 4833~4836" shape=box]
Node4836 [label="Some data 4836~4853" shape=box]
Node4853 [label="Some data 4853~4877" shape=box]
Node4877 [label="Some data 4877~4891" shape=box]
Node4891 [label="Some data 4891~4903" shape=box]
Node4903 [label="Some data 4903~4922" shape=box]
Node4922 [label="Some data 4922~4936" shape=box]
Node4936 [label="Some data 4936~4948" shape=box]
Node4948 [label="Some data 4948~4967" shape=box]
Node4967 [label="Some data 4967~5005" shape=box]
Node5005 [label="Some data 5005~5011" shape=box]
Node5011 [label="Some data 5011~5048" shape=box]
Node5048 [label="Some data 5048~5059" shape=box]
Node5059 [label="Some data 5059~5063" shape=box]
Node5063 [label="Some data 5063~5078" shape=box]
Node5078 [label="Some data 5078~5090" shape=box]
Node5090 [label="Some data 5090~5100" shape=box]
Node5100 [label="Some data 5100~5124" shape=box]
Node5124 [label="Some data 5124~5141" shape=box]
Node5141 [label="Some data 5141~5191" shape=box]
Node5191 [label="Some data 5191~5200" shape=box]
Node5200 [label="Some data 5200~5204" shape=box]
Node5204 [label="Some data 5204~5233" shape=box]
Node5233 [label="Some data 5233~5246" shape=box]
Node5246 [label="Some data 5246~5255" shape=box]
Node5255 [label="Some data 5255~5270" shape=box]
Node5270 [label="Some data 5270~5283" shape=box]
Node5283 [label="Some data 5283~5300" shape=box]
Node5300 [label="Some data 5300~5324" shape=box]
Node5324 [label="Some data 5324~5335" shape=box]
Node5335 [label="Some data 5335~5406" shape=box]
Node5406 [label="Some data 5406~5415" shape=box]
Node5415 [label="Some data 5415~5764" shape=box]
Node5764 [label="Some data 5764~5773" shape=box]
Node5773 [label="Some data 5773~6046" shape=box]
Node6046 [label="Some data 6046~6055" shape=box]
Node6055 [label="Some data 6055~6403" shape=box]
Node6403 [label="Some data 6403~6412" shape=box]
Node6412 [label="Some data 6412~6764" shape=box]
Node6764 [label="Some data 6764~6773" shape=box]
Node6773 [label="Some data 6773~7046" shape=box]
Node7046 [label="Some data 7046~7055" shape=box]
Node7055 [label="Some data 7055~7407" shape=box]
Node7407 [label="Some data 7407~7416" shape=box]
Node7416 [label="Some data 7416~7764" shape=box]
Node7764 [label="Some data 7764~7773" shape=box]
Node7773 [label="Some data 7773~8046" shape=box]
Node8046 [label="Some data 8046~8055" shape=box]
Node8055 [label="Some data 8055~8407" shape=box]
Node8407 [label="Some data 8407~8416" shape=box]
Node8416 [label="Some data 8416~8763" shape=box]
Node8763 [label="Some data 8763~8772" shape=box]
Node8772 [label="Some data 8772~9041" shape=box]
Node9041 [label="Some data 9041~9050" shape=box]
Node9050 [label="Some data 9050~9398" shape=box]
Node9398 [label="Some data 9398~9407" shape=box]
Node9407 [label="Some data 9407~9675" shape=box]
Node9675 [label="Some data 9675~9684" shape=box]
Node9684 [label="Some data 9684~9957" shape=box]
Node9957 [label="Some data 9957~9966" shape=box]
Node9966 [label="Some data 9966~10234" shape=box]
Node10234 [label="Some data 10234~10243" shape=box]
Node10243 [label="Some data 10243~10512" shape=box]
Node10512 [label="Some data 10512~10521" shape=box]
Node10521 [label="Some data 10521~10794" shape=box]
Node10794 [label="Some data 10794~10803" shape=box]
Node10803 [label="Some data 10803~11155" shape=box]
Node11155 [label="Some data 11155~11164" shape=box]
Node11164 [label="Some data 11164~11516" shape=box]
Node11516 [label="Some data 11516~11525" shape=box]
Node11525 [label="Some data 11525~11877" shape=box]
Node11877 [label="Some data 11877~11886" shape=box]
Node11886 [label="Some data 11886~12234" shape=box]
Node12234 [label="Some data 12234~12243" shape=box]
Node12243 [label="Some data 12243~12595" shape=box]
Node12595 [label="Some data 12595~12604" shape=box]
Node12604 [label="Some data 12604~12877" shape=box]
Node12877 [label="Some data 12877~12886" shape=box]
Node12886 [label="Some data 12886~13155" shape=box]
Node13155 [label="Some data 13155~13164" shape=box]
Node13164 [label="Some data 13164~13511" shape=box]
Node13511 [label="Some data 13511~13520" shape=box]
Node13520 [label="Some data 13520~13793" shape=box]
Node13793 [label="Some data 13793~13802" shape=box]
Node13802 [label="Some data 13802~14075" shape=box]
Node14075 [label="Some data 14075~14084" shape=box]
Node14084 [label="Some data 14084~14357" shape=box]
Node14357 [label="Some data 14357~14366" shape=box]
Node14366 [label="Some data 14366~14639" shape=box]
Node14639 [label="Some data 14639~14648" shape=box]
Node14648 [label="Some data 14648~15000" shape=box]
Node15000 [label="Some data 15000~15009" shape=box]
Node15009 [label="Some data 15009~15358" shape=box]
Node15358 [label="Some data 15358~15367" shape=box]
Node15367 [label="Some data 15367~15719" shape=box]
Node15719 [label="Some data 15719~15728" shape=box]
Node15728 [label="Some data 15728~16080" shape=box]
Node16080 [label="Some data 16080~16089" shape=box]
Node16089 [label="Some data 16089~16438" shape=box]
Node16438 [label="Some data 16438~16447" shape=box]
Node16447 [label="Some data 16447~16790" shape=box]
Node16790 [label="Some data 16790~16799" shape=box]
Node16799 [label="Some data 16799~17146" shape=box]
Node17146 [label="Some data 17146~17155" shape=box]
Node17155 [label="Some data 17155~17428" shape=box]
Node17428 [label="Some data 17428~17437" shape=box]
Node17437 [label="Some data 17437~17710" shape=box]
Node17710 [label="Some data 17710~17719" shape=box]
Node17719 [label="Some data 17719~17992" shape=box]
Node17992 [label="Some data 17992~18001" shape=box]
Node18001 [label="Some data 18001~18269" shape=box]
Node18269 [label="Some data 18269~18278" shape=box]
Node18278 [label="Some data 18278~18630" shape=box]
Node18630 [label="Some data 18630~18639" shape=box]
Node18639 [label="Some data 18639~18991" shape=box]
Node18991 [label="Some data 18991~19000" shape=box]
Node19000 [label="Some data 19000~19273" shape=box]
Node19273 [label="Some data 19273~19282" shape=box]
Node19282 [label="Some data 19282~19634" shape=box]
Node19634 [label="Some data 19634~19643" shape=box]
Node19643 [label="Some data 19643~19995" shape=box]
Node19995 [label="Some data 19995~20004" shape=box]
Node20004 [label="Some data 20004~20356" shape=box]
Node20356 [label="Some data 20356~20365" shape=box]
Node20365 [label="Some data 20365~20638" shape=box]
Node20638 [label="Some data 20638~20647" shape=box]
Node20647 [label="Some data 20647~20920" shape=box]
Node20920 [label="Some data 20920~20929" shape=box]
Node20929 [label="Some data 20929~21281" shape=box]
Node21281 [label="Some data 21281~21290" shape=box]
Node21290 [label="Some data 21290~21639" shape=box]
Node21639 [label="Some data 21639~21648" shape=box]
Node21648 [label="Some data 21648~22000" shape=box]
Node22000 [label="Some data 22000~22009" shape=box]
Node22009 [label="Some data 22009~22282" shape=box]
Node22282 [label="Some data 22282~22291" shape=box]
Node22291 [label="Some data 22291~22643" shape=box]
Node22643 [label="Some data 22643~22652" shape=box]
Node22652 [label="Some data 22652~22925" shape=box]
Node22925 [label="Some data 22925~22934" shape=box]
Node22934 [label="Some data 22934~23207" shape=box]
Node23207 [label="Some data 23207~23216" shape=box]
Node23216 [label="Some data 23216~23489" shape=box]
Node23489 [label="Some data 23489~23498" shape=box]
Node23498 [label="Some data 23498~23771" shape=box]
Node23771 [label="Some data 23771~23780" shape=box]
Node23780 [label="Some data 23780~24046" shape=box]
Node24046 [label="Some data 24046~24055" shape=box]
Node24055 [label="Some data 24055~24399" shape=box]
Node24399 [label="Some data 24399~24408" shape=box]
Node24408 [label="Some data 24408~24757" shape=box]
Node24757 [label="Some data 24757~24766" shape=box]
Node24766 [label="Some data 24766~25118" shape=box]
Node25118 [label="Some data 25118~25127" shape=box]
Node25127 [label="Some data 25127~25400" shape=box]
Node25400 [label="Some data 25400~25409" shape=box]
Node25409 [label="Some data 25409~25758" shape=box]
Node25758 [label="Some data 25758~25767" shape=box]
Node25767 [label="Some data 25767~26037" shape=box]
Node26037 [label="Some data 26037~26046" shape=box]
Node26046 [label="Some data 26046~26314" shape=box]
Node26314 [label="Some data 26314~26323" shape=box]
Node26323 [label="Some data 26323~26596" shape=box]
Node26596 [label="Some data 26596~26605" shape=box]
Node26605 [label="Some data 26605~26878" shape=box]
Node26878 [label="Some data 26878~26887" shape=box]
Node26887 [label="Some data 26887~27160" shape=box]
Node27160 [label="Some data 27160~27169" shape=box]
Node27169 [label="Some data 27169~27521" shape=box]
Node27521 [label="Some data 27521~27530" shape=box]
Node27530 [label="Some data 27530~27803" shape=box]
Node27803 [label="Some data 27803~27812" shape=box]
Node27812 [label="Some data 27812~28164" shape=box]
Node28164 [label="Some data 28164~28173" shape=box]
Node28173 [label="Some data 28173~28519" shape=box]
Node28519 [label="Some data 28519~28528" shape=box]
Node28528 [label="Some data 28528~28880" shape=box]
Node28880 [label="Some data 28880~28889" shape=box]
Node28889 [label="Some data 28889~29152" shape=box]
Node29152 [label="Some data 29152~29161" shape=box]
Node29161 [label="Some data 29161~29434" shape=box]
Node29434 [label="Some data 29434~29443" shape=box]
Node29443 [label="Some data 29443~29792" shape=box]
Node29792 [label="Some data 29792~29801" shape=box]
Node29801 [label="Some data 29801~30153" shape=box]
Node30153 [label="Some data 30153~30162" shape=box]
Node30162 [label="Some data 30162~30432" shape=box]
Node30432 [label="Some data 30432~30441" shape=box]
Node30441 [label="Some data 30441~30464" shape=box]
Node30464 [label="Some data 30464~30510" shape=box]
Node30510 [label="Some data 30510~30578" shape=box]
Node30578 [label="Some data 30578~30592" shape=box]
Node30592 [label="Some data 30592~30639" shape=box]
Node30639 [label="Some data 30639~30664" shape=box]
Node30664 [label="Some data 30664~30675" shape=box]
Node30675 [label="Some data 30675~30678" shape=box]
Node30678 [label="Some data 30678~30696" shape=box]
Node30696 [label="Some data 30696~30720" shape=box]
Node30720 [label="Some data 30720~30733" shape=box]
Node30733 [label="Some data 30733~30760" shape=box]
Node30760 [label="Some data 30760~30813" shape=box]
Node30813 [label="Some data 30813~30831" shape=box]
Node30831 [label="Some data 30831~30844" shape=box]
Node30844 [label="Some data 30844~30883" shape=box]
Node30883 [label="Some data 30883~30900" shape=box]
Node30900 [label="Some data 30900~30913" shape=box]
Node30913 [label="Some data 30913~30932" shape=box]
Node30932 [label="Some data 30932~30949" shape=box]
Node30949 [label="Some data 30949~30962" shape=box]
Node30962 [label="Some data 30962~30981" shape=box]
Node30981 [label="Some data 30981~30994" shape=box]
Node30994 [label="Some data 30994~31012" shape=box]
Node31012 [label="Some data 31012~31025" shape=box]
Node31025 [label="Some data 31025~31043" shape=box]
Node31043 [label="Some data 31043~31056" shape=box]
Node31056 [label="Some data 31056~31074" shape=box]
Node31074 [label="Some data 31074~31087" shape=box]
Node31087 [label="Some data 31087~31105" shape=box]
Node31105 [label="Some data 31105~31118" shape=box]
Node31118 [label="Some data 31118~31136" shape=box]
Node31136 [label="Some data 31136~31149" shape=box]
Node31149 [label="Some data 31149~31167" shape=box]
Node31167 [label="Some data 31167~31180" shape=box]
Node31180 [label="Some data 31180~31198" shape=box]
Node31198 [label="Some data 31198~31211" shape=box]
Node31211 [label="Some data 31211~31229" shape=box]
Node31229 [label="Some data 31229~31242" shape=box]
Node31242 [label="Some data 31242~31260" shape=box]
Node31260 [label="Some data 31260~31273" shape=box]
Node31273 [label="Some data 31273~31291" shape=box]
Node31291 [label="Some data 31291~31304" shape=box]
Node31304 [label="Some data 31304~31322" shape=box]
Node31322 [label="Some data 31322~31335" shape=box]
Node31335 [label="Some data 31335~31353" shape=box]
Node31353 [label="Some data 31353~31366" shape=box]
Node31366 [label="Some data 31366~31384" shape=box]
Node31384 [label="Some data 31384~31397" shape=box]
Node31397 [label="Some data 31397~31420" shape=box]
Node31420 [label="Some data 31420~31438" shape=box]
Node31438 [label="Some data 31438~31458" shape=box]
Node31458 [label="Some data 31458~31479" shape=box]
Node31479 [label="Some data 31479~31505" shape=box]
Node31505 [label="Some data 31505~31524" shape=box]
Node31524 [label="Some data 31524~31548" shape=box]
Node31548 [label="Some data 31548~31593" shape=box]
Node31593 [label="Some data 31593~31603" shape=box]
Node0 -> Node4087
Node4087 -> Node4115
Node4087 -> Node4101
Node4101 -> Node4115
Node4115 -> Node4087
Node4118 -> Node4150
Node4150 -> Node4173
Node4173 -> Node4285
Node4173 -> Node4196
Node4196 -> Node4285
Node4196 -> Node4206
Node4206 -> Node4250
Node4206 -> Node4245
Node4245 -> Node4250
Node4250 -> Node4285
Node4285 -> Node4173
Node4294 -> Node4615
Node4615 -> Node4634
Node4634 -> Node4656
Node4634 -> Node4642
Node4642 -> Node4656
Node4656 -> Node4673
Node4673 -> Node4877
Node4673 -> Node4695
Node4695 -> Node4705
Node4705 -> Node4853
Node4705 -> Node4729
Node4729 -> Node4783
Node4783 -> Node4833
Node4783 -> Node4802
Node4802 -> Node4830
Node4802 -> Node4816
Node4816 -> Node4830
Node4830 -> Node4802
Node4833 -> Node4783
Node4836 -> Node4853
Node4853 -> Node4877
Node4877 -> Node4922
Node4877 -> Node4891
Node4891 -> Node4705
Node4903 -> Node5063
Node4922 -> Node4967
Node4922 -> Node4936
Node4936 -> Node4705
Node4948 -> Node5063
Node4967 -> Node5011
Node4967 -> Node5005
Node5005 -> Node5011
Node5011 -> Node5048
Node5048 -> Node5078
Node5048 -> Node5059
Node5059 -> Node5063
Node5063 -> Node5078
Node5078 -> Node5100
Node5078 -> Node5090
Node5090 -> Node5100
Node5100 -> Node5048
Node5124 -> Node4634
Node5141 -> Node5191
Node5191 -> Node5204
Node5191 -> Node5200
Node5200 -> Node5204
Node5204 -> Node5255
Node5204 -> Node5233
Node5233 -> Node5255
Node5233 -> Node5246
Node5246 -> Node5255
Node5255 -> Node31593
Node5255 -> Node5270
Node5270 -> Node31593
Node5270 -> Node5283
Node5283 -> Node30678
Node5283 -> Node5300
Node5300 -> Node4673
Node5324 -> Node5335
Node5335 -> Node5415
Node5335 -> Node5406
Node5406 -> Node5415
Node5415 -> Node5773
Node5415 -> Node5764
Node5764 -> Node5773
Node5773 -> Node6055
Node5773 -> Node6046
Node6046 -> Node6055
Node6055 -> Node6412
Node6055 -> Node6403
Node6403 -> Node6412
Node6412 -> Node6773
Node6412 -> Node6764
Node6764 -> Node6773
Node6773 -> Node7055
Node6773 -> Node7046
Node7046 -> Node7055
Node7055 -> Node7416
Node7055 -> Node7407
Node7407 -> Node7416
Node7416 -> Node7773
Node7416 -> Node7764
Node7764 -> Node7773
Node7773 -> Node8055
Node7773 -> Node8046
Node8046 -> Node8055
Node8055 -> Node8416
Node8055 -> Node8407
Node8407 -> Node8416
Node8416 -> Node8772
Node8416 -> Node8763
Node8763 -> Node8772
Node8772 -> Node9050
Node8772 -> Node9041
Node9041 -> Node9050
Node9050 -> Node9407
Node9050 -> Node9398
Node9398 -> Node9407
Node9407 -> Node9684
Node9407 -> Node9675
Node9675 -> Node9684
Node9684 -> Node9966
Node9684 -> Node9957
Node9957 -> Node9966
Node9966 -> Node10243
Node9966 -> Node10234
Node10234 -> Node10243
Node10243 -> Node10521
Node10243 -> Node10512
Node10512 -> Node10521
Node10521 -> Node10803
Node10521 -> Node10794
Node10794 -> Node10803
Node10803 -> Node11164
Node10803 -> Node11155
Node11155 -> Node11164
Node11164 -> Node11525
Node11164 -> Node11516
Node11516 -> Node11525
Node11525 -> Node11886
Node11525 -> Node11877
Node11877 -> Node11886
Node11886 -> Node12243
Node11886 -> Node12234
Node12234 -> Node12243
Node12243 -> Node12604
Node12243 -> Node12595
Node12595 -> Node12604
Node12604 -> Node12886
Node12604 -> Node12877
Node12877 -> Node12886
Node12886 -> Node13164
Node12886 -> Node13155
Node13155 -> Node13164
Node13164 -> Node13520
Node13164 -> Node13511
Node13511 -> Node13520
Node13520 -> Node13802
Node13520 -> Node13793
Node13793 -> Node13802
Node13802 -> Node14084
Node13802 -> Node14075
Node14075 -> Node14084
Node14084 -> Node14366
Node14084 -> Node14357
Node14357 -> Node14366
Node14366 -> Node14648
Node14366 -> Node14639
Node14639 -> Node14648
Node14648 -> Node15009
Node14648 -> Node15000
Node15000 -> Node15009
Node15009 -> Node15367
Node15009 -> Node15358
Node15358 -> Node15367
Node15367 -> Node15728
Node15367 -> Node15719
Node15719 -> Node15728
Node15728 -> Node16089
Node15728 -> Node16080
Node16080 -> Node16089
Node16089 -> Node16447
Node16089 -> Node16438
Node16438 -> Node16447
Node16447 -> Node16799
Node16447 -> Node16790
Node16790 -> Node16799
Node16799 -> Node17155
Node16799 -> Node17146
Node17146 -> Node17155
Node17155 -> Node17437
Node17155 -> Node17428
Node17428 -> Node17437
Node17437 -> Node17719
Node17437 -> Node17710
Node17710 -> Node17719
Node17719 -> Node18001
Node17719 -> Node17992
Node17992 -> Node18001
Node18001 -> Node18278
Node18001 -> Node18269
Node18269 -> Node18278
Node18278 -> Node18639
Node18278 -> Node18630
Node18630 -> Node18639
Node18639 -> Node19000
Node18639 -> Node18991
Node18991 -> Node19000
Node19000 -> Node19282
Node19000 -> Node19273
Node19273 -> Node19282
Node19282 -> Node19643
Node19282 -> Node19634
Node19634 -> Node19643
Node19643 -> Node20004
Node19643 -> Node19995
Node19995 -> Node20004
Node20004 -> Node20365
Node20004 -> Node20356
Node20356 -> Node20365
Node20365 -> Node20647
Node20365 -> Node20638
Node20638 -> Node20647
Node20647 -> Node20929
Node20647 -> Node20920
Node20920 -> Node20929
Node20929 -> Node21290
Node20929 -> Node21281
Node21281 -> Node21290
Node21290 -> Node21648
Node21290 -> Node21639
Node21639 -> Node21648
Node21648 -> Node22009
Node21648 -> Node22000
Node22000 -> Node22009
Node22009 -> Node22291
Node22009 -> Node22282
Node22282 -> Node22291
Node22291 -> Node22652
Node22291 -> Node22643
Node22643 -> Node22652
Node22652 -> Node22934
Node22652 -> Node22925
Node22925 -> Node22934
Node22934 -> Node23216
Node22934 -> Node23207
Node23207 -> Node23216
Node23216 -> Node23498
Node23216 -> Node23489
Node23489 -> Node23498
Node23498 -> Node23780
Node23498 -> Node23771
Node23771 -> Node23780
Node23780 -> Node24055
Node23780 -> Node24046
Node24046 -> Node24055
Node24055 -> Node24408
Node24055 -> Node24399
Node24399 -> Node24408
Node24408 -> Node24766
Node24408 -> Node24757
Node24757 -> Node24766
Node24766 -> Node25127
Node24766 -> Node25118
Node25118 -> Node25127
Node25127 -> Node25409
Node25127 -> Node25400
Node25400 -> Node25409
Node25409 -> Node25767
Node25409 -> Node25758
Node25758 -> Node25767
Node25767 -> Node26046
Node25767 -> Node26037
Node26037 -> Node26046
Node26046 -> Node26323
Node26046 -> Node26314
Node26314 -> Node26323
Node26323 -> Node26605
Node26323 -> Node26596
Node26596 -> Node26605
Node26605 -> Node26887
Node26605 -> Node26878
Node26878 -> Node26887
Node26887 -> Node27169
Node26887 -> Node27160
Node27160 -> Node27169
Node27169 -> Node27530
Node27169 -> Node27521
Node27521 -> Node27530
Node27530 -> Node27812
Node27530 -> Node27803
Node27803 -> Node27812
Node27812 -> Node28173
Node27812 -> Node28164
Node28164 -> Node28173
Node28173 -> Node28528
Node28173 -> Node28519
Node28519 -> Node28528
Node28528 -> Node28889
Node28528 -> Node28880
Node28880 -> Node28889
Node28889 -> Node29161
Node28889 -> Node29152
Node29152 -> Node29161
Node29161 -> Node29443
Node29161 -> Node29434
Node29434 -> Node29443
Node29443 -> Node29801
Node29443 -> Node29792
Node29792 -> Node29801
Node29801 -> Node30162
Node29801 -> Node30153
Node30153 -> Node30162
Node30162 -> Node30441
Node30162 -> Node30432
Node30432 -> Node30441
Node30441 -> Node4150
Node30464 -> Node30578
Node30464 -> Node30510
Node30510 -> Node30578
Node30578 -> Node30639
Node30578 -> Node30592
Node30592 -> Node30639
Node30639 -> Node4615
Node30664 -> Node30675
Node30675 -> Node30675
Node30678 -> Node30733
Node30678 -> Node30696
Node30696 -> Node4673
Node30720 -> Node5335
Node30733 -> Node30813
Node30733 -> Node30760
Node30760 -> Node30813
Node30813 -> Node31593
Node30813 -> Node30831
Node30831 -> Node31420
Node30831 -> Node30844
Node30844 -> Node30913
Node30844 -> Node30883
Node30883 -> Node30913
Node30883 -> Node30900
Node30900 -> Node30913
Node30913 -> Node30962
Node30913 -> Node30932
Node30932 -> Node30962
Node30932 -> Node30949
Node30949 -> Node30962
Node30962 -> Node30994
Node30962 -> Node30981
Node30981 -> Node30994
Node30994 -> Node31025
Node30994 -> Node31012
Node31012 -> Node31025
Node31025 -> Node31056
Node31025 -> Node31043
Node31043 -> Node31056
Node31056 -> Node31087
Node31056 -> Node31074
Node31074 -> Node31087
Node31087 -> Node31118
Node31087 -> Node31105
Node31105 -> Node31118
Node31118 -> Node31149
Node31118 -> Node31136
Node31136 -> Node31149
Node31149 -> Node31180
Node31149 -> Node31167
Node31167 -> Node31180
Node31180 -> Node31211
Node31180 -> Node31198
Node31198 -> Node31211
Node31211 -> Node31242
Node31211 -> Node31229
Node31229 -> Node31242
Node31242 -> Node31273
Node31242 -> Node31260
Node31260 -> Node31273
Node31273 -> Node31304
Node31273 -> Node31291
Node31291 -> Node31304
Node31304 -> Node31335
Node31304 -> Node31322
Node31322 -> Node31335
Node31335 -> Node31366
Node31335 -> Node31353
Node31353 -> Node31366
Node31366 -> Node31397
Node31366 -> Node31384
Node31384 -> Node31397
Node31397 -> Node31420
Node31420 -> Node31505
Node31420 -> Node31438
Node31438 -> Node31505
Node31438 -> Node31458
Node31458 -> Node4673
Node31479 -> Node31505
Node31505 -> Node31593
Node31505 -> Node31524
Node31524 -> Node4673
Node31548 -> Node31593
Node31593 -> Node5191
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment