[*] Binary protection state of dbus-daemon
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function printf tear down of dbus-daemon
; 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-daemon @ 0x223e4 */
| #include <stdint.h>
|
; (fcn) fcn.000223e4 () | void fcn_000223e4 (int16_t arg1) {
| r0 = arg1;
0x000223e4 push {r4, lr} |
0x000223e6 mov r4, r0 | r4 = r0;
0x000223e8 ldr r0, [r0, 0x10] | r0 = *((r0 + 0x10));
| if (r0 != 0) {
0x000223ea cbz r0, 0x223f0 |
0x000223ec blx 0xa2c4 | fcn_0000a2c4 ();
| }
0x000223f0 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
| if (r0 != 0) {
0x000223f2 cbz r0, 0x223f8 |
0x000223f4 blx 0xa2c4 | fcn_0000a2c4 ();
| }
0x000223f8 ldr r1, [r4, 0x14] | r1 = *((r4 + 0x14));
| if (r1 != 0) {
0x000223fa cbz r1, 0x22406 |
0x000223fc ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000223fe ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00022400 ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x00022402 blx 0xae08 | fcn_0000ae08 ();
| }
0x00022406 ldr r3, [r4] | r3 = *(r4);
0x00022408 ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x0002240a blx 0xa004 | fcn_0000a004 ();
0x0002240e ldr r0, [r4] | r0 = *(r4);
0x00022410 bl 0x21b04 | fcn_00021b04 (r0);
0x00022414 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x00022416 bl 0x221f4 | bus_service_unref ();
0x0002241a mov r0, r4 | r0 = r4;
0x0002241c pop.w {r4, lr} |
0x00022420 b.w 0xa0f8 | return void (*0xa0f8)() ();
| }
; 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-daemon @ 0x27fbc */
| #include <stdint.h>
|
; (fcn) fcn.00027fbc () | void fcn_00027fbc (int16_t arg1) {
| int16_t var_0h_2;
| r0 = arg1;
0x00027fbc push {r4, r5, r6, lr} |
0x00027fbe mov r4, r0 | r4 = r0;
0x00027fc0 ldr r5, [pc, 0x74] |
0x00027fc2 sub sp, 8 |
0x00027fc4 subs r0, 0 |
0x00027fc6 mov.w r3, 0x98 | r3 = 0x98;
0x00027fca ldr r6, [pc, 0x70] |
0x00027fcc it ne |
| if (r0 == 0) {
0x00027fce movne r0, 1 | r0 = 1;
| }
0x00027fd0 ldr r1, [pc, 0x6c] |
0x00027fd2 add r5, pc | r5 = 0x5000e;
0x00027fd4 adds r5, 0x40 | r5 += 0x40;
0x00027fd6 add r6, pc | r6 = 0x50018;
0x00027fd8 str r5, [sp] | *(sp) = r5;
0x00027fda add r1, pc | r1 = 0x5001e;
0x00027fdc mov r2, r6 | r2 = r6;
0x00027fde blx 0xae50 | fcn_0000ae50 ();
0x00027fe2 ldr r0, [r4] | r0 = *(r4);
0x00027fe4 movs r3, 0x99 | r3 = 0x99;
0x00027fe6 ldr r1, [pc, 0x5c] |
0x00027fe8 mov r2, r6 | r2 = r6;
0x00027fea str r5, [sp] | *(sp) = r5;
0x00027fec cmp r0, 0 |
0x00027fee add r1, pc | r1 = 0x50038;
0x00027ff0 ite le |
| if (r0 > 0) {
0x00027ff2 movle r0, 0 | r0 = 0;
| }
| if (r0 <= 0) {
0x00027ff4 movgt r0, 1 | r0 = 1;
| }
0x00027ff6 blx 0xae50 | fcn_0000ae50 ();
0x00027ffa ldr r3, [r4] | r3 = *(r4);
0x00027ffc subs r3, 1 | r3--;
0x00027ffe str r3, [r4] | *(r4) = r3;
| if (r3 != 0) {
0x00028000 cbnz r3, 0x28034 | goto label_0;
| }
0x00028002 ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x00028004 add.w r5, r4, 0x20 | r5 = r4 + 0x20;
| if (r3 == 0) {
0x00028008 cbz r3, 0x2801a | goto label_1;
| }
| do {
0x0002800a mov r0, r5 | r0 = r5;
0x0002800c blx 0xa168 | fcn_0000a168 ();
0x00028010 blx 0xa004 | fcn_0000a004 ();
0x00028014 ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x00028016 cmp r3, 0 |
0x00028018 bne 0x2800a |
| } while (r3 != 0);
| label_1:
0x0002801a ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x0002801c blx 0xa898 | fcn_0000a898 ();
0x00028020 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x00028022 ldr r3, [r0] | r3 = *(r0);
0x00028024 ldr r3, [r3] | r3 = *(r3);
0x00028026 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00028028 mov r0, r4 | r0 = r4;
0x0002802a add sp, 8 |
0x0002802c pop.w {r4, r5, r6, lr} |
0x00028030 b.w 0xa0f8 | void (*0xa0f8)() ();
| label_0:
0x00028034 add sp, 8 |
0x00028036 pop {r4, r5, r6, pc} |
| }
; 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-daemon @ 0x2825c */
| #include <stdint.h>
|
; (fcn) fcn.0002825c () | void fcn_0002825c (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0002825c push {r3, r4, r5, r6, r7, lr} |
0x0002825e add.w r7, r0, 0xc | r7 = r0 + 0xc;
0x00028262 mov r5, r0 | r5 = r0;
0x00028264 mov r0, r7 | r0 = r7;
0x00028266 mov r6, r1 | r6 = r1;
0x00028268 blx 0xaa18 | r0 = fcn_0000aa18 ();
0x0002826c mov r1, r0 | r1 = r0;
| do {
| if (r1 == 0) {
0x0002826e cbz r1, 0x2828a | goto label_0;
| }
0x00028270 ldr r4, [r5, 0xc] | r4 = *((r5 + 0xc));
0x00028272 ldr r2, [r1, 4] | r2 = *((r1 + 4));
0x00028274 cmp r2, r4 |
0x00028276 ldr r4, [r1, 8] | r4 = *((r1 + 8));
| if (r2 == r4) {
0x00028278 beq 0x28284 | goto label_1;
| }
0x0002827a ldr r0, [r4] | r0 = *(r4);
0x0002827c cmp r0, r6 |
| if (r0 == r6) {
0x0002827e beq 0x28298 | goto label_2;
| }
0x00028280 mov r1, r2 | r1 = r2;
0x00028282 b 0x2826e |
| } while (1);
| label_1:
0x00028284 ldr r2, [r4] | r2 = *(r4);
0x00028286 cmp r6, r2 |
| if (r6 != r2) {
0x00028288 beq 0x28298 |
| label_0:
0x0002828a ldr r0, [pc, 0x28] |
0x0002828c mov r1, r6 | r1 = r6;
0x0002828e pop.w {r3, r4, r5, r6, r7, lr} |
0x00028292 add r0, pc | r0 = 0x5054c;
0x00028294 b.w 0xaa04 | void (*0xaa04)() ();
| }
| label_2:
0x00028298 mov r0, r7 | r0 = r7;
0x0002829a blx 0x9ff4 | fcn_00009ff4 ();
0x0002829e ldr r2, [r5, 0x10] | r2 = *((r5 + 0x10));
0x000282a0 mov r0, r4 | r0 = r4;
0x000282a2 ldr r3, [r5, 0x18] | r3 = *((r5 + 0x18));
0x000282a4 adds r2, 1 | r2++;
0x000282a6 subs r3, 1 | r3--;
0x000282a8 str r2, [r5, 0x10] | *((r5 + 0x10)) = r2;
0x000282aa str r3, [r5, 0x18] | *((r5 + 0x18)) = r3;
0x000282ac pop.w {r3, r4, r5, r6, r7, lr} |
0x000282b0 b.w 0xa0f8 | return void (*0xa0f8)() ();
| }
; 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-daemon @ 0x294e0 */
| #include <stdint.h>
|
; (fcn) fcn.000294e0 () | void fcn_000294e0 () {
0x000294e0 b.w 0xa0f8 | return void (*0xa0f8)() ();
| }
; 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-daemon @ 0x297d0 */
| #include <stdint.h>
|
; (fcn) fcn.000297d0 () | void fcn_000297d0 (int16_t arg1) {
| r0 = arg1;
0x000297d0 push {r4, lr} |
0x000297d2 mov r4, r0 | r4 = r0;
0x000297d4 ldr r0, [r0] | r0 = *(r0);
0x000297d6 blx 0xac24 | fcn_0000ac24 ();
0x000297da mov r0, r4 | r0 = r4;
0x000297dc pop.w {r4, lr} |
0x000297e0 b.w 0xa0f8 | return void (*0xa0f8)() ();
| }
; 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-daemon @ 0x2ac50 */
| #include <stdint.h>
|
; (fcn) fcn.0002ac50 () | void fcn_0002ac50 (uint32_t arg1) {
| int16_t var_0h;
| r0 = arg1;
0x0002ac50 cmp r0, 0 |
| if (r0 != 0) {
0x0002ac52 beq 0x2acb8 |
0x0002ac54 push {r4, r5, lr} |
0x0002ac56 mov r4, r0 | r4 = r0;
0x0002ac58 ldr r5, [pc, 0x60] |
0x0002ac5a sub sp, 0xc |
0x0002ac5c movs r3, 0xf6 | r3 = 0xf6;
0x0002ac5e ldr r0, [r0] | r0 = *(r0);
0x0002ac60 ldr r2, [pc, 0x5c] |
0x0002ac62 add r5, pc | r5 = 0x55922;
0x0002ac64 ldr r1, [pc, 0x5c] |
0x0002ac66 adds r5, 0x3c | r5 += 0x3c;
0x0002ac68 cmp r0, 0 |
0x0002ac6a str r5, [sp] | *(sp) = r5;
0x0002ac6c ite le |
| if (r0 > 0) {
0x0002ac6e movle r0, 0 | r0 = 0;
| }
| if (r0 <= 0) {
0x0002ac70 movgt r0, 1 | r0 = 1;
| }
0x0002ac72 add r2, pc | r2 = 0x55936;
0x0002ac74 add r1, pc | r1 = 0x5593c;
0x0002ac76 blx 0xae50 | fcn_0000ae50 ();
0x0002ac7a ldr r3, [r4] | r3 = *(r4);
0x0002ac7c subs r3, 1 | r3--;
0x0002ac7e cmp r3, 0 |
0x0002ac80 str r3, [r4] | *(r4) = r3;
| if (r3 > 0) {
0x0002ac82 ble 0x2ac88 |
0x0002ac84 add sp, 0xc |
0x0002ac86 pop {r4, r5, pc} |
| }
0x0002ac88 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x0002ac8a blx 0xa0fc | fcn_0000a0fc ();
0x0002ac8e ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0002ac90 blx 0xa0fc | fcn_0000a0fc ();
0x0002ac94 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x0002ac96 blx 0xa0fc | fcn_0000a0fc ();
0x0002ac9a ldr r0, [r4, 0x20] | r0 = *((r4 + 0x20));
0x0002ac9c blx 0xa0fc | fcn_0000a0fc ();
0x0002aca0 ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x0002aca2 blx 0xa0fc | fcn_0000a0fc ();
0x0002aca6 ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x0002aca8 blx 0xa0fc | fcn_0000a0fc ();
0x0002acac mov r0, r4 | r0 = r4;
0x0002acae add sp, 0xc |
0x0002acb0 pop.w {r4, r5, lr} |
0x0002acb4 b.w 0xa0f8 | void (*0xa0f8)() ();
| }
0x0002acb8 bx lr | return;
| }
; 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-daemon @ 0x2acc8 */
| #include <stdint.h>
|
; (fcn) fcn.0002acc8 () | void fcn_0002acc8 (uint32_t arg1) {
| int16_t var_0h;
| r0 = arg1;
| if (r0 != 0) {
0x0002acc8 cbz r0, 0x2ad18 |
0x0002acca push {r4, r5, lr} |
0x0002accc mov r4, r0 | r4 = r0;
0x0002acce ldr r5, [pc, 0x4c] |
0x0002acd0 sub sp, 0xc |
0x0002acd2 movs r3, 0x88 | r3 = 0x88;
0x0002acd4 ldr r0, [r0] | r0 = *(r0);
0x0002acd6 ldr r2, [pc, 0x48] |
0x0002acd8 add r5, pc | r5 = 0x559fa;
0x0002acda ldr r1, [pc, 0x48] |
0x0002acdc adds r5, 0x58 | r5 += 0x58;
0x0002acde cmp r0, 0 |
0x0002ace0 str r5, [sp] | *(sp) = r5;
0x0002ace2 ite le |
| if (r0 > 0) {
0x0002ace4 movle r0, 0 | r0 = 0;
| }
| if (r0 <= 0) {
0x0002ace6 movgt r0, 1 | r0 = 1;
| }
0x0002ace8 add r2, pc | r2 = 0x55a0e;
0x0002acea add r1, pc | r1 = 0x55a14;
0x0002acec blx 0xae50 | fcn_0000ae50 ();
0x0002acf0 ldr r3, [r4] | r3 = *(r4);
0x0002acf2 subs r3, 1 | r3--;
0x0002acf4 cmp r3, 0 |
0x0002acf6 str r3, [r4] | *(r4) = r3;
| if (r3 <= 0) {
0x0002acf8 bgt 0x2ad14 |
0x0002acfa ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
| if (r0 != 0) {
0x0002acfc cbz r0, 0x2ad02 |
0x0002acfe blx 0xa898 | fcn_0000a898 ();
| }
0x0002ad02 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x0002ad04 blx 0xa0fc | fcn_0000a0fc ();
0x0002ad08 mov r0, r4 | r0 = r4;
0x0002ad0a add sp, 0xc |
0x0002ad0c pop.w {r4, r5, lr} |
0x0002ad10 b.w 0xa0f8 | void (*0xa0f8)() ();
| }
0x0002ad14 add sp, 0xc |
0x0002ad16 pop {r4, r5, pc} |
| }
0x0002ad18 bx lr | return;
| }
; 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-daemon @ 0x2adb8 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0002adb8 () | void fcn_0002adb8 (uint32_t arg1) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| label_1:
0x0002adb8 cmp r0, 0 |
| if (r0 == 0) {
0x0002adba beq 0x2aeb2 | goto label_2;
| }
0x0002adbc push {r4, r5, r6, r7, lr} |
0x0002adbe mov r4, r0 | r4 = r0;
0x0002adc0 ldr r5, [pc, 0x100] |
0x0002adc2 sub sp, 0xc |
0x0002adc4 movs r3, 0xb2 | r3 = 0xb2;
0x0002adc6 ldr r0, [r0] | r0 = *(r0);
0x0002adc8 ldr r2, [pc, 0xfc] |
0x0002adca add r5, pc | r5 = 0x55c92;
0x0002adcc ldr r1, [pc, 0xfc] |
0x0002adce adds r5, 0xa0 | r5 += 0xa0;
0x0002add0 cmp r0, 0 |
0x0002add2 str r5, [sp] | *(sp) = r5;
0x0002add4 ite le |
| if (r0 > 0) {
0x0002add6 movle r0, 0 | r0 = 0;
| }
| if (r0 <= 0) {
0x0002add8 movgt r0, 1 | r0 = 1;
| }
0x0002adda add r2, pc | r2 = 0x55ca6;
0x0002addc add r1, pc | r1 = 0x55cac;
0x0002adde blx 0xae50 | fcn_0000ae50 ();
0x0002ade2 ldr r3, [r4] | r3 = *(r4);
0x0002ade4 subs r3, 1 | r3--;
0x0002ade6 cmp r3, 0 |
0x0002ade8 str r3, [r4] | *(r4) = r3;
| if (r3 > 0) {
0x0002adea bgt 0x2aeae | goto label_3;
| }
0x0002adec ldrb.w r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x0002adf0 lsls r3, r3, 0x1f | r3 <<= 0x1f;
| if (r3 < r3) {
0x0002adf2 bmi 0x2ae92 | goto label_4;
| }
| label_0:
0x0002adf4 ldr r0, [r4, 0x20] | r0 = *((r4 + 0x20));
| if (r0 != 0) {
0x0002adf6 cbz r0, 0x2adfc |
0x0002adf8 blx 0xacec | dbus_message_new_method_return ();
| }
0x0002adfc ldr r0, [r4, 0x1c] | r0 = *((r4 + 0x1c));
| if (r0 != 0) {
0x0002adfe cbz r0, 0x2ae18 |
0x0002ae00 movs r3, 0 | r3 = 0;
0x0002ae02 str r0, [sp] | *(sp) = r0;
0x0002ae04 mov r2, r3 | r2 = r3;
0x0002ae06 mov r1, r3 | r1 = r3;
0x0002ae08 str r3, [sp, 4] | var_4h = r3;
0x0002ae0a bl 0x2fcf0 | r0 = fcn_0002fcf0 (r0);
0x0002ae0e cmp r0, 0 |
| if (r0 == 0) {
0x0002ae10 beq 0x2aeb4 | goto label_5;
| }
0x0002ae12 ldr r0, [r4, 0x1c] | r0 = *((r4 + 0x1c));
0x0002ae14 bl 0x2f858 | fcn_0002f858 (r0, r1, r2, r3, r4, r5, r6);
| }
0x0002ae18 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0002ae1a add.w r7, r4, 0x14 | r7 = r4 + 0x14;
0x0002ae1e blx 0xa0fc | fcn_0000a0fc ();
0x0002ae22 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x0002ae24 blx 0xa0fc | fcn_0000a0fc ();
0x0002ae28 ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x0002ae2a blx 0xa0fc | fcn_0000a0fc ();
0x0002ae2e mov r0, r7 | r0 = r7;
0x0002ae30 blx 0xaa18 | r0 = fcn_0000aa18 ();
0x0002ae34 mov r5, r0 | r5 = r0;
| if (r5 == 0) {
| do {
0x0002ae36 cbz r5, 0x2ae58 | goto label_6;
| }
0x0002ae38 ldr r6, [r5, 8] | r6 = *((r5 + 8));
0x0002ae3a ldr r0, [r6] | r0 = *(r6);
| if (r0 != 0) {
0x0002ae3c cbz r0, 0x2ae42 |
0x0002ae3e blx 0xa8e8 | fcn_0000a8e8 ();
| }
0x0002ae42 ldr r0, [r6, 4] | r0 = *((r6 + 4));
| if (r0 != 0) {
0x0002ae44 cbz r0, 0x2ae4a |
0x0002ae46 blx 0xa004 | fcn_0000a004 ();
| }
0x0002ae4a mov r0, r6 | r0 = r6;
0x0002ae4c blx 0xa0fc | fcn_0000a0fc ();
0x0002ae50 ldr r5, [r5, 4] | r5 = *((r5 + 4));
0x0002ae52 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x0002ae54 cmp r5, r3 |
0x0002ae56 bne 0x2ae36 |
| } while (r5 != r3);
| label_6:
0x0002ae58 mov r0, r7 | r0 = r7;
0x0002ae5a blx 0xa588 | fcn_0000a588 ();
0x0002ae5e ldr r5, [r4, 4] | r5 = *((r4 + 4));
0x0002ae60 ldr r6, [r4, 0x18] | r6 = *((r4 + 0x18));
0x0002ae62 ldr r3, [pc, 0x6c] |
0x0002ae64 ldr r0, [r5, 0x14] | r0 = *((r5 + 0x14));
0x0002ae66 ldr r2, [pc, 0x6c] |
0x0002ae68 ldr r1, [pc, 0x6c] |
0x0002ae6a add r3, pc | r3 = 0x55d40;
0x0002ae6c subs r0, r0, r6 | r0 -= r6;
0x0002ae6e adds r3, 0xa0 | r3 += 0xa0;
0x0002ae70 str r0, [r5, 0x14] | *((r5 + 0x14)) = r0;
0x0002ae72 add r2, pc | r2 = 0x55d4c;
0x0002ae74 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x0002ae76 add r1, pc | r1 = 0x55d52;
0x0002ae78 ldr r0, [r0, 0x14] | r0 = *((r0 + 0x14));
0x0002ae7a str r3, [sp] | *(sp) = r3;
0x0002ae7c movs r3, 0xe2 | r3 = 0xe2;
0x0002ae7e mvns r0, r0 | r0 = ~r0;
0x0002ae80 lsrs r0, r0, 0x1f | r0 >>= 0x1f;
0x0002ae82 blx 0xae50 | fcn_0000ae50 ();
0x0002ae86 mov r0, r4 | r0 = r4;
0x0002ae88 add sp, 0xc |
0x0002ae8a pop.w {r4, r5, r6, r7, lr} |
0x0002ae8e b.w 0xa0f8 | void (*0xa0f8)() ();
| label_4:
0x0002ae92 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0002ae94 ldr r0, [r3, 0x10] | r0 = *((r3 + 0x10));
0x0002ae96 bl 0xc878 | bus_context_get_loop ();
0x0002ae9a ldr r1, [r4, 0x20] | r1 = *((r4 + 0x20));
0x0002ae9c bl 0x2825c | fcn_0002825c (r0, r1);
0x0002aea0 ldrb.w r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x0002aea4 bfc r3, 0, 1 | value_0 = BIT_MASK (1, );
| value_0 = ~value_0;
| r3 &= value_0;
0x0002aea8 strb.w r3, [r4, 0x24] | *((r4 + 0x24)) = r3;
0x0002aeac b 0x2adf4 | goto label_0;
| label_3:
0x0002aeae add sp, 0xc |
0x0002aeb0 pop {r4, r5, r6, r7, pc} |
| label_2:
0x0002aeb2 bx lr | return;
| label_5:
0x0002aeb4 ldr r1, [pc, 0x24] |
0x0002aeb6 movs r2, 0xc9 | r2 = 0xc9;
0x0002aeb8 ldr r0, [pc, 0x24] |
0x0002aeba add r1, pc | r1 = 0x55d9a;
0x0002aebc add r0, pc | r0 = 0x55da0;
0x0002aebe blx 0xaa48 | fcn_0000aa48 ();
0x0002aec2 nop |
0x0002aec4 subs r6, r7, 2 | r6 = r7 - 2;
0x0002aec6 movs r1, r0 | r1 = r0;
0x0002aec8 asrs r6, r2, 0xa | r6 = r2 >> 0xa;
0x0002aeca movs r1, r0 | r1 = r0;
0x0002aecc asrs r4, r0, 0x1d | r4 = r0 >> 0x1d;
0x0002aece movs r1, r0 | r1 = r0;
0x0002aed0 subs r6, r3, 0 | r6 = r3 - 0;
0x0002aed2 movs r1, r0 | r1 = r0;
0x0002aed4 asrs r6, r7, 7 | r6 = r7 >> 7;
0x0002aed6 movs r1, r0 | r1 = r0;
0x0002aed8 asrs r6, r1, 0x1b | r6 = r1 >> 0x1b;
0x0002aeda movs r1, r0 | r1 = r0;
0x0002aedc asrs r6, r6, 6 | r6 >>= 6;
0x0002aede movs r1, r0 | r1 = r0;
0x0002aee0 ldrsh r0, [r7, r6] | r0 = *((r7 + r6));
0x0002aee2 movs r0, r0 |
0x0002aee4 b 0x2adb8 | goto label_1;
| }
; 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-daemon @ 0x2e134 */
| #include <stdint.h>
|
; (fcn) fcn.0002e134 () | void fcn_0002e134 (int16_t arg1) {
| int16_t var_0h;
| r0 = arg1;
0x0002e134 ldr r3, [pc, 0x40] |
0x0002e136 push {r4, lr} |
0x0002e138 mov r4, r0 | r4 = r0;
0x0002e13a ldr r0, [r0] | r0 = *(r0);
0x0002e13c sub sp, 8 |
0x0002e13e add r3, pc | r3 = 0x5c2ba;
0x0002e140 ldr.w ip, [pc, 0x38] | ip = *(0x0002e17c);
0x0002e144 ldr r2, [pc, 0x38] |
0x0002e146 subs r0, r0, r3 | r0 -= r3;
0x0002e148 ldr r1, [pc, 0x38] |
0x0002e14a clz r0, r0 | r0 &= r0;
0x0002e14e add ip, pc |
0x0002e150 lsrs r0, r0, 5 | r0 >>= 5;
0x0002e152 movs r3, 0x32 | r3 = 0x32;
0x0002e154 str.w ip, [sp] | __asm ("str.w ip, [sp]");
0x0002e158 add r2, pc | r2 = 0x5c2dc;
0x0002e15a add r1, pc | r1 = 0x5c2e2;
0x0002e15c blx 0xae50 | fcn_0000ae50 ();
0x0002e160 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x0002e162 adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 != r0) {
0x0002e164 beq 0x2e16a |
0x0002e166 blx 0xabd0 | fcn_0000abd0 ();
| }
0x0002e16a mov r0, r4 | r0 = r4;
0x0002e16c add sp, 8 |
0x0002e16e pop.w {r4, lr} |
0x0002e172 b.w 0xa0f8 | return void (*0xa0f8)() ();
| }
; 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-daemon @ 0x2e64c */
| #include <stdint.h>
|
; (fcn) fcn.0002e64c () | void fcn_0002e64c (int16_t arg1) {
| int16_t var_0h;
| r0 = arg1;
0x0002e64c ldr r3, [pc, 0x3c] |
0x0002e64e push {r4, lr} |
0x0002e650 mov r4, r0 | r4 = r0;
0x0002e652 ldr r0, [r0] | r0 = *(r0);
0x0002e654 sub sp, 8 |
0x0002e656 add r3, pc | r3 = 0x5cce6;
0x0002e658 ldr.w ip, [pc, 0x34] | ip = *(0x0002e690);
0x0002e65c ldr r2, [pc, 0x34] |
0x0002e65e subs r0, r0, r3 | r0 -= r3;
0x0002e660 ldr r1, [pc, 0x34] |
0x0002e662 clz r0, r0 | r0 &= r0;
0x0002e666 add ip, pc |
0x0002e668 movs r3, 0x38 | r3 = 0x38;
0x0002e66a add r2, pc | r2 = 0x5cd02;
0x0002e66c str.w ip, [sp] | __asm ("str.w ip, [sp]");
0x0002e670 add r1, pc | r1 = 0x5cd0c;
0x0002e672 lsrs r0, r0, 5 | r0 >>= 5;
0x0002e674 blx 0xae50 | fcn_0000ae50 ();
0x0002e678 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x0002e67a blx 0xa0fc | fcn_0000a0fc ();
0x0002e67e mov r0, r4 | r0 = r4;
0x0002e680 add sp, 8 |
0x0002e682 pop.w {r4, lr} |
0x0002e686 b.w 0xa0f8 | return void (*0xa0f8)() ();
| }
; 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-daemon @ 0x2f858 */
| #include <stdint.h>
|
; (fcn) fcn.0002f858 () | void fcn_0002f858 (int16_t arg_0h, int16_t arg_24h, int16_t arg_28h, int16_t arg_2ch, int16_t arg_30h, int16_t arg_34h, int16_t arg_38h, int16_t arg_3ch, int16_t arg_42h, int16_t arg_44h, int16_t arg_48h, int16_t arg_4ah, int16_t arg_4ch, int16_t arg1) {
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch;
| int32_t var_ch_2;
| int16_t var_14h;
| int16_t var_1ch;
| r0 = arg1;
0x0002f858 ldr r1, [pc, 0x118] |
0x0002f85a mov.w r3, 0x150 | r3 = 0x150;
0x0002f85e ldr r2, [pc, 0x118] | r2 = *(0x2f97a);
0x0002f860 push {r4, r5, r6, lr} |
0x0002f862 mov r4, r0 | r4 = r0;
0x0002f864 ldr r5, [pc, 0x114] |
0x0002f866 add r1, pc | r1 = 0x5f1de;
0x0002f868 sub sp, 0x10 |
0x0002f86a subs r0, 0 |
0x0002f86c ldr r6, [pc, 0x110] |
0x0002f86e it ne |
| if (r0 == 0) {
0x0002f870 movne r0, 1 | r0 = 1;
| }
0x0002f872 ldr r2, [r1, r2] |
0x0002f874 add r5, pc | r5 = 0x5f1f4;
0x0002f876 ldr r1, [pc, 0x10c] |
0x0002f878 adds r5, 0x70 | r5 += 0x70;
0x0002f87a add r6, pc | r6 = 0x5f1fe;
0x0002f87c ldr r2, [r2] | r2 = *(0x5f1de);
0x0002f87e str r2, [sp, 0xc] | var_ch = r2;
0x0002f880 mov.w r2, 0 | r2 = 0;
0x0002f884 mov r2, r6 | r2 = r6;
0x0002f886 add r1, pc | r1 = 0x5f210;
0x0002f888 str r5, [sp] | *(sp) = r5;
0x0002f88a blx 0xae50 | fcn_0000ae50 ();
0x0002f88e ldr r0, [r4] | r0 = *(r4);
0x0002f890 movw r3, 0x151 | r3 = 0x151;
0x0002f894 ldr r1, [pc, 0xf0] |
0x0002f896 mov r2, r6 | r2 = r6;
0x0002f898 str r5, [sp] | *(sp) = r5;
0x0002f89a cmp r0, 0 |
0x0002f89c add r1, pc | r1 = 0x5f228;
0x0002f89e ite le |
| if (r0 > 0) {
0x0002f8a0 movle r0, 0 | r0 = 0;
| }
| if (r0 <= 0) {
0x0002f8a2 movgt r0, 1 | r0 = 1;
| }
0x0002f8a4 blx 0xae50 | fcn_0000ae50 ();
0x0002f8a8 ldr r3, [r4] | r3 = *(r4);
0x0002f8aa subs r3, 1 | r3--;
0x0002f8ac str r3, [r4] | *(r4) = r3;
| if (r3 != 0) {
0x0002f8ae cbz r3, 0x2f8c8 |
0x0002f8b0 ldr r2, [pc, 0xd8] |
0x0002f8b2 ldr r3, [pc, 0xc4] | r3 = *(0x2f97a);
0x0002f8b4 add r2, pc | r2 = 0x5f244;
0x0002f8b6 ldr r3, [r2, r3] | r3 = *(0x5f244);
0x0002f8b8 ldr r2, [r3] | r2 = *(0x5f244);
0x0002f8ba ldr r3, [sp, 0xc] | r3 = var_ch;
0x0002f8bc eors r2, r3 | r2 ^= r3;
0x0002f8be mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0002f8c2 bne 0x2f96e | goto label_12;
| }
0x0002f8c4 add sp, 0x10 |
0x0002f8c6 pop {r4, r5, r6, pc} |
| }
0x0002f8c8 mov r0, r4 | r0 = r4;
0x0002f8ca bl 0x2f044 | fcn_0002f044 (r0);
0x0002f8ce mov r0, r4 | r0 = r4;
0x0002f8d0 bl 0x2f0a8 | fcn_0002f0a8 (r0);
0x0002f8d4 ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x0002f8d6 cmp r0, 0 |
| if (r0 > 0) {
0x0002f8d8 bgt 0x2f908 | goto label_13;
| }
0x0002f8da ldr r0, [r4, 0x18] | r0 = *((r4 + 0x18));
0x0002f8dc cbz r0, 0x2f8e2 |
| while (r0 != 0) {
0x0002f8de blx 0xa784 | fcn_0000a784 ();
| label_0:
0x0002f8e2 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x0002f8e4 blx 0xa0fc | fcn_0000a0fc ();
0x0002f8e8 ldr r2, [pc, 0xa4] |
0x0002f8ea ldr r3, [pc, 0x8c] | r3 = *(0x2f97a);
0x0002f8ec add r2, pc | r2 = 0x5f280;
0x0002f8ee ldr r3, [r2, r3] | r3 = *(0x5f280);
0x0002f8f0 ldr r2, [r3] | r2 = *(0x5f280);
0x0002f8f2 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0002f8f4 eors r2, r3 | r2 ^= r3;
0x0002f8f6 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0002f8fa bne 0x2f96e | goto label_12;
| }
0x0002f8fc mov r0, r4 | r0 = r4;
0x0002f8fe add sp, 0x10 |
0x0002f900 pop.w {r4, r5, r6, lr} |
0x0002f904 b.w 0xa0f8 | void (*0xa0f8)() ();
| label_13:
0x0002f908 add r5, sp, 8 | r5 += var_8h;
0x0002f90a movs r2, 1 | r2 = 1;
0x0002f90c mov r1, r5 | r1 = r5;
0x0002f90e blx 0xaa30 | r0 = fcn_0000aa30 ();
0x0002f912 cmp r0, 0 |
| if (r0 == 0) {
0x0002f914 beq 0x2f926 | goto label_14;
| }
| if (r0 < 0) {
0x0002f916 blt 0x2f946 | goto label_15;
| }
| label_1:
0x0002f918 ldr r0, [r4, 0x18] | r0 = *((r4 + 0x18));
0x0002f91a mov.w r3, -1 | r3 = -1;
0x0002f91e str r3, [r4, 0x10] | *((r4 + 0x10)) = r3;
0x0002f920 cmp r0, 0 |
0x0002f922 bne 0x2f8de |
| }
0x0002f924 b 0x2f8e2 | goto label_0;
| label_14:
0x0002f926 ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x0002f928 movs r1, 9 | r1 = 9;
0x0002f92a blx 0xb0cc | fcn_0000b0cc ();
| label_2:
0x0002f92e ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x0002f930 movs r2, 0 | r2 = 0;
0x0002f932 mov r1, r5 | r1 = r5;
0x0002f934 blx 0xaa30 | r0 = fcn_0000aa30 ();
0x0002f938 cmp r0, 0 |
| if (r0 >= 0) {
0x0002f93a bge 0x2f918 | goto label_1;
| }
0x0002f93c blx 0xb214 | r0 = dbus_connection_pop_message ();
0x0002f940 ldr r3, [r0] | r3 = *(r0);
0x0002f942 cmp r3, 4 |
| if (r3 == 4) {
0x0002f944 beq 0x2f92e | goto label_2;
| }
| label_15:
0x0002f946 blx 0xb214 | r0 = dbus_connection_pop_message ();
0x0002f94a ldr r5, [r0] | r5 = *(r0);
0x0002f94c cmp r5, 0xa |
| if (r5 != 0xa) {
0x0002f94e beq 0x2f964 |
0x0002f950 mov r0, r5 | r0 = r5;
0x0002f952 blx 0xa4c8 | r0 = fcn_0000a4c8 ();
0x0002f956 mov r2, r0 | r2 = r0;
0x0002f958 ldr r0, [pc, 0x38] |
0x0002f95a mov r1, r5 | r1 = r5;
0x0002f95c add r0, pc | r0 = 0x5f2f4;
0x0002f95e blx 0xaa08 | fcn_0000aa08 ();
0x0002f962 b 0x2f918 | goto label_1;
| }
0x0002f964 ldr r0, [pc, 0x30] |
0x0002f966 add r0, pc | r0 = 0x5f302;
0x0002f968 blx 0xaa08 | fcn_0000aa08 ();
0x0002f96c b 0x2f918 | goto label_1;
| label_12:
0x0002f96e blx 0xacf8 | chdir ();
0x0002f972 nop |
0x0002f974 lsls r2, r1, 4 | r2 = r1 << 4;
0x0002f976 movs r1, r0 | r1 = r0;
0x0002f978 lsls r4, r6, 0x19 | r4 = r6 << 0x19;
0x0002f97a movs r0, r0 |
0x0002f97c b 0x30068 | goto label_16;
| do {
0x0002fe3e mov.w r8, -1 | r8 = -1;
0x0002fe42 mov sb, r8 | sb = r8;
| label_8:
0x0002fe44 movs r0, 1 | r0 = 1;
| if (r5 != 0) {
0x0002fe46 cbz r5, 0x2fe54 |
0x0002fe48 mov r0, r5 | r0 = r5;
0x0002fe4a blx 0xb020 | fcn_0000b020 ();
0x0002fe4e subs r0, 0 |
0x0002fe50 it ne |
| if (r0 != 0) {
0x0002fe52 movne r0, 1 | r0 = 1;
| goto label_17;
| }
| }
| label_17:
0x0002fe54 ldr.w r3, [pc, 0x598] |
0x0002fe58 ldr.w r2, [pc, 0x598] |
0x0002fe5c ldr.w r1, [pc, 0x598] |
0x0002fe60 add r3, pc | r3 = 0x60254;
0x0002fe62 adds r3, 0xa8 | r3 += 0xa8;
0x0002fe64 add r2, pc | r2 = 0x6025c;
0x0002fe66 str r3, [sp] | *(sp) = r3;
0x0002fe68 add r1, pc | r1 = 0x60264;
0x0002fe6a movw r3, 0x5e7 | r3 = 0x5e7;
0x0002fe6e blx 0xae50 | fcn_0000ae50 ();
0x0002fe72 ldr r0, [sp, 0x24] | r0 = *(arg_24h);
0x0002fe74 cmp r0, 0 |
| if (r0 >= 0) {
0x0002fe76 blt 0x2fe84 |
0x0002fe78 movs r1, 0 | r1 = 0;
0x0002fe7a blx 0xa0e0 | dbus_poll ();
0x0002fe7e mov.w r3, -1 | r3 = -1;
0x0002fe82 str r3, [sp, 0x24] | *(arg_24h) = r3;
| }
0x0002fe84 ldr r0, [sp, 0x28] | r0 = *(arg_28h);
0x0002fe86 cmp r0, 0 |
| if (r0 >= 0) {
0x0002fe88 blt 0x2fe96 |
0x0002fe8a movs r1, 0 | r1 = 0;
0x0002fe8c blx 0xa0e0 | dbus_poll ();
0x0002fe90 mov.w r3, -1 | r3 = -1;
0x0002fe94 str r3, [sp, 0x28] | *(arg_28h) = r3;
| }
0x0002fe96 ldr r0, [sp, 0x2c] | r0 = *(arg_2ch);
0x0002fe98 cmp r0, 0 |
| if (r0 >= 0) {
0x0002fe9a blt 0x2fea8 |
0x0002fe9c movs r1, 0 | r1 = 0;
0x0002fe9e blx 0xa0e0 | dbus_poll ();
0x0002fea2 mov.w r3, -1 | r3 = -1;
0x0002fea6 str r3, [sp, 0x2c] | *(arg_2ch) = r3;
| }
0x0002fea8 ldr r0, [sp, 0x30] | r0 = *(arg_30h);
0x0002feaa cmp r0, 0 |
| if (r0 >= 0) {
0x0002feac blt 0x2feba |
0x0002feae movs r1, 0 | r1 = 0;
0x0002feb0 blx 0xa0e0 | dbus_poll ();
0x0002feb4 mov.w r3, -1 | r3 = -1;
0x0002feb8 str r3, [sp, 0x30] | *(arg_30h) = r3;
| }
0x0002feba cmp.w sb, 0 |
| if (sb >= 0) {
0x0002febe blt 0x2fec8 |
0x0002fec0 movs r1, 0 | r1 = 0;
0x0002fec2 mov r0, sb | r0 = sb;
0x0002fec4 blx 0xa0e0 | dbus_poll ();
| }
0x0002fec8 cmp.w r8, 0 |
| if (r8 >= 0) {
0x0002fecc blt 0x2fed6 |
0x0002fece movs r1, 0 | r1 = 0;
0x0002fed0 mov r0, r8 | r0 = r8;
0x0002fed2 blx 0xa0e0 | dbus_poll ();
| }
0x0002fed6 mov r0, r4 | r0 = r4;
0x0002fed8 bl 0x2f858 | fcn_0002f858 (r0, r1, r2, r3, r4, r5, r6);
| label_3:
0x0002fedc movs r0, 0 | r0 = 0;
| label_4:
0x0002fede ldr.w r2, [pc, 0x51c] | r2 = *(0x000303fc);
0x0002fee2 ldr.w r3, [pc, 0x4e4] | r3 = *(0x303ca);
0x0002fee6 add r2, pc | r2 += pc;
0x0002fee8 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0002feea ldr r2, [r3] | r2 = *(0x303ca);
0x0002feec ldr r3, [sp, 0x4c] | r3 = *(arg_4ch);
0x0002feee eors r2, r3 | r2 ^= r3;
0x0002fef0 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0002fef4 bne.w 0x303ae | goto label_18;
| }
0x0002fef8 add sp, 0x54 |
0x0002fefa pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_11:
0x0002ff32 ldr.w r0, [fp] | r0 = *(fp);
0x0002ff36 blx 0xa4c8 | fcn_0000a4c8 ();
0x0002ff3a ldr.w r2, [pc, 0x4d0] | r2 = *(0x0003040c);
0x0002ff3e mov r3, r0 | r3 = r0;
0x0002ff40 ldr.w r1, [pc, 0x4cc] |
0x0002ff44 mov r0, r5 | r0 = r5;
0x0002ff46 add r2, pc | r2 += pc;
0x0002ff48 add r1, pc | r1 = 0x6035c;
0x0002ff4a blx 0xa310 | fcn_0000a310 ();
0x0002ff4e b 0x2fe3e |
| } while (1);
| label_7:
0x00030038 ldr r3, [pc, 0x3f8] | r3 = *(0x30434);
0x0003003a ldr r2, [sp, 8] | r2 = var_8h;
0x0003003c ldr.w fp, [r2, r3] | fp = *((r2 + r3));
0x00030040 ldr.w r0, [fp] | r0 = *(fp);
0x00030044 blx 0xa7d8 | fcn_0000a7d8 ();
0x00030048 ldr r2, [sp, 8] | r2 = var_8h;
0x0003004a ldr r3, [pc, 0x3ec] | r3 = *(0x3043a);
0x0003004c ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0003004e ldr r0, [r3] | r0 = *(0x3043a);
0x00030050 str r3, [sp, 8] | var_8h = r3;
0x00030052 blx 0xa7d8 | fcn_0000a7d8 ();
0x00030056 blx 0xaf64 | r0 = fcn_0000af64 ();
0x0003005a subs.w sl, r0, 0 | sl = r0 - 0;
| if (sl < r0) {
0x0003005e blt.w 0x30318 | goto label_19;
| }
| if (sl == r0) {
0x00030062 bne.w 0x301a4 |
0x00030066 mov r1, sl | r1 = sl;
| label_16:
0x00030068 movs r0, 0xd | r0 = 0xd;
0x0003006a blx 0xa1ec | fcn_0000a1ec ();
0x0003006e ldr r0, [sp, 0x24] | r0 = *(arg_24h);
0x00030070 cmp r0, 0 |
| if (r0 >= 0) {
0x00030072 blt 0x30080 |
0x00030074 mov r1, sl | r1 = sl;
0x00030076 blx 0xa0e0 | dbus_poll ();
0x0003007a mov.w r3, -1 | r3 = -1;
0x0003007e str r3, [sp, 0x24] | *(arg_24h) = r3;
| }
0x00030080 ldr r0, [sp, 0x2c] | r0 = *(arg_2ch);
0x00030082 cmp r0, 0 |
| if (r0 >= 0) {
0x00030084 blt 0x30092 |
0x00030086 movs r1, 0 | r1 = 0;
0x00030088 blx 0xa0e0 | dbus_poll ();
0x0003008c mov.w r3, -1 | r3 = -1;
0x00030090 str r3, [sp, 0x2c] | *(arg_2ch) = r3;
| }
0x00030092 ldr.w r0, [fp] | r0 = *(fp);
0x00030096 blx 0xa7d8 | fcn_0000a7d8 ();
0x0003009a ldr r3, [sp, 8] | r3 = var_8h;
0x0003009c ldr r0, [r3] | r0 = *(r3);
0x0003009e blx 0xa7d8 | fcn_0000a7d8 ();
0x000300a2 blx 0xaf64 | r0 = fcn_0000af64 ();
0x000300a6 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x000300a8 blt.w 0x303b2 | goto label_20;
| }
| if (r5 != r0) {
0x000300ac bne.w 0x3022c | goto label_21;
| }
0x000300b0 bl 0x29fd8 | fcn_00029fd8 (r0);
0x000300b4 movs r1, 1 | r1 = 1;
0x000300b6 movs r0, 0xd | r0 = 0xd;
0x000300b8 blx 0xa1ec | fcn_0000a1ec ();
0x000300bc ldr r0, [sp, 0x30] | r0 = *(arg_30h);
0x000300be cmp r0, 0 |
| if (r0 >= 0) {
0x000300c0 blt 0x300ce |
0x000300c2 mov r1, r5 | r1 = r5;
0x000300c4 blx 0xa0e0 | dbus_poll ();
0x000300c8 mov.w r3, -1 | r3 = -1;
0x000300cc str r3, [sp, 0x30] | *(arg_30h) = r3;
| }
0x000300ce cmp.w sb, 0 |
| if (sb >= 0) {
0x000300d2 bge.w 0x30342 | goto label_22;
| }
0x000300d6 cmp.w r8, 0 |
| if (r8 >= 0) {
0x000300da bge.w 0x3039c | goto label_23;
| }
| label_9:
0x000300de ldr r4, [sp, 0x14] | r4 = var_14h;
0x000300e0 mov r1, r7 | r1 = r7;
0x000300e2 ldr r0, [sp, 0x28] | r0 = *(arg_28h);
0x000300e4 ldrd r2, r3, [sp, 0xc] | __asm ("ldrd r2, r3, [var_ch]");
0x000300e8 str r4, [sp] | *(sp) = r4;
0x000300ea bl 0x2f2cc | fcn_0002f2cc (r0, r1, r2, r3);
0x000300ee mov r0, r4 | r0 = r4;
0x000300f0 bl 0x2f858 | fcn_0002f858 (r0, r1, r2, r3, r4, r5, r6);
0x000300f4 ldr r1, [pc, 0x344] |
0x000300f6 movs r2, 0 | r2 = 0;
0x000300f8 mov r0, r5 | r0 = r5;
0x000300fa add r1, pc | r1 = 0x6053a;
0x000300fc blx 0xa310 | fcn_0000a310 ();
0x00030100 b 0x2fedc | goto label_3;
| }
0x000301a4 ldr r0, [sp, 0x28] | r0 = *(arg_28h);
0x000301a6 cmp r0, 0 |
| if (r0 >= 0) {
0x000301a8 blt 0x301b6 |
0x000301aa movs r1, 0 | r1 = 0;
0x000301ac blx 0xa0e0 | dbus_poll ();
0x000301b0 mov.w r3, -1 | r3 = -1;
0x000301b4 str r3, [sp, 0x28] | *(arg_28h) = r3;
| }
0x000301b6 ldr r0, [sp, 0x30] | r0 = *(arg_30h);
0x000301b8 cmp r0, 0 |
| if (r0 >= 0) {
0x000301ba blt 0x301c8 |
0x000301bc movs r1, 0 | r1 = 0;
0x000301be blx 0xa0e0 | dbus_poll ();
0x000301c2 mov.w r3, -1 | r3 = -1;
0x000301c6 str r3, [sp, 0x30] | *(arg_30h) = r3;
| }
0x000301c8 cmp.w sb, 0 |
| if (sb >= 0) {
0x000301cc blt 0x301d6 |
0x000301ce mov r0, sb | r0 = sb;
0x000301d0 movs r1, 0 | r1 = 0;
0x000301d2 blx 0xa0e0 | dbus_poll ();
| }
0x000301d6 cmp.w r8, 0 |
| if (r8 >= 0) {
0x000301da blt 0x301e4 |
0x000301dc mov r0, r8 | r0 = r8;
0x000301de movs r1, 0 | r1 = 0;
0x000301e0 blx 0xa0e0 | dbus_poll ();
| }
0x000301e4 ldr r2, [sp, 0x2c] | r2 = *(arg_2ch);
0x000301e6 mov.w r3, -1 | r3 = -1;
0x000301ea ldr r1, [sp, 0x24] | r1 = *(arg_24h);
0x000301ec str.w sl, [r4, 0x10] | __asm ("str.w sl, [r4, 0x10]");
0x000301f0 str r3, [sp, 0x2c] | *(arg_2ch) = r3;
0x000301f2 strd r2, r1, [r4, 8] | __asm ("strd r2, r1, [r4, 8]");
0x000301f6 str r3, [sp, 0x24] | *(arg_24h) = r3;
0x000301f8 cmp r6, 0 |
| if (r6 == 0) {
0x000301fa beq.w 0x303a6 | goto label_24;
| }
0x000301fe str r4, [r6] | *(r6) = r4;
| label_10:
0x00030200 movs r0, 1 | r0 = 1;
| if (r5 != 0) {
0x00030202 cbz r5, 0x30210 |
0x00030204 mov r0, r5 | r0 = r5;
0x00030206 blx 0xb020 | r0 = fcn_0000b020 ();
0x0003020a clz r0, r0 | r0 &= r0;
0x0003020e lsrs r0, r0, 5 | r0 >>= 5;
| }
0x00030210 ldr r4, [pc, 0x244] |
0x00030212 mov.w r3, 0x5e0 | r3 = 0x5e0;
0x00030216 ldr r2, [pc, 0x244] |
0x00030218 ldr r1, [pc, 0x244] |
0x0003021a add r4, pc | r4 = 0x60676;
0x0003021c adds r4, 0xa8 | r4 += 0xa8;
0x0003021e add r2, pc | r2 = 0x60680;
0x00030220 add r1, pc | r1 = 0x60684;
0x00030222 str r4, [sp] | *(sp) = r4;
0x00030224 blx 0xae50 | fcn_0000ae50 ();
0x00030228 movs r0, 1 | r0 = 1;
0x0003022a b 0x2fede | goto label_4;
| label_21:
0x0003022c ldr r0, [sp, 0x28] | r0 = *(arg_28h);
0x0003022e cmp r0, 0 |
| if (r0 >= 0) {
0x00030230 blt 0x3023e |
0x00030232 movs r1, 0 | r1 = 0;
0x00030234 blx 0xa0e0 | dbus_poll ();
0x00030238 mov.w r3, -1 | r3 = -1;
0x0003023c str r3, [sp, 0x28] | *(arg_28h) = r3;
| }
0x0003023e cmp.w sb, 0 |
| if (sb >= 0) {
0x00030242 blt 0x3024c |
0x00030244 movs r1, 0 | r1 = 0;
0x00030246 mov r0, sb | r0 = sb;
0x00030248 blx 0xa0e0 | dbus_poll ();
| }
0x0003024c cmp.w r8, 0 |
| if (r8 >= 0) {
0x00030250 blt 0x3025a |
0x00030252 movs r1, 0 | r1 = 0;
0x00030254 mov r0, r8 | r0 = r8;
0x00030256 blx 0xa0e0 | dbus_poll ();
| }
0x0003025a add r0, sp, 0x34 | r0 += arg_34h;
0x0003025c ldr r7, [sp, 0x30] | r7 = *(arg_30h);
0x0003025e blx 0xb160 | r0 = getgrnam_r ();
0x00030262 cmp r0, 0 |
| if (r0 < 0) {
0x00030264 blt 0x30334 | goto label_25;
| }
0x00030266 ldr r3, [pc, 0x1fc] |
0x00030268 movs r0, 0x11 | r0 = 0x11;
0x0003026a ldr r1, [pc, 0x1fc] |
0x0003026c add.w sb, sp, 0x20 | sb += arg_0h;
0x00030270 ldr r2, [sp, 0x38] | r2 = *(arg_38h);
0x00030272 add.w r8, sp, 0x3c | r8 += arg_3ch;
0x00030276 add r3, pc | r3 = 0x606e0;
0x00030278 movs r6, 1 | r6 = 1;
0x0003027a add r1, pc | r1 = 0x606e8;
0x0003027c str r2, [r3] | *(r3) = r2;
0x0003027e bl 0x294e4 | fcn_000294e4 (r0, r1);
0x00030282 movs r3, 3 | r3 = 3;
0x00030284 mov r1, sb | r1 = sb;
0x00030286 mov r0, r7 | r0 = r7;
0x00030288 strd r5, r3, [sp, 0x1c] | __asm ("strd r5, r3, [var_1ch]");
0x0003028c bl 0x2f17c | fcn_0002f17c (r0, r1);
0x00030290 add r1, sp, 0x1c | r1 += var_1ch;
0x00030292 mov r0, r7 | r0 = r7;
0x00030294 bl 0x2f17c | fcn_0002f17c (r0, r1);
0x00030298 movs r2, 0 | r2 = 0;
0x0003029a mov r1, r7 | r1 = r7;
0x0003029c mov r0, r5 | r0 = r5;
0x0003029e bl 0x2f1d4 | fcn_0002f1d4 (r0, r1, r2, r3);
| do {
| label_5:
0x000302a2 ldr r3, [sp, 0x34] | r3 = *(arg_34h);
0x000302a4 mov.w r2, -1 | r2 = -1;
0x000302a8 movs r1, 2 | r1 = 2;
0x000302aa mov r0, r8 | r0 = r8;
0x000302ac strd r7, r6, [sp, 0x3c] | __asm ("strd r7, r6, [sp, 0x3c]");
0x000302b0 str r6, [sp, 0x48] | *(arg_48h) = r6;
0x000302b2 str r3, [sp, 0x44] | *(arg_44h) = r3;
0x000302b4 blx 0xa0ec | r0 = dbus_free ();
0x000302b8 cmp r0, 0 |
| if (r0 < 0) {
0x000302ba blt 0x302e0 | goto label_26;
| }
| label_6:
0x000302bc ldrsh.w r4, [sp, 0x42] | r4 = *(arg_42h);
| if (r4 != 0) {
0x000302c0 cbnz r4, 0x302d4 | goto label_27;
| }
0x000302c2 ldrh.w r3, [sp, 0x4a] | r3 = *(arg_4ah);
0x000302c6 lsls r3, r3, 0x1f | r3 <<= 0x1f;
0x000302c8 bpl 0x302a2 |
| } while (r3 >= r3);
0x000302ca ldr r0, [sp, 0x34] | r0 = *(arg_34h);
0x000302cc mov r1, sb | r1 = sb;
0x000302ce movs r2, 1 | r2 = 1;
0x000302d0 blx 0xa664 | fcn_0000a664 ();
| label_27:
0x000302d4 mov r2, r4 | r2 = r4;
0x000302d6 mov r1, r7 | r1 = r7;
0x000302d8 mov r0, r5 | r0 = r5;
0x000302da bl 0x2f1d4 | fcn_0002f1d4 (r0, r1, r2, r3);
0x000302de b 0x302a2 | goto label_5;
| label_26:
0x000302e0 blx 0xb214 | r0 = dbus_connection_pop_message ();
0x000302e4 ldr r0, [r0] | r0 = *(r0);
0x000302e6 cmp r0, 4 |
| if (r0 == 4) {
0x000302e8 beq 0x302bc | goto label_6;
| }
0x000302ea blx 0xa034 | r0 = fcn_0000a034 ();
0x000302ee mov r1, r0 | r1 = r0;
0x000302f0 ldr r0, [pc, 0x178] |
0x000302f2 add r0, pc | r0 = 0x60762;
0x000302f4 blx 0xaa08 | fcn_0000aa08 ();
0x000302f8 movs r0, 1 | r0 = 1;
0x000302fa blx 0xb1fc | dbus_string_init ();
0x000302fe mov r2, r8 | r2 = r8;
0x00030300 movs r1, 6 | r1 = 6;
0x00030302 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x00030304 blx 0xaebc | fcn_0000aebc ();
0x00030308 mov r2, r8 | r2 = r8;
0x0003030a mov sb, r0 | sb = r0;
0x0003030c movs r1, 4 | r1 = 4;
0x0003030e ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x00030310 blx 0xaebc | r0 = fcn_0000aebc ();
0x00030314 mov r8, r0 | r8 = r0;
0x00030316 b 0x30038 | goto label_7;
| label_19:
0x00030318 blx 0xb214 | r0 = dbus_connection_pop_message ();
0x0003031c ldr r0, [r0] | r0 = *(r0);
0x0003031e blx 0xa4c8 | fcn_0000a4c8 ();
0x00030322 ldr r2, [pc, 0x14c] |
0x00030324 mov r3, r0 | r3 = r0;
0x00030326 ldr r1, [pc, 0x14c] |
0x00030328 mov r0, r5 | r0 = r5;
0x0003032a add r2, pc | r2 = 0x607a0;
0x0003032c add r1, pc | r1 = 0x607a6;
0x0003032e blx 0xa310 | fcn_0000a310 ();
0x00030332 b 0x2fe44 | goto label_8;
| label_25:
0x00030334 ldr r0, [pc, 0x140] |
0x00030336 add r0, pc | r0 = 0x607b2;
0x00030338 blx 0xaa08 | fcn_0000aa08 ();
0x0003033c movs r0, 1 | r0 = 1;
0x0003033e blx 0xb1fc | dbus_string_init ();
| label_22:
0x00030342 movs r1, 1 | r1 = 1;
0x00030344 mov r0, sb | r0 = sb;
0x00030346 blx 0xae8c | fcn_0000ae8c ();
0x0003034a cmp.w r8, 0 |
| if (r8 < 0) {
0x0003034e bge 0x3035a |
0x00030350 mov r0, sb | r0 = sb;
0x00030352 movs r1, 0 | r1 = 0;
0x00030354 blx 0xa0e0 | dbus_poll ();
0x00030358 b 0x300de | goto label_9;
| }
0x0003035a movs r1, 2 | r1 = 2;
0x0003035c mov r0, r8 | r0 = r8;
0x0003035e blx 0xae8c | fcn_0000ae8c ();
0x00030362 mov r0, sb | r0 = sb;
0x00030364 movs r1, 0 | r1 = 0;
0x00030366 blx 0xa0e0 | dbus_poll ();
| do {
0x0003036a mov r0, r8 | r0 = r8;
0x0003036c movs r1, 0 | r1 = 0;
0x0003036e blx 0xa0e0 | dbus_poll ();
0x00030372 b 0x300de | goto label_9;
| label_23:
0x0003039c movs r1, 2 | r1 = 2;
0x0003039e mov r0, r8 | r0 = r8;
0x000303a0 blx 0xae8c | fcn_0000ae8c ();
0x000303a4 b 0x3036a |
| } while (1);
| label_24:
0x000303a6 mov r0, r4 | r0 = r4;
0x000303a8 bl 0x2f858 | fcn_0002f858 (r0, r1, r2, r3, r4, r5, r6);
0x000303ac b 0x30200 | goto label_10;
| label_18:
0x000303ae blx 0xacf8 | chdir ();
| label_20:
0x000303b2 ldr r0, [sp, 0x30] | r0 = *(arg_30h);
0x000303b4 movs r1, 1 | r1 = 1;
0x000303b6 bl 0x2f28c | r0 = fcn_0002f28c (r0, r1);
0x000303ba blx 0xb214 | r0 = dbus_connection_pop_message ();
0x000303be mov fp, r0 |
0x000303c0 b 0x2ff32 | goto label_11;
| }
; 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-daemon @ 0x2bde8 */
| #include <stdint.h>
|
; (fcn) sym.bus_activation_unref () | void bus_activation_unref (uint32_t arg1) {
| int16_t var_0h;
| r0 = arg1;
0x0002bde8 push {r4, r5, lr} |
0x0002bdea mov r4, r0 | r4 = r0;
0x0002bdec ldr r5, [pc, 0x68] |
0x0002bdee sub sp, 0xc |
0x0002bdf0 movw r3, 0x425 | r3 = 0x425;
0x0002bdf4 ldr r0, [r0] | r0 = *(r0);
0x0002bdf6 ldr r2, [pc, 0x64] |
0x0002bdf8 add r5, pc |
0x0002bdfa ldr r1, [pc, 0x64] |
0x0002bdfc add.w r5, r5, 0x11c | r5 = 0x57d70;
0x0002be00 cmp r0, 0 |
0x0002be02 str r5, [sp] | *(sp) = r5;
0x0002be04 ite le |
| if (r0 > 0) {
0x0002be06 movle r0, 0 | r0 = 0;
| }
| if (r0 <= 0) {
0x0002be08 movgt r0, 1 | r0 = 1;
| }
0x0002be0a add r2, pc | r2 = 0x57c6c;
0x0002be0c add r1, pc | r1 = 0x57c72;
0x0002be0e blx 0xae50 | fcn_0000ae50 ();
0x0002be12 ldr r3, [r4] | r3 = *(r4);
0x0002be14 subs r3, 1 | r3--;
0x0002be16 cmp r3, 0 |
0x0002be18 str r3, [r4] | *(r4) = r3;
| if (r3 > 0) {
0x0002be1a ble 0x2be20 |
0x0002be1c add sp, 0xc |
0x0002be1e pop {r4, r5, pc} |
| }
0x0002be20 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x0002be22 blx 0xa0fc | fcn_0000a0fc ();
0x0002be26 ldr r0, [r4, 4] | r0 = *((r4 + 4));
| if (r0 != 0) {
0x0002be28 cbz r0, 0x2be2e |
0x0002be2a blx 0xa898 | fcn_0000a898 ();
| }
0x0002be2e ldr r0, [r4, 8] | r0 = *((r4 + 8));
| if (r0 != 0) {
0x0002be30 cbz r0, 0x2be36 |
0x0002be32 blx 0xa898 | fcn_0000a898 ();
| }
0x0002be36 ldr r1, [pc, 0x2c] |
0x0002be38 add.w r0, r4, 0x18 | r0 = r4 + 0x18;
0x0002be3c add r1, pc | r1 = 0x57ca6;
0x0002be3e blx 0xa7b4 | fcn_0000a7b4 ();
0x0002be42 ldr r0, [r4, 0x1c] | r0 = *((r4 + 0x1c));
| if (r0 != 0) {
0x0002be44 cbz r0, 0x2be4a |
0x0002be46 blx 0xa898 | fcn_0000a898 ();
| }
0x0002be4a mov r0, r4 | r0 = r4;
0x0002be4c add sp, 0xc |
0x0002be4e pop.w {r4, r5, lr} |
0x0002be52 b.w 0xa0f8 | return void (*0xa0f8)() ();
| }
; 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-daemon @ 0x211ac */
| #include <stdint.h>
|
; (fcn) sym.bus_client_policy_unref () | void bus_client_policy_unref (uint32_t arg1) {
| int16_t var_0h;
| r0 = arg1;
0x000211ac push {r4, r5, lr} |
0x000211ae mov r4, r0 | r4 = r0;
0x000211b0 ldr r5, [pc, 0x4c] |
0x000211b2 sub sp, 0xc |
0x000211b4 movw r3, 0x2e6 | r3 = 0x2e6;
0x000211b8 ldr r0, [r0] | r0 = *(r0);
0x000211ba ldr r2, [pc, 0x48] |
0x000211bc add r5, pc | r5 = 0x423c0;
0x000211be ldr r1, [pc, 0x48] |
0x000211c0 adds r5, 0x68 | r5 += 0x68;
0x000211c2 cmp r0, 0 |
0x000211c4 str r5, [sp] | *(sp) = r5;
0x000211c6 add r2, pc | r2 = 0x423d0;
0x000211c8 it le |
| if (r0 > 0) {
0x000211ca movle r0, 0 | r0 = 0;
| }
0x000211cc add r1, pc | r1 = 0x423da;
0x000211ce it gt |
| if (r0 <= 0) {
0x000211d0 movgt r0, 1 | r0 = 1;
| }
0x000211d2 blx 0xae50 | fcn_0000ae50 ();
0x000211d6 ldr r2, [r4] | r2 = *(r4);
0x000211d8 subs r2, 1 | r2--;
0x000211da str r2, [r4] | *(r4) = r2;
| if (r2 != 0) {
0x000211dc cbz r2, 0x211e2 |
0x000211de add sp, 0xc |
0x000211e0 pop {r4, r5, pc} |
| }
0x000211e2 ldr r1, [pc, 0x28] |
0x000211e4 adds r5, r4, 4 | r5 = r4 + 4;
0x000211e6 mov r0, r5 | r0 = r5;
0x000211e8 add r1, pc | r1 = 0x423fa;
0x000211ea blx 0xac30 | fcn_0000ac30 ();
0x000211ec stc p6, c4, [r2, -0xa0]! | __asm ("stc p6, c4, [r2, -0xa0]!");
0x000211f0 blx 0xa588 | fcn_0000a588 ();
0x000211f4 mov r0, r4 | r0 = r4;
0x000211f6 add sp, 0xc |
0x000211f8 pop.w {r4, r5, lr} |
0x000211fc b.w 0xa0f8 | return void (*0xa0f8)() ();
| }
; 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-daemon @ 0x12a24 */
| #include <stdint.h>
|
; (fcn) sym.bus_config_parser_element_type_to_name () | void bus_config_parser_element_type_to_name (uint32_t arg1) {
| r0 = arg1;
0x00012a24 push {r3, lr} |
0x00012a26 cmp r0, 0x17 |
| if (r0 <= 0x17) {
0x00012a28 bhi 0x12ad4 |
| /* switch table (24 cases) at 0x12a2e */
0x00012a2a tbb [pc, r0] | __asm ("tbb [0x00012a30]");
0x00012a46 ldr r0, [pc, 0x9c] |
0x00012a48 add r0, pc | r0 = 0x25532;
0x00012a4a pop {r3, pc} |
0x00012a4c ldr r0, [pc, 0x98] |
0x00012a4e add r0, pc | r0 = 0x2553a;
0x00012a50 pop {r3, pc} |
0x00012a52 movs r0, 0 | r0 = 0;
0x00012a54 pop {r3, pc} |
0x00012a56 ldr r0, [pc, 0x94] |
0x00012a58 add r0, pc | r0 = 0x2554a;
0x00012a5a pop {r3, pc} |
0x00012a5c ldr r0, [pc, 0x90] |
0x00012a5e add r0, pc | r0 = 0x25552;
0x00012a60 pop {r3, pc} |
0x00012a62 ldr r0, [pc, 0x90] |
0x00012a64 add r0, pc | r0 = 0x2555e;
0x00012a66 pop {r3, pc} |
0x00012a68 ldr r0, [pc, 0x8c] |
0x00012a6a add r0, pc | r0 = 0x25566;
0x00012a6c pop {r3, pc} |
0x00012a6e ldr r0, [pc, 0x8c] |
0x00012a70 add r0, pc | r0 = 0x25572;
0x00012a72 pop {r3, pc} |
0x00012a74 ldr r0, [pc, 0x88] |
0x00012a76 add r0, pc | r0 = 0x2557a;
0x00012a78 pop {r3, pc} |
0x00012a7a ldr r0, [pc, 0x88] |
0x00012a7c add r0, pc | r0 = 0x25586;
0x00012a7e pop {r3, pc} |
0x00012a80 ldr r0, [pc, 0x84] |
0x00012a82 add r0, pc | r0 = 0x2558e;
0x00012a84 pop {r3, pc} |
0x00012a86 ldr r0, [pc, 0x84] |
0x00012a88 add r0, pc | r0 = 0x2559a;
0x00012a8a pop {r3, pc} |
0x00012a8c ldr r0, [pc, 0x80] |
0x00012a8e add r0, pc | r0 = 0x255a2;
0x00012a90 pop {r3, pc} |
0x00012a92 ldr r0, [pc, 0x80] |
0x00012a94 add r0, pc | r0 = 0x255ae;
0x00012a96 pop {r3, pc} |
0x00012a98 ldr r0, [pc, 0x7c] |
0x00012a9a add r0, pc | r0 = 0x255b6;
0x00012a9c pop {r3, pc} |
0x00012a9e ldr r0, [pc, 0x7c] |
0x00012aa0 add r0, pc | r0 = 0x255c2;
0x00012aa2 pop {r3, pc} |
0x00012aa4 ldr r0, [pc, 0x78] |
0x00012aa6 add r0, pc | r0 = 0x255ca;
0x00012aa8 pop {r3, pc} |
0x00012aaa ldr r0, [pc, 0x78] |
0x00012aac add r0, pc | r0 = 0x255d6;
0x00012aae pop {r3, pc} |
0x00012ab0 ldr r0, [pc, 0x74] |
0x00012ab2 add r0, pc | r0 = 0x255de;
0x00012ab4 pop {r3, pc} |
0x00012ab6 ldr r0, [pc, 0x74] |
0x00012ab8 add r0, pc | r0 = 0x255ea;
0x00012aba pop {r3, pc} |
0x00012abc ldr r0, [pc, 0x70] |
0x00012abe add r0, pc | r0 = 0x255f2;
0x00012ac0 pop {r3, pc} |
0x00012ac2 ldr r0, [pc, 0x70] |
0x00012ac4 add r0, pc | r0 = 0x255fe;
0x00012ac6 pop {r3, pc} |
0x00012ac8 ldr r0, [pc, 0x6c] |
0x00012aca add r0, pc | r0 = 0x25606;
0x00012acc pop {r3, pc} |
0x00012ace ldr r0, [pc, 0x6c] |
0x00012ad0 add r0, pc | r0 = 0x25612;
0x00012ad2 pop {r3, pc} |
| }
0x00012ad4 ldr r1, [pc, 0x68] |
0x00012ad6 movs r2, 0xbf | r2 = 0xbf;
0x00012ad8 ldr r0, [pc, 0x68] |
0x00012ada add r1, pc | r1 = 0x2561e;
0x00012adc add r0, pc | r0 = 0x25624;
0x00012ade blx 0xaa48 | fcn_0000aa48 ();
0x00012ae2 nop |
0x00012ae4 vld4.8 {d16, d17, d18, d19}, [r0], r1 | __asm ("vld4.8 {d16, d17, d18, d19}, [r0], r1");
0x00012ae8 str.w r0, [r6, r1] | __asm ("str.w r0, [r6, r1]");
0x00012aec stc2 p0, c0, [r4], -4 | __asm ("stc2 p0, c0, [r4], -4");
0x00012af0 vld4.8 {d0, d1, d2, d3}, [lr], r1 | __asm ("vld4.8 {d0, d1, d2, d3}, [lr], r1");
0x00012af4 b 0x12b58 |
0x00012b58 push {r4, lr} |
0x00012b5a mov r4, r0 | r4 = r0;
0x00012b5c ldr r3, [r0, 4] | r3 = *((r0 + 4));
| if (r3 != 0) {
0x00012b5e cbz r3, 0x12b64 |
0x00012b60 ldr r0, [r0, 8] | r0 = *((r0 + 8));
0x00012b62 blx r3 | uint32_t (*r3)(uint32_t) (r0);
| }
0x00012b64 mov r0, r4 | r0 = r4;
0x00012b66 pop.w {r4, lr} |
0x00012b6a b.w 0xa0f8 | return void (*0xa0f8)() ();
| }
; 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-daemon @ 0xfb50 */
| #include <stdint.h>
|
; (fcn) sym.bus_config_parser_unref () | void bus_config_parser_unref (uint32_t arg1) {
| int16_t var_0h;
| r0 = arg1;
0x0000fb50 push {r4, r5, r6, r7, lr} |
0x0000fb52 mov r5, r0 | r5 = r0;
0x0000fb54 ldr r4, [pc, 0xcc] |
0x0000fb56 sub sp, 0xc |
0x0000fb58 movw r3, 0x23f | r3 = 0x23f;
0x0000fb5c ldr r0, [r0] | r0 = *(r0);
0x0000fb5e ldr r2, [pc, 0xc8] |
0x0000fb60 add r4, pc | r4 = 0x1f788;
0x0000fb62 ldr r1, [pc, 0xc8] |
0x0000fb64 adds r4, 0x90 | r4 += 0x90;
0x0000fb66 cmp r0, 0 |
0x0000fb68 str r4, [sp] | *(sp) = r4;
0x0000fb6a add r2, pc | r2 = 0x1f798;
0x0000fb6c it le |
| if (r0 > 0) {
0x0000fb6e movle r0, 0 | r0 = 0;
| }
0x0000fb70 add r1, pc | r1 = 0x1f7a2;
0x0000fb72 it gt |
| if (r0 <= 0) {
0x0000fb74 movgt r0, 1 | r0 = 1;
| }
0x0000fb76 blx 0xae50 | fcn_0000ae50 ();
0x0000fb7a ldr r3, [r5] | r3 = *(r5);
0x0000fb7c ldr r6, [pc, 0xb0] |
0x0000fb7e subs r3, 1 | r3--;
0x0000fb80 add r6, pc | r6 = 0x1f7b4;
0x0000fb82 str r3, [r5] | *(r5) = r3;
0x0000fb84 cmp r3, 0 |
| if (r3 != 0) {
0x0000fb86 bne 0xfc20 | goto label_2;
| }
0x0000fb88 ldr r3, [r5, 0x14] | r3 = *((r5 + 0x14));
0x0000fb8a add.w r7, r5, 0x14 | r7 = r5 + 0x14;
0x0000fb8e cmp r3, 0 |
| if (r3 != 0) {
0x0000fb90 bne 0xfc10 | goto label_3;
| }
| do {
0x0000fb92 ldr r0, [r5, 0x18] | r0 = *((r5 + 0x18));
0x0000fb94 blx 0xa0fc | fcn_0000a0fc ();
0x0000fb98 ldr r0, [r5, 0x1c] | r0 = *((r5 + 0x1c));
0x0000fb9a blx 0xa0fc | fcn_0000a0fc ();
0x0000fb9e ldr r0, [r5, 0x20] | r0 = *((r5 + 0x20));
0x0000fba0 blx 0xa0fc | fcn_0000a0fc ();
0x0000fba4 ldr.w r0, [r5, 0x8c] | r0 = *((r5 + 0x8c));
0x0000fba8 blx 0xa0fc | fcn_0000a0fc ();
0x0000fbac ldr r3, [pc, 0x84] | r3 = *(0xfc34);
0x0000fbae add.w r0, r5, 0x24 | r0 = r5 + 0x24;
0x0000fbb2 ldr r4, [r6, r3] | r4 = *((r6 + r3));
0x0000fbb4 mov r1, r4 | r1 = r4;
0x0000fbb6 blx 0xa7b4 | fcn_0000a7b4 ();
0x0000fbba ldr r1, [pc, 0x7c] |
0x0000fbbc add.w r0, r5, 0x2c | r0 = r5 + 0x2c;
0x0000fbc0 add r1, pc | r1 = 0x1f7fe;
0x0000fbc2 blx 0xa7b4 | fcn_0000a7b4 ();
0x0000fbc6 mov r1, r4 | r1 = r4;
0x0000fbc8 add.w r0, r5, 0x30 | r0 = r5 + 0x30;
0x0000fbcc blx 0xa7b4 | fcn_0000a7b4 ();
0x0000fbd0 mov r1, r4 | r1 = r4;
0x0000fbd2 add.w r0, r5, 0x28 | r0 = r5 + 0x28;
0x0000fbd6 blx 0xa7b4 | fcn_0000a7b4 ();
0x0000fbda adds r0, r5, 4 | r0 = r5 + 4;
0x0000fbdc blx 0xa724 | fcn_0000a724 ();
0x0000fbe0 ldr r0, [r5, 0x34] | r0 = *((r5 + 0x34));
| if (r0 != 0) {
0x0000fbe2 cbz r0, 0xfbe8 |
0x0000fbe4 bl 0x20e70 | bus_policy_unref ();
| }
0x0000fbe8 ldr.w r0, [r5, 0x94] | r0 = *((r5 + 0x94));
| if (r0 != 0) {
0x0000fbec cbz r0, 0xfbf2 |
0x0000fbee blx 0xa898 | fcn_0000a898 ();
| }
0x0000fbf2 mov r0, r5 | r0 = r5;
0x0000fbf4 add sp, 0xc |
0x0000fbf6 pop.w {r4, r5, r6, r7, lr} |
0x0000fbfa b.w 0xa0f8 | void (*0xa0f8)() ();
| label_1:
0x0000fbfe ldr r0, [r0, 8] | r0 = *((r0 + 8));
0x0000fc00 blx 0xa0fc | fcn_0000a0fc ();
| label_0:
0x0000fc04 mov r0, r4 | r0 = r4;
0x0000fc06 blx 0xa0fc | fcn_0000a0fc ();
0x0000fc0a ldr r3, [r5, 0x14] | r3 = *((r5 + 0x14));
0x0000fc0c cmp r3, 0 |
0x0000fc0e beq 0xfb92 |
| } while (r3 == 0);
| label_3:
0x0000fc10 mov r0, r7 | r0 = r7;
0x0000fc12 blx 0xb1f0 | r0 = dbus_connection_return_message ();
0x0000fc16 ldr r3, [r0] | r3 = *(r0);
0x0000fc18 mov r4, r0 | r4 = r0;
0x0000fc1a cmp r3, 7 |
| if (r3 != 7) {
0x0000fc1c bne 0xfc04 | goto label_0;
| }
0x0000fc1e b 0xfbfe | goto label_1;
| label_2:
0x0000fc20 add sp, 0xc |
0x0000fc22 pop {r4, r5, r6, r7, pc} |
| }
; 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-daemon @ 0x2d5a4 */
| #include <stdint.h>
|
; (fcn) sym.bus_desktop_file_free () | void bus_desktop_file_free (int16_t arg1) {
| r0 = arg1;
0x0002d5a4 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0002d5a8 mov sl, r0 | sl = r0;
0x0002d5aa ldr r3, [r0] | r3 = *(r0);
0x0002d5ac cmp r3, 0 |
| if (r3 <= 0) {
0x0002d5ae ble 0x2d5fa | goto label_1;
| }
0x0002d5b0 movs r7, 0 | r7 = 0;
| label_0:
0x0002d5b2 ldr.w sb, [sl, 4] | sb = *((sl + 4));
0x0002d5b6 lsl.w r8, r7, 4 | r8 = r7 << 4;
0x0002d5ba add.w r6, sb, r8 | r6 = sb + r8;
0x0002d5be ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0002d5c0 cmp r3, 0 |
| if (r3 <= 0) {
0x0002d5c2 ble 0x2d5e2 | goto label_2;
| }
0x0002d5c4 movs r4, 0 | r4 = 0;
| do {
0x0002d5c6 ldr r5, [r6, 8] | r5 = *((r6 + 8));
0x0002d5c8 ldr.w r0, [r5, r4, lsl 3] | offset_0 = r4 << 3;
| r0 = *((r5 + offset_0));
0x0002d5cc add.w r5, r5, r4, lsl 3 | r5 += (r4 << 3);
0x0002d5d0 adds r4, 1 | r4++;
0x0002d5d2 blx 0xa0fc | fcn_0000a0fc ();
0x0002d5d6 ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x0002d5d8 blx 0xa0fc | fcn_0000a0fc ();
0x0002d5dc ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0002d5de cmp r4, r3 |
0x0002d5e0 blt 0x2d5c6 |
| } while (r4 < r3);
| label_2:
0x0002d5e2 ldr r0, [r6, 8] | r0 = *((r6 + 8));
0x0002d5e4 adds r7, 1 | r7++;
0x0002d5e6 blx 0xa0fc | fcn_0000a0fc ();
0x0002d5ea ldr.w r0, [sb, r8] | r0 = *((sb + r8));
0x0002d5ee blx 0xa0fc | fcn_0000a0fc ();
0x0002d5f2 ldr.w r3, [sl] | r3 = *(sl);
0x0002d5f6 cmp r3, r7 |
| if (r3 > r7) {
0x0002d5f8 bgt 0x2d5b2 | goto label_0;
| }
| label_1:
0x0002d5fa ldr.w r0, [sl, 4] | r0 = *((sl + 4));
0x0002d5fe blx 0xa0fc | fcn_0000a0fc ();
0x0002d602 mov r0, sl | r0 = sl;
0x0002d604 pop.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0002d608 b.w 0xa0f8 | return void (*0xa0f8)() ();
| }
; 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-daemon @ 0x20698 */
| #include <stdint.h>
|
; (fcn) sym.bus_expire_list_free () | void bus_expire_list_free (int16_t arg1) {
| int16_t var_0h;
| r0 = arg1;
0x00020698 ldr r1, [pc, 0x38] |
0x0002069a movs r3, 0x56 | r3 = 0x56;
0x0002069c push {r4, lr} |
0x0002069e mov r4, r0 | r4 = r0;
0x000206a0 sub sp, 8 |
0x000206a2 ldr r0, [r0] | r0 = *(r0);
0x000206a4 add r1, pc | r1 = 0x40d7c;
0x000206a6 str r1, [sp] | *(sp) = r1;
0x000206a8 ldr r2, [pc, 0x2c] |
0x000206aa clz r0, r0 | r0 &= r0;
0x000206ae ldr r1, [pc, 0x2c] |
0x000206b0 lsrs r0, r0, 5 | r0 >>= 5;
0x000206b2 add r2, pc | r2 = 0x40d8e;
0x000206b4 add r1, pc | r1 = 0x40d96;
0x000206b6 blx 0xae50 | r0 = fcn_0000ae50 ();
0x000206ba ldrd r1, r0, [r4, 4] | __asm ("ldrd r1, r0, [r4, 4]");
0x000206be bl 0x2825c | fcn_0002825c (r0, r1);
0x000206c2 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x000206c4 blx 0xacec | dbus_message_new_method_return ();
0x000206c8 mov r0, r4 | r0 = r4;
0x000206ca add sp, 8 |
0x000206cc pop.w {r4, lr} |
0x000206d0 b.w 0xa0f8 | return void (*0xa0f8)() ();
| }
; 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-daemon @ 0x23eb4 */
| #include <stdint.h>
|
; (fcn) sym.bus_match_rule_unref () | void bus_match_rule_unref (uint32_t arg1) {
| int16_t var_0h_2;
| r0 = arg1;
0x00023eb4 push {r4, r5, lr} |
0x00023eb6 mov r5, r0 | r5 = r0;
0x00023eb8 ldr r4, [pc, 0x80] |
0x00023eba sub sp, 0xc |
0x00023ebc movs r3, 0x5b | r3 = 0x5b;
0x00023ebe ldr r0, [r0] | r0 = *(r0);
0x00023ec0 ldr r2, [pc, 0x7c] |
0x00023ec2 add r4, pc | r4 = 0x47e02;
0x00023ec4 ldr r1, [pc, 0x7c] |
0x00023ec6 adds r4, 0xb0 | r4 += 0xb0;
0x00023ec8 cmp r0, 0 |
0x00023eca str r4, [sp] | *(sp) = r4;
0x00023ecc add r2, pc | r2 = 0x47e10;
0x00023ece it le |
| if (r0 > 0) {
0x00023ed0 movle r0, 0 | r0 = 0;
| }
0x00023ed2 add r1, pc | r1 = 0x47e1a;
0x00023ed4 it gt |
| if (r0 <= 0) {
0x00023ed6 movgt r0, 1 | r0 = 1;
| }
0x00023ed8 blx 0xae50 | fcn_0000ae50 ();
0x00023edc ldr r4, [r5] | r4 = *(r5);
0x00023ede subs r4, 1 | r4--;
0x00023ee0 str r4, [r5] | *(r5) = r4;
| if (r4 != 0) {
0x00023ee2 cbz r4, 0x23ee8 |
0x00023ee4 add sp, 0xc |
0x00023ee6 pop {r4, r5, pc} |
| }
0x00023ee8 ldr r0, [r5, 0x10] | r0 = *((r5 + 0x10));
0x00023eea blx 0xa0fc | fcn_0000a0fc ();
0x00023eee ldr r0, [r5, 0x14] | r0 = *((r5 + 0x14));
0x00023ef0 blx 0xa0fc | fcn_0000a0fc ();
0x00023ef4 ldr r0, [r5, 0x18] | r0 = *((r5 + 0x18));
0x00023ef6 blx 0xa0fc | fcn_0000a0fc ();
0x00023efa ldr r0, [r5, 0x1c] | r0 = *((r5 + 0x1c));
0x00023efc blx 0xa0fc | fcn_0000a0fc ();
0x00023f00 ldr r0, [r5, 0x20] | r0 = *((r5 + 0x20));
0x00023f02 blx 0xa0fc | fcn_0000a0fc ();
0x00023f06 ldr r0, [r5, 0x24] | r0 = *((r5 + 0x24));
0x00023f08 blx 0xa0fc | fcn_0000a0fc ();
0x00023f0c ldr r3, [r5, 0x28] | r3 = *((r5 + 0x28));
| if (r3 == 0) {
0x00023f0e cbz r3, 0x23f30 | goto label_0;
| }
0x00023f10 ldr r2, [r5, 0x2c] | r2 = *((r5 + 0x2c));
0x00023f12 cmp r2, 0 |
| if (r2 <= 0) {
0x00023f14 ble 0x23f2a | goto label_1;
| }
| do {
0x00023f16 ldr.w r0, [r3, r4, lsl 2] | offset_0 = r4 << 2;
| r0 = *((r3 + offset_0));
0x00023f1a adds r4, 1 | r4++;
| if (r0 != 0) {
0x00023f1c cbz r0, 0x23f26 |
0x00023f1e blx 0xa0fc | fcn_0000a0fc ();
0x00023f22 ldrd r3, r2, [r5, 0x28] | __asm ("ldrd r3, r2, [r5, 0x28]");
| }
0x00023f26 cmp r4, r2 |
0x00023f28 blt 0x23f16 |
| } while (r4 < r2);
| label_1:
0x00023f2a mov r0, r3 | r0 = r3;
0x00023f2c blx 0xa0fc | fcn_0000a0fc ();
| label_0:
0x00023f30 mov r0, r5 | r0 = r5;
0x00023f32 add sp, 0xc |
0x00023f34 pop.w {r4, r5, lr} |
0x00023f38 b.w 0xa0f8 | return void (*0xa0f8)() ();
| }
; 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-daemon @ 0x2628c */
| #include <stdint.h>
|
; (fcn) sym.bus_matchmaker_unref () | void bus_matchmaker_unref (uint32_t arg1) {
| int16_t var_0h;
| r0 = arg1;
0x0002628c push {r4, r5, r6, r7, lr} |
0x0002628e mov r6, r0 | r6 = r0;
0x00026290 ldr r4, [pc, 0x68] |
0x00026292 sub sp, 0xc |
0x00026294 movw r3, 0x589 | r3 = 0x589;
0x00026298 ldr r0, [r0] | r0 = *(r0);
0x0002629a ldr r2, [pc, 0x64] |
0x0002629c add r4, pc |
0x0002629e ldr r1, [pc, 0x64] |
0x000262a0 add.w r4, r4, 0x224 | r4 = 0x4c7c0;
0x000262a4 cmp r0, 0 |
0x000262a6 str r4, [sp] | *(sp) = r4;
0x000262a8 add r2, pc | r2 = 0x4c5ae;
0x000262aa it le |
| if (r0 > 0) {
0x000262ac movle r0, 0 | r0 = 0;
| }
0x000262ae add r1, pc | r1 = 0x4c5b8;
0x000262b0 it gt |
| if (r0 <= 0) {
0x000262b2 movgt r0, 1 | r0 = 1;
| }
0x000262b4 blx 0xae50 | fcn_0000ae50 ();
0x000262b8 ldr r3, [r6] | r3 = *(r6);
0x000262ba subs r3, 1 | r3--;
0x000262bc str r3, [r6] | *(r6) = r3;
| if (r3 != 0) {
0x000262be cbnz r3, 0x262f8 | goto label_1;
| }
0x000262c0 mov r5, r6 | r5 = r6;
0x000262c2 add.w r7, r6, 0x28 | r7 = r6 + 0x28;
| label_0:
0x000262c6 ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x000262c8 mov r4, r5 | r4 = r5;
0x000262ca blx 0xa898 | fcn_0000a898 ();
0x000262ce ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x000262d0 adds r5, 8 | r5 += 8;
| if (r3 == 0) {
0x000262d2 cbz r3, 0x262e8 | goto label_2;
| }
| do {
0x000262d4 ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x000262d6 bl 0x23eb4 | bus_match_rule_unref ();
0x000262da ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x000262dc mov r0, r5 | r0 = r5;
0x000262de blx 0x9ff4 | fcn_00009ff4 ();
0x000262e2 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x000262e4 cmp r3, 0 |
0x000262e6 bne 0x262d4 |
| } while (r3 != 0);
| label_2:
0x000262e8 cmp r7, r5 |
| if (r7 != r5) {
0x000262ea bne 0x262c6 | goto label_0;
| }
0x000262ec mov r0, r6 | r0 = r6;
0x000262ee add sp, 0xc |
0x000262f0 pop.w {r4, r5, r6, r7, lr} |
0x000262f4 b.w 0xa0f8 | void (*0xa0f8)() ();
| label_1:
0x000262f8 add sp, 0xc |
0x000262fa pop {r4, r5, r6, r7, pc} |
| }
; 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-daemon @ 0x20d84 */
| #include <stdint.h>
|
; (fcn) sym.bus_policy_rule_unref () | void bus_policy_rule_unref (uint32_t arg1) {
| int16_t var_0h;
| r0 = arg1;
| do {
0x00020d84 push {r4, r5, lr} |
0x00020d86 mov r4, r0 | r4 = r0;
0x00020d88 ldr r5, [pc, 0x88] |
0x00020d8a sub sp, 0xc |
0x00020d8c movs r3, 0x5d | r3 = 0x5d;
0x00020d8e ldr r0, [r0] | r0 = *(r0);
0x00020d90 ldr r2, [pc, 0x84] |
0x00020d92 add r5, pc | r5 = 0x41baa;
0x00020d94 ldr r1, [pc, 0x84] |
0x00020d96 adds r5, 0x14 | r5 += 0x14;
0x00020d98 cmp r0, 0 |
0x00020d9a str r5, [sp] | *(sp) = r5;
0x00020d9c add r2, pc | r2 = 0x41bb8;
0x00020d9e it le |
| if (r0 > 0) {
0x00020da0 movle r0, 0 | r0 = 0;
| }
0x00020da2 add r1, pc | r1 = 0x41bc2;
0x00020da4 it gt |
| if (r0 <= 0) {
0x00020da6 movgt r0, 1 | r0 = 1;
| }
0x00020da8 blx 0xae50 | fcn_0000ae50 ();
0x00020dac ldr r3, [r4] | r3 = *(r4);
0x00020dae subs r3, 1 | r3--;
0x00020db0 str r3, [r4] | *(r4) = r3;
| if (r3 == 0) {
0x00020db2 cbnz r3, 0x20dc4 |
0x00020db4 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00020db6 cmp r3, 4 |
| if (r3 > 4) {
0x00020db8 bhi 0x20e04 | goto label_0;
| }
| /* switch table (5 cases) at 0x20dbe */
0x00020dba tbb [pc, r3] | __asm ("tbb [0x00020dc0]");
| }
0x00020dc4 add sp, 0xc |
0x00020dc6 pop {r4, r5, pc} |
0x00020dc8 ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x00020dca blx 0xa0fc | fcn_0000a0fc ();
0x00020dcc invalid |
0x00020dd0 blx 0xa0fc | fcn_0000a0fc ();
0x00020dd4 ldr r0, [r4, 0x18] | r0 = *((r4 + 0x18));
0x00020dd6 blx 0xa0fc | fcn_0000a0fc ();
0x00020dd8 invalid |
0x00020ddc blx 0xa0fc | fcn_0000a0fc ();
0x00020de0 ldr r0, [r4, 0x20] | r0 = *((r4 + 0x20));
0x00020de2 blx 0xa0fc | fcn_0000a0fc ();
0x00020de6 mov r0, r4 | r0 = r4;
0x00020de8 add sp, 0xc |
0x00020dea pop.w {r4, r5, lr} |
0x00020dee b.w 0xa0f8 | void (*0xa0f8)() ();
0x00020df2 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x00020df4 blx 0xa0fc | fcn_0000a0fc ();
0x00020df8 mov r0, r4 | r0 = r4;
0x00020dfa add sp, 0xc |
0x00020dfc pop.w {r4, r5, lr} |
0x00020e00 b.w 0xa0f8 | void (*0xa0f8)() ();
| label_0:
0x00020e04 ldr r1, [pc, 0x18] |
0x00020e06 movs r2, 0x7b | r2 = 0x7b;
0x00020e08 ldr r0, [pc, 0x18] |
0x00020e0a add r1, pc | r1 = 0x41c2e;
0x00020e0c add r0, pc | r0 = 0x41c34;
0x00020e0e blx 0xaa48 | fcn_0000aa48 ();
0x00020e12 nop |
0x00020e14 ldrb r6, [r3, 1] | r6 = *((r3 + 1));
0x00020e16 movs r1, r0 | r1 = r0;
0x00020e18 strb r0, [r5, 0x1e] | *((r5 + 0x1e)) = r0;
0x00020e1a movs r1, r0 | r1 = r0;
0x00020e1c strb r6, [r3, 0x1f] | *((r3 + 0x1f)) = r6;
0x00020e1e movs r1, r0 | r1 = r0;
0x00020e20 strb r2, [r7, 0x1c] | *((r7 + 0x1c)) = r2;
0x00020e22 movs r1, r0 | r1 = r0;
0x00020e24 strb r4, [r4, 0x1d] | *((r4 + 0x1d)) = r4;
0x00020e26 movs r1, r0 | r1 = r0;
0x00020e28 b.w 0x20d84 |
| } while (1);
| }
; 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-daemon @ 0x20e70 */
| #include <stdint.h>
|
; (fcn) sym.bus_policy_unref () | void bus_policy_unref (uint32_t arg1) {
| int16_t var_0h;
| r0 = arg1;
0x00020e70 push.w {r4, r5, r6, r7, r8, sb, lr} |
0x00020e74 mov r4, r0 | r4 = r0;
0x00020e76 ldr r5, [pc, 0xa8] |
0x00020e78 sub sp, 0xc |
0x00020e7a movs r3, 0xd1 | r3 = 0xd1;
0x00020e7c ldr r0, [r0] | r0 = *(r0);
0x00020e7e ldr r2, [pc, 0xa4] |
0x00020e80 add r5, pc | r5 = 0x41da6;
0x00020e82 ldr r1, [pc, 0xa4] |
0x00020e84 adds r5, 0x3c | r5 += 0x3c;
0x00020e86 cmp r0, 0 |
0x00020e88 str r5, [sp] | *(sp) = r5;
0x00020e8a add r2, pc | r2 = 0x41db4;
0x00020e8c it le |
| if (r0 > 0) {
0x00020e8e movle r0, 0 | r0 = 0;
| }
0x00020e90 add r1, pc | r1 = 0x41dbe;
0x00020e92 it gt |
| if (r0 <= 0) {
0x00020e94 movgt r0, 1 | r0 = 1;
| }
0x00020e96 blx 0xae50 | fcn_0000ae50 ();
0x00020e9a ldr r5, [r4] | r5 = *(r4);
0x00020e9c subs r5, 1 | r5--;
0x00020e9e str r5, [r4] | *(r4) = r5;
| if (r5 != 0) {
0x00020ea0 cbz r5, 0x20ea8 |
0x00020ea2 add sp, 0xc |
0x00020ea4 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| }
0x00020ea8 ldr r6, [pc, 0x80] |
0x00020eaa add.w sb, r4, 4 | sb = r4 + 4;
0x00020eae mov r2, r5 | r2 = r5;
0x00020eb0 mov r0, sb | r0 = sb;
0x00020eb2 add.w r8, r4, 8 | r8 = r4 + 8;
0x00020eb6 add.w r7, r4, 0x14 | r7 = r4 + 0x14;
0x00020eba add r6, pc | r6 = 0x41dea;
0x00020ebc mov r1, r6 | r1 = r6;
0x00020ebe blx 0xac30 | fcn_0000ac30 ();
0x00020ec2 mov r0, sb | r0 = sb;
0x00020ec4 blx 0xa588 | fcn_0000a588 ();
0x00020ec8 mov r2, r5 | r2 = r5;
0x00020eca mov r1, r6 | r1 = r6;
0x00020ecc mov r0, r8 | r0 = r8;
0x00020ece blx 0xac30 | fcn_0000ac30 ();
0x00020ed2 mov r0, r8 | r0 = r8;
0x00020ed4 blx 0xa588 | fcn_0000a588 ();
0x00020ed8 mov r2, r5 | r2 = r5;
0x00020eda mov r1, r6 | r1 = r6;
0x00020edc mov r0, r7 | r0 = r7;
0x00020ede blx 0xac30 | fcn_0000ac30 ();
0x00020ee2 mov r0, r7 | r0 = r7;
0x00020ee4 add.w r7, r4, 0x18 | r7 = r4 + 0x18;
0x00020ee8 blx 0xa588 | fcn_0000a588 ();
0x00020eec mov r1, r6 | r1 = r6;
0x00020eee mov r2, r5 | r2 = r5;
0x00020ef0 mov r0, r7 | r0 = r7;
0x00020ef2 blx 0xac30 | fcn_0000ac30 ();
0x00020ef6 mov r0, r7 | r0 = r7;
0x00020ef8 blx 0xa588 | fcn_0000a588 ();
0x00020efc ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
| if (r0 != 0) {
0x00020efe cbz r0, 0x20f06 |
0x00020f00 blx 0xa898 | fcn_0000a898 ();
0x00020f04 str r5, [r4, 0xc] | *((r4 + 0xc)) = r5;
| }
0x00020f06 ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
| if (r0 != 0) {
0x00020f08 cbz r0, 0x20f12 |
0x00020f0a blx 0xa898 | fcn_0000a898 ();
0x00020f0e movs r3, 0 | r3 = 0;
0x00020f10 str r3, [r4, 0x10] | *((r4 + 0x10)) = r3;
| }
0x00020f12 mov r0, r4 | r0 = r4;
0x00020f14 add sp, 0xc |
0x00020f16 pop.w {r4, r5, r6, r7, r8, sb, lr} |
0x00020f18 mvns r0, r6 | r0 = ~r6;
0x00020f1a b.w 0xa0f8 | return void (*0xa0f8)() ();
| }
; 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-daemon @ 0x21ba0 */
| #include <stdint.h>
|
; (fcn) sym.bus_registry_unref () | void bus_registry_unref (uint32_t arg1) {
| int16_t var_0h;
| r0 = arg1;
0x00021ba0 push {r4, r5, lr} |
0x00021ba2 mov r4, r0 | r4 = r0;
0x00021ba4 ldr r5, [pc, 0x58] |
0x00021ba6 sub sp, 0xc |
0x00021ba8 movs r3, 0x7d | r3 = 0x7d;
0x00021baa ldr r0, [r0] | r0 = *(r0);
0x00021bac ldr r2, [pc, 0x54] |
0x00021bae add r5, pc | r5 = 0x437b2;
0x00021bb0 ldr r1, [pc, 0x54] |
0x00021bb2 adds r5, 0x24 | r5 += 0x24;
0x00021bb4 cmp r0, 0 |
0x00021bb6 str r5, [sp] | *(sp) = r5;
0x00021bb8 add r2, pc | r2 = 0x437c0;
0x00021bba it le |
| if (r0 > 0) {
0x00021bbc movle r0, 0 | r0 = 0;
| }
0x00021bbe add r1, pc | r1 = 0x437ca;
0x00021bc0 it gt |
| if (r0 <= 0) {
0x00021bc2 movgt r0, 1 | r0 = 1;
| }
0x00021bc4 blx 0xae50 | fcn_0000ae50 ();
0x00021bc8 ldr r3, [r4] | r3 = *(r4);
0x00021bca subs r3, 1 | r3--;
0x00021bcc str r3, [r4] | *(r4) = r3;
| if (r3 == 0) {
0x00021bce cbnz r3, 0x21bfc |
0x00021bd0 ldr r0, [r4, 8] | r0 = *((r4 + 8));
| if (r0 != 0) {
0x00021bd2 cbz r0, 0x21bd8 |
0x00021bd4 blx 0xa898 | fcn_0000a898 ();
| }
0x00021bd8 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
| if (r0 != 0) {
0x00021bda cbz r0, 0x21be0 |
0x00021bdc blx 0xafec | dbus_message_get_signature ();
| }
0x00021be0 ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
| if (r0 != 0) {
0x00021be2 cbz r0, 0x21be8 |
0x00021be4 blx 0xafec | dbus_message_get_signature ();
| }
0x00021be8 ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
| if (r0 != 0) {
0x00021bea cbz r0, 0x21bf0 |
0x00021bec blx 0xa898 | fcn_0000a898 ();
| }
0x00021bf0 mov r0, r4 | r0 = r4;
0x00021bf2 add sp, 0xc |
0x00021bf4 pop.w {r4, r5, lr} |
0x00021bf8 b.w 0xa0f8 | void (*0xa0f8)() ();
| }
0x00021bfc add sp, 0xc |
0x00021bfe pop {r4, r5, pc} |
| }
; 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-daemon @ 0x14bfc */
| #include <stdint.h>
|
; (fcn) sym.bus_transaction_cancel_and_free () | void bus_transaction_cancel_and_free (int16_t arg_8h, int16_t arg_20h, int16_t arg_24h, int16_t arg1) {
| int16_t var_0h_2;
| r0 = arg1;
0x00014bfc push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00014c00 mov r6, r0 | r6 = r0;
0x00014c02 ldr.w sb, [pc, 0xf8] |
0x00014c06 sub sp, 0xc |
0x00014c08 ldr.w sl, [pc, 0xf4] | sl = *(0x00014d00);
0x00014c0c add sb, pc |
0x00014c0e add.w sb, sb, 0x458 | sb = 0x29d66;
0x00014c12 add sl, pc | sl += pc;
| do {
| label_0:
0x00014c14 mov r0, r6 | r0 = r6;
0x00014c16 blx 0xa168 | fcn_0000a168 ();
0x00014c18 invalid |
0x00014c1c cmp r0, 0 |
| if (r0 == 0) {
0x00014c1e beq 0x14cac | goto label_3;
| }
0x00014c20 ldr.w r1, [sl] | r1 = *(sl);
0x00014c24 blx 0xaca4 | stack_chk_fail ();
0x00014c28 ldr r2, [pc, 0xd8] |
0x00014c2a mov r5, r0 | r5 = r0;
0x00014c2c ldr r1, [pc, 0xd8] |
0x00014c2e subs r0, 0 |
0x00014c30 it ne |
| if (r0 == 0) {
0x00014c32 movne r0, 1 | r0 = 1;
| }
0x00014c34 movw r3, 0x9f3 | r3 = 0x9f3;
0x00014c38 add r2, pc | r2 = 0x29940;
0x00014c3a add.w r8, r5, 0x20 | r8 = r5 + 0x20;
0x00014c3e add r1, pc | r1 = 0x2994a;
0x00014c40 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x00014c44 blx 0xae50 | fcn_0000ae50 ();
0x00014c48 mov r0, r8 | r0 = r8;
0x00014c4a blx 0xaa18 | r0 = fcn_0000aa18 ();
0x00014c4e mov r1, r0 | r1 = r0;
0x00014c50 cmp r0, 0 |
0x00014c52 beq 0x14c14 |
| } while (r0 == 0);
0x00014c54 ldrd r4, fp, [r1, 4] | __asm ("ldrd r4, fp, [r1, 4]");
0x00014c58 ldr r3, [r5, 0x20] | r3 = *((r5 + 0x20));
0x00014c5a ldr.w r2, [fp] | r2 = *(fp);
0x00014c5e cmp r4, r3 |
| if (r4 == r3) {
0x00014c60 beq 0x14c7c | goto label_4;
| }
| label_1:
0x00014c62 cmp r6, r2 |
0x00014c64 it ne |
| if (r6 == r2) {
0x00014c66 movne r1, r4 | r1 = r4;
| }
| if (r6 == r2) {
0x00014c68 beq 0x14c82 | goto label_5;
| }
0x00014c6a cmp r4, 0 |
| if (r4 == 0) {
0x00014c6c beq 0x14c14 | goto label_0;
| }
| label_2:
0x00014c6e ldrd r4, fp, [r1, 4] | __asm ("ldrd r4, fp, [r1, 4]");
0x00014c72 ldr r3, [r5, 0x20] | r3 = *((r5 + 0x20));
0x00014c74 ldr.w r2, [fp] | r2 = *(fp);
0x00014c78 cmp r4, r3 |
| if (r4 != r3) {
0x00014c7a bne 0x14c62 | goto label_1;
| }
| label_4:
0x00014c7c cmp r6, r2 |
| if (r6 != r2) {
0x00014c7e bne 0x14c14 | goto label_0;
| }
0x00014c80 movs r4, 0 | r4 = 0;
| label_5:
0x00014c82 mov r0, r8 | r0 = r8;
0x00014c84 blx 0x9ff4 | fcn_00009ff4 ();
0x00014c88 ldr.w r0, [fp, 4] | r0 = *(arg_24h);
| if (r0 != 0) {
0x00014c8c cbz r0, 0x14c92 |
0x00014c8e blx 0xa8e8 | fcn_0000a8e8 ();
| }
0x00014c92 ldr.w r1, [fp, 8] | r1 = *(arg_8h);
| if (r1 != 0) {
0x00014c96 cbz r1, 0x14c9e |
0x00014c98 mov r0, r7 | r0 = r7;
0x00014c9a blx 0xabc4 | fcn_0000abc4 ();
0x00014c9c invalid |
| }
0x00014c9e mov r0, fp | r0 = fp;
0x00014ca0 blx 0xa0fc | fcn_0000a0fc ();
0x00014ca4 mov r1, r4 | r1 = r4;
0x00014ca6 cmp r4, 0 |
| if (r4 != 0) {
0x00014ca8 bne 0x14c6e | goto label_2;
| }
0x00014caa b 0x14c14 | goto label_0;
| label_3:
0x00014cac ldr r1, [pc, 0x5c] |
0x00014cae add.w r4, r6, 8 | r4 = r6 + 8;
0x00014cb2 mov r2, r0 | r2 = r0;
0x00014cb4 mov r0, r4 | r0 = r4;
0x00014cb6 add r1, pc | r1 = 0x299c6;
0x00014cb8 blx 0xac30 | fcn_0000ac30 ();
0x00014cbc ldr r3, [pc, 0x50] |
0x00014cbe ldr r0, [r6] | r0 = *(r6);
0x00014cc0 ldr r1, [pc, 0x50] |
0x00014cc2 ldr r2, [pc, 0x54] |
0x00014cc4 add r3, pc |
0x00014cc6 add.w r3, r3, 0x478 | r3 = 0x29e50;
0x00014cca clz r0, r0 | r0 &= r0;
0x00014cce str r3, [sp] | *(sp) = r3;
0x00014cd0 lsrs r0, r0, 5 | r0 >>= 5;
0x00014cd2 movw r3, 0x9e4 | r3 = 0x9e4;
0x00014cd6 add r1, pc | r1 = 0x299ee;
0x00014cd8 add r2, pc | r2 = 0x299f6;
0x00014cda blx 0xae50 | fcn_0000ae50 ();
0x00014cde ldr r1, [pc, 0x3c] |
0x00014ce0 mov r2, r7 | r2 = r7;
0x00014ce2 mov r0, r4 | r0 = r4;
0x00014ce4 add r1, pc | r1 = 0x29a06;
0x00014ce6 blx 0xac30 | fcn_0000ac30 ();
0x00014cea mov r0, r4 | r0 = r4;
0x00014cec blx 0xa588 | fcn_0000a588 ();
0x00014cf0 mov r0, r6 | r0 = r6;
0x00014cf2 add sp, 0xc |
0x00014cf4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00014cf8 b.w 0xa0f8 | return void (*0xa0f8)() ();
| }
; 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-daemon @ 0x14d20 */
| #include <stdint.h>
|
; (fcn) sym.bus_transaction_execute_and_free () | void bus_transaction_execute_and_free (int16_t arg_48ch, int16_t arg1) {
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
0x00014d20 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00014d24 mov r7, r0 | r7 = r0;
0x00014d26 ldr r3, [pc, 0x128] |
0x00014d28 sub sp, 0x14 |
0x00014d2a ldr.w fp, [pc, 0x128] | fp = *(0x00014e54);
0x00014d2e ldr r5, [pc, 0x128] |
0x00014d30 add r3, pc | r3 = 0x29b86;
0x00014d32 addw r4, r3, 0x48c | __asm ("addw r4, r3, 0x48c");
0x00014d36 add fp, pc |
0x00014d38 add r5, pc | r5 = 0x29b96;
0x00014d3a addw r3, fp, 0x48c | __asm ("addw r3, arg_48ch");
0x00014d3e str r3, [sp, 0xc] | var_ch = r3;
| do {
0x00014d40 mov r0, r7 | r0 = r7;
0x00014d42 blx 0xa168 | r0 = fcn_0000a168 ();
0x00014d46 mov r8, r0 | r8 = r0;
0x00014d48 cmp r0, 0 |
| if (r0 == 0) {
0x00014d4a beq 0x14db0 | goto label_3;
| }
| label_0:
0x00014d4c ldr r1, [r5] | r1 = *(r5);
0x00014d4e blx 0xaca4 | stack_chk_fail ();
0x00014d52 ldr r2, [pc, 0x108] |
0x00014d54 mov sb, r0 | sb = r0;
0x00014d56 ldr r1, [pc, 0x108] |
0x00014d58 subs r0, 0 |
0x00014d5a it ne |
| if (r0 == 0) {
0x00014d5c movne r0, 1 | r0 = 1;
| }
0x00014d5e movw r3, 0xa1f | r3 = 0xa1f;
0x00014d62 add r2, pc | r2 = 0x29bc4;
0x00014d64 add.w sl, sb, 0x20 | sl = sb + 0x20;
0x00014d68 add r1, pc | r1 = 0x29bce;
0x00014d6a str r4, [sp] | *(sp) = r4;
0x00014d6c blx 0xae50 | fcn_0000ae50 ();
0x00014d70 mov r0, sl | r0 = sl;
0x00014d72 blx 0xad04 | r0 = dbus_auth_is_supported_mechanism ();
0x00014d76 mov r1, r0 | r1 = r0;
0x00014d78 cmp r0, 0 |
0x00014d7a beq 0x14d40 |
| } while (r0 == 0);
0x00014d7c ldr.w fp, [pc, 0xe4] | fp = *(0x00014e64);
0x00014d80 str.w sl, [sp, 8] | __asm ("str.w sl, [var_8h]");
0x00014d84 mov sl, r4 | sl = r4;
0x00014d86 add fp, pc |
| do {
| label_2:
0x00014d88 ldr.w r2, [sb, 0x20] | r2 = *((sb + 0x20));
0x00014d8c ldr r6, [r1, 8] | r6 = *((r1 + 8));
0x00014d8e cmp r2, r1 |
0x00014d90 ldr r3, [r6] | r3 = *(r6);
| if (r2 == r1) {
0x00014d92 beq 0x14df4 | goto label_4;
| }
0x00014d94 ldr r4, [r1] | r4 = *(r1);
0x00014d96 cmp r7, r3 |
0x00014d98 it ne |
| if (r7 == r3) {
0x00014d9a movne r1, r4 | r1 = r4;
| }
| if (r7 == r3) {
0x00014d9c beq 0x14dfa | goto label_5;
| }
0x00014d9e cmp r4, 0 |
0x00014da0 bne 0x14d88 |
| } while (r4 != 0);
| label_1:
0x00014da2 mov r0, r7 | r0 = r7;
0x00014da4 mov r4, sl | r4 = sl;
0x00014da6 blx 0xa168 | r0 = fcn_0000a168 ();
0x00014daa mov r8, r0 | r8 = r0;
0x00014dac cmp r0, 0 |
| if (r0 != 0) {
0x00014dae bne 0x14d4c | goto label_0;
| }
| label_3:
0x00014db0 mov r4, r7 | r4 = r7;
0x00014db2 ldr r3, [pc, 0xb4] |
0x00014db4 ldr r0, [r4], 8 | r0 = *(r4);
| r4 += 8;
0x00014db8 ldr r1, [pc, 0xb0] |
0x00014dba ldr r2, [pc, 0xb4] |
0x00014dbc add r3, pc |
0x00014dbe add.w r3, r3, 0x478 | r3 = 0x2a0a2;
0x00014dc2 clz r0, r0 | r0 &= r0;
0x00014dc6 str r3, [sp] | *(sp) = r3;
0x00014dc8 lsrs r0, r0, 5 | r0 >>= 5;
0x00014dca movw r3, 0x9e4 | r3 = 0x9e4;
0x00014dce add r1, pc | r1 = 0x29c3e;
0x00014dd0 add r2, pc | r2 = 0x29c46;
0x00014dd2 blx 0xae50 | fcn_0000ae50 ();
0x00014dd6 ldr r1, [pc, 0x9c] |
0x00014dd8 mov r2, r8 | r2 = r8;
0x00014dda mov r0, r4 | r0 = r4;
0x00014ddc add r1, pc | r1 = 0x29c56;
0x00014dde blx 0xac30 | fcn_0000ac30 ();
0x00014de2 mov r0, r4 | r0 = r4;
0x00014de4 blx 0xa588 | fcn_0000a588 ();
0x00014de8 mov r0, r7 | r0 = r7;
0x00014dea add sp, 0x14 |
0x00014dec pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00014df0 b.w 0xa0f8 | void (*0xa0f8)() ();
| label_4:
0x00014df4 cmp r7, r3 |
| if (r7 != r3) {
0x00014df6 bne 0x14da2 | goto label_1;
| }
0x00014df8 movs r4, 0 | r4 = 0;
| label_5:
0x00014dfa ldr r0, [sp, 8] | r0 = var_8h;
0x00014dfc blx 0x9ff4 | fcn_00009ff4 ();
0x00014e00 ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x00014e02 blx 0xa1bc | fcn_0000a1bc ();
0x00014e06 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00014e08 subs r0, 0 |
0x00014e0a it ne |
| if (r0 == 0) {
0x00014e0c movne r0, 1 | r0 = 1;
| }
0x00014e0e movw r3, 0xa2d | r3 = 0xa2d;
0x00014e10 movs r3, 0x2d | r3 = 0x2d;
0x00014e12 mov r2, fp | r2 = fp;
0x00014e14 str r1, [sp] | *(sp) = r1;
0x00014e16 ldr r1, [pc, 0x60] |
0x00014e18 add r1, pc | r1 = 0x29c96;
0x00014e1a blx 0xae50 | fcn_0000ae50 ();
0x00014e1e movs r3, 0 | r3 = 0;
0x00014e20 mov r0, r8 | r0 = r8;
0x00014e22 ldrd r2, r1, [r6, 4] | __asm ("ldrd r2, r1, [r6, 4]");
0x00014e26 blx 0xa05c | dbus_bus_set_unique_name ();
0x00014e2a ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x00014e2c movs r3, 0 | r3 = 0;
0x00014e2e str r3, [r6, 8] | *((r6 + 8)) = r3;
| if (r0 != 0) {
0x00014e30 cbz r0, 0x14e40 |
0x00014e32 blx 0xa8e8 | fcn_0000a8e8 ();
0x00014e36 ldr r1, [r6, 8] | r1 = *((r6 + 8));
| if (r1 == 0) {
0x00014e38 cbz r1, 0x14e40 | goto label_6;
| }
0x00014e3a mov r0, r8 | r0 = r8;
0x00014e3c blx 0xabc4 | fcn_0000abc4 ();
| }
| label_6:
0x00014e40 mov r0, r6 | r0 = r6;
0x00014e42 blx 0xa0fc | fcn_0000a0fc ();
0x00014e46 mov r1, r4 | r1 = r4;
0x00014e48 cmp r4, 0 |
| if (r4 != 0) {
0x00014e4a bne 0x14d88 | goto label_2;
| }
0x00014e4c b 0x14da2 | goto label_1;
| }
[*] Function printf used 1 times dbus-daemon