[*] Binary protection state of dbus-monitor
Partial RELRO No Canary found NX disabled No PIE No RPATH No RUNPATH No Symbols
[*] Function printf tear down of dbus-monitor
; 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/bin/dbus-monitor @ 0x11e58 */
| #include <stdint.h>
|
; (fcn) fcn.00011e58 () | void fcn_00011e58 (int32_t arg_10h, int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00011e58 push {r4, r5, r6, lr} |
0x00011e5c ldr r5, [sp, 0x10] | r5 = *(arg_10h);
0x00011e60 mov r4, r1 | r4 = r1;
0x00011e64 mov r1, r0 | r1 = r0;
0x00011e68 ldr r0, [pc, 0x134] | r0 = *(0x11fa0);
0x00011e6c bl 0x1142c | printf (r0, r1, r2, r3, r4, r5)
0x00011e70 tst r5, 1 |
| if ((r5 & 1) != 0) {
0x00011e74 beq 0x11e8c |
0x00011e78 mov r0, r4 | r0 = r4;
0x00011e7c bl 0x11354 | r0 = dbus_message_get_serial ();
0x00011e80 mov r1, r0 | r1 = r0;
0x00011e84 ldr r0, [pc, 0x11c] | r0 = "%s\t%ld.%06ld";
0x00011e88 bl 0x1142c | printf ("%s\t%ld.%06ld", r1)
| }
0x00011e8c tst r5, 4 |
| if ((r5 & 4) != 0) {
0x00011e90 beq 0x11ebc |
0x00011e94 mov r0, r4 | r0 = r4;
0x00011e98 bl 0x11594 | r0 = dbus_message_get_sender ();
0x00011e9c cmp r0, 0 |
| if (r0 != 0) {
0x00011ea0 ldreq r1, [pc, 0x104] | r1 = "_none_";
| }
| if (r0 != 0) {
0x00011ea4 beq 0x11eb4 |
0x00011ea8 mov r0, r4 | r0 = r4;
0x00011eac bl 0x11594 | r0 = dbus_message_get_sender ();
0x00011eb0 mov r1, r0 | r1 = r0;
| }
0x00011eb4 ldr r0, [pc, 0xf4] | r0 = "_none_";
0x00011eb8 bl 0x1142c | printf ("_none_", r1)
| }
0x00011ebc tst r5, 8 |
| if ((r5 & 8) != 0) {
0x00011ec0 beq 0x11eec |
0x00011ec4 mov r0, r4 | r0 = r4;
0x00011ec8 bl 0x11324 | r0 = dbus_message_get_destination ();
0x00011ecc cmp r0, 0 |
| if (r0 != 0) {
0x00011ed0 ldreq r1, [pc, 0xd4] | r1 = "_none_";
| }
| if (r0 != 0) {
0x00011ed4 beq 0x11ee4 |
0x00011ed8 mov r0, r4 | r0 = r4;
0x00011edc bl 0x11324 | r0 = dbus_message_get_destination ();
0x00011ee0 mov r1, r0 | r1 = r0;
| }
0x00011ee4 ldr r0, [pc, 0xc4] | r0 = "_none_";
0x00011ee8 bl 0x1142c | printf ("_none_", r1)
| }
0x00011eec tst r5, 2 |
| if ((r5 & 2) != 0) {
0x00011ef0 beq 0x11f08 |
0x00011ef4 mov r0, r4 | r0 = r4;
0x00011ef8 bl 0x11510 | r0 = dbus_message_get_reply_serial ();
0x00011efc mov r1, r0 | r1 = r0;
0x00011f00 ldr r0, [pc, 0xa0] | r0 = "%s\t%ld.%06ld";
0x00011f04 bl 0x1142c | printf ("%s\t%ld.%06ld", r1)
| }
0x00011f08 tst r5, 0x10 |
| if ((r5 & 0x10) != 0) {
0x00011f0c beq 0x11f38 |
0x00011f10 mov r0, r4 | r0 = r4;
0x00011f14 bl 0x114e0 | r0 = dbus_message_get_path ();
0x00011f18 cmp r0, 0 |
| if (r0 != 0) {
0x00011f1c ldreq r1, [pc, 0x88] | r1 = "_none_";
| }
| if (r0 != 0) {
0x00011f20 beq 0x11f30 |
0x00011f24 mov r0, r4 | r0 = r4;
0x00011f28 bl 0x114e0 | r0 = dbus_message_get_path ();
0x00011f2c mov r1, r0 | r1 = r0;
| }
0x00011f30 ldr r0, [pc, 0x78] | r0 = "_none_";
0x00011f34 bl 0x1142c | printf ("_none_", r1)
| }
0x00011f38 tst r5, 0x20 |
| if ((r5 & 0x20) != 0) {
0x00011f3c beq 0x11f68 |
0x00011f40 mov r0, r4 | r0 = r4;
0x00011f44 bl 0x11528 | r0 = dbus_message_get_interface ();
0x00011f48 cmp r0, 0 |
| if (r0 != 0) {
0x00011f4c ldreq r1, [pc, 0x58] | r1 = "_none_";
| }
| if (r0 != 0) {
0x00011f50 beq 0x11f60 |
0x00011f54 mov r0, r4 | r0 = r4;
0x00011f58 bl 0x11528 | r0 = dbus_message_get_interface ();
0x00011f5c mov r1, r0 | r1 = r0;
| }
0x00011f60 ldr r0, [pc, 0x48] | r0 = "_none_";
0x00011f64 bl 0x1142c | printf ("_none_", r1)
| }
0x00011f68 tst r5, 0x40 |
| if ((r5 & 0x40) != 0) {
0x00011f6c beq 0x11f98 |
0x00011f70 mov r0, r4 | r0 = r4;
0x00011f74 bl 0x11534 | r0 = dbus_message_get_member ();
0x00011f78 cmp r0, 0 |
| if (r0 != 0) {
0x00011f7c ldreq r1, [pc, 0x28] | r1 = "_none_";
| }
| if (r0 != 0) {
0x00011f80 beq 0x11f90 |
0x00011f84 mov r0, r4 | r0 = r4;
0x00011f88 bl 0x11534 | r0 = dbus_message_get_member ();
0x00011f8c mov r1, r0 | r1 = r0;
| }
0x00011f90 ldr r0, [pc, 0x18] | r0 = "_none_";
0x00011f94 bl 0x1142c | printf ("_none_", r1)
| }
0x00011f98 mov r0, 0xa | r0 = 0xa;
0x00011f9c pop {r4, r5, r6, lr} |
0x00011fa0 b 0x11450 | return void (*0x11450)() ();
| }
; 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/bin/dbus-monitor @ 0x12148 */
| #include <stdint.h>
|
; (fcn) fcn.00012148 () | void fcn_00012148 (int32_t arg1) {
| r0 = arg1;
0x00012148 push {r4, r5, r6, lr} |
0x0001214c ldr r5, [pc, 0x18] | r5 = *(0x12168);
0x00012150 mov r4, r0 | r4 = r0;
| do {
0x00012154 cmp r4, 0 |
| if (r4 > 0) {
0x00012158 pople {r4, r5, r6, pc} |
| }
0x0001215c mov r0, r5 | r0 = r5;
0x00012160 bl 0x1142c | printf (r0, r1, r2, r3, r4, r5)
0x00012164 sub r4, r4, 1 | r4--;
0x00012168 b 0x12154 |
| } while (1);
| }
; 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/bin/dbus-monitor @ 0x12170 */
| #include <stdint.h>
|
; (fcn) fcn.00012170 () | void fcn_00012170 (int32_t arg1, int32_t arg2) {
| int32_t var_4h;
| int32_t fildes;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| void * s2;
| int32_t var_58h;
| int32_t var_a8h;
| void * s;
| int32_t var_b2h;
| int32_t var_b3h;
| int32_t var_b4h;
| int32_t var_b8h;
| void * var_130h;
| int32_t var_134h;
| int32_t var_138h;
| int32_t var_1b4h;
| r0 = arg1;
| r1 = arg2;
0x00012170 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00012174 add r6, r2, 1 | r6 = r2 + 1;
0x00012178 mov r7, r2 | r7 = r2;
0x0001217c ldr r2, [pc, 0x81c] | r2 = *(0x1299c);
0x00012180 sub r3, r6, r6, lsl 2 | r3 = r6 - (r6 << 2);
0x00012184 add r3, r3, 0x50 | r3 += 0x50;
0x00012188 mov r4, r0 | r4 = r0;
0x0001218c mov r5, r1 | r5 = r1;
0x00012190 smull r0, r1, r3, r2 | r0:r1 = r3 * r2;
0x00012194 sub sp, sp, 0x1b4 |
0x00012198 sub r3, r1, r3, asr 31 | r3 = r1 - (r3 >> 31);
0x0001219c cmp r3, 8 |
| if (r3 >= 8) {
0x000121a0 movlo r3, 8 | r3 = 8;
| }
0x000121a4 str r3, [sp, 4] | var_4h = r3;
| do {
0x000121a8 mov r0, r4 | r0 = r4;
0x000121ac bl 0x1154c | r0 = dbus_message_iter_get_arg_type ();
0x000121b0 subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 == r0) {
0x000121b4 beq 0x12274 | goto label_13;
| }
0x000121b8 mov r0, r7 | r0 = r7;
0x000121bc bl 0x12148 | fcn_00012148 (r0);
0x000121c0 sub r3, r8, 0x61 | r3 = r8 - 0x61;
0x000121c4 cmp r3, 0x18 |
| if (r3 > 0x18) {
| /* switch table (25 cases) at 0x121d0 */
0x000121c8 ldrls pc, [pc, r3, lsl 2] | offset_0 = r3 << 2;
| pc = *((pc + offset_0));
| }
0x000121cc b 0x12978 | goto label_14;
0x00012234 mov r0, r4 | r0 = r4;
0x00012238 add r1, sp, 0x130 | r1 += var_130h;
0x0001223c bl 0x113a8 | dbus_message_iter_get_basic ();
0x00012240 cmp r5, 0 |
| if (r5 != 0) {
0x00012244 ldreq r0, [pc, 0x758] | r0 = "string \";
| }
| if (r5 == 0) {
0x00012248 beq 0x12294 | goto label_1;
| }
| label_0:
0x0001224c ldr r1, [sp, 0x130] | r1 = var_130h;
0x00012250 ldr r0, [pc, 0x750] | r0 = "string \";
0x00012254 bl 0x1142c | printf ("string \", r1)
0x00012258 cmp r5, 0 |
| if (r5 != 0) {
0x0001225c ldreq r0, [pc, 0x748] | r0 = *((pc + 0x748));
| }
| if (r5 == 0) {
0x00012260 beq 0x12514 | goto label_8;
| }
| label_2:
0x00012264 mov r0, r4 | r0 = r4;
0x00012268 bl 0x1139c | r0 = dbus_message_iter_next ();
0x0001226c cmp r0, 0 |
0x00012270 bne 0x121a8 |
| } while (r0 != 0);
| label_13:
0x00012274 add sp, sp, 0x1b4 |
0x00012278 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0001227c mov r0, r4 | r0 = r4;
0x00012280 add r1, sp, 0x130 | r1 += var_130h;
0x00012284 bl 0x113a8 | dbus_message_iter_get_basic ();
0x00012288 cmp r5, 0 |
| if (r5 == 0) {
0x0001228c ldreq r0, [pc, 0x71c] | r0 = "signature \";
| goto label_15;
| }
| if (r5 != 0) {
| label_15:
0x00012290 bne 0x1224c | goto label_0;
| }
| label_1:
0x00012294 bl 0x1142c | printf (r0)
0x00012298 b 0x1224c | goto label_0;
0x0001229c add r1, sp, 0x130 | r1 += var_130h;
0x000122a0 mov r0, r4 | r0 = r4;
0x000122a4 bl 0x113a8 | dbus_message_iter_get_basic ();
0x000122a8 cmp r5, 0 |
| if (r5 != 0) {
0x000122ac bne 0x1224c | goto label_0;
| }
0x000122b0 ldr r0, [pc, 0x6fc] | r0 = "signature \";
0x000122b4 b 0x12294 | goto label_1;
0x000122b8 add r1, sp, 0x130 | r1 += var_130h;
0x000122bc mov r0, r4 | r0 = r4;
0x000122c0 bl 0x113a8 | dbus_message_iter_get_basic ();
0x000122c4 add r3, sp, 0x130 | r3 += var_130h;
0x000122c8 ldrsh r1, [r3] | r1 = *(r3);
0x000122cc ldr r0, [pc, 0x6e4] | r0 = "object path \";
| do {
| label_3:
0x000122d0 bl 0x1142c | printf ("object path \", r1, r2, r3)
0x000122d4 b 0x12264 | goto label_2;
0x000122d8 add r1, sp, 0x130 | r1 += var_130h;
0x000122dc mov r0, r4 | r0 = r4;
0x000122e0 bl 0x113a8 | dbus_message_iter_get_basic ();
0x000122e4 add r3, sp, 0x130 | r3 += var_130h;
0x000122e8 ldrh r1, [r3] | r1 = *(r3);
0x000122ec ldr r0, [pc, 0x6c8] | r0 = "int16 %d\n";
0x000122f0 b 0x122d0 |
| } while (1);
0x000122f4 add r1, sp, 0x130 | r1 += var_130h;
0x000122f8 mov r0, r4 | r0 = r4;
0x000122fc bl 0x113a8 | dbus_message_iter_get_basic ();
0x00012300 ldr r1, [sp, 0x130] | r1 = var_130h;
0x00012304 ldr r0, [pc, 0x6b4] | r0 = "uint16 %u\n";
0x00012308 b 0x122d0 | goto label_3;
0x0001230c add r1, sp, 0x130 | r1 += var_130h;
0x00012310 mov r0, r4 | r0 = r4;
0x00012314 bl 0x113a8 | dbus_message_iter_get_basic ();
0x00012318 ldr r1, [sp, 0x130] | r1 = var_130h;
0x0001231c ldr r0, [pc, 0x6a0] | r0 = "int32 %d\n";
0x00012320 b 0x122d0 | goto label_3;
0x00012324 mov r0, r4 | r0 = r4;
0x00012328 add r1, sp, 0x130 | r1 += var_130h;
0x0001232c bl 0x113a8 | dbus_message_iter_get_basic ();
0x00012330 add r3, sp, 0x130 | r3 += var_130h;
0x00012334 ldrd r2, r3, [r3] | __asm ("ldrd r2, r3, [r3]");
0x00012338 ldr r0, [pc, 0x688] | r0 = "uint32 %u\n";
| do {
0x0001233c bl 0x1142c | printf ("uint32 %u\n", r1, r2, r3)
0x00012340 b 0x12264 | goto label_2;
0x00012344 mov r0, r4 | r0 = r4;
0x00012348 add r1, sp, 0x130 | r1 += var_130h;
0x0001234c bl 0x113a8 | dbus_message_iter_get_basic ();
0x00012350 add r3, sp, 0x130 | r3 += var_130h;
0x00012354 ldrd r2, r3, [r3] | __asm ("ldrd r2, r3, [r3]");
0x00012358 ldr r0, [pc, 0x66c] | r0 = "int64 %lld\n";
0x0001235c b 0x1233c |
| } while (1);
0x00012360 mov r0, r4 | r0 = r4;
0x00012364 add r1, sp, 0x130 | r1 += var_130h;
0x00012368 bl 0x113a8 | dbus_message_iter_get_basic ();
0x0001236c add r3, sp, 0x130 | r3 += var_130h;
0x00012370 ldrd r2, r3, [r3] | __asm ("ldrd r2, r3, [r3]");
0x00012374 ldr r0, [pc, 0x654] | r0 = "uint64 %llu\n";
0x00012378 bl 0x1142c | printf ("uint64 %llu\n", r1, r2, r3)
0x0001237c b 0x12264 | goto label_2;
0x00012380 add r1, sp, 0x130 | r1 += var_130h;
0x00012384 mov r0, r4 | r0 = r4;
0x00012388 bl 0x113a8 | dbus_message_iter_get_basic ();
0x0001238c ldrb r1, [sp, 0x130] | r1 = var_130h;
0x00012390 ldr r0, [pc, 0x63c] | r0 = "double__g";
0x00012394 b 0x122d0 | goto label_3;
0x00012398 add r1, sp, 0x130 | r1 += var_130h;
0x0001239c mov r0, r4 | r0 = r4;
0x000123a0 bl 0x113a8 | dbus_message_iter_get_basic ();
0x000123a4 ldr r1, [sp, 0x130] | r1 = var_130h;
0x000123a8 ldr r2, [pc, 0x628] | r2 = "byte %d\n";
0x000123ac ldr r3, [pc, 0x628] | r3 = "false";
0x000123b0 cmp r1, 0 |
| if (r1 != 0) {
0x000123b4 moveq r1, r2 | r1 = r2;
| }
| if (r1 == 0) {
0x000123b8 movne r1, r3 | r1 = r3;
| }
0x000123bc ldr r0, [pc, 0x61c] | r0 = *(0x129dc);
0x000123c0 b 0x122d0 | goto label_3;
0x000123c4 add r1, sp, 0x130 | r1 += var_130h;
0x000123c8 mov r0, r4 | r0 = r4;
0x000123cc bl 0x11564 | dbus_message_iter_recurse ();
0x000123d0 ldr r0, [pc, 0x60c] | r0 = "boolean__s";
0x000123d4 bl 0x1142c | printf ("boolean__s")
0x000123d8 mov r2, r6 | r2 = r6;
0x000123dc mov r1, r5 | r1 = r5;
0x000123e0 add r0, sp, 0x130 | r0 += var_130h;
0x000123e4 bl 0x12170 | fcn_00012170 (r0, r1);
0x000123e8 b 0x12264 | goto label_2;
0x000123ec add r1, sp, 0x130 | r1 += var_130h;
0x000123f0 mov r0, r4 | r0 = r4;
0x000123f4 bl 0x11564 | dbus_message_iter_recurse ();
0x000123f8 add r0, sp, 0x130 | r0 += var_130h;
0x000123fc bl 0x1154c | r0 = dbus_message_iter_get_arg_type ();
0x00012400 cmp r0, 0x79 |
0x00012404 mov r8, r0 | r8 = r0;
| if (r0 != 0x79) {
0x00012408 bne 0x12528 | goto label_16;
| }
0x0001240c add r2, sp, 0xb0 | r2 += s;
0x00012410 add r1, sp, 0x48 | r1 += s2;
0x00012414 add r0, sp, 0x130 | r0 += var_130h;
0x00012418 bl 0x11444 | dbus_message_iter_get_fixed_array ();
0x0001241c ldr r8, [sp, 0xb0] | r8 = s;
0x00012420 ldr sl, [sp, 0x48] | sl = s2;
0x00012424 sub r2, r8, 1 | r2 = r8 - 1;
0x00012428 mov r3, 0 | r3 = 0;
| label_4:
0x0001242c cmp r3, r8 |
| if (r3 < r8) {
0x00012430 blt 0x12468 | goto label_17;
| }
0x00012434 cmp r8, 0 |
| if (r8 <= 0) {
0x00012438 ble 0x12450 | goto label_18;
| }
0x0001243c ldrb r3, [sl, r2] | r3 = *((sl + r2));
0x00012440 cmp r3, 0 |
| if (r3 != 0) {
0x00012444 moveq r1, sl | r1 = sl;
| }
| if (r3 == 0) {
0x00012448 ldreq r0, [pc, 0x598] | r0 = "array of bytes \"%s\" + \\0\n";
| goto label_19;
| }
| if (r3 == 0) {
| label_19:
0x0001244c beq 0x122d0 | goto label_3;
| }
| label_18:
0x00012450 add r0, r8, 1 | r0 = r8 + 1;
0x00012454 bl 0x11420 | r0 = dbus_malloc ();
0x00012458 subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 == r0) {
0x0001245c bne 0x1248c |
0x00012460 ldr r0, [pc, 0x584] | r0 = "array of bytes \"%s\" + \\0\n";
0x00012464 bl 0x12c3c | fcn_00012c3c ("array of bytes \"%s\" + \\0\n");
| label_17:
0x00012468 ldrb r1, [sl, r3] | r1 = *((sl + r3));
0x0001246c sub r0, r1, 0x20 | r0 = r1 - 0x20;
0x00012470 cmp r0, 0x5e |
| if (r0 >= 0x5e) {
0x00012474 bls 0x12484 |
0x00012478 cmp r3, r2 |
0x0001247c cmpge r1, 0 | __asm ("cmpge r1, 0");
| if (r3 != r2) {
0x00012480 bne 0x12984 | goto label_20;
| }
| }
0x00012484 add r3, r3, 1 | r3++;
0x00012488 b 0x1242c | goto label_4;
| }
0x0001248c ldr sb, [sp, 0xb0] | sb = s;
0x00012490 ldr r1, [sp, 0x48] | r1 = s2;
0x00012494 mov r2, sb | r2 = sb;
0x00012498 bl 0x115ac | memcpy (r0, r1, r2);
0x0001249c mov r3, 0 | r3 = 0;
0x000124a0 strb r3, [r8, sb] | *((r8 + sb)) = r3;
0x000124a4 mov r1, r8 | r1 = r8;
0x000124a8 ldr r0, [pc, 0x540] | r0 = "copying bytestring";
0x000124ac bl 0x1142c | printf ("copying bytestring", r1, r2, r3)
0x000124b0 mov r0, r8 | r0 = r8;
0x000124b4 bl 0x11558 | dbus_free ();
0x000124b8 b 0x12264 | goto label_2;
| do {
0x000124bc ldrb r1, [sl, sb] | r1 = *((sl + sb));
0x000124c0 mov r0, fp | r0 = fp;
0x000124c4 add sb, sb, 1 | sb++;
0x000124c8 bl 0x1142c | printf (r0, r1)
0x000124cc cmp sb, r8 |
| if (sb != r8) {
0x000124d0 beq 0x124f8 |
0x000124d4 ldr r1, [sp, 4] | r1 = var_4h;
0x000124d8 mov r0, sb | r0 = sb;
0x000124dc bl 0x12d68 | fcn_00012d68 (r0, r1);
0x000124e0 cmp r1, 0 |
| if (r1 != 0) {
0x000124e4 bne 0x1251c | goto label_21;
| }
0x000124e8 mov r0, 0xa | r0 = 0xa;
0x000124ec bl 0x11450 | putchar (r0);
0x000124f0 mov r0, r6 | r0 = r6;
0x000124f4 bl 0x12148 | fcn_00012148 (r0);
| }
| label_5:
0x000124f8 cmp sb, r8 |
0x000124fc bne 0x124bc |
| } while (sb != r8);
0x00012500 mov r0, 0xa | r0 = 0xa;
0x00012504 bl 0x11450 | putchar (r0);
| do {
| label_6:
0x00012508 mov r0, r7 | r0 = r7;
0x0001250c bl 0x12148 | fcn_00012148 (r0);
0x00012510 ldr r0, [pc, 0x4dc] | r0 = "array_of_bytes___s_";
| label_8:
0x00012514 bl 0x1157c | puts ("array_of_bytes___s_");
0x00012518 b 0x12264 | goto label_2;
| label_21:
0x0001251c mov r0, 0x20 | r0 = 0x20;
0x00012520 bl 0x11450 | putchar (r0);
0x00012524 b 0x124f8 | goto label_5;
| label_16:
0x00012528 ldr r0, [pc, 0x4c8] | r0 = *(0x129f4);
0x0001252c bl 0x1157c | puts (r0);
| label_7:
0x00012530 cmp r8, 0 |
0x00012534 beq 0x12508 |
| } while (r8 == 0);
0x00012538 mov r2, r6 | r2 = r6;
0x0001253c mov r1, r5 | r1 = r5;
0x00012540 add r0, sp, 0x130 | r0 += var_130h;
0x00012544 bl 0x12170 | fcn_00012170 (r0, r1);
0x00012548 add r0, sp, 0x130 | r0 += var_130h;
0x0001254c bl 0x1139c | dbus_message_iter_next ();
0x00012550 add r0, sp, 0x130 | r0 += var_130h;
0x00012554 bl 0x1154c | dbus_message_iter_get_arg_type ();
0x00012558 subs r8, r0, 0 | r8 -= var_130h;
| if (r8 == var_130h) {
0x0001255c beq 0x12508 | goto label_6;
| }
0x00012560 mov r0, 0x2c | r0 = 0x2c;
0x00012564 bl 0x11450 | putchar (r0);
0x00012568 b 0x12530 | goto label_7;
0x0001256c add r1, sp, 0x130 | r1 += var_130h;
0x00012570 mov r0, r4 | r0 = r4;
0x00012574 bl 0x11564 | dbus_message_iter_recurse ();
0x00012578 ldr r0, [pc, 0x47c] | r0 = "array__";
0x0001257c bl 0x1157c | puts ("array__");
0x00012580 mov r2, r6 | r2 = r6;
0x00012584 mov r1, r5 | r1 = r5;
0x00012588 add r0, sp, 0x130 | r0 += var_130h;
0x0001258c bl 0x12170 | fcn_00012170 (r0, r1);
0x00012590 add r0, sp, 0x130 | r0 += var_130h;
0x00012594 bl 0x1139c | dbus_message_iter_next ();
0x00012598 mov r2, r6 | r2 = r6;
0x0001259c mov r1, r5 | r1 = r5;
0x000125a0 add r0, sp, 0x130 | r0 += var_130h;
0x000125a4 bl 0x12170 | fcn_00012170 (r0, r1);
0x000125a8 mov r0, r7 | r0 = r7;
0x000125ac bl 0x12148 | fcn_00012148 (r0);
0x000125b0 ldr r0, [pc, 0x448] | r0 = "dict_entry_";
0x000125b4 b 0x12514 | goto label_8;
0x000125b8 mov r0, r4 | r0 = r4;
0x000125bc add r1, sp, 0x130 | r1 += var_130h;
0x000125c0 bl 0x11564 | dbus_message_iter_recurse ();
0x000125c4 ldr r0, [pc, 0x438] | r0 = *(0x12a00);
0x000125c8 bl 0x1157c | puts (r0);
| do {
| label_9:
0x000125cc add r0, sp, 0x130 | r0 += var_130h;
0x000125d0 bl 0x1154c | r0 = dbus_message_iter_get_arg_type ();
0x000125d4 cmp r0, 0 |
| if (r0 == 0) {
0x000125d8 bne 0x125ec |
0x000125dc mov r0, r7 | r0 = r7;
0x000125e0 bl 0x12148 | fcn_00012148 (r0);
0x000125e4 ldr r0, [pc, 0x41c] | r0 = "struct {";
0x000125e8 b 0x12514 | goto label_8;
| }
0x000125ec mov r2, r6 | r2 = r6;
0x000125f0 mov r1, r5 | r1 = r5;
0x000125f4 add r0, sp, 0x130 | r0 += var_130h;
0x000125f8 bl 0x12170 | fcn_00012170 (r0, r1);
0x000125fc add r0, sp, 0x130 | r0 += var_130h;
0x00012600 bl 0x1139c | dbus_message_iter_next ();
0x00012604 add r0, sp, 0x130 | r0 += var_130h;
0x00012608 bl 0x1154c | r0 = dbus_message_iter_get_arg_type ();
0x0001260c cmp r0, 0 |
0x00012610 beq 0x125cc |
| } while (r0 == 0);
0x00012614 mov r0, 0x2c | r0 = 0x2c;
0x00012618 bl 0x11450 | putchar (r0);
0x0001261c b 0x125cc | goto label_9;
0x00012620 add r1, sp, 0xc | r1 += fildes;
0x00012624 mov r0, r4 | r0 = r4;
0x00012628 bl 0x113a8 | dbus_message_iter_get_basic ();
0x0001262c ldr sb, [sp, 0xc] | sb = fildes;
0x00012630 mov r2, 0x68 | r2 = 0x68;
0x00012634 mov r1, 0 | r1 = 0;
0x00012638 add r0, sp, 0x48 | r0 += s2;
0x0001263c bl 0x1136c | memset (r0, r1, r2);
0x00012640 mov r3, 0x80 | r3 = 0x80;
0x00012644 ldr r0, [pc, 0x3c0] | r0 = *(0x12a08);
0x00012648 str r3, [sp, 0x10] | var_10h = r3;
0x0001264c str r3, [sp, 0x14] | var_14h = r3;
0x00012650 bl 0x1157c | puts (r0);
0x00012654 cmn sb, 1 |
| if (sb == 1) {
0x00012658 beq 0x12830 | goto label_10;
| }
0x0001265c add r1, sp, 0x48 | r1 += s2;
0x00012660 mov r0, sb | r0 = sb;
0x00012664 bl 0x11588 | r0 = fstat64 ();
0x00012668 cmn r0, 1 |
| if (r0 == 1) {
0x0001266c beq 0x12830 | goto label_10;
| }
0x00012670 add r8, r7, 2 | r8 = r7 + 2;
0x00012674 mov r0, r8 | r0 = r8;
0x00012678 bl 0x12148 | fcn_00012148 (r0);
0x0001267c ldr r1, [sp, 0xa8] | r1 = var_a8h;
0x00012680 ldr r0, [pc, 0x388] | r0 = "file descriptor";
0x00012684 bl 0x1142c | printf ("file descriptor", r1)
0x00012688 mov r0, r8 | r0 = r8;
0x0001268c bl 0x12148 | fcn_00012148 (r0);
0x00012690 ldr r0, [pc, 0x37c] | r0 = "inode: %d\n";
0x00012694 bl 0x1142c | printf ("inode: %d\n")
0x00012698 ldr r3, [sp, 0x58] | r3 = var_58h;
0x0001269c and r3, r3, 0xf000 | r3 &= 0xf000;
0x000126a0 cmp r3, 0x8000 |
| if (r3 == 0x8000) {
0x000126a4 bne 0x126b0 |
0x000126a8 ldr r0, [pc, 0x368] | r0 = "type: ";
0x000126ac bl 0x1157c | puts ("type: ");
| }
0x000126b0 ldr r3, [sp, 0x58] | r3 = var_58h;
0x000126b4 and r3, r3, 0xf000 | r3 &= 0xf000;
0x000126b8 cmp r3, 0x4000 |
| if (r3 == 0x4000) {
0x000126bc bne 0x126c8 |
0x000126c0 ldr r0, [pc, 0x354] | r0 = *(0x12a18);
0x000126c4 bl 0x1157c | puts (r0);
| }
0x000126c8 ldr r3, [sp, 0x58] | r3 = var_58h;
0x000126cc and r3, r3, 0xf000 | r3 &= 0xf000;
0x000126d0 cmp r3, 0x2000 |
| if (r3 == 0x2000) {
0x000126d4 bne 0x126e0 |
0x000126d8 ldr r0, [pc, 0x340] | r0 = "directory";
0x000126dc bl 0x1157c | puts ("directory");
| }
0x000126e0 ldr r3, [sp, 0x58] | r3 = var_58h;
0x000126e4 and r3, r3, 0xf000 | r3 &= 0xf000;
0x000126e8 cmp r3, 0x6000 |
| if (r3 == 0x6000) {
0x000126ec bne 0x126f8 |
0x000126f0 ldr r0, [pc, 0x32c] | r0 = "char";
0x000126f4 bl 0x1157c | puts ("char");
| }
0x000126f8 ldr r3, [sp, 0x58] | r3 = var_58h;
0x000126fc and r3, r3, 0xf000 | r3 &= 0xf000;
0x00012700 cmp r3, 0x1000 |
| if (r3 == 0x1000) {
0x00012704 bne 0x12710 |
0x00012708 ldr r0, [pc, 0x318] | r0 = "block";
0x0001270c bl 0x1157c | puts ("block");
| }
0x00012710 ldr r3, [sp, 0x58] | r3 = var_58h;
0x00012714 and r3, r3, 0xf000 | r3 &= 0xf000;
0x00012718 cmp r3, 0xa000 |
| if (r3 == 0xa000) {
0x0001271c bne 0x12728 |
0x00012720 ldr r0, [pc, 0x304] | r0 = "fifo";
0x00012724 bl 0x1157c | puts ("fifo");
| }
0x00012728 ldr r3, [sp, 0x58] | r3 = var_58h;
0x0001272c and r3, r3, 0xf000 | r3 &= 0xf000;
0x00012730 cmp r3, 0xc000 |
| if (r3 == 0xc000) {
0x00012734 bne 0x12740 |
0x00012738 ldr r0, [pc, 0x2f0] | r0 = "link";
0x0001273c bl 0x1157c | puts ("link");
| }
0x00012740 mov r2, 0x80 | r2 = 0x80;
0x00012744 mov r1, 0 | r1 = 0;
0x00012748 add r0, sp, 0xb0 | r0 += s;
0x0001274c bl 0x1136c | memset (r0, r1, r2);
0x00012750 mov r2, 0x80 | r2 = 0x80;
0x00012754 mov r1, 0 | r1 = 0;
0x00012758 add r0, sp, 0x130 | r0 += var_130h;
0x0001275c bl 0x1136c | memset (r0, r1, r2);
0x00012760 add r2, sp, 0x10 | r2 += var_10h;
0x00012764 add r1, sp, 0xb0 | r1 += s;
0x00012768 mov r0, sb | r0 = sb;
0x0001276c bl 0x113f0 | r0 = getsockname (r0, r1, r2);
0x00012770 cmp r0, 0 |
| if (r0 != 0) {
0x00012774 bne 0x12830 | goto label_10;
| }
0x00012778 add r2, sp, 0x14 | r2 += var_14h;
0x0001277c add r1, sp, 0x130 | r1 += var_130h;
0x00012780 mov r0, sb | r0 = sb;
0x00012784 bl 0x11504 | r0 = getpeername ();
0x00012788 mov sl, r0 | sl = r0;
0x0001278c mov r0, r8 | r0 = r8;
0x00012790 bl 0x12148 | fcn_00012148 (r0);
0x00012794 ldr r0, [pc, 0x298] | r0 = "socket";
0x00012798 bl 0x1142c | printf ("socket")
0x0001279c ldrh sb, [sp, 0xb0] | sb = s;
0x000127a0 cmp sb, 2 |
| if (sb == 2) {
0x000127a4 beq 0x12870 | goto label_22;
| }
| if (sb > 2) {
0x000127a8 bhi 0x127c0 | goto label_23;
| }
0x000127ac cmp sb, 1 |
| if (sb == 1) {
0x000127b0 beq 0x127dc | goto label_24;
| }
| do {
0x000127b4 mov r1, sb | r1 = sb;
0x000127b8 ldr r0, [pc, 0x278] | r0 = "address family: ";
0x000127bc b 0x12868 | goto label_25;
| label_23:
0x000127c0 cmp sb, 0xa |
| if (sb == 0xa) {
0x000127c4 beq 0x12910 | goto label_26;
| }
0x000127c8 cmp sb, 0x1f |
0x000127cc bne 0x127b4 |
| } while (sb != 0x1f);
0x000127d0 ldr r0, [pc, 0x264] | r0 = "unknown (%d)\n";
0x000127d4 bl 0x1157c | puts ("unknown (%d)\n");
0x000127d8 b 0x12830 | goto label_10;
| label_24:
0x000127dc ldr r0, [pc, 0x25c] | r0 = "bluetooth";
0x000127e0 bl 0x1157c | puts ("bluetooth");
0x000127e4 ldrb r3, [sp, 0xb2] | r3 = var_b2h;
0x000127e8 mov r0, r8 | r0 = r8;
0x000127ec cmp r3, 0 |
| if (r3 != 0) {
0x000127f0 bne 0x1283c | goto label_27;
| }
0x000127f4 bl 0x12148 | fcn_00012148 (r0);
0x000127f8 ldr r1, [sp, 0x10] | r1 = var_10h;
0x000127fc add r2, sp, 0xb3 | r2 += var_b3h;
0x00012800 sub r1, r1, 3 | r1 -= 3;
0x00012804 ldr r0, [pc, 0x238] | r0 = "unix";
0x00012808 bl 0x1142c | printf ("unix", r1, r2)
0x0001280c cmp sl, 0 |
| if (sl != 0) {
0x00012810 bne 0x12830 | goto label_10;
| }
0x00012814 mov r0, r8 | r0 = r8;
0x00012818 bl 0x12148 | fcn_00012148 (r0);
0x0001281c ldr r1, [sp, 0x10] | r1 = var_10h;
0x00012820 ldr r0, [pc, 0x220] | r0 = "name @%.*s\n";
0x00012824 add r2, sp, 0xb3 | r2 += var_b3h;
0x00012828 sub r1, r1, 3 | r1 -= 3;
| label_11:
0x0001282c bl 0x1142c | printf ("name @%.*s\n", r1, r2)
| do {
| label_10:
0x00012830 ldr r0, [sp, 0xc] | r0 = fildes;
0x00012834 bl 0x114a4 | close (r0);
0x00012838 b 0x12264 | goto label_2;
| label_27:
0x0001283c bl 0x12148 | fcn_00012148 (r0);
0x00012840 add r1, sp, 0xb2 | r1 += var_b2h;
0x00012844 ldr r0, [pc, 0x200] | r0 = "peer @%.*s\n";
0x00012848 bl 0x1142c | printf ("peer @%.*s\n", r1)
0x0001284c cmp sl, 0 |
0x00012850 bne 0x12830 |
| } while (sl != 0);
0x00012854 mov r0, r8 | r0 = r8;
0x00012858 bl 0x12148 | fcn_00012148 (r0);
0x0001285c ldr r0, [pc, 0x1ec] | r0 = "name %s\n";
0x00012860 add r1, sp, 0x130 | r1 += var_130h;
0x00012864 add r1, r1, 2 | r1 += 2;
| label_25:
0x00012868 bl 0x1142c | printf ("name %s\n", r1)
0x0001286c b 0x12830 | goto label_10;
| label_22:
0x00012870 ldr r0, [pc, 0x1dc] | r0 = "peer %s\n";
0x00012874 bl 0x1157c | puts ("peer %s\n");
0x00012878 mov r3, 0x2e | r3 = 0x2e;
0x0001287c add r2, sp, 0x18 | r2 += var_18h;
0x00012880 add r1, sp, 0xb4 | r1 += var_b4h;
0x00012884 mov r0, sb | r0 = sb;
0x00012888 bl 0x115a0 | r0 = inet_ntop ();
0x0001288c cmp r0, 0 |
| if (r0 != 0) {
0x00012890 beq 0x128bc |
0x00012894 mov r0, r8 | r0 = r8;
0x00012898 bl 0x12148 | fcn_00012148 (r0);
0x0001289c ldrh r3, [sp, 0xb2] | r3 = var_b2h;
0x000128a0 add r1, sp, 0x18 | r1 += var_18h;
0x000128a4 lsr r2, r3, 8 | r2 = r3 >> 8;
0x000128a8 orr r2, r2, r3, lsl 8 | r2 |= (r3 << 8);
0x000128ac lsl r2, r2, 0x10 | r2 <<= 0x10;
0x000128b0 lsr r2, r2, 0x10 | r2 >>= 0x10;
0x000128b4 ldr r0, [pc, 0x19c] | r0 = "inet";
0x000128b8 bl 0x1142c | printf ("inet", r1, r2, r3)
| }
0x000128bc cmp sl, 0 |
| if (sl != 0) {
0x000128c0 bne 0x12830 | goto label_10;
| }
0x000128c4 mov r3, 0x2e | r3 = 0x2e;
0x000128c8 add r2, sp, 0x18 | r2 += var_18h;
0x000128cc add r1, sp, 0x134 | r1 += var_134h;
0x000128d0 mov r0, 2 | r0 = 2;
| label_12:
0x000128d4 bl 0x115a0 | r0 = inet_ntop ();
0x000128d8 cmp r0, 0 |
| if (r0 == 0) {
0x000128dc beq 0x12830 | goto label_10;
| }
0x000128e0 mov r0, r8 | r0 = r8;
0x000128e4 bl 0x12148 | fcn_00012148 (r0);
0x000128e8 add r3, sp, 0x130 | r3 += var_130h;
0x000128ec add r3, r3, 2 | r3 += 2;
0x000128f0 ldrh r3, [r3] | r3 = *(r3);
0x000128f4 add r1, sp, 0x18 | r1 += var_18h;
0x000128f8 lsr r2, r3, 8 | r2 = r3 >> 8;
0x000128fc orr r2, r2, r3, lsl 8 | r2 |= (r3 << 8);
0x00012900 lsl r2, r2, 0x10 | r2 <<= 0x10;
0x00012904 lsr r2, r2, 0x10 | r2 >>= 0x10;
0x00012908 ldr r0, [pc, 0x14c] | r0 = "name %s port %u\n";
0x0001290c b 0x1282c | goto label_11;
| label_26:
0x00012910 ldr r0, [pc, 0x148] | r0 = "peer %s port %u\n";
0x00012914 bl 0x1157c | puts ("peer %s port %u\n");
0x00012918 mov r3, 0x2e | r3 = 0x2e;
0x0001291c add r2, sp, 0x18 | r2 += var_18h;
0x00012920 add r1, sp, 0xb8 | r1 += var_b8h;
0x00012924 mov r0, sb | r0 = sb;
0x00012928 bl 0x115a0 | r0 = inet_ntop ();
0x0001292c cmp r0, 0 |
| if (r0 != 0) {
0x00012930 beq 0x1295c |
0x00012934 mov r0, r8 | r0 = r8;
0x00012938 bl 0x12148 | fcn_00012148 (r0);
0x0001293c ldrh r3, [sp, 0xb2] | r3 = var_b2h;
0x00012940 add r1, sp, 0x18 | r1 += var_18h;
0x00012944 lsr r2, r3, 8 | r2 = r3 >> 8;
0x00012948 orr r2, r2, r3, lsl 8 | r2 |= (r3 << 8);
0x0001294c lsl r2, r2, 0x10 | r2 <<= 0x10;
0x00012950 lsr r2, r2, 0x10 | r2 >>= 0x10;
0x00012954 ldr r0, [pc, 0xfc] | r0 = "inet";
0x00012958 bl 0x1142c | printf ("inet", r1, r2, r3)
| }
0x0001295c cmp sl, 0 |
| if (sl != 0) {
0x00012960 bne 0x12830 | goto label_10;
| }
0x00012964 mov r3, 0x2e | r3 = 0x2e;
0x00012968 add r2, sp, 0x18 | r2 += var_18h;
0x0001296c add r1, sp, 0x138 | r1 += var_138h;
0x00012970 mov r0, 0xa | r0 = 0xa;
0x00012974 b 0x128d4 | goto label_12;
| label_14:
0x00012978 mov r1, r8 | r1 = r8;
0x0001297c ldr r0, [pc, 0xe0] | r0 = "inet6";
0x00012980 b 0x122d0 | goto label_3;
| label_20:
0x00012984 ldr r0, [pc, 0xdc] | r0 = "_dbus_monitor_too_dumb_to_decipher_arg_type__c_";
0x00012988 bl 0x1157c | puts ("_dbus_monitor_too_dumb_to_decipher_arg_type__c_");
0x0001298c mov r0, r6 | r0 = r6;
0x00012990 bl 0x12148 | fcn_00012148 (r0);
0x00012994 mov sb, 0 | sb = 0;
0x00012998 ldr fp, [pc, 0xcc] | fp = "%02x";
0x0001299c b 0x124f8 | goto label_5;
| }
; 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/bin/dbus-monitor @ 0x12a70 */
| #include <stdint.h>
|
; (fcn) fcn.00012a70 () | void fcn_00012a70 (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_44h;
| r0 = arg1;
| r1 = arg2;
0x00012a70 push {r4, r5, r6, r7, r8, sb, lr} |
0x00012a74 sub sp, sp, 0x44 |
0x00012a78 mov r7, r1 | r7 = r1;
0x00012a7c mov r4, r0 | r4 = r0;
0x00012a80 mov r8, r2 | r8 = r2;
0x00012a84 mov sb, r3 | sb = r3;
0x00012a88 bl 0x114d4 | r0 = dbus_message_get_type ();
0x00012a8c mov r5, r0 | r5 = r0;
0x00012a90 mov r0, r4 | r0 = r4;
0x00012a94 bl 0x11594 | r0 = dbus_message_get_sender ();
0x00012a98 mov r6, r0 | r6 = r0;
0x00012a9c mov r0, r4 | r0 = r4;
0x00012aa0 bl 0x11324 | dbus_message_get_destination ();
0x00012aa4 cmp r7, 0 |
| if (r7 != 0) {
0x00012aa8 bne 0x12b8c | goto label_1;
| }
0x00012aac orrs r3, r8, sb | r3 = r8 | sb;
0x00012ab0 sub r5, r5, 1 | r5--;
| if (r3 == r8) {
0x00012ab4 beq 0x12b14 | goto label_2;
| }
0x00012ab8 cmp r5, 3 |
| if (r5 > 3) {
0x00012abc ldrls r3, [pc, 0x150] | r3 = *((pc + 0x150));
| }
| if (r5 <= 3) {
0x00012ac0 ldrhi r1, [pc, 0x150] | r1 = "(unknown message type)";
| }
| if (r5 > 3) {
0x00012ac4 ldrls r1, [r3, r5, lsl 2] | offset_0 = r5 << 2;
| r1 = *((r3 + offset_0));
| }
0x00012ac8 ldr r3, [pc, 0x14c] | r3 = "(unknown message type)";
0x00012acc cmp r6, 0 |
| if (r6 != 0) {
0x00012ad0 moveq r6, r3 | r6 = r3;
| }
0x00012ad4 ldr r3, [pc, 0x144] | r3 = "_null_sender_";
0x00012ad8 cmp r0, 0 |
| if (r0 != 0) {
0x00012adc moveq r0, r3 | r0 = r3;
| }
0x00012ae0 str r0, [sp, 4] | var_4h = r0;
0x00012ae4 str r6, [sp] | *(sp) = r6;
0x00012ae8 mov r3, sb | r3 = sb;
0x00012aec mov r2, r8 | r2 = r8;
0x00012af0 ldr r0, [pc, 0x12c] | r0 = "_null_destination_";
0x00012af4 bl 0x1142c | printf (r0, "(unknown message type)", r2, r3, r4, r5, r6)
| do {
0x00012af8 cmp r5, 3 |
| if (r5 > 3) {
| /* switch table (4 cases) at 0x12b04 */
0x00012afc ldrls pc, [pc, r5, lsl 2] | offset_1 = r5 << 2;
| pc = *((pc + offset_1));
| }
0x00012b00 b 0x12c08 | goto label_3;
| label_2:
0x00012b14 cmp r5, 3 |
| if (r5 > 3) {
0x00012b18 ldrls r3, [pc, 0xf4] | r3 = *((pc + 0xf4));
| }
| if (r5 <= 3) {
0x00012b1c ldrhi r1, [pc, 0xf4] | r1 = "(unknown message type)";
| }
| if (r5 > 3) {
0x00012b20 ldrls r1, [r3, r5, lsl 2] | offset_2 = r5 << 2;
| r1 = *((r3 + offset_2));
| }
0x00012b24 cmp r0, 0 |
0x00012b28 ldr r3, [pc, 0xf0] | r3 = "_null_sender_";
| if (r0 == 0) {
0x00012b2c movne r3, r0 | r3 = r0;
| }
0x00012b30 cmp r6, 0 |
0x00012b34 ldr r2, [pc, 0xe0] | r2 = "(unknown message type)";
0x00012b38 ldr r0, [pc, 0xe8] | r0 = "%s time=%ld.%06ld sender=%s -> destination=%s";
| if (r6 == 0) {
0x00012b3c movne r2, r6 | r2 = r6;
| }
0x00012b40 bl 0x1142c | printf (r0, "(unknown message type)", "(unknown message type)", r3, r4, r5, r6)
0x00012b44 b 0x12af8 |
| } while (1);
0x00012b48 mov r0, r4 | r0 = r4;
0x00012b4c bl 0x11354 | r0 = dbus_message_get_serial ();
0x00012b50 mov r5, r0 | r5 = r0;
0x00012b54 mov r0, r4 | r0 = r4;
0x00012b58 bl 0x114e0 | r0 = dbus_message_get_path ();
0x00012b5c mov r6, r0 | r6 = r0;
0x00012b60 mov r0, r4 | r0 = r4;
0x00012b64 bl 0x11528 | r0 = dbus_message_get_interface ();
0x00012b68 mov r8, r0 | r8 = r0;
0x00012b6c mov r0, r4 | r0 = r4;
0x00012b70 bl 0x11534 | dbus_message_get_member ();
0x00012b74 mov r3, r8 | r3 = r8;
0x00012b78 mov r2, r6 | r2 = r6;
0x00012b7c mov r1, r5 | r1 = r5;
0x00012b80 str r0, [sp] | *(sp) = r0;
0x00012b84 ldr r0, [pc, 0xa0] | r0 = "%s sender=%s -> destination=%s";
0x00012b88 bl 0x1142c | printf (r0, r1, r2, r3)
| do {
| label_1:
0x00012b8c add r1, sp, 8 | r1 += var_8h;
0x00012b90 mov r0, r4 | r0 = r4;
0x00012b94 bl 0x11414 | dbus_message_iter_init ();
0x00012b98 mov r2, 1 | r2 = 1;
0x00012b9c mov r1, r7 | r1 = r7;
0x00012ba0 add r0, sp, 8 | r0 += var_8h;
0x00012ba4 bl 0x12170 | fcn_00012170 (r0, r1);
0x00012ba8 ldr r3, [pc, 0x80] | r3 = "serial_u_path_s__interface_s__member_s";
0x00012bac ldr r0, [r3] | r0 = "serial_u_path_s__interface_s__member_s";
0x00012bb0 bl 0x11384 | fflush ("serial_u_path_s__interface_s__member_s");
0x00012bb4 add sp, sp, 0x44 |
0x00012bb8 pop {r4, r5, r6, r7, r8, sb, pc} |
0x00012bbc mov r0, r4 | r0 = r4;
0x00012bc0 bl 0x11354 | r0 = dbus_message_get_serial ();
0x00012bc4 mov r5, r0 | r5 = r0;
0x00012bc8 mov r0, r4 | r0 = r4;
0x00012bcc bl 0x11510 | dbus_message_get_reply_serial ();
0x00012bd0 mov r1, r5 | r1 = r5;
0x00012bd4 mov r2, r0 | r2 = r0;
0x00012bd8 ldr r0, [pc, 0x54] | r0 = stdout;
| label_0:
0x00012bdc bl 0x1142c | printf (r0, r1, r2)
0x00012be0 b 0x12b8c |
| } while (1);
0x00012be4 mov r0, r4 | r0 = r4;
0x00012be8 bl 0x11570 | r0 = dbus_message_get_error_name ();
0x00012bec mov r5, r0 | r5 = r0;
0x00012bf0 mov r0, r4 | r0 = r4;
0x00012bf4 bl 0x11510 | dbus_message_get_reply_serial ();
0x00012bf8 mov r1, r5 | r1 = r5;
0x00012bfc mov r2, r0 | r2 = r0;
0x00012c00 ldr r0, [pc, 0x30] | r0 = " serial=%u reply_serial=%u\n";
0x00012c04 b 0x12bdc | goto label_0;
| label_3:
0x00012c08 mov r0, 0xa | r0 = 0xa;
0x00012c0c bl 0x11450 | putchar (r0);
0x00012c10 b 0x12b8c | goto label_1;
| }
[*] Function printf used 31 times dbus-monitor