[*] Binary protection state of libschedcore.so
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function sprintf tear down of libschedcore.so
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libschedcore.so @ 0x23fc */
| #include <stdint.h>
|
; (fcn) sym.schedule_deserialize () | void schedule_deserialize (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch_2;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x000023fc mvnsmi lr, 0xb4000 | __asm ("mvnsmi lr, 0xb4000");
0x00002400 mov r8, r2 | r8 = r2;
0x00002402 ldr r2, [pc, 0xc4] |
0x00002404 sub sp, 0x14 |
0x00002406 mov r4, r1 | r4 = r1;
0x00002408 movs r6, 0 | r6 = 0;
0x0000240a ldr r3, [pc, 0xc0] | r3 = *(0x24ce);
0x0000240c add.w sb, sp, 8 | sb += var_8h;
0x00002410 add r2, pc | r2 = 0x48de;
0x00002412 mov r7, r0 | r7 = r0;
0x00002414 ldr r3, [r2, r3] |
0x00002416 ldr r3, [r3] | r3 = *(0x48de);
0x00002418 str r3, [sp, 0xc] | var_ch_2 = r3;
0x0000241a mov.w r3, 0 | r3 = 0;
0x0000241e str r6, [sp, 8] | var_8h = r6;
0x00002420 blx 0x176c | fcn_0000176c ();
0x00002424 mov r1, r4 | r1 = r4;
0x00002426 mov r3, sb | r3 = sb;
0x00002428 mov r2, r6 | r2 = r6;
0x0000242a mov r5, r0 | r5 = r0;
0x0000242c blx 0x1920 | r0 = fcn_00001920 ();
0x00002430 cmp r0, 0 |
| if (r0 == 0) {
0x00002432 beq 0x24b8 | goto label_1;
| }
0x00002434 ldr r4, [pc, 0x98] |
0x00002436 mov r3, r6 | r3 = r6;
0x00002438 ldr r2, [pc, 0x98] |
0x0000243a mov r0, r5 | r0 = r5;
0x0000243c add r4, pc | r4 = 0x4910;
0x0000243e mov r1, r4 | r1 = r4;
0x00002440 add r2, pc | r2 = 0x4918;
0x00002442 blx 0x173c | fcn_0000173c ();
0x00002446 ldr r2, [pc, 0x90] |
0x00002448 mov r1, r4 | r1 = r4;
0x0000244a mov r6, r0 | r6 = r0;
0x0000244c mov r3, sb | r3 = sb;
0x0000244e mov r0, r5 | r0 = r5;
0x00002450 add r2, pc | r2 = 0x492e;
0x00002452 blx 0x173c | r0 = fcn_0000173c ();
0x00002456 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x00002458 cbz r0, 0x24c4 | goto label_2;
| }
0x0000245a mov r0, r7 | r0 = r7;
0x0000245c mov r3, sb | r3 = sb;
0x0000245e mov r2, r4 | r2 = r4;
0x00002460 mov r1, r6 | r1 = r6;
0x00002462 blx 0x179c | r0 = fcn_0000179c ();
0x00002466 mov r7, r0 | r7 = r0;
| do {
| label_0:
0x00002468 ldr r3, [sp, 8] | r3 = var_8h;
| if (r3 != 0) {
0x0000246a cbz r3, 0x248a |
0x0000246c blx 0x1784 | fcn_00001784 ();
0x00002470 ldr r3, [sp, 8] | r3 = var_8h;
0x00002472 mov r1, r0 | r1 = r0;
0x00002474 movs r2, 1 | r2 = 1;
0x00002476 mov r0, r8 | r0 = r8;
0x00002478 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x0000247a str r3, [sp] | *(sp) = r3;
0x0000247c ldr r3, [pc, 0x5c] |
0x0000247e add r3, pc | r3 = 0x495e;
0x00002480 blx 0x18ac | g_date_get_year ();
0x00002484 ldr r0, [sp, 8] | r0 = var_8h;
0x00002486 blx 0x19fc | g_sprintf ()
| }
0x0000248a mov r0, r5 | r0 = r5;
0x0000248c blx 0x19e4 | g_error_free ();
0x00002490 mov r0, r6 | r0 = r6;
0x00002492 blx 0x16f4 | fcn_000016f4 ();
0x00002496 mov r0, r4 | r0 = r4;
0x00002498 blx 0x16f4 | fcn_000016f4 ();
0x0000249c ldr r2, [pc, 0x40] |
0x0000249e ldr r3, [pc, 0x2c] | r3 = *(0x24ce);
0x000024a0 add r2, pc | r2 = 0x4984;
0x000024a2 ldr r3, [r2, r3] | r3 = *(0x4984);
0x000024a4 ldr r2, [r3] | r2 = *(0x4984);
0x000024a6 ldr r3, [sp, 0xc] | r3 = var_ch_2;
0x000024a8 eors r2, r3 | r2 ^= r3;
0x000024aa mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000024ae bne 0x24c0 | goto label_3;
| }
0x000024b0 mov r0, r7 | r0 = r7;
0x000024b2 add sp, 0x14 |
0x000024b4 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_1:
0x000024b8 mov r4, r0 | r4 = r0;
0x000024ba mov r6, r0 | r6 = r0;
0x000024bc mov r7, r0 | r7 = r0;
0x000024be b 0x2468 |
| } while (1);
| label_3:
0x000024c0 blx 0x192c | r0 = fcn_0000192c ();
| label_2:
0x000024c4 mov r7, r0 | r7 = r0;
0x000024c6 b 0x2468 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libschedcore.so @ 0x22fc */
| #include <stdint.h>
|
; (fcn) sym.schedule_serialize () | void schedule_serialize (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h_2;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x000022fc push.w {r4, r5, r6, r7, r8, lr} |
0x00002300 mov r8, r1 | r8 = r1;
0x00002302 ldr r1, [pc, 0xd4] |
0x00002304 mov r7, r2 | r7 = r2;
0x00002306 sub sp, 0x18 |
0x00002308 movs r3, 0 | r3 = 0;
0x0000230a ldr r2, [pc, 0xd0] | r2 = *(0x23de);
0x0000230c mov r5, r0 | r5 = r0;
0x0000230e add r1, pc | r1 = 0x46ec;
0x00002310 ldr r2, [r1, r2] |
0x00002312 ldr r2, [r2] | r2 = *(0x46ec);
0x00002314 str r2, [sp, 0x14] | var_14h = r2;
0x00002316 mov.w r2, 0 | r2 = 0;
0x0000231a str r3, [sp, 0xc] | var_ch = r3;
0x0000231c blx 0x176c | fcn_0000176c ();
0x00002320 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x00002322 mov r4, r0 | r4 = r0;
| if (r3 != 0) {
0x00002324 cbz r3, 0x2332 |
0x00002326 ldr r2, [pc, 0xb8] |
0x00002328 ldr r1, [pc, 0xb8] |
0x0000232a add r2, pc | r2 = 0x4710;
0x0000232c add r1, pc | r1 = 0x4714;
0x0000232e blx 0x1790 | fcn_00001790 ();
| }
0x00002332 ldr r2, [pc, 0xb4] |
0x00002334 mov r0, r4 | r0 = r4;
0x00002336 ldr r1, [pc, 0xb4] |
0x00002338 add r6, sp, 0xc | r6 += var_ch;
0x0000233a ldr r3, [r5, 0x14] | r3 = *((r5 + 0x14));
0x0000233c add r2, pc | r2 = 0x472a;
0x0000233e add r1, pc | r1 = 0x4730;
0x00002340 blx 0x1790 | fcn_00001790 ();
0x00002344 mov r2, r6 | r2 = r6;
0x00002346 add r1, sp, 0x10 | r1 += var_10h;
0x00002348 mov r0, r4 | r0 = r4;
0x0000234a blx 0x1870 | r0 = g_date_valid_dmy ();
0x0000234e mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x00002350 cbz r0, 0x23ae | goto label_0;
| }
0x00002352 mov r3, r6 | r3 = r6;
0x00002354 ldr r2, [sp, 0x10] | r2 = var_10h;
0x00002356 mov r0, r8 | r0 = r8;
0x00002358 mov r1, r5 | r1 = r5;
0x0000235a blx 0x19c0 | g_list_first ();
0x0000235e ldr r3, [sp, 0xc] | r3 = var_ch;
0x00002360 mov r6, r0 | r6 = r0;
| if (r0 != 0) {
0x00002362 cbz r0, 0x2366 |
0x00002364 movs r6, 1 | r6 = 1;
| }
| if (r3 != 0) {
0x00002366 cbz r3, 0x2386 |
0x00002368 blx 0x1784 | fcn_00001784 ();
0x0000236c ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000236e mov r1, r0 | r1 = r0;
0x00002370 movs r2, 1 | r2 = 1;
0x00002372 mov r0, r7 | r0 = r7;
0x00002374 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00002376 str r3, [sp] | *(sp) = r3;
0x00002378 ldr r3, [pc, 0x74] |
0x0000237a add r3, pc | r3 = 0x476e;
0x0000237c blx 0x18ac | g_date_get_year ();
0x00002380 ldr r0, [sp, 0xc] | r0 = var_ch;
0x00002382 blx 0x19fc | g_sprintf ()
| }
0x00002386 mov r0, r5 | r0 = r5;
0x00002388 blx 0x16f4 | fcn_000016f4 ();
| do {
0x0000238c mov r0, r4 | r0 = r4;
0x0000238e blx 0x19e4 | g_error_free ();
0x00002392 ldr r2, [pc, 0x60] |
0x00002394 ldr r3, [pc, 0x44] | r3 = *(0x23dc);
0x00002396 add r2, pc | r2 = 0x4790;
0x00002398 ldr r3, [r2, r3] | r3 = *(0x4790);
0x0000239a ldr r2, [r3] | r2 = *(0x4790);
0x0000239c ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000239e eors r2, r3 | r2 ^= r3;
0x000023a0 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000023a4 bne 0x23d4 | goto label_1;
| }
0x000023a6 mov r0, r6 | r0 = r6;
0x000023a8 add sp, 0x18 |
0x000023aa pop.w {r4, r5, r6, r7, r8, pc} |
| label_0:
0x000023ae ldr r3, [sp, 0xc] | r3 = var_ch;
| if (r3 != 0) {
0x000023b0 cbz r3, 0x23d0 |
0x000023b2 blx 0x1784 | fcn_00001784 ();
0x000023b6 ldr r2, [sp, 0xc] | r2 = var_ch;
0x000023b8 mov r1, r0 | r1 = r0;
0x000023ba ldr r3, [pc, 0x3c] |
0x000023bc mov r0, r7 | r0 = r7;
0x000023be ldr r2, [r2, 8] | r2 = *((r2 + 8));
0x000023c0 add r3, pc | r3 = 0x47be;
0x000023c2 str r2, [sp] | *(sp) = r2;
0x000023c4 movs r2, 1 | r2 = 1;
0x000023c6 blx 0x18ac | g_date_get_year ();
0x000023ca ldr r0, [sp, 0xc] | r0 = var_ch;
0x000023cc blx 0x19fc | g_sprintf ()
| }
0x000023d0 movs r6, 0 | r6 = 0;
0x000023d2 b 0x238c |
| } while (1);
| label_1:
0x000023d4 blx 0x192c | fcn_0000192c ();
0x000023d8 cmp r3, 0x9a |
0x000023da movs r0, r0 |
0x000023dc lsls r0, r1, 5 | r0 = r1 << 5;
0x000023de movs r0, r0 |
0x000023e0 lsrs r2, r5, 0x11 | r2 = r5 >> 0x11;
0x000023e2 movs r0, r0 |
0x000023e4 lsrs r0, r6, 0x11 | r0 = r6 >> 0x11;
0x000023e6 movs r0, r0 |
0x000023e8 lsrs r0, r6, 0x11 | r0 = r6 >> 0x11;
0x000023ea movs r0, r0 |
0x000023ec lsrs r6, r3, 0x11 | r6 = r3 >> 0x11;
0x000023ee movs r0, r0 |
0x000023f0 lsrs r2, r7, 0x10 | r2 = r7 >> 0x10;
0x000023f2 movs r0, r0 |
0x000023f4 cmp r3, 0x12 |
0x000023f6 movs r0, r0 |
0x000023f8 lsrs r4, r6, 0xf | r4 = r6 >> 0xf;
0x000023fa movs r0, r0 |
| }
[*] Function sprintf used 4 times libschedcore.so