[*] Binary protection state of libimpl_wsd_tev.so
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function printf tear down of libimpl_wsd_tev.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/libimpl_wsd_tev.so @ 0x48d8 */
| #include <stdint.h>
|
; (fcn) fcn.000048d8 () | void fcn_000048d8 (int16_t arg_28h, int16_t arg_2ch, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000048d8 push.w {r4, r5, r6, r7, r8, sb, lr} |
0x000048dc add.w sb, r0, 8 | sb = r0 + 8;
0x000048e0 sub sp, 0xc |
0x000048e2 mov r4, r0 | r4 = r0;
0x000048e4 mov r0, sb | r0 = sb;
0x000048e6 mov r7, r1 | r7 = r1;
0x000048e8 mov r6, r2 | r6 = r2;
0x000048ea mov r8, r3 | r8 = r3;
0x000048ec blx 0x2a54 | fcn_00002a54 ();
0x000048f0 bl 0x2d80 | r0 = fcn_00002d80 ();
0x000048f4 mov r5, r0 | r5 = r0;
0x000048f6 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x000048f8 blx 0x2744 | r0 = fcn_00002744 ();
0x000048fc cmp r0, r5 |
0x000048fe it hs |
| if (r0 < r5) {
0x00004900 movhs r4, 0 | r4 = 0;
| }
| if (r0 > r5) {
0x00004902 blo 0x4912 |
0x00004904 mov r0, sb | r0 = sb;
0x00004906 blx 0x2784 | fcn_00002784 ();
0x0000490a mov r0, r4 | r0 = r4;
0x0000490c add sp, 0xc |
0x0000490e pop.w {r4, r5, r6, r7, r8, sb, pc} |
| }
0x00004912 movs r0, 0 | r0 = 0;
0x00004914 blx 0x2968 | g_key_file_load_from_file ();
0x00004916 invalid |
0x0000491a adds r1, r0, r6 | r1 = r0 + r6;
0x0000491c mov r2, r7 | r2 = r7;
0x0000491e mov r0, r4 | r0 = r4;
0x00004920 bl 0x4304 | fcn_00004304 (r0, r1, r2, r3);
0x00004924 ldr r3, [pc, 0x70] |
0x00004926 mov r5, r0 | r5 = r0;
0x00004928 ldr r2, [pc, 0x70] |
0x0000492a mov r1, r7 | r1 = r7;
0x0000492c str r0, [sp] | *(sp) = r0;
0x0000492e add r3, pc | r3 = 0x92ca;
0x00004930 ldr r0, [r4] | r0 = *(r4);
0x00004932 add r2, pc | r2 = 0x92d2;
0x00004934 blx 0x2920 | r0 = loc_imp_soap_delete ();
0x00004938 mov r1, r0 | r1 = r0;
0x0000493a mov r0, r5 | r0 = r5;
0x0000493c bl 0x43bc | fcn_000043bc (r0, r1);
0x00004940 ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x00004942 mov r0, r5 | r0 = r5;
0x00004944 bl 0x43c8 | fcn_000043c8 (r0);
0x00004948 mov r2, r5 | r2 = r5;
0x0000494a mov r1, r0 | r1 = r0;
0x0000494c mov r0, r4 | r0 = r4;
0x0000494e blx 0x25c0 | g_list_free ();
0x00004952 ldr r1, [pc, 0x4c] |
0x00004954 mov r2, r5 | r2 = r5;
0x00004956 mov r0, r6 | r0 = r6;
0x00004958 add r1, pc | r1 = 0x92fe;
0x0000495a blx 0x26d4 | r0 = g_strdup_printf ()
0x0000495e mov r1, r0 | r1 = r0;
0x00004960 mov r0, r5 | r0 = r5;
0x00004962 bl 0x4464 | fcn_00004464 (r0, r1);
0x00004966 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00004968 cbnz r3, 0x4990 |
| while (1) {
0x0000496a cmp.w r8, 0 |
| if (r8 != 0) {
0x0000496e beq 0x497a |
0x00004970 mov r0, r5 | r0 = r5;
0x00004972 bl 0x43c8 | fcn_000043c8 (r0);
0x00004976 str.w r0, [r8] | __asm ("str.w r0, [r8]");
| }
0x0000497a ldr r3, [sp, 0x28] | r3 = *(arg_28h);
| if (r3 != 0) {
0x0000497c cbz r3, 0x4980 |
0x0000497e str r5, [r3] | *(r3) = r5;
| }
0x00004980 mov r0, sb | r0 = sb;
0x00004982 movs r4, 1 | r4 = 1;
0x00004984 blx 0x2784 | fcn_00002784 ();
0x00004988 mov r0, r4 | r0 = r4;
0x0000498a add sp, 0xc |
0x0000498c pop.w {r4, r5, r6, r7, r8, sb, pc} |
0x00004990 mov r0, r5 | r0 = r5;
0x00004992 bl 0x43e8 | fcn_000043e8 (r0);
0x00004996 b 0x496a |
| }
| }
[*] Function printf used 2 times libimpl_wsd_tev.so