21 static const char hex[16] =
"0123456789ABCDEF";
38 vfprintf(stderr, format, ap);
61 strcpy(
p->datefmt,
"%Y-%m-%d %H:%M:%S %z");
71 p->big_endian =
false;
76 p->cur_enabled =
false;
77 p->cur =
p->ocur = -1;
87 p->get_register =
NULL;
88 p->get_register_value =
NULL;
89 p->calc_row_offsets =
true;
90 p->row_offsets_sz = 0;
91 p->row_offsets =
NULL;
94 p->esc_bslash =
false;
95 p->strconv_mode =
NULL;
96 memset(&
p->consbind, 0,
sizeof(
p->consbind));
97 p->io_unalloc_ch =
'.';
125 p->cur_enabled = enable;
134 if (!
p || !
p->cur_enabled) {
146 }
else if (
p->cur >= cur &&
p->cur <= cur +
len - 1) {
154 if (!
p->cur_enabled) {
159 if (cur +
len - 1 ==
to) {
168 p->cb_printf(
"%s", RZ_CONS_INVERT(set, 1));
176 const char *color_0x00 =
"";
177 const char *color_0x7f =
"";
178 const char *color_0xff =
"";
179 const char *color_text =
"";
180 const char *color_other =
"";
181 int bs =
p->bytespace;
189 #define P(x) (p->cons && p->cons->context->pal.x) ? p->cons->context->pal.x
190 color_0x00 =
P(b0x00)
192 color_0x7f =
P(b0x7f)
194 color_0xff =
P(b0xff)
196 color_text =
P(btext)
198 color_other =
P(other)
201 if (
p->cur_enabled && cur == -1) {
208 #define memcat(x, y) \
210 memcpy(x, y, strlen(y)); \
213 for (
s =
str,
i = 0;
s[0];
i++) {
215 if (
p->cur_enabled) {
222 if (
i >= cur -
n &&
i < ocur -
n) {
227 if (
s[0] ==
'0' &&
s[1] ==
'0') {
228 lastcol = color_0x00;
229 }
else if (
s[0] ==
'7' &&
s[1] ==
'f') {
230 lastcol = color_0x7f;
231 }
else if (
s[0] ==
'f' &&
s[1] ==
'f') {
232 lastcol = color_0xff;
239 lastcol = color_text;
241 lastcol = color_other;
256 if (
colors ||
p->cur_enabled) {
268 #define P(x) (p->cons && p->cons->context->pal.x) ? p->cons->context->pal.x
281 case 0x00:
return P(b0x00)
283 case 0x7F:
return P(b0x7f)
285 case 0xFF:
return P(b0xff)
299 for (
i = 1;
i <
len;
i++) {
309 for (
i = 0;
i <
len;
i++) {
317 #define Pal(x, y) (x->cons && x->cons->context->pal.y) ? x->cons->context->pal.y
321 const char *color_0xff =
c ? (
Pal(
rp, b0xff)
324 const char *color_text =
c ? (
Pal(
rp, btext)
327 const char *color_other =
c ? (
Pal(
rp, other)
332 bool show_offset =
rp->show_offset;
350 for (j = 0; j < inc; j++) {
354 }
else if (ch == 0xff) {
355 p(
"%s ##%s", color_0xff, color_reset);
357 p(
"%s .%c%s", color_text, ch, color_reset);
359 p(
"%s %02x%s", color_other, ch, color_reset);
379 if (!
p->screen_bounds) {
382 if (!
p->consbind.get_size) {
385 if (!
p->consbind.get_cursor) {
389 if (
p->screen_bounds == 1) {
392 (void)
p->consbind.get_size(&
p->rows);
394 (void)
p->consbind.get_cursor(&rc);
396 if (rc >
p->rows - 1) {
397 p->screen_bounds =
addr;
407 const char *white =
"";
408 #define PREOFF(x) (p && p->cons && p->cons->context && p->cons->context->pal.x) ? p->cons->context->pal.x
413 char ch =
p ? ((
p->addrmod &&
mod) ? ((
addr %
p->addrmod) ?
' ' :
',') :
' ') :
' ';
426 s = (
addr -
a) >> (
p ?
p->seggrn : 0);
428 snprintf(space,
sizeof(space),
"%d:%d",
s & 0xffff,
a & 0xffff);
450 int w =
RZ_MAX(10 - strlen(space), 0);
459 if (
p->cons &&
p->cons->rgbstr) {
460 static char rgbstr[32];
461 pre =
p->cons->rgbstr(rgbstr,
sizeof(rgbstr),
addr);
467 if (
p &&
p->wide_offsets) {
478 if (
p &&
p->wide_offsets) {
495 p->cb_printf(
"%s",
s);
504 const char *
s =
p->get_section_name(
p->user, at);
533 if (!
IS_PRINTABLE(ch) && fmt[0] ==
'%' && fmt[1] ==
'c') {
558 p->cb_printf(
"%s",
s);
574 int len,
int base,
int step,
size_t zoomsz) {
580 bool pairs =
p->pairs;
593 int stride =
p->stride;
597 const char *bytefmt =
"%02x";
598 const char *pre =
"";
654 bytefmt =
"0x%016x ";
661 const char *space = hex_style ?
"." :
" ";
663 if (
step == 1 && base < 0) {
681 if (
p->wide_offsets) {
688 s = ((
addr -
a) >>
p->seggrn) & 0xffff;
689 snprintf(soff,
sizeof(soff),
"%04x:%04x ",
s,
a);
690 delta = strlen(soff) - 10;
693 delta = strlen(soff) - 9;
708 K = (
addr >> 4) & 0xf;
714 for (
i = 0;
i < inc;
i++) {
724 hex[(((
i +
k) >> 4) + K) % 16],
732 if (
i & 1 || !pairs) {
747 for (
i = 0;
i < inc;
i++) {
755 if (
p->use_comments && !compact) {
776 bool printValue =
true;
777 bool oPrintValue =
true;
780 for (
i = j = 0;
i <
len;
i += (stride ? stride : inc)) {
781 if (
p->cons &&
p->cons->context &&
p->cons->context->breaked) {
786 int sz =
p->offsize ?
p->offsize(
p->user,
addr + j) : -1;
795 if (
i + inc + inc >=
len ||
797 sparse_char =
buf[j];
799 if (last_sparse == 2) {
803 if (last_sparse > 2) {
813 if (use_offset && (!isPxr || inc < 4)) {
817 int row_have_cursor = -1;
820 if (!compact && !isPxr) {
823 for (j =
i; j <
i + inc; j++) {
824 if (j !=
i && use_align && rowbytes == inc) {
825 int sz =
p->offsize ?
p->offsize(
p->user,
addr + j) : -1;
830 if (row_have_cursor == -1) {
832 row_have_cursor = j -
i;
833 row_have_addr =
addr + j;
836 if (!compact && ((j >=
len) ||
bytes >= rowbytes)) {
838 if (j + 1 >= inc +
i) {
846 }
else if (base == 10) {
858 if ((base == 32 || base == 64)) {
863 size_t sz_n = (base == 64)
868 sz_n =
RZ_MIN(left, sz_n);
869 if (j + sz_n >
len) {
878 if (!
p->iob.addr_is_mapped(
p->iob.io,
addr + j)) {
879 a =
p->cons->context->pal.ai_unmap;
881 a =
p->colorfor(
p->user,
n,
true);
892 bool hasNull =
false;
902 if (use_offset && !hasNull && isPxr) {
908 }
else if (
step == 2) {
915 const char *
n =
p->offname(
p->user,
addr + j);
922 oPrintValue = printValue;
924 }
else if (base == -8) {
930 }
else if (base == -1) {
935 }
else if (base == -10) {
943 }
else if (base == 10) {
955 if (use_unalloc && !
p->iob.is_valid_offset(
p->iob.io,
addr + j,
false)) {
956 char ch =
p->io_unalloc_ch;
957 char dbl_ch_str[] = { ch, ch, 0 };
962 if (pairs && !compact && (inc & 1)) {
963 bool mustspace = (rows % 2) ? !(j & 1) : (j & 1);
967 }
else if (
bytes % 2 || !pairs) {
969 if (j + 1 < inc +
i) {
993 }
else if (col == 1) {
1003 size_t end =
i + inc;
1004 for (j =
i; j <
end; j++) {
1005 if (j !=
i && use_align &&
bytes >= rowbytes) {
1006 int sz = (
p->offsize) ?
p->offsize(
p->user,
addr + j) : -1;
1012 if (j >=
len || (use_align &&
bytes >= rowbytes)) {
1015 ut8 ch = (use_unalloc && !
p->iob.is_valid_offset(
p->iob.io,
addr + j,
false))
1033 }
else if (inc == 4) {
1037 }
else if (inc == 2 && base == 16) {
1046 char *rstr =
p->hasrefs(
p->user,
addr +
i,
false);
1047 if (rstr && *rstr) {
1051 rstr =
p->hasrefs(
p->user,
off,
true);
1052 if (rstr && *rstr) {
1058 if (!eol &&
p->use_comments) {
1059 for (; j <
i + inc; j++) {
1062 for (j =
i; j <
i + inc; j++) {
1063 if (use_align && (j -
i) >= rowbytes) {
1067 a =
p->offname(
p->user,
addr + j);
1068 if (
p->colorfor &&
a && *
a) {
1069 const char *
color =
p->colorfor(
p->user,
addr + j,
true);
1074 char *comment =
p->get_comments(
p->user,
addr + j);
1077 a =
p->colorfor(
p->user,
addr + j,
true);
1089 if (use_align && rowbytes < inc && bytes >= rowbytes) {
1096 if (
p->cfmt && *
p->cfmt) {
1097 if (row_have_cursor != -1) {
1103 for (
i = 0;
i < row_have_cursor;
i++) {
1104 if (!pairs || (!compact &&
i % 2)) {
1112 p->coreb.cmdf(
p->coreb.core,
1113 "%s @ 0x%08" PFMT64x,
p->cfmt, row_have_addr);
1148 #define BD(a, b) getbytediff(p, fmt, (a)[i + j], (b)[i + j])
1149 #define CD(a, b) getchardiff(p, fmt, (a)[i + j], (b)[i + j])
1176 char linediff, fmt[64];
1181 if (!((
a =
M(_a,
len)))) {
1184 if (!((
b =
M(_b,
len)))) {
1188 for (
i = 0;
i <
len;
i += 16) {
1190 linediff = (memcmp(
a +
i,
b +
i,
min)) ?
'!' :
'|';
1191 if (diffskip && linediff ==
'|') {
1195 for (j = 0; j <
min; j++) {
1202 for (j = 0; j <
min; j++) {
1210 for (j = 0; j <
min; j++) {
1217 for (j = 0; j <
min; j++) {
1237 for (
i = 0;
i <
len;
i++) {
1238 p->cb_printf(fmt,
buf[
i]);
1242 for (
i = 0;
i <
len;
i++) {
1261 int i, cols = (_cols == -1) ? 78 : _cols;
1266 const char *block =
p->cons->use_utf8 ?
UTF_BLOCK :
"#";
1270 p->cb_printf(
"%4d%% ",
pc);
1274 for (
i = cols *
pc / 100;
i;
i--) {
1275 p->cb_printf(
"%s", block);
1277 for (
i = cols - (cols *
pc / 100);
i;
i--) {
1278 p->cb_printf(
"%s", h_line);
1285 const char *block =
p->cons->use_utf8 ?
UTF_BLOCK :
"#";
1293 bool isFirst =
true;
1294 for (j = 0; j < cols; j++) {
1297 if (startA <= endB && endA >= startB) {
1298 if (show_colors & isFirst) {
1302 p->cb_printf(
"%s", block);
1307 p->cb_printf(
"%s", h_line);
1316 const char *block =
p->cons->use_utf8 ?
UTF_BLOCK :
"#";
1328 int idx = (
int)((
k * 4) / cols);
1330 const char *
str = kol[
idx];
1339 p->cb_printf(
"%s", block);
1341 p->cb_printf(
"%s", h_line);
1363 p->cb_printf(h_line);
1372 cols =
arr[
i] > cols ?
arr[
i] : cols;
1377 int base = 0,
k = 0;
1381 if (
p->cur_enabled) {
1388 p->cb_printf(
" 0x%08" PFMT64x " ", at);
1391 p->cb_printf(
"0x%08" PFMT64x " ", at);
1394 p->cb_printf(
"%03x %04x %s",
i,
arr[
i], v_line);
1396 p->cb_printf(
"%s", v_line);
1401 if (next <
arr[
i]) {
1403 for (j = 0; j < next + base; j +=
INC) {
1408 for (j = next +
INC; j + base <
arr[
i]; j +=
INC) {
1416 if (
i + 1 ==
size) {
1417 for (j =
arr[
i] +
INC + base; j + base < next; j +=
INC) {
1422 for (j =
arr[
i] +
INC + base; j + base < next; j +=
INC) {
1520 if (
p->calc_row_offsets) {
1522 p->row_offsets_sz = 0;
1534 if (!
p->row_offsets || !
p->row_offsets_sz) {
1538 if (
i >=
p->row_offsets_sz) {
1540 p->row_offsets_sz *= 2;
1542 while (
i >=
p->row_offsets_sz) {
1543 p->row_offsets_sz *= 2;
1545 new_size =
sizeof(
ut32) *
p->row_offsets_sz;
1546 p->row_offsets =
realloc(
p->row_offsets, new_size);
1554 if (i < 0 || i >=
p->row_offsets_sz) {
1557 return p->row_offsets[
i];
1572 return p->cur_enabled ?
p->cur : 0;
1585 int bytesize = wordsize / 8;
1594 for (
int i = 0;
i + bytesize <
len;
i += bytesize) {
1630 switch (tok->
type) {
static RzILOpEffect * mul(cs_insn *insn, bool is_thumb)
const lzma_allocator const uint8_t size_t uint8_t * out
_Use_decl_annotations_ int __cdecl printf(const char *const _Format,...)
static states step(struct re_guts *, sopno, sopno, states, int, states)
RZ_API void Ht_() free(HtName_(Ht) *ht)
return memset(p, 0, total)
memcpy(mem, inblock.get(), min(CONTAINING_RECORD(inblock.get(), MEMBLOCK, data) ->size, size))
void * realloc(void *ptr, size_t size)
void * malloc(size_t size)
void * calloc(size_t number, size_t size)
return strdup("=SP r13\n" "=LR r14\n" "=PC r15\n" "=A0 r0\n" "=A1 r1\n" "=A2 r2\n" "=A3 r3\n" "=ZF zf\n" "=SF nf\n" "=OF vf\n" "=CF cf\n" "=SN or0\n" "gpr lr .32 56 0\n" "gpr pc .32 60 0\n" "gpr cpsr .32 64 0 ____tfiae_________________qvczn\n" "gpr or0 .32 68 0\n" "gpr tf .1 64.5 0 thumb\n" "gpr ef .1 64.9 0 endian\n" "gpr jf .1 64.24 0 java\n" "gpr qf .1 64.27 0 sticky_overflow\n" "gpr vf .1 64.28 0 overflow\n" "gpr cf .1 64.29 0 carry\n" "gpr zf .1 64.30 0 zero\n" "gpr nf .1 64.31 0 negative\n" "gpr itc .4 64.10 0 if_then_count\n" "gpr gef .4 64.16 0 great_or_equal\n" "gpr r0 .32 0 0\n" "gpr r1 .32 4 0\n" "gpr r2 .32 8 0\n" "gpr r3 .32 12 0\n" "gpr r4 .32 16 0\n" "gpr r5 .32 20 0\n" "gpr r6 .32 24 0\n" "gpr r7 .32 28 0\n" "gpr r8 .32 32 0\n" "gpr r9 .32 36 0\n" "gpr r10 .32 40 0\n" "gpr r11 .32 44 0\n" "gpr r12 .32 48 0\n" "gpr r13 .32 52 0\n" "gpr r14 .32 56 0\n" "gpr r15 .32 60 0\n" "gpr r16 .32 64 0\n" "gpr r17 .32 68 0\n")
RZ_API RZ_OWN RzStrBuf * rz_print_colorize_asm_str(RZ_BORROW RzPrint *p, const RzAsmTokenString *toks)
Colorizes a tokenized asm string.
RZ_API void rz_print_set_flags(RzPrint *p, int _flags)
RZ_API void rz_print_fill(RzPrint *p, const ut8 *arr, int size, ut64 addr, int step)
RZ_API void rz_print_init_rowoffsets(RzPrint *p)
RZ_API bool rz_print_have_cursor(RzPrint *p, int cur, int len)
RZ_API void rz_print_cursor(RzPrint *p, int cur, int len, int set)
RZ_API void rz_print_byte(RzPrint *p, const char *fmt, int idx, ut8 ch)
RZ_API void rz_print_bytes(RzPrint *p, const ut8 *buf, int len, const char *fmt)
static int libc_printf(const char *format,...)
RZ_API void rz_print_hexii(RzPrint *rp, ut64 addr, const ut8 *buf, int len, int step)
RZ_API const char * rz_print_byte_color(RzPrint *p, int ch)
RZ_API RZ_OWN char * rz_print_hexdiff_str(RZ_NONNULL RzPrint *p, ut64 aa, RZ_NONNULL const ut8 *_a, ut64 ba, RZ_NONNULL const ut8 *_b, int len, int scndcol)
Print hexdump diff between _a and _b.
RZ_API int rz_print_row_at_off(RzPrint *p, ut32 offset)
RZ_API ut32 rz_print_rowoff(RzPrint *p, int i)
static const char * getchardiff(RzPrint *p, char *fmt, ut8 a, ut8 b)
static void print_byte(RzStrBuf *sb, RzPrint *p, const char *fmt, int idx, ut8 ch)
static void print_section(RzStrBuf *sb, RzPrint *p, ut64 at)
RZ_API void rz_print_rangebar(RzPrint *p, ut64 startA, ut64 endA, ut64 min, ut64 max, int cols)
RZ_API void rz_print_progressbar(RzPrint *p, int pc, int _cols)
RZ_API void rz_print_set_cursor(RzPrint *p, int enable, int ocursor, int cursor)
RZ_API bool rz_print_is_interrupted(void)
RZ_API void rz_print_set_rowoff(RzPrint *p, int i, ut32 offset, bool overwrite)
static int nullprinter(const char *a,...)
static void print_addr(RzStrBuf *sb, RzPrint *p, ut64 addr)
static void print_cursor_l(RzStrBuf *sb, RzPrint *p, int cur, int len)
RZ_API RzPrint * rz_print_new(void)
RZ_API bool rz_print_cursor_pointer(RzPrint *p, int cur, int len)
static void printHistBlock(RzPrint *p, int k, int cols)
static void print_cursor_r(RzStrBuf *sb, RzPrint *p, int cur, int len)
RZ_API void rz_print_set_screenbounds(RzPrint *p, ut64 addr)
Sets screen_bounds member of p to addr if the cursor is not visible on the screen.
RZ_API RzPrint * rz_print_free(RzPrint *p)
RZ_API RZ_OWN char * rz_print_hexdump_str(RZ_NONNULL RzPrint *p, ut64 addr, RZ_NONNULL const ut8 *buf, int len, int base, int step, size_t zoomsz)
Prints a hexdump of buf at addr.
static bool checkSparse(const ut8 *p, int len, int ch)
static int libc_eprintf(const char *format,...)
RZ_API char * rz_print_hexpair(RzPrint *p, const char *str, int n)
RZ_API RZ_OWN char * rz_print_jsondump_str(RZ_NONNULL RzPrint *p, RZ_NONNULL const ut8 *buf, int len, int wordsize)
Print dump in json format.
static char colorbuffer[64]
static const char * getbytediff(RzPrint *p, char *fmt, ut8 a, ut8 b)
static bool isAllZeros(const ut8 *buf, int len)
RZ_API char * rz_print_section_str(RzPrint *p, ut64 at)
RZ_API int rz_print_get_cursor(RzPrint *p)
static RzPrintIsInterruptedCallback is_interrupted_cb
RZ_API void rz_print_raw(RzPrint *p, ut64 addr, const ut8 *buf, int len)
RZ_API void rz_print_set_is_interrupted_cb(RzPrintIsInterruptedCallback cb)
static ut8 * M(const ut8 *b, int len)
static const char hex[16]
RZ_API const char * rz_print_color_op_type(RZ_NONNULL RzPrint *p, ut32 analysis_type)
RZ_API void rz_print_addr(RzPrint *p, ut64 addr)
#define RZ_ANALYSIS_OP_TYPE_MASK
@ RZ_ANALYSIS_OP_TYPE_CMP
@ RZ_ANALYSIS_OP_TYPE_SUB
@ RZ_ANALYSIS_OP_TYPE_ICALL
@ RZ_ANALYSIS_OP_TYPE_LOAD
@ RZ_ANALYSIS_OP_TYPE_CRYPTO
@ RZ_ANALYSIS_OP_TYPE_UNK
@ RZ_ANALYSIS_OP_TYPE_MUL
@ RZ_ANALYSIS_OP_TYPE_ROL
@ RZ_ANALYSIS_OP_TYPE_JMP
@ RZ_ANALYSIS_OP_TYPE_AND
@ RZ_ANALYSIS_OP_TYPE_SAL
@ RZ_ANALYSIS_OP_TYPE_MOD
@ RZ_ANALYSIS_OP_TYPE_UPUSH
@ RZ_ANALYSIS_OP_TYPE_RPUSH
@ RZ_ANALYSIS_OP_TYPE_UJMP
@ RZ_ANALYSIS_OP_TYPE_IJMP
@ RZ_ANALYSIS_OP_TYPE_UCCALL
@ RZ_ANALYSIS_OP_TYPE_MJMP
@ RZ_ANALYSIS_OP_TYPE_ROR
@ RZ_ANALYSIS_OP_TYPE_SWI
@ RZ_ANALYSIS_OP_TYPE_SAR
@ RZ_ANALYSIS_OP_TYPE_NULL
@ RZ_ANALYSIS_OP_TYPE_CMOV
@ RZ_ANALYSIS_OP_TYPE_TRAP
@ RZ_ANALYSIS_OP_TYPE_CCALL
@ RZ_ANALYSIS_OP_TYPE_CALL
@ RZ_ANALYSIS_OP_TYPE_ADD
@ RZ_ANALYSIS_OP_TYPE_SWITCH
@ RZ_ANALYSIS_OP_TYPE_STORE
@ RZ_ANALYSIS_OP_TYPE_CPL
@ RZ_ANALYSIS_OP_TYPE_CRET
@ RZ_ANALYSIS_OP_TYPE_PUSH
@ RZ_ANALYSIS_OP_TYPE_SHR
@ RZ_ANALYSIS_OP_TYPE_IRJMP
@ RZ_ANALYSIS_OP_TYPE_POP
@ RZ_ANALYSIS_OP_TYPE_RJMP
@ RZ_ANALYSIS_OP_TYPE_CJMP
@ RZ_ANALYSIS_OP_TYPE_DIV
@ RZ_ANALYSIS_OP_TYPE_CAST
@ RZ_ANALYSIS_OP_TYPE_UCJMP
@ RZ_ANALYSIS_OP_TYPE_MOV
@ RZ_ANALYSIS_OP_TYPE_SHL
@ RZ_ANALYSIS_OP_TYPE_ILL
@ RZ_ANALYSIS_OP_TYPE_UCALL
@ RZ_ANALYSIS_OP_TYPE_NOT
@ RZ_ANALYSIS_OP_TYPE_RET
@ RZ_ANALYSIS_OP_TYPE_NOP
@ RZ_ANALYSIS_OP_TYPE_ACMP
@ RZ_ANALYSIS_OP_TYPE_LEA
@ RZ_ANALYSIS_OP_TYPE_RCALL
@ RZ_ANALYSIS_OP_TYPE_XOR
@ RZ_ANALYSIS_OP_TYPE_NEW
@ RZ_ANALYSIS_OP_TYPE_LENGTH
@ RZ_ANALYSIS_OP_TYPE_IRCALL
#define rz_warn_if_reached()
#define rz_return_if_fail(expr)
#define rz_return_val_if_fail(expr, val)
#define RUNE_LONG_LINE_HORIZ
static ut64 rz_read_ble64(const void *src, bool big_endian)
static ut8 rz_read_ble8(const void *src)
static ut16 rz_read_le16(const void *src)
static ut32 rz_read_le32(const void *src)
static ut32 rz_read_ble32(const void *src, bool big_endian)
static ut16 rz_read_ble16(const void *src, bool big_endian)
static ut64 rz_read_le64(const void *src)
static ut64 rz_read_ble(const void *src, bool big_endian, int size)
RZ_API int rz_hex_pair2bin(const char *arg)
#define rz_io_bind_init(x)
RZ_API void rz_mem_swaporcopy(ut8 *dest, const ut8 *src, int len, bool big_endian)
RZ_API void rz_num_minmax_swap_i(int *a, int *b)
RZ_API PJ * pj_end(PJ *j)
RZ_API const char * pj_string(PJ *pj)
RZ_API void pj_free(PJ *j)
RZ_API PJ * pj_n(PJ *j, ut64 n)
#define RZ_PRINT_FLAGS_ADDRDEC
#define RZ_PRINT_FLAGS_ALIGN
#define RZ_PRINT_FLAGS_SPARSE
#define RZ_PRINT_FLAGS_REFS
#define RZ_PRINT_FLAGS_NONHEX
#define RZ_PRINT_FLAGS_RAINBOW
#define RZ_PRINT_FLAGS_DIFFOUT
#define RZ_PRINT_FLAGS_HDROFF
#define RZ_PRINT_FLAGS_COLOR
#define RZ_PRINT_FLAGS_NONASCII
#define RZ_PRINT_FLAGS_ADDRMOD
#define RZ_PRINT_FLAGS_HEADER
#define RZ_PRINT_FLAGS_OFFSET
#define RZ_PRINT_FLAGS_SEGOFF
#define RZ_PRINT_FLAGS_STYLE
#define RZ_PRINT_FLAGS_SECTION
#define RZ_PRINT_FLAGS_COMPACT
#define RZ_PRINT_FLAGS_UNALLOC
RZ_API const char * rz_str_pad(const char ch, int len)
RZ_API RZ_OWN char * rz_strbuf_drain(RzStrBuf *sb)
RZ_API RZ_OWN char * rz_strbuf_drain_nofree(RzStrBuf *sb)
RZ_API char * rz_strbuf_get(RzStrBuf *sb)
RZ_API bool rz_strbuf_append(RzStrBuf *sb, const char *s)
RZ_API RzStrBuf * rz_strbuf_new(const char *s)
RZ_API void rz_strbuf_free(RzStrBuf *sb)
RZ_API bool rz_strbuf_appendf(RzStrBuf *sb, const char *fmt,...) RZ_PRINTF_CHECK(2
RZ_API void rz_strbuf_init(RzStrBuf *sb)
RZ_API bool rz_strbuf_append_n(RzStrBuf *sb, const char *s, size_t l)
int(* PrintfCallback)(const char *str,...) RZ_PRINTF_CHECK(1
#define rz_vector_foreach(vec, it)
static struct sockaddr static addrlen static backlog const void static flags void struct sockaddr from
static struct sockaddr static addrlen static backlog const void static flags void struct sockaddr socklen_t static fromlen const void const struct sockaddr to
ut32 op_type
RzAnalysisOpType. Mnemonic color depends on this.
A token of an asm string holding meta data.
union RzAsmToken::@310 val
ut64(WINAPI *w32_GetEnabledXStateFeatures)()