[*] Binary protection state of libapac.so.0.0.1
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function printf tear down of libapac.so.0.0.1
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libapac.so.0.0.1 @ 0x13a4 */
| #include <stdint.h>
|
; (fcn) sym.apac_get_user_name_from_sender () | void apac_get_user_name_from_sender (uint32_t arg1, int16_t arg2) {
| int16_t var_14h;
| int16_t var_33ch;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_1ch;
| r0 = arg1;
| r1 = arg2;
0x000013a4 blmi 0x1353cdc | __asm ("blmi 0x1353cdc");
0x000013a8 push.w {r4, r5, r6, r7, r8, lr} |
0x000013ac sub sp, 0x20 |
0x000013ae add r2, pc | r2 += pc;
0x000013b0 ldr r7, [pc, 0x12c] |
0x000013b2 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000013b4 add r7, pc | r7 = 0x2898;
0x000013b6 ldr r3, [r3] | r3 = *(r3);
0x000013b8 str r3, [sp, 0x1c] | var_1ch = r3;
0x000013ba mov.w r3, 0 | r3 = 0;
0x000013be ldr r3, [r7] | r3 = *(0x2898);
0x000013c0 cmp r3, 0 |
| if (r3 == 0) {
0x000013c2 beq 0x1442 | goto label_2;
| }
0x000013c4 mov r4, r0 | r4 = r0;
0x000013c6 cmp r0, 0 |
| if (r0 == 0) {
0x000013c8 beq 0x1452 | goto label_3;
| }
0x000013ca add.w r8, sp, 0xc | r8 += var_ch;
0x000013ce mov r6, r1 | r6 = r1;
0x000013d0 mov r0, r8 | r0 = r8;
0x000013d2 blx 0xbec | fcn_00000bec ();
0x000013d6 ldr r3, [r7] | r3 = *(r7);
0x000013d8 mov r2, r8 | r2 = r8;
0x000013da mov r1, r4 | r1 = r4;
0x000013dc ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x000013de blx 0xc1c | r0 = fcn_00000c1c ();
0x000013e2 adds r3, r0, 1 | r3 = r0 + 1;
0x000013e4 mov r5, r0 | r5 = r0;
| if (r3 == r0) {
0x000013e6 beq 0x146e | goto label_4;
| }
0x000013e8 blx 0xc7c | fcn_00000c7c ();
0x000013ec movs r3, 0 | r3 = 0;
0x000013ee mov r4, r0 | r4 = r0;
0x000013f0 str r3, [r0] | *(r0) = r3;
0x000013f2 mov r0, r5 | r0 = r5;
0x000013f4 blx 0xb50 | r0 = fcn_00000b50 ();
0x000013f8 cmp r0, 0 |
| if (r0 == 0) {
0x000013fa beq 0x1498 | goto label_5;
| }
0x000013fc ldr r0, [r0] | r0 = *(r0);
| if (r0 == 0) {
0x000013fe cbz r0, 0x1422 | goto label_6;
| }
0x00001400 ldrb r3, [r0] | r3 = *(r0);
| if (r3 == 0) {
0x00001402 cbz r3, 0x1422 | goto label_6;
| }
0x00001404 blx 0xabc | g_strdup ();
| do {
0x00001408 ldr r2, [pc, 0xd8] |
0x0000140a ldr r3, [pc, 0xd0] | r3 = *(0x14de);
0x0000140c add r2, pc | r2 = 0x28f4;
0x0000140e ldr r3, [r2, r3] | r3 = *(0x28f4);
0x00001410 ldr r2, [r3] | r2 = *(0x28f4);
0x00001412 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00001414 eors r2, r3 | r2 ^= r3;
0x00001416 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000141a bne 0x14d2 | goto label_7;
| }
0x0000141c add sp, 0x20 |
0x0000141e pop.w {r4, r5, r6, r7, r8, pc} |
| label_6:
0x00001422 ldr r4, [pc, 0xc4] |
0x00001424 add r4, pc | r4 = 0x2912;
0x00001426 ldr r1, [r4, 4] | r1 = *(0x2916);
| if (r1 == 0) {
0x00001428 cbz r1, 0x1460 | goto label_8;
| }
| label_1:
0x0000142a ldr r2, [pc, 0xc0] |
0x0000142c mov r0, r6 | r0 = r6;
0x0000142e ldr r3, [pc, 0xc0] |
0x00001430 add r2, pc | r2 = 0x2922;
0x00001432 strd r5, r2, [sp] | __asm ("strd r5, r2, [sp]");
0x00001436 add r3, pc | r3 = 0x292c;
0x00001438 movs r2, 3 | r2 = 3;
0x0000143a blx 0xb74 | fcn_00000b74 ();
| label_0:
0x0000143e movs r0, 0 | r0 = 0;
0x00001440 b 0x1408 |
| } while (1);
| label_2:
0x00001442 ldr r2, [pc, 0xb0] |
0x00001444 mov r0, r3 | r0 = r3;
0x00001446 ldr r1, [pc, 0xb0] |
0x00001448 add r2, pc | r2 = 0x2942;
0x0000144a add r1, pc | r1 = 0x2948;
0x0000144c blx 0xb5c | fcn_00000b5c ();
0x00001450 b 0x143e | goto label_0;
| label_3:
0x00001452 ldr r2, [pc, 0xa8] |
0x00001454 ldr r1, [pc, 0xa8] |
0x00001456 add r2, pc | r2 = 0x2958;
0x00001458 add r1, pc | r1 = 0x295c;
0x0000145a blx 0xb5c | fcn_00000b5c ();
0x0000145e b 0x143e | goto label_0;
| label_8:
0x00001460 ldr r0, [pc, 0xa0] |
0x00001462 add r0, pc | r0 = 0x296a;
0x00001464 blx 0xb80 | r0 = fcn_00000b80 ();
0x00001468 mov r1, r0 | r1 = r0;
0x0000146a str r0, [r4, 4] | *((r4 + 4)) = r0;
0x0000146c b 0x142a | goto label_1;
| label_4:
0x0000146e ldr r1, [r7, 4] | r1 = *((r7 + 4));
| if (r1 == 0) {
0x00001470 cbnz r1, 0x147e |
0x00001472 ldr r0, [pc, 0x94] |
0x00001474 add r0, pc | r0 = 0x2982;
0x00001476 blx 0xb80 | r0 = fcn_00000b80 ();
0x0000147a mov r1, r0 | r1 = r0;
0x0000147c str r0, [r7, 4] | *((r7 + 4)) = r0;
| }
0x0000147e ldr r2, [sp, 0x10] | r2 = var_10h;
0x00001480 mov r0, r6 | r0 = r6;
0x00001482 ldr r3, [pc, 0x88] |
0x00001484 str r4, [sp] | *(sp) = r4;
0x00001486 str r2, [sp, 4] | var_4h = r2;
0x00001488 movs r2, 3 | r2 = 3;
0x0000148a add r3, pc | r3 = 0x299c;
0x0000148c blx 0xb74 | fcn_00000b74 ();
0x00001490 mov r0, r8 | r0 = r8;
0x00001492 blx 0xc4c | fcn_00000c4c ();
0x00001496 b 0x143e | goto label_0;
| label_5:
0x00001498 ldr.w r8, [r7, 4] | r8 = *((r7 + 4));
0x0000149c cmp.w r8, 0 |
| if (r8 == 0) {
0x000014a0 bne 0x14ae |
0x000014a2 ldr r0, [pc, 0x6c] |
0x000014a4 add r0, pc | r0 = 0x29ba;
0x000014a6 blx 0xb80 | r0 = fcn_00000b80 ();
0x000014aa mov r8, r0 | r8 = r0;
0x000014ac str r0, [r7, 4] | *((r7 + 4)) = r0;
| }
0x000014ae ldr r0, [r4] | r0 = *(r4);
| if (r0 == 0) {
0x000014b0 cbz r0, 0x14cc | goto label_9;
| }
0x000014b2 blx 0xc04 | r0 = fcn_00000c04 ();
0x000014b6 mov r2, r0 | r2 = r0;
| do {
0x000014b8 ldr r3, [pc, 0x58] |
0x000014ba mov r1, r8 | r1 = r8;
0x000014bc strd r5, r2, [sp] | __asm ("strd r5, r2, [sp]");
0x000014c0 mov r0, r6 | r0 = r6;
0x000014c2 movs r2, 3 | r2 = 3;
0x000014c4 add r3, pc | r3 = 0x29dc;
0x000014c6 blx 0xb74 | fcn_00000b74 ();
0x000014ca b 0x143e | goto label_0;
| label_9:
0x000014cc ldr r2, [pc, 0x48] |
0x000014ce add r2, pc | r2 = 0x29ea;
0x000014d0 b 0x14b8 |
| } while (1);
| label_7:
0x000014d2 blx 0xbe0 | fcn_00000be0 ();
0x000014d6 nop |
0x000014d8 cmp r3, 0x82 |
0x000014da movs r0, r0 |
0x000014dc lsls r4, r0, 3 | r4 = r0 << 3;
0x000014de movs r0, r0 |
0x000014e0 cmp r4, 0x50 |
0x000014e2 movs r0, r0 |
0x000014e4 cmp r3, 0x24 |
0x000014e6 movs r0, r0 |
0x000014e8 cmp r3, 0xe0 |
0x000014ea movs r0, r0 |
0x000014ec lsrs r0, r5, 0xe | r0 = r5 >> 0xe;
0x000014ee movs r0, r0 |
0x000014f0 lsrs r6, r7, 0xd | r6 = r7 >> 0xd;
0x000014f2 movs r0, r0 |
0x000014f4 lsrs r4, r3, 0xc | r4 = r3 >> 0xc;
0x000014f6 movs r0, r0 |
0x000014f8 lsrs r2, r2, 0x19 | r2 >>= 0x19;
0x000014fa movs r0, r0 |
0x000014fc lsrs r6, r3, 0xc | r6 = r3 >> 0xc;
0x000014fe movs r0, r0 |
0x00001500 lsrs r4, r0, 0x19 | r4 = r0 >> 0x19;
0x00001502 movs r0, r0 |
0x00001504 lsrs r2, r4, 0xc | r2 = r4 >> 0xc;
0x00001506 movs r0, r0 |
0x00001508 lsrs r0, r2, 0xc | r0 = r2 >> 0xc;
0x0000150a movs r0, r0 |
0x0000150c lsrs r2, r0, 0xc | r2 = r0 >> 0xc;
0x0000150e movs r0, r0 |
0x00001510 lsrs r0, r4, 0xb | r0 = r4 >> 0xb;
0x00001512 movs r0, r0 |
0x00001514 lsrs r0, r6, 0xb | r0 = r6 >> 0xb;
0x00001516 movs r0, r0 |
0x00001518 lsrs r6, r0, 0xa | r6 = r0 >> 0xa;
0x0000151a movs r0, r0 |
| }
[*] Function printf used 1 times libapac.so.0.0.1