[*] Binary protection state of libgio-2.0.so.0.5600.4
Partial RELRO No Canary found NX disabled DSO No RPATH No RUNPATH No Symbols
[*] Function fprintf tear down of libgio-2.0.so.0.5600.4
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libgio-2.0.so.0.5600.4 @ 0x2e594 */
| #include <stdint.h>
|
; (fcn) entry.fini0 () | void entry_fini0 () {
0x0002e594 ldr r3, [pc, 0x68] | r3 = *(0x2e600);
0x0002e598 push {r4, lr} |
0x0002e59c ldr r4, [pc, 0x64] | r4 = "_get_drive";
0x0002e5a0 add r3, pc, r3 | r3 = pc + r3;
0x0002e5a4 ldrb r3, [r3] | r3 = *(r3);
0x0002e5a8 add r4, pc, r4 | r4 = pc + r4;
0x0002e5ac cmp r3, 0 |
0x0002e5b0 popne {r4, pc} |
0x0002e5b4 ldr r3, [pc, 0x50] | r3 = "se_lookup_certificates_issued_by_async";
0x0002e5b8 ldr r3, [r4, r3] | r3 = "_get_drive";
0x0002e5bc cmp r3, 0 |
| if (r3 != 0) {
0x0002e5c0 beq 0x2e5d0 |
0x0002e5c4 ldr r3, [pc, 0x44] | r3 = *(0x2e60c);
0x0002e5c8 ldr r0, [pc, r3] | r0 = *(0x0002e5d0);
0x0002e5cc bl 0x2bd6c | cxa_finalize ();
| }
0x0002e5d0 bl 0x2e4d8 | entry0 ();
0x0002e5d4 ldr r3, [pc, 0x38] | r3 = "_server_identity";
0x0002e5d8 ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x0002e5dc cmp r3, 0 |
| if (r3 != 0) {
0x0002e5e0 beq 0x2e5f0 |
0x0002e5e4 ldr r0, [pc, 0x2c] | r0 = *(0x2e614);
0x0002e5e8 add r0, pc, r0 | r0 = pc + r0;
0x0002e5ec bl 0x2d62c | loc_imp_deregister_frame_info ();
| }
0x0002e5f0 ldr r3, [pc, 0x24] | r3 = *(0x2e618);
0x0002e5f4 mov r2, 1 | r2 = 1;
0x0002e5f8 add r3, pc, r3 | r3 = pc + r3;
0x0002e5fc strb r2, [r3] | *(r3) = r2;
0x0002e600 pop {r4, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libgio-2.0.so.0.5600.4 @ 0x688b4 */
| #include <stdint.h>
|
; (fcn) fcn.000688b4 () | void fcn_000688b4 (int32_t arg1) {
| r0 = arg1;
0x000688b4 push {r4, r5, r6, r7, r8, lr} |
0x000688b8 mov r5, r0 | r5 = r0;
0x000688bc bl 0x87e98 | g_task_get_source_object ();
0x000688c0 ldr r3, [r0, 0x14] | r3 = *((r0 + 0x14));
0x000688c4 mov r4, r0 | r4 = r0;
0x000688c8 cmp r3, 0 |
| if (r3 != 0) {
0x000688cc bne 0x68928 | goto label_0;
| }
0x000688d0 ldr r3, [r0, 0x18] | r3 = *((r0 + 0x18));
0x000688d4 cmp r3, 0 |
| if (r3 == 0) {
0x000688d8 beq 0x68928 | goto label_0;
| }
0x000688dc ldr r6, [r3] | r6 = *(r3);
0x000688e0 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000688e4 str r3, [r0, 0x18] | *((r0 + 0x18)) = r3;
0x000688e8 mov r0, r6 | r0 = r6;
0x000688ec bl 0x866b8 | r0 = g_srv_target_get_hostname ();
0x000688f0 mov r7, r0 | r7 = r0;
0x000688f4 mov r0, r6 | r0 = r6;
0x000688f8 bl 0x866c0 | r0 = g_srv_target_get_port ();
0x000688fc mov r1, r0 | r1 = r0;
0x00068900 mov r0, r7 | r0 = r7;
0x00068904 bl 0x66910 | g_network_address_new ();
0x00068908 ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x0006890c cmp r3, 0 |
0x00068910 mov r6, r0 | r6 = r0;
| if (r3 == 0) {
0x00068914 beq 0x68958 | goto label_1;
| }
0x00068918 bl 0x7f5d4 | g_socket_connectable_proxy_enumerate ();
| do {
0x0006891c str r0, [r4, 0x14] | *((r4 + 0x14)) = r0;
0x00068920 mov r0, r6 | r0 = r6;
0x00068924 bl 0x2bec8 | g_object_unref ();
| label_0:
0x00068928 ldr r6, [r4, 0x14] | r6 = *((r4 + 0x14));
0x0006892c cmp r6, 0 |
| if (r6 == 0) {
0x00068930 beq 0x68960 | goto label_2;
| }
0x00068934 mov r0, r5 | r0 = r5;
0x00068938 bl 0x88088 | g_task_get_cancellable ();
0x0006893c ldr r2, [pc, 0x4c] | r2 = *(0x6898c);
0x00068940 mov r3, r5 | r3 = r5;
0x00068944 add r2, pc, r2 | r2 = pc + r2;
0x00068948 mov r1, r0 | r1 = r0;
0x0006894c mov r0, r6 | r0 = r6;
0x00068950 pop {r4, r5, r6, r7, r8, lr} |
0x00068954 b 0x7d44c | void (*0x7d44c)() ();
| label_1:
0x00068958 bl 0x7f544 | g_socket_connectable_enumerate ();
0x0006895c b 0x6891c |
| } while (1);
| label_2:
0x00068960 ldr r2, [r4, 0x20] | r2 = *((r4 + 0x20));
0x00068964 mov r0, r5 | r0 = r5;
0x00068968 cmp r2, 0 |
0x0006896c mov r1, r2 | r1 = r2;
| if (r2 == 0) {
0x00068970 beq 0x68988 | goto label_3;
| }
0x00068974 bl 0x88e4c | g_task_return_error ();
0x00068978 str r6, [r4, 0x20] | *((r4 + 0x20)) = r6;
| do {
0x0006897c mov r0, r5 | r0 = r5;
0x00068980 pop {r4, r5, r6, r7, r8, lr} |
0x00068984 b 0x2bec8 | void (*0x2bec8)() ();
| label_3:
0x00068988 bl 0x88970 | g_task_return_pointer ();
0x0006898c b 0x6897c |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libgio-2.0.so.0.5600.4 @ 0xa6388 */
| #include <stdint.h>
|
; (fcn) fcn.000a6388 () | void fcn_000a6388 (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_20h;
| int32_t var_24h;
| int32_t var_2ch;
| int32_t var_34h;
| r0 = arg1;
| r1 = arg2;
0x000a6388 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000a638c ldr r5, [r0, 0x18] | r5 = *((r0 + 0x18));
0x000a6390 ldr r7, [pc, 0x1b8] | r7 = *(0xa654c);
0x000a6394 cmp r5, 0 |
0x000a6398 add r7, pc, r7 | r7 = pc + r7;
0x000a639c sub sp, sp, 0x34 |
| if (r5 == 0) {
0x000a63a0 bne 0xa6470 |
0x000a63a4 ldr r3, [pc, 0x1a8] | r3 = *(0xa6550);
0x000a63a8 str r5, [sp, 0x14] | var_14h = r5;
0x000a63ac add r3, pc, r3 | r3 = pc + r3;
0x000a63b0 str r5, [sp, 8] | var_8h = r5;
0x000a63b4 str r5, [sp, 4] | var_4h = r5;
0x000a63b8 str r0, [sp, 0x10] | var_10h = r0;
0x000a63bc str r3, [sp, 0xc] | var_ch = r3;
0x000a63c0 ldr r3, [r0, 0x14] | r3 = *((r0 + 0x14));
0x000a63c4 ldr r6, [pc, 0x18c] | r6 = *(0xa6554);
0x000a63c8 str r3, [sp] | *(sp) = r3;
0x000a63cc ldr r3, [pc, 0x188] | r3 = *(0xa6558);
0x000a63d0 add r6, pc, r6 | r6 = pc + r6;
0x000a63d4 mov r4, r0 | r4 = r0;
0x000a63d8 add r3, pc, r3 | r3 = pc + r3;
0x000a63dc mov sl, r1 | sl = r1;
0x000a63e0 mov fp, r2 |
0x000a63e4 ldr r1, [r0, 0x10] | r1 = *((r0 + 0x10));
0x000a63e8 mov r2, r6 | r2 = r6;
0x000a63ec ldr r0, [r0, 0xc] | r0 = *((r0 + 0xc));
0x000a63f0 bl 0xc0598 | g_dbus_connection_signal_subscribe ();
0x000a63f4 ldr r8, [pc, 0x164] | r8 = *(0xa655c);
0x000a63f8 ldr r1, [r4, 0x10] | r1 = *((r4 + 0x10));
0x000a63fc ldr r2, [r4, 0x14] | r2 = *((r4 + 0x14));
0x000a6400 add r8, pc, r8 | r8 = pc + r8;
0x000a6404 ldr sb, [r4, 0xc] | sb = *((r4 + 0xc));
0x000a6408 str r1, [sp, 0x24] | var_24h = r1;
0x000a640c str r2, [sp, 0x20] | var_20h = r2;
0x000a6410 str r0, [r4, 0x18] | *((r4 + 0x18)) = r0;
0x000a6414 mov r0, r8 | r0 = r8;
0x000a6418 bl 0x2bd48 | g_variant_type_checked_ ();
0x000a641c mvn r3, 0 | r3 = ~0;
0x000a6420 str r3, [sp, 0x10] | var_10h = r3;
0x000a6424 ldr r3, [pc, 0x138] | r3 = *(0xa6560);
0x000a6428 str r5, [sp, 0xc] | var_ch = r5;
0x000a642c add r3, pc, r3 | r3 = pc + r3;
0x000a6430 str r5, [sp, 4] | var_4h = r5;
0x000a6434 str r3, [sp] | *(sp) = r3;
0x000a6438 str fp, [sp, 0x18] | var_18h = fp;
0x000a643c str sl, [sp, 0x14] | var_14h = sl;
0x000a6440 mov r3, r6 | r3 = r6;
0x000a6444 ldr r2, [sp, 0x20] | r2 = var_20h;
0x000a6448 ldr r1, [sp, 0x24] | r1 = var_24h;
0x000a644c str r0, [sp, 8] | var_8h = r0;
0x000a6450 mov r0, sb | r0 = sb;
0x000a6454 bl 0xc1808 | r0 = g_dbus_connection_call_sync ();
0x000a6458 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x000a645c bne 0xa64a0 | goto label_1;
| }
| label_0:
0x000a6460 adds r0, r5, 0 | r0 = r5 + 0;
| if (r0 == r5) {
0x000a6464 movne r0, 1 | r0 = 1;
| }
0x000a6468 add sp, sp, 0x34 |
0x000a646c pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x000a6470 ldr r3, [pc, 0xf0] | r3 = *(0xa6564);
0x000a6474 ldr r1, [pc, 0xf0] | r1 = *(0xa6568);
0x000a6478 add r3, pc, r3 | r3 = pc + r3;
0x000a647c str r3, [sp] | *(sp) = r3;
0x000a6480 ldr r3, [pc, 0xe8] |
0x000a6484 ldr r0, [pc, 0xe8] | r0 = *(0xa6570);
0x000a6488 add r3, pc, r3 | r3 = pc + r3;
0x000a648c add r3, r3, 0x5f | r3 = 0xa65cb;
0x000a6490 mov r2, 0x20c | r2 = 0x20c;
0x000a6494 add r1, pc, r1 | r1 = pc + r1;
0x000a6498 add r0, pc, r0 | r0 = pc + r0;
| do {
0x000a649c bl 0x2c84c | g_assertion_message_expr ();
| label_1:
0x000a64a0 ldr r2, [r4, 0x1c] | r2 = *((r4 + 0x1c));
0x000a64a4 cmp r2, 0 |
| if (r2 == 0) {
0x000a64a8 beq 0xa64dc | goto label_2;
| }
0x000a64ac ldr r3, [pc, 0xc4] | r3 = *(0xa6574);
0x000a64b0 ldr r1, [pc, 0xc4] | r1 = *(0xa6578);
0x000a64b4 add r3, pc, r3 | r3 = pc + r3;
0x000a64b8 str r3, [sp] | *(sp) = r3;
0x000a64bc ldr r3, [pc, 0xbc] |
0x000a64c0 ldr r0, [pc, 0xbc] | r0 = *(0xa6580);
0x000a64c4 add r3, pc, r3 | r3 = pc + r3;
0x000a64c8 add r3, r3, 0x5f | r3 = 0xa65db;
0x000a64cc ldr r2, [pc, 0xb4] | r2 = *(0xa6584);
0x000a64d0 add r1, pc, r1 | r1 = pc + r1;
0x000a64d4 add r0, pc, r0 | r0 = pc + r0;
0x000a64d8 b 0xa649c |
| } while (1);
| label_2:
0x000a64dc ldr r3, [pc, 0xa8] | r3 = *(0xa6588);
0x000a64e0 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x000a64e4 str r3, [sp, 0x20] | var_20h = r3;
0x000a64e8 ldr r3, [pc, 0xa0] | r3 = *(0xa658c);
0x000a64ec ldr r1, [sp, 0x20] | r1 = var_20h;
0x000a64f0 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x000a64f4 str r3, [sp, 0x24] | var_24h = r3;
0x000a64f8 ldr r3, [pc, 0x94] | r3 = *(0xa6590);
0x000a64fc ldr r0, [sp, 0x24] | r0 = var_24h;
0x000a6500 add r3, pc, r3 | r3 = pc + r3;
0x000a6504 bl 0x2ceb8 | g_hash_table_new_full ();
0x000a6508 add r2, sp, 0x2c | r2 += var_2ch;
0x000a650c mov r1, r8 | r1 = r8;
0x000a6510 str r0, [r4, 0x1c] | *((r4 + 0x1c)) = r0;
0x000a6514 mov r0, r5 | r0 = r5;
0x000a6518 bl 0x2dca4 | g_variant_get ();
| do {
0x000a651c ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x000a6520 bl 0xa5998 | r0 = fcn_000a5998 ();
0x000a6524 subs r2, r0, 0 | r2 = r0 - 0;
| if (r2 == r0) {
0x000a6528 bne 0xa6540 |
0x000a652c ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x000a6530 bl 0x2d830 | g_variant_iter_free ();
0x000a6534 mov r0, r5 | r0 = r5;
0x000a6538 bl 0x2c1bc | g_variant_unref ();
0x000a653c b 0xa6460 | goto label_0;
| }
0x000a6540 ldr r1, [r2] | r1 = *(r2);
0x000a6544 ldr r0, [r4, 0x1c] | r0 = *((r4 + 0x1c));
0x000a6548 bl 0x2d500 | g_hash_table_insert ();
0x000a654c b 0xa651c |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libgio-2.0.so.0.5600.4 @ 0xaec94 */
| #include <stdint.h>
|
; (fcn) fcn.000aec94 () | void fcn_000aec94 (int32_t arg1) {
| int32_t var_0h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_1ch;
| r0 = arg1;
0x000aec94 push {r4, r5, r6, r7, r8, sb, lr} |
0x000aec98 mov r4, 0 | r4 = 0;
0x000aec9c sub sp, sp, 0x1c |
0x000aeca0 mov r7, r0 | r7 = r0;
0x000aeca4 str r4, [sp, 0xc] | var_ch = r4;
0x000aeca8 str r4, [sp, 0x10] | var_10h = r4;
0x000aecac bl 0x2dc8c | glib_private_ ();
0x000aecb0 ldr r3, [r0, 0x18] | r3 = *((r0 + 0x18));
0x000aecb4 blx r3 | r0 = uint32_t (*r3)(uint32_t) (r3);
0x000aecb8 cmp r0, r4 |
| if (r0 == r4) {
0x000aecbc beq 0xaecfc | goto label_4;
| }
0x000aecc0 bl 0x5e264 | g_io_error_quark ();
0x000aecc4 mov r6, r4 | r6 = r4;
0x000aecc8 mov r8, r4 | r8 = r4;
0x000aeccc mov sb, r4 | sb = r4;
0x000aecd0 mov r5, r0 | r5 = r0;
0x000aecd4 ldr r0, [pc, 0x27c] | r0 = *(0xaef54);
0x000aecd8 add r0, pc, r0 | r0 = pc + r0;
0x000aecdc bl 0x2ce04 | glib_gettext ();
0x000aece0 mov r2, r4 | r2 = r4;
0x000aece4 mov r1, r5 | r1 = r5;
0x000aece8 mov r3, r0 | r3 = r0;
0x000aecec mov r0, r7 | r0 = r7;
0x000aecf0 bl 0x2c72c | g_set_error ();
| do {
0x000aecf4 mov r5, r4 | r5 = r4;
0x000aecf8 b 0xaed34 | goto label_0;
| label_4:
0x000aecfc mov r0, r7 | r0 = r7;
0x000aed00 bl 0xd02a4 | r0 = fcn_000d02a4 (r0);
0x000aed04 subs sb, r0, 0 | sb = r0 - 0;
| if (sb == r0) {
0x000aed08 bne 0xaee10 |
0x000aed0c ldr r0, [pc, 0x248] | r0 = *(0xaef58);
0x000aed10 mov r6, sb | r6 = sb;
0x000aed14 add r0, pc, r0 | r0 = pc + r0;
0x000aed18 bl 0x2ce04 | glib_gettext ();
0x000aed1c mov r8, sb | r8 = sb;
0x000aed20 mov r5, sb | r5 = sb;
0x000aed24 mov r4, sb | r4 = sb;
0x000aed28 mov r1, r0 | r1 = r0;
0x000aed2c mov r0, r7 | r0 = r7;
0x000aed30 bl 0x2c318 | g_prefix_error ();
| label_0:
0x000aed34 bl 0xd01d0 | r0 = fcn_000d01d0 ();
0x000aed38 cmp r0, 0 |
| if (r0 != 0) {
0x000aed3c beq 0xaedb8 |
0x000aed40 bl 0xcebc4 | fcn_000cebc4 ();
0x000aed44 ldr r0, [pc, 0x214] | r0 = *(0xaef5c);
0x000aed48 add r0, pc, r0 | r0 = pc + r0;
0x000aed4c bl 0x2c27c | g_print ();
0x000aed50 ldr r7, [sp, 0xc] | r7 = var_ch;
0x000aed54 cmp r7, 0 |
| if (r7 == 0) {
0x000aed58 beq 0xaef28 | goto label_5;
| }
0x000aed5c mov r0, r7 | r0 = r7;
0x000aed60 bl 0x2e064 | strlen (r0);
0x000aed64 mov r2, 2 | r2 = 2;
0x000aed68 add r1, r0, 9 | r1 = r0 + 9;
0x000aed6c mov r0, r7 | r0 = r7;
0x000aed70 bl 0xce3d8 | r0 = fcn_000ce3d8 (r0, r1);
0x000aed74 mov r7, r0 | r7 = r0;
0x000aed78 mov r1, r0 | r1 = r0;
0x000aed7c ldr r0, [pc, 0x1e0] | r0 = *(0xaef60);
0x000aed80 add r0, pc, r0 | r0 = pc + r0;
0x000aed84 bl 0x2c27c | g_print ();
0x000aed88 mov r0, r7 | r0 = r7;
0x000aed8c bl 0x2bf4c | g_free ();
| label_1:
0x000aed90 ldr r0, [pc, 0x1d0] | r0 = *(0xaef64);
0x000aed94 add r0, pc, r0 | r0 = pc + r0;
0x000aed98 bl 0x2c27c | g_print ();
0x000aed9c ldr r1, [sp, 0x10] | r1 = var_10h;
0x000aeda0 cmp r1, 0 |
| if (r1 == 0) {
0x000aeda4 beq 0xaef38 | goto label_6;
| }
0x000aeda8 ldr r0, [pc, 0x1bc] | r0 = *(0xaef68);
0x000aedac add r0, pc, r0 | r0 = pc + r0;
0x000aedb0 bl 0x2c27c | g_print ();
| label_2:
0x000aedb4 bl 0xcebd8 | fcn_000cebd8 ();
| }
0x000aedb8 mov r0, sb | r0 = sb;
0x000aedbc bl 0x2bf4c | g_free ();
0x000aedc0 mov r0, r8 | r0 = r8;
0x000aedc4 bl 0x2bf4c | g_free ();
0x000aedc8 ldr r0, [sp, 0xc] | r0 = var_ch;
0x000aedcc bl 0x2bf4c | g_free ();
0x000aedd0 ldr r0, [sp, 0x10] | r0 = var_10h;
0x000aedd4 bl 0x2bf4c | g_free ();
0x000aedd8 cmp r4, 0 |
| if (r4 != 0) {
0x000aeddc beq 0xaedfc |
0x000aede0 cmp r6, 0 |
| if (r6 == 0) {
0x000aede4 beq 0xaef48 | goto label_7;
| }
0x000aede8 ldr r0, [pc, 0x180] | r0 = *(0xaef6c);
0x000aedec mov r2, 1 | r2 = 1;
0x000aedf0 mov r1, r6 | r1 = r6;
0x000aedf4 add r0, pc, r0 | r0 = pc + r0;
0x000aedf8 bl 0x2bb80 | g_setenv ();
| }
| label_3:
0x000aedfc mov r0, r6 | r0 = r6;
0x000aee00 bl 0x2bf4c | g_free ();
0x000aee04 mov r0, r5 | r0 = r5;
0x000aee08 add sp, sp, 0x1c |
0x000aee0c pop {r4, r5, r6, r7, r8, sb, pc} |
| }
0x000aee10 ldr r0, [pc, 0x15c] | r0 = *(0xaef70);
0x000aee14 add r0, pc, r0 | r0 = pc + r0;
0x000aee18 bl 0x2df20 | r0 = g_getenv ();
0x000aee1c subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x000aee20 bne 0xaee58 | goto label_8;
| }
0x000aee24 bl 0x5e264 | g_io_error_quark ();
0x000aee28 mov r6, r4 | r6 = r4;
0x000aee2c mov r8, r4 | r8 = r4;
0x000aee30 mov r5, r0 | r5 = r0;
0x000aee34 ldr r0, [pc, 0x13c] | r0 = *(0xaef74);
0x000aee38 add r0, pc, r0 | r0 = pc + r0;
0x000aee3c bl 0x2ce04 | glib_gettext ();
0x000aee40 mov r2, r4 | r2 = r4;
0x000aee44 mov r1, r5 | r1 = r5;
0x000aee48 mov r3, r0 | r3 = r0;
0x000aee4c mov r0, r7 | r0 = r7;
0x000aee50 bl 0x2c72c | g_set_error ();
0x000aee54 b 0xaecf4 |
| } while (1);
| label_8:
0x000aee58 ldr r0, [pc, 0x11c] | r0 = "_5";
0x000aee5c mov r1, sb | r1 = sb;
0x000aee60 add r0, pc, r0 | r0 = pc + r0;
0x000aee64 bl 0x2cde0 | r0 = g_strdup_printf ();
0x000aee68 mov r8, r0 | r8 = r0;
0x000aee6c bl 0xd01d0 | r0 = fcn_000d01d0 ();
0x000aee70 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x000aee74 moveq r6, r4 | r6 = r4;
| }
| if (r4 != r0) {
0x000aee78 beq 0xaeec4 |
0x000aee7c bl 0xcebc4 | fcn_000cebc4 ();
0x000aee80 ldr r4, [pc, 0xf8] | r4 = *(0xaef7c);
0x000aee84 ldr r0, [pc, 0xf8] | r0 = *(0xaef80);
0x000aee88 mov r1, r8 | r1 = r8;
0x000aee8c add r4, pc, r4 | r4 = pc + r4;
0x000aee90 add r0, pc, r0 | r0 = pc + r0;
0x000aee94 bl 0x2c27c | g_print ();
0x000aee98 mov r0, r4 | r0 = r4;
0x000aee9c bl 0x2df20 | g_getenv ();
0x000aeea0 bl 0x2dddc | g_strdup ();
0x000aeea4 ldr r1, [pc, 0xdc] | r1 = *(0xaef84);
0x000aeea8 mov r2, 1 | r2 = 1;
0x000aeeac add r1, pc, r1 | r1 = pc + r1;
0x000aeeb0 mov r6, r0 | r6 = r0;
0x000aeeb4 mov r0, r4 | r0 = r4;
0x000aeeb8 bl 0x2bb80 | g_setenv ();
0x000aeebc bl 0xcebd8 | fcn_000cebd8 ();
0x000aeec0 mov r4, 1 | r4 = 1;
| }
0x000aeec4 str r7, [sp] | *(sp) = r7;
0x000aeec8 add r3, sp, 0x14 | r3 += var_14h;
0x000aeecc add r2, sp, 0x10 | r2 += var_10h;
0x000aeed0 add r1, sp, 0xc | r1 += var_ch;
0x000aeed4 mov r0, r8 | r0 = r8;
0x000aeed8 bl 0x2dfc8 | r0 = g_spawn_command_line_sync ();
0x000aeedc subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 == r0) {
0x000aeee0 beq 0xaed34 | goto label_0;
| }
0x000aeee4 mov r1, r7 | r1 = r7;
0x000aeee8 ldr r0, [sp, 0x14] | r0 = var_14h;
0x000aeeec bl 0x2be74 | r0 = g_spawn_check_exit_status ();
0x000aeef0 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 == r0) {
0x000aeef4 bne 0xaef18 |
0x000aeef8 ldr r0, [pc, 0x8c] | r0 = *(0xaef88);
0x000aeefc add r0, pc, r0 | r0 = pc + r0;
0x000aef00 bl 0x2ce04 | glib_gettext ();
0x000aef04 mov r2, r8 | r2 = r8;
0x000aef08 mov r1, r0 | r1 = r0;
0x000aef0c mov r0, r7 | r0 = r7;
0x000aef10 bl 0x2c318 | g_prefix_error ();
0x000aef14 b 0xaed34 | goto label_0;
| }
0x000aef18 ldr r0, [sp, 0xc] | r0 = var_ch;
0x000aef1c bl 0x2dddc | r0 = g_strdup ();
0x000aef20 mov r5, r0 | r5 = r0;
0x000aef24 b 0xaed34 | goto label_0;
| label_5:
0x000aef28 ldr r0, [pc, 0x60] | r0 = "_5";
0x000aef2c add r0, pc, r0 | r0 = pc + r0;
0x000aef30 bl 0x2c27c | g_print ();
0x000aef34 b 0xaed90 | goto label_1;
| label_6:
0x000aef38 ldr r0, [pc, 0x54] | r0 = *(0xaef90);
0x000aef3c add r0, pc, r0 | r0 = pc + r0;
0x000aef40 bl 0x2c27c | g_print ();
0x000aef44 b 0xaedb4 | goto label_2;
| label_7:
0x000aef48 ldr r0, [pc, 0x48] | r0 = *(0xaef94);
0x000aef4c add r0, pc, r0 | r0 = pc + r0;
0x000aef50 bl 0x2cab0 | g_unsetenv ();
0x000aef54 b 0xaedfc | goto label_3;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libgio-2.0.so.0.5600.4 @ 0xc8c88 */
| #include <stdint.h>
|
; (fcn) fcn.000c8c88 () | void fcn_000c8c88 (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x000c8c88 cmp r3, 0 |
0x000c8c8c push {r0, r1, r2, lr} |
0x000c8c90 mov ip, r0 |
0x000c8c94 mov r0, r1 | r0 = r1;
| if (r3 != 0) {
0x000c8c98 beq 0xc8ccc |
0x000c8c9c cmp r3, 1 |
| if (r3 == 1) {
0x000c8ca0 beq 0xc8cf0 | goto label_0;
| }
0x000c8ca4 mov r3, 0 | r3 = 0;
0x000c8ca8 str r3, [sp] | *(sp) = r3;
0x000c8cac ldr r1, [pc, 0x64] | r1 = *(0xc8d14);
0x000c8cb0 ldr r3, [pc, 0x64] | r3 = *(0xc8d18);
0x000c8cb4 ldr r0, [pc, 0x64] | r0 = *(0xc8d1c);
0x000c8cb8 add r3, pc, r3 | r3 = pc + r3;
0x000c8cbc mov r2, 0xad | r2 = 0xad;
0x000c8cc0 add r1, pc, r1 | r1 = pc + r1;
0x000c8cc4 add r0, pc, r0 | r0 = pc + r0;
0x000c8cc8 bl 0x2c84c | g_assertion_message_expr ();
| }
0x000c8ccc ldr lr, [ip, 0x14] |
0x000c8cd0 cmp lr, 0 |
| if (lr != 0) {
0x000c8cd4 beq 0xc8d10 |
0x000c8cd8 ldr r3, [ip, 0x1c] | r3 = *((ip + 0x1c));
0x000c8cdc ldr r1, [ip, 8] | r1 = *((ip + 8));
0x000c8ce0 mov ip, lr |
0x000c8ce4 add sp, sp, 0xc |
0x000c8ce8 pop {lr} |
0x000c8cec bx ip | return void (*ip)() ();
| label_0:
0x000c8cf0 ldr r3, [ip, 0x18] | r3 = *((ip + 0x18));
0x000c8cf4 cmp r3, 0 |
| if (r3 == 0) {
0x000c8cf8 beq 0xc8d10 | goto label_1;
| }
0x000c8cfc ldr r2, [ip, 0x1c] | r2 = *((ip + 0x1c));
0x000c8d00 ldr r1, [ip, 8] | r1 = *((ip + 8));
0x000c8d04 add sp, sp, 0xc |
0x000c8d08 pop {lr} |
0x000c8d0c bx r3 | return uint32_t (*r3)() ();
| }
| label_1:
0x000c8d10 add sp, sp, 0xc |
0x000c8d14 pop {pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libgio-2.0.so.0.5600.4 @ 0xd4864 */
| #include <stdint.h>
|
; (fcn) fcn.000d4864 () | void fcn_000d4864 (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_24h;
| int32_t var_2ch;
| r0 = arg1;
| r1 = arg2;
0x000d4864 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000d4868 mov r6, r1 | r6 = r1;
0x000d486c mov r8, r3 | r8 = r3;
0x000d4870 ldr r1, [pc, 0x318] | r1 = *(0xd4b8c);
0x000d4874 ldr r3, [pc, 0x318] | r3 = *(0xd4b90);
0x000d4878 sub sp, sp, 0x2c |
0x000d487c add r3, pc, r3 | r3 = pc + r3;
0x000d4880 add r1, pc, r1 | r1 = pc + r1;
0x000d4884 mov r5, r0 | r5 = r0;
0x000d4888 mov r0, r6 | r0 = r6;
0x000d488c str r2, [sp, 0x18] | var_18h = r2;
0x000d4890 str r3, [sp, 0x14] | var_14h = r3;
0x000d4894 bl 0x2c4b0 | g_hash_table_lookup ();
0x000d4898 ldr r1, [pc, 0x2f8] | r1 = *(0xd4b94);
0x000d489c add r1, pc, r1 | r1 = pc + r1;
0x000d48a0 mov sb, r0 | sb = r0;
0x000d48a4 mov r0, r6 | r0 = r6;
0x000d48a8 bl 0x2c4b0 | g_hash_table_lookup ();
0x000d48ac ldr r1, [pc, 0x2e8] | r1 = *(0xd4b98);
0x000d48b0 add r1, pc, r1 | r1 = pc + r1;
0x000d48b4 mov r4, r0 | r4 = r0;
0x000d48b8 mov r0, r6 | r0 = r6;
0x000d48bc bl 0x2c4b0 | r0 = g_hash_table_lookup ();
0x000d48c0 cmp r0, 0 |
| if (r0 == 0) {
0x000d48c4 beq 0xd4900 | goto label_3;
| }
0x000d48c8 bl 0x5e264 | g_io_error_quark ();
0x000d48cc mov r7, 0 | r7 = 0;
0x000d48d0 mov fp, r7 |
0x000d48d4 mov r4, r0 | r4 = r0;
0x000d48d8 ldr r0, [pc, 0x2c0] | r0 = *(0xd4b9c);
0x000d48dc add r0, pc, r0 | r0 = pc + r0;
0x000d48e0 bl 0x2ce04 | glib_gettext ();
0x000d48e4 mov r2, 0xd | r2 = 0xd;
0x000d48e8 mov r1, r4 | r1 = r4;
0x000d48ec mov r3, r0 | r3 = r0;
0x000d48f0 mov r0, r8 | r0 = r8;
0x000d48f4 bl 0x2e0f4 | g_set_error_literal ();
| do {
0x000d48f8 mov r4, r7 | r4 = r7;
0x000d48fc b 0xd49ac | goto label_2;
| label_3:
0x000d4900 cmp sb, 0 |
| if (sb != 0) {
0x000d4904 ldreq sb, [pc, 0x298] | sb = *((pc + 0x298));
| }
| if (sb != 0) {
0x000d4908 addeq sb, pc, sb | sb = pc + sb;
| }
0x000d490c cmp r4, 0 |
| if (r4 != 0) {
0x000d4910 ldreq r4, [pc, 0x290] | r4 = *((pc + 0x290));
| }
| if (r4 != 0) {
0x000d4914 addeq r4, pc, r4 | r4 = pc + r4;
| }
0x000d4918 mov r2, 0xa | r2 = 0xa;
0x000d491c mov r1, 0 | r1 = 0;
0x000d4920 mov r0, r4 | r0 = r4;
0x000d4924 bl 0x2e0d0 | r0 = strtol (r0, r1, r2);
0x000d4928 mov sl, r0 | sl = r0;
0x000d492c bl 0x70bc8 | g_resolver_get_default ();
0x000d4930 mov r3, r8 | r3 = r8;
0x000d4934 mov r2, 0 | r2 = 0;
0x000d4938 mov r1, sb | r1 = sb;
0x000d493c mov fp, r0 |
0x000d4940 bl 0x71694 | r0 = g_resolver_lookup_by_name ();
0x000d4944 subs r7, r0, 0 | r7 = r0 - 0;
0x000d4948 beq 0xd48f8 |
| } while (r7 == r0);
0x000d494c add r3, sp, 0x24 | r3 += var_24h;
0x000d4950 mov r6, r7 | r6 = r7;
0x000d4954 str r3, [sp, 0x1c] | var_1ch = r3;
| do {
0x000d4958 lsl r1, sl, 0x10 | r1 = sl << 0x10;
0x000d495c lsr r1, r1, 0x10 | r1 >>= 0x10;
0x000d4960 ldr r0, [r6] | r0 = *(r6);
0x000d4964 bl 0x5b650 | g_inet_socket_address_new ();
0x000d4968 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000d496c str r8, [sp, 8] | var_8h = r8;
0x000d4970 str r3, [sp, 4] | var_4h = r3;
0x000d4974 mov r3, 0 | r3 = 0;
0x000d4978 str r3, [sp] | *(sp) = r3;
0x000d497c mov r2, 1 | r2 = 1;
0x000d4980 mov r3, 6 | r3 = 6;
0x000d4984 mov r1, r0 | r1 = r0;
0x000d4988 mov r4, r0 | r4 = r0;
0x000d498c ldr r0, [r5, 0x24] | r0 = *((r5 + 0x24));
0x000d4990 bl 0x81384 | r0 = g_socket_listener_add_address ();
0x000d4994 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 == r0) {
0x000d4998 bne 0xd49e4 |
0x000d499c mov r0, r4 | r0 = r4;
0x000d49a0 str r3, [sp, 0x18] | var_18h = r3;
0x000d49a4 bl 0x2bec8 | g_object_unref ();
| label_0:
0x000d49a8 mov r4, 0 | r4 = 0;
| label_2:
0x000d49ac ldr r2, [sp, 0x14] | r2 = var_14h;
0x000d49b0 ldr r3, [pc, 0x1f4] | r3 = *(0xd4ba8);
0x000d49b4 mov r0, r7 | r0 = r7;
0x000d49b8 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000d49bc mov r1, r3 | r1 = r3;
0x000d49c0 str r3, [sp, 0x14] | var_14h = r3;
0x000d49c4 bl 0x2bf7c | g_list_free_full ();
0x000d49c8 cmp fp, 0 |
| if (fp != 0) {
0x000d49cc beq 0xd49d8 |
0x000d49d0 mov r0, fp | r0 = fp;
0x000d49d4 bl 0x2bec8 | g_object_unref ();
| }
0x000d49d8 mov r0, r4 | r0 = r4;
0x000d49dc add sp, sp, 0x2c |
0x000d49e0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x000d49e4 cmp sl, 0 |
| if (sl == 0) {
0x000d49e8 bne 0xd49f8 |
0x000d49ec ldr r0, [sp, 0x24] | r0 = var_24h;
0x000d49f0 bl 0x5b890 | r0 = g_inet_socket_address_get_port ();
0x000d49f4 mov sl, r0 | sl = r0;
| }
0x000d49f8 ldr r0, [sp, 0x24] | r0 = var_24h;
0x000d49fc bl 0x2bec8 | g_object_unref ();
0x000d4a00 mov r0, r4 | r0 = r4;
0x000d4a04 bl 0x2bec8 | g_object_unref ();
0x000d4a08 ldr r6, [r6, 4] | r6 = *((r6 + 4));
0x000d4a0c cmp r6, 0 |
0x000d4a10 bne 0xd4958 |
| } while (r6 != 0);
0x000d4a14 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000d4a18 cmp r3, 0 |
| if (r3 == 0) {
0x000d4a1c beq 0xd4b74 | goto label_4;
| }
0x000d4a20 mov r0, 0x10 | r0 = 0x10;
0x000d4a24 bl 0x2dd28 | g_malloc0 ();
0x000d4a28 str r0, [r5, 0x18] | *((r5 + 0x18)) = r0;
| do {
0x000d4a2c mov r1, 0x100 | r1 = 0x100;
0x000d4a30 mov r0, 0 | r0 = 0;
0x000d4a34 bl 0x2da88 | g_random_int_range ();
0x000d4a38 ldr r3, [r5, 0x18] | r3 = *((r5 + 0x18));
0x000d4a3c strb r0, [r3, r6] | *((r3 + r6)) = r0;
0x000d4a40 add r6, r6, 1 | r6++;
0x000d4a44 cmp r6, 0x10 |
0x000d4a48 bne 0xd4a2c |
| } while (r6 != 0x10);
0x000d4a4c ldr r0, [pc, 0x15c] | r0 = *(0xd4bac);
0x000d4a50 mov r2, r8 | r2 = r8;
0x000d4a54 add r1, r5, 0x1c | r1 = r5 + 0x1c;
0x000d4a58 add r0, pc, r0 | r0 = pc + r0;
0x000d4a5c bl 0x2d398 | r0 = g_file_open_tmp ();
0x000d4a60 cmn r0, 1 |
0x000d4a64 mov r6, r0 | r6 = r0;
| if (r0 != 1) {
0x000d4a68 bne 0xd4a78 | goto label_5;
| }
0x000d4a6c ldr r0, [r5, 0x24] | r0 = *((r5 + 0x24));
0x000d4a70 bl 0x81cbc | g_socket_listener_close ();
0x000d4a74 b 0xd49a8 | goto label_0;
| do {
| label_5:
0x000d4a78 mov r4, 0x10 | r4 = 0x10;
0x000d4a7c mov r3, 0 | r3 = 0;
| label_1:
0x000d4a80 ldr r1, [r5, 0x18] | r1 = *((r5 + 0x18));
0x000d4a84 mov r2, r4 | r2 = r4;
0x000d4a88 add r1, r1, r3 | r1 += r3;
0x000d4a8c mov r0, r6 | r0 = r6;
0x000d4a90 str r3, [sp, 0x1c] | var_1ch = r3;
0x000d4a94 bl 0x2d8c0 | write (r0, r1, r2);
0x000d4a98 str r0, [sp, 0x18] | var_18h = r0;
0x000d4a9c bl 0x2e3b8 | errno_location ();
0x000d4aa0 ldr r2, [sp, 0x18] | r2 = var_18h;
0x000d4aa4 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000d4aa8 cmn r2, 1 |
| if (r2 != 1) {
0x000d4aac bne 0xd4b0c | goto label_6;
| }
0x000d4ab0 ldr r4, [r0] | r4 = *(r0);
0x000d4ab4 cmp r4, 4 |
0x000d4ab8 beq 0xd4a78 |
| } while (r4 == 4);
0x000d4abc bl 0x5e264 | r0 = g_io_error_quark ();
0x000d4ac0 mov r6, r0 | r6 = r0;
0x000d4ac4 mov r0, r4 | r0 = r4;
0x000d4ac8 bl 0x5e2a4 | r0 = g_io_error_from_errno ();
0x000d4acc mov sb, r0 | sb = r0;
0x000d4ad0 ldr r0, [pc, 0xdc] | r0 = *(0xd4bb0);
0x000d4ad4 add r0, pc, r0 | r0 = pc + r0;
0x000d4ad8 bl 0x2ce04 | r0 = glib_gettext ();
0x000d4adc mov sl, r0 | sl = r0;
0x000d4ae0 mov r0, r4 | r0 = r4;
0x000d4ae4 bl 0x2c9b4 | g_strerror ();
0x000d4ae8 ldr r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x000d4aec mov r2, sb | r2 = sb;
0x000d4af0 str r3, [sp] | *(sp) = r3;
0x000d4af4 mov r1, r6 | r1 = r6;
0x000d4af8 mov r3, sl | r3 = sl;
0x000d4afc str r0, [sp, 4] | var_4h = r0;
0x000d4b00 mov r0, r8 | r0 = r8;
0x000d4b04 bl 0x2c72c | g_set_error ();
0x000d4b08 b 0xd49a8 | goto label_0;
| label_6:
0x000d4b0c subs r4, r4, r2 | r4 -= r2;
0x000d4b10 add r3, r3, r2 | r3 += r2;
| if (r4 != r4) {
0x000d4b14 bne 0xd4a80 | goto label_1;
| }
0x000d4b18 mov r1, r8 | r1 = r8;
0x000d4b1c mov r0, r6 | r0 = r6;
0x000d4b20 bl 0x2d950 | r0 = g_close ();
0x000d4b24 cmp r0, 0 |
| if (r0 == 0) {
0x000d4b28 beq 0xd49ac | goto label_2;
| }
0x000d4b2c ldr r1, [pc, 0x84] | r1 = *(0xd4bb4);
0x000d4b30 mov r2, r4 | r2 = r4;
0x000d4b34 add r1, pc, r1 | r1 = pc + r1;
0x000d4b38 ldr r0, [r5, 0x1c] | r0 = *((r5 + 0x1c));
0x000d4b3c bl 0x2d6ec | g_uri_escape_string ();
0x000d4b40 mov r2, sl | r2 = sl;
0x000d4b44 mov r1, sb | r1 = sb;
0x000d4b48 mov r4, r0 | r4 = r0;
0x000d4b4c mov r3, r0 | r3 = r0;
0x000d4b50 ldr r0, [pc, 0x64] | r0 = *(0xd4bb8);
0x000d4b54 add r0, pc, r0 | r0 = pc + r0;
0x000d4b58 bl 0x2cde0 | g_strdup_printf ();
0x000d4b5c str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
0x000d4b60 mov r0, r4 | r0 = r4;
0x000d4b64 bl 0x2bf4c | g_free ();
| do {
0x000d4b68 mov r4, 1 | r4 = 1;
0x000d4b6c str r4, [r5, 0x28] | *((r5 + 0x28)) = r4;
0x000d4b70 b 0xd49ac | goto label_2;
| label_4:
0x000d4b74 ldr r0, [pc, 0x44] | r0 = *(0xd4bbc);
0x000d4b78 mov r2, sl | r2 = sl;
0x000d4b7c mov r1, sb | r1 = sb;
0x000d4b80 add r0, pc, r0 | r0 = pc + r0;
0x000d4b84 bl 0x2cde0 | g_strdup_printf ();
0x000d4b88 str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
0x000d4b8c b 0xd4b68 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libgio-2.0.so.0.5600.4 @ 0x113764 */
| #include <stdint.h>
|
; (fcn) fcn.00113764 () | void fcn_00113764 (int32_t arg1) {
| r0 = arg1;
0x00113764 push {r4, r5, r6, lr} |
0x00113768 ldr r4, [pc, 0x80] | r4 = *(0x1137ec);
0x0011376c mov r1, r0 | r1 = r0;
0x00113770 add r4, pc, r4 | r4 = pc + r4;
0x00113774 mov r5, r0 | r5 = r0;
0x00113778 ldr r0, [r4] | r0 = *(0x1137ec);
0x0011377c bl 0x2ca68 | r0 = g_list_find ();
0x00113780 cmp r0, 0 |
0x00113784 popne {r4, r5, r6, pc} |
0x00113788 mov r1, r5 | r1 = r5;
0x0011378c ldr r0, [r4] | r0 = *(0x1137ec);
0x00113790 bl 0x2c570 | g_list_prepend ();
0x00113794 ldr r5, [r4, 8] | r5 = *(0x1137f4);
0x00113798 cmp r5, 0 |
0x0011379c str r0, [r4] | *(r4) = r0;
0x001137a0 popne {r4, r5, r6, pc} |
0x001137a4 mov r3, 1 | r3 = 1;
0x001137a8 mov r0, 4 | r0 = 4;
0x001137ac str r3, [r4, 8] | *((r4 + 8)) = r3;
0x001137b0 bl 0x2d4dc | g_timeout_source_new_seconds ();
0x001137b4 ldr r1, [pc, 0x38] | r1 = *(0x1137f0);
0x001137b8 mov r2, r5 | r2 = r5;
0x001137bc mov r3, r5 | r3 = r5;
0x001137c0 add r1, pc, r1 | r1 = pc + r1;
0x001137c4 mov r4, r0 | r4 = r0;
0x001137c8 bl 0x2d3f8 | g_source_set_callback ();
0x001137cc bl 0x2dc8c | glib_private_ ();
0x001137d0 ldr r3, [r0, 0x14] | r3 = *((r0 + 0x14));
0x001137d4 blx r3 | r0 = uint32_t (*r3)(uint32_t) (r3);
0x001137d8 mov r1, r0 | r1 = r0;
0x001137dc mov r0, r4 | r0 = r4;
0x001137e0 bl 0x2cae0 | g_source_attach ();
0x001137e4 mov r0, r4 | r0 = r4;
0x001137e8 pop {r4, r5, r6, lr} |
0x001137ec b 0x2ceac | return void (*0x2ceac)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libgio-2.0.so.0.5600.4 @ 0x11491c */
| #include <stdint.h>
|
; (fcn) fcn.0011491c () | void fcn_0011491c (int32_t arg_0h, int32_t arg1, int32_t arg2) {
| int32_t var_0h_2;
| int32_t var_4h_2;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| int32_t var_20h_2;
| int32_t var_24h_2;
| int32_t var_2ch;
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h_2;
| r0 = arg1;
| r1 = arg2;
0x0011491c push {r0, r1, r4, r5, r6, lr} |
0x00114920 mov r4, r0 | r4 = r0;
0x00114924 mov r5, r1 | r5 = r1;
0x00114928 mov r6, r2 | r6 = r2;
0x0011492c bl 0x1147d0 | fcn_001147d0 ();
0x00114930 ldr lr, [pc, 0x58] | lr = *(0x11498c);
0x00114934 add lr, pc, lr | lr = pc + lr;
0x00114938 ldr ip, [lr, 8] | ip = *(0x114994);
0x0011493c cmp ip, 0 |
| if (ip != 0) {
0x00114940 beq 0x11495c |
0x00114944 mov r2, r6 | r2 = r6;
0x00114948 mov r1, r5 | r1 = r5;
0x0011494c mov r0, r4 | r0 = r4;
0x00114950 add sp, sp, 8 |
0x00114954 pop {r4, r5, r6, lr} |
0x00114958 b 0x1157a4 |
| } else {
0x0011495c str ip, [sp, 4] | var_4h = ip;
0x00114960 str ip, [sp] | *(sp) = ip;
0x00114964 mov r3, r6 | r3 = r6;
0x00114968 mov r2, r5 | r2 = r5;
0x0011496c mov r1, r4 | r1 = r4;
0x00114970 ldr r0, [lr, 0x10] | r0 = *((lr + 0x10));
0x00114974 bl 0x1170e8 | r0 = fcn_001170e8 (r0, r1, r2, r3);
0x00114978 cmp r0, 0 |
| if (r0 != 0) {
0x0011497c ldreq r0, [pc, 0x10] | r0 = *((pc + 0x10));
| }
| if (r0 != 0) {
0x00114980 addeq r0, pc, r0 | r0 = pc + r0;
| }
| if (r0 != 0) {
0x00114984 addeq r0, r0, 0x2b | r0 += 0x2b;
| }
0x00114988 add sp, sp, 8 |
0x0011498c pop {r4, r5, r6, pc} |
| }
0x001157a4 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x001157a8 ldr fp, [pc, 0x14c] | fp = *(0x1158f8);
0x001157ac ldr r3, [pc, 0x14c] | r3 = *(0x1158fc);
0x001157b0 sub sp, sp, 0x2c |
0x001157b4 add fp, pc, fp |
0x001157b8 str r0, [sp, 0x18] | var_18h = r0;
0x001157bc str r1, [sp, 0x1c] | var_1ch = r1;
0x001157c0 str r2, [sp, 0xc] | var_ch = r2;
0x001157c4 ldr r3, [fp, r3] |
0x001157c8 mov r6, 0 | r6 = 0;
0x001157cc ldr r3, [r3] | r3 = *(0x1158f8);
0x001157d0 mov sl, r6 | sl = r6;
0x001157d4 sub r3, r3, 4 | r3 -= 4;
0x001157d8 str r3, [sp, 8] | var_8h = r3;
| do {
| label_1:
0x001157dc ldr r3, [sp, 8] | r3 = var_8h;
0x001157e0 ldr r2, [r3, 4]! | r2 = *((r3 += 4));
0x001157e4 cmp r2, 0 |
0x001157e8 str r2, [sp] | *(sp) = r2;
0x001157ec str r3, [sp, 8] | var_8h = r3;
| if (r2 == 0) {
0x001157f0 bne 0x115818 |
0x001157f4 ldr r3, [sp, 0xc] | r3 = var_ch;
0x001157f8 cmp r3, 0 |
| if (r3 == 0) {
0x001157fc strne r6, [r3] | *(r3) = r6;
| }
0x00115800 cmp r6, 0 |
| if (r6 > 0) {
0x00115804 ldrle r3, [pc, 0xf8] | r3 = *((pc + 0xf8));
| }
| if (r6 > 0) {
0x00115808 ldrle sl, [fp, r3] | sl = *((fp + r3));
| }
0x0011580c mov r0, sl | r0 = sl;
0x00115810 add sp, sp, 0x2c |
0x00115814 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x00115818 ldr r3, [sp] | r3 = *(sp);
0x0011581c ldr r4, [r3, 0xc] | r4 = *((r3 + 0xc));
0x00115820 cmp r4, 0 |
0x00115824 beq 0x1157dc |
| } while (r4 == 0);
0x00115828 ldr r0, [r4, 0x18] | r0 = *((r4 + 0x18));
0x0011582c bl 0x118968 | fcn_00118968 (r0);
0x00115830 mov r5, r4 | r5 = r4;
0x00115834 mov r8, 0 | r8 = 0;
0x00115838 ldr r0, [r5, r0]! | r0 = *((r5 += r0));
0x0011583c bl 0x118968 | fcn_00118968 (r0);
0x00115840 str r0, [sp, 0x20] | var_20h = r0;
0x00115844 ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x00115848 bl 0x118968 | fcn_00118968 (r0);
0x0011584c str r8, [sp, 4] | var_ch = r8;
0x00115850 add r5, r4, r0 | r5 = r4 + r0;
| do {
0x00115854 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00115858 ldr r2, [sp, 4] | r2 = var_ch;
0x0011585c cmp r3, r2 |
| if (r3 != r2) {
0x00115860 moveq r7, 0 | r7 = 0;
| }
| if (r3 == r2) {
0x00115864 beq 0x1158e4 | goto label_3;
| }
0x00115868 ldr r0, [r5] | r0 = *(r5);
0x0011586c bl 0x118968 | fcn_00118968 (r0);
0x00115870 mov sb, 0 | sb = 0;
0x00115874 str r0, [sp, 0x10] | var_18h = r0;
0x00115878 ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x0011587c bl 0x118968 | r0 = fcn_00118968 (r0);
0x00115880 mov r7, r0 | r7 = r0;
0x00115884 ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x00115888 bl 0x118968 | fcn_00118968 (r0);
0x0011588c str r0, [sp, 0x24] | var_24h = r0;
0x00115890 ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x00115894 bl 0x118968 | fcn_00118968 (r0);
0x00115898 str r0, [sp, 0x14] | var_1ch = r0;
| label_2:
0x0011589c ldr r3, [sp, 0x24] | r3 = var_24h;
0x001158a0 cmp sb, r3 |
| if (sb != r3) {
0x001158a4 bne 0x1158bc | goto label_4;
| }
| label_0:
0x001158a8 ldr r3, [sp, 4] | r3 = var_ch;
0x001158ac add r5, r5, 0x10 | r5 += 0x10;
0x001158b0 add r3, r3, 1 | r3++;
0x001158b4 str r3, [sp, 4] | var_ch = r3;
0x001158b8 b 0x115854 |
| } while (1);
| label_4:
0x001158bc add r1, sp, 0x14 | r1 += var_1ch;
0x001158c0 ldm r1, {r1, r2, r3} | r1 = *(r1);
| r2 = *((r1 + 4));
| r3 = *((r1 + 8));
0x001158c4 ldr r0, [sp] | r0 = *(sp);
0x001158c8 add r1, r1, sb, lsl 5 | r1 += (sb << 5);
0x001158cc bl 0x115378 | r0 = fcn_00115378 (r0, r1);
0x001158d0 cmp r0, 0 |
| if (r0 == 0) {
0x001158d4 beq 0x1158f4 | goto label_5;
| }
0x001158d8 adds r7, r4, r7 | r7 = r4 + r7;
0x001158dc ldr r8, [sp, 0x10] | r8 = var_18h;
| if (r7 == r4) {
0x001158e0 beq 0x1158a8 | goto label_0;
| }
| label_3:
0x001158e4 cmp r6, r8 |
| if (r6 >= r8) {
0x001158e8 movlt r6, r8 | r6 = r8;
| }
| if (r6 >= r8) {
0x001158ec movlt sl, r7 | sl = r7;
| }
0x001158f0 b 0x1157dc | goto label_1;
| label_5:
0x001158f4 add sb, sb, 1 | sb++;
0x001158f8 b 0x11589c | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libgio-2.0.so.0.5600.4 @ 0x4afcc */
| #include <stdint.h>
|
; (fcn) sym.g_file_attribute_info_list_dup () | void g_file_attribute_info_list_dup (int32_t arg1) {
| r0 = arg1;
0x0004afcc push {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0004afd0 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 == r0) {
0x0004afd4 beq 0x4b07c | goto label_0;
| }
0x0004afd8 mov r0, 0x10 | r0 = 0x10;
0x0004afdc bl 0x2dd28 | g_malloc0 ();
0x0004afe0 mov r2, 0xc | r2 = 0xc;
0x0004afe4 mov r1, 0 | r1 = 0;
0x0004afe8 mov r7, 0 | r7 = 0;
0x0004afec mov r8, 0xc | r8 = 0xc;
0x0004aff0 mov r4, r0 | r4 = r0;
0x0004aff4 mov r0, 1 | r0 = 1;
0x0004aff8 str r0, [r4, 0xc] | *((r4 + 0xc)) = r0;
0x0004affc bl 0x2c924 | g_array_new ();
0x0004b000 ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x0004b004 str r0, [r4, 8] | *((r4 + 8)) = r0;
0x0004b008 bl 0x2c360 | g_array_set_size ();
0x0004b00c ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0004b010 ldr r2, [r3] | r2 = *(r3);
0x0004b014 str r2, [r4] | *(r4) = r2;
0x0004b018 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0004b01c str r3, [r4, 4] | *((r4 + 4)) = r3;
| do {
0x0004b020 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x0004b024 cmp r3, r7 |
| if (r3 <= r7) {
0x0004b028 ble 0x4b0a0 | goto label_1;
| }
0x0004b02c mul r6, r8, r7 | r6 = r8 * r7;
0x0004b030 ldr r3, [r5] | r3 = *(r5);
0x0004b034 ldr sb, [r4] | sb = *(r4);
0x0004b038 ldr r0, [r3, r6] | r0 = *((r3 + r6));
0x0004b03c bl 0x2dddc | g_strdup ();
0x0004b040 add r7, r7, 1 | r7++;
0x0004b044 str r0, [sb, r6] | *((sb + r6)) = r0;
0x0004b048 ldr r3, [r5] | r3 = *(r5);
0x0004b04c add r3, r3, r6 | r3 += r6;
0x0004b050 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x0004b054 ldr r3, [r4] | r3 = *(r4);
0x0004b058 add r3, r3, r6 | r3 += r6;
0x0004b05c str r2, [r3, 4] | *((r3 + 4)) = r2;
0x0004b060 ldr r3, [r5] | r3 = *(r5);
0x0004b064 add r3, r3, r6 | r3 += r6;
0x0004b068 ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x0004b06c ldr r3, [r4] | r3 = *(r4);
0x0004b070 add r6, r3, r6 | r6 = r3 + r6;
0x0004b074 str r2, [r6, 8] | *((r6 + 8)) = r2;
0x0004b078 b 0x4b020 |
| } while (1);
| label_0:
0x0004b07c ldr r1, [pc, 0x24] |
0x0004b080 ldr r2, [pc, 0x24] | r2 = *(0x4b0a8);
0x0004b084 ldr r0, [pc, 0x24] | r0 = *(0x4b0ac);
0x0004b088 add r1, pc, r1 | r1 = pc + r1;
0x0004b08c add r2, pc, r2 | r2 = pc + r2;
0x0004b090 add r1, r1, 0x21 | r1 = 0x4b0c5;
0x0004b094 add r0, pc, r0 | r0 = pc + r0;
0x0004b098 bl 0x2c8f4 | g_return_if_fail_warning ();
0x0004b09c mov r4, r5 | r4 = r5;
| label_1:
0x0004b0a0 mov r0, r4 | r0 = r4;
0x0004b0a4 pop {r4, r5, r6, r7, r8, sb, sl, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libgio-2.0.so.0.5600.4 @ 0x9c2b4 */
| #include <stdint.h>
|
; (fcn) sym.g_list_store_insert () | void g_list_store_insert (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0009c2b4 push {r4, r5, r6, r7, r8, lr} |
0x0009c2b8 mov r4, r0 | r4 = r0;
0x0009c2bc mov r5, r1 | r5 = r1;
0x0009c2c0 mov r6, r2 | r6 = r2;
0x0009c2c4 bl 0x9c200 | r0 = fcn_0009c200 (r0);
0x0009c2c8 cmp r0, 0 |
| if (r0 != 0) {
0x0009c2cc beq 0x9c308 |
0x0009c2d0 ldr r3, [r6] | r3 = *(r6);
0x0009c2d4 ldr r1, [r4, 0xc] | r1 = *((r4 + 0xc));
0x0009c2d8 ldr r0, [r3] | r0 = *(r3);
0x0009c2dc bl 0x2d50c | r0 = g_type_is_a ();
0x0009c2e0 cmp r0, 0 |
| if (r0 != 0) {
0x0009c2e4 bne 0x9c32c | goto label_0;
| }
0x0009c2e8 ldr r1, [pc, 0xa8] |
0x0009c2ec ldr r2, [pc, 0xa8] | r2 = *(0x9c398);
0x0009c2f0 ldr r0, [pc, 0xa8] | r0 = *(0x9c39c);
0x0009c2f4 add r1, pc, r1 | r1 = pc + r1;
0x0009c2f8 add r2, pc, r2 | r2 = pc + r2;
0x0009c2fc add r1, r1, 0x11 | r1 = 0x9c3a5;
0x0009c300 add r0, pc, r0 | r0 = pc + r0;
0x0009c304 b 0x9c324 |
| } else {
0x0009c308 ldr r1, [pc, 0x94] |
0x0009c30c ldr r2, [pc, 0x94] | r2 = *(0x9c3a4);
0x0009c310 ldr r0, [pc, 0x94] | r0 = *(0x9c3a8);
0x0009c314 add r1, pc, r1 | r1 = pc + r1;
0x0009c318 add r2, pc, r2 | r2 = pc + r2;
0x0009c31c add r1, r1, 0x11 | r1 = 0x9c3b1;
0x0009c320 add r0, pc, r0 | r0 = pc + r0;
| }
| do {
0x0009c324 pop {r4, r5, r6, r7, r8, lr} |
0x0009c328 b 0x2c8f4 | void (*0x2c8f4)() ();
| label_0:
0x0009c32c ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x0009c330 bl 0x2cad4 | r0 = g_sequence_get_length ();
0x0009c334 cmp r0, r5 |
| if (r0 >= r5) {
0x0009c338 bhs 0x9c35c | goto label_1;
| }
0x0009c33c ldr r1, [pc, 0x6c] |
0x0009c340 ldr r2, [pc, 0x6c] | r2 = *(0x9c3b0);
0x0009c344 ldr r0, [pc, 0x6c] | r0 = *(0x9c3b4);
0x0009c348 add r1, pc, r1 | r1 = pc + r1;
0x0009c34c add r2, pc, r2 | r2 = pc + r2;
0x0009c350 add r1, r1, 0x11 | r1 = 0x9c3bd;
0x0009c354 add r0, pc, r0 | r0 = pc + r0;
0x0009c358 b 0x9c324 |
| } while (1);
| label_1:
0x0009c35c mov r1, r5 | r1 = r5;
0x0009c360 ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x0009c364 bl 0x2e130 | r0 = g_sequence_get_iter_at_pos ();
0x0009c368 mov r7, r0 | r7 = r0;
0x0009c36c mov r0, r6 | r0 = r6;
0x0009c370 bl 0x2cf00 | r0 = g_object_ref ();
0x0009c374 mov r1, r0 | r1 = r0;
0x0009c378 mov r0, r7 | r0 = r7;
0x0009c37c bl 0x2d11c | g_sequence_insert_before ();
0x0009c380 mov r1, r5 | r1 = r5;
0x0009c384 mov r0, r4 | r0 = r4;
0x0009c388 mov r3, 1 | r3 = 1;
0x0009c38c mov r2, 0 | r2 = 0;
0x0009c390 pop {r4, r5, r6, r7, r8, lr} |
0x0009c394 b 0x9bf90 | return void (*0x9bf90)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libgio-2.0.so.0.5600.4 @ 0x9c3bc */
| #include <stdint.h>
|
; (fcn) sym.g_list_store_insert_sorted () | void g_list_store_insert_sorted (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0009c3bc push {r4, r5, r6, r7, r8, lr} |
0x0009c3c0 mov r5, r0 | r5 = r0;
0x0009c3c4 mov r6, r1 | r6 = r1;
0x0009c3c8 mov r4, r2 | r4 = r2;
0x0009c3cc mov r8, r3 | r8 = r3;
0x0009c3d0 bl 0x9c200 | r0 = fcn_0009c200 (r0);
0x0009c3d4 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 != r0) {
0x0009c3d8 beq 0x9c414 |
0x0009c3dc ldr r3, [r6] | r3 = *(r6);
0x0009c3e0 ldr r1, [r5, 0xc] | r1 = *((r5 + 0xc));
0x0009c3e4 ldr r0, [r3] | r0 = *(r3);
0x0009c3e8 bl 0x2d50c | r0 = g_type_is_a ();
0x0009c3ec subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 != r0) {
0x0009c3f0 bne 0x9c43c | goto label_1;
| }
0x0009c3f4 ldr r1, [pc, 0xb0] |
0x0009c3f8 ldr r2, [pc, 0xb0] | r2 = *(0x9c4ac);
0x0009c3fc ldr r0, [pc, 0xb0] | r0 = *(0x9c4b0);
0x0009c400 add r1, pc, r1 | r1 = pc + r1;
0x0009c404 add r2, pc, r2 | r2 = pc + r2;
0x0009c408 add r1, r1, 0x25 | r1 = 0x9c4cd;
0x0009c40c add r0, pc, r0 | r0 = pc + r0;
0x0009c410 b 0x9c430 |
| } else {
0x0009c414 ldr r1, [pc, 0x9c] |
0x0009c418 ldr r2, [pc, 0x9c] | r2 = *(0x9c4b8);
0x0009c41c ldr r0, [pc, 0x9c] | r0 = *(0x9c4bc);
0x0009c420 add r1, pc, r1 | r1 = pc + r1;
0x0009c424 add r2, pc, r2 | r2 = pc + r2;
0x0009c428 add r1, r1, 0x25 | r1 = 0x9c4d9;
0x0009c42c add r0, pc, r0 | r0 = pc + r0;
| }
0x0009c430 bl 0x2c8f4 | g_return_if_fail_warning ();
| do {
| label_0:
0x0009c434 mov r0, r7 | r0 = r7;
0x0009c438 pop {r4, r5, r6, r7, r8, pc} |
| label_1:
0x0009c43c cmp r4, 0 |
| if (r4 != 0) {
0x0009c440 bne 0x9c46c | goto label_2;
| }
0x0009c444 ldr r1, [pc, 0x78] |
0x0009c448 ldr r2, [pc, 0x78] | r2 = *(0x9c4c4);
0x0009c44c ldr r0, [pc, 0x78] | r0 = *(0x9c4c8);
0x0009c450 add r1, pc, r1 | r1 = pc + r1;
0x0009c454 add r2, pc, r2 | r2 = pc + r2;
0x0009c458 add r1, r1, 0x25 | r1 = 0x9c4e5;
0x0009c45c add r0, pc, r0 | r0 = pc + r0;
0x0009c460 bl 0x2c8f4 | g_return_if_fail_warning ();
0x0009c464 mov r7, r4 | r7 = r4;
0x0009c468 b 0x9c434 |
| } while (1);
| label_2:
0x0009c46c mov r0, r6 | r0 = r6;
0x0009c470 ldr r7, [r5, 0x10] | r7 = *((r5 + 0x10));
0x0009c474 bl 0x2cf00 | g_object_ref ();
0x0009c478 mov r3, r8 | r3 = r8;
0x0009c47c mov r2, r4 | r2 = r4;
0x0009c480 mov r1, r0 | r1 = r0;
0x0009c484 mov r0, r7 | r0 = r7;
0x0009c488 bl 0x2c7f8 | g_sequence_insert_sorted ();
0x0009c48c bl 0x2c990 | g_sequence_iter_get_position ();
0x0009c490 mov r3, 1 | r3 = 1;
0x0009c494 mov r2, 0 | r2 = 0;
0x0009c498 mov r7, r0 | r7 = r0;
0x0009c49c mov r1, r0 | r1 = r0;
0x0009c4a0 mov r0, r5 | r0 = r5;
0x0009c4a4 bl 0x9bf90 | fcn_0009bf90 (r0, r1);
0x0009c4a8 b 0x9c434 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libgio-2.0.so.0.5600.4 @ 0x1116b4 */
| #include <stdint.h>
|
; (fcn) sym.g_settings_bind_with_mapping () | void g_settings_bind_with_mapping (int32_t arg_40h, int32_t arg_44h, int32_t arg_48h, int32_t arg_4ch, int32_t arg_50h, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_1ch;
| r0 = arg1;
| r1 = arg2;
0x001116b4 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x001116b8 ldr fp, [pc, 0x570] | fp = sym.g_file_make_directory_finish;
0x001116bc sub sp, sp, 0x1c |
0x001116c0 mov sl, r3 | sl = r3;
0x001116c4 ldr r3, [sp, 0x48] | r3 = *(arg_48h);
0x001116c8 mov r7, r0 | r7 = r0;
0x001116cc str r3, [sp, 8] | var_8h = r3;
0x001116d0 ldr r3, [sp, 0x4c] | r3 = *(arg_4ch);
0x001116d4 mov sb, r1 | sb = r1;
0x001116d8 str r3, [sp, 0x10] | var_10h = r3;
0x001116dc ldr r3, [sp, 0x50] | r3 = *(arg_50h);
0x001116e0 mov r6, r2 | r6 = r2;
0x001116e4 ldr r5, [sp, 0x40] | r5 = *(arg_40h);
0x001116e8 ldr r8, [sp, 0x44] | r8 = *(arg_44h);
0x001116ec str r3, [sp, 0x14] | var_14h = r3;
0x001116f0 bl 0x10f2c0 | g_settings_get_type ();
0x001116f4 cmp r7, 0 |
0x001116f8 add fp, pc, fp |
| if (r7 != 0) {
0x001116fc beq 0x11172c |
0x00111700 ldr r3, [r7] | r3 = *(r7);
0x00111704 mov r1, r0 | r1 = r0;
0x00111708 cmp r3, 0 |
| if (r3 != 0) {
0x0011170c beq 0x11171c |
0x00111710 ldr r3, [r3] | r3 = *(r3);
0x00111714 cmp r3, r0 |
| if (r3 == r0) {
0x00111718 beq 0x111758 | goto label_3;
| }
| }
0x0011171c mov r0, r7 | r0 = r7;
0x00111720 bl 0x2db0c | r0 = g_type_check_instance_is_a ();
0x00111724 cmp r0, 0 |
| if (r0 != 0) {
0x00111728 bne 0x111758 | goto label_3;
| }
| }
0x0011172c ldr r1, [pc, 0x500] |
0x00111730 ldr r2, [pc, 0x500] | r2 = *(0x111c34);
0x00111734 ldr r0, [pc, 0x500] | r0 = *(0x111c38);
0x00111738 add r1, pc, r1 | r1 = pc + r1;
0x0011173c add r1, r1, 0x2c4 | r1 = 0x111ef4;
0x00111740 add r2, pc, r2 | r2 = pc + r2;
0x00111744 add r1, r1, 1 | r1++;
0x00111748 add r0, pc, r0 | r0 = pc + r0;
| do {
| label_0:
0x0011174c add sp, sp, 0x1c |
0x00111750 pop {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00111754 b 0x2c8f4 | void (*0x2c8f4)() ();
| label_3:
0x00111758 cmp sb, 0 |
| if (sb != 0) {
0x0011175c bne 0x111784 | goto label_4;
| }
0x00111760 ldr r1, [pc, 0x4d8] |
0x00111764 ldr r2, [pc, 0x4d8] | r2 = *(0x111c40);
0x00111768 ldr r0, [pc, 0x4d8] | r0 = *(0x111c44);
0x0011176c add r1, pc, r1 | r1 = pc + r1;
0x00111770 add r1, r1, 0x2c4 | r1 = 0x111f00;
0x00111774 add r2, pc, r2 | r2 = pc + r2;
0x00111778 add r1, r1, 1 | r1++;
0x0011177c add r0, pc, r0 | r0 = pc + r0;
0x00111780 b 0x11174c |
| } while (1);
| label_4:
0x00111784 mov r1, 0x50 | r1 = 0x50;
0x00111788 mov r0, r6 | r0 = r6;
0x0011178c bl 0x2d968 | r0 = g_type_check_instance_is_fundamentally_a ();
0x00111790 cmp r0, 0 |
| if (r0 == 0) {
0x00111794 bne 0x1117bc |
0x00111798 ldr r1, [pc, 0x4ac] |
0x0011179c ldr r2, [pc, 0x4ac] | r2 = *(0x111c4c);
0x001117a0 ldr r0, [pc, 0x4ac] | r0 = *(0x111c50);
0x001117a4 add r1, pc, r1 | r1 = pc + r1;
0x001117a8 add r1, r1, 0x2c4 | r1 = 0x111f0c;
0x001117ac add r2, pc, r2 | r2 = pc + r2;
0x001117b0 add r1, r1, 1 | r1++;
0x001117b4 add r0, pc, r0 | r0 = pc + r0;
0x001117b8 b 0x11174c | goto label_0;
| }
0x001117bc cmp sl, 0 |
| if (sl == 0) {
0x001117c0 bne 0x1117e8 |
0x001117c4 ldr r1, [pc, 0x48c] |
0x001117c8 ldr r2, [pc, 0x48c] | r2 = *(0x111c58);
0x001117cc ldr r0, [pc, 0x48c] | r0 = *(0x111c5c);
0x001117d0 add r1, pc, r1 | r1 = pc + r1;
0x001117d4 add r1, r1, 0x2c4 | r1 = 0x111f18;
0x001117d8 add r2, pc, r2 | r2 = pc + r2;
0x001117dc add r1, r1, 1 | r1++;
0x001117e0 add r0, pc, r0 | r0 = pc + r0;
0x001117e4 b 0x11174c | goto label_0;
| }
0x001117e8 tst r5, 0x10 |
| if ((r5 & 0x10) != 0) {
0x001117ec beq 0x111814 |
0x001117f0 ldr r1, [pc, 0x46c] |
0x001117f4 ldr r2, [pc, 0x46c] | r2 = *(0x111c64);
0x001117f8 ldr r0, [pc, 0x46c] | r0 = *(0x111c68);
0x001117fc add r1, pc, r1 | r1 = pc + r1;
0x00111800 add r1, r1, 0x2c4 | r1 = 0x111f24;
0x00111804 add r2, pc, r2 | r2 = pc + r2;
0x00111808 add r1, r1, 1 | r1++;
0x0011180c add r0, pc, r0 | r0 = pc + r0;
0x00111810 b 0x11174c | goto label_0;
| }
0x00111814 ldr r3, [r6] | r3 = *(r6);
0x00111818 mov r0, 0x5c | r0 = 0x5c;
0x0011181c str r3, [sp, 0xc] | var_ch = r3;
0x00111820 bl 0x2db6c | g_slice_alloc0 ();
0x00111824 ldr r3, [r7, 0xc] | r3 = *((r7 + 0xc));
0x00111828 mov r2, sb | r2 = sb;
0x0011182c ldr r1, [r3, 8] | r1 = *((r3 + 8));
0x00111830 mov r4, r0 | r4 = r0;
0x00111834 bl 0x10c0dc | fcn_0010c0dc (r0, r1);
0x00111838 mov r0, r7 | r0 = r7;
0x0011183c bl 0x2cf00 | g_object_ref ();
0x00111840 str r6, [r4, 0x34] | *((r4 + 0x34)) = r6;
0x00111844 mov r1, sl | r1 = sl;
0x00111848 str r0, [r4, 0x30] | *((r4 + 0x30)) = r0;
0x0011184c ldr r0, [sp, 0xc] | r0 = var_ch;
0x00111850 bl 0x2c48c | g_object_class_find_property ();
0x00111854 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00111858 cmp r8, 0 |
0x0011185c str r3, [r4, 0x40] | *((r4 + 0x40)) = r3;
0x00111860 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00111864 str r3, [r4, 0x44] | *((r4 + 0x44)) = r3;
| if (r8 == 0) {
0x00111868 movne r3, r8 | r3 = r8;
| }
0x0011186c str r0, [r4, 0x50] | *((r4 + 0x50)) = r0;
| if (r8 != 0) {
0x00111870 ldreq r3, [pc, 0x3f8] | r3 = *((pc + 0x3f8));
| }
| if (r8 != 0) {
0x00111874 ldreq r3, [fp, r3] | r3 = *((fp + r3));
| }
0x00111878 str r3, [r4, 0x38] | *((r4 + 0x38)) = r3;
0x0011187c ldr r3, [sp, 8] | r3 = var_8h;
0x00111880 cmp r3, 0 |
| if (r3 == 0) {
0x00111884 ldrne r3, [sp, 8] | r3 = var_8h;
| }
| if (r3 != 0) {
0x00111888 ldreq r3, [pc, 0x3e4] | r3 = *((pc + 0x3e4));
| }
| if (r3 != 0) {
0x0011188c ldreq r3, [fp, r3] | r3 = *((fp + r3));
| }
0x00111890 tst r5, 3 |
| if ((r5 & 3) != 0) {
0x00111894 orreq r5, r5, 3 | r5 |= 3;
| }
0x00111898 cmp r0, 0 |
0x0011189c str r3, [r4, 0x3c] | *((r4 + 0x3c)) = r3;
| if (r0 != 0) {
0x001118a0 bne 0x1118d8 | goto label_5;
| }
0x001118a4 ldr r3, [r6] | r3 = *(r6);
0x001118a8 ldr r0, [r3] | r0 = *(r3);
0x001118ac bl 0x2c564 | g_type_name ();
0x001118b0 ldr r2, [pc, 0x3c0] | r2 = *(0x111c74);
0x001118b4 mov r3, sl | r3 = sl;
0x001118b8 add r2, pc, r2 | r2 = pc + r2;
0x001118bc mov r1, 8 | r1 = 8;
0x001118c0 str r0, [sp, 0x40] | *(arg_40h) = r0;
0x001118c4 ldr r0, [pc, 0x3b0] | r0 = *(0x111c78);
0x001118c8 add r0, pc, r0 | r0 = pc + r0;
| do {
| label_1:
0x001118cc add sp, sp, 0x1c |
0x001118d0 pop {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x001118d4 b 0x2d638 | void (*0x2d638)() ();
| label_5:
0x001118d8 ands sl, r5, 1 | sl = r5 & 1;
| if (sl == r5) {
0x001118dc beq 0x11191c | goto label_6;
| }
0x001118e0 ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x001118e4 tst r3, 2 |
| if ((r3 & 2) != 0) {
0x001118e8 bne 0x11191c | goto label_6;
| }
0x001118ec ldr r3, [r6] | r3 = *(r6);
0x001118f0 ldr r4, [r0, 4] | r4 = *((r0 + 4));
0x001118f4 ldr r0, [r3] | r0 = *(r3);
0x001118f8 bl 0x2c564 | g_type_name ();
0x001118fc ldr r2, [pc, 0x37c] | r2 = *(0x111c7c);
0x00111900 mov r3, r4 | r3 = r4;
0x00111904 add r2, pc, r2 | r2 = pc + r2;
0x00111908 mov r1, 8 | r1 = 8;
0x0011190c str r0, [sp, 0x40] | *(arg_40h) = r0;
0x00111910 ldr r0, [pc, 0x36c] | r0 = *(0x111c80);
0x00111914 add r0, pc, r0 | r0 = pc + r0;
0x00111918 b 0x1118cc |
| } while (1);
| label_6:
0x0011191c ands fp, r5, 2 |
| if (fp != r5) {
0x00111920 beq 0x111960 |
0x00111924 ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x00111928 tst r3, 1 |
| if ((r3 & 1) != 0) {
0x0011192c bne 0x111960 | goto label_7;
| }
0x00111930 ldr r3, [r6] | r3 = *(r6);
0x00111934 ldr r4, [r0, 4] | r4 = *((r0 + 4));
0x00111938 ldr r0, [r3] | r0 = *(r3);
0x0011193c bl 0x2c564 | g_type_name ();
0x00111940 ldr r2, [pc, 0x340] | r2 = *(0x111c84);
0x00111944 mov r3, r4 | r3 = r4;
0x00111948 add r2, pc, r2 | r2 = pc + r2;
0x0011194c mov r1, 8 | r1 = 8;
0x00111950 str r0, [sp, 0x40] | *(arg_40h) = r0;
0x00111954 ldr r0, [pc, 0x330] | r0 = *(0x111c88);
0x00111958 add r0, pc, r0 | r0 = pc + r0;
0x0011195c b 0x1118cc | goto label_1;
| }
| label_7:
0x00111960 ldr r3, [pc, 0x328] | r3 = *(0x111c8c);
0x00111964 add r3, pc, r3 | r3 = pc + r3;
0x00111968 cmp r8, r3 |
| if (r8 != r3) {
0x0011196c bne 0x111a1c | goto label_8;
| }
0x00111970 ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x00111974 cmp r3, 0x14 |
| if (r3 == 0x14) {
0x00111978 beq 0x1119c8 | goto label_9;
| }
0x0011197c ldr r3, [r6] | r3 = *(r6);
0x00111980 ldr r5, [r0, 4] | r5 = *((r0 + 4));
0x00111984 ldr r0, [r3] | r0 = *(r3);
0x00111988 bl 0x2c564 | g_type_name ();
0x0011198c ldr r3, [r4, 0x50] | r3 = *((r4 + 0x50));
0x00111990 mov r6, r0 | r6 = r0;
0x00111994 ldr r0, [r3, 0xc] | r0 = *((r3 + 0xc));
0x00111998 bl 0x2c564 | g_type_name ();
0x0011199c ldr r2, [pc, 0x2f0] | r2 = *(0x111c90);
0x001119a0 mov r3, r5 | r3 = r5;
0x001119a4 add r2, pc, r2 | r2 = pc + r2;
0x001119a8 mov r1, 8 | r1 = 8;
0x001119ac str r6, [sp, 0x40] | *(arg_40h) = r6;
0x001119b0 str r0, [sp, 0x44] | *(arg_44h) = r0;
0x001119b4 ldr r0, [pc, 0x2dc] | r0 = *(0x111c94);
0x001119b8 add r0, pc, r0 | r0 = pc + r0;
| do {
0x001119bc add sp, sp, 0x1c |
0x001119c0 pop {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x001119c4 b 0x2d638 | void (*0x2d638)() ();
| label_9:
0x001119c8 ldr r1, [pc, 0x2cc] | r1 = *(0x111c98);
0x001119cc ldr r0, [r4, 0x1c] | r0 = *((r4 + 0x1c));
0x001119d0 add r1, pc, r1 | r1 = pc + r1;
0x001119d4 bl 0x2cdf8 | r0 = g_variant_type_equal ();
0x001119d8 cmp r0, 0 |
| if (r0 != 0) {
0x001119dc bne 0x111ad8 | goto label_10;
| }
0x001119e0 ldr r3, [r7, 0xc] | r3 = *((r7 + 0xc));
0x001119e4 ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x001119e8 bl 0x10c0d4 | r0 = g_settings_schema_get_id ();
0x001119ec mov r5, r0 | r5 = r0;
0x001119f0 ldr r0, [r4, 0x1c] | r0 = *((r4 + 0x1c));
0x001119f4 bl 0x2c4bc | g_variant_type_dup_string ();
0x001119f8 ldr r2, [pc, 0x2a0] | r2 = *(0x111c9c);
0x001119fc str r5, [sp, 0x40] | *(arg_40h) = r5;
0x00111a00 mov r3, sb | r3 = sb;
0x00111a04 add r2, pc, r2 | r2 = pc + r2;
0x00111a08 mov r1, 8 | r1 = 8;
0x00111a0c str r0, [sp, 0x44] | *(arg_44h) = r0;
0x00111a10 ldr r0, [pc, 0x28c] | r0 = *(0x111ca0);
0x00111a14 add r0, pc, r0 | r0 = pc + r0;
0x00111a18 b 0x1119bc |
| } while (1);
| label_8:
0x00111a1c cmp r8, 0 |
| if (r8 != 0) {
0x00111a20 moveq r8, sl | r8 = sl;
| }
| if (r8 == 0) {
0x00111a24 movne r8, 0 | r8 = 0;
| }
0x00111a28 cmp r8, 0 |
| if (r8 == 0) {
0x00111a2c bne 0x111a4c |
0x00111a30 ldr r2, [sp, 8] | r2 = var_8h;
0x00111a34 adds r3, fp, 0 | r3 += arg_40h;
| if (r3 == arg_40h) {
0x00111a38 movne r3, 1 | r3 = 1;
| }
0x00111a3c cmp r2, 0 |
| if (r2 == 0) {
0x00111a40 movne r3, 0 | r3 = 0;
| }
0x00111a44 cmp r3, 0 |
| if (r3 == 0) {
0x00111a48 beq 0x111ad8 | goto label_10;
| }
| }
0x00111a4c ldr r1, [r4, 0x1c] | r1 = *((r4 + 0x1c));
0x00111a50 ldr r0, [r0, 0xc] | r0 = *((r0 + 0xc));
0x00111a54 bl 0x10def0 | r0 = fcn_0010def0 (r0, r1);
0x00111a58 cmp r0, 0 |
| if (r0 == 0) {
0x00111a5c bne 0x111ad8 |
0x00111a60 ldr r3, [r4, 0x50] | r3 = *((r4 + 0x50));
0x00111a64 ldr r5, [r3, 4] | r5 = *((r3 + 4));
0x00111a68 ldr r3, [r6] | r3 = *(r6);
0x00111a6c ldr r0, [r3] | r0 = *(r3);
0x00111a70 bl 0x2c564 | g_type_name ();
0x00111a74 ldr r3, [r4, 0x50] | r3 = *((r4 + 0x50));
0x00111a78 mov r6, r0 | r6 = r0;
0x00111a7c ldr r0, [r3, 0xc] | r0 = *((r3 + 0xc));
0x00111a80 bl 0x2c564 | r0 = g_type_name ();
0x00111a84 mov r8, r0 | r8 = r0;
0x00111a88 ldr r0, [r4, 0x1c] | r0 = *((r4 + 0x1c));
0x00111a8c bl 0x2c4bc | g_variant_type_dup_string ();
0x00111a90 ldr r3, [r7, 0xc] | r3 = *((r7 + 0xc));
0x00111a94 mov r4, r0 | r4 = r0;
0x00111a98 ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x00111a9c bl 0x10c0d4 | g_settings_schema_get_id ();
0x00111aa0 ldr r2, [pc, 0x200] | r2 = *(0x111ca4);
0x00111aa4 mov r3, r5 | r3 = r5;
0x00111aa8 add r2, pc, r2 | r2 = pc + r2;
0x00111aac mov r1, 8 | r1 = 8;
0x00111ab0 str sb, [sp, 0x4c] | *(arg_4ch) = sb;
0x00111ab4 str r4, [sp, 0x48] | *(arg_48h) = r4;
0x00111ab8 str r8, [sp, 0x44] | *(arg_44h) = r8;
0x00111abc str r6, [sp, 0x40] | *(arg_40h) = r6;
0x00111ac0 str r0, [sp, 0x50] | *(arg_50h) = r0;
0x00111ac4 ldr r0, [pc, 0x1e0] | r0 = *(0x111ca8);
0x00111ac8 add r0, pc, r0 | r0 = pc + r0;
0x00111acc add sp, sp, 0x1c |
0x00111ad0 pop {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00111ad4 b 0x2d638 | void (*0x2d638)() ();
| }
| label_10:
0x00111ad8 and r3, r5, 6 | r3 = r5 & 6;
0x00111adc cmp r3, 2 |
| if (r3 == 2) {
0x00111ae0 bne 0x111b34 |
0x00111ae4 ldr r8, [pc, 0x1c4] | r8 = *(0x111cac);
0x00111ae8 ldr r0, [sp, 0xc] | r0 = var_ch;
0x00111aec add r8, pc, r8 | r8 = pc + r8;
0x00111af0 mov r1, r8 | r1 = r8;
0x00111af4 bl 0x2c48c | r0 = g_object_class_find_property ();
0x00111af8 cmp r0, 0 |
| if (r0 == 0) {
0x00111afc beq 0x111b34 | goto label_11;
| }
0x00111b00 ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x00111b04 cmp r3, 0x14 |
| if (r3 != 0x14) {
0x00111b08 bne 0x111b34 | goto label_11;
| }
0x00111b0c ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x00111b10 tst r3, 2 |
| if ((r3 & 2) == 0) {
0x00111b14 beq 0x111b34 | goto label_11;
| }
0x00111b18 mov r3, 0 | r3 = 0;
0x00111b1c str r3, [sp] | *(sp) = r3;
0x00111b20 mov r2, r6 | r2 = r6;
0x00111b24 mov r3, r8 | r3 = r8;
0x00111b28 ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x00111b2c mov r0, r7 | r0 = r7;
0x00111b30 bl 0x1114e4 | g_settings_bind_writable ();
| }
| label_11:
0x00111b34 cmp fp, 0 |
| if (fp == 0) {
0x00111b38 beq 0x111c24 | goto label_12;
| }
0x00111b3c ldr r3, [r4, 0x50] | r3 = *((r4 + 0x50));
0x00111b40 ldr r0, [pc, 0x16c] | r0 = *(0x111cb0);
0x00111b44 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x00111b48 add r0, pc, r0 | r0 = pc + r0;
0x00111b4c bl 0x2cde0 | g_strdup_printf ();
0x00111b50 ldr r2, [pc, 0x160] | r2 = *(0x111cb4);
0x00111b54 mov r3, 0 | r3 = 0;
0x00111b58 str r3, [sp, 4] | var_4h = r3;
0x00111b5c str r3, [sp] | *(sp) = r3;
0x00111b60 add r2, pc, r2 | r2 = pc + r2;
0x00111b64 mov r3, r4 | r3 = r4;
0x00111b68 mov r1, r0 | r1 = r0;
0x00111b6c mov r8, r0 | r8 = r0;
0x00111b70 mov r0, r6 | r0 = r6;
0x00111b74 bl 0x2de6c | g_signal_connect_data ();
0x00111b78 str r0, [r4, 0x4c] | *((r4 + 0x4c)) = r0;
0x00111b7c mov r0, r8 | r0 = r8;
0x00111b80 bl 0x2bf4c | g_free ();
0x00111b84 cmp sl, 0 |
| if (sl != 0) {
0x00111b88 beq 0x111be8 |
| label_2:
0x00111b8c ands r5, r5, 8 | r5 &= 8;
| if (r5 == r5) {
0x00111b90 bne 0x111bd4 |
0x00111b94 ldr r0, [pc, 0x120] | r0 = *(0x111cb8);
0x00111b98 mov r1, sb | r1 = sb;
0x00111b9c add r0, pc, r0 | r0 = pc + r0;
0x00111ba0 bl 0x2cde0 | g_strdup_printf ();
0x00111ba4 ldr r2, [pc, 0x114] | r2 = *(0x111cbc);
0x00111ba8 str r5, [sp, 4] | var_4h = r5;
0x00111bac str r5, [sp] | *(sp) = r5;
0x00111bb0 mov r3, r4 | r3 = r4;
0x00111bb4 add r2, pc, r2 | r2 = pc + r2;
0x00111bb8 mov r8, r0 | r8 = r0;
0x00111bbc mov r1, r0 | r1 = r0;
0x00111bc0 mov r0, r7 | r0 = r7;
0x00111bc4 bl 0x2de6c | g_signal_connect_data ();
0x00111bc8 str r0, [r4, 0x54] | *((r4 + 0x54)) = r0;
0x00111bcc mov r0, r8 | r0 = r8;
0x00111bd0 bl 0x2bf4c | g_free ();
| }
0x00111bd4 mov r2, r4 | r2 = r4;
0x00111bd8 ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x00111bdc mov r0, r7 | r0 = r7;
0x00111be0 bl 0x10ead8 | fcn_0010ead8 (r0, r1);
0x00111be4 b 0x111bf8 |
| } else {
0x00111be8 mov r2, r4 | r2 = r4;
0x00111bec ldr r1, [r4, 0x50] | r1 = *((r4 + 0x50));
0x00111bf0 mov r0, r6 | r0 = r6;
0x00111bf4 bl 0x10f064 | fcn_0010f064 (r0, r1);
| }
| do {
0x00111bf8 ldr r3, [r4, 0x50] | r3 = *((r4 + 0x50));
0x00111bfc ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x00111c00 bl 0x10e9a0 | fcn_0010e9a0 (r0);
0x00111c04 ldr r3, [pc, 0xb8] | r3 = *(0x111cc0);
0x00111c08 mov r2, r4 | r2 = r4;
0x00111c0c add r3, pc, r3 | r3 = pc + r3;
0x00111c10 mov r1, r0 | r1 = r0;
0x00111c14 mov r0, r6 | r0 = r6;
0x00111c18 add sp, sp, 0x1c |
0x00111c1c pop {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00111c20 b 0x2d614 | void (*0x2d614)() ();
| label_12:
0x00111c24 cmp sl, 0 |
0x00111c28 beq 0x111bf8 |
| } while (sl == 0);
0x00111c2c b 0x111b8c | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libgio-2.0.so.0.5600.4 @ 0x87c4c */
| #include <stdint.h>
|
; (fcn) sym.g_task_set_task_data () | void g_task_set_task_data (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00087c4c push {r4, r5, r6, lr} |
0x00087c50 mov r4, r0 | r4 = r0;
0x00087c54 mov r6, r1 | r6 = r1;
0x00087c58 mov r5, r2 | r5 = r2;
0x00087c5c bl 0x87a18 | g_task_get_type ();
0x00087c60 cmp r4, 0 |
| if (r4 != 0) {
0x00087c64 beq 0x87c94 |
0x00087c68 ldr r3, [r4] | r3 = *(r4);
0x00087c6c mov r1, r0 | r1 = r0;
0x00087c70 cmp r3, 0 |
| if (r3 != 0) {
0x00087c74 beq 0x87c84 |
0x00087c78 ldr r3, [r3] | r3 = *(r3);
0x00087c7c cmp r3, r0 |
| if (r3 == r0) {
0x00087c80 beq 0x87cb8 | goto label_0;
| }
| }
0x00087c84 mov r0, r4 | r0 = r4;
0x00087c88 bl 0x2db0c | r0 = g_type_check_instance_is_a ();
0x00087c8c cmp r0, 0 |
| if (r0 != 0) {
0x00087c90 bne 0x87cb8 | goto label_0;
| }
| }
0x00087c94 ldr r1, [pc, 0x3c] |
0x00087c98 ldr r2, [pc, 0x3c] | r2 = *(0x87cd8);
0x00087c9c ldr r0, [pc, 0x3c] | r0 = *(0x87cdc);
0x00087ca0 add r1, pc, r1 | r1 = pc + r1;
0x00087ca4 add r2, pc, r2 | r2 = pc + r2;
0x00087ca8 add r1, r1, 0x18 | r1 = 0x87cec;
0x00087cac add r0, pc, r0 | r0 = pc + r0;
0x00087cb0 pop {r4, r5, r6, lr} |
0x00087cb4 b 0x2c8f4 | void (*0x2c8f4)() ();
| label_0:
0x00087cb8 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x00087cbc cmp r3, 0 |
| if (r3 != 0) {
0x00087cc0 beq 0x87ccc |
0x00087cc4 ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x00087cc8 blx r3 | uint32_t (*r3)(uint32_t) (r0);
| }
0x00087ccc str r6, [r4, 0x14] | *((r4 + 0x14)) = r6;
0x00087cd0 str r5, [r4, 0x18] | *((r4 + 0x18)) = r5;
0x00087cd4 pop {r4, r5, r6, pc} |
| }
[*] Function fprintf used 1 times libgio-2.0.so.0.5600.4