[*] Binary protection state of libloggen_helper-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_helper-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_helper-3.38.so.0.0.0 @ 0x1484 */
| #include <stdint.h>
|
; (fcn) fcn.00001484 () | void fcn_00001484 (int16_t arg2, int16_t domain, int16_t type) {
| int16_t var_0h;
| int16_t var_4h;
| r1 = arg2;
| r0 = domain;
| r2 = type;
0x00001484 mvnsmi lr, 0xb4000 | __asm ("mvnsmi lr, 0xb4000");
0x00001488 mov r4, r2 | r4 = r2;
0x0000148a ldr r7, [pc, 0x158] |
0x0000148c sub sp, 0xc |
0x0000148e mov r5, r0 | r5 = r0;
0x00001490 mov r6, r1 | r6 = r1;
0x00001492 ldrh r0, [r0] | r0 = *(r0);
0x00001494 mov r1, r4 | r1 = r4;
0x00001496 movs r2, 0 | r2 = 0;
0x00001498 add r7, pc | r7 = 0x2a82;
0x0000149a blx 0x1234 | r0 = socket (r0, r1, r2);
0x0000149e subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x000014a0 blt 0x1548 | goto label_1;
| }
0x000014a2 blx 0x115c | r0 = fcn_0000115c ();
0x000014a6 cbnz r0, 0x14c4 |
| while (1) {
0x000014a8 mov r2, r6 | r2 = r6;
0x000014aa mov r1, r5 | r1 = r5;
0x000014ac mov r0, r4 | r0 = r4;
0x000014ae blx 0x1280 | r0 = fcn_00001280 ();
0x000014b2 cmp r0, 0 |
| if (r0 < 0) {
0x000014b4 blt 0x1594 | goto label_2;
| }
0x000014b6 blx 0x115c | r0 = fcn_0000115c ();
| if (r0 != 0) {
0x000014ba cbnz r0, 0x1506 | goto label_3;
| }
| label_0:
0x000014bc mov r0, r4 | r0 = r4;
0x000014be add sp, 0xc |
0x000014c0 pop.w {r4, r5, r6, r7, r8, sb, pc} |
0x000014c4 ldr r0, [pc, 0x120] |
0x000014c6 add r0, pc | r0 = 0x2ab2;
0x000014c8 blx 0x1180 | g_path_get_basename ();
0x000014cc ldr r3, [pc, 0x11c] | r3 = *(0x15ec);
0x000014ce mov r8, r0 | r8 = r0;
0x000014d0 ldr r2, [pc, 0x11c] |
0x000014d2 movs r1, 1 | r1 = 1;
0x000014d4 ldr.w sb, [r7, r3] | sb = *((r7 + r3));
0x000014d8 ldr r3, [pc, 0x118] |
0x000014da add r2, pc | r2 = 0x2ace;
0x000014dc add r3, pc | r3 = 0x2ad4;
0x000014de str r3, [sp] | *(sp) = r3;
0x000014e0 movs r3, 0x4c | r3 = 0x4c;
0x000014e2 ldr.w r0, [sb] | r0 = *(sb);
0x000014e6 str r3, [sp, 4] | var_4h = r3;
0x000014e8 mov r3, r8 | r3 = r8;
0x000014ea blx 0x11a4 | fprintf_chk ()
0x000014ee ldr r0, [pc, 0x108] |
0x000014f0 movs r2, 0x1d | r2 = 0x1d;
0x000014f2 ldr.w r3, [sb] | r3 = *(sb);
0x000014f6 movs r1, 1 | r1 = 1;
0x000014f8 add r0, pc | r0 = 0x2af6;
0x000014fa blx 0x12a4 | fcn_000012a4 ();
0x000014fe mov r0, r8 | r0 = r8;
0x00001500 blx 0x1244 | fcn_00001244 ();
0x00001504 b 0x14a8 |
| }
| label_3:
0x00001506 ldr r0, [pc, 0xf4] |
0x00001508 add r0, pc | r0 = 0x2b0a;
0x0000150a blx 0x1180 | g_path_get_basename ();
0x0000150e ldr r3, [pc, 0xdc] | r3 = *(0x15ee);
0x00001510 movs r2, 0x53 | r2 = 0x53;
0x00001512 ldr r1, [pc, 0xec] |
0x00001514 mov r5, r0 | r5 = r0;
0x00001516 ldr r6, [r7, r3] | r6 = *((r7 + r3));
0x00001518 mov r3, r0 | r3 = r0;
0x0000151a str r2, [sp, 4] | var_4h = r2;
0x0000151c add r1, pc | r1 = 0x2b22;
0x0000151e ldr r2, [pc, 0xe4] |
0x00001520 str r1, [sp] | *(sp) = r1;
0x00001522 movs r1, 1 | r1 = 1;
0x00001524 ldr r0, [r6] | r0 = *(r6);
0x00001526 add r2, pc | r2 = 0x2b30;
0x00001528 blx 0x11a4 | fprintf_chk ()
0x0000152c ldr r2, [pc, 0xd8] |
0x0000152e mov r3, r4 | r3 = r4;
0x00001530 movs r1, 1 | r1 = 1;
0x00001532 ldr r0, [r6] | r0 = *(r6);
0x00001534 add r2, pc | r2 = 0x2b40;
0x00001536 blx 0x11a4 | fprintf_chk ()
0x0000153a mov r0, r5 | r0 = r5;
0x0000153c blx 0x1244 | fcn_00001244 ();
0x00001540 mov r0, r4 | r0 = r4;
0x00001542 add sp, 0xc |
0x00001544 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_1:
0x00001548 ldr r0, [pc, 0xc0] |
0x0000154a add r0, pc |
0x0000154c blx 0x1180 | g_path_get_basename ();
0x00001550 ldr r3, [pc, 0xbc] | r3 = *(0x1610);
0x00001552 movs r2, 0x40 | r2 = 0x40;
0x00001554 ldr r1, [pc, 0xbc] |
0x00001556 mov r4, r0 | r4 = r0;
0x00001558 ldr r5, [r7, r3] | r5 = *((r7 + r3));
0x0000155a mov r3, r0 | r3 = r0;
0x0000155c str r2, [sp, 4] | var_4h = r2;
0x0000155e add r1, pc | r1 = 0x2b76;
0x00001560 ldr r2, [pc, 0xb4] |
0x00001562 str r1, [sp] | *(sp) = r1;
0x00001564 movs r1, 1 | r1 = 1;
0x00001566 ldr r0, [r5] | r0 = *(r5);
0x00001568 add r2, pc | r2 = 0x2b84;
0x0000156a blx 0x11a4 | fprintf_chk ()
0x0000156e blx 0x132c | r0 = fcn_0000132c ();
0x00001572 ldr r0, [r0] | r0 = *(0x2b5a);
0x00001574 blx 0x11f8 | g_strerror ();
0x00001578 ldr r5, [r5] | r5 = *(r5);
0x0000157a mov r3, r0 | r3 = r0;
0x0000157c ldr r2, [pc, 0x9c] |
0x0000157e movs r1, 1 | r1 = 1;
0x00001580 mov r0, r5 | r0 = r5;
0x00001582 add r2, pc | r2 = 0x2ba2;
0x00001584 blx 0x11a4 | fprintf_chk ()
0x00001588 mov r0, r4 | r0 = r4;
0x0000158a blx 0x1244 | fcn_00001244 ();
| do {
0x0000158e mov.w r4, -1 | r4 = -1;
0x00001592 b 0x14bc | goto label_0;
| label_2:
0x00001594 ldr r0, [pc, 0x88] |
0x00001596 add r0, pc |
0x00001598 blx 0x1180 | g_path_get_basename ();
0x0000159c ldr r3, [pc, 0x70] | r3 = *(0x1610);
0x0000159e movs r2, 0x4f | r2 = 0x4f;
0x000015a0 ldr r1, [pc, 0x80] |
0x000015a2 mov r5, r0 | r5 = r0;
0x000015a4 ldr r6, [r7, r3] | r6 = *((r7 + r3));
0x000015a6 mov r3, r0 | r3 = r0;
0x000015a8 str r2, [sp, 4] | var_4h = r2;
0x000015aa add r1, pc | r1 = 0x2bd2;
0x000015ac ldr r2, [pc, 0x78] |
0x000015ae str r1, [sp] | *(sp) = r1;
0x000015b0 movs r1, 1 | r1 = 1;
0x000015b2 ldr r0, [r6] | r0 = *(r6);
0x000015b4 add r2, pc | r2 = 0x2be0;
0x000015b6 blx 0x11a4 | fprintf_chk ()
0x000015ba blx 0x132c | r0 = fcn_0000132c ();
0x000015be ldr r0, [r0] | r0 = *(0x2bba);
0x000015c0 blx 0x11f8 | g_strerror ();
0x000015c4 ldr r6, [r6] | r6 = *(r6);
0x000015c6 mov r3, r0 | r3 = r0;
0x000015c8 ldr r2, [pc, 0x60] |
0x000015ca movs r1, 1 | r1 = 1;
0x000015cc mov r0, r6 | r0 = r6;
0x000015ce add r2, pc | r2 = 0x2bfe;
0x000015d0 blx 0x11a4 | fprintf_chk ()
0x000015d4 mov r0, r5 | r0 = r5;
0x000015d6 blx 0x1244 | fcn_00001244 ();
0x000015da mov r0, r4 | r0 = r4;
0x000015dc blx 0x11c8 | close (r0);
0x000015e0 b 0x158e |
| } while (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/libloggen_helper-3.38.so.0.0.0 @ 0x1de4 */
| #include <stdint.h>
|
; (fcn) sym.close_ssl_connection () | void close_ssl_connection (int16_t arg1) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
0x00001de4 push {r4, r5, lr} |
0x00001de6 sub sp, 0xc |
0x00001de8 ldr r5, [pc, 0xa4] |
0x00001dea add r5, pc | r5 = 0x3c7e;
| if (r0 == 0) {
0x00001dec cbz r0, 0x1e52 | goto label_1;
| }
0x00001dee mov r4, r0 | r4 = r0;
0x00001df0 blx 0x10fc | SSL_shutdown ();
0x00001df4 mov r0, r4 | r0 = r4;
0x00001df6 blx 0x1168 | SSL_get_SSL_CTX ();
0x00001dfa blx 0x13a4 | fcn_000013a4 ();
0x00001dfe mov r0, r4 | r0 = r4;
0x00001e00 blx 0x1374 | fcn_00001374 ();
0x00001e04 blx 0x115c | r0 = fcn_0000115c ();
0x00001e08 cbnz r0, 0x1e0e |
| while (r0 == 0) {
0x00001e0a add sp, 0xc |
0x00001e0c pop {r4, r5, pc} |
0x00001e0e ldr r0, [pc, 0x84] |
0x00001e10 add r0, pc | r0 = 0x3caa;
0x00001e12 blx 0x1180 | g_path_get_basename ();
0x00001e14 invalid |
0x00001e16 ldr r3, [pc, 0x80] | r3 = *(0x1e9a);
0x00001e18 mov.w r2, 0x130 | r2 = 0x130;
0x00001e1c ldr r1, [pc, 0x7c] |
0x00001e1e mov r4, r0 | r4 = r0;
0x00001e20 ldr r5, [r5, r3] | r5 = *((r5 + r3));
0x00001e22 mov r3, r0 | r3 = r0;
0x00001e24 str r2, [sp, 4] | var_4h = r2;
0x00001e26 add r1, pc | r1 = 0x3cc6;
0x00001e28 ldr r2, [pc, 0x74] |
0x00001e2a adds r1, 0x7c | r1 += 0x7c;
0x00001e2c str r1, [sp] | *(sp) = r1;
0x00001e2e movs r1, 1 | r1 = 1;
0x00001e30 ldr r0, [r5] | r0 = *(r5);
0x00001e32 add r2, pc | r2 = 0x3cd6;
0x00001e34 blx 0x11a4 | fprintf_chk ()
0x00001e38 ldr r0, [pc, 0x68] |
0x00001e3a movs r2, 0x16 | r2 = 0x16;
0x00001e3c ldr r3, [r5] | r3 = *(r5);
0x00001e3e add r0, pc | r0 = 0x3ce6;
| label_0:
0x00001e40 movs r1, 1 | r1 = 1;
0x00001e42 blx 0x12a4 | fcn_000012a4 ();
0x00001e46 mov r0, r4 | r0 = r4;
0x00001e48 add sp, 0xc |
0x00001e4a pop.w {r4, r5, lr} |
0x00001e4e b.w 0x1240 | void (*0x1240)() ();
| label_1:
0x00001e52 blx 0x115c | r0 = fcn_0000115c ();
0x00001e56 cmp r0, 0 |
0x00001e58 beq 0x1e0a |
| }
0x00001e5a ldr r0, [pc, 0x4c] |
0x00001e5c add r0, pc | r0 = 0x3d0a;
0x00001e5e blx 0x1180 | g_path_get_basename ();
0x00001e62 ldr r3, [pc, 0x34] | r3 = *(0x1e9a);
0x00001e64 mov.w r2, 0x128 | r2 = 0x128;
0x00001e68 ldr r1, [pc, 0x40] |
0x00001e6a mov r4, r0 | r4 = r0;
0x00001e6c ldr r5, [r5, r3] | r5 = *((r5 + r3));
0x00001e6e mov r3, r0 | r3 = r0;
0x00001e70 str r2, [sp, 4] | var_4h = r2;
0x00001e72 add r1, pc | r1 = 0x3d22;
0x00001e74 ldr r2, [pc, 0x38] |
0x00001e76 adds r1, 0x7c | r1 += 0x7c;
0x00001e78 str r1, [sp] | *(sp) = r1;
0x00001e7a movs r1, 1 | r1 = 1;
0x00001e7c ldr r0, [r5] | r0 = *(r5);
0x00001e7e add r2, pc | r2 = 0x3d32;
0x00001e80 blx 0x11a4 | fprintf_chk ()
0x00001e84 ldr r0, [pc, 0x2c] |
0x00001e86 movs r2, 0x23 | r2 = 0x23;
0x00001e88 ldr r3, [r5] | r3 = *(r5);
0x00001e8a add r0, pc | r0 = 0x3d42;
0x00001e8c b 0x1e40 | 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/libloggen_helper-3.38.so.0.0.0 @ 0x17ac */
| #include <stdint.h>
|
; (fcn) sym.connect_ip_socket () | void connect_ip_socket (int16_t arg1, uint32_t arg2, uint32_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000017ac push.w {r4, r5, r6, r7, r8, sb, lr} |
0x000017b0 cmp r2, 0 |
0x000017b2 it ne |
| if (r2 != 0) {
0x000017b4 cmpne r1, 0 | __asm ("cmpne r1, 0");
| }
0x000017b6 ldr.w r8, [pc, 0xd0] |
0x000017ba sub sp, 0xc |
0x000017bc add r8, pc | r8 = 0x304a;
| if (r2 == 0) {
0x000017be beq 0x1842 | goto label_1;
| }
0x000017c0 mov r6, r0 | r6 = r0;
0x000017c2 mov r7, r3 | r7 = r3;
0x000017c4 mov r4, r1 | r4 = r1;
0x000017c6 mov r5, r2 | r5 = r2;
0x000017c8 blx 0x115c | r0 = fcn_0000115c ();
0x000017cc cbnz r0, 0x17fc |
| while (1) {
0x000017ce mov r1, r4 | r1 = r4;
0x000017d0 mov r3, r7 | r3 = r7;
0x000017d2 mov r2, r5 | r2 = r5;
0x000017d4 mov r0, r6 | r0 = r6;
0x000017d6 blx 0x1174 | r0 = fcn_00001174 ();
0x000017da mov r4, r0 | r4 = r0;
0x000017dc cmp r0, 0 |
| if (r0 == 0) {
0x000017de beq 0x1880 | goto label_2;
| }
0x000017e0 ldrd r1, r0, [r0, 0x10] | __asm ("ldrd r1, r0, [r0, 0x10]");
0x000017e4 mov r2, r6 | r2 = r6;
0x000017e6 bl 0x1484 | r0 = fcn_00001484 (r0, r1, r2);
0x000017ea mov r3, r0 | r3 = r0;
0x000017ec mov r0, r4 | r0 = r4;
0x000017ee mov r4, r3 | r4 = r3;
0x000017f0 blx 0x112c | freeaddrinfo ();
| label_0:
0x000017f4 mov r0, r4 | r0 = r4;
0x000017f6 add sp, 0xc |
0x000017f8 pop.w {r4, r5, r6, r7, r8, sb, pc} |
0x000017fc ldr r0, [pc, 0x8c] |
0x000017fe add r0, pc | r0 = 0x308e;
0x00001800 blx 0x1180 | g_path_get_basename ();
0x00001804 ldr r3, [pc, 0x88] | r3 = *(0x1890);
0x00001806 mov sb, r0 | sb = r0;
0x00001808 ldr r2, [pc, 0x88] |
0x0000180a movs r1, 1 | r1 = 1;
0x0000180c ldr.w r8, [r8, r3] | r8 = *((r8 + r3));
0x00001810 ldr r3, [pc, 0x84] |
0x00001812 add r2, pc | r2 = 0x30aa;
0x00001814 add r3, pc | r3 = 0x30b0;
0x00001816 adds r3, 0x38 | r3 += 0x38;
0x00001818 str r3, [sp] | *(sp) = r3;
0x0000181a movs r3, 0x80 | r3 = 0x80;
0x0000181c ldr.w r0, [r8] | r0 = *(r8);
0x00001820 str r3, [sp, 4] | var_4h = r3;
0x00001822 mov r3, sb | r3 = sb;
0x00001824 blx 0x11a4 | fprintf_chk ()
0x00001828 ldr r2, [pc, 0x70] |
0x0000182a mov r3, r4 | r3 = r4;
0x0000182c ldr.w r0, [r8] | r0 = *(r8);
0x00001830 movs r1, 1 | r1 = 1;
0x00001832 str r5, [sp] | *(sp) = r5;
0x00001834 add r2, pc | r2 = 0x30d4;
0x00001836 blx 0x11a4 | fprintf_chk ()
0x0000183a mov r0, sb | r0 = sb;
0x0000183c blx 0x1244 | fcn_00001244 ();
0x00001840 b 0x17ce |
| }
| label_1:
0x00001842 ldr r0, [pc, 0x5c] |
0x00001844 add r0, pc | r0 = 0x30ea;
0x00001846 blx 0x1180 | g_path_get_basename ();
0x0000184a ldr r3, [pc, 0x58] | r3 = *(0x18a6);
0x0000184c movs r2, 0x7c | r2 = 0x7c;
0x0000184e ldr r1, [pc, 0x58] |
0x00001850 mov r4, r0 | r4 = r0;
0x00001852 ldr.w r5, [r8, r3] | r5 = *((r8 + r3));
0x00001856 mov r3, r0 | r3 = r0;
0x00001858 str r2, [sp, 4] | var_4h = r2;
0x0000185a add r1, pc | r1 = 0x3108;
0x0000185c ldr r2, [pc, 0x4c] |
0x0000185e adds r1, 0x38 | r1 += 0x38;
0x00001860 str r1, [sp] | *(sp) = r1;
0x00001862 movs r1, 1 | r1 = 1;
0x00001864 ldr r0, [r5] | r0 = *(r5);
0x00001866 add r2, pc | r2 = 0x3116;
0x00001868 blx 0x11a4 | fprintf_chk ()
0x0000186c ldr r0, [pc, 0x40] |
0x0000186e movs r2, 0x1c | r2 = 0x1c;
0x00001870 ldr r3, [r5] | r3 = *(r5);
0x00001872 movs r1, 1 | r1 = 1;
0x00001874 add r0, pc | r0 = 0x3128;
0x00001876 blx 0x12a4 | fcn_000012a4 ();
0x0000187a mov r0, r4 | r0 = r4;
0x0000187c blx 0x1244 | fcn_00001244 ();
| label_2:
0x00001880 mov.w r4, -1 | r4 = -1;
0x00001884 b 0x17f4 | 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/libloggen_helper-3.38.so.0.0.0 @ 0x18b4 */
| #include <stdint.h>
|
; (fcn) sym.connect_unix_domain_socket () | void connect_unix_domain_socket (int16_t arg1, uint32_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_ch;
| int16_t var_eh;
| int16_t var_7ch;
| r0 = arg1;
| r1 = arg2;
0x000018b4 ldr r2, [pc, 0x12c] |
0x000018b6 ldr r3, [pc, 0x130] | r3 = *(0x19ea);
0x000018b8 push.w {r4, r5, r6, r7, r8, lr} |
0x000018bc sub sp, 0x80 |
0x000018be add r2, pc | r2 = 0x32a6;
0x000018c0 ldr r7, [pc, 0x128] |
0x000018c2 ldr r3, [r2, r3] |
0x000018c4 add r7, pc | r7 = 0x32b4;
0x000018c6 ldr r3, [r3] | r3 = *(0x32a6);
0x000018c8 str r3, [sp, 0x7c] | var_7ch = r3;
0x000018ca mov.w r3, 0 | r3 = 0;
0x000018ce cmp r1, 0 |
| if (r1 == 0) {
0x000018d0 beq 0x19a2 | goto label_1;
| }
0x000018d2 mov r6, r0 | r6 = r0;
0x000018d4 mov r4, r1 | r4 = r1;
0x000018d6 blx 0x115c | r0 = fcn_0000115c ();
0x000018da cbnz r0, 0x191c |
| while (1) {
0x000018dc movs r5, 1 | r5 = 1;
0x000018de mov r0, r4 | r0 = r4;
0x000018e0 strh.w r5, [sp, 0xc] | var_ch = r5;
0x000018e4 blx 0x12d4 | r0 = fcn_000012d4 ();
0x000018e8 cmp r0, 0x6b |
| if (r0 > 0x6b) {
0x000018ea bhi 0x1960 | goto label_2;
| }
0x000018ec adds r2, r0, 1 | r2 = r0 + 1;
0x000018ee mov r1, r4 | r1 = r4;
0x000018f0 add.w r0, sp, 0xe | r0 += var_eh;
0x000018f4 blx 0x12bc | fcn_000012bc ();
0x000018f8 mov r2, r6 | r2 = r6;
0x000018fa movs r1, 0x6e | r1 = 0x6e;
0x000018fc add r0, sp, 0xc | r0 += var_ch;
0x000018fe bl 0x1484 | fcn_00001484 (r0, r1, r2);
| label_0:
0x00001902 ldr r2, [pc, 0xec] |
0x00001904 ldr r3, [pc, 0xe0] | r3 = *(0x19e8);
0x00001906 add r2, pc | r2 = 0x32fc;
0x00001908 ldr r3, [r2, r3] | r3 = *(0x32fc);
0x0000190a ldr r2, [r3] | r2 = *(0x32fc);
0x0000190c ldr r3, [sp, 0x7c] | r3 = var_7ch;
0x0000190e eors r2, r3 | r2 ^= r3;
0x00001910 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00001914 bne 0x19e0 | goto label_3;
| }
0x00001916 add sp, 0x80 |
0x00001918 pop.w {r4, r5, r6, r7, r8, pc} |
0x0000191c ldr r0, [pc, 0xd4] |
0x0000191e add r0, pc | r0 = 0x3316;
0x00001920 blx 0x1180 | g_path_get_basename ();
0x00001924 ldr r3, [pc, 0xd0] | r3 = *(0x19f8);
0x00001926 mov r5, r0 | r5 = r0;
0x00001928 ldr r2, [pc, 0xd0] |
0x0000192a movs r1, 1 | r1 = 1;
0x0000192c ldr.w r8, [r7, r3] | r8 = *((r7 + r3));
0x00001930 ldr r3, [pc, 0xcc] |
0x00001932 add r2, pc | r2 = 0x3332;
0x00001934 add r3, pc | r3 = 0x3338;
0x00001936 adds r3, 0x4c | r3 += 0x4c;
0x00001938 str r3, [sp] | *(sp) = r3;
0x0000193a movs r3, 0xb6 | r3 = 0xb6;
0x0000193c ldr.w r0, [r8] | r0 = *(r8);
0x00001940 str r3, [sp, 4] | var_4h = r3;
0x00001942 mov r3, r5 | r3 = r5;
0x00001944 blx 0x11a4 | fprintf_chk ()
0x00001948 ldr r2, [pc, 0xb8] |
0x0000194a mov r3, r4 | r3 = r4;
0x0000194c ldr.w r0, [r8] | r0 = *(r8);
0x00001950 movs r1, 1 | r1 = 1;
0x00001952 add r2, pc | r2 = 0x335a;
0x00001954 blx 0x11a4 | fprintf_chk ()
0x00001958 mov r0, r5 | r0 = r5;
0x0000195a blx 0x1244 | fcn_00001244 ();
0x0000195e b 0x18dc |
| }
| label_2:
0x00001960 ldr r0, [pc, 0xa4] |
0x00001962 add r0, pc | r0 = 0x336e;
0x00001964 blx 0x1180 | g_path_get_basename ();
0x00001968 ldr r3, [pc, 0xa0] | r3 = *(0x1a0c);
0x0000196a movs r2, 0xbc | r2 = 0xbc;
0x0000196c ldr r1, [pc, 0xa0] |
0x0000196e mov r4, r0 | r4 = r0;
0x00001970 ldr r6, [r7, r3] | r6 = *((r7 + r3));
0x00001972 mov r3, r0 | r3 = r0;
0x00001974 str r2, [sp, 4] | var_4h = r2;
0x00001976 add r1, pc | r1 = 0x338a;
0x00001978 ldr r2, [pc, 0x98] |
0x0000197a adds r1, 0x4c | r1 += 0x4c;
0x0000197c str r1, [sp] | *(sp) = r1;
0x0000197e mov r1, r5 | r1 = r5;
0x00001980 ldr r0, [r6] | r0 = *(r6);
0x00001982 add r2, pc | r2 = 0x339a;
0x00001984 blx 0x11a4 | fprintf_chk ()
0x00001988 ldr r2, [pc, 0x8c] |
0x0000198a movs r3, 0x6b | r3 = 0x6b;
0x0000198c ldr r0, [r6] | r0 = *(r6);
0x0000198e mov r1, r5 | r1 = r5;
0x00001990 add r2, pc | r2 = 0x33ac;
0x00001992 blx 0x11a4 | fprintf_chk ()
0x00001996 mov r0, r4 | r0 = r4;
0x00001998 blx 0x1244 | fcn_00001244 ();
| do {
0x0000199c mov.w r0, -1 | r0 = -1;
0x000019a0 b 0x1902 | goto label_0;
| label_1:
0x000019a2 ldr r0, [pc, 0x78] |
0x000019a4 add r0, pc | r0 = 0x33c6;
0x000019a6 blx 0x1180 | g_path_get_basename ();
0x000019aa ldr r3, [pc, 0x60] | r3 = *(0x1a0e);
0x000019ac movs r2, 0xb2 | r2 = 0xb2;
0x000019ae ldr r1, [pc, 0x70] |
0x000019b0 mov r4, r0 | r4 = r0;
0x000019b2 ldr r5, [r7, r3] | r5 = *((r7 + r3));
0x000019b4 mov r3, r0 | r3 = r0;
0x000019b6 str r2, [sp, 4] | var_4h = r2;
0x000019b8 add r1, pc | r1 = 0x33de;
0x000019ba ldr r2, [pc, 0x68] |
0x000019bc adds r1, 0x4c | r1 += 0x4c;
0x000019be str r1, [sp] | *(sp) = r1;
0x000019c0 movs r1, 1 | r1 = 1;
0x000019c2 ldr r0, [r5] | r0 = *(r5);
0x000019c4 add r2, pc | r2 = 0x33ee;
0x000019c6 blx 0x11a4 | fprintf_chk ()
0x000019ca ldr r0, [pc, 0x5c] |
0x000019cc movs r2, 0x19 | r2 = 0x19;
0x000019ce ldr r3, [r5] | r3 = *(r5);
0x000019d0 movs r1, 1 | r1 = 1;
0x000019d2 add r0, pc | r0 = 0x3400;
0x000019d4 blx 0x12a4 | fcn_000012a4 ();
0x000019d8 mov r0, r4 | r0 = r4;
0x000019da blx 0x1244 | fcn_00001244 ();
0x000019de b 0x199c |
| } while (1);
| label_3:
0x000019e0 blx 0x121c | stack_chk_fail ();
0x000019e4 movs r6, 0x2e | r6 = 0x2e;
0x000019e6 movs r0, r0 |
0x000019e8 lsls r4, r6, 3 | r4 = r6 << 3;
0x000019ea movs r0, r0 |
0x000019ec movs r6, 0x28 | r6 = 0x28;
0x000019ee movs r0, r0 |
0x000019f0 movs r5, 0xe6 | r5 = 0xe6;
0x000019f2 movs r0, r0 |
0x000019f4 lsrs r6, r2, 0xa | r6 = r2 >> 0xa;
0x000019f6 movs r0, r0 |
0x000019f8 lsls r4, r7, 3 | r4 = r7 << 3;
0x000019fa movs r0, r0 |
0x000019fc lsrs r2, r6, 0xb | r2 = r6 >> 0xb;
0x000019fe movs r0, r0 |
0x00001a00 lsrs r0, r0, 0x16 | r0 >>= 0x16;
0x00001a02 movs r0, r0 |
0x00001a04 lsrs r2, r5, 0xf | r2 = r5 >> 0xf;
0x00001a06 movs r0, r0 |
0x00001a08 lsrs r2, r2, 9 | r2 >>= 9;
0x00001a0a movs r0, r0 |
0x00001a0c lsls r0, r7, 3 | r0 = r7 << 3;
0x00001a0e movs r0, r0 |
0x00001a10 lsrs r6, r7, 0x14 | r6 = r7 >> 0x14;
0x00001a12 movs r0, r0 |
0x00001a14 lsrs r2, r6, 9 | r2 = r6 >> 9;
0x00001a16 movs r0, r0 |
0x00001a18 lsrs r4, r0, 0xf | r4 = r0 >> 0xf;
0x00001a1a movs r0, r0 |
0x00001a1c lsrs r0, r2, 8 | r0 = r2 >> 8;
0x00001a1e movs r0, r0 |
0x00001a20 lsrs r4, r7, 0x13 | r4 = r7 >> 0x13;
0x00001a22 movs r0, r0 |
0x00001a24 lsrs r0, r6, 8 | r0 = r6 >> 8;
0x00001a26 movs r0, r0 |
0x00001a28 lsrs r6, r1, 0xd | r6 = r1 >> 0xd;
0x00001a2a 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/libloggen_helper-3.38.so.0.0.0 @ 0x1eb8 */
| #include <stdint.h>
|
; (fcn) sym.generate_proxy_header () | void generate_proxy_header (int16_t arg_e8h, int16_t arg_f0h, int16_t arg1, int16_t arg2, uint32_t arg4) {
| int16_t var_10ch;
| int16_t var_0h;
| int16_t var_4h;
| int32_t var_4h_2;
| int16_t var_14h;
| int16_t var_1ch;
| int16_t var_2ch;
| int16_t var_7h;
| int16_t var_3ch;
| int16_t var_bch;
| r0 = arg1;
| r1 = arg2;
| r3 = arg4;
0x00001eb8 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x00001ebc mov r6, r1 | r6 = r1;
0x00001ebe ldr r1, [pc, 0x1b0] |
0x00001ec0 sub sp, 0xc4 |
0x00001ec2 mov r5, r0 | r5 = r0;
0x00001ec4 ldr r2, [pc, 0x1ac] | r2 = *(0x2074);
0x00001ec6 add r1, pc | r1 = "H_";
0x00001ec8 ldr.w r8, [pc, 0x1ac] |
0x00001ecc ldrd r7, sb, [sp, 0xe8] | __asm ("ldrd r7, sb, [arg_e8h]");
0x00001ed0 ldr r2, [r1, r2] |
0x00001ed2 add r8, pc | r8 = 0x3f4e;
0x00001ed4 ldr.w sl, [sp, 0xf0] | sl = *(arg_f0h);
0x00001ed8 ldr r2, [r2] | r2 = "H_";
0x00001eda str r2, [sp, 0xbc] | var_bch = r2;
0x00001edc mov.w r2, 0 | r2 = 0;
0x00001ee0 cmp r3, 0 |
| if (r3 == 0) {
0x00001ee2 beq 0x1f8a | goto label_2;
| }
0x00001ee4 mov r4, r3 | r4 = r3;
0x00001ee6 cmp r7, 0 |
| if (r7 == 0) {
0x00001ee8 beq 0x1fd0 | goto label_3;
| }
0x00001eea cmp.w sb, 0 |
| if (sb == 0) {
0x00001eee beq.w 0x200e | goto label_4;
| }
| label_1:
0x00001ef2 cmp.w sl, 0 |
| if (sl == 0) {
0x00001ef6 beq 0x1f82 | goto label_5;
| }
| label_0:
0x00001ef8 ldr r2, [pc, 0x180] |
0x00001efa mov r3, r4 | r3 = r4;
0x00001efc str r7, [sp] | *(sp) = r7;
0x00001efe add r7, sp, 0x3c | r7 += var_3ch;
0x00001f00 movs r1, 0x80 | r1 = 0x80;
0x00001f02 mov r0, r7 | r0 = r7;
0x00001f04 add r2, pc | r2 = 0x3f84;
0x00001f06 strd sb, sl, [sp, 4] | __asm ("strd sb, sl, [var_4h]");
0x00001f0a blx 0x1308 | r0 = fcn_00001308 ();
0x00001f0e cmp r0, r6 |
0x00001f10 mov r4, r0 | r4 = r0;
0x00001f12 bgt 0x1f3c |
| while (1) {
0x00001f14 mov r2, r4 | r2 = r4;
0x00001f16 mov r1, r7 | r1 = r7;
0x00001f18 mov r0, r5 | r0 = r5;
0x00001f1a blx 0x12bc | fcn_000012bc ();
0x00001f1e ldr r2, [pc, 0x160] |
0x00001f20 ldr r3, [pc, 0x150] | r3 = *(0x2074);
0x00001f22 add r2, pc | r2 = 0x3fa8;
0x00001f24 ldr r3, [r2, r3] | r3 = *(0x3fa8);
0x00001f26 ldr r2, [r3] | r2 = *(0x3fa8);
0x00001f28 ldr r3, [sp, 0xbc] | r3 = var_bch;
0x00001f2a eors r2, r3 | r2 ^= r3;
0x00001f2c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00001f30 bne.w 0x206a | goto label_6;
| }
0x00001f34 mov r0, r4 | r0 = r4;
0x00001f36 add sp, 0xc4 |
0x00001f38 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00001f3c ldr r0, [pc, 0x144] |
0x00001f3e add r0, pc | r0 = 0x3fc6;
0x00001f40 blx 0x1180 | g_path_get_basename ();
0x00001f44 ldr r3, [pc, 0x140] | r3 = *(0x2088);
0x00001f46 mov r6, r0 | r6 = r0;
0x00001f48 ldr r2, [pc, 0x140] |
0x00001f4a movs r1, 1 | r1 = 1;
0x00001f4c ldr.w r8, [r8, r3] | r8 = *((r8 + r3));
0x00001f4e strh r3, [r0] | *(r0) = r3;
0x00001f50 ldr r3, [pc, 0x13c] |
0x00001f52 add r2, pc | r2 = 0x3fe2;
0x00001f54 add r3, pc | r3 = 0x3fe8;
0x00001f56 adds r3, 0x94 | r3 += 0x94;
0x00001f58 str r3, [sp] | *(sp) = r3;
0x00001f5a mov.w r3, 0x156 | r3 = 0x156;
0x00001f5e ldr.w r0, [r8] | r0 = *(r8);
0x00001f62 str r3, [sp, 4] | var_4h = r3;
0x00001f64 mov r3, r6 | r3 = r6;
0x00001f66 blx 0x11a4 | fprintf_chk ()
0x00001f6a ldr r2, [pc, 0x128] |
0x00001f6c mov r3, r5 | r3 = r5;
0x00001f6e ldr.w r0, [r8] | r0 = *(r8);
0x00001f72 movs r1, 1 | r1 = 1;
0x00001f74 add r2, pc | r2 = 0x400e;
0x00001f76 blx 0x11a4 | fprintf_chk ()
0x00001f7a mov r0, r6 | r0 = r6;
0x00001f7c blx 0x1244 | fcn_00001244 ();
0x00001f80 b 0x1f14 |
| }
| label_5:
0x00001f82 ldr.w sl, [pc, 0x114] |
0x00001f86 add sl, pc | sl = 0x4024;
0x00001f88 b 0x1ef8 | goto label_0;
| label_2:
0x00001f8a ldr.w fp, [pc, 0x110] |
0x00001f8e movs r1, 0x64 | r1 = 0x64;
0x00001f90 movs r0, 1 | r0 = 1;
0x00001f92 add r4, sp, 0x1c | r4 += var_1ch;
0x00001f94 blx 0x118c | g_random_int_range ();
0x00001f98 add fp, pc | fp = 0x403a;
0x00001f9a mov r3, r0 | r3 = r0;
0x00001f9c mov r2, fp | r2 = fp;
0x00001f9e movs r1, 0x10 | r1 = 0x10;
0x00001fa0 mov r0, r4 | r0 = r4;
0x00001fa2 blx 0x1308 | fcn_00001308 ();
0x00001fa6 cmp r7, 0 |
| if (r7 == 0) {
0x00001fa8 beq 0x202e | goto label_7;
| }
0x00001faa cmp.w sb, 0 |
| if (sb != 0) {
0x00001fae bne 0x1ef2 | goto label_1;
| }
0x00001fb0 movw r1, 0x2710 | r1 = 0x2710;
0x00001fb4 movw r0, 0x1388 | r0 = 0x1388;
0x00001fb8 blx 0x118c | g_random_int_range ();
0x00001fbc ldr r2, [pc, 0xe0] |
0x00001fbe add.w sb, sp, 0x14 | sb += var_14h;
0x00001fc2 mov r3, r0 | r3 = r0;
0x00001fc4 movs r1, 6 | r1 = 6;
0x00001fc6 mov r0, sb | r0 = sb;
0x00001fc8 add r2, pc | r2 = 0x406c;
0x00001fca blx 0x1308 | fcn_00001308 ();
0x00001fce b 0x1ef2 | goto label_1;
| label_3:
0x00001fd0 movs r1, 0x64 | r1 = 0x64;
0x00001fd2 movs r0, 1 | r0 = 1;
0x00001fd4 blx 0x118c | g_random_int_range ();
0x00001fd8 ldr r2, [pc, 0xc8] |
0x00001fda add r7, sp, 0x2c | r7 += var_2ch;
0x00001fdc mov r3, r0 | r3 = r0;
0x00001fde movs r1, 0x10 | r1 = 0x10;
0x00001fe0 mov r0, r7 | r0 = r7;
0x00001fe2 add r2, pc | r2 = 0x408a;
0x00001fe4 blx 0x1308 | fcn_00001308 ();
0x00001fe8 cmp.w sb, 0 |
| if (sb != 0) {
0x00001fec bne 0x1ef2 | goto label_1;
| }
0x00001fee movw r1, 0x2710 | r1 = 0x2710;
0x00001ff2 movw r0, 0x1388 | r0 = 0x1388;
0x00001ff6 blx 0x118c | g_random_int_range ();
0x00001ffa ldr r2, [pc, 0xac] |
0x00001ffc add.w sb, sp, 0x14 | sb += var_14h;
0x00002000 mov r3, r0 | r3 = r0;
0x00002002 movs r1, 6 | r1 = 6;
0x00002004 mov r0, sb | r0 = sb;
0x00002006 add r2, pc | r2 = 0x40b4;
0x00002008 blx 0x1308 | fcn_00001308 ();
0x0000200c b 0x1ef2 | goto label_1;
| label_4:
0x0000200e movw r1, 0x2710 | r1 = 0x2710;
0x00002012 movw r0, 0x1388 | r0 = 0x1388;
0x00002016 blx 0x118c | g_random_int_range ();
0x0000201a ldr r2, [pc, 0x90] |
0x0000201c add.w sb, sp, 0x14 | sb += var_14h;
0x00002020 mov r3, r0 | r3 = r0;
0x00002022 movs r1, 6 | r1 = 6;
0x00002024 mov r0, sb | r0 = sb;
0x00002026 add r2, pc | r2 = 0x40d8;
0x00002028 blx 0x1308 | fcn_00001308 ();
0x0000202c b 0x1ef2 | goto label_1;
| label_7:
0x0000202e movs r1, 0x64 | r1 = 0x64;
0x00002030 movs r0, 1 | r0 = 1;
0x00002032 add r7, sp, 0x2c | r7 += var_2ch;
0x00002034 blx 0x118c | g_random_int_range ();
0x00002038 mov r2, fp | r2 = fp;
0x0000203a mov r3, r0 | r3 = r0;
0x0000203c movs r1, 0x10 | r1 = 0x10;
0x0000203e mov r0, r7 | r0 = r7;
0x00002040 blx 0x1308 | fcn_00001308 ();
0x00002044 cmp.w sb, 0 |
| if (sb != 0) {
0x00002048 bne.w 0x1ef2 | goto label_1;
| }
0x0000204c movw r1, 0x2710 | r1 = 0x2710;
0x00002050 movw r0, 0x1388 | r0 = 0x1388;
0x00002054 blx 0x118c | g_random_int_range ();
0x00002058 ldr r2, [pc, 0x54] |
0x0000205a mov r3, r0 | r3 = r0;
0x0000205c movs r1, 6 | r1 = 6;
0x0000205e add r0, sp, 0x14 | r0 += var_14h;
0x00002060 mov sb, r0 | sb = r0;
0x00002062 add r2, pc | r2 = 0x4116;
0x00002064 blx 0x1308 | fcn_00001308 ();
0x00002068 b 0x1ef2 | goto label_1;
| label_6:
0x0000206a blx 0x121c | stack_chk_fail ();
0x0000206e nop |
0x00002070 movs r0, 0x26 | r0 = 0x26;
0x00002072 movs r0, r0 |
0x00002074 lsls r4, r6, 3 | r4 = r6 << 3;
0x00002076 movs r0, r0 |
0x00002078 movs r0, 0x1a | r0 = 0x1a;
0x0000207a movs r0, r0 |
0x0000207c lsls r4, r2, 0x1d | r4 = r2 << 0x1d;
0x0000207e movs r0, r0 |
0x00002080 subs r2, r1, 7 | r2 -= var_7h;
0x00002082 movs r0, r0 |
0x00002084 lsls r6, r6, 0x11 | r6 <<= 0x11;
0x00002086 movs r0, r0 |
0x00002088 lsls r0, r7, 3 | r0 = r7 << 3;
0x0000208a movs r0, r0 |
0x0000208c lsls r2, r4, 0x12 | r2 = r4 << 0x12;
0x0000208e movs r0, r0 |
0x00002090 lsls r0, r4, 0x1d | r0 = r4 << 0x1d;
0x00002092 movs r0, r0 |
0x00002094 lsls r4, r7, 0x1b | r4 = r7 << 0x1b;
0x00002096 movs r0, r0 |
0x00002098 lsls r2, r7, 0x1a | r2 = r7 << 0x1a;
0x0000209a movs r0, r0 |
0x0000209c lsls r4, r5, 0x1a | r4 = r5 << 0x1a;
0x0000209e movs r0, r0 |
0x000020a0 lsls r4, r1, 0x1a | r4 = r1 << 0x1a;
0x000020a2 movs r0, r0 |
0x000020a4 lsls r2, r4, 0x19 | r2 = r4 << 0x19;
0x000020a6 movs r0, r0 |
0x000020a8 lsls r6, r1, 0x19 | r6 = r1 << 0x19;
0x000020aa movs r0, r0 |
0x000020ac lsls r6, r5, 0x18 | r6 = r5 << 0x18;
0x000020ae movs r0, r0 |
0x000020b0 lsls r2, r6, 0x17 | r2 = r6 << 0x17;
0x000020b2 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/libloggen_helper-3.38.so.0.0.0 @ 0x1c40 */
| #include <stdint.h>
|
; (fcn) sym.open_ssl_connection () | void open_ssl_connection (int16_t arg1) {
| int16_t var_0h;
| int16_t var_4h_2;
| r0 = arg1;
| if (? >= ?) {
0x00001c40 addlt fp, r2, r0, ror r5 |
| }
0x00001c44 ldr r6, [pc, 0x150] |
0x00001c46 mov r5, r0 | r5 = r0;
0x00001c48 add r6, pc | r6 = 0x39e4;
0x00001c4a blx 0x135c | fcn_0000135c ();
0x00001c4e blx 0x1228 | r0 = SSL_CTX_new ();
0x00001c52 cmp r0, 0 |
| if (r0 == 0) {
0x00001c54 beq 0x1d16 | goto label_1;
| }
0x00001c56 mov r4, r0 | r4 = r0;
0x00001c58 movs r3, 0 | r3 = 0;
0x00001c5a movs r2, 4 | r2 = 4;
0x00001c5c movs r1, 0x21 | r1 = 0x21;
0x00001c5e blx 0x12fc | fcn_000012fc ();
0x00001c62 mov r0, r4 | r0 = r4;
0x00001c64 blx 0x1150 | r0 = SSL_new ();
0x00001c68 mov r4, r0 | r4 = r0;
0x00001c6a cmp r0, 0 |
| if (r0 == 0) {
0x00001c6c beq 0x1d56 | goto label_2;
| }
0x00001c6e mov r1, r5 | r1 = r5;
0x00001c70 blx 0x1114 | SSL_set_fd ();
0x00001c74 mov r0, r4 | r0 = r4;
0x00001c76 blx 0x1250 | r0 = fcn_00001250 ();
0x00001c7a cmp r0, 0 |
| if (r0 <= 0) {
0x00001c7c ble 0x1cce | goto label_3;
| }
0x00001c7e blx 0x115c | r0 = fcn_0000115c ();
0x00001c82 cbnz r0, 0x1c8a |
| while (1) {
0x00001c84 mov r0, r4 | r0 = r4;
0x00001c86 add sp, 8 |
0x00001c88 pop {r4, r5, r6, pc} |
0x00001c8a ldr r0, [pc, 0x110] |
0x00001c8c add r0, pc | r0 = 0x3a2e;
0x00001c8e blx 0x1180 | g_path_get_basename ();
0x00001c92 ldr r3, [pc, 0x10c] | r3 = *(0x1da2);
0x00001c94 movw r2, 0x11f | r2 = 0x11f;
0x00001c98 ldr r1, [pc, 0x108] |
0x00001c9a mov r5, r0 | r5 = r0;
0x00001c9c ldr r6, [r6, r3] | r6 = *((r6 + r3));
0x00001c9e mov r3, r0 | r3 = r0;
0x00001ca0 str r2, [sp, 4] | var_4h_2 = r2;
0x00001ca2 add r1, pc | r1 = 0x3a4a;
0x00001ca4 ldr r2, [pc, 0x100] |
0x00001ca6 adds r1, 0x68 | r1 += 0x68;
0x00001ca8 str r1, [sp] | *(sp) = r1;
0x00001caa movs r1, 1 | r1 = 1;
0x00001cac ldr r0, [r6] | r0 = *(r6);
0x00001cae add r2, pc | r2 = 0x3a5a;
0x00001cb0 blx 0x11a4 | fprintf_chk ()
0x00001cb4 ldr r0, [pc, 0xf4] |
0x00001cb6 movs r2, 0x1b | r2 = 0x1b;
0x00001cb8 ldr r3, [r6] | r3 = *(r6);
0x00001cba movs r1, 1 | r1 = 1;
0x00001cbc add r0, pc | r0 = 0x3a6c;
0x00001cbe blx 0x12a4 | fcn_000012a4 ();
0x00001cc2 mov r0, r5 | r0 = r5;
0x00001cc4 blx 0x1244 | fcn_00001244 ();
0x00001cc8 mov r0, r4 | r0 = r4;
0x00001cca add sp, 8 |
0x00001ccc pop {r4, r5, r6, pc} |
| label_3:
0x00001cce ldr r0, [pc, 0xe0] |
0x00001cd0 add r0, pc | r0 = 0x3a86;
0x00001cd2 blx 0x1180 | g_path_get_basename ();
0x00001cd6 ldr r3, [pc, 0xdc] | r3 = *(0x1db6);
0x00001cd8 mov.w r2, 0x11a | r2 = 0x11a;
0x00001cdc ldr r1, [pc, 0xd8] |
0x00001cde mov r4, r0 | r4 = r0;
0x00001ce0 ldr r5, [r6, r3] | r5 = *((r6 + r3));
0x00001ce2 mov r3, r0 | r3 = r0;
0x00001ce4 str r2, [sp, 4] | var_4h_2 = r2;
0x00001ce6 add r1, pc | r1 = 0x3aa2;
0x00001ce8 ldr r2, [pc, 0xd0] |
0x00001cea adds r1, 0x68 | r1 += 0x68;
0x00001cec str r1, [sp] | *(sp) = r1;
0x00001cee movs r1, 1 | r1 = 1;
0x00001cf0 ldr r0, [r5] | r0 = *(r5);
0x00001cf2 add r2, pc | r2 = 0x3ab2;
0x00001cf4 blx 0x11a4 | fprintf_chk ()
0x00001cf8 ldr r0, [pc, 0xc4] |
0x00001cfa movs r2, 0x13 | r2 = 0x13;
0x00001cfc ldr r3, [r5] | r3 = *(r5);
0x00001cfe movs r1, 1 | r1 = 1;
0x00001d00 add r0, pc | r0 = 0x3ac4;
0x00001d02 blx 0x12a4 | fcn_000012a4 ();
0x00001d06 mov r0, r4 | r0 = r4;
0x00001d08 blx 0x1244 | fcn_00001244 ();
0x00001d0c ldr r0, [r5] | r0 = *(r5);
0x00001d0e blx 0x1298 | fcn_00001298 ();
| label_0:
0x00001d12 movs r4, 0 | r4 = 0;
0x00001d14 b 0x1c84 |
| }
| label_1:
0x00001d16 ldr r0, [pc, 0xac] |
0x00001d18 add r0, pc | r0 = 0x3ae2;
0x00001d1a blx 0x1180 | g_path_get_basename ();
0x00001d1e ldr r3, [pc, 0x94] | r3 = *(0x1db6);
0x00001d20 mov.w r2, 0x10a | r2 = 0x10a;
0x00001d24 ldr r1, [pc, 0xa0] |
0x00001d26 mov r4, r0 | r4 = r0;
0x00001d28 ldr r5, [r6, r3] | r5 = *((r6 + r3));
0x00001d2a mov r3, r0 | r3 = r0;
0x00001d2c str r2, [sp, 4] | var_4h_2 = r2;
0x00001d2e add r1, pc | r1 = 0x3afa;
0x00001d30 ldr r2, [pc, 0x98] |
0x00001d32 adds r1, 0x68 | r1 += 0x68;
0x00001d34 str r1, [sp] | *(sp) = r1;
0x00001d36 movs r1, 1 | r1 = 1;
0x00001d38 ldr r0, [r5] | r0 = *(r5);
0x00001d3a add r2, pc | r2 = 0x3b0a;
0x00001d3c blx 0x11a4 | fprintf_chk ()
0x00001d40 ldr r0, [pc, 0x8c] |
0x00001d42 movs r2, 0x17 | r2 = 0x17;
0x00001d44 ldr r3, [r5] | r3 = *(r5);
0x00001d46 movs r1, 1 | r1 = 1;
0x00001d48 add r0, pc | r0 = 0x3b1c;
0x00001d4a blx 0x12a4 | fcn_000012a4 ();
0x00001d4e mov r0, r4 | r0 = r4;
0x00001d50 blx 0x1244 | fcn_00001244 ();
0x00001d54 b 0x1d12 | goto label_0;
| label_2:
0x00001d56 ldr r0, [pc, 0x7c] |
0x00001d58 add r0, pc | r0 = 0x3b32;
0x00001d5a blx 0x1180 | g_path_get_basename ();
0x00001d5e ldr r3, [pc, 0x54] | r3 = *(0x1db6);
0x00001d60 movw r2, 0x113 | r2 = 0x113;
0x00001d64 ldr r1, [pc, 0x70] |
0x00001d66 mov r4, r0 | r4 = r0;
0x00001d68 ldr r5, [r6, r3] | r5 = *((r6 + r3));
0x00001d6a mov r3, r0 | r3 = r0;
0x00001d6c str r2, [sp, 4] | var_4h_2 = r2;
0x00001d6e add r1, pc | r1 = 0x3b4a;
0x00001d70 ldr r2, [pc, 0x68] |
0x00001d72 adds r1, 0x68 | r1 += 0x68;
0x00001d74 str r1, [sp] | *(sp) = r1;
0x00001d76 movs r1, 1 | r1 = 1;
0x00001d78 ldr r0, [r5] | r0 = *(r5);
0x00001d7a add r2, pc | r2 = 0x3b5a;
0x00001d7c blx 0x11a4 | fprintf_chk ()
0x00001d80 ldr r0, [pc, 0x5c] |
0x00001d82 movs r2, 0x13 | r2 = 0x13;
0x00001d84 ldr r3, [r5] | r3 = *(r5);
0x00001d86 movs r1, 1 | r1 = 1;
0x00001d88 add r0, pc | r0 = 0x3b6c;
0x00001d8a blx 0x12a4 | fcn_000012a4 ();
0x00001d8e mov r0, r4 | r0 = r4;
0x00001d90 blx 0x1244 | fcn_00001244 ();
0x00001d94 b 0x1d12 | 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/libloggen_helper-3.38.so.0.0.0 @ 0x163c */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.resolve_address_using_getaddrinfo () | void resolve_address_using_getaddrinfo (int16_t arg_0h, int16_t arg1, int16_t arg2, int16_t arg3, uint32_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int32_t var_10h;
| int32_t var_10h_2;
| int32_t var_18h;
| int32_t var_18h_2;
| int32_t var_20h;
| int32_t var_20h_2;
| int16_t var_28h;
| int16_t var_2ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0000163c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00001640 mov r6, r1 | r6 = r1;
0x00001642 ldr r1, [pc, 0x130] |
0x00001644 mov r5, r2 | r5 = r2;
0x00001646 cmp r3, 0 |
0x00001648 sub sp, 0x34 |
0x0000164a ldr r2, [pc, 0x12c] | r2 = *(0x177a);
0x0000164c ite eq |
| if (r3 != 0) {
0x0000164e moveq r3, 2 | r3 = 2;
| }
| if (r3 == 0) {
0x00001650 movne r3, 0xa | r3 = 0xa;
| }
0x00001652 add r1, pc | r1 = 0x2dcc;
0x00001654 strd r3, r0, [sp, 0x10] | __asm ("strd r3, r0, [var_10h]");
0x00001658 add.w r8, sp, 8 | r8 += var_8h;
0x0000165c ldr r2, [r1, r2] |
0x0000165e movs r3, 0x28 | r3 = 0x28;
0x00001660 ldr.w sb, [pc, 0x118] |
0x00001664 add r7, sp, 0xc | r7 += var_ch;
0x00001666 movs r4, 0 | r4 = 0;
0x00001668 mov r0, r6 | r0 = r6;
0x0000166a ldr r2, [r2] | r2 = *(0x2dcc);
0x0000166c str r2, [sp, 0x2c] | var_2ch = r2;
0x0000166e mov.w r2, 0 | r2 = 0;
0x00001672 mov r1, r5 | r1 = r5;
0x00001674 str r3, [sp, 0xc] | var_ch = r3;
0x00001676 mov r2, r7 | r2 = r7;
0x00001678 mov r3, r8 | r3 = r8;
0x0000167a add sb, pc | sb = 0x2dfa;
0x0000167c strd r4, r4, [sp, 0x18] | __asm ("strd r4, r4, [var_18h]");
0x00001680 strd r4, r4, [sp, 0x20] | __asm ("strd r4, r4, [var_20h]");
0x00001684 str r4, [sp, 0x28] | var_28h = r4;
0x00001686 blx 0x1138 | r0 = getaddrinfo ();
0x0000168a cbnz r0, 0x16a8 |
| while (r0 == 0) {
0x0000168c ldr r0, [sp, 8] | r0 = var_8h;
| label_0:
0x0000168e ldr r2, [pc, 0xf0] |
0x00001690 ldr r3, [pc, 0xe4] | r3 = *(0x1778);
0x00001692 add r2, pc | r2 = 0x2e18;
0x00001694 ldr r3, [r2, r3] | r3 = *(0x2e18);
0x00001696 ldr r2, [r3] | r2 = *(0x2e18);
0x00001698 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0000169a eors r2, r3 | r2 ^= r3;
0x0000169c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000016a0 bne 0x1770 | goto label_2;
| }
0x000016a2 add sp, 0x34 |
0x000016a4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x000016a8 mov r4, r0 | r4 = r0;
0x000016aa blx 0x115c | r0 = fcn_0000115c ();
0x000016ae cmp r0, 0 |
| if (r0 != 0) {
0x000016b0 bne 0x1720 | goto label_3;
| }
| label_1:
0x000016b2 ldr r1, [sp, 0xc] | r1 = var_ch;
0x000016b4 mov r3, r8 | r3 = r8;
0x000016b6 mov r2, r7 | r2 = r7;
0x000016b8 mov r0, r6 | r0 = r6;
0x000016ba bic r1, r1, 0x20 | r1 = BIT_MASK (r1, 0x20);
0x000016be str r1, [sp, 0xc] | var_ch = r1;
0x000016c0 mov r1, r5 | r1 = r5;
0x000016c2 blx 0x1138 | r0 = getaddrinfo ();
0x000016c6 mov r4, r0 | r4 = r0;
0x000016c8 cmp r0, 0 |
0x000016ca beq 0x168c |
| }
0x000016cc ldr r0, [pc, 0xb4] |
0x000016ce add r0, pc | r0 = 0x2e56;
0x000016d0 blx 0x1180 | g_path_get_basename ();
0x000016d4 ldr r3, [pc, 0xb0] | r3 = *(0x1788);
0x000016d6 mov r7, r0 | r7 = r0;
0x000016d8 ldr r2, [pc, 0xb0] |
0x000016da movs r1, 1 | r1 = 1;
0x000016dc ldr.w r8, [sb, r3] | r8 = *((sb + r3));
0x000016e0 ldr r3, [pc, 0xac] |
0x000016e2 add r2, pc | r2 = 0x2e72;
0x000016e4 add r3, pc | r3 = 0x2e78;
0x000016e6 adds r3, 0x14 | r3 += 0x14;
0x000016e8 str r3, [sp] | *(sp) = r3;
0x000016ea movs r3, 0x6d | r3 = 0x6d;
0x000016ec ldr.w r0, [r8] | r0 = *(r8);
0x000016f0 str r3, [sp, 4] | var_4h = r3;
0x000016f2 mov r3, r7 | r3 = r7;
0x000016f4 blx 0x11a4 | fprintf_chk ()
0x000016f8 mov r0, r4 | r0 = r4;
0x000016fa ldr.w r8, [r8] | r8 = *(r8);
0x000016fe blx 0x1344 | r0 = fcn_00001344 ();
0x00001702 mov r2, r0 | r2 = r0;
0x00001704 mov r3, r6 | r3 = r6;
0x00001706 str r2, [sp, 4] | var_4h = r2;
0x00001708 movs r1, 1 | r1 = 1;
0x0000170a ldr r2, [pc, 0x88] |
0x0000170c mov r0, r8 | r0 = r8;
0x0000170e str r5, [sp] | *(sp) = r5;
0x00001710 add r2, pc | r2 = 0x2eaa;
0x00001712 blx 0x11a4 | fprintf_chk ()
0x00001716 mov r0, r7 | r0 = r7;
0x00001718 blx 0x1244 | fcn_00001244 ();
0x0000171c movs r0, 0 | r0 = 0;
0x0000171e b 0x168e | goto label_0;
| label_3:
0x00001720 ldr r0, [pc, 0x74] |
0x00001722 add r0, pc | r0 = 0x2ebe;
0x00001724 blx 0x1180 | g_path_get_basename ();
0x00001728 ldr r3, [pc, 0x70] | r3 = *(0x179c);
0x0000172a mov sl, r0 | sl = r0;
0x0000172c ldr r2, [pc, 0x70] |
0x0000172e movs r1, 1 | r1 = 1;
0x00001730 ldr.w fp, [sb, r3] | fp = *((sb + r3));
0x00001734 ldr r3, [pc, 0x6c] |
0x00001736 add r2, pc | r2 = 0x2eda;
0x00001738 add r3, pc | r3 = 0x2ee0;
0x0000173a adds r3, 0x14 | r3 += 0x14;
0x0000173c str r3, [sp] | *(sp) = r3;
0x0000173e movs r3, 0x67 | r3 = 0x67;
0x00001740 ldr.w r0, [fp] | r0 = *(fp);
0x00001744 str r3, [sp, 4] | var_4h = r3;
0x00001746 mov r3, sl | r3 = sl;
0x00001748 blx 0x11a4 | fprintf_chk ()
0x0000174c mov r0, r4 | r0 = r4;
0x0000174e ldr.w fp, [fp] | fp = *(fp);
0x00001752 blx 0x1344 | fcn_00001344 ();
0x00001756 ldr r2, [pc, 0x50] |
0x00001758 mov r3, r6 | r3 = r6;
0x0000175a str r0, [sp, 4] | var_4h = r0;
0x0000175c movs r1, 1 | r1 = 1;
0x0000175e mov r0, fp | r0 = fp;
0x00001760 str r5, [sp] | *(sp) = r5;
0x00001762 add r2, pc | r2 = 0x2f10;
0x00001764 blx 0x11a4 | fprintf_chk ()
0x00001768 mov r0, sl | r0 = sl;
0x0000176a blx 0x1244 | fcn_00001244 ();
0x0000176e b 0x16b2 | goto label_1;
| label_2:
0x00001770 blx 0x121c | r0 = stack_chk_fail ();
0x00001774 cmp r0, 0x9a |
0x00001776 movs r0, r0 |
0x00001778 lsls r4, r6, 3 | r4 = r6 << 3;
0x0000177a movs r0, r0 |
0x0000177c cmp r0, 0x72 |
0x0000177e movs r0, r0 |
0x00001780 cmp r0, 0x5a |
0x00001782 movs r0, r0 |
0x00001784 lsrs r6, r4, 0x13 | r6 = r4 >> 0x13;
0x00001786 movs r0, r0 |
0x00001788 lsls r0, r7, 3 | r0 = r7 << 3;
0x0000178a movs r0, r0 |
0x0000178c lsrs r2, r2, 0x14 | r2 >>= 0x14;
0x0000178e movs r0, r0 |
0x00001790 lsrs r0, r2, 0x1f | r0 = r2 >> 0x1f;
0x00001792 movs r0, r0 |
0x00001794 lsrs r4, r7, 0x16 | r4 = r7 >> 0x16;
0x00001796 movs r0, r0 |
0x00001798 lsrs r2, r2, 0x12 | r2 >>= 0x12;
0x0000179a movs r0, r0 |
0x0000179c lsls r4, r7, 3 | r4 = r7 << 3;
0x0000179e movs r0, r0 |
0x000017a0 lsrs r6, r5, 0x13 | r6 = r5 >> 0x13;
0x000017a2 movs r0, r0 |
0x000017a4 lsrs r4, r7, 0x1d | r4 = r7 >> 0x1d;
0x000017a6 movs r0, r0 |
0x000017a8 lsrs r2, r7, 0x14 | r2 = r7 >> 0x14;
0x000017aa movs r0, r0 |
| }
[*] Function printf used 28 times libloggen_helper-3.38.so.0.0.0