[*] 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-50593792.squashfs_v4_le_extract/usr/bin/dbus-send @ 0x1cb4 */
| #include <stdint.h>
|
; (fcn) fcn.00001cb4 () | void fcn_00001cb4 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_24h;
| void * s2;
| int16_t var_2ch;
| int16_t var_30h;
| void * s;
| int16_t var_9eh;
| int16_t var_9fh;
| int16_t var_a0h;
| int16_t var_a4h;
| int16_t var_11ch;
| int16_t var_11eh;
| int16_t var_120h;
| int16_t var_124h;
| int16_t var_19ch;
| int16_t var_1cch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00001cb4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00001cb8 sub sp, 0x1d4 |
0x00001cba str r1, [sp] | *(sp) = r1;
0x00001cbc add.w fp, r2, 1 |
0x00001cc0 mov r7, r2 | r7 = r2;
0x00001cc2 sub.w r3, fp, fp, lsl 2 | r3 = fp - (fp << 2);
0x00001cc6 ldr.w r1, [pc, 0x970] | r1 = *(0x00002638);
0x00001cca mov r8, r0 | r8 = r0;
0x00001ccc ldr.w r2, [pc, 0x96c] |
0x00001cd0 adds r3, 0x50 | r3 += 0x50;
0x00001cd2 ldr.w sl, [pc, 0x96c] |
0x00001cd6 add r1, pc | r1 += pc;
0x00001cd8 ldr r2, [r1, r2] | r2 = *((r1 + r2));
0x00001cda add sl, pc | sl = 0x4320;
0x00001cdc ldr r2, [r2] | r2 = *(0x263c);
0x00001cde str r2, [sp, 0x1cc] | var_1cch = r2;
0x00001ce0 mov.w r2, 0 | r2 = 0;
0x00001ce4 movw r2, 0x5556 |
| /* if there is a right shift of 0, then it's a division by 1/3 */
0x00001ce8 movt r2, 0x5555 | r2 = 0x55555556;
0x00001cec smull r1, r2, r2, r3 | r1:r2 = r2 * r3;
0x00001cf0 sub.w r3, r2, r3, asr 31 | r3 = r2 - (r3 >> 31);
0x00001cf4 cmp r3, 8 |
0x00001cf6 it lo |
| if (r3 >= 8) {
0x00001cf8 movlo r3, 8 | r3 = 8;
| }
0x00001cfa str r3, [sp, 4] | var_4h = r3;
0x00001cfc ldr.w r3, [pc, 0x944] |
0x00001d00 add r3, pc | r3 = 0x4348;
0x00001d02 str r3, [sp, 8] | var_8h = r3;
| label_0:
0x00001d04 mov r0, r8 | r0 = r8;
0x00001d06 blx 0x12fc | r0 = dbus_message_iter_get_arg_type ();
0x00001d0a mov r5, r0 | r5 = r0;
0x00001d0c cmp r0, 0 |
| if (r0 == 0) {
0x00001d0e beq 0x1d80 | goto label_15;
| }
0x00001d10 cmp r7, 0 |
0x00001d12 add.w r4, r7, -1 | r4 = r7 + -1;
0x00001d16 it gt |
| if (r7 <= 0) {
0x00001d18 movgt r6, r4 | r6 = r4;
| }
| if (r7 <= 0) {
0x00001d1a ble 0x1d2a | goto label_16;
| }
| do {
0x00001d1c mov r1, sl | r1 = sl;
0x00001d1e movs r0, 1 | r0 = 1;
0x00001d20 subs r6, 1 | r6--;
0x00001d22 blx 0x1290 | printf_chk ()
0x00001d26 adds r1, r6, 1 | r1 = r6 + 1;
0x00001d28 bne 0x1d1c |
| } while (r1 != r6);
| label_16:
0x00001d2a sub.w r3, r5, 0x61 | r3 = r5 - 0x61;
0x00001d2e cmp r3, 0x18 |
| if (r3 <= 0x18) {
0x00001d30 bhi 0x1d68 |
| /* switch table (26 cases) at 0x1d36 */
0x00001d32 tbh [pc, r3, lsl 1] | __asm ("tbh [pc, r3, lsl 1]");
| }
0x00001d68 ldr.w r1, [pc, 0x8dc] |
0x00001d6c mov r2, r5 | r2 = r5;
0x00001d6e movs r0, 1 | r0 = 1;
0x00001d70 add r1, pc | r1 = 0x43bc;
0x00001d72 blx 0x1290 | printf_chk ()
| label_1:
0x00001d76 mov r0, r8 | r0 = r8;
0x00001d78 blx 0x123c | r0 = dbus_message_iter_next ();
0x00001d7c cmp r0, 0 |
| if (r0 != 0) {
0x00001d7e bne 0x1d04 | goto label_0;
| }
| label_15:
0x00001d80 ldr.w r2, [pc, 0x8c8] | r2 = *(0x0000264c);
0x00001d84 ldr.w r3, [pc, 0x8b4] | r3 = *(0x263c);
0x00001d88 add r2, pc | r2 += pc;
0x00001d8a ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00001d8c ldr r2, [r3] | r2 = *(0x263c);
0x00001d8e ldr r3, [sp, 0x1cc] | r3 = var_1cch;
0x00001d90 eors r2, r3 | r2 ^= r3;
0x00001d92 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00001d96 bne.w 0x260e | goto label_17;
| }
0x00001d9a add sp, 0x1d4 |
0x00001d9c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00001da0 add r4, sp, 0x30 | r4 += var_30h;
0x00001da2 mov r0, r8 | r0 = r8;
0x00001da4 mov r1, r4 | r1 = r4;
0x00001da6 blx 0x1098 | dbus_message_iter_get_basic ();
0x00001daa ldr.w r1, [pc, 0x8a4] |
0x00001dae movs r0, 1 | r0 = 1;
0x00001db0 ldrb.w r2, [sp, 0x30] | r2 = var_30h;
0x00001db4 add r1, pc | r1 = 0x440a;
0x00001db6 blx 0x1290 | printf_chk ()
0x00001dba b 0x1d76 | goto label_1;
0x00001dbc add r1, sp, 0x30 | r1 += var_30h;
0x00001dbe mov r0, r8 | r0 = r8;
0x00001dc0 blx 0x1098 | dbus_message_iter_get_basic ();
0x00001dc4 ldr.w r1, [pc, 0x88c] |
0x00001dc8 movs r0, 1 | r0 = 1;
0x00001dca ldrd r2, r3, [sp, 0x30] | __asm ("ldrd r2, r3, [var_30h]");
0x00001dce add r1, pc | r1 = 0x4426;
0x00001dd0 blx 0x1290 | printf_chk ()
0x00001dd4 b 0x1d76 | goto label_1;
0x00001dd6 add r4, sp, 0x30 | r4 += var_30h;
0x00001dd8 mov r0, r8 | r0 = r8;
0x00001dda mov r1, r4 | r1 = r4;
0x00001ddc blx 0x1344 | dbus_message_iter_recurse ();
0x00001de0 ldr.w r1, [pc, 0x874] |
0x00001de4 movs r0, 1 | r0 = 1;
0x00001de6 add r1, pc | r1 = 0x4442;
0x00001de8 blx 0x1290 | printf_chk ()
0x00001dec ldr r1, [sp] | r1 = *(sp);
0x00001dee mov r2, fp | r2 = fp;
0x00001df0 mov r0, r4 | r0 = r4;
0x00001df2 bl 0x1cb4 | fcn_00001cb4 (r0, r1, r2);
0x00001df6 b 0x1d76 | goto label_1;
0x00001df8 add r4, sp, 0x30 | r4 += var_30h;
0x00001dfa mov r0, r8 | r0 = r8;
0x00001dfc mov r1, r4 | r1 = r4;
0x00001dfe blx 0x1098 | dbus_message_iter_get_basic ();
0x00001e02 ldr.w r1, [pc, 0x858] |
0x00001e06 movs r0, 1 | r0 = 1;
0x00001e08 ldr r2, [sp, 0x30] | r2 = var_30h;
0x00001e0a add r1, pc | r1 = 0x446c;
0x00001e0c blx 0x1290 | printf_chk ()
0x00001e10 b 0x1d76 | goto label_1;
0x00001e12 add r1, sp, 0x30 | r1 += var_30h;
0x00001e14 mov r0, r8 | r0 = r8;
0x00001e16 blx 0x1098 | dbus_message_iter_get_basic ();
0x00001e1a ldr.w r1, [pc, 0x844] | r1 = s;
0x00001e1e movs r0, 1 | r0 = 1;
0x00001e20 ldrd r2, r3, [sp, 0x30] | __asm ("ldrd r2, r3, [var_30h]");
0x00001e24 add r1, pc | r1 += pc;
0x00001e26 blx 0x1290 | printf_chk ()
0x00001e2a b 0x1d76 | goto label_1;
0x00001e2c add r4, sp, 0x30 | r4 += var_30h;
0x00001e2e mov r0, r8 | r0 = r8;
0x00001e30 mov r1, r4 | r1 = r4;
0x00001e32 blx 0x1098 | dbus_message_iter_get_basic ();
0x00001e36 ldr r3, [sp] | r3 = *(sp);
0x00001e38 cmp r3, 0 |
| if (r3 == 0) {
0x00001e3a beq.w 0x21e0 | goto label_18;
| }
0x00001e3e ldr.w r1, [pc, 0x824] |
0x00001e42 movs r0, 1 | r0 = 1;
0x00001e44 ldr r2, [r4] | r2 = *(r4);
0x00001e46 add r1, pc | r1 = 0x44b0;
0x00001e48 blx 0x1290 | printf_chk ()
0x00001e4c b 0x1d76 | goto label_1;
0x00001e4e add r5, sp, 0x30 | r5 += var_30h;
0x00001e50 mov r0, r8 | r0 = r8;
0x00001e52 mov r1, r5 | r1 = r5;
0x00001e54 blx 0x1344 | dbus_message_iter_recurse ();
0x00001e58 ldr.w r0, [pc, 0x80c] |
0x00001e5a lsrs r4, r1, 0x20 | r4 = r1 >> 0x20;
0x00001e5c add r0, pc | r0 = 0x44c8;
0x00001e5e blx 0x11dc | puts (r0);
0x00001e62 ldr r6, [sp] | r6 = *(sp);
| do {
0x00001e64 mov r0, r5 | r0 = r5;
0x00001e66 blx 0x12fc | r0 = dbus_message_iter_get_arg_type ();
| if (r0 == 0) {
0x00001e6a cbz r0, 0x1e96 | goto label_19;
| }
| label_2:
0x00001e6c mov r2, fp | r2 = fp;
0x00001e6e mov r1, r6 | r1 = r6;
0x00001e70 mov r0, r5 | r0 = r5;
0x00001e72 bl 0x1cb4 | fcn_00001cb4 (r0, r1, r2);
0x00001e76 mov r0, r5 | r0 = r5;
0x00001e78 blx 0x123c | dbus_message_iter_next ();
0x00001e7c mov r0, r5 | r0 = r5;
0x00001e7e blx 0x12fc | r0 = dbus_message_iter_get_arg_type ();
0x00001e82 cmp r0, 0 |
0x00001e84 beq 0x1e64 |
| } while (r0 == 0);
0x00001e86 movs r0, 0x2c | r0 = 0x2c;
0x00001e88 blx 0x1278 | putchar (r0);
0x00001e8a ldrd r4, r6, [r6, 0xa0]! | __asm ("ldrd r4, r6, [r6, 0xa0]!");
0x00001e8e blx 0x12fc | r0 = dbus_message_iter_get_arg_type ();
0x00001e92 cmp r0, 0 |
| if (r0 != 0) {
0x00001e94 bne 0x1e6c | goto label_2;
| }
| label_19:
0x00001e96 cmp r7, 0 |
| if (r7 <= 0) {
0x00001e98 ble 0x1eae | goto label_20;
| }
0x00001e9a ldr.w r5, [pc, 0x7d0] |
0x00001e9e add r5, pc | r5 = 0x4510;
| do {
0x00001ea0 mov r1, r5 | r1 = r5;
0x00001ea2 subs r4, 1 | r4--;
0x00001ea4 movs r0, 1 | r0 = 1;
0x00001ea6 blx 0x1290 | printf_chk ()
0x00001eaa adds r1, r4, 1 | r1 = r4 + 1;
0x00001eac bne 0x1ea0 |
| } while (r1 != r4);
| label_20:
0x00001eae ldr.w r0, [pc, 0x7c0] |
0x00001eb2 add r0, pc | r0 = 0x4528;
0x00001eb4 blx 0x11dc | puts (r0);
0x00001eb8 b 0x1d76 | goto label_1;
0x00001eba add r4, sp, 0x30 | r4 += var_30h;
0x00001ebc mov r0, r8 | r0 = r8;
0x00001ebe mov r1, r4 | r1 = r4;
0x00001ec0 blx 0x1098 | dbus_message_iter_get_basic ();
0x00001ec4 ldr.w r1, [pc, 0x7ac] |
0x00001ec8 movs r0, 1 | r0 = 1;
0x00001eca ldrh.w r2, [sp, 0x30] | r2 = var_30h;
0x00001ece add r1, pc | r1 = 0x4546;
0x00001ed0 blx 0x1290 | printf_chk ()
0x00001ed4 b 0x1d76 | goto label_1;
0x00001ed6 add r4, sp, 0x30 | r4 += var_30h;
0x00001ed8 mov r0, r8 | r0 = r8;
0x00001eda mov r1, r4 | r1 = r4;
0x00001edc blx 0x1098 | dbus_message_iter_get_basic ();
0x00001ee0 ldr r3, [sp] | r3 = *(sp);
0x00001ee2 cmp r3, 0 |
| if (r3 == 0) {
0x00001ee4 beq.w 0x222c | goto label_21;
| }
0x00001ee6 strh r2, [r4, 0xc] | *((r4 + 0xc)) = r2;
0x00001ee8 ldr.w r1, [pc, 0x78c] |
0x00001eec movs r0, 1 | r0 = 1;
0x00001eee ldr r2, [r4] | r2 = *(r4);
0x00001ef0 add r1, pc | r1 = 0x456c;
0x00001ef2 blx 0x1290 | printf_chk ()
0x00001ef6 b 0x1d76 | goto label_1;
0x00001ef8 add r4, sp, 0x30 | r4 += var_30h;
0x00001efa mov r0, r8 | r0 = r8;
0x00001efc mov r1, r4 | r1 = r4;
0x00001efe blx 0x1098 | dbus_message_iter_get_basic ();
0x00001f02 ldr.w r1, [pc, 0x778] |
0x00001f06 movs r0, 1 | r0 = 1;
0x00001f08 ldrsh.w r2, [sp, 0x30] | r2 = var_30h;
0x00001f0c add r1, pc | r1 = 0x458e;
0x00001f0e blx 0x1290 | printf_chk ()
0x00001f10 strd lr, r7, [r0, 0xc0] | __asm ("strd lr, r7, [r0, 0xc0]");
0x00001f14 add r4, sp, 0x30 | r4 += var_30h;
0x00001f16 mov r0, r8 | r0 = r8;
0x00001f18 mov r1, r4 | r1 = r4;
0x00001f1a blx 0x1098 | dbus_message_iter_get_basic ();
0x00001f1e ldr.w r1, [pc, 0x760] |
0x00001f22 movs r0, 1 | r0 = 1;
0x00001f24 ldr r2, [sp, 0x30] | r2 = var_30h;
0x00001f26 add r1, pc | r1 = 0x45ac;
0x00001f28 blx 0x1290 | printf_chk ()
0x00001f2c b 0x1d76 | goto label_1;
0x00001f2e add r3, sp, 0x24 | r3 += var_24h;
0x00001f30 mov r0, r8 | r0 = r8;
0x00001f32 mov r4, r3 | r4 = r3;
0x00001f34 mov r1, r3 | r1 = r3;
0x00001f36 str r3, [sp, 0x10] | var_10h = r3;
0x00001f38 add r5, sp, 0x30 | r5 += var_30h;
0x00001f3a blx 0x1098 | dbus_message_iter_get_basic ();
0x00001f3e ldr r4, [r4] | r4 = *(r4);
0x00001f40 movs r2, 0x68 | r2 = 0x68;
0x00001f42 movs r1, 0 | r1 = 0;
0x00001f44 mov r0, r5 | r0 = r5;
0x00001f46 add.w sb, sp, 0x28 | sb += s2;
0x00001f4a str r4, [sp, 0x18] | var_18h = r4;
0x00001f4c blx 0x126c | memset (r0, r1, r2);
0x00001f50 ldr.w r0, [pc, 0x730] |
0x00001f54 movs r3, 0x80 | r3 = 0x80;
0x00001f56 add r2, sp, 0x2c | r2 += var_2ch;
0x00001f58 str.w r3, [sb] | __asm ("str.w r3, [sb]");
0x00001f5a adds r0, 0 | r0 += 0;
0x00001f5c str r2, [sp, 0xc] | var_ch = r2;
0x00001f5e add r0, pc | r0 = 0x45e6;
0x00001f60 str r3, [sp, 0x2c] | var_2ch = r3;
0x00001f62 blx 0x11dc | puts (r0);
0x00001f66 adds r2, r4, 1 | r2 = r4 + 1;
| if (r2 == r4) {
0x00001f68 beq 0x202c | goto label_6;
| }
0x00001f6a mov r1, r5 | r1 = r5;
0x00001f6c mov r0, r4 | r0 = r4;
0x00001f6e blx 0x13a4 | fstat64 ();
0x00001f72 adds r0, 1 | r0++;
| if (r0 == 1) {
0x00001f74 beq 0x202c | goto label_6;
| }
0x00001f76 adds r3, r7, 2 | r3 = r7 + 2;
0x00001f78 str.w fp, [sp, 0x1c] | __asm ("str.w fp, [var_1ch]");
0x00001f7c cmp r3, 0 |
0x00001f7e str r3, [sp, 0x14] | var_14h = r3;
| if (r3 <= 0) {
0x00001f80 ble.w 0x257c | goto label_22;
| }
0x00001f84 ldr.w r4, [pc, 0x700] |
0x00001f88 mov r6, fp | r6 = fp;
0x00001f8a add r4, pc | r4 = 0x4616;
| do {
0x00001f8c subs r6, 1 | r6--;
0x00001f8e mov r1, r4 | r1 = r4;
0x00001f90 movs r0, 1 | r0 = 1;
0x00001f92 blx 0x1290 | printf_chk ()
0x00001f96 adds r3, r6, 1 | r3 = r6 + 1;
0x00001f98 bne 0x1f8c |
| } while (r3 != r6);
0x00001f9a ldr.w r1, [pc, 0x6f0] |
0x00001f9e mov r6, fp | r6 = fp;
0x00001fa0 ldr r2, [r5, 0x60] | r2 = *((r5 + 0x60));
0x00001fa2 movs r0, 1 | r0 = 1;
0x00001fa4 add r1, pc | r1 = 0x4636;
0x00001fa6 blx 0x1290 | printf_chk ()
| do {
0x00001faa subs r6, 1 | r6--;
0x00001fac mov r1, r4 | r1 = r4;
0x00001fae movs r0, 1 | r0 = 1;
0x00001fb0 blx 0x1290 | printf_chk ()
0x00001fb4 adds r0, r6, 1 | r0 = r6 + 1;
0x00001fb6 bne 0x1faa |
| } while (r0 != r6);
| label_14:
0x00001fb8 ldr.w r1, [pc, 0x6d4] |
0x00001fbc movs r0, 1 | r0 = 1;
0x00001fbe add r1, pc | r1 = 0x4652;
0x00001fc0 blx 0x1290 | printf_chk ()
0x00001fc4 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x00001fc6 and r3, r3, 0xf000 | r3 &= 0xf000;
0x00001fca cmp.w r3, 0x8000 |
| if (r3 == 0x8000) {
0x00001fce beq.w 0x256c | goto label_23;
| }
| label_13:
0x00001fd2 cmp.w r3, 0x4000 |
| if (r3 == 0x4000) {
0x00001fd6 beq.w 0x255c | goto label_24;
| }
| label_12:
0x00001fda cmp.w r3, 0x2000 |
| if (r3 == 0x2000) {
0x00001fde beq.w 0x254c | goto label_25;
| }
| label_11:
0x00001fe2 cmp.w r3, 0x6000 |
| if (r3 == 0x6000) {
0x00001fe6 beq.w 0x253c | goto label_26;
| }
| label_10:
0x00001fea cmp.w r3, 0x1000 |
| if (r3 == 0x1000) {
0x00001fee beq.w 0x2522 | goto label_27;
| }
| label_8:
0x00001ff2 cmp.w r3, 0xa000 |
| if (r3 == 0xa000) {
0x00001ff6 beq.w 0x2512 | goto label_28;
| }
| label_7:
0x00001ffa cmp.w r3, 0xc000 |
| if (r3 == 0xc000) {
0x00001ffe beq.w 0x2532 | goto label_29;
| }
| label_9:
0x00002002 add r5, sp, 0x9c | r5 += s;
0x00002004 movs r2, 0x80 | r2 = 0x80;
0x00002006 movs r1, 0 | r1 = 0;
0x00002008 mov r0, r5 | r0 = r5;
0x0000200a add r4, sp, 0x11c | r4 += var_11ch;
0x0000200c blx 0x126c | memset (r0, r1, r2);
0x00002010 movs r2, 0x80 | r2 = 0x80;
0x00002012 movs r1, 0 | r1 = 0;
0x00002014 mov r0, r4 | r0 = r4;
0x00002016 blx 0x126c | memset (r0, r1, r2);
0x00002018 invalid |
0x0000201c mov r2, sb | r2 = sb;
0x0000201e mov r1, r5 | r1 = r5;
0x00002020 mov r0, r6 | r0 = r6;
0x00002022 blx 0x135c | r0 = getsockname (r0, r1, r2);
0x00002026 cmp r0, 0 |
| if (r0 == 0) {
0x00002028 beq.w 0x2318 | goto label_30;
| }
| label_6:
0x0000202c ldr r3, [sp, 0x10] | r3 = var_10h;
0x0000202e ldr r0, [r3] | r0 = *(r3);
0x00002030 blx 0x13e0 | close (r0);
0x00002034 b 0x1d76 | goto label_1;
0x00002036 add r4, sp, 0x30 | r4 += var_30h;
0x00002038 mov r0, r8 | r0 = r8;
0x0000203a mov r1, r4 | r1 = r4;
0x0000203c blx 0x1098 | dbus_message_iter_get_basic ();
0x00002040 ldr r3, [sp] | r3 = *(sp);
0x00002042 cmp r3, 0 |
| if (r3 == 0) {
0x00002044 beq.w 0x2206 | goto label_31;
| }
0x00002048 ldr.w r1, [pc, 0x648] |
0x0000204c movs r0, 1 | r0 = 1;
0x0000204e ldr r2, [r4] | r2 = *(r4);
0x00002050 add r1, pc | r1 = 0x46e8;
0x00002052 blx 0x1290 | printf_chk ()
0x00002056 b 0x1d76 | goto label_1;
0x00002058 add r5, sp, 0x30 | r5 += var_30h;
0x0000205a mov r0, r8 | r0 = r8;
0x0000205c mov r1, r5 | r1 = r5;
0x0000205e blx 0x1344 | dbus_message_iter_recurse ();
0x00002062 ldr.w r0, [pc, 0x634] |
0x00002066 add r0, pc | r0 = 0x4704;
0x00002068 blx 0x11dc | puts (r0);
0x0000206c ldr r6, [sp] | r6 = *(sp);
0x0000206e mov r2, fp | r2 = fp;
0x00002070 mov r0, r5 | r0 = r5;
0x00002072 mov r1, r6 | r1 = r6;
0x00002074 bl 0x1cb4 | fcn_00001cb4 (r0, r1, r2);
0x00002078 mov r0, r5 | r0 = r5;
0x0000207a blx 0x123c | dbus_message_iter_next ();
0x0000207e mov r2, fp | r2 = fp;
0x00002080 mov r1, r6 | r1 = r6;
0x00002082 mov r0, r5 | r0 = r5;
0x00002084 bl 0x1cb4 | fcn_00001cb4 (r0, r1, r2);
0x00002088 cmp r7, 0 |
| if (r7 <= 0) {
0x0000208a ble 0x20a0 | goto label_32;
| }
0x0000208c ldr.w r5, [pc, 0x60c] |
0x00002090 add r5, pc | r5 = 0x4730;
| do {
0x00002092 subs r4, 1 | r4--;
0x00002094 mov r1, r5 | r1 = r5;
0x00002096 movs r0, 1 | r0 = 1;
0x00002098 blx 0x1290 | printf_chk ()
0x0000209c adds r0, r4, 1 | r0 = r4 + 1;
0x0000209e bne 0x2092 |
| } while (r0 != r4);
| label_32:
0x000020a0 ldr.w r0, [pc, 0x5fc] | r0 = s;
0x000020a4 add r0, pc | r0 += pc;
0x000020a6 blx 0x11dc | puts (r0);
0x000020aa b 0x1d76 | goto label_1;
0x000020ac add r4, sp, 0x30 | r4 += var_30h;
0x000020ae mov r0, r8 | r0 = r8;
0x000020b0 mov r1, r4 | r1 = r4;
0x000020b2 blx 0x1098 | dbus_message_iter_get_basic ();
0x000020b6 ldr.w r1, [pc, 0x5ec] |
0x000020ba movs r0, 1 | r0 = 1;
0x000020bc ldrd r2, r3, [sp, 0x30] | __asm ("ldrd r2, r3, [var_30h]");
0x000020c0 add r1, pc | r1 = 0x476a;
0x000020c2 blx 0x1290 | printf_chk ()
0x000020c6 b 0x1d76 | goto label_1;
0x000020c8 add r4, sp, 0x30 | r4 += var_30h;
0x000020ca mov r0, r8 | r0 = r8;
0x000020cc mov r1, r4 | r1 = r4;
0x000020ce blx 0x1098 | dbus_message_iter_get_basic ();
0x000020d2 ldr r3, [sp, 0x30] | r3 = var_30h;
0x000020d4 cmp r3, 0 |
| if (r3 != 0) {
0x000020d6 bne 0x21d8 | goto label_33;
| }
0x000020d8 ldr.w r2, [pc, 0x5cc] |
0x000020dc add r2, pc | r2 = 0x4788;
| label_5:
0x000020de ldr.w r1, [pc, 0x5cc] |
0x000020e2 movs r0, 1 | r0 = 1;
0x000020e4 add r1, pc | r1 = 0x4796;
0x000020e6 blx 0x1290 | printf_chk ()
0x000020ea b 0x1d76 | goto label_1;
0x000020ec add r5, sp, 0x30 | r5 += var_30h;
0x000020ee mov r0, r8 | r0 = r8;
0x000020f0 mov r1, r5 | r1 = r5;
0x000020f2 blx 0x1344 | dbus_message_iter_recurse ();
0x000020f6 mov r0, r5 | r0 = r5;
0x000020f8 blx 0x12fc | r0 = dbus_message_iter_get_arg_type ();
0x000020fc cmp r0, 0x79 |
0x000020fe mov r6, r0 | r6 = r0;
| if (r0 != 0x79) {
0x00002100 bne.w 0x2252 | goto label_34;
| }
0x00002104 add r3, sp, 0x2c | r3 += var_2ch;
0x00002106 add.w sb, sp, 0x28 | sb += s2;
0x0000210a mov r0, r5 | r0 = r5;
0x0000210c mov r2, r3 | r2 = r3;
0x0000210e mov r5, r3 | r5 = r3;
0x00002110 mov r1, sb | r1 = sb;
0x00002112 str r3, [sp, 0xc] | var_ch = r3;
0x00002114 blx 0x1230 | dbus_message_iter_get_fixed_array ();
0x00002116 invalid |
0x0000211a cmp r5, 0 |
| if (r5 <= 0) {
0x0000211c ble.w 0x22e4 | goto label_35;
| }
0x00002120 ldr.w r3, [sb] | r3 = *(sb);
0x00002124 add.w lr, r5, -1 | lr = r5 + -1;
0x00002128 mov r2, r3 | r2 = r3;
0x0000212a str r3, [sp, 0x10] | var_10h = r3;
0x0000212c subs r6, r2, 1 | r6 = r2 - 1;
0x0000212e movs r3, 0 | r3 = 0;
0x00002130 mov r0, r6 | r0 = r6;
0x00002132 b 0x213c |
| while (r1 < 0x5e) {
| label_3:
0x00002134 adds r3, 1 | r3++;
0x00002136 cmp r5, r3 |
| if (r5 == r3) {
0x00002138 beq.w 0x22d8 | goto label_36;
| }
0x0000213c ldrb r2, [r0, 1]! | r2 = *((r0 += 1));
0x00002140 sub.w r1, r2, 0x20 | r1 = r2 - 0x20;
0x00002144 cmp r1, 0x5e |
0x00002146 bls 0x2134 |
| }
0x00002148 cmp lr, r3 |
0x0000214a it le |
| if (lr > r3) {
0x0000214c cmple r2, 0 | __asm ("cmple r2, 0");
| goto label_37;
| }
| if (lr == r3) {
| label_37:
0x0000214e beq 0x2134 | goto label_3;
| }
0x00002150 ldr.w r0, [pc, 0x55c] | r0 = s;
0x00002154 add r0, pc | r0 += pc;
0x00002156 blx 0x11dc | puts (r0);
0x0000215a cmp.w fp, 0 |
| if (fp <= 0) {
0x0000215e ble 0x2180 | goto label_38;
| }
0x00002160 ldr.w r1, [pc, 0x550] |
0x00002164 mov sb, r7 | sb = r7;
0x00002166 str r4, [sp, 0xc] | var_ch = r4;
0x00002168 add r1, pc | r1 = 0x4820;
0x0000216a mov r4, r1 | r4 = r1;
| do {
0x0000216c add.w sb, sb, -1 | sb += -1;
0x00002170 mov r1, r4 | r1 = r4;
0x00002172 movs r0, 1 | r0 = 1;
0x00002174 blx 0x1290 | printf_chk ()
0x00002178 cmp.w sb, -1 |
0x0000217c bne 0x216c |
| } while (sb != -1);
0x0000217e ldr r4, [sp, 0xc] | r4 = var_ch;
| label_38:
0x00002180 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00002182 str r4, [sp, 0x14] | var_14h = r4;
0x00002184 adds r2, r3, r5 | r2 = r3 + r5;
0x00002186 ldr.w r5, [pc, 0x530] |
0x0000218a rsb.w r3, r3, 1 | r3 = 1 - r3;
0x0000218e str r3, [sp, 0x10] | var_10h = r3;
0x00002190 subs r3, r2, 1 | r3 = r2 - 1;
0x00002192 add r5, pc | r5 = 0x4850;
0x00002194 str r3, [sp, 0xc] | var_ch = r3;
| do {
| label_4:
0x00002196 ldrb r2, [r6, 1]! | r2 = *((r6 += 1));
0x0000219a mov r1, r5 | r1 = r5;
0x0000219c movs r0, 1 | r0 = 1;
0x0000219e blx 0x1290 | printf_chk ()
0x000021a0 ldrd sb, fp, [r8], -0x10 | __asm ("ldrd sb, fp, [r8], -0x10");
0x000021a4 adds r0, r3, r6 | r0 = r3 + r6;
0x000021a6 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000021a8 cmp r3, r6 |
| if (r3 == r6) {
0x000021aa beq 0x22ac | goto label_39;
| }
0x000021ac ldr r1, [sp, 4] | r1 = var_4h;
0x000021ae bl 0x2ff4 | fcn_00002ff4 (r0);
0x000021b2 cmp r1, 0 |
| if (r1 != 0) {
0x000021b4 bne 0x2280 | goto label_40;
| }
0x000021b6 movs r0, 0xa | r0 = 0xa;
0x000021b8 blx 0x1278 | putchar (r0);
0x000021ba invalid |
0x000021be lsrs r0, r0, 0x1c | r0 >>= 0x1c;
0x000021c0 ble 0x2196 |
| } while (r0 <= r0);
0x000021c2 ldr.w sb, [sp, 8] | sb = var_8h;
0x000021c6 mov r4, r7 | r4 = r7;
| do {
0x000021c8 subs r4, 1 | r4--;
0x000021ca mov r1, sb | r1 = sb;
0x000021cc movs r0, 1 | r0 = 1;
0x000021ce blx 0x1290 | printf_chk ()
0x000021d2 adds r2, r4, 1 | r2 = r4 + 1;
0x000021d4 bne 0x21c8 |
| } while (r2 != r4);
0x000021d6 b 0x2196 | goto label_4;
| label_33:
0x000021d8 ldr.w r2, [pc, 0x4e0] |
0x000021dc add r2, pc | r2 = 0x489c;
0x000021de b 0x20de | goto label_5;
| label_18:
0x000021e0 ldr.w r1, [pc, 0x4dc] |
0x000021e4 movs r0, 1 | r0 = 1;
0x000021e6 add r1, pc | r1 = 0x48aa;
0x000021e8 blx 0x1290 | printf_chk ()
0x000021ec ldr.w r1, [pc, 0x4d4] |
0x000021f0 movs r0, 1 | r0 = 1;
0x000021f2 ldr r2, [r4] | r2 = *(r4);
0x000021f4 add r1, pc | r1 = 0x48bc;
0x000021f6 blx 0x1290 | printf_chk ()
0x000021fa ldr.w r0, [pc, 0x4cc] |
0x000021fe add r0, pc | r0 = 0x48cc;
0x00002200 blx 0x11dc | puts (r0);
0x00002204 b 0x1d76 | goto label_1;
| label_31:
0x00002206 ldr.w r1, [pc, 0x4c4] |
0x0000220a movs r0, 1 | r0 = 1;
0x0000220c add r1, pc | r1 = 0x48de;
0x0000220e blx 0x1290 | printf_chk ()
0x00002212 ldr.w r1, [pc, 0x4bc] |
0x00002216 movs r0, 1 | r0 = 1;
0x00002218 ldr r2, [r4] | r2 = *(r4);
0x0000221a add r1, pc | r1 = 0x48f0;
0x0000221c blx 0x1290 | printf_chk ()
0x00002220 ldr.w r0, [pc, 0x4b0] |
0x00002224 add r0, pc | r0 = 0x48fc;
0x00002226 blx 0x11dc | puts (r0);
0x0000222a b 0x1d76 | goto label_1;
| label_21:
0x0000222c ldr.w r1, [pc, 0x4a8] |
0x00002230 movs r0, 1 | r0 = 1;
0x00002232 add r1, pc |
0x00002234 blx 0x1290 | printf_chk ()
0x00002238 ldr.w r1, [pc, 0x4a0] | r1 = s;
0x0000223c movs r0, 1 | r0 = 1;
0x0000223e ldr r2, [r4] | r2 = *(r4);
0x00002240 add r1, pc | r1 = 0x6b52;
0x00002242 blx 0x1290 | printf_chk ()
0x00002246 ldr.w r0, [pc, 0x498] |
0x0000224a add r0, pc | r0 = 0x4930;
0x0000224c blx 0x11dc | puts (r0);
0x00002250 b 0x1d76 | goto label_1;
| label_34:
0x00002252 ldr.w r0, [pc, 0x490] |
0x00002256 add r0, pc | r0 = 0x4940;
0x00002258 blx 0x11dc | puts (r0);
| if (r6 == 0) {
0x0000225c cbz r6, 0x2288 | goto label_41;
| }
0x0000225e ldr r6, [sp] | r6 = *(sp);
| do {
0x00002260 mov r2, fp | r2 = fp;
0x00002262 mov r1, r6 | r1 = r6;
0x00002264 mov r0, r5 | r0 = r5;
0x00002266 bl 0x1cb4 | fcn_00001cb4 (r0, r1, r2);
0x0000226a mov r0, r5 | r0 = r5;
0x0000226c blx 0x123c | dbus_message_iter_next ();
0x00002270 mov r0, r5 | r0 = r5;
0x00002272 blx 0x12fc | r0 = dbus_message_iter_get_arg_type ();
| if (r0 == 0) {
0x00002276 cbz r0, 0x2288 | goto label_41;
| }
0x00002278 movs r0, 0x2c | r0 = 0x2c;
0x0000227a blx 0x1278 | putchar (r0);
0x0000227e b 0x2260 |
| } while (1);
| label_40:
0x00002280 movs r0, 0x20 | r0 = 0x20;
0x00002282 blx 0x1278 | putchar (r0);
0x00002284 vext.8 d30, d26, d6, 7 | __asm ("vext.8 d30, d26, d6, 7");
| label_41:
0x00002288 cmp r7, 0 |
| if (r7 <= 0) {
0x0000228a ble 0x22a0 | goto label_42;
| }
0x0000228c ldr.w r5, [pc, 0x458] |
0x00002290 add r5, pc | r5 = 0x497c;
| do {
0x00002292 subs r4, 1 | r4--;
0x00002294 mov r1, r5 | r1 = r5;
0x00002296 movs r0, 1 | r0 = 1;
0x00002298 blx 0x1290 | printf_chk ()
0x0000229c adds r6, r4, 1 | r6 = r4 + 1;
0x0000229e bne 0x2292 |
| } while (r6 != r4);
| label_42:
0x000022a0 ldr.w r0, [pc, 0x448] |
0x000022a4 add r0, pc | r0 = 0x4994;
0x000022a6 blx 0x11dc | puts (r0);
0x000022aa b 0x1d76 | goto label_1;
| label_39:
0x000022ac movs r0, 0xa | r0 = 0xa;
0x000022ae ldr r4, [sp, 0x14] | r4 = var_14h;
0x000022b0 blx 0x1278 | putchar (r0);
0x000022b4 cmp r7, 0 |
| if (r7 <= 0) {
0x000022b6 ble 0x22cc | goto label_43;
| }
0x000022b8 ldr.w r5, [pc, 0x434] |
0x000022bc add r5, pc | r5 = 0x49b0;
| do {
0x000022be subs r4, 1 | r4--;
0x000022c0 mov r1, r5 | r1 = r5;
0x000022c2 movs r0, 1 | r0 = 1;
0x000022c4 blx 0x1290 | printf_chk ()
0x000022c8 adds r3, r4, 1 | r3 = r4 + 1;
0x000022ca bne 0x22be |
| } while (r3 != r4);
| label_43:
0x000022cc ldr.w r0, [pc, 0x424] |
0x000022d0 add r0, pc | r0 = 0x49c8;
0x000022d2 blx 0x11dc | puts (r0);
0x000022d6 b 0x1d76 | goto label_1;
| label_36:
0x000022d8 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000022da add r3, r5 | r3 += r5;
0x000022dc ldrb r3, [r3, -0x1] | r3 = *((r3 - 0x1));
0x000022e0 cmp r3, 0 |
| if (r3 == 0) {
0x000022e2 beq 0x2380 | goto label_44;
| }
| label_35:
0x000022e4 adds r0, r5, 1 | r0 = r5 + 1;
0x000022e6 blx 0x11d0 | r0 = dbus_malloc ();
0x000022ea mov r4, r0 | r4 = r0;
0x000022ec cmp r0, 0 |
| if (r0 == 0) {
0x000022ee beq.w 0x2606 | goto label_45;
| }
0x000022f2 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000022f4 ldr.w r1, [sb] | r1 = *(sb);
0x000022f8 ldr r5, [r3] | r5 = *(r3);
0x000022fa mov r2, r5 | r2 = r5;
0x000022fc blx 0x1140 | memcpy (r0, r1, r2);
0x00002300 ldr r1, [pc, 0x3f4] |
0x00002302 movs r3, 0 | r3 = 0;
0x00002304 mov r2, r4 | r2 = r4;
0x00002306 strb r3, [r4, r5] | *((r4 + r5)) = r3;
0x00002308 movs r0, 1 | r0 = 1;
0x0000230a add r1, pc | r1 = 0x4a06;
0x0000230c blx 0x1290 | printf_chk ()
0x00002310 mov r0, r4 | r0 = r4;
0x00002312 blx 0x13b0 | dbus_free ();
0x00002316 b 0x1d76 | goto label_1;
| label_30:
0x00002318 ldr r2, [sp, 0xc] | r2 = var_ch;
0x0000231a mov r1, r4 | r1 = r4;
0x0000231c mov r0, r6 | r0 = r6;
0x0000231e blx 0x1374 | getpeername ();
0x00002322 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00002324 str r0, [sp, 0xc] | var_ch = r0;
0x00002326 cmp r3, 0 |
| if (r3 <= 0) {
0x00002328 ble 0x233e | goto label_46;
| }
0x0000232a ldr r6, [pc, 0x3d0] |
0x0000232c mov r4, fp | r4 = fp;
0x0000232e add r6, pc | r6 = 0x4a30;
| do {
0x00002330 mov r1, r6 | r1 = r6;
0x00002332 subs r4, 1 | r4--;
0x00002334 movs r0, 1 | r0 = 1;
0x00002336 blx 0x1290 | printf_chk ()
0x0000233a adds r1, r4, 1 | r1 = r4 + 1;
0x0000233c bne 0x2330 |
| } while (r1 != r4);
| label_46:
0x0000233e ldr r1, [pc, 0x3c0] |
0x00002340 movs r0, 1 | r0 = 1;
0x00002342 add r1, pc | r1 = 0x4a48;
0x00002344 blx 0x1290 | printf_chk ()
0x00002348 ldrh r2, [r5] | r2 = *(r5);
0x0000234a subs r3, r2, 1 | r3 = r2 - 1;
0x0000234c cmp r3, 0x1e |
| if (r3 <= 0x1e) {
0x0000234e bhi 0x2374 |
| /* switch table (31 cases) at 0x2354 */
0x00002350 tbb [pc, r3] | __asm ("tbb [0x00002358]");
| }
0x00002374 ldr r1, [pc, 0x38c] |
0x00002376 movs r0, 1 | r0 = 1;
0x00002378 add r1, pc | r1 = 0x4a80;
0x0000237a blx 0x1290 | printf_chk ()
0x0000237e b 0x202c | goto label_6;
| label_44:
0x00002380 ldr r1, [pc, 0x384] |
0x00002382 movs r0, 1 | r0 = 1;
0x00002384 ldr r2, [sp, 0x10] | r2 = var_10h;
0x00002386 add r1, pc | r1 = 0x4a92;
0x00002388 blx 0x1290 | printf_chk ()
0x0000238c b 0x1d76 | goto label_1;
0x0000238e ldr r0, [pc, 0x37c] |
0x00002390 add r0, pc | r0 = 0x4aa2;
0x00002392 blx 0x11dc | puts (r0);
0x00002396 b 0x202c | goto label_6;
0x00002398 ldr r0, [pc, 0x374] |
0x0000239a add r4, sp, 0x19c | r4 += var_19ch;
0x0000239c add r0, pc | r0 = 0x4ab0;
0x0000239e blx 0x11dc | puts (r0);
0x000023a2 movs r3, 0x2e | r3 = 0x2e;
0x000023a4 mov r2, r4 | r2 = r4;
0x000023a6 add r1, sp, 0xa4 | r1 += var_a4h;
0x000023a8 movs r0, 0xa | r0 = 0xa;
0x000023aa blx 0x1398 | r0 = inet_ntop ();
| if (r0 == 0) {
0x000023ae cbz r0, 0x23e2 | goto label_47;
| }
0x000023b0 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000023b2 cmp r3, 0 |
| if (r3 <= 0) {
0x000023b4 ble 0x23d0 | goto label_48;
| }
0x000023b6 ldr r1, [pc, 0x35c] |
0x000023b8 mov sb, fp | sb = fp;
0x000023ba add r1, pc | r1 = 0x4ad4;
0x000023bc mov r6, r1 | r6 = r1;
| do {
0x000023be add.w sb, sb, -1 | sb += -1;
0x000023c2 mov r1, r6 | r1 = r6;
0x000023c4 movs r0, 1 | r0 = 1;
0x000023c6 blx 0x1290 | printf_chk ()
0x000023ca cmp.w sb, -1 |
0x000023ce bne 0x23be |
| } while (sb != -1);
| label_48:
0x000023d0 ldrh r3, [r5, 2] | r3 = *((r5 + 2));
0x000023d2 mov r2, r4 | r2 = r4;
0x000023d4 ldr r1, [pc, 0x340] |
0x000023d6 movs r0, 1 | r0 = 1;
0x000023d8 rev16 r3, r3 | __asm ("rev16 r3, r3");
0x000023da uxth r3, r3 | r3 = (int16_t) r3;
0x000023dc add r1, pc | r1 = 0x4af8;
0x000023de blx 0x1290 | printf_chk ()
| label_47:
0x000023e2 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000023e4 cmp r3, 0 |
| if (r3 != 0) {
0x000023e6 bne.w 0x202c | goto label_6;
| }
0x000023ea movs r3, 0x2e | r3 = 0x2e;
0x000023ec mov r2, r4 | r2 = r4;
0x000023ee add r1, sp, 0x124 | r1 += var_124h;
0x000023f0 movs r0, 0xa | r0 = 0xa;
0x000023f2 blx 0x1398 | r0 = inet_ntop ();
0x000023f6 cmp r0, 0 |
| if (r0 == 0) {
0x000023f8 beq.w 0x202c | goto label_6;
| }
0x000023fc ldr r3, [sp, 0x14] | r3 = var_14h;
0x000023fe cmp r3, 0 |
| if (r3 <= 0) {
0x00002400 ble 0x2416 | goto label_49;
| }
0x00002402 ldr r5, [pc, 0x318] |
0x00002404 ldr r6, [sp, 0x1c] | r6 = var_1ch;
0x00002406 add r5, pc | r5 = 0x4b28;
| do {
0x00002408 subs r6, 1 | r6--;
0x0000240a mov r1, r5 | r1 = r5;
0x0000240c movs r0, 1 | r0 = 1;
0x0000240e blx 0x1290 | printf_chk ()
0x00002412 adds r3, r6, 1 | r3 = r6 + 1;
0x00002414 bne 0x2408 |
| } while (r3 != r6);
| label_49:
0x00002416 ldrh.w r3, [sp, 0x11e] | r3 = var_11eh;
0x0000241a mov r2, r4 | r2 = r4;
0x0000241c ldr r1, [pc, 0x300] |
0x0000241e movs r0, 1 | r0 = 1;
0x00002420 rev16 r3, r3 | __asm ("rev16 r3, r3");
0x00002422 uxth r3, r3 | r3 = (int16_t) r3;
0x00002424 add r1, pc | r1 = 0x4b48;
0x00002426 blx 0x1290 | printf_chk ()
0x0000242a b 0x202c | goto label_6;
0x0000242c ldr r0, [pc, 0x2f4] |
0x0000242e add r4, sp, 0x19c | r4 += var_19ch;
0x00002430 add r0, pc | r0 = 0x4b58;
0x00002432 blx 0x11dc | puts (r0);
0x00002436 movs r3, 0x2e | r3 = 0x2e;
0x00002438 mov r2, r4 | r2 = r4;
0x0000243a add r1, sp, 0xa0 | r1 += var_a0h;
0x0000243c movs r0, 2 | r0 = 2;
0x0000243e blx 0x1398 | r0 = inet_ntop ();
| if (r0 == 0) {
0x00002442 cbz r0, 0x2476 | goto label_50;
| }
0x00002444 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00002446 cmp r3, 0 |
| if (r3 <= 0) {
0x00002448 ble 0x2464 | goto label_51;
| }
0x0000244a ldr r1, [pc, 0x2dc] |
0x0000244c mov sb, fp | sb = fp;
0x0000244e add r1, pc | r1 = 0x4b7c;
0x00002450 mov r6, r1 | r6 = r1;
| do {
0x00002452 add.w sb, sb, -1 | sb += -1;
0x00002456 mov r1, r6 | r1 = r6;
0x00002458 movs r0, 1 | r0 = 1;
0x0000245a blx 0x1290 | printf_chk ()
0x0000245e cmp.w sb, -1 |
0x00002462 bne 0x2452 |
| } while (sb != -1);
| label_51:
0x00002464 ldrh r3, [r5, 2] | r3 = *((r5 + 2));
0x00002466 mov r2, r4 | r2 = r4;
0x00002468 ldr r1, [pc, 0x2c0] |
0x0000246a movs r0, 1 | r0 = 1;
0x0000246c rev16 r3, r3 | __asm ("rev16 r3, r3");
0x0000246e uxth r3, r3 | r3 = (int16_t) r3;
0x00002470 add r1, pc | r1 = 0x4ba0;
0x00002472 blx 0x1290 | printf_chk ()
| label_50:
0x00002476 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00002478 cmp r3, 0 |
| if (r3 != 0) {
0x0000247a bne.w 0x202c | goto label_6;
| }
0x0000247e movs r3, 0x2e | r3 = 0x2e;
0x00002480 mov r2, r4 | r2 = r4;
0x00002482 add r1, sp, 0x120 | r1 += var_120h;
0x00002484 movs r0, 2 | r0 = 2;
0x00002486 blx 0x1398 | r0 = inet_ntop ();
0x0000248a cmp r0, 0 |
| if (r0 == 0) {
0x0000248c beq.w 0x202c | goto label_6;
| }
0x00002490 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00002492 cmp r3, 0 |
| if (r3 <= 0) {
0x00002494 ble 0x24aa | goto label_52;
| }
0x00002496 ldr r5, [pc, 0x298] |
0x00002498 ldr r6, [sp, 0x1c] | r6 = var_1ch;
0x0000249a add r5, pc | r5 = 0x4bd0;
| do {
0x0000249c subs r6, 1 | r6--;
0x0000249e mov r1, r5 | r1 = r5;
0x000024a0 movs r0, 1 | r0 = 1;
0x000024a2 blx 0x1290 | printf_chk ()
0x000024a6 adds r2, r6, 1 | r2 = r6 + 1;
0x000024a8 bne 0x249c |
| } while (r2 != r6);
| label_52:
0x000024aa ldrh.w r3, [sp, 0x11e] | r3 = var_11eh;
0x000024ae mov r2, r4 | r2 = r4;
0x000024b0 ldr r1, [pc, 0x280] |
0x000024b2 movs r0, 1 | r0 = 1;
0x000024b4 rev16 r3, r3 | __asm ("rev16 r3, r3");
0x000024b6 uxth r3, r3 | r3 = (int16_t) r3;
0x000024b8 add r1, pc | r1 = 0x4bf0;
0x000024ba blx 0x1290 | printf_chk ()
0x000024be b 0x202c | goto label_6;
0x000024c0 ldr r0, [pc, 0x274] |
0x000024c2 add r0, pc | r0 = 0x4bfe;
0x000024c4 blx 0x11dc | puts (r0);
0x000024c8 ldrb r3, [r5, 2] | r3 = *((r5 + 2));
0x000024ca cmp r3, 0 |
| if (r3 == 0) {
0x000024cc beq 0x258a | goto label_53;
| }
0x000024ce ldr r3, [sp, 0x14] | r3 = var_14h;
0x000024d0 cmp r3, 0 |
| if (r3 <= 0) {
0x000024d2 ble.w 0x2612 | goto label_54;
| }
0x000024d6 ldr r4, [pc, 0x264] |
0x000024d8 mov r5, fp | r5 = fp;
0x000024da add r4, pc | r4 = 0x4c1c;
| do {
0x000024dc subs r5, 1 | r5--;
0x000024de mov r1, r4 | r1 = r4;
0x000024e0 movs r0, 1 | r0 = 1;
0x000024e2 blx 0x1290 | printf_chk ()
0x000024e6 adds r0, r5, 1 | r0 = r5 + 1;
0x000024e8 bne 0x24dc |
| } while (r0 != r5);
0x000024ea ldr r1, [pc, 0x254] |
0x000024ec add.w r2, sp, 0x9e | r2 += var_9eh;
0x000024f0 movs r0, 1 | r0 = 1;
0x000024f2 add r1, pc | r1 = 0x4c38;
0x000024f4 blx 0x1290 | printf_chk ()
0x000024f8 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000024fa ldr r5, [sp, 0x1c] | r5 = var_1ch;
0x000024fc cmp r3, 0 |
| if (r3 != 0) {
0x000024fe bne.w 0x202c | goto label_6;
| }
| do {
0x00002502 mov r1, r4 | r1 = r4;
0x00002504 subs r5, 1 | r5--;
0x00002506 movs r0, 1 | r0 = 1;
0x00002508 blx 0x1290 | printf_chk ()
0x0000250c adds r1, r5, 1 | r1 = r5 + 1;
0x0000250e bne 0x2502 |
| } while (r1 != r5);
0x00002510 b 0x2628 | goto label_55;
| label_28:
0x00002512 ldr r0, [pc, 0x230] |
0x00002514 add r0, pc | r0 = 0x4c5e;
0x00002516 blx 0x11dc | puts (r0);
0x0000251a ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x0000251c and r3, r3, 0xf000 | r3 &= 0xf000;
0x00002520 b 0x1ffa | goto label_7;
| label_27:
0x00002522 ldr r0, [pc, 0x224] |
0x00002524 add r0, pc | r0 = 0x4c72;
0x00002526 blx 0x11dc | puts (r0);
0x0000252a ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x0000252c and r3, r3, 0xf000 | r3 &= 0xf000;
0x00002530 b 0x1ff2 | goto label_8;
| label_29:
0x00002532 ldr r0, [pc, 0x218] |
0x00002534 add r0, pc | r0 = 0x4c86;
0x00002536 blx 0x11dc | puts (r0);
0x0000253a b 0x2002 | goto label_9;
| label_26:
0x0000253c ldr r0, [pc, 0x210] |
0x0000253e add r0, pc | r0 = 0x4c92;
0x00002540 blx 0x11dc | puts (r0);
0x00002544 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x00002546 and r3, r3, 0xf000 | r3 &= 0xf000;
0x0000254a b 0x1fea | goto label_10;
| label_25:
0x0000254c ldr r0, [pc, 0x204] |
0x0000254e add r0, pc | r0 = 0x4ca6;
0x00002550 blx 0x11dc | puts (r0);
0x00002554 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x00002556 and r3, r3, 0xf000 | r3 &= 0xf000;
0x0000255a b 0x1fe2 | goto label_11;
| label_24:
0x0000255c ldr r0, [pc, 0x1f8] |
0x0000255e add r0, pc | r0 = 0x4cba;
0x00002560 blx 0x11dc | puts (r0);
0x00002564 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x00002566 and r3, r3, 0xf000 | r3 &= 0xf000;
0x0000256a b 0x1fda | goto label_12;
| label_23:
0x0000256c ldr r0, [pc, 0x1ec] |
0x0000256e add r0, pc | r0 = 0x4cce;
0x00002570 blx 0x11dc | puts (r0);
0x00002574 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x00002576 and r3, r3, 0xf000 | r3 &= 0xf000;
0x0000257a b 0x1fd2 | goto label_13;
| label_22:
0x0000257c ldr r1, [pc, 0x1e0] |
0x0000257e movs r0, 1 | r0 = 1;
0x00002580 ldr r2, [r5, 0x60] | r2 = *((r5 + 0x60));
0x00002582 add r1, pc | r1 = 0x4ce6;
0x00002584 blx 0x1290 | printf_chk ()
0x00002588 b 0x1fb8 | goto label_14;
| label_53:
0x0000258a ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000258c cmp r3, 0 |
| if (r3 <= 0) {
0x0000258e ble 0x25d4 | goto label_56;
| }
0x00002590 ldr r4, [pc, 0x1d0] |
0x00002592 mov r5, fp | r5 = fp;
0x00002594 add r4, pc | r4 = 0x4cfc;
| do {
0x00002596 subs r5, 1 | r5--;
0x00002598 mov r1, r4 | r1 = r4;
0x0000259a movs r0, 1 | r0 = 1;
0x0000259c blx 0x1290 | printf_chk ()
0x000025a0 adds r2, r5, 1 | r2 = r5 + 1;
0x000025a2 bne 0x2596 |
| } while (r2 != r5);
0x000025a4 ldr.w r2, [sb] | r2 = *(sb);
0x000025a8 add.w r5, sp, 0x9f | r5 += var_9fh;
0x000025ac ldr r1, [pc, 0x1b8] |
0x000025ae mov r3, r5 | r3 = r5;
0x000025b0 movs r0, 1 | r0 = 1;
0x000025b2 subs r2, 3 | r2 -= 3;
0x000025b4 add r1, pc | r1 = 0x4d20;
0x000025b6 blx 0x1290 | printf_chk ()
0x000025ba ldr r3, [sp, 0xc] | r3 = var_ch;
0x000025bc ldr r6, [sp, 0x1c] | r6 = var_1ch;
0x000025be cmp r3, 0 |
| if (r3 != 0) {
0x000025c0 bne.w 0x202c | goto label_6;
| }
| do {
0x000025c4 subs r6, 1 | r6--;
0x000025c6 mov r1, r4 | r1 = r4;
0x000025c8 movs r0, 1 | r0 = 1;
0x000025ca blx 0x1290 | printf_chk ()
0x000025ce adds r3, r6, 1 | r3 = r6 + 1;
0x000025d0 bne 0x25c4 |
| } while (r3 != r6);
0x000025d2 b 0x25f2 | goto label_57;
| label_56:
0x000025d4 ldr.w r2, [sb] | r2 = *(sb);
0x000025d8 add.w r5, sp, 0x9f | r5 += var_9fh;
0x000025dc ldr r1, [pc, 0x18c] |
0x000025de mov r3, r5 | r3 = r5;
0x000025e0 movs r0, 1 | r0 = 1;
0x000025e2 subs r2, 3 | r2 -= 3;
0x000025e4 add r1, pc | r1 = 0x4d54;
0x000025e6 blx 0x1290 | printf_chk ()
0x000025ea ldr r3, [sp, 0xc] | r3 = var_ch;
0x000025ec cmp r3, 0 |
| if (r3 != 0) {
0x000025ee bne.w 0x202c | goto label_6;
| }
| label_57:
0x000025f2 ldr.w r2, [sb] | r2 = *(sb);
0x000025f6 mov r3, r5 | r3 = r5;
0x000025f8 ldr r1, [pc, 0x174] |
0x000025fa movs r0, 1 | r0 = 1;
0x000025fc subs r2, 3 | r2 -= 3;
0x000025fe add r1, pc | r1 = 0x4d72;
0x00002600 blx 0x1290 | printf_chk ()
0x00002604 b 0x202c | goto label_6;
| label_45:
0x00002606 ldr r0, [pc, 0x16c] |
0x00002608 add r0, pc | r0 = 0x4d82;
0x0000260a bl 0x2d28 | r0 = fcn_00002d28 (r0);
| label_17:
0x0000260e blx 0x1164 | stack_chk_fail ();
| label_54:
0x00002612 ldr r1, [pc, 0x164] |
0x00002614 add.w r2, sp, 0x9e | r2 += var_9eh;
0x00002616 lsls r6, r3, 0xa | r6 = r3 << 0xa;
0x00002618 movs r0, 1 | r0 = 1;
0x0000261a add r1, pc | r1 = 0x4d98;
0x0000261c blx 0x1290 | printf_chk ()
0x00002620 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00002622 cmp r3, 0 |
| if (r3 != 0) {
0x00002624 bne.w 0x202c | goto label_6;
| }
| label_55:
0x00002628 ldr r1, [pc, 0x150] |
0x0000262a add.w r2, sp, 0x11e | r2 += var_11eh;
0x0000262e movs r0, 1 | r0 = 1;
0x00002630 add r1, pc | r1 = 0x4db0;
0x00002632 blx 0x1290 | printf_chk ()
0x00002636 b 0x202c | goto label_6;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/dbus-send @ 0x2780 */
| #include <stdint.h>
|
; (fcn) fcn.00002780 () | void fcn_00002780 (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;
0x00002780 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00002784 mov sl, r2 | sl = r2;
0x00002786 ldr r2, [pc, 0x1c8] |
0x00002788 mov sb, r3 | sb = r3;
0x0000278a sub sp, 0x50 |
0x0000278c mov r4, r0 | r4 = r0;
0x0000278e ldr r3, [pc, 0x1c4] | r3 = *(0x2956);
0x00002790 mov r6, r1 | r6 = r1;
0x00002792 add r2, pc | r2 = 0x50e8;
0x00002794 ldr.w r8, [pc, 0x1c0] | r8 = *(0x00002958);
0x00002798 ldr r3, [r2, r3] |
0x0000279a add r8, pc | r8 += pc;
0x0000279c ldr r3, [r3] | r3 = *(0x50e8);
0x0000279e str r3, [sp, 0x4c] | var_4ch = r3;
0x000027a0 mov.w r3, 0 | r3 = 0;
0x000027a4 blx 0x13bc | r0 = dbus_message_get_type ();
0x000027a8 mov r5, r0 | r5 = r0;
0x000027aa mov r0, r4 | r0 = r4;
0x000027ac blx 0x10ec | r0 = dbus_message_get_sender ();
0x000027b0 mov r7, r0 | r7 = r0;
0x000027b2 mov r0, r4 | r0 = r4;
0x000027b4 blx 0x1134 | dbus_message_get_destination ();
| if (r6 == 0) {
0x000027b8 cbnz r6, 0x2802 |
0x000027ba orrs.w r3, sl, sb | r3 = sl | sb;
0x000027be add.w r5, r5, -1 | r5 += -1;
| if (r3 == sl) {
0x000027c2 beq 0x283c | goto label_8;
| }
0x000027c4 cmp r5, 3 |
| if (r5 > 3) {
0x000027c6 bhi.w 0x2946 | goto label_9;
| }
| /* switch table (4 cases) at 0x27ce */
0x000027ca tbb [pc, r5] | __asm ("tbb [0x000027d0]");
| }
| label_7:
0x00002802 mov r0, r4 | r0 = r4;
0x00002804 add r4, sp, 0x14 | r4 += var_14h;
0x00002806 mov r1, r4 | r1 = r4;
0x00002808 blx 0x1380 | dbus_message_iter_init ();
0x0000280c movs r2, 1 | r2 = 1;
0x0000280e mov r0, r4 | r0 = r4;
0x00002810 mov r1, r6 | r1 = r6;
0x00002812 bl 0x1cb4 | fcn_00001cb4 (r0, r1, r2);
0x00002816 ldr r3, [pc, 0x148] | r3 = *(0x2962);
0x00002818 ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x0000281c ldr r0, [r3] | r0 = *(0x2962);
0x0000281e blx 0x111c | fflush (r0);
0x00002822 ldr r2, [pc, 0x140] |
0x00002824 ldr r3, [pc, 0x12c] | r3 = *(0x2954);
0x00002826 add r2, pc | r2 = 0x5190;
0x00002828 ldr r3, [r2, r3] | r3 = *(0x5190);
0x0000282a ldr r2, [r3] | r2 = *(0x5190);
0x0000282c ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0000282e eors r2, r3 | r2 ^= r3;
0x00002830 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00002834 bne 0x2930 | goto label_10;
| }
0x00002836 add sp, 0x50 |
0x00002838 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_8:
0x0000283c cmp r5, 3 |
| if (r5 > 3) {
0x0000283e bhi 0x293c | goto label_11;
| }
| /* switch table (4 cases) at 0x2844 */
0x00002840 tbb [pc, r5] | __asm ("tbb [0x00002848]");
0x00002848 ldr r2, [pc, 0x11c] |
0x0000284a add r2, pc | r2 = 0x51b6;
0x0000284c cmp r7, 0 |
0x0000284e beq 0x28c4 |
| while (1) {
| label_0:
0x00002850 cmp r0, 0 |
| if (r0 == 0) {
0x00002852 beq 0x292a | goto label_12;
| }
| label_6:
0x00002854 ldr r1, [pc, 0x114] |
0x00002856 mov r3, sl | r3 = sl;
0x00002858 strd r7, r0, [sp, 4] | __asm ("strd r7, r0, [var_4h]");
0x0000285c movs r0, 1 | r0 = 1;
0x0000285e str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x00002862 add r1, pc | r1 = 0x51d2;
0x00002864 blx 0x1290 | printf_chk ()
| label_2:
0x00002868 cmp r5, 3 |
| if (r5 > 3) {
0x0000286a bhi 0x2934 | goto label_13;
| }
0x0000286c adr r3, 8 | r3 = 8;
0x0000286e ldr.w r5, [r3, r5, lsl 2] | offset_0 = r5 << 2;
| r5 = *((r3 + offset_0));
0x00002872 add r3, r5 | r3 += r5;
| /* switch table (4 cases) at 0x2878 */
0x00002874 bx r3 | return uint32_t (*r3)() ();
| label_1:
0x000028c4 ldr r7, [pc, 0xb0] |
0x000028c6 add r7, pc | r7 = 0x5242;
0x000028c8 b 0x2850 |
| }
0x000028ca ldr r2, [pc, 0xb0] |
0x000028cc add r2, pc | r2 = 0x524e;
0x000028ce cmp r7, 0 |
| if (r7 != 0) {
0x000028d0 bne 0x2850 | goto label_0;
| }
0x000028d2 b 0x28c4 | goto label_1;
0x000028d4 ldr r2, [pc, 0xa8] |
0x000028d6 add r2, pc | r2 = 0x525a;
0x000028d8 cbz r7, 0x28ec |
| while (1) {
| if (r0 == 0) {
| label_3:
0x000028da cbz r0, 0x2924 | goto label_14;
| }
| label_5:
0x000028dc ldr r1, [pc, 0xa4] |
0x000028de mov r3, r7 | r3 = r7;
0x000028e0 str r0, [sp] | *(sp) = r0;
0x000028e2 movs r0, 1 | r0 = 1;
0x000028e4 add r1, pc | r1 = 0x526c;
0x000028e6 blx 0x1290 | printf_chk ()
0x000028ea b 0x2868 | goto label_2;
| label_4:
0x000028ec ldr r7, [pc, 0x98] |
0x000028ee add r7, pc | r7 = 0x527a;
0x000028f0 b 0x28da |
| }
0x000028f2 ldr r2, [pc, 0x98] |
0x000028f4 add r2, pc | r2 = 0x5286;
0x000028f6 cmp r7, 0 |
| if (r7 != 0) {
0x000028f8 bne 0x28da | goto label_3;
| }
0x000028fa b 0x28ec | goto label_4;
0x000028fc ldr r2, [pc, 0x90] |
0x000028fe add r2, pc | r2 = 0x5292;
0x00002900 cmp r7, 0 |
| if (r7 != 0) {
0x00002902 bne 0x28da | goto label_3;
| }
0x00002904 b 0x28ec | goto label_4;
0x00002906 ldr r2, [pc, 0x8c] |
0x00002908 add r2, pc | r2 = 0x52a2;
0x0000290a cmp r7, 0 |
| if (r7 != 0) {
0x0000290c bne 0x28da | goto label_3;
| }
0x0000290e b 0x28ec | goto label_4;
0x00002910 ldr r2, [pc, 0x84] |
0x00002912 add r2, pc | r2 = 0x52ae;
0x00002914 cmp r7, 0 |
| if (r7 != 0) {
0x00002916 bne 0x2850 | goto label_0;
| }
0x00002918 b 0x28c4 | goto label_1;
0x0000291a ldr r2, [pc, 0x80] |
0x0000291c add r2, pc | r2 = 0x52be;
0x0000291e cmp r7, 0 |
| if (r7 != 0) {
0x00002920 bne 0x2850 | goto label_0;
| }
0x00002922 b 0x28c4 | goto label_1;
| label_14:
0x00002924 ldr r0, [pc, 0x78] |
0x00002926 add r0, pc | r0 = 0x52ca;
0x00002928 b 0x28dc | goto label_5;
| label_12:
0x0000292a ldr r0, [pc, 0x78] |
0x0000292c add r0, pc | r0 = 0x52d6;
0x0000292e b 0x2854 | goto label_6;
| label_10:
0x00002930 blx 0x1164 | stack_chk_fail ();
| label_13:
0x00002934 movs r0, 0xa | r0 = 0xa;
0x00002936 blx 0x1278 | putchar (r0);
0x0000293a b 0x2802 | goto label_7;
| label_11:
0x0000293c ldr r2, [pc, 0x68] |
0x0000293e add r2, pc | r2 = 0x52ea;
0x00002940 cmp r7, 0 |
| if (r7 != 0) {
0x00002942 bne 0x28da | goto label_3;
| }
0x00002944 b 0x28ec | goto label_4;
| label_9:
0x00002946 ldr r2, [pc, 0x64] |
0x00002948 add r2, pc | r2 = 0x52fa;
0x0000294a cmp r7, 0 |
| if (r7 != 0) {
0x0000294c bne 0x2850 | goto label_0;
| }
0x0000294e b 0x28c4 | goto label_1;
| }
[*] Function printf used 59 times dbus-send