[*] Binary protection state of gio-querymodules

  
  	Partial RELRO  No Canary found   NX disabled  No PIE       No RPATH     No RUNPATH   No Symbols


[*] Function printf tear down of gio-querymodules

    ; 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/bin/gio-querymodules @ 0x10e5c */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) main ()                                          | int32_t main (uint32_t argc, char ** argv) {
                                                             |     uint32_t var_0h;
                                                             |     int32_t var_4h;
                                                             |     int32_t var_8h;
                                                             |     char ** var_ch;
                                                             |     int32_t var_10h;
                                                             |     int32_t var_14h;
                                                             |     int32_t var_18h;
                                                             |     int32_t var_1ch;
                                                             |     r0 = argc;
                                                             |     r1 = argv;
                                                             |     /* [09] -r-x section size 1284 named .text */
    0x00010e5c push {r4, r5, r6, r7, r8, sb, sl, fp, lr}     |     
    0x00010e60 cmp r0, 1                                     |     
    0x00010e64 sub sp, sp, 0x1c                              |     
    0x00010e68 str r0, [sp]                                  |     *(sp) = r0;
    0x00010e6c str r1, [sp, 0xc]                             |     var_ch = r1;
                                                             |     if (r0 != 1) {
    0x00010e70 bne 0x10e90                                   |         goto label_4;
                                                             |     }
    0x00010e74 ldr r0, [pc, 0x2d8]                           |     r0 = *(0x11150);
    0x00010e78 bl 0x10cf4                                    |     g_print ();
    0x00010e7c ldr r0, [pc, 0x2d4]                           |     r0 = "Usage:_gio_querymodules__directory1____directory2__..._";
    0x00010e80 bl 0x10cf4                                    |     g_print ();
    0x00010e84 ldr r0, [sp]                                  |     r0 = *(sp);
                                                             |     do {
    0x00010e88 add sp, sp, 0x1c                              |         
    0x00010e8c pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}      |         
                                                             | label_4:
    0x00010e90 ldr r1, [pc, 0x2c4]                           |         r1 = "Will update giomodule.cache in the listed directories\n";
    0x00010e94 mov r0, 6                                     |         r0 = 6;
    0x00010e98 bl 0x10ca0                                    |         setlocale (r0, "Will update giomodule.cache in the listed directories\n");
    0x00010e9c mov r0, 0x50                                  |         r0 = 0x50;
    0x00010ea0 bl 0x10d18                                    |         g_type_ensure ();
    0x00010ea4 mov r6, 1                                     |         r6 = 1;
                                                             | label_0:
    0x00010ea8 ldr r3, [sp]                                  |         r3 = *(sp);
    0x00010eac cmp r6, r3                                    |         
                                                             |         if (r6 < r3) {
    0x00010eb0 movge r0, 0                                   |             r0 = 0;
                                                             |         }
    0x00010eb4 bge 0x10e88                                   |         
                                                             |     } while (r6 >= r3);
    0x00010eb8 bl 0x10dfc                                    |     r0 = g_module_supported ();
    0x00010ebc cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00010ec0 beq 0x10f0c                                   |         goto label_5;
                                                             |     }
    0x00010ec4 ldr r3, [sp, 0xc]                             |     r3 = var_ch;
    0x00010ec8 mov r5, 0                                     |     r5 = 0;
    0x00010ecc ldr r7, [r3, r6, lsl 2]                       |     offset_0 = r6 << 2;
                                                             |     r7 = *((r3 + offset_0));
    0x00010ed0 add r2, sp, 0x18                              |     r2 += var_18h;
    0x00010ed4 str r5, [r2, -4]!                             |     *((r2 -= 4)) = r5;
    0x00010ed8 mov r1, r5                                    |     r1 = r5;
    0x00010edc mov r0, r7                                    |     r0 = r7;
    0x00010ee0 bl 0x10cac                                    |     r0 = g_dir_open ();
    0x00010ee4 subs r3, r0, 0                                |     r3 = r0 - 0;
    0x00010ee8 str r3, [sp, 4]                               |     var_4h = r3;
                                                             |     if (r3 != r0) {
    0x00010eec bne 0x10f14                                   |         goto label_6;
                                                             |     }
    0x00010ef0 ldr r3, [sp, 0x14]                            |     r3 = var_14h;
    0x00010ef4 ldr r0, [pc, 0x264]                           |     r0 = *(0x1115c);
    0x00010ef8 ldr r2, [r3, 8]                               |     r2 = *((r3 + 8));
    0x00010efc mov r1, r7                                    |     r1 = r7;
    0x00010f00 bl 0x10d0c                                    |     g_printerr ();
    0x00010f04 ldr r0, [sp, 0x14]                            |     r0 = var_14h;
    0x00010f08 bl 0x10e50                                    |     g_error_free ();
                                                             |     do {
                                                             | label_5:
    0x00010f0c add r6, r6, 1                                 |         r6++;
    0x00010f10 b 0x10ea8                                     |         goto label_0;
                                                             | label_6:
    0x00010f14 ldr r0, [pc, 0x240]                           |         r0 = "Will update giomodule.cache in the listed directories\n";
    0x00010f18 bl 0x10cb8                                    |         r0 = g_string_new ();
    0x00010f1c mov r4, r0                                    |         r4 = r0;
                                                             | label_1:
    0x00010f20 ldr r0, [sp, 4]                               |         r0 = var_4h;
    0x00010f24 bl 0x10de4                                    |         r0 = g_dir_read_name ();
    0x00010f28 cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x00010f2c bne 0x10fcc                                   |             goto label_7;
                                                             |         }
    0x00010f30 mov r0, r5                                    |         r0 = r5;
    0x00010f34 ldr r1, [pc, 0x228]                           |         r1 = "Unable_to_open_directory__s:__s";
    0x00010f38 bl 0x10d30                                    |         r0 = g_list_sort ();
    0x00010f3c mov r5, r0                                    |         r5 = r0;
    0x00010f40 str r0, [sp, 8]                               |         var_8h = r0;
                                                             | label_2:
    0x00010f44 cmp r5, 0                                     |         
                                                             |         if (r5 != 0) {
    0x00010f48 bne 0x10fe4                                   |             goto label_8;
                                                             |         }
    0x00010f4c ldr r0, [sp, 4]                               |         r0 = var_4h;
    0x00010f50 bl 0x10c88                                    |         g_dir_close ();
    0x00010f54 ldr r1, [pc, 0x20c]                           |         r1 = *(0x11164);
    0x00010f58 ldr r0, [sp, 8]                               |         r0 = var_8h;
    0x00010f5c bl 0x10cd0                                    |         g_list_free_full ();
    0x00010f60 mov r2, r5                                    |         r2 = r5;
    0x00010f64 mov r0, r7                                    |         r0 = r7;
    0x00010f68 ldr r1, [pc, 0x1fc]                           |         r1 = *(0x11168);
    0x00010f6c bl 0x10c94                                    |         g_build_filename ();
    0x00010f70 ldr r2, [r4, 4]                               |         r2 = *((r4 + 4));
    0x00010f74 cmp r2, 0                                     |         
    0x00010f78 mov r7, r0                                    |         r7 = r0;
                                                             |         if (r2 == 0) {
    0x00010f7c beq 0x11120                                   |             goto label_9;
                                                             |         }
    0x00010f80 add r3, sp, 0x18                              |         r3 += var_18h;
    0x00010f84 str r5, [r3, -4]!                             |         *((r3 -= 4)) = r5;
    0x00010f88 ldr r1, [r4]                                  |         r1 = *(r4);
    0x00010f8c bl 0x10d84                                    |         r0 = g_file_set_contents ();
    0x00010f90 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00010f94 bne 0x10fb4                                   |             
    0x00010f98 ldr r3, [sp, 0x14]                            |             r3 = var_14h;
    0x00010f9c ldr r0, [pc, 0x1cc]                           |             r0 = "giomodule.cache";
    0x00010fa0 ldr r2, [r3, 8]                               |             r2 = *((r3 + 8));
    0x00010fa4 mov r1, r7                                    |             r1 = r7;
    0x00010fa8 bl 0x10d0c                                    |             g_printerr ();
    0x00010fac ldr r0, [sp, 0x14]                            |             r0 = var_14h;
    0x00010fb0 bl 0x10e50                                    |             g_error_free ();
                                                             |         }
                                                             | label_3:
    0x00010fb4 mov r0, r7                                    |         r0 = r7;
    0x00010fb8 bl 0x10cc4                                    |         g_free ();
    0x00010fbc mov r1, 1                                     |         r1 = 1;
    0x00010fc0 mov r0, r4                                    |         r0 = r4;
    0x00010fc4 bl 0x10d60                                    |         g_string_free ();
    0x00010fc8 b 0x10f0c                                     |         
                                                             |     } while (1);
                                                             | label_7:
    0x00010fcc bl 0x10df0                                    |     r0 = g_strdup ();
    0x00010fd0 mov r1, r0                                    |     r1 = r0;
    0x00010fd4 mov r0, r5                                    |     r0 = r5;
    0x00010fd8 bl 0x10d24                                    |     r0 = g_list_prepend ();
    0x00010fdc mov r5, r0                                    |     r5 = r0;
    0x00010fe0 b 0x10f20                                     |     goto label_1;
                                                             | label_8:
    0x00010fe4 ldr sb, [r5]                                  |     sb = *(r5);
    0x00010fe8 ldr r1, [pc, 0x184]                           |     r1 = "Unable to create %s: %s\n";
    0x00010fec mov r0, sb                                    |     r0 = sb;
    0x00010ff0 bl 0x10dd8                                    |     r0 = g_str_has_prefix ();
    0x00010ff4 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00010ff8 beq 0x110f8                                   |         goto label_10;
                                                             |     }
    0x00010ffc ldr r1, [pc, 0x174]                           |     r1 = *(0x11174);
    0x00011000 mov r0, sb                                    |     r0 = sb;
    0x00011004 bl 0x10d3c                                    |     r0 = g_str_has_suffix ();
    0x00011008 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0001100c beq 0x110f8                                   |         goto label_10;
                                                             |     }
    0x00011010 mov r2, 0                                     |     r2 = 0;
    0x00011014 mov r1, sb                                    |     r1 = sb;
    0x00011018 mov r0, r7                                    |     r0 = r7;
    0x0001101c bl 0x10c94                                    |     g_build_filename ();
    0x00011020 mov r1, 3                                     |     r1 = 3;
    0x00011024 mov sl, r0                                    |     sl = r0;
    0x00011028 bl 0x10d90                                    |     r0 = g_module_open ();
    0x0001102c mov r8, r0                                    |     r8 = r0;
    0x00011030 mov r0, sl                                    |     r0 = sl;
    0x00011034 bl 0x10cc4                                    |     g_free ();
    0x00011038 cmp r8, 0                                     |     
                                                             |     if (r8 == 0) {
    0x0001103c beq 0x110f8                                   |         goto label_10;
                                                             |     }
    0x00011040 mov r0, sb                                    |     r0 = sb;
    0x00011044 bl 0x112b4                                    |     fcn_000112b4 ();
    0x00011048 mov r3, 0                                     |     r3 = 0;
    0x0001104c ldr r2, [pc, 0x128]                           |     r2 = *(0x11178);
    0x00011050 mov r1, r0                                    |     r1 = r0;
    0x00011054 mov sl, r0                                    |     sl = r0;
    0x00011058 ldr r0, [pc, 0x120]                           |     r0 = "_query";
    0x0001105c bl 0x10d54                                    |     g_strconcat ();
    0x00011060 add r2, sp, 0x10                              |     r2 += var_10h;
    0x00011064 mov r1, r0                                    |     r1 = r0;
    0x00011068 mov fp, r0                                    |     
    0x0001106c mov r0, r8                                    |     r0 = r8;
    0x00011070 bl 0x10e2c                                    |     g_module_symbol ();
    0x00011074 mov r0, fp                                    |     r0 = fp;
    0x00011078 bl 0x10cc4                                    |     g_free ();
    0x0001107c mov r0, sl                                    |     r0 = sl;
    0x00011080 bl 0x10cc4                                    |     g_free ();
    0x00011084 ldr r3, [sp, 0x10]                            |     r3 = var_10h;
    0x00011088 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x0001108c bne 0x110a0                                   |         
    0x00011090 add r2, sp, 0x10                              |         r2 += var_10h;
    0x00011094 ldr r1, [pc, 0xe8]                            |         r1 = "g_io_";
    0x00011098 mov r0, r8                                    |         r0 = r8;
    0x0001109c bl 0x10e2c                                    |         g_module_symbol ();
                                                             |     }
    0x000110a0 ldr r3, [sp, 0x10]                            |     r3 = var_10h;
    0x000110a4 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x000110a8 beq 0x110f0                                   |         goto label_11;
                                                             |     }
    0x000110ac blx r3                                        |     r0 = uint32_t (*r3)(uint32_t) (r0);
    0x000110b0 subs sl, r0, 0                                |     sl = r0 - 0;
                                                             |     if (sl == r0) {
    0x000110b4 beq 0x110f0                                   |         goto label_11;
                                                             |     }
    0x000110b8 mov r2, sb                                    |     r2 = sb;
    0x000110bc ldr r1, [pc, 0xc4]                            |     r1 = "g_io_module_query";
    0x000110c0 mov r0, r4                                    |     r0 = r4;
    0x000110c4 bl 0x10da8                                    |     g_string_append_printf ()
    0x000110c8 ldr fp, [pc, 0xbc]                            |     fp = *(0x0001118c);
    0x000110cc mov sb, 0                                     |     sb = 0;
                                                             |     do {
    0x000110d0 ldr r3, [sl, sb, lsl 2]                       |         offset_1 = sb << 2;
                                                             |         r3 = *((sl + offset_1));
    0x000110d4 cmp r3, 0                                     |         
                                                             |         if (r3 == 0) {
    0x000110d8 bne 0x11100                                   |             
    0x000110dc ldr r1, [pc, 0xac]                            |             r1 = *(0x1118c);
    0x000110e0 mov r0, r4                                    |             r0 = r4;
    0x000110e4 bl 0x10dcc                                    |             g_string_append ();
    0x000110e8 mov r0, sl                                    |             r0 = sl;
    0x000110ec bl 0x10d9c                                    |             g_strfreev ();
                                                             | label_11:
    0x000110f0 mov r0, r8                                    |             r0 = r8;
    0x000110f4 bl 0x10d6c                                    |             g_module_close ();
                                                             | label_10:
    0x000110f8 ldr r5, [r5, 4]                               |             r5 = *((r5 + 4));
    0x000110fc b 0x10f44                                     |             goto label_2;
                                                             |         }
    0x00011100 cmp sb, 0                                     |         
    0x00011104 ldr r2, [pc, 0x50]                            |         r2 = "Will update giomodule.cache in the listed directories\n";
    0x00011108 ldr r1, [pc, 0x84]                            |         r1 = *(0x11190);
                                                             |         if (sb == 0) {
    0x0001110c movne r2, fp                                  |             r2 = fp;
                                                             |         }
    0x00011110 mov r0, r4                                    |         r0 = r4;
    0x00011114 bl 0x10da8                                    |         g_string_append_printf ()
    0x00011118 add sb, sb, 1                                 |         sb++;
    0x0001111c b 0x110d0                                     |         
                                                             |     } while (1);
                                                             | label_9:
    0x00011120 bl 0x10ce8                                    |     r0 = g_unlink ();
    0x00011124 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00011128 beq 0x10fb4                                   |         goto label_3;
                                                             |     }
    0x0001112c bl 0x10e44                                    |     r0 = errno_location ();
    0x00011130 ldr r0, [r0]                                  |     r0 = *(r0);
    0x00011134 cmp r0, 2                                     |     
                                                             |     if (r0 == 2) {
    0x00011138 beq 0x10fb4                                   |         goto label_3;
                                                             |     }
    0x0001113c bl 0x10d48                                    |     g_strerror ();
    0x00011140 mov r1, r7                                    |     r1 = r7;
    0x00011144 mov r2, r0                                    |     r2 = r0;
    0x00011148 ldr r0, [pc, 0x48]                            |     r0 = "_s_s";
    0x0001114c bl 0x10d0c                                    |     g_printerr ();
    0x00011150 b 0x10fb4                                     |     goto label_3;
                                                             | }

[*] Function printf used 3 times gio-querymodules