aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorblasty <blasty@local>2026-08-07 01:12:09 +0200
committerblasty <blasty@local>2026-08-07 01:12:09 +0200
commit2910c936715c07b77adc7e4d764c3766834ae06d (patch)
tree9d1e3b612a10527a75cfca7ea5598f8f4747752b
parentdiag: somewhere for swallowed errors to go (diff)
downloadida-tui-2910c936715c07b77adc7e4d764c3766834ae06d.tar.gz
ida-tui-2910c936715c07b77adc7e4d764c3766834ae06d.tar.xz
ida-tui-2910c936715c07b77adc7e4d764c3766834ae06d.zip
autoresearch: perf bench harness, checks gate and playbook
-rw-r--r--.auto/bench.py478
-rw-r--r--.auto/cfg-corpus.json1
-rwxr-xr-x.auto/checks.sh30
-rwxr-xr-x.auto/measure.sh14
-rw-r--r--.auto/prompt.md102
5 files changed, 625 insertions, 0 deletions
diff --git a/.auto/bench.py b/.auto/bench.py
new file mode 100644
index 0000000..d869ea3
--- /dev/null
+++ b/.auto/bench.py
@@ -0,0 +1,478 @@
+#!/usr/bin/env python3
+"""ida-tui performance benchmark.
+
+Boots the real Textual app over a real idalib worker (a staged copy of a target,
+seeded from a pristine .i64 so auto-analysis is not paid per run) and times a
+scripted, deterministic set of the things a user actually waits on:
+
+ boot worker spawn + db open + function index complete + usable
+ listing sweeping the unified listing (cold pages, then warm)
+ render render_line throughput on a warm listing
+ decomp F5 -> decompile -> highlight -> paint, per function
+ graph flowchart -> Sugiyama layout -> paint, per function
+ search incremental search over the whole segment
+ index function index load_all (3 filters) + fuzzy palette filter
+ hex hex view scroll sweep
+ pure_graph offline layout over a frozen CFG corpus (no IDA at all)
+
+Two targets are benched so nothing tunes for one scale: a small binary (echo,
+~128 funcs) and a big one (bash, ~2100 funcs).
+
+Every phase is deterministic: the function set is "largest by size, ties by
+address, skipping any the graph view refuses" -- never "whatever is biggest
+right now", which drifts with analysis.
+
+Prints `METRIC name=value` lines; the primary metric is `total_ms`. Exits
+non-zero if any phase failed to do its work (a phase that silently no-ops would
+otherwise look like a huge speedup).
+
+ ~/ida-venv/bin/python .auto/bench.py
+"""
+from __future__ import annotations
+
+import argparse
+import asyncio
+import json
+import os
+import shutil
+import statistics
+import sys
+import tempfile
+import time
+
+HERE = os.path.dirname(os.path.abspath(__file__))
+ROOT = os.path.dirname(HERE)
+sys.path.insert(0, ROOT)
+sys.path.insert(0, os.path.join(ROOT, "tests"))
+
+from idatui.app import ( # noqa: E402
+ DecompView, GraphView, HexView, IdaTui, ListingView,
+)
+from idatui._sync import wait_for # noqa: E402
+
+SIZE = (140, 44)
+TIMES: dict[str, list[float]] = {}
+NOTES: dict[str, object] = {}
+FAILS: list[str] = []
+PREFIX = ""
+
+
+class _T:
+ def __init__(self, key):
+ self.key = PREFIX + key
+
+ def __enter__(self):
+ self.t = time.perf_counter()
+ return self
+
+ def __exit__(self, *a):
+ TIMES.setdefault(self.key, []).append((time.perf_counter() - self.t) * 1000)
+ return False
+
+
+def note(k, v):
+ NOTES[PREFIX + k] = v
+
+
+def fail(msg):
+ FAILS.append(PREFIX + msg)
+
+
+async def _wait(pilot, pred, t=60.0, step=0.01):
+ return await wait_for(pred, pilot.pause, t, step)
+
+
+def _paint(view) -> int:
+ """Render every visible row; returns total cells painted."""
+ n = 0
+ for y in range(view.size.height):
+ n += len(view.render_line(y).text)
+ return n
+
+
+# --------------------------------------------------------------------------- #
+# phases
+# --------------------------------------------------------------------------- #
+async def phase_nav(app, pilot, funcs):
+ """Jump to each function's entry in the unified listing, cold.
+
+ This is `g <addr>`, follow, and every xref landing: the listing model has to
+ have walked heads as far as the target before the cursor can sit on it. The
+ order deliberately alternates far and near (last, first, second-last, ...)
+ so it measures random access, not one tidy forward sweep.
+ """
+ lst = app.query_one(ListingView)
+ order = []
+ lo, hi = 0, len(funcs) - 1
+ while lo <= hi:
+ order.append(funcs[hi])
+ if lo != hi:
+ order.append(funcs[lo])
+ lo, hi = lo + 1, hi - 1
+ worst = 0.0
+ with _T("nav_ms"):
+ for fn in order:
+ t0 = time.perf_counter()
+ app._open_function(fn.addr, fn.name)
+ if not await _wait(pilot, lambda fn=fn: app._cur is not None
+ and app._cur.ea == fn.addr and lst.total > 0
+ and lst._cursor_ea() == fn.addr, 120):
+ fail(f"nav:{fn.name}")
+ worst = max(worst, (time.perf_counter() - t0) * 1000)
+ note("nav_worst_ms", round(worst, 1))
+ note("nav_rows", lst.total)
+
+
+async def phase_listing(app, pilot, funcs, pages):
+ """Sweep the unified listing, painting each viewport. The first pass pulls
+ cold pages over the worker; the second is all-cached, i.e. pure python."""
+ lst = app.query_one(ListingView)
+ fn = funcs[0]
+ app._open_function(fn.addr, fn.name)
+ if not await _wait(pilot, lambda: app._cur is not None and app._cur.ea == fn.addr
+ and lst.total > 0, 60):
+ fail("listing:open")
+ return
+ app._active = "listing"
+ app._show_active()
+ lst.focus()
+ await pilot.pause(0.02)
+ height = max(lst.size.height, 1)
+
+ async def sweep():
+ cells = 0
+ for i in range(pages):
+ lst.model.ensure(i * height + height + 1)
+ lst.cursor = min(max(lst.total - 1, 0), i * height)
+ lst._scroll_cursor_into_view()
+ await pilot.pause(0)
+ cells += _paint(lst)
+ return cells
+
+ with _T("listing_cold_ms"):
+ c = await sweep()
+ note("listing_rows", lst.total)
+ note("listing_cells", c)
+ with _T("listing_warm_ms"):
+ await sweep()
+
+
+async def phase_render(app, pilot, funcs, frames):
+ """render_line throughput on a warm listing with the cursor moving every
+ frame -- the steady state of holding down j."""
+ lst = app.query_one(ListingView)
+ app._active = "listing"
+ app._show_active()
+ lst.focus()
+ await pilot.pause(0.02)
+ n = 0
+ with _T("render_ms"):
+ for i in range(frames):
+ lst.cursor = (i * 7) % max(lst.total, 1)
+ for y in range(lst.size.height):
+ n += len(lst.render_line(y).text)
+ note("render_cells", n)
+
+
+async def phase_decomp(app, pilot, funcs):
+ """F5 out of the listing into the pseudocode, then read down it.
+
+ Navigation is done OUTSIDE the timer -- phase_nav already charges for that,
+ and counting it twice would let a nav win look like a decompiler win.
+ """
+ dv = app.query_one(DecompView)
+ lst = app.query_one(ListingView)
+ ok = lines = 0
+ spent = 0.0
+ for fn in funcs:
+ app._open_function(fn.addr, fn.name)
+ if not await _wait(pilot, lambda fn=fn: app._cur is not None
+ and app._cur.ea == fn.addr and lst.total > 0
+ and lst._cursor_ea() == fn.addr, 120):
+ fail(f"decomp:open:{fn.name}")
+ continue
+ app._active = "listing"
+ app._show_active()
+ lst.focus()
+ await pilot.pause(0.02)
+ t0 = time.perf_counter()
+ app.action_toggle_view()
+ if not await _wait(pilot, lambda fn=fn: dv.loaded_ea == fn.addr, 60):
+ fail(f"decomp:{fn.name}")
+ continue
+ app._active = "decomp"
+ app._show_active()
+ await pilot.pause(0)
+ for _ in range(4): # scroll the body, painting each page
+ _paint(dv)
+ dv.cursor = min(max(dv.total - 1, 0), dv.cursor + dv.size.height)
+ dv._scroll_cursor_into_view()
+ await pilot.pause(0)
+ spent += (time.perf_counter() - t0) * 1000
+ ok += 1
+ lines += dv.total
+ TIMES.setdefault(PREFIX + "decomp_ms", []).append(spent)
+ app._active = "listing"
+ app._show_active()
+ note("decomp_ok", ok)
+ note("decomp_lines", lines)
+
+
+async def phase_graph(app, pilot, funcs):
+ gv = app.query_one(GraphView)
+ ok = blocks = 0
+ spent = 0.0
+ for fn in funcs:
+ app._open_function(fn.addr, fn.name)
+ if not await _wait(pilot, lambda fn=fn: app._cur is not None
+ and app._cur.ea == fn.addr, 120):
+ fail(f"graph:open:{fn.name}")
+ continue
+ app._graph_sticky = True
+ gv.fc = None
+ gv.lay = None
+ t0 = time.perf_counter()
+ app._load_graph(fn.addr, fn.addr)
+ got = await _wait(pilot, lambda fn=fn: gv.fc is not None
+ and gv.fc.func_ea == fn.addr and gv.lay is not None, 60)
+ app._graph_sticky = False
+ if not got:
+ fail(f"graph:{fn.name}")
+ continue
+ app._active = "graph"
+ app._show_active()
+ await pilot.pause(0)
+ _paint(gv)
+ for _ in range(3): # pan the canvas, painting each frame
+ gv.scroll_to(y=min(gv.lay.height, round(gv.scroll_offset.y)
+ + gv.size.height), animate=False)
+ await pilot.pause(0)
+ _paint(gv)
+ spent += (time.perf_counter() - t0) * 1000
+ ok += 1
+ blocks += len(gv.lay.nodes)
+ TIMES.setdefault(PREFIX + "graph_ms", []).append(spent)
+ app._active = "listing"
+ app._show_active()
+ note("graph_ok", ok)
+ note("graph_blocks", blocks)
+
+
+async def phase_search(app, pilot, funcs, terms):
+ """The real incremental-search path: search_begin, then one search_update per
+ typed character, exactly as the Input's on_changed drives it."""
+ lst = app.query_one(ListingView)
+ app._active = "listing"
+ app._show_active()
+ lst.focus()
+ await pilot.pause(0.02)
+ hits = 0
+ with _T("search_ms"):
+ for term in terms:
+ lst.search_begin(1)
+ for i in range(1, len(term) + 1):
+ lst.search_update(term[:i])
+ if not await _wait(pilot, lambda: bool(lst._matches), 180):
+ fail(f"search:{term}")
+ hits += len(lst._matches)
+ lst.search_cancel()
+ await pilot.pause(0)
+ note("search_hits", hits)
+
+
+async def phase_index(app, pilot, funcs):
+ from idatui.app import _fuzzy # noqa: PLC0415
+ prog = app.program
+ with _T("index_ms"):
+ for filt in (None, "sub_*", "*a*"):
+ prog.functions(filt).load_all()
+ n = len(prog.functions())
+ note("index_n", n)
+ if n == 0:
+ fail("index:empty")
+ names = [f.name for f in prog.functions().all_loaded()]
+ with _T("palette_ms"):
+ tot = 0
+ for q in ("m", "mn", "sub", "prnt", "ab", "str"):
+ for nm in names:
+ tot += 1 if _fuzzy(nm, q) else 0
+ note("palette_hits", tot)
+
+
+async def phase_hex(app, pilot, funcs, frames):
+ hx = app.query_one(HexView)
+ fn = funcs[0]
+ app._open_function(fn.addr, fn.name)
+ await _wait(pilot, lambda: app._cur is not None and app._cur.ea == fn.addr, 60)
+ app.action_hex()
+ if not await _wait(pilot, lambda: app._active == "hex" and hx.model is not None, 60):
+ fail("hex:open")
+ return
+ await pilot.pause(0.05)
+ height = max(hx.size.height, 1)
+ with _T("hex_ms"):
+ for i in range(frames):
+ row = (i * height) % max(hx.total, 1)
+ hx.cursor = row * 16
+ hx.model.ensure(row, height)
+ hx._apply_scroll(row)
+ await pilot.pause(0)
+ _paint(hx)
+ app._active = "listing"
+ app._show_active()
+
+
+def phase_pure_graph(corpus):
+ from idatui import graph as G # noqa: PLC0415
+ with open(corpus) as fh:
+ recs = json.load(fh)
+ n = 0
+ with _T("pure_graph_ms"):
+ for rec in recs:
+ texts = {b["id"]: list(b["lines"]) for b in rec["blocks"]}
+ blocks = [G.Block(id=b["id"], start=b["start"], end=b["end"],
+ succs=[(d, k) for d, k in b["succs"]])
+ for b in rec["blocks"]]
+
+ def sizer(b, texts=texts):
+ lines = texts[b.id]
+ label = f"loc_{b.start:X}"
+ widest = max([len(label) + 4] + [len(ln) for ln in lines] or [4])
+ return (widest + 4, max(len(lines), 1) + 2)
+
+ lay = G.layout(blocks, sizer)
+ n += len(lay.nodes)
+ NOTES["pure_graph_nodes"] = n
+ if n == 0:
+ FAILS.append("pure_graph:empty")
+
+
+# --------------------------------------------------------------------------- #
+def stage(binary):
+ """A temp-dir copy of ``binary`` seeded from its pre-analysed database.
+
+ Prefers ``<bin>.pristine.i64`` (what tests/_fixtures builds) and falls back
+ to a tracked ``<bin>.i64``. Never touches either.
+ """
+ d = tempfile.mkdtemp(prefix="idatui-bench-")
+ tgt = os.path.join(d, os.path.basename(binary))
+ shutil.copy2(binary, tgt)
+ for cand in (binary + ".pristine.i64", binary + ".i64"):
+ if os.path.exists(cand):
+ shutil.copy2(cand, tgt + ".i64")
+ break
+ else:
+ raise SystemExit(f"{binary}: no pre-analysed .i64 -- bench would time "
+ f"auto-analysis, not ida-tui")
+ return d, tgt
+
+
+async def run_target(binary, reps, nfuncs, pages, frames, terms, skip=0):
+ d, target = stage(binary)
+ try:
+ app = IdaTui(open_path=target, keepalive=False)
+ t0 = time.perf_counter()
+ async with app.run_test(size=SIZE) as pilot:
+ # Usable = index complete AND the loading overlay handed the screen
+ # back (auto-land fired). Benching with the modal still up silently
+ # disables every priority binding, so nothing a phase presses lands.
+ if not await _wait(pilot, lambda: app._func_index is not None
+ and app._func_index.complete, 600):
+ fail("boot:index")
+ return
+ await _wait(pilot, lambda: app._loading_screen is None
+ and len(app.screen_stack) == 1, 120)
+ TIMES.setdefault(PREFIX + "boot_ms", []).append(
+ (time.perf_counter() - t0) * 1000)
+ idx = app._func_index
+ idx.load_all()
+ allf = idx.all_loaded()
+ note("funcs", len(allf))
+ # Largest by size, ties by address, skipping any function the graph
+ # view refuses (>GRAPH_MAX_BLOCKS) -- otherwise the graph phase sits
+ # in a timeout instead of doing work.
+ # ``skip`` drops the very largest: on a big binary the top few are
+ # multi-thousand-line monsters whose Hex-Rays cost is 30s of pure
+ # backend time, which would swamp every phase we can actually make
+ # faster. A band just below the top is still large and realistic.
+ big = []
+ for f in sorted(allf, key=lambda f: (-f.size, f.addr))[skip:]:
+ if len(big) >= nfuncs:
+ break
+ try:
+ fc = app.program.flowchart(f.addr)
+ except Exception: # noqa: BLE001
+ continue
+ if fc is None or len(fc.blocks) > IdaTui.GRAPH_MAX_BLOCKS:
+ continue
+ big.append(f)
+ if len(big) < nfuncs:
+ fail(f"fixture:only {len(big)}/{nfuncs} functions")
+ big = sorted(big, key=lambda f: f.addr)
+ note("fixed_set", [f.name for f in big])
+
+ # Cold, once: the listing model starts empty and nav is the thing
+ # that has to walk it. Repeating it would only measure a warm cache.
+ await phase_nav(app, pilot, big)
+
+ for _ in range(reps):
+ await phase_listing(app, pilot, big, pages)
+ await phase_render(app, pilot, big, frames)
+ await phase_decomp(app, pilot, big)
+ await phase_graph(app, pilot, big)
+ await phase_search(app, pilot, big, terms)
+ await phase_index(app, pilot, big)
+ await phase_hex(app, pilot, big, frames // 5)
+ app.exit()
+ finally:
+ shutil.rmtree(d, ignore_errors=True)
+
+
+def main():
+ global PREFIX
+ ap = argparse.ArgumentParser()
+ ap.add_argument("--corpus", default=os.path.join(HERE, "cfg-corpus.json"))
+ ap.add_argument("--only", default="", help="only this target tag")
+ ap.add_argument("--reps", type=int, default=0, help="override reps")
+ a = ap.parse_args()
+
+ plan = [
+ # tag, binary, reps, nfuncs, pages, frames, terms, skip
+ ("sm_", "targets/echo", 2, 12, 40, 300, ("mov", "call", "lea"), 0),
+ ("lg_", "targets/bash", 1, 12, 60, 300, ("mov", "call"), 120),
+ ]
+ if a.only:
+ plan = [p for p in plan if p[0].startswith(a.only)]
+
+ async def go():
+ global PREFIX
+ for tag, binary, reps, nfuncs, pages, frames, terms, skip in plan:
+ PREFIX = tag
+ await run_target(os.path.join(ROOT, binary), a.reps or reps,
+ nfuncs, pages, frames, terms, skip)
+ PREFIX = ""
+
+ asyncio.run(go())
+ if os.path.exists(a.corpus):
+ phase_pure_graph(a.corpus)
+ else:
+ FAILS.append("pure_graph:no corpus")
+
+ out = {}
+ for k, v in TIMES.items():
+ out[k] = statistics.median(v) if len(v) > 2 else min(v)
+ total = sum(out.values())
+ print()
+ for k in sorted(out):
+ print(f"METRIC {k}={out[k]:.1f}")
+ print(f"METRIC total_ms={total:.1f}")
+ print(f"METRIC fails={len(FAILS)}")
+ print("NOTES " + json.dumps(NOTES)[:3000])
+ if FAILS:
+ print("FAILS " + "; ".join(FAILS[:20]))
+ return 1
+ return 0
+
+
+if __name__ == "__main__":
+ sys.exit(main())
diff --git a/.auto/cfg-corpus.json b/.auto/cfg-corpus.json
new file mode 100644
index 0000000..cf747f9
--- /dev/null
+++ b/.auto/cfg-corpus.json
@@ -0,0 +1 @@
+[{"name": "sub_3720", "ea": 14112, "blocks": [{"id": 0, "start": 14112, "end": 14208, "lines": ["push rbp", "mov rbp, rsp", "push r15", "mov r15, rsi", "push r14", "push r13", "push r12", "push rbx", "mov rbx, rdi", "sub rsp, 0B8h", "mov rax, [rbp+arg_0]", "mov [rbp+var_58], rdx", "mov [rbp+var_E0], rdi", "mov r13, [rbp+arg_8]", "mov [rbp+var_7C], r8d", "mov [rbp+var_9C], r9d", "mov [rbp+var_70], rax", "mov r14, fs:28h", "mov [rbp+var_38], r14", "mov r14, [rbp+arg_10]", "mov [rbp+var_D8], r13", "mov [rbp+s], r14", "mov r14, rcx", "xchg ax, ax"], "succs": [[1, "fall"]]}, {"id": 1, "start": 14208, "end": 14285, "lines": ["call cs:__ctype_get_mb_cur_max_ptr", "mov [rbp+var_63], 1", "mov r8, r14", "mov r12, rbx", "mov edx, [rbp+var_9C]", "mov [rbp+var_B0], rax", "mov [rbp+var_7E], 0", "shr edx, 1", "mov [rbp+var_65], 0", "mov eax, edx", "mov [rbp+n], 0", "mov [rbp+s2], 0", "and eax, 1", "mov [rbp+var_61], al", "mov [rbp+var_A8], 0"], "succs": [[2, "fall"]]}, {"id": 2, "start": 14285, "end": 14297, "lines": ["mov eax, [rbp+var_7C]", "cmp eax, 0Ah; switch 11 cases", "ja def_37E7; jumptable 00000000000037E7 default case"], "succs": [[3, "fall"], [423, "jump"]]}, {"id": 3, "start": 14297, "end": 14314, "lines": ["lea rdi, jpt_37E7", "movsxd rax, ds:(jpt_37E7 - 8C00h)[rdi+rax*4]", "add rax, rdi", "jmp rax; switch jump"], "succs": [[4, "switch"], [118, "switch"], [119, "switch"], [121, "switch"], [122, "switch"], [126, "switch"], [127, "switch"], [131, "switch"], [133, "switch"]]}, {"id": 4, "start": 14320, "end": 14328, "lines": ["mov ebx, [rbp+var_7C]; jumptable 00000000000037E7 cases 8-10", "cmp ebx, 0Ah", "jz short loc_382A"], "succs": [[5, "fall"], [6, "jump"]]}, {"id": 5, "start": 14328, "end": 14378, "lines": ["mov esi, ebx", "lea rdi, asc_8348+4; msgid", "mov [rbp+var_60], r8", "call sub_3640", "mov esi, ebx", "lea rdi, asc_8348+2; msgid", "mov [rbp+var_D8], rax", "call sub_3640", "mov r8, [rbp+var_60]", "mov [rbp+s], rax"], "succs": [[6, "fall"]]}, {"id": 6, "start": 14378, "end": 14390, "lines": ["xor ebx, ebx", "cmp [rbp+var_61], 0", "jz loc_4DA5"], "succs": [[7, "fall"], [394, "jump"]]}, {"id": 7, "start": 14390, "end": 14464, "lines": ["mov r14, [rbp+s]", "mov [rbp+var_60], r8", "mov rdi, r14; s", "call cs:strlen_ptr", "mov [rbp+s2], r14", "mov r8, [rbp+var_60]", "cmp rax, 1", "mov [rbp+n], rax", "mov [rbp+var_66], 0", "mov [rbp+var_67], 0", "mov [rbp+var_64], 0", "mov [rbp+var_9D], 1", "mov [rbp+var_65], 1", "setnz [rbp+var_7D]", "test rax, rax", "setnz [rbp+var_62]", "nop"], "succs": [[8, "fall"]]}, {"id": 8, "start": 14464, "end": 14470, "lines": ["xor r13d, r13d", "xor r11d, r11d"], "succs": [[9, "fall"]]}, {"id": 9, "start": 14470, "end": 14487, "lines": ["cmp r8, r13", "setnz r14b", "cmp r8, 0FFFFFFFFFFFFFFFFh", "jz loc_39B3"], "succs": [[10, "fall"], [39, "jump"]]}, {"id": 10, "start": 14487, "end": 14496, "lines": ["nop word ptr [rax+rax+00000000h]"], "succs": [[11, "fall"]]}, {"id": 11, "start": 14496, "end": 14505, "lines": ["test r14b, r14b", "jz loc_39D0"], "succs": [[12, "fall"], [40, "jump"]]}, {"id": 12, "start": 14505, "end": 14523, "lines": ["mov rax, [rbp+var_58]", "lea r10, [rax+r13]", "cmp [rbp+var_62], 0", "jnz loc_3FB0"], "succs": [[13, "fall"], [134, "jump"]]}, {"id": 13, "start": 14523, "end": 14537, "lines": ["movzx r9d, byte ptr [r10]", "cmp r9b, 3Fh ; '?'", "jg loc_43C0"], "succs": [[14, "fall"], [191, "jump"]]}, {"id": 14, "start": 14537, "end": 14546, "lines": ["test r9b, r9b", "js def_38EE; jumptable 00000000000038EE default case, cases 1-6,14-31"], "succs": [[15, "fall"], [47, "jump"]]}, {"id": 15, "start": 14546, "end": 14556, "lines": ["cmp r9b, 3Fh; switch 64 cases", "ja def_38EE; jumptable 00000000000038EE default case, cases 1-6,14-31"], "succs": [[16, "fall"], [47, "jump"]]}, {"id": 16, "start": 14556, "end": 14577, "lines": ["lea rsi, jpt_38EE", "movzx eax, r9b", "movsxd rax, ds:(jpt_38EE - 8C2Ch)[rsi+rax*4]", "add rax, rsi", "jmp rax; switch jump"], "succs": [[17, "switch"], [47, "switch"], [63, "switch"], [68, "switch"], [73, "switch"], [74, "switch"], [75, "switch"], [77, "switch"], [82, "switch"], [86, "switch"], [88, "switch"], [108, "switch"], [109, "switch"], [112, "switch"], [114, "switch"]]}, {"id": 17, "start": 14584, "end": 14594, "lines": ["cmp [rbp+var_66], 0; jumptable 00000000000038EE cases 37,43-58", "jnz loc_46B0"], "succs": [[18, "fall"], [253, "jump"]]}, {"id": 18, "start": 14594, "end": 14605, "lines": ["cmp [rbp+var_70], 0", "jz loc_4600"], "succs": [[19, "fall"], [237, "jump"]]}, {"id": 19, "start": 14605, "end": 14612, "lines": ["mov byte ptr [rbp+var_60], 0", "mov edx, r14d"], "succs": [[20, "fall"]]}, {"id": 20, "start": 14612, "end": 14631, "lines": ["mov eax, r9d", "mov esi, r9d", "shr al, 5", "and esi, 1Fh", "movzx eax, al", "shl rax, 2"], "succs": [[21, "fall"]]}, {"id": 21, "start": 14631, "end": 14647, "lines": ["mov rdi, [rbp+var_70]", "mov eax, [rdi+rax]", "bt eax, esi", "jnb loc_3AB8"], "succs": [[22, "fall"], [54, "jump"]]}, {"id": 22, "start": 14647, "end": 14657, "lines": ["cmp [rbp+var_61], 0", "jnz loc_45EA"], "succs": [[23, "fall"], [236, "jump"]]}, {"id": 23, "start": 14657, "end": 14661, "lines": ["lea rcx, [r13+1]"], "succs": [[24, "fall"]]}, {"id": 24, "start": 14661, "end": 14676, "lines": ["and [rbp+var_63], dl", "mov eax, r11d", "mov r13, rcx", "xor eax, 1", "and al, [rbp+var_64]"], "succs": [[25, "fall"]]}, {"id": 25, "start": 14676, "end": 14680, "lines": ["test al, al", "jz short loc_3987"], "succs": [[26, "fall"], [33, "jump"]]}, {"id": 26, "start": 14680, "end": 14685, "lines": ["cmp rbx, r15", "jnb short loc_3962"], "succs": [[27, "fall"], [28, "jump"]]}, {"id": 27, "start": 14685, "end": 14690, "lines": ["mov byte ptr [r12+rbx], 27h ; '''"], "succs": [[28, "fall"]]}, {"id": 28, "start": 14690, "end": 14699, "lines": ["lea rax, [rbx+1]", "cmp rax, r15", "jnb short loc_3971"], "succs": [[29, "fall"], [30, "jump"]]}, {"id": 29, "start": 14699, "end": 14705, "lines": ["mov byte ptr [r12+rbx+1], 24h ; '$'"], "succs": [[30, "fall"]]}, {"id": 30, "start": 14705, "end": 14714, "lines": ["lea rax, [rbx+2]", "cmp rax, r15", "jnb short loc_3980"], "succs": [[31, "fall"], [32, "jump"]]}, {"id": 31, "start": 14714, "end": 14720, "lines": ["mov byte ptr [r12+rbx+2], 27h ; '''"], "succs": [[32, "fall"]]}, {"id": 32, "start": 14720, "end": 14727, "lines": ["add rbx, 3", "mov r11d, r14d"], "succs": [[33, "fall"]]}, {"id": 33, "start": 14727, "end": 14732, "lines": ["cmp rbx, r15", "jnb short loc_3991"], "succs": [[34, "fall"], [35, "jump"]]}, {"id": 34, "start": 14732, "end": 14737, "lines": ["mov byte ptr [r12+rbx], 5Ch ; '\\'"], "succs": [[35, "fall"]]}, {"id": 35, "start": 14737, "end": 14741, "lines": ["add rbx, 1"], "succs": [[36, "fall"]]}, {"id": 36, "start": 14741, "end": 14746, "lines": ["cmp rbx, r15", "jnb short loc_399E"], "succs": [[37, "fall"], [38, "jump"]]}, {"id": 37, "start": 14746, "end": 14750, "lines": ["mov [r12+rbx], r9b"], "succs": [[38, "fall"]]}, {"id": 38, "start": 14750, "end": 14771, "lines": ["add rbx, 1", "cmp r8, r13", "setnz r14b", "cmp r8, 0FFFFFFFFFFFFFFFFh", "jnz loc_38A0"], "succs": [[11, "jump"], [39, "fall"]]}, {"id": 39, "start": 14771, "end": 14800, "lines": ["mov rax, [rbp+var_58]", "mov r8, 0FFFFFFFFFFFFFFFFh", "cmp byte ptr [rax+r13], 0", "setnz r14b", "test r14b, r14b", "jnz loc_38A9"], "succs": [[12, "jump"], [40, "fall"]]}, {"id": 40, "start": 14800, "end": 14809, "lines": ["test rbx, rbx", "jnz loc_4950"], "succs": [[41, "fall"], [307, "jump"]]}, {"id": 41, "start": 14809, "end": 14819, "lines": ["cmp [rbp+var_64], 0", "jz loc_4950"], "succs": [[42, "fall"], [307, "jump"]]}, {"id": 42, "start": 14819, "end": 14829, "lines": ["cmp [rbp+var_61], 0", "jnz loc_3B0C"], "succs": [[43, "fall"], [65, "jump"]]}, {"id": 43, "start": 14829, "end": 14839, "lines": ["cmp [rbp+var_7E], 0", "jz loc_4EAF"], "succs": [[44, "fall"], [414, "jump"]]}, {"id": 44, "start": 14839, "end": 14849, "lines": ["cmp [rbp+var_63], 0", "jnz loc_4E96"], "succs": [[45, "fall"], [413, "jump"]]}, {"id": 45, "start": 14849, "end": 14874, "lines": ["test r15, r15", "setz al", "cmp [rbp+var_A8], 0", "setnz dl", "and al, dl", "jz loc_4E8A"], "succs": [[46, "fall"], [412, "jump"]]}, {"id": 46, "start": 14874, "end": 14893, "lines": ["mov [rbp+var_7E], al", "mov r15, [rbp+var_A8]", "mov [rbp+var_61], 0", "jmp loc_37CD"], "succs": [[2, "jump"]]}, {"id": 47, "start": 14896, "end": 14900, "lines": ["mov byte ptr [rbp+var_60], 0; jumptable 00000000000038EE default case, cases 1-6,14-31"], "succs": [[48, "fall"]]}, {"id": 48, "start": 14900, "end": 14914, "lines": ["cmp [rbp+var_B0], 1", "jnz loc_40BD"], "succs": [[49, "fall"], [148, "jump"]]}, {"id": 49, "start": 14914, "end": 14998, "lines": ["mov [rbp+var_B8], r8", "mov byte ptr [rbp+var_90], r11b", "mov byte ptr [rbp+var_88], r9b", "call cs:__ctype_b_loc_ptr", "movzx r11d, byte ptr [rbp+var_90]", "mov ecx, 1", "mov r8, [rbp+var_B8]", "mov rdx, rax", "movzx eax, byte ptr [rbp+var_88]", "mov rdx, [rdx]", "mov r9, rax", "movzx edx, word ptr [rdx+rax*2]", "and dx, 4000h", "shr dx, 0Eh", "mov eax, edx", "xor eax, 1", "and al, [rbp+var_65]"], "succs": [[50, "fall"]]}, {"id": 50, "start": 14998, "end": 15006, "lines": ["test al, al", "jnz loc_47C0"], "succs": [[51, "fall"], [273, "jump"]]}, {"id": 51, "start": 15006, "end": 15008, "lines": ["xchg ax, ax"], "succs": [[52, "fall"]]}, {"id": 52, "start": 15008, "end": 15021, "lines": ["mov ecx, r9d", "cmp [rbp+var_66], 0", "jnz loc_3B6C"], "succs": [[53, "fall"], [70, "jump"]]}, {"id": 53, "start": 15021, "end": 15032, "lines": ["cmp [rbp+var_70], 0", "jnz loc_3914"], "succs": [[20, "jump"], [54, "fall"]]}, {"id": 54, "start": 15032, "end": 15034, "lines": ["xor eax, eax"], "succs": [[55, "fall"]]}, {"id": 55, "start": 15034, "end": 15044, "lines": ["cmp byte ptr [rbp+var_60], 0", "jnz loc_3937"], "succs": [[22, "jump"], [56, "fall"]]}, {"id": 56, "start": 15044, "end": 15057, "lines": ["and [rbp+var_63], dl", "xor eax, 1", "add r13, 1", "and eax, r11d"], "succs": [[57, "fall"]]}, {"id": 57, "start": 15057, "end": 15065, "lines": ["test al, al", "jz loc_3995"], "succs": [[36, "jump"], [58, "fall"]]}, {"id": 58, "start": 15065, "end": 15070, "lines": ["cmp rbx, r15", "jnb short loc_3AE3"], "succs": [[59, "fall"], [60, "jump"]]}, {"id": 59, "start": 15070, "end": 15075, "lines": ["mov byte ptr [r12+rbx], 27h ; '''"], "succs": [[60, "fall"]]}, {"id": 60, "start": 15075, "end": 15084, "lines": ["lea rax, [rbx+1]", "cmp rax, r15", "jnb short loc_3AF2"], "succs": [[61, "fall"], [62, "jump"]]}, {"id": 61, "start": 15084, "end": 15090, "lines": ["mov byte ptr [r12+rbx+1], 27h ; '''"], "succs": [[62, "fall"]]}, {"id": 62, "start": 15090, "end": 15102, "lines": ["add rbx, 2", "xor r11d, r11d", "jmp loc_3995"], "succs": [[36, "jump"]]}, {"id": 63, "start": 15104, "end": 15110, "lines": ["mov byte ptr [rbp+var_60], 0; jumptable 00000000000038EE cases 33,34,36,38,40-42,59-62", "xor edx, edx"], "succs": [[64, "fall"]]}, {"id": 64, "start": 15110, "end": 15116, "lines": ["cmp [rbp+var_67], 0", "jz short loc_3AA0"], "succs": [[52, "jump"], [65, "fall"]]}, {"id": 65, "start": 15116, "end": 15136, "lines": ["mov [rbp+var_7C], 2", "mov r14, r8", "mov rbx, r12", "nop dword ptr [rax+00000000h]"], "succs": [[66, "fall"]]}, {"id": 66, "start": 15136, "end": 15152, "lines": ["cmp [rbp+var_65], 0", "mov eax, 4", "cmovz eax, [rbp+var_7C]", "mov [rbp+var_7C], eax"], "succs": [[67, "fall"]]}, {"id": 67, "start": 15152, "end": 15172, "lines": ["and [rbp+var_9C], 0FFFFFFFDh", "mov [rbp+var_70], 0", "jmp loc_3780"], "succs": [[1, "jump"]]}, {"id": 68, "start": 15176, "end": 15200, "lines": ["mov byte ptr [rbp+var_60], 0; jumptable 00000000000038EE case 12", "mov ecx, 0Ch", "mov r9d, 66h ; 'f'", "nop word ptr [rax+rax+00000000h]"], "succs": [[69, "fall"]]}, {"id": 69, "start": 15200, "end": 15212, "lines": ["xor edx, edx", "cmp [rbp+var_65], 0", "jnz loc_3937"], "succs": [[22, "jump"], [70, "fall"]]}, {"id": 70, "start": 15212, "end": 15222, "lines": ["cmp [rbp+var_61], 0", "jz loc_4300"], "succs": [[71, "fall"], [178, "jump"]]}, {"id": 71, "start": 15222, "end": 15233, "lines": ["cmp [rbp+var_70], 0", "jz loc_45E0"], "succs": [[72, "fall"], [235, "jump"]]}, {"id": 72, "start": 15233, "end": 15258, "lines": ["mov eax, ecx", "mov esi, ecx", "mov r9d, ecx", "shr al, 5", "and esi, 1Fh", "movzx eax, al", "shl rax, 2", "jmp loc_3927"], "succs": [[21, "jump"]]}, {"id": 73, "start": 15264, "end": 15281, "lines": ["mov byte ptr [rbp+var_60], 0; jumptable 00000000000038EE case 11", "mov ecx, 0Bh", "mov r9d, 76h ; 'v'", "jmp short loc_3B60"], "succs": [[69, "jump"]]}, {"id": 74, "start": 15288, "end": 15305, "lines": ["mov byte ptr [rbp+var_60], 0; jumptable 00000000000038EE case 8", "mov ecx, 8", "mov r9d, 62h ; 'b'", "jmp short loc_3B60"], "succs": [[69, "jump"]]}, {"id": 75, "start": 15312, "end": 15322, "lines": ["cmp [rbp+var_7C], 2; jumptable 00000000000038EE case 39", "jz loc_46F0"], "succs": [[76, "fall"], [259, "jump"]]}, {"id": 76, "start": 15322, "end": 15344, "lines": ["mov [rbp+var_7E], r14b", "mov edx, r14d", "mov r9d, 27h ; '''", "mov byte ptr [rbp+var_60], 0", "jmp loc_3AA0"], "succs": [[52, "jump"]]}, {"id": 77, "start": 15344, "end": 15354, "lines": ["cmp [rbp+var_65], 0; jumptable 00000000000038EE case 0", "jnz loc_44D8; jumptable 000000000000446B case 0"], "succs": [[78, "fall"], [212, "jump"]]}, {"id": 78, "start": 15354, "end": 15367, "lines": ["test byte ptr [rbp+var_9C], 1", "jnz loc_4A0B"], "succs": [[79, "fall"], [324, "jump"]]}, {"id": 79, "start": 15367, "end": 15377, "lines": ["cmp [rbp+var_61], 0", "jz loc_4A2F"], "succs": [[80, "fall"], [327, "jump"]]}, {"id": 80, "start": 15377, "end": 15388, "lines": ["cmp [rbp+var_70], 0", "jz loc_4BCB"], "succs": [[81, "fall"], [354, "jump"]]}, {"id": 81, "start": 15388, "end": 15401, "lines": ["mov byte ptr [rbp+var_60], 0", "xor edx, edx", "xor ecx, ecx", "jmp loc_3B81"], "succs": [[72, "jump"]]}, {"id": 82, "start": 15408, "end": 15412, "lines": ["mov byte ptr [rbp+var_60], 0; jumptable 00000000000038EE case 13"], "succs": [[83, "fall"]]}, {"id": 83, "start": 15412, "end": 15423, "lines": ["mov ecx, 0Dh", "mov r9d, 72h ; 'r'"], "succs": [[84, "fall"]]}, {"id": 84, "start": 15423, "end": 15433, "lines": ["cmp [rbp+var_67], 0", "jz loc_3B60"], "succs": [[69, "jump"], [85, "fall"]]}, {"id": 85, "start": 15433, "end": 15438, "lines": ["jmp loc_3B0C"], "succs": [[65, "jump"]]}, {"id": 86, "start": 15440, "end": 15444, "lines": ["mov byte ptr [rbp+var_60], 0; jumptable 00000000000038EE case 9"], "succs": [[87, "fall"]]}, {"id": 87, "start": 15444, "end": 15457, "lines": ["mov ecx, 9", "mov r9d, 74h ; 't'", "jmp short loc_3C3F"], "succs": [[84, "jump"]]}, {"id": 88, "start": 15464, "end": 15478, "lines": ["mov byte ptr [rbp+var_60], 0; jumptable 00000000000038EE case 63", "cmp [rbp+var_7C], 2", "jz loc_4B6E"], "succs": [[89, "fall"], [350, "jump"]]}, {"id": 89, "start": 15478, "end": 15488, "lines": ["cmp [rbp+var_7C], 5", "jnz loc_4640"], "succs": [[90, "fall"], [244, "jump"]]}, {"id": 90, "start": 15488, "end": 15501, "lines": ["test byte ptr [rbp+var_9C], 4", "jz loc_4640"], "succs": [[91, "fall"], [244, "jump"]]}, {"id": 91, "start": 15501, "end": 15522, "lines": ["lea rsi, [r13+2]", "mov r9d, 3Fh ; '?'", "xor edx, edx", "cmp rsi, r8", "jnb loc_3AA0"], "succs": [[52, "jump"], [92, "fall"]]}, {"id": 92, "start": 15522, "end": 15538, "lines": ["mov rax, [rbp+var_58]", "cmp byte ptr [rax+r13+1], 3Fh ; '?'", "jnz loc_3AA0"], "succs": [[52, "jump"], [93, "fall"]]}, {"id": 93, "start": 15538, "end": 15555, "lines": ["movzx ecx, byte ptr [rax+r13+2]", "lea eax, [rcx-21h]", "cmp al, 1Dh", "ja loc_3AA0"], "succs": [[52, "jump"], [94, "fall"]]}, {"id": 94, "start": 15555, "end": 15575, "lines": ["mov edx, 380051C1h", "bt rdx, rax", "setb dl", "test dl, dl", "jz loc_3AA0"], "succs": [[52, "jump"], [95, "fall"]]}, {"id": 95, "start": 15575, "end": 15585, "lines": ["cmp [rbp+var_61], 0", "jnz loc_4427"], "succs": [[96, "fall"], [199, "jump"]]}, {"id": 96, "start": 15585, "end": 15590, "lines": ["cmp rbx, r15", "jnb short loc_3CEB"], "succs": [[97, "fall"], [98, "jump"]]}, {"id": 97, "start": 15590, "end": 15595, "lines": ["mov byte ptr [r12+rbx], 3Fh ; '?'"], "succs": [[98, "fall"]]}, {"id": 98, "start": 15595, "end": 15604, "lines": ["lea rax, [rbx+1]", "cmp rax, r15", "jnb short loc_3CFA"], "succs": [[99, "fall"], [100, "jump"]]}, {"id": 99, "start": 15604, "end": 15610, "lines": ["mov byte ptr [r12+rbx+1], 22h ; '\"'"], "succs": [[100, "fall"]]}, {"id": 100, "start": 15610, "end": 15619, "lines": ["lea rax, [rbx+2]", "cmp rax, r15", "jnb short loc_3D09"], "succs": [[101, "fall"], [102, "jump"]]}, {"id": 101, "start": 15619, "end": 15625, "lines": ["mov byte ptr [r12+rbx+2], 22h ; '\"'"], "succs": [[102, "fall"]]}, {"id": 102, "start": 15625, "end": 15634, "lines": ["lea rax, [rbx+3]", "cmp rax, r15", "jnb short loc_3D18"], "succs": [[103, "fall"], [104, "jump"]]}, {"id": 103, "start": 15634, "end": 15640, "lines": ["mov byte ptr [r12+rbx+3], 3Fh ; '?'"], "succs": [[104, "fall"]]}, {"id": 104, "start": 15640, "end": 15654, "lines": ["add rbx, 4", "cmp [rbp+var_65], 0", "jnz loc_4E3B"], "succs": [[105, "fall"], [406, "jump"]]}, {"id": 105, "start": 15654, "end": 15677, "lines": ["mov r13, rsi", "mov [rbp+var_63], 0", "xor eax, eax", "add r13, 1", "cmp byte ptr [rbp+var_60], 0", "jnz loc_4313"], "succs": [[106, "fall"], [180, "jump"]]}, {"id": 106, "start": 15677, "end": 15680, "lines": ["nop dword ptr [rax]"], "succs": [[107, "fall"]]}, {"id": 107, "start": 15680, "end": 15694, "lines": ["xor eax, 1", "mov r9d, ecx", "and eax, r11d", "jmp loc_3AD1"], "succs": [[57, "jump"]]}, {"id": 108, "start": 15694, "end": 15714, "lines": ["mov byte ptr [rbp+var_60], 0; jumptable 00000000000038EE case 10", "mov ecx, 0Ah", "mov r9d, 6Eh ; 'n'", "jmp loc_3C3F"], "succs": [[84, "jump"]]}, {"id": 109, "start": 15714, "end": 15728, "lines": ["mov byte ptr [rbp+var_60], 0; jumptable 00000000000038EE case 35", "mov r9d, 23h ; '#'", "nop dword ptr [rax+00h]"], "succs": [[110, "fall"]]}, {"id": 110, "start": 15728, "end": 15733, "lines": ["test r13, r13", "jz short loc_3D90"], "succs": [[111, "fall"], [113, "jump"]]}, {"id": 111, "start": 15733, "end": 15740, "lines": ["xor edx, edx", "jmp loc_3AA0"], "succs": [[52, "jump"]]}, {"id": 112, "start": 15740, "end": 15760, "lines": ["mov byte ptr [rbp+var_60], 0; jumptable 00000000000038EE case 32", "mov r9d, 20h ; ' '", "nop word ptr [rax+rax+00000000h]"], "succs": [[113, "fall"]]}, {"id": 113, "start": 15760, "end": 15768, "lines": ["mov edx, r14d", "jmp loc_3B06"], "succs": [[64, "jump"]]}, {"id": 114, "start": 15768, "end": 15778, "lines": ["cmp [rbp+var_65], 0; jumptable 00000000000038EE case 7", "jnz loc_4BE1"], "succs": [[115, "fall"], [355, "jump"]]}, {"id": 115, "start": 15778, "end": 15788, "lines": ["cmp [rbp+var_61], 0", "jz loc_4BAE"], "succs": [[116, "fall"], [353, "jump"]]}, {"id": 116, "start": 15788, "end": 15799, "lines": ["cmp [rbp+var_70], 0", "jz loc_4DFC"], "succs": [[117, "fall"], [402, "jump"]]}, {"id": 117, "start": 15799, "end": 15815, "lines": ["mov byte ptr [rbp+var_60], 0", "xor edx, edx", "mov ecx, 7", "jmp loc_3B81"], "succs": [[72, "jump"]]}, {"id": 118, "start": 15815, "end": 15886, "lines": ["lea rax, asc_8348; jumptable 00000000000037E7 case 6", "mov [rbp+var_62], 1", "xor ebx, ebx", "mov [rbp+var_66], 0", "mov [rbp+var_67], 0", "mov [rbp+var_64], 0", "mov [rbp+var_7D], 0", "mov [rbp+var_9D], 1", "mov [rbp+var_61], 1", "mov [rbp+var_65], 1", "mov [rbp+n], 1", "mov [rbp+s2], rax", "mov [rbp+var_7C], 5", "jmp loc_3880"], "succs": [[8, "jump"]]}, {"id": 119, "start": 15886, "end": 15917, "lines": ["mov [rbp+var_62], 0; jumptable 00000000000037E7 case 1", "mov [rbp+var_66], 1", "mov [rbp+var_67], 1", "mov [rbp+var_64], 1", "mov [rbp+var_7D], 0", "mov [rbp+var_9D], 0", "mov [rbp+var_61], 1"], "succs": [[120, "fall"]]}, {"id": 120, "start": 15917, "end": 15953, "lines": ["lea rax, asc_8348+2; \"'`\"", "mov [rbp+n], 1", "xor ebx, ebx", "mov [rbp+s2], rax", "mov [rbp+var_7C], 2", "jmp loc_3880"], "succs": [[8, "jump"]]}, {"id": 121, "start": 15953, "end": 16013, "lines": ["movzx ecx, [rbp+var_65]; jumptable 00000000000037E7 case 0", "mov rdi, [rbp+n]", "mov [rbp+var_67], 0", "mov [rbp+var_64], 0", "cmp rdi, 1", "mov eax, ecx", "mov [rbp+var_9D], cl", "setnz [rbp+var_7D]", "xor eax, 1", "test rdi, rdi", "mov [rbp+var_66], al", "setnz al", "xor ebx, ebx", "and eax, ecx", "mov [rbp+var_61], 0", "mov [rbp+var_62], al", "jmp loc_3880"], "succs": [[8, "jump"]]}, {"id": 122, "start": 16013, "end": 16023, "lines": ["cmp [rbp+var_61], 0; jumptable 00000000000037E7 case 2", "jnz loc_4CA2"], "succs": [[123, "fall"], [372, "jump"]]}, {"id": 123, "start": 16023, "end": 16028, "lines": ["test r15, r15", "jz short loc_3EA1"], "succs": [[124, "fall"], [125, "jump"]]}, {"id": 124, "start": 16028, "end": 16033, "lines": ["mov byte ptr [r12], 27h ; '''"], "succs": [[125, "fall"]]}, {"id": 125, "start": 16033, "end": 16103, "lines": ["lea rax, asc_8348+2; \"'`\"", "mov [rbp+var_62], 0", "mov ebx, 1", "mov [rbp+var_66], 1", "mov [rbp+var_67], 0", "mov [rbp+var_64], 1", "mov [rbp+var_7D], 0", "mov [rbp+var_9D], 0", "mov [rbp+var_61], 0", "mov [rbp+n], 1", "mov [rbp+s2], rax", "mov [rbp+var_7C], 2", "jmp loc_3880"], "succs": [[8, "jump"]]}, {"id": 126, "start": 16103, "end": 16156, "lines": ["mov rax, [rbp+n]; jumptable 00000000000037E7 case 7", "mov [rbp+var_66], 0", "mov [rbp+var_67], 0", "cmp rax, 1", "mov [rbp+var_64], 0", "setnz [rbp+var_7D]", "test rax, rax", "setnz [rbp+var_62]", "xor ebx, ebx", "mov [rbp+var_9D], 1", "mov [rbp+var_61], 0", "mov [rbp+var_65], 1", "jmp loc_3880"], "succs": [[8, "jump"]]}, {"id": 127, "start": 16156, "end": 16166, "lines": ["cmp [rbp+var_61], 0; jumptable 00000000000037E7 case 5", "jnz loc_3DC7; jumptable 00000000000037E7 case 6"], "succs": [[118, "jump"], [128, "fall"]]}, {"id": 128, "start": 16166, "end": 16171, "lines": ["test r15, r15", "jz short loc_3F30"], "succs": [[129, "fall"], [130, "jump"]]}, {"id": 129, "start": 16171, "end": 16176, "lines": ["mov byte ptr [r12], 22h ; '\"'"], "succs": [[130, "fall"]]}, {"id": 130, "start": 16176, "end": 16239, "lines": ["lea rax, asc_8348; \"\\\"'`\"", "mov [rbp+var_66], 0", "mov ebx, 1", "mov [rbp+var_67], 0", "mov [rbp+var_64], 0", "mov [rbp+var_7D], 0", "mov [rbp+var_62], 1", "mov [rbp+var_9D], 1", "mov [rbp+var_65], 1", "mov [rbp+n], 1", "mov [rbp+s2], rax", "jmp loc_3880"], "succs": [[8, "jump"]]}, {"id": 131, "start": 16239, "end": 16249, "lines": ["cmp [rbp+var_61], 0; jumptable 00000000000037E7 case 4", "jnz loc_3E0E; jumptable 00000000000037E7 case 1"], "succs": [[119, "jump"], [132, "fall"]]}, {"id": 132, "start": 16249, "end": 16258, "lines": ["mov [rbp+var_65], 1", "jmp loc_3E97"], "succs": [[123, "jump"]]}, {"id": 133, "start": 16258, "end": 16298, "lines": ["mov [rbp+var_62], 0; jumptable 00000000000037E7 case 3", "mov [rbp+var_66], 1", "mov [rbp+var_67], 1", "mov [rbp+var_64], 1", "mov [rbp+var_7D], 0", "mov [rbp+var_9D], 0", "mov [rbp+var_61], 1", "mov [rbp+var_65], 1", "jmp loc_3E2D"], "succs": [[120, "jump"]]}, {"id": 134, "start": 16304, "end": 16318, "lines": ["mov rax, [rbp+n]", "lea rdx, [rax+r13]", "cmp r8, 0FFFFFFFFFFFFFFFFh", "jnz short loc_3FF6"], "succs": [[135, "fall"], [137, "jump"]]}, {"id": 135, "start": 16318, "end": 16324, "lines": ["cmp [rbp+var_7D], 0", "jz short loc_3FF6"], "succs": [[136, "fall"], [137, "jump"]]}, {"id": 136, "start": 16324, "end": 16374, "lines": ["mov byte ptr [rbp+var_90], r11b", "mov rdi, [rbp+var_58]; s", "mov [rbp+var_88], r10", "mov [rbp+var_60], rdx", "call cs:strlen_ptr", "mov r10, [rbp+var_88]", "mov rdx, [rbp+var_60]", "movzx r11d, byte ptr [rbp+var_90]", "mov r8, rax"], "succs": [[137, "fall"]]}, {"id": 137, "start": 16374, "end": 16383, "lines": ["cmp r8, rdx", "jb loc_4438"], "succs": [[138, "fall"], [200, "jump"]]}, {"id": 138, "start": 16383, "end": 16448, "lines": ["mov [rbp+var_90], r8", "mov rdi, r10; s1", "mov rdx, [rbp+n]; n", "mov byte ptr [rbp+var_88], r11b", "mov rsi, [rbp+s2]; s2", "mov [rbp+var_60], r10", "call cs:memcmp_ptr", "mov r10, [rbp+var_60]", "movzx r11d, byte ptr [rbp+var_88]", "test eax, eax", "mov r8, [rbp+var_90]", "jnz loc_4470"], "succs": [[139, "fall"], [204, "jump"]]}, {"id": 139, "start": 16448, "end": 16458, "lines": ["cmp [rbp+var_61], 0", "jnz loc_4A49"], "succs": [[140, "fall"], [328, "jump"]]}, {"id": 140, "start": 16458, "end": 16472, "lines": ["movzx r9d, byte ptr [r10]", "cmp r9b, 3Fh ; '?'", "jg loc_48A0"], "succs": [[141, "fall"], [296, "jump"]]}, {"id": 141, "start": 16472, "end": 16477, "lines": ["test r9b, r9b", "js short def_4075; jumptable 0000000000004075 default case, cases 1-6,14-31"], "succs": [[142, "fall"], [147, "jump"]]}, {"id": 142, "start": 16477, "end": 16483, "lines": ["cmp r9b, 3Fh; switch 64 cases", "ja short def_4075; jumptable 0000000000004075 default case, cases 1-6,14-31"], "succs": [[143, "fall"], [147, "jump"]]}, {"id": 143, "start": 16483, "end": 16504, "lines": ["lea rdx, jpt_4075", "movzx eax, r9b", "movsxd rax, ds:(jpt_4075 - 8D2Ch)[rdx+rax*4]", "add rax, rdx", "jmp rax; switch jump"], "succs": [[144, "switch"], [147, "switch"], [158, "switch"], [160, "switch"], [161, "switch"], [162, "switch"], [163, "switch"], [164, "switch"], [165, "switch"], [176, "switch"], [181, "switch"], [183, "switch"], [185, "switch"], [187, "switch"], [189, "switch"]]}, {"id": 144, "start": 16512, "end": 16522, "lines": ["cmp [rbp+var_66], 0; jumptable 0000000000004075 cases 37,43-58", "jnz loc_4D99"], "succs": [[145, "fall"], [393, "jump"]]}, {"id": 145, "start": 16522, "end": 16537, "lines": ["movzx edx, [rbp+var_62]", "cmp [rbp+var_70], 0", "jz loc_3941"], "succs": [[23, "jump"], [146, "fall"]]}, {"id": 146, "start": 16537, "end": 16545, "lines": ["mov byte ptr [rbp+var_60], dl", "jmp loc_3914"], "succs": [[20, "jump"]]}, {"id": 147, "start": 16552, "end": 16573, "lines": ["movzx eax, [rbp+var_62]; jumptable 0000000000004075 default case, cases 1-6,14-31", "mov byte ptr [rbp+var_60], al", "cmp [rbp+var_B0], 1", "jz loc_3A42"], "succs": [[49, "jump"], [148, "fall"]]}, {"id": 148, "start": 16573, "end": 16591, "lines": ["mov [rbp+var_40], 0", "lea rcx, [rbp+var_40]", "cmp r8, 0FFFFFFFFFFFFFFFFh", "jnz short loc_4116"], "succs": [[149, "fall"], [150, "jump"]]}, {"id": 149, "start": 16591, "end": 16662, "lines": ["mov byte ptr [rbp+var_C0], r11b", "mov rdi, [rbp+var_58]; s", "mov [rbp+var_B8], rcx", "mov [rbp+var_90], r10", "mov byte ptr [rbp+var_88], r9b", "call cs:strlen_ptr", "movzx r11d, byte ptr [rbp+var_C0]", "mov rcx, [rbp+var_B8]", "mov r10, [rbp+var_90]", "movzx r9d, byte ptr [rbp+var_88]", "mov r8, rax"], "succs": [[150, "fall"]]}, {"id": 150, "start": 16662, "end": 16754, "lines": ["mov rax, r8", "mov byte ptr [rbp+var_B8], r11b", "lea rdi, [rbp+wc]; pc32", "mov rsi, r10; s", "sub rax, r13", "mov byte ptr [rbp+var_90], r9b", "mov [rbp+var_88], r8", "mov rdx, rax", "mov [rbp+var_C8], rax", "mov [rbp+var_C0], r10", "call sub_69C0", "mov r8, [rbp+var_88]", "movzx r9d, byte ptr [rbp+var_90]", "test rax, rax", "movzx r11d, byte ptr [rbp+var_B8]", "mov rcx, rax", "jz loc_41F0"], "succs": [[151, "fall"], [157, "jump"]]}, {"id": 151, "start": 16754, "end": 16771, "lines": ["cmp rax, 0FFFFFFFFFFFFFFFFh", "mov r10, [rbp+var_C0]", "jz loc_4B1A"], "succs": [[152, "fall"], [342, "jump"]]}, {"id": 152, "start": 16771, "end": 16781, "lines": ["cmp rax, 0FFFFFFFFFFFFFFFEh", "jz loc_4B27"], "succs": [[153, "fall"], [343, "jump"]]}, {"id": 153, "start": 16781, "end": 16791, "lines": ["cmp [rbp+var_67], 0", "jnz loc_4C5D"], "succs": [[154, "fall"], [366, "jump"]]}, {"id": 154, "start": 16791, "end": 16866, "lines": ["mov [rbp+var_C0], r8", "mov edi, [rbp+wc]; wc", "mov byte ptr [rbp+var_B8], r11b", "mov byte ptr [rbp+var_90], r9b", "mov [rbp+var_88], rax", "call cs:iswprint_ptr", "mov rcx, [rbp+var_88]", "movzx r9d, byte ptr [rbp+var_90]", "test eax, eax", "movzx r11d, byte ptr [rbp+var_B8]", "mov r8, [rbp+var_C0]", "jz loc_4B50"], "succs": [[155, "fall"], [347, "jump"]]}, {"id": 155, "start": 16866, "end": 16876, "lines": ["cmp rcx, 1", "jnz loc_4E34"], "succs": [[156, "fall"], [405, "jump"]]}, {"id": 156, "start": 16876, "end": 16880, "lines": ["nop dword ptr [rax+00h]"], "succs": [[157, "fall"]]}, {"id": 157, "start": 16880, "end": 16888, "lines": ["mov edx, r14d", "jmp loc_3AA0"], "succs": [[52, "jump"]]}, {"id": 158, "start": 16888, "end": 16895, "lines": ["movzx eax, [rbp+var_62]; jumptable 0000000000004075 cases 33,34,36,38,40-42,59-62", "mov byte ptr [rbp+var_60], al"], "succs": [[159, "fall"]]}, {"id": 159, "start": 16895, "end": 16902, "lines": ["xor edx, edx", "jmp loc_3B06"], "succs": [[64, "jump"]]}, {"id": 160, "start": 16902, "end": 16920, "lines": ["movzx eax, [rbp+var_62]; jumptable 0000000000004075 case 35", "mov r9d, 23h ; '#'", "mov byte ptr [rbp+var_60], al", "jmp loc_3D70"], "succs": [[110, "jump"]]}, {"id": 161, "start": 16920, "end": 16941, "lines": ["movzx eax, [rbp+var_62]; jumptable 0000000000004075 case 32", "mov r9d, 20h ; ' '", "mov edx, r14d", "mov byte ptr [rbp+var_60], al", "jmp loc_3B06"], "succs": [[64, "jump"]]}, {"id": 162, "start": 16941, "end": 16953, "lines": ["movzx eax, [rbp+var_62]; jumptable 0000000000004075 case 13", "mov byte ptr [rbp+var_60], al", "jmp loc_3C34"], "succs": [[83, "jump"]]}, {"id": 163, "start": 16953, "end": 16976, "lines": ["movzx eax, [rbp+var_62]; jumptable 0000000000004075 case 10", "mov ecx, 0Ah", "mov r9d, 6Eh ; 'n'", "mov byte ptr [rbp+var_60], al", "jmp loc_3C3F"], "succs": [[84, "jump"]]}, {"id": 164, "start": 16976, "end": 16988, "lines": ["movzx eax, [rbp+var_62]; jumptable 0000000000004075 case 9", "mov byte ptr [rbp+var_60], al", "jmp loc_3C54"], "succs": [[87, "jump"]]}, {"id": 165, "start": 16988, "end": 17010, "lines": ["movzx eax, [rbp+var_62]; jumptable 0000000000004075 case 0", "mov byte ptr [rbp+var_60], al", "mov eax, r11d", "xor eax, 1", "and al, [rbp+var_64]", "jz loc_44F5"], "succs": [[166, "fall"], [214, "jump"]]}, {"id": 166, "start": 17010, "end": 17024, "lines": ["nop dword ptr [rax]", "nop word ptr [rax+rax+00000000h]"], "succs": [[167, "fall"]]}, {"id": 167, "start": 17024, "end": 17029, "lines": ["cmp rbx, r15", "jnb short loc_428A"], "succs": [[168, "fall"], [169, "jump"]]}, {"id": 168, "start": 17029, "end": 17034, "lines": ["mov byte ptr [r12+rbx], 27h ; '''"], "succs": [[169, "fall"]]}, {"id": 169, "start": 17034, "end": 17043, "lines": ["lea rdx, [rbx+1]", "cmp rdx, r15", "jnb short loc_4299"], "succs": [[170, "fall"], [171, "jump"]]}, {"id": 170, "start": 17043, "end": 17049, "lines": ["mov byte ptr [r12+rbx+1], 24h ; '$'"], "succs": [[171, "fall"]]}, {"id": 171, "start": 17049, "end": 17058, "lines": ["lea rdx, [rbx+2]", "cmp rdx, r15", "jnb short loc_42A8"], "succs": [[172, "fall"], [173, "jump"]]}, {"id": 172, "start": 17058, "end": 17064, "lines": ["mov byte ptr [r12+rbx+2], 27h ; '''"], "succs": [[173, "fall"]]}, {"id": 173, "start": 17064, "end": 17081, "lines": ["lea rdx, [rbx+3]", "add rbx, 4", "cmp rdx, r15", "jnb loc_4A5B"], "succs": [[174, "fall"], [329, "jump"]]}, {"id": 174, "start": 17081, "end": 17100, "lines": ["mov byte ptr [r12+rdx], 5Ch ; '\\'", "add r13, 1", "cmp byte ptr [rbp+var_60], 0", "jz loc_4BEE"], "succs": [[175, "fall"], [356, "jump"]]}, {"id": 175, "start": 17100, "end": 17120, "lines": ["mov [rbp+var_63], 0", "movzx r11d, byte ptr [rbp+var_60]", "mov r9d, 30h ; '0'", "jmp loc_3987"], "succs": [[33, "jump"]]}, {"id": 176, "start": 17120, "end": 17130, "lines": ["cmp [rbp+var_65], 0; jumptable 0000000000004075 case 12", "jnz loc_4EEB"], "succs": [[177, "fall"], [418, "jump"]]}, {"id": 177, "start": 17130, "end": 17152, "lines": ["movzx eax, [rbp+var_62]", "xor edx, edx", "mov ecx, 0Ch", "mov byte ptr [rbp+var_60], al", "nop dword ptr [rax+rax+00000000h]"], "succs": [[178, "fall"]]}, {"id": 178, "start": 17152, "end": 17154, "lines": ["xor eax, eax"], "succs": [[179, "fall"]]}, {"id": 179, "start": 17154, "end": 17171, "lines": ["and [rbp+var_63], dl", "add r13, 1", "cmp byte ptr [rbp+var_60], 0", "jz loc_3D40"], "succs": [[107, "jump"], [180, "fall"]]}, {"id": 180, "start": 17171, "end": 17188, "lines": ["mov eax, r11d", "mov r9d, ecx", "xor eax, 1", "and al, [rbp+var_64]", "jmp loc_3954"], "succs": [[25, "jump"]]}, {"id": 181, "start": 17188, "end": 17198, "lines": ["cmp [rbp+var_65], 0; jumptable 0000000000004075 case 11", "jnz loc_4EBC"], "succs": [[182, "fall"], [415, "jump"]]}, {"id": 182, "start": 17198, "end": 17214, "lines": ["movzx eax, [rbp+var_62]", "xor edx, edx", "mov ecx, 0Bh", "mov byte ptr [rbp+var_60], al", "jmp short loc_4300"], "succs": [[178, "jump"]]}, {"id": 183, "start": 17214, "end": 17231, "lines": ["movzx eax, [rbp+var_62]; jumptable 0000000000004075 case 63", "mov byte ptr [rbp+var_60], al", "cmp [rbp+var_7C], 2", "jnz loc_3C76"], "succs": [[89, "jump"], [184, "fall"]]}, {"id": 184, "start": 17231, "end": 17246, "lines": ["mov [rbp+var_63], 0", "add r13, 1", "mov ecx, 3Fh ; '?'", "jmp short loc_4313"], "succs": [[180, "jump"]]}, {"id": 185, "start": 17246, "end": 17260, "lines": ["movzx eax, [rbp+var_62]; jumptable 0000000000004075 case 39", "cmp [rbp+var_7C], 2", "jz loc_4E63"], "succs": [[186, "fall"], [409, "jump"]]}, {"id": 186, "start": 17260, "end": 17279, "lines": ["mov byte ptr [rbp+var_60], al", "mov edx, eax", "mov r9d, 27h ; '''", "mov [rbp+var_7E], al", "jmp loc_3AA0"], "succs": [[52, "jump"]]}, {"id": 187, "start": 17279, "end": 17289, "lines": ["cmp [rbp+var_65], 0; jumptable 0000000000004075 case 8", "jnz loc_4ECD"], "succs": [[188, "fall"], [416, "jump"]]}, {"id": 188, "start": 17289, "end": 17308, "lines": ["movzx eax, [rbp+var_62]", "xor edx, edx", "mov ecx, 8", "mov byte ptr [rbp+var_60], al", "jmp loc_4300"], "succs": [[178, "jump"]]}, {"id": 189, "start": 17308, "end": 17318, "lines": ["cmp [rbp+var_65], 0; jumptable 0000000000004075 case 7", "jnz loc_4EDE"], "succs": [[190, "fall"], [417, "jump"]]}, {"id": 190, "start": 17318, "end": 17336, "lines": ["mov [rbp+var_63], 0", "add r13, 1", "mov ecx, 7", "jmp loc_4313"], "succs": [[180, "jump"]]}, {"id": 191, "start": 17344, "end": 17354, "lines": ["cmp r9b, 7Ah ; 'z'", "jg loc_45A0"], "succs": [[192, "fall"], [228, "jump"]]}, {"id": 192, "start": 17354, "end": 17364, "lines": ["cmp r9b, 40h ; '@'", "jz def_38EE; jumptable 00000000000038EE default case, cases 1-6,14-31"], "succs": [[47, "jump"], [193, "fall"]]}, {"id": 193, "start": 17364, "end": 17395, "lines": ["lea ecx, [r9-41h]", "mov eax, 1", "mov rdx, 3FFFFFF53FFFFFFh", "shl rax, cl", "test rax, rdx", "jnz loc_38F8; jumptable 00000000000038EE cases 37,43-58"], "succs": [[17, "jump"], [194, "fall"]]}, {"id": 194, "start": 17395, "end": 17406, "lines": ["test eax, 0A4000000h", "jnz loc_3B00; jumptable 00000000000038EE cases 33,34,36,38,40-42,59-62"], "succs": [[63, "jump"], [195, "fall"]]}, {"id": 195, "start": 17406, "end": 17416, "lines": ["cmp [rbp+var_7C], 2", "jz loc_4650"], "succs": [[196, "fall"], [245, "jump"]]}, {"id": 196, "start": 17416, "end": 17426, "lines": ["cmp [rbp+var_65], 0", "jz loc_4917"], "succs": [[197, "fall"], [304, "jump"]]}, {"id": 197, "start": 17426, "end": 17436, "lines": ["cmp [rbp+var_61], 0", "jz loc_4AA7"], "succs": [[198, "fall"], [335, "jump"]]}, {"id": 198, "start": 17436, "end": 17447, "lines": ["cmp [rbp+n], 0", "jnz loc_465A"], "succs": [[199, "fall"], [246, "jump"]]}, {"id": 199, "start": 17447, "end": 17458, "lines": ["mov r14, r8", "mov rbx, r12", "jmp loc_3B30"], "succs": [[67, "jump"]]}, {"id": 200, "start": 17464, "end": 17478, "lines": ["movzx r9d, byte ptr [r10]", "cmp r9b, 3Fh ; '?'", "jg loc_4610"], "succs": [[201, "fall"], [238, "jump"]]}, {"id": 201, "start": 17478, "end": 17487, "lines": ["test r9b, r9b", "js def_38EE; jumptable 00000000000038EE default case, cases 1-6,14-31"], "succs": [[47, "jump"], [202, "fall"]]}, {"id": 202, "start": 17487, "end": 17497, "lines": ["cmp r9b, 3Fh; switch 64 cases", "ja def_38EE; jumptable 00000000000038EE default case, cases 1-6,14-31"], "succs": [[47, "jump"], [203, "fall"]]}, {"id": 203, "start": 17497, "end": 17518, "lines": ["lea rcx, jpt_446B", "movzx eax, r9b", "movsxd rax, ds:(jpt_446B - 8E2Ch)[rcx+rax*4]", "add rax, rcx", "jmp rax; switch jump"], "succs": [[47, "switch"], [63, "switch"], [68, "switch"], [73, "switch"], [74, "switch"], [75, "switch"], [82, "switch"], [86, "switch"], [88, "switch"], [209, "switch"], [212, "switch"], [223, "switch"], [224, "switch"], [225, "switch"], [226, "switch"]]}, {"id": 204, "start": 17520, "end": 17530, "lines": ["movzx r9d, byte ptr [r10]", "cmp r9b, 3Fh ; '?'", "jle short loc_4446"], "succs": [[201, "jump"], [205, "fall"]]}, {"id": 205, "start": 17530, "end": 17540, "lines": ["cmp r9b, 7Ah ; 'z'", "jg loc_467D"], "succs": [[206, "fall"], [249, "jump"]]}, {"id": 206, "start": 17540, "end": 17550, "lines": ["cmp r9b, 40h ; '@'", "jz def_38EE; jumptable 00000000000038EE default case, cases 1-6,14-31"], "succs": [[47, "jump"], [207, "fall"]]}, {"id": 207, "start": 17550, "end": 17581, "lines": ["lea ecx, [r9-41h]", "mov eax, 1", "shl rax, cl", "mov rcx, 3FFFFFF53FFFFFFh", "test rax, rcx", "jz loc_43F3"], "succs": [[194, "jump"], [208, "fall"]]}, {"id": 208, "start": 17581, "end": 17584, "lines": ["nop dword ptr [rax]"], "succs": [[209, "fall"]]}, {"id": 209, "start": 17584, "end": 17594, "lines": ["cmp [rbp+var_66], 0; jumptable 000000000000446B cases 37,43-58", "jnz loc_4AD8"], "succs": [[210, "fall"], [337, "jump"]]}, {"id": 210, "start": 17594, "end": 17605, "lines": ["cmp [rbp+var_70], 0", "jz loc_4928"], "succs": [[211, "fall"], [305, "jump"]]}, {"id": 211, "start": 17605, "end": 17618, "lines": ["mov byte ptr [rbp+var_60], 0", "movzx edx, [rbp+var_62]", "jmp loc_3914"], "succs": [[20, "jump"]]}, {"id": 212, "start": 17624, "end": 17634, "lines": ["cmp [rbp+var_61], 0; jumptable 000000000000446B case 0", "jnz loc_4A49"], "succs": [[213, "fall"], [328, "jump"]]}, {"id": 213, "start": 17634, "end": 17653, "lines": ["mov eax, r11d", "mov byte ptr [rbp+var_60], 0", "xor eax, 1", "and al, [rbp+var_64]", "jnz loc_4280"], "succs": [[167, "jump"], [214, "fall"]]}, {"id": 214, "start": 17653, "end": 17658, "lines": ["cmp rbx, r15", "jnb short loc_44FF"], "succs": [[215, "fall"], [216, "jump"]]}, {"id": 215, "start": 17658, "end": 17663, "lines": ["mov byte ptr [r12+rbx], 5Ch ; '\\'"], "succs": [[216, "fall"]]}, {"id": 216, "start": 17663, "end": 17684, "lines": ["lea rsi, [rbx+1]", "lea rcx, [r13+1]", "cmp [rbp+var_9D], 0", "jz loc_4E6B"], "succs": [[217, "fall"], [410, "jump"]]}, {"id": 217, "start": 17684, "end": 17689, "lines": ["cmp rcx, r8", "jnb short loc_4534"], "succs": [[218, "fall"], [219, "jump"]]}, {"id": 218, "start": 17689, "end": 17716, "lines": ["mov rax, [rbp+var_58]", "movzx eax, byte ptr [rax+r13+1]", "mov byte ptr [rbp+var_88], al", "sub eax, 30h ; '0'", "cmp al, 9", "jbe loc_4C00"], "succs": [[219, "fall"], [357, "jump"]]}, {"id": 219, "start": 17716, "end": 17729, "lines": ["mov rax, [rbp+var_70]", "test rax, rax", "jz loc_4AFB"], "succs": [[220, "fall"], [340, "jump"]]}, {"id": 220, "start": 17729, "end": 17741, "lines": ["xor edx, edx", "test byte ptr [rax+6], 1", "jz loc_4AC3"], "succs": [[221, "fall"], [336, "jump"]]}, {"id": 221, "start": 17741, "end": 17744, "lines": ["mov rbx, rsi"], "succs": [[222, "fall"]]}, {"id": 222, "start": 17744, "end": 17755, "lines": ["mov r9d, 30h ; '0'", "jmp loc_3945"], "succs": [[24, "jump"]]}, {"id": 223, "start": 17755, "end": 17764, "lines": ["mov byte ptr [rbp+var_60], 0; jumptable 000000000000446B case 35", "jmp loc_3D70"], "succs": [[110, "jump"]]}, {"id": 224, "start": 17764, "end": 17776, "lines": ["mov byte ptr [rbp+var_60], 0; jumptable 000000000000446B case 32", "mov edx, r14d", "jmp loc_3B06"], "succs": [[64, "jump"]]}, {"id": 225, "start": 17776, "end": 17794, "lines": ["mov ecx, r9d; jumptable 000000000000446B case 10", "mov byte ptr [rbp+var_60], 0", "mov r9d, 6Eh ; 'n'", "jmp loc_3C3F"], "succs": [[84, "jump"]]}, {"id": 226, "start": 17794, "end": 17804, "lines": ["cmp [rbp+var_65], 0; jumptable 000000000000446B case 7", "jz loc_3DA2"], "succs": [[115, "jump"], [227, "fall"]]}, {"id": 227, "start": 17804, "end": 17817, "lines": ["mov r9d, 61h ; 'a'", "xor edx, edx", "jmp loc_3937"], "succs": [[22, "jump"]]}, {"id": 228, "start": 17824, "end": 17834, "lines": ["cmp r9b, 7Dh ; '}'", "jz loc_4690"], "succs": [[229, "fall"], [251, "jump"]]}, {"id": 229, "start": 17834, "end": 17844, "lines": ["mov byte ptr [rbp+var_60], 0", "jg loc_4630"], "succs": [[230, "fall"], [242, "jump"]]}, {"id": 230, "start": 17844, "end": 17854, "lines": ["cmp r9b, 7Bh ; '{'", "jnz loc_41FF"], "succs": [[159, "jump"], [231, "fall"]]}, {"id": 231, "start": 17854, "end": 17864, "lines": ["cmp r8, 0FFFFFFFFFFFFFFFFh", "jz loc_469E"], "succs": [[232, "fall"], [252, "jump"]]}, {"id": 232, "start": 17864, "end": 17871, "lines": ["cmp r8, 1", "setnz al"], "succs": [[233, "fall"]]}, {"id": 233, "start": 17871, "end": 17879, "lines": ["test al, al", "jz loc_3D70"], "succs": [[110, "jump"], [234, "fall"]]}, {"id": 234, "start": 17879, "end": 17886, "lines": ["xor edx, edx", "jmp loc_3AA0"], "succs": [[52, "jump"]]}, {"id": 235, "start": 17888, "end": 17898, "lines": ["cmp byte ptr [rbp+var_60], 0", "jz loc_46D6"], "succs": [[236, "fall"], [258, "jump"]]}, {"id": 236, "start": 17898, "end": 17916, "lines": ["movzx ecx, [rbp+var_64]", "mov r14, r8", "and [rbp+var_65], cl", "mov rbx, r12", "jmp loc_3B20"], "succs": [[66, "jump"]]}, {"id": 237, "start": 17920, "end": 17930, "lines": ["mov edx, r14d", "xor eax, eax", "jmp loc_3AC4"], "succs": [[56, "jump"]]}, {"id": 238, "start": 17936, "end": 17946, "lines": ["cmp r9b, 7Ah ; 'z'", "jle loc_4484"], "succs": [[206, "jump"], [239, "fall"]]}, {"id": 239, "start": 17946, "end": 17956, "lines": ["cmp r9b, 7Dh ; '}'", "jz loc_4B65"], "succs": [[240, "fall"], [349, "jump"]]}, {"id": 240, "start": 17956, "end": 17966, "lines": ["mov byte ptr [rbp+var_60], 0", "cmp r9b, 7Dh ; '}'", "jle short loc_45B4"], "succs": [[230, "jump"], [241, "fall"]]}, {"id": 241, "start": 17966, "end": 17968, "lines": ["xchg ax, ax"], "succs": [[242, "fall"]]}, {"id": 242, "start": 17968, "end": 17978, "lines": ["cmp r9b, 7Eh ; '~'", "jz loc_3D70"], "succs": [[110, "jump"], [243, "fall"]]}, {"id": 243, "start": 17978, "end": 17983, "lines": ["jmp loc_3A34"], "succs": [[48, "jump"]]}, {"id": 244, "start": 17984, "end": 17997, "lines": ["mov r9d, 3Fh ; '?'", "xor edx, edx", "jmp loc_3AA0"], "succs": [[52, "jump"]]}, {"id": 245, "start": 18000, "end": 18010, "lines": ["cmp [rbp+var_61], 0", "jnz loc_475F"], "succs": [[246, "fall"], [270, "jump"]]}, {"id": 246, "start": 18010, "end": 18023, "lines": ["add r13, 1", "test r11b, r11b", "jnz loc_4908"], "succs": [[247, "fall"], [303, "jump"]]}, {"id": 247, "start": 18023, "end": 18032, "lines": ["cmp rbx, r15", "jb loc_4A6A"], "succs": [[248, "fall"], [330, "jump"]]}, {"id": 248, "start": 18032, "end": 18045, "lines": ["mov [rbp+var_63], 0", "add rbx, 1", "jmp loc_3886"], "succs": [[9, "jump"]]}, {"id": 249, "start": 18045, "end": 18051, "lines": ["cmp r9b, 7Dh ; '}'", "jnz short loc_4624"], "succs": [[240, "jump"], [250, "fall"]]}, {"id": 250, "start": 18051, "end": 18064, "lines": ["xchg ax, ax", "nop word ptr [rax+rax+00000000h]"], "succs": [[251, "fall"]]}, {"id": 251, "start": 18064, "end": 18078, "lines": ["mov byte ptr [rbp+var_60], 0", "cmp r8, 0FFFFFFFFFFFFFFFFh", "jnz loc_45C8"], "succs": [[232, "jump"], [252, "fall"]]}, {"id": 252, "start": 18078, "end": 18094, "lines": ["mov rax, [rbp+var_58]", "cmp byte ptr [rax+1], 0", "setnz al", "jmp loc_45CF"], "succs": [[233, "jump"]]}, {"id": 253, "start": 18096, "end": 18108, "lines": ["movzx edx, [rbp+var_61]", "test dl, dl", "jz loc_4938"], "succs": [[254, "fall"], [306, "jump"]]}, {"id": 254, "start": 18108, "end": 18115, "lines": ["cmp [rbp+var_70], 0", "jz short loc_46CF"], "succs": [[255, "fall"], [256, "jump"]]}, {"id": 255, "start": 18115, "end": 18127, "lines": ["mov byte ptr [rbp+var_60], 0", "mov ecx, r9d", "jmp loc_3B81"], "succs": [[72, "jump"]]}, {"id": 256, "start": 18127, "end": 18130, "lines": ["mov ecx, r9d"], "succs": [[257, "fall"]]}, {"id": 257, "start": 18130, "end": 18134, "lines": ["movzx edx, [rbp+var_61]"], "succs": [[258, "fall"]]}, {"id": 258, "start": 18134, "end": 18152, "lines": ["and [rbp+var_63], dl", "add r13, 1", "mov eax, r11d", "mov r9d, ecx", "jmp loc_3AD1"], "succs": [[57, "jump"]]}, {"id": 259, "start": 18160, "end": 18166, "lines": ["cmp [rbp+var_61], 0", "jnz short loc_475F"], "succs": [[260, "fall"], [270, "jump"]]}, {"id": 260, "start": 18166, "end": 18170, "lines": ["mov [rbp+var_7E], 0"], "succs": [[261, "fall"]]}, {"id": 261, "start": 18170, "end": 18195, "lines": ["test r15, r15", "setnz al", "cmp [rbp+var_A8], 0", "setz dl", "and al, dl", "jnz loc_49DF"], "succs": [[262, "fall"], [322, "jump"]]}, {"id": 262, "start": 18195, "end": 18200, "lines": ["cmp rbx, r15", "jnb short loc_471D"], "succs": [[263, "fall"], [264, "jump"]]}, {"id": 263, "start": 18200, "end": 18205, "lines": ["mov byte ptr [r12+rbx], 27h ; '''"], "succs": [[264, "fall"]]}, {"id": 264, "start": 18205, "end": 18214, "lines": ["lea rax, [rbx+1]", "cmp rax, r15", "jnb short loc_472C"], "succs": [[265, "fall"], [266, "jump"]]}, {"id": 265, "start": 18214, "end": 18220, "lines": ["mov byte ptr [r12+rbx+1], 5Ch ; '\\'"], "succs": [[266, "fall"]]}, {"id": 266, "start": 18220, "end": 18229, "lines": ["lea rax, [rbx+2]", "cmp rax, r15", "jnb short loc_473B"], "succs": [[267, "fall"], [268, "jump"]]}, {"id": 267, "start": 18229, "end": 18235, "lines": ["mov byte ptr [r12+rbx+2], 27h ; '''"], "succs": [[268, "fall"]]}, {"id": 268, "start": 18235, "end": 18259, "lines": ["add rbx, 3", "add r13, 1", "mov r9d, 27h ; '''", "cmp [rbp+var_7E], 0", "jnz loc_3958"], "succs": [[26, "jump"], [269, "fall"]]}, {"id": 269, "start": 18259, "end": 18271, "lines": ["mov [rbp+var_7E], r14b", "xor r11d, r11d", "jmp loc_3995"], "succs": [[36, "jump"]]}, {"id": 270, "start": 18271, "end": 18282, "lines": ["mov r14, r8", "mov rbx, r12", "jmp loc_3B20"], "succs": [[66, "jump"]]}, {"id": 271, "start": 18282, "end": 18357, "lines": ["mov [rbp+var_C0], r8", "mov edi, [rbp+wc]; wc", "mov byte ptr [rbp+var_B8], r11b", "mov byte ptr [rbp+var_90], r9b", "mov [rbp+var_88], rcx", "call cs:iswprint_ptr", "mov rcx, [rbp+var_88]", "movzx r9d, byte ptr [rbp+var_90]", "test eax, eax", "movzx r11d, byte ptr [rbp+var_B8]", "mov r8, [rbp+var_C0]", "jnz loc_4E34"], "succs": [[272, "fall"], [405, "jump"]]}, {"id": 272, "start": 18357, "end": 18368, "lines": ["nop word ptr [rax+rax+00000000h]"], "succs": [[273, "fall"]]}, {"id": 273, "start": 18368, "end": 18375, "lines": ["movzx eax, [rbp+var_65]", "xor r14d, r14d"], "succs": [[274, "fall"]]}, {"id": 274, "start": 18375, "end": 18391, "lines": ["lea rdx, [rcx+r13]", "add r13, 1", "test al, al", "jz loc_4CDB"], "succs": [[275, "fall"], [373, "jump"]]}, {"id": 275, "start": 18391, "end": 18401, "lines": ["cmp [rbp+var_61], 0", "jnz loc_4A49"], "succs": [[276, "fall"], [328, "jump"]]}, {"id": 276, "start": 18401, "end": 18411, "lines": ["movzx ecx, [rbp+var_64]", "mov rsi, [rbp+var_58]", "jmp short loc_4806"], "succs": [[280, "jump"]]}, {"id": 277, "start": 18416, "end": 18421, "lines": ["cmp rax, r15", "jnb short loc_47F9"], "succs": [[278, "fall"], [279, "jump"]]}, {"id": 278, "start": 18421, "end": 18425, "lines": ["mov [r12+rax], r9b"], "succs": [[279, "fall"]]}, {"id": 279, "start": 18425, "end": 18438, "lines": ["movzx r9d, byte ptr [rsi+r13]", "add rbx, 4", "add r13, 1"], "succs": [[280, "fall"]]}, {"id": 280, "start": 18438, "end": 18448, "lines": ["mov eax, r11d", "xor eax, 1", "and al, cl", "jz short loc_483F"], "succs": [[281, "fall"], [288, "jump"]]}, {"id": 281, "start": 18448, "end": 18453, "lines": ["cmp rbx, r15", "jnb short loc_481A"], "succs": [[282, "fall"], [283, "jump"]]}, {"id": 282, "start": 18453, "end": 18458, "lines": ["mov byte ptr [r12+rbx], 27h ; '''"], "succs": [[283, "fall"]]}, {"id": 283, "start": 18458, "end": 18467, "lines": ["lea rdi, [rbx+1]", "cmp rdi, r15", "jnb short loc_4829"], "succs": [[284, "fall"], [285, "jump"]]}, {"id": 284, "start": 18467, "end": 18473, "lines": ["mov byte ptr [r12+rbx+1], 24h ; '$'"], "succs": [[285, "fall"]]}, {"id": 285, "start": 18473, "end": 18482, "lines": ["lea rdi, [rbx+2]", "cmp rdi, r15", "jnb short loc_4838"], "succs": [[286, "fall"], [287, "jump"]]}, {"id": 286, "start": 18482, "end": 18488, "lines": ["mov byte ptr [r12+rbx+2], 27h ; '''"], "succs": [[287, "fall"]]}, {"id": 287, "start": 18488, "end": 18495, "lines": ["add rbx, 3", "mov r11d, eax"], "succs": [[288, "fall"]]}, {"id": 288, "start": 18495, "end": 18500, "lines": ["cmp rbx, r15", "jnb short loc_4849"], "succs": [[289, "fall"], [290, "jump"]]}, {"id": 289, "start": 18500, "end": 18505, "lines": ["mov byte ptr [r12+rbx], 5Ch ; '\\'"], "succs": [[290, "fall"]]}, {"id": 290, "start": 18505, "end": 18514, "lines": ["lea rax, [rbx+1]", "cmp rax, r15", "jnb short loc_4860"], "succs": [[291, "fall"], [292, "jump"]]}, {"id": 291, "start": 18514, "end": 18528, "lines": ["mov eax, r9d", "shr al, 6", "add eax, 30h ; '0'", "mov [r12+rbx+1], al"], "succs": [[292, "fall"]]}, {"id": 292, "start": 18528, "end": 18537, "lines": ["lea rax, [rbx+2]", "cmp rax, r15", "jnb short loc_487A"], "succs": [[293, "fall"], [294, "jump"]]}, {"id": 293, "start": 18537, "end": 18554, "lines": ["mov eax, r9d", "shr al, 3", "and eax, 7", "add eax, 30h ; '0'", "mov [r12+rbx+2], al"], "succs": [[294, "fall"]]}, {"id": 294, "start": 18554, "end": 18575, "lines": ["and r9d, 7", "lea rax, [rbx+3]", "add r9d, 30h ; '0'", "cmp r13, rdx", "jb loc_47F0"], "succs": [[277, "jump"], [295, "fall"]]}, {"id": 295, "start": 18575, "end": 18587, "lines": ["mov [rbp+var_63], 0", "mov rbx, rax", "jmp loc_3995"], "succs": [[36, "jump"]]}, {"id": 296, "start": 18592, "end": 18602, "lines": ["cmp r9b, 7Ah ; 'z'", "jg loc_4A79"], "succs": [[297, "fall"], [331, "jump"]]}, {"id": 297, "start": 18602, "end": 18612, "lines": ["cmp r9b, 40h ; '@'", "jz def_4075; jumptable 0000000000004075 default case, cases 1-6,14-31"], "succs": [[147, "jump"], [298, "fall"]]}, {"id": 298, "start": 18612, "end": 18643, "lines": ["lea ecx, [r9-41h]", "mov eax, 1", "shl rax, cl", "mov rcx, 3FFFFFF53FFFFFFh", "test rax, rcx", "jnz loc_4080; jumptable 0000000000004075 cases 37,43-58"], "succs": [[144, "jump"], [299, "fall"]]}, {"id": 299, "start": 18643, "end": 18654, "lines": ["test eax, 0A4000000h", "jnz loc_41F8; jumptable 0000000000004075 cases 33,34,36,38,40-42,59-62"], "succs": [[158, "jump"], [300, "fall"]]}, {"id": 300, "start": 18654, "end": 18664, "lines": ["cmp [rbp+var_7C], 2", "jz loc_465A"], "succs": [[246, "jump"], [301, "fall"]]}, {"id": 301, "start": 18664, "end": 18674, "lines": ["cmp [rbp+var_65], 0", "jnz loc_4AA7"], "succs": [[302, "fall"], [335, "jump"]]}, {"id": 302, "start": 18674, "end": 18693, "lines": ["movzx eax, [rbp+var_62]", "mov ecx, r9d", "xor edx, edx", "mov byte ptr [rbp+var_60], al", "xor eax, eax", "jmp loc_4302"], "succs": [[179, "jump"]]}, {"id": 303, "start": 18696, "end": 18711, "lines": ["mov [rbp+var_63], 0", "mov r9d, 5Ch ; '\\'", "jmp loc_3AD9"], "succs": [[58, "jump"]]}, {"id": 304, "start": 18711, "end": 18725, "lines": ["mov byte ptr [rbp+var_60], 0", "mov ecx, r9d", "xor edx, edx", "jmp loc_3B6C"], "succs": [[70, "jump"]]}, {"id": 305, "start": 18728, "end": 18739, "lines": ["movzx edx, [rbp+var_62]", "xor eax, eax", "jmp loc_3AC4"], "succs": [[56, "jump"]]}, {"id": 306, "start": 18744, "end": 18760, "lines": ["mov byte ptr [rbp+var_60], 0", "movzx edx, [rbp+var_66]", "mov ecx, r9d", "jmp loc_4300"], "succs": [[178, "jump"]]}, {"id": 307, "start": 18768, "end": 18777, "lines": ["movzx edx, [rbp+var_61]", "xor dl, 1", "jz short loc_4963"], "succs": [[308, "fall"], [309, "jump"]]}, {"id": 308, "start": 18777, "end": 18787, "lines": ["cmp [rbp+var_64], 0", "jnz loc_39ED"], "succs": [[43, "jump"], [309, "fall"]]}, {"id": 309, "start": 18787, "end": 18792, "lines": ["mov eax, edx", "mov r11, rbx"], "succs": [[310, "fall"]]}, {"id": 310, "start": 18792, "end": 18804, "lines": ["mov rdi, [rbp+s2]", "test rdi, rdi", "jz short loc_49A6"], "succs": [[311, "fall"], [318, "jump"]]}, {"id": 311, "start": 18804, "end": 18808, "lines": ["test al, al", "jz short loc_49A6"], "succs": [[312, "fall"], [318, "jump"]]}, {"id": 312, "start": 18808, "end": 18818, "lines": ["movzx ecx, byte ptr [rdi]", "mov rax, rdi", "test cl, cl", "jz short loc_49A6"], "succs": [[313, "fall"], [318, "jump"]]}, {"id": 313, "start": 18818, "end": 18831, "lines": ["mov rsi, [rbp+var_E0]", "mov rdx, r11", "sub rax, r11"], "succs": [[314, "fall"]]}, {"id": 314, "start": 18831, "end": 18836, "lines": ["cmp rdx, r15", "jnb short loc_4997"], "succs": [[315, "fall"], [316, "jump"]]}, {"id": 315, "start": 18836, "end": 18839, "lines": ["mov [rsi+rdx], cl"], "succs": [[316, "fall"]]}, {"id": 316, "start": 18839, "end": 18851, "lines": ["add rdx, 1", "movzx ecx, byte ptr [rax+rdx]", "test cl, cl", "jnz short loc_498F"], "succs": [[314, "jump"], [317, "fall"]]}, {"id": 317, "start": 18851, "end": 18854, "lines": ["mov r11, rdx"], "succs": [[318, "fall"]]}, {"id": 318, "start": 18854, "end": 18859, "lines": ["cmp r11, r15", "jnb short loc_49B7"], "succs": [[319, "fall"], [320, "jump"]]}, {"id": 319, "start": 18859, "end": 18871, "lines": ["mov rax, [rbp+var_E0]", "mov byte ptr [rax+r11], 0"], "succs": [[320, "fall"]]}, {"id": 320, "start": 18871, "end": 18890, "lines": ["mov rax, [rbp+var_38]", "sub rax, fs:28h", "jnz loc_4F5D"], "succs": [[321, "fall"], [422, "jump"]]}, {"id": 321, "start": 18890, "end": 18911, "lines": ["add rsp, 0B8h", "mov rax, r11", "pop rbx", "pop r12", "pop r13", "pop r14", "pop r15", "pop rbp", "retn"], "succs": []}, {"id": 322, "start": 18911, "end": 18925, "lines": ["add r13, 1", "cmp [rbp+var_7E], 0", "jz loc_4B95"], "succs": [[323, "fall"], [352, "jump"]]}, {"id": 323, "start": 18925, "end": 18955, "lines": ["mov [rbp+var_A8], r15", "movzx r11d, [rbp+var_7E]", "add rbx, 6", "xor r15d, r15d", "mov r9d, 27h ; '''", "jmp loc_3991"], "succs": [[35, "jump"]]}, {"id": 324, "start": 18955, "end": 18969, "lines": ["add r13, 1", "cmp r8, 0FFFFFFFFFFFFFFFFh", "jz loc_39B3"], "succs": [[39, "jump"], [325, "fall"]]}, {"id": 325, "start": 18969, "end": 18978, "lines": ["cmp r13, r8", "jz loc_39D0"], "succs": [[40, "jump"], [326, "fall"]]}, {"id": 326, "start": 18978, "end": 18991, "lines": ["mov rax, [rbp+var_58]", "lea r10, [rax+r13]", "jmp loc_38BB"], "succs": [[13, "jump"]]}, {"id": 327, "start": 18991, "end": 19017, "lines": ["xor eax, eax", "xor ecx, ecx", "mov [rbp+var_63], 0", "add r13, 1", "xor eax, 1", "mov r9d, ecx", "and eax, r11d", "jmp loc_3AD1"], "succs": [[57, "jump"]]}, {"id": 328, "start": 19017, "end": 19035, "lines": ["movzx eax, [rbp+var_64]", "mov r14, r8", "mov rbx, r12", "mov [rbp+var_65], al", "jmp loc_3B20"], "succs": [[66, "jump"]]}, {"id": 329, "start": 19035, "end": 19050, "lines": ["mov r11d, eax", "mov ecx, 30h ; '0'", "xor edx, edx", "jmp loc_4302"], "succs": [[179, "jump"]]}, {"id": 330, "start": 19050, "end": 19065, "lines": ["mov [rbp+var_63], 0", "mov r9d, 5Ch ; '\\'", "jmp loc_399A"], "succs": [[37, "jump"]]}, {"id": 331, "start": 19065, "end": 19082, "lines": ["movzx eax, [rbp+var_62]", "mov byte ptr [rbp+var_60], al", "cmp r9b, 7Dh ; '}'", "jz loc_45BE"], "succs": [[231, "jump"], [332, "fall"]]}, {"id": 332, "start": 19082, "end": 19088, "lines": ["jg loc_4C48"], "succs": [[333, "fall"], [364, "jump"]]}, {"id": 333, "start": 19088, "end": 19098, "lines": ["cmp r9b, 7Bh ; '{'", "jz loc_45BE"], "succs": [[231, "jump"], [334, "fall"]]}, {"id": 334, "start": 19098, "end": 19111, "lines": ["xor edx, edx", "mov r9d, 7Ch ; '|'", "jmp loc_3B06"], "succs": [[64, "jump"]]}, {"id": 335, "start": 19111, "end": 19139, "lines": ["mov eax, r11d", "mov [rbp+var_63], 0", "add r13, 1", "mov r9d, 5Ch ; '\\'", "xor eax, 1", "and al, [rbp+var_64]", "jmp loc_3954"], "succs": [[25, "jump"]]}, {"id": 336, "start": 19139, "end": 19160, "lines": ["movzx eax, [rbp+var_9D]", "mov rbx, rsi", "mov r9d, 30h ; '0'", "jmp loc_3ABA"], "succs": [[55, "jump"]]}, {"id": 337, "start": 19160, "end": 19172, "lines": ["movzx edx, [rbp+var_61]", "test dl, dl", "jz loc_4938"], "succs": [[306, "jump"], [338, "fall"]]}, {"id": 338, "start": 19172, "end": 19186, "lines": ["mov ecx, r9d", "cmp [rbp+var_70], 0", "jz loc_46D2"], "succs": [[257, "jump"], [339, "fall"]]}, {"id": 339, "start": 19186, "end": 19195, "lines": ["mov byte ptr [rbp+var_60], 0", "jmp loc_3B81"], "succs": [[72, "jump"]]}, {"id": 340, "start": 19195, "end": 19205, "lines": ["cmp byte ptr [rbp+var_60], 0", "jz loc_4D84"], "succs": [[341, "fall"], [392, "jump"]]}, {"id": 341, "start": 19205, "end": 19226, "lines": ["mov [rbp+var_63], 0", "mov r13, rcx", "mov rbx, rsi", "mov r9d, 30h ; '0'", "jmp loc_3987"], "succs": [[33, "jump"]]}, {"id": 342, "start": 19226, "end": 19239, "lines": ["movzx eax, [rbp+var_65]", "xor edx, edx", "xor ecx, ecx", "jmp loc_3A96"], "succs": [[50, "jump"]]}, {"id": 343, "start": 19239, "end": 19253, "lines": ["mov rax, [rbp+var_C8]", "xor ecx, ecx", "cmp r13, r8", "jb short loc_4B49"], "succs": [[344, "fall"], [346, "jump"]]}, {"id": 344, "start": 19253, "end": 19258, "lines": ["jmp loc_4F52"], "succs": [[421, "jump"]]}, {"id": 345, "start": 19264, "end": 19273, "lines": ["add rcx, 1", "cmp rax, rcx", "jz short loc_4B50"], "succs": [[346, "fall"], [347, "jump"]]}, {"id": 346, "start": 19273, "end": 19280, "lines": ["cmp byte ptr [r10+rcx], 0", "jnz short loc_4B40"], "succs": [[345, "jump"], [347, "fall"]]}, {"id": 347, "start": 19280, "end": 19294, "lines": ["movzx eax, [rbp+var_65]", "cmp rcx, 1", "ja loc_4DF4"], "succs": [[348, "fall"], [401, "jump"]]}, {"id": 348, "start": 19294, "end": 19301, "lines": ["xor edx, edx", "jmp loc_3A96"], "succs": [[50, "jump"]]}, {"id": 349, "start": 19301, "end": 19310, "lines": ["mov byte ptr [rbp+var_60], 0", "jmp loc_45C8"], "succs": [[232, "jump"]]}, {"id": 350, "start": 19310, "end": 19320, "lines": ["cmp [rbp+var_61], 0", "jnz loc_475F"], "succs": [[270, "jump"], [351, "fall"]]}, {"id": 351, "start": 19320, "end": 19349, "lines": ["xor eax, eax", "mov ecx, 3Fh ; '?'", "mov [rbp+var_63], 0", "add r13, 1", "xor eax, 1", "mov r9d, ecx", "and eax, r11d", "jmp loc_3AD1"], "succs": [[57, "jump"]]}, {"id": 352, "start": 19349, "end": 19374, "lines": ["mov [rbp+var_A8], r15", "add rbx, 3", "xor r11d, r11d", "xor r15d, r15d", "mov [rbp+var_7E], al", "jmp loc_399E"], "succs": [[38, "jump"]]}, {"id": 353, "start": 19374, "end": 19403, "lines": ["xor eax, eax", "mov ecx, 7", "mov [rbp+var_63], 0", "add r13, 1", "xor eax, 1", "mov r9d, ecx", "and eax, r11d", "jmp loc_3AD1"], "succs": [[57, "jump"]]}, {"id": 354, "start": 19403, "end": 19425, "lines": ["xor ecx, ecx", "xor edx, edx", "add r13, 1", "and [rbp+var_63], dl", "mov eax, r11d", "mov r9d, ecx", "jmp loc_3AD1"], "succs": [[57, "jump"]]}, {"id": 355, "start": 19425, "end": 19438, "lines": ["xor edx, edx", "mov r9d, 61h ; 'a'", "jmp loc_3937"], "succs": [[22, "jump"]]}, {"id": 356, "start": 19438, "end": 19456, "lines": ["mov [rbp+var_63], 0", "mov r11d, eax", "mov r9d, 30h ; '0'", "jmp loc_3995"], "succs": [[36, "jump"]]}, {"id": 357, "start": 19456, "end": 19461, "lines": ["cmp rsi, r15", "jnb short loc_4C0A"], "succs": [[358, "fall"], [359, "jump"]]}, {"id": 358, "start": 19461, "end": 19466, "lines": ["mov byte ptr [r12+rsi], 30h ; '0'"], "succs": [[359, "fall"]]}, {"id": 359, "start": 19466, "end": 19475, "lines": ["lea rax, [rbx+2]", "cmp rax, r15", "jnb short loc_4C19"], "succs": [[360, "fall"], [361, "jump"]]}, {"id": 360, "start": 19475, "end": 19481, "lines": ["mov byte ptr [r12+rbx+2], 30h ; '0'"], "succs": [[361, "fall"]]}, {"id": 361, "start": 19481, "end": 19498, "lines": ["mov rax, [rbp+var_70]", "add rbx, 3", "test rax, rax", "jz loc_4E15"], "succs": [[362, "fall"], [403, "jump"]]}, {"id": 362, "start": 19498, "end": 19510, "lines": ["xor edx, edx", "test byte ptr [rax+6], 1", "jnz loc_4550"], "succs": [[222, "jump"], [363, "fall"]]}, {"id": 363, "start": 19510, "end": 19528, "lines": ["movzx eax, [rbp+var_9D]", "mov r9d, 30h ; '0'", "jmp loc_3ABA"], "succs": [[55, "jump"]]}, {"id": 364, "start": 19528, "end": 19538, "lines": ["cmp r9b, 7Eh ; '~'", "jz loc_3D70"], "succs": [[110, "jump"], [365, "fall"]]}, {"id": 365, "start": 19538, "end": 19549, "lines": ["mov r9d, 7Fh", "jmp loc_3A34"], "succs": [[48, "jump"]]}, {"id": 366, "start": 19549, "end": 19559, "lines": ["cmp rax, 1", "jz loc_4EFC"], "succs": [[367, "fall"], [419, "jump"]]}, {"id": 367, "start": 19559, "end": 19583, "lines": ["mov rax, [rbp+var_58]", "add r10, rcx", "mov rsi, 20000002Bh", "lea rdx, [rax+r13+1]", "jmp short loc_4C8D"], "succs": [[369, "jump"]]}, {"id": 368, "start": 19584, "end": 19597, "lines": ["add rdx, 1", "cmp rdx, r10", "jz loc_476A"], "succs": [[271, "jump"], [369, "fall"]]}, {"id": 369, "start": 19597, "end": 19607, "lines": ["movzx eax, byte ptr [rdx]", "sub eax, 5Bh ; '['", "cmp al, 21h ; '!'", "ja short loc_4C80"], "succs": [[368, "jump"], [370, "fall"]]}, {"id": 370, "start": 19607, "end": 19613, "lines": ["bt rsi, rax", "jnb short loc_4C80"], "succs": [[368, "jump"], [371, "fall"]]}, {"id": 371, "start": 19613, "end": 19618, "lines": ["jmp loc_3B0C"], "succs": [[65, "jump"]]}, {"id": 372, "start": 19618, "end": 19675, "lines": ["movzx eax, [rbp+var_61]", "mov [rbp+var_62], 0", "xor ebx, ebx", "mov [rbp+var_7D], 0", "mov [rbp+var_66], al", "mov [rbp+var_67], al", "mov [rbp+var_64], al", "lea rax, asc_8348+2; \"'`\"", "mov [rbp+var_9D], 0", "mov [rbp+n], 1", "mov [rbp+s2], rax", "jmp loc_3880"], "succs": [[8, "jump"]]}, {"id": 373, "start": 19675, "end": 19684, "lines": ["mov eax, r11d", "cmp byte ptr [rbp+var_60], 0", "jz short loc_4CF2"], "succs": [[374, "fall"], [377, "jump"]]}, {"id": 374, "start": 19684, "end": 19689, "lines": ["cmp rbx, r15", "jnb short loc_4CEE"], "succs": [[375, "fall"], [376, "jump"]]}, {"id": 375, "start": 19689, "end": 19694, "lines": ["mov byte ptr [r12+rbx], 5Ch ; '\\'"], "succs": [[376, "fall"]]}, {"id": 376, "start": 19694, "end": 19698, "lines": ["add rbx, 1"], "succs": [[377, "fall"]]}, {"id": 377, "start": 19698, "end": 19703, "lines": ["cmp r13, rdx", "jnb short loc_4D54"], "succs": [[378, "fall"], [388, "jump"]]}, {"id": 378, "start": 19703, "end": 19707, "lines": ["test al, al", "jz short loc_4D35"], "succs": [[379, "fall"], [386, "jump"]]}, {"id": 379, "start": 19707, "end": 19712, "lines": ["cmp rbx, r15", "jnb short loc_4D05"], "succs": [[380, "fall"], [381, "jump"]]}, {"id": 380, "start": 19712, "end": 19717, "lines": ["mov byte ptr [r12+rbx], 27h ; '''"], "succs": [[381, "fall"]]}, {"id": 381, "start": 19717, "end": 19726, "lines": ["lea rax, [rbx+1]", "cmp rax, r15", "jnb short loc_4D14"], "succs": [[382, "fall"], [383, "jump"]]}, {"id": 382, "start": 19726, "end": 19732, "lines": ["mov byte ptr [r12+rbx+1], 27h ; '''"], "succs": [[383, "fall"]]}, {"id": 383, "start": 19732, "end": 19741, "lines": ["lea rax, [rbx+2]", "cmp rax, r15", "jb short loc_4D60"], "succs": [[384, "fall"], [390, "jump"]]}, {"id": 384, "start": 19741, "end": 19763, "lines": ["mov rax, [rbp+var_58]", "add rbx, 3", "movzx r9d, byte ptr [rax+r13]", "add r13, 1", "cmp r13, rdx", "jnb short loc_4D7D"], "succs": [[385, "fall"], [391, "jump"]]}, {"id": 385, "start": 19763, "end": 19765, "lines": ["xor eax, eax"], "succs": [[386, "fall"]]}, {"id": 386, "start": 19765, "end": 19774, "lines": ["cmp rbx, r15", "jb loc_4DDA"], "succs": [[387, "fall"], [400, "jump"]]}, {"id": 387, "start": 19774, "end": 19796, "lines": ["mov rcx, [rbp+var_58]", "add rbx, 1", "movzx r9d, byte ptr [rcx+r13]", "add r13, 1", "cmp r13, rdx", "jb short loc_4CF7"], "succs": [[378, "jump"], [388, "fall"]]}, {"id": 388, "start": 19796, "end": 19799, "lines": ["mov r11d, eax"], "succs": [[389, "fall"]]}, {"id": 389, "start": 19799, "end": 19808, "lines": ["and [rbp+var_63], r14b", "jmp loc_3AD1"], "succs": [[57, "jump"]]}, {"id": 390, "start": 19808, "end": 19837, "lines": ["mov rax, [rbp+var_58]", "mov [r12+rbx+2], r9b", "add rbx, 3", "movzx r9d, byte ptr [rax+r13]", "add r13, 1", "xor eax, eax", "jmp loc_4CF2"], "succs": [[377, "jump"]]}, {"id": 391, "start": 19837, "end": 19844, "lines": ["xor r11d, r11d", "xor eax, eax", "jmp short loc_4D57"], "succs": [[389, "jump"]]}, {"id": 392, "start": 19844, "end": 19865, "lines": ["mov [rbp+var_63], 0", "mov r13, rcx", "mov rbx, rsi", "mov r9d, 30h ; '0'", "jmp loc_3995"], "succs": [[36, "jump"]]}, {"id": 393, "start": 19865, "end": 19877, "lines": ["add r13, 1", "mov ecx, r9d", "jmp loc_4313"], "succs": [[180, "jump"]]}, {"id": 394, "start": 19877, "end": 19895, "lines": ["mov rdx, [rbp+var_D8]", "movzx eax, byte ptr [rdx]", "test al, al", "jz loc_3836"], "succs": [[7, "jump"], [395, "fall"]]}, {"id": 395, "start": 19895, "end": 19904, "lines": ["nop word ptr [rax+rax+00000000h]"], "succs": [[396, "fall"]]}, {"id": 396, "start": 19904, "end": 19909, "lines": ["cmp rbx, r15", "jnb short loc_4DC9"], "succs": [[397, "fall"], [398, "jump"]]}, {"id": 397, "start": 19909, "end": 19913, "lines": ["mov [r12+rbx], al"], "succs": [[398, "fall"]]}, {"id": 398, "start": 19913, "end": 19925, "lines": ["add rbx, 1", "movzx eax, byte ptr [rdx+rbx]", "test al, al", "jnz short loc_4DC0"], "succs": [[396, "jump"], [399, "fall"]]}, {"id": 399, "start": 19925, "end": 19930, "lines": ["jmp loc_3836"], "succs": [[7, "jump"]]}, {"id": 400, "start": 19930, "end": 19956, "lines": ["mov rdi, [rbp+var_58]", "mov [r12+rbx], r9b", "add rbx, 1", "movzx r9d, byte ptr [rdi+r13]", "add r13, 1", "jmp loc_4CF2"], "succs": [[377, "jump"]]}, {"id": 401, "start": 19956, "end": 19964, "lines": ["xor r14d, r14d", "jmp loc_47C7"], "succs": [[274, "jump"]]}, {"id": 402, "start": 19964, "end": 19989, "lines": ["mov ecx, 7", "xor edx, edx", "add r13, 1", "and [rbp+var_63], dl", "mov eax, r11d", "mov r9d, ecx", "jmp loc_3AD1"], "succs": [[57, "jump"]]}, {"id": 403, "start": 19989, "end": 20002, "lines": ["mov rsi, rbx", "cmp byte ptr [rbp+var_60], 0", "jnz loc_4B05"], "succs": [[341, "jump"], [404, "fall"]]}, {"id": 404, "start": 20002, "end": 20020, "lines": ["mov [rbp+var_63], 0", "mov r13, rcx", "mov r9d, 30h ; '0'", "jmp loc_3995"], "succs": [[36, "jump"]]}, {"id": 405, "start": 20020, "end": 20027, "lines": ["xor eax, eax", "jmp loc_47C7"], "succs": [[274, "jump"]]}, {"id": 406, "start": 20027, "end": 20046, "lines": ["mov r9d, ecx", "xor edx, edx", "mov r13, rsi", "cmp [rbp+var_70], 0", "jnz loc_3914"], "succs": [[20, "jump"], [407, "fall"]]}, {"id": 407, "start": 20046, "end": 20058, "lines": ["xor eax, eax", "cmp byte ptr [rbp+var_60], 0", "jz loc_3AC4"], "succs": [[56, "jump"], [408, "fall"]]}, {"id": 408, "start": 20058, "end": 20067, "lines": ["lea rcx, [rsi+1]", "jmp loc_3945"], "succs": [[24, "jump"]]}, {"id": 409, "start": 20067, "end": 20075, "lines": ["mov [rbp+var_7E], al", "jmp loc_46FA"], "succs": [[261, "jump"]]}, {"id": 410, "start": 20075, "end": 20101, "lines": ["cmp byte ptr [rbp+var_60], 0", "mov [rbp+var_63], 0", "mov r13, rcx", "mov rbx, rsi", "mov r9d, 30h ; '0'", "jnz loc_3987"], "succs": [[33, "jump"], [411, "fall"]]}, {"id": 411, "start": 20101, "end": 20106, "lines": ["jmp loc_3995"], "succs": [[36, "jump"]]}, {"id": 412, "start": 20106, "end": 20118, "lines": ["movzx eax, [rbp+var_7E]", "mov r11, rbx", "jmp loc_4968"], "succs": [[310, "jump"]]}, {"id": 413, "start": 20118, "end": 20143, "lines": ["mov [rbp+var_7C], 5", "mov r15, [rbp+var_A8]", "mov r14, r8", "mov rbx, r12", "jmp loc_3780"], "succs": [[1, "jump"]]}, {"id": 414, "start": 20143, "end": 20156, "lines": ["mov r11, rbx", "mov eax, 1", "jmp loc_4968"], "succs": [[310, "jump"]]}, {"id": 415, "start": 20156, "end": 20173, "lines": ["xor edx, edx", "mov r9d, 76h ; 'v'", "lea rcx, [r13+1]", "jmp loc_3945"], "succs": [[24, "jump"]]}, {"id": 416, "start": 20173, "end": 20190, "lines": ["xor edx, edx", "mov r9d, 62h ; 'b'", "lea rcx, [r13+1]", "jmp loc_3945"], "succs": [[24, "jump"]]}, {"id": 417, "start": 20190, "end": 20203, "lines": ["xor edx, edx", "mov r9d, 61h ; 'a'", "jmp loc_3941"], "succs": [[23, "jump"]]}, {"id": 418, "start": 20203, "end": 20220, "lines": ["xor edx, edx", "mov r9d, 66h ; 'f'", "lea rcx, [r13+1]", "jmp loc_3945"], "succs": [[24, "jump"]]}, {"id": 419, "start": 20220, "end": 20288, "lines": ["mov [rbp+var_C0], r8", "mov edi, [rbp+wc]; wc", "mov byte ptr [rbp+var_B8], r11b", "mov byte ptr [rbp+var_90], r9b", "mov [rbp+var_88], rax", "call cs:iswprint_ptr", "movzx r9d, byte ptr [rbp+var_90]", "movzx r11d, byte ptr [rbp+var_B8]", "test eax, eax", "mov r8, [rbp+var_C0]", "jnz loc_41F0"], "succs": [[157, "jump"], [420, "fall"]]}, {"id": 420, "start": 20288, "end": 20306, "lines": ["movzx eax, [rbp+var_65]", "mov rcx, [rbp+var_88]", "xor edx, edx", "jmp loc_3A96"], "succs": [[50, "jump"]]}, {"id": 421, "start": 20306, "end": 20317, "lines": ["movzx eax, [rbp+var_65]", "xor edx, edx", "jmp loc_3A96"], "succs": [[50, "jump"]]}, {"id": 422, "start": 20317, "end": 20323, "lines": ["call cs:__stack_chk_fail_ptr"], "succs": []}, {"id": 423, "start": 9275, "end": 9281, "lines": ["call cs:abort_ptr; jumptable 00000000000037E7 default case"], "succs": []}]}, {"name": "sub_69C0", "ea": 27072, "blocks": [{"id": 0, "start": 27072, "end": 27115, "lines": ["endbr64", "push rbp", "mov rbp, rsp", "push r14", "push r13", "push r12", "push rbx", "sub rsp, 20h", "mov rax, fs:28h", "mov [rbp+var_28], rax", "xor eax, eax", "test rsi, rsi", "jz loc_6C28"], "succs": [[1, "fall"], [41, "jump"]]}, {"id": 1, "start": 27115, "end": 27130, "lines": ["mov r12, rdi", "mov rbx, rsi", "test rdx, rdx", "jz loc_6D80"], "succs": [[2, "fall"], [65, "jump"]]}, {"id": 2, "start": 27130, "end": 27161, "lines": ["test rcx, rcx", "lea rax, unk_C278", "cmovnz rax, rcx", "mov r13, rax", "mov eax, cs:dword_C0A0", "test eax, eax", "js loc_6C40"], "succs": [[3, "fall"], [42, "jump"]]}, {"id": 3, "start": 27161, "end": 27169, "lines": ["test eax, eax", "jz loc_6C61"], "succs": [[4, "fall"], [44, "jump"]]}, {"id": 4, "start": 27169, "end": 27189, "lines": ["mov eax, [r13+0]", "mov r9d, eax", "mov r8d, eax", "and r9d, 7", "and r8d, 7", "jnz short loc_6A80"], "succs": [[5, "fall"], [12, "jump"]]}, {"id": 5, "start": 27189, "end": 27202, "lines": ["movsx ecx, byte ptr [rbx]", "mov eax, ecx", "test cl, cl", "jns loc_6D38"], "succs": [[6, "fall"], [58, "jump"]]}, {"id": 6, "start": 27202, "end": 27211, "lines": ["cmp cl, 0C1h", "jbe loc_6BE0"], "succs": [[7, "fall"], [37, "jump"]]}, {"id": 7, "start": 27211, "end": 27220, "lines": ["cmp cl, 0DFh", "ja loc_6B30"], "succs": [[8, "fall"], [20, "jump"]]}, {"id": 8, "start": 27220, "end": 27230, "lines": ["cmp rdx, 1", "jz loc_6EF0"], "succs": [[9, "fall"], [97, "jump"]]}, {"id": 9, "start": 27230, "end": 27246, "lines": ["movzx edx, byte ptr [rbx+1]", "add edx, 0FFFFFF80h", "cmp dl, 3Fh ; '?'", "ja loc_6BE0"], "succs": [[10, "fall"], [37, "jump"]]}, {"id": 10, "start": 27246, "end": 27255, "lines": ["test r12, r12", "jnz loc_6E00"], "succs": [[11, "fall"], [75, "jump"]]}, {"id": 11, "start": 27255, "end": 27260, "lines": ["jmp loc_6E11"], "succs": [[76, "jump"]]}, {"id": 12, "start": 27264, "end": 27283, "lines": ["mov r11d, eax", "sar r11d, 8", "movsxd rsi, r11d", "cmp r9, rsi", "jnb loc_6D20"], "succs": [[13, "fall"], [57, "jump"]]}, {"id": 13, "start": 27283, "end": 27293, "lines": ["cmp rsi, 4", "ja loc_6D20"], "succs": [[14, "fall"], [57, "jump"]]}, {"id": 14, "start": 27293, "end": 27339, "lines": ["mov r10d, [r13+4]", "lea ecx, [rsi+rsi*2-3]", "mov edi, 100h", "add ecx, ecx", "mov r14d, r10d", "shr r14d, cl", "mov ecx, r11d", "sar edi, cl", "neg edi", "or edi, r14d", "mov [rbp+var_2C], dil", "movzx edi, byte ptr [rbx]", "test al, 6", "jz loc_6D90"], "succs": [[15, "fall"], [66, "jump"]]}, {"id": 15, "start": 27339, "end": 27369, "lines": ["lea ecx, [rsi+rsi*2-6]", "mov eax, r10d", "add ecx, ecx", "shr eax, cl", "and eax, 3Fh", "or eax, 0FFFFFF80h", "mov [rbp+var_2B], al", "cmp r8d, 2", "jle loc_6D90"], "succs": [[16, "fall"], [66, "jump"]]}, {"id": 16, "start": 27369, "end": 27410, "lines": ["lea ecx, [rsi+rsi*2-9]", "add ecx, ecx", "shr r10d, cl", "and r10d, 3Fh", "or r10d, 0FFFFFF80h", "mov [rbp+var_2A], r10b", "mov [rbp+r9+var_2C], dil", "movzx eax, [rbp+var_2C]", "movsx ecx, al", "test al, al", "jns loc_6D38"], "succs": [[17, "fall"], [58, "jump"]]}, {"id": 17, "start": 27410, "end": 27418, "lines": ["cmp al, 0C1h", "jbe loc_6BE0"], "succs": [[18, "fall"], [37, "jump"]]}, {"id": 18, "start": 27418, "end": 27426, "lines": ["cmp al, 0DFh", "jbe loc_6EB4"], "succs": [[19, "fall"], [91, "jump"]]}, {"id": 19, "start": 27426, "end": 27440, "lines": ["lea rdx, [r9+1]", "lea rbx, [rbp+var_2C]", "nop word ptr [rax+rax+00h]"], "succs": [[20, "fall"]]}, {"id": 20, "start": 27440, "end": 27448, "lines": ["cmp al, 0EFh", "jbe loc_6E20"], "succs": [[21, "fall"], [77, "jump"]]}, {"id": 21, "start": 27448, "end": 27456, "lines": ["cmp al, 0F4h", "ja loc_6BE0"], "succs": [[22, "fall"], [37, "jump"]]}, {"id": 22, "start": 27456, "end": 27466, "lines": ["cmp rdx, 1", "jz loc_6F38"], "succs": [[23, "fall"], [102, "jump"]]}, {"id": 23, "start": 27466, "end": 27483, "lines": ["movzx ecx, byte ptr [rbx+1]", "lea esi, [rcx-80h]", "cmp sil, 3Fh ; '?'", "ja loc_6BE0"], "succs": [[24, "fall"], [37, "jump"]]}, {"id": 24, "start": 27483, "end": 27487, "lines": ["cmp al, 0F0h", "jnz short loc_6B64"], "succs": [[25, "fall"], [26, "jump"]]}, {"id": 25, "start": 27487, "end": 27492, "lines": ["cmp cl, 8Fh", "jbe short loc_6BE0"], "succs": [[26, "fall"], [37, "jump"]]}, {"id": 26, "start": 27492, "end": 27496, "lines": ["cmp al, 0F4h", "jnz short loc_6B6D"], "succs": [[27, "fall"], [28, "jump"]]}, {"id": 27, "start": 27496, "end": 27501, "lines": ["cmp cl, 8Fh", "ja short loc_6BE0"], "succs": [[28, "fall"], [37, "jump"]]}, {"id": 28, "start": 27501, "end": 27511, "lines": ["cmp rdx, 2", "jz loc_6FA4"], "succs": [[29, "fall"], [105, "jump"]]}, {"id": 29, "start": 27511, "end": 27523, "lines": ["movzx edi, byte ptr [rbx+2]", "lea ecx, [rdi-80h]", "cmp cl, 3Fh ; '?'", "ja short loc_6BE0"], "succs": [[30, "fall"], [37, "jump"]]}, {"id": 30, "start": 27523, "end": 27533, "lines": ["cmp rdx, 3", "jz loc_6F71"], "succs": [[31, "fall"], [104, "jump"]]}, {"id": 31, "start": 27533, "end": 27545, "lines": ["movzx edx, byte ptr [rbx+3]", "add edx, 0FFFFFF80h", "cmp dl, 3Fh ; '?'", "ja short loc_6BE0"], "succs": [[32, "fall"], [37, "jump"]]}, {"id": 32, "start": 27545, "end": 27550, "lines": ["test r12, r12", "jz short loc_6BC0"], "succs": [[33, "fall"], [34, "jump"]]}, {"id": 33, "start": 27550, "end": 27584, "lines": ["shl eax, 12h", "movsx edx, dl", "movsx esi, sil", "movsx ecx, cl", "shl esi, 0Ch", "and eax, 1C0000h", "shl ecx, 6", "or eax, edx", "or eax, esi", "or eax, ecx", "mov [r12], eax"], "succs": [[34, "fall"]]}, {"id": 34, "start": 27584, "end": 27599, "lines": ["mov eax, 4", "mov edx, 4", "jmp loc_6D4D"], "succs": [[61, "jump"]]}, {"id": 35, "start": 27600, "end": 27615, "lines": ["mov rdx, rsi", "lea rbx, [rbp+var_2C]", "cmp al, 0F4h", "jbe loc_6B4A"], "succs": [[23, "jump"], [36, "fall"]]}, {"id": 36, "start": 27615, "end": 27616, "lines": ["nop"], "succs": [[37, "fall"]]}, {"id": 37, "start": 27616, "end": 27628, "lines": ["call cs:__errno_location_ptr", "mov dword ptr [rax], 54h ; 'T'"], "succs": [[38, "fall"]]}, {"id": 38, "start": 27628, "end": 27648, "lines": ["mov rdx, 0FFFFFFFFFFFFFFFFh", "xchg ax, ax", "nop word ptr [rax+rax+00000000h]"], "succs": [[39, "fall"]]}, {"id": 39, "start": 27648, "end": 27667, "lines": ["mov rax, [rbp+var_28]", "sub rax, fs:28h", "jnz loc_6FD2"], "succs": [[40, "fall"], [107, "jump"]]}, {"id": 40, "start": 27667, "end": 27683, "lines": ["add rsp, 20h", "mov rax, rdx", "pop rbx", "pop r12", "pop r13", "pop r14", "pop rbp", "retn"], "succs": []}, {"id": 41, "start": 27688, "end": 27708, "lines": ["xor r12d, r12d", "mov edx, 1", "lea rbx, accept+3; \"\"", "jmp loc_69FA"], "succs": [[2, "jump"]]}, {"id": 42, "start": 27712, "end": 27735, "lines": ["mov [rbp+n], rdx", "call sub_70A0", "mov rdx, [rbp+n]; n", "cmp byte ptr [rax], 55h ; 'U'", "jz loc_6CE0"], "succs": [[43, "fall"], [52, "jump"]]}, {"id": 43, "start": 27735, "end": 27745, "lines": ["mov cs:dword_C0A0, 0"], "succs": [[44, "fall"]]}, {"id": 44, "start": 27745, "end": 27766, "lines": ["mov rcx, r13; p", "mov rsi, rbx; s", "mov rdi, r12; pc32", "call cs:mbrtoc32_ptr", "cmp rax, 0FFFFFFFFFFFFFFFCh", "jbe short loc_6CB0"], "succs": [[45, "fall"], [50, "jump"]]}, {"id": 45, "start": 27766, "end": 27776, "lines": ["cmp rax, 0FFFFFFFFFFFFFFFDh", "jz loc_2487"], "succs": [[46, "fall"], [108, "jump"]]}, {"id": 46, "start": 27776, "end": 27800, "lines": ["xor edi, edi", "mov [rbp+n], rax", "call sub_7020", "mov rdx, [rbp+n]", "test al, al", "jnz loc_6C00"], "succs": [[39, "jump"], [47, "fall"]]}, {"id": 47, "start": 27800, "end": 27805, "lines": ["test r12, r12", "jz short loc_6CA4"], "succs": [[48, "fall"], [49, "jump"]]}, {"id": 48, "start": 27805, "end": 27812, "lines": ["movzx eax, byte ptr [rbx]", "mov [r12], eax"], "succs": [[49, "fall"]]}, {"id": 49, "start": 27812, "end": 27822, "lines": ["mov edx, 1", "jmp loc_6C00"], "succs": [[39, "jump"]]}, {"id": 50, "start": 27824, "end": 27849, "lines": ["mov [rbp+n], rax", "mov rdi, r13; ps", "call cs:mbsinit_ptr", "mov rdx, [rbp+n]", "test eax, eax", "jnz loc_6C00"], "succs": [[39, "jump"], [51, "fall"]]}, {"id": 51, "start": 27849, "end": 27862, "lines": ["mov qword ptr [r13+0], 0", "jmp loc_6C00"], "succs": [[39, "jump"]]}, {"id": 52, "start": 27872, "end": 27882, "lines": ["cmp byte ptr [rax+1], 54h ; 'T'", "jnz loc_6C57"], "succs": [[43, "jump"], [53, "fall"]]}, {"id": 53, "start": 27882, "end": 27892, "lines": ["cmp byte ptr [rax+2], 46h ; 'F'", "jnz loc_6C57"], "succs": [[43, "jump"], [54, "fall"]]}, {"id": 54, "start": 27892, "end": 27902, "lines": ["cmp byte ptr [rax+3], 2Dh ; '-'", "jnz loc_6C57"], "succs": [[43, "jump"], [55, "fall"]]}, {"id": 55, "start": 27902, "end": 27912, "lines": ["cmp byte ptr [rax+4], 38h ; '8'", "jnz loc_6C57"], "succs": [[43, "jump"], [56, "fall"]]}, {"id": 56, "start": 27912, "end": 27933, "lines": ["cmp byte ptr [rax+5], 0", "setz al", "movzx eax, al", "mov cs:dword_C0A0, eax", "jmp loc_6A19"], "succs": [[3, "jump"]]}, {"id": 57, "start": 27936, "end": 27953, "lines": ["call cs:__errno_location_ptr", "mov dword ptr [rax], 16h", "jmp loc_6BEC"], "succs": [[38, "jump"]]}, {"id": 58, "start": 27960, "end": 27965, "lines": ["test r12, r12", "jz short loc_6D41"], "succs": [[59, "fall"], [60, "jump"]]}, {"id": 59, "start": 27965, "end": 27969, "lines": ["mov [r12], ecx"], "succs": [[60, "fall"]]}, {"id": 60, "start": 27969, "end": 27981, "lines": ["cmp al, 1", "mov eax, 1", "sbb edx, edx", "add edx, 1"], "succs": [[61, "fall"]]}, {"id": 61, "start": 27981, "end": 27990, "lines": ["cmp r9, rax", "jnb loc_2487"], "succs": [[62, "fall"], [108, "jump"]]}, {"id": 62, "start": 27990, "end": 28009, "lines": ["sub edx, r8d", "mov dword ptr [r13+0], 0", "movsxd rdx, edx", "jmp loc_6C00"], "succs": [[39, "jump"]]}, {"id": 63, "start": 28009, "end": 28025, "lines": ["mov dword ptr [r13+0], 301h", "shl eax, 0Ch", "and eax, 0F000h"], "succs": [[64, "fall"]]}, {"id": 64, "start": 28025, "end": 28032, "lines": ["mov [r13+4], eax", "nop dword ptr [rax]"], "succs": [[65, "fall"]]}, {"id": 65, "start": 28032, "end": 28044, "lines": ["mov rdx, 0FFFFFFFFFFFFFFFEh", "jmp loc_6C00"], "succs": [[39, "jump"]]}, {"id": 66, "start": 28048, "end": 28070, "lines": ["mov [rbp+r9+var_2C], dil", "movzx eax, [rbp+var_2C]", "movsx ecx, al", "cmp rdx, 1", "jz loc_6EC0"], "succs": [[67, "fall"], [92, "jump"]]}, {"id": 67, "start": 28070, "end": 28093, "lines": ["movzx edi, byte ptr [rbx+1]", "lea rsi, [r9+2]", "mov [rbp+r9+var_2B], dil", "cmp rdx, 2", "jz loc_6EA0"], "succs": [[68, "fall"], [88, "jump"]]}, {"id": 68, "start": 28093, "end": 28103, "lines": ["cmp rsi, 4", "jz loc_6EA0"], "succs": [[69, "fall"], [88, "jump"]]}, {"id": 69, "start": 28103, "end": 28118, "lines": ["movzx edx, byte ptr [rbx+2]", "mov [rbp+var_29], dl", "test al, al", "jns loc_6D38"], "succs": [[58, "jump"], [70, "fall"]]}, {"id": 70, "start": 28118, "end": 28126, "lines": ["cmp al, 0C1h", "jbe loc_6BE0"], "succs": [[37, "jump"], [71, "fall"]]}, {"id": 71, "start": 28126, "end": 28134, "lines": ["cmp al, 0DFh", "ja loc_6F10"], "succs": [[72, "fall"], [98, "jump"]]}, {"id": 72, "start": 28134, "end": 28150, "lines": ["movzx ebx, [rbp+var_2B]", "lea edx, [rbx-80h]", "cmp dl, 3Fh ; '?'", "ja loc_6BE0"], "succs": [[37, "jump"], [73, "fall"]]}, {"id": 73, "start": 28150, "end": 28159, "lines": ["test r12, r12", "jz loc_6FC8"], "succs": [[74, "fall"], [106, "jump"]]}, {"id": 74, "start": 28159, "end": 28160, "lines": ["nop"], "succs": [[75, "fall"]]}, {"id": 75, "start": 28160, "end": 28177, "lines": ["shl eax, 6", "movsx edx, dl", "and eax, 7C0h", "or eax, edx", "mov [r12], eax"], "succs": [[76, "fall"]]}, {"id": 76, "start": 28177, "end": 28192, "lines": ["mov eax, 2", "mov edx, 2", "jmp loc_6D4D"], "succs": [[61, "jump"]]}, {"id": 77, "start": 28192, "end": 28202, "lines": ["cmp rdx, 1", "jz loc_6D69"], "succs": [[63, "jump"], [78, "fall"]]}, {"id": 78, "start": 28202, "end": 28219, "lines": ["movzx ecx, byte ptr [rbx+1]", "lea esi, [rcx-80h]", "cmp sil, 3Fh ; '?'", "ja loc_6BE0"], "succs": [[37, "jump"], [79, "fall"]]}, {"id": 79, "start": 28219, "end": 28223, "lines": ["cmp al, 0E0h", "jnz short loc_6E48"], "succs": [[80, "fall"], [81, "jump"]]}, {"id": 80, "start": 28223, "end": 28232, "lines": ["cmp cl, 9Fh", "jbe loc_6BE0"], "succs": [[37, "jump"], [81, "fall"]]}, {"id": 81, "start": 28232, "end": 28236, "lines": ["cmp al, 0EDh", "jnz short loc_6E55"], "succs": [[82, "fall"], [83, "jump"]]}, {"id": 82, "start": 28236, "end": 28245, "lines": ["cmp cl, 9Fh", "ja loc_6BE0"], "succs": [[37, "jump"], [83, "fall"]]}, {"id": 83, "start": 28245, "end": 28255, "lines": ["cmp rdx, 2", "jz loc_6F4D"], "succs": [[84, "fall"], [103, "jump"]]}, {"id": 84, "start": 28255, "end": 28271, "lines": ["movzx edx, byte ptr [rbx+2]", "add edx, 0FFFFFF80h", "cmp dl, 3Fh ; '?'", "ja loc_6BE0"], "succs": [[37, "jump"], [85, "fall"]]}, {"id": 85, "start": 28271, "end": 28276, "lines": ["test r12, r12", "jz short loc_6E8E"], "succs": [[86, "fall"], [87, "jump"]]}, {"id": 86, "start": 28276, "end": 28302, "lines": ["shl eax, 0Ch", "movsx edx, dl", "movsx esi, sil", "and eax, 0F000h", "shl esi, 6", "or eax, edx", "or eax, esi", "mov [r12], eax"], "succs": [[87, "fall"]]}, {"id": 87, "start": 28302, "end": 28317, "lines": ["mov eax, 3", "mov edx, 3", "jmp loc_6D4D"], "succs": [[61, "jump"]]}, {"id": 88, "start": 28320, "end": 28328, "lines": ["test al, al", "jns loc_6D38"], "succs": [[58, "jump"], [89, "fall"]]}, {"id": 89, "start": 28328, "end": 28336, "lines": ["cmp al, 0C1h", "jbe loc_6BE0"], "succs": [[37, "jump"], [90, "fall"]]}, {"id": 90, "start": 28336, "end": 28340, "lines": ["cmp al, 0DFh", "ja short loc_6ED8"], "succs": [[91, "fall"], [95, "jump"]]}, {"id": 91, "start": 28340, "end": 28349, "lines": ["lea rbx, [rbp+var_2C]", "jmp loc_6A5E"], "succs": [[9, "jump"]]}, {"id": 92, "start": 28352, "end": 28360, "lines": ["test al, al", "jns loc_6D38"], "succs": [[58, "jump"], [93, "fall"]]}, {"id": 93, "start": 28360, "end": 28368, "lines": ["cmp al, 0C1h", "jbe loc_6BE0"], "succs": [[37, "jump"], [94, "fall"]]}, {"id": 94, "start": 28368, "end": 28376, "lines": ["lea rsi, [r9+1]", "cmp al, 0DFh", "jbe short loc_6EB4"], "succs": [[91, "jump"], [95, "fall"]]}, {"id": 95, "start": 28376, "end": 28384, "lines": ["cmp al, 0EFh", "ja loc_6BD0"], "succs": [[35, "jump"], [96, "fall"]]}, {"id": 96, "start": 28384, "end": 28396, "lines": ["mov rdx, rsi", "lea rbx, [rbp+var_2C]", "jmp loc_6E2A"], "succs": [[78, "jump"]]}, {"id": 97, "start": 28400, "end": 28426, "lines": ["shl ecx, 6", "mov dword ptr [r13+0], 201h", "and ecx, 7C0h", "mov [r13+4], ecx", "jmp loc_6D80"], "succs": [[65, "jump"]]}, {"id": 98, "start": 28432, "end": 28436, "lines": ["cmp al, 0EFh", "ja short loc_6F22"], "succs": [[99, "fall"], [100, "jump"]]}, {"id": 99, "start": 28436, "end": 28450, "lines": ["lea rbx, [rbp+var_2C]", "mov edx, 4", "jmp loc_6E2A"], "succs": [[78, "jump"]]}, {"id": 100, "start": 28450, "end": 28467, "lines": ["lea rbx, [rbp+var_2C]", "mov edx, 4", "cmp al, 0F4h", "jbe loc_6B4A"], "succs": [[23, "jump"], [101, "fall"]]}, {"id": 101, "start": 28467, "end": 28472, "lines": ["jmp loc_6BE0"], "succs": [[37, "jump"]]}, {"id": 102, "start": 28472, "end": 28493, "lines": ["shl eax, 12h", "mov dword ptr [r13+0], 401h", "and eax, 1C0000h", "jmp loc_6D79"], "succs": [[64, "jump"]]}, {"id": 103, "start": 28493, "end": 28529, "lines": ["mov dword ptr [r13+0], 302h", "movzx edx, byte ptr [rbx+1]", "shl eax, 0Ch", "and eax, 0F000h", "shl edx, 6", "and edx, 0FC0h", "or eax, edx", "jmp loc_6D79"], "succs": [[64, "jump"]]}, {"id": 104, "start": 28529, "end": 28580, "lines": ["mov dword ptr [r13+0], 403h", "movzx edx, byte ptr [rbx+1]", "shl eax, 12h", "movzx ecx, byte ptr [rbx+2]", "and eax, 1C0000h", "shl edx, 0Ch", "shl ecx, 6", "and edx, 3F000h", "and ecx, 0FC0h", "or edx, ecx", "or eax, edx", "jmp loc_6D79"], "succs": [[64, "jump"]]}, {"id": 105, "start": 28580, "end": 28616, "lines": ["mov dword ptr [r13+0], 402h", "movzx edx, byte ptr [rbx+1]", "shl eax, 12h", "and eax, 1C0000h", "shl edx, 0Ch", "and edx, 3F000h", "or eax, edx", "jmp loc_6D79"], "succs": [[64, "jump"]]}, {"id": 106, "start": 28616, "end": 28626, "lines": ["mov edx, 2", "jmp loc_6D56"], "succs": [[62, "jump"]]}, {"id": 107, "start": 28626, "end": 28632, "lines": ["call cs:__stack_chk_fail_ptr"], "succs": []}, {"id": 108, "start": 9351, "end": 9357, "lines": ["call cs:abort_ptr"], "succs": []}]}, {"name": "main", "ea": 9360, "blocks": [{"id": 0, "start": 9360, "end": 9414, "lines": ["endbr64", "push rbp", "mov rbp, rsp", "push r15", "push r14", "mov r14, rsi", "push r13", "push r12", "push rbx", "mov ebx, edi", "lea rdi, name; \"POSIXLY_CORRECT\"", "sub rsp, 18h", "call cs:getenv_ptr", "mov r13, [r14]", "mov r12, rax", "test rax, rax", "jz loc_2926"], "succs": [[1, "fall"], [69, "jump"]]}, {"id": 1, "start": 9414, "end": 9423, "lines": ["cmp ebx, 1", "jle loc_262F"], "succs": [[2, "fall"], [23, "jump"]]}, {"id": 2, "start": 9423, "end": 9525, "lines": ["mov rdi, [r14+8]; s1", "lea rsi, s2; \"-n\"", "call cs:strcmp_ptr", "mov rdi, r13", "mov r15d, eax", "call sub_3500", "lea rsi, accept+3; locale", "mov edi, 6; category", "call cs:setlocale_ptr", "lea rsi, dirname; \"/usr/share/locale\"", "lea rdi, aGnuCoreutils+4; domainname", "call cs:bindtextdomain_ptr", "lea rdi, aGnuCoreutils+4; domainname", "call cs:textdomain_ptr", "lea rdi, sub_3430", "call sub_71C0", "cmp ebx, 2", "jnz loc_26B8"], "succs": [[3, "fall"], [28, "jump"]]}, {"id": 3, "start": 9525, "end": 9534, "lines": ["test r15d, r15d", "jnz loc_26B8"], "succs": [[4, "fall"], [28, "jump"]]}, {"id": 4, "start": 9534, "end": 9562, "lines": ["mov rbx, [r14+8]", "lea rsi, aHelp; \"--help\"", "mov rdi, rbx; s1", "call cs:strcmp_ptr", "test eax, eax", "jz loc_2ACF"], "succs": [[5, "fall"], [86, "jump"]]}, {"id": 5, "start": 9562, "end": 9586, "lines": ["lea rsi, aVersion; \"--version\"", "mov rdi, rbx; s1", "call cs:strcmp_ptr", "test eax, eax", "jz loc_2A2C"], "succs": [[6, "fall"], [81, "jump"]]}, {"id": 6, "start": 9586, "end": 9596, "lines": ["add r14, 8", "mov r9d, 1"], "succs": [[7, "fall"]]}, {"id": 7, "start": 9596, "end": 9621, "lines": ["test r12, r12", "mov ebx, 1", "mov r8, 20100000001h", "setnz r11b", "xor r10d, r10d"], "succs": [[8, "fall"]]}, {"id": 8, "start": 9621, "end": 9633, "lines": ["mov rdi, [r14]", "cmp byte ptr [rdi], 2Dh ; '-'", "jnz loc_28C2"], "succs": [[9, "fall"], [62, "jump"]]}, {"id": 9, "start": 9633, "end": 9645, "lines": ["movzx ecx, byte ptr [rdi+1]", "test cl, cl", "jz loc_28C2"], "succs": [[10, "fall"], [62, "jump"]]}, {"id": 10, "start": 9645, "end": 9664, "lines": ["lea rdx, [rdi+2]", "mov eax, ecx", "xchg ax, ax", "nop word ptr [rax+rax+00000000h]"], "succs": [[11, "fall"]]}, {"id": 11, "start": 9664, "end": 9675, "lines": ["sub eax, 45h ; 'E'", "cmp al, 29h ; ')'", "ja loc_28C2"], "succs": [[12, "fall"], [62, "jump"]]}, {"id": 12, "start": 9675, "end": 9692, "lines": ["bt r8, rax", "setb sil", "test sil, sil", "jz loc_28C2"], "succs": [[13, "fall"], [62, "jump"]]}, {"id": 13, "start": 9692, "end": 9703, "lines": ["movzx eax, byte ptr [rdx]", "add rdx, 1", "test al, al", "jnz short loc_25C0"], "succs": [[11, "jump"], [14, "fall"]]}, {"id": 14, "start": 9703, "end": 9709, "lines": ["lea rax, [rdi+1]", "jmp short loc_2600"], "succs": [[17, "jump"]]}, {"id": 15, "start": 9712, "end": 9721, "lines": ["cmp cl, 45h ; 'E'", "setnz dl", "and r10d, edx"], "succs": [[16, "fall"]]}, {"id": 16, "start": 9721, "end": 9728, "lines": ["movzx ecx, byte ptr [rax]", "test cl, cl", "jz short loc_261B"], "succs": [[17, "fall"], [20, "jump"]]}, {"id": 17, "start": 9728, "end": 9741, "lines": ["add rax, 1", "cmp cl, 65h ; 'e'", "jz loc_26B0"], "succs": [[18, "fall"], [27, "jump"]]}, {"id": 18, "start": 9741, "end": 9746, "lines": ["cmp cl, 6Eh ; 'n'", "jnz short loc_25F0"], "succs": [[15, "jump"], [19, "fall"]]}, {"id": 19, "start": 9746, "end": 9755, "lines": ["movzx ecx, byte ptr [rax]", "xor ebx, ebx", "test cl, cl", "jnz short loc_2600"], "succs": [[17, "jump"], [20, "fall"]]}, {"id": 20, "start": 9755, "end": 9769, "lines": ["add r14, 8", "sub r9d, 1", "jnz loc_2595"], "succs": [[8, "jump"], [21, "fall"]]}, {"id": 21, "start": 9769, "end": 9773, "lines": ["test bl, bl", "jz short loc_2698; jumptable 000000000000275A case 99"], "succs": [[22, "fall"], [26, "jump"]]}, {"id": 22, "start": 9773, "end": 9775, "lines": ["jmp short loc_2678"], "succs": [[24, "jump"]]}, {"id": 23, "start": 9775, "end": 9848, "lines": ["mov rdi, r13", "call sub_3500", "lea rsi, accept+3; locale", "mov edi, 6; category", "call cs:setlocale_ptr", "lea rsi, dirname; \"/usr/share/locale\"", "lea rdi, aGnuCoreutils+4; domainname", "call cs:bindtextdomain_ptr", "lea rdi, aGnuCoreutils+4; domainname", "call cs:textdomain_ptr", "lea rdi, sub_3430", "call sub_71C0"], "succs": [[24, "fall"]]}, {"id": 24, "start": 9848, "end": 9869, "lines": ["mov rdi, cs:stdout; _IO_FILE *", "mov rax, [rdi+28h]", "cmp rax, [rdi+30h]", "jnb loc_2AB3"], "succs": [[25, "fall"], [84, "jump"]]}, {"id": 25, "start": 9869, "end": 9880, "lines": ["lea rdx, [rax+1]", "mov [rdi+28h], rdx", "mov byte ptr [rax], 0Ah"], "succs": [[26, "fall"]]}, {"id": 26, "start": 9880, "end": 9897, "lines": ["lea rsp, [rbp-28h]; jumptable 000000000000275A case 99", "xor eax, eax", "pop rbx", "pop r12", "pop r13", "pop r14", "pop r15", "pop rbp", "retn"], "succs": []}, {"id": 27, "start": 9904, "end": 9912, "lines": ["mov r10d, esi", "jmp loc_25F9"], "succs": [[16, "jump"]]}, {"id": 28, "start": 9912, "end": 9929, "lines": ["lea r9d, [rbx-1]", "add r14, 8", "test r15d, r15d", "jz loc_257C"], "succs": [[7, "jump"], [29, "fall"]]}, {"id": 29, "start": 9929, "end": 9934, "lines": ["mov ebx, 1"], "succs": [[30, "fall"]]}, {"id": 30, "start": 9934, "end": 9949, "lines": ["lea eax, [r9-1]", "lea r15, jpt_275A", "lea r12, [r14+rax*8]"], "succs": [[31, "fall"]]}, {"id": 31, "start": 9949, "end": 9965, "lines": ["mov r13, [r14]", "movzx eax, byte ptr [r13+0]", "lea rdx, [r13+1]", "test al, al", "jnz short loc_272E"], "succs": [[32, "fall"], [36, "jump"]]}, {"id": 32, "start": 9965, "end": 9970, "lines": ["jmp loc_2890"], "succs": [[59, "jump"]]}, {"id": 33, "start": 9976, "end": 9982, "lines": ["movzx ecx, al", "mov r13, rdx"], "succs": [[34, "fall"]]}, {"id": 34, "start": 9982, "end": 10003, "lines": ["mov rdi, cs:stdout; _IO_FILE *", "mov rdx, [rdi+28h]", "cmp rdx, [rdi+30h]", "jnb loc_2870"], "succs": [[35, "fall"], [57, "jump"]]}, {"id": 35, "start": 10003, "end": 10030, "lines": ["lea rcx, [rdx+1]", "mov [rdi+28h], rcx", "mov [rdx], al", "movzx eax, byte ptr [r13+0]", "lea rdx, [r13+1]", "test al, al", "jz loc_2890"], "succs": [[36, "fall"], [59, "jump"]]}, {"id": 36, "start": 10030, "end": 10034, "lines": ["cmp al, 5Ch ; '\\'", "jnz short loc_26F8"], "succs": [[33, "jump"], [37, "fall"]]}, {"id": 37, "start": 10034, "end": 10048, "lines": ["movzx r8d, byte ptr [r13+1]", "test r8b, r8b", "jz loc_2860"], "succs": [[38, "fall"], [56, "jump"]]}, {"id": 38, "start": 10048, "end": 10064, "lines": ["lea edx, [r8-30h]; switch 73 cases", "lea r9, [r13+2]", "mov ecx, r8d", "cmp dl, 48h", "ja short def_275A; jumptable 000000000000275A default case, cases 56-91,93-96,100,103-109,111-113,115,117,119"], "succs": [[39, "fall"], [42, "jump"]]}, {"id": 39, "start": 10064, "end": 10077, "lines": ["movzx edx, dl", "movsxd rdx, ds:(jpt_275A - 809Ch)[r15+rdx*4]", "add rdx, r15", "jmp rdx; switch jump"], "succs": [[26, "switch"], [40, "switch"], [42, "switch"], [45, "switch"], [47, "switch"], [49, "switch"], [50, "switch"], [51, "switch"], [52, "switch"], [53, "switch"], [54, "switch"], [55, "switch"], [78, "switch"], [79, "switch"]]}, {"id": 40, "start": 10077, "end": 10090, "lines": ["movzx eax, byte ptr [r13+2]; jumptable 000000000000275A case 120", "lea edx, [rax-30h]", "cmp dl, 36h ; '6'", "ja short def_275A; jumptable 000000000000275A default case, cases 56-91,93-96,100,103-109,111-113,115,117,119"], "succs": [[41, "fall"], [42, "jump"]]}, {"id": 41, "start": 10090, "end": 10110, "lines": ["mov rsi, 7E0000007E03FFh", "bt rsi, rdx", "jb loc_29B2"], "succs": [[42, "fall"], [74, "jump"]]}, {"id": 42, "start": 10110, "end": 10135, "lines": ["mov rdi, cs:stdout; jumptable 000000000000275A default case, cases 56-91,93-96,100,103-109,111-113,115,117,119", "movzx ecx, r8b", "mov rax, [rdi+28h]", "cmp rax, [rdi+30h]", "jnb loc_2A8C"], "succs": [[43, "fall"], [83, "jump"]]}, {"id": 43, "start": 10135, "end": 10146, "lines": ["lea rdx, [rax+1]", "mov [rdi+28h], rdx", "mov byte ptr [rax], 5Ch ; '\\'"], "succs": [[44, "fall"]]}, {"id": 44, "start": 10146, "end": 10157, "lines": ["mov eax, r8d", "mov r13, r9", "jmp loc_26FE"], "succs": [[34, "jump"]]}, {"id": 45, "start": 10157, "end": 10173, "lines": ["movzx ecx, byte ptr [r13+2]; jumptable 000000000000275A case 48", "lea eax, [rcx-30h]", "cmp al, 7", "ja loc_29F1"], "succs": [[46, "fall"], [77, "jump"]]}, {"id": 46, "start": 10173, "end": 10177, "lines": ["lea r9, [r13+3]"], "succs": [[47, "fall"]]}, {"id": 47, "start": 10177, "end": 10196, "lines": ["movzx edx, byte ptr [r9]; jumptable 000000000000275A cases 49-55", "lea eax, [rcx-30h]", "lea ecx, [rdx-30h]", "cmp cl, 7", "jbe loc_298E"], "succs": [[48, "fall"], [72, "jump"]]}, {"id": 48, "start": 10196, "end": 10207, "lines": ["movzx ecx, al", "mov r13, r9", "jmp loc_26FE"], "succs": [[34, "jump"]]}, {"id": 49, "start": 10207, "end": 10225, "lines": ["mov r13, r9; jumptable 000000000000275A case 101", "mov ecx, 1Bh", "mov eax, 1Bh", "jmp loc_26FE"], "succs": [[34, "jump"]]}, {"id": 50, "start": 10225, "end": 10243, "lines": ["mov r13, r9; jumptable 000000000000275A case 98", "mov ecx, 8", "mov eax, 8", "jmp loc_26FE"], "succs": [[34, "jump"]]}, {"id": 51, "start": 10243, "end": 10261, "lines": ["mov r13, r9; jumptable 000000000000275A case 116", "mov ecx, 9", "mov eax, 9", "jmp loc_26FE"], "succs": [[34, "jump"]]}, {"id": 52, "start": 10261, "end": 10279, "lines": ["mov r13, r9; jumptable 000000000000275A case 114", "mov ecx, 0Dh", "mov eax, 0Dh", "jmp loc_26FE"], "succs": [[34, "jump"]]}, {"id": 53, "start": 10279, "end": 10297, "lines": ["mov r13, r9; jumptable 000000000000275A case 110", "mov ecx, 0Ah", "mov eax, 0Ah", "jmp loc_26FE"], "succs": [[34, "jump"]]}, {"id": 54, "start": 10297, "end": 10315, "lines": ["mov r13, r9; jumptable 000000000000275A case 102", "mov ecx, 0Ch", "mov eax, 0Ch", "jmp loc_26FE"], "succs": [[34, "jump"]]}, {"id": 55, "start": 10315, "end": 10333, "lines": ["mov r13, r9; jumptable 000000000000275A case 118", "mov ecx, 0Bh", "mov eax, 0Bh", "jmp loc_26FE"], "succs": [[34, "jump"]]}, {"id": 56, "start": 10336, "end": 10349, "lines": ["mov r13, rdx", "mov ecx, 5Ch ; '\\'", "jmp loc_26FE"], "succs": [[34, "jump"]]}, {"id": 57, "start": 10352, "end": 10377, "lines": ["mov esi, ecx; int", "call cs:__overflow_ptr", "movzx eax, byte ptr [r13+0]", "lea rdx, [r13+1]", "test al, al", "jnz loc_272E"], "succs": [[36, "jump"], [58, "fall"]]}, {"id": 58, "start": 10377, "end": 10384, "lines": ["nop dword ptr [rax+00000000h]"], "succs": [[59, "fall"]]}, {"id": 59, "start": 10384, "end": 10393, "lines": ["cmp r14, r12", "jz loc_2629"], "succs": [[21, "jump"], [60, "fall"]]}, {"id": 60, "start": 10393, "end": 10418, "lines": ["mov rdi, cs:stdout; _IO_FILE *", "add r14, 8", "mov rax, [rdi+28h]", "cmp rax, [rdi+30h]", "jnb loc_2A1C"], "succs": [[61, "fall"], [80, "jump"]]}, {"id": 61, "start": 10418, "end": 10434, "lines": ["lea rdx, [rax+1]", "mov [rdi+28h], rdx", "mov byte ptr [rax], 20h ; ' '", "jmp loc_26DD"], "succs": [[31, "jump"]]}, {"id": 62, "start": 10434, "end": 10443, "lines": ["test r11b, r11b", "jnz loc_26CE"], "succs": [[30, "jump"], [63, "fall"]]}, {"id": 63, "start": 10443, "end": 10452, "lines": ["test r10b, r10b", "jnz loc_26CE"], "succs": [[30, "jump"], [64, "fall"]]}, {"id": 64, "start": 10452, "end": 10462, "lines": ["lea eax, [r9-1]", "lea r12, [r14+rax*8]", "jmp short loc_28EB"], "succs": [[66, "jump"]]}, {"id": 65, "start": 10464, "end": 10475, "lines": ["lea rdx, [rax+1]", "mov [rdi+28h], rdx", "mov byte ptr [rax], 20h ; ' '"], "succs": [[66, "fall"]]}, {"id": 66, "start": 10475, "end": 10500, "lines": ["mov rdi, [r14]; s", "mov rsi, cs:stdout; stream", "call cs:fputs_unlocked_ptr", "cmp r12, r14", "jz loc_2629"], "succs": [[21, "jump"], [67, "fall"]]}, {"id": 67, "start": 10500, "end": 10521, "lines": ["mov rdi, cs:stdout; _IO_FILE *", "add r14, 8", "mov rax, [rdi+28h]", "cmp rax, [rdi+30h]", "jb short loc_28E0"], "succs": [[65, "jump"], [68, "fall"]]}, {"id": 68, "start": 10521, "end": 10534, "lines": ["mov esi, 20h ; ' '; int", "call cs:__overflow_ptr", "jmp short loc_28EB"], "succs": [[66, "jump"]]}, {"id": 69, "start": 10534, "end": 10616, "lines": ["mov rdi, r13", "call sub_3500", "lea rsi, accept+3; locale", "mov edi, 6; category", "call cs:setlocale_ptr", "lea rsi, dirname; \"/usr/share/locale\"", "lea rdi, aGnuCoreutils+4; domainname", "call cs:bindtextdomain_ptr", "lea rdi, aGnuCoreutils+4; domainname", "call cs:textdomain_ptr", "lea rdi, sub_3430", "call sub_71C0", "cmp ebx, 2", "jz loc_253E"], "succs": [[4, "jump"], [70, "fall"]]}, {"id": 70, "start": 10616, "end": 10629, "lines": ["lea r9d, [rbx-1]", "test r9d, r9d", "jle loc_2678"], "succs": [[24, "jump"], [71, "fall"]]}, {"id": 71, "start": 10629, "end": 10638, "lines": ["add r14, 8", "jmp loc_257C"], "succs": [[7, "jump"]]}, {"id": 72, "start": 10638, "end": 10659, "lines": ["movzx esi, byte ptr [r9+1]", "lea eax, [rdx+rax*8-30h]", "lea edx, [rsi-30h]", "cmp dl, 7", "ja loc_2AC3"], "succs": [[73, "fall"], [85, "jump"]]}, {"id": 73, "start": 10659, "end": 10674, "lines": ["lea eax, [rdx+rax*8]", "lea r13, [r9+2]", "movzx ecx, al", "jmp loc_26FE"], "succs": [[34, "jump"]]}, {"id": 74, "start": 10674, "end": 10702, "lines": ["movsx edi, al", "call sub_2C00", "movzx edx, byte ptr [r13+3]", "mov ecx, eax", "lea edi, [rdx-30h]", "cmp dil, 36h ; '6'", "ja loc_2A83"], "succs": [[75, "fall"], [82, "jump"]]}, {"id": 75, "start": 10702, "end": 10712, "lines": ["bt rsi, rdi", "jnb loc_2A83"], "succs": [[76, "fall"], [82, "jump"]]}, {"id": 76, "start": 10712, "end": 10737, "lines": ["movsx edi, dl", "shl ecx, 4", "add r13, 4", "call sub_2C00", "add eax, ecx", "movzx ecx, al", "jmp loc_26FE"], "succs": [[34, "jump"]]}, {"id": 77, "start": 10737, "end": 10749, "lines": ["mov r13, r9", "xor ecx, ecx", "xor eax, eax", "jmp loc_26FE"], "succs": [[34, "jump"]]}, {"id": 78, "start": 10749, "end": 10767, "lines": ["mov r13, r9; jumptable 000000000000275A case 97", "mov ecx, 7", "mov eax, 7", "jmp loc_26FE"], "succs": [[34, "jump"]]}, {"id": 79, "start": 10767, "end": 10780, "lines": ["mov r13, r9; jumptable 000000000000275A case 92", "mov ecx, 5Ch ; '\\'", "jmp loc_26FE"], "succs": [[34, "jump"]]}, {"id": 80, "start": 10780, "end": 10796, "lines": ["mov esi, 20h ; ' '; int", "call cs:__overflow_ptr", "jmp loc_26DD"], "succs": [[31, "jump"]]}, {"id": 81, "start": 10796, "end": 10883, "lines": ["lea rsi, aChetRamey; \"Chet Ramey\"", "mov rdi, rsi; msgid", "call sub_3590", "lea rsi, aBrianFox; \"Brian Fox\"", "mov rdi, rsi; msgid", "mov rbx, rax", "call sub_3590", "lea rdx, aGnuCoreutils; \"GNU coreutils\"", "mov r9, rbx", "lea rsi, aEcho; \"echo\"", "mov r8, rax", "push rax", "xor eax, eax", "mov rdi, cs:stdout", "push 0", "mov rcx, cs:off_C018; \"9.11\"", "call sub_6280", "pop rdx", "pop rcx", "jmp loc_2698; jumptable 000000000000275A case 99"], "succs": [[26, "jump"]]}, {"id": 82, "start": 10883, "end": 10892, "lines": ["add r13, 3", "jmp loc_26FE"], "succs": [[34, "jump"]]}, {"id": 83, "start": 10892, "end": 10931, "lines": ["mov [rbp+var_40], r9", "mov esi, 5Ch ; '\\'; int", "mov [rbp+var_38], ecx", "mov [rbp+var_31], r8b", "call cs:__overflow_ptr", "mov r9, [rbp+var_40]", "mov ecx, [rbp+var_38]", "movzx r8d, [rbp+var_31]", "jmp loc_27A2"], "succs": [[44, "jump"]]}, {"id": 84, "start": 10931, "end": 10947, "lines": ["mov esi, 0Ah; int", "call cs:__overflow_ptr", "jmp loc_2698; jumptable 000000000000275A case 99"], "succs": [[26, "jump"]]}, {"id": 85, "start": 10947, "end": 10959, "lines": ["lea r13, [r9+1]", "movzx ecx, al", "jmp loc_26FE"], "succs": [[34, "jump"]]}, {"id": 86, "start": 10959, "end": 10966, "lines": ["xor edi, edi", "call sub_2FF0"], "succs": []}]}, {"name": "sub_2C90", "ea": 11408, "blocks": [{"id": 0, "start": 11408, "end": 11443, "lines": ["push rbp", "mov rbp, rsp", "push r15", "push r14", "push r13", "push r12", "push rbx", "mov rbx, rdi", "sub rsp, 28h", "mov eax, cs:dword_C010", "cmp eax, 0FFFFFFFFh", "jz loc_2F5E"], "succs": [[1, "fall"], [30, "jump"]]}, {"id": 1, "start": 11443, "end": 11462, "lines": ["mov rcx, cs:stdout", "mov [rbp+stream], rcx", "test eax, eax", "jnz loc_2FAD"], "succs": [[2, "fall"], [34, "jump"]]}, {"id": 2, "start": 11462, "end": 11512, "lines": ["lea rsi, accept; \" \\t\\n\"", "mov rdi, rbx; s", "call cs:strspn_ptr", "mov esi, 2Dh ; '-'; c", "mov rdi, rbx; s", "mov [rbp+n], rax", "lea r12, [rbx+rax]", "call cs:strchr_ptr", "mov r13, rax", "test rax, rax", "jz loc_2F53"], "succs": [[3, "fall"], [29, "jump"]]}, {"id": 3, "start": 11512, "end": 11517, "lines": ["cmp r12, rax", "jz short loc_2D74"], "succs": [[4, "fall"], [8, "jump"]]}, {"id": 4, "start": 11517, "end": 11519, "lines": ["jnb short loc_2D74"], "succs": [[5, "fall"], [8, "jump"]]}, {"id": 5, "start": 11519, "end": 11584, "lines": ["call cs:__ctype_b_loc_ptr", "mov rdx, r12", "xor esi, esi", "mov rdi, [rax]", "nop dword ptr [rax+00000000h]", "nop word ptr [rax+rax+00000000h]", "nop word ptr [rax+rax+00000000h]", "nop word ptr [rax+rax+00000000h]", "nop word ptr [rax+rax+00000000h]"], "succs": [[6, "fall"]]}, {"id": 6, "start": 11584, "end": 11626, "lines": ["movsx rax, byte ptr [rdx]", "add rdx, 1", "movzx eax, byte ptr [rdi+rax*2+1]", "shr al, 5", "and eax, 1", "add rsi, rax", "cmp rdx, r13", "setb cl", "cmp rsi, 2", "setnz al", "and cl, al", "mov r14d, ecx", "jnz short loc_2D40"], "succs": [[7, "fall"], [6, "jump"]]}, {"id": 7, "start": 11626, "end": 11636, "lines": ["cmp rsi, 2", "jz loc_2FE7"], "succs": [[8, "fall"], [36, "jump"]]}, {"id": 8, "start": 11636, "end": 11642, "lines": ["mov r14d, 1"], "succs": [[9, "fall"]]}, {"id": 9, "start": 11642, "end": 11675, "lines": ["lea rsi, reject; \",=[ \\n\"", "mov rdi, r13; s", "call cs:strcspn_ptr", "lea r15, [r13+rax+0]", "mov [rbp+var_48], rax", "movzx edx, byte ptr [r15]", "test dl, dl", "jz short loc_2E10"], "succs": [[10, "fall"], [22, "jump"]]}, {"id": 10, "start": 11675, "end": 11680, "lines": ["cmp dl, 0Ah", "jz short loc_2E10"], "succs": [[11, "fall"], [22, "jump"]]}, {"id": 11, "start": 11680, "end": 11698, "lines": ["mov [rbp+var_49], dl", "call cs:__ctype_b_loc_ptr", "movzx edx, [rbp+var_49]", "mov rsi, [rax]", "jmp short loc_2DD3"], "succs": [[16, "jump"]]}, {"id": 12, "start": 11704, "end": 11713, "lines": ["test ah, 20h", "jnz loc_2F40"], "succs": [[13, "fall"], [27, "jump"]]}, {"id": 13, "start": 11713, "end": 11718, "lines": ["movzx edx, byte ptr [r15+1]"], "succs": [[14, "fall"]]}, {"id": 14, "start": 11718, "end": 11726, "lines": ["add r15, 1", "test dl, dl", "jz short loc_2E10"], "succs": [[15, "fall"], [22, "jump"]]}, {"id": 15, "start": 11726, "end": 11731, "lines": ["cmp dl, 0Ah", "jz short loc_2E10"], "succs": [[16, "fall"], [22, "jump"]]}, {"id": 16, "start": 11731, "end": 11744, "lines": ["movsx rax, dl", "movzx eax, word ptr [rsi+rax*2]", "cmp dl, 2Dh ; '-'", "jnz short loc_2DB8"], "succs": [[12, "jump"], [17, "fall"]]}, {"id": 17, "start": 11744, "end": 11764, "lines": ["movzx edx, byte ptr [r15+1]", "cmp dl, 2Dh ; '-'", "setnz dil", "and r14d, edi", "test ah, 20h", "jz short loc_2DC6"], "succs": [[14, "jump"], [18, "fall"]]}, {"id": 18, "start": 11764, "end": 11775, "lines": ["movsx rax, dl", "test byte ptr [rsi+rax*2+1], 20h", "jnz short loc_2E10"], "succs": [[19, "fall"], [22, "jump"]]}, {"id": 19, "start": 11775, "end": 11780, "lines": ["test r14b, r14b", "jnz short loc_2DC6"], "succs": [[14, "jump"], [20, "fall"]]}, {"id": 20, "start": 11780, "end": 11785, "lines": ["cmp dl, 2Dh ; '-'", "jz short loc_2DC6"], "succs": [[14, "jump"], [21, "fall"]]}, {"id": 21, "start": 11785, "end": 11792, "lines": ["nop dword ptr [rax+00000000h]"], "succs": [[22, "fall"]]}, {"id": 22, "start": 11792, "end": 11839, "lines": ["mov rdx, [rbp+n]; n", "mov esi, 1; size", "mov rdi, rbx; ptr", "mov rcx, [rbp+stream]; stream", "call cs:fwrite_unlocked_ptr", "mov edx, 6; n", "lea rsi, aHelp; \"--help\"", "mov rdi, r13; s1", "call cs:strncmp_ptr", "test eax, eax", "jz short loc_2E5C"], "succs": [[23, "fall"], [24, "jump"]]}, {"id": 23, "start": 11839, "end": 11868, "lines": ["mov edx, 9; n", "lea rsi, aVersion; \"--version\"", "mov rdi, r13; s1", "call cs:strncmp_ptr", "test eax, eax", "jnz loc_2FB9"], "succs": [[24, "fall"], [35, "jump"]]}, {"id": 24, "start": 11868, "end": 11914, "lines": ["lea r8, aEcho; \"echo\"", "lea rdx, aHttpsWwwGnuOrg; \"https://www.gnu.org/software/coreutils/\"", "mov edi, 2", "push rax", "mov rcx, r8", "push r13", "lea rsi, a8SSSS; \"\\x1B]8;;%s%s#%s%.*s\"", "mov r9d, dword ptr [rbp+var_48]", "xor eax, eax", "call cs:__printf_chk_ptr", "pop rdx", "pop rcx"], "succs": [[25, "fall"]]}, {"id": 25, "start": 11914, "end": 12071, "lines": ["mov rcx, cs:stdout; stream", "mov edx, 2; n", "mov esi, 1; size", "lea rdi, a8+5; ptr", "call cs:fwrite_unlocked_ptr", "mov edx, 4; n", "mov rcx, cs:stdout; stream", "mov esi, 1; size", "lea rdi, a1m; \"\\x1B[1m\"", "call cs:fwrite_unlocked_ptr", "mov rdx, r15", "mov esi, 1; size", "mov rdi, r12; ptr", "mov rcx, cs:stdout; stream", "sub rdx, r12; n", "call cs:fwrite_unlocked_ptr", "mov edx, 4; n", "mov rcx, cs:stdout; stream", "mov esi, 1; size", "lea rdi, a0m; \"\\x1B[0m\"", "call cs:fwrite_unlocked_ptr", "mov esi, 1; size", "mov edx, 7; n", "lea rdi, a8; \"\\x1B]8;;\\x1B\\\\\"", "mov rcx, cs:stdout; stream", "call cs:fwrite_unlocked_ptr", "mov rsi, cs:stdout; stream", "mov rdi, r15; s"], "succs": [[26, "fall"]]}, {"id": 26, "start": 12071, "end": 12091, "lines": ["lea rsp, [rbp-28h]", "pop rbx", "pop r12", "pop r13", "pop r14", "pop r15", "pop rbp", "jmp cs:fputs_unlocked_ptr"], "succs": [[37, "jump"]]}, {"id": 27, "start": 12096, "end": 12105, "lines": ["cmp dl, 9", "jz loc_2E10"], "succs": [[22, "jump"], [28, "fall"]]}, {"id": 28, "start": 12105, "end": 12115, "lines": ["movzx edx, byte ptr [r15+1]", "jmp loc_2DF4"], "succs": [[18, "jump"]]}, {"id": 29, "start": 12115, "end": 12126, "lines": ["mov r13, r12", "xor r14d, r14d", "jmp loc_2D7A"], "succs": [[9, "jump"]]}, {"id": 30, "start": 12126, "end": 12144, "lines": ["lea rdi, aTerm; \"TERM\"", "call cs:getenv_ptr", "test rax, rax", "jz short loc_2F98"], "succs": [[31, "fall"], [33, "jump"]]}, {"id": 31, "start": 12144, "end": 12149, "lines": ["cmp byte ptr [rax], 0", "jz short loc_2F98"], "succs": [[32, "fall"], [33, "jump"]]}, {"id": 32, "start": 12149, "end": 12184, "lines": ["lea rsi, aDumb; \"dumb\"", "mov rdi, rax; s1", "call cs:strcmp_ptr", "test eax, eax", "setz al", "movzx eax, al", "mov cs:dword_C010, eax", "jmp loc_2CB3"], "succs": [[1, "jump"]]}, {"id": 33, "start": 12184, "end": 12205, "lines": ["mov rax, cs:stdout", "mov cs:dword_C010, 1", "mov [rbp+stream], rax"], "succs": [[34, "fall"]]}, {"id": 34, "start": 12205, "end": 12217, "lines": ["mov rsi, [rbp+stream]", "mov rdi, rbx", "jmp loc_2F27"], "succs": [[26, "jump"]]}, {"id": 35, "start": 12217, "end": 12263, "lines": ["mov r8d, dword ptr [rbp+var_48]", "mov r9, r13", "lea rcx, aEcho; \"echo\"", "xor eax, eax", "lea rdx, aHttpsWwwGnuOrg_0; \"https://www.gnu.org/software/coreutils/\"...", "lea rsi, a8SSS; \"\\x1B]8;;%s#%s%.*s\"", "mov edi, 2", "call cs:__printf_chk_ptr", "jmp loc_2E8A"], "succs": [[25, "jump"]]}, {"id": 36, "start": 12263, "end": 12271, "lines": ["mov r13, r12", "jmp loc_2D7A"], "succs": [[9, "jump"]]}, {"id": 37, "start": 50000, "end": 50000, "lines": [], "succs": []}]}, {"name": "sub_5CA0", "ea": 23712, "blocks": [{"id": 0, "start": 23712, "end": 23751, "lines": ["endbr64", "push rbp", "mov rbp, rsp", "push r15", "push r14", "push r13", "mov r13, r9", "push r12", "mov r12, r8", "push rbx", "mov rbx, rdi", "sub rsp, 38h", "test rsi, rsi", "jz loc_5E30"], "succs": [[1, "fall"], [7, "jump"]]}, {"id": 1, "start": 23751, "end": 23780, "lines": ["mov r9, rcx", "mov r8, rdx", "mov rcx, rsi", "xor eax, eax", "lea rdx, aSSS; \"%s (%s) %s\\n\"", "mov esi, 2", "call cs:__fprintf_chk_ptr"], "succs": [[2, "fall"]]}, {"id": 2, "start": 23780, "end": 23926, "lines": ["mov edx, 5; category", "lea rsi, aC; \"(C)\"", "lea rdi, domainname; \"gnulib\"", "call cs:dcgettext_ptr", "mov r8d, 7EAh", "mov esi, 2", "mov rdi, rbx", "mov rcx, rax", "lea rdx, aCopyrightSDFre; \"Copyright %s %d Free Software Foundatio\"...", "xor eax, eax", "call cs:__fprintf_chk_ptr", "mov rsi, rbx; stream", "mov edi, 0Ah; c", "call cs:fputc_unlocked_ptr", "mov edx, 5; category", "lea rsi, aLicenseGplv3Gn; \"License GPLv3+: GNU GPL version 3 or la\"...", "lea rdi, domainname; \"gnulib\"", "call cs:dcgettext_ptr", "mov esi, 2", "mov rdi, rbx", "lea rcx, aHttpsGnuOrgLic; \"https://gnu.org/licenses/gpl.html\"", "mov rdx, rax", "xor eax, eax", "call cs:__fprintf_chk_ptr", "mov rsi, rbx; stream", "mov edi, 0Ah; c", "call cs:fputc_unlocked_ptr", "cmp r13, 9; switch 10 cases", "ja def_5D84; jumptable 0000000000005D84 default case"], "succs": [[3, "fall"], [19, "jump"]]}, {"id": 3, "start": 23926, "end": 23943, "lines": ["lea rdx, jpt_5D84", "movsxd rax, ds:(jpt_5D84 - 8F80h)[rdx+r13*4]", "add rax, rdx", "jmp rax; switch jump"], "succs": [[4, "switch"], [6, "switch"], [8, "switch"], [10, "switch"], [11, "switch"], [12, "switch"], [13, "switch"], [15, "switch"], [16, "switch"], [18, "switch"]]}, {"id": 4, "start": 23952, "end": 24065, "lines": ["mov r11, [r12+30h]; jumptable 0000000000005D84 case 8", "mov r10, [r12+28h]", "mov edx, 5; category", "lea rsi, aWrittenBySSSSS; \"Written by %s, %s, %s,\\n%s, %s, %s, %s,\"...", "mov r8, [r12+20h]", "mov r9, [r12+10h]", "lea rdi, domainname; \"gnulib\"", "mov r14, [r12+38h]", "mov r13, [r12+18h]", "mov [rbp+var_50], r11", "mov r15, [r12+8]", "mov r12, [r12]", "mov [rbp+var_48], r10", "mov [rbp+var_40], r8", "mov [rbp+var_38], r9", "call cs:dcgettext_ptr", "sub rsp, 8", "push r14", "mov r11, [rbp+var_50]", "push r11", "mov r10, [rbp+var_48]", "push r10", "mov r8, [rbp+var_40]", "push r8", "mov r8, r15", "push r13", "mov r9, [rbp+var_38]"], "succs": [[5, "fall"]]}, {"id": 5, "start": 24065, "end": 24091, "lines": ["mov rdx, rax", "mov rcx, r12", "mov esi, 2", "mov rdi, rbx", "xor eax, eax", "call cs:__fprintf_chk_ptr", "add rsp, 30h"], "succs": [[6, "fall"]]}, {"id": 6, "start": 24091, "end": 24106, "lines": ["lea rsp, [rbp-28h]; jumptable 0000000000005D84 case 0", "pop rbx", "pop r12", "pop r13", "pop r14", "pop r15", "pop rbp", "retn"], "succs": []}, {"id": 7, "start": 24112, "end": 24143, "lines": ["mov r8, rcx", "mov esi, 2", "mov rcx, rdx", "xor eax, eax", "lea rdx, aSS_0; \"%s %s\\n\"", "call cs:__fprintf_chk_ptr", "jmp loc_5CE4"], "succs": [[2, "jump"]]}, {"id": 8, "start": 24144, "end": 24220, "lines": ["mov rax, [r12+30h]; jumptable 0000000000005D84 case 9", "mov r11, [r12+28h]", "mov edx, 5; category", "lea rsi, aWrittenBySSSSS_0; \"Written by %s, %s, %s,\\n%s, %s, %s, %s,\"...", "mov r10, [r12+20h]", "mov r9, [r12+10h]", "mov r8, [r12+8]", "mov r15, [r12+40h]", "mov [rbp+var_38], rax", "mov r14, [r12+38h]", "mov r13, [r12+18h]", "mov [rbp+var_58], r11", "mov [rbp+var_50], r10", "mov r12, [r12]", "mov [rbp+var_48], r9", "mov [rbp+var_40], r8"], "succs": [[9, "fall"]]}, {"id": 9, "start": 24220, "end": 24267, "lines": ["lea rdi, domainname; \"gnulib\"", "call cs:dcgettext_ptr", "push r15", "push r14", "push [rbp+var_38]", "mov r11, [rbp+var_58]", "push r11", "mov r10, [rbp+var_50]", "push r10", "push r13", "mov r9, [rbp+var_48]", "mov r8, [rbp+var_40]", "jmp loc_5E01"], "succs": [[5, "jump"]]}, {"id": 10, "start": 24272, "end": 24337, "lines": ["mov r12, [r12]; jumptable 0000000000005D84 case 1", "mov edx, 5; category", "lea rsi, aWrittenByS; \"Written by %s.\\n\"", "lea rdi, domainname; \"gnulib\"", "call cs:dcgettext_ptr", "lea rsp, [rbp-28h]", "mov rdi, rbx", "mov esi, 2", "pop rbx", "mov rcx, r12", "mov rdx, rax", "pop r12", "xor eax, eax", "pop r13", "pop r14", "pop r15", "pop rbp", "jmp cs:__fprintf_chk_ptr"], "succs": [[20, "jump"]]}, {"id": 11, "start": 24344, "end": 24417, "lines": ["mov r13, [r12+8]; jumptable 0000000000005D84 case 2", "mov r12, [r12]", "mov edx, 5; category", "lea rsi, aWrittenBySAndS; \"Written by %s and %s.\\n\"", "lea rdi, domainname; \"gnulib\"", "call cs:dcgettext_ptr", "lea rsp, [rbp-28h]", "mov r8, r13", "mov rcx, r12", "mov rdx, rax", "mov rdi, rbx", "mov esi, 2", "pop rbx", "xor eax, eax", "pop r12", "pop r13", "pop r14", "pop r15", "pop rbp", "jmp cs:__fprintf_chk_ptr"], "succs": [[20, "jump"]]}, {"id": 12, "start": 24424, "end": 24510, "lines": ["mov r9, [r12+10h]; jumptable 0000000000005D84 case 3", "mov r13, [r12+8]", "mov edx, 5; category", "lea rsi, aWrittenBySSAnd; \"Written by %s, %s, and %s.\\n\"", "mov r12, [r12]", "lea rdi, domainname; \"gnulib\"", "mov [rbp+var_38], r9", "call cs:dcgettext_ptr", "mov r9, [rbp+var_38]", "lea rsp, [rbp-28h]", "mov r8, r13", "mov rcx, r12", "mov rdx, rax", "mov rdi, rbx", "mov esi, 2", "pop rbx", "xor eax, eax", "pop r12", "pop r13", "pop r14", "pop r15", "pop rbp", "jmp cs:__fprintf_chk_ptr"], "succs": [[20, "jump"]]}, {"id": 13, "start": 24512, "end": 24578, "lines": ["mov r9, [r12+10h]; jumptable 0000000000005D84 case 4", "mov r8, [r12+8]", "mov edx, 5; category", "lea rsi, aWrittenBySSSAn; \"Written by %s, %s, %s,\\nand %s.\\n\"", "mov r13, [r12+18h]", "lea rdi, domainname; \"gnulib\"", "mov r12, [r12]", "mov [rbp+var_40], r9", "mov [rbp+var_38], r8", "call cs:dcgettext_ptr", "sub rsp, 8", "push r13", "mov r9, [rbp+var_40]", "mov r8, [rbp+var_38]"], "succs": [[14, "fall"]]}, {"id": 14, "start": 24578, "end": 24617, "lines": ["mov rdx, rax", "mov rcx, r12", "mov rdi, rbx", "mov esi, 2", "xor eax, eax", "call cs:__fprintf_chk_ptr", "pop rax", "pop rdx", "lea rsp, [rbp-28h]", "pop rbx", "pop r12", "pop r13", "pop r14", "pop r15", "pop rbp", "retn"], "succs": []}, {"id": 15, "start": 24624, "end": 24698, "lines": ["mov r8, [r12+20h]; jumptable 0000000000005D84 case 5", "mov r9, [r12+10h]", "mov edx, 5; category", "lea rsi, aWrittenBySSSSA; \"Written by %s, %s, %s,\\n%s, and %s.\\n\"", "mov r13, [r12+18h]", "mov r14, [r12+8]", "lea rdi, domainname; \"gnulib\"", "mov [rbp+var_40], r8", "mov r12, [r12]", "mov [rbp+var_38], r9", "call cs:dcgettext_ptr", "mov r8, [rbp+var_40]", "push r8", "mov r8, r14", "push r13", "mov r9, [rbp+var_38]", "jmp short loc_6002"], "succs": [[14, "jump"]]}, {"id": 16, "start": 24704, "end": 24774, "lines": ["mov r10, [r12+28h]; jumptable 0000000000005D84 case 6", "mov r8, [r12+20h]", "mov edx, 5; category", "lea rsi, aWrittenBySSSSS_1; \"Written by %s, %s, %s,\\n%s, %s, and %s.\"...", "mov r9, [r12+10h]", "mov r13, [r12+18h]", "lea rdi, domainname; \"gnulib\"", "mov r14, [r12+8]", "mov r12, [r12]", "mov [rbp+var_48], r10", "mov [rbp+var_40], r8", "mov [rbp+var_38], r9", "call cs:dcgettext_ptr", "sub rsp, 8"], "succs": [[17, "fall"]]}, {"id": 17, "start": 24774, "end": 24836, "lines": ["mov r10, [rbp+var_48]", "mov rcx, r12", "mov rdx, rax", "mov rdi, rbx", "mov esi, 2", "xor eax, eax", "push r10", "mov r8, [rbp+var_40]", "push r8", "mov r8, r14", "push r13", "mov r9, [rbp+var_38]", "call cs:__fprintf_chk_ptr", "add rsp, 20h", "lea rsp, [rbp-28h]", "pop rbx", "pop r12", "pop r13", "pop r14", "pop r15", "pop rbp", "retn"], "succs": []}, {"id": 18, "start": 24840, "end": 24926, "lines": ["mov r11, [r12+30h]; jumptable 0000000000005D84 case 7", "mov r10, [r12+28h]", "mov edx, 5; category", "lea rsi, aWrittenBySSSSS_2; \"Written by %s, %s, %s,\\n%s, %s, %s, and\"...", "mov r8, [r12+20h]", "mov r9, [r12+10h]", "lea rdi, domainname; \"gnulib\"", "mov r13, [r12+18h]", "mov r14, [r12+8]", "mov [rbp+var_50], r11", "mov [rbp+var_48], r10", "mov r12, [r12]", "mov [rbp+var_40], r8", "mov [rbp+var_38], r9", "call cs:dcgettext_ptr", "mov r11, [rbp+var_50]", "push r11", "jmp loc_60C6"], "succs": [[17, "jump"]]}, {"id": 19, "start": 24926, "end": 25007, "lines": ["mov rax, [r12+30h]; jumptable 0000000000005D84 default case", "mov r11, [r12+28h]", "mov edx, 5", "lea rsi, aWrittenBySSSSS_3; \"Written by %s, %s, %s,\\n%s, %s, %s, %s,\"...", "mov r10, [r12+20h]", "mov r9, [r12+10h]", "mov r8, [r12+8]", "mov r15, [r12+40h]", "mov [rbp+var_38], rax", "mov r14, [r12+38h]", "mov r13, [r12+18h]", "mov [rbp+var_58], r11", "mov [rbp+var_50], r10", "mov r12, [r12]", "mov [rbp+var_48], r9", "mov [rbp+var_40], r8", "jmp loc_5E9C"], "succs": [[9, "jump"]]}, {"id": 20, "start": 50120, "end": 50120, "lines": [], "succs": []}]}, {"name": "sub_6670", "ea": 26224, "blocks": [{"id": 0, "start": 26224, "end": 26262, "lines": ["endbr64", "push rbp", "mov r10, rcx", "mov r9, rdx", "mov rbp, rsp", "push r12", "mov r12, rsi", "push rbx", "mov rcx, [rsi]", "mov rbx, rcx", "sar rbx, 1", "add rbx, rcx", "jo loc_6747"], "succs": [[1, "fall"], [17, "jump"]]}, {"id": 1, "start": 26262, "end": 26292, "lines": ["cmp rbx, r10", "mov rax, r10", "cmovle rax, rbx", "test r10, r10", "cmovns rbx, rax", "mov rax, rbx", "imul rax, r8", "jo loc_673B"], "succs": [[2, "fall"], [16, "jump"]]}, {"id": 2, "start": 26292, "end": 26298, "lines": ["cmp rax, 7Fh", "jle short loc_6710"], "succs": [[3, "fall"], [12, "jump"]]}, {"id": 3, "start": 26298, "end": 26303, "lines": ["test rdi, rdi", "jz short loc_672B"], "succs": [[4, "fall"], [14, "jump"]]}, {"id": 4, "start": 26303, "end": 26304, "lines": ["nop"], "succs": [[5, "fall"]]}, {"id": 5, "start": 26304, "end": 26315, "lines": ["mov rdx, rbx", "sub rdx, rcx", "cmp rdx, r9", "jge short loc_66E6"], "succs": [[6, "fall"], [10, "jump"]]}, {"id": 6, "start": 26315, "end": 26320, "lines": ["add rcx, r9", "jo short loc_6735"], "succs": [[7, "fall"], [15, "jump"]]}, {"id": 7, "start": 26320, "end": 26328, "lines": ["mov rbx, rcx", "test r10, r10", "js short loc_66DD"], "succs": [[8, "fall"], [9, "jump"]]}, {"id": 8, "start": 26328, "end": 26333, "lines": ["cmp rcx, r10", "jg short loc_6735"], "succs": [[9, "fall"], [15, "jump"]]}, {"id": 9, "start": 26333, "end": 26342, "lines": ["mov rax, rcx", "imul rax, r8", "jo short loc_6735"], "succs": [[10, "fall"], [15, "jump"]]}, {"id": 10, "start": 26342, "end": 26365, "lines": ["test rax, rax", "mov esi, 1", "cmovnz rsi, rax; size", "call cs:realloc_ptr", "test rax, rax", "jz short loc_6735"], "succs": [[11, "fall"], [15, "jump"]]}, {"id": 11, "start": 26365, "end": 26374, "lines": ["mov [r12], rbx", "pop rbx", "pop r12", "pop rbp", "retn"], "succs": []}, {"id": 12, "start": 26384, "end": 26389, "lines": ["mov esi, 80h"], "succs": [[13, "fall"]]}, {"id": 13, "start": 26389, "end": 26411, "lines": ["mov rax, rsi", "cqo", "idiv r8", "mov rbx, rax", "mov rax, rsi", "sub rax, rdx", "test rdi, rdi", "jnz short loc_66C0"], "succs": [[5, "jump"], [14, "fall"]]}, {"id": 14, "start": 26411, "end": 26421, "lines": ["mov qword ptr [r12], 0", "jmp short loc_66C0"], "succs": [[5, "jump"]]}, {"id": 15, "start": 26421, "end": 26427, "lines": ["call sub_6900"], "succs": []}, {"id": 16, "start": 26427, "end": 26439, "lines": ["mov rsi, 7FFFFFFFFFFFFFFFh", "jmp short loc_6715"], "succs": [[13, "jump"]]}, {"id": 17, "start": 26439, "end": 26454, "lines": ["mov rbx, 7FFFFFFFFFFFFFFFh", "jmp loc_6696"], "succs": [[1, "jump"]]}]}, {"name": "sub_2FF0", "ea": 12272, "blocks": [{"id": 0, "start": 12272, "end": 12371, "lines": ["endbr64", "push rbp", "mov rbp, rsp", "push r12", "push rbx", "sub rsp, 0C0h", "movq xmm4, cs:off_BBE0; \"sha224sum\"", "movq xmm3, cs:off_BBE8; \"sha256sum\"", "mov rax, fs:28h", "mov [rbp+var_18], rax", "lea rax, aSha2Utilities; \"sha2 utilities\"", "movq xmm2, cs:off_BBF0; \"sha384sum\"", "movq xmm1, cs:off_BBF8; \"sha512sum\"", "movq xmm0, rax", "punpcklqdq xmm4, xmm0", "punpcklqdq xmm3, xmm0", "punpcklqdq xmm2, xmm0", "punpcklqdq xmm1, xmm0", "test edi, edi", "jnz loc_2040"], "succs": [[1, "fall"], [16, "jump"]]}, {"id": 1, "start": 12371, "end": 12960, "lines": ["mov rbx, cs:qword_C120", "movaps [rbp+var_D0], xmm1", "xor edi, edi; domainname", "mov edx, 5; category", "movaps [rbp+var_C0], xmm2", "lea rsi, aUsageSShortOpt; \"Usage: %s [SHORT-OPTION]... [STRING]...\"...", "movaps [rbp+var_B0], xmm3", "movaps [rbp+var_A0], xmm4", "call cs:dcgettext_ptr", "mov rcx, rbx", "mov rdx, rbx", "mov edi, 2", "mov rsi, rax", "xor eax, eax", "call cs:__printf_chk_ptr", "mov rbx, cs:stdout", "xor edi, edi; domainname", "mov edx, 5; category", "lea rsi, aEchoTheStringS; \"Echo the STRING(s) to standard output.\"...", "call cs:dcgettext_ptr", "mov rsi, rbx; stream", "mov rdi, rax; s", "call cs:fputs_unlocked_ptr", "mov edx, 5; category", "lea rsi, aNDoNotOutputTh; \" -n do not output the trailing new\"...", "xor edi, edi; domainname", "call cs:dcgettext_ptr", "mov rdi, rax; ptr", "call sub_2C90", "mov edx, 5; category", "lea rsi, aEEnableInterpr; \" -e enable interpretation of backs\"...", "xor edi, edi; domainname", "call cs:dcgettext_ptr", "mov rdi, rax; ptr", "call sub_2C90", "mov edx, 5; category", "lea rsi, aEDisableInterp; \" -E disable interpretation of back\"...", "xor edi, edi; domainname", "call cs:dcgettext_ptr", "mov rdi, rax; ptr", "call sub_2C90", "mov edx, 5; category", "lea rsi, aHelpDisplayThi; \" --help\\n display this hel\"...", "xor edi, edi; domainname", "call cs:dcgettext_ptr", "mov rdi, rax; ptr", "call sub_2C90", "mov edx, 5; category", "lea rsi, aVersionOutputV; \" --version\\n output versio\"...", "xor edi, edi; domainname", "call cs:dcgettext_ptr", "mov rdi, rax; ptr", "call sub_2C90", "mov rbx, cs:stdout", "xor edi, edi; domainname", "mov edx, 5; category", "lea rsi, aIfEIsInEffectT; \"\\nIf -e is in effect, the following seq\"...", "call cs:dcgettext_ptr", "mov rsi, rbx; stream", "mov rdi, rax; s", "call cs:fputs_unlocked_ptr", "mov rbx, cs:stdout", "xor edi, edi; domainname", "mov edx, 5; category", "lea rsi, aBackslashAAler; \" \\\\\\\\ backslash\\n \\\\a alert\"...", "call cs:dcgettext_ptr", "mov rsi, rbx; stream", "mov rdi, rax; s", "call cs:fputs_unlocked_ptr", "mov rbx, cs:stdout", "xor edi, edi; domainname", "mov edx, 5; category", "lea rsi, a0nnnByteWithOc; \" \\\\0NNN byte with octal value NNN (1\"...", "call cs:dcgettext_ptr", "mov rsi, rbx; stream", "mov rdi, rax; s", "call cs:fputs_unlocked_ptr", "mov edx, 5; category", "lea rsi, aYourShellMayHa; \"\\nYour shell may have its own version o\"...", "xor edi, edi; domainname", "call cs:dcgettext_ptr", "lea rdx, aEcho; \"echo\"", "mov edi, 2", "mov rsi, rax", "xor eax, eax", "call cs:__printf_chk_ptr", "mov rbx, cs:stdout", "mov edx, 5; category", "xor edi, edi; domainname", "lea rsi, aConsiderUsingT; \"\\nConsider using the printf(1) command \"...", "call cs:dcgettext_ptr", "mov rsi, rbx; stream", "lea rbx, [rbp+var_90]", "mov rdi, rax; s", "call cs:fputs_unlocked_ptr", "lea rax, aTestInvocation; \"test invocation\"", "movq xmm0, cs:off_BC00; \"[\"", "movdqa xmm4, [rbp+var_A0]", "movq xmm5, rax", "lea rax, aMultiCallInvoc; \"Multi-call invocation\"", "movdqa xmm3, [rbp+var_B0]", "movdqa xmm2, [rbp+var_C0]", "punpcklqdq xmm0, xmm5", "movq xmm6, rax", "movdqa xmm1, [rbp+var_D0]", "movaps [rbp+var_70], xmm4", "movaps [rbp+var_90], xmm0", "movq xmm0, cs:off_BC08; \"coreutils\"", "movaps [rbp+var_60], xmm3", "punpcklqdq xmm0, xmm6", "movaps [rbp+var_50], xmm2", "movaps [rbp+var_80], xmm0", "pxor xmm0, xmm0", "movaps [rbp+var_40], xmm1", "movaps [rbp+var_30], xmm0", "nop", "nop word ptr [rax+rax+00000000h]"], "succs": [[2, "fall"]]}, {"id": 2, "start": 12960, "end": 12973, "lines": ["mov rsi, [rbx+10h]; s2", "add rbx, 10h", "test rsi, rsi", "jz short loc_32BE"], "succs": [[3, "fall"], [4, "jump"]]}, {"id": 3, "start": 12973, "end": 12990, "lines": ["lea rdi, aEcho; \"echo\"", "call cs:strcmp_ptr", "test eax, eax", "jnz short loc_32A0"], "succs": [[2, "jump"], [4, "fall"]]}, {"id": 4, "start": 12990, "end": 13003, "lines": ["mov rbx, [rbx+8]", "test rbx, rbx", "jz loc_33A7"], "succs": [[5, "fall"], [13, "jump"]]}, {"id": 5, "start": 13003, "end": 13027, "lines": ["call sub_6360", "xor esi, esi; locale", "mov edi, 5; category", "call cs:setlocale_ptr", "test rax, rax", "jz short loc_3313"], "succs": [[6, "fall"], [8, "jump"]]}, {"id": 6, "start": 13027, "end": 13036, "lines": ["cmp byte ptr [rax], 65h ; 'e'", "jz loc_338E"], "succs": [[7, "fall"], [10, "jump"]]}, {"id": 7, "start": 13036, "end": 13075, "lines": ["mov r12, cs:stdout", "lea rsi, aReportAnyTrans; \"Report any translation bugs to <https:/\"...", "xor edi, edi; domainname", "mov edx, 5; category", "call cs:dcgettext_ptr", "mov rdi, rax; s", "mov rsi, r12; stream", "call cs:fputs_unlocked_ptr"], "succs": [[8, "fall"]]}, {"id": 8, "start": 13075, "end": 13148, "lines": ["mov edx, 5; category", "lea rsi, aFullDocumentat; \"Full documentation <%s%s>\\n\"", "xor edi, edi; domainname", "call cs:dcgettext_ptr", "lea rcx, aEcho; \"echo\"", "lea rdx, aHttpsWwwGnuOrg; \"https://www.gnu.org/software/coreutils/\"", "mov edi, 2", "mov rsi, rax", "xor eax, eax", "lea r12, accept+3; \"\"", "call cs:__printf_chk_ptr", "lea rax, aEcho; \"echo\"", "cmp rbx, rax", "jz loc_33FC"], "succs": [[9, "fall"], [15, "jump"]]}, {"id": 9, "start": 13148, "end": 13198, "lines": ["mov edx, 5; category", "lea rsi, aOrAvailableLoc; \"or available locally via: info '(coreut\"...", "xor edi, edi; domainname", "call cs:dcgettext_ptr", "mov edi, 2", "mov rcx, r12", "mov rdx, rbx", "mov rsi, rax", "xor eax, eax", "call cs:__printf_chk_ptr", "xor edi, edi; status", "call cs:exit_ptr"], "succs": []}, {"id": 10, "start": 13198, "end": 13208, "lines": ["cmp byte ptr [rax+1], 6Eh ; 'n'", "jnz loc_32EC"], "succs": [[7, "jump"], [11, "fall"]]}, {"id": 11, "start": 13208, "end": 13218, "lines": ["cmp byte ptr [rax+2], 5Fh ; '_'", "jz loc_3313"], "succs": [[8, "jump"], [12, "fall"]]}, {"id": 12, "start": 13218, "end": 13223, "lines": ["jmp loc_32EC"], "succs": [[7, "jump"]]}, {"id": 13, "start": 13223, "end": 13258, "lines": ["call sub_6360", "xor esi, esi; locale", "mov edi, 5; category", "lea rbx, aEcho; \"echo\"", "call cs:setlocale_ptr", "test rax, rax", "jnz loc_32E3"], "succs": [[6, "jump"], [14, "fall"]]}, {"id": 14, "start": 13258, "end": 13308, "lines": ["mov edx, 5; category", "lea rsi, aFullDocumentat; \"Full documentation <%s%s>\\n\"", "xor edi, edi; domainname", "call cs:dcgettext_ptr", "lea rcx, aEcho; \"echo\"", "mov edi, 2", "lea rdx, aHttpsWwwGnuOrg; \"https://www.gnu.org/software/coreutils/\"", "mov rsi, rax", "xor eax, eax", "call cs:__printf_chk_ptr"], "succs": [[15, "fall"]]}, {"id": 15, "start": 13308, "end": 13327, "lines": ["lea rbx, aEcho; \"echo\"", "lea r12, aMultiCallInvoc+0Ah; \" invocation\"", "jmp loc_335C"], "succs": [[9, "jump"]]}, {"id": 16, "start": 8256, "end": 8288, "lines": ["lea rcx, function; \"usage\"", "mov edx, 29h ; ')'; line", "lea rsi, file; \"src/echo.c\"", "lea rdi, assertion; \"status == 0\"", "call cs:__assert_fail_ptr"], "succs": []}]}, {"name": "sub_2297", "ea": 8855, "blocks": [{"id": 0, "start": 8855, "end": 8903, "lines": ["endbr64", "push rbp", "mov rbp, rsp", "push r15", "mov r15, r9", "push r14", "mov r14, r8", "push r13", "mov r13d, esi", "push r12", "mov r12d, ecx", "push rbx", "mov rbx, rdx", "sub rsp, 18h", "cmp cs:error_one_per_line, 0", "mov [rbp+status], edi", "jz short loc_2308"], "succs": [[1, "fall"], [7, "jump"]]}, {"id": 1, "start": 8903, "end": 8911, "lines": ["cmp cs:dword_C118, ecx", "jnz short loc_22FA"], "succs": [[2, "fall"], [6, "jump"]]}, {"id": 2, "start": 8911, "end": 8927, "lines": ["mov rdi, cs:s1; s1", "cmp rdi, rdx", "jz loc_238D"], "succs": [[3, "fall"], [13, "jump"]]}, {"id": 3, "start": 8927, "end": 8932, "lines": ["test rdx, rdx", "jz short loc_22FA"], "succs": [[4, "fall"], [6, "jump"]]}, {"id": 4, "start": 8932, "end": 8937, "lines": ["test rdi, rdi", "jz short loc_22FA"], "succs": [[5, "fall"], [6, "jump"]]}, {"id": 5, "start": 8937, "end": 8954, "lines": ["mov rsi, rdx; s2", "call cs:strcmp_ptr", "test eax, eax", "jz loc_238D"], "succs": [[6, "fall"], [13, "jump"]]}, {"id": 6, "start": 8954, "end": 8968, "lines": ["mov cs:s1, rbx", "mov cs:dword_C118, r12d"], "succs": [[7, "fall"]]}, {"id": 7, "start": 8968, "end": 8985, "lines": ["call sub_2155", "mov rax, cs:error_print_progname", "test rax, rax", "jz short loc_231D"], "succs": [[8, "fall"], [9, "jump"]]}, {"id": 8, "start": 8985, "end": 8989, "lines": ["call rax ; error_print_progname", "jmp short loc_2341"], "succs": [[10, "jump"]]}, {"id": 9, "start": 8989, "end": 9025, "lines": ["call sub_34F0", "mov rdi, cs:stderr", "mov esi, 2", "lea rdx, aS; \"%s:\"", "mov rcx, rax", "xor eax, eax", "call cs:__fprintf_chk_ptr"], "succs": [[10, "fall"]]}, {"id": 10, "start": 9025, "end": 9037, "lines": ["lea rdx, aS_0+3; \" \"", "test rbx, rbx", "jz short loc_2354"], "succs": [[11, "fall"], [12, "jump"]]}, {"id": 11, "start": 9037, "end": 9044, "lines": ["lea rdx, aSU; \"%s:%u: \""], "succs": [[12, "fall"]]}, {"id": 12, "start": 9044, "end": 9101, "lines": ["mov rcx, rbx", "mov rdi, cs:stderr", "mov r8d, r12d", "xor eax, eax", "mov esi, 2", "call cs:__fprintf_chk_ptr", "mov edi, [rbp+status]; status", "add rsp, 18h", "mov rcx, r15", "pop rbx", "mov rdx, r14", "pop r12", "mov esi, r13d", "pop r13", "pop r14", "pop r15", "pop rbp", "jmp sub_20DD"], "succs": [[14, "jump"]]}, {"id": 13, "start": 9101, "end": 9116, "lines": ["add rsp, 18h", "pop rbx", "pop r12", "pop r13", "pop r14", "pop r15", "pop rbp", "retn"], "succs": []}, {"id": 14, "start": 8413, "end": 8413, "lines": [], "succs": []}]}, {"name": "sub_4F70", "ea": 20336, "blocks": [{"id": 0, "start": 20336, "end": 20413, "lines": ["push rbp", "mov rbp, rsp", "push r15", "push r14", "push r13", "push r12", "push rbx", "movsxd rbx, edi", "sub rsp, 38h", "mov [rbp+var_48], rsi", "mov [rbp+var_50], rdx", "mov r15, fs:28h", "mov [rbp+var_38], r15", "mov r15, rcx", "call cs:__errno_location_ptr", "mov r14, cs:ptr", "mov r12, rax", "mov eax, [rax]", "mov [rbp+var_54], eax", "cmp ebx, 7FFFFFFEh", "ja loc_2441"], "succs": [[1, "fall"], [13, "jump"]]}, {"id": 1, "start": 20413, "end": 20423, "lines": ["mov eax, cs:dword_C078", "cmp eax, ebx", "jg short loc_5035"], "succs": [[2, "fall"], [5, "jump"]]}, {"id": 2, "start": 20423, "end": 20456, "lines": ["movsxd rdx, eax", "mov [rbp+var_40], rdx", "mov edx, ebx", "sub edx, eax", "lea rax, xmmword_C090", "add edx, 1", "movsxd rdx, edx", "cmp r14, rax", "jz loc_5110"], "succs": [[3, "fall"], [11, "jump"]]}, {"id": 3, "start": 20456, "end": 20490, "lines": ["mov rdi, r14", "lea rsi, [rbp+var_40]", "mov r8d, 10h", "mov ecx, 7FFFFFFFh", "call sub_6670", "mov cs:ptr, rax", "mov r14, rax"], "succs": [[4, "fall"]]}, {"id": 4, "start": 20490, "end": 20533, "lines": ["movsxd rdi, cs:dword_C078", "mov rdx, [rbp+var_40]", "xor esi, esi; c", "sub rdx, rdi", "shl rdi, 4", "shl rdx, 4; n", "add rdi, r14; s", "call cs:memset_ptr", "mov rax, [rbp+var_40]", "mov cs:dword_C078, eax"], "succs": [[5, "fall"]]}, {"id": 5, "start": 20533, "end": 20611, "lines": ["mov eax, [r15+4]", "shl rbx, 4", "sub rsp, 8", "mov r8d, [r15]", "add rbx, r14", "lea r14, [r15+8]", "mov rcx, [rbp+var_50]", "mov rdx, [rbp+var_48]", "or eax, 1", "mov rsi, [rbx]", "mov r13, [rbx+8]", "mov [rbp+var_58], eax", "mov r9d, eax", "push qword ptr [r15+30h]", "mov rdi, r13", "push qword ptr [r15+28h]", "push r14", "mov [rbp+var_60], rsi", "call sub_3720", "add rsp, 20h", "cmp rax, [rbp+var_60]", "jb short loc_50E8"], "succs": [[6, "fall"], [9, "jump"]]}, {"id": 6, "start": 20611, "end": 20630, "lines": ["lea rsi, [rax+1]", "lea rax, unk_C140", "mov [rbx], rsi", "cmp r13, rax", "jz short loc_50A7"], "succs": [[7, "fall"], [8, "jump"]]}, {"id": 7, "start": 20630, "end": 20647, "lines": ["mov [rbp+var_60], rsi", "mov rdi, r13; ptr", "call cs:free_ptr", "mov rsi, [rbp+var_60]"], "succs": [[8, "fall"]]}, {"id": 8, "start": 20647, "end": 20712, "lines": ["mov rdi, rsi", "mov [rbp+var_60], rsi", "call sub_6480", "sub rsp, 8", "mov r9d, [rbp+var_58]", "mov r8d, [r15]", "mov [rbx+8], rax", "mov rcx, [rbp+var_50]", "mov rdi, rax", "mov r13, rax", "mov rdx, [rbp+var_48]", "mov rsi, [rbp+var_60]", "push qword ptr [r15+30h]", "push qword ptr [r15+28h]", "push r14", "call sub_3720", "add rsp, 20h"], "succs": [[9, "fall"]]}, {"id": 9, "start": 20712, "end": 20734, "lines": ["mov eax, [rbp+var_54]", "mov [r12], eax", "mov rax, [rbp+var_38]", "sub rax, fs:28h", "jnz short loc_5141"], "succs": [[10, "fall"], [12, "jump"]]}, {"id": 10, "start": 20734, "end": 20752, "lines": ["lea rsp, [rbp-28h]", "mov rax, r13", "pop rbx", "pop r12", "pop r13", "pop r14", "pop r15", "pop rbp", "retn"], "succs": []}, {"id": 11, "start": 20752, "end": 20801, "lines": ["lea rsi, [rbp+var_40]", "mov r8d, 10h", "mov ecx, 7FFFFFFFh", "xor edi, edi", "call sub_6670", "movdqa xmm0, cs:xmmword_C090", "mov cs:ptr, rax", "mov r14, rax", "movups xmmword ptr [rax], xmm0", "jmp loc_500A"], "succs": [[4, "jump"]]}, {"id": 12, "start": 20801, "end": 20807, "lines": ["call cs:__stack_chk_fail_ptr"], "succs": []}, {"id": 13, "start": 9281, "end": 9287, "lines": ["call cs:abort_ptr"], "succs": []}]}, {"name": "sub_3500", "ea": 13568, "blocks": [{"id": 0, "start": 13568, "end": 13606, "lines": ["endbr64", "push rbp", "mov esi, 2Fh ; '/'; c", "mov rbp, rsp", "push rbx", "mov rbx, rdi", "sub rsp, 8", "call cs:strrchr_ptr", "mov rdx, rax", "mov rax, rbx", "test rdx, rdx", "jz short loc_353F"], "succs": [[1, "fall"], [3, "jump"]]}, {"id": 1, "start": 13606, "end": 13622, "lines": ["lea rax, [rdx+1]", "mov rcx, rax", "sub rcx, rbx", "cmp rcx, 6", "jle short loc_353F"], "succs": [[2, "fall"], [3, "jump"]]}, {"id": 2, "start": 13622, "end": 13631, "lines": ["cmp dword ptr [rdx-6], 696C2E2Fh", "jz short loc_3560"], "succs": [[3, "fall"], [4, "jump"]]}, {"id": 3, "start": 13631, "end": 13658, "lines": ["mov cs:qword_C120, rbx", "mov cs:__progname_full, rbx", "mov rbx, [rbp+var_8]", "mov cs:__progname, rax", "leave", "retn"], "succs": []}, {"id": 4, "start": 13664, "end": 13673, "lines": ["cmp dword ptr [rdx-3], 2F736269h", "jnz short loc_353F"], "succs": [[3, "jump"], [5, "fall"]]}, {"id": 5, "start": 13673, "end": 13679, "lines": ["cmp byte ptr [rdx+1], 6Ch ; 'l'", "jnz short loc_3588"], "succs": [[6, "fall"], [9, "jump"]]}, {"id": 6, "start": 13679, "end": 13685, "lines": ["cmp byte ptr [rax+1], 74h ; 't'", "jnz short loc_3588"], "succs": [[7, "fall"], [9, "jump"]]}, {"id": 7, "start": 13685, "end": 13691, "lines": ["cmp byte ptr [rax+2], 2Dh ; '-'", "jnz short loc_3588"], "succs": [[8, "fall"], [9, "jump"]]}, {"id": 8, "start": 13691, "end": 13700, "lines": ["lea rbx, [rdx+4]", "mov rax, rbx", "jmp short loc_353F"], "succs": [[3, "jump"]]}, {"id": 9, "start": 13704, "end": 13709, "lines": ["mov rbx, rax", "jmp short loc_353F"], "succs": [[3, "jump"]]}]}, {"name": "sub_7110", "ea": 28944, "blocks": [{"id": 0, "start": 28944, "end": 28980, "lines": ["endbr64", "push rbp", "mov rbp, rsp", "push r13", "mov r13, rsi", "xor esi, esi; locale", "push r12", "mov r12, rdx", "push rbx", "sub rsp, 8", "call cs:setlocale_ptr", "test rax, rax", "jz short loc_71A0"], "succs": [[1, "fall"], [7, "jump"]]}, {"id": 1, "start": 28980, "end": 28997, "lines": ["mov rbx, rax", "mov rdi, rax; s", "call cs:strlen_ptr", "cmp rax, r12", "jb short loc_7160"], "succs": [[2, "fall"], [5, "jump"]]}, {"id": 2, "start": 28997, "end": 29002, "lines": ["test r12, r12", "jnz short loc_7180"], "succs": [[3, "fall"], [6, "jump"]]}, {"id": 3, "start": 29002, "end": 29007, "lines": ["mov eax, 22h ; '\"'"], "succs": [[4, "fall"]]}, {"id": 4, "start": 29007, "end": 29018, "lines": ["add rsp, 8", "pop rbx", "pop r12", "pop r13", "pop rbp", "retn"], "succs": []}, {"id": 5, "start": 29024, "end": 29053, "lines": ["mov rsi, rbx; src", "mov rdi, r13; dest", "lea rdx, [rax+1]; n", "call cs:memcpy_ptr", "add rsp, 8", "xor eax, eax", "pop rbx", "pop r12", "pop r13", "pop rbp", "retn"], "succs": []}, {"id": 6, "start": 29056, "end": 29081, "lines": ["lea rdx, [r12-1]; n", "mov rsi, rbx; src", "mov rdi, r13; dest", "call cs:memcpy_ptr", "mov byte ptr [r13+r12-1], 0", "jmp short loc_714A"], "succs": [[3, "jump"]]}, {"id": 7, "start": 29088, "end": 29093, "lines": ["test r12, r12", "jz short loc_71AA"], "succs": [[8, "fall"], [9, "jump"]]}, {"id": 8, "start": 29093, "end": 29098, "lines": ["mov byte ptr [r13+0], 0"], "succs": [[9, "fall"]]}, {"id": 9, "start": 29098, "end": 29105, "lines": ["mov eax, 16h", "jmp short loc_714F"], "succs": [[4, "jump"]]}]}, {"name": "sub_2C00", "ea": 11264, "blocks": [{"id": 0, "start": 11264, "end": 11271, "lines": ["lea eax, [rdi-41h]; switch 38 cases", "cmp al, 25h", "ja short def_2C18; jumptable 0000000000002C18 default case, cases 71-96"], "succs": [[1, "fall"], [2, "jump"]]}, {"id": 1, "start": 11271, "end": 11291, "lines": ["lea rdx, jpt_2C18", "movzx eax, al", "movsxd rax, ds:(jpt_2C18 - 8004h)[rdx+rax*4]", "add rax, rdx", "jmp rax; switch jump"], "succs": [[2, "switch"], [3, "switch"], [4, "switch"], [5, "switch"], [6, "switch"], [7, "switch"], [8, "switch"]]}, {"id": 2, "start": 11296, "end": 11304, "lines": ["movzx edi, dil; jumptable 0000000000002C18 default case, cases 71-96", "lea eax, [rdi-30h]", "retn"], "succs": []}, {"id": 3, "start": 11312, "end": 11318, "lines": ["mov eax, 0Ch; jumptable 0000000000002C18 cases 67,99", "retn"], "succs": []}, {"id": 4, "start": 11328, "end": 11334, "lines": ["mov eax, 0Dh; jumptable 0000000000002C18 cases 68,100", "retn"], "succs": []}, {"id": 5, "start": 11344, "end": 11350, "lines": ["mov eax, 0Eh; jumptable 0000000000002C18 cases 69,101", "retn"], "succs": []}, {"id": 6, "start": 11360, "end": 11366, "lines": ["mov eax, 0Fh; jumptable 0000000000002C18 cases 70,102", "retn"], "succs": []}, {"id": 7, "start": 11376, "end": 11382, "lines": ["mov eax, 0Bh; jumptable 0000000000002C18 cases 66,98", "retn"], "succs": []}, {"id": 8, "start": 11392, "end": 11398, "lines": ["mov eax, 0Ah; jumptable 0000000000002C18 cases 65,97", "retn"], "succs": []}]}, {"name": "sub_3430", "ea": 13360, "blocks": [{"id": 0, "start": 13360, "end": 13388, "lines": ["endbr64", "push rbp", "mov rdi, cs:stdout", "mov rbp, rsp", "push r14", "push rbx", "call sub_6950", "test eax, eax", "jz short loc_3460"], "succs": [[1, "fall"], [3, "jump"]]}, {"id": 1, "start": 13388, "end": 13397, "lines": ["cmp cs:byte_C0F0, 0", "jz short loc_3476"], "succs": [[2, "fall"], [5, "jump"]]}, {"id": 2, "start": 13397, "end": 13408, "lines": ["call cs:__errno_location_ptr", "cmp dword ptr [rax], 20h ; ' '", "jnz short loc_3476"], "succs": [[3, "fall"], [5, "jump"]]}, {"id": 3, "start": 13408, "end": 13425, "lines": ["mov rdi, cs:stderr", "call sub_6950", "test eax, eax", "jnz short loc_34C6"], "succs": [[4, "fall"], [7, "jump"]]}, {"id": 4, "start": 13425, "end": 13430, "lines": ["pop rbx", "pop r14", "pop rbp", "retn"], "succs": []}, {"id": 5, "start": 13430, "end": 13470, "lines": ["lea rdi, domainname; \"gnulib\"", "mov edx, 5; category", "lea rsi, aWriteError; \"write error\"", "call cs:dcgettext_ptr", "mov rdi, cs:qword_C0F8", "mov rbx, rax", "test rdi, rdi", "jz short loc_34D2"], "succs": [[6, "fall"], [8, "jump"]]}, {"id": 6, "start": 13470, "end": 13510, "lines": ["call sub_5820", "mov r14, rax", "call cs:__errno_location_ptr", "mov r8, rbx", "mov rcx, r14", "xor edi, edi", "mov esi, [rax]", "lea rdx, aSS; \"%s: %s\"", "xor eax, eax", "call error"], "succs": [[7, "fall"]]}, {"id": 7, "start": 13510, "end": 13522, "lines": ["mov edi, cs:status; status", "call cs:_exit_ptr"], "succs": []}, {"id": 8, "start": 13522, "end": 13552, "lines": ["call cs:__errno_location_ptr", "mov rcx, rbx", "lea rdx, aSS+4; \"%s\"", "xor edi, edi", "mov esi, [rax]", "xor eax, eax", "call error", "jmp short loc_34C6"], "succs": [[7, "jump"]]}]}, {"name": "sub_61D0", "ea": 25040, "blocks": [{"id": 0, "start": 25040, "end": 25090, "lines": ["endbr64", "push rbp", "mov r10, rsi", "mov r11, rdx", "xor r9d, r9d", "mov rbp, rsp", "push rbx", "mov rbx, rcx", "sub rsp, 68h", "mov rcx, fs:28h", "mov [rbp+var_18], rcx", "mov rcx, r8", "lea r8, [rbp+var_70]", "mov rsi, r8", "jmp short loc_622C"], "succs": [[3, "jump"]]}, {"id": 1, "start": 25096, "end": 25118, "lines": ["mov edx, eax", "add eax, 8", "add rdx, [rcx+10h]", "mov [rcx], eax", "mov rax, [rdx]", "mov [rsi], rax", "test rax, rax", "jz short loc_6250"], "succs": [[2, "fall"], [6, "jump"]]}, {"id": 2, "start": 25118, "end": 25132, "lines": ["add r9, 1", "add rsi, 8", "cmp r9, 0Ah", "jz short loc_6250"], "succs": [[3, "fall"], [6, "jump"]]}, {"id": 3, "start": 25132, "end": 25139, "lines": ["mov eax, [rcx]", "cmp eax, 2Fh ; '/'", "jbe short loc_6208"], "succs": [[1, "jump"], [4, "fall"]]}, {"id": 4, "start": 25139, "end": 25162, "lines": ["mov rdx, [rcx+8]", "lea rax, [rdx+8]", "mov [rcx+8], rax", "mov rax, [rdx]", "mov [rsi], rax", "test rax, rax", "jnz short loc_621E"], "succs": [[2, "jump"], [5, "fall"]]}, {"id": 5, "start": 25162, "end": 25168, "lines": ["nop word ptr [rax+rax+00h]"], "succs": [[6, "fall"]]}, {"id": 6, "start": 25168, "end": 25197, "lines": ["mov rcx, rbx", "mov rdx, r11", "mov rsi, r10", "call sub_5CA0", "mov rax, [rbp+var_18]", "sub rax, fs:28h", "jnz short loc_6273"], "succs": [[7, "fall"], [8, "jump"]]}, {"id": 7, "start": 25197, "end": 25203, "lines": ["mov rbx, [rbp+var_8]", "leave", "retn"], "succs": []}, {"id": 8, "start": 25203, "end": 25209, "lines": ["call cs:__stack_chk_fail_ptr"], "succs": []}]}, {"name": "sub_6280", "ea": 25216, "blocks": [{"id": 0, "start": 25216, "end": 25320, "lines": ["endbr64", "push rbp", "mov r10, rsi", "mov r11, rdx", "mov rbp, rsp", "push rbx", "mov rbx, rcx", "mov ecx, 20h ; ' '", "lea rsi, [rbp+arg_0]", "sub rsp, 0B8h", "mov [rbp+var_20], r8", "lea r8, [rbp+var_A0]", "mov [rbp+var_18], r9", "xor r9d, r9d", "mov rax, fs:28h", "mov [rbp+var_48], rax", "xor eax, eax", "lea rax, [rbp+arg_0]", "mov [rbp+var_B8], 20h ; ' '", "mov [rbp+var_B0], rax", "lea rax, [rbp+var_40]", "mov [rbp+var_A8], rax", "mov rax, r8", "jmp short loc_6313"], "succs": [[3, "jump"]]}, {"id": 1, "start": 25328, "end": 25349, "lines": ["mov edx, ecx", "add ecx, 8", "lea rdx, [rbp+rdx+var_40]", "mov rdx, [rdx]", "mov [rax], rdx", "test rdx, rdx", "jz short loc_6330"], "succs": [[2, "fall"], [6, "jump"]]}, {"id": 2, "start": 25349, "end": 25363, "lines": ["add r9, 1", "add rax, 8", "cmp r9, 0Ah", "jz short loc_6330"], "succs": [[3, "fall"], [6, "jump"]]}, {"id": 3, "start": 25363, "end": 25368, "lines": ["cmp ecx, 2Fh ; '/'", "jbe short loc_62F0"], "succs": [[1, "jump"], [4, "fall"]]}, {"id": 4, "start": 25368, "end": 25386, "lines": ["mov rdx, rsi", "add rsi, 8", "mov rdx, [rdx]", "mov [rax], rdx", "test rdx, rdx", "jnz short loc_6305"], "succs": [[2, "jump"], [5, "fall"]]}, {"id": 5, "start": 25386, "end": 25392, "lines": ["nop word ptr [rax+rax+00h]"], "succs": [[6, "fall"]]}, {"id": 6, "start": 25392, "end": 25421, "lines": ["mov rcx, rbx", "mov rdx, r11", "mov rsi, r10", "call sub_5CA0", "mov rax, [rbp+var_48]", "sub rax, fs:28h", "jnz short loc_6353"], "succs": [[7, "fall"], [8, "jump"]]}, {"id": 7, "start": 25421, "end": 25427, "lines": ["mov rbx, [rbp+var_8]", "leave", "retn"], "succs": []}, {"id": 8, "start": 25427, "end": 25433, "lines": ["call cs:__stack_chk_fail_ptr"], "succs": []}]}, {"name": "sub_7020", "ea": 28704, "blocks": [{"id": 0, "start": 28704, "end": 28759, "lines": ["endbr64", "push rbp", "mov edx, 101h", "mov rbp, rsp", "sub rsp, 110h", "mov rsi, fs:28h", "mov [rbp+var_8], rsi", "lea rsi, [rbp+var_110]", "call sub_70E0", "test eax, eax", "mov eax, 0", "jnz short loc_7072"], "succs": [[1, "fall"], [4, "jump"]]}, {"id": 1, "start": 28759, "end": 28769, "lines": ["cmp word ptr [rbp+var_110], 43h ; 'C'", "jz short loc_7072"], "succs": [[2, "fall"], [4, "jump"]]}, {"id": 2, "start": 28769, "end": 28781, "lines": ["cmp [rbp+var_110], 49534F50h", "jz short loc_7088"], "succs": [[3, "fall"], [6, "jump"]]}, {"id": 3, "start": 28781, "end": 28786, "lines": ["mov eax, 1"], "succs": [[4, "fall"]]}, {"id": 4, "start": 28786, "end": 28801, "lines": ["mov rdx, [rbp+var_8]", "sub rdx, fs:28h", "jnz short loc_7096"], "succs": [[5, "fall"], [8, "jump"]]}, {"id": 5, "start": 28801, "end": 28803, "lines": ["leave", "retn"], "succs": []}, {"id": 6, "start": 28808, "end": 28820, "lines": ["xor eax, eax", "cmp [rbp+var_10C], 58h ; 'X'", "jnz short loc_706D"], "succs": [[3, "jump"], [7, "fall"]]}, {"id": 7, "start": 28820, "end": 28822, "lines": ["jmp short loc_7072"], "succs": [[4, "jump"]]}, {"id": 8, "start": 28822, "end": 28828, "lines": ["call cs:__stack_chk_fail_ptr"], "succs": []}]}, {"name": "sub_20DD", "ea": 8413, "blocks": [{"id": 0, "start": 8413, "end": 8454, "lines": ["push rbp", "mov rbp, rsp", "push r12", "mov r12d, esi", "mov esi, 2", "push rbx", "mov ebx, edi", "mov rdi, cs:stderr", "call cs:__vfprintf_chk_ptr", "inc cs:error_message_count", "test r12d, r12d", "jz short loc_210E"], "succs": [[1, "fall"], [2, "jump"]]}, {"id": 1, "start": 8454, "end": 8462, "lines": ["mov edi, r12d", "call sub_2060"], "succs": [[2, "fall"]]}, {"id": 2, "start": 8462, "end": 8479, "lines": ["mov rdi, cs:stderr; _IO_FILE *", "mov rax, [rdi+28h]", "cmp rax, [rdi+30h]", "jb short loc_212C"], "succs": [[3, "fall"], [4, "jump"]]}, {"id": 3, "start": 8479, "end": 8492, "lines": ["mov esi, 0Ah; int", "call cs:__overflow_ptr", "jmp short loc_2137"], "succs": [[5, "jump"]]}, {"id": 4, "start": 8492, "end": 8503, "lines": ["lea rdx, [rax+1]", "mov [rdi+28h], rdx", "mov byte ptr [rax], 0Ah"], "succs": [[5, "fall"]]}, {"id": 5, "start": 8503, "end": 8520, "lines": ["mov rdi, cs:stderr; stream", "call cs:fflush_unlocked_ptr", "test ebx, ebx", "jz short loc_2150"], "succs": [[6, "fall"], [7, "jump"]]}, {"id": 6, "start": 8520, "end": 8528, "lines": ["mov edi, ebx; status", "call cs:exit_ptr"], "succs": []}, {"id": 7, "start": 8528, "end": 8533, "lines": ["pop rbx", "pop r12", "pop rbp", "retn"], "succs": []}]}, {"name": "sub_3640", "ea": 13888, "blocks": [{"id": 0, "start": 13888, "end": 13947, "lines": ["push rbp", "mov edx, 5; category", "mov rbp, rsp", "push r14", "push rbx", "mov rbx, rdi", "sub rsp, 30h", "mov r14, fs:28h", "mov [rbp+var_18], r14", "mov r14d, esi", "mov rsi, rdi; msgid", "lea rdi, domainname; \"gnulib\"", "call cs:dcgettext_ptr", "mov r8, rax", "cmp rbx, rax", "jz short loc_36A0"], "succs": [[1, "fall"], [3, "jump"]]}, {"id": 1, "start": 13947, "end": 13966, "lines": ["mov rax, [rbp+var_18]", "sub rax, fs:28h", "jnz loc_3712"], "succs": [[2, "fall"], [7, "jump"]]}, {"id": 2, "start": 13966, "end": 13978, "lines": ["add rsp, 30h", "mov rax, r8", "pop rbx", "pop r14", "pop rbp", "retn"], "succs": []}, {"id": 3, "start": 13984, "end": 14032, "lines": ["mov [rbp+var_38], rax", "lea rcx, [rbp+var_20]", "lea rdi, [rbp+pc32]; pc32", "mov edx, 3", "mov [rbp+var_20], 0", "lea rsi, byte_8F30; s", "call sub_69C0", "mov r8, [rbp+var_38]", "cmp rax, 3", "jz short loc_36F0"], "succs": [[4, "fall"], [5, "jump"]]}, {"id": 4, "start": 14032, "end": 14056, "lines": ["lea r8, asc_8348+2; \"'`\"", "cmp r14d, 9", "lea rax, asc_8348; \"\\\"'`\"", "cmovz r8, rax", "jmp short loc_367B"], "succs": [[1, "jump"]]}, {"id": 5, "start": 14064, "end": 14073, "lines": ["cmp [rbp+pc32], 2018h", "jnz short loc_36D0"], "succs": [[4, "jump"], [6, "fall"]]}, {"id": 6, "start": 14073, "end": 14098, "lines": ["xor eax, eax", "cmp byte ptr [r8], 27h ; '''", "lea rcx, byte_8F30", "setz al", "lea r8, [rcx+rax*4]", "jmp loc_367B"], "succs": [[1, "jump"]]}, {"id": 7, "start": 14098, "end": 14104, "lines": ["call cs:__stack_chk_fail_ptr"], "succs": []}]}, {"name": "sub_5400", "ea": 21504, "blocks": [{"id": 0, "start": 21504, "end": 21539, "lines": ["endbr64", "push rbp", "mov rbp, rsp", "push r13", "push r12", "push rbx", "sub rsp, 8", "mov eax, cs:dword_C078", "mov r13, cs:ptr", "cmp eax, 1", "jle short loc_5452"], "succs": [[1, "fall"], [3, "jump"]]}, {"id": 1, "start": 21539, "end": 21568, "lines": ["sub eax, 2", "lea rbx, [r13+18h]", "shl rax, 4", "lea r12, [r13+rax+28h]", "xchg ax, ax", "nop word ptr [rax+rax+00000000h]"], "succs": [[2, "fall"]]}, {"id": 2, "start": 21568, "end": 21586, "lines": ["mov rdi, [rbx]; ptr", "add rbx, 10h", "call cs:free_ptr", "cmp rbx, r12", "jnz short loc_5440"], "succs": [[3, "fall"], [2, "jump"]]}, {"id": 3, "start": 21586, "end": 21602, "lines": ["mov rdi, [r13+8]; ptr", "lea rbx, unk_C140", "cmp rdi, rbx", "jz short loc_547A"], "succs": [[4, "fall"], [5, "jump"]]}, {"id": 4, "start": 21602, "end": 21626, "lines": ["call cs:free_ptr", "mov qword ptr cs:xmmword_C090+8, rbx", "mov qword ptr cs:xmmword_C090, 100h"], "succs": [[5, "fall"]]}, {"id": 5, "start": 21626, "end": 21638, "lines": ["lea rbx, xmmword_C090", "cmp r13, rbx", "jz short loc_5496"], "succs": [[6, "fall"], [7, "jump"]]}, {"id": 6, "start": 21638, "end": 21654, "lines": ["mov rdi, r13; ptr", "call cs:free_ptr", "mov cs:ptr, rbx"], "succs": [[7, "fall"]]}, {"id": 7, "start": 21654, "end": 21675, "lines": ["mov cs:dword_C078, 1", "add rsp, 8", "pop rbx", "pop r12", "pop r13", "pop rbp", "retn"], "succs": []}]}, {"name": "sub_6950", "ea": 26960, "blocks": [{"id": 0, "start": 26960, "end": 27007, "lines": ["endbr64", "push rbp", "mov rbp, rsp", "push r14", "push rbx", "sub rsp, 10h", "mov [rbp+stream], rdi", "call cs:__fpending_ptr", "mov rdi, [rbp+stream]; stream", "mov r14, rax", "mov ebx, [rdi]", "and ebx, 20h", "call cs:fclose_ptr", "test ebx, ebx", "jnz short loc_69A8"], "succs": [[1, "fall"], [5, "jump"]]}, {"id": 1, "start": 27007, "end": 27011, "lines": ["test eax, eax", "jz short loc_6999"], "succs": [[2, "fall"], [4, "jump"]]}, {"id": 2, "start": 27011, "end": 27016, "lines": ["test r14, r14", "jnz short loc_69B8"], "succs": [[3, "fall"], [7, "jump"]]}, {"id": 3, "start": 27016, "end": 27033, "lines": ["call cs:__errno_location_ptr", "cmp dword ptr [rax], 9", "setnz al", "movzx eax, al", "neg eax"], "succs": [[4, "fall"]]}, {"id": 4, "start": 27033, "end": 27042, "lines": ["add rsp, 10h", "pop rbx", "pop r14", "pop rbp", "retn"], "succs": []}, {"id": 5, "start": 27048, "end": 27052, "lines": ["test eax, eax", "jnz short loc_69B8"], "succs": [[6, "fall"], [7, "jump"]]}, {"id": 6, "start": 27052, "end": 27064, "lines": ["call cs:__errno_location_ptr", "mov dword ptr [rax], 0"], "succs": [[7, "fall"]]}, {"id": 7, "start": 27064, "end": 27071, "lines": ["mov eax, 0FFFFFFFFh", "jmp short loc_6999"], "succs": [[4, "jump"]]}]}, {"name": "sub_6600", "ea": 26112, "blocks": [{"id": 0, "start": 26112, "end": 26137, "lines": ["endbr64", "push rbp", "mov rcx, rdx", "mov rbp, rsp", "push r12", "mov r12, rsi", "push rbx", "mov rbx, [rsi]", "test rdi, rdi", "jz short loc_6648"], "succs": [[1, "fall"], [4, "jump"]]}, {"id": 1, "start": 26137, "end": 26152, "lines": ["mov rax, rbx", "shr rax, 1", "add rax, 1", "add rbx, rax", "jb short loc_6669"], "succs": [[2, "fall"], [6, "jump"]]}, {"id": 2, "start": 26152, "end": 26169, "lines": ["mov rdx, rcx", "mov rsi, rbx", "call sub_6FE0", "test rax, rax", "jz short loc_6669"], "succs": [[3, "fall"], [6, "jump"]]}, {"id": 3, "start": 26169, "end": 26178, "lines": ["mov [r12], rbx", "pop rbx", "pop r12", "pop rbp", "retn"], "succs": []}, {"id": 4, "start": 26184, "end": 26189, "lines": ["test rbx, rbx", "jnz short loc_6628"], "succs": [[2, "jump"], [5, "fall"]]}, {"id": 5, "start": 26189, "end": 26217, "lines": ["xor edx, edx", "mov eax, 80h", "div rcx", "xor edx, edx", "cmp rcx, 80h", "setnbe dl", "lea rbx, [rax+rdx]", "jmp short loc_6628"], "succs": [[2, "jump"]]}, {"id": 6, "start": 26217, "end": 26223, "lines": ["call sub_6900"], "succs": []}]}, {"name": "sub_3590", "ea": 13712, "blocks": [{"id": 0, "start": 13712, "end": 13770, "lines": ["endbr64", "push rbp", "mov edx, 5; category", "mov rbp, rsp", "push r14", "push rbx", "mov rbx, rdi", "sub rsp, 30h", "mov r14, fs:28h", "mov [rbp+var_18], r14", "mov r14, rsi", "mov rsi, rdi; msgid", "xor edi, edi; domainname", "call cs:dcgettext_ptr", "mov r8, rax", "cmp rbx, rax", "jz short loc_35E8"], "succs": [[1, "fall"], [3, "jump"]]}, {"id": 1, "start": 13770, "end": 13785, "lines": ["mov rax, [rbp+var_18]", "sub rax, fs:28h", "jnz short loc_3625"], "succs": [[2, "fall"], [5, "jump"]]}, {"id": 2, "start": 13785, "end": 13797, "lines": ["add rsp, 30h", "mov rax, r8", "pop rbx", "pop r14", "pop rbp", "retn"], "succs": []}, {"id": 3, "start": 13800, "end": 13848, "lines": ["mov [rbp+var_38], rax", "lea rcx, [rbp+p]; p", "lea rdi, [rbp+pc32]; pc32", "mov edx, 2; n", "mov qword ptr [rbp+p.__count], 0", "lea rsi, s; s", "call cs:mbrtoc32_ptr", "mov r8, [rbp+var_38]", "cmp rax, 2", "jnz short loc_35CA"], "succs": [[1, "jump"], [4, "fall"]]}, {"id": 4, "start": 13848, "end": 13861, "lines": ["cmp [rbp+pc32], 7FFh", "cmovz r8, r14", "jmp short loc_35CA"], "succs": [[1, "jump"]]}, {"id": 5, "start": 13861, "end": 13867, "lines": ["call cs:__stack_chk_fail_ptr"], "succs": []}]}, {"name": "sub_59B0", "ea": 22960, "blocks": [{"id": 0, "start": 22960, "end": 23051, "lines": ["endbr64", "push rbp", "mov rbp, rsp", "sub rsp, 40h", "movdqa xmm0, cs:xmmword_C240", "mov rax, fs:28h", "mov [rbp+var_8], rax", "mov rax, rcx", "mov rcx, cs:qword_C270", "movaps [rbp+var_40], xmm0", "movdqa xmm0, cs:xmmword_C250", "mov [rbp+var_10], rcx", "movaps [rbp+var_30], xmm0", "movdqa xmm0, cs:xmmword_C260", "mov dword ptr [rbp+var_40], 0Ah", "movaps [rbp+var_20], xmm0", "test rsi, rsi", "jz loc_246F"], "succs": [[1, "fall"], [5, "jump"]]}, {"id": 1, "start": 23051, "end": 23060, "lines": ["test rdx, rdx", "jz loc_246F"], "succs": [[2, "fall"], [5, "jump"]]}, {"id": 2, "start": 23060, "end": 23102, "lines": ["mov qword ptr [rbp+var_20+8], rsi", "lea rcx, [rbp+var_40]", "mov rsi, rax", "mov [rbp+var_10], rdx", "mov rdx, 0FFFFFFFFFFFFFFFFh", "call sub_4F70", "mov rdx, [rbp+var_8]", "sub rdx, fs:28h", "jnz short loc_5A40"], "succs": [[3, "fall"], [4, "jump"]]}, {"id": 3, "start": 23102, "end": 23104, "lines": ["leave", "retn"], "succs": []}, {"id": 4, "start": 23104, "end": 23110, "lines": ["call cs:__stack_chk_fail_ptr"], "succs": []}, {"id": 5, "start": 9327, "end": 9333, "lines": ["call cs:abort_ptr"], "succs": []}]}, {"name": "sub_5A50", "ea": 23120, "blocks": [{"id": 0, "start": 23120, "end": 23211, "lines": ["endbr64", "push rbp", "mov rbp, rsp", "sub rsp, 40h", "movdqa xmm0, cs:xmmword_C240", "mov rax, fs:28h", "mov [rbp+var_8], rax", "mov rax, rcx", "mov rcx, cs:qword_C270", "movaps [rbp+var_40], xmm0", "movdqa xmm0, cs:xmmword_C250", "mov [rbp+var_10], rcx", "movaps [rbp+var_30], xmm0", "movdqa xmm0, cs:xmmword_C260", "mov dword ptr [rbp+var_40], 0Ah", "movaps [rbp+var_20], xmm0", "test rsi, rsi", "jz loc_2475"], "succs": [[1, "fall"], [5, "jump"]]}, {"id": 1, "start": 23211, "end": 23220, "lines": ["test rdx, rdx", "jz loc_2475"], "succs": [[2, "fall"], [5, "jump"]]}, {"id": 2, "start": 23220, "end": 23258, "lines": ["mov qword ptr [rbp+var_20+8], rsi", "lea rcx, [rbp+var_40]", "mov rsi, rax", "mov [rbp+var_10], rdx", "mov rdx, r8", "call sub_4F70", "mov rdx, [rbp+var_8]", "sub rdx, fs:28h", "jnz short loc_5ADC"], "succs": [[3, "fall"], [4, "jump"]]}, {"id": 3, "start": 23258, "end": 23260, "lines": ["leave", "retn"], "succs": []}, {"id": 4, "start": 23260, "end": 23266, "lines": ["call cs:__stack_chk_fail_ptr"], "succs": []}, {"id": 5, "start": 9333, "end": 9339, "lines": ["call cs:abort_ptr"], "succs": []}]}, {"name": "sub_5AF0", "ea": 23280, "blocks": [{"id": 0, "start": 23280, "end": 23371, "lines": ["endbr64", "push rbp", "mov rbp, rsp", "sub rsp, 40h", "movdqa xmm0, cs:xmmword_C240", "mov rax, fs:28h", "mov [rbp+var_8], rax", "mov rax, rdx", "mov rdx, cs:qword_C270", "movaps [rbp+var_40], xmm0", "movdqa xmm0, cs:xmmword_C250", "mov [rbp+var_10], rdx", "movaps [rbp+var_30], xmm0", "movdqa xmm0, cs:xmmword_C260", "mov dword ptr [rbp+var_40], 0Ah", "movaps [rbp+var_20], xmm0", "test rdi, rdi", "jz loc_247B"], "succs": [[1, "fall"], [5, "jump"]]}, {"id": 1, "start": 23371, "end": 23380, "lines": ["test rsi, rsi", "jz loc_247B"], "succs": [[2, "fall"], [5, "jump"]]}, {"id": 2, "start": 23380, "end": 23424, "lines": ["mov qword ptr [rbp+var_20+8], rdi", "mov rdx, 0FFFFFFFFFFFFFFFFh", "xor edi, edi", "lea rcx, [rbp+var_40]", "mov [rbp+var_10], rsi", "mov rsi, rax", "call sub_4F70", "mov rdx, [rbp+var_8]", "sub rdx, fs:28h", "jnz short loc_5B82"], "succs": [[3, "fall"], [4, "jump"]]}, {"id": 3, "start": 23424, "end": 23426, "lines": ["leave", "retn"], "succs": []}, {"id": 4, "start": 23426, "end": 23432, "lines": ["call cs:__stack_chk_fail_ptr"], "succs": []}, {"id": 5, "start": 9339, "end": 9345, "lines": ["call cs:abort_ptr"], "succs": []}]}, {"name": "sub_5B90", "ea": 23440, "blocks": [{"id": 0, "start": 23440, "end": 23534, "lines": ["endbr64", "push rbp", "mov rax, rdx", "mov rbp, rsp", "sub rsp, 40h", "movdqa xmm0, cs:xmmword_C240", "mov rdx, fs:28h", "mov [rbp+var_8], rdx", "mov rdx, rcx", "mov rcx, cs:qword_C270", "movaps [rbp+var_40], xmm0", "movdqa xmm0, cs:xmmword_C250", "mov [rbp+var_10], rcx", "movaps [rbp+var_30], xmm0", "movdqa xmm0, cs:xmmword_C260", "mov dword ptr [rbp+var_40], 0Ah", "movaps [rbp+var_20], xmm0", "test rdi, rdi", "jz loc_2481"], "succs": [[1, "fall"], [5, "jump"]]}, {"id": 1, "start": 23534, "end": 23543, "lines": ["test rsi, rsi", "jz loc_2481"], "succs": [[2, "fall"], [5, "jump"]]}, {"id": 2, "start": 23543, "end": 23580, "lines": ["mov qword ptr [rbp+var_20+8], rdi", "lea rcx, [rbp+var_40]", "xor edi, edi", "mov [rbp+var_10], rsi", "mov rsi, rax", "call sub_4F70", "mov rdx, [rbp+var_8]", "sub rdx, fs:28h", "jnz short loc_5C1E"], "succs": [[3, "fall"], [4, "jump"]]}, {"id": 3, "start": 23580, "end": 23582, "lines": ["leave", "retn"], "succs": []}, {"id": 4, "start": 23582, "end": 23588, "lines": ["call cs:__stack_chk_fail_ptr"], "succs": []}, {"id": 5, "start": 9345, "end": 9351, "lines": ["call cs:abort_ptr"], "succs": []}]}, {"name": "sub_65A0", "ea": 26016, "blocks": [{"id": 0, "start": 26016, "end": 26038, "lines": ["endbr64", "push rbp", "mov rbp, rsp", "push r12", "mov r12, rsi", "push rbx", "mov rbx, [rsi]", "test rdi, rdi", "jz short loc_65E8"], "succs": [[1, "fall"], [4, "jump"]]}, {"id": 1, "start": 26038, "end": 26053, "lines": ["mov rax, rbx", "shr rax, 1", "add rax, 1", "add rbx, rax", "jb short loc_65F6"], "succs": [[2, "fall"], [5, "jump"]]}, {"id": 2, "start": 26053, "end": 26072, "lines": ["mov edx, 1", "mov rsi, rbx", "call sub_6FE0", "test rax, rax", "jz short loc_65F6"], "succs": [[3, "fall"], [5, "jump"]]}, {"id": 3, "start": 26072, "end": 26081, "lines": ["mov [r12], rbx", "pop rbx", "pop r12", "pop rbp", "retn"], "succs": []}, {"id": 4, "start": 26088, "end": 26102, "lines": ["test rbx, rbx", "mov eax, 80h", "cmovz rbx, rax", "jmp short loc_65C5"], "succs": [[2, "jump"]]}, {"id": 5, "start": 26102, "end": 26108, "lines": ["call sub_6900"], "succs": []}]}, {"name": "sub_2060", "ea": 8288, "blocks": [{"id": 0, "start": 8288, "end": 8335, "lines": ["push rbp", "mov edx, 400h; buflen", "mov rbp, rsp", "sub rsp, 410h", "mov rsi, fs:28h", "mov [rbp+var_8], rsi", "lea rsi, [rbp+buf]; buf", "call cs:strerror_r_ptr", "test rax, rax", "jnz short loc_20A8"], "succs": [[1, "fall"], [2, "jump"]]}, {"id": 1, "start": 8335, "end": 8360, "lines": ["mov edx, 5; category", "lea rsi, msgid; \"Unknown system error\"", "lea rdi, domainname; \"gnulib\"", "call cs:dcgettext_ptr"], "succs": [[2, "fall"]]}, {"id": 2, "start": 8360, "end": 8405, "lines": ["mov rcx, rax", "mov rdi, cs:stderr", "xor eax, eax", "lea rdx, aSS+2; \": %s\"", "mov esi, 2", "call cs:__fprintf_chk_ptr", "mov rax, [rbp+var_8]", "sub rax, fs:28h", "jz short locret_20DB"], "succs": [[3, "fall"], [4, "jump"]]}, {"id": 3, "start": 8405, "end": 8411, "lines": ["call cs:__stack_chk_fail_ptr"], "succs": []}, {"id": 4, "start": 8411, "end": 8413, "lines": ["leave", "retn"], "succs": []}]}, {"name": "sub_217F", "ea": 8575, "blocks": [{"id": 0, "start": 8575, "end": 8618, "lines": ["endbr64", "push rbp", "mov rbp, rsp", "push r14", "mov r14, rcx", "push r13", "mov r13, rdx", "push r12", "mov r12d, esi", "push rbx", "mov ebx, edi", "call sub_2155", "mov rax, cs:error_print_progname", "test rax, rax", "jz short loc_21AE"], "succs": [[1, "fall"], [2, "jump"]]}, {"id": 1, "start": 8618, "end": 8622, "lines": ["call rax ; error_print_progname", "jmp short loc_21D2"], "succs": [[3, "jump"]]}, {"id": 2, "start": 8622, "end": 8658, "lines": ["call sub_34F0", "mov rdi, cs:stderr", "mov esi, 2", "lea rdx, aS_0; \"%s: \"", "mov rcx, rax", "xor eax, eax", "call cs:__fprintf_chk_ptr"], "succs": [[3, "fall"]]}, {"id": 3, "start": 8658, "end": 8682, "lines": ["mov rcx, r14", "mov rdx, r13", "mov esi, r12d", "mov edi, ebx; status", "pop rbx", "pop r12", "pop r13", "pop r14", "pop rbp", "jmp sub_20DD"], "succs": [[4, "jump"]]}, {"id": 4, "start": 8413, "end": 8413, "lines": [], "succs": []}]}, {"name": "error", "ea": 8682, "blocks": [{"id": 0, "start": 8682, "end": 8722, "lines": ["endbr64", "push rbp", "mov rbp, rsp", "sub rsp, 0D0h", "mov [rbp+var_98], rcx", "mov [rbp+var_90], r8", "mov [rbp+var_88], r9", "test al, al", "jz short loc_2232"], "succs": [[1, "fall"], [2, "jump"]]}, {"id": 1, "start": 8722, "end": 8754, "lines": ["movaps [rbp+var_80], xmm0", "movaps [rbp+var_70], xmm1", "movaps [rbp+var_60], xmm2", "movaps [rbp+var_50], xmm3", "movaps [rbp+var_40], xmm4", "movaps [rbp+var_30], xmm5", "movaps [rbp+var_20], xmm6", "movaps [rbp+var_10], xmm7"], "succs": [[2, "fall"]]}, {"id": 2, "start": 8754, "end": 8847, "lines": ["mov rax, fs:28h", "mov [rbp+var_B8], rax", "xor eax, eax", "lea rax, [rbp+arg_0]", "lea rcx, [rbp+var_D0]", "mov [rbp+var_D0], 18h", "mov [rbp+var_C8], rax", "lea rax, [rbp+var_B0]", "mov [rbp+var_C0], rax", "mov [rbp+var_CC], 30h ; '0'", "call sub_217F", "mov rax, [rbp+var_B8]", "sub rax, fs:28h", "jz short locret_2295"], "succs": [[3, "fall"], [4, "jump"]]}, {"id": 3, "start": 8847, "end": 8853, "lines": ["call cs:__stack_chk_fail_ptr"], "succs": []}, {"id": 4, "start": 8853, "end": 8855, "lines": ["leave", "retn"], "succs": []}]}, {"name": "error_at_line", "ea": 9116, "blocks": [{"id": 0, "start": 9116, "end": 9142, "lines": ["endbr64", "push rbp", "mov rbp, rsp", "sub rsp, 0D0h", "mov [rbp+var_88], r9", "test al, al", "jz short loc_23D6"], "succs": [[1, "fall"], [2, "jump"]]}, {"id": 1, "start": 9142, "end": 9174, "lines": ["movaps [rbp+var_80], xmm0", "movaps [rbp+var_70], xmm1", "movaps [rbp+var_60], xmm2", "movaps [rbp+var_50], xmm3", "movaps [rbp+var_40], xmm4", "movaps [rbp+var_30], xmm5", "movaps [rbp+var_20], xmm6", "movaps [rbp+var_10], xmm7"], "succs": [[2, "fall"]]}, {"id": 2, "start": 9174, "end": 9267, "lines": ["mov rax, fs:28h", "mov [rbp+var_B8], rax", "xor eax, eax", "lea rax, [rbp+arg_0]", "lea r9, [rbp+var_D0]", "mov [rbp+var_D0], 28h ; '('", "mov [rbp+var_C8], rax", "lea rax, [rbp+var_B0]", "mov [rbp+var_C0], rax", "mov [rbp+var_CC], 30h ; '0'", "call sub_2297", "mov rax, [rbp+var_B8]", "sub rax, fs:28h", "jz short locret_2439"], "succs": [[3, "fall"], [4, "jump"]]}, {"id": 3, "start": 9267, "end": 9273, "lines": ["call cs:__stack_chk_fail_ptr"], "succs": []}, {"id": 4, "start": 9273, "end": 9275, "lines": ["leave", "retn"], "succs": []}]}, {"name": "sub_2B10", "ea": 11024, "blocks": [{"id": 0, "start": 11024, "end": 11043, "lines": ["lea rdi, unk_C0A8", "lea rax, unk_C0A8", "cmp rax, rdi", "jz short locret_2B38"], "succs": [[1, "fall"], [3, "jump"]]}, {"id": 1, "start": 11043, "end": 11055, "lines": ["mov rax, cs:_ITM_deregisterTMCloneTable_ptr", "test rax, rax", "jz short locret_2B38"], "succs": [[2, "fall"], [3, "jump"]]}, {"id": 2, "start": 11055, "end": 11057, "lines": ["jmp rax"], "succs": [[4, "jump"]]}, {"id": 3, "start": 11064, "end": 11065, "lines": ["retn"], "succs": []}, {"id": 4, "start": 50168, "end": 50168, "lines": [], "succs": []}]}, {"name": "sub_2B40", "ea": 11072, "blocks": [{"id": 0, "start": 11072, "end": 11108, "lines": ["lea rdi, unk_C0A8", "lea rsi, unk_C0A8", "sub rsi, rdi", "mov rax, rsi", "shr rsi, 3Fh", "sar rax, 3", "add rsi, rax", "sar rsi, 1", "jz short locret_2B78"], "succs": [[1, "fall"], [3, "jump"]]}, {"id": 1, "start": 11108, "end": 11120, "lines": ["mov rax, cs:_ITM_registerTMCloneTable_ptr", "test rax, rax", "jz short locret_2B78"], "succs": [[2, "fall"], [3, "jump"]]}, {"id": 2, "start": 11120, "end": 11122, "lines": ["jmp rax"], "succs": [[4, "jump"]]}, {"id": 3, "start": 11128, "end": 11129, "lines": ["retn"], "succs": []}, {"id": 4, "start": 50184, "end": 50184, "lines": [], "succs": []}]}, {"name": "sub_2B80", "ea": 11136, "blocks": [{"id": 0, "start": 11136, "end": 11149, "lines": ["endbr64", "cmp cs:byte_C0E8, 0", "jnz short locret_2BC0"], "succs": [[1, "fall"], [4, "jump"]]}, {"id": 1, "start": 11149, "end": 11163, "lines": ["push rbp", "cmp cs:__cxa_finalize_ptr, 0", "mov rbp, rsp", "jz short loc_2BA8"], "succs": [[2, "fall"], [3, "jump"]]}, {"id": 2, "start": 11163, "end": 11176, "lines": ["mov rdi, cs:lpdso_handle; void *", "call cs:__cxa_finalize_ptr"], "succs": [[3, "fall"]]}, {"id": 3, "start": 11176, "end": 11190, "lines": ["call sub_2B10", "mov cs:byte_C0E8, 1", "pop rbp", "retn"], "succs": []}, {"id": 4, "start": 11200, "end": 11201, "lines": ["retn"], "succs": []}]}, {"name": "sub_5520", "ea": 21792, "blocks": [{"id": 0, "start": 21792, "end": 21829, "lines": ["endbr64", "push rbp", "mov rbp, rsp", "sub rsp, 40h", "mov rax, fs:28h", "mov [rbp+var_8], rax", "mov rax, rdx", "cmp esi, 0Ah", "jz loc_2451"], "succs": [[1, "fall"], [4, "jump"]]}, {"id": 1, "start": 21829, "end": 21893, "lines": ["pxor xmm0, xmm0", "mov [rbp+var_40], esi", "lea rcx, [rbp+var_40]", "mov rdx, 0FFFFFFFFFFFFFFFFh", "movups [rbp+var_38], xmm0", "mov rsi, rax", "movups [rbp+var_28], xmm0", "pxor xmm0, xmm0", "mov [rbp+var_3C], 0", "movups [rbp+var_18], xmm0", "call sub_4F70", "mov rdx, [rbp+var_8]", "sub rdx, fs:28h", "jnz short loc_5587"], "succs": [[2, "fall"], [3, "jump"]]}, {"id": 2, "start": 21893, "end": 21895, "lines": ["leave", "retn"], "succs": []}, {"id": 3, "start": 21895, "end": 21901, "lines": ["call cs:__stack_chk_fail_ptr"], "succs": []}, {"id": 4, "start": 9297, "end": 9303, "lines": ["call cs:abort_ptr"], "succs": []}]}, {"name": "sub_5590", "ea": 21904, "blocks": [{"id": 0, "start": 21904, "end": 21944, "lines": ["endbr64", "push rbp", "mov rax, rdx", "mov rbp, rsp", "sub rsp, 40h", "mov rdx, fs:28h", "mov [rbp+var_8], rdx", "mov rdx, rcx", "cmp esi, 0Ah", "jz loc_2457"], "succs": [[1, "fall"], [4, "jump"]]}, {"id": 1, "start": 21944, "end": 22001, "lines": ["pxor xmm0, xmm0", "mov [rbp+var_40], esi", "lea rcx, [rbp+var_40]", "mov rsi, rax", "movups [rbp+var_38], xmm0", "movups [rbp+var_28], xmm0", "pxor xmm0, xmm0", "mov [rbp+var_3C], 0", "movups [rbp+var_18], xmm0", "call sub_4F70", "mov rdx, [rbp+var_8]", "sub rdx, fs:28h", "jnz short loc_55F3"], "succs": [[2, "fall"], [3, "jump"]]}, {"id": 2, "start": 22001, "end": 22003, "lines": ["leave", "retn"], "succs": []}, {"id": 3, "start": 22003, "end": 22009, "lines": ["call cs:__stack_chk_fail_ptr"], "succs": []}, {"id": 4, "start": 9303, "end": 9309, "lines": ["call cs:abort_ptr"], "succs": []}]}, {"name": "sub_5600", "ea": 22016, "blocks": [{"id": 0, "start": 22016, "end": 22052, "lines": ["endbr64", "push rbp", "mov rbp, rsp", "sub rsp, 40h", "mov rax, fs:28h", "mov [rbp+var_8], rax", "xor eax, eax", "cmp edi, 0Ah", "jz loc_245D"], "succs": [[1, "fall"], [4, "jump"]]}, {"id": 1, "start": 22052, "end": 22115, "lines": ["pxor xmm0, xmm0", "mov [rbp+var_40], edi", "lea rcx, [rbp+var_40]", "xor edi, edi", "movups [rbp+var_38], xmm0", "mov rdx, 0FFFFFFFFFFFFFFFFh", "movups [rbp+var_28], xmm0", "pxor xmm0, xmm0", "mov [rbp+var_3C], 0", "movups [rbp+var_18], xmm0", "call sub_4F70", "mov rdx, [rbp+var_8]", "sub rdx, fs:28h", "jnz short loc_5665"], "succs": [[2, "fall"], [3, "jump"]]}, {"id": 2, "start": 22115, "end": 22117, "lines": ["leave", "retn"], "succs": []}, {"id": 3, "start": 22117, "end": 22123, "lines": ["call cs:__stack_chk_fail_ptr"], "succs": []}, {"id": 4, "start": 9309, "end": 9315, "lines": ["call cs:abort_ptr"], "succs": []}]}, {"name": "sub_5670", "ea": 22128, "blocks": [{"id": 0, "start": 22128, "end": 22164, "lines": ["endbr64", "push rbp", "mov rbp, rsp", "sub rsp, 40h", "mov rax, fs:28h", "mov [rbp+var_8], rax", "xor eax, eax", "cmp edi, 0Ah", "jz loc_2463"], "succs": [[1, "fall"], [4, "jump"]]}, {"id": 1, "start": 22164, "end": 22220, "lines": ["pxor xmm0, xmm0", "mov [rbp+var_40], edi", "xor edi, edi", "lea rcx, [rbp+var_40]", "movups [rbp+var_38], xmm0", "movups [rbp+var_28], xmm0", "pxor xmm0, xmm0", "mov [rbp+var_3C], 0", "movups [rbp+var_18], xmm0", "call sub_4F70", "mov rdx, [rbp+var_8]", "sub rdx, fs:28h", "jnz short loc_56CE"], "succs": [[2, "fall"], [3, "jump"]]}, {"id": 2, "start": 22220, "end": 22222, "lines": ["leave", "retn"], "succs": []}, {"id": 3, "start": 22222, "end": 22228, "lines": ["call cs:__stack_chk_fail_ptr"], "succs": []}, {"id": 4, "start": 9315, "end": 9321, "lines": ["call cs:abort_ptr"], "succs": []}]}, {"name": "sub_5930", "ea": 22832, "blocks": [{"id": 0, "start": 22832, "end": 22869, "lines": ["endbr64", "push rbp", "mov rbp, rsp", "sub rsp, 40h", "mov rax, fs:28h", "mov [rbp+var_8], rax", "mov rax, rdx", "cmp esi, 0Ah", "jz loc_2469"], "succs": [[1, "fall"], [4, "jump"]]}, {"id": 1, "start": 22869, "end": 22941, "lines": ["pxor xmm0, xmm0", "mov [rbp+var_40], esi", "lea rcx, [rbp+var_40]", "mov rdx, 0FFFFFFFFFFFFFFFFh", "movups [rbp+var_18], xmm0", "movdqa xmm0, cs:xmmword_8F70", "mov rsi, rax", "mov [rbp+var_3C], 0", "movups [rbp+var_38], xmm0", "pxor xmm0, xmm0", "movups [rbp+var_28], xmm0", "call sub_4F70", "mov rdx, [rbp+var_8]", "sub rdx, fs:28h", "jnz short loc_599F"], "succs": [[2, "fall"], [3, "jump"]]}, {"id": 2, "start": 22941, "end": 22943, "lines": ["leave", "retn"], "succs": []}, {"id": 3, "start": 22943, "end": 22949, "lines": ["call cs:__stack_chk_fail_ptr"], "succs": []}, {"id": 4, "start": 9321, "end": 9327, "lines": ["call cs:abort_ptr"], "succs": []}]}, {"name": "sub_2155", "ea": 8533, "blocks": [{"id": 0, "start": 8533, "end": 8559, "lines": ["push rbp", "xor eax, eax", "mov esi, 3; cmd", "mov edi, 1; fd", "mov rbp, rsp", "call cs:fcntl_ptr", "test eax, eax", "js short loc_217D"], "succs": [[1, "fall"], [2, "jump"]]}, {"id": 1, "start": 8559, "end": 8573, "lines": ["mov rdi, cs:stdout; stream", "pop rbp", "jmp cs:fflush_unlocked_ptr"], "succs": [[3, "jump"]]}, {"id": 2, "start": 8573, "end": 8575, "lines": ["pop rbp", "retn"], "succs": []}, {"id": 3, "start": 50128, "end": 50128, "lines": [], "succs": []}]}, {"name": "sub_67E0", "ea": 26592, "blocks": [{"id": 0, "start": 26592, "end": 26623, "lines": ["endbr64", "push rbp", "mov rbp, rsp", "push r12", "mov r12, rdi", "mov rdi, rsi; size", "push rbx", "mov rbx, rsi", "call cs:malloc_ptr", "test rax, rax", "jz short loc_6815"], "succs": [[1, "fall"], [2, "jump"]]}, {"id": 1, "start": 26623, "end": 26645, "lines": ["mov rcx, rbx", "mov rdx, rbx", "mov rsi, r12", "pop rbx", "mov rdi, rax", "pop r12", "pop rbp", "jmp cs:__memcpy_chk_ptr"], "succs": [[3, "jump"]]}, {"id": 2, "start": 26645, "end": 26651, "lines": ["call sub_6900"], "succs": []}, {"id": 3, "start": 50032, "end": 50032, "lines": [], "succs": []}]}, {"name": "sub_6820", "ea": 26656, "blocks": [{"id": 0, "start": 26656, "end": 26687, "lines": ["endbr64", "push rbp", "mov rbp, rsp", "push r12", "mov r12, rdi", "mov rdi, rsi; size", "push rbx", "mov rbx, rsi", "call cs:malloc_ptr", "test rax, rax", "jz short loc_6855"], "succs": [[1, "fall"], [2, "jump"]]}, {"id": 1, "start": 26687, "end": 26709, "lines": ["mov rcx, rbx", "mov rdx, rbx", "mov rsi, r12", "pop rbx", "mov rdi, rax", "pop r12", "pop rbp", "jmp cs:__memcpy_chk_ptr"], "succs": [[3, "jump"]]}, {"id": 2, "start": 26709, "end": 26715, "lines": ["call sub_6900"], "succs": []}, {"id": 3, "start": 50032, "end": 50032, "lines": [], "succs": []}]}, {"name": "sub_6860", "ea": 26720, "blocks": [{"id": 0, "start": 26720, "end": 26758, "lines": ["endbr64", "push rbp", "mov rbp, rsp", "push r13", "mov r13, rdi", "lea rdi, [rsi+1]; size", "push r12", "push rbx", "mov rbx, rsi", "sub rsp, 8", "call cs:malloc_ptr", "test rax, rax", "jz short loc_68A7"], "succs": [[1, "fall"], [2, "jump"]]}, {"id": 1, "start": 26758, "end": 26791, "lines": ["mov byte ptr [rax+rbx], 0", "add rsp, 8", "lea rcx, [rbx+1]", "mov rdx, rbx", "mov rsi, r13", "pop rbx", "mov rdi, rax", "pop r12", "pop r13", "pop rbp", "jmp cs:__memcpy_chk_ptr"], "succs": [[3, "jump"]]}, {"id": 2, "start": 26791, "end": 26797, "lines": ["call sub_6900"], "succs": []}, {"id": 3, "start": 50032, "end": 50032, "lines": [], "succs": []}]}, {"name": "sub_68B0", "ea": 26800, "blocks": [{"id": 0, "start": 26800, "end": 26838, "lines": ["endbr64", "push rbp", "mov rbp, rsp", "push r12", "mov r12, rdi", "push rbx", "call cs:strlen_ptr", "lea rbx, [rax+1]", "mov rdi, rbx; size", "call cs:malloc_ptr", "test rax, rax", "jz short loc_68EC"], "succs": [[1, "fall"], [2, "jump"]]}, {"id": 1, "start": 26838, "end": 26860, "lines": ["mov rcx, rbx", "mov rdx, rbx", "mov rsi, r12", "pop rbx", "mov rdi, rax", "pop r12", "pop rbp", "jmp cs:__memcpy_chk_ptr"], "succs": [[3, "jump"]]}, {"id": 2, "start": 26860, "end": 26866, "lines": ["call sub_6900"], "succs": []}, {"id": 3, "start": 50032, "end": 50032, "lines": [], "succs": []}]}, {"name": "sub_6FE0", "ea": 28640, "blocks": [{"id": 0, "start": 28640, "end": 28652, "lines": ["endbr64", "mov rax, rsi", "mul rdx", "jo short loc_7001"], "succs": [[1, "fall"], [2, "jump"]]}, {"id": 1, "start": 28652, "end": 28673, "lines": ["mov rsi, rax", "test rax, rax", "mov eax, 1", "cmovz rsi, rax; size", "jmp cs:realloc_ptr"], "succs": [[3, "jump"]]}, {"id": 2, "start": 28673, "end": 28693, "lines": ["push rbp", "mov rbp, rsp", "call cs:__errno_location_ptr", "mov dword ptr [rax], 0Ch", "xor eax, eax", "pop rbp", "retn"], "succs": []}, {"id": 3, "start": 50080, "end": 50080, "lines": [], "succs": []}]}, {"name": ".init_proc", "ea": 8192, "blocks": [{"id": 0, "start": 8192, "end": 8212, "lines": ["endbr64", "sub rsp, 8", "mov rax, cs:__gmon_start___ptr", "test rax, rax", "jz short loc_2016"], "succs": [[1, "fall"], [2, "jump"]]}, {"id": 1, "start": 8212, "end": 8214, "lines": ["call rax ; __gmon_start__"], "succs": [[2, "fall"]]}, {"id": 2, "start": 8214, "end": 8219, "lines": ["add rsp, 8", "retn"], "succs": []}]}, {"name": "sub_5300", "ea": 21248, "blocks": [{"id": 0, "start": 21248, "end": 21455, "lines": ["endbr64", "push rbp", "lea rax, xmmword_C240", "mov rbp, rsp", "push r15", "mov r15, rsi", "push r14", "mov r14, rdi", "push r13", "push r12", "mov r12, rdx", "push rbx", "sub rsp, 28h", "test rcx, rcx", "cmovnz rax, rcx", "mov rbx, rax", "call cs:__errno_location_ptr", "xor r9d, r9d", "test r12, r12", "lea r10, [rbx+8]", "mov r13, rax", "mov eax, [rax]", "setz r9b", "sub rsp, 8", "or r9d, [rbx+4]", "mov r8d, [rbx]", "mov rcx, r15", "mov rdx, r14", "mov [rbp+var_34], eax", "xor esi, esi", "xor edi, edi", "push qword ptr [rbx+30h]", "push qword ptr [rbx+28h]", "push r10", "mov [rbp+var_48], r10", "mov [rbp+var_38], r9d", "call sub_3720", "add rsp, 20h", "lea rsi, [rax+1]", "mov [rbp+var_50], rax", "mov rdi, rsi", "mov [rbp+var_40], rsi", "call sub_6480", "mov r10, [rbp+var_48]", "sub rsp, 8", "mov r8d, [rbx]", "push qword ptr [rbx+30h]", "mov rsi, [rbp+var_40]", "mov rdi, rax", "mov rcx, r15", "mov r9d, [rbp+var_38]", "push qword ptr [rbx+28h]", "mov rdx, r14", "push r10", "mov [rbp+var_40], rax", "call sub_3720", "mov eax, [rbp+var_34]", "add rsp, 20h", "test r12, r12", "mov rdi, [rbp+var_40]", "mov [r13+0], eax", "jz short loc_53D7"], "succs": [[1, "fall"], [2, "jump"]]}, {"id": 1, "start": 21455, "end": 21463, "lines": ["mov r11, [rbp+var_50]", "mov [r12], r11"], "succs": [[2, "fall"]]}, {"id": 2, "start": 21463, "end": 21481, "lines": ["lea rsp, [rbp-28h]", "mov rax, rdi", "pop rbx", "pop r12", "pop r13", "pop r14", "pop r15", "pop rbp", "retn"], "succs": []}]}, {"name": "sub_56E0", "ea": 22240, "blocks": [{"id": 0, "start": 22240, "end": 22381, "lines": ["endbr64", "push rbp", "mov ecx, edx", "and ecx, 1Fh", "mov rbp, rsp", "sub rsp, 40h", "movdqa xmm0, cs:xmmword_C240", "mov rax, cs:qword_C270", "mov r8, fs:28h", "mov [rbp+var_8], r8", "mov r8, rsi", "mov [rbp+var_10], rax", "mov eax, edx", "movaps [rbp+var_40], xmm0", "movdqa xmm0, cs:xmmword_C250", "shr al, 5", "movzx eax, al", "movaps [rbp+var_30], xmm0", "movdqa xmm0, cs:xmmword_C260", "lea rsi, [rbp+rax*4+var_40+8]", "xor eax, eax", "movaps [rbp+var_20], xmm0", "mov edx, [rsi]", "bt edx, ecx", "setnb al", "shl eax, cl", "lea rcx, [rbp+var_40]", "xor eax, edx", "mov rdx, r8", "mov [rsi], eax", "mov rsi, rdi", "xor edi, edi", "call sub_4F70", "mov rdx, [rbp+var_8]", "sub rdx, fs:28h", "jnz short loc_576F"], "succs": [[1, "fall"], [2, "jump"]]}, {"id": 1, "start": 22381, "end": 22383, "lines": ["leave", "retn"], "succs": []}, {"id": 2, "start": 22383, "end": 22389, "lines": ["call cs:__stack_chk_fail_ptr"], "succs": []}]}, {"name": "sub_5780", "ea": 22400, "blocks": [{"id": 0, "start": 22400, "end": 22544, "lines": ["endbr64", "push rbp", "mov ecx, esi", "and ecx, 1Fh", "mov rbp, rsp", "sub rsp, 40h", "movdqa xmm0, cs:xmmword_C240", "mov rax, fs:28h", "mov [rbp+var_8], rax", "xor eax, eax", "mov rax, cs:qword_C270", "movaps [rbp+var_40], xmm0", "movdqa xmm0, cs:xmmword_C250", "mov [rbp+var_10], rax", "mov eax, esi", "shr al, 5", "movaps [rbp+var_30], xmm0", "movdqa xmm0, cs:xmmword_C260", "movzx eax, al", "lea rdx, [rbp+rax*4+var_40+8]", "movaps [rbp+var_20], xmm0", "xor eax, eax", "mov esi, [rdx]", "bt esi, ecx", "setnb al", "shl eax, cl", "lea rcx, [rbp+var_40]", "xor eax, esi", "mov rsi, rdi", "xor edi, edi", "mov [rdx], eax", "mov rdx, 0FFFFFFFFFFFFFFFFh", "call sub_4F70", "mov rdx, [rbp+var_8]", "sub rdx, fs:28h", "jnz short loc_5812"], "succs": [[1, "fall"], [2, "jump"]]}, {"id": 1, "start": 22544, "end": 22546, "lines": ["leave", "retn"], "succs": []}, {"id": 2, "start": 22546, "end": 22552, "lines": ["call cs:__stack_chk_fail_ptr"], "succs": []}]}, {"name": "sub_5820", "ea": 22560, "blocks": [{"id": 0, "start": 22560, "end": 22682, "lines": ["endbr64", "push rbp", "mov rdx, 0FFFFFFFFFFFFFFFFh", "mov rbp, rsp", "sub rsp, 40h", "movdqa xmm0, cs:xmmword_C240", "mov rax, cs:qword_C270", "mov rsi, fs:28h", "mov [rbp+var_8], rsi", "mov rsi, rdi", "lea rcx, [rbp+var_40]", "xor edi, edi", "movaps [rbp+var_40], xmm0", "movdqa xmm0, cs:xmmword_C250", "mov [rbp+var_10], rax", "mov eax, dword ptr cs:xmmword_C240+0Ch", "movaps [rbp+var_30], xmm0", "movdqa xmm0, cs:xmmword_C260", "or eax, 4000000h", "mov dword ptr [rbp+var_40+0Ch], eax", "movaps [rbp+var_20], xmm0", "call sub_4F70", "mov rdx, [rbp+var_8]", "sub rdx, fs:28h", "jnz short loc_589C"], "succs": [[1, "fall"], [2, "jump"]]}, {"id": 1, "start": 22682, "end": 22684, "lines": ["leave", "retn"], "succs": []}, {"id": 2, "start": 22684, "end": 22690, "lines": ["call cs:__stack_chk_fail_ptr"], "succs": []}]}, {"name": "sub_58B0", "ea": 22704, "blocks": [{"id": 0, "start": 22704, "end": 22822, "lines": ["endbr64", "push rbp", "mov rbp, rsp", "sub rsp, 40h", "movdqa xmm0, cs:xmmword_C240", "mov rax, cs:qword_C270", "mov rdx, fs:28h", "mov [rbp+var_8], rdx", "mov rdx, rsi", "lea rcx, [rbp+var_40]", "mov rsi, rdi", "xor edi, edi", "movaps [rbp+var_40], xmm0", "movdqa xmm0, cs:xmmword_C250", "mov [rbp+var_10], rax", "mov eax, dword ptr cs:xmmword_C240+0Ch", "movaps [rbp+var_30], xmm0", "movdqa xmm0, cs:xmmword_C260", "or eax, 4000000h", "mov dword ptr [rbp+var_40+0Ch], eax", "movaps [rbp+var_20], xmm0", "call sub_4F70", "mov rdx, [rbp+var_8]", "sub rdx, fs:28h", "jnz short loc_5928"], "succs": [[1, "fall"], [2, "jump"]]}, {"id": 1, "start": 22822, "end": 22824, "lines": ["leave", "retn"], "succs": []}, {"id": 2, "start": 22824, "end": 22830, "lines": ["call cs:__stack_chk_fail_ptr"], "succs": []}]}, {"name": "sub_6420", "ea": 25632, "blocks": [{"id": 0, "start": 25632, "end": 25651, "lines": ["endbr64", "push rbp", "mov rbp, rsp", "call sub_6FE0", "test rax, rax", "jz short loc_6435"], "succs": [[1, "fall"], [2, "jump"]]}, {"id": 1, "start": 25651, "end": 25653, "lines": ["pop rbp", "retn"], "succs": []}, {"id": 2, "start": 25653, "end": 25659, "lines": ["call sub_6900"], "succs": []}]}, {"name": "sub_6440", "ea": 25664, "blocks": [{"id": 0, "start": 25664, "end": 25683, "lines": ["endbr64", "push rbp", "mov rbp, rsp", "call cs:malloc_ptr", "test rax, rax", "jz short loc_6455"], "succs": [[1, "fall"], [2, "jump"]]}, {"id": 1, "start": 25683, "end": 25685, "lines": ["pop rbp", "retn"], "succs": []}, {"id": 2, "start": 25685, "end": 25691, "lines": ["call sub_6900"], "succs": []}]}, {"name": "sub_6460", "ea": 25696, "blocks": [{"id": 0, "start": 25696, "end": 25715, "lines": ["endbr64", "push rbp", "mov rbp, rsp", "call cs:malloc_ptr", "test rax, rax", "jz short loc_6475"], "succs": [[1, "fall"], [2, "jump"]]}, {"id": 1, "start": 25715, "end": 25717, "lines": ["pop rbp", "retn"], "succs": []}, {"id": 2, "start": 25717, "end": 25723, "lines": ["call sub_6900"], "succs": []}]}, {"name": "sub_6480", "ea": 25728, "blocks": [{"id": 0, "start": 25728, "end": 25747, "lines": ["endbr64", "push rbp", "mov rbp, rsp", "call cs:malloc_ptr", "test rax, rax", "jz short loc_6495"], "succs": [[1, "fall"], [2, "jump"]]}, {"id": 1, "start": 25747, "end": 25749, "lines": ["pop rbp", "retn"], "succs": []}, {"id": 2, "start": 25749, "end": 25755, "lines": ["call sub_6900"], "succs": []}]}, {"name": "sub_64A0", "ea": 25760, "blocks": [{"id": 0, "start": 25760, "end": 25791, "lines": ["endbr64", "push rbp", "test rsi, rsi", "mov eax, 1", "cmovz rsi, rax; size", "mov rbp, rsp", "call cs:realloc_ptr", "test rax, rax", "jz short loc_64C1"], "succs": [[1, "fall"], [2, "jump"]]}, {"id": 1, "start": 25791, "end": 25793, "lines": ["pop rbp", "retn"], "succs": []}, {"id": 2, "start": 25793, "end": 25799, "lines": ["call sub_6900"], "succs": []}]}, {"name": "sub_64D0", "ea": 25808, "blocks": [{"id": 0, "start": 25808, "end": 25839, "lines": ["endbr64", "push rbp", "test rsi, rsi", "mov eax, 1", "cmovz rsi, rax; size", "mov rbp, rsp", "call cs:realloc_ptr", "test rax, rax", "jz short loc_64F1"], "succs": [[1, "fall"], [2, "jump"]]}, {"id": 1, "start": 25839, "end": 25841, "lines": ["pop rbp", "retn"], "succs": []}, {"id": 2, "start": 25841, "end": 25847, "lines": ["call sub_6900"], "succs": []}]}, {"name": "sub_6500", "ea": 25856, "blocks": [{"id": 0, "start": 25856, "end": 25875, "lines": ["endbr64", "push rbp", "mov rbp, rsp", "call sub_6FE0", "test rax, rax", "jz short loc_6515"], "succs": [[1, "fall"], [2, "jump"]]}, {"id": 1, "start": 25875, "end": 25877, "lines": ["pop rbp", "retn"], "succs": []}, {"id": 2, "start": 25877, "end": 25883, "lines": ["call sub_6900"], "succs": []}]}, {"name": "sub_6520", "ea": 25888, "blocks": [{"id": 0, "start": 25888, "end": 25907, "lines": ["endbr64", "push rbp", "mov rbp, rsp", "call sub_6FE0", "test rax, rax", "jz short loc_6535"], "succs": [[1, "fall"], [2, "jump"]]}, {"id": 1, "start": 25907, "end": 25909, "lines": ["pop rbp", "retn"], "succs": []}, {"id": 2, "start": 25909, "end": 25915, "lines": ["call sub_6900"], "succs": []}]}, {"name": "sub_6540", "ea": 25920, "blocks": [{"id": 0, "start": 25920, "end": 25947, "lines": ["endbr64", "push rbp", "mov rdx, rsi", "mov rsi, rdi", "xor edi, edi", "mov rbp, rsp", "call sub_6FE0", "test rax, rax", "jz short loc_655D"], "succs": [[1, "fall"], [2, "jump"]]}, {"id": 1, "start": 25947, "end": 25949, "lines": ["pop rbp", "retn"], "succs": []}, {"id": 2, "start": 25949, "end": 25955, "lines": ["call sub_6900"], "succs": []}]}, {"name": "sub_6570", "ea": 25968, "blocks": [{"id": 0, "start": 25968, "end": 25995, "lines": ["endbr64", "push rbp", "mov rdx, rsi", "mov rsi, rdi", "xor edi, edi", "mov rbp, rsp", "call sub_6FE0", "test rax, rax", "jz short loc_658D"], "succs": [[1, "fall"], [2, "jump"]]}, {"id": 1, "start": 25995, "end": 25997, "lines": ["pop rbp", "retn"], "succs": []}, {"id": 2, "start": 25997, "end": 26003, "lines": ["call sub_6900"], "succs": []}]}, {"name": "sub_6760", "ea": 26464, "blocks": [{"id": 0, "start": 26464, "end": 26488, "lines": ["endbr64", "push rbp", "mov esi, 1; size", "mov rbp, rsp", "call cs:calloc_ptr", "test rax, rax", "jz short loc_677A"], "succs": [[1, "fall"], [2, "jump"]]}, {"id": 1, "start": 26488, "end": 26490, "lines": ["pop rbp", "retn"], "succs": []}, {"id": 2, "start": 26490, "end": 26496, "lines": ["call sub_6900"], "succs": []}]}, {"name": "sub_6780", "ea": 26496, "blocks": [{"id": 0, "start": 26496, "end": 26520, "lines": ["endbr64", "push rbp", "mov esi, 1; size", "mov rbp, rsp", "call cs:calloc_ptr", "test rax, rax", "jz short loc_679A"], "succs": [[1, "fall"], [2, "jump"]]}, {"id": 1, "start": 26520, "end": 26522, "lines": ["pop rbp", "retn"], "succs": []}, {"id": 2, "start": 26522, "end": 26528, "lines": ["call sub_6900"], "succs": []}]}, {"name": "sub_67A0", "ea": 26528, "blocks": [{"id": 0, "start": 26528, "end": 26547, "lines": ["endbr64", "push rbp", "mov rbp, rsp", "call cs:calloc_ptr", "test rax, rax", "jz short loc_67B5"], "succs": [[1, "fall"], [2, "jump"]]}, {"id": 1, "start": 26547, "end": 26549, "lines": ["pop rbp", "retn"], "succs": []}, {"id": 2, "start": 26549, "end": 26555, "lines": ["call sub_6900"], "succs": []}]}, {"name": "sub_67C0", "ea": 26560, "blocks": [{"id": 0, "start": 26560, "end": 26579, "lines": ["endbr64", "push rbp", "mov rbp, rsp", "call cs:calloc_ptr", "test rax, rax", "jz short loc_67D5"], "succs": [[1, "fall"], [2, "jump"]]}, {"id": 1, "start": 26579, "end": 26581, "lines": ["pop rbp", "retn"], "succs": []}, {"id": 2, "start": 26581, "end": 26587, "lines": ["call sub_6900"], "succs": []}]}, {"name": "sub_70A0", "ea": 28832, "blocks": [{"id": 0, "start": 28832, "end": 28866, "lines": ["endbr64", "push rbp", "mov edi, 0Eh; item", "mov rbp, rsp", "call nl_langinfo", "mov rdx, rax", "lea rax, aAscii; \"ASCII\"", "test rdx, rdx", "jz short loc_70C9"], "succs": [[1, "fall"], [2, "jump"]]}, {"id": 1, "start": 28866, "end": 28873, "lines": ["cmp byte ptr [rdx], 0", "cmovnz rax, rdx"], "succs": [[2, "fall"]]}, {"id": 2, "start": 28873, "end": 28875, "lines": ["pop rbp", "retn"], "succs": []}]}, {"name": "sub_2BD0", "ea": 11216, "blocks": [{"id": 0, "start": 11216, "end": 11225, "lines": ["endbr64", "jmp sub_2B40"], "succs": [[1, "jump"]]}, {"id": 1, "start": 11072, "end": 11072, "lines": [], "succs": []}]}, {"name": "sub_6360", "ea": 25440, "blocks": [{"id": 0, "start": 25440, "end": 25618, "lines": ["endbr64", "push rbp", "mov rsi, cs:stdout; stream", "mov edi, 0Ah; c", "mov rbp, rsp", "call cs:fputc_unlocked_ptr", "mov edx, 5; category", "lea rsi, aReportBugsToS; \"Report bugs to: %s\\n\"", "lea rdi, domainname; \"gnulib\"", "call cs:dcgettext_ptr", "lea rdx, aBugCoreutilsGn; \"bug-coreutils@gnu.org\"", "mov edi, 2", "mov rsi, rax", "xor eax, eax", "call cs:__printf_chk_ptr", "mov edx, 5; category", "lea rsi, aSHomePageS; \"%s home page: <%s>\\n\"", "lea rdi, domainname; \"gnulib\"", "call cs:dcgettext_ptr", "lea rcx, aHttpsWwwGnuOrg; \"https://www.gnu.org/software/coreutils/\"", "mov edi, 2", "lea rdx, aGnuCoreutils; \"GNU coreutils\"", "mov rsi, rax", "xor eax, eax", "call cs:__printf_chk_ptr", "mov edx, 5; category", "lea rsi, aGeneralHelpUsi; \"General help using GNU software: <%s>\\n\"", "lea rdi, domainname; \"gnulib\"", "call cs:dcgettext_ptr", "lea rdx, aHttpsWwwGnuOrg_1; \"https://www.gnu.org/gethelp/\"", "mov edi, 2", "pop rbp", "mov rsi, rax", "xor eax, eax", "jmp cs:__printf_chk_ptr"], "succs": [[1, "jump"]]}, {"id": 1, "start": 50096, "end": 50096, "lines": [], "succs": []}]}, {"name": "nl_langinfo", "ea": 28880, "blocks": [{"id": 0, "start": 28880, "end": 28890, "lines": ["endbr64", "jmp cs:nl_langinfo_ptr"], "succs": [[1, "jump"]]}, {"id": 1, "start": 50064, "end": 50064, "lines": [], "succs": []}]}, {"name": "sub_70E0", "ea": 28896, "blocks": [{"id": 0, "start": 28896, "end": 28905, "lines": ["endbr64", "jmp sub_7110"], "succs": [[1, "jump"]]}, {"id": 1, "start": 28944, "end": 28944, "lines": [], "succs": []}]}, {"name": "sub_71C0", "ea": 29120, "blocks": [{"id": 0, "start": 29120, "end": 29139, "lines": ["endbr64", "mov rdx, cs:lpdso_handle; lpdso_handle", "xor esi, esi; obj", "jmp cs:__cxa_atexit_ptr"], "succs": [[1, "jump"]]}, {"id": 1, "start": 50104, "end": 50104, "lines": [], "succs": []}]}, {"name": "sub_2447", "ea": 9287, "blocks": [{"id": 0, "start": 9287, "end": 9297, "lines": ["push rbp", "mov rbp, rsp", "call cs:abort_ptr"], "succs": []}]}, {"name": "start", "ea": 10976, "blocks": [{"id": 0, "start": 10976, "end": 11014, "lines": ["endbr64", "xor ebp, ebp", "mov r9, rdx; rtld_fini", "pop rsi; argc", "mov rdx, rsp; ubp_av", "and rsp, 0FFFFFFFFFFFFFFF0h", "push rax", "push rsp; stack_end", "xor r8d, r8d; fini", "xor ecx, ecx; init", "lea rdi, main; main", "call cs:__libc_start_main_ptr", "hlt"], "succs": []}]}, {"name": "sub_34F0", "ea": 13552, "blocks": [{"id": 0, "start": 13552, "end": 13564, "lines": ["endbr64", "mov rax, cs:__progname", "retn"], "succs": []}]}, {"name": "sub_5150", "ea": 20816, "blocks": [{"id": 0, "start": 20816, "end": 20891, "lines": ["endbr64", "push rbp", "mov rbp, rsp", "push r13", "push r12", "push rbx", "mov rbx, rdi", "sub rsp, 8", "call cs:__errno_location_ptr", "test rbx, rbx", "mov esi, 38h ; '8'", "mov r13d, [rax]", "mov r12, rax", "lea rax, xmmword_C240", "cmovnz rax, rbx", "mov rdi, rax", "call sub_67E0", "mov [r12], r13d", "add rsp, 8", "pop rbx", "pop r12", "pop r13", "pop rbp", "retn"], "succs": []}]}, {"name": "sub_5280", "ea": 21120, "blocks": [{"id": 0, "start": 21120, "end": 21241, "lines": ["endbr64", "push rbp", "lea rax, xmmword_C240", "mov rbp, rsp", "push r13", "push r12", "push rbx", "sub rsp, 28h", "test r8, r8", "mov [rbp+var_40], rdi", "cmovnz rax, r8", "mov [rbp+var_38], rsi", "mov [rbp+var_30], rdx", "mov rbx, rax", "mov [rbp+var_28], rcx", "call cs:__errno_location_ptr", "add rbx, 8", "sub rsp, 8", "mov r9d, [rbx-4]", "mov r13d, [rax]", "mov r8d, [rbx-8]", "push qword ptr [rbx+28h]", "mov r12, rax", "mov rcx, [rbp+var_28]", "push qword ptr [rbx+20h]", "mov rdx, [rbp+var_30]", "push rbx", "mov rsi, [rbp+var_38]", "mov rdi, [rbp+var_40]", "call sub_3720", "mov [r12], r13d", "lea rsp, [rbp-18h]", "pop rbx", "pop r12", "pop r13", "pop rbp", "retn"], "succs": []}]}, {"name": "sub_6900", "ea": 26880, "blocks": [{"id": 0, "start": 26880, "end": 26952, "lines": ["endbr64", "push rbp", "mov edx, 5; category", "lea rsi, aMemoryExhauste; \"memory exhausted\"", "lea rdi, domainname; \"gnulib\"", "mov rbp, rsp", "push rbx", "sub rsp, 8", "mov ebx, cs:status", "call cs:dcgettext_ptr", "lea rdx, aSS+4; \"%s\"", "xor esi, esi", "mov rcx, rax", "mov edi, ebx", "xor eax, eax", "call error", "call cs:abort_ptr"], "succs": []}]}, {"name": ".term_proc", "ea": 29140, "blocks": [{"id": 0, "start": 29140, "end": 29153, "lines": ["endbr64", "sub rsp, 8", "add rsp, 8", "retn"], "succs": []}]}, {"name": "getenv", "ea": 49792, "blocks": [{"id": 0, "start": 49792, "end": 49800, "lines": ["extrn getenv:near"], "succs": []}]}, {"name": "free", "ea": 49800, "blocks": [{"id": 0, "start": 49800, "end": 49808, "lines": ["extrn free:near"], "succs": []}]}, {"name": "__vfprintf_chk", "ea": 49808, "blocks": [{"id": 0, "start": 49808, "end": 49816, "lines": ["extrn __vfprintf_chk:near"], "succs": []}]}, {"name": "__libc_start_main", "ea": 49816, "blocks": [{"id": 0, "start": 49816, "end": 49824, "lines": ["extrn __libc_start_main:near"], "succs": []}]}, {"name": "abort", "ea": 49824, "blocks": [{"id": 0, "start": 49824, "end": 49832, "lines": ["extrn abort:near"], "succs": []}]}, {"name": "__errno_location", "ea": 49832, "blocks": [{"id": 0, "start": 49832, "end": 49840, "lines": ["extrn __errno_location:near"], "succs": []}]}, {"name": "strncmp", "ea": 49840, "blocks": [{"id": 0, "start": 49840, "end": 49848, "lines": ["extrn strncmp:near"], "succs": []}]}, {"name": "_exit", "ea": 49848, "blocks": [{"id": 0, "start": 49848, "end": 49856, "lines": ["extrn _exit:near"], "succs": []}]}, {"name": "__fpending", "ea": 49856, "blocks": [{"id": 0, "start": 49856, "end": 49864, "lines": ["extrn __fpending:near"], "succs": []}]}, {"name": "fcntl", "ea": 49864, "blocks": [{"id": 0, "start": 49864, "end": 49872, "lines": ["extrn fcntl:near"], "succs": []}]}, {"name": "textdomain", "ea": 49872, "blocks": [{"id": 0, "start": 49872, "end": 49880, "lines": ["extrn textdomain:near"], "succs": []}]}, {"name": "fclose", "ea": 49880, "blocks": [{"id": 0, "start": 49880, "end": 49888, "lines": ["extrn fclose:near"], "succs": []}]}, {"name": "bindtextdomain", "ea": 49888, "blocks": [{"id": 0, "start": 49888, "end": 49896, "lines": ["extrn bindtextdomain:near"], "succs": []}]}, {"name": "dcgettext", "ea": 49896, "blocks": [{"id": 0, "start": 49896, "end": 49904, "lines": ["extrn dcgettext:near"], "succs": []}]}, {"name": "__ctype_get_mb_cur_max", "ea": 49904, "blocks": [{"id": 0, "start": 49904, "end": 49912, "lines": ["extrn __ctype_get_mb_cur_max:near"], "succs": []}]}, {"name": "strlen", "ea": 49912, "blocks": [{"id": 0, "start": 49912, "end": 49920, "lines": ["extrn strlen:near"], "succs": []}]}, {"name": "__stack_chk_fail", "ea": 49920, "blocks": [{"id": 0, "start": 49920, "end": 49928, "lines": ["extrn __stack_chk_fail:near"], "succs": []}]}, {"name": "strchr", "ea": 49928, "blocks": [{"id": 0, "start": 49928, "end": 49936, "lines": ["extrn strchr:near"], "succs": []}]}, {"name": "__overflow", "ea": 49936, "blocks": [{"id": 0, "start": 49936, "end": 49944, "lines": ["extrn __overflow:near"], "succs": []}]}, {"name": "strrchr", "ea": 49944, "blocks": [{"id": 0, "start": 49944, "end": 49952, "lines": ["extrn strrchr:near"], "succs": []}]}, {"name": "__assert_fail", "ea": 49952, "blocks": [{"id": 0, "start": 49952, "end": 49960, "lines": ["extrn __assert_fail:near"], "succs": []}]}, {"name": "memset", "ea": 49960, "blocks": [{"id": 0, "start": 49960, "end": 49968, "lines": ["extrn memset:near"], "succs": []}]}, {"name": "mbrtoc32", "ea": 49968, "blocks": [{"id": 0, "start": 49968, "end": 49976, "lines": ["extrn mbrtoc32:near"], "succs": []}]}, {"name": "strspn", "ea": 49976, "blocks": [{"id": 0, "start": 49976, "end": 49984, "lines": ["extrn strspn:near"], "succs": []}]}, {"name": "strcspn", "ea": 49984, "blocks": [{"id": 0, "start": 49984, "end": 49992, "lines": ["extrn strcspn:near"], "succs": []}]}, {"name": "memcmp", "ea": 49992, "blocks": [{"id": 0, "start": 49992, "end": 50000, "lines": ["extrn memcmp:near"], "succs": []}]}, {"name": "fputs_unlocked", "ea": 50000, "blocks": [{"id": 0, "start": 50000, "end": 50008, "lines": ["extrn fputs_unlocked:near"], "succs": []}]}, {"name": "calloc", "ea": 50008, "blocks": [{"id": 0, "start": 50008, "end": 50016, "lines": ["extrn calloc:near"], "succs": []}]}, {"name": "strcmp", "ea": 50016, "blocks": [{"id": 0, "start": 50016, "end": 50024, "lines": ["extrn strcmp:near"], "succs": []}]}, {"name": "fputc_unlocked", "ea": 50024, "blocks": [{"id": 0, "start": 50024, "end": 50032, "lines": ["extrn fputc_unlocked:near"], "succs": []}]}, {"name": "__memcpy_chk", "ea": 50032, "blocks": [{"id": 0, "start": 50032, "end": 50040, "lines": ["extrn __memcpy_chk:near"], "succs": []}]}, {"name": "memcpy", "ea": 50040, "blocks": [{"id": 0, "start": 50040, "end": 50048, "lines": ["extrn memcpy:near"], "succs": []}]}, {"name": "strerror_r", "ea": 50048, "blocks": [{"id": 0, "start": 50048, "end": 50056, "lines": ["extrn strerror_r:near"], "succs": []}]}, {"name": "malloc", "ea": 50056, "blocks": [{"id": 0, "start": 50056, "end": 50064, "lines": ["extrn malloc:near"], "succs": []}]}, {"name": "__imp_nl_langinfo", "ea": 50064, "blocks": [{"id": 0, "start": 50064, "end": 50072, "lines": ["extrn __imp_nl_langinfo:near"], "succs": []}]}, {"name": "fwrite_unlocked", "ea": 50072, "blocks": [{"id": 0, "start": 50072, "end": 50080, "lines": ["extrn fwrite_unlocked:near"], "succs": []}]}, {"name": "realloc", "ea": 50080, "blocks": [{"id": 0, "start": 50080, "end": 50088, "lines": ["extrn realloc:near"], "succs": []}]}, {"name": "setlocale", "ea": 50088, "blocks": [{"id": 0, "start": 50088, "end": 50096, "lines": ["extrn setlocale:near"], "succs": []}]}, {"name": "__printf_chk", "ea": 50096, "blocks": [{"id": 0, "start": 50096, "end": 50104, "lines": ["extrn __printf_chk:near"], "succs": []}]}, {"name": "__cxa_atexit", "ea": 50104, "blocks": [{"id": 0, "start": 50104, "end": 50112, "lines": ["extrn __cxa_atexit:near"], "succs": []}]}, {"name": "exit", "ea": 50112, "blocks": [{"id": 0, "start": 50112, "end": 50120, "lines": ["extrn exit:near"], "succs": []}]}, {"name": "__fprintf_chk", "ea": 50120, "blocks": [{"id": 0, "start": 50120, "end": 50128, "lines": ["extrn __fprintf_chk:near"], "succs": []}]}, {"name": "fflush_unlocked", "ea": 50128, "blocks": [{"id": 0, "start": 50128, "end": 50136, "lines": ["extrn fflush_unlocked:near"], "succs": []}]}, {"name": "mbsinit", "ea": 50136, "blocks": [{"id": 0, "start": 50136, "end": 50144, "lines": ["extrn mbsinit:near"], "succs": []}]}, {"name": "iswprint", "ea": 50144, "blocks": [{"id": 0, "start": 50144, "end": 50152, "lines": ["extrn iswprint:near"], "succs": []}]}, {"name": "__cxa_finalize", "ea": 50152, "blocks": [{"id": 0, "start": 50152, "end": 50160, "lines": ["extrn __cxa_finalize:near ; weak"], "succs": []}]}, {"name": "__ctype_b_loc", "ea": 50160, "blocks": [{"id": 0, "start": 50160, "end": 50168, "lines": ["extrn __ctype_b_loc:near"], "succs": []}]}, {"name": "_ITM_deregisterTMCloneTable", "ea": 50168, "blocks": [{"id": 0, "start": 50168, "end": 50176, "lines": ["extrn _ITM_deregisterTMCloneTable:near ; weak"], "succs": []}]}, {"name": "__gmon_start__", "ea": 50176, "blocks": [{"id": 0, "start": 50176, "end": 50184, "lines": ["extrn __gmon_start__:near ; weak"], "succs": []}]}, {"name": "_ITM_registerTMCloneTable", "ea": 50184, "blocks": [{"id": 0, "start": 50184, "end": 50192, "lines": ["extrn _ITM_registerTMCloneTable:near ; weak"], "succs": []}]}] \ No newline at end of file
diff --git a/.auto/checks.sh b/.auto/checks.sh
new file mode 100755
index 0000000..c555988
--- /dev/null
+++ b/.auto/checks.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+# Correctness gate: no perf win is allowed to cost functionality.
+#
+# 1. the pure suites (344 checks, ~3.5s, stdlib only)
+# 2. the pilot scenario suite (301 checks, ~80s) -- a real idalib worker
+# driving the real Textual app. This is the project's source of truth for
+# behaviour; a rendering/paging/nav optimisation that breaks the UI shows
+# up here and nowhere else.
+#
+# Only failures reach stdout: the agent sees the last 80 lines on failure and
+# a wall of "ok" would push the actual break out of view.
+set -euo pipefail
+cd "$(dirname "$0")/.."
+
+PY="${IDATUI_PYTHON:-$HOME/ida-venv/bin/python}"
+
+pure=$(python3 tests/run.py --fast 2>&1) || { echo "$pure" | tail -40; exit 1; }
+echo "$pure" | tail -2
+
+out=$("$PY" tests/test_scenarios.py targets/echo 2>&1) || {
+ echo "--- scenario suite crashed ---"
+ echo "$out" | tail -40
+ exit 1
+}
+echo "$out" | grep -E "^ FAIL|failed" | tail -40
+if ! echo "$out" | tail -3 | grep -qE "^[0-9]+ passed, 0 failed"; then
+ echo "--- scenario suite regressions ---"
+ echo "$out" | grep -E "^ FAIL" | head -30
+ exit 1
+fi
diff --git a/.auto/measure.sh b/.auto/measure.sh
new file mode 100755
index 0000000..49b16bc
--- /dev/null
+++ b/.auto/measure.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+# ida-tui performance benchmark driver.
+#
+# Fast pre-checks first (a syntax error should cost a second, not a worker boot
+# and two database opens), then the real bench.
+set -euo pipefail
+cd "$(dirname "$0")/.."
+
+PY="${IDATUI_PYTHON:-$HOME/ida-venv/bin/python}"
+
+# ~0.4s: catches a syntax error / bad import before we pay for idalib.
+python3 -m compileall -q idatui server tests .auto/bench.py >/dev/null
+
+exec "$PY" .auto/bench.py "$@"
diff --git a/.auto/prompt.md b/.auto/prompt.md
new file mode 100644
index 0000000..39126b9
--- /dev/null
+++ b/.auto/prompt.md
@@ -0,0 +1,102 @@
+# Autoresearch: make ida-tui faster, without losing anything
+
+## Objective
+
+Reduce the wall-clock latency of the operations an ida-tui user actually waits
+on, on both a small binary (`targets/echo`, 128 funcs) and a real-world one
+(`targets/bash`, 2099 funcs). No feature may be removed, no output may change,
+no test may break.
+
+The app is a Textual TUI over a private idalib worker process (unix socket,
+length-prefixed pickle). Three layers, kept separate:
+
+- `idatui/worker.py` + `idatui/worker_client.py` — backend; one call = one
+ round trip to a process that owns the IDA database.
+- `idatui/domain.py` — paging/caching over the client (`FunctionIndex`,
+ `ListingModel`, `DisasmModel`, `HexModel`, `decompile`, xrefs, resolve).
+- `idatui/app.py` — the Textual app; views are line-virtualized `ScrollView`s.
+- `idatui/graph.py` — pure-python Sugiyama layout for the CFG view.
+- `server/patch_server.py` — the extra `@tool`s the worker injects into
+ ida-pro-mcp (`heads`, `read_raw`, `resolve_names`, …). This is where a new
+ backend capability goes; it runs INSIDE the worker with full idalib access.
+
+## Metrics
+
+- **Primary**: `total_ms` (ms, lower is better) — the sum of every phase median.
+- **Secondary** (all in ms, per target: `sm_` = echo, `lg_` = bash):
+ - `nav_ms` — jump to a function's entry in the listing, cold. **The single
+ biggest term today** (`lg_nav_ms` ≈ 28 s of a 46 s total, and
+ `lg_nav_worst_ms` ≈ 28 s for ONE jump).
+ - `search_ms` — incremental search over a whole segment.
+ - `decomp_ms` — F5 → decompile → highlight → paint (nav excluded).
+ - `graph_ms` — flowchart → layout → paint.
+ - `boot_ms`, `listing_cold_ms`, `listing_warm_ms`, `render_ms`, `hex_ms`,
+ `index_ms`, `palette_ms`, `pure_graph_ms`.
+ - `fails` — **must stay 0.** A phase that silently stops doing its work would
+ otherwise read as an enormous speedup.
+- `NOTES` on each run carries the work actually done (`decomp_ok`, `graph_ok`,
+ `graph_blocks`, `search_hits`, `listing_rows`, `nav_rows`, `render_cells`, …).
+ **If a metric drops and its NOTES counter drops with it, that is not a win.**
+
+## How to Run
+
+`./.auto/measure.sh` (~95 s). Prints `METRIC name=value` lines.
+`./.auto/measure.sh --only sm` benches just the small target while iterating.
+
+`./.auto/checks.sh` runs automatically after every passing benchmark: the pure
+suites (344 checks) plus the pilot scenario suite (301 checks against a real
+worker, ~80 s). Both must pass.
+
+## Files in Scope
+
+Anything under `idatui/` and `server/patch_server.py`. In rough order of
+expected payoff:
+
+- `idatui/domain.py` — `ListingModel` is where nav time lives. It walks the
+ segment forward in 500-head pages from `seg_start`, so `ensure_ea(ea)` is
+ O(distance from the start of the segment): landing on a function near the end
+ of bash costs ~440 sequential worker round trips. `DisasmModel`,
+ `HexModel`, `FunctionIndex` are the other paging/caching classes.
+- `server/patch_server.py` — the `heads` tool the listing pages over. A better
+ backend primitive (address-anchored start, bigger/denser pages, a count-only
+ or index mode) is fair game and probably the real fix.
+- `idatui/app.py` — `render_line` of `ListingView`/`DecompView`/`HexView`/
+ `GraphView`, the search mixin (`_compute_matches`, `_line_plain`), `_grow`,
+ `_prime`.
+- `idatui/graph.py` — layout; already Fenwick-optimised once (see the idatui
+ skill), so the easy win is gone.
+- `idatui/worker.py`, `idatui/worker_client.py` — transport (pickle framing,
+ per-call overhead).
+- `idatui/highlight.py` — Pygments C lexing per decompilation.
+
+## Off Limits
+
+- `tests/**` — the correctness gate. Do not weaken, skip, shorten or "fix" a
+ test to make a change pass. If a test fails, the change is wrong.
+- `.auto/bench.py` may only be changed to add *more* signal (extra metrics,
+ extra NOTES). Never to do less work, shorten a sweep, drop a phase, loosen a
+ wait, or pick easier functions. If you change what it measures, say so in the
+ log and re-baseline with `init_experiment`.
+- `targets/**` binaries and their `.i64`/`.pristine.i64` databases.
+
+## Constraints
+
+- **No functionality may be lost.** Same rendering, same colours, same
+ behaviour. `checks.sh` must pass.
+- **No new third-party dependencies.** `domain.py` and `worker_client.py` are
+ deliberately stdlib-only (the TUI layer may use Textual/Rich/Pygments, which
+ are already dependencies).
+- **No caching that can go stale silently.** Renames bump `Program._name_gen`
+ and disasm caches are cleared for a reason; a new cache must have an
+ invalidation story or it will show stale names after an edit.
+- The worker is single-threaded and main-thread-only for idalib. Parallelism
+ has to come from batching calls, not from calling IDA concurrently.
+- Do not tune constants to the two benchmark binaries. A change must be a
+ structural improvement that holds for a 10 MB firmware image too.
+
+## What's Been Tried
+
+(baseline only — fill this in as experiments accumulate)
+
+- Baseline: `total_ms` ≈ 46 000. `lg_nav_ms` ≈ 28 600 (62% of it), of which a
+ single cold jump to a high address is ≈ 27 800.