[*] Binary protection state of libportservice-api-handler.so.0.0.1
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function system tear down of libportservice-api-handler.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/libportservice-api-handler.so.0.0.1 @ 0x6e1c */
| #include <stdint.h>
|
; (fcn) sym.port_io_proxy_new_finish () | void port_io_proxy_new_finish (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00006e1c push {r4, r5, r6, lr} |
0x00006e1e mov r6, r1 | r6 = r1;
0x00006e20 mov r5, r0 | r5 = r0;
0x00006e22 blx 0x4e34 | r0 = g_set_error ();
0x00006e26 mov r4, r0 | r4 = r0;
0x00006e28 blx 0x492c | r0 = fcn_0000492c ();
0x00006e2c mov r1, r0 | r1 = r0;
0x00006e2e mov r0, r4 | r0 = r4;
0x00006e30 blx 0x5018 | fcn_00005018 ();
0x00006e34 mov r1, r5 | r1 = r5;
0x00006e36 mov r2, r6 | r2 = r6;
0x00006e38 blx 0x4974 | r0 = fcn_00004974 ();
0x00006e3c mov r5, r0 | r5 = r0;
0x00006e3e mov r0, r4 | r0 = r4;
0x00006e40 blx 0x49bc | fcn_000049bc ();
| if (r5 != 0) {
0x00006e44 cbz r5, 0x6e56 |
0x00006e46 blx 0x49c8 | r0 = fcn_000049c8 ();
0x00006e4a mov r1, r0 | r1 = r0;
0x00006e4c mov r0, r5 | r0 = r5;
0x00006e4e pop.w {r4, r5, r6, lr} |
0x00006e52 b.w 0x5014 | void (*0x5014)() ();
| }
0x00006e56 mov r0, r5 | r0 = r5;
0x00006e58 pop {r4, r5, r6, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libportservice-api-handler.so.0.0.1 @ 0x6f4c */
| #include <stdint.h>
|
; (fcn) sym.port_io_proxy_new_for_bus_sync () | void port_io_proxy_new_for_bus_sync (int16_t arg_48h, int16_t arg_4ch, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00006f4c push.w {r4, r5, r6, r7, r8, sb, lr} |
0x00006f50 mov r4, r2 | r4 = r2;
0x00006f52 sub sp, 0x2c |
0x00006f54 mov r5, r1 | r5 = r1;
0x00006f56 mov r7, r3 | r7 = r3;
0x00006f58 mov r6, r0 | r6 = r0;
0x00006f5a blx 0x4cf4 | fcn_00004cf4 ();
0x00006f5e str r4, [sp, 8] | var_8h = r4;
0x00006f60 ldr r4, [pc, 0x54] |
0x00006f62 ldr.w r8, [sp, 0x48] | r8 = *(arg_48h);
0x00006f66 ldr.w sb, [sp, 0x4c] | sb = *(arg_4ch);
0x00006f6a add r4, pc | r4 = 0xdf26;
0x00006f6c ldr r3, [pc, 0x4c] |
0x00006f6e str r4, [sp, 4] | var_4h = r4;
0x00006f70 mov r1, r8 | r1 = r8;
0x00006f72 ldr r4, [pc, 0x4c] |
0x00006f74 mov r2, sb | r2 = sb;
0x00006f76 add r3, pc | r3 = 0xdf36;
0x00006f78 str r7, [sp, 0x18] | var_18h = r7;
0x00006f7a str r6, [sp, 0x10] | var_10h = r6;
0x00006f7c add r4, pc | r4 = 0xdf42;
0x00006f7e str r5, [sp] | *(sp) = r5;
0x00006f80 str r4, [sp, 0x20] | var_20h = r4;
0x00006f82 ldr r4, [pc, 0x40] |
0x00006f84 add r4, pc | r4 = 0xdf4e;
0x00006f86 str r4, [sp, 0x1c] | var_1ch = r4;
0x00006f88 ldr r4, [pc, 0x3c] |
0x00006f8a add r4, pc | r4 = 0xdf56;
0x00006f8c str r4, [sp, 0x14] | var_14h = r4;
0x00006f8e ldr r4, [pc, 0x3c] |
0x00006f90 add r4, pc | r4 = 0xdf62;
0x00006f92 str r4, [sp, 0xc] | var_ch = r4;
0x00006f94 movs r4, 0 | r4 = 0;
0x00006f96 str r4, [sp, 0x24] | var_24h = r4;
0x00006f98 blx 0x4f3c | r0 = domain_io_get_mode ();
| if (r0 != 0) {
0x00006f9c cbz r0, 0x6fb2 |
0x00006f9e mov r4, r0 | r4 = r0;
0x00006fa0 blx 0x49c8 | r0 = fcn_000049c8 ();
0x00006fa4 mov r1, r0 | r1 = r0;
0x00006fa6 mov r0, r4 | r0 = r4;
0x00006fa8 add sp, 0x2c |
0x00006faa pop.w {r4, r5, r6, r7, r8, sb, lr} |
0x00006fae b.w 0x5014 | void (*0x5014)() ();
| }
0x00006fb2 add sp, 0x2c |
0x00006fb4 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libportservice-api-handler.so.0.0.1 @ 0x6e5c */
| #include <stdint.h>
|
; (fcn) sym.port_io_proxy_new_sync () | void port_io_proxy_new_sync (int16_t arg_48h, int16_t arg_4ch, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00006e5c push.w {r4, r5, r6, r7, r8, sb, lr} |
0x00006e60 mov r4, r2 | r4 = r2;
0x00006e62 sub sp, 0x2c |
0x00006e64 mov r5, r1 | r5 = r1;
0x00006e66 mov r7, r3 | r7 = r3;
0x00006e68 mov r6, r0 | r6 = r0;
0x00006e6a blx 0x4cf4 | fcn_00004cf4 ();
0x00006e6e str r4, [sp, 8] | var_8h = r4;
0x00006e70 ldr r4, [pc, 0x54] |
0x00006e72 ldr.w r8, [sp, 0x48] | r8 = *(arg_48h);
0x00006e76 ldr.w sb, [sp, 0x4c] | sb = *(arg_4ch);
0x00006e7a add r4, pc | r4 = 0xdd46;
0x00006e7c ldr r3, [pc, 0x4c] |
0x00006e7e str r4, [sp, 4] | var_4h = r4;
0x00006e80 mov r1, r8 | r1 = r8;
0x00006e82 ldr r4, [pc, 0x4c] |
0x00006e84 mov r2, sb | r2 = sb;
0x00006e86 add r3, pc | r3 = 0xdd56;
0x00006e88 str r7, [sp, 0x18] | var_18h = r7;
0x00006e8a str r6, [sp, 0x10] | var_10h = r6;
0x00006e8c add r4, pc | r4 = 0xdd62;
0x00006e8e str r5, [sp] | *(sp) = r5;
0x00006e90 str r4, [sp, 0x20] | var_20h = r4;
0x00006e92 ldr r4, [pc, 0x40] |
0x00006e94 add r4, pc | r4 = 0xdd6e;
0x00006e96 str r4, [sp, 0x1c] | var_1ch = r4;
0x00006e98 ldr r4, [pc, 0x3c] |
0x00006e9a add r4, pc | r4 = 0xdd76;
0x00006e9c str r4, [sp, 0x14] | var_14h = r4;
0x00006e9e ldr r4, [pc, 0x3c] |
0x00006ea0 add r4, pc | r4 = 0xdd82;
0x00006ea2 str r4, [sp, 0xc] | var_ch = r4;
0x00006ea4 movs r4, 0 | r4 = 0;
0x00006ea6 str r4, [sp, 0x24] | var_24h = r4;
0x00006ea8 blx 0x4f3c | r0 = domain_io_get_mode ();
| if (r0 != 0) {
0x00006eac cbz r0, 0x6ec2 |
0x00006eae mov r4, r0 | r4 = r0;
0x00006eb0 blx 0x49c8 | r0 = fcn_000049c8 ();
0x00006eb4 mov r1, r0 | r1 = r0;
0x00006eb6 mov r0, r4 | r0 = r4;
0x00006eb8 add sp, 0x2c |
0x00006eba pop.w {r4, r5, r6, r7, r8, sb, lr} |
0x00006ebe b.w 0x5014 | void (*0x5014)() ();
| }
0x00006ec2 add sp, 0x2c |
0x00006ec4 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libportservice-api-handler.so.0.0.1 @ 0x7b84 */
| #include <stdint.h>
|
; (fcn) sym.port_io_skeleton_new () | void port_io_skeleton_new () {
0x00007b84 push {r4, lr} |
0x00007b86 blx 0x4950 | fcn_00004950 ();
0x00007b8a movs r1, 0 | r1 = 0;
0x00007b8c blx 0x4c48 | r0 = g_object_ref ();
0x00007b90 mov r4, r0 | r4 = r0;
0x00007b92 blx 0x49c8 | r0 = fcn_000049c8 ();
0x00007b96 mov r1, r0 | r1 = r0;
0x00007b98 mov r0, r4 | r0 = r4;
0x00007b9a pop.w {r4, lr} |
0x00007b9e b.w 0x5014 | return void (*0x5014)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libportservice-api-handler.so.0.0.1 @ 0x7d7c */
| #include <stdint.h>
|
; (fcn) sym.port_object_get_io () | void port_object_get_io (int16_t arg1) {
| r0 = arg1;
0x00007d7c push {r4, lr} |
0x00007d7e mov r4, r0 | r4 = r0;
0x00007d80 blx 0x48e0 | r0 = fcn_000048e0 ();
0x00007d84 mov r1, r0 | r1 = r0;
0x00007d86 mov r0, r4 | r0 = r4;
0x00007d88 blx 0x5018 | fcn_00005018 ();
0x00007d8c ldr r1, [pc, 0x1c] |
0x00007d8e add r1, pc | r1 = 0xfb3e;
0x00007d90 blx 0x4b98 | r0 = fcn_00004b98 ();
| if (r0 == 0) {
0x00007d94 cbz r0, 0x7da8 | goto label_0;
| }
0x00007d96 mov r4, r0 | r4 = r0;
0x00007d98 blx 0x49c8 | r0 = fcn_000049c8 ();
0x00007d9c mov r1, r0 | r1 = r0;
0x00007d9e mov r0, r4 | r0 = r4;
0x00007da0 pop.w {r4, lr} |
0x00007da4 invalid |
| if (r6 != 0) {
0x00007da6 cbnz r6, 0x7db6 | void (*0x7db6)() ();
| }
| label_0:
0x00007da8 pop {r4, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libportservice-api-handler.so.0.0.1 @ 0x82f0 */
| #include <stdint.h>
|
; (fcn) sym.port_object_manager_client_new_finish () | void port_object_manager_client_new_finish (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x000082f0 push {r4, r5, r6, lr} |
0x000082f2 mov r6, r1 | r6 = r1;
0x000082f4 mov r5, r0 | r5 = r0;
0x000082f6 blx 0x4e34 | r0 = g_set_error ();
0x000082fa mov r4, r0 | r4 = r0;
0x000082fc blx 0x492c | r0 = fcn_0000492c ();
0x00008300 mov r1, r0 | r1 = r0;
0x00008302 mov r0, r4 | r0 = r4;
0x00008304 blx 0x5018 | fcn_00005018 ();
0x00008308 mov r1, r5 | r1 = r5;
0x0000830a mov r2, r6 | r2 = r6;
0x0000830c blx 0x4974 | r0 = fcn_00004974 ();
0x00008310 mov r5, r0 | r5 = r0;
0x00008312 mov r0, r4 | r0 = r4;
0x00008314 blx 0x49bc | fcn_000049bc ();
0x00008316 adcs.w r1, r2, sp, ror 12 | __asm ("adcs.w r1, r2, sp, ror 12");
0x0000831a blx 0x4d50 | r0 = g_main_context_ref_thread_default ();
0x0000831e mov r1, r0 | r1 = r0;
0x00008320 mov r0, r5 | r0 = r5;
0x00008322 pop.w {r4, r5, r6, lr} |
0x00008326 b.w 0x5014 | return void (*0x5014)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libportservice-api-handler.so.0.0.1 @ 0x8430 */
| #include <stdint.h>
|
; (fcn) sym.port_object_manager_client_new_for_bus_sync () | void port_object_manager_client_new_for_bus_sync (int16_t arg_40h, int16_t arg_44h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00008430 push.w {r4, r5, r6, r7, r8, lr} |
0x00008434 sub sp, 0x28 |
0x00008436 mov r4, r2 | r4 = r2;
0x00008438 mov r5, r1 | r5 = r1;
0x0000843a mov r7, r3 | r7 = r3;
0x0000843c mov r6, r0 | r6 = r0;
0x0000843e blx 0x4844 | fcn_00004844 ();
0x00008442 ldr r2, [pc, 0x5c] |
0x00008444 mov.w ip, 0 |
0x00008448 ldr r3, [pc, 0x58] | r3 = *(0x84a4);
0x0000844a str.w ip, [sp, 0x24] | __asm ("str.w ip, [var_24h]");
0x0000844e add r2, pc | r2 = 0x108f4;
0x00008450 ldr.w r8, [sp, 0x40] | r8 = *(arg_40h);
0x00008454 ldr r3, [r2, r3] | r3 = *(0x108f4);
0x00008456 ldr r2, [pc, 0x50] |
0x00008458 str r4, [sp, 8] | var_8h = r4;
0x0000845a mov r1, r8 | r1 = r8;
0x0000845c ldr r4, [pc, 0x4c] |
0x0000845e add r2, pc | r2 = 0x1090c;
0x00008460 str r3, [sp, 0x20] | var_20h = r3;
0x00008462 str r2, [sp, 0x14] | var_14h = r2;
0x00008464 add r4, pc | r4 = 0x10914;
0x00008466 ldr r2, [pc, 0x48] |
0x00008468 str r4, [sp, 0x1c] | var_1ch = r4;
0x0000846a ldr r4, [pc, 0x48] |
0x0000846c ldr r3, [pc, 0x48] |
0x0000846e add r2, pc | r2 = 0x10924;
0x00008470 str r2, [sp, 4] | var_4h = r2;
0x00008472 add r4, pc | r4 = 0x1092c;
0x00008474 ldr r2, [sp, 0x44] | r2 = *(arg_44h);
0x00008476 add r3, pc | r3 = 0x10932;
0x00008478 str r7, [sp, 0x18] | var_18h = r7;
0x0000847a str r6, [sp, 0x10] | var_10h = r6;
0x0000847c str r5, [sp] | *(sp) = r5;
0x0000847e str r4, [sp, 0xc] | var_ch = r4;
0x00008480 blx 0x4f3c | r0 = domain_io_get_mode ();
| if (r0 != 0) {
0x00008484 cbz r0, 0x849a |
0x00008486 mov r4, r0 | r4 = r0;
0x00008488 blx 0x4d50 | r0 = g_main_context_ref_thread_default ();
0x0000848c mov r1, r0 | r1 = r0;
0x0000848e mov r0, r4 | r0 = r4;
0x00008490 add sp, 0x28 |
0x00008492 pop.w {r4, r5, r6, r7, r8, lr} |
0x00008496 b.w 0x5014 | void (*0x5014)() ();
| }
0x0000849a add sp, 0x28 |
0x0000849c pop.w {r4, r5, r6, r7, r8, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libportservice-api-handler.so.0.0.1 @ 0x8330 */
| #include <stdint.h>
|
; (fcn) sym.port_object_manager_client_new_sync () | void port_object_manager_client_new_sync (int16_t arg_40h, int16_t arg_44h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00008330 push.w {r4, r5, r6, r7, r8, lr} |
0x00008334 sub sp, 0x28 |
0x00008336 mov r4, r2 | r4 = r2;
0x00008338 mov r5, r1 | r5 = r1;
0x0000833a mov r7, r3 | r7 = r3;
0x0000833c mov r6, r0 | r6 = r0;
0x0000833e blx 0x4844 | fcn_00004844 ();
0x00008342 ldr r2, [pc, 0x5c] |
0x00008344 mov.w ip, 0 |
0x00008348 ldr r3, [pc, 0x58] | r3 = *(0x83a4);
0x0000834a str.w ip, [sp, 0x24] | __asm ("str.w ip, [var_24h]");
0x0000834e add r2, pc | r2 = 0x106f4;
0x00008350 ldr.w r8, [sp, 0x40] | r8 = *(arg_40h);
0x00008354 ldr r3, [r2, r3] | r3 = *(0x106f4);
0x00008356 ldr r2, [pc, 0x50] |
0x00008358 str r4, [sp, 8] | var_8h = r4;
0x0000835a mov r1, r8 | r1 = r8;
0x0000835c ldr r4, [pc, 0x4c] |
0x0000835e add r2, pc | r2 = 0x1070c;
0x00008360 str r3, [sp, 0x20] | var_20h = r3;
0x00008362 str r2, [sp, 0x14] | var_14h = r2;
0x00008364 add r4, pc | r4 = 0x10714;
0x00008366 ldr r2, [pc, 0x48] |
0x00008368 str r4, [sp, 0x1c] | var_1ch = r4;
0x0000836a ldr r4, [pc, 0x48] |
0x0000836c ldr r3, [pc, 0x48] |
0x0000836e add r2, pc | r2 = 0x10724;
0x00008370 str r2, [sp, 4] | var_4h = r2;
0x00008372 add r4, pc | r4 = 0x1072c;
0x00008374 ldr r2, [sp, 0x44] | r2 = *(arg_44h);
0x00008376 add r3, pc | r3 = 0x10732;
0x00008378 str r7, [sp, 0x18] | var_18h = r7;
0x0000837a str r6, [sp, 0x10] | var_10h = r6;
0x0000837c str r5, [sp] | *(sp) = r5;
0x0000837e str r4, [sp, 0xc] | var_ch = r4;
0x00008380 blx 0x4f3c | r0 = domain_io_get_mode ();
| if (r0 != 0) {
0x00008384 cbz r0, 0x839a |
0x00008386 mov r4, r0 | r4 = r0;
0x00008388 blx 0x4d50 | r0 = g_main_context_ref_thread_default ();
0x0000838c mov r1, r0 | r1 = r0;
0x0000838e mov r0, r4 | r0 = r4;
0x00008390 add sp, 0x28 |
0x00008392 pop.w {r4, r5, r6, r7, r8, lr} |
0x00008396 b.w 0x5014 | void (*0x5014)() ();
| }
0x0000839a add sp, 0x28 |
0x0000839c pop.w {r4, r5, r6, r7, r8, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libportservice-api-handler.so.0.0.1 @ 0x7db0 */
| #include <stdint.h>
|
; (fcn) sym.port_object_peek_io () | void port_object_peek_io (int16_t arg1) {
| r0 = arg1;
0x00007db0 push {r4, lr} |
0x00007db2 mov r4, r0 | r4 = r0;
0x00007db4 blx 0x48e0 | r0 = fcn_000048e0 ();
0x00007db8 mov r1, r0 | r1 = r0;
0x00007dba mov r0, r4 | r0 = r4;
0x00007dbc blx 0x5018 | fcn_00005018 ();
0x00007dc0 ldr r1, [pc, 0x20] |
0x00007dc2 add r1, pc | r1 = 0xfbaa;
0x00007dc4 blx 0x4b98 | r0 = fcn_00004b98 ();
| if (r0 != 0) {
0x00007dc8 cbz r0, 0x7de0 |
0x00007dca mov r4, r0 | r4 = r0;
0x00007dcc blx 0x49bc | fcn_000049bc ();
0x00007dd0 blx 0x49c8 | r0 = fcn_000049c8 ();
0x00007dd4 mov r1, r0 | r1 = r0;
0x00007dd6 mov r0, r4 | r0 = r4;
0x00007dd8 pop.w {r4, lr} |
0x00007ddc b.w 0x5014 | void (*0x5014)() ();
| }
0x00007de0 pop {r4, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libportservice-api-handler.so.0.0.1 @ 0x7f5c */
| #include <stdint.h>
|
; (fcn) sym.port_object_proxy_new () | void port_object_proxy_new (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
0x00007f5c push {r4, r5, r6, lr} |
0x00007f5e sub sp, 8 |
| if (r0 != 0) {
0x00007f60 cbz r0, 0x7fc6 |
0x00007f62 mov r4, r0 | r4 = r0;
0x00007f64 mov r6, r1 | r6 = r1;
0x00007f66 blx 0x4f54 | domain_io_get_type ();
0x00007f6a ldr r3, [r4] | r3 = *(r4);
0x00007f6c mov r1, r0 | r1 = r0;
| if (r3 != 0) {
0x00007f6e cbz r3, 0x7f76 |
0x00007f70 ldr r3, [r3] | r3 = *(r3);
0x00007f72 cmp r3, r0 |
| if (r3 == r0) {
0x00007f74 beq 0x7f7e | goto label_0;
| }
| }
0x00007f76 mov r0, r4 | r0 = r4;
0x00007f78 blx 0x4f48 | r0 = interface_definition_destroy ();
| if (r0 == 0) {
0x00007f7c cbz r0, 0x7fc6 | goto label_1;
| }
| label_0:
0x00007f7e mov r0, r6 | r0 = r6;
0x00007f80 blx 0x4e28 | r0 = fcn_00004e28 ();
| if (r0 == 0) {
0x00007f84 cbnz r0, 0x7fa0 |
0x00007f86 ldr r1, [pc, 0x58] |
0x00007f88 ldr r2, [pc, 0x58] |
0x00007f8a ldr r0, [pc, 0x5c] |
0x00007f8c add r1, pc |
0x00007f8e add r2, pc | r2 = 0xff76;
0x00007f90 add.w r1, r1, 0x100 | r1 = 0x10072;
0x00007f94 add r0, pc | r0 = 0xff82;
0x00007f96 blx 0x4e04 | g_async_result_get_source_object ();
0x00007f9a movs r0, 0 | r0 = 0;
0x00007f9c add sp, 8 |
0x00007f9e pop {r4, r5, r6, pc} |
| }
0x00007fa0 blx 0x4e44 | fcn_00004e44 ();
0x00007fa4 movs r3, 0 | r3 = 0;
0x00007fa6 ldr r1, [pc, 0x44] |
0x00007fa8 str r3, [sp, 4] | var_4h = r3;
0x00007faa mov r5, r0 | r5 = r0;
0x00007fac ldr r3, [pc, 0x40] |
0x00007fae mov r2, r4 | r2 = r4;
0x00007fb0 add r1, pc | r1 = 0xffa2;
0x00007fb2 str r6, [sp] | *(sp) = r6;
0x00007fb4 add r3, pc | r3 = 0xffa8;
0x00007fb6 blx 0x4c48 | g_object_ref ();
0x00007fba mov r1, r5 | r1 = r5;
0x00007fbc add sp, 8 |
0x00007fbe pop.w {r4, r5, r6, lr} |
0x00007fc2 b.w 0x5014 | void (*0x5014)() ();
| }
| label_1:
0x00007fc6 ldr r1, [pc, 0x2c] |
0x00007fc8 ldr r2, [pc, 0x2c] |
0x00007fca ldr r0, [pc, 0x30] |
0x00007fcc add r1, pc |
0x00007fce add r2, pc | r2 = 0xffca;
0x00007fd0 add.w r1, r1, 0x100 | r1 = 0x100c6;
0x00007fd4 add r0, pc | r0 = 0xffd6;
0x00007fd6 blx 0x4e04 | g_async_result_get_source_object ();
0x00007fda movs r0, 0 | r0 = 0;
0x00007fdc add sp, 8 |
0x00007fde pop {r4, r5, r6, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libportservice-api-handler.so.0.0.1 @ 0x81d0 */
| #include <stdint.h>
|
; (fcn) sym.port_object_skeleton_new () | void port_object_skeleton_new (int16_t arg1) {
| r0 = arg1;
0x000081d0 invalid |
0x000081d4 blx 0x4e28 | r0 = fcn_00004e28 ();
| if (r0 == 0) {
0x000081d8 cbnz r0, 0x81f4 |
0x000081da mov r4, r0 | r4 = r0;
0x000081dc ldr r1, [pc, 0x30] |
0x000081de ldr r2, [pc, 0x34] |
0x000081e0 ldr r0, [pc, 0x34] |
0x000081e2 add r1, pc |
0x000081e4 add r2, pc | r2 = 0x103fe;
0x000081e6 add.w r1, r1, 0x13c | r1 = 0x10532;
0x000081ea add r0, pc | r0 = 0x10406;
0x000081ec blx 0x4e04 | g_async_result_get_source_object ();
0x000081f0 mov r0, r4 | r0 = r4;
0x000081f2 pop {r3, r4, r5, pc} |
| }
0x000081f4 blx 0x549c | fcn_0000549c ();
0x000081f8 ldr r1, [pc, 0x20] |
0x000081fa mov r4, r0 | r4 = r0;
0x000081fc movs r3, 0 | r3 = 0;
0x000081fe mov r2, r5 | r2 = r5;
0x00008200 add r1, pc | r1 = 0x10420;
0x00008202 blx 0x4c48 | g_object_ref ();
0x00008206 mov r1, r4 | r1 = r4;
0x00008208 pop.w {r3, r4, r5, lr} |
0x0000820c b.w 0x5014 | return void (*0x5014)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libportservice-api-handler.so.0.0.1 @ 0x9934 */
| #include <stdint.h>
|
; (fcn) sym.request_ps_populate_io_new () | void request_ps_populate_io_new (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00009934 push {r3, r4, r5, lr} |
0x00009936 mov r5, r1 | r5 = r1;
0x00009938 mov r4, r0 | r4 = r0;
0x0000993a blx 0x53ac | fcn_000053ac ();
0x0000993e ldr r1, [pc, 0x20] |
0x00009940 movs r3, 0 | r3 = 0;
0x00009942 mov r2, r4 | r2 = r4;
0x00009944 add r1, pc | r1 = 0x132aa;
0x00009946 blx 0x4c48 | r0 = g_object_ref ();
0x0000994a mov r4, r0 | r4 = r0;
0x0000994c str r5, [r0, 0xc] | *((r0 + 0xc)) = r5;
0x0000994e blx 0x4d8c | r0 = g_idle_source_new ();
0x00009952 mov r1, r0 | r1 = r0;
0x00009954 mov r0, r4 | r0 = r4;
0x00009956 pop.w {r3, r4, r5, lr} |
0x0000995a b.w 0x5014 | return void (*0x5014)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libportservice-api-handler.so.0.0.1 @ 0x9cf0 */
| #include <stdint.h>
|
; (fcn) sym.request_ps_populate_io_state_new () | void request_ps_populate_io_state_new (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00009cf0 push {r3, r4, r5, lr} |
0x00009cf2 mov r5, r1 | r5 = r1;
0x00009cf4 mov r4, r0 | r4 = r0;
0x00009cf6 blx 0x4e1c | g_object_set ();
0x00009cfa ldr r1, [pc, 0x20] |
0x00009cfc movs r3, 0 | r3 = 0;
0x00009cfe mov r2, r4 | r2 = r4;
0x00009d00 add r1, pc | r1 = 0x13a22;
0x00009d02 blx 0x4c48 | r0 = g_object_ref ();
0x00009d06 mov r4, r0 | r4 = r0;
0x00009d08 str r5, [r0, 0xc] | *((r0 + 0xc)) = r5;
0x00009d0a blx 0x4d8c | r0 = g_idle_source_new ();
0x00009d0e mov r1, r0 | r1 = r0;
0x00009d10 mov r0, r4 | r0 = r4;
0x00009d12 pop.w {r3, r4, r5, lr} |
0x00009d16 b.w 0x5014 | return void (*0x5014)() ();
| }
[*] Function system used 1 times libportservice-api-handler.so.0.0.1