[*] Binary protection state of systemd-shutdown

  
  	Full RELRO     Canary found      NX enabled   PIE enabled  RPATH        No RUNPATH   No Symbols


[*] Function system tear down of systemd-shutdown

    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/systemd/systemd-shutdown @ 0x5294 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.00005294 ()                                      | void fcn_00005294 (uint32_t arg1, int16_t arg2) {
                                                                 |     int16_t var_0h_3;
                                                                 |     int16_t var_4h_3;
                                                                 |     int16_t var_8h_3;
                                                                 |     int16_t var_ch_3;
                                                                 |     int16_t var_10h_2;
                                                                 |     int16_t var_18h_2;
                                                                 |     int16_t var_1ch_4;
                                                                 |     int16_t var_24h_2;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_2ch_2;
                                                                 |     int16_t var_30h_2;
                                                                 |     int16_t var_3ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x00005294 blmi 0xfe397cd0                                   |     __asm ("blmi 0xfe397cd0");
    0x00005298 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x0000529c add r2, pc                                        |     r2 += pc;
    0x0000529e vpush {d8}                                        |     __asm ("vpush {d8}");
    0x000052a2 sub sp, 0x44                                      |     
    0x000052a4 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x000052a6 ldr r3, [r3]                                      |     r3 = *(r3);
    0x000052a8 str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x000052aa mov.w r3, 0                                       |     r3 = 0;
    0x000052ae cmp r0, 0                                         |     
                                                                 |     if (var_0h_3 == ) {
    0x000052b0 beq.w 0x54aa                                      |         goto label_4;
                                                                 |     }
    0x000052b4 mov r7, r0                                        |     r7 = r0;
    0x000052b6 movs r5, 0                                        |     r5 = 0;
    0x000052b8 add r0, sp, 0x28                                  |     r0 += var_28h;
    0x000052ba mov sb, r1                                        |     sb = r1;
    0x000052bc strd r5, r5, [sp, 0x24]                           |     __asm ("strd r5, r5, [sp, 0x24]");
    0x000052c0 blx 0x1920                                        |     r0 = sd_device_enumerator_new ();
    0x000052c4 subs r6, r0, 0                                    |     r6 = r0 - 0;
                                                                 |     if (r6 < r0) {
    0x000052c6 blt.w 0x5428                                      |         goto label_5;
                                                                 |     }
    0x000052ca ldr r0, [sp, 0x28]                                |     r0 = var_28h;
    0x000052cc blx 0x1e28                                        |     r0 = fcn_00001e28 ();
    0x000052d0 subs r6, r0, 0                                    |     r6 = r0 - 0;
                                                                 |     if (r6 < r0) {
    0x000052d2 blt.w 0x5428                                      |         goto label_5;
                                                                 |     }
    0x000052d6 ldr r1, [pc, 0x1fc]                               |     
    0x000052d8 movs r2, 1                                        |     r2 = 1;
    0x000052da ldr r0, [sp, 0x28]                                |     r0 = var_28h;
    0x000052dc add r1, pc                                        |     r1 = 0xa7b6;
    0x000052de blx 0x1950                                        |     r0 = sd_device_enumerator_add_match_subsystem ()
    0x000052e2 subs r6, r0, 0                                    |     r6 = r0 - 0;
                                                                 |     if (r6 < r0) {
    0x000052e4 blt.w 0x5428                                      |         goto label_5;
                                                                 |     }
    0x000052e8 ldr r1, [pc, 0x1ec]                               |     
    0x000052ea ldr r0, [sp, 0x28]                                |     r0 = var_28h;
    0x000052ec add r1, pc                                        |     r1 = 0xa7c8;
    0x000052ee blx 0x1914                                        |     r0 = sd_device_enumerator_add_match_sysname ();
    0x000052f2 subs r6, r0, 0                                    |     r6 = r0 - 0;
                                                                 |     if (r6 < r0) {
    0x000052f4 blt.w 0x5428                                      |         goto label_5;
                                                                 |     }
    0x000052f8 ldr r0, [sp, 0x28]                                |     r0 = var_28h;
    0x000052fa add r6, sp, 0x30                                  |     r6 += var_30h_2;
    0x000052fc blx 0x198c                                        |     sd_device_enumerator_get_device_first ();
    0x00005300 add.w r8, sp, 0x2c                                |     r8 += var_2ch_2;
    0x00005304 mov r4, r0                                        |     r4 = r0;
    0x00005306 mov sl, r7                                        |     sl = r7;
                                                                 |     if (r0 == 0) {
    0x00005308 cbz r0, 0x5366                                    |         goto label_6;
                                                                 |     }
                                                                 |     do {
    0x0000530a mov r1, r6                                        |         r1 = r6;
    0x0000530c mov r0, r4                                        |         r0 = r4;
    0x0000530e blx 0x1c30                                        |         r0 = fcn_00001c30 ();
    0x00005312 cmp r0, 0                                         |         
                                                                 |         if (r0 >= 0) {
    0x00005314 blt 0x5358                                        |             
    0x00005316 mov r1, r8                                        |             r1 = r8;
    0x00005318 mov r0, r4                                        |             r0 = r4;
    0x0000531a blx 0x1938                                        |             r0 = sd_device_get_devname ();
    0x0000531e cmp r0, 0                                         |             
                                                                 |             if (r0 < 0) {
    0x00005320 blt 0x5358                                        |                 goto label_7;
                                                                 |             }
    0x00005322 ldr r0, [sp, 0x2c]                                |             r0 = var_2ch_2;
    0x00005324 blx 0x1c78                                        |             r0 = fcn_00001c78 ();
    0x00005328 mov r7, r0                                        |             r7 = r0;
    0x0000532a cmp r0, 0                                         |             
                                                                 |             if (r0 == 0) {
    0x0000532c beq 0x541e                                        |                 goto label_8;
                                                                 |             }
    0x0000532e movs r0, 0x20                                     |             r0 = 0x20;
    0x00005330 blx 0x1c84                                        |             r0 = fcn_00001c84 ();
    0x00005334 mov r4, r0                                        |             r4 = r0;
    0x00005336 cmp r0, 0                                         |             
                                                                 |             if (r0 == 0) {
    0x00005338 beq 0x541e                                        |                 goto label_8;
                                                                 |             }
    0x0000533a movs r2, 0x20                                     |             r2 = 0x20;
    0x0000533c movs r1, 0                                        |             r1 = 0;
    0x0000533e vldr d8, [sp, 0x30]                               |             __asm ("vldr d8, [sp, 0x30]");
    0x00005342 blx 0x19c8                                        |             memset (r0, r1, r2);
    0x00005346 ldr r3, [sp, 0x24]                                |             r3 = var_24h_2;
    0x00005348 vstr d8, [r4, 0x10]                               |             __asm ("vstr d8, [r4, 0x10]");
    0x0000534c str r7, [r4]                                      |             *(r4) = r7;
    0x0000534e str r3, [r4, 0x18]                                |             *((r4 + 0x18)) = r3;
                                                                 |             if (r3 != 0) {
    0x00005350 cbz r3, 0x5354                                    |                 
    0x00005352 str r4, [r3, 0x1c]                                |                 *((r3 + 0x1c)) = r4;
                                                                 |             }
    0x00005354 str r5, [r4, 0x1c]                                |             *((r4 + 0x1c)) = r5;
    0x00005356 str r4, [sp, 0x24]                                |             var_24h_2 = r4;
                                                                 |         }
                                                                 | label_7:
    0x00005358 ldr r0, [sp, 0x28]                                |         r0 = var_28h;
    0x0000535a blx 0x1c18                                        |         r0 = fcn_00001c18 ();
    0x0000535e mov r4, r0                                        |         r4 = r0;
    0x00005360 cmp r0, 0                                         |         
    0x00005362 bne 0x530a                                        |         
                                                                 |     } while (r0 != 0);
    0x00005364 mov r7, sl                                        |     r7 = sl;
                                                                 | label_6:
    0x00005366 ldr r0, [sp, 0x28]                                |     r0 = var_28h;
                                                                 |     if (r0 != 0) {
    0x00005368 cbz r0, 0x536e                                    |         
    0x0000536a blx 0x19b0                                        |         sd_device_enumerator_unref ();
                                                                 |     }
    0x0000536e ldr r0, [pc, 0x16c]                               |     
    0x00005370 mov r1, r6                                        |     r1 = r6;
    0x00005372 vmov.i32 d16, 0                                   |     __asm ("vmov.i32 d16, 0");
    0x00005376 add r0, pc                                        |     r0 = 0xa858;
    0x00005378 vstr d16, [sp, 0x30]                              |     __asm ("vstr d16, [sp, 0x30]");
    0x0000537c blx 0x1c48                                        |     fcn_00001c48 ();
    0x00005380 ldr r5, [sp, 0x24]                                |     r5 = var_24h_2;
    0x00005382 mov r6, r5                                        |     r6 = r5;
    0x00005384 cmp r5, 0                                         |     
                                                                 |     if (r5 == 0) {
    0x00005386 beq 0x53fe                                        |         goto label_9;
                                                                 |     }
    0x00005388 ldr r3, [pc, 0x154]                               |     
    0x0000538a mov.w r8, 0xf000                                  |     r8 = 0xf000;
    0x0000538e movs r6, 0                                        |     r6 = 0;
    0x00005390 movt r8, 0xffff                                   |     r8 = (r8 & 0xFFFF) | 0xffff0000;
    0x00005394 add r3, pc                                        |     r3 = 0xa878;
    0x00005396 adds r3, 7                                        |     r3 += 7;
    0x00005398 str r3, [sp, 0x18]                                |     var_18h_2 = r3;
    0x0000539a ldr r3, [pc, 0x148]                               |     
    0x0000539c add r3, pc                                        |     r3 = 0xa886;
    0x0000539e add.w fp, r3, 7                                   |     
    0x000053a2 ldr r3, [pc, 0x144]                               |     
    0x000053a4 add r3, pc                                        |     r3 = 0xa892;
    0x000053a6 str r3, [sp, 0x1c]                                |     var_1ch_4 = r3;
                                                                 |     do {
                                                                 | label_1:
    0x000053a8 ldrd r1, r2, [sp, 0x30]                           |         __asm ("ldrd r1, r2, [var_30h_2]");
    0x000053ac mov r4, r5                                        |         r4 = r5;
    0x000053ae ldr r5, [r5, 0x18]                                |         r5 = *((r5 + 0x18));
    0x000053b0 ubfx r0, r1, 8, 0xc                               |         r0 = (r1 >> 8) & ((1 << 0xc) - 1);
    0x000053b4 and.w r3, r2, r8                                  |         r3 = r2 & r8;
    0x000053b8 orrs r3, r0                                       |         r3 |= r0;
                                                                 |         if (r3 != r0) {
    0x000053ba beq 0x53c8                                        |             
    0x000053bc ldrd r0, r3, [r4, 0x10]                           |             __asm ("ldrd r0, r3, [r4, 0x10]");
    0x000053c0 cmp r3, r2                                        |             
    0x000053c2 it eq                                             |             
                                                                 |             if (r3 == r2) {
    0x000053c4 cmpeq r0, r1                                      |                 __asm ("cmpeq r0, r1");
                                                                 |             }
                                                                 |             if (r3 == r2) {
    0x000053c6 beq 0x545a                                        |                 goto label_10;
                                                                 |             }
                                                                 |         }
    0x000053c8 blx 0x1968                                        |         r0 = log_get_max_level ();
    0x000053cc cmp r0, 5                                         |         
                                                                 |         if (r0 > 5) {
    0x000053ce bgt 0x5462                                        |             goto label_11;
                                                                 |         }
                                                                 | label_3:
    0x000053d0 mov r0, r4                                        |         r0 = r4;
    0x000053d2 bl 0x3d38                                         |         r0 = fcn_00003d38 (r0);
    0x000053d6 subs.w sl, r0, 0                                  |         sl = r0 - 0;
                                                                 |         if (sl < r0) {
    0x000053da blt 0x5432                                        |             goto label_12;
                                                                 |         }
    0x000053dc movs r3, 1                                        |         r3 = 1;
    0x000053de mov r1, r4                                        |         r1 = r4;
    0x000053e0 add r0, sp, 0x24                                  |         r0 += var_24h_2;
    0x000053e2 strb r3, [r7]                                     |         *(r7) = r3;
    0x000053e4 bl 0x3c5c                                         |         fcn_00003c5c (r0, r1);
    0x000053e8 cmp r5, 0                                         |         
    0x000053ea bne 0x53a8                                        |         
                                                                 |     } while (r5 != 0);
                                                                 | label_2:
    0x000053ec ldr r1, [sp, 0x24]                                |     r1 = var_24h_2;
                                                                 |     if (r1 == 0) {
                                                                 | label_0:
    0x000053ee cbz r1, 0x53fe                                    |         goto label_9;
                                                                 |     }
    0x000053f0 add r4, sp, 0x24                                  |     r4 += var_24h_2;
                                                                 |     do {
    0x000053f2 mov r0, r4                                        |         r0 = r4;
    0x000053f4 bl 0x3c5c                                         |         fcn_00003c5c (r0, r1);
    0x000053f8 ldr r1, [sp, 0x24]                                |         r1 = var_24h_2;
    0x000053fa cmp r1, 0                                         |         
    0x000053fc bne 0x53f2                                        |         
                                                                 |     } while (r1 != 0);
                                                                 | label_9:
    0x000053fe ldr r2, [pc, 0xec]                                |     
    0x00005400 ldr r3, [pc, 0xcc]                                |     r3 = *(0x54d0);
    0x00005402 add r2, pc                                        |     r2 = 0xa8f4;
    0x00005404 ldr r3, [r2, r3]                                  |     r3 = *(0xa8f4);
    0x00005406 ldr r2, [r3]                                      |     r2 = *(0xa8f4);
    0x00005408 ldr r3, [sp, 0x3c]                                |     r3 = var_3ch;
    0x0000540a eors r2, r3                                       |     r2 ^= r3;
    0x0000540c mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x00005410 bne 0x54c8                                        |         goto label_13;
                                                                 |     }
    0x00005412 mov r0, r6                                        |     r0 = r6;
    0x00005414 add sp, 0x44                                      |     
    0x00005416 vpop {d8}                                         |     __asm ("vpop {d8}");
    0x0000541a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_8:
    0x0000541e mov r0, r7                                        |     r0 = r7;
    0x00005420 mvn r6, 0xb                                       |     r6 = ~0xb;
    0x00005424 blx 0x1a50                                        |     fcn_00001a50 ();
                                                                 | label_5:
    0x00005428 ldr r0, [sp, 0x28]                                |     r0 = var_28h;
    0x0000542a cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000542c bne 0x54c0                                        |         goto label_14;
                                                                 |     }
    0x0000542e ldr r1, [sp, 0x24]                                |     r1 = var_24h_2;
    0x00005430 b 0x53ee                                          |     goto label_0;
                                                                 | label_12:
    0x00005432 blx 0x1968                                        |     log_get_max_level ();
    0x00005436 and r3, sb, 7                                     |     r3 = sb & 7;
    0x0000543a cmp r0, r3                                        |     
                                                                 |     if (r0 >= r3) {
    0x0000543c blt 0x545a                                        |         
    0x0000543e ldr r3, [r4]                                      |         r3 = *(r4);
    0x00005440 mov r1, sl                                        |         r1 = sl;
    0x00005442 ldr r2, [sp, 0x18]                                |         r2 = var_18h_2;
    0x00005444 mov r0, sb                                        |         r0 = sb;
    0x00005446 str r3, [sp, 8]                                   |         var_8h_3 = r3;
    0x00005448 ldr r3, [sp, 0x1c]                                |         r3 = var_1ch_4;
    0x0000544a str r3, [sp, 4]                                   |         var_4h_3 = r3;
    0x0000544c ldr r3, [pc, 0xa0]                                |         
    0x0000544e add r3, pc                                        |         r3 = 0xa942;
    0x00005450 str r3, [sp]                                      |         *(sp) = r3;
    0x00005452 mov.w r3, 0x2cc                                   |         r3 = 0x2cc;
    0x00005456 blx 0x1cb4                                        |         fcn_00001cb4 ();
                                                                 |     }
                                                                 | label_10:
    0x0000545a adds r6, 1                                        |     r6++;
    0x0000545c cmp r5, 0                                         |     
                                                                 |     if (r5 != 0) {
    0x0000545e bne 0x53a8                                        |         goto label_1;
                                                                 |     }
    0x00005460 b 0x53ec                                          |     goto label_2;
                                                                 | label_11:
    0x00005462 ldrd r1, lr, [r4, 0x10]                           |     __asm ("ldrd r1, lr, [r4, 0x10]");
    0x00005466 movw r3, 0x2c9                                    |     r3 = 0x2c9;
    0x0000546a ldr r0, [pc, 0x88]                                |     
    0x0000546c mov r2, fp                                        |     r2 = fp;
    0x0000546e ubfx sl, r1, 8, 0xc                               |     sl = (r1 >> 8) & ((1 << 0xc) - 1);
    0x00005472 and.w ip, lr, r8                                  |     
    0x00005476 orr.w ip, ip, sl                                  |     
    0x0000547a add r0, pc                                        |     r0 = 0xa974;
    0x0000547c str.w ip, [sp, 0xc]                               |     __asm ("str.w ip, [var_ch_3]");
    0x00005480 lsr.w ip, r1, 0xc                                 |     
    0x00005484 uxtb r1, r1                                       |     r1 = (int8_t) r1;
    0x00005486 orr.w ip, ip, lr, lsl 20                          |     
    0x0000548a bic ip, ip, 0xff                                  |     ip = BIT_MASK (ip, 0xff);
    0x0000548e orr.w r1, ip, r1                                  |     r1 = ip | r1;
    0x00005492 str r1, [sp, 0x10]                                |     var_10h_2 = r1;
    0x00005494 ldr r1, [r4]                                      |     r1 = *(r4);
    0x00005496 str r0, [sp, 4]                                   |     var_4h_3 = r0;
    0x00005498 ldr r0, [pc, 0x5c]                                |     
    0x0000549a str r1, [sp, 8]                                   |     var_8h_3 = r1;
    0x0000549c movs r1, 0                                        |     r1 = 0;
    0x0000549e add r0, pc                                        |     r0 = 0xa99a;
    0x000054a0 str r0, [sp]                                      |     *(sp) = r0;
    0x000054a2 movs r0, 6                                        |     r0 = 6;
    0x000054a4 blx 0x1cb4                                        |     fcn_00001cb4 ();
    0x000054a8 b 0x53d0                                          |     goto label_3;
                                                                 | label_4:
    0x000054aa ldr r1, [pc, 0x50]                                |     
    0x000054ac movw r2, 0x33b                                    |     r2 = 0x33b;
    0x000054b0 ldr r3, [pc, 0x4c]                                |     
    0x000054b2 ldr r0, [pc, 0x50]                                |     
    0x000054b4 add r1, pc                                        |     r1 = 0xa9b6;
    0x000054b6 add r3, pc                                        |     r3 = 0xa9ba;
    0x000054b8 adds r1, 7                                        |     r1 += 7;
    0x000054ba add r0, pc                                        |     r0 = 0xa9c4;
    0x000054bc blx 0x1b88                                        |     fcn_00001b88 ();
                                                                 | label_14:
    0x000054c0 blx 0x19b0                                        |     sd_device_enumerator_unref ();
    0x000054c4 ldr r1, [sp, 0x24]                                |     r1 = var_24h_2;
    0x000054c6 b 0x53ee                                          |     goto label_0;
                                                                 | label_13:
    0x000054c8 blx 0x1c9c                                        |     fcn_00001c9c ();
    0x000054cc cmp r3, 0x5c                                      |     
    0x000054ce movs r1, r0                                       |     r1 = r0;
    0x000054d0 lsls r4, r6, 7                                    |     r4 = r6 << 7;
    0x000054d2 movs r0, r0                                       |     
    0x000054d4 asrs r0, r5, 0x1a                                 |     r0 = r5 >> 0x1a;
    0x000054d6 movs r0, r0                                       |     
    0x000054d8 adds r4, r4, r4                                   |     r4 += r4;
    0x000054da movs r0, r0                                       |     
    0x000054dc asrs r6, r3, 7                                    |     r6 = r3 >> 7;
    0x000054de movs r0, r0                                       |     
    0x000054e0 asrs r0, r1, 6                                    |     r0 = r1 >> 6;
    0x000054e2 movs r0, r0                                       |     
    0x000054e4 asrs r0, r0, 6                                    |     r0 >>= 6;
    0x000054e6 movs r0, r0                                       |     
    0x000054e8 adds r0, r2, r2                                   |     r0 = r2 + r2;
    0x000054ea movs r0, r0                                       |     
    0x000054ec cmp r1, 0xf6                                      |     
    0x000054ee movs r1, r0                                       |     r1 = r0;
    0x000054f0 subs r6, r3, r1                                   |     r6 = r3 - r1;
    0x000054f2 movs r0, r0                                       |     
    0x000054f4 asrs r6, r3, 0x1e                                 |     r6 = r3 >> 0x1e;
    0x000054f6 movs r0, r0                                       |     
    0x000054f8 subs r6, r1, r0                                   |     r6 = r1 - r0;
    0x000054fa movs r0, r0                                       |     
    0x000054fc asrs r0, r5, 1                                    |     r0 = r5 >> 1;
    0x000054fe movs r0, r0                                       |     
    0x00005500 adds r6, r5, r0                                   |     r6 = r5 + r0;
    0x00005502 movs r0, r0                                       |     
    0x00005504 asrs r6, r0, 0x12                                 |     r6 = r0 >> 0x12;
    0x00005506 movs r0, r0                                       |     
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/systemd/systemd-shutdown @ 0x5508 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.00005508 ()                                      | void fcn_00005508 (uint32_t arg1, int16_t arg2) {
                                                                 |     int16_t var_0h_2;
                                                                 |     int16_t var_4h_2;
                                                                 |     int16_t var_8h_2;
                                                                 |     int16_t var_ch_2;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_1ch_3;
                                                                 |     int16_t var_20h_2;
                                                                 |     int16_t var_24h_3;
                                                                 |     int16_t var_2ch;
                                                                 |     int16_t var_30h;
                                                                 |     int16_t var_34h;
                                                                 |     int16_t var_38h;
                                                                 |     int16_t var_44h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x00005508 blmi 0xfee17fec                                   |     __asm ("blmi 0xfee17fec");
    0x0000550c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00005510 sub sp, 0x4c                                      |     
    0x00005512 add r2, pc                                        |     r2 += pc;
    0x00005514 str r1, [sp, 0x1c]                                |     var_1ch_3 = r1;
    0x00005516 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00005518 ldr r3, [r3]                                      |     r3 = *(r3);
    0x0000551a str r3, [sp, 0x44]                                |     var_44h = r3;
    0x0000551c mov.w r3, 0                                       |     r3 = 0;
    0x00005520 cmp r0, 0                                         |     
                                                                 |     if (var_0h_2 == ) {
    0x00005522 beq.w 0x577a                                      |         goto label_7;
                                                                 |     }
    0x00005526 mov r7, r0                                        |     r7 = r0;
    0x00005528 movs r5, 0                                        |     r5 = 0;
    0x0000552a add r0, sp, 0x30                                  |     r0 += var_30h;
    0x0000552c strd r5, r5, [sp, 0x2c]                           |     __asm ("strd r5, r5, [sp, 0x2c]");
    0x00005530 blx 0x1920                                        |     r0 = sd_device_enumerator_new ();
    0x00005534 subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 < r0) {
    0x00005536 blt.w 0x56a0                                      |         goto label_8;
                                                                 |     }
    0x0000553a ldr r0, [sp, 0x30]                                |     r0 = var_30h;
    0x0000553c blx 0x1e28                                        |     r0 = fcn_00001e28 ();
    0x00005540 subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 < r0) {
    0x00005542 blt.w 0x56a0                                      |         goto label_8;
                                                                 |     }
    0x00005546 ldr r1, [pc, 0x2a8]                               |     
    0x00005548 movs r2, 1                                        |     r2 = 1;
    0x0000554a ldr r0, [sp, 0x30]                                |     r0 = var_30h;
    0x0000554c add r1, pc                                        |     r1 = 0xad42;
    0x0000554e blx 0x1950                                        |     r0 = sd_device_enumerator_add_match_subsystem ()
    0x00005552 subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 < r0) {
    0x00005554 blt.w 0x56a0                                      |         goto label_8;
                                                                 |     }
    0x00005558 ldr r1, [pc, 0x298]                               |     
    0x0000555a ldr r0, [sp, 0x30]                                |     r0 = var_30h;
    0x0000555c add r1, pc                                        |     r1 = 0xad54;
    0x0000555e blx 0x1914                                        |     r0 = sd_device_enumerator_add_match_sysname ();
    0x00005562 subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 < r0) {
    0x00005564 blt.w 0x56a0                                      |         goto label_8;
                                                                 |     }
    0x00005568 ldr r0, [sp, 0x30]                                |     r0 = var_30h;
    0x0000556a add r6, sp, 0x38                                  |     r6 += var_38h;
    0x0000556c blx 0x198c                                        |     sd_device_enumerator_get_device_first ();
    0x00005570 add.w r8, sp, 0x34                                |     r8 += var_34h;
    0x00005574 mov r4, r0                                        |     r4 = r0;
    0x00005576 mov sb, r7                                        |     sb = r7;
                                                                 |     if (r0 == 0) {
    0x00005578 cbz r0, 0x55d6                                    |         goto label_9;
                                                                 |     }
                                                                 |     do {
    0x0000557a mov r1, r6                                        |         r1 = r6;
    0x0000557c mov r0, r4                                        |         r0 = r4;
    0x0000557e blx 0x1c30                                        |         r0 = fcn_00001c30 ();
    0x00005582 cmp r0, 0                                         |         
                                                                 |         if (r0 >= 0) {
    0x00005584 blt 0x55c8                                        |             
    0x00005586 mov r1, r8                                        |             r1 = r8;
    0x00005588 mov r0, r4                                        |             r0 = r4;
    0x0000558a blx 0x1938                                        |             r0 = sd_device_get_devname ();
    0x0000558e cmp r0, 0                                         |             
                                                                 |             if (r0 < 0) {
    0x00005590 blt 0x55c8                                        |                 goto label_10;
                                                                 |             }
    0x00005592 ldr r0, [sp, 0x34]                                |             r0 = var_34h;
    0x00005594 blx 0x1c78                                        |             r0 = fcn_00001c78 ();
    0x00005598 mov r7, r0                                        |             r7 = r0;
    0x0000559a cmp r0, 0                                         |             
                                                                 |             if (r0 == 0) {
    0x0000559c beq 0x5696                                        |                 goto label_11;
                                                                 |             }
    0x0000559e movs r0, 0x20                                     |             r0 = 0x20;
    0x000055a0 blx 0x1c84                                        |             r0 = fcn_00001c84 ();
    0x000055a4 mov r4, r0                                        |             r4 = r0;
    0x000055a6 cmp r0, 0                                         |             
                                                                 |             if (r0 == 0) {
    0x000055a8 beq 0x5696                                        |                 goto label_11;
                                                                 |             }
    0x000055aa movs r2, 0x20                                     |             r2 = 0x20;
    0x000055ac movs r1, 0                                        |             r1 = 0;
    0x000055ae ldrd sl, fp, [sp, 0x38]                           |             __asm ("ldrd sl, fp, [var_38h]");
    0x000055b2 blx 0x19c8                                        |             memset (r0, r1, r2);
    0x000055b6 ldr r3, [sp, 0x2c]                                |             r3 = var_2ch;
    0x000055b8 strd sl, fp, [r4, 0x10]                           |             __asm ("strd sl, fp, [r4, 0x10]");
    0x000055bc str r7, [r4]                                      |             *(r4) = r7;
    0x000055be str r3, [r4, 0x18]                                |             *((r4 + 0x18)) = r3;
                                                                 |             if (r3 != 0) {
    0x000055c0 cbz r3, 0x55c4                                    |                 
    0x000055c2 str r4, [r3, 0x1c]                                |                 *((r3 + 0x1c)) = r4;
                                                                 |             }
    0x000055c4 str r5, [r4, 0x1c]                                |             *((r4 + 0x1c)) = r5;
    0x000055c6 str r4, [sp, 0x2c]                                |             var_2ch = r4;
                                                                 |         }
                                                                 | label_10:
    0x000055c8 ldr r0, [sp, 0x30]                                |         r0 = var_30h;
    0x000055ca blx 0x1c18                                        |         r0 = fcn_00001c18 ();
    0x000055ce mov r4, r0                                        |         r4 = r0;
    0x000055d0 cmp r0, 0                                         |         
    0x000055d2 bne 0x557a                                        |         
                                                                 |     } while (r0 != 0);
    0x000055d4 mov r7, sb                                        |     r7 = sb;
                                                                 | label_9:
    0x000055d6 ldr r0, [sp, 0x30]                                |     r0 = var_30h;
                                                                 |     if (r0 != 0) {
    0x000055d8 cbz r0, 0x55de                                    |         
    0x000055da blx 0x19b0                                        |         sd_device_enumerator_unref ();
                                                                 |     }
    0x000055de ldr r0, [pc, 0x218]                               |     
    0x000055e0 mov r1, r6                                        |     r1 = r6;
    0x000055e2 vmov.i32 d16, 0                                   |     __asm ("vmov.i32 d16, 0");
    0x000055e6 add r0, pc                                        |     r0 = 0xade4;
    0x000055e8 vstr d16, [sp, 0x38]                              |     __asm ("vstr d16, [sp, 0x38]");
    0x000055ec blx 0x1c48                                        |     fcn_00001c48 ();
    0x000055f0 ldr r6, [sp, 0x2c]                                |     r6 = var_2ch;
    0x000055f2 mov r4, r6                                        |     r4 = r6;
    0x000055f4 cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x000055f6 beq 0x56ba                                        |         goto label_12;
                                                                 |     }
    0x000055f8 ldr r3, [pc, 0x200]                               |     
    0x000055fa mov.w sb, 0xf000                                  |     sb = 0xf000;
    0x000055fe mov.w fp, 0x80                                    |     
    0x00005602 movs r4, 0                                        |     r4 = 0;
    0x00005604 movt sb, 0xffff                                   |     sb = (sb & 0xFFFF) | 0xffff0000;
    0x00005608 movt fp, 8                                        |     
    0x0000560c add r3, pc                                        |     r3 = 0xae0c;
    0x0000560e adds r3, 7                                        |     r3 += 7;
    0x00005610 str r3, [sp, 0x20]                                |     var_20h_2 = r3;
    0x00005612 ldr r3, [pc, 0x1ec]                               |     
    0x00005614 add r3, pc                                        |     r3 = 0xae1a;
    0x00005616 adds r3, 7                                        |     r3 += 7;
    0x00005618 str r3, [sp, 0x24]                                |     var_24h_3 = r3;
                                                                 |     do {
                                                                 | label_1:
    0x0000561a ldrd r1, r2, [sp, 0x38]                           |         __asm ("ldrd r1, r2, [var_38h]");
    0x0000561e mov r5, r6                                        |         r5 = r6;
    0x00005620 ldrd sl, r8, [r5, 0x10]                           |         __asm ("ldrd sl, r8, [r5, 0x10]");
    0x00005624 ldr r6, [r6, 0x18]                                |         r6 = *((r6 + 0x18));
    0x00005626 ubfx r0, r1, 8, 0xc                               |         r0 = (r1 >> 8) & ((1 << 0xc) - 1);
    0x0000562a and.w r3, r2, sb                                  |         r3 = r2 & sb;
    0x0000562e orrs r3, r0                                       |         r3 |= r0;
                                                                 |         if (r3 != r0) {
    0x00005630 beq 0x563a                                        |             
    0x00005632 cmp r2, r8                                        |             
    0x00005634 it eq                                             |             
                                                                 |             if (r2 == r8) {
    0x00005636 cmpeq r1, sl                                      |                 __asm ("cmpeq r1, sl");
                                                                 |             }
                                                                 |             if (r2 == r8) {
    0x00005638 beq 0x56fc                                        |                 goto label_5;
                                                                 |             }
                                                                 |         }
    0x0000563a blx 0x1968                                        |         r0 = log_get_max_level ();
    0x0000563e cmp r0, 5                                         |         
                                                                 |         if (r0 > 5) {
    0x00005640 bgt 0x5704                                        |             goto label_13;
                                                                 |         }
                                                                 | label_3:
    0x00005642 ubfx sl, sl, 8, 0xc                               |         sl = (sl >> 8) & ((1 << 0xc) - 1);
    0x00005646 and.w r8, r8, sb                                  |         r8 &= sb;
    0x0000564a orrs.w r8, r8, sl                                 |         r8 |= sl;
                                                                 |         if (r8 == r8) {
    0x0000564e beq.w 0x57b0                                      |             goto label_14;
                                                                 |         }
    0x00005652 ldr r0, [r5]                                      |         r0 = *(r5);
    0x00005654 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00005656 beq.w 0x57c6                                      |             goto label_15;
                                                                 |         }
    0x0000565a mov r1, fp                                        |         r1 = fp;
    0x0000565c blx 0x1bc4                                        |         r0 = fcn_00001bc4 ();
    0x00005660 subs.w r8, r0, 0                                  |         r8 = r0 - 0;
                                                                 |         if (r8 < r0) {
    0x00005664 blt 0x56d8                                        |             goto label_16;
                                                                 |         }
    0x00005666 blx 0x19d4                                        |         r0 = fsync ();
    0x0000566a cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x0000566c blt 0x574e                                        |             goto label_17;
                                                                 |         }
                                                                 | label_4:
    0x0000566e movs r2, 0                                        |         r2 = 0;
    0x00005670 movw r1, 0x932                                    |         r1 = 0x932;
    0x00005674 mov r0, r8                                        |         r0 = r8;
    0x00005676 blx 0x1aec                                        |         r0 = fcn_00001aec ();
    0x0000567a cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x0000567c blt 0x56d8                                        |             goto label_16;
                                                                 |         }
    0x0000567e mov r0, r8                                        |         r0 = r8;
    0x00005680 blx 0x19ec                                        |         safe_close ();
                                                                 | label_0:
    0x00005684 movs r3, 1                                        |         r3 = 1;
    0x00005686 mov r1, r5                                        |         r1 = r5;
    0x00005688 add r0, sp, 0x2c                                  |         r0 += var_2ch;
    0x0000568a strb r3, [r7]                                     |         *(r7) = r3;
    0x0000568c bl 0x3c5c                                         |         fcn_00003c5c (r0, r1);
    0x00005690 cmp r6, 0                                         |         
    0x00005692 bne 0x561a                                        |         
                                                                 |     } while (r6 != 0);
    0x00005694 b 0x56a8                                          |     goto label_2;
                                                                 | label_11:
    0x00005696 mov r0, r7                                        |     r0 = r7;
    0x00005698 mvn r4, 0xb                                       |     r4 = ~0xb;
    0x0000569c blx 0x1a50                                        |     fcn_00001a50 ();
                                                                 | label_8:
    0x000056a0 ldr r0, [sp, 0x30]                                |     r0 = var_30h;
    0x000056a2 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000056a4 bne.w 0x57dc                                      |         goto label_18;
                                                                 |     }
                                                                 | label_2:
    0x000056a8 ldr r1, [sp, 0x2c]                                |     r1 = var_2ch;
                                                                 |     if (r1 == 0) {
                                                                 | label_6:
    0x000056aa cbz r1, 0x56ba                                    |         goto label_12;
                                                                 |     }
    0x000056ac add r5, sp, 0x2c                                  |     r5 += var_2ch;
                                                                 |     do {
    0x000056ae mov r0, r5                                        |         r0 = r5;
    0x000056b0 bl 0x3c5c                                         |         fcn_00003c5c (r0, r1);
    0x000056b4 ldr r1, [sp, 0x2c]                                |         r1 = var_2ch;
    0x000056b6 cmp r1, 0                                         |         
    0x000056b8 bne 0x56ae                                        |         
                                                                 |     } while (r1 != 0);
                                                                 | label_12:
    0x000056ba ldr r2, [pc, 0x148]                               |     
    0x000056bc ldr r3, [pc, 0x12c]                               |     r3 = *(0x57ec);
    0x000056be add r2, pc                                        |     r2 = 0xaec8;
    0x000056c0 ldr r3, [r2, r3]                                  |     r3 = *(0xaec8);
    0x000056c2 ldr r2, [r3]                                      |     r2 = *(0xaec8);
    0x000056c4 ldr r3, [sp, 0x44]                                |     r3 = var_44h;
    0x000056c6 eors r2, r3                                       |     r2 ^= r3;
    0x000056c8 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x000056cc bne.w 0x57e4                                      |         goto label_19;
                                                                 |     }
    0x000056d0 mov r0, r4                                        |     r0 = r4;
    0x000056d2 add sp, 0x4c                                      |     
    0x000056d4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_16:
    0x000056d8 blx 0x1dec                                        |     r0 = fcn_00001dec ();
    0x000056dc ldr r3, [r0]                                      |     r3 = *(r0);
    0x000056de mov r0, r8                                        |     r0 = r8;
    0x000056e0 rsb.w sl, r3, 0                                   |     sl = r3 - ;
    0x000056e4 blx 0x19ec                                        |     safe_close ();
    0x000056e8 cmp.w sl, 0                                       |     
                                                                 |     if (sl >= 0) {
    0x000056ec bge 0x5684                                        |         goto label_0;
                                                                 |     }
    0x000056ee blx 0x1968                                        |     log_get_max_level ();
    0x000056f2 ldr r3, [sp, 0x1c]                                |     r3 = var_1ch_3;
    0x000056f4 and r3, r3, 7                                     |     r3 &= 7;
    0x000056f8 cmp r0, r3                                        |     
                                                                 |     if (r0 >= r3) {
    0x000056fa bge 0x5790                                        |         goto label_20;
                                                                 |     }
                                                                 | label_5:
    0x000056fc adds r4, 1                                        |     r4++;
    0x000056fe cmp r6, 0                                         |     
                                                                 |     if (r6 != 0) {
    0x00005700 bne 0x561a                                        |         goto label_1;
                                                                 |     }
    0x00005702 b 0x56a8                                          |     goto label_2;
                                                                 | label_13:
    0x00005704 lsr.w r3, sl, 0xc                                 |     r3 = sl >> 0xc;
    0x00005708 uxtb.w r2, sl                                     |     r2 = (int8_t) sl;
    0x0000570c orr.w r3, r3, r8, lsl 20                          |     r3 |= (r8 << 20);
    0x00005710 ubfx sl, sl, 8, 0xc                               |     sl = (sl >> 8) & ((1 << 0xc) - 1);
    0x00005714 and.w r8, r8, sb                                  |     r8 &= sb;
    0x00005716 lsrs r1, r1, 0x20                                 |     r1 >>= 0x20;
    0x00005718 bic r3, r3, 0xff                                  |     r3 = BIT_MASK (r3, 0xff);
    0x0000571c movs r1, 0                                        |     r1 = 0;
    0x0000571e orrs r3, r2                                       |     r3 |= r2;
    0x00005720 ldr r2, [pc, 0xe4]                                |     
    0x00005722 str r3, [sp, 0x10]                                |     var_10h = r3;
    0x00005724 orr.w r3, sl, r8                                  |     r3 = sl | r8;
    0x00005728 str r3, [sp, 0xc]                                 |     var_ch_2 = r3;
    0x0000572a movs r0, 6                                        |     r0 = 6;
    0x0000572c ldr r3, [r5]                                      |     r3 = *(r5);
    0x0000572e add r2, pc                                        |     r2 = 0xaf3a;
    0x00005730 adds r2, 7                                        |     r2 += 7;
    0x00005732 str r3, [sp, 8]                                   |     var_8h_2 = r3;
    0x00005734 ldr r3, [pc, 0xd4]                                |     
    0x00005736 add r3, pc                                        |     r3 = 0xaf46;
    0x00005738 str r3, [sp, 4]                                   |     var_4h_2 = r3;
    0x0000573a ldr r3, [pc, 0xd4]                                |     
    0x0000573c add r3, pc                                        |     r3 = 0xaf52;
    0x0000573e str r3, [sp]                                      |     *(sp) = r3;
    0x00005740 mov.w r3, 0x2e8                                   |     r3 = 0x2e8;
    0x00005744 blx 0x1cb4                                        |     fcn_00001cb4 ();
    0x00005748 ldrd sl, r8, [r5, 0x10]                           |     __asm ("ldrd sl, r8, [r5, 0x10]");
    0x0000574c b 0x5642                                          |     goto label_3;
                                                                 | label_17:
    0x0000574e blx 0x1968                                        |     r0 = log_get_max_level ();
    0x00005752 cmp r0, 6                                         |     
                                                                 |     if (r0 <= 6) {
    0x00005754 ble 0x566e                                        |         goto label_4;
                                                                 |     }
    0x00005756 blx 0x1dec                                        |     fcn_00001dec ();
    0x0000575a ldr r3, [r5]                                      |     r3 = *(r5);
    0x0000575c ldr r1, [r0]                                      |     r1 = *(r0);
    0x0000575e movs r0, 7                                        |     r0 = 7;
    0x00005760 ldr r2, [sp, 0x24]                                |     r2 = var_24h_3;
    0x00005762 str r3, [sp, 8]                                   |     var_8h_2 = r3;
    0x00005764 ldr r3, [pc, 0xac]                                |     
    0x00005766 add r3, pc                                        |     r3 = 0xaf7e;
    0x00005768 str r3, [sp, 4]                                   |     var_4h_2 = r3;
    0x0000576a ldr r3, [pc, 0xac]                                |     
    0x0000576c add r3, pc                                        |     r3 = 0xaf8a;
    0x0000576e str r3, [sp]                                      |     *(sp) = r3;
    0x00005770 movw r3, 0x1f5                                    |     r3 = 0x1f5;
    0x00005774 blx 0x1cb4                                        |     fcn_00001cb4 ();
    0x00005778 b 0x566e                                          |     goto label_4;
                                                                 | label_7:
    0x0000577a ldr r1, [pc, 0xa0]                                |     
    0x0000577c movw r2, 0x34a                                    |     r2 = 0x34a;
    0x00005780 ldr r3, [pc, 0x9c]                                |     
    0x00005782 ldr r0, [pc, 0xa0]                                |     
    0x00005784 add r1, pc                                        |     r1 = 0xafa6;
    0x00005786 add r3, pc                                        |     r3 = 0xafaa;
    0x00005788 adds r1, 7                                        |     r1 += 7;
    0x0000578a add r0, pc                                        |     r0 = 0xafb4;
    0x0000578c blx 0x1b88                                        |     fcn_00001b88 ();
                                                                 | label_20:
    0x00005790 ldr r3, [r5]                                      |     r3 = *(r5);
    0x00005792 mov r1, sl                                        |     r1 = sl;
    0x00005794 ldrd r0, r2, [sp, 0x1c]                           |     __asm ("ldrd r0, r2, [var_1ch_3]");
    0x00005798 str r3, [sp, 8]                                   |     var_8h_2 = r3;
    0x0000579a ldr r3, [pc, 0x8c]                                |     
    0x0000579c add r3, pc                                        |     r3 = 0xafca;
    0x0000579e str r3, [sp, 4]                                   |     var_4h_2 = r3;
    0x000057a0 ldr r3, [pc, 0x88]                                |     
    0x000057a2 add r3, pc                                        |     r3 = 0xafd2;
    0x000057a4 str r3, [sp]                                      |     *(sp) = r3;
    0x000057a6 movw r3, 0x2eb                                    |     r3 = 0x2eb;
    0x000057aa blx 0x1cb4                                        |     fcn_00001cb4 ();
    0x000057ae b 0x56fc                                          |     goto label_5;
                                                                 | label_14:
    0x000057b0 ldr r1, [pc, 0x7c]                                |     
    0x000057b2 movw r2, 0x1ed                                    |     r2 = 0x1ed;
    0x000057b6 ldr r3, [pc, 0x7c]                                |     
    0x000057b8 ldr r0, [pc, 0x7c]                                |     
    0x000057ba add r1, pc                                        |     r1 = 0xafee;
    0x000057bc add r3, pc                                        |     r3 = 0xaff6;
    0x000057be adds r1, 7                                        |     r1 += 7;
    0x000057c0 add r0, pc                                        |     r0 = 0xaffc;
    0x000057c2 blx 0x1b88                                        |     fcn_00001b88 ();
                                                                 | label_15:
    0x000057c6 ldr r1, [pc, 0x74]                                |     
    0x000057c8 mov.w r2, 0x1ee                                   |     r2 = 0x1ee;
    0x000057cc ldr r3, [pc, 0x70]                                |     
    0x000057ce ldr r0, [pc, 0x74]                                |     
    0x000057d0 add r1, pc                                        |     r1 = 0xb012;
    0x000057d2 add r3, pc                                        |     r3 = 0xb016;
    0x000057d4 adds r1, 7                                        |     r1 += 7;
    0x000057d6 add r0, pc                                        |     r0 = 0xb020;
    0x000057d8 blx 0x1b88                                        |     fcn_00001b88 ();
                                                                 | label_18:
    0x000057dc blx 0x19b0                                        |     sd_device_enumerator_unref ();
    0x000057e0 ldr r1, [sp, 0x2c]                                |     r1 = var_2ch;
    0x000057e2 b 0x56aa                                          |     goto label_6;
                                                                 | label_19:
    0x000057e4 blx 0x1c9c                                        |     r0 = fcn_00001c9c ();
    0x000057e8 cmp r0, 0xe6                                      |     
    0x000057ea movs r1, r0                                       |     r1 = r0;
    0x000057ec lsls r4, r6, 7                                    |     r4 = r6 << 7;
    0x000057ee movs r0, r0                                       |     
    0x000057f0 asrs r0, r7, 0x10                                 |     r0 = r7 >> 0x10;
    0x000057f2 movs r0, r0                                       |     
    0x000057f4 asrs r4, r6, 0x1b                                 |     r4 = r6 >> 0x1b;
    0x000057f6 movs r0, r0                                       |     
    0x000057f8 lsrs r6, r5, 0x1d                                 |     r6 = r5 >> 0x1d;
    0x000057fa movs r0, r0                                       |     
    0x000057fc lsrs r0, r2, 0x1c                                 |     r0 = r2 >> 0x1c;
    0x000057fe movs r0, r0                                       |     
    0x00005800 lsrs r0, r1, 0x1c                                 |     r0 = r1 >> 0x1c;
    0x00005802 movs r0, r0                                       |     
    0x00005804 movs r7, 0x3a                                     |     r7 = 0x3a;
    0x00005806 movs r1, r0                                       |     r1 = r0;
    0x00005808 lsrs r6, r5, 0x17                                 |     r6 = r5 >> 0x17;
    0x0000580a movs r0, r0                                       |     
    0x0000580c asrs r6, r3, 0x14                                 |     r6 = r3 >> 0x14;
    0x0000580e movs r0, r0                                       |     
    0x00005810 asrs r0, r7, 0x1b                                 |     r0 = r7 >> 0x1b;
    0x00005812 movs r0, r0                                       |     
    0x00005814 asrs r6, r0, 0x14                                 |     r6 = r0 >> 0x14;
    0x00005816 movs r0, r0                                       |     
    0x00005818 asrs r0, r7, 0x19                                 |     r0 = r7 >> 0x19;
    0x0000581a movs r0, r0                                       |     
    0x0000581c lsrs r0, r3, 0x16                                 |     r0 = r3 >> 0x16;
    0x0000581e movs r0, r0                                       |     
    0x00005820 asrs r2, r0, 0x19                                 |     r2 = r0 >> 0x19;
    0x00005822 movs r0, r0                                       |     
    0x00005824 asrs r6, r6, 6                                    |     r6 >>= 6;
    0x00005826 movs r0, r0                                       |     
    0x00005828 asrs r0, r0, 0x14                                 |     r0 >>= 0x14;
    0x0000582a movs r0, r0                                       |     
    0x0000582c asrs r2, r2, 0x1a                                 |     r2 >>= 0x1a;
    0x0000582e movs r0, r0                                       |     
    0x00005830 lsrs r2, r4, 0x15                                 |     r2 = r4 >> 0x15;
    0x00005832 movs r0, r0                                       |     
    0x00005834 asrs r4, r3, 0x14                                 |     r4 = r3 >> 0x14;
    0x00005836 movs r0, r0                                       |     
    0x00005838 lsrs r0, r4, 0x16                                 |     r0 = r4 >> 0x16;
    0x0000583a movs r0, r0                                       |     
    0x0000583c lsrs r4, r1, 0x15                                 |     r4 = r1 >> 0x15;
    0x0000583e movs r0, r0                                       |     
    0x00005840 asrs r6, r0, 0x14                                 |     r6 = r0 >> 0x14;
    0x00005842 movs r0, r0                                       |     
    0x00005844 lsrs r2, r4, 0x16                                 |     r2 = r4 >> 0x16;
    0x00005846 movs r0, r0                                       |     
                                                                 |     /* [14] -r-x section size 8 named .fini */
    0x00005848 ands r0, r1                                       |     r0 &= r1;
    0x0000584a invalid                                           |     
                                                                 | }

[*] Function system used 6 times systemd-shutdown