[*] Binary protection state of libavahi-common.so.3.5.3
Partial RELRO No Canary found NX disabled DSO No RPATH No RUNPATH No Symbols
[*] Function fprintf tear down of libavahi-common.so.3.5.3
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libavahi-common.so.3.5.3 @ 0x27d0 */
| #include <stdint.h>
|
; (fcn) sym.avahi_malloc () | uint32_t avahi_malloc (int32_t arg1) {
| r0 = arg1;
0x000027d0 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 != r0) {
0x000027d4 beq 0x2838 |
0x000027d8 ldr r3, [pc, 0x60] |
0x000027dc push {r4, lr} |
0x000027e0 add r3, pc, r3 | r3 = pc + r3;
0x000027e4 ldr r3, [r3] | r3 = *(0x283c);
0x000027e8 cmp r3, 0 |
| if (r3 == 0) {
0x000027ec bne 0x2800 |
0x000027f0 bl 0x21d4 | r0 = malloc (r0);
0x000027f4 cmp r0, 0 |
0x000027f8 popne {r4, pc} |
0x000027fc bl 0x2558 | entry0 ();
| }
0x00002800 ldr r3, [r3] | r3 = *(r3);
0x00002804 cmp r3, 0 |
| if (r3 == 0) {
0x00002808 bne 0x2830 |
0x0000280c ldr r3, [pc, 0x30] |
0x00002810 ldr r1, [pc, 0x30] | r1 = *(0x2844);
0x00002814 ldr r0, [pc, 0x30] | r0 = *(0x2848);
0x00002818 add r3, pc, r3 | r3 = pc + r3;
0x0000281c add r3, r3, 0x1d | r3 = 0x285d;
0x00002820 mov r2, 0x6d | r2 = 0x6d;
0x00002824 add r1, pc, r1 | r1 = pc + r1;
0x00002828 add r0, pc, r0 | r0 = pc + r0;
0x0000282c bl 0x24ec | assert ();
| }
0x00002830 pop {r4, lr} |
0x00002834 bx r3 | return uint32_t (*r3)() ();
| }
0x00002838 mov r0, r3 | r0 = r3;
0x0000283c bx lr | return r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libavahi-common.so.3.5.3 @ 0x2850 */
| #include <stdint.h>
|
; (fcn) sym.avahi_malloc0 () | void avahi_malloc0 (int32_t arg1) {
| r0 = arg1;
0x00002850 push {r4, r5, r6, lr} |
0x00002854 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x00002858 beq 0x28f4 |
0x0000285c ldr r3, [pc, 0x98] |
0x00002860 mov r6, r4 | r6 = r4;
0x00002864 add r3, pc, r3 | r3 = pc + r3;
0x00002868 ldr r3, [r3] | r3 = *(0x28f8);
0x0000286c cmp r3, 0 |
| if (r3 == 0) {
0x00002870 bne 0x288c |
0x00002874 mov r1, r4 | r1 = r4;
0x00002878 mov r0, 1 | r0 = 1;
0x0000287c bl 0x2288 | r0 = calloc (r0, r1);
0x00002880 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x00002884 bne 0x28f4 | goto label_0;
| }
0x00002888 bl 0x2558 | entry0 ();
| }
0x0000288c ldr r5, [r3, 0xc] | r5 = *((r3 + 0xc));
0x00002890 cmp r5, 0 |
| if (r5 != 0) {
0x00002894 beq 0x28ac |
0x00002898 mov r1, r4 | r1 = r4;
0x0000289c mov r3, r5 | r3 = r5;
0x000028a0 mov r0, 1 | r0 = 1;
0x000028a4 pop {r4, r5, r6, lr} |
0x000028a8 bx r3 | return uint32_t (*r3)() ();
| }
0x000028ac ldr r3, [r3] | r3 = *(r3);
0x000028b0 cmp r3, 0 |
| if (r3 == 0) {
0x000028b4 bne 0x28dc |
0x000028b8 ldr r3, [pc, 0x40] |
0x000028bc ldr r1, [pc, 0x40] | r1 = *(0x2900);
0x000028c0 ldr r0, [pc, 0x40] | r0 = *(0x2904);
0x000028c4 add r3, pc, r3 | r3 = pc + r3;
0x000028c8 add r3, r3, 0x2a | r3 = 0x2926;
0x000028cc mov r2, 0x7d | r2 = 0x7d;
0x000028d0 add r1, pc, r1 | r1 = pc + r1;
0x000028d4 add r0, pc, r0 | r0 = pc + r0;
0x000028d8 bl 0x24ec | assert ();
| }
0x000028dc blx r3 | r0 = uint32_t (*r3)(uint32_t) (r0);
0x000028e0 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x000028e4 beq 0x28f4 | goto label_0;
| }
0x000028e8 mov r2, r6 | r2 = r6;
0x000028ec mov r1, r5 | r1 = r5;
0x000028f0 bl 0x23b4 | memset (r0, r1, r2);
| }
| label_0:
0x000028f4 mov r0, r4 | r0 = r4;
0x000028f8 pop {r4, r5, r6, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libavahi-common.so.3.5.3 @ 0x2850 */
| #include <stdint.h>
|
; (fcn) sym.avahi_malloc0 () | void avahi_malloc0 (int32_t arg1) {
| r0 = arg1;
0x00002850 push {r4, r5, r6, lr} |
0x00002854 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x00002858 beq 0x28f4 |
0x0000285c ldr r3, [pc, 0x98] |
0x00002860 mov r6, r4 | r6 = r4;
0x00002864 add r3, pc, r3 | r3 = pc + r3;
0x00002868 ldr r3, [r3] | r3 = *(0x28f8);
0x0000286c cmp r3, 0 |
| if (r3 == 0) {
0x00002870 bne 0x288c |
0x00002874 mov r1, r4 | r1 = r4;
0x00002878 mov r0, 1 | r0 = 1;
0x0000287c bl 0x2288 | r0 = calloc (r0, r1);
0x00002880 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x00002884 bne 0x28f4 | goto label_0;
| }
0x00002888 bl 0x2558 | entry0 ();
| }
0x0000288c ldr r5, [r3, 0xc] | r5 = *((r3 + 0xc));
0x00002890 cmp r5, 0 |
| if (r5 != 0) {
0x00002894 beq 0x28ac |
0x00002898 mov r1, r4 | r1 = r4;
0x0000289c mov r3, r5 | r3 = r5;
0x000028a0 mov r0, 1 | r0 = 1;
0x000028a4 pop {r4, r5, r6, lr} |
0x000028a8 bx r3 | return uint32_t (*r3)() ();
| }
0x000028ac ldr r3, [r3] | r3 = *(r3);
0x000028b0 cmp r3, 0 |
| if (r3 == 0) {
0x000028b4 bne 0x28dc |
0x000028b8 ldr r3, [pc, 0x40] |
0x000028bc ldr r1, [pc, 0x40] | r1 = *(0x2900);
0x000028c0 ldr r0, [pc, 0x40] | r0 = *(0x2904);
0x000028c4 add r3, pc, r3 | r3 = pc + r3;
0x000028c8 add r3, r3, 0x2a | r3 = 0x2926;
0x000028cc mov r2, 0x7d | r2 = 0x7d;
0x000028d0 add r1, pc, r1 | r1 = pc + r1;
0x000028d4 add r0, pc, r0 | r0 = pc + r0;
0x000028d8 bl 0x24ec | assert ();
| }
0x000028dc blx r3 | r0 = uint32_t (*r3)(uint32_t) (r0);
0x000028e0 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x000028e4 beq 0x28f4 | goto label_0;
| }
0x000028e8 mov r2, r6 | r2 = r6;
0x000028ec mov r1, r5 | r1 = r5;
0x000028f0 bl 0x23b4 | memset (r0, r1, r2);
| }
| label_0:
0x000028f4 mov r0, r4 | r0 = r4;
0x000028f8 pop {r4, r5, r6, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libavahi-common.so.3.5.3 @ 0x2974 */
| #include <stdint.h>
|
; (fcn) sym.avahi_realloc () | void avahi_realloc (int32_t arg2, void * ptr) {
| r1 = arg2;
| r0 = ptr;
0x00002974 push {r4, lr} |
0x00002978 subs r4, r1, 0 | r4 = r1 - 0;
| if (r4 == r1) {
0x0000297c bne 0x298c |
0x00002980 bl 0x2258 | fcn_00002258 ();
0x00002984 mov r0, r4 | r0 = r4;
0x00002988 pop {r4, pc} |
| }
0x0000298c ldr r3, [pc, 0x54] |
0x00002990 add r3, pc, r3 | r3 = pc + r3;
0x00002994 ldr r3, [r3] | r3 = *(0x29e4);
0x00002998 cmp r3, 0 |
| if (r3 == 0) {
0x0000299c bne 0x29b0 |
0x000029a0 bl 0x2348 | r0 = realloc (r0, r1);
0x000029a4 cmp r0, 0 |
0x000029a8 popne {r4, pc} |
0x000029ac bl 0x2558 | entry0 ();
| }
0x000029b0 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x000029b4 cmp r3, 0 |
| if (r3 == 0) {
0x000029b8 bne 0x29e0 |
0x000029bc ldr r3, [pc, 0x28] |
0x000029c0 ldr r1, [pc, 0x28] | r1 = *(0x29ec);
0x000029c4 ldr r0, [pc, 0x28] | r0 = *(0x29f0);
0x000029c8 add r3, pc, r3 | r3 = pc + r3;
0x000029cc add r3, r3, 0x43 | r3 = 0x2a2b;
0x000029d0 mov r2, 0x9c | r2 = 0x9c;
0x000029d4 add r1, pc, r1 | r1 = pc + r1;
0x000029d8 add r0, pc, r0 | r0 = pc + r0;
0x000029dc bl 0x24ec | assert ();
| }
0x000029e0 pop {r4, lr} |
0x000029e4 bx r3 | return uint32_t (*r3)() ();
| }
[*] Function fprintf used 1 times libavahi-common.so.3.5.3