[*] Binary protection state of liblifecycle-machine.so.0.1.36
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function printf tear down of liblifecycle-machine.so.0.1.36
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/liblifecycle-machine.so.0.1.36 @ 0x6ff4 */
| #include <stdint.h>
|
; (fcn) sym.op_controller_internal_new () | void op_controller_internal_new (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int32_t var_0h;
| int32_t var_0h_2;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00006ff4 mvnsmi lr, sp, lsr 18 | __asm ("mvnsmi lr, sp, lsr 18");
0x00006ff8 sub sp, 8 |
0x00006ffa mov r7, r2 | r7 = r2;
0x00006ffc mov r6, r3 | r6 = r3;
0x00006ffe mov r5, r1 | r5 = r1;
0x00007000 mov r8, r0 | r8 = r0;
0x00007002 blx 0x55ac | fcn_000055ac ();
0x00007006 movs r1, 0 | r1 = 0;
0x00007008 blx 0x5024 | r0 = fcn_00005024 ();
0x0000700c mov r4, r0 | r4 = r0;
0x0000700e mov r0, r8 | r0 = r8;
0x00007010 blx 0x5018 | g_strdup_printf ()
0x00007014 str r0, [r4, 0x44] | *((r4 + 0x44)) = r0;
0x00007016 mov r0, r5 | r0 = r5;
0x00007018 blx 0x5070 | fcn_00005070 ();
0x0000701c str r0, [r4, 0x48] | *((r4 + 0x48)) = r0;
0x0000701e mov r0, r7 | r0 = r7;
0x00007020 blx 0x5070 | fcn_00005070 ();
0x00007024 str r0, [r4, 0x4c] | *((r4 + 0x4c)) = r0;
0x00007026 mov r0, r5 | r0 = r5;
0x00007028 blx 0x56c8 | fcn_000056c8 ();
0x0000702c str r0, [r4, 0x50] | *((r4 + 0x50)) = r0;
0x0000702e mov r0, r6 | r0 = r6;
0x00007030 blx 0x5070 | fcn_00005070 ();
0x00007034 ldr r2, [pc, 0x44] |
0x00007036 movs r5, 0 | r5 = 0;
0x00007038 ldr r1, [pc, 0x44] |
0x0000703a mov r3, r4 | r3 = r4;
0x0000703c str r0, [r4, 0x54] | *((r4 + 0x54)) = r0;
0x0000703e add r2, pc | r2 = 0xe0be;
0x00007040 strd r5, r5, [sp] | __asm ("strd r5, r5, [sp]");
0x00007044 add r1, pc | r1 = 0xe0c8;
0x00007046 blx 0x5400 | fcn_00005400 ();
0x0000704a ldr r2, [pc, 0x38] |
0x0000704c mov r3, r4 | r3 = r4;
0x0000704e ldr r1, [pc, 0x38] |
0x00007050 ldr r0, [r4, 0x54] | r0 = *((r4 + 0x54));
0x00007052 add r2, pc | r2 = 0xe0dc;
0x00007054 strd r5, r5, [sp] | __asm ("strd r5, r5, [sp]");
0x00007058 add r1, pc | r1 = 0xe0e6;
0x0000705a blx 0x5400 | fcn_00005400 ();
0x0000705e ldr r2, [pc, 0x2c] |
0x00007060 mov r3, r4 | r3 = r4;
0x00007062 ldr r1, [pc, 0x2c] |
0x00007064 ldr r0, [r4, 0x54] | r0 = *((r4 + 0x54));
0x00007066 add r2, pc | r2 = 0xe0f8;
0x00007068 strd r5, r5, [sp] | __asm ("strd r5, r5, [sp]");
0x0000706c add r1, pc | r1 = 0xe102;
0x0000706e blx 0x5400 | fcn_00005400 ();
0x00007070 strd r4, r6, [r8, 0x80] | __asm ("strd r4, r6, [r8, 0x80]");
0x00007074 add sp, 8 |
0x00007076 pop.w {r4, r5, r6, r7, r8, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/liblifecycle-machine.so.0.1.36 @ 0x7ca8 */
| #include <stdint.h>
|
; (fcn) sym.op_tracker_new () | void op_tracker_new (int16_t arg_20h, int16_t arg_24h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00007ca8 mvnsmi lr, sp, lsr 18 | __asm ("mvnsmi lr, sp, lsr 18");
0x00007cac mov r5, r1 | r5 = r1;
0x00007cae sub sp, 8 |
0x00007cb0 mov r7, r0 | r7 = r0;
0x00007cb2 mov r8, r2 | r8 = r2;
0x00007cb4 mov r6, r3 | r6 = r3;
0x00007cb6 blx 0x52cc | fcn_000052cc ();
0x00007cba cmp r5, 0 |
| if (r5 != 0) {
0x00007cbc beq 0x7d6a |
0x00007cbe ldr r3, [r5] | r3 = *(r5);
0x00007cc0 mov r1, r0 | r1 = r0;
| if (r3 != 0) {
0x00007cc2 cbz r3, 0x7cca |
0x00007cc4 ldr r3, [r3] | r3 = *(r3);
0x00007cc6 cmp r0, r3 |
| if (r0 == r3) {
0x00007cc8 beq 0x7cd4 | goto label_0;
| }
| }
0x00007cca mov r0, r5 | r0 = r5;
0x00007ccc blx 0x5374 | r0 = fcn_00005374 ();
0x00007cd0 cmp r0, 0 |
| if (r0 == 0) {
0x00007cd2 beq 0x7d6a | goto label_1;
| }
| label_0:
0x00007cd4 blx 0x5654 | fcn_00005654 ();
0x00007cd8 movs r1, 0 | r1 = 0;
0x00007cda blx 0x5024 | r0 = fcn_00005024 ();
0x00007cde mov r4, r0 | r4 = r0;
0x00007ce0 blx 0x52cc | r0 = fcn_000052cc ();
0x00007ce4 mov r1, r0 | r1 = r0;
0x00007ce6 mov r0, r5 | r0 = r5;
0x00007ce8 blx 0x5440 | fcn_00005440 ();
0x00007cec blx 0x54ac | fcn_000054ac ();
0x00007cf0 blx 0x4dbc | fcn_00004dbc ();
0x00007cf4 ldr r3, [sp, 0x20] | r3 = *(arg_20h);
0x00007cf6 str r0, [r4, 0x54] | *((r4 + 0x54)) = r0;
0x00007cf8 mov r0, r7 | r0 = r7;
0x00007cfa str r3, [r4, 0x58] | *((r4 + 0x58)) = r3;
0x00007cfc blx 0x5018 | g_strdup_printf ()
0x00007d00 str r0, [r4, 0x44] | *((r4 + 0x44)) = r0;
0x00007d02 mov r0, r8 | r0 = r8;
0x00007d04 blx 0x5070 | fcn_00005070 ();
0x00007d08 str r0, [r4, 0x48] | *((r4 + 0x48)) = r0;
0x00007d0a mov r0, r6 | r0 = r6;
0x00007d0c blx 0x5070 | fcn_00005070 ();
0x00007d10 str r0, [r4, 0x50] | *((r4 + 0x50)) = r0;
0x00007d12 ldr r0, [r4, 0x48] | r0 = *((r4 + 0x48));
0x00007d14 blx 0x4f24 | fcn_00004f24 ();
0x00007d16 invalid |
0x00007d1a str r0, [r4, 0x4c] | *((r4 + 0x4c)) = r0;
0x00007d1c mov r0, r4 | r0 = r4;
0x00007d1e str.w r3, [r4, 0x94] | __asm ("str.w r3, [r4, 0x94]");
0x00007d22 bl 0x7a24 | r0 = fcn_00007a24 (r0);
0x00007d26 ldrd r1, r0, [r4, 0x54] | __asm ("ldrd r1, r0, [r4, 0x54]");
0x00007d2a blx 0x4ca0 | r0 = condition_base_set_fulfilled ();
0x00007d2e mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x00007d30 cbz r0, 0x7d62 |
0x00007d32 ldr r2, [pc, 0x50] |
0x00007d34 movs r3, 2 | r3 = 2;
0x00007d36 ldrd r0, r1, [r4, 0x4c] | __asm ("ldrd r0, r1, [r4, 0x4c]");
0x00007d3a add r2, pc | r2 = 0xfac4;
0x00007d3c blx 0x53e8 | fcn_000053e8 ();
0x00007d40 ldr r7, [r4, 0x74] | r7 = *((r4 + 0x74));
0x00007d42 mov r6, r0 | r6 = r0;
0x00007d44 str.w r0, [r4, 0x9c] | __asm ("str.w r0, [r4, 0x9c]");
0x00007d48 blx 0x5338 | r0 = fcn_00005338 ();
0x00007d4c mov r1, r0 | r1 = r0;
0x00007d4e mov r0, r6 | r0 = r6;
0x00007d50 blx 0x5440 | r0 = fcn_00005440 ();
0x00007d54 mov r1, r0 | r1 = r0;
0x00007d56 mov r0, r7 | r0 = r7;
0x00007d58 blx 0x4f4c | fcn_00004f4c ();
0x00007d5c mov r0, r5 | r0 = r5;
0x00007d5e blx 0x4d8c | fcn_00004d8c ();
| }
0x00007d62 mov r0, r4 | r0 = r4;
0x00007d64 add sp, 8 |
0x00007d66 pop.w {r4, r5, r6, r7, r8, pc} |
| }
| label_1:
0x00007d6a ldr r4, [pc, 0x1c] |
0x00007d6c mov.w r2, 0x2d8 | r2 = 0x2d8;
0x00007d70 ldr r3, [pc, 0x18] |
0x00007d72 movs r0, 0 | r0 = 0;
0x00007d74 ldr r1, [pc, 0x18] |
0x00007d76 add r4, pc | r4 = 0xfb04;
0x00007d78 add r3, pc | r3 = 0xfb08;
0x00007d7a str r4, [sp] | *(sp) = r4;
0x00007d7c add r1, pc | r1 = 0xfb10;
0x00007d7e blx 0x500c | domain_contract_load_from_definition ();
0x00007d82 nop |
0x00007d84 movs r2, 0x6a | r2 = 0x6a;
0x00007d86 movs r0, r0 |
0x00007d88 movs r2, 0x12 | r2 = 0x12;
0x00007d8a movs r0, r0 |
0x00007d8c movs r3, 0x30 | r3 = 0x30;
0x00007d8e movs r0, r0 |
0x00007d90 movs r1, 0xc4 | r1 = 0xc4;
0x00007d92 movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/liblifecycle-machine.so.0.1.36 @ 0x9060 */
| #include <stdint.h>
|
; (fcn) sym.resource_lifecycle_new () | void resource_lifecycle_new (int16_t arg_20h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int32_t var_0h;
| int32_t var_0h_2;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00009060 mvnsmi lr, sp, lsr 18 | __asm ("mvnsmi lr, sp, lsr 18");
0x00009064 sub sp, 8 |
0x00009066 mov r5, r1 | r5 = r1;
0x00009068 mov r6, r3 | r6 = r3;
0x0000906a mov r7, r2 | r7 = r2;
0x0000906c mov r8, r0 | r8 = r0;
0x0000906e blx 0x51cc | fcn_000051cc ();
0x00009072 movs r1, 0 | r1 = 0;
0x00009074 blx 0x5024 | r0 = fcn_00005024 ();
0x00009078 mov r4, r0 | r4 = r0;
0x0000907a mov r0, r5 | r0 = r5;
0x0000907c blx 0x5018 | g_strdup_printf ()
0x00009080 mov r2, r7 | r2 = r7;
0x00009082 mov r3, r6 | r3 = r6;
0x00009084 mov r1, r5 | r1 = r5;
0x00009086 str r0, [r4, 0x44] | *((r4 + 0x44)) = r0;
0x00009088 mov r0, r8 | r0 = r8;
0x0000908a blx 0x5720 | fcn_00005720 ();
0x0000908e ldr r1, [r4, 0x5c] | r1 = *((r4 + 0x5c));
0x00009090 str r0, [r4, 0x48] | *((r4 + 0x48)) = r0;
0x00009092 blx 0x5054 | g_type_check_class_cast ();
0x00009096 ldr r0, [r4, 0x48] | r0 = *((r4 + 0x48));
0x00009098 blx 0x5768 | r0 = fcn_00005768 ();
0x0000909c mov r7, r0 | r7 = r0;
0x0000909e blx 0x5678 | comm_manager_get_channel ();
0x000090a2 ldrd ip, r2, [r4, 0x44] | __asm ("ldrd ip, r2, [r4, 0x44]");
0x000090a6 mov r3, r0 | r3 = r0;
0x000090a8 str r0, [r4, 0x54] | *((r4 + 0x54)) = r0;
0x000090aa mov r1, r8 | r1 = r8;
0x000090ac ldr r0, [sp, 0x20] | r0 = *(arg_20h);
0x000090ae strd r6, r0, [sp] | __asm ("strd r6, r0, [sp]");
0x000090b2 mov r0, ip | r0 = ip;
0x000090b4 blx 0x4e98 | r0 = ipc_data_create ();
0x000090b8 mov r3, r0 | r3 = r0;
0x000090ba ldr r2, [r4, 0x54] | r2 = *((r4 + 0x54));
0x000090bc mov r1, r7 | r1 = r7;
0x000090be mov r0, r5 | r0 = r5;
0x000090c0 str r3, [r4, 0x4c] | *((r4 + 0x4c)) = r3;
0x000090c2 blx 0x4c6c | fcn_00004c6c ();
0x000090c6 str r0, [r4, 0x50] | *((r4 + 0x50)) = r0;
0x000090c8 mov r0, r4 | r0 = r4;
0x000090ca add sp, 8 |
0x000090cc pop.w {r4, r5, r6, r7, r8, pc} |
| }
[*] Function printf used 4 times liblifecycle-machine.so.0.1.36