[*] Binary protection state of dbus-send
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function fprintf 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 @ 0x1bec */
| #include <stdint.h>
|
; (fcn) fcn.00001bec () | void fcn_00001bec (int16_t arg_ch, int16_t arg_10h, char * s2, int16_t arg_18h, int16_t arg_1ch, int16_t arg_20h, void * ptr, int16_t arg_28h, int16_t arg_2ch, int16_t arg_30h, int16_t arg_34h, int16_t arg_38h, int16_t arg_80h, int16_t arg_b8h, int16_t arg_f0h, int16_t arg_f1h, int16_t arg_f4h, int16_t arg_f5h, int16_t arg_f6h, int16_t arg_f7h, int16_t arg_f8h) {
| int16_t var_0h;
| label_0:
0x00001672 ldr r3, [sp, 0xc] | r3 = *(arg_ch);
0x00001674 cmp r3, fp |
| if (r3 <= fp) {
0x00001676 ble.w 0x19d0 | goto label_10;
| }
0x0000167a ldr r3, [sp, 0x10] | r3 = *(arg_10h);
0x0000167c movs r1, 0x3a | r1 = 0x3a;
0x0000167e ldr.w r4, [r3, fp, lsl 2] | offset_0 = fp << 2;
| r4 = *((r3 + offset_0));
0x00001682 mov r0, r4 | r0 = r4;
0x00001684 blx 0x1224 | r0 = strchr (r0, r1);
0x00001688 mov r6, r0 | r6 = r0;
0x0000168a cmp r0, 0 |
| if (r0 == 0) {
0x0000168c beq.w 0x1a24 | goto label_11;
| }
0x00001690 mov sb, r0 | sb = r0;
0x00001692 movs r3, 0 | r3 = 0;
0x00001694 ldr r1, [sp, 0x14] | r1 = *(s2);
0x00001696 mov r0, r4 | r0 = r4;
0x00001698 strb r3, [sb], 1 | *(sb) = r3;
| sb++;
0x0000169c blx 0x10c8 | r0 = strcmp (r0, r1);
0x000016a0 cmp r0, 0 |
| if (r0 == 0) {
0x000016a2 beq.w 0x18c4 | goto label_12;
| }
0x000016a6 ldr.w r1, [pc, 0x4a0] |
0x000016aa mov r0, r4 | r0 = r4;
0x000016ac add r1, pc | r1 = 0x31fa;
0x000016ae blx 0x10c8 | r0 = strcmp (r0, r1);
0x000016b2 cmp r0, 0 |
| if (r0 == 0) {
0x000016b4 beq.w 0x1934 | goto label_13;
| }
0x000016b8 ldr.w r1, [pc, 0x490] |
0x000016bc mov r0, r4 | r0 = r4;
0x000016be add r1, pc | r1 = 0x320e;
0x000016c0 blx 0x10c8 | r0 = strcmp (r0, r1);
0x000016c4 cmp r0, 0 |
| if (r0 != 0) {
0x000016c6 bne.w 0x1938 | goto label_14;
| }
0x000016ca movs r4, 0x65 | r4 = 0x65;
| label_1:
0x000016cc movs r1, 0x3a | r1 = 0x3a;
0x000016ce mov r0, sb | r0 = sb;
0x000016d0 blx 0x1224 | r0 = strchr (r0, r1);
0x000016d4 mov r5, r0 | r5 = r0;
0x000016d6 cmp r0, 0 |
| if (r0 == 0) {
0x000016d8 beq.w 0x1a42 | goto label_15;
| }
0x000016dc movs r3, 0 | r3 = 0;
0x000016de strb r3, [r5], 1 | *(r5) = r3;
| r5++;
0x000016e2 ldrb r3, [r6, 1] | r3 = *((r6 + 1));
0x000016e4 cmp r3, 0 |
| if (r3 != 0) {
0x000016e6 bne.w 0x18c8 | goto label_16;
| }
0x000016ea cmp r4, 0x65 |
0x000016ec mov.w r8, 0x73 | r8 = 0x73;
| if (r4 != 0x65) {
0x000016f0 bne.w 0x18d6 | goto label_17;
| }
| label_2:
0x000016f4 movs r1, 0x3a | r1 = 0x3a;
0x000016f6 mov r0, r5 | r0 = r5;
0x000016f8 blx 0x1224 | r0 = strchr (r0, r1);
0x000016fc mov r4, r0 | r4 = r0;
0x000016fe cmp r0, 0 |
| if (r0 == 0) {
0x00001700 beq.w 0x1aa0 | goto label_18;
| }
0x00001704 mov r0, r5 | r0 = r5;
0x00001706 movs r5, 0 | r5 = 0;
0x00001708 strb r5, [r4], 1 | *(r4) = r5;
| r4++;
0x0000170c add r6, sp, 0x80 | r6 += arg_80h;
0x0000170e bl 0x29e8 | fcn_000029e8 (r0);
0x00001712 movs r3, 0x7b | r3 = 0x7b;
0x00001714 mov sb, r0 | sb = r0;
0x00001716 strb.w r3, [sp, 0xf4] | *(arg_f4h) = r3;
0x0000171a movs r3, 0x7d | r3 = 0x7d;
0x0000171c strb.w r0, [sp, 0xf6] | *(arg_f6h) = r0;
0x00001720 add r2, sp, 0xf4 | r2 += arg_f4h;
0x00001722 strb.w r3, [sp, 0xf7] | *(arg_f7h) = r3;
0x00001726 movs r1, 0x61 | r1 = 0x61;
0x00001728 mov r3, r6 | r3 = r6;
0x0000172a mov r0, sl | r0 = sl;
0x0000172c strb.w r5, [sp, 0xf8] | *(arg_f8h) = r5;
| label_9:
0x00001730 strb.w r8, [sp, 0xf5] | *(arg_f5h) = r8;
0x00001734 blx 0x1248 | r0 = dbus_message_iter_open_container ();
0x00001738 cmp r0, 0 |
| if (r0 == 0) {
0x0000173a beq.w 0x1af4 | goto label_19;
| }
0x0000173e mov r0, r4 | r0 = r4;
0x00001740 blx 0x1158 | strdup (r0);
0x00001744 str r0, [sp, 0x24] | *(ptr) = r0;
0x00001746 cmp r0, 0 |
| if (r0 == 0) {
0x00001748 beq.w 0x1af4 | goto label_19;
| }
0x0000174c ldr.w r1, [pc, 0x400] |
0x00001750 add r1, pc | r1 = 0x32a4;
0x00001752 blx 0x12f0 | r0 = strtok (r0, r1);
0x00001756 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x00001758 cbz r0, 0x17ac | goto label_20;
| }
0x0000175a add r5, sp, 0xb8 | r5 += arg_b8h;
| do {
0x0000175c mov r3, r5 | r3 = r5;
0x0000175e movs r2, 0 | r2 = 0;
0x00001760 movs r1, 0x65 | r1 = 0x65;
0x00001762 mov r0, r6 | r0 = r6;
0x00001764 blx 0x1248 | r0 = dbus_message_iter_open_container ();
0x00001768 cmp r0, 0 |
| if (r0 == 0) {
0x0000176a beq.w 0x1adc | goto label_21;
| }
0x0000176e mov r2, r4 | r2 = r4;
0x00001770 mov r0, r5 | r0 = r5;
0x00001772 mov r1, r8 | r1 = r8;
0x00001774 bl 0x2b38 | fcn_00002b38 (r0, r1, r2);
0x00001778 mov r1, r7 | r1 = r7;
0x0000177a movs r0, 0 | r0 = 0;
0x0000177c blx 0x12f0 | r0 = strtok (r0, r1);
0x00001780 mov r2, r0 | r2 = r0;
0x00001782 cmp r0, 0 |
| if (r0 == 0) {
0x00001784 beq.w 0x1ad0 | goto label_22;
| }
0x00001788 mov r1, sb | r1 = sb;
0x0000178a mov r0, r5 | r0 = r5;
0x0000178c bl 0x2b38 | fcn_00002b38 (r0, r1, r2);
0x00001790 mov r1, r5 | r1 = r5;
0x00001792 mov r0, r6 | r0 = r6;
0x00001794 blx 0x1188 | r0 = dbus_message_iter_close_container ();
0x00001798 cmp r0, 0 |
| if (r0 == 0) {
0x0000179a beq.w 0x1ab2 | goto label_23;
| }
0x0000179e mov r1, r7 | r1 = r7;
0x000017a0 movs r0, 0 | r0 = 0;
0x000017a2 blx 0x12f0 | r0 = strtok (r0, r1);
0x000017a6 mov r4, r0 | r4 = r0;
0x000017a8 cmp r0, 0 |
0x000017aa bne 0x175c |
| } while (r0 != 0);
| label_20:
0x000017ac ldr r0, [sp, 0x24] | r0 = *(ptr);
0x000017ae blx 0x1128 | free (r0);
| label_3:
0x000017b2 mov r1, r6 | r1 = r6;
0x000017b4 mov r0, sl | r0 = sl;
0x000017b6 blx 0x1188 | r0 = dbus_message_iter_close_container ();
0x000017ba cmp r0, 0 |
| if (r0 == 0) {
0x000017bc beq.w 0x1af4 | goto label_19;
| }
| label_4:
0x000017c0 add.w fp, fp, 1 |
0x000017c4 b 0x1672 | goto label_0;
| label_12:
0x000018c4 movs r4, 0x76 | r4 = 0x76;
0x000018c6 b 0x16cc | goto label_1;
| label_16:
0x000018c8 mov r0, sb | r0 = sb;
0x000018ca bl 0x29e8 | fcn_000029e8 (r0);
0x000018ce cmp r4, 0x65 |
0x000018d0 mov r8, r0 | r8 = r0;
| if (r4 == 0x65) {
0x000018d2 beq.w 0x16f4 | goto label_2;
| }
| label_17:
0x000018d6 movs r3, 0 | r3 = 0;
0x000018d8 add r6, sp, 0x80 | r6 += arg_80h;
0x000018da strb.w r3, [sp, 0xf1] | *(arg_f1h) = r3;
0x000018de add r2, sp, 0xf0 | r2 += arg_f0h;
0x000018e0 mov r3, r6 | r3 = r6;
0x000018e2 mov r1, r4 | r1 = r4;
0x000018e4 mov r0, sl | r0 = sl;
0x000018e6 strb.w r8, [sp, 0xf0] | *(arg_f0h) = r8;
0x000018ea blx 0x1248 | r0 = dbus_message_iter_open_container ();
0x000018ee cmp r0, 0 |
| if (r0 == 0) {
0x000018f0 beq.w 0x1af4 | goto label_19;
| }
0x000018f4 cmp r4, 0x61 |
| if (r4 != 0x61) {
0x000018f6 bne.w 0x1ae8 | goto label_24;
| }
0x000018fa mov r0, r5 | r0 = r5;
0x000018fc blx 0x1158 | r0 = strdup (r0);
0x00001900 mov r5, r0 | r5 = r0;
0x00001902 cmp r0, 0 |
| if (r0 == 0) {
0x00001904 beq.w 0x1af4 | goto label_19;
| }
0x00001908 ldr r4, [pc, 0x260] |
0x0000190a add r4, pc | r4 = 0x347a;
0x0000190c mov r1, r4 | r1 = r4;
0x0000190e blx 0x12f0 | r0 = strtok (r0, r1);
0x00001912 mov r2, r0 | r2 = r0;
| if (r0 == 0) {
0x00001914 cbz r0, 0x192c | goto label_25;
| }
| do {
0x00001916 mov r0, r6 | r0 = r6;
0x00001918 mov r1, r8 | r1 = r8;
0x0000191a bl 0x2b38 | fcn_00002b38 (r0, r1, r2);
0x0000191e mov r1, r4 | r1 = r4;
0x00001920 movs r0, 0 | r0 = 0;
0x00001922 blx 0x12f0 | r0 = strtok (r0, r1);
0x00001926 mov r2, r0 | r2 = r0;
0x00001928 cmp r0, 0 |
0x0000192a bne 0x1916 |
| } while (r0 != 0);
| label_25:
0x0000192c mov r0, r5 | r0 = r5;
0x0000192e blx 0x1128 | free (r0);
0x00001932 b 0x17b2 | goto label_3;
| label_13:
0x00001934 movs r4, 0x61 | r4 = 0x61;
0x00001936 b 0x16cc | goto label_1;
| label_14:
0x00001938 ldrb r3, [r4] | r3 = *(r4);
| if (r3 != 0) {
0x0000193a cbnz r3, 0x1948 | goto label_26;
| }
0x0000193c movs r1, 0x73 | r1 = 0x73;
| do {
0x0000193e mov r2, sb | r2 = sb;
0x00001940 mov r0, sl | r0 = sl;
0x00001942 bl 0x2b38 | fcn_00002b38 (r0, r1, r2);
0x00001946 b 0x17c0 | goto label_4;
| label_26:
0x00001948 mov r0, r4 | r0 = r4;
0x0000194a bl 0x29e8 | r0 = fcn_000029e8 (r0);
0x0000194e mov r1, r0 | r1 = r0;
0x00001950 b 0x193e |
| } while (1);
| label_10:
0x000019d0 ldr r3, [sp, 0x18] | r3 = *(arg_18h);
0x000019d2 cmp r3, 0 |
| if (r3 == 0) {
0x000019d4 beq 0x1a80 | goto label_27;
| }
0x000019d6 ldr r5, [sp, 0x2c] | r5 = *(arg_2ch);
0x000019d8 mov r0, r5 | r0 = r5;
0x000019da blx 0x12d8 | dbus_error_init ();
0x000019de ldr r2, [sp, 0x30] | r2 = *(arg_30h);
0x000019e0 mov r3, r5 | r3 = r5;
0x000019e2 ldr r1, [sp, 0x28] | r1 = *(arg_28h);
0x000019e4 ldr r0, [sp, 0x34] | r0 = *(arg_34h);
0x000019e6 blx 0x11c4 | r0 = dbus_connection_send_with_reply_and_block ();
0x000019ea mov r4, r0 | r4 = r0;
0x000019ec mov r0, r5 | r0 = r5;
0x000019ee blx 0x1314 | r0 = dbus_error_is_set ();
0x000019f2 cmp r0, 0 |
| if (r0 != 0) {
0x000019f4 bne 0x1a94 | goto label_28;
| }
| if (r4 != 0) {
0x000019f6 cbz r4, 0x1a12 |
0x000019f8 add r1, sp, 0xb8 | r1 += arg_b8h;
0x000019fa add r0, sp, 0x80 | r0 += arg_80h;
0x000019fc blx 0x138c | dbus_get_real_time ();
0x00001a00 mov r0, r4 | r0 = r4;
0x00001a02 ldr r3, [sp, 0xb8] | r3 = *(arg_b8h);
0x00001a04 ldr r1, [sp, 0x20] | r1 = *(arg_20h);
0x00001a06 ldr r2, [sp, 0x80] | r2 = *(arg_80h);
0x00001a08 bl 0x2780 | fcn_00002780 (r0, r1, r2, r3);
0x00001a0c mov r0, r4 | r0 = r4;
0x00001a0e blx 0x117c | dbus_message_unref ();
| }
| label_5:
0x00001a12 ldr r0, [sp, 0x28] | r0 = *(arg_28h);
0x00001a14 blx 0x117c | dbus_message_unref ();
0x00001a16 subs.w r8, r2, sp, lsl 4 | r8 = r2 - (sp << 4);
0x00001a1a blx 0x10a4 | dbus_connection_unref ();
0x00001a1e movs r0, 0 | r0 = 0;
0x00001a20 blx 0x11f4 | exit (r0);
| label_11:
0x00001a24 ldr r3, [sp, 0x10] | r3 = *(arg_10h);
0x00001a26 ldr r2, [pc, 0x158] |
0x00001a28 ldr r1, [pc, 0xfc] | r1 = *(0x1b28);
0x00001a2a ldr r3, [r3] | r3 = *(r3);
0x00001a2c add r2, pc | r2 = 0x35b2;
| label_6:
0x00001a2e ldr r0, [sp, 0x1c] | r0 = *(arg_1ch);
0x00001a30 ldr r0, [r0, r1] | r0 = *((r0 + r1));
0x00001a32 str r4, [sp] | *(sp) = r4;
| do {
| label_7:
0x00001a34 ldr r0, [r0] | r0 = *(r0);
0x00001a36 movs r1, 1 | r1 = 1;
0x00001a38 blx 0x12c0 | fprintf_chk ()
0x00001a3c movs r0, 1 | r0 = 1;
0x00001a3e blx 0x11f4 | exit (r0);
| label_15:
0x00001a42 ldr r1, [pc, 0xe4] | r1 = *(0x1b2a);
0x00001a44 ldr r3, [sp, 0x10] | r3 = *(arg_10h);
0x00001a46 ldr r2, [pc, 0x13c] |
0x00001a48 ldr r0, [sp, 0x1c] | r0 = *(arg_1ch);
0x00001a4a ldr r3, [r3] | r3 = *(r3);
0x00001a4c add r2, pc | r2 = 0x35d6;
0x00001a4e ldr r0, [r0, r1] | r0 = *((r0 + r1));
0x00001a50 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x00001a54 b 0x1a34 |
| } while (1);
| label_27:
0x00001a80 ldr r4, [sp, 0x34] | r4 = *(arg_34h);
0x00001a82 ldr r2, [sp, 0x18] | r2 = *(arg_18h);
0x00001a84 ldr r1, [sp, 0x28] | r1 = *(arg_28h);
0x00001a86 mov r0, r4 | r0 = r4;
0x00001a88 blx 0x1350 | dbus_connection_send ();
0x00001a8c mov r0, r4 | r0 = r4;
0x00001a8e blx 0x1104 | dbus_connection_flush ();
0x00001a92 b 0x1a12 | goto label_5;
| label_28:
0x00001a94 ldr r2, [pc, 0x100] |
0x00001a96 ldr r1, [pc, 0x90] | r1 = *(0x1b2a);
0x00001a98 ldrd r3, r4, [sp, 0x38] | __asm ("ldrd r3, r4, [arg_38h]");
0x00001a9c add r2, pc | r2 = 0x3638;
0x00001a9e b 0x1a2e | goto label_6;
| label_18:
0x00001aa0 ldr r1, [pc, 0x84] | r1 = *(0x1b28);
0x00001aa2 ldr r3, [sp, 0x10] | r3 = *(arg_10h);
0x00001aa4 ldr r2, [pc, 0xf4] |
0x00001aa6 ldr r0, [sp, 0x1c] | r0 = *(arg_1ch);
0x00001aa8 ldr r3, [r3] | r3 = *(r3);
0x00001aaa add r2, pc | r2 = 0x364a;
0x00001aac ldr r0, [r0, r1] | r0 = *((r0 + r1));
0x00001aae str r5, [sp] | *(sp) = r5;
0x00001ab0 b 0x1a34 | goto label_7;
| label_23:
0x00001ab2 ldr r3, [pc, 0xec] |
0x00001ab4 ldr r2, [pc, 0xec] |
0x00001ab6 ldr r0, [pc, 0x70] | r0 = *(0x1b2a);
0x00001ab8 add r3, pc | r3 = 0x365e;
0x00001aba add r2, pc | r2 = 0x3662;
| do {
| label_8:
0x00001abc ldr r4, [sp, 0x1c] | r4 = *(arg_1ch);
0x00001abe movs r1, 1 | r1 = 1;
0x00001ac0 ldr r3, [r3] | r3 = *(r3);
0x00001ac2 ldr r0, [r4, r0] | r0 = *((r4 + r0));
0x00001ac4 ldr r0, [r0] | r0 = *(r0);
0x00001ac6 blx 0x12c0 | fprintf_chk ()
0x00001aca movs r0, 1 | r0 = 1;
0x00001acc blx 0x11f4 | exit (r0);
| label_22:
0x00001ad0 ldr r3, [pc, 0xd4] |
0x00001ad2 ldr r2, [pc, 0xd8] |
0x00001ad4 ldr r0, [pc, 0x50] | r0 = *(0x1b28);
0x00001ad6 add r3, pc | r3 = 0x3682;
0x00001ad8 add r2, pc | r2 = 0x368a;
0x00001ada b 0x1abc |
| } while (1);
| label_21:
0x00001adc ldr r3, [pc, 0xd0] |
0x00001ade ldr r2, [pc, 0xd4] |
0x00001ae0 ldr r0, [pc, 0x44] | r0 = *(0x1b28);
0x00001ae2 add r3, pc | r3 = 0x3696;
0x00001ae4 add r2, pc | r2 = 0x369e;
0x00001ae6 b 0x1abc | goto label_8;
| label_24:
0x00001ae8 mov r2, r5 | r2 = r5;
0x00001aea mov r1, r8 | r1 = r8;
0x00001aec mov r0, r6 | r0 = r6;
0x00001aee bl 0x2b38 | fcn_00002b38 (r0, r1, r2);
0x00001af2 b 0x17b2 | goto label_3;
| label_19:
0x00001af4 bl 0x2b00 | fcn_00002b00 ();
0x00001af8 cmp r2, 0xa0 |
0x00001afa movs r1, r0 | r1 = r0;
0x00001afc cmp r2, 0x96 |
0x00001afe movs r1, r0 | r1 = r0;
0x00001b00 cmp r3, 0xf0 |
0x00001b02 movs r1, r0 | r1 = r0;
0x00001b04 lsls r0, r7, 4 | r0 = r7 << 4;
0x00001b06 movs r0, r0 |
0x00001b08 movs r1, 0xcc | r1 = 0xcc;
0x00001b0a movs r0, r0 |
0x00001b0c movs r1, 0xba | r1 = 0xba;
0x00001b0e movs r0, r0 |
0x00001b10 movs r1, 0xb4 | r1 = 0xb4;
0x00001b12 movs r0, r0 |
0x00001b14 movs r1, 0xaa | r1 = 0xaa;
0x00001b16 movs r0, r0 |
0x00001b18 movs r1, 0xa0 | r1 = 0xa0;
0x00001b1a movs r0, r0 |
0x00001b1c movs r1, 0xc8 | r1 = 0xc8;
0x00001b1e movs r0, r0 |
0x00001b20 movs r1, 0xc2 | r1 = 0xc2;
0x00001b22 movs r0, r0 |
0x00001b24 movs r1, 0x14 | r1 = 0x14;
0x00001b26 movs r0, r0 |
0x00001b28 lsls r4, r7, 4 | r4 = r7 << 4;
0x00001b2a movs r0, r0 |
0x00001b2c movs r1, 0x78 | r1 = 0x78;
0x00001b2e movs r0, r0 |
0x00001b30 movs r1, 0xcc | r1 = 0xcc;
0x00001b32 movs r0, r0 |
0x00001b34 movs r1, 0xdc | r1 = 0xdc;
0x00001b36 movs r0, r0 |
0x00001b38 movs r1, 0xd2 | r1 = 0xd2;
0x00001b3a movs r0, r0 |
0x00001b3c movs r1, 0xde | r1 = 0xde;
0x00001b3e movs r0, r0 |
0x00001b40 movs r2, 0xd8 | r2 = 0xd8;
0x00001b42 movs r0, r0 |
0x00001b44 movs r2, 0xba | r2 = 0xba;
0x00001b46 movs r0, r0 |
0x00001b48 movs r2, 0x84 | r2 = 0x84;
0x00001b4a movs r0, r0 |
0x00001b4c movs r2, 0x7a | r2 = 0x7a;
0x00001b4e movs r0, r0 |
0x00001b50 movs r1, 0xf0 | r1 = 0xf0;
0x00001b52 movs r0, r0 |
0x00001b54 subs r6, r4, 3 | r6 = r4 - 3;
0x00001b56 movs r0, r0 |
0x00001b58 subs r0, r2, 4 | r0 = r2 - 4;
0x00001b5a movs r0, r0 |
0x00001b5c adds r2, r1, 6 | r2 = r1 + 6;
0x00001b5e movs r0, r0 |
0x00001b60 subs r2, r3, 5 | r2 = r3 - 5;
0x00001b62 movs r0, r0 |
0x00001b64 subs r4, r5, 5 | r4 = r5 - 5;
0x00001b66 movs r0, r0 |
0x00001b68 movs r0, 0x18 | r0 = 0x18;
0x00001b6a movs r0, r0 |
0x00001b6c movs r0, 0x36 | r0 = 0x36;
0x00001b6e movs r0, r0 |
0x00001b70 subs r0, r1, 1 | r0 = r1 - 1;
0x00001b72 movs r0, r0 |
0x00001b74 subs r2, r1, 5 | r2 = r1 - 5;
0x00001b76 movs r0, r0 |
0x00001b78 subs r2, r1, 2 | r2 = r1 - 2;
0x00001b7a movs r0, r0 |
0x00001b7c subs r0, r7, 2 | r0 = r7 - 2;
0x00001b7e movs r0, r0 |
0x00001b80 subs r0, r3, 3 | r0 = r3 - 3;
0x00001b82 movs r0, r0 |
0x00001b84 subs r0, r7, 2 | r0 = r7 - 2;
0x00001b86 movs r0, r0 |
0x00001b88 adds r0, r4, 0 | r0 = r4 + 0;
0x00001b8a movs r0, r0 |
0x00001b8c adds r2, r2, 1 | r2++;
0x00001b8e movs r0, r0 |
0x00001b90 subs r2, r1, r6 | r2 = r1 - r6;
0x00001b92 movs r0, r0 |
0x00001b94 adds r4, r3, 2 | r4 = r3 + 2;
0x00001b96 movs r0, r0 |
0x00001b98 subs r4, r0, 3 | r4 = r0 - 3;
0x00001b9a movs r0, r0 |
0x00001b9c subs r2, r3, 1 | r2 = r3 - 1;
0x00001b9e movs r0, r0 |
0x00001ba0 movs r5, 0x50 | r5 = 0x50;
0x00001ba2 movs r1, r0 | r1 = r0;
0x00001ba4 subs r2, r2, r3 | r2 -= r3;
0x00001ba6 movs r0, r0 |
0x00001ba8 movs r5, 0x32 | r5 = 0x32;
0x00001baa movs r1, r0 | r1 = r0;
0x00001bac subs r4, r5, 1 | r4 = r5 - 1;
0x00001bae movs r0, r0 |
0x00001bb0 movs r5, 0x26 | r5 = 0x26;
0x00001bb2 movs r1, r0 | r1 = r0;
0x00001bb4 subs r0, r5, r2 | r0 = r5 - r2;
0x00001bb6 movs r0, r0 |
0x00001bec adds r0, 0x14 | r0 += 0x14;
0x00001bee b 0x1730 | goto label_9;
| }
; 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 @ 0x29b0 */
| #include <stdint.h>
|
; (fcn) fcn.000029b0 () | void fcn_000029b0 (int16_t arg1) {
| r0 = arg1;
0x000029b0 push {r3, lr} |
0x000029b2 mov r4, r0 | r4 = r0;
0x000029b4 ldr r3, [pc, 0x20] |
0x000029b6 ldr.w ip, [pc, 0x24] | ip = *(0x29de);
0x000029ba add r3, pc | r3 = 0x5396;
0x000029bc ldr r1, [pc, 0x20] |
0x000029be ldr r2, [pc, 0x24] |
0x000029c0 ldr.w r0, [r3, ip] |
0x000029c4 add r1, pc | r1 = 0x53a8;
0x000029c6 ldr r3, [r1] | r3 = *(0x53a8);
0x000029c8 add r2, pc | r2 = 0x53b2;
0x000029ca ldr r0, [r0] | r0 = *(0x5396);
0x000029cc movs r1, 1 | r1 = 1;
0x000029ce blx 0x12c0 | fprintf_chk ()
0x000029d2 mov r0, r4 | r0 = r4;
0x000029d4 blx 0x11f4 | exit (r0);
0x000029d8 asrs r2, r6, 0x13 | r2 = r6 >> 0x13;
0x000029da movs r1, r0 | r1 = r0;
0x000029dc lsls r4, r7, 4 | r4 = r7 << 4;
0x000029de movs r0, r0 |
0x000029e0 asrs r4, r0, 0x19 | r4 = r0 >> 0x19;
0x000029e2 movs r1, r0 | r1 = r0;
0x000029e4 lsrs r0, r1, 0xa | r0 = r1 >> 0xa;
0x000029e6 movs r0, r0 |
| }
; 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 @ 0x29e8 */
| #include <stdint.h>
|
; (fcn) fcn.000029e8 () | void fcn_000029e8 (int16_t arg1) {
| int16_t var_0h;
| r0 = arg1;
| if (? >= ?) {
0x000029e8 ldrlt r4, [r0, -0x936]! | r4 = *((r0 -= 0x936));
| }
0x000029ec sub sp, 0xc |
0x000029ee ldr r5, [pc, 0xd8] |
0x000029f0 mov r4, r0 | r4 = r0;
0x000029f2 add r1, pc | r1 += pc;
0x000029f4 blx 0x10c8 | strcmp (r0, r1);
0x000029f8 add r5, pc | r5 = 0x54c6;
| if (r0 != 0) {
0x000029fa cbz r0, 0x2a0e |
0x000029fc ldr r1, [pc, 0xcc] |
0x000029fe mov r0, r4 | r0 = r4;
0x00002a00 add r1, pc | r1 = 0x54d0;
0x00002a02 blx 0x10c8 | r0 = strcmp (r0, r1);
| if (r0 != 0) {
0x00002a06 cbnz r0, 0x2a14 | goto label_1;
| }
0x00002a08 movs r0, 0x6e | r0 = 0x6e;
0x00002a0a add sp, 0xc |
0x00002a0c pop {r4, r5, pc} |
| }
0x00002a0e movs r0, 0x73 | r0 = 0x73;
| do {
| label_0:
0x00002a10 add sp, 0xc |
0x00002a12 pop {r4, r5, pc} |
| label_1:
0x00002a14 ldr r1, [pc, 0xb8] |
0x00002a16 mov r0, r4 | r0 = r4;
0x00002a18 add r1, pc | r1 = 0x54ec;
0x00002a1a blx 0x10c8 | r0 = strcmp (r0, r1);
| if (r0 == 0) {
0x00002a1e cbz r0, 0x2a84 | goto label_2;
| }
0x00002a20 ldr r1, [pc, 0xb0] |
0x00002a22 mov r0, r4 | r0 = r4;
0x00002a24 add r1, pc | r1 = 0x54fc;
0x00002a26 blx 0x10c8 | r0 = strcmp (r0, r1);
| if (r0 == 0) {
0x00002a2a cbz r0, 0x2a8a | goto label_3;
| }
0x00002a2c ldr r1, [pc, 0xa8] |
0x00002a2e mov r0, r4 | r0 = r4;
0x00002a30 add r1, pc | r1 = 0x550c;
0x00002a32 blx 0x10c8 | r0 = strcmp (r0, r1);
| if (r0 == 0) {
0x00002a36 cbz r0, 0x2a8e | goto label_4;
| }
0x00002a38 ldr r1, [pc, 0xa0] |
0x00002a3a mov r0, r4 | r0 = r4;
0x00002a3c add r1, pc | r1 = 0x551c;
0x00002a3e blx 0x10c8 | r0 = strcmp (r0, r1);
| if (r0 == 0) {
0x00002a42 cbz r0, 0x2a92 | goto label_5;
| }
0x00002a44 ldr r1, [pc, 0x98] |
0x00002a46 mov r0, r4 | r0 = r4;
0x00002a48 add r1, pc | r1 = 0x552c;
0x00002a4a blx 0x10c8 | r0 = strcmp (r0, r1);
| if (r0 == 0) {
0x00002a4e cbz r0, 0x2a96 | goto label_6;
| }
0x00002a50 ldr r1, [pc, 0x90] |
0x00002a52 mov r0, r4 | r0 = r4;
0x00002a54 add r1, pc | r1 = 0x553c;
0x00002a56 blx 0x10c8 | r0 = strcmp (r0, r1);
| if (r0 == 0) {
0x00002a5a cbz r0, 0x2a9a | goto label_7;
| }
0x00002a5c ldr r1, [pc, 0x88] |
0x00002a5e mov r0, r4 | r0 = r4;
0x00002a60 add r1, pc | r1 = 0x554c;
0x00002a62 blx 0x10c8 | r0 = strcmp (r0, r1);
| if (r0 == 0) {
0x00002a66 cbz r0, 0x2a9e | goto label_8;
| }
0x00002a68 ldr r1, [pc, 0x80] |
0x00002a6a mov r0, r4 | r0 = r4;
0x00002a6c add r1, pc | r1 = 0x555c;
0x00002a6e blx 0x10c8 | r0 = strcmp (r0, r1);
| if (r0 == 0) {
0x00002a72 cbz r0, 0x2aa2 | goto label_9;
| }
0x00002a74 ldr r1, [pc, 0x78] |
0x00002a76 mov r0, r4 | r0 = r4;
0x00002a78 add r1, pc | r1 = 0x556c;
0x00002a7a blx 0x10c8 | r0 = strcmp (r0, r1);
| if (r0 != 0) {
0x00002a7e cbnz r0, 0x2aa6 | goto label_10;
| }
0x00002a80 movs r0, 0x6f | r0 = 0x6f;
0x00002a82 b 0x2a10 |
| } while (1);
| label_2:
0x00002a84 movs r0, 0x71 | r0 = 0x71;
0x00002a86 add sp, 0xc |
0x00002a88 pop {r4, r5, pc} |
| label_3:
0x00002a8a movs r0, 0x69 | r0 = 0x69;
0x00002a8c b 0x2a10 | goto label_0;
| label_4:
0x00002a8e movs r0, 0x75 | r0 = 0x75;
0x00002a90 b 0x2a10 | goto label_0;
| label_5:
0x00002a92 movs r0, 0x78 | r0 = 0x78;
0x00002a94 b 0x2a10 | goto label_0;
| label_6:
0x00002a96 movs r0, 0x74 | r0 = 0x74;
0x00002a98 b 0x2a10 | goto label_0;
| label_7:
0x00002a9a movs r0, 0x64 | r0 = 0x64;
0x00002a9c b 0x2a10 | goto label_0;
| label_8:
0x00002a9e movs r0, 0x79 | r0 = 0x79;
0x00002aa0 b 0x2a10 | goto label_0;
| label_9:
0x00002aa2 movs r0, 0x62 | r0 = 0x62;
0x00002aa4 b 0x2a10 | goto label_0;
| label_10:
0x00002aa6 ldr r1, [pc, 0x4c] | r1 = *(0x2af6);
0x00002aa8 ldr r3, [pc, 0x4c] |
0x00002aaa ldr r2, [pc, 0x50] |
0x00002aac ldr r0, [r5, r1] | r0 = *((r5 + r1));
0x00002aae movs r1, 1 | r1 = 1;
0x00002ab0 add r3, pc |
0x00002ab2 ldr r3, [r3] | r3 = *(0x55ac);
0x00002ab4 add r2, pc | r2 = 0x55b6;
0x00002ab6 str r4, [sp] | *(sp) = r4;
0x00002ab8 ldr r0, [r0] | r0 = *(r0);
0x00002aba blx 0x12c0 | fprintf_chk ()
0x00002abe movs r0, 1 | r0 = 1;
0x00002ac0 blx 0x11f4 | exit (r0);
0x00002ac4 lsls r2, r4, 0x1e | r2 = r4 << 0x1e;
0x00002ac6 movs r0, r0 |
0x00002ac8 asrs r4, r6, 0x12 | r4 = r6 >> 0x12;
0x00002aca movs r1, r0 | r1 = r0;
0x00002acc lsrs r4, r4, 0xc | r4 >>= 0xc;
0x00002ace movs r0, r0 |
0x00002ad0 lsrs r4, r2, 0xc | r4 = r2 >> 0xc;
0x00002ad2 movs r0, r0 |
0x00002ad4 lsrs r0, r2, 0xc | r0 = r2 >> 0xc;
0x00002ad6 movs r0, r0 |
0x00002ad8 lsrs r4, r1, 0xc | r4 = r1 >> 0xc;
0x00002ada movs r0, r0 |
0x00002adc lsrs r0, r1, 0xc | r0 = r1 >> 0xc;
0x00002ade movs r0, r0 |
0x00002ae0 lsrs r4, r0, 0xc | r4 = r0 >> 0xc;
0x00002ae2 movs r0, r0 |
0x00002ae4 lsrs r0, r0, 0xc | r0 >>= 0xc;
0x00002ae6 movs r0, r0 |
0x00002ae8 lsrs r4, r7, 0xb | r4 = r7 >> 0xb;
0x00002aea movs r0, r0 |
0x00002aec lsrs r0, r7, 0xb | r0 = r7 >> 0xb;
0x00002aee movs r0, r0 |
0x00002af0 lsrs r4, r6, 0xb | r4 = r6 >> 0xb;
0x00002af2 movs r0, r0 |
0x00002af4 lsls r4, r7, 4 | r4 = r7 << 4;
0x00002af6 movs r0, r0 |
0x00002af8 asrs r0, r3, 0x15 | r0 = r3 >> 0x15;
0x00002afa movs r1, r0 | r1 = r0;
0x00002afc lsrs r0, r0, 0xb | r0 >>= 0xb;
0x00002afe movs r0, r0 |
| }
; 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 @ 0x2b00 */
| #include <stdint.h>
|
; (fcn) fcn.00002b00 () | void fcn_00002b00 () {
0x00002b00 mrshs fp, apsr | __asm ("mrshs fp, apsr");
0x00002b04 ldr r3, [pc, 0x20] |
0x00002b06 ldr.w ip, [pc, 0x24] | ip = *(0x2b2e);
0x00002b0a add r3, pc | r3 = 0x5636;
0x00002b0c ldr r0, [pc, 0x20] |
0x00002b0e ldr r2, [pc, 0x24] |
0x00002b10 ldr.w r4, [r3, ip] | r4 = *(0x5636);
0x00002b14 add r0, pc | r0 = 0x5648;
0x00002b16 ldr r3, [r0] | r3 = *(0x5648);
0x00002b18 add r2, pc | r2 = 0x5652;
0x00002b1a ldr r0, [r4] | r0 = *(0x5636);
0x00002b1c blx 0x12c0 | fprintf_chk ()
0x00002b20 movs r0, 1 | r0 = 1;
0x00002b22 blx 0x11f4 | exit (r0);
0x00002b26 nop |
0x00002b28 asrs r2, r4, 0xe | r2 = r4 >> 0xe;
0x00002b2a movs r1, r0 | r1 = r0;
0x00002b2c lsls r4, r7, 4 | r4 = r7 << 4;
0x00002b2e movs r0, r0 |
0x00002b30 asrs r4, r6, 0x13 | r4 = r6 >> 0x13;
0x00002b32 movs r1, r0 | r1 = r0;
0x00002b34 lsrs r4, r6, 9 | r4 = r6 >> 9;
0x00002b36 movs r0, r0 |
| }
; 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 @ 0x2b38 */
| #include <stdint.h>
|
; (fcn) fcn.00002b38 () | void fcn_00002b38 (int16_t arg1, int16_t arg2, char * arg3) {
| int16_t var_0h_2;
| char * str;
| int16_t var_17h;
| int16_t var_18h;
| int16_t var_1ah;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_30h;
| int16_t var_38h;
| int16_t var_44h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00002b38 invalid |
0x00002b3c sub sp, 0x4c |
0x00002b3e ldr r0, [pc, 0x1bc] |
0x00002b40 sub.w r3, r1, 0x62 | r3 = r1 - 0x62;
0x00002b44 str r2, [sp, 0xc] | str = r2;
0x00002b46 ldr r2, [pc, 0x1b8] | r2 = *(0x2d02);
0x00002b48 add r0, pc | r0 = 0x584a;
0x00002b4a ldr r5, [pc, 0x1b8] |
0x00002b4c ldr r2, [r0, r2] |
0x00002b4e add r5, pc | r5 = 0x5858;
0x00002b50 ldr r2, [r2] | r2 = *(0x584a);
0x00002b52 str r2, [sp, 0x44] | var_44h = r2;
0x00002b54 mov.w r2, 0 | r2 = 0;
0x00002b58 cmp r3, 0x17 |
| if (r3 > 0x17) {
0x00002b5a bhi.w 0x2cc0 | goto label_1;
| }
| /* switch table (24 cases) at 0x2b62 */
0x00002b5e tbb [pc, r3] | __asm ("tbb [0x00002b64]");
0x00002b7a ldr r6, [sp, 0xc] | r6 = str;
0x00002b7c ldr r1, [pc, 0x188] |
0x00002b7e mov r0, r6 | r0 = r6;
0x00002b80 add r1, pc | r1 = 0x588c;
0x00002b82 blx 0x10c8 | strcmp (r0, r1);
0x00002b86 movs r3, 1 | r3 = 1;
| if (r0 != 0) {
0x00002b88 cbz r0, 0x2b9c |
0x00002b8a ldr r1, [pc, 0x180] |
0x00002b8c mov r0, r6 | r0 = r6;
0x00002b8e add r1, pc | r1 = 0x58a0;
0x00002b90 blx 0x10c8 | r0 = strcmp (r0, r1);
0x00002b94 mov r3, r0 | r3 = r0;
0x00002b96 cmp r0, 0 |
| if (r0 != 0) {
0x00002b98 bne.w 0x2ce8 | goto label_2;
| }
| }
0x00002b9c add r2, sp, 0x24 | r2 += var_24h;
0x00002b9e movs r1, 0x62 | r1 = 0x62;
0x00002ba0 mov r0, r4 | r0 = r4;
0x00002ba2 str r3, [sp, 0x24] | var_24h = r3;
0x00002ba4 blx 0x10f8 | r0 = dbus_message_iter_append_basic ();
| do {
| label_0:
0x00002ba8 cmp r0, 0 |
| if (r0 == 0) {
0x00002baa beq.w 0x2ce4 | goto label_3;
| }
0x00002bae ldr r2, [pc, 0x160] |
0x00002bb0 ldr r3, [pc, 0x14c] | r3 = *(0x2d00);
0x00002bb2 add r2, pc | r2 = 0x58c8;
0x00002bb4 ldr r3, [r2, r3] | r3 = *(0x58c8);
0x00002bb6 ldr r2, [r3] | r2 = *(0x58c8);
0x00002bb8 ldr r3, [sp, 0x44] | r3 = var_44h;
0x00002bba eors r2, r3 | r2 ^= r3;
0x00002bbc mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00002bc0 bne.w 0x2ce0 | goto label_4;
| }
0x00002bc4 add sp, 0x4c |
0x00002bc6 pop {r4, r5, r6, r7, pc} |
0x00002bc8 ldr r0, [sp, 0xc] | r0 = str;
0x00002bca movs r1, 0 | r1 = 0;
0x00002bcc blx 0x12a8 | strtod (r0, r1);
0x00002bd0 add r2, sp, 0x38 | r2 += var_38h;
0x00002bd2 movs r1, 0x64 | r1 = 0x64;
0x00002bd4 mov r0, r4 | r0 = r4;
0x00002bd6 vstr d0, [sp, 0x38] | __asm ("vstr d0, [sp, 0x38]");
0x00002bda blx 0x10f8 | dbus_message_iter_append_basic ();
0x00002bde b 0x2ba8 |
| } while (1);
0x00002be0 movs r2, 0 | r2 = 0;
0x00002be2 ldr r0, [sp, 0xc] | r0 = str;
0x00002be4 mov r1, r2 | r1 = r2;
0x00002be6 blx 0x10e0 | strtol (r0, r1, r2);
0x00002bea add r2, sp, 0x20 | r2 += var_20h;
0x00002bec mov r3, r0 | r3 = r0;
0x00002bee movs r1, 0x69 | r1 = 0x69;
0x00002bf0 mov r0, r4 | r0 = r4;
0x00002bf2 str r3, [sp, 0x20] | var_20h = r3;
0x00002bf4 blx 0x10f8 | dbus_message_iter_append_basic ();
0x00002bf8 b 0x2ba8 | goto label_0;
0x00002bfa movs r2, 0 | r2 = 0;
0x00002bfc ldr r0, [sp, 0xc] | r0 = str;
0x00002bfe mov r1, r2 | r1 = r2;
0x00002c00 blx 0x10e0 | strtol (r0, r1, r2);
0x00002c04 add.w r2, sp, 0x1a | r2 += var_1ah;
0x00002c08 mov r3, r0 | r3 = r0;
0x00002c0a movs r1, 0x6e | r1 = 0x6e;
0x00002c0c mov r0, r4 | r0 = r4;
0x00002c0e strh.w r3, [sp, 0x1a] | var_1ah = r3;
0x00002c12 blx 0x10f8 | dbus_message_iter_append_basic ();
0x00002c16 b 0x2ba8 | goto label_0;
0x00002c18 add r2, sp, 0xc | r2 += str;
0x00002c1a movs r1, 0x6f | r1 = 0x6f;
0x00002c1c mov r0, r4 | r0 = r4;
0x00002c1e blx 0x10f8 | dbus_message_iter_append_basic ();
0x00002c22 b 0x2ba8 | goto label_0;
0x00002c24 movs r2, 0 | r2 = 0;
0x00002c26 ldr r0, [sp, 0xc] | r0 = str;
0x00002c28 mov r1, r2 | r1 = r2;
0x00002c2a blx 0x120c | strtoul (r0, r1, r2);
0x00002c2e add r2, sp, 0x18 | r2 += var_18h;
0x00002c30 mov r3, r0 | r3 = r0;
0x00002c32 movs r1, 0x71 | r1 = 0x71;
0x00002c34 mov r0, r4 | r0 = r4;
0x00002c36 strh.w r3, [sp, 0x18] | var_18h = r3;
0x00002c3a blx 0x10f8 | dbus_message_iter_append_basic ();
0x00002c3e b 0x2ba8 | goto label_0;
0x00002c40 add r2, sp, 0xc | r2 += str;
0x00002c42 movs r1, 0x73 | r1 = 0x73;
0x00002c44 mov r0, r4 | r0 = r4;
0x00002c46 blx 0x10f8 | dbus_message_iter_append_basic ();
0x00002c4a b 0x2ba8 | goto label_0;
0x00002c4c movs r2, 0 | r2 = 0;
0x00002c4e ldr r0, [sp, 0xc] | r0 = str;
0x00002c50 mov r1, r2 | r1 = r2;
0x00002c52 blx 0x1284 | strtoull (r0, r1, r2);
0x00002c56 add r2, sp, 0x28 | r2 += var_28h;
0x00002c58 mov r6, r0 | r6 = r0;
0x00002c5a mov r7, r1 | r7 = r1;
0x00002c5c mov r0, r4 | r0 = r4;
0x00002c5e movs r1, 0x74 | r1 = 0x74;
0x00002c60 strd r6, r7, [sp, 0x28] | __asm ("strd r6, r7, [sp, 0x28]");
0x00002c64 blx 0x10f8 | dbus_message_iter_append_basic ();
0x00002c68 b 0x2ba8 | goto label_0;
0x00002c6a movs r2, 0 | r2 = 0;
0x00002c6c ldr r0, [sp, 0xc] | r0 = str;
0x00002c6e mov r1, r2 | r1 = r2;
0x00002c70 blx 0x120c | strtoul (r0, r1, r2);
0x00002c74 add r2, sp, 0x1c | r2 += var_1ch;
0x00002c76 mov r3, r0 | r3 = r0;
0x00002c78 movs r1, 0x75 | r1 = 0x75;
0x00002c7a mov r0, r4 | r0 = r4;
0x00002c7c str r3, [sp, 0x1c] | var_1ch = r3;
0x00002c7e blx 0x10f8 | dbus_message_iter_append_basic ();
0x00002c82 b 0x2ba8 | goto label_0;
0x00002c84 movs r2, 0 | r2 = 0;
0x00002c86 ldr r0, [sp, 0xc] | r0 = str;
0x00002c88 mov r1, r2 | r1 = r2;
0x00002c8a blx 0x11b8 | strtoll (r0, r1, r2);
0x00002c8e add r2, sp, 0x30 | r2 += var_30h;
0x00002c90 mov r6, r0 | r6 = r0;
0x00002c92 mov r7, r1 | r7 = r1;
0x00002c94 mov r0, r4 | r0 = r4;
0x00002c96 movs r1, 0x78 | r1 = 0x78;
0x00002c98 strd r6, r7, [sp, 0x30] | __asm ("strd r6, r7, [sp, 0x30]");
0x00002c9c blx 0x10f8 | dbus_message_iter_append_basic ();
0x00002ca0 b 0x2ba8 | goto label_0;
0x00002ca2 movs r2, 0 | r2 = 0;
0x00002ca4 ldr r0, [sp, 0xc] | r0 = str;
0x00002ca6 mov r1, r2 | r1 = r2;
0x00002ca8 blx 0x120c | strtoul (r0, r1, r2);
0x00002cac add.w r2, sp, 0x17 | r2 += var_17h;
0x00002cb0 mov r3, r0 | r3 = r0;
0x00002cb2 movs r1, 0x79 | r1 = 0x79;
0x00002cb4 mov r0, r4 | r0 = r4;
0x00002cb6 strb.w r3, [sp, 0x17] | var_17h = r3;
0x00002cba blx 0x10f8 | dbus_message_iter_append_basic ();
0x00002cbe b 0x2ba8 | goto label_0;
| label_1:
0x00002cc0 ldr r2, [pc, 0x50] |
0x00002cc2 uxtb r1, r1 | r1 = (int8_t) r1;
0x00002cc4 ldr r3, [pc, 0x50] |
0x00002cc6 ldr r0, [pc, 0x54] | r0 = *(0x2d1e);
0x00002cc8 add r2, pc | r2 = 0x59e0;
0x00002cca add r3, pc |
0x00002ccc ldr r0, [r5, r0] | r0 = *((r5 + r0));
0x00002cce ldr r3, [r3] | r3 = *(0x59e6);
0x00002cd0 str r1, [sp] | *(sp) = r1;
| do {
0x00002cd2 ldr r0, [r0] | r0 = *(r0);
0x00002cd4 movs r1, 1 | r1 = 1;
0x00002cd6 blx 0x12c0 | fprintf_chk ()
0x00002cda movs r0, 1 | r0 = 1;
0x00002cdc blx 0x11f4 | r0 = exit (r0);
| label_4:
0x00002ce0 blx 0x1164 | stack_chk_fail ();
| label_3:
0x00002ce4 bl 0x2b00 | fcn_00002b00 ();
| label_2:
0x00002ce8 ldr r3, [pc, 0x34] |
0x00002cea ldr r1, [pc, 0x30] | r1 = *(0x2d1e);
0x00002cec ldr r2, [pc, 0x34] |
0x00002cee add r3, pc |
0x00002cf0 ldr r0, [r5, r1] | r0 = *((r5 + r1));
0x00002cf2 ldr r3, [r3] | r3 = *(0x5a12);
0x00002cf4 add r2, pc | r2 = 0x5a1c;
0x00002cf6 str r6, [sp] | *(sp) = r6;
0x00002cf8 b 0x2cd2 |
| } while (1);
| }
; 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 @ 0x2d28 */
| #include <stdint.h>
|
; (fcn) fcn.00002d28 () | uint32_t fcn_00002d28 (int16_t arg1) {
| r0 = arg1;
0x00002d28 ldr.w ip, [pc, 0x24] | ip = *(0x00002d50);
0x00002d2c movs r1, 1 | r1 = 1;
0x00002d2e push {r3, lr} |
0x00002d30 mov r3, r0 | r3 = r0;
0x00002d32 ldr.w lr, [pc, 0x20] | lr = *(0x2d56);
0x00002d36 add ip, pc |
0x00002d38 ldr r2, [pc, 0x1c] |
0x00002d3a mov r0, ip | r0 = ip;
0x00002d3c ldr.w r4, [ip, lr] | r4 = *((ip + lr));
0x00002d40 add r2, pc | r2 = 0x5a9c;
0x00002d42 ldr r0, [r4] | r0 = *(r4);
0x00002d44 blx 0x12c0 | fprintf_chk ()
0x00002d48 movs r0, 1 | r0 = 1;
0x00002d4a blx 0x11f4 | exit (r0);
0x00002d4e nop |
0x00002d50 asrs r6, r6, 5 | r6 >>= 5;
0x00002d52 movs r1, r0 | r1 = r0;
0x00002d54 lsls r4, r7, 4 | r4 = r7 << 4;
0x00002d56 movs r0, r0 |
0x00002d58 lsrs r0, r6, 0x10 | r0 = r6 >> 0x10;
0x00002d5a movs r0, r0 |
| if (r2 == 0) {
0x00002d5c cbz r2, 0x2d92 | goto label_1;
| }
0x00002d5e push {r3, r4, r5, r6, r7, lr} |
0x00002d60 mov r7, r0 | r7 = r0;
0x00002d62 mov r5, r1 | r5 = r1;
0x00002d64 mov r6, r2 | r6 = r2;
0x00002d66 movs r4, 0 | r4 = 0;
| do {
0x00002d68 subs r2, r6, r4 | r2 = r6 - r4;
0x00002d6a mov r1, r5 | r1 = r5;
0x00002d6c mov r0, r7 | r0 = r7;
0x00002d6e blx 0x12b4 | r0 = write (r0, r1, r2);
0x00002d72 cmp r0, 0 |
0x00002d74 itt ge |
| if (r0 < 0) {
0x00002d76 addge r4, r4, r0 | r4 += r0;
| }
| if (r0 < 0) {
0x00002d78 addge r5, r5, r0 | r5 += r0;
| }
| if (r0 < 0) {
0x00002d7a blt 0x2d84 | goto label_2;
| }
| label_0:
0x00002d7c cmp r4, r6 |
0x00002d7e blo 0x2d68 |
| } while (r4 <= r6);
0x00002d80 movs r0, 1 | r0 = 1;
0x00002d82 pop {r3, r4, r5, r6, r7, pc} |
| label_2:
0x00002d84 blx 0x1254 | r0 = errno_location ();
0x00002d88 ldr r3, [r0] | r3 = *(r0);
0x00002d8a cmp r3, 4 |
| if (r3 == 4) {
0x00002d8c beq 0x2d7c | goto label_0;
| }
0x00002d8e movs r0, 0 | r0 = 0;
0x00002d90 pop {r3, r4, r5, r6, r7, pc} |
| label_1:
0x00002d92 movs r0, 1 | r0 = 1;
0x00002d94 bx lr | return r0;
| }
[*] Function fprintf used 8 times dbus-send