[*] Binary protection state of libgmodule-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 libgmodule-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/libgmodule-2.0.so.0.5600.4 @ 0x11e0 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.g_module_open () | void g_module_open (int32_t arg1, int32_t arg2) {
| int32_t fildes;
| char * s2;
| int32_t var_10h;
| int32_t var_24h;
| r0 = arg1;
| r1 = arg2;
0x000011e0 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000011e4 ldr r4, [pc, 0x714] | r4 = *(0x18fc);
0x000011e8 sub sp, sp, 0x24 |
0x000011ec add r4, pc, r4 | r4 = pc + r4;
0x000011f0 mov r5, r0 | r5 = r0;
0x000011f4 mov r0, 0 | r0 = 0;
0x000011f8 mov sl, r1 | sl = r1;
0x000011fc bl 0xe30 | fcn_00000e30 ();
0x00001200 mov r0, r4 | r0 = r4;
0x00001204 bl 0xb4c | g_rec_mutex_lock ();
0x00001208 ldr r3, [r4, 0x10] | r3 = *(0x190c);
0x0000120c cmp r3, 0 |
| if (r3 == 0) {
0x00001210 bne 0x1260 |
0x00001214 ldr r3, [pc, 0x6e8] | r3 = *(0x1900);
0x00001218 add r4, sp, 0x10 | r4 += var_10h;
0x0000121c add r3, pc, r3 | r3 = pc + r3;
0x00001220 ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x00001224 stm r4, {r0, r1, r2, r3} | *(r4) = r0;
| *((r4 + 4)) = r1;
| *((r4 + 8)) = r2;
| *((r4 + 12)) = r3;
0x00001228 ldr r0, [pc, 0x6d8] | r0 = *(0x1904);
0x0000122c add r0, pc, r0 | r0 = pc + r0;
0x00001230 bl 0xc18 | r0 = g_getenv ();
0x00001234 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 != r0) {
0x00001238 moveq r0, r3 | r0 = r3;
| }
| if (r3 != r0) {
0x0000123c beq 0x124c |
0x00001240 mov r2, 2 | r2 = 2;
0x00001244 mov r1, r4 | r1 = r4;
0x00001248 bl 0xbc4 | g_parse_debug_string ();
| }
0x0000124c ldr r3, [pc, 0x6b8] | r3 = *(0x1908);
0x00001250 mov r2, 1 | r2 = 1;
0x00001254 add r3, pc, r3 | r3 = pc + r3;
0x00001258 str r0, [r3, 0x14] | *((r3 + 0x14)) = r0;
0x0000125c str r2, [r3, 0x10] | *((r3 + 0x10)) = r2;
| }
0x00001260 ldr r3, [pc, 0x6a8] |
0x00001264 add r3, pc, r3 | r3 = pc + r3;
0x00001268 ldr r3, [r3, 0x14] | r3 = *(0x1920);
0x0000126c tst r3, 2 |
0x00001270 bicne sl, sl, 1 | __asm ("bicne sl, sl, 1");
0x00001274 cmp r5, 0 |
| if (r5 != 0) {
0x00001278 bne 0x12ec | goto label_15;
| }
0x0000127c ldr r4, [pc, 0x690] | r4 = *(0x1910);
0x00001280 add r4, pc, r4 | r4 = pc + r4;
0x00001284 ldr r1, [r4, 0x18] | r1 = *(0x1928);
0x00001288 cmp r1, 0 |
| if (r1 != 0) {
0x0000128c bne 0x12d0 | goto label_16;
| }
0x00001290 ldr r1, [pc, 0x680] | r1 = *(0x1914);
0x00001294 mov r0, r5 | r0 = r5;
0x00001298 bl 0xaf8 | r0 = dlopen ();
0x0000129c subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x000012a0 bne 0x1860 | goto label_17;
| }
0x000012a4 mov r0, 1 | r0 = 1;
0x000012a8 bl 0xe40 | r0 = fcn_00000e40 (r0);
0x000012ac bl 0xe30 | fcn_00000e30 ();
| do {
| label_12:
0x000012b0 ldr r4, [pc, 0x664] |
0x000012b4 add r4, pc, r4 | r4 = pc + r4;
0x000012b8 mov r0, r4 | r0 = r4;
0x000012bc bl 0xb58 | g_rec_mutex_unlock ();
0x000012c0 ldr r4, [r4, 0x18] | r4 = *(0x1930);
| label_1:
0x000012c4 mov r0, r4 | r0 = r4;
0x000012c8 add sp, sp, 0x24 |
0x000012cc pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_16:
0x000012d0 ldr r2, [r1, 8] | r2 = *((r1 + 8));
0x000012d4 add r3, r2, 1 | r3 = r2 + 1;
0x000012d8 bic r3, r3, 0x80000000 | r3 = BIT_MASK (r3, 0x80000000);
0x000012dc and r2, r2, 0x80000000 | r2 &= 0x80000000;
0x000012e0 orr r3, r3, r2 | r3 |= r2;
0x000012e4 str r3, [r1, 8] | *((r1 + 8)) = r3;
0x000012e8 b 0x12b0 |
| } while (1);
| label_15:
0x000012ec ldr r3, [pc, 0x62c] | r3 = *(0x191c);
0x000012f0 add r3, pc, r3 | r3 = pc + r3;
0x000012f4 ldr r4, [r3, 0xc] | r4 = *(0x1928);
| do {
0x000012f8 cmp r4, 0 |
| if (r4 == 0) {
0x000012fc bne 0x140c |
0x00001300 mov r1, 1 | r1 = 1;
0x00001304 mov r0, r5 | r0 = r5;
0x00001308 bl 0xbac | r0 = g_file_test ();
0x0000130c cmp r0, 0 |
| if (r0 != 0) {
0x00001310 beq 0x1324 |
0x00001314 mov r0, r5 | r0 = r5;
0x00001318 bl 0xbd0 | r0 = g_strdup ();
0x0000131c subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x00001320 bne 0x1430 | goto label_3;
| }
| }
0x00001324 ldr r1, [pc, 0x5f8] | r1 = *(0x1920);
0x00001328 mov r2, 0 | r2 = 0;
0x0000132c add r1, pc, r1 | r1 = pc + r1;
0x00001330 mov r0, r5 | r0 = r5;
0x00001334 bl 0xb64 | g_strconcat ();
0x00001338 mov r1, 1 | r1 = 1;
0x0000133c mov r4, r0 | r4 = r0;
0x00001340 bl 0xbac | r0 = g_file_test ();
0x00001344 cmp r0, 0 |
| if (r0 != 0) {
0x00001348 bne 0x1428 | goto label_18;
| }
0x0000134c mov r0, r4 | r0 = r4;
0x00001350 bl 0xbb8 | g_free ();
| label_0:
0x00001354 ldr r1, [pc, 0x5cc] | r1 = *(0x1924);
0x00001358 mov r2, 0 | r2 = 0;
0x0000135c add r1, pc, r1 | r1 = pc + r1;
0x00001360 mov r0, r5 | r0 = r5;
0x00001364 bl 0xb64 | g_strconcat ();
0x00001368 mov r1, 1 | r1 = 1;
0x0000136c mov r4, r0 | r4 = r0;
0x00001370 bl 0xbac | r0 = g_file_test ();
0x00001374 cmp r0, 0 |
| if (r0 != 0) {
0x00001378 bne 0x14fc | goto label_19;
| }
0x0000137c mov r0, r4 | r0 = r4;
0x00001380 bl 0xbb8 | g_free ();
| label_2:
0x00001384 mov r1, 0x2e | r1 = 0x2e;
0x00001388 mov r0, r5 | r0 = r5;
0x0000138c bl 0xb10 | strrchr (r0, r1);
0x00001390 mov r1, 0x2f | r1 = 0x2f;
0x00001394 mov r4, r0 | r4 = r0;
0x00001398 mov r0, r5 | r0 = r5;
0x0000139c bl 0xb10 | r0 = strrchr (r0, r1);
0x000013a0 cmp r4, r0 |
| if (r4 < r0) {
0x000013a4 movhs r0, 0 | r0 = 0;
| }
| if (r4 >= r0) {
0x000013a8 movlo r0, 1 | r0 = 1;
| }
0x000013ac cmp r4, 0 |
| if (r4 != 0) {
0x000013b0 moveq r0, 1 | r0 = 1;
| }
0x000013b4 cmp r0, 0 |
| if (r0 == 0) {
0x000013b8 beq 0x1508 | goto label_20;
| }
0x000013bc ldr r1, [pc, 0x568] | r1 = *(0x1928);
0x000013c0 mov r2, 0 | r2 = 0;
0x000013c4 add r1, pc, r1 | r1 = pc + r1;
0x000013c8 mov r0, r5 | r0 = r5;
0x000013cc bl 0xb64 | r0 = g_strconcat ();
| label_4:
0x000013d0 cmp r0, 0 |
0x000013d4 mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x000013d8 bne 0x1430 | goto label_3;
| }
0x000013dc mov r0, r5 | r0 = r5;
0x000013e0 bl 0xb40 | g_filename_display_name ();
0x000013e4 mov r7, r4 | r7 = r4;
0x000013e8 mov r1, r0 | r1 = r0;
0x000013ec mov r6, r0 | r6 = r0;
0x000013f0 ldr r0, [pc, 0x538] | r0 = *(0x192c);
0x000013f4 add r0, pc, r0 | r0 = pc + r0;
0x000013f8 bl 0xb28 | g_strdup_printf ()
0x000013fc bl 0xe08 | fcn_00000e08 (r0);
0x00001400 mov r0, r6 | r0 = r6;
0x00001404 bl 0xbb8 | g_free ();
0x00001408 b 0x14d8 | goto label_21;
| }
0x0000140c ldr r1, [r4] | r1 = *(r4);
0x00001410 mov r0, r5 | r0 = r5;
0x00001414 bl 0xaec | r0 = strcmp (r0, r1);
0x00001418 cmp r0, 0 |
| if (r0 == 0) {
0x0000141c beq 0x1884 | goto label_22;
| }
0x00001420 ldr r4, [r4, 0x10] | r4 = *((r4 + 0x10));
0x00001424 b 0x12f8 |
| } while (1);
| label_18:
0x00001428 cmp r4, 0 |
| if (r4 == 0) {
0x0000142c beq 0x1354 | goto label_0;
| }
| label_3:
0x00001430 mov r0, r4 | r0 = r4;
0x00001434 bl 0xc54 | r0 = strlen (r0);
0x00001438 cmp r0, 2 |
| if (r0 >= 2) {
0x0000143c bls 0x14a0 |
0x00001440 ldr r1, [pc, 0x4ec] | r1 = *(0x1930);
0x00001444 sub r0, r0, 3 | r0 -= 3;
0x00001448 add r1, pc, r1 | r1 = pc + r1;
0x0000144c add r0, r4, r0 | r0 = r4 + r0;
0x00001450 bl 0xaec | r0 = strcmp (r0, r1);
0x00001454 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x00001458 bne 0x14a0 | goto label_5;
| }
0x0000145c mov r2, r6 | r2 = r6;
0x00001460 mov r1, r6 | r1 = r6;
0x00001464 mov r0, r4 | r0 = r4;
0x00001468 bl 0xc48 | r0 = open64 ();
0x0000146c subs r3, r0, 0 | r3 = r0 - 0;
0x00001470 str r3, [sp, 8] | fildes = r3;
| if (r3 >= r0) {
0x00001474 bge 0x1514 | goto label_23;
| }
0x00001478 mov r0, r4 | r0 = r4;
0x0000147c bl 0xb40 | r0 = g_filename_display_name ();
0x00001480 mov r1, r0 | r1 = r0;
0x00001484 mov r6, r0 | r6 = r0;
0x00001488 ldr r0, [pc, 0x4a8] | r0 = *(0x1934);
0x0000148c add r0, pc, r0 | r0 = pc + r0;
0x00001490 bl 0xb28 | g_strdup_printf ()
0x00001494 bl 0xe08 | fcn_00000e08 (r0);
0x00001498 mov r0, r6 | r0 = r6;
0x0000149c bl 0xbb8 | g_free ();
| }
| label_5:
0x000014a0 tst sl, 2 |
| if ((sl & 2) == 0) {
0x000014a4 movne r1, 0 | r1 = 0;
| }
| if ((sl & 2) != 0) {
0x000014a8 moveq r1, 0x100 | r1 = 0x100;
| }
0x000014ac tst sl, 1 |
| if ((sl & 1) != 0) {
0x000014b0 moveq r3, 2 | r3 = 2;
| }
| if ((sl & 1) == 0) {
0x000014b4 movne r3, 1 | r3 = 1;
| }
0x000014b8 orr r1, r1, r3 | r1 |= r3;
0x000014bc mov r0, r4 | r0 = r4;
0x000014c0 bl 0xaf8 | r0 = dlopen ();
0x000014c4 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 == r0) {
0x000014c8 bne 0x14d8 |
0x000014cc mov r0, 1 | r0 = 1;
0x000014d0 bl 0xe40 | r0 = fcn_00000e40 (r0);
0x000014d4 bl 0xe30 | fcn_00000e30 ();
| }
| label_21:
0x000014d8 mov r0, r4 | r0 = r4;
0x000014dc bl 0xbb8 | g_free ();
0x000014e0 cmp r7, 0 |
| if (r7 != 0) {
0x000014e4 bne 0x1700 | goto label_24;
| }
| label_7:
0x000014e8 mov r4, 0 | r4 = 0;
| label_8:
0x000014ec ldr r0, [pc, 0x448] | r0 = *(0x1938);
0x000014f0 add r0, pc, r0 | r0 = pc + r0;
| label_13:
0x000014f4 bl 0xb58 | g_rec_mutex_unlock ();
0x000014f8 b 0x12c4 | goto label_1;
| label_19:
0x000014fc cmp r4, 0 |
| if (r4 == 0) {
0x00001500 beq 0x1384 | goto label_2;
| }
0x00001504 b 0x1430 | goto label_3;
| label_20:
0x00001508 mov r0, r5 | r0 = r5;
0x0000150c bl 0xbd0 | g_strdup ();
0x00001510 b 0x13d0 | goto label_4;
| label_23:
0x00001514 mov r0, r6 | r0 = r6;
0x00001518 bl 0xb1c | g_scanner_new ();
0x0000151c ldr r1, [sp, 8] | r1 = fildes;
0x00001520 mov sb, 1 | sb = 1;
0x00001524 mov r8, r6 | r8 = r6;
0x00001528 mov r7, r0 | r7 = r0;
0x0000152c bl 0xc60 | g_scanner_input_file ();
0x00001530 ldr r2, [r7, 0x14] | r2 = *((r7 + 0x14));
0x00001534 mov r1, r6 | r1 = r6;
0x00001538 ldrb r3, [r2, 0x12] | r3 = *((r2 + 0x12));
0x0000153c mov r0, r7 | r0 = r7;
0x00001540 orr r3, r3, 8 | r3 |= 8;
0x00001544 strb r3, [r2, 0x12] | *((r2 + 0x12)) = r3;
0x00001548 ldr r2, [pc, 0x3f0] | r2 = *(0x193c);
0x0000154c ldr r3, [pc, 0x3f0] | r3 = *(0x1940);
0x00001550 add r2, pc, r2 | r2 = pc + r2;
0x00001554 bl 0xb34 | g_scanner_scope_add_symbol ();
0x00001558 ldr r2, [pc, 0x3e8] | r2 = *(0x1944);
0x0000155c mov r3, 0x110 | r3 = 0x110;
0x00001560 add r2, pc, r2 | r2 = pc + r2;
0x00001564 mov r1, r6 | r1 = r6;
0x00001568 mov r0, r7 | r0 = r7;
0x0000156c bl 0xb34 | g_scanner_scope_add_symbol ();
0x00001570 ldr r2, [pc, 0x3d4] | r2 = "g_private_get";
0x00001574 ldr r3, [pc, 0x3d4] | r3 = "_module_error";
0x00001578 add r2, pc, r2 | r2 = pc + r2;
0x0000157c mov r1, r6 | r1 = r6;
0x00001580 mov r0, r7 | r0 = r7;
0x00001584 bl 0xb34 | g_scanner_scope_add_symbol ();
0x00001588 ldr r3, [pc, 0x3c4] | r3 = *(0x1950);
0x0000158c add r3, pc, r3 | r3 = pc + r3;
0x00001590 str r3, [sp, 0xc] | s2 = r3;
| label_6:
0x00001594 mov r0, r7 | r0 = r7;
0x00001598 bl 0xc0c | r0 = g_scanner_eof ();
0x0000159c cmp r0, 0 |
| if (r0 == 0) {
0x000015a0 beq 0x1634 | goto label_25;
| }
0x000015a4 cmp sb, 0 |
| if (sb == 0) {
0x000015a8 bne 0x15e0 |
0x000015ac mov r0, r4 | r0 = r4;
0x000015b0 bl 0xc30 | r0 = g_path_get_dirname ();
0x000015b4 mov fp, r0 |
0x000015b8 mov r0, r6 | r0 = r6;
0x000015bc bl 0xbb8 | g_free ();
0x000015c0 ldr r1, [pc, 0x390] | r1 = "get";
0x000015c4 mov r2, sb | r2 = sb;
0x000015c8 add r1, pc, r1 | r1 = pc + r1;
0x000015cc mov r0, fp | r0 = fp;
0x000015d0 bl 0xb64 | r0 = g_strconcat ();
0x000015d4 mov r6, r0 | r6 = r0;
0x000015d8 mov r0, fp | r0 = fp;
0x000015dc bl 0xbb8 | g_free ();
| }
0x000015e0 ldr r1, [pc, 0x374] | r1 = "ident";
0x000015e4 mov r3, 0 | r3 = 0;
0x000015e8 mov r2, r8 | r2 = r8;
0x000015ec add r1, pc, r1 | r1 = pc + r1;
0x000015f0 mov r0, r6 | r0 = r6;
0x000015f4 bl 0xb64 | r0 = g_strconcat ();
0x000015f8 mov sb, r0 | sb = r0;
0x000015fc mov r0, r8 | r0 = r8;
0x00001600 bl 0xbb8 | g_free ();
0x00001604 mov r0, r6 | r0 = r6;
0x00001608 bl 0xbb8 | g_free ();
0x0000160c mov r0, r7 | r0 = r7;
0x00001610 bl 0xc00 | g_scanner_destroy ();
0x00001614 ldr r0, [sp, 8] | r0 = fildes;
0x00001618 bl 0xbdc | close (r0);
0x0000161c cmp sb, 0 |
| if (sb == 0) {
0x00001620 beq 0x14a0 | goto label_5;
| }
0x00001624 mov r0, r4 | r0 = r4;
0x00001628 bl 0xbb8 | g_free ();
0x0000162c mov r4, sb | r4 = sb;
0x00001630 b 0x14a0 | goto label_5;
| label_25:
0x00001634 mov r0, r7 | r0 = r7;
0x00001638 bl 0xbf4 | r0 = g_scanner_get_next_token ();
0x0000163c sub r2, r0, 0x10c | r2 = r0 - 0x10c;
0x00001640 sub r2, r2, 3 | r2 -= 3;
0x00001644 cmp r2, 2 |
0x00001648 mov fp, r0 |
| if (r2 > 2) {
0x0000164c bhi 0x1594 | goto label_6;
| }
0x00001650 mov r0, r7 | r0 = r7;
0x00001654 bl 0xbf4 | r0 = g_scanner_get_next_token ();
0x00001658 cmp r0, 0x3d |
0x0000165c beq 0x16ac |
| while (r0 != 0x108) {
| label_14:
0x00001660 mov r0, r4 | r0 = r4;
0x00001664 bl 0xb40 | r0 = g_filename_display_name ();
0x00001668 mov r1, r0 | r1 = r0;
0x0000166c mov sb, r0 | sb = r0;
0x00001670 ldr r0, [pc, 0x2e8] | r0 = *(0x195c);
0x00001674 add r0, pc, r0 | r0 = pc + r0;
0x00001678 bl 0xb28 | g_strdup_printf ()
0x0000167c bl 0xe08 | fcn_00000e08 (r0);
0x00001680 mov r0, sb | r0 = sb;
0x00001684 bl 0xbb8 | g_free ();
0x00001688 mov r0, r8 | r0 = r8;
0x0000168c bl 0xbb8 | g_free ();
0x00001690 mov r0, r6 | r0 = r6;
0x00001694 bl 0xbb8 | g_free ();
0x00001698 mov r0, r7 | r0 = r7;
0x0000169c bl 0xc00 | g_scanner_destroy ();
0x000016a0 ldr r0, [sp, 8] | r0 = fildes;
0x000016a4 bl 0xbdc | close (r0);
0x000016a8 b 0x14a0 | goto label_5;
0x000016ac mov r0, r7 | r0 = r7;
0x000016b0 bl 0xbf4 | g_scanner_get_next_token ();
0x000016b4 cmp fp, 0x110 |
| if (fp == 0x110) {
0x000016b8 beq 0x18dc | goto label_26;
| }
0x000016bc cmp r0, 0x108 |
0x000016c0 bne 0x1660 |
| }
0x000016c4 ldr r3, [pc, 0x278] | r3 = *(0x1940);
0x000016c8 cmp fp, r3 |
| if (fp == r3) {
0x000016cc bne 0x16e8 |
0x000016d0 mov r0, r8 | r0 = r8;
0x000016d4 bl 0xbb8 | g_free ();
0x000016d8 ldr r0, [r7, 0x20] | r0 = *((r7 + 0x20));
0x000016dc bl 0xbd0 | r0 = g_strdup ();
0x000016e0 mov r8, r0 | r8 = r0;
0x000016e4 b 0x1594 | goto label_6;
| }
0x000016e8 mov r0, r6 | r0 = r6;
0x000016ec bl 0xbb8 | g_free ();
0x000016f0 ldr r0, [r7, 0x20] | r0 = *((r7 + 0x20));
0x000016f4 bl 0xbd0 | r0 = g_strdup ();
0x000016f8 mov r6, r0 | r6 = r0;
0x000016fc b 0x1594 | goto label_6;
| label_24:
0x00001700 ldr r3, [pc, 0x25c] | r3 = *(0x1960);
0x00001704 add r3, pc, r3 | r3 = pc + r3;
0x00001708 ldr r4, [r3, 0x18] | r4 = *(0x1978);
0x0000170c cmp r4, 0 |
| if (r4 != 0) {
0x00001710 beq 0x1720 |
0x00001714 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00001718 cmp r7, r3 |
| if (r7 == r3) {
0x0000171c beq 0x18a8 | goto label_27;
| }
| }
0x00001720 ldr r3, [pc, 0x240] | r3 = *(0x1964);
0x00001724 add r3, pc, r3 | r3 = pc + r3;
0x00001728 ldr r4, [r3, 0xc] | r4 = *(0x1970);
| label_9:
0x0000172c cmp r4, 0 |
| if (r4 != 0) {
0x00001730 bne 0x17f8 | goto label_28;
| }
0x00001734 bl 0xee4 | g_module_error ();
0x00001738 bl 0xbd0 | r0 = g_strdup ();
0x0000173c mov r8, r0 | r8 = r0;
0x00001740 mov r0, r4 | r0 = r4;
0x00001744 bl 0xe30 | fcn_00000e30 ();
0x00001748 mov r0, 0x14 | r0 = 0x14;
0x0000174c bl 0xad4 | r0 = g_malloc ();
0x00001750 mov r6, r0 | r6 = r0;
0x00001754 mov r0, r5 | r0 = r5;
0x00001758 bl 0xbd0 | g_strdup ();
0x0000175c mov r3, 1 | r3 = 1;
0x00001760 str r3, [r6, 8] | *((r6 + 8)) = r3;
0x00001764 ldr r3, [pc, 0x200] | r3 = *(0x1968);
0x00001768 ldr r1, [pc, 0x200] | r1 = *(0x196c);
0x0000176c add r3, pc, r3 | r3 = pc + r3;
0x00001770 ldr r2, [r3, 0xc] | r2 = "_";
0x00001774 str r4, [r6, 0xc] | *((r6 + 0xc)) = r4;
0x00001778 str r2, [r6, 0x10] | *((r6 + 0x10)) = r2;
0x0000177c add r1, pc, r1 | r1 = pc + r1;
0x00001780 add r2, sp, 0x10 | r2 += var_10h;
0x00001784 str r6, [r3, 0xc] | *((r3 + 0xc)) = r6;
0x00001788 stm r6, {r0, r7} | *(r6) = r0;
| *((r6 + 4)) = r7;
0x0000178c mov r0, r6 | r0 = r6;
0x00001790 bl 0x105c | r0 = g_module_symbol ();
0x00001794 cmp r0, 0 |
| if (r0 != 0) {
0x00001798 beq 0x17a8 |
0x0000179c ldr r3, [sp, 0x10] | r3 = var_10h;
0x000017a0 cmp r3, 0 |
| if (r3 != 0) {
0x000017a4 bne 0x180c | goto label_29;
| }
| }
| label_10:
0x000017a8 ldr r1, [pc, 0x1c4] | r1 = *(0x1970);
0x000017ac add r2, r6, 0xc | r2 = r6 + 0xc;
0x000017b0 add r1, pc, r1 | r1 = pc + r1;
0x000017b4 mov r0, r6 | r0 = r6;
0x000017b8 bl 0x105c | g_module_symbol ();
0x000017bc mov r0, r8 | r0 = r8;
0x000017c0 bl 0xe30 | fcn_00000e30 ();
0x000017c4 mov r4, r6 | r4 = r6;
| label_11:
0x000017c8 mov r0, r8 | r0 = r8;
0x000017cc bl 0xbb8 | g_free ();
0x000017d0 cmp r4, 0 |
| if (r4 == 0) {
0x000017d4 beq 0x14e8 | goto label_7;
| }
0x000017d8 ldr r3, [pc, 0x198] |
0x000017dc add r3, pc, r3 | r3 = pc + r3;
0x000017e0 ldr r3, [r3, 0x14] | r3 = *(0x1988);
0x000017e4 tst r3, 1 |
| if ((r3 & 1) == 0) {
0x000017e8 beq 0x14ec | goto label_8;
| }
0x000017ec mov r0, r4 | r0 = r4;
0x000017f0 bl 0xea4 | g_module_make_resident ();
0x000017f4 b 0x14ec | goto label_8;
| label_28:
0x000017f8 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000017fc cmp r7, r3 |
| if (r7 == r3) {
0x00001800 beq 0x18a8 | goto label_27;
| }
0x00001804 ldr r4, [r4, 0x10] | r4 = *((r4 + 0x10));
0x00001808 b 0x172c | goto label_9;
| label_29:
0x0000180c mov r0, r6 | r0 = r6;
0x00001810 blx r3 | r0 = uint32_t (*r3)(uint32_t) (r0);
0x00001814 cmp r0, 0 |
| if (r0 == 0) {
0x00001818 beq 0x17a8 | goto label_10;
| }
0x0000181c stm sp, {r0, r4} | *(sp) = r0;
| *((sp + 4)) = r4;
0x00001820 ldr r3, [pc, 0x154] | r3 = *(0x1978);
0x00001824 ldr r2, [pc, 0x154] | r2 = *(0x197c);
0x00001828 ldr r0, [pc, 0x154] | r0 = *(0x1980);
0x0000182c mov r1, r5 | r1 = r5;
0x00001830 add r3, pc, r3 | r3 = pc + r3;
0x00001834 add r2, pc, r2 | r2 = pc + r2;
0x00001838 add r0, pc, r0 | r0 = pc + r0;
0x0000183c bl 0xb64 | r0 = g_strconcat ();
0x00001840 mov r5, r0 | r5 = r0;
0x00001844 mov r0, r6 | r0 = r6;
0x00001848 bl 0xef4 | g_module_close ();
0x0000184c mov r0, r5 | r0 = r5;
0x00001850 bl 0xe30 | fcn_00000e30 ();
0x00001854 mov r0, r5 | r0 = r5;
0x00001858 bl 0xbb8 | g_free ();
0x0000185c b 0x17c8 | goto label_11;
| label_17:
0x00001860 mov r0, 0x14 | r0 = 0x14;
0x00001864 bl 0xad4 | g_malloc ();
0x00001868 mov r3, 0x80000001 | r3 = 0x80000001;
0x0000186c str r0, [r4, 0x18] | *((r4 + 0x18)) = r0;
0x00001870 stm r0, {r5, r6} | *(r0) = r5;
| *((r0 + 4)) = r6;
0x00001874 str r3, [r0, 8] | *((r0 + 8)) = r3;
0x00001878 str r5, [r0, 0xc] | *((r0 + 0xc)) = r5;
0x0000187c str r5, [r0, 0x10] | *((r0 + 0x10)) = r5;
0x00001880 b 0x12b0 | goto label_12;
| label_22:
0x00001884 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x00001888 ldr r0, [pc, 0xf8] | r0 = *(0x1984);
0x0000188c add r3, r2, 1 | r3 = r2 + 1;
0x00001890 bic r3, r3, 0x80000000 | r3 = BIT_MASK (r3, 0x80000000);
0x00001894 and r2, r2, 0x80000000 | r2 &= 0x80000000;
0x00001898 orr r3, r3, r2 | r3 |= r2;
0x0000189c str r3, [r4, 8] | *((r4 + 8)) = r3;
0x000018a0 add r0, pc, r0 | r0 = pc + r0;
0x000018a4 b 0x14f4 | goto label_13;
| label_27:
0x000018a8 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x000018ac bl 0xe70 | fcn_00000e70 ();
0x000018b0 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x000018b4 mov r0, 0 | r0 = 0;
0x000018b8 add r3, r2, 1 | r3 = r2 + 1;
0x000018bc bic r3, r3, 0x80000000 | r3 = BIT_MASK (r3, 0x80000000);
0x000018c0 and r2, r2, 0x80000000 | r2 &= 0x80000000;
0x000018c4 orr r3, r3, r2 | r3 |= r2;
0x000018c8 str r3, [r4, 8] | *((r4 + 8)) = r3;
0x000018cc bl 0xe30 | fcn_00000e30 ();
0x000018d0 ldr r0, [pc, 0xb4] | r0 = *(0x1988);
0x000018d4 add r0, pc, r0 | r0 = pc + r0;
0x000018d8 b 0x14f4 | goto label_13;
| label_26:
0x000018dc ldr r3, [pc, 0xac] | r3 = *(0x198c);
0x000018e0 cmp r0, r3 |
| if (r0 != r3) {
0x000018e4 bne 0x1660 | goto label_14;
| }
0x000018e8 ldr r1, [sp, 0xc] | r1 = s2;
0x000018ec ldr r0, [r7, 0x20] | r0 = *((r7 + 0x20));
0x000018f0 bl 0xaec | r0 = strcmp (r0, r1);
0x000018f4 clz sb, r0 | sb &= r0;
0x000018f8 lsr sb, sb, 5 | sb >>= 5;
0x000018fc b 0x1594 | goto label_6;
| }
[*] Function printf used 4 times libgmodule-2.0.so.0.5600.4