[*] Binary protection state of doorcontrold
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function fprintf tear down of doorcontrold
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/doorcontrold @ 0x9dd8 */
| #include <stdint.h>
|
; (fcn) fcn.00009dd8 () | void fcn_00009dd8 (int16_t arg_4h, uint32_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00009dd8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00009ddc sub sp, 0xc |
0x00009dde cmp r0, 0 |
| if (r0 == 0) {
0x00009de0 beq 0x9e9c | goto label_6;
| }
0x00009de2 mov r8, r0 | r8 = r0;
0x00009de4 mov sb, r1 | sb = r1;
0x00009de6 ldr r3, [pc, 0xe8] |
0x00009de8 mov sl, r2 | sl = r2;
0x00009dea add r3, pc | r3 = 0x13cc0;
0x00009dec ldr r0, [r3, 4] | r0 = *(0x13cc4);
0x00009dee blx 0x6744 | r0 = fprintf_chk ()
0x00009df2 mov r7, r0 | r7 = r0;
| if (r0 == 0) {
0x00009df4 cbz r0, 0x9e1e | goto label_5;
| }
0x00009df6 ldr.w fp, [pc, 0xdc] | fp = *(0x00009ed4);
0x00009dfa add fp, pc |
| do {
| label_4:
0x00009dfc ldr r6, [r7] | r6 = *(r7);
0x00009dfe cmp r6, 0 |
| if (r6 == 0) {
0x00009e00 beq 0x9e82 | goto label_7;
| }
0x00009e02 cmp.w sb, 0 |
| if (sb == 0) {
0x00009e06 beq 0x9e24 | goto label_8;
| }
0x00009e08 ldr r1, [r6] | r1 = *(r6);
0x00009e0a mov r0, sb | r0 = sb;
0x00009e0c blx 0x6e48 | r0 = fcn_00006e48 ();
| if (r0 == 0) {
0x00009e10 cbz r0, 0x9e24 | goto label_8;
| }
| label_0:
0x00009e12 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00009e14 ldr r7, [r7, 4] | r7 = *((r7 + 4));
0x00009e16 cmp r3, 0 |
| if (r3 == 0) {
0x00009e18 beq 0x9eb6 | goto label_9;
| }
0x00009e1a cmp r7, 0 |
0x00009e1c bne 0x9dfc |
| } while (r7 != 0);
| label_5:
0x00009e1e add sp, 0xc |
0x00009e20 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_8:
0x00009e24 ldr r4, [r6, 4] | r4 = *((r6 + 4));
0x00009e26 cmp r4, 0 |
| if (r4 == 0) {
0x00009e28 beq 0x9eb4 | goto label_10;
| }
0x00009e2a ldr r5, [r4] | r5 = *(r4);
| if (r5 == 0) {
0x00009e2c cbz r5, 0x9e46 | goto label_11;
| }
| label_1:
0x00009e2e mov r0, r8 | r0 = r8;
0x00009e30 ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x00009e32 bl 0xbf6c | fcn_0000bf6c (r0, r1, r2);
0x00009e36 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00009e38 cmp r3, r0 |
| if (r3 == r0) {
0x00009e3a beq 0x9e60 | goto label_12;
| }
| label_2:
0x00009e3c cmp r4, 0 |
| if (r4 == 0) {
0x00009e3e beq 0x9e12 | goto label_0;
| }
| label_3:
0x00009e40 ldr r5, [r4] | r5 = *(r4);
0x00009e42 cmp r5, 0 |
| if (r5 != 0) {
0x00009e44 bne 0x9e2e | goto label_1;
| }
| label_11:
0x00009e46 ldr r3, [pc, 0x90] |
0x00009e48 movw r2, 0x43e | r2 = 0x43e;
0x00009e4a tst r6, r7 |
0x00009e4c ldr r4, [pc, 0x8c] |
0x00009e4e mov r0, r5 | r0 = r5;
0x00009e50 ldr r1, [pc, 0x8c] |
0x00009e52 add r3, pc | r3 = 0x13d30;
0x00009e54 add r4, pc | r4 = 0x13d34;
0x00009e56 adds r3, 0xdc | r3 += 0xdc;
0x00009e58 add r1, pc | r1 = 0x13d3c;
0x00009e5a str r4, [sp] | *(sp) = r4;
0x00009e5c blx 0x6ec0 | fcn_00006ec0 ();
| label_12:
0x00009e60 cmp.w sl, 0 |
| if (sl == 0) {
0x00009e64 beq 0x9e6c | goto label_13;
| }
0x00009e66 ldr r3, [r5] | r3 = *(r5);
0x00009e68 cmp sl, r3 |
| if (sl != r3) {
0x00009e6a bne 0x9e3c | goto label_2;
| }
| label_13:
0x00009e6c ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x00009e6e mov r1, r5 | r1 = r5;
0x00009e70 blx 0x6868 | fcn_00006868 ();
0x00009e74 str r0, [r6, 4] | *((r6 + 4)) = r0;
0x00009e76 mov r0, r5 | r0 = r5;
0x00009e78 blx 0x6aa4 | g_assertion_message ();
0x00009e7c cmp r4, 0 |
| if (r4 != 0) {
0x00009e7e bne 0x9e40 | goto label_3;
| }
0x00009e80 b 0x9e12 | goto label_0;
| label_7:
0x00009e82 ldr r3, [pc, 0x60] |
0x00009e84 movw r2, 0x425 | r2 = 0x425;
0x00009e88 ldr r4, [pc, 0x5c] |
0x00009e8a mov r0, r6 | r0 = r6;
0x00009e8c ldr r1, [pc, 0x5c] |
0x00009e8e add r3, pc | r3 = 0x13d78;
0x00009e90 add r4, pc | r4 = 0x13d7c;
0x00009e92 adds r3, 0xc4 | r3 += 0xc4;
0x00009e94 add r1, pc | r1 = 0x13d84;
0x00009e96 str r4, [sp] | *(sp) = r4;
0x00009e98 blx 0x6ec0 | fcn_00006ec0 ();
| label_6:
0x00009e9c ldr r3, [pc, 0x50] |
0x00009e9e mov.w r2, 0x420 | r2 = 0x420;
0x00009ea2 ldr r4, [pc, 0x50] |
0x00009ea4 ldr r1, [pc, 0x50] |
0x00009ea6 add r3, pc | r3 = 0x13d9a;
0x00009ea8 add r4, pc | r4 = 0x13da2;
0x00009eaa adds r3, 0xc4 | r3 += 0xc4;
0x00009eac add r1, pc | r1 = 0x13da8;
0x00009eae str r4, [sp] | *(sp) = r4;
0x00009eb0 blx 0x6ec0 | fcn_00006ec0 ();
| label_10:
0x00009eb4 ldr r7, [r7, 4] | r7 = *((r7 + 4));
| label_9:
0x00009eb6 ldr.w r0, [fp, 4] | r0 = *(arg_4h);
0x00009eba mov r1, r6 | r1 = r6;
0x00009ebc blx 0x6868 | fcn_00006868 ();
0x00009ec0 str.w r0, [fp, 4] | __asm ("str.w r0, [arg_4h]");
0x00009ec4 mov r0, r6 | r0 = r6;
0x00009ec6 blx 0x6aa4 | g_assertion_message ();
0x00009eca cmp r7, 0 |
| if (r7 != 0) {
0x00009ecc bne 0x9dfc | goto label_4;
| }
0x00009ece b 0x9e1e | goto label_5;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/doorcontrold @ 0xa58c */
| #include <stdint.h>
|
; (fcn) fcn.0000a58c () | void fcn_0000a58c (int16_t arg_90h, int16_t arg_a0h) {
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch;
0x0000a58c ldr r0, [pc, 0xc0] |
0x0000a58e movs r2, 0 | r2 = 0;
0x0000a590 ldr r1, [pc, 0xc0] | r1 = *(0xa654);
0x0000a592 ldr r3, [pc, 0xc4] |
0x0000a594 add r0, pc | r0 = 0x14be8;
0x0000a596 push {r4, r5, r6, lr} |
0x0000a598 ldr r1, [r0, r1] |
0x0000a59a sub sp, 0x10 |
0x0000a59c add r3, pc | r3 = 0x14bfa;
0x0000a59e ldr r0, [r3] | r0 = *(0x14bfa);
0x0000a5a0 ldr r1, [r1] | r1 = *(0x14be8);
0x0000a5a2 str r1, [sp, 0xc] | var_ch = r1;
0x0000a5a4 mov.w r1, 0 | r1 = 0;
0x0000a5a8 str r2, [sp, 8] | var_8h = r2;
0x0000a5aa blx 0x6744 | r0 = fprintf_chk ()
0x0000a5ae mov r6, r0 | r6 = r0;
0x0000a5b0 cmp r0, 0 |
| if (r0 == 0) {
0x0000a5b2 beq 0xa630 | goto label_0;
| }
0x0000a5b4 add r5, sp, 8 | r5 += var_8h;
0x0000a5b6 b 0xa60c |
| while (r4 != 0) {
0x0000a5b8 movs r2, 0 | r2 = 0;
0x0000a5ba mov r1, r4 | r1 = r4;
0x0000a5bc mov r0, r5 | r0 = r5;
0x0000a5be bl 0x9990 | fcn_00009990 (r0, r1, r2);
0x0000a5c2 movs r2, 0xc | r2 = 0xc;
0x0000a5c4 mov r1, r4 | r1 = r4;
0x0000a5c6 mov r0, r5 | r0 = r5;
0x0000a5c8 bl 0x9990 | fcn_00009990 (r0, r1, r2);
0x0000a5cc movs r2, 0xb | r2 = 0xb;
0x0000a5ce mov r1, r4 | r1 = r4;
0x0000a5d0 mov r0, r5 | r0 = r5;
0x0000a5d2 bl 0x9990 | fcn_00009990 (r0, r1, r2);
0x0000a5d6 movs r2, 0xd | r2 = 0xd;
0x0000a5d8 mov r1, r4 | r1 = r4;
0x0000a5da mov r0, r5 | r0 = r5;
0x0000a5dc bl 0x9990 | fcn_00009990 (r0, r1, r2);
0x0000a5e0 movs r2, 0x14 | r2 = 0x14;
0x0000a5e2 mov r1, r4 | r1 = r4;
0x0000a5e4 mov r0, r5 | r0 = r5;
0x0000a5e6 bl 0x9990 | fcn_00009990 (r0, r1, r2);
0x0000a5ea movs r2, 0x13 | r2 = 0x13;
0x0000a5ec mov r1, r4 | r1 = r4;
0x0000a5ee mov r0, r5 | r0 = r5;
0x0000a5f0 bl 0x9990 | fcn_00009990 (r0, r1, r2);
0x0000a5f4 movs r2, 0x15 | r2 = 0x15;
0x0000a5f6 mov r1, r4 | r1 = r4;
0x0000a5f8 mov r0, r5 | r0 = r5;
0x0000a5fa bl 0x9990 | fcn_00009990 (r0, r1, r2);
0x0000a5fe movs r2, 0x16 | r2 = 0x16;
0x0000a600 mov r1, r4 | r1 = r4;
0x0000a602 mov r0, r5 | r0 = r5;
0x0000a604 bl 0x9990 | fcn_00009990 (r0, r1, r2);
0x0000a608 ldr r6, [r6, 4] | r6 = *((r6 + 4));
| if (r6 == 0) {
0x0000a60a cbz r6, 0xa62e | goto label_1;
| }
0x0000a60c ldr r4, [r6] | r4 = *(r6);
0x0000a60e cmp r4, 0 |
0x0000a610 bne 0xa5b8 |
| }
0x0000a612 ldr r3, [pc, 0x48] |
0x0000a614 movw r2, 0x6aa | r2 = 0x6aa;
0x0000a616 str r2, [r5, 0x28] | *((r5 + 0x28)) = r2;
0x0000a618 ldr r5, [pc, 0x44] |
0x0000a61a mov r0, r4 | r0 = r4;
0x0000a61c ldr r1, [pc, 0x44] |
0x0000a61e add r3, pc |
0x0000a620 add r5, pc | r5 = 0x14c84;
0x0000a622 add.w r3, r3, 0x16c | r3 = 0x14dec;
0x0000a626 add r1, pc | r1 = 0x14c8e;
0x0000a628 str r5, [sp] | *(sp) = r5;
0x0000a62a blx 0x6ec0 | fcn_00006ec0 ();
| label_1:
0x0000a62e ldr r6, [sp, 8] | r6 = var_8h;
| label_0:
0x0000a630 ldr r2, [pc, 0x34] |
0x0000a632 ldr r3, [pc, 0x20] | r3 = *(0xa656);
0x0000a634 add r2, pc | r2 = 0x14ca0;
0x0000a636 ldr r3, [r2, r3] | r3 = *(0x14ca0);
0x0000a638 ldr r2, [r3] | r2 = *(0x14ca0);
0x0000a63a ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000a63c eors r2, r3 | r2 ^= r3;
0x0000a63e mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x0000a642 bne 0xa64a |
0x0000a644 mov r0, r6 | r0 = r6;
0x0000a646 add sp, 0x10 |
0x0000a648 pop {r4, r5, r6, pc} |
| }
0x0000a64a blx 0x6a6c | fcn_00006a6c ();
0x0000a64e nop |
0x0000a650 str r5, [sp, 0xa0] | *(arg_a0h) = r5;
0x0000a652 movs r3, r0 | r3 = r0;
0x0000a654 lsls r0, r3, 0x11 | r0 = r3 << 0x11;
0x0000a656 movs r0, r0 |
0x0000a658 add r4, sp, 0x90 | r4 += arg_90h;
0x0000a65a movs r3, r0 | r3 = r0;
0x0000a65c invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/doorcontrold @ 0xbe70 */
| #include <stdint.h>
|
; (fcn) fcn.0000be70 () | void fcn_0000be70 (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| r0 = arg1;
| r1 = arg2;
| if (? >= ?) {
0x0000be70 ldrblt r4, [r0, 0xb1d]! | r4 = *((r0 += 0xb1d));
| }
0x0000be74 mov r6, r0 | r6 = r0;
0x0000be76 sub sp, 0xc |
0x0000be78 add r3, pc | r3 += pc;
| if (r0 == 0) {
0x0000be7a cbz r0, 0xbede | goto label_0;
| }
0x0000be7c ldr r2, [pc, 0x6c] | r2 = *(0xbeec);
0x0000be7e mov r7, r1 | r7 = r1;
0x0000be80 ldr r3, [r3, r2] | r3 = *((r3 + r2));
0x0000be82 ldr r0, [r3] | r0 = *(r3);
0x0000be84 blx 0x6744 | r0 = fprintf_chk ()
0x0000be88 mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x0000be8a cbnz r0, 0xbe9c | goto label_1;
| }
0x0000be8c b 0xbebe | goto label_2;
| do {
0x0000be8e ldr r0, [r5, 0x18] | r0 = *((r5 + 0x18));
0x0000be90 mov r1, r6 | r1 = r6;
0x0000be92 blx 0x6e48 | r0 = fcn_00006e48 ();
| if (r0 == 0) {
0x0000be96 cbz r0, 0xbed8 | goto label_3;
| }
0x0000be98 ldr r4, [r4, 4] | r4 = *((r4 + 4));
| if (r4 == 0) {
0x0000be9a cbz r4, 0xbebe | goto label_2;
| }
| label_1:
0x0000be9c ldr r5, [r4] | r5 = *(r4);
0x0000be9e cmp r5, 0 |
0x0000bea0 bne 0xbe8e |
| } while (r5 != 0);
0x0000bea2 ldr r3, [pc, 0x4c] |
0x0000bea4 movw r2, 0x641 | r2 = 0x641;
0x0000bea8 ldr r4, [pc, 0x48] |
0x0000beaa mov r0, r5 | r0 = r5;
0x0000beac ldr r1, [pc, 0x48] |
0x0000beae add r3, pc |
0x0000beb0 add r4, pc | r4 = 0x17da8;
0x0000beb2 add.w r3, r3, 0x1dc | r3 = 0x17f80;
0x0000beb6 add r1, pc | r1 = 0x17db2;
0x0000beb8 str r4, [sp] | *(sp) = r4;
0x0000beba blx 0x6ec0 | fcn_00006ec0 ();
| label_2:
0x0000bebe bl 0x7530 | fcn_00007530 ();
0x0000bec2 ldr r2, [pc, 0x38] |
0x0000bec4 movs r1, 0 | r1 = 0;
0x0000bec6 mov r3, r6 | r3 = r6;
0x0000bec8 movs r5, 0 | r5 = 0;
0x0000beca add r2, pc | r2 = 0x17dcc;
0x0000becc blx 0x68dc | r0 = daemon_retval_send ();
0x0000bed0 mov r1, r0 | r1 = r0;
0x0000bed2 mov r0, r7 | r0 = r7;
0x0000bed4 blx 0x6528 | pio_release_device_io ();
| label_3:
0x0000bed8 mov r0, r5 | r0 = r5;
0x0000beda add sp, 0xc |
0x0000bedc pop {r4, r5, r6, r7, pc} |
| label_0:
0x0000bede mov r5, r0 | r5 = r0;
0x0000bee0 mov r0, r5 | r0 = r5;
0x0000bee2 add sp, 0xc |
0x0000bee4 pop {r4, r5, r6, r7, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/doorcontrold @ 0xbf00 */
| #include <stdint.h>
|
; (fcn) fcn.0000bf00 () | void fcn_0000bf00 (int16_t arg1) {
| int16_t var_0h;
| r0 = arg1;
| if (? >= ?) {
0x0000bf00 ldrlt r4, [r0, -0xb14] | r4 = *((r0 - 0xb14));
| }
0x0000bf04 mov r4, r0 | r4 = r0;
0x0000bf06 ldr r2, [pc, 0x50] |
0x0000bf08 sub sp, 8 |
0x0000bf0a add r3, pc | r3 += pc;
0x0000bf0c ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x0000bf0e add r2, pc | r2 = 0x17e6c;
| if (r0 == 0) {
0x0000bf10 cbnz r0, 0xbf2c |
0x0000bf12 ldr r3, [pc, 0x48] |
0x0000bf14 movw r2, 0x14f | r2 = 0x14f;
0x0000bf16 asrs r7, r1, 9 | r7 = r1 >> 9;
0x0000bf18 ldr r4, [pc, 0x44] |
0x0000bf1a ldr r1, [pc, 0x48] |
0x0000bf1c add r3, pc |
0x0000bf1e add r4, pc | r4 = 0x17e82;
0x0000bf20 add.w r3, r3, 0x1ec | r3 = 0x1806a;
0x0000bf24 add r1, pc | r1 = 0x17e8e;
0x0000bf26 str r4, [sp] | *(sp) = r4;
0x0000bf28 blx 0x6ec0 | fcn_00006ec0 ();
| }
0x0000bf2c ldr r3, [pc, 0x38] | r3 = *(0xbf68);
0x0000bf2e ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000bf30 ldr r0, [r3] | r0 = *(0xbf68);
0x0000bf32 blx 0x6744 | fprintf_chk ()
0x0000bf34 invalid |
| if (r0 != 0) {
0x0000bf38 cbnz r0, 0xbf40 | goto label_0;
| }
0x0000bf3a b 0xbf4c | goto label_1;
| do {
0x0000bf3c ldr r3, [r3, 4] | r3 = *((r3 + 4));
| if (r3 == 0) {
0x0000bf3e cbz r3, 0xbf4c | goto label_1;
| }
| label_0:
0x0000bf40 ldr r0, [r3] | r0 = *(r3);
0x0000bf42 ldr r2, [r0] | r2 = *(r0);
0x0000bf44 cmp r2, r4 |
0x0000bf46 bne 0xbf3c |
| } while (r2 != r4);
0x0000bf48 add sp, 8 |
0x0000bf4a pop {r4, pc} |
| label_1:
0x0000bf4c mov r0, r3 | r0 = r3;
0x0000bf4e add sp, 8 |
0x0000bf50 pop {r4, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/doorcontrold @ 0xf22c */
| #include <stdint.h>
|
; (fcn) fcn.0000f22c () | void fcn_0000f22c (int16_t arg1) {
| r0 = arg1;
| label_1:
0x0000670c bx pc | return void (*pc)() ();
0x0000f22c push.w {r3, r4, r5, r6, r7, r8, sb, lr} |
0x0000f230 mov sb, r0 | sb = r0;
0x0000f232 ldr r3, [pc, 0x90] |
0x0000f234 ldr r2, [pc, 0x90] | r2 = *(0xf2c8);
0x0000f236 add r3, pc |
0x0000f238 ldr r6, [r0, 0x78] | r6 = *((r0 + 0x78));
0x0000f23a ldr.w r7, [r0, 0x80] | r7 = *((r0 + 0x80));
0x0000f23e ldr r3, [r3, r2] | r3 = *(0x1e500);
0x0000f240 ldr r0, [r3] | r0 = *(0x1e500);
0x0000f242 blx 0x6744 | r0 = fprintf_chk ()
0x0000f246 mov r4, r0 | r4 = r0;
0x0000f248 cmp r0, 0 |
| if (r0 == 0) {
0x0000f24a beq 0xf2be | goto label_3;
| }
0x0000f24c mov.w r8, 0 | r8 = 0;
0x0000f250 b 0xf256 |
| while (r0 != 0) {
0x0000f252 ldr r4, [r4, 4] | r4 = *((r4 + 4));
| if (r4 == 0) {
0x0000f254 cbz r4, 0xf27e | goto label_2;
| }
| label_0:
0x0000f256 ldr r5, [r4] | r5 = *(r4);
0x0000f258 mov r0, r5 | r0 = r5;
0x0000f25a bl 0xe844 | fcn_0000e844 (r0);
0x0000f25e ldr r1, [r6] | r1 = *(r6);
0x0000f260 blx 0x704c | r0 = fcn_0000704c ();
0x0000f264 cmp r0, 0 |
0x0000f266 bne 0xf252 |
| }
0x0000f268 mov r0, r5 | r0 = r5;
0x0000f26a bl 0xda94 | r0 = fcn_0000da94 (r0);
0x0000f26e mov r1, r0 | r1 = r0;
0x0000f270 mov r0, r8 | r0 = r8;
0x0000f272 blx 0x6648 | exit (r0);
0x0000f276 ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x0000f278 mov r8, r0 | r8 = r0;
0x0000f27a cmp r4, 0 |
| if (r4 != 0) {
0x0000f27c bne 0xf256 | goto label_0;
| }
| label_2:
0x0000f27e mov r0, r8 | r0 = r8;
0x0000f280 add.w sb, sb, 0x58 | sb += 0x58;
0x0000f284 blx 0x65d4 | r0 = fcn_000065d4 ();
0x0000f288 lsls r1, r0, 2 | r1 = r0 << 2;
0x0000f28a str r0, [r7] | *(r7) = r0;
0x0000f28c mov r0, sb | r0 = sb;
0x0000f28e blx 0x633c | nb_malloc ();
0x0000f292 str r0, [r7, 4] | *((r7 + 4)) = r0;
0x0000f294 mov r0, r8 | r0 = r8;
0x0000f296 blx 0x6744 | r0 = fprintf_chk ()
0x0000f29a mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x0000f29c cbz r0, 0xf2b4 | goto label_4;
| }
0x0000f29e movs r5, 0 | r5 = 0;
| do {
0x0000f2a0 ldr r1, [r4] | r1 = *(r4);
0x0000f2a2 mov r0, sb | r0 = sb;
0x0000f2a4 ldr r6, [r7, 4] | r6 = *((r7 + 4));
0x0000f2a6 blx 0x65c4 | g_list_length ();
0x0000f2aa ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x0000f2ac str r0, [r6, r5] | *((r6 + r5)) = r0;
0x0000f2ae adds r5, 4 | r5 += 4;
0x0000f2b0 cmp r4, 0 |
0x0000f2b2 bne 0xf2a0 |
| } while (r4 != 0);
| label_4:
0x0000f2b4 mov r0, r8 | r0 = r8;
0x0000f2b6 pop.w {r3, r4, r5, r6, r7, r8, sb, lr} |
0x0000f2ba b.w 0x670c | goto label_1;
| label_3:
0x0000f2be mov r8, r0 | r8 = r0;
0x0000f2c0 b 0xf27e | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/doorcontrold @ 0x135b4 */
| #include <stdint.h>
|
; (fcn) fcn.000135b4 () | void fcn_000135b4 (int16_t arg_0h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h_2;
| int16_t var_4h;
| int16_t var_8h_2;
| int16_t var_ch_2;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h_2;
| int16_t var_18h_2;
| int16_t var_1ch_2;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int32_t var_2ch_2;
| int32_t var_34h;
| int32_t var_34h_2;
| int32_t var_3ch;
| int32_t var_3ch_2;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_74h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000135b4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000135b8 mov sl, r2 | sl = r2;
0x000135ba ldr r2, [pc, 0x3c4] |
0x000135bc mov fp, r3 |
0x000135be sub sp, 0x7c |
0x000135c0 mov r7, r0 | r7 = r0;
0x000135c2 ldr r3, [pc, 0x3c0] | r3 = *(0x13986);
0x000135c4 add r2, pc | r2 = 0x26f4a;
0x000135c6 str r1, [sp, 8] | var_8h = r1;
0x000135c8 ldr r3, [r2, r3] |
0x000135ca ldr r3, [r3] | r3 = *(0x26f4a);
0x000135cc str r3, [sp, 0x74] | var_74h = r3;
0x000135ce mov.w r3, 0 | r3 = 0;
0x000135d2 cmp.w sl, 0 |
| if (sl == 0) {
0x000135d6 beq.w 0x1386e | goto label_14;
| }
0x000135da cmp.w fp, 0 |
| if (fp == 0) {
0x000135de beq.w 0x1388e | goto label_15;
| }
| label_8:
0x000135e2 ldr.w r3, [fp] | r3 = *(fp);
| if (r3 != 0) {
0x000135e6 cbz r3, 0x13600 |
0x000135e8 ldr r3, [pc, 0x39c] |
0x000135ea movs r0, 0 | r0 = 0;
0x000135ec ldr r2, [pc, 0x39c] |
0x000135ee ldr r1, [pc, 0x3a0] |
0x000135f0 add r3, pc | r3 = 0x26f7c;
0x000135f2 add r2, pc | r2 = 0x26f82;
0x000135f4 adds r3, 0x38 | r3 += 0x38;
0x000135f6 str r2, [sp] | *(sp) = r2;
0x000135f8 add r1, pc | r1 = 0x26f8e;
0x000135fa movs r2, 0x93 | r2 = 0x93;
0x000135fc blx 0x6af4 | fcn_00006af4 ();
| }
0x00013600 movs r4, 0 | r4 = 0;
0x00013602 str r4, [sp, 0x24] | var_24h = r4;
0x00013604 bl 0xbe48 | fcn_0000be48 ();
0x00013608 bl 0x11788 | fcn_00011788 ();
0x0001360c str r0, [sp, 0x28] | var_28h = r0;
0x0001360e bl 0x117c8 | fcn_000117c8 ();
0x00013612 blx 0x6728 | fcn_00006728 ();
0x00013616 ldr.w r3, [sl] | r3 = *(sl);
0x0001361a cmp r3, 6 |
| if (r3 == 6) {
0x0001361c beq.w 0x138a8 | goto label_16;
| }
0x00013620 ldr r0, [pc, 0x370] |
0x00013622 subs r7, 4 | r7 -= 4;
0x00013624 add r0, pc | r0 = "get_extended_time";
0x00013626 blx 0x6494 | fcn_00006494 ();
0x0001362a blx 0x65a0 | durationstr2long ();
0x0001362e ldr r3, [sp, 8] | r3 = var_8h;
0x00013630 mov r8, r0 | r8 = r0;
0x00013632 cmp r3, 0 |
| if (r3 == 0) {
0x00013634 beq.w 0x13922 | goto label_17;
| }
| label_9:
0x00013638 ldr r3, [pc, 0x35c] |
0x0001363a movs r2, 1 | r2 = 1;
0x0001363c add r6, sp, 0x24 | r6 += var_24h;
0x0001363e add r3, pc | r3 = 0x26fda;
0x00013640 str r3, [sp, 0x14] | var_14h_2 = r3;
0x00013642 ldr r3, [pc, 0x358] |
0x00013644 add r3, pc | r3 = 0x26fe6;
0x00013646 str r3, [sp, 0x18] | var_18h_2 = r3;
0x00013648 ldr r3, [pc, 0x354] |
0x0001364a add r3, pc | r3 = 0x26fee;
0x0001364c str r3, [sp, 0x1c] | var_1ch_2 = r3;
0x0001364e movs r3, 0 | r3 = 0;
0x00013650 mov sb, r3 | sb = r3;
0x00013652 strd r2, r3, [sp, 0xc] | __asm ("strd r2, r3, [var_ch]");
0x00013656 b 0x136a2 |
| while (r3 != 0) {
0x00013658 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0001365a cmp r3, 0 |
| if (r3 == 0) {
0x0001365c beq.w 0x1386a | goto label_18;
| }
| label_0:
0x00013660 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00013662 movs r1, 0x10 | r1 = 0x10;
0x00013664 movs r0, 0 | r0 = 0;
0x00013666 str r3, [sp] | *(sp) = r3;
0x00013668 ldrd r3, r2, [sp, 0x14] | __asm ("ldrd r3, r2, [var_14h_2]");
0x0001366c blx 0x65f4 | g_list_alloc ();
0x00013670 ldr.w r5, [fp] | r5 = *(fp);
0x00013674 cmp r5, 0 |
| if (r5 == 0) {
0x00013676 beq.w 0x1383e | goto label_19;
| }
0x0001367a mov r0, r6 | r0 = r6;
0x0001367c blx 0x6c20 | fcn_00006c20 ();
0x0001367e invalid |
| label_5:
0x00013680 ldr.w r3, [fp] | r3 = *(fp);
| if (r3 != 0) {
0x00013684 cbz r3, 0x13698 |
0x00013686 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00013688 movs r1, 0x40 | r1 = 0x40;
0x0001368a ldr r2, [pc, 0x318] |
0x0001368c movs r0, 0 | r0 = 0;
0x0001368e str r3, [sp] | *(sp) = r3;
0x00013690 add r2, pc | r2 = 0x2703a;
0x00013692 ldr r3, [sp, 0x1c] | r3 = var_1ch_2;
0x00013694 blx 0x65f4 | g_list_alloc ();
| }
| label_7:
0x00013698 ldr r3, [sp, 8] | r3 = var_8h;
0x0001369a add.w sb, sb, 1 | sb++;
0x0001369e cmp r3, sb |
| if (r3 < sb) {
0x000136a0 bls 0x136fa | goto label_20;
| }
| label_1:
0x000136a2 ldr r0, [r7, 4]! | r0 = *((r7 += 4));
0x000136a6 mov r1, r6 | r1 = r6;
0x000136a8 bl 0xbe70 | fcn_0000be70 (r0, r1);
0x000136aa umlal r4, r6, r2, r5 | __asm ("umlal r4, r6, r2, r5");
0x000136ae cmp r0, 0 |
| if (r0 == 0) {
0x000136b0 beq.w 0x13816 | goto label_21;
| }
0x000136b4 mov r3, r6 | r3 = r6;
0x000136b6 ldr r0, [sp, 0x28] | r0 = var_28h;
0x000136b8 mov r2, sl | r2 = sl;
0x000136ba mov r1, r5 | r1 = r5;
0x000136bc bl 0x11978 | fcn_00011978 (r0, r1, r2, r3);
0x000136be invalid |
0x000136c2 mov r1, r5 | r1 = r5;
0x000136c4 blx 0x6868 | fcn_00006868 ();
0x000136c8 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000136ca mov r4, r0 | r4 = r0;
0x000136cc cmp r3, 0 |
| if (r3 == 0) {
0x000136ce beq.w 0x13860 | goto label_22;
| }
| label_6:
0x000136d2 ldr r2, [sp, 0x24] | r2 = var_24h;
0x000136d4 mov r0, r8 | r0 = r8;
0x000136d6 ldr r1, [pc, 0x2d0] |
0x000136d8 clz r2, r2 | r2 &= r2;
0x000136dc lsrs r2, r2, 5 | r2 >>= 5;
0x000136de add r1, pc | r1 = 0x2708c;
0x000136e0 blx 0x6f34 | fcn_00006f34 ();
0x000136e4 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000136e6 cmp r3, 0 |
0x000136e8 bne 0x13658 |
| }
0x000136ea ldr r3, [sp, 0x24] | r3 = var_24h;
0x000136ec cmp r3, 0 |
| if (r3 != 0) {
0x000136ee bne 0x13660 | goto label_0;
| }
| label_4:
0x000136f0 ldr r3, [sp, 8] | r3 = var_8h;
0x000136f2 add.w sb, sb, 1 | sb++;
0x000136f6 cmp r3, sb |
| if (r3 > sb) {
0x000136f8 bhi 0x136a2 | goto label_1;
| }
| label_20:
0x000136fa cmp r4, 0 |
| if (r4 == 0) {
0x000136fc beq 0x13788 | goto label_23;
| }
0x000136fe movs r2, 0 | r2 = 0;
0x00013700 add r3, sp, 0x2c | r3 += var_2ch;
0x00013702 str r3, [sp] | *(sp) = r3;
0x00013704 add.w sb, sp, 0x48 | sb += var_48h;
0x00013708 strd r2, r2, [sp, 0x2c] | __asm ("strd r2, r2, [var_2ch]");
0x0001370c movs r1, 4 | r1 = 4;
0x0001370e strd r2, r2, [sp, 0x34] | __asm ("strd r2, r2, [var_34h]");
0x00013712 mov r0, sb | r0 = sb;
0x00013714 strd r2, r2, [sp, 0x3c] | __asm ("strd r2, r2, [var_3ch]");
0x00013718 str r2, [sp, 0x44] | var_44h = r2;
0x0001371a ldr r3, [pc, 0x290] |
0x0001371c ldr r2, [pc, 0x290] |
0x0001371e add r3, pc | r3 = 0x270d0;
0x00013720 add r2, pc | r2 = 0x270d4;
0x00013722 bl 0xf1c4 | fcn_0000f1c4 (r0, r1, r2, r3, r4);
0x00013726 mov r0, r4 | r0 = r4;
0x00013728 blx 0x6744 | r0 = fprintf_chk ()
0x0001372c mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x0001372e cbz r0, 0x13788 | goto label_23;
| }
0x00013730 ldr.w sl, [pc, 0x280] |
0x00013734 ldr r3, [pc, 0x280] |
0x00013736 str r4, [sp, 8] | var_8h = r4;
0x00013738 add sl, pc |
0x0001373a add r3, pc | r3 = 0x270f6;
0x0001373c add.w sl, sl, 0x38 | sl = "set_door_hub_hardware_address";
0x00013740 mov r4, r3 | r4 = r3;
0x00013742 b 0x13752 |
| while (r7 != 0) {
0x00013744 mov r0, r7 | r0 = r7;
0x00013746 bl 0xc320 | r0 = fcn_0000c320 (r0);
0x0001374a cmp r0, 3 |
| if (r0 == 3) {
0x0001374c beq 0x13774 | goto label_24;
| }
| label_2:
0x0001374e ldr r5, [r5, 4] | r5 = *((r5 + 4));
| if (r5 == 0) {
0x00013750 cbz r5, 0x13786 | goto label_25;
| }
| label_3:
0x00013752 ldr r7, [r5] | r7 = *(r5);
0x00013754 cmp r7, 0 |
0x00013756 bne 0x13744 |
| }
0x00013758 ldr r3, [pc, 0x260] |
0x0001375a movs r2, 0xd6 | r2 = 0xd6;
0x0001375c mov r1, r4 | r1 = r4;
0x0001375e mov r0, r7 | r0 = r7;
0x00013760 add r3, pc | r3 = 0x27120;
0x00013762 str r3, [sp] | *(sp) = r3;
0x00013764 mov r3, sl | r3 = sl;
0x00013766 blx 0x6af4 | fcn_00006af4 ();
0x0001376a mov r0, r7 | r0 = r7;
0x0001376c bl 0xc320 | r0 = fcn_0000c320 (r0);
0x00013770 cmp r0, 3 |
| if (r0 != 3) {
0x00013772 bne 0x1374e | goto label_2;
| }
| label_24:
0x00013774 ldr r0, [sp, 0x28] | r0 = var_28h;
0x00013776 mov r1, r7 | r1 = r7;
0x00013778 mov r3, r6 | r3 = r6;
0x0001377a mov r2, sb | r2 = sb;
0x0001377c bl 0x11978 | fcn_00011978 (r0, r1, r2, r3);
0x00013780 ldr r5, [r5, 4] | r5 = *((r5 + 4));
0x00013782 cmp r5, 0 |
| if (r5 != 0) {
0x00013784 bne 0x13752 | goto label_3;
| }
| label_25:
0x00013786 ldr r4, [sp, 8] | r4 = var_8h;
| label_23:
0x00013788 ldr r0, [sp, 0x28] | r0 = var_28h;
0x0001378a bl 0x117fc | fcn_000117fc (r0);
0x0001378c invalid |
0x00013790 ldr r5, [sp, 0x10] | r5 = var_10h;
0x00013792 cmp r5, 0 |
| if (r5 == 0) {
0x00013794 beq.w 0x13934 | goto label_26;
| }
0x00013798 ldr r0, [sp, 0x28] | r0 = var_28h;
0x0001379a bl 0x117c8 | fcn_000117c8 ();
0x0001379e mov r1, r5 | r1 = r5;
0x000137a0 blx 0x6acc | fcn_00006acc ();
| label_10:
0x000137a4 ldr r0, [sp, 0x28] | r0 = var_28h;
0x000137a6 bl 0x117fc | r0 = fcn_000117fc (r0);
| if (r0 != 0) {
0x000137aa cbz r0, 0x137b0 |
0x000137ac ldr r3, [sp, 0x24] | r3 = var_24h;
| if (r3 == 0) {
0x000137ae cbz r3, 0x137ba | goto label_27;
| }
| }
0x000137b0 ldr r0, [sp, 0x28] | r0 = var_28h;
0x000137b2 bl 0x117c8 | fcn_000117c8 ();
0x000137b6 blx 0x651c | g_propagate_error ();
| label_27:
0x000137ba bl 0xbe60 | fcn_0000be60 ();
0x000137be mov r0, r4 | r0 = r4;
0x000137c0 movs r4, 0 | r4 = 0;
0x000137c2 blx 0x6710 | fcn_00006710 ();
0x000137c6 add r0, sp, 0x28 | r0 += var_28h;
0x000137c8 bl 0x11790 | fcn_00011790 (r0);
0x000137cc ldr r3, [sp, 0xc] | r3 = var_ch;
| if (r3 == 0) {
0x000137ce cbnz r3, 0x137f2 |
0x000137d0 mov r0, fp | r0 = fp;
0x000137d2 blx 0x6c20 | fcn_00006c20 ();
0x000137d6 ldr r0, [pc, 0x1e8] |
0x000137d8 mov r1, r8 | r1 = r8;
0x000137da add r0, pc | r0 = 0x271a0;
0x000137dc blx 0x6700 | fcn_00006700 ();
0x000137e0 blx 0x6bbc | fcn_00006bbc ();
0x000137e4 movs r1, 1 | r1 = 1;
0x000137e6 mov r3, r0 | r3 = r0;
0x000137e8 add r0, sp, 0x48 | r0 += var_48h;
0x000137ea str r3, [sp, 0x48] | var_48h = r3;
0x000137ec blx 0x663c | r0 = subscribe_expression_add_key_value ();
0x000137f0 mov r4, r0 | r4 = r0;
| }
0x000137f2 mov r0, r8 | r0 = r8;
0x000137f4 blx 0x67b4 | fcn_000067b4 ();
0x000137f8 ldr r2, [pc, 0x1c8] |
0x000137fa ldr r3, [pc, 0x188] | r3 = *(0x13986);
0x000137fc add r2, pc | r2 = "get_door_tcpip_port";
0x000137fe ldr r3, [r2, r3] | r3 = "get_door_tcpip_port";
0x00013800 ldr r2, [r3] | r2 = "get_door_tcpip_port";
0x00013802 ldr r3, [sp, 0x74] | r3 = var_74h;
0x00013804 eors r2, r3 | r2 ^= r3;
0x00013806 mov.w r3, 0 | r3 = 0;
0x00013808 lsls r0, r0, 0xc | r0 <<= 0xc;
| if (r0 != r0) {
0x0001380a bne.w 0x1397c | goto label_28;
| }
0x0001380e mov r0, r4 | r0 = r4;
0x00013810 add sp, 0x7c |
0x00013812 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_21:
0x00013816 ldr r3, [r7] | r3 = *(r7);
0x00013818 movs r1, 0x10 | r1 = 0x10;
0x0001381a ldr r2, [pc, 0x1ac] |
0x0001381c str r3, [sp] | *(sp) = r3;
0x0001381e ldr r3, [pc, 0x1ac] |
0x00013820 add r2, pc | r2 = 0x271ee;
0x00013822 add r3, pc | r3 = 0x271f4;
0x00013824 blx 0x65f4 | g_list_alloc ();
0x00013828 ldr r1, [pc, 0x1a4] |
0x0001382a mov r2, r5 | r2 = r5;
0x0001382c mov r0, r8 | r0 = r8;
0x0001382e add r1, pc | r1 = 0x27202;
0x00013830 blx 0x6f34 | fcn_00006f34 ();
0x00013832 invalid |
0x00013836 cmp r3, 0 |
| if (r3 == 0) {
0x00013838 beq.w 0x136f0 | goto label_4;
| }
0x0001383c b 0x13660 | goto label_0;
| label_19:
0x0001383e ldr r1, [sp, 0x24] | r1 = var_24h;
0x00013840 mov r0, fp | r0 = fp;
0x00013842 blx 0x6528 | pio_release_device_io ();
0x00013846 ldr.w r3, [fp] | r3 = *(fp);
0x0001384a movs r1, 0x40 | r1 = 0x40;
0x0001384c ldr r2, [pc, 0x184] |
0x0001384e mov r0, r5 | r0 = r5;
0x00013850 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00013852 add r2, pc | r2 = 0x2722a;
0x00013854 str r3, [sp] | *(sp) = r3;
0x00013856 ldr r3, [sp, 0x14] | r3 = var_14h_2;
0x00013858 blx 0x65f4 | g_list_alloc ();
0x0001385c str r5, [sp, 0x24] | var_24h = r5;
0x0001385e b 0x13680 | goto label_5;
| label_22:
0x00013860 mov r0, r5 | r0 = r5;
0x00013862 bl 0xd5a4 | fcn_0000d5a4 (r0, r1, r2, r3, r4);
0x00013866 str r0, [sp, 0x10] | var_10h = r0;
0x00013868 b 0x136d2 | goto label_6;
| label_18:
0x0001386a str r3, [sp, 0xc] | var_ch = r3;
0x0001386c b 0x13698 | goto label_7;
| label_14:
0x0001386e ldr r3, [pc, 0x168] |
0x00013870 mov r0, sl | r0 = sl;
0x00013872 ldr r2, [pc, 0x168] |
0x00013874 ldr r1, [pc, 0x168] |
0x00013876 add r3, pc | r3 = 0x27254;
0x00013878 add r2, pc | r2 = 0x2725a;
0x0001387a adds r3, 0x38 | r3 += 0x38;
0x0001387c str r2, [sp] | *(sp) = r2;
0x0001387e add r1, pc | r1 = 0x27262;
0x00013880 movs r2, 0x91 | r2 = 0x91;
0x00013882 blx 0x6af4 | fcn_00006af4 ();
0x00013886 cmp.w fp, 0 |
0x00013888 lsrs r0, r0, 0x1c | r0 >>= 0x1c;
| if (r0 != r0) {
0x0001388a bne.w 0x135e2 | goto label_8;
| }
| label_15:
0x0001388e ldr r3, [pc, 0x154] |
0x00013890 mov r0, fp | r0 = fp;
0x00013892 ldr r2, [pc, 0x154] |
0x00013894 ldr r1, [pc, 0x154] |
0x00013896 add r3, pc | r3 = 0x27280;
0x00013898 add r2, pc | r2 = 0x27286;
0x0001389a adds r3, 0x38 | r3 += 0x38;
0x0001389c str r2, [sp] | *(sp) = r2;
0x0001389e add r1, pc | r1 = 0x2728e;
0x000138a0 movs r2, 0x92 | r2 = 0x92;
0x000138a2 blx 0x6af4 | fcn_00006af4 ();
0x000138a6 b 0x135e2 | goto label_8;
| label_16:
0x000138a8 ldr r3, [sp, 8] | r3 = var_8h;
0x000138aa str r4, [sp, 0x48] | var_48h = r4;
| if (r3 == 0) {
0x000138ac cbz r3, 0x13914 | goto label_29;
| }
0x000138ae ldr.w r8, [pc, 0x140] |
0x000138b2 subs r7, 4 | r7 -= 4;
0x000138b4 ldr r6, [pc, 0x13c] |
0x000138b6 mov r5, r7 | r5 = r7;
0x000138b8 str.w sl, [sp, 0xc] | __asm ("str.w sl, [var_ch]");
0x000138bc add.w sb, sp, 0x48 | sb += var_48h;
0x000138c0 add r8, pc | r8 = 0x272b6;
0x000138c2 mov sl, r3 | sl = r3;
0x000138c4 add r6, pc | r6 = 0x272bc;
0x000138c6 str r7, [sp, 0x10] | var_10h = r7;
| do {
0x000138c8 ldr r0, [r5, 4]! | r0 = *((r5 += 4));
0x000138cc mov r1, sb | r1 = sb;
0x000138ce bl 0xbe70 | r0 = fcn_0000be70 (r0, r1);
0x000138d2 mov r7, r0 | r7 = r0;
| if (r0 != 0) {
0x000138d4 cbz r0, 0x138de |
0x000138d6 bl 0xdb4c | r0 = fcn_0000db4c (r0);
0x000138da cmp r0, 0 |
| if (r0 != 0) {
0x000138dc bne 0x13956 | goto label_30;
| }
| }
0x000138de ldr r3, [sp, 0x48] | r3 = var_48h;
| if (r3 != 0) {
0x000138e0 cbz r3, 0x138f8 |
0x000138e2 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x000138e4 movs r0, 0 | r0 = 0;
0x000138e6 mov r2, r6 | r2 = r6;
0x000138e8 movs r1, 0x10 | r1 = 0x10;
0x000138ea str r3, [sp] | *(sp) = r3;
0x000138ec mov r3, r8 | r3 = r8;
0x000138ee blx 0x65f4 | g_list_alloc ();
0x000138f2 mov r0, sb | r0 = sb;
0x000138f4 blx 0x6c20 | fcn_00006c20 ();
0x000138f6 invalid |
| }
0x000138f8 adds r4, 1 | r4++;
0x000138fa cmp sl, r4 |
0x000138fc bne 0x138c8 |
| } while (sl != r4);
0x000138fe ldr r0, [pc, 0xf8] |
0x00013900 movs r4, 0 | r4 = 0;
0x00013902 ldrd sl, r7, [sp, 0xc] | __asm ("ldrd sl, r7, [var_ch]");
0x00013906 add r0, pc | r0 = 0x27304;
0x00013908 blx 0x6494 | fcn_00006494 ();
0x0001390c blx 0x65a0 | r0 = durationstr2long ();
0x00013910 mov r8, r0 | r8 = r0;
0x00013912 b 0x13638 | goto label_9;
| label_29:
0x00013914 ldr r0, [pc, 0xe4] |
0x00013916 add r0, pc | r0 = 0x27316;
0x00013918 blx 0x6494 | fcn_00006494 ();
0x0001391c blx 0x65a0 | r0 = durationstr2long ();
0x00013920 mov r8, r0 | r8 = r0;
| label_17:
0x00013922 ldr r0, [sp, 0x28] | r0 = var_28h;
0x00013924 bl 0x117fc | fcn_000117fc (r0);
0x00013928 movs r3, 1 | r3 = 1;
0x0001392a ldr r4, [sp, 8] | r4 = var_8h;
0x0001392c str r3, [sp, 0xc] | var_ch = r3;
0x0001392e cmp r0, 0 |
| if (r0 == 0) {
0x00013930 beq.w 0x137a4 | goto label_10;
| }
| label_26:
0x00013934 ldr r3, [pc, 0xc8] |
0x00013936 movs r1, 8 | r1 = 8;
0x00013938 ldr r2, [pc, 0xc8] |
0x0001393a movs r0, 0 | r0 = 0;
0x0001393c add r3, pc | r3 = "event_is_declared_for_door";
0x0001393e add r2, pc | r2 = 0x27346;
0x00013940 blx 0x65f4 | g_list_alloc ();
0x00013944 bl 0x7530 | fcn_00007530 ();
0x00013948 ldr r2, [pc, 0xbc] |
0x0001394a movs r1, 1 | r1 = 1;
0x0001394c add r2, pc | r2 = 0x27358;
0x0001394e blx 0x68dc | daemon_retval_send ();
0x00013952 str r0, [sp, 0x24] | var_24h = r0;
0x00013954 b 0x137a4 | goto label_10;
| label_30:
0x00013956 mov r3, r7 | r3 = r7;
0x00013958 ldrd sl, r7, [sp, 0xc] | __asm ("ldrd sl, r7, [var_ch]");
0x0001395c mov r0, r3 | r0 = r3;
0x0001395e bl 0xdb08 | r0 = fcn_0000db08 (r0);
0x00013962 bl 0xeb80 | r0 = fcn_0000eb80 (r0);
0x00013966 bl 0xed9c | r0 = fcn_0000ed9c (r0);
0x0001396a mov r4, r0 | r4 = r0;
0x0001396c ldr r0, [pc, 0x9c] |
0x0001396e add r0, pc | r0 = 0x2737e;
0x00013970 blx 0x6494 | fcn_00006494 ();
0x00013974 blx 0x65a0 | r0 = durationstr2long ();
0x00013978 mov r8, r0 | r8 = r0;
0x0001397a b 0x13638 | goto label_9;
| label_28:
0x0001397c blx 0x6a6c | fcn_00006a6c ();
0x00013980 lsls r0, r7, 0x13 | r0 = r7 << 0x13;
0x00013982 movs r3, r0 | r3 = r0;
0x00013984 lsls r0, r3, 0x11 | r0 = r3 << 0x11;
0x00013986 movs r0, r0 |
0x00013988 ldr r4, [r6, 0x30] | r4 = *((r6 + 0x30));
0x0001398a movs r1, r0 | r1 = r0;
0x0001398c str r6, [r5, 0x20] | *((r5 + 0x20)) = r6;
0x0001398e movs r1, r0 | r1 = r0;
0x00013990 ldr r0, [r1, 0x14] | r0 = *((r1 + 0x14));
0x00013992 movs r1, r0 | r1 = r0;
0x00013994 ldr r4, [r2, 0x14] | r4 = *((r2 + 0x14));
0x00013996 movs r1, r0 | r1 = r0;
0x00013998 adds r6, r7, 1 | r6 = r7 + 1;
0x0001399a movs r1, r0 | r1 = r0;
0x0001399c ldr r4, [r6, 0x14] | r4 = *((r6 + 0x14));
0x0001399e movs r1, r0 | r1 = r0;
0x000139a0 adds r2, r6, 1 | r2 = r6 + 1;
0x000139a2 movs r1, r0 | r1 = r0;
0x000139a4 ldr r0, [r2, 0x14] | r0 = *((r2 + 0x14));
0x000139a6 movs r1, r0 | r1 = r0;
0x000139a8 ldr r2, [r7, 8] | r2 = *((r7 + 8));
0x000139aa movs r1, r0 | r1 = r0;
0x000139ac ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x000139ae movs r1, r0 | r1 = r0;
0x000139b0 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x000139b2 movs r1, r0 | r1 = r0;
0x000139b4 ldr r4, [r5, 0x1c] | r4 = *((r5 + 0x1c));
0x000139b6 movs r1, r0 | r1 = r0;
0x000139b8 ldr r6, [r0] | r6 = *(r0);
0x000139ba movs r1, r0 | r1 = r0;
0x000139bc adds r1, 0x2c | r1 += 0x2c;
0x000139be movs r1, r0 | r1 = r0;
0x000139c0 str r6, [r3, 0x78] | *((r3 + 0x78)) = r6;
0x000139c2 movs r1, r0 | r1 = r0;
0x000139c4 lsls r0, r0, 0xb | r0 <<= 0xb;
0x000139c6 movs r3, r0 | r3 = r0;
0x000139c8 str r4, [r7, 0x74] | *((r7 + 0x74)) = r4;
0x000139ca movs r1, r0 | r1 = r0;
0x000139cc subs r2, r3, r2 | r2 = r3 - r2;
0x000139ce movs r1, r0 | r1 = r0;
0x000139d0 str r2, [r5, 0x74] | *((r5 + 0x74)) = r2;
0x000139d2 movs r1, r0 | r1 = r0;
0x000139d4 str r2, [r6, 0x74] | *((r6 + 0x74)) = r2;
0x000139d6 movs r1, r0 | r1 = r0;
0x000139d8 ldr r6, [r5, 8] | r6 = *((r5 + 8));
0x000139da movs r1, r0 | r1 = r0;
0x000139dc str r4, [r2, 0x6c] | *((r2 + 0x6c)) = r4;
0x000139de movs r1, r0 | r1 = r0;
0x000139e0 str r2, [r0, 0x6c] | *((r0 + 0x6c)) = r2;
0x000139e2 movs r1, r0 | r1 = r0;
0x000139e4 ldr r6, [r1, 8] | r6 = *((r1 + 8));
0x000139e6 movs r1, r0 | r1 = r0;
0x000139e8 ldrsh r4, [r5, r5] | r4 = *((r5 + r5));
0x000139ea movs r1, r0 | r1 = r0;
0x000139ec str r2, [r4, 0x68] | *((r4 + 0x68)) = r2;
0x000139ee movs r1, r0 | r1 = r0;
0x000139f0 adds r4, r7, r7 | r4 = r7 + r7;
0x000139f2 movs r1, r0 | r1 = r0;
0x000139f4 str r0, [r7, 0x68] | *((r7 + 0x68)) = r0;
0x000139f6 movs r1, r0 | r1 = r0;
0x000139f8 str r2, [r6, 0x64] | *((r6 + 0x64)) = r2;
0x000139fa movs r1, r0 | r1 = r0;
0x000139fc str r2, [r4, 0x64] | *((r4 + 0x64)) = r2;
0x000139fe movs r1, r0 | r1 = r0;
0x00013a00 adds r0, r0, r6 | r0 += r6;
0x00013a02 movs r1, r0 | r1 = r0;
0x00013a04 str r6, [r0, 0x6c] | *((r0 + 0x6c)) = r6;
0x00013a06 movs r1, r0 | r1 = r0;
0x00013a08 str r4, [r5, 0x6c] | *((r5 + 0x6c)) = r4;
0x00013a0a movs r1, r0 | r1 = r0;
0x00013a0c str r2, [r1, 0x60] | *((r1 + 0x60)) = r2;
0x00013a0e movs r1, r0 | r1 = r0;
0x00013a10 ldr r2, [pc, 0x118] |
0x00013a12 ldr r3, [pc, 0x11c] | r3 = *(0x13b32);
0x00013a14 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00013a18 sub sp, 0x24 |
0x00013a1a add r2, pc | r2 = 0x2754a;
0x00013a1c mov sb, r1 | sb = r1;
0x00013a1e mov r4, r0 | r4 = r0;
0x00013a20 ldr r3, [r2, r3] |
0x00013a22 ldr r3, [r3] | r3 = *(0x2754a);
0x00013a24 str r3, [sp, 0x1c] | var_1ch = r3;
0x00013a26 mov.w r3, 0 | r3 = 0;
0x00013a2a bl 0x11788 | fcn_00011788 ();
0x00013a2e str r0, [sp, 0x14] | var_14h = r0;
0x00013a30 bl 0x117c8 | fcn_000117c8 ();
0x00013a34 blx 0x6728 | fcn_00006728 ();
0x00013a38 mov r0, r4 | r0 = r4;
0x00013a3a blx 0x6744 | r0 = fprintf_chk ()
0x00013a3e cmp r0, 0 |
| if (r0 == 0) {
0x00013a40 beq 0x13afe | goto label_31;
| }
0x00013a42 ldr r3, [pc, 0xf0] |
0x00013a44 mov r4, r0 | r4 = r0;
0x00013a46 ldr.w sl, [pc, 0xf0] | sl = fcn.00011868;
0x00013a4a mov.w r8, 0 | r8 = 0;
0x00013a4e add r7, sp, 0x18 | r7 += var_18h;
0x00013a50 add r3, pc | r3 = 0x2758a;
0x00013a52 str r3, [sp, 8] | var_8h_2 = r3;
0x00013a54 add sl, pc | sl += pc;
0x00013a56 ldr r3, [pc, 0xe4] |
0x00013a58 add r3, pc | r3 = 0x2759a;
0x00013a5a str r3, [sp, 0xc] | var_ch_2 = r3;
0x00013a5c b 0x13a7c |
| while (r2 != 0) {
0x00013a5e ldr r3, [r2, 8] | r3 = *((r2 + 8));
0x00013a60 mov r0, r6 | r0 = r6;
0x00013a62 ldr r2, [pc, 0xdc] |
0x00013a64 movs r1, 0x10 | r1 = 0x10;
0x00013a66 str r5, [sp] | *(sp) = r5;
0x00013a68 str r3, [sp, 4] | var_4h = r3;
0x00013a6a mov r3, sl | r3 = sl;
0x00013a6c add r2, pc | r2 = 0x275b2;
0x00013a6e blx 0x65f4 | g_list_alloc ();
0x00013a72 mov r0, r7 | r0 = r7;
0x00013a74 blx 0x6c20 | fcn_00006c20 ();
| label_11:
0x00013a78 ldr r4, [r4, 4] | r4 = *((r4 + 4));
| if (r4 == 0) {
0x00013a7a cbz r4, 0x13ab6 | goto label_32;
| }
| label_12:
0x00013a7c ldr r5, [r4] | r5 = *(r4);
0x00013a7e movs r6, 0 | r6 = 0;
0x00013a80 mov r1, r7 | r1 = r7;
0x00013a82 str r6, [sp, 0x18] | var_18h = r6;
0x00013a84 mov r0, r5 | r0 = r5;
0x00013a86 bl 0xbe70 | fcn_0000be70 (r0, r1);
0x00013a8a ldr r2, [sp, 0x18] | r2 = var_18h;
0x00013a8c mov fp, r0 |
0x00013a8e cmp r2, 0 |
0x00013a90 bne 0x13a5e |
| }
| if (r0 == 0) {
0x00013a92 cbz r0, 0x13af0 | goto label_33;
| }
0x00013a94 mov r1, sb | r1 = sb;
0x00013a96 bl 0x11a98 | fcn_00011a98 (r0, r1);
0x00013a9a ldr r0, [sp, 0x14] | r0 = var_14h;
0x00013a9c mov r1, fp | r1 = fp;
0x00013a9e bl 0x11a3c | fcn_00011a3c (r0, r1);
0x00013aa2 cmp.w r8, 0 |
| if (r8 != 0) {
0x00013aa6 bne 0x13a78 | goto label_11;
| }
0x00013aa8 mov r0, fp | r0 = fp;
0x00013aaa bl 0xd5a4 | fcn_0000d5a4 (r0, r1, r2, r3, r4);
0x00013aae ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x00013ab0 mov r8, r0 | r8 = r0;
0x00013ab2 cmp r4, 0 |
| if (r4 != 0) {
0x00013ab4 bne 0x13a7c | goto label_12;
| }
| label_32:
0x00013ab6 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00013ab8 bl 0x117fc | r0 = fcn_000117fc (r0);
| if (r0 == 0) {
0x00013abc cbz r0, 0x13ad0 | goto label_34;
| }
0x00013abe cmp.w r8, 0 |
| if (r8 == 0) {
0x00013ac2 beq 0x13b08 | goto label_35;
| }
| label_13:
0x00013ac4 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00013ac6 bl 0x117c8 | fcn_000117c8 ();
0x00013aca mov r1, r8 | r1 = r8;
0x00013acc blx 0x6acc | fcn_00006acc ();
| do {
| label_34:
0x00013ad0 add r0, sp, 0x14 | r0 += var_14h;
0x00013ad2 bl 0x11790 | fcn_00011790 (r0);
0x00013ad6 ldr r2, [pc, 0x6c] |
0x00013ad8 ldr r3, [pc, 0x54] | r3 = *(0x13b30);
0x00013ada add r2, pc | r2 = 0x27624;
0x00013adc ldr r3, [r2, r3] | r3 = *(0x27624);
0x00013ade ldr r2, [r3] | r2 = *(0x27624);
0x00013ae0 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00013ae2 eors r2, r3 | r2 ^= r3;
0x00013ae4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00013ae8 bne 0x13b28 | goto label_36;
| }
0x00013aea add sp, 0x24 |
0x00013aec pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_33:
0x00013af0 ldrd r3, r2, [sp, 8] | __asm ("ldrd r3, r2, [var_8h_2]");
0x00013af4 movs r1, 0x10 | r1 = 0x10;
0x00013af6 str r5, [sp] | *(sp) = r5;
0x00013af8 blx 0x65f4 | g_list_alloc ();
0x00013afc b 0x13a78 | goto label_11;
| label_31:
0x00013afe ldr r0, [sp, 0x14] | r0 = var_14h;
0x00013b00 bl 0x117fc | r0 = fcn_000117fc (r0);
0x00013b04 cmp r0, 0 |
0x00013b06 beq 0x13ad0 |
| } while (r0 == 0);
| label_35:
0x00013b08 ldr r3, [pc, 0x3c] |
0x00013b0a mov.w r8, 0 | r8 = 0;
0x00013b0e ldr r0, [pc, 0x3c] |
0x00013b10 movw r2, 0x11d | r2 = 0x11d;
0x00013b14 ldr r1, [pc, 0x38] |
0x00013b16 add r3, pc | r3 = 0x27662;
0x00013b18 add r0, pc | r0 = 0x2766a;
0x00013b1a adds r3, 0x58 | r3 += 0x58;
0x00013b1c str r0, [sp] | *(sp) = r0;
0x00013b1e add r1, pc | r1 = 0x27672;
0x00013b20 mov r0, r8 | r0 = r8;
0x00013b22 blx 0x6af4 | fcn_00006af4 ();
0x00013b26 b 0x13ac4 | goto label_13;
| label_36:
0x00013b28 blx 0x6a6c | fcn_00006a6c ();
0x00013b2c lsls r2, r4, 2 | r2 = r4 << 2;
0x00013b2e movs r3, r0 | r3 = r0;
0x00013b30 lsls r0, r3, 0x11 | r0 = r3 << 0x11;
0x00013b32 movs r0, r0 |
0x00013b34 adds r4, r5, r1 | r4 = r5 + r1;
0x00013b36 movs r1, r0 | r1 = r0;
0x00013b38 adds r0, r5, r1 | r0 = r5 + r1;
0x00013b3a movs r1, r0 | r1 = r0;
0x00013b3c str r0, [r5, 0x64] | *((r5 + 0x64)) = r0;
0x00013b3e movs r1, r0 | r1 = r0;
0x00013b40 str r4, [r2, 0x60] | *((r2 + 0x60)) = r4;
0x00013b42 movs r1, r0 | r1 = r0;
0x00013b44 vaddl.u32 q8, d2, d2 | __asm ("vaddl.u32 q8, d2, d2");
0x00013b48 str r6, [r1, 0x60] | *((r1 + 0x60)) = r6;
0x00013b4a movs r1, r0 | r1 = r0;
0x00013b4c str r0, [r6, 0x5c] | *((r6 + 0x5c)) = r0;
0x00013b4e movs r1, r0 | r1 = r0;
0x00013b50 str r2, [r4, 0x40] | *((r4 + 0x40)) = r2;
0x00013b52 movs r1, r0 | r1 = r0;
| }
[*] Function fprintf used 9 times doorcontrold