[*] Binary protection state of libloggen_plugin-3.38.so.0.0.0
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function printf tear down of libloggen_plugin-3.38.so.0.0.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/libloggen_plugin-3.38.so.0.0.0 @ 0x7f8 */
| #include <stdint.h>
|
; (fcn) sym.thread_check_exit_criteria () | void thread_check_exit_criteria (int16_t arg1) {
| int16_t var_0h;
| int16_t var_4h_2;
| int16_t var_ch;
| int16_t var_14h;
| r0 = arg1;
0x000007f8 blmi 0xfd30f8 | __asm ("blmi 0xfd30f8");
0x000007fc push {r4, r5, r6, lr} |
0x000007fe sub sp, 0x18 |
0x00000800 add r2, pc | r2 += pc;
0x00000802 ldr r6, [pc, 0xf8] |
0x00000804 mov r4, r0 | r4 = r0;
0x00000806 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00000808 add r6, pc | r6 = 0x110a;
0x0000080a ldr r3, [r3] | r3 = *(r3);
0x0000080c str r3, [sp, 0x14] | var_14h = r3;
0x0000080e mov.w r3, 0 | r3 = 0;
0x00000812 ldr r3, [r0] | r3 = *(r0);
0x00000814 ldr r3, [r3, 8] | r3 = *((r3 + 8));
| if (r3 != 0) {
0x00000816 cbz r3, 0x81e |
0x00000818 ldr r2, [r0, 8] | r2 = *((r0 + 8));
0x0000081a cmp r3, r2 |
| if (r3 <= r2) {
0x0000081c ble 0x8b0 | goto label_1;
| }
| }
0x0000081e add r5, sp, 0xc | r5 += var_ch;
0x00000820 movs r1, 0 | r1 = 0;
0x00000822 mov r0, r5 | r0 = r5;
0x00000824 blx 0x690 | gettimeofday ();
0x00000828 ldr r3, [r4] | r3 = *(r4);
0x0000082a ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x0000082c cbz r3, 0x848 |
| while (r2 <= r3) {
0x0000082e movs r0, 0 | r0 = 0;
| label_0:
0x00000830 ldr r2, [pc, 0xcc] |
0x00000832 ldr r3, [pc, 0xc4] | r3 = *(0x8fa);
0x00000834 add r2, pc | r2 = 0x1138;
0x00000836 ldr r3, [r2, r3] | r3 = *(0x1138);
0x00000838 ldr r2, [r3] | r2 = *(0x1138);
0x0000083a ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000083c eors r2, r3 | r2 ^= r3;
0x0000083e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00000842 bne 0x8ee | goto label_2;
| }
0x00000844 add sp, 0x18 |
0x00000846 pop {r4, r5, r6, pc} |
0x00000848 add.w r1, r4, 0xc | r1 = r4 + 0xc;
0x0000084c mov r0, r5 | r0 = r5;
0x0000084e blx 0x6cc | time_val_diff_in_sec ();
0x00000852 ldr r3, [r4] | r3 = *(r4);
0x00000854 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00000856 vmov s15, r3 | __asm ("vmov s15, r3");
0x0000085a vcvt.f64.s32 d16, s15 | __asm ("vcvt.f64.s32 d16, s15");
0x0000085e vcmpe.f64 d0, d16 | __asm ("vcmpe.f64 d0, d16");
0x00000862 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
0x00000866 ble 0x82e |
| }
0x00000868 blx 0x69c | r0 = get_debug_level ();
| if (r0 == 0) {
0x0000086c cbz r0, 0x8b6 | goto label_3;
| }
0x0000086e ldr r0, [pc, 0x94] |
0x00000870 add r0, pc | r0 = 0x117a;
0x00000872 blx 0x6a8 | g_path_get_basename ();
0x00000876 ldr r3, [pc, 0x90] | r3 = *(0x90a);
0x00000878 movs r2, 0x33 | r2 = 0x33;
0x0000087a ldr r1, [pc, 0x90] |
0x0000087c mov r5, r0 | r5 = r0;
0x0000087e ldr r6, [r6, r3] | r6 = *((r6 + r3));
0x00000880 mov r3, r0 | r3 = r0;
0x00000882 str r2, [sp, 4] | var_4h_2 = r2;
0x00000884 add r1, pc |
0x00000886 ldr r2, [pc, 0x88] |
0x00000888 str r1, [sp] | *(sp) = r1;
0x0000088a movs r1, 1 | r1 = 1;
0x0000088c ldr r0, [r6] | r0 = *(r6);
0x0000088e add r2, pc | r2 = 0x11a4;
0x00000890 blx 0x6b4 | fprintf_chk ()
0x00000894 ldr r1, [r4] | r1 = *(r4);
0x00000896 ldr r2, [pc, 0x7c] |
0x00000898 ldr r0, [r6] | r0 = *(r6);
0x0000089a ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0000089c ldr r1, [r1, 4] | r1 = *(0x119a);
0x0000089e add r2, pc | r2 = 0x11b8;
| do {
0x000008a0 str r1, [sp] | *(sp) = r1;
0x000008a2 movs r1, 1 | r1 = 1;
0x000008a4 blx 0x6b4 | fprintf_chk ()
0x000008a8 mov r0, r5 | r0 = r5;
0x000008aa blx 0x6e4 | g_free ();
0x000008ae b 0x8b6 | goto label_3;
| label_1:
0x000008b0 blx 0x69c | r0 = get_debug_level ();
| if (r0 == 0) {
0x000008b4 cbnz r0, 0x8ba |
| label_3:
0x000008b6 movs r0, 1 | r0 = 1;
0x000008b8 b 0x830 | goto label_0;
| }
0x000008ba ldr r0, [pc, 0x5c] |
0x000008bc add r0, pc | r0 = 0x11da;
0x000008be blx 0x6a8 | g_path_get_basename ();
0x000008c2 ldr r3, [pc, 0x44] | r3 = *(0x90a);
0x000008c4 movs r2, 0x28 | r2 = 0x28;
0x000008c6 movs r1, 1 | r1 = 1;
0x000008c8 mov r5, r0 | r5 = r0;
0x000008ca ldr r6, [r6, r3] | r6 = *((r6 + r3));
0x000008cc mov r3, r0 | r3 = r0;
0x000008ce str r2, [sp, 4] | var_4h_2 = r2;
0x000008d0 ldr r2, [pc, 0x48] |
0x000008d2 add r2, pc | r2 = 0x11f2;
0x000008d4 str r2, [sp] | *(sp) = r2;
0x000008d6 ldr r2, [pc, 0x48] |
0x000008d8 ldr r0, [r6] | r0 = *(r6);
0x000008da add r2, pc | r2 = 0x1200;
0x000008dc blx 0x6b4 | fprintf_chk ()
0x000008e0 ldr r1, [r4] | r1 = *(r4);
0x000008e2 ldr r2, [pc, 0x40] |
0x000008e4 ldr r0, [r6] | r0 = *(r6);
0x000008e6 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000008e8 ldr r1, [r1, 8] | r1 = *((r1 + 8));
0x000008ea add r2, pc | r2 = 0x1214;
0x000008ec b 0x8a0 |
| } while (1);
| label_2:
0x000008ee blx 0x6d8 | stack_chk_fail ();
0x000008f2 nop |
0x000008f4 asrs r4, r4, 0x1e | r4 >>= 0x1e;
0x000008f6 movs r0, r0 |
0x000008f8 lsls r0, r0, 1 | r0 <<= 1;
0x000008fa movs r0, r0 |
0x000008fc asrs r4, r3, 0x1e | r4 = r3 >> 0x1e;
0x000008fe movs r0, r0 |
0x00000900 asrs r0, r6, 0x1d | r0 = r6 >> 0x1d;
0x00000902 movs r0, r0 |
0x00000904 lsls r0, r3, 0x14 | r0 = r3 << 0x14;
0x00000906 movs r0, r0 |
0x00000908 lsls r4, r0, 1 | r4 = r0 << 1;
0x0000090a movs r0, r0 |
0x0000090c lsls r0, r1, 0x17 | r0 = r1 << 0x17;
0x0000090e movs r0, r0 |
0x00000910 lsls r2, r7, 0x14 | r2 = r7 << 0x14;
0x00000912 movs r0, r0 |
0x00000914 lsls r2, r0, 0x16 | r2 = r0 << 0x16;
0x00000916 movs r0, r0 |
0x00000918 lsls r4, r1, 0x13 | r4 = r1 << 0x13;
0x0000091a movs r0, r0 |
0x0000091c lsls r2, r7, 0x15 | r2 = r7 << 0x15;
0x0000091e movs r0, r0 |
0x00000920 lsls r6, r5, 0x13 | r6 = r5 << 0x13;
0x00000922 movs r0, r0 |
0x00000924 lsls r2, r6, 0x13 | r2 = r6 << 0x13;
0x00000926 movs r0, r0 |
| }
[*] Function printf used 4 times libloggen_plugin-3.38.so.0.0.0