[*] Binary protection state of libgobject-2.0.so.0.5600.4
Partial RELRO No Canary found NX disabled DSO No RPATH No RUNPATH No Symbols
[*] Function printf tear down of libgobject-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/libgobject-2.0.so.0.5600.4 @ 0x109d4 */
| #include <stdint.h>
|
; (fcn) sym.g_enum_to_string () | void g_enum_to_string (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x000109d4 push {r4, r5, r6, lr} |
0x000109d8 mov r5, r0 | r5 = r0;
0x000109dc mov r4, r1 | r4 = r1;
0x000109e0 bl 0x298b4 | r0 = g_type_fundamental ();
0x000109e4 cmp r0, 0x30 |
| if (r0 == 0x30) {
0x000109e8 bne 0x10a10 |
0x000109ec mov r0, r5 | r0 = r5;
0x000109f0 bl 0x279b4 | r0 = g_type_class_ref ();
0x000109f4 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x000109f8 bne 0x10a40 | goto label_1;
| }
0x000109fc ldr r0, [pc, 0x78] | r0 = *(0x10a78);
0x00010a00 mov r1, r4 | r1 = r4;
0x00010a04 add r0, pc, r0 | r0 = pc + r0;
0x00010a08 pop {r4, r5, r6, lr} |
0x00010a0c b 0x9214 | void (*0x9214)() ();
| }
0x00010a10 ldr r1, [pc, 0x68] |
0x00010a14 ldr r2, [pc, 0x68] | r2 = *(0x10a80);
0x00010a18 ldr r0, [pc, 0x68] | r0 = *(0x10a84);
0x00010a1c add r1, pc, r1 | r1 = pc + r1;
0x00010a20 add r1, r1, 0x130 | r1 = 0x10bac;
0x00010a24 add r2, pc, r2 | r2 = pc + r2;
0x00010a28 add r1, r1, 2 | r1 += 2;
0x00010a2c add r0, pc, r0 | r0 = pc + r0;
0x00010a30 bl 0x92ec | g_return_if_fail_warning ();
0x00010a34 mov r4, 0 | r4 = 0;
| do {
0x00010a38 mov r0, r4 | r0 = r4;
0x00010a3c pop {r4, r5, r6, pc} |
| label_1:
0x00010a40 mov r1, r4 | r1 = r4;
0x00010a44 bl 0x1087c | r0 = g_enum_get_value ();
0x00010a48 cmp r0, 0 |
| if (r0 != 0) {
0x00010a4c bne 0x10a70 | goto label_2;
| }
0x00010a50 ldr r0, [pc, 0x34] | r0 = *(0x10a88);
0x00010a54 mov r1, r4 | r1 = r4;
0x00010a58 add r0, pc, r0 | r0 = pc + r0;
0x00010a5c bl 0x9214 | r0 = g_strdup_printf ()
| label_0:
0x00010a60 mov r4, r0 | r4 = r0;
0x00010a64 mov r0, r5 | r0 = r5;
0x00010a68 bl 0x2790c | g_type_class_unref ();
0x00010a6c b 0x10a38 |
| } while (1);
| label_2:
0x00010a70 ldr r0, [r0, 4] | r0 = *((r0 + 4));
0x00010a74 bl 0x9394 | g_strdup ();
0x00010a78 b 0x10a60 | 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/libgobject-2.0.so.0.5600.4 @ 0x30a08 */
| #include <stdint.h>
|
; (fcn) sym.g_strdup_value_contents () | void g_strdup_value_contents (int32_t arg1) {
| void * s;
| int32_t var_18h;
| r0 = arg1;
0x00030a08 push {r4, r5, r6, r7, r8, lr} |
0x00030a0c sub sp, sp, 0x18 |
0x00030a10 mov r4, r0 | r4 = r0;
0x00030a14 bl 0x2a798 | r0 = g_type_check_value ();
0x00030a18 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 == r0) {
0x00030a1c beq 0x30a4c | goto label_5;
| }
0x00030a20 ldr r5, [r4] | r5 = *(r4);
0x00030a24 cmp r5, 0x40 |
0x00030a28 bne 0x30a80 |
| while (r6 != r0) {
0x00030a2c mov r0, r4 | r0 = r4;
0x00030a30 bl 0x30660 | r0 = g_value_get_string ();
0x00030a34 cmp r0, 0 |
| if (r0 != 0) {
0x00030a38 bne 0x30b5c | goto label_6;
| }
0x00030a3c ldr r0, [pc, 0x344] | r0 = *(0x30d84);
0x00030a40 add r0, pc, r0 | r0 = pc + r0;
| label_1:
0x00030a44 bl 0x9394 | g_strdup ();
0x00030a48 b 0x30cbc | goto label_4;
| label_5:
0x00030a4c ldr r1, [pc, 0x338] |
0x00030a50 ldr r2, [pc, 0x338] | r2 = *(0x30d8c);
0x00030a54 ldr r0, [pc, 0x338] | r0 = *(0x30d90);
0x00030a58 add r1, pc, r1 | r1 = pc + r1;
0x00030a5c add r1, r1, 0x2a0 | r1 = 0x31028;
0x00030a60 add r2, pc, r2 | r2 = pc + r2;
0x00030a64 add r1, r1, 2 | r1 += 2;
0x00030a68 add r0, pc, r0 | r0 = pc + r0;
0x00030a6c bl 0x92ec | g_return_if_fail_warning ();
0x00030a70 mov r4, r5 | r4 = r5;
| label_0:
0x00030a74 mov r0, r4 | r0 = r4;
0x00030a78 add sp, sp, 0x18 |
0x00030a7c pop {r4, r5, r6, r7, r8, pc} |
0x00030a80 mov r1, 0x40 | r1 = 0x40;
0x00030a84 mov r0, r4 | r0 = r4;
0x00030a88 bl 0x2a7b8 | r0 = g_type_check_value_holds ();
0x00030a8c subs r6, r0, 0 | r6 = r0 - 0;
0x00030a90 bne 0x30a2c |
| }
0x00030a94 mov r1, 0x40 | r1 = 0x40;
0x00030a98 mov r0, r5 | r0 = r5;
0x00030a9c bl 0x2d23c | r0 = g_value_type_transformable ();
0x00030aa0 cmp r0, 0 |
| if (r0 == 0) {
0x00030aa4 beq 0x30ba0 | goto label_7;
| }
0x00030aa8 mov r5, sp | r5 = sp;
0x00030aac mov r2, 0x18 | r2 = 0x18;
0x00030ab0 mov r1, r6 | r1 = r6;
0x00030ab4 mov r0, r5 | r0 = r5;
0x00030ab8 bl 0x9118 | memset (r0, r1, r2);
0x00030abc mov r1, 0x40 | r1 = 0x40;
0x00030ac0 mov r0, r5 | r0 = r5;
0x00030ac4 bl 0x2c85c | g_value_init ();
0x00030ac8 mov r1, r5 | r1 = r5;
0x00030acc mov r0, r4 | r0 = r4;
0x00030ad0 bl 0x2d2f4 | g_value_transform ();
0x00030ad4 mov r0, r5 | r0 = r5;
0x00030ad8 bl 0x30660 | g_value_get_string ();
0x00030adc mov r1, r6 | r1 = r6;
0x00030ae0 bl 0x9484 | r0 = g_strescape ();
0x00030ae4 mov r6, r0 | r6 = r0;
0x00030ae8 mov r0, r5 | r0 = r5;
0x00030aec bl 0x2ca38 | g_value_unset ();
0x00030af0 ldr r5, [r4] | r5 = *(r4);
0x00030af4 cmp r5, 0x30 |
| if (r5 != 0x30) {
0x00030af8 beq 0x30b34 |
0x00030afc mov r1, 0x30 | r1 = 0x30;
0x00030b00 mov r0, r4 | r0 = r4;
0x00030b04 bl 0x2a7b8 | r0 = g_type_check_value_holds ();
0x00030b08 adds r0, r0, 0 | r0 += 0;
| if (r0 == r0) {
0x00030b0c movne r0, 1 | r0 = 1;
| }
0x00030b10 cmp r5, 0x34 |
| if (r5 != 0x34) {
0x00030b14 orreq r0, r0, 1 | r0 |= 1;
| }
0x00030b18 cmp r0, 0 |
| if (r0 != 0) {
0x00030b1c bne 0x30b34 | goto label_8;
| }
0x00030b20 mov r1, 0x34 | r1 = 0x34;
0x00030b24 mov r0, r4 | r0 = r4;
0x00030b28 bl 0x2a7b8 | r0 = g_type_check_value_holds ();
0x00030b2c cmp r0, 0 |
| if (r0 == 0) {
0x00030b30 beq 0x30b88 | goto label_9;
| }
| }
| label_8:
0x00030b34 mov r0, r5 | r0 = r5;
0x00030b38 bl 0x28540 | g_type_name ();
0x00030b3c mov r2, r6 | r2 = r6;
0x00030b40 mov r1, r0 | r1 = r0;
0x00030b44 ldr r0, [pc, 0x24c] | r0 = *(0x30d94);
0x00030b48 add r0, pc, r0 | r0 = pc + r0;
0x00030b4c bl 0x9214 | r0 = g_strdup_printf ()
| do {
0x00030b50 mov r4, r0 | r4 = r0;
0x00030b54 mov r0, r6 | r0 = r6;
0x00030b58 b 0x30b80 | goto label_10;
| label_6:
0x00030b5c mov r1, 0 | r1 = 0;
0x00030b60 bl 0x9484 | r0 = g_strescape ();
0x00030b64 mov r5, r0 | r5 = r0;
0x00030b68 mov r1, r0 | r1 = r0;
0x00030b6c ldr r0, [pc, 0x228] | r0 = *(0x30d98);
0x00030b70 add r0, pc, r0 | r0 = pc + r0;
0x00030b74 bl 0x9214 | r0 = g_strdup_printf ()
0x00030b78 mov r4, r0 | r4 = r0;
0x00030b7c mov r0, r5 | r0 = r5;
| label_10:
0x00030b80 bl 0x937c | g_free ();
0x00030b84 b 0x30a74 | goto label_0;
| label_9:
0x00030b88 cmp r6, 0 |
| if (r6 == 0) {
0x00030b8c movne r0, r6 | r0 = r6;
| }
| if (r6 != 0) {
0x00030b90 ldreq r0, [pc, 0x208] | r0 = *((pc + 0x208));
| }
| if (r6 != 0) {
0x00030b94 addeq r0, pc, r0 | r0 = pc + r0;
| }
0x00030b98 bl 0x9394 | g_strdup ();
0x00030b9c b 0x30b50 |
| } while (1);
| label_7:
0x00030ba0 mov r0, r4 | r0 = r4;
0x00030ba4 bl 0x2cabc | r0 = g_value_fits_pointer ();
0x00030ba8 cmp r0, 0 |
| if (r0 == 0) {
0x00030bac beq 0x30d7c | goto label_11;
| }
0x00030bb0 mov r0, r4 | r0 = r4;
0x00030bb4 bl 0x2cb1c | r0 = g_value_peek_pointer ();
0x00030bb8 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x00030bbc ldreq r0, [pc, 0x1e0] | r0 = *((pc + 0x1e0));
| }
| if (r5 == r0) {
0x00030bc0 addeq r0, pc, r0 | r0 = pc + r0;
| goto label_12;
| }
| if (r5 == r0) {
| label_12:
0x00030bc4 beq 0x30a44 | goto label_1;
| }
0x00030bc8 ldr r6, [r4] | r6 = *(r4);
0x00030bcc cmp r6, 0x50 |
| if (r6 != 0x50) {
0x00030bd0 beq 0x30be8 |
0x00030bd4 mov r1, 0x50 | r1 = 0x50;
0x00030bd8 mov r0, r4 | r0 = r4;
0x00030bdc bl 0x2a7b8 | r0 = g_type_check_value_holds ();
0x00030be0 cmp r0, 0 |
| if (r0 == 0) {
0x00030be4 beq 0x30c0c | goto label_13;
| }
| }
0x00030be8 ldr r3, [r5] | r3 = *(r5);
0x00030bec ldr r0, [r3] | r0 = *(r3);
0x00030bf0 bl 0x28540 | g_type_name ();
0x00030bf4 mov r2, r5 | r2 = r5;
0x00030bf8 mov r1, r0 | r1 = r0;
0x00030bfc ldr r0, [pc, 0x1a4] | r0 = *(0x30da4);
0x00030c00 add r0, pc, r0 | r0 = pc + r0;
| do {
| label_3:
0x00030c04 bl 0x9214 | g_strdup_printf ()
0x00030c08 b 0x30cbc | goto label_4;
| label_13:
0x00030c0c cmp r6, 0x4c |
| if (r6 != 0x4c) {
0x00030c10 beq 0x30c28 |
0x00030c14 mov r1, 0x4c | r1 = 0x4c;
0x00030c18 mov r0, r4 | r0 = r4;
0x00030c1c bl 0x2a7b8 | r0 = g_type_check_value_holds ();
0x00030c20 cmp r0, 0 |
| if (r0 == 0) {
0x00030c24 beq 0x30c48 | goto label_14;
| }
| }
0x00030c28 ldr r3, [r5] | r3 = *(r5);
0x00030c2c ldr r0, [r3] | r0 = *(r3);
0x00030c30 bl 0x28540 | g_type_name ();
0x00030c34 mov r2, r5 | r2 = r5;
0x00030c38 mov r1, r0 | r1 = r0;
0x00030c3c ldr r0, [pc, 0x168] | r0 = *(0x30da8);
0x00030c40 add r0, pc, r0 | r0 = pc + r0;
0x00030c44 b 0x30c04 |
| } while (1);
| label_14:
0x00030c48 bl 0xca8c | r0 = g_strv_get_type ();
0x00030c4c cmp r6, r0 |
0x00030c50 mov r1, r0 | r1 = r0;
| if (r6 != r0) {
0x00030c54 beq 0x30c68 |
0x00030c58 mov r0, r4 | r0 = r4;
0x00030c5c bl 0x2a7b8 | r0 = g_type_check_value_holds ();
0x00030c60 cmp r0, 0 |
| if (r0 == 0) {
0x00030c64 beq 0x30d08 | goto label_15;
| }
| }
0x00030c68 mov r0, r4 | r0 = r4;
0x00030c6c bl 0xcec0 | g_value_get_boxed ();
0x00030c70 ldr r7, [pc, 0x138] | r7 = *(0x30dac);
0x00030c74 ldr r8, [pc, 0x138] | r8 = *(0x30db0);
0x00030c78 add r7, pc, r7 | r7 = pc + r7;
0x00030c7c add r8, pc, r8 | r8 = pc + r8;
0x00030c80 mov r6, r0 | r6 = r0;
0x00030c84 ldr r0, [pc, 0x12c] | r0 = *(0x30db4);
0x00030c88 add r0, pc, r0 | r0 = pc + r0;
0x00030c8c bl 0x94a8 | r0 = g_string_new ();
0x00030c90 mov r4, r0 | r4 = r0;
| do {
| label_2:
0x00030c94 ldr r5, [r6] | r5 = *(r6);
0x00030c98 cmp r5, 0 |
| if (r5 == 0) {
0x00030c9c bne 0x30cc4 |
0x00030ca0 ldr r1, [pc, 0x114] | r1 = *(0x30db8);
0x00030ca4 mov r0, r4 | r0 = r4;
0x00030ca8 add r1, pc, r1 | r1 = pc + r1;
0x00030cac bl 0x91b4 | g_string_append ();
0x00030cb0 mov r1, r5 | r1 = r5;
0x00030cb4 mov r0, r4 | r0 = r4;
0x00030cb8 bl 0x9268 | r0 = g_string_free ();
| label_4:
0x00030cbc mov r4, r0 | r4 = r0;
0x00030cc0 b 0x30a74 | goto label_0;
| }
0x00030cc4 mov r1, 0 | r1 = 0;
0x00030cc8 mov r0, r5 | r0 = r5;
0x00030ccc bl 0x9484 | g_strescape ();
0x00030cd0 mov r1, r7 | r1 = r7;
0x00030cd4 mov r2, r0 | r2 = r0;
0x00030cd8 mov r5, r0 | r5 = r0;
0x00030cdc mov r0, r4 | r0 = r4;
0x00030ce0 bl 0x9298 | g_string_append_printf ()
0x00030ce4 mov r0, r5 | r0 = r5;
0x00030ce8 bl 0x937c | g_free ();
0x00030cec ldr r3, [r6, 4]! | r3 = *((r6 += 4));
0x00030cf0 cmp r3, 0 |
0x00030cf4 beq 0x30c94 |
| } while (r3 == 0);
0x00030cf8 mov r1, r8 | r1 = r8;
0x00030cfc mov r0, r4 | r0 = r4;
0x00030d00 bl 0x91b4 | g_string_append ();
0x00030d04 b 0x30c94 | goto label_2;
| label_15:
0x00030d08 cmp r6, 0x48 |
| if (r6 != 0x48) {
0x00030d0c beq 0x30d24 |
0x00030d10 mov r1, 0x48 | r1 = 0x48;
0x00030d14 mov r0, r4 | r0 = r4;
0x00030d18 bl 0x2a7b8 | r0 = g_type_check_value_holds ();
0x00030d1c cmp r0, 0 |
| if (r0 == 0) {
0x00030d20 beq 0x30d40 | goto label_16;
| }
| }
0x00030d24 mov r0, r6 | r0 = r6;
0x00030d28 bl 0x28540 | g_type_name ();
0x00030d2c mov r2, r5 | r2 = r5;
0x00030d30 mov r1, r0 | r1 = r0;
0x00030d34 ldr r0, [pc, 0x84] | r0 = *(0x30dbc);
0x00030d38 add r0, pc, r0 | r0 = pc + r0;
0x00030d3c b 0x30c04 | goto label_3;
| label_16:
0x00030d40 cmp r6, 0x44 |
| if (r6 != 0x44) {
0x00030d44 beq 0x30d5c |
0x00030d48 mov r1, 0x44 | r1 = 0x44;
0x00030d4c mov r0, r4 | r0 = r4;
0x00030d50 bl 0x2a7b8 | r0 = g_type_check_value_holds ();
0x00030d54 cmp r0, 0 |
| if (r0 == 0) {
0x00030d58 beq 0x30d70 | goto label_17;
| }
| }
0x00030d5c ldr r0, [pc, 0x60] | r0 = *(0x30dc0);
0x00030d60 mov r1, r5 | r1 = r5;
0x00030d64 add r0, pc, r0 | r0 = pc + r0;
0x00030d68 bl 0x9214 | g_strdup_printf ()
0x00030d6c b 0x30cbc | goto label_4;
| label_17:
0x00030d70 ldr r0, [pc, 0x50] | r0 = *(0x30dc4);
0x00030d74 add r0, pc, r0 | r0 = pc + r0;
0x00030d78 b 0x30a44 | goto label_1;
| label_11:
0x00030d7c ldr r0, [pc, 0x48] | r0 = *(0x30dc8);
0x00030d80 add r0, pc, r0 | r0 = pc + r0;
0x00030d84 b 0x30a44 | goto label_1;
| }
[*] Function printf used 7 times libgobject-2.0.so.0.5600.4