[*] Binary protection state of libglib-2.0.so.0.5600.4

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


[*] Function popen tear down of libglib-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/libglib-2.0.so.0.5600.4 @ 0x35b04 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.00035b04 ()                                          | void fcn_00035b04 (int32_t arg1, int32_t arg2) {
                                                                     |     int32_t var_0h;
                                                                     |     int32_t var_8h;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
    0x00035b04 push {r0, r1, r4, r5, r6, r7, r8, sb, sl, lr}         |     
    0x00035b08 ldr r3, [r0, 0x28]                                    |     r3 = *((r0 + 0x28));
    0x00035b0c cmp r3, 0                                             |     
                                                                     |     if (r3 > 0) {
    0x00035b10 ble 0x35b74                                           |         
    0x00035b14 ldr r3, [r0, 0x20]                                    |         r3 = *((r0 + 0x20));
    0x00035b18 mov r5, r0                                            |         r5 = r0;
    0x00035b1c mov r0, r1                                            |         r0 = r1;
    0x00035b20 mov r4, r2                                            |         r4 = r2;
    0x00035b24 mov sl, r1                                            |         sl = r1;
    0x00035b28 blx r3                                                |         uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00035b2c mov r6, 0                                             |         r6 = 0;
    0x00035b30 mov r7, r6                                            |         r7 = r6;
    0x00035b34 mov r8, r6                                            |         r8 = r6;
    0x00035b38 cmp r0, 2                                             |         
                                                                     |         if (r0 < 2) {
    0x00035b3c movhs sb, r0                                          |             sb = r0;
                                                                     |         }
                                                                     |         if (r0 >= 2) {
    0x00035b40 movlo sb, 2                                           |             sb = 2;
                                                                     |         }
    0x00035b44 str sb, [r4]                                          |         *(r4) = sb;
    0x00035b48 mov r0, sb                                            |         r0 = sb;
    0x00035b4c ldr r1, [r5, 4]                                       |         r1 = *((r5 + 4));
    0x00035b50 bl 0x87138                                            |         fcn_00087138 (r0, r1);
    0x00035b54 ldr r3, [r5, 0x18]                                    |         r3 = *((r5 + 0x18));
    0x00035b58 ldr r3, [r3, r1, lsl 2]                               |         offset_0 = r1 << 2;
                                                                     |         r3 = *((r3 + offset_0));
    0x00035b5c mov r4, r1                                            |         r4 = r1;
                                                                     | label_0:
    0x00035b60 cmp r3, 0                                             |         
                                                                     |         if (r3 == 0) {
    0x00035b64 bne 0x35ba4                                           |             
    0x00035b68 cmp r7, 0                                             |             
                                                                     |             if (r7 == 0) {
    0x00035b6c movne r4, r8                                          |                 r4 = r8;
                                                                     |             }
    0x00035b70 b 0x35bd0                                             |             
                                                                     |         } else {
    0x00035b74 ldr r3, [pc, 0xa4]                                    |             r3 = *(0x35c1c);
    0x00035b78 ldr r1, [pc, 0xa4]                                    |             r1 = *(0x35c20);
    0x00035b7c add r3, pc, r3                                        |             r3 = pc + r3;
    0x00035b80 str r3, [sp]                                          |             *(sp) = r3;
    0x00035b84 ldr r3, [pc, 0x9c]                                    |             
    0x00035b88 ldr r0, [pc, 0x9c]                                    |             r0 = *(0x35c28);
    0x00035b8c add r3, pc, r3                                        |             r3 = pc + r3;
    0x00035b90 add r3, r3, 0xba                                      |             r3 = 0x35cde;
    0x00035b94 ldr r2, [pc, 0x94]                                    |             r2 = *(0x35c2c);
    0x00035b98 add r1, pc, r1                                        |             r1 = pc + r1;
    0x00035b9c add r0, pc, r0                                        |             r0 = pc + r0;
    0x00035ba0 bl 0x6848c                                            |             g_assertion_message_expr ();
                                                                     |         }
    0x00035ba4 cmp r3, sb                                            |         
                                                                     |         if (r3 != sb) {
    0x00035ba8 bne 0x35c00                                           |             goto label_1;
                                                                     |         }
    0x00035bac ldr r3, [r5, 0x14]                                    |         r3 = *((r5 + 0x14));
    0x00035bb0 ldr r0, [r3, r4, lsl 2]                               |         offset_1 = r4 << 2;
                                                                     |         r0 = *((r3 + offset_1));
    0x00035bb4 ldr r3, [r5, 0x24]                                    |         r3 = *((r5 + 0x24));
    0x00035bb8 cmp r3, 0                                             |         
                                                                     |         if (r3 == 0) {
    0x00035bbc beq 0x35bdc                                           |             goto label_2;
                                                                     |         }
    0x00035bc0 mov r1, sl                                            |         r1 = sl;
    0x00035bc4 blx r3                                                |         r0 = uint32_t (*r3)(uint32_t) (r1);
    0x00035bc8 cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x00035bcc beq 0x35be4                                           |             goto label_3;
                                                                     |         }
                                                                     |     }
                                                                     |     do {
    0x00035bd0 mov r0, r4                                            |         r0 = r4;
    0x00035bd4 add sp, sp, 8                                         |         
    0x00035bd8 pop {r4, r5, r6, r7, r8, sb, sl, pc}                  |         
                                                                     | label_2:
    0x00035bdc cmp sl, r0                                            |         
    0x00035be0 beq 0x35bd0                                           |         
                                                                     |     } while (sl == r0);
                                                                     |     do {
                                                                     | label_3:
    0x00035be4 ldr r3, [r5, 8]                                       |         r3 = *((r5 + 8));
    0x00035be8 add r6, r6, 1                                         |         r6++;
    0x00035bec add r4, r4, r6                                        |         r4 += r6;
    0x00035bf0 and r4, r4, r3                                        |         r4 &= r3;
    0x00035bf4 ldr r3, [r5, 0x18]                                    |         r3 = *((r5 + 0x18));
    0x00035bf8 ldr r3, [r3, r4, lsl 2]                               |         offset_2 = r4 << 2;
                                                                     |         r3 = *((r3 + offset_2));
    0x00035bfc b 0x35b60                                             |         goto label_0;
                                                                     | label_1:
    0x00035c00 eor r2, r7, 1                                         |         r2 = r7 ^ 1;
    0x00035c04 cmp r3, 1                                             |         
                                                                     |         if (r3 == 1) {
    0x00035c08 movne r3, 0                                           |             r3 = 0;
                                                                     |         }
                                                                     |         if (r3 != 1) {
    0x00035c0c andeq r3, r2, 1                                       |             r3 = r2 & 1;
                                                                     |         }
    0x00035c10 cmp r3, 0                                             |         
                                                                     |         if (r3 == 0) {
    0x00035c14 movne r8, r4                                          |             r8 = r4;
                                                                     |         }
                                                                     |         if (r3 == 0) {
    0x00035c18 movne r7, 1                                           |             r7 = 1;
                                                                     |         }
    0x00035c1c b 0x35be4                                             |         
                                                                     |     } 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/libglib-2.0.so.0.5600.4 @ 0x4ff28 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.0004ff28 ()                                          | void fcn_0004ff28 (int32_t arg_0h, int32_t arg1, int32_t arg2) {
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
    0x0004ff28 push {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}         |     
    0x0004ff2c mov r6, 0                                             |     r6 = 0;
    0x0004ff30 mov r8, r0                                            |     r8 = r0;
    0x0004ff34 mov sb, r1                                            |     sb = r1;
    0x0004ff38 mov r7, r6                                            |     r7 = r6;
    0x0004ff3c mov sl, 0x1c                                          |     sl = 0x1c;
                                                                     |     do {
    0x0004ff40 ldr r3, [r8, 0x28]                                    |         r3 = *((r8 + 0x28));
    0x0004ff44 cmp r3, r7                                            |         
                                                                     |         if (r3 <= r7) {
    0x0004ff48 bgt 0x4ff54                                           |             
    0x0004ff4c mov r0, r6                                            |             r0 = r6;
    0x0004ff50 pop {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}          |             
                                                                     |         }
    0x0004ff54 mul r4, sl, r7                                        |         r4 = sl * r7;
    0x0004ff58 ldr fp, [r8, 0x24]                                    |         fp = *((r8 + 0x24));
    0x0004ff5c add r5, fp, r4                                        |         r5 = fp + r4;
    0x0004ff60 ldr r3, [r5, 8]                                       |         r3 = *((r5 + 8));
    0x0004ff64 tst r3, 1                                             |         
                                                                     |         if ((r3 & 1) == 0) {
    0x0004ff68 bne 0x4ffe8                                           |             
    0x0004ff6c mov r1, r5                                            |             r1 = r5;
    0x0004ff70 mov r0, sb                                            |             r0 = sb;
    0x0004ff74 bl 0x36210                                            |             r0 = g_hash_table_lookup ();
    0x0004ff78 cmp r0, 0                                             |             
                                                                     |             if (r0 != 0) {
    0x0004ff7c ldreq r0, [fp, r4]                                    |                 r0 = *((fp + r4));
                                                                     |             }
    0x0004ff80 bl 0x4fe78                                            |             fcn_0004fe78 (r0);
    0x0004ff84 ldrb r3, [r5, 4]                                      |             r3 = *((r5 + 4));
    0x0004ff88 cmp r3, 0                                             |             
    0x0004ff8c ldr r3, [r5, 0xc]                                     |             r3 = *((r5 + 0xc));
    0x0004ff90 mov r4, r0                                            |             r4 = r0;
                                                                     |             if (r3 == 0) {
    0x0004ff94 addne r4, r0, 4                                       |                 r4 = r0 + 4;
                                                                     |             }
    0x0004ff98 cmp r3, 0                                             |             
                                                                     |             if (r3 != 0) {
    0x0004ff9c beq 0x4ffe0                                           |                 
    0x0004ffa0 cmp r3, 3                                             |                 
                                                                     |                 if (r3 == 3) {
    0x0004ffa4 bne 0x4ffb4                                           |                     
    0x0004ffa8 ldr r3, [r5, 8]                                       |                     r3 = *((r5 + 8));
    0x0004ffac tst r3, 8                                             |                     
                                                                     |                     if ((r3 & 8) != 0) {
    0x0004ffb0 bne 0x4ffe0                                           |                         goto label_0;
                                                                     |                     }
                                                                     |                 }
    0x0004ffb4 ldr r0, [r5, 0x18]                                    |                 r0 = *((r5 + 0x18));
    0x0004ffb8 cmp r0, 0                                             |                 
                                                                     |                 if (r0 == 0) {
    0x0004ffbc beq 0x4ffe0                                           |                     goto label_0;
                                                                     |                 }
    0x0004ffc0 ldr r3, [r8, 0x18]                                    |                 r3 = *((r8 + 0x18));
    0x0004ffc4 cmp r3, 0                                             |                 
                                                                     |                 if (r3 != 0) {
    0x0004ffc8 beq 0x4ffd4                                           |                     
    0x0004ffcc ldr r1, [r8, 0x20]                                    |                     r1 = *((r8 + 0x20));
    0x0004ffd0 blx r3                                                |                     r0 = uint32_t (*r3)(uint32_t) (r1);
                                                                     |                 }
    0x0004ffd4 bl 0x4fe78                                            |                 r0 = fcn_0004fe78 (r0);
    0x0004ffd8 add r0, r0, 1                                         |                 r0++;
    0x0004ffdc add r4, r4, r0                                        |                 r4 += r0;
                                                                     |             }
                                                                     | label_0:
    0x0004ffe0 cmp r6, r4                                            |             
                                                                     |             if (r6 < r4) {
    0x0004ffe4 movlt r6, r4                                          |                 r6 = r4;
                                                                     |                 goto label_1;
                                                                     |             }
                                                                     |         }
                                                                     | label_1:
    0x0004ffe8 add r7, r7, 1                                         |         r7++;
    0x0004ffec b 0x4ff40                                             |         
                                                                     |     } 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/libglib-2.0.so.0.5600.4 @ 0x4fff0 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.0004fff0 ()                                      | void fcn_0004fff0 (int32_t arg_28h, int32_t arg1, int32_t arg2) {
                                                                 |     int32_t var_0h;
                                                                 |     int32_t var_4h;
                                                                 |     int32_t var_ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x0004fff0 push {r0, r1, r2, r4, r5, r6, r7, r8, sb, lr}     |     
    0x0004fff4 ldr lr, [r2, 8]                                   |     
    0x0004fff8 ldr ip, [sp, 0x28]                                |     ip = *(arg_28h);
    0x0004fffc tst lr, 1                                         |     
                                                                 |     if ((lr & 1) != 0) {
    0x00050000 bne 0x50124                                       |         goto label_1;
                                                                 |     }
    0x00050004 ldr lr, [r2]                                      |     
    0x00050008 ldrb lr, [lr]                                     |     
    0x0005000c cmp lr, 0                                         |     
                                                                 |     if (lr == 0) {
    0x00050010 beq 0x50124                                       |         goto label_1;
                                                                 |     }
    0x00050014 mov r5, r1                                        |     r5 = r1;
    0x00050018 mov r6, r0                                        |     r6 = r0;
    0x0005001c mov r1, r2                                        |     r1 = r2;
    0x00050020 mov r0, ip                                        |     r0 = ip;
    0x00050024 mov r4, r2                                        |     r4 = r2;
    0x00050028 mov r8, r3                                        |     r8 = r3;
    0x0005002c bl 0x36210                                        |     r0 = g_hash_table_lookup ();
    0x00050030 subs sb, r0, 0                                    |     sb = r0 - 0;
    0x00050034 mov r0, 0                                         |     r0 = 0;
                                                                 |     if (sb != r0) {
    0x00050038 ldreq sb, [r4]                                    |         sb = *(r4);
                                                                 |     }
    0x0005003c bl 0x63968                                        |     g_string_new ();
    0x00050040 ldrb r2, [r4, 4]                                  |     r2 = *((r4 + 4));
    0x00050044 cmp r2, 0                                         |     
    0x00050048 mov r7, r0                                        |     r7 = r0;
                                                                 |     if (r2 == 0) {
    0x0005004c beq 0x50104                                       |         goto label_2;
                                                                 |     }
    0x00050050 ldr r1, [pc, 0xd4]                                |     r1 = *(0x50128);
    0x00050054 mov r3, sb                                        |     r3 = sb;
    0x00050058 add r1, pc, r1                                    |     r1 = pc + r1;
    0x0005005c bl 0x64580                                        |     g_string_append_printf ();
                                                                 |     do {
    0x00050060 ldr r0, [r4, 0x18]                                |         r0 = *((r4 + 0x18));
    0x00050064 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00050068 beq 0x50094                                       |             
    0x0005006c ldr r3, [r6, 0x18]                                |             r3 = *((r6 + 0x18));
    0x00050070 cmp r3, 0                                         |             
                                                                 |             if (r3 != 0) {
    0x00050074 beq 0x50080                                       |                 
    0x00050078 ldr r1, [r6, 0x20]                                |                 r1 = *((r6 + 0x20));
    0x0005007c blx r3                                            |                 uint32_t (*r3)(uint32_t) (r1);
                                                                 |             }
    0x00050080 ldr r1, [pc, 0xa8]                                |             r1 = *(0x5012c);
    0x00050084 mov r2, r0                                        |             r2 = r0;
    0x00050088 add r1, pc, r1                                    |             r1 = pc + r1;
    0x0005008c mov r0, r7                                        |             r0 = r7;
    0x00050090 bl 0x64580                                        |             g_string_append_printf ();
                                                                 |         }
    0x00050094 ldr sb, [r7]                                      |         sb = *(r7);
    0x00050098 add r5, r5, 4                                     |         r5 += 4;
    0x0005009c mov r0, sb                                        |         r0 = sb;
    0x000500a0 bl 0x4fe78                                        |         r0 = fcn_0004fe78 (r0);
    0x000500a4 sub r5, r5, r0                                    |         r5 -= r0;
    0x000500a8 ldr r0, [r4, 0x14]                                |         r0 = *((r4 + 0x14));
    0x000500ac cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x000500b0 beq 0x50118                                       |             goto label_3;
                                                                 |         }
    0x000500b4 ldr r3, [r6, 0x18]                                |         r3 = *((r6 + 0x18));
    0x000500b8 cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x000500bc beq 0x500c8                                       |             
    0x000500c0 ldr r1, [r6, 0x20]                                |             r1 = *((r6 + 0x20));
    0x000500c4 blx r3                                            |             uint32_t (*r3)(uint32_t) (r1);
                                                                 |         }
                                                                 | label_0:
    0x000500c8 ldr r3, [pc, 0x64]                                |         r3 = *(0x50130);
    0x000500cc ldr r1, [pc, 0x64]                                |         r1 = *(0x50134);
    0x000500d0 add r3, pc, r3                                    |         r3 = pc + r3;
    0x000500d4 str r0, [sp, 4]                                   |         var_4h = r0;
    0x000500d8 str r3, [sp]                                      |         *(sp) = r3;
    0x000500dc mov r0, r8                                        |         r0 = r8;
    0x000500e0 mov r3, r5                                        |         r3 = r5;
    0x000500e4 mov r2, sb                                        |         r2 = sb;
    0x000500e8 add r1, pc, r1                                    |         r1 = pc + r1;
    0x000500ec bl 0x64580                                        |         g_string_append_printf ();
    0x000500f0 mov r1, 1                                         |         r1 = 1;
    0x000500f4 mov r0, r7                                        |         r0 = r7;
    0x000500f8 add sp, sp, 0xc                                   |         
    0x000500fc pop {r4, r5, r6, r7, r8, sb, lr}                  |         
    0x00050100 b 0x6349c                                         |         void (*0x6349c)() ();
                                                                 | label_2:
    0x00050104 ldr r1, [pc, 0x30]                                |         r1 = *(0x50138);
    0x00050108 mov r2, sb                                        |         r2 = sb;
    0x0005010c add r1, pc, r1                                    |         r1 = pc + r1;
    0x00050110 bl 0x64580                                        |         g_string_append_printf ();
    0x00050114 b 0x50060                                         |         
                                                                 |     } while (1);
                                                                 | label_3:
    0x00050118 ldr r0, [pc, 0x20]                                |     r0 = *(0x5013c);
    0x0005011c add r0, pc, r0                                    |     r0 = pc + r0;
    0x00050120 b 0x500c8                                         |     goto label_0;
                                                                 | label_1:
    0x00050124 add sp, sp, 0xc                                   |     
    0x00050128 pop {r4, r5, r6, r7, r8, sb, 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/libglib-2.0.so.0.5600.4 @ 0x364dc */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) sym.g_hash_table_foreach_remove ()           | void g_hash_table_foreach_remove (uint32_t arg1, uint32_t arg2) {
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
                                                         | label_0:
    0x000358d4 push {r4, r5, r6, r7, r8, sb, sl, lr}     |     
    0x000358d8 ldr r7, [r0, 0x2c]                        |     r7 = *((r0 + 0x2c));
    0x000358dc mov r5, 0                                 |     r5 = 0;
    0x000358e0 mov r4, r0                                |     r4 = r0;
    0x000358e4 mov r8, r1                                |     r8 = r1;
    0x000358e8 mov sb, r2                                |     sb = r2;
    0x000358ec mov sl, r3                                |     sl = r3;
    0x000358f0 mov r6, r5                                |     r6 = r5;
                                                         |     do {
    0x000358f4 ldr r3, [r4]                              |         r3 = *(r4);
    0x000358f8 cmp r3, r5                                |         
                                                         |         if (r3 <= r5) {
    0x000358fc bgt 0x3591c                               |             
    0x00035900 mov r0, r4                                |             r0 = r4;
    0x00035904 bl 0x35654                                |             fcn_00035654 (r0);
    0x00035908 cmp r6, 0                                 |             
                                                         |             if (r6 == 0) {
    0x0003590c ldrne r3, [r4, 0x2c]                      |                 r3 = *((r4 + 0x2c));
                                                         |             }
                                                         |             if (r6 == 0) {
    0x00035910 addne r3, r3, 1                           |                 r3++;
                                                         |             }
                                                         |             if (r6 == 0) {
    0x00035914 strne r3, [r4, 0x2c]                      |                 *((r4 + 0x2c)) = r3;
                                                         |             }
    0x00035918 b 0x35994                                 |             goto label_1;
                                                         |         }
    0x0003591c ldr r3, [r4, 0x14]                        |         r3 = *((r4 + 0x14));
    0x00035920 ldr r0, [r3, r5, lsl 2]                   |         offset_0 = r5 << 2;
                                                         |         r0 = *((r3 + offset_0));
    0x00035924 ldr r3, [r4, 0x1c]                        |         r3 = *((r4 + 0x1c));
    0x00035928 ldr r1, [r3, r5, lsl 2]                   |         offset_1 = r5 << 2;
                                                         |         r1 = *((r3 + offset_1));
    0x0003592c ldr r3, [r4, 0x18]                        |         r3 = *((r4 + 0x18));
    0x00035930 ldr r3, [r3, r5, lsl 2]                   |         offset_2 = r5 << 2;
                                                         |         r3 = *((r3 + offset_2));
    0x00035934 cmp r3, 1                                 |         
                                                         |         if (r3 >= 1) {
    0x00035938 bls 0x35960                               |             
    0x0003593c mov r2, sb                                |             r2 = sb;
    0x00035940 blx r8                                    |             r0 = uint32_t (*r8)(uint32_t) (r2);
    0x00035944 cmp r0, 0                                 |             
                                                         |             if (r0 == 0) {
    0x00035948 beq 0x35960                               |                 goto label_2;
                                                         |             }
    0x0003594c mov r2, sl                                |             r2 = sl;
    0x00035950 mov r1, r5                                |             r1 = r5;
    0x00035954 mov r0, r4                                |             r0 = r4;
    0x00035958 bl 0x354c0                                |             fcn_000354c0 (r0);
    0x0003595c add r6, r6, 1                             |             r6++;
                                                         |         }
                                                         | label_2:
    0x00035960 ldr r3, [r4, 0x2c]                        |         r3 = *((r4 + 0x2c));
    0x00035964 cmp r3, r7                                |         
                                                         |         if (r3 != r7) {
    0x00035968 addeq r5, r5, 1                           |             r5++;
                                                         |         }
    0x0003596c beq 0x358f4                               |         
                                                         |     } while (r3 == r7);
    0x00035970 ldr r1, [pc, 0x24]                        |     
    0x00035974 ldr r2, [pc, 0x24]                        |     r2 = *(0x3599c);
    0x00035978 ldr r0, [pc, 0x24]                        |     r0 = *(0x359a0);
    0x0003597c add r1, pc, r1                            |     r1 = pc + r1;
    0x00035980 add r2, pc, r2                            |     r2 = pc + r2;
    0x00035984 add r1, r1, 0x95                          |     r1 = 0x35a2d;
    0x00035988 add r0, pc, r0                            |     r0 = pc + r0;
    0x0003598c bl 0x4d3f0                                |     g_return_if_fail_warning ();
    0x00035990 mov r6, 0                                 |     r6 = 0;
                                                         | label_1:
    0x00035994 mov r0, r6                                |     r0 = r6;
    0x00035998 pop {r4, r5, r6, r7, r8, sb, sl, pc}      |     
    0x000364dc cmp r0, 0                                 |     
    0x000364e0 push {r4, lr}                             |     
                                                         |     if (r0 != 0) {
    0x000364e4 beq 0x36514                               |         
    0x000364e8 cmp r1, 0                                 |         
                                                         |         if (r1 != 0) {
    0x000364ec bne 0x36540                               |             goto label_3;
                                                         |         }
    0x000364f0 ldr r1, [pc, 0x54]                        |         
    0x000364f4 ldr r2, [pc, 0x54]                        |         r2 = *(0x3654c);
    0x000364f8 ldr r0, [pc, 0x54]                        |         r0 = *(0x36550);
    0x000364fc add r1, pc, r1                            |         r1 = pc + r1;
    0x00036500 add r1, r1, 0x224                         |         r1 = 0x3676c;
    0x00036504 add r2, pc, r2                            |         r2 = pc + r2;
    0x00036508 add r1, r1, 1                             |         r1++;
    0x0003650c add r0, pc, r0                            |         r0 = pc + r0;
    0x00036510 b 0x36534                                 |         
                                                         |     } else {
    0x00036514 ldr r1, [pc, 0x3c]                        |         
    0x00036518 ldr r2, [pc, 0x3c]                        |         r2 = *(0x36558);
    0x0003651c ldr r0, [pc, 0x3c]                        |         r0 = *(0x3655c);
    0x00036520 add r1, pc, r1                            |         r1 = pc + r1;
    0x00036524 add r1, r1, 0x224                         |         r1 = 0x36778;
    0x00036528 add r2, pc, r2                            |         r2 = pc + r2;
    0x0003652c add r1, r1, 1                             |         r1++;
    0x00036530 add r0, pc, r0                            |         r0 = pc + r0;
                                                         |     }
    0x00036534 bl 0x4d3f0                                |     g_return_if_fail_warning ();
    0x00036538 mov r0, 0                                 |     r0 = 0;
    0x0003653c pop {r4, pc}                              |     
                                                         | label_3:
    0x00036540 mov r3, 1                                 |     r3 = 1;
    0x00036544 pop {r4, lr}                              |     
    0x00036548 b 0x358d4                                 |     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/libglib-2.0.so.0.5600.4 @ 0x36564 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) sym.g_hash_table_foreach_steal ()        | void g_hash_table_foreach_steal (uint32_t arg1, uint32_t arg2) {
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
    0x00036564 cmp r0, 0                             |     
    0x00036568 push {r4, lr}                         |     
                                                     |     if (r0 != 0) {
    0x0003656c beq 0x3659c                           |         
    0x00036570 cmp r1, 0                             |         
                                                     |         if (r1 != 0) {
    0x00036574 bne 0x365c8                           |             goto label_0;
                                                     |         }
    0x00036578 ldr r1, [pc, 0x54]                    |         
    0x0003657c ldr r2, [pc, 0x54]                    |         r2 = *(0x365d4);
    0x00036580 ldr r0, [pc, 0x54]                    |         r0 = *(0x365d8);
    0x00036584 add r1, pc, r1                        |         r1 = pc + r1;
    0x00036588 add r1, r1, 0x240                     |         r1 = 0x36810;
    0x0003658c add r2, pc, r2                        |         r2 = pc + r2;
    0x00036590 add r1, r1, 1                         |         r1++;
    0x00036594 add r0, pc, r0                        |         r0 = pc + r0;
    0x00036598 b 0x365bc                             |         
                                                     |     } else {
    0x0003659c ldr r1, [pc, 0x3c]                    |         
    0x000365a0 ldr r2, [pc, 0x3c]                    |         r2 = *(0x365e0);
    0x000365a4 ldr r0, [pc, 0x3c]                    |         r0 = *(0x365e4);
    0x000365a8 add r1, pc, r1                        |         r1 = pc + r1;
    0x000365ac add r1, r1, 0x240                     |         r1 = 0x3681c;
    0x000365b0 add r2, pc, r2                        |         r2 = pc + r2;
    0x000365b4 add r1, r1, 1                         |         r1++;
    0x000365b8 add r0, pc, r0                        |         r0 = pc + r0;
                                                     |     }
    0x000365bc bl 0x4d3f0                            |     g_return_if_fail_warning ();
    0x000365c0 mov r0, 0                             |     r0 = 0;
    0x000365c4 pop {r4, pc}                          |     
                                                     | label_0:
    0x000365c8 mov r3, 0                             |     r3 = 0;
    0x000365cc pop {r4, lr}                          |     
    0x000365d0 b 0x358d4                             |     return void (*0x358d4)() ();
                                                     | }
    ; 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/libglib-2.0.so.0.5600.4 @ 0x365ec */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) sym.g_hash_table_foreach ()              | void g_hash_table_foreach (int32_t arg1, uint32_t arg2) {
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
    0x000365ec push {r4, r5, r6, r7, r8, lr}         |     
    0x000365f0 subs r4, r0, 0                        |     r4 = r0 - 0;
                                                     |     if (r4 != r0) {
    0x000365f4 beq 0x36620                           |         
    0x000365f8 cmp r1, 0                             |         
                                                     |         if (r1 != 0) {
    0x000365fc bne 0x36644                           |             goto label_1;
                                                     |         }
    0x00036600 ldr r1, [pc, 0xb4]                    |         
    0x00036604 ldr r2, [pc, 0xb4]                    |         r2 = *(0x366bc);
    0x00036608 ldr r0, [pc, 0xb4]                    |         r0 = *(0x366c0);
    0x0003660c add r1, pc, r1                        |         r1 = pc + r1;
    0x00036610 add r2, pc, r2                        |         r2 = pc + r2;
    0x00036614 add r1, r1, 0x25c                     |         r1 = 0x36914;
    0x00036618 add r0, pc, r0                        |         r0 = pc + r0;
    0x0003661c b 0x3663c                             |         
                                                     |     } else {
    0x00036620 ldr r1, [pc, 0xa0]                    |         
    0x00036624 ldr r2, [pc, 0xa0]                    |         r2 = *(0x366c8);
    0x00036628 ldr r0, [pc, 0xa0]                    |         r0 = *(0x366cc);
    0x0003662c add r1, pc, r1                        |         r1 = pc + r1;
    0x00036630 add r2, pc, r2                        |         r2 = pc + r2;
    0x00036634 add r1, r1, 0x25c                     |         r1 = 0x36920;
    0x00036638 add r0, pc, r0                        |         r0 = pc + r0;
                                                     |     }
                                                     |     do {
    0x0003663c pop {r4, r5, r6, r7, r8, lr}          |         
    0x00036640 b 0x4d3f0                             |         void (*0x4d3f0)() ();
                                                     | label_1:
    0x00036644 ldr r8, [r4, 0x2c]                    |         r8 = *((r4 + 0x2c));
    0x00036648 mov r7, r2                            |         r7 = r2;
    0x0003664c mov r6, r1                            |         r6 = r1;
    0x00036650 mov r5, 0                             |         r5 = 0;
                                                     | label_0:
    0x00036654 ldr r3, [r4]                          |         r3 = *(r4);
    0x00036658 cmp r3, r5                            |         
                                                     |         if (r3 > r5) {
    0x0003665c pople {r4, r5, r6, r7, r8, pc}        |             
                                                     |         }
    0x00036660 ldr r3, [r4, 0x14]                    |         r3 = *((r4 + 0x14));
    0x00036664 ldr r0, [r3, r5, lsl 2]               |         offset_0 = r5 << 2;
                                                     |         r0 = *((r3 + offset_0));
    0x00036668 ldr r3, [r4, 0x1c]                    |         r3 = *((r4 + 0x1c));
    0x0003666c ldr r1, [r3, r5, lsl 2]               |         offset_1 = r5 << 2;
                                                     |         r1 = *((r3 + offset_1));
    0x00036670 ldr r3, [r4, 0x18]                    |         r3 = *((r4 + 0x18));
    0x00036674 ldr r3, [r3, r5, lsl 2]               |         offset_2 = r5 << 2;
                                                     |         r3 = *((r3 + offset_2));
    0x00036678 cmp r3, 1                             |         
                                                     |         if (r3 >= 1) {
    0x0003667c bls 0x36688                           |             
    0x00036680 mov r2, r7                            |             r2 = r7;
    0x00036684 blx r6                                |             uint32_t (*r6)(uint32_t) (r2);
                                                     |         }
    0x00036688 ldr r3, [r4, 0x2c]                    |         r3 = *((r4 + 0x2c));
    0x0003668c cmp r3, r8                            |         
                                                     |         if (r3 == r8) {
    0x00036690 beq 0x366b4                           |             goto label_2;
                                                     |         }
    0x00036694 ldr r1, [pc, 0x38]                    |         
    0x00036698 ldr r2, [pc, 0x38]                    |         r2 = *(0x366d4);
    0x0003669c ldr r0, [pc, 0x38]                    |         r0 = *(0x366d8);
    0x000366a0 add r1, pc, r1                        |         r1 = pc + r1;
    0x000366a4 add r2, pc, r2                        |         r2 = pc + r2;
    0x000366a8 add r1, r1, 0x25c                     |         r1 = 0x3692c;
    0x000366ac add r0, pc, r0                        |         r0 = pc + r0;
    0x000366b0 b 0x3663c                             |         
                                                     |     } while (1);
                                                     | label_2:
    0x000366b4 add r5, r5, 1                         |     r5++;
    0x000366b8 b 0x36654                             |     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/libglib-2.0.so.0.5600.4 @ 0x368bc */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) sym.g_hash_table_get_keys_as_array ()        | void g_hash_table_get_keys_as_array (int32_t arg1, int32_t arg2) {
                                                         |     int32_t var_0h;
                                                         |     int32_t var_8h;
                                                         |     int32_t var_8h_2;
                                                         |     int32_t var_10h;
                                                         |     int32_t var_18h;
                                                         |     int32_t var_18h_2;
                                                         |     int32_t var_20h;
                                                         |     int32_t var_28h;
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
    0x000368bc push {r4, r5, r6, r7, r8, sb, sl, lr}     |     
    0x000368c0 mov r5, r0                                |     r5 = r0;
    0x000368c4 ldr r0, [r0, 0xc]                         |     r0 = *((r0 + 0xc));
    0x000368c8 sub sp, sp, 0x28                          |     
    0x000368cc mov r7, r1                                |     r7 = r1;
    0x000368d0 add r0, r0, 1                             |     r0++;
    0x000368d4 mov r1, 4                                 |     r1 = 4;
    0x000368d8 bl 0x4b9b0                                |     g_malloc_n ();
    0x000368dc ldr r1, [r5]                              |     r1 = *(r5);
    0x000368e0 mov r4, 0                                 |     r4 = 0;
    0x000368e4 mov r3, r4                                |     r3 = r4;
    0x000368e8 mov r6, r0                                |     r6 = r0;
                                                         |     do {
    0x000368ec lsl r2, r4, 2                             |         r2 = r4 << 2;
    0x000368f0 cmp r1, r3                                |         
    0x000368f4 add sl, r6, r2                            |         sl = r6 + r2;
                                                         |         if (r1 == r3) {
    0x000368f8 bne 0x36994                               |             
    0x000368fc ldr r0, [r5, 0xc]                         |             r0 = *((r5 + 0xc));
    0x00036900 mov sb, 0                                 |             sb = 0;
    0x00036904 asr r3, r0, 0x1f                          |             r3 = r0 >> 0x1f;
    0x00036908 cmp sb, r3                                |             
    0x0003690c cmpeq r4, r0                              |             __asm ("cmpeq r4, r0");
                                                         |             if (sb != r3) {
    0x00036910 beq 0x36978                               |                 
    0x00036914 mov r3, 0x69                              |                 r3 = 0x69;
    0x00036918 str r3, [sp, 0x20]                        |                 var_20h = r3;
    0x0003691c bl 0x87530                                |                 fcn_00087530 (r0);
    0x00036920 ldr r3, [pc, 0x90]                        |                 r3 = *(0x369b4);
    0x00036924 ldr r5, [pc, 0x90]                        |                 
    0x00036928 add r3, pc, r3                            |                 r3 = pc + r3;
    0x0003692c str r3, [sp, 0x10]                        |                 var_10h = r3;
    0x00036930 add r5, pc, r5                            |                 r5 = pc + r5;
    0x00036934 add r5, r5, 0x2a8                         |                 r5 = 0x36c60;
    0x00036938 add r5, r5, 3                             |                 r5 += 3;
    0x0003693c strd r0, r1, [sp, 0x18]                   |                 __asm ("strd r0, r1, [var_18h]");
    0x00036940 mov r0, r4                                |                 r0 = r4;
    0x00036944 mov r1, sb                                |                 r1 = sb;
    0x00036948 bl 0x875b4                                |                 fcn_000875b4 (r0, r1);
    0x0003694c ldr r3, [pc, 0x6c]                        |                 r3 = *(0x369bc);
    0x00036950 ldr r2, [pc, 0x6c]                        |                 r2 = *(0x369c0);
    0x00036954 add r3, pc, r3                            |                 r3 = pc + r3;
    0x00036958 str r3, [sp]                              |                 *(sp) = r3;
    0x0003695c mov r3, r5                                |                 r3 = r5;
    0x00036960 strd r0, r1, [sp, 8]                      |                 __asm ("strd r0, r1, [var_8h]");
    0x00036964 ldr r1, [pc, 0x5c]                        |                 r1 = *(0x369c4);
    0x00036968 ldr r0, [pc, 0x5c]                        |                 r0 = *(0x369c8);
    0x0003696c add r1, pc, r1                            |                 r1 = pc + r1;
    0x00036970 add r0, pc, r0                            |                 r0 = pc + r0;
    0x00036974 bl 0x68830                                |                 g_assertion_message_cmpnum ();
                                                         |             }
    0x00036978 mov r3, 0                                 |             r3 = 0;
    0x0003697c cmp r7, r3                                |             
    0x00036980 mov r0, r6                                |             r0 = r6;
    0x00036984 str r3, [sl]                              |             *(sl) = r3;
                                                         |             if (r7 == r3) {
    0x00036988 strne r4, [r7]                            |                 *(r7) = r4;
                                                         |             }
    0x0003698c add sp, sp, 0x28                          |             
    0x00036990 pop {r4, r5, r6, r7, r8, sb, sl, pc}      |             
                                                         |         }
    0x00036994 ldr r0, [r5, 0x18]                        |         r0 = *((r5 + 0x18));
    0x00036998 ldr r0, [r0, r3, lsl 2]                   |         offset_0 = r3 << 2;
                                                         |         r0 = *((r0 + offset_0));
    0x0003699c cmp r0, 1                                 |         
                                                         |         if (r0 <= 1) {
    0x000369a0 ldrhi r0, [r5, 0x14]                      |             r0 = *((r5 + 0x14));
                                                         |         }
                                                         |         if (r0 <= 1) {
    0x000369a4 addhi r4, r4, 1                           |             r4++;
                                                         |         }
                                                         |         if (r0 <= 1) {
    0x000369a8 ldrhi r0, [r0, r3, lsl 2]                 |             offset_1 = r3 << 2;
                                                         |             r0 = *((r0 + offset_1));
                                                         |         }
    0x000369ac add r3, r3, 1                             |         r3++;
                                                         |         if (r0 <= 1) {
    0x000369b0 strhi r0, [r6, r2]                        |             *((r6 + r2)) = r0;
                                                         |         }
    0x000369b4 b 0x368ec                                 |         
                                                         |     } 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/libglib-2.0.so.0.5600.4 @ 0x36210 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.g_hash_table_lookup ()       | void g_hash_table_lookup (int32_t arg1, int32_t arg2) {
                                             |     int32_t var_4h;
                                             |     int32_t var_8h;
                                             |     r0 = arg1;
                                             |     r1 = arg2;
    0x00036210 push {r0, r1, r4, lr}         |     
    0x00036214 subs r4, r0, 0                |     r4 = r0 - 0;
                                             |     if (r4 == r0) {
    0x00036218 beq 0x36248                   |         goto label_0;
                                             |     }
    0x0003621c add r2, sp, 4                 |     r2 += var_4h;
    0x00036220 bl 0x35b04                    |     fcn_00035b04 (r0, r1);
    0x00036224 ldr r3, [r4, 0x18]            |     r3 = *((r4 + 0x18));
    0x00036228 ldr r3, [r3, r0, lsl 2]       |     offset_0 = r0 << 2;
                                             |     r3 = *((r3 + offset_0));
    0x0003622c cmp r3, 1                     |     
                                             |     if (r3 <= 1) {
    0x00036230 ldrhi r3, [r4, 0x1c]          |         r3 = *((r4 + 0x1c));
                                             |     }
                                             |     if (r3 <= 1) {
    0x00036234 ldrhi r0, [r3, r0, lsl 2]     |         offset_1 = r0 << 2;
                                             |         r0 = *((r3 + offset_1));
                                             |     }
    0x00036238 bhi 0x36240                   |     
                                             |     while (1) {
    0x0003623c mov r0, 0                     |         r0 = 0;
    0x00036240 add sp, sp, 8                 |         
    0x00036244 pop {r4, pc}                  |         
                                             | label_0:
    0x00036248 ldr r1, [pc, 0x20]            |         
    0x0003624c ldr r2, [pc, 0x20]            |         r2 = *(0x36270);
    0x00036250 ldr r0, [pc, 0x20]            |         r0 = *(0x36274);
    0x00036254 add r1, pc, r1                |         r1 = pc + r1;
    0x00036258 add r1, r1, 0x198             |         r1 = 0x36404;
    0x0003625c add r2, pc, r2                |         r2 = pc + r2;
    0x00036260 add r1, r1, 2                 |         r1 += 2;
    0x00036264 add r0, pc, r0                |         r0 = pc + r0;
    0x00036268 bl 0x4d3f0                    |         g_return_if_fail_warning ();
    0x0003626c b 0x3623c                     |         
                                             |     }
                                             | }
    ; 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/libglib-2.0.so.0.5600.4 @ 0x3627c */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) sym.g_hash_table_lookup_extended ()      | void g_hash_table_lookup_extended (int32_t arg1) {
                                                     |     int32_t var_4h;
                                                     |     int32_t var_8h;
                                                     |     r0 = arg1;
    0x0003627c push {r0, r1, r4, r5, r6, lr}         |     
    0x00036280 subs r4, r0, 0                        |     r4 = r0 - 0;
                                                     |     if (r4 == r0) {
    0x00036284 beq 0x362b0                           |         goto label_0;
                                                     |     }
    0x00036288 mov r6, r2                            |     r6 = r2;
    0x0003628c add r2, sp, 4                         |     r2 += var_4h;
    0x00036290 mov r5, r3                            |     r5 = r3;
    0x00036294 bl 0x35b04                            |     fcn_00035b04 (r0, r1);
    0x00036298 ldr r3, [r4, 0x18]                    |     r3 = *((r4 + 0x18));
    0x0003629c ldr r3, [r3, r0, lsl 2]               |     offset_0 = r0 << 2;
                                                     |     r3 = *((r3 + offset_0));
    0x000362a0 cmp r3, 1                             |     
                                                     |     if (r3 > 1) {
    0x000362a4 bhi 0x362d8                           |         goto label_1;
                                                     |     }
                                                     |     do {
    0x000362a8 mov r0, 0                             |         r0 = 0;
    0x000362ac b 0x362fc                             |         goto label_2;
                                                     | label_0:
    0x000362b0 ldr r1, [pc, 0x4c]                    |         
    0x000362b4 ldr r2, [pc, 0x4c]                    |         r2 = *(0x36304);
    0x000362b8 ldr r0, [pc, 0x4c]                    |         r0 = *(0x36308);
    0x000362bc add r1, pc, r1                        |         r1 = pc + r1;
    0x000362c0 add r1, r1, 0x1ac                     |         r1 = 0x364ac;
    0x000362c4 add r2, pc, r2                        |         r2 = pc + r2;
    0x000362c8 add r1, r1, 2                         |         r1 += 2;
    0x000362cc add r0, pc, r0                        |         r0 = pc + r0;
    0x000362d0 bl 0x4d3f0                            |         g_return_if_fail_warning ();
    0x000362d4 b 0x362a8                             |         
                                                     |     } while (1);
                                                     | label_1:
    0x000362d8 cmp r6, 0                             |     
                                                     |     if (r6 == 0) {
    0x000362dc ldrne r3, [r4, 0x14]                  |         r3 = *((r4 + 0x14));
                                                     |     }
                                                     |     if (r6 == 0) {
    0x000362e0 ldrne r3, [r3, r0, lsl 2]             |         offset_1 = r0 << 2;
                                                     |         r3 = *((r3 + offset_1));
                                                     |     }
                                                     |     if (r6 == 0) {
    0x000362e4 strne r3, [r6]                        |         *(r6) = r3;
                                                     |     }
    0x000362e8 cmp r5, 0                             |     
                                                     |     if (r5 == 0) {
    0x000362ec ldrne r3, [r4, 0x1c]                  |         r3 = *((r4 + 0x1c));
                                                     |     }
                                                     |     if (r5 == 0) {
    0x000362f0 ldrne r3, [r3, r0, lsl 2]             |         offset_2 = r0 << 2;
                                                     |         r3 = *((r3 + offset_2));
                                                     |     }
    0x000362f4 mov r0, 1                             |     r0 = 1;
                                                     |     if (r5 == 0) {
    0x000362f8 strne r3, [r5]                        |         *(r5) = r3;
                                                     |     }
                                                     | label_2:
    0x000362fc add sp, sp, 8                         |     
    0x00036300 pop {r4, r5, r6, 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/libglib-2.0.so.0.5600.4 @ 0x1cba0 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.g_on_error_stack_trace ()        | void g_on_error_stack_trace (int32_t arg1) {
                                                 |     int32_t var_4h;
                                                 |     char * s;
                                                 |     int32_t var_18h;
                                                 |     int32_t var_1ch;
                                                 |     int32_t var_20h;
                                                 |     int32_t var_24h;
                                                 |     int32_t var_28h;
                                                 |     r0 = arg1;
    0x0001cba0 ldr r3, [pc, 0x88]                |     r3 = *(0x1cc2c);
    0x0001cba4 push {r4, r5, r6, lr}             |     
    0x0001cba8 add r3, pc, r3                    |     r3 = pc + r3;
    0x0001cbac sub sp, sp, 0x28                  |     
    0x0001cbb0 mov r4, 0                         |     r4 = 0;
    0x0001cbb4 subs r6, r0, 0                    |     r6 = r0 - 0;
    0x0001cbb8 str r3, [sp, 0x18]                |     var_18h = r3;
    0x0001cbbc str r4, [sp, 0x1c]                |     var_1ch = r4;
    0x0001cbc0 str r4, [sp, 0x20]                |     var_20h = r4;
    0x0001cbc4 str r4, [sp, 0x24]                |     var_24h = r4;
                                                 |     if (r6 == r0) {
    0x0001cbc8 beq 0x1cc18                       |         goto label_0;
                                                 |     }
    0x0001cbcc bl 0x16fb8                        |     getpid ();
    0x0001cbd0 ldr r1, [pc, 0x5c]                |     r1 = *(0x1cc30);
    0x0001cbd4 add r5, sp, 8                     |     r5 += s;
    0x0001cbd8 add r1, pc, r1                    |     r1 = pc + r1;
    0x0001cbdc mov r2, r0                        |     r2 = r0;
    0x0001cbe0 mov r0, r5                        |     r0 = r5;
    0x0001cbe4 bl 0x176cc                        |     sprintf (r0, r1, r2);
    0x0001cbe8 str r6, [sp, 0x1c]                |     var_1ch = r6;
    0x0001cbec str r5, [sp, 0x20]                |     var_20h = r5;
    0x0001cbf0 bl 0x17060                        |     fork ();
    0x0001cbf4 subs r3, r0, 0                    |     r3 -= s;
                                                 |     if (r3 == s) {
    0x0001cbf8 bne 0x1cc04                       |         
    0x0001cbfc add r0, sp, 0x18                  |         r0 += var_18h;
    0x0001cc00 bl 0x17790                        |         entry0 (r0, r1);
                                                 |     }
    0x0001cc04 cmn r3, 1                         |     
                                                 |     if (r3 != 1) {
    0x0001cc08 bne 0x1cc20                       |         goto label_1;
                                                 |     }
    0x0001cc0c ldr r0, [pc, 0x24]                |     r0 = *(0x1cc34);
    0x0001cc10 add r0, pc, r0                    |     r0 = pc + r0;
    0x0001cc14 bl 0x17234                        |     perror (r0);
                                                 |     do {
                                                 | label_0:
    0x0001cc18 add sp, sp, 0x28                  |         
    0x0001cc1c pop {r4, r5, r6, pc}              |         
                                                 | label_1:
    0x0001cc20 mov r2, r4                        |         r2 = r4;
    0x0001cc24 add r1, sp, 4                     |         r1 += var_4h;
    0x0001cc28 bl 0x1730c                        |         waitpid ();
    0x0001cc2c b 0x1cc18                         |         
                                                 |     } 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/libglib-2.0.so.0.5600.4 @ 0x50dfc */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) sym.g_option_context_get_help_enabled ()     | void g_option_context_get_help_enabled (int32_t arg1) {
                                                         |     r0 = arg1;
    0x00050dfc push {r4, lr}                             |     
    0x00050e00 subs r4, r0, 0                            |     r4 = r0 - 0;
                                                         |     if (r4 != r0) {
    0x00050e04 beq 0x50e14                               |         
    0x00050e08 ldrb r0, [r4, 0x1c]                       |         r0 = *((r4 + 0x1c));
    0x00050e0c and r0, r0, 1                             |         r0 &= 1;
    0x00050e10 pop {r4, pc}                              |         
                                                         |     }
    0x00050e14 ldr r1, [pc, 0x20]                        |     
    0x00050e18 ldr r2, [pc, 0x20]                        |     r2 = *(0x50e3c);
    0x00050e1c ldr r0, [pc, 0x20]                        |     r0 = *(0x50e40);
    0x00050e20 add r1, pc, r1                            |     r1 = pc + r1;
    0x00050e24 add r2, pc, r2                            |     r2 = pc + r2;
    0x00050e28 add r1, r1, 0x68                          |     r1 = 0x50ea0;
    0x00050e2c add r0, pc, r0                            |     r0 = pc + r0;
    0x00050e30 bl 0x4d3f0                                |     g_return_if_fail_warning ();
    0x00050e34 mov r0, r4                                |     r0 = r4;
    0x00050e38 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/libglib-2.0.so.0.5600.4 @ 0x51228 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.g_option_context_get_help ()                 | void g_option_context_get_help (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_20h;
                                                             |     int32_t var_24h;
                                                             |     void * s;
                                                             |     int32_t var_400h_2;
                                                             |     int32_t var_420h;
                                                             |     int32_t var_400h;
                                                             |     int32_t var_8h_2;
                                                             |     int32_t var_ch;
                                                             |     int32_t var_0h_2;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
    0x00051228 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}     |     
    0x0005122c ldr r7, [pc, 0x868]                           |     r7 = *(0x51a98);
    0x00051230 sub sp, sp, 0x420                             |     
    0x00051234 sub sp, sp, 0xc                               |     
    0x00051238 mov r4, r0                                    |     r4 = r0;
    0x0005123c mov r0, 0x400                                 |     r0 = 0x400;
    0x00051240 mov r6, r2                                    |     r6 = r2;
    0x00051244 str r1, [sp, 0x20]                            |     var_20h = r1;
    0x00051248 bl 0x63458                                    |     g_string_sized_new ();
    0x0005124c ldr r3, [r4, 0x20]                            |     r3 = *((r4 + 0x20));
    0x00051250 add r7, pc, r7                                |     r7 = pc + r7;
    0x00051254 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00051258 ldrne ip, [r3, 0x28]                          |         ip = *((r3 + 0x28));
                                                             |     }
                                                             |     if (r3 == 0) {
    0x0005125c movne r2, 0                                   |         r2 = 0;
                                                             |     }
                                                             |     if (r3 == 0) {
    0x00051260 movne lr, 0x1c                                |         lr = 0x1c;
                                                             |     }
    0x00051264 mov fp, r0                                    |     
                                                             |     if (r3 != 0) {
    0x00051268 bne 0x516b8                                   |         goto label_16;
                                                             |     }
    0x0005126c mov r5, r3                                    |     r5 = r3;
    0x00051270 b 0x512b0                                     |     goto label_1;
                                                             | label_0:
    0x00051274 mul r1, lr, r2                                |     r1 = lr * r2;
    0x00051278 ldr r0, [r3, 0x24]                            |     r0 = *((r3 + 0x24));
    0x0005127c add r5, r0, r1                                |     r5 = r0 + r1;
    0x00051280 ldr r1, [r0, r1]                              |     r1 = *((r0 + r1));
    0x00051284 ldrb r1, [r1]                                 |     r1 = *(r1);
    0x00051288 cmp r1, 0                                     |     
                                                             |     if (r1 != 0) {
    0x0005128c bne 0x516b4                                   |         goto label_17;
                                                             |     }
    0x00051290 ldr r2, [r3, 0x18]                            |     r2 = *((r3 + 0x18));
    0x00051294 ldr r5, [r5, 0x18]                            |     r5 = *((r5 + 0x18));
    0x00051298 cmp r2, 0                                     |     
                                                             |     if (r2 != 0) {
    0x0005129c beq 0x512b0                                   |         
    0x000512a0 mov r0, r5                                    |         r0 = r5;
    0x000512a4 ldr r1, [r3, 0x20]                            |         r1 = *((r3 + 0x20));
    0x000512a8 blx r2                                        |         r0 = uint32_t (*r2)(uint32_t, uint32_t) (r0, r1);
    0x000512ac mov r5, r0                                    |         r5 = r0;
                                                             |     }
                                                             | label_1:
    0x000512b0 ldr r0, [pc, 0x7e8]                           |     r0 = *(0x51a9c);
    0x000512b4 add r0, pc, r0                                |     r0 = pc + r0;
    0x000512b8 bl 0x35298                                    |     r0 = glib_gettext ();
    0x000512bc mov r8, r0                                    |     r8 = r0;
    0x000512c0 bl 0x7450c                                    |     g_get_prgname ();
    0x000512c4 ldr r1, [pc, 0x7d8]                           |     r1 = *(0x51aa0);
    0x000512c8 mov r2, r8                                    |     r2 = r8;
    0x000512cc add r1, pc, r1                                |     r1 = pc + r1;
    0x000512d0 mov r3, r0                                    |     r3 = r0;
    0x000512d4 mov r0, fp                                    |     r0 = fp;
    0x000512d8 bl 0x64580                                    |     g_string_append_printf ();
    0x000512dc ldrb r3, [r4, 0x1c]                           |     r3 = *((r4 + 0x1c));
    0x000512e0 tst r3, 1                                     |     
                                                             |     if ((r3 & 1) == 0) {
    0x000512e4 bne 0x5130c                                   |         
    0x000512e8 ldr r3, [r4, 0x20]                            |         r3 = *((r4 + 0x20));
    0x000512ec cmp r3, 0                                     |         
                                                             |         if (r3 != 0) {
    0x000512f0 beq 0x51300                                   |             
    0x000512f4 ldr r3, [r3, 0x28]                            |             r3 = *((r3 + 0x28));
    0x000512f8 cmp r3, 0                                     |             
                                                             |             if (r3 > 0) {
    0x000512fc bgt 0x5130c                                   |                 goto label_18;
                                                             |             }
                                                             |         }
    0x00051300 ldr r3, [r4]                                  |         r3 = *(r4);
    0x00051304 cmp r3, 0                                     |         
                                                             |         if (r3 == 0) {
    0x00051308 beq 0x5132c                                   |             goto label_19;
                                                             |         }
                                                             |     }
                                                             | label_18:
    0x0005130c ldr r0, [pc, 0x794]                           |     r0 = *(0x51aa4);
    0x00051310 add r0, pc, r0                                |     r0 = pc + r0;
    0x00051314 bl 0x35298                                    |     glib_gettext ();
    0x00051318 ldr r1, [pc, 0x78c]                           |     r1 = *(0x51aa8);
    0x0005131c add r1, pc, r1                                |     r1 = pc + r1;
    0x00051320 mov r2, r0                                    |     r2 = r0;
    0x00051324 mov r0, fp                                    |     r0 = fp;
    0x00051328 bl 0x64580                                    |     g_string_append_printf ();
                                                             | label_19:
    0x0005132c cmp r5, 0                                     |     
                                                             |     if (r5 != 0) {
    0x00051330 beq 0x51350                                   |         
    0x00051334 ldr r1, [pc, 0x774]                           |         r1 = *(0x51aac);
    0x00051338 mov r0, fp                                    |         r0 = fp;
    0x0005133c add r1, pc, r1                                |         r1 = pc + r1;
    0x00051340 bl 0x638ac                                    |         g_string_append ();
    0x00051344 mov r1, r5                                    |         r1 = r5;
    0x00051348 mov r0, fp                                    |         r0 = fp;
    0x0005134c bl 0x638ac                                    |         g_string_append ();
                                                             |     }
    0x00051350 ldr r3, [r4, 4]                               |     r3 = *((r4 + 4));
    0x00051354 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00051358 beq 0x51394                                   |         
    0x0005135c ldr r1, [pc, 0x750]                           |         r1 = "] is an invalid data character in JavaScript compatibility mode";
    0x00051360 mov r0, fp                                    |         r0 = fp;
    0x00051364 add r1, pc, r1                                |         r1 = pc + r1;
    0x00051368 bl 0x638ac                                    |         g_string_append ();
    0x0005136c ldr r3, [r4, 0x10]                            |         r3 = *((r4 + 0x10));
    0x00051370 cmp r3, 0                                     |         
                                                             |         if (r3 != 0) {
    0x00051374 ldreq r1, [r4, 4]                             |             r1 = *((r4 + 4));
                                                             |         }
                                                             |         if (r3 != 0) {
    0x00051378 beq 0x5138c                                   |             
    0x0005137c ldr r1, [r4, 0x18]                            |             r1 = *((r4 + 0x18));
    0x00051380 ldr r0, [r4, 4]                               |             r0 = *((r4 + 4));
    0x00051384 blx r3                                        |             r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r1);
    0x00051388 mov r1, r0                                    |             r1 = r0;
                                                             |         }
    0x0005138c mov r0, fp                                    |         r0 = fp;
    0x00051390 bl 0x638ac                                    |         g_string_append ();
                                                             |     }
    0x00051394 ldr r1, [pc, 0x71c]                           |     r1 = "_3";
    0x00051398 mov r0, fp                                    |     r0 = fp;
    0x0005139c add r1, pc, r1                                |     r1 = pc + r1;
    0x000513a0 bl 0x638ac                                    |     g_string_append ();
    0x000513a4 ldr r0, [r4, 8]                               |     r0 = *((r4 + 8));
    0x000513a8 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000513ac beq 0x513e0                                   |         
    0x000513b0 ldr r3, [r4, 0x10]                            |         r3 = *((r4 + 0x10));
    0x000513b4 cmp r3, 0                                     |         
                                                             |         if (r3 != 0) {
    0x000513b8 beq 0x513c4                                   |             
    0x000513bc ldr r1, [r4, 0x18]                            |             r1 = *((r4 + 0x18));
    0x000513c0 blx r3                                        |             r0 = uint32_t (*r3)(uint32_t) (r1);
                                                             |         }
    0x000513c4 mov r1, r0                                    |         r1 = r0;
    0x000513c8 mov r0, fp                                    |         r0 = fp;
    0x000513cc bl 0x638ac                                    |         g_string_append ();
    0x000513d0 ldr r1, [pc, 0x6e4]                           |         r1 = *(0x51ab8);
    0x000513d4 mov r0, fp                                    |         r0 = fp;
    0x000513d8 add r1, pc, r1                                |         r1 = pc + r1;
    0x000513dc bl 0x638ac                                    |         g_string_append ();
                                                             |     }
    0x000513e0 mov r2, 0x400                                 |     r2 = 0x400;
    0x000513e4 mov r1, 0                                     |     r1 = 0;
    0x000513e8 add r0, sp, 0x28                              |     r0 += s;
    0x000513ec bl 0x1700c                                    |     memset (r0, r1, r2);
    0x000513f0 ldr r3, [pc, 0x6c8]                           |     r3 = *(0x51abc);
    0x000513f4 ldr r3, [r7, r3]                              |     r3 = *((r7 + r3));
    0x000513f8 str r3, [sp, 0x14]                            |     var_14h = r3;
    0x000513fc ldr r3, [pc, 0x6c0]                           |     r3 = *(0x51ac0);
    0x00051400 ldr r1, [sp, 0x14]                            |     r1 = var_14h;
    0x00051404 ldr r3, [r7, r3]                              |     r3 = *((r7 + r3));
    0x00051408 mov r0, r3                                    |     r0 = r3;
    0x0005140c str r3, [sp, 0x18]                            |     var_18h = r3;
    0x00051410 bl 0x35de0                                    |     g_hash_table_new ();
    0x00051414 ldr r3, [pc, 0x6ac]                           |     r3 = *(0x51ac4);
    0x00051418 mov r2, 0                                     |     r2 = 0;
    0x0005141c mov r1, r2                                    |     r1 = r2;
    0x00051420 str r0, [sp, 0x1c]                            |     var_1ch = r0;
    0x00051424 ldr r3, [r7, r3]                              |     r3 = *((r7 + r3));
    0x00051428 mov r0, r2                                    |     r0 = r2;
    0x0005142c str r3, [sp, 0x14]                            |     var_14h = r3;
    0x00051430 bl 0x35d44                                    |     g_hash_table_new_full ();
    0x00051434 ldr r3, [r4, 0x20]                            |     r3 = *((r4 + 0x20));
    0x00051438 cmp r3, 0                                     |     
    0x0005143c str r0, [sp, 0x14]                            |     var_14h = r0;
                                                             |     if (r3 != 0) {
    0x00051440 bne 0x5171c                                   |         goto label_20;
                                                             |     }
                                                             | label_2:
    0x00051444 ldr r3, [pc, 0x680]                           |     r3 = *(0x51ac8);
    0x00051448 ldr r5, [r4]                                  |     r5 = *(r4);
    0x0005144c add r3, pc, r3                                |     r3 = pc + r3;
    0x00051450 str r3, [sp, 0x24]                            |     var_24h = r3;
                                                             | label_4:
    0x00051454 cmp r5, 0                                     |     
                                                             |     if (r5 != 0) {
    0x00051458 bne 0x51730                                   |         goto label_21;
                                                             |     }
    0x0005145c ldr r0, [sp, 0x1c]                            |     r0 = var_1ch;
    0x00051460 bl 0x36418                                    |     g_hash_table_destroy ();
    0x00051464 ldrb r3, [r4, 0x1c]                           |     r3 = *((r4 + 0x1c));
    0x00051468 ldr r8, [r4]                                  |     r8 = *(r4);
    0x0005146c tst r3, 1                                     |     
                                                             |     if ((r3 & 1) != 0) {
    0x00051470 moveq r7, r5                                  |         r7 = r5;
                                                             |     }
                                                             |     if ((r3 & 1) != 0) {
    0x00051474 beq 0x514a4                                   |         
    0x00051478 ldr r0, [pc, 0x650]                           |         r0 = *(0x51acc);
    0x0005147c add r0, pc, r0                                |         r0 = pc + r0;
    0x00051480 bl 0x4fe78                                    |         fcn_0004fe78 (r0);
    0x00051484 cmp r8, 0                                     |         
    0x00051488 mov r7, r0                                    |         r7 = r0;
                                                             |         if (r8 == 0) {
    0x0005148c beq 0x514a4                                   |             goto label_22;
                                                             |         }
    0x00051490 ldr r0, [pc, 0x63c]                           |         r0 = *(0x51ad0);
    0x00051494 add r0, pc, r0                                |         r0 = pc + r0;
    0x00051498 bl 0x4fe78                                    |         r0 = fcn_0004fe78 (r0);
    0x0005149c cmp r7, r0                                    |         
                                                             |         if (r7 < r0) {
    0x000514a0 movlt r7, r0                                  |             r7 = r0;
                                                             |             goto label_22;
                                                             |         }
                                                             |     }
                                                             | label_22:
    0x000514a4 ldr r0, [r4, 0x20]                            |     r0 = *((r4 + 0x20));
    0x000514a8 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000514ac beq 0x514c0                                   |         
    0x000514b0 ldr r1, [sp, 0x14]                            |         r1 = var_14h;
    0x000514b4 bl 0x4ff28                                    |         r0 = fcn_0004ff28 (r0, r1, r2);
    0x000514b8 cmp r7, r0                                    |         
                                                             |         if (r7 < r0) {
    0x000514bc movlt r7, r0                                  |             r7 = r0;
                                                             |             goto label_23;
                                                             |         }
                                                             |     }
                                                             | label_23:
    0x000514c0 ldr sb, [pc, 0x610]                           |     sb = *(0x51ad4);
    0x000514c4 add sb, pc, sb                                |     sb = pc + sb;
                                                             | label_6:
    0x000514c8 cmp r8, 0                                     |     
                                                             |     if (r8 != 0) {
    0x000514cc bne 0x51804                                   |         goto label_24;
                                                             |     }
    0x000514d0 cmp r6, 0                                     |     
    0x000514d4 add r5, r7, 4                                 |     r5 = r7 + 4;
                                                             |     if (r6 != 0) {
    0x000514d8 bne 0x519c4                                   |         goto label_25;
                                                             |     }
    0x000514dc ldrb r3, [r4, 0x1c]                           |     r3 = *((r4 + 0x1c));
    0x000514e0 tst r3, 1                                     |     
                                                             |     if ((r3 & 1) == 0) {
    0x000514e4 beq 0x515f4                                   |         goto label_26;
                                                             |     }
    0x000514e8 mov r0, r4                                    |     r0 = r4;
    0x000514ec bl 0x4fd4c                                    |     fcn_0004fd4c (r0, r1);
    0x000514f0 ldr r6, [r4]                                  |     r6 = *(r4);
    0x000514f4 cmp r0, 0                                     |     
    0x000514f8 ldr r0, [pc, 0x5dc]                           |     r0 = *(0x51ad8);
                                                             |     if (r0 != 0) {
    0x000514fc moveq sb, 0x68                                |         sb = 0x68;
                                                             |     }
    0x00051500 add r0, pc, r0                                |     r0 = pc + r0;
                                                             |     if (r0 == 0) {
    0x00051504 movne sb, 0x3f                                |         sb = 0x3f;
                                                             |     }
    0x00051508 bl 0x35298                                    |     r0 = glib_gettext ();
    0x0005150c mov r8, r0                                    |     r8 = r0;
    0x00051510 ldr r0, [pc, 0x5c8]                           |     r0 = *(0x51adc);
    0x00051514 add r0, pc, r0                                |     r0 = pc + r0;
    0x00051518 bl 0x35298                                    |     glib_gettext ();
    0x0005151c ldr r3, [pc, 0x5c0]                           |     r3 = "nc_queue_push_sorted_unlocked";
    0x00051520 ldr r1, [pc, 0x5c0]                           |     r1 = *(0x51ae4);
    0x00051524 add r3, pc, r3                                |     r3 = pc + r3;
    0x00051528 str r3, [sp, 4]                               |     var_4h = r3;
    0x0005152c str r7, [sp]                                  |     *(sp) = r7;
    0x00051530 mov r3, sb                                    |     r3 = sb;
    0x00051534 mov r2, r8                                    |     r2 = r8;
    0x00051538 add r1, pc, r1                                |     r1 = pc + r1;
    0x0005153c str r0, [sp, 8]                               |     var_8h = r0;
    0x00051540 mov r0, fp                                    |     r0 = fp;
    0x00051544 bl 0x64580                                    |     g_string_append_printf ();
    0x00051548 cmp r6, 0                                     |     
                                                             |     if (r6 == 0) {
    0x0005154c beq 0x515e4                                   |         goto label_27;
                                                             |     }
    0x00051550 ldr r0, [pc, 0x594]                           |     r0 = *(0x51ae8);
    0x00051554 ldr sb, [pc, 0x594]                           |     sb = *(0x51aec);
    0x00051558 add r0, pc, r0                                |     r0 = pc + r0;
    0x0005155c bl 0x35298                                    |     glib_gettext ();
    0x00051560 ldr r3, [pc, 0x58c]                           |     r3 = *(0x51af0);
    0x00051564 ldr r1, [pc, 0x58c]                           |     r1 = *(0x51af4);
    0x00051568 add r3, pc, r3                                |     r3 = pc + r3;
    0x0005156c mov r2, r5                                    |     r2 = r5;
    0x00051570 add r1, pc, r1                                |     r1 = pc + r1;
    0x00051574 sub r7, r7, 1                                 |     r7--;
    0x00051578 add sb, pc, sb                                |     sb = pc + sb;
    0x0005157c str r0, [sp]                                  |     *(sp) = r0;
    0x00051580 mov r0, fp                                    |     r0 = fp;
    0x00051584 bl 0x64580                                    |     g_string_append_printf ();
                                                             |     do {
    0x00051588 ldr r8, [r6]                                  |         r8 = *(r6);
    0x0005158c mov r2, 0                                     |         r2 = 0;
    0x00051590 mov r1, r8                                    |         r1 = r8;
    0x00051594 ldr r0, [r4, 0x20]                            |         r0 = *((r4 + 0x20));
    0x00051598 bl 0x4fcbc                                    |         r0 = fcn_0004fcbc (r0, r1);
    0x0005159c cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x000515a0 beq 0x515d8                                   |             
    0x000515a4 ldr r2, [r8, 0x18]                            |             r2 = *((r8 + 0x18));
    0x000515a8 ldr sl, [r8]                                  |             sl = *(r8);
    0x000515ac cmp r2, 0                                     |             
    0x000515b0 ldr r0, [r8, 8]                               |             r0 = *((r8 + 8));
                                                             |             if (r2 != 0) {
    0x000515b4 beq 0x515c0                                   |                 
    0x000515b8 ldr r1, [r8, 0x20]                            |                 r1 = *((r8 + 0x20));
    0x000515bc blx r2                                        |                 uint32_t (*r2)(uint32_t) (r1);
                                                             |             }
    0x000515c0 str r0, [sp]                                  |             *(sp) = r0;
    0x000515c4 mov r3, sl                                    |             r3 = sl;
    0x000515c8 mov r2, r7                                    |             r2 = r7;
    0x000515cc mov r1, sb                                    |             r1 = sb;
    0x000515d0 mov r0, fp                                    |             r0 = fp;
    0x000515d4 bl 0x64580                                    |             g_string_append_printf ();
                                                             |         }
    0x000515d8 ldr r6, [r6, 4]                               |         r6 = *((r6 + 4));
    0x000515dc cmp r6, 0                                     |         
    0x000515e0 bne 0x51588                                   |         
                                                             |     } while (r6 != 0);
                                                             | label_27:
    0x000515e4 ldr r1, [pc, 0x510]                           |     r1 = *(0x51af8);
    0x000515e8 mov r0, fp                                    |     r0 = fp;
    0x000515ec add r1, pc, r1                                |     r1 = pc + r1;
    0x000515f0 bl 0x638ac                                    |     g_string_append ();
                                                             | label_26:
    0x000515f4 ldr r3, [sp, 0x20]                            |     r3 = var_20h;
    0x000515f8 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x000515fc bne 0x5161c                                   |         
    0x00051600 ldr sb, [pc, 0x4f8]                           |         sb = *(0x00051b00);
    0x00051604 ldr sl, [pc, 0x4f8]                           |         sl = *(0x00051b04);
    0x00051608 ldr r7, [r4]                                  |         r7 = *(r4);
    0x0005160c add sb, pc, sb                                |         sb = pc + sb;
    0x00051610 add sl, pc, sl                                |         sl = pc + sl;
                                                             | label_7:
    0x00051614 cmp r7, 0                                     |         
                                                             |         if (r7 != 0) {
    0x00051618 bne 0x51878                                   |             goto label_28;
                                                             |         }
                                                             |     }
                                                             | label_15:
    0x0005161c ldr r8, [r4, 0x20]                            |     r8 = *((r4 + 0x20));
    0x00051620 mov r2, 1                                     |     r2 = 1;
    0x00051624 mov r1, r8                                    |     r1 = r8;
    0x00051628 mov r0, r8                                    |     r0 = r8;
    0x0005162c bl 0x4fcbc                                    |     fcn_0004fcbc (r0, r1);
    0x00051630 ldr r6, [r4]                                  |     r6 = *(r4);
    0x00051634 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00051638 moveq r7, r6                                  |         r7 = r6;
                                                             |     }
                                                             |     if (r0 == 0) {
    0x0005163c beq 0x51928                                   |         goto label_29;
                                                             |     }
                                                             | label_8:
    0x00051640 ldrb r3, [r4, 0x1c]                           |     r3 = *((r4 + 0x1c));
    0x00051644 cmp r6, 0                                     |     
                                                             |     if (r6 != 0) {
    0x00051648 andeq r3, r3, 1                               |         r3 &= 1;
                                                             |     }
                                                             |     if (r6 == 0) {
    0x0005164c movne r3, 1                                   |         r3 = 1;
                                                             |     }
    0x00051650 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00051654 beq 0x51934                                   |         goto label_30;
                                                             |     }
    0x00051658 ldr r0, [pc, 0x4a8]                           |     r0 = *(0x51b04);
    0x0005165c add r0, pc, r0                                |     r0 = pc + r0;
                                                             | label_10:
    0x00051660 bl 0x35298                                    |     r0 = glib_gettext ();
    0x00051664 mov r1, r0                                    |     r1 = r0;
    0x00051668 mov r0, fp                                    |     r0 = fp;
    0x0005166c bl 0x638ac                                    |     g_string_append ();
    0x00051670 ldr r1, [pc, 0x494]                           |     r1 = *(0x51b08);
    0x00051674 mov r0, fp                                    |     r0 = fp;
    0x00051678 add r1, pc, r1                                |     r1 = pc + r1;
    0x0005167c bl 0x638ac                                    |     g_string_append ();
    0x00051680 ldr r3, [r4, 0x20]                            |     r3 = *((r4 + 0x20));
    0x00051684 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00051688 movne r7, 0                                   |         r7 = 0;
                                                             |     }
                                                             |     if (r3 == 0) {
    0x0005168c movne r8, 0x1c                                |         r8 = 0x1c;
                                                             |     }
                                                             |     if (r3 != 0) {
    0x00051690 bne 0x51960                                   |         goto label_31;
                                                             |     }
                                                             | label_11:
    0x00051694 mov sb, 0x1c                                  |     sb = 0x1c;
                                                             | label_12:
    0x00051698 cmp r6, 0                                     |     
                                                             |     if (r6 != 0) {
    0x0005169c bne 0x51974                                   |         goto label_32;
                                                             |     }
    0x000516a0 ldr r1, [pc, 0x468]                           |     r1 = *(0x51b0c);
    0x000516a4 mov r0, fp                                    |     r0 = fp;
    0x000516a8 add r1, pc, r1                                |     r1 = pc + r1;
    0x000516ac bl 0x638ac                                    |     g_string_append ();
    0x000516b0 b 0x51a40                                     |     goto label_33;
                                                             | label_17:
    0x000516b4 add r2, r2, 1                                 |     r2++;
                                                             | label_16:
    0x000516b8 cmp ip, r2                                    |     
                                                             |     if (ip > r2) {
    0x000516bc bgt 0x51274                                   |         goto label_0;
                                                             |     }
    0x000516c0 mov r5, 0                                     |     r5 = 0;
    0x000516c4 b 0x512b0                                     |     goto label_1;
                                                             |     do {
    0x000516c8 mul r3, r8, r5                                |         r3 = r8 * r5;
    0x000516cc ldr r1, [r2, 0x24]                            |         r1 = *((r2 + 0x24));
    0x000516d0 ldr r0, [sp, 0x1c]                            |         r0 = var_1ch;
    0x000516d4 add r7, r1, r3                                |         r7 = r1 + r3;
    0x000516d8 mov r2, r7                                    |         r2 = r7;
    0x000516dc ldr r1, [r1, r3]                              |         r1 = *((r1 + r3));
    0x000516e0 bl 0x36310                                    |         g_hash_table_insert ();
    0x000516e4 ldrb r3, [r7, 4]                              |         r3 = *((r7 + 4));
    0x000516e8 add r2, sp, 0x420                             |         r2 += var_420h;
    0x000516ec add r2, r2, 8                                 |         r2 += var_8h_2;
    0x000516f0 add r3, r2, r3, lsl 2                         |         r3 = r2 + (r3 << 2);
    0x000516f4 ldr r2, [r3, -0x400]                          |         r2 = var_400h;
    0x000516f8 add r5, r5, 1                                 |         r5++;
    0x000516fc cmp r2, 0                                     |         
                                                             |         if (r2 == 0) {
    0x00051700 strbne sl, [r7, 4]                            |             *((r7 + 4)) = sl;
                                                             |         }
                                                             |         if (r2 != 0) {
    0x00051704 streq sb, [r3, -0x400]                        |             var_400h = sb;
                                                             |         }
                                                             | label_3:
    0x00051708 ldr r2, [r4, 0x20]                            |         r2 = *((r4 + 0x20));
    0x0005170c ldr r3, [r2, 0x28]                            |         r3 = *((r2 + 0x28));
    0x00051710 cmp r3, r5                                    |         
    0x00051714 bgt 0x516c8                                   |         
                                                             |     } while (r3 > r5);
    0x00051718 b 0x51444                                     |     goto label_2;
                                                             | label_20:
    0x0005171c mov r5, 0                                     |     r5 = 0;
    0x00051720 mov r8, 0x1c                                  |     r8 = 0x1c;
    0x00051724 mov sb, 1                                     |     sb = 1;
    0x00051728 mov sl, r5                                    |     sl = r5;
    0x0005172c b 0x51708                                     |     goto label_3;
                                                             | label_21:
    0x00051730 ldr sl, [r5]                                  |     sl = *(r5);
    0x00051734 mov r3, 0                                     |     r3 = 0;
                                                             | label_5:
    0x00051738 str r3, [sp, 0x18]                            |     var_18h = r3;
    0x0005173c ldr r2, [sp, 0x18]                            |     r2 = var_18h;
    0x00051740 ldr r3, [sl, 0x28]                            |     r3 = *((sl + 0x28));
    0x00051744 cmp r3, r2                                    |     
                                                             |     if (r3 <= r2) {
    0x00051748 ldrle r5, [r5, 4]                             |         r5 = *((r5 + 4));
                                                             |         goto label_34;
                                                             |     }
                                                             |     if (r3 <= r2) {
                                                             | label_34:
    0x0005174c ble 0x51454                                   |         goto label_4;
                                                             |     }
    0x00051750 ldr r8, [sp, 0x18]                            |     r8 = var_18h;
    0x00051754 mov r3, 0x1c                                  |     r3 = 0x1c;
    0x00051758 mul r8, r3, r8                                |     r8 = r3 * r8;
    0x0005175c ldr sb, [sl, 0x24]                            |     sb = *((sl + 0x24));
    0x00051760 ldr r0, [sp, 0x1c]                            |     r0 = var_1ch;
    0x00051764 ldr r1, [sb, r8]                              |     r1 = *((sb + r8));
    0x00051768 bl 0x36210                                    |     g_hash_table_lookup ();
    0x0005176c add r7, sb, r8                                |     r7 = sb + r8;
    0x00051770 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00051774 beq 0x517f4                                   |         goto label_35;
                                                             |     }
    0x00051778 ldr r3, [r7, 8]                               |     r3 = *((r7 + 8));
    0x0005177c tst r3, 0x40                                  |     
                                                             |     if ((r3 & 0x40) != 0) {
    0x00051780 bne 0x517f4                                   |         goto label_35;
                                                             |     }
    0x00051784 ldr r2, [sb, r8]                              |     r2 = *((sb + r8));
    0x00051788 ldr r1, [sl]                                  |     r1 = *(sl);
    0x0005178c ldr r0, [sp, 0x24]                            |     r0 = var_24h;
    0x00051790 bl 0x60764                                    |     g_strdup_printf ();
    0x00051794 mov r1, r7                                    |     r1 = r7;
    0x00051798 mov r2, r0                                    |     r2 = r0;
    0x0005179c ldr r0, [sp, 0x14]                            |     r0 = var_14h;
                                                             |     do {
    0x000517a0 bl 0x36310                                    |         g_hash_table_insert ();
    0x000517a4 ldrb r3, [r7, 4]                              |         r3 = *((r7 + 4));
    0x000517a8 add r2, sp, 0x420                             |         r2 += var_420h;
    0x000517ac lsl r3, r3, 2                                 |         r3 <<= 2;
    0x000517b0 add r2, r2, 8                                 |         r2 += var_8h_2;
    0x000517b4 add r2, r2, r3                                |         r2 += r3;
    0x000517b8 ldr r2, [r2, -0x400]                          |         r2 = var_400h_2;
    0x000517bc cmp r2, 0                                     |         
                                                             |         if (r2 != 0) {
    0x000517c0 beq 0x517d4                                   |             
    0x000517c4 ldr r2, [r7, 8]                               |             r2 = *((r7 + 8));
    0x000517c8 ands r2, r2, 0x40                             |             r2 &= 0x40;
                                                             |             if (r2 != r2) {
    0x000517cc strbeq r2, [r7, 4]                            |                 *((r7 + 4)) = r2;
                                                             |             }
                                                             |             if (r2 == r2) {
    0x000517d0 beq 0x517e8                                   |                 goto label_36;
                                                             |             }
                                                             |         }
    0x000517d4 add r2, sp, 0x420                             |         r2 += var_420h;
    0x000517d8 add r2, r2, 8                                 |         r2 += var_8h_2;
    0x000517dc add r3, r2, r3                                |         r3 = r2 + r3;
    0x000517e0 mov r2, 1                                     |         r2 = 1;
    0x000517e4 str r2, [r3, -0x400]                          |         var_400h_2 = r2;
                                                             | label_36:
    0x000517e8 ldr r3, [sp, 0x18]                            |         r3 = var_18h;
    0x000517ec add r3, r3, 1                                 |         r3++;
    0x000517f0 b 0x51738                                     |         goto label_5;
                                                             | label_35:
    0x000517f4 mov r2, r7                                    |         r2 = r7;
    0x000517f8 ldr r1, [sb, r8]                              |         r1 = *((sb + r8));
    0x000517fc ldr r0, [sp, 0x1c]                            |         r0 = var_1ch;
    0x00051800 b 0x517a0                                     |         
                                                             |     } while (1);
                                                             | label_24:
    0x00051804 ldrb r3, [r4, 0x1c]                           |     r3 = *((r4 + 0x1c));
    0x00051808 ldr r5, [r8]                                  |     r5 = *(r8);
    0x0005180c tst r3, 1                                     |     
                                                             |     if ((r3 & 1) != 0) {
    0x00051810 beq 0x51834                                   |         
    0x00051814 mov r0, sb                                    |         r0 = sb;
    0x00051818 bl 0x4fe78                                    |         r0 = fcn_0004fe78 (r0);
    0x0005181c mov sl, r0                                    |         sl = r0;
    0x00051820 ldr r0, [r5]                                  |         r0 = *(r5);
    0x00051824 bl 0x4fe78                                    |         r0 = fcn_0004fe78 (r0);
    0x00051828 add r0, sl, r0                                |         r0 = sl + r0;
    0x0005182c cmp r7, r0                                    |         
                                                             |         if (r7 < r0) {
    0x00051830 movlt r7, r0                                  |             r7 = r0;
                                                             |             goto label_37;
                                                             |         }
                                                             |     }
                                                             | label_37:
    0x00051834 ldr r1, [sp, 0x14]                            |     r1 = var_14h;
    0x00051838 mov r0, r5                                    |     r0 = r5;
    0x0005183c bl 0x4ff28                                    |     fcn_0004ff28 (r0, r1, r2);
    0x00051840 ldr r8, [r8, 4]                               |     r8 = *((r8 + 4));
    0x00051844 cmp r7, r0                                    |     
                                                             |     if (r7 >= r0) {
    0x00051848 movlt r7, r0                                  |         r7 = r0;
                                                             |     }
    0x0005184c b 0x514c8                                     |     goto label_6;
                                                             | label_14:
    0x00051850 ldr r1, [r6, 0x24]                            |     r1 = *((r6 + 0x24));
    0x00051854 ldr r3, [sp, 0x14]                            |     r3 = var_14h;
    0x00051858 mla r2, r8, r7, r1                            |     __asm ("mla r2, r8, r7, r1");
    0x0005185c str r3, [sp]                                  |     *(sp) = r3;
    0x00051860 mov r1, r5                                    |     r1 = r5;
    0x00051864 mov r3, fp                                    |     r3 = fp;
    0x00051868 mov r0, r6                                    |     r0 = r6;
    0x0005186c bl 0x4fff0                                    |     fcn_0004fff0 (r0, r1, r2);
    0x00051870 add r7, r7, 1                                 |     r7++;
    0x00051874 b 0x51a18                                     |     goto label_38;
                                                             | label_28:
    0x00051878 ldr r6, [r7]                                  |     r6 = *(r7);
    0x0005187c mov r2, 0                                     |     r2 = 0;
    0x00051880 mov r1, r6                                    |     r1 = r6;
    0x00051884 ldr r0, [r4, 0x20]                            |     r0 = *((r4 + 0x20));
    0x00051888 bl 0x4fcbc                                    |     r0 = fcn_0004fcbc (r0, r1);
    0x0005188c cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00051890 beq 0x518c8                                   |         goto label_39;
                                                             |     }
    0x00051894 ldr r1, [r6, 4]                               |     r1 = *((r6 + 4));
    0x00051898 mov r0, fp                                    |     r0 = fp;
    0x0005189c bl 0x638ac                                    |     g_string_append ();
    0x000518a0 mov r1, sb                                    |     r1 = sb;
    0x000518a4 mov r0, fp                                    |     r0 = fp;
    0x000518a8 bl 0x638ac                                    |     g_string_append ();
    0x000518ac mov r8, 0                                     |     r8 = 0;
                                                             |     do {
    0x000518b0 ldr r3, [r6, 0x28]                            |         r3 = *((r6 + 0x28));
    0x000518b4 cmp r3, r8                                    |         
                                                             |         if (r3 <= r8) {
    0x000518b8 bgt 0x518d0                                   |             
    0x000518bc mov r1, sl                                    |             r1 = sl;
    0x000518c0 mov r0, fp                                    |             r0 = fp;
    0x000518c4 bl 0x638ac                                    |             g_string_append ();
                                                             | label_39:
    0x000518c8 ldr r7, [r7, 4]                               |             r7 = *((r7 + 4));
    0x000518cc b 0x51614                                     |             goto label_7;
                                                             |         }
    0x000518d0 ldr r2, [r6, 0x24]                            |         r2 = *((r6 + 0x24));
    0x000518d4 mov r3, 0x1c                                  |         r3 = 0x1c;
    0x000518d8 mla r3, r8, r3, r2                            |         __asm ("mla r3, r8, r3, r2");
    0x000518dc mov r2, r3                                    |         r2 = r3;
    0x000518e0 ldr r3, [r3, 8]                               |         r3 = *((r3 + 8));
    0x000518e4 tst r3, 2                                     |         
                                                             |         if ((r3 & 2) == 0) {
    0x000518e8 bne 0x51904                                   |             
    0x000518ec ldr r3, [sp, 0x14]                            |             r3 = var_14h;
    0x000518f0 mov r1, r5                                    |             r1 = r5;
    0x000518f4 str r3, [sp]                                  |             *(sp) = r3;
    0x000518f8 mov r0, r6                                    |             r0 = r6;
    0x000518fc mov r3, fp                                    |             r3 = fp;
    0x00051900 bl 0x4fff0                                    |             fcn_0004fff0 (r0, r1, r2);
                                                             |         }
    0x00051904 add r8, r8, 1                                 |         r8++;
    0x00051908 b 0x518b0                                     |         
                                                             |     } while (1);
                                                             | label_9:
    0x0005190c mov r2, 1                                     |     r2 = 1;
    0x00051910 ldr r1, [r7]                                  |     r1 = *(r7);
    0x00051914 mov r0, r8                                    |     r0 = r8;
    0x00051918 bl 0x4fcbc                                    |     r0 = fcn_0004fcbc (r0, r1);
    0x0005191c cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00051920 bne 0x51640                                   |         goto label_8;
                                                             |     }
    0x00051924 ldr r7, [r7, 4]                               |     r7 = *((r7 + 4));
                                                             | label_29:
    0x00051928 cmp r7, 0                                     |     
                                                             |     if (r7 != 0) {
    0x0005192c bne 0x5190c                                   |         goto label_9;
                                                             |     }
    0x00051930 b 0x51a40                                     |     goto label_33;
                                                             | label_30:
    0x00051934 ldr r0, [pc, 0x1d8]                           |     r0 = *(0x51b10);
    0x00051938 add r0, pc, r0                                |     r0 = pc + r0;
    0x0005193c b 0x51660                                     |     goto label_10;
                                                             |     do {
    0x00051940 ldr r1, [r0, 0x24]                            |         r1 = *((r0 + 0x24));
    0x00051944 ldr r3, [sp, 0x14]                            |         r3 = var_14h;
    0x00051948 mla r2, r8, r7, r1                            |         __asm ("mla r2, r8, r7, r1");
    0x0005194c str r3, [sp]                                  |         *(sp) = r3;
    0x00051950 mov r1, r5                                    |         r1 = r5;
    0x00051954 mov r3, fp                                    |         r3 = fp;
    0x00051958 bl 0x4fff0                                    |         fcn_0004fff0 (r0, r1, r2);
    0x0005195c add r7, r7, 1                                 |         r7++;
                                                             | label_31:
    0x00051960 ldr r0, [r4, 0x20]                            |         r0 = *((r4 + 0x20));
    0x00051964 ldr r3, [r0, 0x28]                            |         r3 = *((r0 + 0x28));
    0x00051968 cmp r3, r7                                    |         
    0x0005196c bgt 0x51940                                   |         
                                                             |     } while (r3 > r7);
    0x00051970 b 0x51694                                     |     goto label_11;
                                                             | label_32:
    0x00051974 ldr r8, [r6]                                  |     r8 = *(r6);
    0x00051978 mov r7, 0                                     |     r7 = 0;
                                                             | label_13:
    0x0005197c ldr r3, [r8, 0x28]                            |     r3 = *((r8 + 0x28));
    0x00051980 cmp r3, r7                                    |     
                                                             |     if (r3 <= r7) {
    0x00051984 ldrle r6, [r6, 4]                             |         r6 = *((r6 + 4));
                                                             |         goto label_40;
                                                             |     }
                                                             |     if (r3 <= r7) {
                                                             | label_40:
    0x00051988 ble 0x51698                                   |         goto label_12;
                                                             |     }
    0x0005198c ldr r2, [r8, 0x24]                            |     r2 = *((r8 + 0x24));
    0x00051990 mla r1, sb, r7, r2                            |     __asm ("mla r1, sb, r7, r2");
    0x00051994 ldr r3, [r1, 8]                               |     r3 = *((r1 + 8));
    0x00051998 tst r3, 2                                     |     
                                                             |     if ((r3 & 2) != 0) {
    0x0005199c beq 0x519bc                                   |         
    0x000519a0 ldr r3, [sp, 0x14]                            |         r3 = var_14h;
    0x000519a4 mov r2, r1                                    |         r2 = r1;
    0x000519a8 str r3, [sp]                                  |         *(sp) = r3;
    0x000519ac mov r1, r5                                    |         r1 = r5;
    0x000519b0 mov r3, fp                                    |         r3 = fp;
    0x000519b4 mov r0, r8                                    |         r0 = r8;
    0x000519b8 bl 0x4fff0                                    |         fcn_0004fff0 (r0, r1, r2);
                                                             |     }
    0x000519bc add r7, r7, 1                                 |     r7++;
    0x000519c0 b 0x5197c                                     |     goto label_13;
                                                             | label_25:
    0x000519c4 mov r2, r8                                    |     r2 = r8;
    0x000519c8 mov r1, r6                                    |     r1 = r6;
    0x000519cc ldr r0, [r4, 0x20]                            |     r0 = *((r4 + 0x20));
    0x000519d0 bl 0x4fcbc                                    |     r0 = fcn_0004fcbc (r0, r1);
    0x000519d4 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000519d8 beq 0x51a34                                   |         goto label_41;
                                                             |     }
    0x000519dc ldr r3, [r6, 0x18]                            |     r3 = *((r6 + 0x18));
    0x000519e0 ldr r0, [r6, 4]                               |     r0 = *((r6 + 4));
    0x000519e4 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x000519e8 beq 0x519f4                                   |         
    0x000519ec ldr r1, [r6, 0x20]                            |         r1 = *((r6 + 0x20));
    0x000519f0 blx r3                                        |         r0 = uint32_t (*r3)(uint32_t) (r1);
                                                             |     }
    0x000519f4 mov r1, r0                                    |     r1 = r0;
    0x000519f8 mov r0, fp                                    |     r0 = fp;
    0x000519fc bl 0x638ac                                    |     g_string_append ();
    0x00051a00 ldr r1, [pc, 0x110]                           |     r1 = *(0x51b14);
    0x00051a04 mov r0, fp                                    |     r0 = fp;
    0x00051a08 add r1, pc, r1                                |     r1 = pc + r1;
    0x00051a0c bl 0x638ac                                    |     g_string_append ();
    0x00051a10 mov r7, 0                                     |     r7 = 0;
    0x00051a14 mov r8, 0x1c                                  |     r8 = 0x1c;
                                                             | label_38:
    0x00051a18 ldr r3, [r6, 0x28]                            |     r3 = *((r6 + 0x28));
    0x00051a1c cmp r3, r7                                    |     
                                                             |     if (r3 > r7) {
    0x00051a20 bgt 0x51850                                   |         goto label_14;
                                                             |     }
    0x00051a24 ldr r1, [pc, 0xf0]                            |     r1 = *(0x51b18);
    0x00051a28 mov r0, fp                                    |     r0 = fp;
    0x00051a2c add r1, pc, r1                                |     r1 = pc + r1;
    0x00051a30 bl 0x638ac                                    |     g_string_append ();
                                                             | label_41:
    0x00051a34 ldr r3, [sp, 0x20]                            |     r3 = var_20h;
    0x00051a38 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00051a3c bne 0x5161c                                   |         goto label_15;
                                                             |     }
                                                             | label_33:
    0x00051a40 ldr r0, [r4, 0xc]                             |     r0 = *((r4 + 0xc));
    0x00051a44 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00051a48 beq 0x51a7c                                   |         
    0x00051a4c ldr r3, [r4, 0x10]                            |         r3 = *((r4 + 0x10));
    0x00051a50 cmp r3, 0                                     |         
                                                             |         if (r3 != 0) {
    0x00051a54 beq 0x51a60                                   |             
    0x00051a58 ldr r1, [r4, 0x18]                            |             r1 = *((r4 + 0x18));
    0x00051a5c blx r3                                        |             r0 = uint32_t (*r3)(uint32_t) (r1);
                                                             |         }
    0x00051a60 mov r1, r0                                    |         r1 = r0;
    0x00051a64 mov r0, fp                                    |         r0 = fp;
    0x00051a68 bl 0x638ac                                    |         g_string_append ();
    0x00051a6c ldr r1, [pc, 0xac]                            |         r1 = *(0x51b1c);
    0x00051a70 mov r0, fp                                    |         r0 = fp;
    0x00051a74 add r1, pc, r1                                |         r1 = pc + r1;
    0x00051a78 bl 0x638ac                                    |         g_string_append ();
                                                             |     }
    0x00051a7c ldr r0, [sp, 0x14]                            |     r0 = var_14h;
    0x00051a80 bl 0x36418                                    |     g_hash_table_destroy ();
    0x00051a84 mov r1, 0                                     |     r1 = 0;
    0x00051a88 mov r0, fp                                    |     r0 = fp;
    0x00051a8c add sp, sp, 0x420                             |     
    0x00051a90 add sp, sp, 0xc                               |     
    0x00051a94 pop {r4, r5, r6, r7, r8, sb, sl, fp, lr}      |     
    0x00051a98 b 0x6349c                                     |     return void (*0x6349c)() ();
                                                             | }
    ; 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/libglib-2.0.so.0.5600.4 @ 0x58564 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.g_regex_replace_eval ()                      | void g_regex_replace_eval (int32_t arg_40h, int32_t arg_44h, int32_t arg_48h, int32_t arg_4ch, int32_t arg1, uint32_t arg2) {
                                                             |     int32_t var_0h;
                                                             |     int32_t var_4h;
                                                             |     int32_t var_8h;
                                                             |     int32_t var_10h;
                                                             |     int32_t var_14h;
                                                             |     int32_t var_1ch;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
    0x00058564 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}     |     
    0x00058568 mov r4, 0                                     |     r4 = 0;
    0x0005856c sub sp, sp, 0x1c                              |     
    0x00058570 subs r8, r0, 0                                |     r8 -= arg_40h;
    0x00058574 ldr sl, [sp, 0x40]                            |     sl = *(arg_40h);
    0x00058578 ldr r7, [sp, 0x44]                            |     r7 = *(arg_44h);
    0x0005857c str r4, [sp, 0x14]                            |     var_14h = r4;
                                                             |     if (r8 != arg_40h) {
    0x00058580 beq 0x585b4                                   |         
    0x00058584 cmp r1, r4                                    |         
    0x00058588 mov r5, r1                                    |         r5 = r1;
                                                             |         if (r1 != r4) {
    0x0005858c bne 0x585e4                                   |             goto label_3;
                                                             |         }
    0x00058590 ldr r1, [pc, 0x1d8]                           |         
    0x00058594 ldr r2, [pc, 0x1d8]                           |         r2 = *(0x58770);
    0x00058598 ldr r0, [pc, 0x1d8]                           |         r0 = *(0x58774);
    0x0005859c add r1, pc, r1                                |         r1 = pc + r1;
    0x000585a0 add r1, r1, 0x1f8                             |         r1 = 0x58964;
    0x000585a4 add r2, pc, r2                                |         r2 = pc + r2;
    0x000585a8 add r1, r1, 3                                 |         r1 += 3;
    0x000585ac add r0, pc, r0                                |         r0 = pc + r0;
    0x000585b0 b 0x585d4                                     |         
                                                             |     } else {
    0x000585b4 ldr r1, [pc, 0x1c0]                           |         
    0x000585b8 ldr r2, [pc, 0x1c0]                           |         r2 = *(0x5877c);
    0x000585bc ldr r0, [pc, 0x1c0]                           |         r0 = *(0x58780);
    0x000585c0 add r1, pc, r1                                |         r1 = pc + r1;
    0x000585c4 add r1, r1, 0x1f8                             |         r1 = 0x58970;
    0x000585c8 add r2, pc, r2                                |         r2 = pc + r2;
    0x000585cc add r1, r1, 3                                 |         r1 += 3;
    0x000585d0 add r0, pc, r0                                |         r0 = pc + r0;
                                                             |     }
                                                             |     do {
                                                             | label_0:
    0x000585d4 bl 0x4d3f0                                    |         g_return_if_fail_warning ();
                                                             | label_1:
    0x000585d8 mov r0, 0                                     |         r0 = 0;
                                                             | label_2:
    0x000585dc add sp, sp, 0x1c                              |         
    0x000585e0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}      |         
                                                             | label_3:
    0x000585e4 cmp r3, 0                                     |         
    0x000585e8 mov sb, r3                                    |         sb = r3;
                                                             |         if (r3 >= 0) {
    0x000585ec bge 0x58614                                   |             goto label_4;
                                                             |         }
    0x000585f0 ldr r1, [pc, 0x190]                           |         
    0x000585f4 ldr r2, [pc, 0x190]                           |         r2 = *(0x58788);
    0x000585f8 ldr r0, [pc, 0x190]                           |         r0 = *(0x5878c);
    0x000585fc add r1, pc, r1                                |         r1 = pc + r1;
    0x00058600 add r1, r1, 0x1f8                             |         r1 = 0x5897c;
    0x00058604 add r2, pc, r2                                |         r2 = pc + r2;
    0x00058608 add r1, r1, 3                                 |         r1 += 3;
    0x0005860c add r0, pc, r0                                |         r0 = pc + r0;
    0x00058610 b 0x585d4                                     |         
                                                             |     } while (1);
                                                             | label_4:
    0x00058614 cmp r7, 0                                     |     
                                                             |     if (r7 == 0) {
    0x00058618 bne 0x58640                                   |         
    0x0005861c ldr r1, [pc, 0x170]                           |         
    0x00058620 ldr r2, [pc, 0x170]                           |         r2 = *(0x58794);
    0x00058624 ldr r0, [pc, 0x170]                           |         r0 = *(0x58798);
    0x00058628 add r1, pc, r1                                |         r1 = pc + r1;
    0x0005862c add r1, r1, 0x1f8                             |         r1 = 0x58988;
    0x00058630 add r2, pc, r2                                |         r2 = pc + r2;
    0x00058634 add r1, r1, 3                                 |         r1 += 3;
    0x00058638 add r0, pc, r0                                |         r0 = pc + r0;
    0x0005863c b 0x585d4                                     |         goto label_0;
                                                             |     }
    0x00058640 ldr r3, [pc, 0x158]                           |     r3 = *(0x5879c);
    0x00058644 and r3, r3, sl                                |     r3 &= sl;
    0x00058648 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x0005864c beq 0x58674                                   |         
    0x00058650 ldr r1, [pc, 0x14c]                           |         
    0x00058654 ldr r2, [pc, 0x14c]                           |         r2 = *(0x587a4);
    0x00058658 ldr r0, [pc, 0x14c]                           |         r0 = *(0x587a8);
    0x0005865c add r1, pc, r1                                |         r1 = pc + r1;
    0x00058660 add r1, r1, 0x1f8                             |         r1 = 0x58998;
    0x00058664 add r2, pc, r2                                |         r2 = pc + r2;
    0x00058668 add r1, r1, 3                                 |         r1 += 3;
    0x0005866c add r0, pc, r0                                |         r0 = pc + r0;
    0x00058670 b 0x585d4                                     |         goto label_0;
                                                             |     }
    0x00058674 cmp r2, 0                                     |     
    0x00058678 mov r6, r2                                    |     r6 = r2;
                                                             |     if (r2 < 0) {
    0x0005867c bge 0x5868c                                   |         
    0x00058680 mov r0, r1                                    |         r0 = r1;
    0x00058684 bl 0x17744                                    |         r0 = strlen (r0);
    0x00058688 mov r6, r0                                    |         r6 = r0;
                                                             |     }
    0x0005868c mov r0, r6                                    |     r0 = r6;
    0x00058690 bl 0x63458                                    |     g_string_sized_new ();
    0x00058694 add fp, sp, 0x14                              |     
    0x00058698 add r3, sp, 0x10                              |     r3 += var_10h;
    0x0005869c str r3, [sp, 4]                               |     var_4h = r3;
    0x000586a0 str fp, [sp, 8]                               |     var_8h = fp;
    0x000586a4 str sl, [sp]                                  |     *(sp) = sl;
    0x000586a8 mov r3, sb                                    |     r3 = sb;
    0x000586ac mov r2, r6                                    |     r2 = r6;
    0x000586b0 mov r1, r5                                    |     r1 = r5;
    0x000586b4 mov r4, r0                                    |     r4 = r0;
    0x000586b8 mov r0, r8                                    |     r0 = r8;
    0x000586bc bl 0x57b68                                    |     g_regex_match_full ();
    0x000586c0 mov r8, 0                                     |     r8 = 0;
                                                             |     do {
    0x000586c4 ldr r0, [sp, 0x10]                            |         r0 = var_10h;
    0x000586c8 bl 0x55ed4                                    |         r0 = g_match_info_matches ();
    0x000586cc cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x000586d0 beq 0x58720                                   |             goto label_5;
                                                             |         }
    0x000586d4 ldr r3, [sp, 0x10]                            |         r3 = var_10h;
    0x000586d8 add r1, r5, r8                                |         r1 = r5 + r8;
    0x000586dc ldr r3, [r3, 0x18]                            |         r3 = *((r3 + 0x18));
    0x000586e0 mov r0, r4                                    |         r0 = r4;
    0x000586e4 ldr r2, [r3]                                  |         r2 = *(r3);
    0x000586e8 sub r2, r2, r8                                |         r2 -= r8;
    0x000586ec bl 0x63958                                    |         g_string_append_len ();
    0x000586f0 ldr r2, [sp, 0x48]                            |         r2 = *(arg_48h);
    0x000586f4 mov r1, r4                                    |         r1 = r4;
    0x000586f8 ldr r0, [sp, 0x10]                            |         r0 = var_10h;
    0x000586fc blx r7                                        |         uint32_t (*r7)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
    0x00058700 mov r1, fp                                    |         r1 = fp;
    0x00058704 mov sb, r0                                    |         sb = r0;
    0x00058708 ldr r0, [sp, 0x10]                            |         r0 = var_10h;
    0x0005870c ldr r3, [r0, 0x18]                            |         r3 = *((r0 + 0x18));
    0x00058710 ldr r8, [r3, 4]                               |         r8 = *((r3 + 4));
    0x00058714 bl 0x56454                                    |         g_match_info_next ();
    0x00058718 cmp sb, 0                                     |         
    0x0005871c beq 0x586c4                                   |         
                                                             |     } while (sb == 0);
                                                             | label_5:
    0x00058720 ldr r0, [sp, 0x10]                            |     r0 = var_10h;
    0x00058724 bl 0x576ac                                    |     g_match_info_free ();
    0x00058728 ldr r7, [sp, 0x14]                            |     r7 = var_14h;
    0x0005872c cmp r7, 0                                     |     
                                                             |     if (r7 != 0) {
    0x00058730 beq 0x58750                                   |         
    0x00058734 mov r1, r7                                    |         r1 = r7;
    0x00058738 ldr r0, [sp, 0x4c]                            |         r0 = *(arg_4ch);
    0x0005873c bl 0x335b0                                    |         g_propagate_error ();
    0x00058740 mov r1, 1                                     |         r1 = 1;
    0x00058744 mov r0, r4                                    |         r0 = r4;
    0x00058748 bl 0x6349c                                    |         g_string_free ();
    0x0005874c b 0x585d8                                     |         goto label_1;
                                                             |     }
    0x00058750 add r1, r5, r8                                |     r1 = r5 + r8;
    0x00058754 sub r2, r6, r8                                |     r2 = r6 - r8;
    0x00058758 mov r0, r4                                    |     r0 = r4;
    0x0005875c bl 0x63958                                    |     g_string_append_len ();
    0x00058760 mov r1, r7                                    |     r1 = r7;
    0x00058764 mov r0, r4                                    |     r0 = r4;
    0x00058768 bl 0x6349c                                    |     g_string_free ();
    0x0005876c b 0x585dc                                     |     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/libglib-2.0.so.0.5600.4 @ 0x7872c */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.g_variant_builder_clear ()       | void g_variant_builder_clear (int32_t arg1) {
                                                 |     r0 = arg1;
    0x0007872c ldr r3, [r0, 0x28]                |     r3 = *((r0 + 0x28));
    0x00078730 cmp r3, 0                         |     
                                                 |     if (r3 != 0) {
    0x00078734 bxeq lr                           |         return;
                                                 |     }
    0x00078738 push {r4, r5, r6, lr}             |     
    0x0007873c mov r4, r0                        |     r4 = r0;
    0x00078740 bl 0x786a0                        |     r0 = fcn_000786a0 (r0);
    0x00078744 cmp r0, 0                         |     
                                                 |     if (r0 == 0) {
    0x00078748 beq 0x7879c                       |         goto label_0;
                                                 |     }
    0x0007874c ldr r0, [r4, 4]                   |     r0 = *((r4 + 4));
    0x00078750 bl 0x8280c                        |     g_variant_type_free ();
    0x00078754 mov r5, 0                         |     r5 = 0;
                                                 |     do {
    0x00078758 ldr r3, [r4, 0x20]                |         r3 = *((r4 + 0x20));
    0x0007875c ldr r0, [r4, 0x18]                |         r0 = *((r4 + 0x18));
    0x00078760 cmp r5, r3                        |         
                                                 |         if (r5 > r3) {
    0x00078764 blo 0x787c4                       |             
    0x00078768 bl 0x4b940                        |             g_free ();
    0x0007876c ldr r0, [r4]                      |             r0 = *(r4);
    0x00078770 cmp r0, 0                         |             
                                                 |             if (r0 != 0) {
    0x00078774 beq 0x78788                       |                 
    0x00078778 bl 0x7872c                        |                 g_variant_builder_clear ();
    0x0007877c ldr r1, [r4]                      |                 r1 = *(r4);
    0x00078780 mov r0, 0x40                      |                 r0 = 0x40;
    0x00078784 bl 0x5f544                        |                 g_slice_free1 ();
                                                 |             }
    0x00078788 mov r0, r4                        |             r0 = r4;
    0x0007878c mov r2, 0x40                      |             r2 = 0x40;
    0x00078790 mov r1, 0                         |             r1 = 0;
    0x00078794 pop {r4, r5, r6, lr}              |             
    0x00078798 b 0x1700c                         |             void (*0x1700c)() ();
                                                 | label_0:
    0x0007879c ldr r1, [pc, 0x30]                |             
    0x000787a0 ldr r2, [pc, 0x30]                |             r2 = *(0x787d4);
    0x000787a4 ldr r0, [pc, 0x30]                |             r0 = *(0x787d8);
    0x000787a8 add r1, pc, r1                    |             r1 = pc + r1;
    0x000787ac add r1, r1, 0x460                 |             r1 = 0x78c30;
    0x000787b0 add r2, pc, r2                    |             r2 = pc + r2;
    0x000787b4 add r1, r1, 1                     |             r1++;
    0x000787b8 add r0, pc, r0                    |             r0 = pc + r0;
    0x000787bc pop {r4, r5, r6, lr}              |             
    0x000787c0 b 0x4d3f0                         |             void (*0x4d3f0)() ();
                                                 |         }
    0x000787c4 ldr r0, [r0, r5, lsl 2]           |         offset_0 = r5 << 2;
                                                 |         r0 = *((r0 + offset_0));
    0x000787c8 bl 0x7bca8                        |         g_variant_unref ();
    0x000787cc add r5, r5, 1                     |         r5++;
    0x000787d0 b 0x78758                         |         
                                                 |     } while (1);
                                                 | }

[*] Function popen used 1 times libglib-2.0.so.0.5600.4