[*] Binary protection state of dbus-send
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function printf tear down of dbus-send
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dbus-send @ 0x22cc */
| #include <stdint.h>
|
; (fcn) fcn.000022cc () | void fcn_000022cc (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_1ch;
| void * s2;
| int16_t var_24h;
| int16_t var_28h;
| void * s;
| int16_t var_96h;
| int16_t var_97h;
| int16_t var_98h;
| int16_t var_9ch;
| int16_t var_114h;
| int16_t var_116h;
| int16_t var_118h;
| int16_t var_11ch;
| int16_t var_194h;
| int16_t var_1c4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x000022cc push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000022d0 mov sl, r2 | sl = r2;
0x000022d2 ldr.w r2, [pc, 0x9a8] | r2 = "int16";
0x000022d4 cmp r1, 0xa8 |
0x000022d6 sub sp, 0x1cc |
0x000022d8 mov fp, r0 |
0x000022da mov sb, r1 | sb = r1;
0x000022dc ldr.w r3, [pc, 0x9a0] |
0x000022e0 add r2, pc | r2 += pc;
0x000022e2 ldr.w r4, [pc, 0x9a0] |
0x000022e6 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000022e8 add r4, pc | r4 = 0x4f72;
0x000022ea ldr r3, [r3] | r3 = *(0x2c80);
0x000022ec str r3, [sp, 0x1c4] | var_1c4h = r3;
0x000022ee mov.w r3, 0 | r3 = 0;
| label_0:
0x000022f2 mov r0, fp | r0 = fp;
0x000022f4 blx 0x1718 | r0 = dbus_message_iter_get_arg_type ();
0x000022f8 mov r7, r0 | r7 = r0;
0x000022fa cmp r0, 0 |
| if (r0 == 0) {
0x000022fc beq 0x2370 | goto label_15;
| }
0x000022fe cmp.w sl, 0 |
0x00002302 add.w r5, sl, -1 | r5 = sl + -1;
0x00002306 it gt |
| if (sl <= 0) {
0x00002308 movgt r6, r5 | r6 = r5;
| }
| if (sl <= 0) {
0x0000230a ble 0x231a | goto label_16;
| }
| do {
0x0000230c mov r1, r4 | r1 = r4;
0x0000230e movs r0, 1 | r0 = 1;
0x00002310 subs r6, 1 | r6--;
0x00002312 blx 0x14f0 | printf_chk ()
0x00002316 adds r2, r6, 1 | r2 = r6 + 1;
0x00002318 bne 0x230c |
| } while (r2 != r6);
| label_16:
0x0000231a sub.w r3, r7, 0x61 | r3 = r7 - 0x61;
0x0000231e cmp r3, 0x18 |
| if (r3 <= 0x18) {
0x00002320 bhi 0x2358 |
| /* switch table (26 cases) at 0x2326 */
0x00002322 tbh [pc, r3, lsl 1] | __asm ("tbh [pc, r3, lsl 1]");
| }
0x00002358 ldr.w r1, [pc, 0x92c] | r1 = s;
0x0000235c mov r2, r7 | r2 = r7;
0x0000235e movs r0, 1 | r0 = 1;
0x00002360 add r1, pc | r1 += pc;
0x00002362 blx 0x14f0 | printf_chk ()
| label_1:
0x00002366 mov r0, fp | r0 = fp;
0x00002368 blx 0x15ec | r0 = dbus_message_iter_next ();
0x0000236c cmp r0, 0 |
| if (r0 != 0) {
0x0000236e bne 0x22f2 | goto label_0;
| }
| label_15:
0x00002370 ldr.w r2, [pc, 0x918] |
0x00002374 ldr.w r3, [pc, 0x908] | r3 = *(0x2c80);
0x00002378 add r2, pc | r2 = 0x5008;
0x0000237a ldr r3, [r2, r3] | r3 = *(0x5008);
0x0000237c ldr r2, [r3] | r2 = *(0x5008);
0x0000237e ldr r3, [sp, 0x1c4] | r3 = var_1c4h;
0x00002380 eors r2, r3 | r2 ^= r3;
0x00002382 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00002386 bne.w 0x2c50 | goto label_17;
| }
0x0000238a add sp, 0x1cc |
0x0000238c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00002390 add r5, sp, 0x28 | r5 += var_28h;
0x00002392 mov r0, fp | r0 = fp;
0x00002394 mov r1, r5 | r1 = r5;
0x00002396 blx 0x15c8 | dbus_message_iter_get_basic ();
0x0000239a ldr.w r1, [pc, 0x8f4] |
0x0000239e movs r0, 1 | r0 = 1;
0x000023a0 ldrb.w r2, [sp, 0x28] | r2 = var_28h;
0x000023a4 add r1, pc | r1 = 0x503a;
0x000023a6 blx 0x14f0 | printf_chk ()
0x000023aa b 0x2366 | goto label_1;
0x000023ac add r1, sp, 0x28 | r1 += var_28h;
0x000023ae mov r0, fp | r0 = fp;
0x000023b0 blx 0x15c8 | dbus_message_iter_get_basic ();
0x000023b4 ldr.w r1, [pc, 0x8dc] | r1 = *(0x00002c94);
0x000023b8 movs r0, 1 | r0 = 1;
0x000023ba ldrd r2, r3, [sp, 0x28] | __asm ("ldrd r2, r3, [var_28h]");
0x000023be add r1, pc | r1 += pc;
0x000023c0 blx 0x14f0 | printf_chk ()
0x000023c4 b 0x2366 | goto label_1;
0x000023c6 add r5, sp, 0x28 | r5 += var_28h;
0x000023c8 mov r0, fp | r0 = fp;
0x000023ca mov r1, r5 | r1 = r5;
0x000023cc blx 0x14b4 | dbus_message_iter_recurse ();
0x000023d0 ldr.w r1, [pc, 0x8c4] | r1 = *(0x00002c98);
0x000023d4 movs r0, 1 | r0 = 1;
0x000023d6 add r1, pc | r1 += pc;
0x000023d8 blx 0x14f0 | printf_chk ()
0x000023dc mov r0, r5 | r0 = r5;
0x000023de add.w r2, sl, 1 | r2 = sl + 1;
0x000023e2 mov r1, sb | r1 = sb;
0x000023e4 bl 0x22cc | fcn_000022cc (r0, r1, r2);
0x000023e8 b 0x2366 | goto label_1;
0x000023ea add r5, sp, 0x28 | r5 += var_28h;
0x000023ec mov r0, fp | r0 = fp;
0x000023ee mov r1, r5 | r1 = r5;
0x000023f0 blx 0x15c8 | dbus_message_iter_get_basic ();
0x000023f4 ldr.w r1, [pc, 0x8a4] |
0x000023f8 movs r0, 1 | r0 = 1;
0x000023fa ldr r2, [sp, 0x28] | r2 = var_28h;
0x000023fc add r1, pc | r1 = 0x509c;
0x000023fe blx 0x14f0 | printf_chk ()
0x00002400 ldrd lr, r7, [r8], -0x2c0 | __asm ("ldrd lr, r7, [r8], -0x2c0");
0x00002404 add r1, sp, 0x28 | r1 += var_28h;
0x00002406 mov r0, fp | r0 = fp;
0x00002408 blx 0x15c8 | dbus_message_iter_get_basic ();
0x0000240c ldr.w r1, [pc, 0x890] | r1 = *(0x00002ca0);
0x00002410 movs r0, 1 | r0 = 1;
0x00002412 ldrd r2, r3, [sp, 0x28] | __asm ("ldrd r2, r3, [var_28h]");
0x00002414 movs r3, 0xa | r3 = 0xa;
0x00002416 add r1, pc | r1 += pc;
0x00002418 blx 0x14f0 | printf_chk ()
0x0000241c b 0x2366 | goto label_1;
0x0000241e add r5, sp, 0x28 | r5 += var_28h;
0x00002420 mov r0, fp | r0 = fp;
0x00002422 mov r1, r5 | r1 = r5;
0x00002424 blx 0x15c8 | dbus_message_iter_get_basic ();
0x00002428 cmp.w sb, 0 |
| if (sb == 0) {
0x0000242c beq.w 0x2816 | goto label_18;
| }
0x00002430 ldr.w r1, [pc, 0x870] | r1 = s;
0x00002434 movs r0, 1 | r0 = 1;
0x00002436 ldr r2, [r5] | r2 = *(r5);
0x00002438 add r1, pc | r1 += pc;
0x0000243a blx 0x14f0 | printf_chk ()
0x0000243e b 0x2366 | goto label_1;
0x00002440 add r6, sp, 0x28 | r6 += var_28h;
0x00002442 mov r0, fp | r0 = fp;
0x00002444 mov r1, r6 | r1 = r6;
0x00002446 add.w r7, sl, 1 | r7 = sl + 1;
0x0000244a blx 0x14b4 | dbus_message_iter_recurse ();
0x0000244e ldr.w r0, [pc, 0x858] | r0 = *(0x00002ca8);
0x00002452 add r0, pc | r0 += pc;
0x00002454 blx 0x1730 | puts (r0);
| do {
0x00002458 mov r0, r6 | r0 = r6;
0x0000245a blx 0x1718 | r0 = dbus_message_iter_get_arg_type ();
| if (r0 == 0) {
0x0000245e cbz r0, 0x248a | goto label_19;
| }
| label_2:
0x00002460 mov r2, r7 | r2 = r7;
0x00002462 mov r1, sb | r1 = sb;
0x00002464 mov r0, r6 | r0 = r6;
0x00002466 bl 0x22cc | fcn_000022cc (r0, r1, r2);
0x0000246a mov r0, r6 | r0 = r6;
0x0000246c blx 0x15ec | dbus_message_iter_next ();
0x00002470 mov r0, r6 | r0 = r6;
0x00002472 blx 0x1718 | r0 = dbus_message_iter_get_arg_type ();
0x00002476 cmp r0, 0 |
0x00002478 beq 0x2458 |
| } while (r0 == 0);
0x0000247a movs r0, 0x2c | r0 = 0x2c;
0x0000247c blx 0x1514 | putchar (r0);
0x00002480 mov r0, r6 | r0 = r6;
0x00002482 blx 0x1718 | r0 = dbus_message_iter_get_arg_type ();
0x00002486 cmp r0, 0 |
| if (r0 != 0) {
0x00002488 bne 0x2460 | goto label_2;
| }
| label_19:
0x0000248a cmp.w sl, 0 |
| if (sl <= 0) {
0x0000248e ble 0x24a4 | goto label_20;
| }
0x00002490 ldr.w r6, [pc, 0x818] |
0x00002494 add r6, pc | r6 = 0x5144;
| do {
0x00002496 mov r1, r6 | r1 = r6;
0x00002498 movs r0, 1 | r0 = 1;
0x0000249a subs r5, 1 | r5--;
0x0000249c blx 0x14f0 | printf_chk ()
0x000024a0 adds r7, r5, 1 | r7 = r5 + 1;
0x000024a2 bne 0x2496 |
| } while (r7 != r5);
| label_20:
0x000024a4 ldr.w r0, [pc, 0x808] |
0x000024a8 add r0, pc | r0 = 0x515c;
0x000024aa blx 0x1730 | puts (r0);
0x000024ae b 0x2366 | goto label_1;
0x000024b0 add r5, sp, 0x28 | r5 += var_28h;
0x000024b2 mov r0, fp | r0 = fp;
0x000024b4 mov r1, r5 | r1 = r5;
0x000024b6 blx 0x15c8 | dbus_message_iter_get_basic ();
0x000024ba ldr.w r1, [pc, 0x7f8] |
0x000024be movs r0, 1 | r0 = 1;
0x000024c0 ldrh.w r2, [sp, 0x28] | r2 = var_28h;
0x000024c4 add r1, pc | r1 = 0x517e;
0x000024c6 blx 0x14f0 | printf_chk ()
0x000024ca b 0x2366 | goto label_1;
0x000024cc add r5, sp, 0x28 | r5 += var_28h;
0x000024ce mov r0, fp | r0 = fp;
0x000024d0 mov r1, r5 | r1 = r5;
0x000024d2 blx 0x15c8 | dbus_message_iter_get_basic ();
0x000024d6 cmp.w sb, 0 |
| if (sb == 0) {
0x000024da beq.w 0x2862 | goto label_21;
| }
0x000024de ldr.w r1, [pc, 0x7d8] | r1 = *(0x00002cb8);
0x000024e2 movs r0, 1 | r0 = 1;
0x000024e4 ldr r2, [r5] | r2 = *(r5);
0x000024e6 add r1, pc | r1 += pc;
0x000024e8 blx 0x14f0 | printf_chk ()
0x000024ec b 0x2366 | goto label_1;
0x000024ee add r5, sp, 0x28 | r5 += var_28h;
0x000024f0 mov r0, fp | r0 = fp;
0x000024f2 mov r1, r5 | r1 = r5;
0x000024f4 blx 0x15c8 | dbus_message_iter_get_basic ();
0x000024f8 ldr.w r1, [pc, 0x7c0] | r1 = *(0x00002cbc);
0x000024fc movs r0, 1 | r0 = 1;
0x000024fe ldrsh.w r2, [sp, 0x28] | r2 = var_28h;
0x00002502 add r1, pc | r1 += pc;
0x00002504 blx 0x14f0 | printf_chk ()
0x00002508 b 0x2366 | goto label_1;
0x0000250a add r5, sp, 0x28 | r5 += var_28h;
0x0000250c mov r0, fp | r0 = fp;
0x0000250e mov r1, r5 | r1 = r5;
0x00002510 blx 0x15c8 | dbus_message_iter_get_basic ();
0x00002514 ldr.w r1, [pc, 0x7a8] |
0x00002518 movs r0, 1 | r0 = 1;
0x0000251a ldr r2, [sp, 0x28] | r2 = var_28h;
0x0000251c add r1, pc | r1 = 0x51e0;
0x0000251e blx 0x14f0 | printf_chk ()
0x00002522 b 0x2366 | goto label_1;
0x00002524 add r3, sp, 0x1c | r3 += var_1ch;
0x00002526 mov r0, fp | r0 = fp;
0x00002528 mov r5, r3 | r5 = r3;
0x0000252a mov r1, r3 | r1 = r3;
0x0000252c str r3, [sp, 0xc] | var_ch = r3;
0x0000252e add r6, sp, 0x28 | r6 += var_28h;
0x00002530 blx 0x15c8 | dbus_message_iter_get_basic ();
0x00002534 ldr r5, [r5] | r5 = *(r5);
0x00002536 movs r2, 0x68 | r2 = 0x68;
0x00002538 movs r1, 0 | r1 = 0;
0x0000253a mov r0, r6 | r0 = r6;
0x0000253c add r7, sp, 0x20 | r7 += s2;
0x0000253e str r5, [sp, 0x14] | var_14h = r5;
0x00002540 blx 0x1538 | memset (r0, r1, r2);
0x00002544 ldr.w r0, [pc, 0x77c] |
0x00002548 movs r3, 0x80 | r3 = 0x80;
0x0000254a add r2, sp, 0x24 | r2 += var_24h;
0x0000254c str r3, [r7] | *(r7) = r3;
0x0000254e str r2, [sp, 8] | var_8h = r2;
0x00002550 add r0, pc | r0 = 0x5218;
0x00002552 str r3, [sp, 0x24] | var_24h = r3;
0x00002554 blx 0x1730 | puts (r0);
0x00002558 adds r0, r5, 1 | r0 = r5 + 1;
| if (r0 == r5) {
0x0000255a beq 0x262e | goto label_6;
| }
0x0000255c mov r1, r6 | r1 = r6;
0x0000255e mov r0, r5 | r0 = r5;
0x00002560 blx 0x164c | fstat64 ();
0x00002564 adds r0, 1 | r0++;
| if (r0 == 1) {
0x00002566 beq 0x262e | goto label_6;
| }
0x00002568 add.w r3, sl, 2 | r3 = sl + 2;
0x0000256c add.w r2, sl, 1 | r2 = sl + 1;
0x00002570 cmp r3, 0 |
0x00002572 str r3, [sp, 0x10] | var_10h = r3;
0x00002574 str r2, [sp, 4] | var_4h = r2;
| if (r3 <= 0) {
0x00002576 ble.w 0x2bbe | goto label_22;
| }
0x0000257a ldr.w r5, [pc, 0x74c] |
0x0000257e mov r8, r2 | r8 = r2;
0x00002580 add r5, pc | r5 = 0x524e;
| do {
0x00002582 add.w r8, r8, -1 | r8 += -1;
0x00002586 mov r1, r5 | r1 = r5;
0x00002588 movs r0, 1 | r0 = 1;
0x0000258a blx 0x14f0 | printf_chk ()
0x0000258e cmp.w r8, -1 |
0x00002592 bne 0x2582 |
| } while (r8 != -1);
0x00002594 ldr.w r1, [pc, 0x734] |
0x00002598 movs r0, 1 | r0 = 1;
0x0000259a ldr r2, [r6, 0x60] | r2 = *((r6 + 0x60));
0x0000259c ldr.w r8, [sp, 4] | r8 = var_4h;
0x000025a0 add r1, pc | r1 = 0x5270;
0x000025a2 blx 0x14f0 | printf_chk ()
| do {
0x000025a6 add.w r8, r8, -1 | r8 += -1;
0x000025aa mov r1, r5 | r1 = r5;
0x000025ac movs r0, 1 | r0 = 1;
0x000025ae blx 0x14f0 | printf_chk ()
0x000025b2 cmp.w r8, -1 |
0x000025b6 bne 0x25a6 |
| } while (r8 != -1);
| label_14:
0x000025b8 ldr.w r1, [pc, 0x714] | r1 = *(0x00002cd0);
0x000025bc movs r0, 1 | r0 = 1;
0x000025be add r1, pc | r1 += pc;
0x000025c0 blx 0x14f0 | printf_chk ()
0x000025c4 ldr r3, [r6, 0x10] | r3 = *((r6 + 0x10));
0x000025c6 and r3, r3, 0xf000 | r3 &= 0xf000;
0x000025ca cmp.w r3, 0x8000 |
| if (r3 == 0x8000) {
0x000025ce beq.w 0x2bae | goto label_23;
| }
| label_13:
0x000025d2 cmp.w r3, 0x4000 |
| if (r3 == 0x4000) {
0x000025d6 beq.w 0x2b9e | goto label_24;
| }
| label_12:
0x000025da cmp.w r3, 0x2000 |
| if (r3 == 0x2000) {
0x000025de beq.w 0x2b8e | goto label_25;
| }
| label_11:
0x000025e2 cmp.w r3, 0x6000 |
| if (r3 == loc.__data_start) {
0x000025e6 beq.w 0x2b7e | goto label_26;
| }
| label_10:
0x000025ea cmp.w r3, 0x1000 |
| if (r3 == 0x1000) {
0x000025ee beq.w 0x2b6e | goto label_27;
| }
| label_9:
0x000025f2 cmp.w r3, 0xa000 |
| if (r3 == 0xa000) {
0x000025f6 beq.w 0x2b5e | goto label_28;
| }
| label_8:
0x000025fa cmp.w r3, 0xc000 |
| if (r3 == 0xc000) {
0x000025fe beq.w 0x2b54 | goto label_29;
| }
| label_7:
0x00002602 add r6, sp, 0x94 | r6 += s;
0x00002604 movs r2, 0x80 | r2 = 0x80;
0x00002606 movs r1, 0 | r1 = 0;
0x00002608 mov r0, r6 | r0 = r6;
0x0000260a add r5, sp, 0x114 | r5 += var_114h;
0x0000260c blx 0x1538 | memset (r0, r1, r2);
0x00002610 movs r2, 0x80 | r2 = 0x80;
0x00002612 movs r1, 0 | r1 = 0;
0x00002614 mov r0, r5 | r0 = r5;
0x00002616 blx 0x1538 | memset (r0, r1, r2);
0x0000261a ldr.w r8, [sp, 0x14] | r8 = var_14h;
0x0000261e mov r2, r7 | r2 = r7;
0x00002620 mov r1, r6 | r1 = r6;
0x00002622 mov r0, r8 | r0 = r8;
0x00002624 blx 0x1484 | r0 = getsockname (r0, r1, r2);
0x00002628 cmp r0, 0 |
| if (r0 == 0) {
0x0000262a beq.w 0x2956 | goto label_30;
| }
| label_6:
0x0000262e ldr r3, [sp, 0xc] | r3 = var_ch;
0x00002630 ldr r0, [r3] | r0 = *(r3);
0x00002632 blx 0x16a0 | close (r0);
0x00002636 b 0x2366 | goto label_1;
0x00002638 add r5, sp, 0x28 | r5 += var_28h;
0x0000263a mov r0, fp | r0 = fp;
0x0000263c mov r1, r5 | r1 = r5;
0x0000263e blx 0x15c8 | dbus_message_iter_get_basic ();
0x00002642 cmp.w sb, 0 |
| if (sb == 0) {
0x00002646 beq.w 0x283c | goto label_31;
| }
0x0000264a ldr.w r1, [pc, 0x688] | r1 = *(0x00002cd4);
0x0000264e movs r0, 1 | r0 = 1;
0x00002650 ldr r2, [r5] | r2 = *(r5);
0x00002652 add r1, pc | r1 += pc;
0x00002654 blx 0x14f0 | printf_chk ()
0x00002658 b 0x2366 | goto label_1;
0x0000265a add r6, sp, 0x28 | r6 += var_28h;
0x0000265c mov r0, fp | r0 = fp;
0x0000265e mov r1, r6 | r1 = r6;
0x00002660 add.w r7, sl, 1 | r7 = sl + 1;
0x00002664 blx 0x14b4 | dbus_message_iter_recurse ();
0x00002668 ldr.w r0, [pc, 0x66c] |
0x0000266c add r0, pc | r0 = 0x5348;
0x0000266e blx 0x1730 | puts (r0);
0x00002672 mov r2, r7 | r2 = r7;
0x00002674 mov r1, sb | r1 = sb;
0x00002676 mov r0, r6 | r0 = r6;
0x00002678 bl 0x22cc | fcn_000022cc (r0, r1, r2);
0x0000267c mov r0, r6 | r0 = r6;
0x0000267e blx 0x15ec | dbus_message_iter_next ();
0x00002682 mov r2, r7 | r2 = r7;
0x00002684 mov r1, sb | r1 = sb;
0x00002686 mov r0, r6 | r0 = r6;
0x00002688 bl 0x22cc | fcn_000022cc (r0, r1, r2);
0x0000268c cmp.w sl, 0 |
| if (sl <= 0) {
0x00002690 ble 0x26a6 | goto label_32;
| }
0x00002692 ldr.w r6, [pc, 0x648] | r6 = *(0x00002cdc);
0x00002696 add r6, pc | r6 += pc;
| do {
0x00002698 mov r1, r6 | r1 = r6;
0x0000269a movs r0, 1 | r0 = 1;
0x0000269c subs r5, 1 | r5--;
0x0000269e blx 0x14f0 | printf_chk ()
0x000026a2 adds r3, r5, 1 | r3 = r5 + 1;
0x000026a4 bne 0x2698 |
| } while (r3 != r5);
| label_32:
0x000026a6 ldr.w r0, [pc, 0x638] | r0 = *(0x00002ce0);
0x000026aa add r0, pc | r0 += pc;
0x000026ac blx 0x1730 | puts (r0);
0x000026b0 b 0x2366 | goto label_1;
0x000026b2 add r5, sp, 0x28 | r5 += var_28h;
0x000026b4 mov r0, fp | r0 = fp;
0x000026b6 mov r1, r5 | r1 = r5;
0x000026b8 blx 0x15c8 | dbus_message_iter_get_basic ();
0x000026bc ldr.w r1, [pc, 0x624] | r1 = *(0x00002ce4);
0x000026c0 movs r0, 1 | r0 = 1;
0x000026c2 ldrd r2, r3, [sp, 0x28] | __asm ("ldrd r2, r3, [var_28h]");
0x000026c6 add r1, pc | r1 += pc;
0x000026c8 blx 0x14f0 | printf_chk ()
0x000026cc b 0x2366 | goto label_1;
0x000026ce add r5, sp, 0x28 | r5 += var_28h;
0x000026d0 mov r0, fp | r0 = fp;
0x000026d2 mov r1, r5 | r1 = r5;
0x000026d4 blx 0x15c8 | dbus_message_iter_get_basic ();
0x000026d8 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000026da cmp r3, 0 |
| if (r3 != 0) {
0x000026dc bne.w 0x280e | goto label_33;
| }
0x000026e0 ldr.w r2, [pc, 0x604] |
0x000026e4 add r2, pc | r2 = 0x53d0;
| label_5:
0x000026e6 ldr.w r1, [pc, 0x604] |
0x000026ea movs r0, 1 | r0 = 1;
0x000026ec add r1, pc | r1 = 0x53de;
0x000026ee blx 0x14f0 | printf_chk ()
0x000026f2 b 0x2366 | goto label_1;
0x000026f4 add r6, sp, 0x28 | r6 += var_28h;
0x000026f6 mov r0, fp | r0 = fp;
0x000026f8 mov r1, r6 | r1 = r6;
0x000026fa blx 0x14b4 | dbus_message_iter_recurse ();
0x000026fe mov r0, r6 | r0 = r6;
0x00002700 blx 0x1718 | r0 = dbus_message_iter_get_arg_type ();
0x00002704 cmp r0, 0x79 |
0x00002706 mov r7, r0 | r7 = r0;
| if (r0 != 0x79) {
0x00002708 bne.w 0x2888 | goto label_34;
| }
0x0000270c add r3, sp, 0x24 | r3 += var_24h;
0x0000270e add r7, sp, 0x20 | r7 += s2;
0x00002710 mov r0, r6 | r0 = r6;
0x00002712 mov r2, r3 | r2 = r3;
0x00002714 mov r6, r3 | r6 = r3;
0x00002716 mov r1, r7 | r1 = r7;
0x00002718 str r3, [sp, 8] | var_8h = r3;
0x0000271a blx 0x14a8 | dbus_message_iter_get_fixed_array ();
0x0000271e ldr.w r8, [r6] | r8 = *(r6);
0x00002722 cmp.w r8, 0 |
| if (r8 <= 0) {
0x00002726 ble.w 0x2922 | goto label_35;
| }
0x0000272a ldr r2, [r7] | r2 = *(r7);
0x0000272c movs r3, 0 | r3 = 0;
0x0000272e add.w lr, r8, -1 | lr = r8 + -1;
0x00002732 subs r6, r2, 1 | r6 = r2 - 1;
0x00002734 mov r0, r6 | r0 = r6;
0x00002736 b 0x2740 |
| while (ip < 0x5e) {
| label_3:
0x00002738 adds r3, 1 | r3++;
0x0000273a cmp r3, r8 |
| if (r3 == r8) {
0x0000273c beq.w 0x2916 | goto label_36;
| }
0x00002740 ldrb r1, [r0, 1]! | r1 = *((r0 += 1));
0x00002744 sub.w ip, r1, 0x20 |
0x00002748 cmp.w ip, 0x5e |
0x0000274c bls 0x2738 |
| }
0x0000274e cmp lr, r3 |
0x00002750 it le |
| if (lr > r3) {
0x00002752 cmple r1, 0 | __asm ("cmple r1, 0");
| goto label_37;
| }
| if (lr == r3) {
| label_37:
0x00002754 beq 0x2738 | goto label_3;
| }
0x00002756 ldr.w r0, [pc, 0x598] |
0x0000275a str r2, [sp, 4] | var_4h = r2;
0x0000275c add r0, pc | r0 = 0x5452;
0x0000275e blx 0x1730 | puts (r0);
0x00002762 add.w r3, sl, 1 | r3 = sl + 1;
0x00002766 ldr r2, [sp, 4] | r2 = var_4h;
0x00002768 cmp r3, 0 |
0x0000276a str r3, [sp, 0x10] | var_10h = r3;
| if (r3 <= 0) {
0x0000276c ble 0x2792 | goto label_38;
| }
0x0000276e ldr.w r3, [pc, 0x584] | r3 = *(0x00002cf4);
0x00002772 mov r7, r4 | r7 = r4;
0x00002774 strd r2, r5, [sp, 4] | __asm ("strd r2, r5, [var_8h]");
0x00002778 mov r5, sl | r5 = sl;
0x0000277a add r3, pc | r3 += pc;
0x0000277c mov r4, r3 | r4 = r3;
| do {
0x0000277e subs r5, 1 | r5--;
0x00002780 mov r1, r4 | r1 = r4;
0x00002782 movs r0, 1 | r0 = 1;
0x00002784 blx 0x14f0 | printf_chk ()
0x00002788 adds r3, r5, 1 | r3 = r5 + 1;
0x0000278a bne 0x277e |
| } while (r3 != r5);
0x0000278c ldrd r2, r5, [sp, 4] | __asm ("ldrd r2, r5, [var_8h]");
0x00002790 mov r4, r7 | r4 = r7;
| label_38:
0x00002792 add.w r3, r2, r8 | r3 = r2 + r8;
0x00002796 rsb.w r8, r2, 1 | r8 = 1 - r2;
0x0000279a subs r3, 1 | r3--;
0x0000279c movw r2, 0x5556 |
0x000027a0 str r3, [sp, 4] | var_4h = r3;
| /* if there is a right shift of 0, then it's a division by 1/3 */
0x000027a2 movt r2, 0x5555 | r2 = 0x55555556;
0x000027a6 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000027a8 ldr.w r7, [pc, 0x54c] | r7 = *(0x00002cf8);
0x000027ac str r4, [sp, 0x14] | var_14h = r4;
0x000027ae sub.w r3, r3, r3, lsl 2 | r3 -= (r3 << 2);
0x000027b2 add r7, pc | r7 += pc;
0x000027b4 adds r3, 0x50 | r3 += 0x50;
0x000027b6 smull r1, r2, r2, r3 | r1:r2 = r2 * r3;
0x000027ba sub.w r3, r2, r3, asr 31 | r3 = r2 - (r3 >> 31);
0x000027be cmp r3, 8 |
0x000027c0 it lo |
| if (r3 >= 8) {
0x000027c2 movlo r3, 8 | r3 = 8;
| }
0x000027c4 str r3, [sp, 0xc] | var_ch = r3;
0x000027c6 ldr.w r3, [pc, 0x534] | r3 = *(0x00002cfc);
0x000027ca add r3, pc | r3 += pc;
0x000027cc str r3, [sp, 8] | var_8h = r3;
| do {
| label_4:
0x000027ce ldrb r2, [r6, 1]! | r2 = *((r6 += 1));
0x000027d2 movs r0, 1 | r0 = 1;
0x000027d4 ldr r1, [sp, 8] | r1 = var_8h;
0x000027d6 blx 0x14f0 | printf_chk ()
0x000027da ldr r3, [sp, 4] | r3 = var_4h;
0x000027dc add.w r0, r8, r6 | r0 = r8 + r6;
0x000027e0 cmp r6, r3 |
| if (r6 == r3) {
0x000027e2 beq.w 0x28e8 | goto label_39;
| }
0x000027e6 ldr r1, [sp, 0xc] | r1 = var_ch;
0x000027e8 bl 0x3674 | fcn_00003674 (r0);
0x000027ec cmp r1, 0 |
| if (r1 != 0) {
0x000027ee bne 0x28e0 | goto label_40;
| }
0x000027f0 movs r0, 0xa | r0 = 0xa;
0x000027f2 blx 0x1514 | putchar (r0);
0x000027f6 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000027f8 cmp r3, 0 |
0x000027fa ble 0x27ce |
| } while (r3 <= 0);
0x000027fc mov r4, sl | r4 = sl;
| do {
0x000027fe subs r4, 1 | r4--;
0x00002800 mov r1, r7 | r1 = r7;
0x00002802 movs r0, 1 | r0 = 1;
0x00002804 blx 0x14f0 | printf_chk ()
0x00002808 adds r0, r4, 1 | r0 = r4 + 1;
0x0000280a bne 0x27fe |
| } while (r0 != r4);
0x0000280c b 0x27ce | goto label_4;
| label_33:
0x0000280e ldr.w r2, [pc, 0x4f0] | r2 = *(0x00002d00);
0x00002812 add r2, pc | r2 += pc;
0x00002814 b 0x26e6 | goto label_5;
| label_18:
0x00002816 ldr.w r1, [pc, 0x4ec] |
0x0000281a movs r0, 1 | r0 = 1;
0x0000281c add r1, pc |
0x0000281e blx 0x14f0 | printf_chk ()
0x00002822 ldr.w r1, [pc, 0x4e4] | r1 = *(0x00002d08);
0x00002826 movs r0, 1 | r0 = 1;
0x00002828 ldr r2, [r5] | r2 = *(r5);
0x0000282a add r1, pc | r1 = 0x7d54;
0x0000282c blx 0x14f0 | printf_chk ()
0x00002830 ldr.w r0, [pc, 0x4d8] |
0x00002834 add r0, pc | r0 = 0x5544;
0x00002836 blx 0x1730 | puts (r0);
0x0000283a b 0x2366 | goto label_1;
| label_31:
0x0000283c ldr.w r1, [pc, 0x4d0] | r1 = *(0x00002d10);
0x00002840 movs r0, 1 | r0 = 1;
0x00002842 add r1, pc | r1 += pc;
0x00002844 blx 0x14f0 | printf_chk ()
0x00002848 ldr.w r1, [pc, 0x4c8] |
0x0000284c movs r0, 1 | r0 = 1;
0x0000284e ldr r2, [r5] | r2 = *(r5);
0x00002850 add r1, pc | r1 = 0x5568;
0x00002852 blx 0x14f0 | printf_chk ()
0x00002856 ldr.w r0, [pc, 0x4c0] | r0 = *(0x00002d18);
0x0000285a add r0, pc | r0 += pc;
0x0000285c blx 0x1730 | puts (r0);
0x00002860 b 0x2366 | goto label_1;
| label_21:
0x00002862 ldr.w r1, [pc, 0x4b8] |
0x00002866 movs r0, 1 | r0 = 1;
0x00002868 add r1, pc |
0x0000286a blx 0x14f0 | printf_chk ()
0x0000286e ldr.w r1, [pc, 0x4b0] | r1 = *(0x00002d20);
0x00002872 movs r0, 1 | r0 = 1;
0x00002874 ldr r2, [r5] | r2 = *(r5);
0x00002876 add r1, pc | r1 = 0x7e04;
0x00002878 blx 0x14f0 | printf_chk ()
0x0000287c ldr.w r0, [pc, 0x4a4] |
0x00002880 add r0, pc | r0 = 0x55a8;
0x00002882 blx 0x1730 | puts (r0);
0x00002886 b 0x2366 | goto label_1;
| label_34:
0x00002888 ldr.w r0, [pc, 0x49c] |
0x0000288c add r0, pc | r0 = 0x55b8;
0x0000288e blx 0x1730 | puts (r0);
| if (r7 == 0) {
0x00002892 cbz r7, 0x28ba | goto label_41;
| }
0x00002894 add.w r7, sl, 1 | r7 = sl + 1;
0x00002898 b 0x28a0 |
| while (r0 != 0) {
0x0000289a movs r0, 0x2c | r0 = 0x2c;
0x0000289c blx 0x1514 | putchar (r0);
0x000028a0 mov r2, r7 | r2 = r7;
0x000028a2 mov r1, sb | r1 = sb;
0x000028a4 mov r0, r6 | r0 = r6;
0x000028a6 bl 0x22cc | fcn_000022cc (r0, r1, r2);
0x000028aa mov r0, r6 | r0 = r6;
0x000028ac blx 0x15ec | dbus_message_iter_next ();
0x000028b0 mov r0, r6 | r0 = r6;
0x000028b2 blx 0x1718 | r0 = dbus_message_iter_get_arg_type ();
0x000028b6 cmp r0, 0 |
0x000028b8 bne 0x289a |
| }
| label_41:
0x000028ba cmp.w sl, 0 |
| if (sl <= 0) {
0x000028be ble 0x28d4 | goto label_42;
| }
0x000028c0 ldr.w r6, [pc, 0x468] |
0x000028c4 add r6, pc | r6 = 0x55f4;
| do {
0x000028c6 subs r5, 1 | r5--;
0x000028c8 mov r1, r6 | r1 = r6;
0x000028ca movs r0, 1 | r0 = 1;
0x000028cc blx 0x14f0 | printf_chk ()
0x000028d0 adds r2, r5, 1 | r2 = r5 + 1;
0x000028d2 bne 0x28c6 |
| } while (r2 != r5);
| label_42:
0x000028d4 ldr.w r0, [pc, 0x458] |
0x000028d8 add r0, pc | r0 = 0x560c;
0x000028da blx 0x1730 | puts (r0);
0x000028de b 0x2366 | goto label_1;
| label_40:
0x000028e0 movs r0, 0x20 | r0 = 0x20;
0x000028e2 blx 0x1514 | putchar (r0);
0x000028e6 b 0x27ce | goto label_4;
| label_39:
0x000028e8 movs r0, 0xa | r0 = 0xa;
0x000028ea ldr r4, [sp, 0x14] | r4 = var_14h;
0x000028ec blx 0x1514 | putchar (r0);
0x000028f0 cmp.w sl, 0 |
| if (sl <= 0) {
0x000028f4 ble 0x290a | goto label_43;
| }
0x000028f6 ldr.w r6, [pc, 0x43c] | r6 = *(0x00002d34);
0x000028fa add r6, pc | r6 += pc;
| do {
0x000028fc mov r1, r6 | r1 = r6;
0x000028fe subs r5, 1 | r5--;
0x00002900 movs r0, 1 | r0 = 1;
0x00002902 blx 0x14f0 | printf_chk ()
0x00002906 adds r1, r5, 1 | r1 = r5 + 1;
0x00002908 bne 0x28fc |
| } while (r1 != r5);
| label_43:
0x0000290a ldr.w r0, [pc, 0x42c] | r0 = *(0x00002d38);
0x0000290e add r0, pc | r0 += pc;
0x00002910 blx 0x1730 | puts (r0);
0x00002914 b 0x2366 | goto label_1;
| label_36:
0x00002916 add r3, r2 | r3 += r2;
0x00002918 ldrb r3, [r3, -0x1] | r3 = *((r3 - 0x1));
0x0000291c cmp r3, 0 |
| if (r3 == 0) {
0x0000291e beq.w 0x2b48 | goto label_44;
| }
| label_35:
0x00002922 add.w r0, r8, 1 | r0 = r8 + 1;
0x00002926 blx 0x1634 | r0 = dbus_malloc ();
0x0000292a mov r5, r0 | r5 = r0;
0x0000292c cmp r0, 0 |
| if (r0 == 0) {
0x0000292e beq.w 0x2c48 | goto label_45;
| }
0x00002932 ldr r3, [sp, 8] | r3 = var_8h;
0x00002934 ldr r1, [r7] | r1 = *(r7);
0x00002936 ldr r6, [r3] | r6 = *(r3);
0x00002938 mov r2, r6 | r2 = r6;
0x0000293a blx 0x1628 | memcpy (r0, r1, r2);
0x0000293e ldr r1, [pc, 0x3fc] |
0x00002940 movs r3, 0 | r3 = 0;
0x00002942 mov r2, r5 | r2 = r5;
0x00002944 strb r3, [r5, r6] | *((r5 + r6)) = r3;
0x00002946 movs r0, 1 | r0 = 1;
0x00002948 add r1, pc | r1 = 0x568a;
0x0000294a blx 0x14f0 | printf_chk ()
0x0000294e mov r0, r5 | r0 = r5;
0x00002950 blx 0x1490 | dbus_free ();
0x00002954 b 0x2366 | goto label_1;
| label_30:
0x00002956 mov r0, r8 | r0 = r8;
0x00002958 ldr r2, [sp, 8] | r2 = var_8h;
0x0000295a mov r1, r5 | r1 = r5;
0x0000295c blx 0x17c0 | getpeername ();
0x00002960 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00002962 mov r8, r0 | r8 = r0;
0x00002964 cmp r3, 0 |
| if (r3 <= 0) {
0x00002966 ble 0x2982 | goto label_46;
| }
0x00002968 ldr r3, [pc, 0x3d4] |
0x0000296a ldr r5, [sp, 4] | r5 = var_4h;
0x0000296c str r4, [sp, 8] | var_8h = r4;
0x0000296e add r3, pc | r3 = 0x56b2;
0x00002970 mov r4, r3 | r4 = r3;
| do {
0x00002972 mov r1, r4 | r1 = r4;
0x00002974 subs r5, 1 | r5--;
0x00002976 movs r0, 1 | r0 = 1;
0x00002978 blx 0x14f0 | printf_chk ()
0x0000297c adds r1, r5, 1 | r1 = r5 + 1;
0x0000297e bne 0x2972 |
| } while (r1 != r5);
0x00002980 ldr r4, [sp, 8] | r4 = var_8h;
| label_46:
0x00002982 ldr r1, [pc, 0x3c0] |
0x00002984 movs r0, 1 | r0 = 1;
0x00002986 add r1, pc | r1 = 0x56d0;
0x00002988 blx 0x14f0 | printf_chk ()
0x0000298c ldrh r2, [r6] | r2 = *(r6);
0x0000298e subs r3, r2, 1 | r3 = r2 - 1;
0x00002990 cmp r3, 0x1e |
| if (r3 <= 0x1e) {
0x00002992 bhi 0x29b8 |
| /* switch table (31 cases) at 0x2998 */
0x00002994 tbb [pc, r3] | __asm ("tbb [0x0000299c]");
| }
0x000029b8 ldr r1, [pc, 0x38c] |
0x000029ba movs r0, 1 | r0 = 1;
0x000029bc add r1, pc | r1 = 0x5708;
0x000029be blx 0x14f0 | printf_chk ()
0x000029c2 b 0x262e | goto label_6;
0x000029c4 ldr r0, [pc, 0x384] |
0x000029c6 add r0, pc | r0 = 0x5716;
0x000029c8 blx 0x1730 | puts (r0);
0x000029cc b 0x262e | goto label_6;
0x000029ce ldr r0, [pc, 0x380] |
0x000029d0 add r5, sp, 0x194 | r5 += var_194h;
0x000029d2 add r0, pc | r0 = 0x5728;
0x000029d4 blx 0x1730 | puts (r0);
0x000029d8 movs r3, 0x2e | r3 = 0x2e;
0x000029da mov r2, r5 | r2 = r5;
0x000029dc add r1, sp, 0x9c | r1 += var_9ch;
0x000029de movs r0, 0xa | r0 = 0xa;
0x000029e0 blx 0x146c | r0 = inet_ntop ();
| if (r0 == 0) {
0x000029e4 cbz r0, 0x2a18 | goto label_47;
| }
0x000029e6 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000029e8 cmp r3, 0 |
| if (r3 <= 0) {
0x000029ea ble 0x2a06 | goto label_48;
| }
0x000029ec ldr r1, [pc, 0x364] |
0x000029ee ldr r7, [sp, 4] | r7 = var_4h;
0x000029f0 str r4, [sp, 8] | var_8h = r4;
0x000029f2 add r1, pc | r1 = 0x574a;
0x000029f4 mov r4, r1 | r4 = r1;
| do {
0x000029f6 subs r7, 1 | r7--;
0x000029f8 mov r1, r4 | r1 = r4;
0x000029fa movs r0, 1 | r0 = 1;
0x000029fc blx 0x14f0 | printf_chk ()
0x00002a00 adds r2, r7, 1 | r2 = r7 + 1;
0x00002a02 bne 0x29f6 |
| } while (r2 != r7);
0x00002a04 ldr r4, [sp, 8] | r4 = var_8h;
| label_48:
0x00002a06 ldrh r3, [r6, 2] | r3 = *((r6 + 2));
0x00002a08 mov r2, r5 | r2 = r5;
0x00002a0a ldr r1, [pc, 0x34c] |
0x00002a0c movs r0, 1 | r0 = 1;
0x00002a0e rev16 r3, r3 | __asm ("rev16 r3, r3");
0x00002a10 uxth r3, r3 | r3 = (int16_t) r3;
0x00002a12 add r1, pc | r1 = 0x5770;
0x00002a14 blx 0x14f0 | printf_chk ()
| label_47:
0x00002a18 cmp.w r8, 0 |
| if (r8 != 0) {
0x00002a1c bne.w 0x262e | goto label_6;
| }
0x00002a20 movs r3, 0x2e | r3 = 0x2e;
0x00002a22 mov r2, r5 | r2 = r5;
0x00002a24 add r1, sp, 0x11c | r1 += var_11ch;
0x00002a26 movs r0, 0xa | r0 = 0xa;
0x00002a28 blx 0x146c | r0 = inet_ntop ();
0x00002a2c cmp r0, 0 |
| if (r0 == 0) {
0x00002a2e beq.w 0x262e | goto label_6;
| }
0x00002a32 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00002a34 cmp r3, 0 |
| if (r3 <= 0) {
0x00002a36 ble 0x2a4c | goto label_49;
| }
0x00002a38 ldr r6, [pc, 0x320] |
0x00002a3a ldr r7, [sp, 4] | r7 = var_4h;
0x00002a3c add r6, pc | r6 = 0x579c;
| do {
0x00002a3e subs r7, 1 | r7--;
0x00002a40 mov r1, r6 | r1 = r6;
0x00002a42 movs r0, 1 | r0 = 1;
0x00002a44 blx 0x14f0 | printf_chk ()
0x00002a48 adds r3, r7, 1 | r3 = r7 + 1;
0x00002a4a bne 0x2a3e |
| } while (r3 != r7);
| label_49:
0x00002a4c ldrh.w r3, [sp, 0x116] | r3 = var_116h;
0x00002a50 mov r2, r5 | r2 = r5;
0x00002a52 ldr r1, [pc, 0x30c] |
0x00002a54 movs r0, 1 | r0 = 1;
0x00002a56 rev16 r3, r3 | __asm ("rev16 r3, r3");
0x00002a58 uxth r3, r3 | r3 = (int16_t) r3;
0x00002a5a add r1, pc | r1 = 0x57c0;
0x00002a5c blx 0x14f0 | printf_chk ()
0x00002a60 b 0x262e | goto label_6;
0x00002a62 ldr r0, [pc, 0x300] |
0x00002a64 add r5, sp, 0x194 | r5 += var_194h;
0x00002a66 add r0, pc | r0 = 0x57d0;
0x00002a68 blx 0x1730 | puts (r0);
0x00002a6c movs r3, 0x2e | r3 = 0x2e;
0x00002a6e mov r2, r5 | r2 = r5;
0x00002a70 add r1, sp, 0x98 | r1 += var_98h;
0x00002a72 movs r0, 2 | r0 = 2;
0x00002a74 blx 0x146c | r0 = inet_ntop ();
| if (r0 == 0) {
0x00002a78 cbz r0, 0x2aac | goto label_50;
| }
0x00002a7a ldr r3, [sp, 0x10] | r3 = var_10h;
0x00002a7c cmp r3, 0 |
| if (r3 <= 0) {
0x00002a7e ble 0x2a9a | goto label_51;
| }
0x00002a80 ldr r1, [pc, 0x2e4] |
0x00002a82 ldr r7, [sp, 4] | r7 = var_4h;
0x00002a84 str r4, [sp, 8] | var_8h = r4;
0x00002a86 add r1, pc | r1 = 0x57f2;
0x00002a88 mov r4, r1 | r4 = r1;
| do {
0x00002a8a subs r7, 1 | r7--;
0x00002a8c mov r1, r4 | r1 = r4;
0x00002a8e movs r0, 1 | r0 = 1;
0x00002a90 blx 0x14f0 | printf_chk ()
0x00002a94 adds r0, r7, 1 | r0 = r7 + 1;
0x00002a96 bne 0x2a8a |
| } while (r0 != r7);
0x00002a98 ldr r4, [sp, 8] | r4 = var_8h;
| label_51:
0x00002a9a ldrh r3, [r6, 2] | r3 = *((r6 + 2));
0x00002a9c mov r2, r5 | r2 = r5;
0x00002a9e ldr r1, [pc, 0x2cc] |
0x00002aa0 movs r0, 1 | r0 = 1;
0x00002aa2 rev16 r3, r3 | __asm ("rev16 r3, r3");
0x00002aa4 uxth r3, r3 | r3 = (int16_t) r3;
0x00002aa6 add r1, pc | r1 = 0x5818;
0x00002aa8 blx 0x14f0 | printf_chk ()
| label_50:
0x00002aac cmp.w r8, 0 |
| if (r8 != 0) {
0x00002ab0 bne.w 0x262e | goto label_6;
| }
0x00002ab4 movs r3, 0x2e | r3 = 0x2e;
0x00002ab6 mov r2, r5 | r2 = r5;
0x00002ab8 add r1, sp, 0x118 | r1 += var_118h;
0x00002aba movs r0, 2 | r0 = 2;
0x00002abc blx 0x146c | r0 = inet_ntop ();
0x00002ac0 cmp r0, 0 |
| if (r0 == 0) {
0x00002ac2 beq.w 0x262e | goto label_6;
| }
0x00002ac6 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00002ac8 cmp r3, 0 |
| if (r3 <= 0) {
0x00002aca ble 0x2ae0 | goto label_52;
| }
0x00002acc ldr r6, [pc, 0x2a0] |
0x00002ace ldr r7, [sp, 4] | r7 = var_4h;
0x00002ad0 add r6, pc | r6 = 0x5844;
| do {
0x00002ad2 mov r1, r6 | r1 = r6;
0x00002ad4 subs r7, 1 | r7--;
0x00002ad6 movs r0, 1 | r0 = 1;
0x00002ad8 blx 0x14f0 | printf_chk ()
0x00002adc adds r1, r7, 1 | r1 = r7 + 1;
0x00002ade bne 0x2ad2 |
| } while (r1 != r7);
| label_52:
0x00002ae0 ldrh.w r3, [sp, 0x116] | r3 = var_116h;
0x00002ae4 mov r2, r5 | r2 = r5;
0x00002ae6 ldr r1, [pc, 0x28c] |
0x00002ae8 movs r0, 1 | r0 = 1;
0x00002aea rev16 r3, r3 | __asm ("rev16 r3, r3");
0x00002aec uxth r3, r3 | r3 = (int16_t) r3;
0x00002aee add r1, pc | r1 = 0x5868;
0x00002af0 blx 0x14f0 | printf_chk ()
0x00002af4 b 0x262e | goto label_6;
0x00002af6 ldr r0, [pc, 0x280] |
0x00002af8 add r0, pc | r0 = 0x5876;
0x00002afa blx 0x1730 | puts (r0);
0x00002afe ldrb r3, [r6, 2] | r3 = *((r6 + 2));
0x00002b00 cmp r3, 0 |
| if (r3 == 0) {
0x00002b02 beq 0x2bcc | goto label_53;
| }
0x00002b04 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00002b06 cmp r3, 0 |
| if (r3 <= 0) {
0x00002b08 ble.w 0x2c54 | goto label_54;
| }
0x00002b0c ldr r5, [pc, 0x26c] |
0x00002b0e ldr r6, [sp, 4] | r6 = var_4h;
0x00002b10 add r5, pc | r5 = 0x5890;
| do {
0x00002b12 subs r6, 1 | r6--;
0x00002b14 mov r1, r5 | r1 = r5;
0x00002b16 movs r0, 1 | r0 = 1;
0x00002b18 blx 0x14f0 | printf_chk ()
0x00002b1c adds r3, r6, 1 | r3 = r6 + 1;
0x00002b1e bne 0x2b12 |
| } while (r3 != r6);
0x00002b20 ldr r1, [pc, 0x25c] |
0x00002b22 add.w r2, sp, 0x96 | r2 += var_96h;
0x00002b26 movs r0, 1 | r0 = 1;
0x00002b28 add r1, pc | r1 = 0x58ac;
0x00002b2a blx 0x14f0 | printf_chk ()
0x00002b2e cmp.w r8, 0 |
| if (r8 != 0) {
0x00002b32 bne.w 0x262e | goto label_6;
| }
0x00002b36 ldr r6, [sp, 4] | r6 = var_4h;
| do {
0x00002b38 subs r6, 1 | r6--;
0x00002b3a mov r1, r5 | r1 = r5;
0x00002b3c movs r0, 1 | r0 = 1;
0x00002b3e blx 0x14f0 | printf_chk ()
0x00002b42 adds r7, r6, 1 | r7 = r6 + 1;
0x00002b44 bne 0x2b38 |
| } while (r7 != r6);
0x00002b46 b 0x2c6a | goto label_55;
| label_44:
0x00002b48 ldr r1, [pc, 0x238] |
0x00002b4a movs r0, 1 | r0 = 1;
0x00002b4c add r1, pc | r1 = 0x58d4;
0x00002b4e blx 0x14f0 | printf_chk ()
0x00002b52 b 0x2366 | goto label_1;
| label_29:
0x00002b54 ldr r0, [pc, 0x230] |
0x00002b56 add r0, pc | r0 = 0x58e2;
0x00002b58 blx 0x1730 | puts (r0);
0x00002b5c b 0x2602 | goto label_7;
| label_28:
0x00002b5e ldr r0, [pc, 0x22c] |
0x00002b60 add r0, pc | r0 = 0x58f2;
0x00002b62 blx 0x1730 | puts (r0);
0x00002b66 ldr r3, [r6, 0x10] | r3 = *((r6 + 0x10));
0x00002b68 and r3, r3, 0xf000 | r3 &= 0xf000;
0x00002b6c b 0x25fa | goto label_8;
| label_27:
0x00002b6e ldr r0, [pc, 0x220] |
0x00002b70 add r0, pc | r0 = 0x5906;
0x00002b72 blx 0x1730 | puts (r0);
0x00002b76 ldr r3, [r6, 0x10] | r3 = *((r6 + 0x10));
0x00002b78 and r3, r3, 0xf000 | r3 &= 0xf000;
0x00002b7c b 0x25f2 | goto label_9;
| label_26:
0x00002b7e ldr r0, [pc, 0x214] |
0x00002b80 add r0, pc | r0 = 0x591a;
0x00002b82 blx 0x1730 | puts (r0);
0x00002b86 ldr r3, [r6, 0x10] | r3 = *((r6 + 0x10));
0x00002b88 and r3, r3, 0xf000 | r3 &= 0xf000;
0x00002b8c b 0x25ea | goto label_10;
| label_25:
0x00002b8e ldr r0, [pc, 0x208] |
0x00002b90 add r0, pc | r0 = 0x592e;
0x00002b92 blx 0x1730 | puts (r0);
0x00002b96 ldr r3, [r6, 0x10] | r3 = *((r6 + 0x10));
0x00002b98 and r3, r3, 0xf000 | r3 &= 0xf000;
0x00002b9c b 0x25e2 | goto label_11;
| label_24:
0x00002b9e ldr r0, [pc, 0x1fc] |
0x00002ba0 add r0, pc | r0 = 0x5942;
0x00002ba2 blx 0x1730 | puts (r0);
0x00002ba6 ldr r3, [r6, 0x10] | r3 = *((r6 + 0x10));
0x00002ba8 and r3, r3, 0xf000 | r3 &= 0xf000;
0x00002bac b 0x25da | goto label_12;
| label_23:
0x00002bae ldr r0, [pc, 0x1f0] |
0x00002bb0 add r0, pc | r0 = 0x5956;
0x00002bb2 blx 0x1730 | puts (r0);
0x00002bb6 ldr r3, [r6, 0x10] | r3 = *((r6 + 0x10));
0x00002bb8 and r3, r3, 0xf000 | r3 &= 0xf000;
0x00002bbc b 0x25d2 | goto label_13;
| label_22:
0x00002bbe ldr r1, [pc, 0x1e4] |
0x00002bc0 movs r0, 1 | r0 = 1;
0x00002bc2 ldr r2, [r6, 0x60] | r2 = *((r6 + 0x60));
0x00002bc4 add r1, pc | r1 = 0x596e;
0x00002bc6 blx 0x14f0 | printf_chk ()
0x00002bca b 0x25b8 | goto label_14;
| label_53:
0x00002bcc ldr r3, [sp, 0x10] | r3 = var_10h;
0x00002bce cmp r3, 0 |
| if (r3 <= 0) {
0x00002bd0 ble 0x2c1a | goto label_56;
| }
0x00002bd2 ldr r6, [pc, 0x1d4] |
0x00002bd4 ldr r5, [sp, 4] | r5 = var_4h;
0x00002bd6 add r6, pc | r6 = 0x5984;
| do {
0x00002bd8 subs r5, 1 | r5--;
0x00002bda mov r1, r6 | r1 = r6;
0x00002bdc movs r0, 1 | r0 = 1;
0x00002bde blx 0x14f0 | printf_chk ()
0x00002be2 adds r2, r5, 1 | r2 = r5 + 1;
0x00002be4 bne 0x2bd8 |
| } while (r2 != r5);
0x00002be6 ldr r2, [r7] | r2 = *(r7);
0x00002be8 add.w r5, sp, 0x97 | r5 += var_97h;
0x00002bec ldr r1, [pc, 0x1bc] |
0x00002bee mov r3, r5 | r3 = r5;
0x00002bf0 movs r0, 1 | r0 = 1;
0x00002bf2 subs r2, 3 | r2 -= 3;
0x00002bf4 add r1, pc | r1 = 0x59a4;
0x00002bf6 blx 0x14f0 | printf_chk ()
0x00002bfa cmp.w r8, 0 |
| if (r8 != 0) {
0x00002bfe bne.w 0x262e | goto label_6;
| }
0x00002c02 ldr.w r8, [sp, 4] | r8 = var_4h;
| do {
0x00002c06 add.w r8, r8, -1 | r8 += -1;
0x00002c0a mov r1, r6 | r1 = r6;
0x00002c0c movs r0, 1 | r0 = 1;
0x00002c0e blx 0x14f0 | printf_chk ()
0x00002c12 cmp.w r8, -1 |
0x00002c16 bne 0x2c06 |
| } while (r8 != -1);
0x00002c18 b 0x2c36 | goto label_57;
| label_56:
0x00002c1a ldr r2, [r7] | r2 = *(r7);
0x00002c1c add.w r5, sp, 0x97 | r5 += var_97h;
0x00002c20 ldr r1, [pc, 0x18c] |
0x00002c22 mov r3, r5 | r3 = r5;
0x00002c24 movs r0, 1 | r0 = 1;
0x00002c26 subs r2, 3 | r2 -= 3;
0x00002c28 add r1, pc | r1 = 0x59dc;
0x00002c2a blx 0x14f0 | printf_chk ()
0x00002c2e cmp.w r8, 0 |
| if (r8 != 0) {
0x00002c32 bne.w 0x262e | goto label_6;
| }
| label_57:
0x00002c36 ldr r2, [r7] | r2 = *(r7);
0x00002c38 mov r3, r5 | r3 = r5;
0x00002c3a ldr r1, [pc, 0x178] |
0x00002c3c movs r0, 1 | r0 = 1;
0x00002c3e subs r2, 3 | r2 -= 3;
0x00002c40 add r1, pc | r1 = 0x59fa;
0x00002c42 blx 0x14f0 | printf_chk ()
0x00002c46 b 0x262e | goto label_6;
| label_45:
0x00002c48 ldr r0, [pc, 0x16c] |
0x00002c4a add r0, pc | r0 = 0x5a06;
0x00002c4c bl 0x336c | tool_oom ();
| label_17:
0x00002c50 blx 0x16dc | stack_chk_fail ();
| label_54:
0x00002c54 ldr r1, [pc, 0x164] |
0x00002c56 add.w r2, sp, 0x96 | r2 += var_96h;
0x00002c5a movs r0, 1 | r0 = 1;
0x00002c5c add r1, pc | r1 = 0x5a1c;
0x00002c5e blx 0x14f0 | printf_chk ()
0x00002c62 cmp.w r8, 0 |
| if (r8 != 0) {
0x00002c66 bne.w 0x262e | goto label_6;
| }
| label_55:
0x00002c6a ldr r1, [pc, 0x154] |
0x00002c6c add.w r2, sp, 0x116 | r2 += var_116h;
0x00002c70 movs r0, 1 | r0 = 1;
0x00002c72 add r1, pc | r1 = 0x5a38;
0x00002c74 blx 0x14f0 | printf_chk ()
0x00002c78 b 0x262e | goto label_6;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dbus-send @ 0x2dc4 */
| #include <stdint.h>
|
; (fcn) sym.print_message () | void print_message (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int32_t var_4h;
| int32_t var_4h_2;
| int16_t var_14h;
| int16_t var_4ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00002dc4 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00002dc8 mov r8, r2 | r8 = r2;
0x00002dca ldr r2, [pc, 0x1c8] |
0x00002dcc mov sl, r3 | sl = r3;
0x00002dce sub sp, 0x50 |
0x00002dd0 mov r4, r0 | r4 = r0;
0x00002dd2 ldr r3, [pc, 0x1c4] | r3 = *(0x2f9a);
0x00002dd4 mov r6, r1 | r6 = r1;
0x00002dd6 add r2, pc | r2 = 0x5d70;
0x00002dd8 ldr.w sb, [pc, 0x1c0] | sb = *(0x00002f9c);
0x00002ddc ldr r3, [r2, r3] |
0x00002dde add sb, pc | sb += pc;
0x00002de0 ldr r3, [r3] | r3 = *(0x5d70);
0x00002de2 str r3, [sp, 0x4c] | var_4ch = r3;
0x00002de4 mov.w r3, 0 | r3 = 0;
0x00002de8 blx 0x1784 | r0 = dbus_message_get_type ();
0x00002dec mov r5, r0 | r5 = r0;
0x00002dee mov r0, r4 | r0 = r4;
0x00002df0 blx 0x14cc | r0 = dbus_message_get_sender ();
0x00002df4 mov r7, r0 | r7 = r0;
0x00002df6 mov r0, r4 | r0 = r4;
0x00002df8 blx 0x17a8 | dbus_message_get_destination ();
| if (r6 == 0) {
0x00002dfc cbnz r6, 0x2e46 |
0x00002dfe orrs.w r3, r8, sl | r3 = r8 | sl;
0x00002e02 add.w r5, r5, -1 | r5 += -1;
| if (r3 == r8) {
0x00002e06 beq 0x2e80 | goto label_8;
| }
0x00002e08 cmp r5, 3 |
| if (r5 > 3) {
0x00002e0a bhi.w 0x2f8a | goto label_9;
| }
| /* switch table (4 cases) at 0x2e12 */
0x00002e0e tbb [pc, r5] | __asm ("tbb [0x00002e14]");
| }
| label_7:
0x00002e46 mov r0, r4 | r0 = r4;
0x00002e48 add r4, sp, 0x14 | r4 += var_14h;
0x00002e4a mov r1, r4 | r1 = r4;
0x00002e4c blx 0x152c | dbus_message_iter_init ();
0x00002e50 movs r2, 1 | r2 = 1;
0x00002e52 mov r0, r4 | r0 = r4;
0x00002e54 mov r1, r6 | r1 = r6;
0x00002e56 bl 0x22cc | fcn_000022cc (r0, r1, r2);
0x00002e5a ldr r3, [pc, 0x148] | r3 = *(0x2fa6);
0x00002e5c ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x00002e60 ldr r0, [r3] | r0 = *(0x2fa6);
0x00002e62 blx 0x15e0 | fflush (r0);
0x00002e66 ldr r2, [pc, 0x140] |
0x00002e68 ldr r3, [pc, 0x12c] | r3 = *(0x2f98);
0x00002e6a add r2, pc | r2 = 0x5e18;
0x00002e6c ldr r3, [r2, r3] | r3 = *(0x5e18);
0x00002e6e ldr r2, [r3] | r2 = *(0x5e18);
0x00002e70 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00002e72 eors r2, r3 | r2 ^= r3;
0x00002e74 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00002e78 bne 0x2f74 | goto label_10;
| }
0x00002e7a add sp, 0x50 |
0x00002e7c pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_8:
0x00002e80 cmp r5, 3 |
| if (r5 > 3) {
0x00002e82 bhi 0x2f80 | goto label_11;
| }
| /* switch table (4 cases) at 0x2e88 */
0x00002e84 tbb [pc, r5] | __asm ("tbb [0x00002e8c]");
0x00002e8c ldr r2, [pc, 0x11c] |
0x00002e8e add r2, pc | r2 = 0x5e3e;
0x00002e90 cmp r7, 0 |
0x00002e92 beq 0x2f08 |
| while (1) {
| label_0:
0x00002e94 cmp r0, 0 |
| if (r0 == 0) {
0x00002e96 beq 0x2f6e | goto label_12;
| }
| label_6:
0x00002e98 ldr r1, [pc, 0x114] |
0x00002e9a mov r3, r8 | r3 = r8;
0x00002e9c strd r7, r0, [sp, 4] | __asm ("strd r7, r0, [var_4h]");
0x00002ea0 movs r0, 1 | r0 = 1;
0x00002ea2 str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x00002ea6 add r1, pc | r1 = 0x5e5a;
0x00002ea8 blx 0x14f0 | printf_chk ()
| label_2:
0x00002eac cmp r5, 3 |
| if (r5 > 3) {
0x00002eae bhi 0x2f78 | goto label_13;
| }
0x00002eb0 adr r3, 8 | r3 = 8;
0x00002eb2 ldr.w r5, [r3, r5, lsl 2] | offset_0 = r5 << 2;
| r5 = *((r3 + offset_0));
0x00002eb6 add r3, r5 | r3 += r5;
| /* switch table (4 cases) at 0x2ebc */
0x00002eb8 bx r3 | return uint32_t (*r3)() ();
| label_1:
0x00002f08 ldr r7, [pc, 0xb0] |
0x00002f0a add r7, pc | r7 = 0x5eca;
0x00002f0c b 0x2e94 |
| }
0x00002f0e ldr r2, [pc, 0xb0] |
0x00002f10 add r2, pc | r2 = 0x5ed6;
0x00002f12 cmp r7, 0 |
| if (r7 != 0) {
0x00002f14 bne 0x2e94 | goto label_0;
| }
0x00002f16 b 0x2f08 | goto label_1;
0x00002f18 ldr r2, [pc, 0xa8] |
0x00002f1a add r2, pc | r2 = 0x5ee2;
0x00002f1c cbz r7, 0x2f30 |
| while (1) {
| if (r0 == 0) {
| label_3:
0x00002f1e cbz r0, 0x2f68 | goto label_14;
| }
| label_5:
0x00002f20 ldr r1, [pc, 0xa4] |
0x00002f22 mov r3, r7 | r3 = r7;
0x00002f24 str r0, [sp] | *(sp) = r0;
0x00002f26 movs r0, 1 | r0 = 1;
0x00002f28 add r1, pc | r1 = "__";
0x00002f2a blx 0x14f0 | printf_chk ()
0x00002f2e b 0x2eac | goto label_2;
| label_4:
0x00002f30 ldr r7, [pc, 0x98] |
0x00002f32 add r7, pc | r7 = 0x5f02;
0x00002f34 b 0x2f1e |
| }
0x00002f36 ldr r2, [pc, 0x98] |
0x00002f38 add r2, pc | r2 = 0x5f0e;
0x00002f3a cmp r7, 0 |
| if (r7 != 0) {
0x00002f3c bne 0x2f1e | goto label_3;
| }
0x00002f3e b 0x2f30 | goto label_4;
0x00002f40 ldr r2, [pc, 0x90] |
0x00002f42 add r2, pc | r2 = 0x5f1a;
0x00002f44 cmp r7, 0 |
| if (r7 != 0) {
0x00002f46 bne 0x2f1e | goto label_3;
| }
0x00002f48 b 0x2f30 | goto label_4;
0x00002f4a ldr r2, [pc, 0x8c] |
0x00002f4c add r2, pc | r2 = 0x5f2a;
0x00002f4e cmp r7, 0 |
| if (r7 != 0) {
0x00002f50 bne 0x2f1e | goto label_3;
| }
0x00002f52 b 0x2f30 | goto label_4;
0x00002f54 ldr r2, [pc, 0x84] |
0x00002f56 add r2, pc | r2 = 0x5f36;
0x00002f58 cmp r7, 0 |
| if (r7 != 0) {
0x00002f5a bne 0x2e94 | goto label_0;
| }
0x00002f5c b 0x2f08 | goto label_1;
0x00002f5e ldr r2, [pc, 0x80] |
0x00002f60 add r2, pc | r2 = 0x5f46;
0x00002f62 cmp r7, 0 |
| if (r7 != 0) {
0x00002f64 bne 0x2e94 | goto label_0;
| }
0x00002f66 b 0x2f08 | goto label_1;
| label_14:
0x00002f68 ldr r0, [pc, 0x78] |
0x00002f6a add r0, pc | r0 = 0x5f52;
0x00002f6c b 0x2f20 | goto label_5;
| label_12:
0x00002f6e ldr r0, [pc, 0x78] |
0x00002f70 add r0, pc | r0 = 0x5f5e;
0x00002f72 b 0x2e98 | goto label_6;
| label_10:
0x00002f74 blx 0x16dc | stack_chk_fail ();
| label_13:
0x00002f78 movs r0, 0xa | r0 = 0xa;
0x00002f7a blx 0x1514 | putchar (r0);
0x00002f7e b 0x2e46 | goto label_7;
| label_11:
0x00002f80 ldr r2, [pc, 0x68] |
0x00002f82 add r2, pc | r2 = 0x5f72;
0x00002f84 cmp r7, 0 |
| if (r7 != 0) {
0x00002f86 bne 0x2f1e | goto label_3;
| }
0x00002f88 b 0x2f30 | goto label_4;
| label_9:
0x00002f8a ldr r2, [pc, 0x64] |
0x00002f8c add r2, pc | r2 = 0x5f82;
0x00002f8e cmp r7, 0 |
| if (r7 != 0) {
0x00002f90 bne 0x2e94 | goto label_0;
| }
0x00002f92 b 0x2f08 | goto label_1;
| }
[*] Function printf used 59 times dbus-send