[*] Binary protection state of scsi_id

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


[*] Function sprintf tear down of scsi_id

    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/udev/scsi_id @ 0x2f20 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00002f20 ()                                      | void fcn_00002f20 (int16_t arg_180h, int16_t arg_1a0h, int16_t arg_1b0h, int16_t arg_1d8h, int16_t arg_1e0h, int16_t arg_280h, int16_t arg_290h, int16_t arg_2b0h, int16_t arg_2c0h, int16_t arg_2d0h, int16_t arg_320h, int16_t arg_348h, int16_t arg_398h, int16_t arg_3b0h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_138h;
                                                                 |     int16_t var_4h_2;
                                                                 |     int16_t var_8h_2;
                                                                 |     int16_t var_ch_2;
                                                                 |     int16_t var_10h_2;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_24h;
                                                                 |     int32_t var_24h_2;
                                                                 |     int16_t var_2ch;
                                                                 |     int16_t var_30h;
                                                                 |     int16_t var_34h;
                                                                 |     int16_t var_38h;
                                                                 |     int16_t var_3ch;
                                                                 |     int16_t var_40h;
                                                                 |     int16_t var_44h;
                                                                 |     int16_t var_48h;
                                                                 |     int32_t var_48h_2;
                                                                 |     int16_t var_50h;
                                                                 |     int16_t var_54h;
                                                                 |     int32_t var_58h;
                                                                 |     int32_t var_58h_2;
                                                                 |     int16_t var_60h;
                                                                 |     int16_t var_64h;
                                                                 |     int16_t var_68h;
                                                                 |     int16_t var_78h;
                                                                 |     int16_t var_88h;
                                                                 |     int16_t var_8ch;
                                                                 |     int16_t var_94h;
                                                                 |     int16_t var_98h;
                                                                 |     int32_t var_18h_2;
                                                                 |     int16_t var_a8h;
                                                                 |     int16_t var_b4h;
                                                                 |     int8_t var_2eh;
                                                                 |     int8_t var_2fh;
                                                                 |     int16_t var_b8h;
                                                                 |     int32_t var_32h;
                                                                 |     int16_t var_cch;
                                                                 |     int16_t var_d8h;
                                                                 |     int32_t var_6ch;
                                                                 |     int32_t var_70h;
                                                                 |     int32_t var_70h_2;
                                                                 |     int32_t var_84h;
                                                                 |     int16_t var_12ch;
                                                                 |     int16_t var_12dh;
                                                                 |     int16_t var_12eh;
                                                                 |     int16_t var_12fh;
                                                                 |     int16_t var_130h;
                                                                 |     int16_t var_134h;
                                                                 |     int16_t var_154h;
                                                                 |     int16_t var_178h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x00002f20 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00002f24 sub sp, 0x15c                                     |     
    0x00002f26 str r2, [sp, 0x2c]                                |     var_2ch = r2;
    0x00002f28 mov r6, r0                                        |     r6 = r0;
    0x00002f2a mov r0, r2                                        |     r0 = r2;
    0x00002f2c mov r7, r1                                        |     r7 = r1;
    0x00002f2e ldr r2, [pc, 0x318]                               |     
    0x00002f30 mov r1, r3                                        |     r1 = r3;
    0x00002f32 str r3, [sp, 0x30]                                |     var_30h = r3;
    0x00002f34 mov.w fp, 3                                       |     
    0x00002f38 ldr r3, [pc, 0x310]                               |     r3 = *(0x324c);
    0x00002f3a add.w sl, sp, 0x12c                               |     sl += var_12ch;
    0x00002f3e add r2, pc                                        |     r2 = 0x618c;
    0x00002f40 ldr.w r8, [sp, 0x180]                             |     r8 = *(arg_180h);
    0x00002f44 add.w sb, sp, 0x134                               |     sb += var_134h;
    0x00002f48 ldr r3, [r2, r3]                                  |     
    0x00002f4a ldr r3, [r3]                                      |     r3 = *(0x618c);
    0x00002f4c str r3, [sp, 0x154]                               |     var_154h = r3;
    0x00002f4e mov.w r3, 0                                       |     r3 = 0;
    0x00002f52 ldr r3, [pc, 0x2fc]                               |     
    0x00002f54 strb.w r0, [sp, 0x12d]                            |     var_12dh = r0;
    0x00002f58 strb.w r1, [sp, 0x12e]                            |     var_12eh = r1;
    0x00002f5c add r3, pc                                        |     r3 = 0x61b2;
    0x00002f5e adds r3, 7                                        |     r3 += 7;
    0x00002f60 str r3, [sp, 0x34]                                |     var_34h = r3;
    0x00002f62 ldr r3, [pc, 0x2f0]                               |     
    0x00002f64 add r3, pc                                        |     r3 = 0x61be;
    0x00002f66 adds r3, 7                                        |     r3 += 7;
    0x00002f68 str r3, [sp, 0x40]                                |     var_40h = r3;
    0x00002f6a ldr r3, [pc, 0x2ec]                               |     
    0x00002f6c add r3, pc                                        |     r3 = 0x61ca;
    0x00002f6e str r3, [sp, 0x38]                                |     var_38h = r3;
    0x00002f70 ldr r3, [pc, 0x2e8]                               |     
    0x00002f72 add r3, pc                                        |     r3 = 0x61d2;
    0x00002f74 str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x00002f76 movs r3, 0x12                                     |     r3 = 0x12;
    0x00002f78 strb.w r3, [sp, 0x12c]                            |     var_12ch = r3;
    0x00002f7c movs r3, 0                                        |     r3 = 0;
    0x00002f7e strb.w r3, [sp, 0x12f]                            |     var_12fh = r3;
    0x00002f82 movs r3, 0xfe                                     |     r3 = 0xfe;
    0x00002f84 strh.w r3, [sp, 0x130]                            |     var_130h = r3;
                                                                 |     do {
    0x00002f88 ldr.w r3, [r6, 0x264]                             |         r3 = *((r6 + 0x264));
    0x00002f8c cmp r3, 4                                         |         
                                                                 |         if (r3 == 4) {
    0x00002f8e beq.w 0x30d2                                      |             goto label_11;
                                                                 |         }
                                                                 | label_1:
    0x00002f92 movs r2, 0x38                                     |         r2 = 0x38;
    0x00002f94 movs r1, 0                                        |         r1 = 0;
    0x00002f96 add r0, sp, 0x50                                  |         r0 += var_50h;
    0x00002f98 blx 0x1b40                                        |         fsetlocking ();
    0x00002f9c add r3, sp, 0x48                                  |         r3 += var_48h;
    0x00002f9e mvn r2, 2                                         |         r2 = ~2;
    0x00002fa2 mov r4, r3                                        |         r4 = r3;
    0x00002fa4 movs r3, 0x53                                     |         r3 = 0x53;
    0x00002fa6 strd r3, r2, [sp, 0x48]                           |         __asm ("strd r3, r2, [var_48h]");
    0x00002faa movw r2, 0x2006                                   |         r2 = 0x2006;
    0x00002fae strh.w r2, [sp, 0x50]                             |         var_50h = r2;
    0x00002fb2 movs r2, 0xfe                                     |         r2 = 0xfe;
    0x00002fb4 str r2, [sp, 0x54]                                |         var_54h = r2;
    0x00002fb6 movw r2, 0x1388                                   |         r2 = 0x1388;
    0x00002fb8 adds r2, 0x88                                     |         r2 += 0x88;
    0x00002fba strd r8, sl, [sp, 0x58]                           |         __asm ("strd r8, sl, [var_58h]");
    0x00002fbe str.w sb, [sp, 0x60]                              |         __asm ("str.w sb, [var_60h]");
    0x00002fc2 str r2, [sp, 0x64]                                |         var_64h = r2;
                                                                 | label_2:
    0x00002fc4 mov r2, r4                                        |         r2 = r4;
    0x00002fc6 movw r1, 0x2285                                   |         r1 = 0x2285;
    0x00002fca mov r0, r7                                        |         r0 = r7;
    0x00002fcc blx 0x19e0                                        |         r0 = fcn_000019e0 ();
    0x00002fd0 subs r5, r0, 0                                    |         r5 = r0 - 0;
                                                                 |         if (r5 < r0) {
    0x00002fd2 blt 0x307c                                        |             goto label_12;
                                                                 |         }
    0x00002fd4 ldr.w r3, [r6, 0x264]                             |         r3 = *((r6 + 0x264));
    0x00002fd8 cmp r3, 4                                         |         
                                                                 |         if (r3 == 4) {
    0x00002fda beq.w 0x311c                                      |             goto label_13;
                                                                 |         }
    0x00002fde ldrb.w r5, [r4, 0x2c]                             |         r5 = var_b4h;
    0x00002fe2 ldrb.w r3, [r4, 0x2f]                             |         r3 = var_2fh;
    0x00002fe6 ldrh r1, [r4, 0x30]                               |         r1 = var_b8h;
    0x00002fe8 ldrh r2, [r4, 0x32]                               |         r2 = var_32h;
    0x00002fea mov r0, r5                                        |         r0 = r5;
    0x00002fec str r3, [sp]                                      |         *(sp) = r3;
    0x00002fee ldr r3, [r4, 0x18]                                |         r3 = var_18h_2;
    0x00002ff0 strd r1, r2, [sp, 0x24]                           |         __asm ("strd r1, r2, [var_24h]");
    0x00002ff4 bl 0x2e84                                         |         r0 = fcn_00002e84 (r0, r1, r2, r3, r4);
    0x00002ff8 cmp r0, 4                                         |         
                                                                 |         if (r0 == 4) {
    0x00002ffa beq 0x30fc                                        |             goto label_3;
                                                                 |         }
    0x00002ffc cmp r0, 5                                         |         
                                                                 |         if (r0 == 5) {
    0x00002ffe beq.w 0x3176                                      |             goto label_14;
                                                                 |         }
    0x00003000 strh r2, [r7, 4]                                  |         *((r7 + 4)) = r2;
    0x00003002 ldrd r1, r2, [sp, 0x24]                           |         __asm ("ldrd r1, r2, [var_24h]");
    0x00003006 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00003008 beq 0x30fc                                        |             goto label_3;
                                                                 |         }
    0x0000300a strd r1, r2, [sp, 0x24]                           |         __asm ("strd r1, r2, [var_24h]");
    0x0000300e bl 0x7630                                         |         fcn_00007630 ();
    0x00003012 ldrd r1, r2, [sp, 0x24]                           |         __asm ("ldrd r1, r2, [var_24h]");
    0x00003016 cmp r5, 0                                         |         
                                                                 |         if (r5 == 0) {
    0x00003018 beq.w 0x3180                                      |             goto label_15;
                                                                 |         }
    0x0000301c cmp r0, 6                                         |         
                                                                 |         if (r0 > 6) {
    0x0000301e bgt.w 0x319a                                      |             goto label_16;
                                                                 |         }
    0x00003020 strh r4, [r7, 4]                                  |         *((r7 + 4)) = r4;
                                                                 | label_7:
    0x00003022 cmp r5, 2                                         |         
                                                                 |         if (r5 != 2) {
    0x00003024 bne 0x3044                                        |             goto label_4;
                                                                 |         }
    0x00003026 ldrb.w r2, [r4, 0x2f]                             |         r2 = var_2fh;
    0x0000302a mov r0, r6                                        |         r0 = r6;
    0x0000302c ldr r1, [r4, 0x18]                                |         r1 = var_18h_2;
    0x0000302e bl 0x2af0                                         |         r0 = fcn_00002af0 (r0, r1, r2);
    0x00003032 mov r5, r0                                        |         r5 = r0;
                                                                 | label_5:
    0x00003034 cmp r5, 0                                         |         
                                                                 |         if (r5 == 0) {
    0x00003036 beq 0x30fc                                        |             goto label_3;
                                                                 |         }
                                                                 |         if (r5 <= 0) {
    0x00003038 ble 0x3048                                        |             goto label_9;
                                                                 |         }
    0x0000303a add.w fp, fp, -1                                  |         
    0x0000303e cmp.w fp, 0                                       |         
    0x00003042 bgt 0x2f88                                        |         
                                                                 |     } while (fp > 0);
                                                                 | label_4:
    0x00003044 mov.w r5, -1                                      |     r5 = -1;
                                                                 |     do {
                                                                 | label_9:
    0x00003048 bl 0x7630                                         |         r0 = fcn_00007630 ();
    0x0000304c cmp r0, 6                                         |         
                                                                 |         if (r0 <= 6) {
    0x0000304e ble 0x30fe                                        |             goto label_6;
                                                                 |         }
    0x00003050 ldr r3, [sp, 0x30]                                |         r3 = var_30h;
    0x00003052 adds r6, 0x1f                                     |         r6 += 0x1f;
    0x00003054 ldr r2, [pc, 0x208]                               |         
    0x00003056 ldr r0, [pc, 0x20c]                               |         
    0x00003058 ldr r1, [pc, 0x20c]                               |         
    0x0000305a str r3, [sp, 0x10]                                |         var_10h_2 = r3;
    0x0000305c add r2, pc                                        |         r2 = 0x62c0;
    0x0000305e ldr r3, [sp, 0x2c]                                |         r3 = var_2ch;
    0x00003060 add r0, pc                                        |         r0 = 0x62ca;
    0x00003062 add r1, pc                                        |         r1 = 0x62ce;
    0x00003064 adds r2, 7                                        |         r2 += 7;
    0x00003066 strd r1, r0, [sp]                                 |         __asm ("strd r1, r0, [sp]");
    0x0000306a movs r1, 0                                        |         r1 = 0;
    0x0000306c strd r6, r3, [sp, 8]                              |         __asm ("strd r6, r3, [var_8h_2]");
    0x00003070 movs r0, 7                                        |         r0 = 7;
    0x00003072 movw r3, 0x161                                    |         r3 = 0x161;
    0x00003076 bl 0x7e80                                         |         fcn_00007e80 (r0, r1, r2, r3, r4);
    0x0000307a b 0x30fe                                          |         goto label_6;
                                                                 | label_12:
    0x0000307c blx 0x1b04                                        |         r0 = sprintf_chk ()
    0x00003080 ldr r4, [r0]                                      |         r4 = *(r0);
    0x00003082 sub.w r3, r4, 0x16                                |         r3 = r4 - 0x16;
    0x00003086 bics r3, r3, 0x10                                 |         __asm ("bics r3, r3, 0x10");
                                                                 |         if (r0 == 7) {
    0x0000308a beq 0x30ba                                        |             goto label_17;
                                                                 |         }
                                                                 | label_0:
    0x0000308c bl 0x7630                                         |         r0 = fcn_00007630 ();
    0x00003090 cmp r0, 6                                         |         
                                                                 |         if (r0 <= 6) {
    0x00003092 ble 0x30fe                                        |             goto label_6;
                                                                 |         }
    0x00003094 ldr r3, [pc, 0x1d4]                               |         
    0x00003096 mov r1, r4                                        |         r1 = r4;
    0x00003098 ldr r2, [pc, 0x1d4]                               |         
    0x0000309a movs r0, 7                                        |         r0 = 7;
    0x0000309c add r3, pc                                        |         r3 = 0x630c;
    0x0000309e str r3, [sp, 4]                                   |         var_4h_2 = r3;
    0x000030a0 add r2, pc                                        |         r2 = 0x6314;
    0x000030a2 ldr r3, [pc, 0x1d0]                               |         
    0x000030a4 adds r2, 7                                        |         r2 += 7;
    0x000030a6 add r3, pc                                        |         r3 = 0x6320;
    0x000030a8 str r3, [sp]                                      |         *(sp) = r3;
    0x000030aa add.w r3, r6, 0x1f                                |         r3 = r6 + 0x1f;
    0x000030ae str r3, [sp, 8]                                   |         var_8h_2 = r3;
    0x000030b0 mov.w r3, 0x13e                                   |         r3 = 0x13e;
    0x000030b4 bl 0x7e80                                         |         fcn_00007e80 (r0, r1, r2, r3, r4);
    0x000030b8 b 0x3048                                          |         
                                                                 |     } while (1);
                                                                 | label_17:
    0x000030ba ldr.w r3, [r6, 0x264]                             |     r3 = *((r6 + 0x264));
    0x000030be cmp r3, 4                                         |     
                                                                 |     if (r3 != 4) {
    0x000030c0 bne 0x308c                                        |         goto label_0;
                                                                 |     }
    0x000030c2 movs r3, 3                                        |     r3 = 3;
    0x000030c4 str.w r3, [r6, 0x264]                             |     __asm ("str.w r3, [r6, 0x264]");
    0x000030c8 ldr.w r3, [r6, 0x264]                             |     r3 = *((r6 + 0x264));
    0x000030cc cmp r3, 4                                         |     
                                                                 |     if (r3 != 4) {
    0x000030ce bne.w 0x2f92                                      |         goto label_1;
                                                                 |     }
                                                                 | label_11:
    0x000030d2 movs r2, 0x9c                                     |     r2 = 0x9c;
    0x000030d4 movs r1, 0                                        |     r1 = 0;
    0x000030d6 add r0, sp, 0x8c                                  |     r0 += var_8ch;
    0x000030d8 add r4, sp, 0x88                                  |     r4 += var_88h;
    0x000030da blx 0x1b40                                        |     fsetlocking ();
    0x000030de movs r3, 0x51                                     |     r3 = 0x51;
    0x000030e0 str.w sl, [sp, 0x98]                              |     __asm ("str.w sl, [var_98h]");
    0x000030e4 str r3, [sp, 0x88]                                |     var_88h = r3;
    0x000030e6 movs r3, 6                                        |     r3 = 6;
    0x000030e8 str r3, [sp, 0x94]                                |     var_94h = r3;
    0x000030ea movs r3, 0x20                                     |     r3 = 0x20;
    0x000030ec str r3, [sp, 0xb4]                                |     var_b4h = r3;
    0x000030ee movs r3, 0xfe                                     |     r3 = 0xfe;
    0x000030f0 str.w sb, [sp, 0xb8]                              |     __asm ("str.w sb, [var_b8h]");
    0x000030f4 str.w r8, [sp, 0xd8]                              |     __asm ("str.w r8, [var_d8h]");
    0x000030f8 str r3, [sp, 0xcc]                                |     var_cch = r3;
    0x000030fa b 0x2fc4                                          |     goto label_2;
                                                                 |     do {
                                                                 | label_3:
    0x000030fc movs r5, 0xfe                                     |         r5 = 0xfe;
                                                                 | label_6:
    0x000030fe ldr r2, [pc, 0x178]                               |         
    0x00003100 ldr r3, [pc, 0x148]                               |         r3 = *(0x324c);
    0x00003102 add r2, pc                                        |         r2 = 0x6380;
    0x00003104 ldr r3, [r2, r3]                                  |         r3 = *(0x6380);
    0x00003106 ldr r2, [r3]                                      |         r2 = *(0x6380);
    0x00003108 ldr r3, [sp, 0x154]                               |         r3 = var_154h;
    0x0000310a eors r2, r3                                       |         r2 ^= r3;
    0x0000310c mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00003110 bne.w 0x3242                                      |             goto label_18;
                                                                 |         }
    0x00003114 mov r0, r5                                        |         r0 = r5;
    0x00003116 add sp, 0x15c                                     |         
    0x00003118 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_13:
    0x0000311c ldrd r1, r5, [r4, 0x70]                           |         __asm ("ldrd r1, r5, [var_70h]");
    0x00003120 ldr.w r3, [r4, 0x84]                              |         r3 = var_84h;
    0x00003124 ldr r2, [r4, 0x6c]                                |         r2 = var_6ch;
    0x00003126 mov r0, r5                                        |         r0 = r5;
    0x00003128 str r3, [sp]                                      |         *(sp) = r3;
    0x0000312a ldr r3, [r4, 0x30]                                |         r3 = var_b8h;
    0x0000312c strd r1, r2, [sp, 0x24]                           |         __asm ("strd r1, r2, [var_24h]");
    0x0000312e asrs r1, r1, 8                                    |         r1 >>= 8;
    0x00003130 bl 0x2e84                                         |         fcn_00002e84 (r0, r1, r2, r3, r4);
    0x00003132 cdp2 p8, 0xa, c2, c8, c4, 0                       |         __asm ("cdp2 p8, 0xa, c2, c8, c4, 0");
    0x00003136 beq 0x30fc                                        |         
                                                                 |     } while (r2 == r3);
    0x00003138 cmp r0, 5                                         |     
                                                                 |     if (r0 == 5) {
    0x0000313a beq 0x3176                                        |         goto label_14;
                                                                 |     }
    0x0000313c ldrd r1, r2, [sp, 0x24]                           |     __asm ("ldrd r1, r2, [var_24h]");
    0x00003140 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003142 beq 0x30fc                                        |         goto label_3;
                                                                 |     }
    0x00003144 orr.w r3, r5, r1                                  |     r3 = r5 | r1;
    0x00003148 str r1, [sp, 0x44]                                |     var_44h = r1;
    0x0000314a orrs r3, r2                                       |     r3 |= r2;
    0x0000314c strd r3, r2, [sp, 0x24]                           |     __asm ("strd r3, r2, [var_24h]");
    0x00003150 bl 0x7630                                         |     fcn_00007630 ();
    0x00003152 invalid                                           |     
    0x00003156 adds r2, 9                                        |     r2 += 9;
    0x00003158 ldr r1, [sp, 0x44]                                |     r1 = var_44h;
                                                                 |     if (r3 == 0) {
    0x0000315a cbz r3, 0x31c6                                    |         goto label_19;
                                                                 |     }
    0x0000315c cmp r0, 6                                         |     
                                                                 |     if (r0 > 6) {
    0x0000315e bgt 0x31fc                                        |         goto label_20;
                                                                 |     }
                                                                 | label_10:
    0x00003160 cmp r5, 2                                         |     
                                                                 |     if (r5 != 2) {
    0x00003162 bne.w 0x3044                                      |         goto label_4;
                                                                 |     }
    0x00003166 ldr.w r2, [r4, 0x84]                              |     r2 = var_84h;
    0x0000316a mov r0, r6                                        |     r0 = r6;
    0x0000316c ldr r1, [r4, 0x30]                                |     r1 = var_b8h;
    0x0000316e bl 0x2af0                                         |     r0 = fcn_00002af0 (r0, r1, r2);
    0x00003172 mov r5, r0                                        |     r5 = r0;
    0x00003174 b 0x3034                                          |     goto label_5;
                                                                 | label_14:
    0x00003176 movs r3, 0                                        |     r3 = 0;
    0x00003178 movs r5, 0xfe                                     |     r5 = 0xfe;
    0x0000317a strb.w r3, [r8, 1]                                |     *((r8 + 1)) = r3;
    0x0000317e b 0x30fe                                          |     goto label_6;
                                                                 |     if (r1 == 0) {
                                                                 | label_15:
    0x00003180 cbnz r1, 0x3194                                   |         
    0x00003182 ldrb.w r3, [r4, 0x2e]                             |         r3 = var_2eh;
                                                                 |         if (r3 != 0) {
    0x00003186 cbnz r3, 0x3194                                   |             goto label_21;
                                                                 |         }
                                                                 |         if (r2 != 0) {
    0x00003188 cbnz r2, 0x3194                                   |             goto label_21;
                                                                 |         }
    0x0000318a cmp r0, 6                                         |         
                                                                 |         if (r0 > 6) {
    0x0000318c bgt 0x3226                                        |             goto label_22;
                                                                 |         }
                                                                 | label_8:
    0x0000318e mvn r5, 0x15                                      |         r5 = ~0x15;
    0x00003192 b 0x30fe                                          |         goto label_6;
                                                                 |     }
                                                                 | label_21:
    0x00003194 cmp r0, 6                                         |     
                                                                 |     if (r0 <= 6) {
    0x00003196 ble.w 0x3044                                      |         goto label_4;
                                                                 |     }
                                                                 | label_16:
    0x0000319a ldr r3, [sp, 0x38]                                |     r3 = var_38h;
    0x0000319c movs r0, 7                                        |     r0 = 7;
    0x0000319e strd r2, r1, [sp, 0xc]                            |     __asm ("strd r2, r1, [var_10h_2]");
    0x000031a2 movs r1, 0                                        |     r1 = 0;
    0x000031a4 str r5, [sp, 0x18]                                |     var_18h = r5;
    0x000031a6 str r3, [sp, 4]                                   |     var_4h_2 = r3;
    0x000031a8 ldr r3, [sp, 0x3c]                                |     r3 = var_3ch;
    0x000031aa ldr r2, [sp, 0x34]                                |     r2 = var_34h;
    0x000031ac str r3, [sp]                                      |     *(sp) = r3;
    0x000031ae ldrb.w r3, [r4, 0x2e]                             |     r3 = var_2eh;
    0x000031b2 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x000031b4 add.w r3, r6, 0x1f                                |     r3 = r6 + 0x1f;
    0x000031b8 str r3, [sp, 8]                                   |     var_8h_2 = r3;
    0x000031ba movs r3, 0xf2                                     |     r3 = 0xf2;
    0x000031bc bl 0x7e80                                         |     fcn_00007e80 (r0, r1, r2, r3, r4);
    0x000031c0 ldrb.w r5, [r4, 0x2c]                             |     r5 = var_b4h;
    0x000031c4 b 0x3022                                          |     goto label_7;
                                                                 | label_19:
    0x000031c6 cmp r0, 6                                         |     
                                                                 |     if (r0 <= 6) {
    0x000031c8 ble 0x318e                                        |         goto label_8;
                                                                 |     }
    0x000031ca ldr r3, [pc, 0xb0]                                |     
    0x000031cc ldr r2, [pc, 0xb0]                                |     
    0x000031ce add r3, pc                                        |     r3 = 0x6450;
    0x000031d0 str r3, [sp, 8]                                   |     var_8h_2 = r3;
    0x000031d2 add r2, pc                                        |     r2 = 0x6456;
    0x000031d4 ldr r3, [pc, 0xac]                                |     
    0x000031d6 adds r2, 7                                        |     r2 += 7;
    0x000031d8 add r3, pc                                        |     r3 = 0x6460;
    0x000031da str r3, [sp, 4]                                   |     var_4h_2 = r3;
    0x000031dc ldr r3, [pc, 0xa8]                                |     
    0x000031de add r3, pc                                        |     r3 = 0x646a;
    0x000031e0 str r3, [sp]                                      |     *(sp) = r3;
    0x000031e2 mov.w r3, 0x100                                   |     r3 = 0x100;
    0x000031e4 strb r0, [r0, 0xe]                                |     *((r0 + 0xe)) = r0;
                                                                 |     do {
    0x000031e6 movs r1, 0x16                                     |         r1 = 0x16;
    0x000031e8 movs r0, 7                                        |         r0 = 7;
    0x000031ea movt r1, 0x4000                                   |         r1 = (r1 & 0xFFFF) | 0x40000000;
    0x000031ee bl 0x7e80                                         |         fcn_00007e80 (r0, r1, r2, r3, r4);
    0x000031f0 cdp2 p14, 4, c1, c7, c5, 0                        |         __asm ("cdp2 p14, 4, c1, c7, c5, 0");
    0x000031f4 it ge                                             |         
                                                                 |         if (r0 < 7) {
    0x000031f6 mvnge r5, 0x55                                    |             r5 = ~0x55;
                                                                 |         }
    0x000031fa b 0x3048                                          |         goto label_9;
                                                                 | label_20:
    0x000031fc ldr r3, [pc, 0x8c]                                |         
    0x000031fe movs r0, 7                                        |         r0 = 7;
    0x00003200 strd r1, r5, [sp, 0x10]                           |         __asm ("strd r1, r5, [var_10h_2]");
    0x00003204 movs r1, 0                                        |         r1 = 0;
    0x00003206 str r2, [sp, 0xc]                                 |         var_ch_2 = r2;
    0x00003208 add r3, pc                                        |         r3 = 0x6498;
    0x0000320a ldr r2, [sp, 0x40]                                |         r2 = var_40h;
    0x0000320c str r3, [sp, 4]                                   |         var_4h_2 = r3;
    0x0000320e ldr r3, [pc, 0x80]                                |         
    0x00003210 add r3, pc                                        |         r3 = 0x64a6;
    0x00003212 str r3, [sp]                                      |         *(sp) = r3;
    0x00003214 add.w r3, r6, 0x1f                                |         r3 = r6 + 0x1f;
    0x00003216 lsls r7, r3, 0xc                                  |         r7 = r3 << 0xc;
    0x00003218 str r3, [sp, 8]                                   |         var_8h_2 = r3;
    0x0000321a mov.w r3, 0x104                                   |         r3 = 0x104;
    0x0000321e bl 0x7e80                                         |         fcn_00007e80 (r0, r1, r2, r3, r4);
    0x00003220 cdp2 p15, 2, c6, c15, c5, 3                       |         __asm ("cdp2 p15, 2, c6, c15, c5, 3");
    0x00003224 b 0x3160                                          |         goto label_10;
                                                                 | label_22:
    0x00003226 ldr r3, [pc, 0x6c]                                |         
    0x00003228 ldr r2, [pc, 0x6c]                                |         
    0x0000322a add r3, pc                                        |         r3 = 0x64c4;
    0x0000322c str r3, [sp, 8]                                   |         var_8h_2 = r3;
    0x0000322e add r2, pc                                        |         r2 = 0x64ca;
    0x00003230 ldr r3, [pc, 0x68]                                |         
    0x00003232 adds r2, 7                                        |         r2 += 7;
    0x00003234 add r3, pc                                        |         r3 = 0x64d4;
    0x00003236 str r3, [sp, 4]                                   |         var_4h_2 = r3;
    0x00003238 ldr r3, [pc, 0x64]                                |         
    0x0000323a add r3, pc                                        |         r3 = 0x64de;
    0x0000323c str r3, [sp]                                      |         *(sp) = r3;
    0x0000323e movs r3, 0xee                                     |         r3 = 0xee;
    0x00003240 b 0x31e6                                          |         
                                                                 |     } while (1);
                                                                 | label_18:
    0x00003242 blx 0x1954                                        |     parse_printf_format ();
    0x00003246 nop                                               |     
    0x00003248 cdp p0, 0xe, c0, c2, c1, 0                        |     __asm ("cdp p0, 0xe, c0, c2, c1, 0");
    0x0000324c lsls r0, r6, 6                                    |     r0 = r6 << 6;
    0x0000324e movs r0, r0                                       |     
    0x00003250 add r1, sp, 0x2b0                                 |     r1 += arg_2b0h;
    0x00003252 movs r0, r0                                       |     
    0x00003254 add r1, sp, 0x290                                 |     r1 += arg_290h;
    0x00003256 movs r0, r0                                       |     
    0x00003258 add r3, sp, 0x1e0                                 |     r3 += arg_1e0h;
    0x0000325a movs r0, r0                                       |     
    0x0000325c add r5, sp, 0x398                                 |     r5 += arg_398h;
    0x0000325e movs r0, r0                                       |     
    0x00003260 add r0, sp, 0x2b0                                 |     r0 += arg_2b0h;
    0x00003262 movs r0, r0                                       |     
    0x00003264 add r2, sp, 0x2c0                                 |     r2 += arg_2c0h;
    0x00003266 movs r0, r0                                       |     
    0x00003268 add r4, sp, 0x178                                 |     r4 += var_178h;
    0x0000326a movs r0, r0                                       |     
    0x0000326c add r1, sp, 0x3b0                                 |     r1 += arg_3b0h;
    0x0000326e movs r0, r0                                       |     
    0x00003270 add r0, sp, 0x1a0                                 |     r0 += arg_1a0h;
    0x00003272 movs r0, r0                                       |     
    0x00003274 add r4, sp, 0x68                                  |     r4 += var_68h;
    0x00003276 movs r0, r0                                       |     
    0x00003278 ldc p0, c0, [lr, -4]                              |     __asm ("ldc p0, c0, [lr, -4]");
    0x0000327c add r2, sp, 0x1d8                                 |     r2 += arg_1d8h;
    0x0000327e movs r0, r0                                       |     
    0x00003280 adr r7, 0xd8                                      |     r7 = 0xd8;
    0x00003282 movs r0, r0                                       |     
    0x00003284 add r0, sp, 0x320                                 |     r0 += arg_320h;
    0x00003286 movs r0, r0                                       |     
    0x00003288 add r2, sp, 0x348                                 |     r2 += arg_348h;
    0x0000328a movs r0, r0                                       |     
    0x0000328c add r0, sp, 0x2d0                                 |     r0 += arg_2d0h;
    0x0000328e movs r0, r0                                       |     
    0x00003290 add r2, sp, 0x280                                 |     r2 += arg_280h;
    0x00003292 movs r0, r0                                       |     
    0x00003294 add r2, sp, 0xa8                                  |     r2 += var_a8h;
    0x00003296 movs r0, r0                                       |     
    0x00003298 adr r6, 0x368                                     |     r6 = 0x368;
    0x0000329a movs r0, r0                                       |     
    0x0000329c add r0, sp, 0x1b0                                 |     r0 += arg_1b0h;
    0x0000329e movs r0, r0                                       |     
    0x000032a0 add r3, sp, 0x78                                  |     r3 += var_78h;
    0x000032a2 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/udev/scsi_id @ 0x36f8 */
                                                             | #include <stdint.h>
                                                             |  
                                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                             |  
    ; (fcn) fcn.000036f8 ()                                  | void fcn_000036f8 (int16_t arg1, int16_t arg2) {
                                                             |     int16_t var_0h;
                                                             |     int16_t var_4h;
                                                             |     int16_t var_8h;
                                                             |     int16_t var_10h;
                                                             |     char * str;
                                                             |     int16_t var_68h;
                                                             |     int16_t var_7ch;
                                                             |     int16_t var_84h;
                                                             |     int16_t var_9ch;
                                                             |     int16_t var_d0h;
                                                             |     int16_t var_13ch;
                                                             |     int16_t var_17ch;
                                                             |     int16_t var_190h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
    0x00003524 invalid                                       |     
    0x00003526 blx 0x1a10                                    |     fcn_00001a10 ();
    0x0000352a ldrb r3, [r7]                                 |     r3 = *(r7);
    0x0000352c cmp r3, 3                                     |     
                                                             |     if (r3 == 3) {
    0x0000352e beq.w 0x3698                                  |         goto label_3;
                                                             |     }
    0x00003532 movs r0, 0                                    |     r0 = 0;
    0x00003534 b 0x3540                                      |     
                                                             |     while (1) {
    0x00003540 ldr r2, [pc, 0x198]                           |         
    0x00003542 ldr r3, [pc, 0x180]                           |         r3 = *(0x36c6);
    0x00003544 add r2, pc                                    |         r2 = 0x6c24;
    0x00003546 ldr r3, [r2, r3]                              |         r3 = *(0x6c24);
    0x00003548 ldr r2, [r3]                                  |         r2 = *(0x6c24);
    0x0000354a ldr r3, [sp, 0x13c]                           |         r3 = var_13ch;
    0x0000354c eors r2, r3                                   |         r2 ^= r3;
    0x0000354e mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x00003552 bne.w 0x36ba                                  |             goto label_4;
                                                             |         }
    0x00003556 add sp, 0x144                                 |         
    0x00003558 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |         
                                                             | label_2:
    0x00003690 mov r0, r5                                    |         r0 = r5;
    0x00003692 blx 0x1920                                    |         fcn_00001920 ();
    0x00003696 b 0x3522                                      |         void (*0x3522)() ();
                                                             | label_3:
    0x00003698 mov r1, r5                                    |         r1 = r5;
    0x0000369a movs r2, 0x10                                 |         r2 = 0x10;
    0x0000369c ldr r0, [sp, 0x1c]                            |         r0 = str;
    0x0000369e blx 0x1b4c                                    |         strtoull (r0, r1, r2);
    0x000036a2 add.w r1, r4, 0x10                            |         r1 = r4 + 0x10;
    0x000036a6 movs r2, 0x10                                 |         r2 = 0x10;
    0x000036a8 add r1, sb                                    |         r1 += sb;
    0x000036aa mov r0, fp                                    |         r0 = fp;
    0x000036ac blx 0x1b4c                                    |         strtoull (r0, r1, r2);
    0x000036b0 movs r0, 0                                    |         r0 = 0;
    0x000036b2 b 0x3540                                      |         
                                                             |     }
                                                             | label_4:
    0x000036ba blx 0x1954                                    |     parse_printf_format ();
    0x000036be nop                                           |     
    0x000036c0 bics.w r0, sl, r1                             |     __asm ("bics.w r0, sl, r1");
    0x000036c4 lsls r0, r6, 6                                |     r0 = r6 << 6;
    0x000036c6 movs r0, r0                                   |     
    0x000036c8 adr r4, 0x320                                 |     r4 = 0x320;
    0x000036ca movs r0, r0                                   |     
    0x000036cc add r1, sp, 0xd0                              |     r1 += var_d0h;
    0x000036ce movs r0, r0                                   |     
    0x000036d0 add r1, sp, 0x68                              |     r1 += var_68h;
    0x000036d2 movs r0, r0                                   |     
    0x000036d4 adr r7, 0x10                                  |     r7 = 0x10;
    0x000036d6 movs r0, r0                                   |     
    0x000036d8 add r0, sp, 0x190                             |     r0 += var_190h;
    0x000036da movs r0, r0                                   |     
    0x000036dc invalid                                       |     
    0x000036f8 ldr r2, [pc, 0x150]                           |     
    0x000036fa ldr r3, [pc, 0x154]                           |     r3 = *(0x3852);
    0x000036fc push {r4, r5, r6, r7, lr}                     |     
    0x000036fe mov r5, r1                                    |     r5 = r1;
    0x00003700 add r2, pc                                    |     r2 = 0x6f50;
    0x00003702 mov.w r1, 0x800                               |     r1 = 0x800;
    0x00003706 sub sp, 0x184                                 |     
    0x00003708 mov r4, r0                                    |     r4 = r0;
    0x0000370a ldr r3, [r2, r3]                              |     
    0x0000370c movt r1, 8                                    |     r1 = (r1 & 0xFFFF) | 0x80000;
    0x00003710 mov r0, r5                                    |     r0 = r5;
    0x00003712 ldr r3, [r3]                                  |     r3 = *(0x6f50);
    0x00003714 str r3, [sp, 0x17c]                           |     var_17ch = r3;
    0x00003716 mov.w r3, 0                                   |     r3 = 0;
    0x0000371a blx 0x1a28                                    |     r0 = fcn_00001a28 ();
    0x0000371e subs r6, r0, 0                                |     r6 = r0 - 0;
                                                             |     if (r6 < r0) {
    0x00003720 blt 0x3814                                    |         goto label_5;
                                                             |     }
    0x00003722 add r7, sp, 0x10                              |     r7 += var_10h;
    0x00003724 mov r1, r7                                    |     r1 = r7;
    0x00003726 blx 0x1c6c                                    |     r0 = libc_current_sigrtmin ();
    0x0000372a cmp r0, 0                                     |     
                                                             |     if (r0 < 0) {
    0x0000372c blt 0x37e0                                    |         goto label_6;
                                                             |     }
    0x0000372e invalid                                       |     
    0x00003730 ldm r6!, {r3}                                 |     r3 = *(r6!);
    0x00003732 movs r2, 0x40                                 |     r2 = 0x40;
    0x00003734 ldr r3, [pc, 0x11c]                           |     
    0x00003736 movs r1, 1                                    |     r1 = 1;
    0x00003738 add r7, sp, 0x7c                              |     r7 += var_7ch;
    0x0000373a bic r5, lr, 0xff0                             |     r5 = BIT_MASK (lr, 0xff0);
    0x0000373e lsr.w r0, ip, 0xc                             |     r0 = ip >> 0xc;
    0x00003742 bic r5, r5, 0xf                               |     r5 = BIT_MASK (r5, 0xf);
    0x00003746 add r3, pc                                    |     r3 = 0x6f9e;
    0x00003748 orr.w r0, r0, lr, lsl 20                      |     r0 |= (lr << 20);
    0x0000374c uxtb.w lr, ip                                 |     lr = (int8_t) ip;
    0x00003750 bic r0, r0, 0xff                              |     r0 = BIT_MASK (r0, 0xff);
    0x00003754 ubfx ip, ip, 8, 0xc                           |     ip = (ip >> 8) & ((1 << 0xc) - 1);
    0x00003758 orr.w r0, r0, lr                              |     r0 |= lr;
    0x0000375c orr.w r5, r5, ip                              |     r5 |= ip;
    0x00003760 str r0, [sp, 4]                               |     var_4h = r0;
    0x00003762 add.w r0, r4, 0x1f                            |     r0 = r4 + 0x1f;
    0x00003766 str r5, [sp]                                  |     *(sp) = r5;
    0x00003768 blx 0x1b1c                                    |     bind (r0, r1, r2);
    0x0000376c movs r2, 0xfe                                 |     r2 = 0xfe;
    0x0000376e movs r1, 0                                    |     r1 = 0;
    0x00003770 mov r0, r7                                    |     r0 = r7;
    0x00003772 blx 0x1b40                                    |     fsetlocking ();
    0x00003776 movs r3, 0                                    |     r3 = 0;
    0x00003778 mov r1, r6                                    |     r1 = r6;
    0x0000377a mov r2, r3                                    |     r2 = r3;
    0x0000377c mov r0, r4                                    |     r0 = r4;
    0x0000377e str r7, [sp]                                  |     *(sp) = r7;
    0x00003780 bl 0x2f20                                     |     r0 = fcn_00002f20 (r0, r1, r2, r3, r4, r5, r6);
    0x00003784 subs r5, r0, 0                                |     r5 = r0 - 0;
                                                             |     if (r5 < r0) {
    0x00003786 blt 0x37c0                                    |         goto label_0;
                                                             |     }
    0x00003788 add r3, sp, 0x84                              |     r3 += var_84h;
    0x0000378a ldr r2, [sp, 0x9c]                            |     r2 = var_9ch;
    0x0000378c ldm r3!, {r0, r1}                             |     r0 = *(r3!);
                                                             |     r1 = *((r3! + 4));
    0x0000378e movs r5, 0                                    |     r5 = 0;
    0x00003790 strb r5, [r4, 8]                              |     *((r4 + 8)) = r5;
    0x00003792 str.w r2, [r4, 0x1a]                          |     __asm ("str.w r2, [r4, 0x1a]");
    0x00003796 mov ip, r3                                    |     
    0x00003798 ldrb.w r3, [sp, 0x7c]                         |     r3 = var_7ch;
    0x0000379c str r0, [r4]                                  |     *(r4) = r0;
    0x0000379e str r1, [r4, 4]                               |     *((r4 + 4)) = r1;
    0x000037a0 and r3, r3, 0x1f                              |     r3 &= 0x1f;
    0x000037a4 strb r5, [r4, 0x19]                           |     *((r4 + 0x19)) = r5;
    0x000037a6 str.w r3, [r4, 0x260]                         |     __asm ("str.w r3, [r4, 0x260]");
    0x000037aa ldm.w ip!, {r0, r1, r2, r3}                   |     r0 = *(ip!);
                                                             |     r1 = *((ip! + 4));
                                                             |     r2 = *((ip! + 8));
                                                             |     r3 = *((ip! + 12));
    0x000037ae strb r5, [r4, 0x1e]                           |     *((r4 + 0x1e)) = r5;
    0x000037b0 str.w r0, [r4, 9]                             |     __asm ("str.w r0, [r4, 9]");
    0x000037b4 str.w r1, [r4, 0xd]                           |     __asm ("str.w r1, [r4, 0xd]");
    0x000037b8 str.w r2, [r4, 0x11]                          |     __asm ("str.w r2, [r4, 0x11]");
    0x000037bc str.w r3, [r4, 0x15]                          |     __asm ("str.w r3, [r4, 0x15]");
                                                             |     do {
                                                             | label_0:
    0x000037c0 mov r0, r6                                    |         r0 = r6;
    0x000037c2 blx 0x1cc0                                    |         snprintf_chk ();
                                                             | label_1:
    0x000037c6 ldr r2, [pc, 0x90]                            |         
    0x000037c8 ldr r3, [pc, 0x84]                            |         r3 = *(0x3850);
    0x000037ca add r2, pc                                    |         r2 = 0x7028;
    0x000037cc ldr r3, [r2, r3]                              |         r3 = *(0x7028);
    0x000037ce ldr r2, [r3]                                  |         r2 = *(0x7028);
    0x000037d0 ldr r3, [sp, 0x17c]                           |         r3 = var_17ch;
    0x000037d2 eors r2, r3                                   |         r2 ^= r3;
    0x000037d4 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x000037d8 bne 0x3848                                    |             goto label_7;
                                                             |         }
    0x000037da mov r0, r5                                    |         r0 = r5;
    0x000037dc add sp, 0x184                                 |         
    0x000037de pop {r4, r5, r6, r7, pc}                      |         
                                                             | label_6:
    0x000037e0 bl 0x7630                                     |         r0 = fcn_00007630 ();
    0x000037e4 cmp r0, 6                                     |         
    0x000037e6 it le                                         |         
                                                             |         if (r0 > 6) {
    0x000037e8 movle r5, 2                                   |             r5 = 2;
                                                             |         }
    0x000037ea ble 0x37c0                                    |         
                                                             |     } while (r0 <= 6);
    0x000037ec blx 0x1b04                                    |     sprintf_chk ()
    0x000037f0 ldr r2, [pc, 0x68]                            |     
    0x000037f2 ldr r1, [r0]                                  |     r1 = *(r0);
    0x000037f4 ldr r3, [pc, 0x68]                            |     
    0x000037f6 ldr r0, [pc, 0x6c]                            |     
    0x000037f8 add r2, pc                                    |     r2 = 0x7058;
    0x000037fa str r5, [sp, 8]                               |     var_8h = r5;
    0x000037fc adds r2, 7                                    |     r2 += 7;
    0x000037fe add r3, pc                                    |     r3 = 0x7062;
    0x00003800 movs r5, 2                                    |     r5 = 2;
    0x00003802 add r0, pc                                    |     r0 = 0x706c;
    0x00003804 str r3, [sp, 4]                               |     var_4h = r3;
    0x00003806 str r0, [sp]                                  |     *(sp) = r0;
    0x00003808 movw r3, 0x2f5                                |     r3 = 0x2f5;
    0x0000380c movs r0, 7                                    |     r0 = 7;
    0x0000380e bl 0x7e80                                     |     fcn_00007e80 (r0, r1, r2, r3, r4);
    0x00003812 b 0x37c0                                      |     goto label_0;
                                                             | label_5:
    0x00003814 bl 0x7630                                     |     r0 = fcn_00007630 ();
    0x00003818 cmp r0, 6                                     |     
    0x0000381a it le                                         |     
                                                             |     if (r0 <= 6) {
    0x0000381c movle r5, 1                                   |         r5 = 1;
                                                             |         goto label_8;
                                                             |     }
                                                             |     if (r0 <= 6) {
                                                             | label_8:
    0x0000381e ble 0x37c6                                    |         goto label_1;
                                                             |     }
    0x00003820 blx 0x1b04                                    |     sprintf_chk ()
    0x00003824 ldr r4, [pc, 0x40]                            |     
    0x00003826 ldr r2, [pc, 0x44]                            |     
    0x00003828 ldr r3, [pc, 0x44]                            |     
    0x0000382a add r4, pc                                    |     r4 = 0x7096;
    0x0000382c ldr r1, [r0]                                  |     r1 = *(r0);
    0x0000382e add r2, pc                                    |     r2 = 0x70a0;
    0x00003830 str r5, [sp, 8]                               |     var_8h = r5;
    0x00003832 add r3, pc                                    |     r3 = 0x70a6;
    0x00003834 adds r2, 7                                    |     r2 += 7;
    0x00003836 str r3, [sp, 4]                               |     var_4h = r3;
    0x00003838 movs r0, 7                                    |     r0 = 7;
    0x0000383a mov.w r3, 0x2f0                               |     r3 = 0x2f0;
    0x0000383e str r4, [sp]                                  |     *(sp) = r4;
    0x00003840 movs r5, 1                                    |     r5 = 1;
    0x00003842 bl 0x7e80                                     |     fcn_00007e80 (r0, r1, r2, r3, r4);
    0x00003846 b 0x37c6                                      |     goto label_1;
                                                             | label_7:
    0x00003848 blx 0x1954                                    |     parse_printf_format ();
    0x0000384c b 0x3690                                      |     goto label_2;
                                                             | }


r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/udev/scsi_id @ 0x3874).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate 
the needed data for the issue.
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/udev/scsi_id @ 0x56d4 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.000056d4 ()              | void fcn_000056d4 (uint32_t arg1) {
                                         |     r0 = arg1;
    0x000056d4 cmp r0, 0                 |     
    0x000056d6 push {r3, lr}             |     
                                         |     if (r0 >= 0) {
    0x000056d8 blt 0x56f6                |         
    0x000056da blx 0x1cc0                |         r0 = snprintf_chk ();
    0x000056de cmp r0, 0                 |         
                                         |         if (r0 < 0) {
    0x000056e0 bge 0x56f2                |             
    0x000056e2 blx 0x1b04                |             r0 = sprintf_chk ()
    0x000056e6 ldr r0, [r0]              |             r0 = *(r0);
    0x000056e8 cmp r0, 4                 |             
    0x000056ea it ne                     |             
                                         |             if (r0 != 4) {
    0x000056ec rsbne r0, r0, 0           |                 __asm ("rsbne r0, r0, 0");
                                         |             }
                                         |             if (r0 == 4) {
    0x000056ee beq 0x56f2                |                 goto label_0;
                                         |             }
    0x000056f0 pop {r3, pc}              |             
                                         |         }
                                         | label_0:
    0x000056f2 movs r0, 0                |         r0 = 0;
    0x000056f4 pop {r3, pc}              |         
                                         |     }
    0x000056f6 ldr r1, [pc, 0x14]        |     
    0x000056f8 movs r2, 0x24             |     r2 = 0x24;
    0x000056fa ldr r3, [pc, 0x14]        |     
    0x000056fc ldr r0, [pc, 0x14]        |     
    0x000056fe add r1, pc                |     r1 = 0xae10;
    0x00005700 add r3, pc                |     r3 = 0xae16;
    0x00005702 adds r1, 7                |     r1 += 7;
    0x00005704 add r0, pc                |     r0 = 0xae1c;
    0x00005706 bl 0x7f50                 |     fcn_00007f50 (r0, r1, r2, r3);
    0x0000570a nop                       |     
    0x0000570c ldrh r6, [r7, 0x1c]       |     r6 = *((r7 + 0x1c));
    0x0000570e movs r0, r0               |     
    0x00005710 ldrh r0, [r2, 0x22]       |     r0 = *((r2 + 0x22));
    0x00005712 movs r0, r0               |     
    0x00005714 ldrh r4, [r2, 0x1e]       |     r4 = *((r2 + 0x1e));
    0x00005716 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/udev/scsi_id @ 0x5718 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.00005718 ()              | void fcn_00005718 (int16_t arg1) {
                                         |     r0 = arg1;
    0x00005718 push {r3, r4, r5, lr}     |     
    0x0000571a subs r4, r0, 0            |     r4 = r0 - 0;
                                         |     if (r4 < r0) {
    0x0000571c bge 0x5724                |         
    0x0000571e mov.w r0, -1              |         r0 = -1;
    0x00005722 pop {r3, r4, r5, pc}      |         
                                         |     }
    0x00005724 blx 0x1b04                |     r0 = sprintf_chk ()
    0x00005728 mov r5, r0                |     r5 = r0;
    0x0000572a mov r0, r4                |     r0 = r4;
    0x0000572c ldr r4, [r5]              |     r4 = *(r5);
    0x0000572e bl 0x56d4                 |     fcn_000056d4 (r0);
    0x00005732 adds r0, 9                |     r0 += 9;
                                         |     if (r0 != 9) {
    0x00005734 beq 0x5742                |         
    0x00005736 cmp r4, 0                 |         
    0x00005738 mov.w r0, -1              |         r0 = -1;
    0x0000573c it ge                     |         
                                         |         if (r4 < 0) {
    0x0000573e strge r4, [r5]            |             *(r5) = r4;
                                         |         }
    0x00005740 pop {r3, r4, r5, pc}      |         
                                         |     }
    0x00005742 ldr r1, [pc, 0x14]        |     
    0x00005744 movs r2, 0x4a             |     r2 = 0x4a;
    0x00005746 ldr r3, [pc, 0x14]        |     
    0x00005748 ldr r0, [pc, 0x14]        |     
    0x0000574a add r1, pc                |     r1 = 0xaea8;
    0x0000574c add r3, pc                |     r3 = 0xaeae;
    0x0000574e adds r1, 7                |     r1 += 7;
    0x00005750 add r0, pc                |     r0 = 0xaeb4;
    0x00005752 bl 0x7f50                 |     fcn_00007f50 (r0, r1, r2, r3);
    0x00005756 nop                       |     
    0x00005758 ldrh r2, [r6, 0x1a]       |     r2 = *((r6 + 0x1a));
    0x0000575a movs r0, r0               |     
    0x0000575c ldrh r0, [r7, 0x1e]       |     r0 = *((r7 + 0x1e));
    0x0000575e movs r0, r0               |     
    0x00005760 ldrh r0, [r2, 0x1c]       |     r0 = *((r2 + 0x1c));
    0x00005762 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/udev/scsi_id @ 0x5764 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.00005764 ()              | void fcn_00005764 (int16_t arg1) {
                                         |     r0 = arg1;
    0x00005764 push {r4, r5, r6, lr}     |     
                                         |     if (r0 != 0) {
    0x00005766 cbz r0, 0x5792            |         
    0x00005768 mov r4, r0                |         r4 = r0;
    0x0000576a movs r6, 0                |         r6 = 0;
    0x0000576c blx 0x1b04                |         r0 = sprintf_chk ()
    0x00005770 mov r5, r0                |         r5 = r0;
    0x00005772 mov r0, r4                |         r0 = r4;
    0x00005774 str r6, [r5]              |         *(r5) = r6;
    0x00005776 blx 0x1bd0                |         r0 = strnlen ();
                                         |         if (r0 != 0) {
    0x0000577a cbz r0, 0x5790            |             
    0x0000577c ldr r0, [r5]              |             r0 = *(r5);
    0x0000577e cmp r0, 4                 |             
    0x00005780 it eq                     |             
                                         |             if (r0 != 4) {
    0x00005782 moveq r0, r6              |                 r0 = r6;
                                         |             }
                                         |             if (r0 == 4) {
    0x00005784 beq 0x5790                |                 goto label_0;
                                         |             }
    0x00005786 cmp r0, r6                |             
    0x00005788 ite gt                    |             
                                         |             if (r0 > r6) {
    0x0000578a rsbgt r0, r0, 0           |                 __asm ("rsbgt r0, r0, 0");
                                         |             }
                                         |             if (r0 <= r6) {
    0x0000578c mvnle r0, 4               |                 r0 = ~4;
                                         |                 goto label_0;
                                         |             }
                                         |         }
                                         | label_0:
    0x00005790 pop {r4, r5, r6, pc}      |         
                                         |     }
    0x00005792 ldr r1, [pc, 0x14]        |     
    0x00005794 movs r2, 0x66             |     r2 = 0x66;
    0x00005796 ldr r3, [pc, 0x14]        |     
    0x00005798 ldr r0, [pc, 0x14]        |     
    0x0000579a add r1, pc                |     r1 = 0xaf48;
    0x0000579c add r3, pc                |     r3 = 0xaf4e;
    0x0000579e adds r1, 7                |     r1 += 7;
    0x000057a0 add r0, pc                |     r0 = 0xaf54;
    0x000057a2 bl 0x7f50                 |     fcn_00007f50 (r0, r1, r2, r3);
    0x000057a6 nop                       |     
    0x000057a8 ldrh r2, [r4, 0x18]       |     r2 = *((r4 + 0x18));
    0x000057aa movs r0, r0               |     
    0x000057ac ldrh r0, [r3, 0x1c]       |     r0 = *((r3 + 0x1c));
    0x000057ae movs r0, r0               |     
    0x000057b0 ldrh r4, [r3, 0x1a]       |     r4 = *((r3 + 0x1a));
    0x000057b2 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/udev/scsi_id @ 0x57b4 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.000057b4 ()              | uint32_t fcn_000057b4 (int16_t arg1) {
                                         |     r0 = arg1;
                                         |     if (r0 != 0) {
    0x000057b4 cbz r0, 0x57d8            |         
    0x000057b6 push {r3, r4, r5, lr}     |         
    0x000057b8 mov r4, r0                |         r4 = r0;
    0x000057ba blx 0x1b04                |         r0 = sprintf_chk ()
    0x000057be mov r5, r0                |         r5 = r0;
    0x000057c0 mov r0, r4                |         r0 = r4;
    0x000057c2 ldr r4, [r5]              |         r4 = *(r5);
    0x000057c4 bl 0x5764                 |         fcn_00005764 (r0);
    0x000057c8 adds r0, 9                |         r0 += 9;
                                         |         if (r0 == 9) {
    0x000057ca beq 0x57dc                |             goto label_0;
                                         |         }
    0x000057cc cmp r4, 0                 |         
    0x000057ce mov.w r0, 0               |         r0 = 0;
    0x000057d2 it ge                     |         
                                         |         if (r4 < 0) {
    0x000057d4 strge r4, [r5]            |             *(r5) = r4;
                                         |         }
    0x000057d6 pop {r3, r4, r5, pc}      |         
                                         |     }
    0x000057d8 movs r0, 0                |     r0 = 0;
    0x000057da bx lr                     |     return r0;
                                         | label_0:
    0x000057dc ldr r1, [pc, 0x10]        |     
    0x000057de movs r2, 0x7d             |     r2 = 0x7d;
    0x000057e0 ldr r3, [pc, 0x10]        |     
    0x000057e2 ldr r0, [pc, 0x14]        |     
    0x000057e4 add r1, pc                |     r1 = 0xafd8;
    0x000057e6 add r3, pc                |     r3 = 0xafde;
    0x000057e8 adds r1, 7                |     r1 += 7;
    0x000057ea add r0, pc                |     r0 = 0xafe8;
    0x000057ec bl 0x7f50                 |     fcn_00007f50 (r0, r1, r2, r3);
    0x000057f0 ldrh r0, [r3, 0x16]       |     r0 = *((r3 + 0x16));
    0x000057f2 movs r0, r0               |     
    0x000057f4 ldrh r2, [r0, 0x1a]       |     r2 = *((r0 + 0x1a));
    0x000057f6 movs r0, r0               |     
    0x000057f8 ldrh r6, [r2, 0x18]       |     r6 = *((r2 + 0x18));
    0x000057fa 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/udev/scsi_id @ 0x57fc */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.000057fc ()                      | void fcn_000057fc (int16_t arg1) {
                                                 |     r0 = arg1;
    0x000057fc push {r3, r4, r5, r6, r7, lr}     |     
    0x000057fe mov r4, r0                        |     r4 = r0;
    0x00005800 blx 0x1b04                        |     sprintf_chk ()
    0x00005804 cmp r4, 2                         |     
    0x00005806 mov r5, r0                        |     r5 = r0;
    0x00005808 ldr r7, [r0]                      |     r7 = *(r0);
    0x0000580a bls 0x5818                        |     
                                                 |     while (r0 < 0) {
                                                 | label_0:
    0x0000580c mov r6, r4                        |         r6 = r4;
    0x0000580e cmp r7, 0                         |         
    0x00005810 mov r0, r6                        |         r0 = r6;
    0x00005812 it ge                             |         
                                                 |         if (r7 < 0) {
    0x00005814 strge r7, [r5]                    |             *(r5) = r7;
                                                 |         }
    0x00005816 pop {r3, r4, r5, r6, r7, pc}      |         
    0x00005818 movs r2, 0                        |         r2 = 0;
    0x0000581a movs r1, 1                        |         r1 = 1;
    0x0000581c mov r0, r4                        |         r0 = r4;
    0x0000581e blx 0x1bf4                        |         r0 = setlocale (r0, r1);
    0x00005822 cmp r0, 0                         |         
    0x00005824 blt 0x580c                        |         
                                                 |     }
    0x00005826 ands r1, r0, 1                    |     r1 = r0 & 1;
    0x0000582a mov.w r2, 3                       |     r2 = 3;
    0x0000582e it ne                             |     
                                                 |     if (r1 != r0) {
    0x00005830 movwne r1, 0x406                  |         __asm ("movwne r1, 0x406");
                                                 |     }
    0x00005834 mov r0, r4                        |     r0 = r4;
    0x00005836 blx 0x1bf4                        |     r0 = setlocale (r0, r1);
    0x0000583a cmp r0, 0                         |     
    0x0000583c mov r6, r0                        |     r6 = r0;
                                                 |     if (r0 < 0) {
    0x0000583e blt 0x580c                        |         goto label_0;
                                                 |     }
    0x00005840 cmp r0, 2                         |     
                                                 |     if (r0 > 2) {
    0x00005842 ble 0x5854                        |         
    0x00005844 mov r0, r4                        |         r0 = r4;
    0x00005846 blx 0x1cc0                        |         snprintf_chk ();
    0x0000584a cmp r7, 0                         |         
    0x0000584c mov r0, r6                        |         r0 = r6;
    0x0000584e it ge                             |         
                                                 |         if (r7 < 0) {
    0x00005850 strge r7, [r5]                    |             *(r5) = r7;
                                                 |         }
    0x00005852 pop {r3, r4, r5, r6, r7, pc}      |         
                                                 |     }
    0x00005854 ldr r1, [pc, 0x14]                |     
    0x00005856 movw r2, 0x22b                    |     r2 = 0x22b;
    0x00005858 movs r2, 0x2b                     |     r2 = 0x2b;
    0x0000585a ldr r3, [pc, 0x14]                |     
    0x0000585c ldr r0, [pc, 0x14]                |     
    0x0000585e add r1, pc                        |     r1 = 0xb0ce;
    0x00005860 add r3, pc                        |     r3 = 0xb0d6;
    0x00005862 adds r1, 7                        |     r1 += 7;
    0x00005864 add r0, pc                        |     r0 = 0xb0dc;
    0x00005866 bl 0x7f50                         |     fcn_00007f50 (r0, r1, r2, r3);
    0x0000586a nop                               |     
    0x0000586c ldrh r6, [r3, 0x12]               |     r6 = *((r3 + 0x12));
    0x0000586e movs r0, r0                       |     
    0x00005870 ldrh r0, [r0, 0x18]               |     r0 = *((r0 + 0x18));
    0x00005872 movs r0, r0                       |     
    0x00005874 ldrh r0, [r7, 0x14]               |     r0 = *((r7 + 0x14));
    0x00005876 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/udev/scsi_id @ 0x5938 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.00005938 ()              | void fcn_00005938 (int16_t arg3) {
                                         |     r2 = arg3;
    0x00005938 push {r3, r4, r5, lr}     |     
                                         |     if (r2 != 0) {
    0x0000593a cbz r2, 0x5952            |         
    0x0000593c mov r4, r2                |         r4 = r2;
    0x0000593e blx 0x1c48                |         r0 = socket (r0, r1, r2);
    0x00005942 mov r5, r0                |         r5 = r0;
                                         |         if (r0 == 0) {
    0x00005944 cbz r0, 0x5966            |             goto label_0;
                                         |         }
    0x00005946 movs r1, 2                |         r1 = 2;
    0x00005948 blx 0x1b58                |         fgetc (r0);
    0x0000594c movs r0, 0                |         r0 = 0;
    0x0000594e str r5, [r4]              |         *(r4) = r5;
    0x00005950 pop {r3, r4, r5, pc}      |         
                                         |     }
    0x00005952 ldr r1, [pc, 0x1c]        |     
    0x00005954 movs r2, 0x2d             |     r2 = 0x2d;
    0x00005956 ldr r3, [pc, 0x1c]        |     
    0x00005958 ldr r0, [pc, 0x1c]        |     
    0x0000595a add r1, pc                |     r1 = 0xb2d0;
    0x0000595c add r3, pc                |     r3 = 0xb2d6;
    0x0000595e adds r1, 7                |     r1 += 7;
    0x00005960 add r0, pc                |     r0 = 0xb2dc;
    0x00005962 bl 0x7f50                 |     r0 = fcn_00007f50 (r0, r1, r2, r3);
                                         | label_0:
    0x00005966 blx 0x1b04                |     r0 = sprintf_chk ()
    0x0000596a ldr r0, [r0]              |     r0 = *(r0);
    0x0000596c rsbs r0, r0, 0            |     r0 -= ;
    0x0000596e pop {r3, r4, r5, pc}      |     
                                         | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/udev/scsi_id @ 0x597c */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.0000597c ()                                  | void fcn_0000597c (int16_t arg2, int16_t arg3, int16_t arg4) {
                                                             |     int16_t var_0h;
                                                             |     int16_t var_ch;
                                                             |     int16_t var_10h;
                                                             |     int16_t var_14h;
                                                             |     int16_t var_18h;
                                                             |     int16_t var_28h;
                                                             |     int16_t var_48h;
                                                             |     int32_t var_48h_2;
                                                             |     int16_t var_84h;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x0000597c svcmi 0xf0e92d                                |     __asm ("svcmi 0xf0e92d");
    0x00005980 sub sp, 0x8c                                  |     
    0x00005982 strd r3, r2, [sp, 0xc]                        |     __asm ("strd r3, r2, [var_10h]");
    0x00005986 mov r8, r1                                    |     r8 = r1;
    0x00005988 mov.w r1, 0x100                               |     r1 = 0x100;
    0x0000598c ldr r2, [pc, 0x1dc]                           |     
    0x0000598e movt r1, 8                                    |     r1 = (r1 & 0xFFFF) | 0x80000;
    0x00005992 ldr r3, [pc, 0x1dc]                           |     r3 = *(0x5b72);
    0x00005994 add r2, pc                                    |     r2 = 0xb504;
    0x00005996 ldr r3, [r2, r3]                              |     
    0x00005998 ldr r3, [r3]                                  |     r3 = *(0xb504);
    0x0000599a str r3, [sp, 0x84]                            |     var_84h = r3;
    0x0000599c mov.w r3, 0                                   |     r3 = 0;
    0x000059a0 blx 0x1a28                                    |     fcn_00001a28 ();
    0x000059a2 strex lr, r1, [r2, 0x10]                      |     __asm ("strex lr, r1, [r2, 0x10]");
                                                             |     if (? < ?) {
    0x000059a6 blt.w 0x5acc                                  |         goto label_6;
                                                             |     }
    0x000059aa movs r3, 1                                    |     
    0x000059ac movt r3, 0xffc0                               |     r3 = 0x-3fffff;
    0x000059b0 add r3, r8                                    |     r3 += r8;
    0x000059b2 cmn.w r3, 0x400000                            |     
                                                             |     if (r3 <= 0x400000) {
    0x000059b6 blo.w 0x5aee                                  |         goto label_7;
                                                             |     }
    0x000059ba movw sl, 0xfffe                               |     
    0x000059be mov r3, r8                                    |     r3 = r8;
    0x000059c0 movt sl, 0x3f                                 |     sl = 0x3ffffe;
    0x000059c4 mov.w sb, 3                                   |     sb = 3;
    0x000059c8 cmp r8, sl                                    |     
    0x000059ca str.w sl, [sp, 0x14]                          |     __asm ("str.w sl, [var_14h]");
    0x000059ce it hs                                         |     
                                                             |     if (r8 < sl) {
    0x000059d0 movhs r3, sl                                  |         r3 = sl;
                                                             |     }
    0x000059d2 add.w fp, sp, 0x18                            |     
    0x000059d4 lsrs r0, r3, 0xc                              |     r0 = r3 >> 0xc;
    0x000059d6 mov sl, r3                                    |     sl = r3;
                                                             | label_0:
    0x000059d8 mov r1, fp                                    |     r1 = fp;
    0x000059da mov r0, r4                                    |     r0 = r4;
    0x000059dc blx 0x1c6c                                    |     r0 = libc_current_sigrtmin ();
    0x000059e0 cmp r0, 0                                     |     
                                                             |     if (r0 < 0) {
    0x000059e2 blt 0x5acc                                    |         goto label_6;
                                                             |     }
    0x000059e4 ldr r3, [sp, 0x28]                            |     r3 = var_28h;
    0x000059e6 and r3, r3, 0xf000                            |     r3 &= 0xf000;
    0x000059ea cmp.w r3, 0x8000                              |     
                                                             |     if (r3 != 0x8000) {
    0x000059ee bne.w 0x5b04                                  |         goto label_8;
                                                             |     }
    0x000059f0 strh r1, [r1, 4]                              |     *((r1 + 4)) = r1;
    0x000059f2 ldrd r0, r3, [sp, 0x48]                       |     __asm ("ldrd r0, r3, [var_48h]");
    0x000059f6 cmp r0, 1                                     |     
    0x000059f8 sbcs r2, r3, 0                                |     __asm ("sbcs r2, r3, 0");
                                                             |     if (r0 < 1) {
    0x000059fc blt 0x5ab4                                    |         goto label_9;
                                                             |     }
    0x000059fe cmp.w sb, 1                                   |     
                                                             |     if (sb == 1) {
    0x00005a02 beq 0x5a7a                                    |         goto label_10;
                                                             |     }
    0x00005a04 cmp.w r0, -0x80000000                         |     
    0x00005a08 sbcs r3, r3, 0                                |     __asm ("sbcs r3, r3, 0");
                                                             |     if (r0 < -0x80000000) {
    0x00005a0c blt 0x5ada                                    |         goto label_11;
                                                             |     }
    0x00005a0e cmp.w r8, -1                                  |     
                                                             |     if (r8 == -1) {
    0x00005a12 beq 0x5ae6                                    |         goto label_12;
                                                             |     }
    0x00005a14 mov r0, r8                                    |     r0 = r8;
                                                             | label_3:
    0x00005a16 add.w sb, sb, -1                              |     sb += -1;
                                                             | label_1:
    0x00005a1a adds r0, 1                                    |     r0++;
    0x00005a1c blx 0x1a4c                                    |     r0 = fcn_00001a4c ();
    0x00005a20 mov r5, r0                                    |     r5 = r0;
    0x00005a22 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00005a24 beq.w 0x5b66                                  |         goto label_13;
                                                             |     }
    0x00005a28 blx 0x1b10                                    |     r0 = vasprintf_chk ()
    0x00005a2c subs r7, r0, 1                                |     r7 = r0 - 1;
    0x00005a2e cmp r7, sl                                    |     
    0x00005a30 it hs                                         |     
                                                             |     if (r7 < sl) {
    0x00005a32 movhs r7, sl                                  |         r7 = sl;
                                                             |     }
    0x00005a34 adds r6, r7, 1                                |     r6 = r7 + 1;
    0x00005a36 b 0x5a42                                      |     
                                                             |     while (r0 < 0) {
    0x00005a38 blx 0x1b04                                    |         r0 = sprintf_chk ()
    0x00005a3c ldr r0, [r0]                                  |         r0 = *(r0);
    0x00005a3e cmp r0, 4                                     |         
                                                             |         if (r0 != 4) {
    0x00005a40 bne 0x5a88                                    |             goto label_14;
                                                             |         }
    0x00005a42 mov r2, r6                                    |         r2 = r6;
    0x00005a44 mov r1, r5                                    |         r1 = r5;
    0x00005a46 mov r0, r4                                    |         r0 = r4;
    0x00005a48 blx 0x18b4                                    |         r0 = fcn_000018b4 ();
    0x00005a4c cmp r0, 0                                     |         
    0x00005a4e blt 0x5a38                                    |         
                                                             |     }
    0x00005a50 cmp r7, r0                                    |     
    0x00005a52 mov r6, r0                                    |     r6 = r0;
                                                             |     if (r7 >= r0) {
    0x00005a54 bhs 0x5b12                                    |         goto label_15;
                                                             |     }
    0x00005a56 cmp r8, r0                                    |     
                                                             |     if (r8 <= r0) {
    0x00005a58 blo 0x5b38                                    |         goto label_16;
                                                             |     }
    0x00005a5a cmp.w sb, 0                                   |     
                                                             |     if (sb == 0) {
    0x00005a5e beq 0x5b0c                                    |         goto label_17;
                                                             |     }
    0x00005a60 movs r3, 0                                    |     r3 = 0;
    0x00005a62 mov r0, r4                                    |     r0 = r4;
    0x00005a64 str r3, [sp]                                  |     *(sp) = r3;
    0x00005a66 movs r2, 0                                    |     r2 = 0;
    0x00005a68 movs r3, 0                                    |     r3 = 0;
    0x00005a6a blx 0x19ec                                    |     fcn_000019ec ();
    0x00005a6e cmp r1, 0                                     |     
                                                             |     if (r1 < 0) {
    0x00005a70 blt 0x5a82                                    |         goto label_18;
                                                             |     }
    0x00005a72 mov r0, r5                                    |     r0 = r5;
    0x00005a74 blx 0x18cc                                    |     fcn_000018cc ();
    0x00005a78 b 0x59d8                                      |     goto label_0;
                                                             |     do {
                                                             | label_10:
    0x00005a7a mov r0, sl                                    |         r0 = sl;
    0x00005a7c mov.w sb, 0                                   |         sb = 0;
    0x00005a80 b 0x5a1a                                      |         goto label_1;
                                                             | label_18:
    0x00005a82 blx 0x1b04                                    |         r0 = sprintf_chk ()
    0x00005a86 ldr r0, [r0]                                  |         r0 = *(r0);
                                                             | label_14:
    0x00005a88 rsb.w r8, r0, 0                               |         r8 = r0 - ;
                                                             | label_2:
    0x00005a8c mov r0, r4                                    |         r0 = r4;
    0x00005a8e bl 0x5718                                     |         fcn_00005718 (r0);
    0x00005a92 mov r0, r5                                    |         r0 = r5;
    0x00005a94 blx 0x18cc                                    |         fcn_000018cc ();
    0x00005a98 ldr r2, [pc, 0xd8]                            |         
    0x00005a9a ldr r3, [pc, 0xd4]                            |         r3 = *(0x5b72);
    0x00005a9c add r2, pc                                    |         r2 = 0xb614;
    0x00005a9e ldr r3, [r2, r3]                              |         r3 = *(0xb614);
    0x00005aa0 ldr r2, [r3]                                  |         r2 = *(0xb614);
    0x00005aa2 ldr r3, [sp, 0x84]                            |         r3 = var_84h;
    0x00005aa4 eors r2, r3                                   |         r2 ^= r3;
    0x00005aa6 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x00005aaa bne 0x5b62                                    |             goto label_19;
                                                             |         }
    0x00005aac mov r0, r8                                    |         r0 = r8;
    0x00005aae add sp, 0x8c                                  |         
    0x00005ab0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |         
                                                             | label_9:
    0x00005ab4 cmp.w sb, 1                                   |         
    0x00005ab8 beq 0x5a7a                                    |         
                                                             |     } while (sb == 1);
    0x00005aba bl 0x8d68                                     |     fcn_00008d68 (r0);
    0x00005abe subs r0, 1                                    |     r0--;
    0x00005ac0 mov.w sb, 1                                   |     sb = 1;
    0x00005ac4 cmp r0, sl                                    |     
    0x00005ac6 it hs                                         |     
                                                             |     if (r0 < sl) {
    0x00005ac8 movhs r0, sl                                  |         r0 = sl;
                                                             |     }
    0x00005aca b 0x5a1a                                      |     goto label_1;
                                                             | label_6:
    0x00005acc blx 0x1b04                                    |     r0 = sprintf_chk ()
    0x00005ad0 ldr r0, [r0]                                  |     r0 = *(r0);
    0x00005ad2 movs r5, 0                                    |     r5 = 0;
    0x00005ad4 rsb.w r8, r0, 0                               |     r8 = r0 - ;
    0x00005ad8 b 0x5a8c                                      |     goto label_2;
                                                             | label_11:
    0x00005ada ldr r3, [sp, 0x14]                            |     r3 = var_14h;
    0x00005adc cmp r0, r8                                    |     
    0x00005ade it hs                                         |     
                                                             |     if (r0 < r8) {
    0x00005ae0 movhs r0, r8                                  |         r0 = r8;
                                                             |     }
    0x00005ae2 cmp r0, r3                                    |     
                                                             |     if (r0 < r3) {
    0x00005ae4 bls 0x5a16                                    |         goto label_3;
                                                             |     }
                                                             | label_12:
    0x00005ae6 movs r5, 0                                    |     r5 = 0;
    0x00005ae8 mvn r8, 0x1a                                  |     r8 = ~0x1a;
    0x00005aec b 0x5a8c                                      |     goto label_2;
                                                             | label_7:
    0x00005aee ldr r1, [pc, 0x88]                            |     
    0x00005af0 mov.w r2, 0x192                               |     r2 = 0x192;
    0x00005af4 ldr r3, [pc, 0x84]                            |     
    0x00005af6 ldr r0, [pc, 0x88]                            |     
    0x00005af8 add r1, pc                                    |     r1 = 0xb676;
    0x00005afa add r3, pc                                    |     r3 = 0xb67a;
    0x00005afc adds r1, 7                                    |     r1 += 7;
    0x00005afe add r0, pc                                    |     r0 = 0xb684;
    0x00005b00 bl 0x7f50                                     |     fcn_00007f50 (r0, r1, r2, r3);
                                                             | label_8:
    0x00005b04 movs r5, 0                                    |     r5 = 0;
    0x00005b06 mvn r8, 8                                     |     r8 = ~8;
    0x00005b0a b 0x5a8c                                      |     goto label_2;
                                                             | label_17:
    0x00005b0c mvn r8, 0x1a                                  |     r8 = ~0x1a;
    0x00005b10 b 0x5a8c                                      |     goto label_2;
                                                             | label_15:
    0x00005b12 mov.w r8, 0                                   |     r8 = 0;
                                                             |     do {
    0x00005b16 ldr r3, [sp, 0x10]                            |         r3 = var_10h;
                                                             |         if (r3 != 0) {
    0x00005b18 cbz r3, 0x5b2c                                |             
    0x00005b1a ldr r3, [sp, 0xc]                             |             r3 = var_ch;
                                                             |             if (r3 == 0) {
    0x00005b1c cbz r3, 0x5b4e                                |                 goto label_20;
                                                             |             }
                                                             | label_5:
    0x00005b1e cmp r6, r7                                    |             
                                                             |             if (r6 <= r7) {
    0x00005b20 blo 0x5b40                                    |                 goto label_21;
                                                             |             }
                                                             | label_4:
    0x00005b22 ldr r3, [sp, 0x10]                            |             r3 = var_10h;
    0x00005b24 str r5, [r3]                                  |             *(r3) = r5;
    0x00005b26 movs r3, 0                                    |             r3 = 0;
    0x00005b28 strb r3, [r5, r6]                             |             *((r5 + r6)) = r3;
    0x00005b2a mov r5, r3                                    |             r5 = r3;
                                                             |         }
    0x00005b2c ldr r3, [sp, 0xc]                             |         r3 = var_ch;
                                                             |         if (r3 != 0) {
    0x00005b2e cbz r3, 0x5b32                                |             
    0x00005b30 str r6, [r3]                                  |             *(r3) = r6;
                                                             |         }
    0x00005b32 eor r8, r8, 1                                 |         r8 ^= 1;
    0x00005b36 b 0x5a8c                                      |         goto label_2;
                                                             | label_16:
    0x00005b38 mov r6, r7                                    |         r6 = r7;
    0x00005b3a mov.w r8, 1                                   |         r8 = 1;
    0x00005b3e b 0x5b16                                      |         
                                                             |     } while (1);
                                                             | label_21:
    0x00005b40 adds r1, r6, 1                                |     r1 = r6 + 1;
    0x00005b42 mov r0, r5                                    |     r0 = r5;
    0x00005b44 blx 0x1994                                    |     r0 = fcn_00001994 ();
                                                             |     if (r0 == 0) {
    0x00005b48 cbz r0, 0x5b66                                |         goto label_13;
                                                             |     }
    0x00005b4a mov r5, r0                                    |     r5 = r0;
    0x00005b4c b 0x5b22                                      |     goto label_4;
                                                             | label_20:
    0x00005b4e mov r2, r6                                    |     r2 = r6;
    0x00005b50 mov r1, r3                                    |     r1 = r3;
    0x00005b52 mov r0, r5                                    |     r0 = r5;
    0x00005b54 blx 0x1ba0                                    |     r0 = rand ();
    0x00005b58 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00005b5a beq 0x5b1e                                    |         goto label_5;
                                                             |     }
    0x00005b5c mvn r8, 0x49                                  |     r8 = ~0x49;
    0x00005b60 b 0x5a8c                                      |     goto label_2;
                                                             | label_19:
    0x00005b62 blx 0x1954                                    |     parse_printf_format ();
                                                             | label_13:
    0x00005b66 mvn r8, 0xb                                   |     r8 = ~0xb;
    0x00005b6a b 0x5a8c                                      |     goto label_2;
                                                             | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/udev/scsi_id @ 0x5d24 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.00005d24 ()                          | void fcn_00005d24 (int16_t arg_18h, uint32_t arg1, int16_t arg2, int16_t arg3, uint32_t arg4) {
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
                                                     |     r2 = arg3;
                                                     |     r3 = arg4;
    0x00005d24 cmp r3, 0                             |     
    0x00005d26 it eq                                 |     
                                                     |     if (r3 == 0) {
    0x00005d28 cmneq r0, 0x64                        |         __asm ("cmneq arg_18hx64");
                                                     |     }
    0x00005d2c push {r3, r4, r5, r6, r7, lr}         |     
    0x00005d2e mov r7, r1                            |     r7 = r1;
    0x00005d30 mov r6, r2                            |     r6 = r2;
                                                     |     if (r3 != 0) {
    0x00005d32 bne 0x5d48                            |         goto label_1;
                                                     |     }
    0x00005d34 mov r1, r2                            |     r1 = r2;
    0x00005d36 mov r0, r7                            |     r0 = r7;
    0x00005d38 blx 0x1c48                            |     r0 = socket (r0, r1, r2);
    0x00005d3c mov r3, r0                            |     r3 = r0;
                                                     |     if (r0 == 0) {
    0x00005d3e cbz r0, 0x5d78                        |         goto label_2;
                                                     |     }
                                                     | label_0:
    0x00005d40 ldr r2, [sp, 0x18]                    |     r2 = *(arg_18h);
    0x00005d42 movs r0, 0                            |     r0 = 0;
    0x00005d44 str r3, [r2]                          |     *(r2) = r3;
                                                     |     do {
    0x00005d46 pop {r3, r4, r5, r6, r7, pc}          |         
                                                     | label_1:
    0x00005d48 mov r4, r0                            |         r4 = r0;
    0x00005d4a mov r0, r2                            |         r0 = r2;
    0x00005d4c mov r5, r3                            |         r5 = r3;
    0x00005d4e bl 0x5878                             |         r0 = fcn_00005878 (r0);
    0x00005d52 cmp r0, 0                             |         
    0x00005d54 blt 0x5d46                            |         
                                                     |     } while (r0 < 0);
    0x00005d56 orr.w r2, r5, r0                      |     r2 = r5 | r0;
    0x00005d5a mov r1, r7                            |     r1 = r7;
    0x00005d5c mov r0, r4                            |     r0 = r4;
    0x00005d5e blx 0x18fc                            |     r0 = fcn_000018fc ();
    0x00005d62 subs r4, r0, 0                        |     r4 = r0 - 0;
                                                     |     if (r4 < r0) {
    0x00005d64 blt 0x5d78                            |         goto label_2;
                                                     |     }
    0x00005d66 mov r1, r6                            |     r1 = r6;
    0x00005d68 blx 0x181c                            |     r0 = fdopen ();
    0x00005d6c mov r3, r0                            |     r3 = r0;
    0x00005d6e cmp r0, 0                             |     
                                                     |     if (r0 != 0) {
    0x00005d70 bne 0x5d40                            |         goto label_0;
                                                     |     }
    0x00005d72 mov r0, r4                            |     r0 = r4;
    0x00005d74 bl 0x5718                             |     r0 = fcn_00005718 (r0);
                                                     | label_2:
    0x00005d78 blx 0x1b04                            |     r0 = sprintf_chk ()
    0x00005d7c ldr r0, [r0]                          |     r0 = *(r0);
    0x00005d7e rsbs r0, r0, 0                        |     r0 -= ;
    0x00005d80 pop {r3, r4, r5, r6, r7, pc}          |     
                                                     | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/udev/scsi_id @ 0x5d84 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.00005d84 ()                  | void fcn_00005d84 (int16_t arg1, int16_t arg2) {
                                             |     r0 = arg1;
                                             |     r1 = arg2;
                                             |     if (? >= ?) {
    0x00005d84 mvnlt fp, r0, ror r5          |         
                                             |     }
    0x00005d88 mov r5, r1                    |     r5 = r1;
    0x00005d8a mov r4, r0                    |     r4 = r0;
    0x00005d8c blx 0x1b04                    |     sprintf_chk ()
    0x00005d90 movs r3, 0                    |     r3 = 0;
    0x00005d92 mov r6, r0                    |     r6 = r0;
    0x00005d94 str r3, [r6]                  |     *(r6) = r3;
    0x00005d96 mov r0, r4                    |     r0 = r4;
    0x00005d98 blx 0x1b70                    |     r0 = prctl ();
    0x00005d9c adds r2, r0, 1                |     r2 = r0 + 1;
    0x00005d9e mov r3, r0                    |     r3 = r0;
                                             |     if (r2 == r0) {
    0x00005da0 beq 0x5daa                    |         goto label_1;
                                             |     }
    0x00005da2 movs r0, 1                    |     r0 = 1;
                                             |     if (r5 == 0) {
    0x00005da4 cbz r5, 0x5da8                |         goto label_0;
                                             |     }
    0x00005da6 strb r3, [r5]                 |     *(r5) = r3;
                                             |     do {
                                             | label_0:
    0x00005da8 pop {r4, r5, r6, pc}          |         
                                             | label_1:
    0x00005daa mov r0, r4                    |         r0 = r4;
    0x00005dac blx 0x18e4                    |         r0 = fcn_000018e4 ();
                                             |         if (r0 == 0) {
    0x00005db0 cbz r0, 0x5dd8                |             goto label_2;
                                             |         }
    0x00005db2 ldr r0, [r6]                  |         r0 = *(r6);
    0x00005db4 cmp r0, 0                     |         
    0x00005db6 it gt                         |         
                                             |         if (r0 > 0) {
    0x00005db8 rsbgt r0, r0, 0               |             __asm ("rsbgt r0, r0, 0");
                                             |         }
    0x00005dba bgt 0x5da8                    |         
                                             |     } while (r0 > 0);
    0x00005dbc mvn r0, 4                     |     r0 = ~4;
    0x00005dc0 pop {r4, r5, r6, pc}          |     
    0x00005dc2 ldr r1, [pc, 0x1c]            |     
    0x00005dc4 movw r2, 0x55d                |     r2 = 0x55d;
    0x00005dc8 ldr r3, [pc, 0x18]            |     
    0x00005dca ldr r0, [pc, 0x1c]            |     
    0x00005dcc add r1, pc                    |     r1 = 0xbbb2;
    0x00005dce add r3, pc                    |     r3 = 0xbbb6;
    0x00005dd0 adds r1, 7                    |     r1 += 7;
    0x00005dd2 add r0, pc                    |     r0 = 0xbbc0;
    0x00005dd4 bl 0x7f50                     |     fcn_00007f50 (r0, r1, r2, r3);
    0x00005dd6 invalid                       |     
                                             | label_2:
    0x00005dd8 cmp r5, 0                     |     
                                             |     if (r5 == 0) {
    0x00005dda beq 0x5da8                    |         goto label_0;
                                             |     }
    0x00005ddc strb r0, [r5]                 |     *(r5) = r0;
    0x00005dde pop {r4, r5, r6, pc}          |     
                                             | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/udev/scsi_id @ 0x607c */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.0000607c ()                          | void fcn_0000607c (int16_t arg1, uint32_t arg2, int16_t arg3, int16_t arg4) {
                                                     |     int16_t var_0h;
                                                     |     int16_t var_4h;
                                                     |     int16_t var_8h;
                                                     |     int16_t var_ch;
                                                     |     int16_t var_10h;
                                                     |     int32_t var_14h;
                                                     |     int32_t var_14h_2;
                                                     |     int16_t var_20h;
                                                     |     int32_t var_10h_2;
                                                     |     int16_t var_8ch;
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
                                                     |     r2 = arg3;
                                                     |     r3 = arg4;
    0x0000607c push.w {r4, r5, r6, r7, r8, lr}       |     
    0x00006080 mov r6, r2                            |     r6 = r2;
    0x00006082 ldr r2, [pc, 0xcc]                    |     
    0x00006084 mov r7, r3                            |     r7 = r3;
    0x00006086 sub sp, 0x90                          |     
    0x00006088 ldr r3, [pc, 0xc8]                    |     r3 = *(0x6154);
    0x0000608a add r2, pc                            |     r2 = 0xc1e0;
    0x0000608c ldr r3, [r2, r3]                      |     
    0x0000608e ldr r3, [r3]                          |     r3 = *(0xc1e0);
    0x00006090 str r3, [sp, 0x8c]                    |     var_8ch = r3;
    0x00006092 mov.w r3, 0                           |     r3 = 0;
                                                     |     if (r0 == 0) {
    0x00006096 cbz r0, 0x60b2                        |         goto label_2;
                                                     |     }
    0x00006098 mov r5, r0                            |     r5 = r0;
    0x0000609a cmp r1, 0                             |     
                                                     |     if (r1 == 0) {
    0x0000609c beq 0x6132                            |         goto label_3;
                                                     |     }
                                                     | label_1:
    0x0000609e ldr.w r8, [r1, 0x10]                  |     r8 = var_10h_2;
    0x000060a2 tst.w r8, 7                           |     
                                                     |     if ((r8 & 7) == 0) {
    0x000060a6 beq 0x60b2                            |         goto label_2;
                                                     |     }
    0x000060a8 bl 0x7630                             |     fcn_00007630 ();
                                                     |     if (r6 == 0) {
    0x000060ac cbz r6, 0x60ce                        |         goto label_4;
                                                     |     }
    0x000060ae cmp r0, 3                             |     
                                                     |     if (r0 > 3) {
    0x000060b0 bgt 0x60fc                            |         goto label_5;
                                                     |     }
                                                     |     do {
                                                     | label_2:
    0x000060b2 movs r0, 0                            |         r0 = 0;
                                                     | label_0:
    0x000060b4 ldr r2, [pc, 0xa0]                    |         
    0x000060b6 ldr r3, [pc, 0x9c]                    |         r3 = *(0x6156);
    0x000060b8 add r2, pc                            |         r2 = 0xc214;
    0x000060ba ldr r3, [r2, r3]                      |         r3 = *(0xc214);
    0x000060bc ldr r2, [r3]                          |         r2 = *(0xc214);
    0x000060be ldr r3, [sp, 0x8c]                    |         r3 = var_8ch;
    0x000060c0 eors r2, r3                           |         r2 ^= r3;
    0x000060c2 mov.w r3, 0                           |         r3 = 0;
                                                     |         if (r2 != r3) {
    0x000060c6 bne 0x614c                            |             goto label_6;
                                                     |         }
    0x000060c8 add sp, 0x90                          |         
    0x000060ca pop.w {r4, r5, r6, r7, r8, pc}        |         
                                                     | label_4:
    0x000060ce cmp r0, 3                             |         
    0x000060d0 ble 0x60b2                            |         
                                                     |     } while (r0 <= 3);
    0x000060d2 ldr r2, [pc, 0x88]                    |     
    0x000060d4 ubfx r3, r8, 0, 0xc                   |     r3 = (r8 >> 0) & ((1 << 0xc) - 1);
    0x000060d8 ldr r0, [pc, 0x84]                    |     
    0x000060da ldr r1, [pc, 0x88]                    |     
    0x000060dc add r2, pc                            |     r2 = 0xc23e;
    0x000060de strd r5, r3, [sp, 8]                  |     __asm ("strd r5, r3, [var_ch]");
    0x000060e2 add r0, pc                            |     r0 = 0xc246;
    0x000060e4 movw r3, 0x589                        |     r3 = 0x589;
    0x000060e8 add r1, pc                            |     r1 = 0xc252;
    0x000060ea adds r2, 7                            |     r2 += 7;
    0x000060ec strd r1, r0, [sp]                     |     __asm ("strd r1, r0, [sp]");
    0x000060f0 mov r1, r6                            |     r1 = r6;
    0x000060f2 movs r0, 4                            |     r0 = 4;
    0x000060f4 bl 0x7e80                             |     fcn_00007e80 (r0, r1, r2, r3, r4);
    0x000060f8 mov r0, r6                            |     r0 = r6;
    0x000060fa b 0x60b4                              |     goto label_0;
                                                     | label_5:
    0x000060fc ldr r3, [pc, 0x68]                    |     
    0x000060fe movs r4, 0                            |     r4 = 0;
    0x00006100 ldr r2, [pc, 0x68]                    |     
    0x00006102 mov r0, r6                            |     r0 = r6;
    0x00006104 ldr r1, [pc, 0x68]                    |     
    0x00006106 add r3, pc                            |     r3 = 0xc272;
    0x00006108 str r4, [sp]                          |     *(sp) = r4;
    0x0000610a add r2, pc                            |     r2 = 0xc27a;
    0x0000610c adds r3, 7                            |     r3 += 7;
    0x0000610e add r1, pc                            |     r1 = 0xc282;
    0x00006110 str r2, [sp, 0x10]                    |     var_10h = r2;
    0x00006112 str r1, [sp, 0xc]                     |     var_ch = r1;
    0x00006114 ubfx r2, r8, 0, 0xc                   |     r2 = (r8 >> 0) & ((1 << 0xc) - 1);
    0x00006116 lsls r3, r1, 8                        |     r3 = r1 << 8;
    0x00006118 movw r1, 0x585                        |     r1 = 0x585;
    0x0000611c str r3, [sp, 4]                       |     var_4h = r3;
    0x0000611e strd r5, r2, [sp, 0x14]               |     __asm ("strd r5, r2, [var_14h]");
    0x00006122 mov r3, r7                            |     r3 = r7;
    0x00006124 str r1, [sp, 8]                       |     var_8h = r1;
    0x00006126 mov r2, r5                            |     r2 = r5;
    0x00006128 movs r1, 4                            |     r1 = 4;
    0x0000612a bl 0x8b80                             |     fcn_00008b80 (r0, r1, r2, r3, r4, r5, r6);
    0x0000612e mov r0, r4                            |     r0 = r4;
    0x00006130 b 0x60b4                              |     goto label_0;
                                                     | label_3:
    0x00006132 add r4, sp, 0x20                      |     r4 += var_20h;
    0x00006134 mov r1, r4                            |     r1 = r4;
    0x00006136 blx 0x197c                            |     r0 = fcn_0000197c ();
    0x0000613a cmp r0, 0                             |     
    0x0000613c it ge                                 |     
                                                     |     if (r0 >= 0) {
    0x0000613e movge r1, r4                          |         r1 = r4;
                                                     |         goto label_7;
                                                     |     }
                                                     |     if (r0 >= 0) {
                                                     | label_7:
    0x00006140 bge 0x609e                            |         goto label_1;
                                                     |     }
    0x00006142 blx 0x1b04                            |     r0 = sprintf_chk ()
    0x00006146 ldr r0, [r0]                          |     r0 = *(r0);
    0x00006148 rsbs r0, r0, 0                        |     r0 -= ;
    0x0000614a b 0x60b4                              |     goto label_0;
                                                     | label_6:
    0x0000614c blx 0x1954                            |     parse_printf_format ();
    0x00006150 pop {r1, r2, r4, r7, pc}              |     
                                                     | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/udev/scsi_id @ 0x6174 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00006174 ()                                  | void fcn_00006174 (int16_t arg_b8h, int16_t arg_bch, int16_t arg_c0h, int16_t arg_c4h, uint32_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                             |     int16_t var_0h_2;
                                                             |     int16_t var_ch_2;
                                                             |     int16_t var_10h;
                                                             |     int16_t var_14h;
                                                             |     int16_t var_178h;
                                                             |     int16_t var_17ch;
                                                             |     int16_t var_30h;
                                                             |     int16_t var_50h;
                                                             |     int32_t var_50h_2;
                                                             |     int16_t var_8ch;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x00006174 svcmi 0xf0e92d                                |     __asm ("svcmi 0xf0e92d");
    0x00006178 mov r4, r2                                    |     r4 = r2;
    0x0000617a ldr r2, [pc, 0x3a0]                           |     
    0x0000617c mov r7, r3                                    |     r7 = r3;
    0x0000617e sub sp, 0x94                                  |     
    0x00006180 ldr r3, [pc, 0x39c]                           |     r3 = *(0x6520);
    0x00006182 add r2, pc                                    |     r2 = 0xc6a4;
    0x00006184 ldr.w sl, [sp, 0xb8]                          |     sl = *(arg_b8h);
    0x00006188 ldr r3, [r2, r3]                              |     
    0x0000618a ldr r3, [r3]                                  |     r3 = *(0xc6a4);
    0x0000618c str r3, [sp, 0x8c]                            |     var_8ch = r3;
    0x0000618e mov.w r3, 0                                   |     r3 = 0;
    0x00006192 ldr r3, [sp, 0xc0]                            |     r3 = *(arg_c0h);
    0x00006194 str r3, [sp, 0x10]                            |     var_10h = r3;
    0x00006196 ldr r3, [sp, 0xc4]                            |     r3 = *(arg_c4h);
    0x00006198 str r3, [sp, 0x14]                            |     var_14h = r3;
    0x0000619a cmp r0, 0                                     |     
                                                             |     if (arg_b8h == ) {
    0x0000619c beq.w 0x6370                                  |         goto label_13;
                                                             |     }
    0x000061a0 ldr r3, [sp, 0x10]                            |     r3 = var_10h;
    0x000061a2 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x000061a4 beq.w 0x6386                                  |         goto label_14;
                                                             |     }
    0x000061a8 ldr r3, [sp, 0xbc]                            |     r3 = *(arg_bch);
    0x000061aa mvns r3, r3                                   |     r3 = ~r3;
    0x000061ac tst.w r3, 6                                   |     
    0x000061ae lsrs r6, r0, 0x1c                             |     r6 = r0 >> 0x1c;
                                                             |     if (r6 == r0) {
    0x000061b0 beq.w 0x639c                                  |         goto label_15;
                                                             |     }
    0x000061b4 mov r8, r1                                    |     r8 = r1;
    0x000061b6 mvn r2, 0x80000000                            |     r2 = ~0x80000000;
    0x000061ba adds.w r1, r4, -0x80000000                    |     r1 = r4 + -0x80000000;
    0x000061be adc r3, r7, -1                                |     __asm ("adc r3, r7, -1");
    0x000061c2 cmp r1, r2                                    |     
    0x000061c4 sbcs r3, r3, -1                               |     __asm ("sbcs r3, r3, -1");
                                                             |     if (r1 <= r2) {
    0x000061c8 blo.w 0x64e6                                  |         goto label_16;
                                                             |     }
    0x000061cc cmp.w sl, -1                                  |     
    0x000061d0 mov r6, r0                                    |     r6 = r0;
    0x000061d2 ite ne                                        |     
                                                             |     if (sl == -1) {
    0x000061d4 movne r5, sl                                  |         r5 = sl;
                                                             |     }
                                                             |     if (sl != -1) {
    0x000061d6 moveq r5, 0x800                               |         r5 = 0x800;
                                                             |     }
    0x000061da blx 0x1b94                                    |     r0 = access (r0, r1);
    0x000061de cmp r0, 0                                     |     
                                                             |     if (r0 >= 0) {
    0x000061e0 bge.w 0x6300                                  |         goto label_17;
                                                             |     }
                                                             | label_2:
    0x000061e4 cmp.w r7, -1                                  |     
    0x000061e8 it eq                                         |     
                                                             |     if (r7 == -1) {
    0x000061ea cmpeq r4, -1                                  |         __asm ("cmpeq r4, -1");
                                                             |     }
                                                             |     if (r7 != -1) {
    0x000061ee bne 0x62c2                                    |         goto label_18;
                                                             |     }
                                                             | label_1:
    0x000061f0 ldr r3, [sp, 0xbc]                            |     r3 = *(arg_bch);
    0x000061f2 mov.w r8, 0                                   |     r8 = 0;
    0x000061f6 mov r7, r8                                    |     r7 = r8;
    0x000061f8 mov sb, r8                                    |     sb = r8;
    0x000061fa adds r1, r5, 1                                |     r1 = r5 + 1;
    0x000061fc and r3, r3, 1                                 |     r3 &= 1;
    0x00006200 str r3, [sp, 0xc]                             |     var_ch_2 = r3;
    0x00006202 ldr r3, [sp, 0xc]                             |     r3 = var_ch_2;
    0x00006204 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00006206 beq 0x62ae                                    |         goto label_19;
                                                             |     }
                                                             |     do {
    0x00006208 mov r0, r1                                    |         r0 = r1;
    0x0000620a blx 0x1a4c                                    |         r0 = fcn_00001a4c ();
    0x0000620e mov r4, r0                                    |         r4 = r0;
    0x00006210 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00006212 beq.w 0x650c                                  |             goto label_20;
                                                             |         }
    0x00006216 cmp.w sb, 0                                   |         
                                                             |         if (sb != 0) {
    0x0000621a beq 0x6238                                    |             
    0x0000621c cmp.w r8, 0                                   |             
                                                             |             if (r8 == 0) {
    0x00006220 beq.w 0x63c0                                  |                 goto label_21;
                                                             |             }
    0x00006224 mov r2, sb                                    |             r2 = sb;
    0x00006226 mov r1, r8                                    |             r1 = r8;
    0x00006228 blx 0x1920                                    |             fcn_00001920 ();
    0x0000622c mov r1, sb                                    |             r1 = sb;
    0x0000622e mov.w r2, -1                                  |             r2 = -1;
    0x00006230 adds r2, 0xff                                 |             r2 += 0xff;
    0x00006232 mov r0, r8                                    |             r0 = r8;
    0x00006234 blx 0x1c18                                    |             nl_langinfo (r0);
                                                             |         }
    0x00006238 mov r0, r8                                    |         r0 = r8;
    0x0000623a blx 0x18cc                                    |         fcn_000018cc ();
    0x0000623c invalid                                       |         
                                                             | label_0:
    0x0000623e cmp.w sl, -1                                  |         
                                                             |         if (sl == -1) {
    0x00006242 beq 0x633a                                    |             goto label_22;
                                                             |         }
                                                             | label_3:
    0x00006244 invalid                                       |         
    0x00006248 movs r0, r6                                   |         r0 = r6;
    0x0000624a lsrs r0, r0, 0x20                             |         r0 >>= 0x20;
    0x0000624c movs r3, 0                                    |         r3 = 0;
    0x0000624e str r3, [r0]                                  |         *(r0) = r3;
    0x00006250 mov sb, r0                                    |         sb = r0;
    0x00006252 mov r3, r6                                    |         r3 = r6;
    0x00006254 mov r2, r8                                    |         r2 = r8;
    0x00006256 movs r1, 1                                    |         r1 = 1;
    0x00006258 adds r0, r4, r7                               |         r0 = r4 + r7;
    0x0000625a blx 0x1a1c                                    |         r0 = fcn_00001a1c ();
    0x0000625e cmp r8, r0                                    |         
    0x00006260 mov fp, r0                                    |         
                                                             |         if (r8 <= r0) {
    0x00006262 blo 0x6344                                    |             goto label_23;
                                                             |         }
    0x00006264 add r7, r0                                    |         r7 += r0;
    0x00006266 mov r0, r6                                    |         r0 = r6;
    0x00006268 blx 0x18e4                                    |         r0 = fcn_000018e4 ();
    0x0000626c mov r8, r0                                    |         r8 = r0;
    0x0000626e cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x00006270 bne.w 0x649a                                  |             goto label_24;
                                                             |         }
    0x00006274 mov r0, r6                                    |         r0 = r6;
    0x00006276 blx 0x1aa4                                    |         r0 = strlen (r0);
    0x0000627a cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x0000627c bne.w 0x63d4                                  |             goto label_7;
                                                             |         }
    0x00006280 cmp.w sl, -1                                  |         
                                                             |         if (sl != -1) {
    0x00006284 bne.w 0x64ae                                  |             goto label_25;
                                                             |         }
    0x00006288 cmp.w fp, 0                                   |         
                                                             |         if (fp == 0) {
    0x0000628c beq 0x635a                                    |             goto label_26;
                                                             |         }
    0x0000628e mvn r3, 0xfc000000                            |         r3 = ~0xfc000000;
    0x00006292 cmp r5, r3                                    |         
                                                             |         if (r5 >= r3) {
    0x00006294 bhs.w 0x64c8                                  |             goto label_27;
                                                             |         }
    0x00006298 lsls r2, r5, 1                                |         r2 = r5 << 1;
    0x0000629a mov sb, r5                                    |         sb = r5;
    0x0000629c mov r8, r4                                    |         r8 = r4;
    0x0000629e cmp r2, r3                                    |         
    0x000062a0 it hs                                         |         
                                                             |         if (r2 < r3) {
    0x000062a2 movhs r2, r3                                  |             r2 = r3;
                                                             |         }
    0x000062a4 ldr r3, [sp, 0xc]                             |         r3 = var_ch_2;
    0x000062a6 mov r5, r2                                    |         r5 = r2;
    0x000062a8 adds r1, r5, 1                                |         r1 = r5 + 1;
    0x000062aa cmp r3, 0                                     |         
    0x000062ac bne 0x6208                                    |         
                                                             |     } while (r3 != 0);
                                                             | label_19:
    0x000062ae mov r0, r8                                    |     r0 = r8;
    0x000062b0 blx 0x1994                                    |     r0 = fcn_00001994 ();
    0x000062b4 mov r4, r0                                    |     r4 = r0;
    0x000062b6 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000062b8 bne 0x623e                                    |         goto label_0;
                                                             |     }
    0x000062ba mov r4, r8                                    |     r4 = r8;
    0x000062bc mvn r8, 0xb                                   |     r8 = ~0xb;
    0x000062c0 b 0x62dc                                      |     goto label_4;
                                                             | label_18:
    0x000062c2 mov r1, r4                                    |     r1 = r4;
    0x000062c4 movs r2, 0                                    |     r2 = 0;
    0x000062c6 mov r0, r6                                    |     r0 = r6;
    0x000062c8 blx 0x1c90                                    |     r0 = strncmp (r0, r1, r2);
    0x000062cc cmp r0, 0                                     |     
                                                             |     if (r0 >= 0) {
    0x000062ce bge 0x61f0                                    |         goto label_1;
                                                             |     }
    0x000062d0 blx 0x1b04                                    |     r0 = sprintf_chk ()
    0x000062d4 ldr r3, [r0]                                  |     r3 = *(r0);
    0x000062d6 movs r4, 0                                    |     r4 = 0;
    0x000062d8 rsb.w r8, r3, 0                               |     r8 = r3 - ;
                                                             | label_4:
    0x000062dc mov r0, r4                                    |     r0 = r4;
    0x000062de blx 0x18cc                                    |     fcn_000018cc ();
    0x000062e2 ldr r2, [pc, 0x240]                           |     
    0x000062e4 ldr r3, [pc, 0x238]                           |     r3 = *(0x6520);
    0x000062e6 add r2, pc                                    |     r2 = 0xc810;
    0x000062e8 ldr r3, [r2, r3]                              |     r3 = *(0xc810);
    0x000062ea ldr r2, [r3]                                  |     r2 = *(0xc810);
    0x000062ec ldr r3, [sp, 0x8c]                            |     r3 = var_8ch;
    0x000062ee eors r2, r3                                   |     r2 ^= r3;
    0x000062f0 mov.w r3, 0                                   |     r3 = 0;
                                                             |     if (r2 != r3) {
    0x000062f4 bne.w 0x6516                                  |         goto label_28;
                                                             |     }
    0x000062f8 mov r0, r8                                    |     r0 = r8;
    0x000062fa add sp, 0x94                                  |     
    0x000062fc pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |     
                                                             | label_17:
    0x00006300 add.w sb, sp, 0x20                            |     sb += var_17ch;
    0x00006304 mov r1, sb                                    |     r1 = sb;
    0x00006306 blx 0x1c6c                                    |     r0 = libc_current_sigrtmin ();
    0x0000630a cmp r0, 0                                     |     
                                                             |     if (r0 < 0) {
    0x0000630c blt 0x63b2                                    |         goto label_29;
                                                             |     }
    0x0000630e ldr r3, [sp, 0x30]                            |     r3 = var_30h;
    0x00006310 and r3, r3, 0xf000                            |     r3 &= 0xf000;
    0x00006314 cmp.w r3, 0x8000                              |     
    0x00006316 ldr r7, [pc, 0]                               |     r7 = *(0x00006318);
                                                             |     if (r3 != 0x8000) {
    0x00006318 bne.w 0x61e4                                  |         goto label_2;
                                                             |     }
    0x0000631c cmp.w sl, -1                                  |     
                                                             |     if (sl == -1) {
    0x00006320 beq.w 0x6432                                  |         goto label_30;
                                                             |     }
                                                             | label_5:
    0x00006324 ldr r3, [sp, 0xbc]                            |     r3 = *(arg_bch);
    0x00006326 lsls r3, r3, 0x1c                             |     r3 <<= 0x1c;
                                                             |     if (r3 >= r3) {
    0x00006328 bpl.w 0x61e4                                  |         goto label_2;
                                                             |     }
    0x0000632a add r7, sp, 0x170                             |     r7 = sp + 0x170;
    0x0000632c movs r3, 0                                    |     r3 = 0;
    0x0000632e mov r1, sb                                    |     r1 = sb;
    0x00006330 mov r0, r8                                    |     r0 = r8;
    0x00006332 mov r2, r3                                    |     r2 = r3;
    0x00006334 bl 0x607c                                     |     fcn_0000607c (r0, r1, r2, r3);
    0x00006338 b 0x61e4                                      |     goto label_2;
                                                             | label_22:
    0x0000633a mov r0, r4                                    |     r0 = r4;
    0x0000633c blx 0x1b10                                    |     r0 = vasprintf_chk ()
    0x00006340 subs r5, r0, 1                                |     r5 = r0 - 1;
    0x00006342 b 0x6244                                      |     goto label_3;
                                                             | label_23:
    0x00006344 ldr r1, [pc, 0x1e0]                           |     
    0x00006346 movw r2, 0x263                                |     r2 = 0x263;
    0x0000634a ldr r3, [pc, 0x1e0]                           |     
    0x0000634c ldr r0, [pc, 0x1e0]                           |     
    0x0000634e add r1, pc                                    |     r1 = 0xc87a;
    0x00006350 add r3, pc                                    |     r3 = 0xc882;
    0x00006352 adds r1, 7                                    |     r1 += 7;
    0x00006354 add r0, pc                                    |     r0 = 0xc888;
    0x00006356 bl 0x7f50                                     |     fcn_00007f50 (r0, r1, r2, r3);
                                                             | label_26:
    0x0000635a ldr r1, [pc, 0x1d8]                           |     
    0x0000635c movw r2, 0x272                                |     r2 = 0x272;
    0x00006360 ldr r3, [pc, 0x1d4]                           |     
    0x00006362 ldr r0, [pc, 0x1d8]                           |     
    0x00006364 add r1, pc                                    |     r1 = 0xc89e;
    0x00006366 add r3, pc                                    |     r3 = 0xc8a2;
    0x00006368 adds r1, 7                                    |     r1 += 7;
    0x0000636a add r0, pc                                    |     r0 = 0xc8ac;
    0x0000636c bl 0x7f50                                     |     fcn_00007f50 (r0, r1, r2, r3);
                                                             | label_13:
    0x00006370 ldr r1, [pc, 0x1cc]                           |     
    0x00006372 mov.w r2, 0x21c                               |     r2 = 0x21c;
    0x00006374 strb r7, [r0, 8]                              |     *((r0 + 8)) = r7;
    0x00006376 ldr r3, [pc, 0x1cc]                           |     
    0x00006378 ldr r0, [pc, 0x1cc]                           |     
    0x0000637a add r1, pc                                    |     r1 = 0xc8be;
    0x0000637c add r3, pc                                    |     r3 = 0xc8c6;
    0x0000637e adds r1, 7                                    |     r1 += 7;
    0x00006380 add r0, pc                                    |     r0 = 0xc8cc;
    0x00006382 bl 0x7f50                                     |     fcn_00007f50 (r0, r1, r2, r3);
                                                             | label_14:
    0x00006386 ldr r1, [pc, 0x1c4]                           |     
    0x00006388 movw r2, 0x21d                                |     r2 = 0x21d;
    0x0000638c ldr r3, [pc, 0x1c0]                           |     
    0x0000638e ldr r0, [pc, 0x1c4]                           |     
    0x00006390 add r1, pc                                    |     r1 = 0xc8e2;
    0x00006392 add r3, pc                                    |     r3 = 0xc8e6;
    0x00006394 adds r1, 7                                    |     r1 += 7;
    0x00006396 add r0, pc                                    |     r0 = 0xc8f0;
    0x00006398 bl 0x7f50                                     |     fcn_00007f50 (r0, r1, r2, r3);
                                                             | label_15:
    0x0000639c ldr r1, [pc, 0x1b8]                           |     
    0x0000639e movw r2, 0x21e                                |     r2 = 0x21e;
    0x000063a2 ldr r3, [pc, 0x1b8]                           |     
    0x000063a4 ldr r0, [pc, 0x1b8]                           |     
    0x000063a6 add r1, pc                                    |     r1 = 0xc902;
    0x000063a8 add r3, pc                                    |     r3 = 0xc90a;
    0x000063aa adds r1, 7                                    |     r1 += 7;
    0x000063ac add r0, pc                                    |     r0 = 0xc910;
    0x000063ae bl 0x7f50                                     |     r0 = fcn_00007f50 (r0, r1, r2, r3);
                                                             | label_29:
    0x000063b2 blx 0x1b04                                    |     r0 = sprintf_chk ()
    0x000063b6 ldr r3, [r0]                                  |     r3 = *(r0);
    0x000063b8 rsb.w r8, r3, 0                               |     r8 = r3 - ;
                                                             | label_11:
    0x000063bc movs r4, 0                                    |     r4 = 0;
    0x000063be b 0x62dc                                      |     goto label_4;
                                                             | label_21:
    0x000063c0 ldr r1, [pc, 0x1a0]                           |     
    0x000063c2 movs r2, 0x16                                 |     r2 = 0x16;
    0x000063c4 ldr r3, [pc, 0x1a0]                           |     
    0x000063c6 ldr r0, [pc, 0x1a4]                           |     
    0x000063c8 add r1, pc                                    |     r1 = 0xc930;
    0x000063ca add r3, pc                                    |     r3 = 0xc936;
    0x000063cc adds r1, 7                                    |     r1 += 7;
    0x000063ce add r0, pc                                    |     r0 = 0xc940;
    0x000063d0 bl 0x7f50                                     |     fcn_00007f50 (r0, r1, r2, r3);
                                                             | label_7:
    0x000063d4 ldr r3, [sp, 0xbc]                            |     r3 = *(arg_bch);
    0x000063d6 tst.w r3, 6                                   |     
                                                             |     if ((r3 & 6) != 0) {
    0x000063da beq 0x641e                                    |         
    0x000063dc movs r3, 0                                    |         r3 = 0;
    0x000063de ldrb.w r2, [sp, 0xc]                          |         r2 = var_ch_2;
    0x000063e2 strb r3, [r4, r7]                             |         *((r4 + r7)) = r3;
    0x000063e4 adds r1, r7, 1                                |         r1 = r7 + 1;
    0x000063e6 str r3, [sp, 0x1c]                            |         var_178h = r3;
    0x000063e8 mov r0, r4                                    |         r0 = r4;
    0x000063ea ldr r3, [sp, 0xbc]                            |         r3 = *(arg_bch);
    0x000063ec tst.w r3, 2                                   |         
    0x000063f0 add r3, sp, 0x20                              |         r3 += var_17ch;
    0x000063f2 str r3, [sp]                                  |         *(sp) = r3;
    0x000063f4 add r3, sp, 0x1c                              |         r3 += var_178h;
                                                             |         if ((r3 & 2) == 0) {
    0x000063f6 beq 0x64ce                                    |             goto label_31;
                                                             |         }
    0x000063f8 bl 0x6af4                                     |         r0 = fcn_00006af4 (r0, r1, r2, r3, r4);
    0x000063fc mov r3, r0                                    |         r3 = r0;
                                                             | label_8:
    0x000063fe cmp r3, 0                                     |         
                                                             |         if (r3 < 0) {
    0x00006400 blt 0x64ee                                    |             goto label_32;
                                                             |         }
    0x00006402 ldr r3, [sp, 0xc]                             |         r3 = var_ch_2;
    0x00006404 cmp r5, 0                                     |         
    0x00006406 ite eq                                        |         
                                                             |         if (r5 != 0) {
    0x00006408 moveq r3, 0                                   |             r3 = 0;
                                                             |         }
                                                             |         if (r5 == 0) {
    0x0000640a andne r3, r3, 1                               |             r3 &= 1;
                                                             |         }
    0x0000640e cmp r3, 0                                     |         
                                                             |         if (r3 != 0) {
    0x00006410 bne 0x64f8                                    |             goto label_33;
                                                             |         }
                                                             | label_10:
    0x00006412 mov r0, r4                                    |         r0 = r4;
    0x00006414 blx 0x18cc                                    |         fcn_000018cc ();
    0x00006416 orrs.w sb, sl, sp, lsr 27                     |         sb = sl | (sp >> 27);
    0x0000641a cmp r7, r0                                    |         
    0x0000641c mov r7, r5                                    |         r7 = r5;
                                                             |     }
    0x0000641e ldr r3, [sp, 0x14]                            |     r3 = var_14h;
                                                             |     if (r3 != 0) {
    0x00006420 cbz r3, 0x646e                                |         
    0x00006422 ldr r2, [sp, 0x10]                            |         r2 = var_10h;
    0x00006424 movs r3, 0                                    |         r3 = 0;
    0x00006426 strb r3, [r4, r7]                             |         *((r4 + r7)) = r3;
    0x00006428 str r4, [r2]                                  |         *(r2) = r4;
    0x0000642a mov r4, r3                                    |         r4 = r3;
    0x0000642c ldr r3, [sp, 0x14]                            |         r3 = var_14h;
    0x0000642e str r7, [r3]                                  |         *(r3) = r7;
    0x00006430 b 0x62dc                                      |         goto label_4;
                                                             | label_30:
    0x00006432 ldrd r0, r2, [sp, 0x50]                       |         __asm ("ldrd r0, r2, [var_50h]");
    0x00006436 cmp.w r7, -1                                  |         
    0x0000643a it eq                                         |         
                                                             |         if (r7 == -1) {
    0x0000643c cmpeq r4, -1                                  |             __asm ("cmpeq r4, -1");
                                                             |         }
    0x0000643e subs r7, 0xff                                 |         r7 -= 0xff;
    0x00006440 itete eq                                      |         
                                                             |         if (r7 != 0xff) {
    0x00006442 moveq r3, 0                                   |             r3 = 0;
                                                             |         }
                                                             |         if (r7 == 0xff) {
    0x00006444 movne r3, r4                                  |             r3 = r4;
                                                             |         }
                                                             |         if (r7 != 0xff) {
    0x00006446 moveq r1, r3                                  |             r1 = r3;
                                                             |         }
                                                             |         if (r7 == 0xff) {
    0x00006448 movne r1, r7                                  |             r1 = r7;
                                                             |         }
    0x0000644a cmp r3, r0                                    |         
    0x0000644c sbcs.w ip, r1, r2                             |         __asm ("sbcs.w ip, r1, r2");
                                                             |         if (r3 >= r0) {
    0x00006450 bhs 0x64d6                                    |             goto label_34;
                                                             |         }
    0x00006452 subs r3, r0, r3                               |         r3 = r0 - r3;
    0x00006454 sbc.w r1, r2, r1                              |         __asm ("sbc.w r1, r2, r1");
    0x00006456 lsls r1, r0, 4                                |         r1 = r0 << 4;
    0x00006458 cmp.w r3, 0x4000000                           |         
    0x0000645c sbcs r1, r1, 0                                |         __asm ("sbcs r1, r1, 0");
    0x0000645e lsls r0, r0, 4                                |         r0 <<= 4;
                                                             |         if (r0 >= r0) {
    0x00006460 bhs 0x6506                                    |             goto label_35;
                                                             |         }
                                                             | label_9:
    0x00006462 cmp r0, 1                                     |         
    0x00006464 sbcs r2, r2, 0                                |         __asm ("sbcs r2, r2, 0");
    0x00006466 lsls r0, r0, 8                                |         r0 <<= 8;
    0x00006468 it ge                                         |         
                                                             |         if (r0 < r0) {
    0x0000646a addge r5, r3, 1                               |             r5 = r3 + 1;
                                                             |         }
    0x0000646c b 0x6324                                      |         goto label_5;
                                                             |     }
    0x0000646e mov r2, r7                                    |     r2 = r7;
    0x00006470 mov r1, r3                                    |     r1 = r3;
    0x00006472 mov r0, r4                                    |     r0 = r4;
    0x00006474 blx 0x1ba0                                    |     r0 = rand ();
                                                             |     if (r0 == 0) {
    0x00006478 cbz r0, 0x64da                                |         goto label_36;
                                                             |     }
    0x0000647a mvn r8, 0x49                                  |     r8 = ~0x49;
                                                             | label_6:
    0x0000647e ldr r3, [sp, 0xc]                             |     r3 = var_ch_2;
    0x00006480 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00006482 beq.w 0x62dc                                  |         goto label_4;
                                                             |     }
    0x00006484 add r7, sp, 0xac                              |     r7 = sp + 0xac;
                                                             | label_12:
    0x00006486 cmp r5, 0                                     |     
                                                             |     if (r5 == 0) {
    0x00006488 beq.w 0x62dc                                  |         goto label_4;
                                                             |     }
    0x0000648a add r7, sp, 0xa0                              |     r7 = sp + 0xa0;
    0x0000648c mov.w r2, -1                                  |     r2 = -1;
    0x00006490 mov r1, r5                                    |     r1 = r5;
    0x00006492 mov r0, r4                                    |     r0 = r4;
    0x00006494 blx 0x1c18                                    |     nl_langinfo (r0);
    0x00006498 b 0x62dc                                      |     goto label_4;
                                                             | label_24:
    0x0000649a ldr.w r3, [sb]                                |     r3 = *(sb);
    0x0000649e cmp r3, 0                                     |     
    0x000064a0 it gt                                         |     
                                                             |     if (r3 > 0) {
    0x000064a2 rsbgt r8, r3, 0                               |         __asm ("rsbgt r8, r3, 0");
                                                             |     }
    0x000064a4 lsrs r0, r0, 0x20                             |     r0 >>= 0x20;
                                                             |     if (r0 > r0) {
    0x000064a6 bgt 0x647e                                    |         goto label_6;
                                                             |     }
    0x000064a8 mvn r8, 4                                     |     r8 = ~4;
    0x000064ac b 0x647e                                      |     goto label_6;
                                                             | label_25:
    0x000064ae cmp sl, r7                                    |     
                                                             |     if (sl == r7) {
    0x000064b0 beq 0x63d4                                    |         goto label_7;
                                                             |     }
    0x000064b2 ldr r1, [pc, 0xbc]                            |     
    0x000064b4 movw r2, 0x26e                                |     r2 = 0x26e;
    0x000064b8 ldr r3, [pc, 0xb8]                            |     
    0x000064ba ldr r0, [pc, 0xbc]                            |     
    0x000064bc add r1, pc                                    |     r1 = 0xca32;
    0x000064be add r3, pc                                    |     r3 = 0xca36;
    0x000064c0 adds r1, 7                                    |     r1 += 7;
    0x000064c2 add r0, pc                                    |     r0 = 0xca40;
    0x000064c4 bl 0x7f50                                     |     fcn_00007f50 (r0, r1, r2, r3);
                                                             | label_27:
    0x000064c8 mvn r8, 6                                     |     r8 = ~6;
    0x000064cc b 0x647e                                      |     goto label_6;
                                                             | label_31:
    0x000064ce bl 0x68ec                                     |     r0 = fcn_000068ec (r0, r1, r2, r3, r4);
    0x000064d2 mov r3, r0                                    |     r3 = r0;
    0x000064d4 b 0x63fe                                      |     goto label_8;
                                                             | label_34:
    0x000064d6 movs r3, 0                                    |     r3 = 0;
    0x000064d8 b 0x6462                                      |     goto label_9;
                                                             | label_36:
    0x000064da ldr r3, [sp, 0x14]                            |     r3 = var_14h;
    0x000064dc ldr r2, [sp, 0x10]                            |     r2 = var_10h;
    0x000064de strb r3, [r4, r7]                             |     *((r4 + r7)) = r3;
    0x000064e0 str r4, [r2]                                  |     *(r2) = r4;
    0x000064e2 mov r4, r3                                    |     r4 = r3;
    0x000064e4 b 0x62dc                                      |     goto label_4;
                                                             | label_16:
    0x000064e6 movs r4, 0                                    |     r4 = 0;
    0x000064e8 mvn r8, 0x21                                  |     r8 = ~0x21;
    0x000064ec b 0x62dc                                      |     goto label_4;
                                                             | label_32:
    0x000064ee ldr r0, [sp, 0x1c]                            |     r0 = var_178h;
    0x000064f0 mov r8, r3                                    |     r8 = r3;
    0x000064f2 blx 0x18cc                                    |     fcn_000018cc ();
    0x000064f6 b 0x647e                                      |     goto label_6;
                                                             | label_33:
    0x000064f8 mov r1, r5                                    |     r1 = r5;
    0x000064fa mov.w r2, -1                                  |     r2 = -1;
    0x000064fe mov r0, r4                                    |     r0 = r4;
    0x00006500 blx 0x1c18                                    |     nl_langinfo (r0);
    0x00006504 b 0x6412                                      |     goto label_10;
                                                             | label_35:
    0x00006506 mvn r8, 6                                     |     r8 = ~6;
    0x0000650a b 0x63bc                                      |     goto label_11;
                                                             | label_20:
    0x0000650c mov r4, r8                                    |     r4 = r8;
    0x0000650e mov r5, sb                                    |     r5 = sb;
    0x00006510 mvn r8, 0xb                                   |     r8 = ~0xb;
    0x00006514 b 0x6486                                      |     goto label_12;
                                                             | label_28:
    0x00006516 blx 0x1954                                    |     parse_printf_format ();
    0x0000651a nop                                           |     
    0x0000651c pop {r1, r2, r3, r4, r7}                      |     
    0x0000651e movs r1, r0                                   |     r1 = r0;
    0x00006520 lsls r0, r6, 6                                |     r0 = r6 << 6;
    0x00006522 movs r0, r0                                   |     
                                                             |     if (r2 == 0) {
    0x00006524 cbnz r2, 0x6576                               |         
    0x00006526 movs r1, r0                                   |         r1 = r0;
    0x00006528 strh r6, [r6]                                 |         *(r6) = r6;
    0x0000652a movs r0, r0                                   |         
    0x0000652c strh r4, [r2, 0x12]                           |         *((r2 + 0x12)) = r4;
    0x0000652e movs r0, r0                                   |         
    0x00006530 strh r4, [r0, 0xe]                            |         *((r0 + 0xe)) = r4;
    0x00006532 movs r0, r0                                   |         
    0x00006534 strh r0, [r4]                                 |         *(r4) = r0;
    0x00006536 movs r0, r0                                   |         
    0x00006538 strh r6, [r7, 0x10]                           |         *((r7 + 0x10)) = r6;
    0x0000653a movs r0, r0                                   |         
    0x0000653c strh r6, [r0, 0xe]                            |         *((r0 + 0xe)) = r6;
    0x0000653e movs r0, r0                                   |         
    0x00006540 strh r2, [r1]                                 |         *(r1) = r2;
    0x00006542 movs r0, r0                                   |         
    0x00006544 strh r0, [r5, 0x10]                           |         *((r5 + 0x10)) = r0;
    0x00006546 movs r0, r0                                   |         
    0x00006548 ldrb r4, [r7, 0x1d]                           |         r4 = *((r7 + 0x1d));
    0x0000654a movs r0, r0                                   |         
    0x0000654c ldrb r4, [r6, 0x1f]                           |         r4 = *((r6 + 0x1f));
    0x0000654e movs r0, r0                                   |         
    0x00006550 strh r2, [r2, 0x10]                           |         *((r2 + 0x10)) = r2;
    0x00006552 movs r0, r0                                   |         
    0x00006554 strh r6, [r5, 8]                              |         *((r5 + 8)) = r6;
    0x00006556 movs r0, r0                                   |         
    0x00006558 ldrb r6, [r3, 0x1f]                           |         r6 = *((r3 + 0x1f));
    0x0000655a movs r0, r0                                   |         
    0x0000655c strh r4, [r7, 0xe]                            |         *((r7 + 0xe)) = r4;
    0x0000655e movs r0, r0                                   |         
    0x00006560 strh r0, [r5, 8]                              |         *((r5 + 8)) = r0;
    0x00006562 movs r0, r0                                   |         
    0x00006564 ldrb r0, [r3, 0x12]                           |         r0 = *((r3 + 0x12));
    0x00006566 movs r0, r0                                   |         
    0x00006568 strh r6, [r1, 0xe]                            |         *((r1 + 0xe)) = r6;
    0x0000656a movs r0, r0                                   |         
    0x0000656c ldrb r2, [r6, 0x12]                           |         r2 = *((r6 + 0x12));
    0x0000656e movs r0, r0                                   |         
    0x00006570 ldrb r0, [r1, 0x1b]                           |         r0 = *((r1 + 0x1b));
    0x00006572 movs r0, r0                                   |         
    0x00006574 strh r6, [r4, 6]                              |         *((r4 + 6)) = r6;
                                                             |     }
    0x00006576 movs r0, r0                                   |     
    0x00006578 strh r2, [r4, 2]                              |     *((r4 + 2)) = r2;
    0x0000657a 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/udev/scsi_id @ 0x657c */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.0000657c ()                                      | void fcn_0000657c (int16_t arg1, uint32_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h_2;
                                                                 |     char * s2;
                                                                 |     int16_t var_18h;
                                                                 |     char * src;
                                                                 |     int16_t var_24h;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_2ah;
                                                                 |     int16_t var_2bh;
                                                                 |     int16_t var_a8h;
                                                                 |     int16_t var_128h;
                                                                 |     int16_t var_144h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_174h;
                                                                 |     int16_t var_178h;
                                                                 |     int16_t var_17ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x0000657c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00006580 mov r8, r2                                        |     r8 = r2;
    0x00006582 ldr r2, [pc, 0x264]                               |     
    0x00006584 mov r7, r3                                        |     r7 = r3;
    0x00006586 sub sp, 0x14c                                     |     
    0x00006588 ldr r3, [pc, 0x260]                               |     r3 = *(0x67ec);
    0x0000658a add r6, sp, 0x24                                  |     r6 += var_24h;
    0x0000658c add r2, pc                                        |     r2 = 0xcd7a;
    0x0000658e ldrd sl, fp, [sp, 0x17c]                          |     __asm ("ldrd sl, fp, [var_17ch]");
    0x00006592 ldr r3, [r2, r3]                                  |     
    0x00006594 ldr r2, [sp, 0x178]                               |     r2 = var_178h;
    0x00006596 ldr r3, [r3]                                      |     r3 = *(0xcd7a);
    0x00006598 str r3, [sp, 0x144]                               |     var_144h = r3;
    0x0000659a mov.w r3, 0                                       |     r3 = 0;
    0x0000659e movs r3, 0                                        |     r3 = 0;
    0x000065a0 str r3, [r6]                                      |     *(r6) = r3;
    0x000065a2 str r2, [sp, 0x10]                                |     var_10h_2 = r2;
    0x000065a4 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x000065a6 beq.w 0x672e                                      |         goto label_3;
                                                                 |     }
    0x000065aa cmp.w sl, 0                                       |     
                                                                 |     if (sl == 0) {
    0x000065ae beq.w 0x6744                                      |         goto label_4;
                                                                 |     }
    0x000065b2 ldr r2, [pc, 0x23c]                               |     
    0x000065b4 mov sb, r0                                        |     sb = r0;
    0x000065b6 str r6, [sp]                                      |     *(sp) = r6;
    0x000065b8 mov r5, r1                                        |     r5 = r1;
    0x000065ba add r2, pc                                        |     r2 = 0xcdb0;
    0x000065bc bl 0x5d24                                         |     r0 = fcn_00005d24 (r0, r1, r2, r3, r4);
    0x000065c0 subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 < r0) {
    0x000065c2 bge.w 0x66d2                                      |         
    0x000065c6 adds r2, r4, 6                                    |         r2 = r4 + 6;
                                                                 |         if (r2 != r4) {
    0x000065c8 bne.w 0x671a                                      |             goto label_5;
                                                                 |         }
    0x000065cc ldr r3, [sp, 0x174]                               |         r3 = var_174h;
    0x000065ce lsls r3, r3, 0x1b                                 |         r3 <<= 0x1b;
                                                                 |         if (r3 >= r3) {
    0x000065d0 bpl.w 0x671a                                      |             goto label_5;
                                                                 |         }
    0x000065d2 strh r3, [r4, 4]                                  |         *((r4 + 4)) = r3;
    0x000065d4 cmp.w r7, -1                                      |         
    0x000065d8 it eq                                             |         
                                                                 |         if (r7 == -1) {
    0x000065da cmpeq r8, -1                                      |             __asm ("cmpeq r8, -1");
                                                                 |         }
                                                                 |         if (r7 != -1) {
    0x000065de bne.w 0x675a                                      |             goto label_6;
                                                                 |         }
    0x000065e2 cmn.w sb, 0x64                                    |         
                                                                 |         if (sb == 0x64) {
    0x000065e6 beq.w 0x6774                                      |             goto label_7;
                                                                 |         }
    0x000065ea mov r0, sb                                        |         r0 = sb;
    0x000065ec mov.w r2, 0x280000                                |         r2 = 0x280000;
    0x000065f0 mov r1, r5                                        |         r1 = r5;
    0x000065f2 blx 0x1aec                                        |         r0 = errno_location ();
    0x000065f6 subs.w sb, r0, 0                                  |         sb = r0 - 0;
                                                                 |         if (sb < r0) {
    0x000065fa blt.w 0x6766                                      |             goto label_8;
                                                                 |         }
    0x000065fe ldr r3, [pc, 0x1f4]                               |         
    0x00006600 add r0, sp, 0x128                                 |         r0 += var_128h;
    0x00006602 movs r2, 1                                        |         r2 = 1;
    0x00006604 str.w sb, [sp, 4]                                 |         __asm ("str.w sb, [var_4h]");
    0x00006608 str r0, [sp, 0x14]                                |         s2 = r0;
    0x0000660a add r3, pc                                        |         r3 = 0xce04;
    0x0000660c str r3, [sp]                                      |         *(sp) = r3;
    0x0000660e movs r3, 0x1a                                     |         r3 = 0x1a;
    0x00006610 mov r1, r3                                        |         r1 = r3;
    0x00006612 blx 0x1cd8                                        |         fcn_00001cd8 ();
    0x00006616 add r3, sp, 0x28                                  |         r3 += var_28h;
    0x00006618 ldr r1, [sp, 0x14]                                |         r1 = s2;
    0x0000661a mov r0, r3                                        |         r0 = r3;
    0x0000661c str r3, [sp, 0x14]                                |         s2 = r3;
    0x0000661e bl 0xa5c8                                         |         r0 = fcn_0000a5c8 (r0, r1);
                                                                 | label_1:
    0x00006622 cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x00006624 blt.w 0x6786                                      |             goto label_9;
                                                                 |         }
    0x00006626 strh r7, [r5, 4]                                  |         *((r5 + 4)) = r7;
    0x00006628 movs r1, 1                                        |         r1 = 1;
    0x0000662a movs r2, 0                                        |         r2 = 0;
    0x0000662c movt r1, 8                                        |         r1 = (r1 & 0xFFFF) | 0x80000;
    0x00006630 movs r0, 1                                        |         r0 = 1;
    0x00006632 blx 0x1c60                                        |         r0 = tls_get_addr ();
    0x00006636 subs r3, r0, 0                                    |         r3 = r0 - 0;
                                                                 |         if (r3 < r0) {
    0x00006638 blt.w 0x678e                                      |             goto label_10;
                                                                 |         }
    0x0000663c ldr r1, [sp, 0x10]                                |         r1 = var_10h_2;
                                                                 |         if (r1 != 0) {
    0x0000663e cbz r1, 0x666a                                    |             
    0x00006640 add r2, sp, 0xa8                                  |             r2 += var_a8h;
    0x00006642 str r3, [sp, 0x10]                                |             var_10h_2 = r3;
    0x00006644 mov r0, r2                                        |             r0 = r2;
    0x00006646 str r2, [sp, 0x1c]                                |             src = r2;
    0x00006648 bl 0xa5c8                                         |             fcn_0000a5c8 (r0, r1);
    0x0000664a vtbl.8 d2, {d14}, d0                              |             __asm ("vtbl.8 d2, {d14}, d0");
    0x0000664e ldr r3, [sp, 0x10]                                |             r3 = var_10h_2;
    0x00006650 str r0, [sp, 0x18]                                |             var_18h = r0;
                                                                 |             if (r1 < 0) {
    0x00006652 blt.w 0x67ac                                      |                 goto label_11;
                                                                 |             }
    0x00006656 ldr r2, [sp, 0x1c]                                |             r2 = src;
    0x00006658 mov r1, r2                                        |             r1 = r2;
    0x0000665a mov r2, r0                                        |             r2 = r0;
    0x0000665c mov r0, r3                                        |             r0 = r3;
    0x0000665e blx 0x1b34                                        |             r0 = strncpy (r0, r1, r2);
    0x00006662 cmp r0, 0                                         |             
    0x00006664 ldr r3, [sp, 0x10]                                |             r3 = var_10h_2;
                                                                 |             if (r0 < 0) {
    0x00006666 blt.w 0x67ac                                      |                 goto label_11;
                                                                 |             }
    0x00006668 strh r1, [r4, 4]                                  |             *((r4 + 4)) = r1;
                                                                 |         }
    0x0000666a ldr r2, [sp, 0x14]                                |         r2 = s2;
    0x0000666c ldrh r2, [r2]                                     |         r2 = *(r2);
    0x0000666e cmp r2, 1                                         |         
                                                                 |         if (r2 != 1) {
    0x00006670 bne.w 0x67cc                                      |             goto label_12;
                                                                 |         }
    0x00006674 ldr r2, [sp, 0x14]                                |         r2 = s2;
    0x00006676 str r3, [sp, 0x10]                                |         var_10h_2 = r3;
    0x00006678 ldrb r2, [r2, 2]                                  |         r2 = *((r2 + 2));
    0x0000667a cmp r2, 0                                         |         
                                                                 |         if (r2 != 0) {
    0x0000667c bne.w 0x679c                                      |             goto label_13;
                                                                 |         }
    0x00006680 movs r1, 0x6b                                     |         r1 = 0x6b;
    0x00006682 add.w r0, sp, 0x2b                                |         r0 += var_2bh;
    0x00006686 blx 0x1be8                                        |         shutdown ();
    0x0000668a ldr r3, [sp, 0x10]                                |         r3 = var_10h_2;
    0x0000668c adds r2, r0, 3                                    |         r2 = r0 + 3;
                                                                 | label_2:
    0x0000668e mov r0, r3                                        |         r0 = r3;
    0x00006690 ldr r1, [sp, 0x14]                                |         r1 = s2;
    0x00006692 str r3, [sp, 0x10]                                |         var_10h_2 = r3;
    0x00006694 blx 0x1ccc                                        |         r0 = strspn (r0, r1);
    0x00006698 cmp r0, 0                                         |         
    0x0000669a ldr r3, [sp, 0x10]                                |         r3 = var_10h_2;
                                                                 |         if (r0 < 0) {
    0x0000669c blt.w 0x67b0                                      |             goto label_14;
                                                                 |         }
    0x000066a0 mov r0, r3                                        |         r0 = r3;
    0x000066a2 movs r1, 1                                        |         r1 = 1;
    0x000066a4 str r3, [sp, 0x10]                                |         var_10h_2 = r3;
    0x000066a6 blx 0x1c00                                        |         r0 = explicit_bzero_chk ();
    0x000066aa cmp r0, 0                                         |         
    0x000066ac ldr r3, [sp, 0x10]                                |         r3 = var_10h_2;
                                                                 |         if (r0 < 0) {
    0x000066ae blt.w 0x67c0                                      |             goto label_15;
                                                                 |         }
    0x000066b2 ldr r1, [pc, 0x144]                               |         
    0x000066b4 mov r0, r3                                        |         r0 = r3;
    0x000066b6 str r3, [sp, 0x10]                                |         var_10h_2 = r3;
    0x000066b8 add r1, pc                                        |         r1 = 0xceb6;
    0x000066ba blx 0x181c                                        |         fdopen ();
    0x000066bc ldm.w r0!, {r4, r5, sp, lr}                       |         r4 = *(r0!);
                                                                 |         r5 = *((r0! + 4));
                                                                 |         sp = *((r0! + 8));
                                                                 |         lr = *((r0! + 12));
    0x000066c0 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x000066c2 beq 0x67c0                                        |             goto label_15;
                                                                 |         }
    0x000066c4 mov.w r0, -1                                      |         r0 = -1;
    0x000066c8 bl 0x5718                                         |         fcn_00005718 (r0);
    0x000066cc mov r0, sb                                        |         r0 = sb;
    0x000066ce bl 0x5718                                         |         fcn_00005718 (r0);
    0x000066d0 invalid                                           |         
                                                                 |     }
    0x000066d2 movs r1, 2                                        |     r1 = 2;
    0x000066d4 ldr r0, [r6]                                      |     r0 = *(r6);
    0x000066d6 blx 0x1b58                                        |     fgetc (r0);
    0x000066da ldr r4, [sp, 0x174]                               |     r4 = var_174h;
    0x000066dc mov r2, r8                                        |     r2 = r8;
    0x000066de str.w fp, [sp, 0xc]                               |     __asm ("str.w fp, [var_ch]");
    0x000066e2 mov r3, r7                                        |     r3 = r7;
    0x000066e4 str.w sl, [sp, 8]                                 |     __asm ("str.w sl, [var_8h]");
    0x000066e8 mov r1, r5                                        |     r1 = r5;
    0x000066ea ldr r0, [r6]                                      |     r0 = *(r6);
    0x000066ec str r4, [sp, 4]                                   |     var_4h = r4;
    0x000066ee ldr r4, [sp, 0x170]                               |     r4 = var_14h;
    0x000066f0 str r4, [sp]                                      |     *(sp) = r4;
    0x000066f2 bl 0x6174                                         |     r0 = fcn_00006174 (r0, r1, r2, r3, r4, r5, r6);
    0x000066f6 mov r4, r0                                        |     r4 = r0;
                                                                 |     do {
    0x000066f8 ldr r0, [r6]                                      |         r0 = *(r6);
    0x000066fa bl 0x57b4                                         |         fcn_000057b4 (r0);
    0x000066fe ldr r2, [pc, 0xfc]                                |         
    0x00006700 ldr r3, [pc, 0xe8]                                |         r3 = *(0x67ec);
    0x00006702 add r2, pc                                        |         r2 = 0xcf04;
    0x00006704 ldr r3, [r2, r3]                                  |         r3 = *(0xcf04);
    0x00006706 ldr r2, [r3]                                      |         r2 = *(0xcf04);
    0x00006708 ldr r3, [sp, 0x144]                               |         r3 = var_144h;
    0x0000670a eors r2, r3                                       |         r2 ^= r3;
    0x0000670c mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00006710 bne 0x67e2                                        |             goto label_16;
                                                                 |         }
    0x00006712 mov r0, r4                                        |         r0 = r4;
    0x00006714 add sp, 0x14c                                     |         
    0x00006716 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_5:
    0x0000671a mov.w r3, -1                                      |         r3 = -1;
    0x0000671e mov sb, r3                                        |         sb = r3;
                                                                 | label_0:
    0x00006720 mov r0, r3                                        |         r0 = r3;
    0x00006722 bl 0x5718                                         |         fcn_00005718 (r0);
    0x00006726 mov r0, sb                                        |         r0 = sb;
    0x00006728 bl 0x5718                                         |         fcn_00005718 (r0);
    0x0000672c b 0x66f8                                          |         
                                                                 |     } while (1);
                                                                 | label_3:
    0x0000672e ldr r1, [pc, 0xd0]                                |     
    0x00006730 movw r2, 0x2b6                                    |     r2 = 0x2b6;
    0x00006734 ldr r3, [pc, 0xcc]                                |     
    0x00006736 ldr r0, [pc, 0xd0]                                |     
    0x00006738 add r1, pc                                        |     r1 = 0xcf3e;
    0x0000673a add r3, pc                                        |     r3 = 0xcf42;
    0x0000673c adds r1, 7                                        |     r1 += 7;
    0x0000673e add r0, pc                                        |     r0 = 0xcf4c;
    0x00006740 bl 0x7f50                                         |     fcn_00007f50 (r0, r1, r2, r3);
                                                                 | label_4:
    0x00006744 ldr r1, [pc, 0xc4]                                |     
    0x00006746 movw r2, 0x2b7                                    |     r2 = 0x2b7;
    0x0000674a ldr r3, [pc, 0xc4]                                |     
    0x0000674c ldr r0, [pc, 0xc4]                                |     
    0x0000674e add r1, pc                                        |     r1 = 0xcf5e;
    0x00006750 add r3, pc                                        |     r3 = 0xcf66;
    0x00006752 adds r1, 7                                        |     r1 += 7;
    0x00006754 add r0, pc                                        |     r0 = 0xcf6c;
    0x00006756 bl 0x7f50                                         |     fcn_00007f50 (r0, r1, r2, r3);
                                                                 | label_6:
    0x0000675a mov.w r3, -1                                      |     r3 = -1;
    0x0000675e mvn r4, 0x1c                                      |     r4 = ~0x1c;
    0x00006762 mov sb, r3                                        |     sb = r3;
    0x00006764 b 0x6720                                          |     goto label_0;
                                                                 | label_8:
    0x00006766 blx 0x1b04                                        |     r0 = sprintf_chk ()
    0x0000676a ldr r4, [r0]                                      |     r4 = *(r0);
    0x0000676c mov.w r3, -1                                      |     r3 = -1;
    0x0000676e adds r3, 0xff                                     |     r3 += 0xff;
    0x00006770 rsbs r4, r4, 0                                    |     r4 -= ;
    0x00006772 b 0x6720                                          |     goto label_0;
                                                                 | label_7:
    0x00006774 add r3, sp, 0x28                                  |     r3 += var_28h;
    0x00006776 mov r1, r5                                        |     r1 = r5;
    0x00006778 mov r0, r3                                        |     r0 = r3;
    0x0000677a str r3, [sp, 0x14]                                |     s2 = r3;
    0x0000677c mov.w sb, -1                                      |     sb = -1;
    0x00006780 bl 0xa5c8                                         |     fcn_0000a5c8 (r0, r1);
    0x00006784 b 0x6622                                          |     goto label_1;
                                                                 | label_9:
    0x00006786 mov r4, r0                                        |     r4 = r0;
    0x00006788 mov.w r3, -1                                      |     r3 = -1;
    0x0000678c b 0x6720                                          |     goto label_0;
                                                                 | label_10:
    0x0000678e str r3, [sp, 0x10]                                |     var_10h_2 = r3;
    0x00006790 blx 0x1b04                                        |     r0 = sprintf_chk ()
    0x00006794 ldr r4, [r0]                                      |     r4 = *(r0);
    0x00006796 ldr r3, [sp, 0x10]                                |     r3 = var_10h_2;
    0x00006798 rsbs r4, r4, 0                                    |     r4 -= ;
    0x0000679a b 0x6720                                          |     goto label_0;
                                                                 | label_13:
    0x0000679c movs r1, 0x6c                                     |     r1 = 0x6c;
    0x0000679e add.w r0, sp, 0x2a                                |     r0 += var_2ah;
    0x000067a2 blx 0x1be8                                        |     shutdown ();
    0x000067a6 ldr r3, [sp, 0x10]                                |     r3 = var_10h_2;
    0x000067a8 adds r2, r0, 3                                    |     r2 = r0 + 3;
    0x000067aa b 0x668e                                          |     goto label_2;
                                                                 | label_11:
    0x000067ac ldr r4, [sp, 0x18]                                |     r4 = var_18h;
    0x000067ae b 0x6720                                          |     goto label_0;
                                                                 | label_14:
    0x000067b0 blx 0x1b04                                        |     r0 = sprintf_chk ()
    0x000067b4 ldr r2, [r0]                                      |     r2 = *(r0);
    0x000067b6 ldr r3, [sp, 0x10]                                |     r3 = var_10h_2;
    0x000067b8 cmp r2, 0x58                                      |     
    0x000067ba it ne                                             |     
                                                                 |     if (r2 != 0x58) {
    0x000067bc rsbne r4, r2, 0                                   |         __asm ("rsbne r4, r2, 0");
                                                                 |     }
    0x000067be b 0x6720                                          |     goto label_0;
                                                                 | label_15:
    0x000067c0 blx 0x1b04                                        |     r0 = sprintf_chk ()
    0x000067c4 ldr r4, [r0]                                      |     r4 = *(r0);
    0x000067c6 ldr r3, [sp, 0x10]                                |     r3 = var_10h_2;
    0x000067c8 rsbs r4, r4, 0                                    |     r4 -= ;
    0x000067ca b 0x6720                                          |     goto label_0;
                                                                 | label_12:
    0x000067cc ldr r1, [pc, 0x48]                                |     
    0x000067ce movw r2, 0x2ef                                    |     r2 = 0x2ef;
    0x000067d2 ldr r3, [pc, 0x48]                                |     
    0x000067d4 ldr r0, [pc, 0x48]                                |     
    0x000067d6 add r1, pc                                        |     r1 = 0xcff2;
    0x000067d8 add r3, pc                                        |     r3 = 0xcffa;
    0x000067da adds r1, 7                                        |     r1 += 7;
    0x000067dc add r0, pc                                        |     r0 = 0xd000;
    0x000067de bl 0x7f50                                         |     r0 = fcn_00007f50 (r0, r1, r2, r3);
                                                                 | label_16:
    0x000067e2 blx 0x1954                                        |     parse_printf_format ();
    0x000067e6 nop                                               |     
    0x000067e8 invalid                                           |     
                                                                 | }
    ; assembly                       | /* r2dec pseudo code output */
                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/udev/scsi_id @ 0x6dcc */
                                     | #include <stdint.h>
                                     |  
    ; (fcn) fcn.00006dcc ()          | void fcn_00006dcc (int16_t arg_3b0h, int16_t arg1) {
                                     |     int16_t var_0h_2;
                                     |     int16_t var_ch;
                                     |     int16_t var_14h_2;
                                     |     r0 = arg1;
    0x00006dcc invalid               |     
    0x00006dd0 movs r1, 0            |     r1 = 0;
    0x00006dd2 ldr r4, [pc, 0x84]    |     
    0x00006dd4 sub sp, 0x1c          |     
    0x00006dd6 movs r2, 0            |     r2 = 0;
    0x00006dd8 movs r0, 1            |     r0 = 1;
    0x00006dda ldr r3, [pc, 0x80]    |     r3 = *(0x6e5e);
    0x00006ddc add r4, pc            |     r4 = 0xdc3a;
    0x00006dde ldr r3, [r4, r3]      |     
    0x00006de0 ldr r3, [r3]          |     r3 = *(0xdc3a);
    0x00006de2 str r3, [sp, 0x14]    |     var_14h_2 = r3;
    0x00006de4 mov.w r3, 0           |     r3 = 0;
    0x00006de8 blx 0x1c60            |     r0 = tls_get_addr ();
    0x00006dec cmp r0, 0             |     
                                     |     if (r0 < 0) {
    0x00006dee blt 0x6e4a            |         goto label_0;
                                     |     }
    0x00006df0 bl 0x57fc             |     fcn_000057fc (r0);
    0x00006df4 movs r2, 1            |     r2 = 1;
    0x00006df6 mov.w r1, 0x800000    |     r1 = 0x800000;
    0x00006dfa mov r4, r0            |     r4 = r0;
    0x00006dfc add r5, sp, 0xc       |     r5 += var_ch;
    0x00006dfe bl 0xa4a4             |     r0 = fcn_0000a4a4 (r0, r1, r2);
    0x00006e02 bl 0x9624             |     r0 = fcn_00009624 (r0);
    0x00006e06 cmp r0, 1             |     
    0x00006e08 mov.w r3, 0           |     r3 = 0;
    0x00006e0c itet ne               |     
                                     |     if (r0 != 1) {
    0x00006e0e movwne r2, 0x9680     |         __asm ("movwne r2, 0x9680");
                                     |     }
                                     |     if (r0 == 1) {
    0x00006e12 movwne r2, 0x2710     |         
                                     |     }
                                     |     if (r0 != 1) {
    0x00006e16 movt r2, 0x98         |         r2 = 0x982710;
                                     |     }
    0x00006e1a mov r0, r5            |     r0 = r5;
    0x00006e1c bl 0xb62c             |     fcn_0000b62c (r0, r1, r2);
    0x00006e20 movs r0, 8            |     r0 = 8;
    0x00006e22 mov r3, r5            |     r3 = r5;
    0x00006e24 str r0, [sp]          |     *(sp) = r0;
    0x00006e26 movs r2, 0x15         |     r2 = 0x15;
    0x00006e28 movs r1, 1            |     r1 = 1;
    0x00006e2a mov r0, r4            |     r0 = r4;
    0x00006e2c blx 0x1890            |     fcn_00001890 ();
                                     |     do {
    0x00006e30 ldr r2, [pc, 0x2c]    |         
    0x00006e32 ldr r3, [pc, 0x28]    |         r3 = *(0x6e5e);
    0x00006e34 add r2, pc            |         r2 = 0xdc98;
    0x00006e36 ldr r3, [r2, r3]      |         r3 = *(0xdc98);
    0x00006e38 ldr r2, [r3]          |         r2 = *(0xdc98);
    0x00006e3a ldr r3, [sp, 0x14]    |         r3 = var_14h_2;
    0x00006e3c eors r2, r3           |         r2 ^= r3;
    0x00006e3e mov.w r3, 0           |         r3 = 0;
                                     |         if (r2 != r3) {
    0x00006e42 bne 0x6e54            |             goto label_1;
                                     |         }
    0x00006e44 mov r0, r4            |         r0 = r4;
    0x00006e46 add sp, 0x1c          |         
    0x00006e48 pop {r4, r5, pc}      |         
                                     | label_0:
    0x00006e4a blx 0x1b04            |         r0 = sprintf_chk ()
    0x00006e4e ldr r4, [r0]          |         r4 = *(r0);
    0x00006e50 rsbs r4, r4, 0        |         r4 -= ;
    0x00006e52 b 0x6e30              |         
                                     |     } while (1);
                                     | label_1:
    0x00006e54 blx 0x1954            |     parse_printf_format ();
    0x00006e58 add sp, 0x110         |     
    0x00006e5a movs r1, r0           |     r1 = r0;
    0x00006e5c lsls r0, r6, 6        |     r0 = r6 << 6;
    0x00006e5e movs r0, r0           |     
    0x00006e60 add r7, sp, 0x3b0     |     r7 += arg_3b0h;
    0x00006e62 movs r1, r0           |     r1 = 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/udev/scsi_id @ 0x6e64 */
                                     | #include <stdint.h>
                                     |  
    ; (fcn) fcn.00006e64 ()          | void fcn_00006e64 () {
    0x00006e64 invalid               |     
    0x00006e68 add r4, pc            |     r4 += pc;
    0x00006e6a ldr r3, [r4]          |     r3 = *(r4);
    0x00006e6c cmp r3, 0             |     
    0x00006e6e it ge                 |     
                                     |     if (r3 < 0) {
    0x00006e70 movge r0, 0           |         r0 = 0;
                                     |     }
                                     |     if (r3 >= 0) {
    0x00006e72 blt 0x6e76            |         
    0x00006e74 pop {r4, pc}          |         
                                     |     }
    0x00006e76 ldr r0, [pc, 0x30]    |     
    0x00006e78 movw r1, 0x101        |     
    0x00006e7c movt r1, 8            |     r1 = 0x80101;
    0x00006e80 add r0, pc            |     r0 = 0xdd2e;
    0x00006e82 blx 0x1a28            |     r0 = fcn_00001a28 ();
    0x00006e86 cmp r0, 0             |     
    0x00006e88 str r0, [r4]          |     *(r4) = r0;
                                     |     if (r0 >= 0) {
    0x00006e8a blt 0x6e98            |         
    0x00006e8c bl 0x57fc             |         r0 = fcn_000057fc (r0);
    0x00006e90 mov r3, r0            |         r3 = r0;
    0x00006e92 movs r0, 0            |         r0 = 0;
    0x00006e94 str r3, [r4]          |         *(r4) = r3;
    0x00006e96 pop {r4, pc}          |         
                                     |     }
    0x00006e98 blx 0x1b04            |     r0 = sprintf_chk ()
    0x00006e9c ldr r0, [r0]          |     r0 = *(r0);
    0x00006e9e rsbs r0, r0, 0        |     r0 -= ;
    0x00006ea0 pop {r4, pc}          |     
                                     | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/udev/scsi_id @ 0x7130 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00007130 ()                                  | void fcn_00007130 (int16_t arg_360h, int16_t arg_86ch, int16_t arg_898h, int16_t arg_89ch, int16_t arg_8a0h, int16_t arg_8a4h, int16_t arg_8a8h, int16_t arg_8ach, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                             |     int16_t var_8h_2;
                                                             |     int16_t var_ch_2;
                                                             |     int16_t var_10h_2;
                                                             |     int16_t var_14h;
                                                             |     int16_t var_1ch;
                                                             |     int16_t var_20h;
                                                             |     int16_t var_0h;
                                                             |     int16_t var_4h;
                                                             |     int16_t var_8h;
                                                             |     int16_t var_ch;
                                                             |     int16_t var_38h_2;
                                                             |     int16_t var_3ch;
                                                             |     int16_t var_24h;
                                                             |     int16_t var_28h;
                                                             |     int16_t var_54h_2;
                                                             |     int16_t var_38h;
                                                             |     int16_t var_60h_2;
                                                             |     int16_t var_64h;
                                                             |     int16_t var_6ch_2;
                                                             |     int16_t var_30h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x00007130 svcmi 0xf0e92d                                |     __asm ("svcmi 0xf0e92d");
    0x00007134 mov sl, r2                                    |     sl = r2;
    0x00007136 subw sp, sp, 0x874                            |     __asm ("subw sp, sp, 0x874");
    0x0000713a ldr r2, [pc, 0x100]                           |     
    0x0000713c mov fp, r3                                    |     
    0x0000713e add r5, sp, 0x4c                              |     r5 += var_28h;
    0x00007140 ldr.w r4, [sp, 0x898]                         |     r4 = *(arg_898h);
    0x00007144 mov r6, r0                                    |     r6 = r0;
    0x00007146 ldr r3, [pc, 0xf8]                            |     r3 = *(0x7242);
    0x00007148 add r2, pc                                    |     r2 = 0xe38a;
    0x0000714a ldr.w r8, [pc, 0xf8]                          |     r8 = *(0x00007244);
    0x0000714e mov r7, r1                                    |     r7 = r1;
    0x00007150 str r4, [sp, 0x1c]                            |     var_1ch = r4;
    0x00007152 movs r1, 0                                    |     r1 = 0;
    0x00007154 ldr r3, [r2, r3]                              |     
    0x00007156 mov r0, r5                                    |     r0 = r5;
    0x00007158 ldr.w r4, [sp, 0x8a0]                         |     r4 = *(arg_8a0h);
    0x0000715c add r8, pc                                    |     r8 += pc;
    0x0000715e movs r2, 0x20                                 |     r2 = 0x20;
    0x00007160 ldr.w sb, [sp, 0x8ac]                         |     sb = *(arg_8ach);
    0x00007164 ldr r3, [r3]                                  |     r3 = *(0xe38a);
    0x00007166 str.w r3, [sp, 0x86c]                         |     __asm ("str.w r3, [arg_86ch]");
    0x0000716a mov.w r3, 0                                   |     r3 = 0;
    0x0000716e ldr.w r3, [sp, 0x89c]                         |     r3 = *(arg_89ch);
    0x00007172 str r4, [sp, 0x24]                            |     var_0h = r4;
    0x00007174 ldr.w r4, [sp, 0x8a8]                         |     r4 = *(arg_8a8h);
    0x00007176 ldr r0, [pc, 0x2a0]                           |     r0 = *(0x741a);
    0x00007178 str r3, [sp, 0x20]                            |     var_20h = r3;
    0x0000717a ldr.w r3, [sp, 0x8a4]                         |     r3 = *(arg_8a4h);
    0x0000717e str r4, [sp, 0x2c]                            |     var_8h = r4;
    0x00007180 str r3, [sp, 0x28]                            |     var_4h = r3;
    0x00007182 blx 0x1b40                                    |     fsetlocking ();
    0x00007186 ldr.w r3, [r8]                                |     r3 = *(r8);
    0x0000718a movs r0, 0                                    |     r0 = 0;
    0x0000718c strd r0, r0, [sp, 0x30]                       |     __asm ("strd r0, r0, [sp, 0x30]");
    0x00007190 strd r0, r0, [sp, 0x38]                       |     __asm ("strd r0, r0, [sp, 0x38]");
    0x00007194 cmp r3, r0                                    |     
    0x00007196 strd r0, r0, [sp, 0x40]                       |     __asm ("strd r0, r0, [sp, 0x40]");
    0x0000719a str r0, [sp, 0x48]                            |     var_24h = r0;
                                                             |     if (r3 < r0) {
    0x0000719c blt 0x7210                                    |         goto label_0;
                                                             |     }
    0x0000719e ldr r2, [sp, 0x2c]                            |     r2 = var_8h;
    0x000071a0 add r4, sp, 0x30                              |     r4 += var_ch;
    0x000071a2 ldr r1, [sp, 0x24]                            |     r1 = var_0h;
    0x000071a4 ldr r0, [sp, 0x28]                            |     r0 = var_4h;
    0x000071a6 str r2, [sp, 0x14]                            |     var_14h = r2;
    0x000071a8 ldr r2, [sp, 0x20]                            |     r2 = var_20h;
    0x000071aa ldr r3, [sp, 0x1c]                            |     r3 = var_1ch;
    0x000071ac str r1, [sp, 0xc]                             |     var_ch_2 = r1;
    0x000071ae mov r1, r6                                    |     r1 = r6;
    0x000071b0 ldr r6, [pc, 0x94]                            |     
    0x000071b2 str r2, [sp, 8]                               |     var_8h_2 = r2;
    0x000071b4 mov r2, r7                                    |     r2 = r7;
    0x000071b6 add r7, sp, 0x6c                              |     r7 += var_6ch_2;
    0x000071b8 str r0, [sp, 0x10]                            |     var_10h_2 = r0;
    0x000071ba strd fp, r3, [sp]                             |     __asm ("strd fp, r3, [sp]");
    0x000071be mov r0, r7                                    |     r0 = r7;
    0x000071c0 mov r3, sl                                    |     r3 = sl;
    0x000071c2 add r6, pc                                    |     r6 = 0xe40e;
    0x000071c4 bl 0x6f04                                     |     fcn_00006f04 (r0, r1, r2, r3, r4, r5, r6);
    0x000071c8 mov r0, r7                                    |     r0 = r7;
    0x000071ca blx 0x1abc                                    |     r0 = strchr (r0, r1);
    0x000071ce strd r7, r0, [sp, 0x4c]                       |     __asm ("strd r7, r0, [sp, 0x4c]");
    0x000071d0 strb r3, [r2]                                 |     *(r2) = r3;
    0x000071d2 add r3, sp, 0x54                              |     r3 += var_54h_2;
    0x000071d4 ldm.w r6, {r0, r1}                            |     r0 = *(r6);
                                                             |     r1 = *((r6 + 4));
    0x000071d8 adds r6, 8                                    |     r6 += 8;
    0x000071da stm.w r3, {r0, r1}                            |     *(r3) = r0;
                                                             |     *((r3 + 4)) = r1;
    0x000071de mov r0, sb                                    |     r0 = sb;
    0x000071e0 blx 0x1abc                                    |     strchr (r0, r1);
    0x000071e4 str r0, [sp, 0x60]                            |     var_60h_2 = r0;
    0x000071e6 add r3, sp, 0x64                              |     r3 += var_64h;
    0x000071e8 ldm.w r6, {r0, r1}                            |     r0 = *(r6);
                                                             |     r1 = *((r6 + 4));
    0x000071ec mov.w r2, 0x4000                              |     r2 = 0x4000;
    0x000071f0 str.w sb, [sp, 0x5c]                          |     __asm ("str.w sb, [var_38h]");
    0x000071f4 str r5, [sp, 0x38]                            |     var_38h_2 = r5;
    0x000071f6 stm.w r3, {r0, r1}                            |     *(r3) = r0;
                                                             |     *((r3 + 4)) = r1;
    0x000071fa movs r3, 4                                    |     r3 = 4;
    0x000071fc ldr.w r0, [r8]                                |     r0 = *(r8);
    0x00007200 mov r1, r4                                    |     r1 = r4;
    0x00007202 str r3, [sp, 0x3c]                            |     var_3ch = r3;
    0x00007204 blx 0x192c                                    |     r0 = fcn_0000192c ();
    0x00007208 cmp r0, 0                                     |     
    0x0000720a it ge                                         |     
                                                             |     if (r0 < 0) {
    0x0000720c movge r0, 1                                   |         r0 = 1;
                                                             |     }
    0x0000720e blt 0x722e                                    |     
                                                             |     while (1) {
                                                             | label_0:
    0x00007210 ldr r2, [pc, 0x38]                            |         
    0x00007212 ldr r3, [pc, 0x2c]                            |         r3 = *(0x7242);
    0x00007214 add r2, pc                                    |         r2 = 0xe464;
    0x00007216 ldr r3, [r2, r3]                              |         r3 = *(0xe464);
    0x00007218 ldr r2, [r3]                                  |         r2 = *(0xe464);
    0x0000721a ldr.w r3, [sp, 0x86c]                         |         r3 = *(arg_86ch);
    0x0000721e eors r2, r3                                   |         r2 ^= r3;
    0x00007220 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x00007224 bne 0x7238                                    |             goto label_1;
                                                             |         }
    0x00007226 addw sp, sp, 0x874                            |         __asm ("addw sp, sp, 0x874");
    0x0000722a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |         
    0x0000722e blx 0x1b04                                    |         r0 = sprintf_chk ()
    0x00007232 ldr r0, [r0]                                  |         r0 = *(r0);
    0x00007234 rsbs r0, r0, 0                                |         r0 -= ;
    0x00007236 b 0x7210                                      |         
                                                             |     }
                                                             | label_1:
    0x00007238 blx 0x1954                                    |     parse_printf_format ();
    0x0000723c add r4, sp, 0x360                             |     r4 += arg_360h;
    0x0000723e movs r1, r0                                   |     r1 = r0;
    0x00007240 lsls r0, r6, 6                                |     r0 = r6 << 6;
    0x00007242 movs r0, r0                                   |     
    0x00007244 sub sp, 0x180                                 |     
    0x00007246 movs r1, r0                                   |     r1 = r0;
    0x00007248 add sp, 0x178                                 |     
    0x0000724a movs r1, r0                                   |     r1 = r0;
    0x0000724c add r4, sp, 0x30                              |     r4 += var_30h;
    0x0000724e movs r1, r0                                   |     r1 = 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/udev/scsi_id @ 0x7250 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.00007250 ()                  | void fcn_00007250 () {
                                             |     if (? < ?) {
    0x00007250 andhs fp, r2, r8, lsr r5      |         
                                             |     }
    0x00007254 ldr r5, [pc, 0x3c]            |     
    0x00007256 bl 0x6dcc                     |     r0 = fcn_00006dcc (r0, r1);
    0x0000725a cmp r0, 0                     |     
    0x0000725c add r5, pc                    |     r5 = 0xe4f4;
    0x0000725e str r0, [r5]                  |     *(r5) = r0;
                                             |     if (r0 >= 0) {
    0x00007260 blt 0x7278                    |         
    0x00007262 ldr r1, [pc, 0x34]            |         
    0x00007264 movs r2, 0x1e                 |         r2 = 0x1e;
    0x00007266 add r1, pc                    |         r1 = 0xe504;
    0x00007268 blx 0x1ccc                    |         r0 = strspn (r0, r1);
    0x0000726c cmp r0, 0                     |         
    0x0000726e it ge                         |         
                                             |         if (r0 < 0) {
    0x00007270 movge r4, 0                   |             r4 = 0;
                                             |         }
                                             |         if (r0 < 0) {
    0x00007272 blt 0x7288                    |             goto label_0;
                                             |         }
    0x00007274 mov r0, r4                    |         r0 = r4;
    0x00007276 pop {r3, r4, r5, pc}          |         
                                             |     }
    0x00007278 mov r4, r0                    |     r4 = r0;
                                             |     do {
    0x0000727a bl 0x5718                     |         fcn_00005718 (r0);
    0x0000727e ldr r3, [pc, 0x1c]            |         
    0x00007280 add r3, pc                    |         r3 = 0xe522;
    0x00007282 str r0, [r3]                  |         *(r3) = r0;
    0x00007284 mov r0, r4                    |         r0 = r4;
    0x00007286 pop {r3, r4, r5, pc}          |         
                                             | label_0:
    0x00007288 blx 0x1b04                    |         r0 = sprintf_chk ()
    0x0000728c ldr r4, [r0]                  |         r4 = *(r0);
    0x0000728e ldr r0, [r5]                  |         r0 = *(r5);
    0x00007290 rsbs r4, r4, 0                |         r4 -= ;
    0x00007292 b 0x727a                      |         
                                             |     } while (1);
                                             | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/udev/scsi_id @ 0x72a0 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.000072a0 ()                  | void fcn_000072a0 () {
                                             |     int16_t var_0h;
                                             |     int16_t var_4h;
                                             |     int16_t var_8h;
                                             |     int16_t var_ch;
                                             |     int16_t var_10h;
                                             |     int32_t var_10h_2;
                                             |     int16_t var_18h;
                                             |     int32_t var_18h_2;
                                             |     int16_t var_78h;
                                             |     int32_t var_78h_2;
                                             |     int16_t var_84h;
    0x000072a0 ldr r2, [pc, 0x2a8]           |     
    0x000072a2 ldr r3, [pc, 0x2ac]           |     r3 = *(0x7552);
    0x000072a4 push {r4, r5, r6, r7, lr}     |     
    0x000072a6 sub sp, 0x8c                  |     
    0x000072a8 add r2, pc                    |     r2 = 0xe7f8;
    0x000072aa ldr r5, [pc, 0x2a8]           |     
    0x000072ac ldr r3, [r2, r3]              |     
    0x000072ae add r5, pc                    |     r5 = 0xe808;
    0x000072b0 ldr r3, [r3]                  |     r3 = *(0xe7f8);
    0x000072b2 str r3, [sp, 0x84]            |     var_84h = r3;
    0x000072b4 mov.w r3, 0                   |     r3 = 0;
    0x000072b8 blx 0x1b04                    |     sprintf_chk ()
    0x000072bc ldr r3, [r5]                  |     r3 = *(0xe808);
    0x000072be mov r4, r0                    |     r4 = r0;
    0x000072c0 ldr r6, [r0]                  |     r6 = *(r0);
    0x000072c2 cmp r3, 8                     |     
                                             |     if (r3 == 8) {
    0x000072c4 beq.w 0x7406                  |         goto label_10;
                                             |     }
    0x000072c8 bl 0x9624                     |     r0 = fcn_00009624 (r0);
    0x000072cc cmp r0, 1                     |     
                                             |     if (r0 != 1) {
    0x000072ce bne 0x733a                    |         goto label_11;
                                             |     }
    0x000072d0 ldr r3, [r5]                  |     r3 = *(r5);
                                             |     do {
                                             | label_2:
    0x000072d2 ldr r2, [pc, 0x284]           |         
    0x000072d4 add r2, pc                    |         r2 = 0xe832;
    0x000072d6 ldrb r2, [r2]                 |         r2 = *(r2);
                                             |         if (r2 == 0) {
    0x000072d8 cbnz r2, 0x72e2               |             
    0x000072da cmp r3, 4                     |             
                                             |             if (r3 > 4) {
    0x000072dc bgt 0x73ba                    |                 goto label_12;
                                             |             }
    0x000072de cmp r3, 2                     |             
                                             |             if (r3 > 2) {
    0x000072e0 bgt 0x73be                    |                 goto label_13;
                                             |             }
                                             |         }
                                             | label_4:
    0x000072e2 cmp r3, 7                     |         
                                             |         if (r3 <= 7) {
    0x000072e4 bhi 0x72fa                    |             
    0x000072e6 movs r2, 0xd4                 |             r2 = 0xd4;
    0x000072e8 lsr.w r3, r2, r3              |             r3 = r2 >> r3;
    0x000072ec lsls r3, r3, 0x1f             |             r3 <<= 0x1f;
                                             |             if (r3 >= r3) {
    0x000072ee bpl 0x72fa                    |                 goto label_1;
                                             |             }
    0x000072f0 bl 0x6e64                     |             r0 = fcn_00006e64 ();
    0x000072f4 subs r5, r0, 0                |             r5 = r0 - 0;
                                             |             if (r5 >= r0) {
    0x000072f6 bge.w 0x747c                  |                 goto label_14;
                                             |             }
                                             |         }
                                             | label_1:
    0x000072fa ldr r7, [pc, 0x260]           |         
    0x000072fc ldr r5, [pc, 0x260]           |         
    0x000072fe add r7, pc                    |         r7 = 0xe860;
    0x00007300 add r5, pc                    |         r5 = "POSIX";
    0x00007302 ldr r0, [r7]                  |         r0 = *(0xe860);
    0x00007304 bl 0x5718                     |         fcn_00005718 (r0);
    0x00007308 str r0, [r7]                  |         *(r7) = r0;
    0x0000730a ldr r0, [r5]                  |         r0 = "POSIX";
    0x0000730c bl 0x5718                     |         fcn_00005718 ("POSIX");
    0x00007310 str r0, [r5]                  |         *(r5) = r0;
    0x00007312 bl 0x6eac                     |         r0 = fcn_00006eac ();
    0x00007316 mov r5, r0                    |         r5 = r0;
                                             | label_0:
    0x00007318 ldr r2, [pc, 0x248]           |         
    0x0000731a cmp r6, 0                     |         
    0x0000731c ldr r3, [pc, 0x230]           |         r3 = *(0x7550);
    0x0000731e it ge                         |         
                                             |         if (r6 < 0) {
    0x00007320 strge r6, [r4]                |             *(r4) = r6;
                                             |         }
    0x00007322 add r2, pc                    |         r2 = 0xe88a;
    0x00007324 ldr r3, [r2, r3]              |         r3 = *(0xe88a);
    0x00007326 ldr r2, [r3]                  |         r2 = *(0xe88a);
    0x00007328 ldr r3, [sp, 0x84]            |         r3 = var_84h;
    0x0000732a eors r2, r3                   |         r2 ^= r3;
    0x0000732c mov.w r3, 0                   |         r3 = 0;
                                             |         if (r2 != r3) {
    0x00007330 bne.w 0x753c                  |             goto label_15;
                                             |         }
    0x00007334 mov r0, r5                    |         r0 = r5;
    0x00007336 add sp, 0x8c                  |         
    0x00007338 pop {r4, r5, r6, r7, pc}      |         
                                             | label_11:
    0x0000733a ldr r0, [pc, 0x22c]           |         
    0x0000733c movs r5, 0                    |         r5 = 0;
    0x0000733e str r5, [sp]                  |         *(sp) = r5;
    0x00007340 add r0, pc                    |         r0 = 0xe8ae;
    0x00007342 blx 0x1a34                    |         fcn_00001a34 ();
    0x00007346 str r0, [sp, 4]               |         var_4h = r0;
    0x00007348 cmp r0, 0                     |         
                                             |         if (r0 == 0) {
    0x0000734a beq 0x73f0                    |             goto label_16;
                                             |         }
    0x0000734c ldr r2, [pc, 0x21c]           |         
    0x0000734e movs r3, 0x40                 |         r3 = 0x40;
    0x00007350 mov r1, sp                    |         r1 = sp;
    0x00007352 add r0, sp, 4                 |         r0 += var_4h;
    0x00007354 add r2, pc                    |         r2 = "LC_ADDRESS";
    0x00007356 bl 0x5124                     |         r0 = fcn_00005124 (r0, r1, "LC_ADDRESS", r3);
    0x0000735a cmp r0, 0                     |         
                                             |         if (r0 <= 0) {
    0x0000735c ble 0x73f0                    |             goto label_16;
                                             |         }
    0x0000735e ldrd r0, r3, [sp]             |         __asm ("ldrd r0, r3, [sp]");
    0x00007362 cmp r3, 0                     |         
                                             |         if (r3 == 0) {
    0x00007364 beq 0x73f2                    |             goto label_17;
                                             |         }
    0x00007366 add r2, sp, 8                 |         r2 += var_8h;
    0x00007368 mov r1, r5                    |         r1 = r5;
    0x0000736a bl 0x91a8                     |         r0 = fcn_000091a8 (r0, r1, r2);
    0x0000736e cmp r0, 0                     |         
                                             |         if (r0 < 0) {
    0x00007370 blt 0x73f0                    |             goto label_16;
                                             |         }
    0x00007372 ldr r0, [sp, 4]               |         r0 = var_4h;
    0x00007374 add r2, sp, 0x10              |         r2 += var_10h;
    0x00007376 mov r1, r5                    |         r1 = r5;
    0x00007378 bl 0x91a8                     |         fcn_000091a8 (r0, r1, r2);
    0x0000737a vsub.i16 d2, d6, d0           |         __asm ("vsub.i16 d2, d6, d0");
                                             |         if (r0 < 0) {
    0x0000737e blt 0x73f0                    |             goto label_16;
                                             |         }
    0x00007380 add r1, sp, 0x18              |         r1 += var_18h;
    0x00007382 movs r0, 2                    |         r0 = 2;
    0x00007384 blx 0x1c6c                    |         r0 = libc_current_sigrtmin ();
    0x00007388 cmp r0, 0                     |         
                                             |         if (r0 < 0) {
    0x0000738a blt 0x73f0                    |             goto label_16;
                                             |         }
    0x0000738c ldrd r5, r2, [sp, 0x18]       |         __asm ("ldrd r5, r2, [var_18h]");
    0x00007390 ldr r1, [sp, 8]               |         r1 = var_8h;
    0x00007392 ldr r3, [sp, 0xc]             |         r3 = var_ch;
    0x00007394 ldr r0, [sp]                  |         r0 = *(sp);
    0x00007396 cmp r2, r3                    |         
    0x00007398 it eq                         |         
                                             |         if (r2 == r3) {
    0x0000739a cmpeq r5, r1                  |             __asm ("cmpeq r5, r1");
                                             |         }
                                             |         if (r2 != r3) {
    0x0000739c bne 0x73f2                    |             goto label_17;
                                             |         }
    0x0000739e ldrd r5, r2, [sp, 0x78]       |         __asm ("ldrd r5, r2, [var_78h]");
    0x000073a2 ldrd r1, r3, [sp, 0x10]       |         __asm ("ldrd r1, r3, [var_10h]");
    0x000073a6 cmp r2, r3                    |         
    0x000073a8 it eq                         |         
                                             |         if (r2 == r3) {
    0x000073aa cmpeq r5, r1                  |             __asm ("cmpeq r5, r1");
                                             |         }
                                             |         if (r2 != r3) {
    0x000073ac bne 0x73f2                    |             goto label_17;
                                             |         }
    0x000073ae blx 0x18cc                    |         fcn_000018cc ();
    0x000073b2 ldr r3, [pc, 0x1bc]           |         
    0x000073b4 add r3, pc                    |         
    0x000073b6 ldr r3, [r3]                  |         r3 = *(0xe92a);
    0x000073b8 b 0x72d2                      |         
                                             |     } while (1);
                                             | label_12:
    0x000073ba cmp r3, 7                     |     
                                             |     if (r3 != 7) {
    0x000073bc bne 0x7444                    |         goto label_18;
                                             |     }
                                             | label_13:
    0x000073be ldr r3, [pc, 0x1b4]           |     
    0x000073c0 add r3, pc                    |     
    0x000073c2 ldr r3, [r3]                  |     r3 = *(0xe93a);
    0x000073c4 cmp r3, 0                     |     
    0x000073c6 it ge                         |     
                                             |     if (r3 < 0) {
    0x000073c8 movge r5, 0                   |         r5 = 0;
                                             |     }
                                             |     if (r3 < 0) {
    0x000073ca blt 0x7436                    |         goto label_19;
                                             |     }
                                             | label_3:
    0x000073cc ldr r7, [pc, 0x1a8]           |     
    0x000073ce add r7, pc                    |     r7 = 0xe94a;
    0x000073d0 ldr r0, [r7]                  |     r0 = *(0xe94a);
    0x000073d2 bl 0x5718                     |     fcn_00005718 (r0);
    0x000073d6 ldr r3, [pc, 0x1a4]           |     
    0x000073d8 str r0, [r7]                  |     *(r7) = r0;
    0x000073da add r3, pc                    |     r3 = 0xe95c;
    0x000073dc ldr r0, [r3]                  |     r0 = *(0xe95c);
    0x000073de cmp r0, 2                     |     
                                             |     if (r0 <= 2) {
    0x000073e0 ble.w 0x751a                  |         goto label_20;
                                             |     }
    0x000073e4 bl 0x5718                     |     fcn_00005718 (r0);
                                             | label_7:
    0x000073e8 ldr r3, [pc, 0x194]           |     
    0x000073ea add r3, pc                    |     r3 = 0xe96e;
    0x000073ec str r0, [r3]                  |     *(r3) = r0;
    0x000073ee b 0x7318                      |     goto label_0;
                                             | label_16:
    0x000073f0 ldr r0, [sp]                  |     r0 = *(sp);
                                             | label_17:
    0x000073f2 blx 0x18cc                    |     fcn_000018cc ();
    0x000073f6 ldr r3, [pc, 0x18c]           |     
    0x000073f8 add r3, pc                    |     
    0x000073fa ldr r3, [r3]                  |     r3 = *(0xe982);
    0x000073fc subs r2, r3, 2                |     r2 = r3 - 2;
    0x000073fe cmp r2, 4                     |     
                                             |     if (r2 > 4) {
    0x00007400 bhi.w 0x72fa                  |         goto label_1;
                                             |     }
    0x00007404 b 0x72d2                      |     goto label_2;
                                             | label_10:
    0x00007406 ldr r7, [pc, 0x180]           |     
    0x00007408 ldr r5, [pc, 0x180]           |     
    0x0000740a add r7, pc                    |     r7 = 0xe998;
    0x0000740c add r5, pc                    |     r5 = 0xe99c;
    0x0000740e ldr r0, [r7]                  |     r0 = *(0xe998);
    0x00007410 bl 0x5718                     |     fcn_00005718 (r0);
    0x00007414 str r0, [r7]                  |     *(r7) = r0;
    0x00007416 ldr r0, [r5]                  |     r0 = *(0xe99c);
    0x00007418 bl 0x5718                     |     fcn_00005718 (r0);
    0x0000741c ldr r3, [pc, 0x170]           |     
    0x0000741e str r0, [r5]                  |     *(r5) = r0;
    0x00007420 add r3, pc                    |     r3 = 0xe9b4;
    0x00007422 ldr r0, [r3]                  |     r0 = *(0xe9b4);
    0x00007424 cmp r0, 2                     |     
                                             |     if (r0 <= 2) {
    0x00007426 ble 0x74e8                    |         goto label_21;
                                             |     }
    0x00007428 bl 0x5718                     |     fcn_00005718 (r0);
                                             | label_5:
    0x0000742c ldr r3, [pc, 0x164]           |     
    0x0000742e movs r5, 0                    |     r5 = 0;
    0x00007430 add r3, pc                    |     r3 = 0xe9c8;
    0x00007432 str r0, [r3]                  |     *(r3) = r0;
    0x00007434 b 0x7318                      |     goto label_0;
                                             | label_19:
    0x00007436 bl 0x7250                     |     r0 = fcn_00007250 ();
    0x0000743a subs r5, r0, 0                |     r5 = r0 - 0;
                                             |     if (r5 >= r0) {
    0x0000743c bge 0x73cc                    |         goto label_3;
                                             |     }
    0x0000743e ldr r3, [pc, 0x158]           |     
    0x00007440 add r3, pc                    |     
    0x00007442 ldr r3, [r3]                  |     r3 = *(0xe9de);
                                             | label_18:
    0x00007444 subs r2, r3, 5                |     r2 = r3 - 5;
    0x00007446 cmp r2, 1                     |     
                                             |     if (r2 > 1) {
    0x00007448 bhi.w 0x72e2                  |         goto label_4;
                                             |     }
    0x0000744c ldr r7, [pc, 0x14c]           |     
    0x0000744e add r7, pc                    |     r7 = 0xe9ee;
    0x00007450 ldr r3, [r7]                  |     r3 = *(0xe9ee);
    0x00007452 cmp r3, 0                     |     
    0x00007454 it ge                         |     
                                             |     if (r3 < 0) {
    0x00007456 movge r5, 0                   |         r5 = 0;
                                             |     }
    0x00007458 blt 0x74aa                    |     
                                             |     while (1) {
                                             | label_6:
    0x0000745a ldr r7, [pc, 0x144]           |         
    0x0000745c add r7, pc                    |         r7 = 0xea02;
    0x0000745e ldr r0, [r7]                  |         r0 = *(0xea02);
    0x00007460 bl 0x5718                     |         fcn_00005718 (r0);
    0x00007464 ldr r3, [pc, 0x13c]           |         
    0x00007466 str r0, [r7]                  |         *(r7) = r0;
    0x00007468 add r3, pc                    |         r3 = "<%i>";
    0x0000746a ldr r0, [r3]                  |         r0 = "<%i>";
    0x0000746c cmp r0, 2                     |         
                                             |         if (r0 <= 2) {
    0x0000746e ble 0x7540                    |             goto label_22;
                                             |         }
    0x00007470 bl 0x5718                     |         fcn_00005718 (r0);
                                             | label_9:
    0x00007474 ldr r3, [pc, 0x130]           |         
    0x00007476 add r3, pc                    |         r3 = 0xea22;
    0x00007478 str r0, [r3]                  |         *(r3) = r0;
    0x0000747a b 0x7318                      |         goto label_0;
                                             | label_14:
    0x0000747c ldr r7, [pc, 0x12c]           |         
    0x0000747e add r7, pc                    |         r7 = 0xea2e;
    0x00007480 ldr r0, [r7]                  |         r0 = *(0xea2e);
    0x00007482 bl 0x5718                     |         fcn_00005718 (r0);
    0x00007486 str r0, [r7]                  |         *(r7) = r0;
    0x00007488 ldr r7, [pc, 0x124]           |         
    0x0000748a add r7, pc                    |         r7 = 0xea3e;
    0x0000748c ldr r0, [r7]                  |         r0 = imp.__progname;
    0x0000748e bl 0x5718                     |         fcn_00005718 (r0);
    0x00007492 ldr r3, [pc, 0x120]           |         
    0x00007494 str r0, [r7]                  |         *(r7) = r0;
    0x00007496 add r3, pc                    |         r3 = 0xea50;
    0x00007498 ldr r0, [r3]                  |         r0 = *(0xea50);
    0x0000749a cmp r0, 2                     |         
                                             |         if (r0 <= 2) {
    0x0000749c ble 0x7520                    |             goto label_23;
                                             |         }
    0x0000749e bl 0x5718                     |         fcn_00005718 (r0);
                                             | label_8:
    0x000074a2 ldr r3, [pc, 0x114]           |         
    0x000074a4 add r3, pc                    |         r3 = 0xea62;
    0x000074a6 str r0, [r3]                  |         *(r3) = r0;
    0x000074a8 b 0x7318                      |         goto label_0;
    0x000074aa movs r0, 2                    |         r0 = 2;
    0x000074ac bl 0x6dcc                     |         r0 = fcn_00006dcc (r0, r1);
    0x000074b0 cmp r0, 0                     |         
    0x000074b2 mov r3, r0                    |         r3 = r0;
    0x000074b4 str r0, [r7]                  |         *(r7) = r0;
                                             |         if (r0 < 0) {
    0x000074b6 blt 0x74d4                    |             goto label_24;
                                             |         }
    0x000074b8 ldr r5, [pc, 0x100]           |         
    0x000074ba movs r2, 0xb                  |         r2 = 0xb;
    0x000074bc add r5, pc                    |         r5 = "Assertion '%s' failed at %s:%u, function %s(). Aborting.";
    0x000074be mov r1, r5                    |         r1 = r5;
    0x000074c0 blx 0x1ccc                    |         r0 = strspn (r0, r1);
    0x000074c4 cmp r0, 0                     |         
                                             |         if (r0 < 0) {
    0x000074c6 blt 0x74ee                    |             goto label_25;
                                             |         }
    0x000074c8 ldr r3, [pc, 0xf4]            |         
    0x000074ca movs r2, 0                    |         r2 = 0;
    0x000074cc mov r5, r2                    |         r5 = r2;
    0x000074ce add r3, pc                    |         r3 = 0xea92;
    0x000074d0 strb r2, [r3]                 |         *(r3) = r2;
    0x000074d2 b 0x745a                      |         
                                             |     }
                                             |     do {
                                             | label_24:
    0x000074d4 mov r0, r3                    |         r0 = r3;
    0x000074d6 bl 0x5718                     |         fcn_00005718 (r0);
    0x000074da ldr r2, [pc, 0xe8]            |         
    0x000074dc ldr r3, [pc, 0xe8]            |         
    0x000074de add r2, pc                    |         r2 = 0xeaa8;
    0x000074e0 add r3, pc                    |         
    0x000074e2 str r0, [r2]                  |         *(r2) = r0;
    0x000074e4 ldr r3, [r3]                  |         r3 = *(0xeaac);
    0x000074e6 b 0x72e2                      |         goto label_4;
                                             | label_21:
    0x000074e8 mov.w r0, -1                  |         r0 = -1;
    0x000074ec b 0x742c                      |         goto label_5;
                                             | label_25:
    0x000074ee ldr r0, [r7]                  |         r0 = *(r7);
    0x000074f0 bl 0x5718                     |         fcn_00005718 (r0);
    0x000074f4 movs r0, 1                    |         r0 = 1;
    0x000074f6 bl 0x6dcc                     |         r0 = fcn_00006dcc (r0, r1);
    0x000074fa cmp r0, 0                     |         
    0x000074fc mov r3, r0                    |         r3 = r0;
    0x000074fe str r0, [r7]                  |         *(r7) = r0;
    0x00007500 blt 0x74d4                    |         
                                             |     } while (r0 < 0);
    0x00007502 mov r1, r5                    |     r1 = r5;
    0x00007504 movs r2, 0xb                  |     r2 = 0xb;
    0x00007506 blx 0x1ccc                    |     r0 = strspn (r0, r1);
    0x0000750a cmp r0, 0                     |     
                                             |     if (r0 >= 0) {
    0x0000750c blt 0x7526                    |         
    0x0000750e ldr r3, [pc, 0xbc]            |         
    0x00007510 movs r2, 1                    |         r2 = 1;
    0x00007512 movs r5, 0                    |         r5 = 0;
    0x00007514 add r3, pc                    |         r3 = 0xeae6;
    0x00007516 strb r2, [r3]                 |         *(r3) = r2;
    0x00007518 b 0x745a                      |         goto label_6;
                                             | label_20:
    0x0000751a mov.w r0, -1                  |         r0 = -1;
    0x0000751e b 0x73e8                      |         goto label_7;
                                             | label_23:
    0x00007520 mov.w r0, -1                  |         r0 = -1;
    0x00007524 b 0x74a2                      |         goto label_8;
                                             |     }
    0x00007526 ldr r5, [r4]                  |     r5 = *(r4);
    0x00007528 ldr r0, [r7]                  |     r0 = *(r7);
    0x0000752a bl 0x5718                     |     fcn_00005718 (r0);
    0x0000752e cmp r5, 0                     |     
    0x00007530 str r0, [r7]                  |     *(r7) = r0;
                                             |     if (r5 > 0) {
    0x00007532 ble 0x7546                    |         
    0x00007534 ldr r3, [pc, 0x98]            |         
    0x00007536 add r3, pc                    |         
    0x00007538 ldr r3, [r3]                  |         r3 = *(0xeb0a);
    0x0000753a b 0x72e2                      |         goto label_4;
                                             | label_15:
    0x0000753c blx 0x1954                    |         parse_printf_format ();
                                             | label_22:
    0x00007540 mov.w r0, -1                  |         r0 = -1;
    0x00007544 b 0x7474                      |         goto label_9;
                                             |     }
    0x00007546 rsbs r5, r5, 0                |     r5 -= ;
    0x00007548 b 0x745a                      |     goto label_6;
                                             | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/udev/scsi_id @ 0x765c */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.0000765c ()                                      | void fcn_0000765c (int16_t arg_308h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int32_t var_4h_4;
                                                                 |     int32_t var_ch;
                                                                 |     int32_t var_ch_2;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_24h;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_2ch;
                                                                 |     int32_t var_0h_2;
                                                                 |     int32_t var_0h_3;
                                                                 |     int32_t var_4h_2;
                                                                 |     int16_t var_0h_4;
                                                                 |     int32_t var_4h_3;
                                                                 |     char * var_74h;
                                                                 |     char * var_84h;
                                                                 |     char * var_94h;
                                                                 |     char * s;
                                                                 |     int16_t var_1bch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x0000765c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00007660 mov r6, r3                                        |     r6 = r3;
    0x00007662 ldr r5, [pc, 0x268]                               |     
    0x00007664 sub sp, 0x1c4                                     |     
    0x00007666 add.w sb, sp, 0x24                                |     sb += var_24h;
    0x0000766a add.w sl, sp, 0x28                                |     sl += var_28h;
    0x0000766e ldr r4, [pc, 0x260]                               |     r4 = *(0x78d2);
    0x00007670 ldr r3, [pc, 0x260]                               |     
    0x00007672 add r5, pc                                        |     r5 = 0xef44;
    0x00007674 ldr r4, [r5, r4]                                  |     
    0x00007676 add r3, pc                                        |     
    0x00007678 ldr r3, [r3]                                      |     r3 = *(0xef4e);
    0x0000767a ldr r4, [r4]                                      |     r4 = *(0xef44);
    0x0000767c str r4, [sp, 0x1bc]                               |     var_1bch = r4;
    0x0000767e mov.w r4, 0                                       |     r4 = 0;
    0x00007682 movs r4, 0                                        |     r4 = 0;
    0x00007684 str r1, [sp, 0x1c]                                |     var_1ch = r1;
    0x00007686 cmp r3, r4                                        |     
    0x00007688 str.w r4, [sb]                                    |     __asm ("str.w r4, [sb]");
    0x0000768c str.w r4, [sl]                                    |     __asm ("str.w r4, [sl]");
                                                                 |     if (r3 < r4) {
    0x00007690 blt 0x7780                                        |         goto label_6;
                                                                 |     }
    0x00007692 ldr r3, [pc, 0x244]                               |     
    0x00007694 mov r8, r2                                        |     r8 = r2;
    0x00007696 mov r7, r0                                        |     r7 = r0;
    0x00007698 add r3, pc                                        |     r3 = 0xef76;
    0x0000769a ldr r2, [r3]                                      |     r2 = *(0xef76);
    0x0000769c cmp r2, 1                                         |     
    0x0000769e it ne                                             |     
                                                                 |     if (r2 == 1) {
    0x000076a0 addne r5, sp, 0x2c                                |         r5 += var_2ch;
                                                                 |     }
                                                                 |     if (r2 == 1) {
    0x000076a2 beq.w 0x7888                                      |         goto label_10;
                                                                 |     }
                                                                 | label_7:
    0x000076a6 ldr r3, [pc, 0x234]                               |     
    0x000076a8 add r3, pc                                        |     r3 = 0xef8a;
    0x000076aa ldrb r3, [r3]                                     |     r3 = *(r3);
    0x000076ac cmp r3, 0                                         |     
    0x000076ae bne 0x779c                                        |     
                                                                 |     while (r0 == 0) {
                                                                 | label_0:
    0x000076b0 ldr r3, [pc, 0x22c]                               |         
    0x000076b2 add r3, pc                                        |         r3 = 0xef96;
    0x000076b4 ldrb r3, [r3]                                     |         r3 = *(r3);
    0x000076b6 cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x000076b8 bne.w 0x7828                                      |             goto label_11;
                                                                 |         }
                                                                 | label_4:
    0x000076bc bl 0x7648                                         |         r0 = fcn_00007648 ();
    0x000076c0 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x000076c2 bne.w 0x77e8                                      |             goto label_12;
                                                                 |         }
    0x000076c6 ldr r3, [pc, 0x21c]                               |         
    0x000076c8 add r3, pc                                        |         r3 = 0xefb2;
    0x000076ca ldrb r3, [r3]                                     |         r3 = *(r3);
                                                                 |         if (r3 != 0) {
    0x000076cc cbz r3, 0x770a                                    |             
                                                                 | label_2:
    0x000076ce ldr r3, [pc, 0x218]                               |             
    0x000076d0 add r3, pc                                        |             r3 = 0xefbe;
    0x000076d2 mov r7, r3                                        |             r7 = r3;
                                                                 | label_3:
    0x000076d4 strd r8, r3, [sp, 0xc]                            |             __asm ("strd r8, r3, [var_ch]");
    0x000076d8 movs r2, 1                                        |             r2 = 1;
    0x000076da ldr r3, [sp, 0x1c]                                |             r3 = var_1ch;
    0x000076dc add.w r8, r4, 1                                   |             r8 = r4 + 1;
    0x000076e0 strd r7, r3, [sp, 4]                              |             __asm ("strd r7, r3, [var_4h]");
    0x000076e4 add r7, sp, 0xbc                                  |             r7 += s;
    0x000076e6 ldr r3, [pc, 0x204]                               |             
    0x000076e8 mov r0, r7                                        |             r0 = r7;
    0x000076ea add r3, pc                                        |             r3 = 0xefdc;
    0x000076ec str r3, [sp]                                      |             *(sp) = r3;
    0x000076ee mov.w r3, 0x100                                   |             r3 = 0x100;
    0x000076f2 mov r1, r3                                        |             r1 = r3;
    0x000076f4 blx 0x1cd8                                        |             fcn_00001cd8 ();
    0x000076f8 mov r0, r7                                        |             r0 = r7;
    0x000076fa blx 0x1abc                                        |             strchr (r0, r1);
    0x000076fe str.w r7, [r5, r4, lsl 3]                         |             __asm ("str.w r7, [r5, r4, lsl 3]");
    0x00007702 add.w r4, r5, r4, lsl 3                           |             r4 = r5 + (r4 << 3);
    0x00007706 str r0, [r4, 4]                                   |             var_4h_2 = r0;
    0x00007708 mov r4, r8                                        |             r4 = r8;
                                                                 |         }
                                                                 | label_1:
    0x0000770a ldr.w r7, [sb]                                    |         r7 = *(sb);
                                                                 |         if (r7 != 0) {
    0x0000770e cbz r7, 0x7722                                    |             
    0x00007710 mov r0, r7                                        |             r0 = r7;
    0x00007712 blx 0x1abc                                        |             strchr (r0, r1);
    0x00007716 add.w r3, r5, r4, lsl 3                           |             r3 = r5 + (r4 << 3);
    0x0000771a str.w r7, [r5, r4, lsl 3]                         |             __asm ("str.w r7, [r5, r4, lsl 3]");
    0x0000771e adds r4, 1                                        |             r4++;
    0x00007720 str r0, [r3, 4]                                   |             var_4h_2 = r0;
                                                                 |         }
    0x00007722 mov r0, r6                                        |         r0 = r6;
    0x00007724 adds r7, r4, 1                                    |         r7 = r4 + 1;
    0x00007726 blx 0x1abc                                        |         strchr (r0, r1);
    0x0000772a str.w r6, [r5, r4, lsl 3]                         |         __asm ("str.w r6, [r5, r4, lsl 3]");
    0x0000772e add.w r3, r5, r4, lsl 3                           |         r3 = r5 + (r4 << 3);
    0x00007732 ldr.w r6, [sl]                                    |         r6 = *(sl);
    0x00007736 str r0, [r3, 4]                                   |         var_4h_2 = r0;
    0x00007738 cmp r6, 0                                         |         
                                                                 |         if (r6 == 0) {
    0x0000773a beq.w 0x7858                                      |             goto label_13;
                                                                 |         }
    0x0000773e mov r0, r6                                        |         r0 = r6;
    0x00007740 adds r4, 2                                        |         r4 += 2;
    0x00007742 blx 0x1abc                                        |         strchr (r0, r1);
    0x00007746 str.w r6, [r5, r7, lsl 3]                         |         __asm ("str.w r6, [r5, r7, lsl 3]");
    0x00007748 str r7, [r6]                                      |         *(r6) = r7;
    0x0000774a add.w r7, r5, r7, lsl 3                           |         r7 = r5 + (r7 << 3);
    0x0000774e str r0, [r7, 4]                                   |         var_4h_3 = r0;
                                                                 | label_5:
    0x00007750 ldr r3, [pc, 0x19c]                               |         
    0x00007752 add.w r2, r5, r4, lsl 3                           |         r2 = r5 + (r4 << 3);
    0x00007756 ldr r6, [pc, 0x19c]                               |         
    0x00007758 adds r4, 1                                        |         r4++;
    0x0000775a add r3, pc                                        |         r3 = 0xf04e;
    0x0000775c adds r3, 8                                        |         r3 += 8;
    0x0000775e add r6, pc                                        |         r6 = 0xf058;
    0x00007760 ldm.w r3, {r0, r1}                                |         r0 = *(r3);
                                                                 |         r1 = *((r3 + 4));
    0x00007764 stm.w r2, {r0, r1}                                |         *(r2) = r0;
                                                                 |         *((r2 + 4)) = r1;
    0x00007768 mov r2, r4                                        |         r2 = r4;
    0x0000776a ldr r0, [r6]                                      |         r0 = *(0xf058);
    0x0000776c mov r1, r5                                        |         r1 = r5;
    0x0000776e blx 0x1bc4                                        |         r0 = getauxval ();
    0x00007772 cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x00007774 bge 0x7780                                        |             
    0x00007776 blx 0x1b04                                        |             r0 = sprintf_chk ()
    0x0000777a ldr r3, [r0]                                      |             r3 = *(r0);
    0x0000777c cmp r3, 5                                         |             
                                                                 |             if (r3 == 5) {
    0x0000777e beq 0x785c                                        |                 goto label_14;
                                                                 |             }
                                                                 |         }
                                                                 | label_6:
    0x00007780 ldr r2, [pc, 0x174]                               |         
    0x00007782 ldr r3, [pc, 0x14c]                               |         r3 = *(0x78d2);
    0x00007784 add r2, pc                                        |         r2 = 0xf080;
    0x00007786 ldr r3, [r2, r3]                                  |         r3 = *(0xf080);
    0x00007788 ldr r2, [r3]                                      |         r2 = *(0xf080);
    0x0000778a ldr r3, [sp, 0x1bc]                               |         r3 = var_1bch;
    0x0000778c eors r2, r3                                       |         r2 ^= r3;
    0x0000778e mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00007792 bne.w 0x78c6                                      |             goto label_15;
                                                                 |         }
    0x00007796 add sp, 0x1c4                                     |         
    0x00007798 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
    0x0000779c movs r0, 0                                        |         r0 = 0;
    0x0000779e add.w fp, sp, 0x94                                |         
    0x000077a2 bl 0xb5b0                                         |         fcn_0000b5b0 (r0);
    0x000077a6 mov r3, r1                                        |         r3 = r1;
    0x000077a8 movs r1, 0                                        |         r1 = 0;
    0x000077aa mov r2, r0                                        |         r2 = r0;
    0x000077ac str r1, [sp]                                      |         *(sp) = r1;
    0x000077ae mov r0, fp                                        |         r0 = fp;
    0x000077b0 movs r1, 0x26                                     |         r1 = 0x26;
    0x000077b2 bl 0xb9c4                                         |         r0 = fcn_0000b9c4 (r0, r1, r2, r3, r4);
    0x000077b6 cmp r0, 0                                         |         
    0x000077b8 beq.w 0x76b0                                      |         
                                                                 |     }
    0x000077bc mov r0, fp                                        |     r0 = fp;
    0x000077be blx 0x1abc                                        |     strchr (r0, r1);
    0x000077c2 ldr r2, [pc, 0x138]                               |     
    0x000077c4 mov ip, r0                                        |     
    0x000077c6 adds r3, r4, 1                                    |     r3 = r4 + 1;
    0x000077c8 str.w fp, [r5, r4, lsl 3]                         |     __asm ("str.w fp, [r5, r4, lsl 3]");
    0x000077cc add.w r3, r5, r3, lsl 3                           |     r3 = r5 + (r3 << 3);
    0x000077d0 add r2, pc                                        |     r2 = 0xf0d2;
    0x000077d2 adds r2, 0x10                                     |     r2 += 0x10;
    0x000077d4 ldm.w r2, {r0, r1}                                |     r0 = *(r2);
                                                                 |     r1 = *((r2 + 4));
    0x000077d8 add.w r2, r5, r4, lsl 3                           |     r2 = r5 + (r4 << 3);
    0x000077dc adds r4, 2                                        |     r4 += 2;
    0x000077de str.w ip, [r2, 4]                                 |     __asm ("str.w ip, [var_0h_2]");
    0x000077e2 stm.w r3, {r0, r1}                                |     *(r3) = r0;
                                                                 |     *((r3 + 4)) = r1;
    0x000077e6 b 0x76b0                                          |     goto label_0;
                                                                 | label_12:
    0x000077e8 movs r3, 0                                        |     r3 = 0;
    0x000077ea and r0, r7, 7                                     |     r0 = r7 & 7;
    0x000077ee mov r2, sl                                        |     r2 = sl;
    0x000077f0 mov r1, sb                                        |     r1 = sb;
    0x000077f2 bl 0xb3c4                                         |     fcn_0000b3c4 (r0, r1, r2, r3);
    0x000077f6 ldr r3, [pc, 0x108]                               |     
    0x000077f8 add r3, pc                                        |     r3 = 0xf0fe;
    0x000077fa ldrb r3, [r3]                                     |     r3 = *(r3);
    0x000077fc cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000077fe beq 0x770a                                        |         goto label_1;
                                                                 |     }
    0x00007800 bl 0x7648                                         |     r0 = fcn_00007648 ();
    0x00007804 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00007806 beq.w 0x76ce                                      |         goto label_2;
                                                                 |     }
    0x0000780a bl 0xb340                                         |     r0 = fcn_0000b340 ();
    0x0000780e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00007810 beq 0x78ba                                        |         goto label_16;
                                                                 |     }
    0x00007812 cmp r0, 0x10                                      |     
                                                                 |     if (r0 != 0x10) {
    0x00007814 bne 0x78b4                                        |         goto label_17;
                                                                 |     }
    0x00007816 ldr r7, [pc, 0xec]                                |     
    0x00007818 add r7, pc                                        |     r7 = 0xf122;
                                                                 | label_8:
    0x0000781a bl 0xb340                                         |     r0 = fcn_0000b340 ();
    0x0000781e cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00007820 bne 0x78ae                                        |         goto label_18;
                                                                 |     }
    0x00007822 ldr r3, [pc, 0xe4]                                |     
    0x00007824 add r3, pc                                        |     r3 = 0xf132;
    0x00007826 b 0x76d4                                          |     goto label_3;
                                                                 | label_11:
    0x00007828 blx 0x18c0                                        |     fcn_000018c0 ();
    0x0000782c ldr r3, [pc, 0xdc]                                |     
    0x0000782e add.w fp, sp, 0x84                                |     
    0x00007830 lsrs r4, r0, 0xe                                  |     r4 = r0 >> 0xe;
    0x00007832 movs r2, 1                                        |     r2 = 1;
    0x00007834 str r0, [sp, 4]                                   |     var_4h = r0;
    0x00007836 mov r0, fp                                        |     r0 = fp;
    0x00007838 add r3, pc                                        |     r3 = 0xf148;
    0x0000783a str r3, [sp]                                      |     *(sp) = r3;
    0x0000783c movs r3, 0x10                                     |     r3 = 0x10;
    0x0000783e mov r1, r3                                        |     r1 = r3;
    0x00007840 blx 0x1cd8                                        |     fcn_00001cd8 ();
    0x00007844 mov r0, fp                                        |     r0 = fp;
    0x00007846 blx 0x1abc                                        |     strchr (r0, r1);
    0x0000784a add.w r3, r5, r4, lsl 3                           |     r3 = r5 + (r4 << 3);
    0x0000784e str.w fp, [r5, r4, lsl 3]                         |     __asm ("str.w fp, [r5, r4, lsl 3]");
    0x00007852 adds r4, 1                                        |     r4++;
    0x00007854 str r0, [r3, 4]                                   |     var_0h_2 = r0;
    0x00007856 b 0x76bc                                          |     goto label_4;
                                                                 | label_13:
    0x00007858 mov r4, r7                                        |     r4 = r7;
    0x0000785a b 0x7750                                          |     goto label_5;
                                                                 | label_14:
    0x0000785c bl 0x9624                                         |     r0 = fcn_00009624 (r0);
    0x00007860 cmp r0, 1                                         |     
                                                                 |     if (r0 != 1) {
    0x00007862 bne 0x7780                                        |         goto label_6;
                                                                 |     }
    0x00007864 ldr r0, [r6]                                      |     r0 = *(r6);
    0x00007866 cmp r0, 2                                         |     
                                                                 |     if (r0 <= 2) {
    0x00007868 ble 0x78c0                                        |         goto label_19;
                                                                 |     }
    0x0000786a bl 0x5718                                         |     fcn_00005718 (r0);
                                                                 | label_9:
    0x0000786e ldr r6, [pc, 0xa0]                                |     
    0x00007870 add r6, pc                                        |     r6 = 0xf186;
    0x00007872 str r0, [r6]                                      |     *(r6) = r0;
    0x00007874 bl 0x6eac                                         |     fcn_00006eac ();
    0x00007878 ldr r0, [r6]                                      |     r0 = imp.__progname;
    0x0000787a cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x0000787c blt 0x7780                                        |         goto label_6;
                                                                 |     }
    0x0000787e mov r2, r4                                        |     r2 = r4;
    0x00007880 mov r1, r5                                        |     r1 = r5;
    0x00007882 blx 0x1bc4                                        |     getauxval ();
    0x00007886 b 0x7780                                          |     goto label_6;
                                                                 | label_10:
    0x00007888 ldr r3, [pc, 0x88]                                |     
    0x0000788a add.w fp, sp, 0x74                                |     
    0x0000788e str r0, [sp, 4]                                   |     var_4h = r0;
    0x00007890 mov r0, fp                                        |     r0 = fp;
    0x00007892 mov r4, r2                                        |     r4 = r2;
    0x00007894 add r5, sp, 0x2c                                  |     r5 += var_2ch;
    0x00007896 add r3, pc                                        |     r3 = 0xf1ae;
    0x00007898 str r3, [sp]                                      |     *(sp) = r3;
    0x0000789a movs r3, 0xf                                      |     r3 = 0xf;
    0x0000789c mov r1, r3                                        |     r1 = r3;
    0x0000789e blx 0x1cd8                                        |     fcn_00001cd8 ();
    0x000078a2 mov r0, fp                                        |     r0 = fp;
    0x000078a4 blx 0x1abc                                        |     r0 = strchr (r0, r1);
    0x000078a8 strd fp, r0, [r5]                                 |     __asm ("strd fp, r0, [r5]");
    0x000078ac b 0x76a6                                          |     goto label_7;
                                                                 | label_18:
    0x000078ae ldr r3, [pc, 0x68]                                |     
    0x000078b0 add r3, pc                                        |     r3 = 0xf1ce;
    0x000078b2 b 0x76d4                                          |     goto label_3;
                                                                 | label_17:
    0x000078b4 ldr r7, [pc, 0x64]                                |     
    0x000078b6 add r7, pc                                        |     r7 = 0xf1d6;
    0x000078b8 b 0x781a                                          |     goto label_8;
                                                                 | label_16:
    0x000078ba ldr r7, [pc, 0x64]                                |     
    0x000078bc add r7, pc                                        |     r7 = 0xf1e2;
    0x000078be b 0x781a                                          |     goto label_8;
                                                                 | label_19:
    0x000078c0 mov.w r0, -1                                      |     r0 = -1;
    0x000078c4 b 0x786e                                          |     goto label_9;
                                                                 | label_15:
    0x000078c6 blx 0x1954                                        |     parse_printf_format ();
    0x000078ca nop                                               |     
    0x000078cc adr r7, 0x2b8                                     |     r7 = 0x2b8;
    0x000078ce movs r1, r0                                       |     r1 = r0;
    0x000078d0 lsls r0, r6, 6                                    |     r0 = r6 << 6;
    0x000078d2 movs r0, r0                                       |     
    0x000078d4 add r3, sp, 0x308                                 |     r3 += arg_308h;
    0x000078d6 movs r1, r0                                       |     r1 = r0;
    0x000078d8 invalid                                           |     
                                                                 | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/udev/scsi_id @ 0x7924 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00007924 ()                                  | void fcn_00007924 (int16_t arg_148h, int16_t arg_14ch, int16_t arg_150h, int16_t arg_154h, int16_t arg_158h, int16_t arg_15ch, int16_t arg_81ch, int16_t arg_848h, int16_t arg_84ch, uint32_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                             |     int16_t var_0h;
                                                             |     int16_t var_4h;
                                                             |     int16_t var_8h;
                                                             |     int16_t var_ch;
                                                             |     int16_t var_10h;
                                                             |     int16_t var_14h;
                                                             |     int16_t var_1ch;
                                                             |     int16_t var_20h;
                                                             |     int16_t var_24h;
                                                             |     int16_t var_28h;
                                                             |     int16_t var_2ch;
                                                             |     int16_t var_30h;
                                                             |     int16_t var_34h;
                                                             |     int16_t var_38h;
                                                             |     int16_t var_3ch;
                                                             |     int16_t var_44h;
                                                             |     int16_t var_48h;
                                                             |     int32_t var_48h_2;
                                                             |     int16_t var_50h;
                                                             |     int16_t var_54h;
                                                             |     int32_t var_58h;
                                                             |     int32_t var_58h_2;
                                                             |     int16_t var_60h;
                                                             |     int16_t var_64h;
                                                             |     int16_t var_90h;
                                                             |     int16_t var_94h;
                                                             |     int16_t var_98h;
                                                             |     int16_t var_9ch;
                                                             |     int16_t var_a0h;
                                                             |     int32_t var_a4h;
                                                             |     int32_t var_a4h_2;
                                                             |     int16_t var_ach;
                                                             |     int16_t var_b0h;
                                                             |     int16_t var_b4h;
                                                             |     char * var_b8h;
                                                             |     char * s;
                                                             |     char * var_dch;
                                                             |     int16_t var_11ch;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x00007924 svcmi 0xf0e92d                                |     __asm ("svcmi 0xf0e92d");
    0x00007928 mov r8, r2                                    |     r8 = r2;
    0x0000792a sub sp, 0x124                                 |     
    0x0000792c ldr r2, [pc, 0x36c]                           |     
    0x0000792e mov sb, r3                                    |     sb = r3;
    0x00007930 ldr r4, [sp, 0x148]                           |     r4 = *(arg_148h);
    0x00007932 ldr r3, [pc, 0x36c]                           |     r3 = *(0x7ca2);
    0x00007934 add r2, pc                                    |     r2 = "TTOU";
    0x00007936 strd r1, r4, [sp, 0x20]                       |     __asm ("strd r1, r4, [var_20h]");
    0x0000793a ldr r3, [r2, r3]                              |     
    0x0000793c ldr r4, [sp, 0x15c]                           |     r4 = *(arg_15ch);
    0x0000793e ldr r3, [r3]                                  |     r3 = "TTOU";
    0x00007940 str r3, [sp, 0x11c]                           |     var_11ch = r3;
    0x00007942 mov.w r3, 0                                   |     r3 = 0;
    0x00007946 ldr r3, [pc, 0x35c]                           |     
    0x00007948 add r3, pc                                    |     r3 = 0xf5f2;
    0x0000794a str r3, [sp, 0x38]                            |     var_38h = r3;
    0x0000794c ldr r3, [sp, 0x14c]                           |     r3 = *(arg_14ch);
    0x0000794e str r3, [sp, 0x28]                            |     var_28h = r3;
    0x00007950 ldr r3, [sp, 0x150]                           |     r3 = *(arg_150h);
    0x00007952 str r3, [sp, 0x2c]                            |     var_2ch = r3;
    0x00007954 ldr r3, [sp, 0x154]                           |     r3 = *(arg_154h);
    0x00007956 str r3, [sp, 0x30]                            |     var_30h = r3;
    0x00007958 ldr r3, [sp, 0x158]                           |     r3 = *(arg_158h);
    0x0000795a str r3, [sp, 0x34]                            |     var_34h = r3;
    0x0000795c cmp r4, 0                                     |     
                                                             |     if (r4 == 0) {
    0x0000795e beq.w 0x7d6a                                  |         goto label_15;
                                                             |     }
    0x00007962 ldr r3, [pc, 0x344]                           |     
    0x00007964 add r3, pc                                    |     
    0x00007966 ldr r3, [r3]                                  |     r3 = *(0xf612);
    0x00007968 cmp r3, 8                                     |     
                                                             |     if (r3 == 8) {
    0x0000796a beq.w 0x7a82                                  |         goto label_13;
                                                             |     }
    0x0000796e tst.w r0, 0x3f8                               |     
    0x00007972 mov r7, r0                                    |     r7 = r0;
                                                             |     if ((arg_148hx3f8 & undefined) == 0) {
    0x00007974 bne 0x797e                                    |         
    0x00007976 ldr r3, [pc, 0x334]                           |         
    0x00007978 add r3, pc                                    |         
    0x0000797a ldr r3, [r3]                                  |         r3 = *(0xf62a);
    0x0000797c orrs r7, r3                                   |         r7 |= r3;
                                                             |     }
    0x0000797e ldr r3, [pc, 0x330]                           |     
    0x00007980 add r3, pc                                    |     r3 = 0xf636;
    0x00007982 ldrb r3, [r3]                                 |     r3 = *(r3);
    0x00007984 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00007986 bne.w 0x7c8e                                  |         goto label_16;
                                                             |     }
                                                             | label_9:
    0x0000798a ldr r3, [pc, 0x328]                           |     
    0x0000798c add r3, pc                                    |     r3 = 0xf646;
    0x0000798e str r3, [sp, 0x1c]                            |     var_1ch = r3;
                                                             |     do {
                                                             | label_0:
    0x00007990 ldr r6, [pc, 0x324]                           |         
    0x00007992 mov r0, r4                                    |         r0 = r4;
    0x00007994 add r6, pc                                    |         r6 = "siphash24_finalize";
    0x00007996 mov r1, r6                                    |         r1 = r6;
    0x00007998 blx 0x1ce4                                    |         fcn_00001ce4 ();
    0x0000799c ldrb r3, [r4, r0]                             |         r3 = *((r4 + r0));
    0x0000799e adds r5, r4, r0                               |         r5 = r4 + r0;
    0x000079a0 cmp r3, 0                                     |         
                                                             |         if (r3 == 0) {
    0x000079a2 beq 0x7a76                                    |             goto label_1;
                                                             |         }
    0x000079a4 mov r1, r6                                    |         r1 = r6;
    0x000079a6 mov r0, r5                                    |         r0 = r5;
    0x000079a8 blx 0x1c54                                    |         fstat64 ();
    0x000079aa ldrd r4, r6, [r4, -0x10]                      |         __asm ("ldrd r4, r6, [r4, -0x10]");
                                                             |         if (r0 != 0) {
    0x000079ae cbz r0, 0x79b6                                |             
    0x000079b0 movs r3, 0                                    |             r3 = 0;
    0x000079b2 strb r3, [r4], 1                              |             *(r4) = r3;
                                                             |             r4++;
                                                             |         }
    0x000079b6 ldr r3, [pc, 0x304]                           |         
    0x000079b8 add r3, pc                                    |         
    0x000079ba ldr r3, [r3]                                  |         r3 = *(0xf67a);
    0x000079bc cmp r3, 4                                     |         
                                                             |         if (r3 > 4) {
    0x000079be bgt.w 0x7acc                                  |             goto label_17;
                                                             |         }
    0x000079c2 cmp r3, 2                                     |         
                                                             |         if (r3 > 2) {
    0x000079c4 bgt.w 0x7c28                                  |             goto label_18;
                                                             |         }
                                                             | label_2:
    0x000079c8 cmp r3, 7                                     |         
                                                             |         if (r3 > 7) {
    0x000079ca bhi 0x7ab8                                    |             goto label_7;
                                                             |         }
    0x000079cc movs r2, 0xd4                                 |         r2 = 0xd4;
    0x000079ce lsr.w r3, r2, r3                              |         r3 = r2 >> r3;
    0x000079d2 lsls r3, r3, 0x1f                             |         r3 <<= 0x1f;
                                                             |         if (r3 >= r3) {
    0x000079d4 bpl 0x7ab8                                    |             goto label_7;
                                                             |         }
                                                             | label_8:
    0x000079d6 ldr r6, [pc, 0x2e8]                           |         
    0x000079d8 add r6, pc                                    |         r6 = 0xf69e;
    0x000079da ldr r3, [r6]                                  |         r3 = *(0xf69e);
    0x000079dc cmp r3, 0                                     |         
                                                             |         if (r3 < 0) {
    0x000079de blt 0x7ab8                                    |             goto label_7;
                                                             |         }
    0x000079e0 ldr r0, [pc, 0x2b0]                           |         
    0x000079e2 add r0, pc                                    |         r0 = 0xf67a;
    0x000079e4 blx 0x1c78                                    |         fseek (r0, r1, r2);
    0x000079e6 strd r4, fp, [r8, -0x2ac]                     |         __asm ("strd r4, fp, [r8, -0x2ac]");
    0x000079ea add r0, r3                                    |         r0 += r3;
    0x000079ec bl 0x9d84                                     |         r0 = fcn_00009d84 (r0, r1);
    0x000079f0 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x000079f2 beq 0x7ab8                                    |             goto label_7;
                                                             |         }
    0x000079f4 ldr r3, [pc, 0x2cc]                           |         
    0x000079f6 add.w fp, sp, 0xc8                            |         
    0x000079fa movs r2, 1                                    |         r2 = 1;
    0x000079fc mov r0, fp                                    |         r0 = fp;
    0x000079fe str r7, [sp, 4]                               |         var_4h = r7;
    0x00007a00 add.w sl, sp, 0xdc                            |         sl += var_dch;
    0x00007a04 add r3, pc                                    |         r3 = 0xf6cc;
    0x00007a06 str r3, [sp]                                  |         *(sp) = r3;
    0x00007a08 movs r3, 0xf                                  |         r3 = 0xf;
    0x00007a0a mov r1, r3                                    |         r1 = r3;
    0x00007a0c blx 0x1cd8                                    |         fcn_00001cd8 ();
    0x00007a10 bl 0x9624                                     |         fcn_00009624 (r0);
    0x00007a14 ldr r3, [pc, 0x2b0]                           |         
    0x00007a16 movs r2, 1                                    |         r2 = 1;
    0x00007a18 str r0, [sp, 4]                               |         var_4h = r0;
    0x00007a1a mov r0, sl                                    |         r0 = sl;
    0x00007a1c add r3, pc                                    |         r3 = 0xf6e8;
    0x00007a1e str r3, [sp]                                  |         *(sp) = r3;
    0x00007a20 movs r3, 0x11                                 |         r3 = 0x11;
    0x00007a22 mov r1, r3                                    |         r1 = r3;
    0x00007a24 blx 0x1cd8                                    |         fcn_00001cd8 ();
    0x00007a28 mov r0, fp                                    |         r0 = fp;
    0x00007a2a str.w fp, [sp, 0x90]                          |         __asm ("str.w fp, [var_90h]");
    0x00007a2e blx 0x1abc                                    |         strchr (r0, r1);
    0x00007a32 ldr r2, [sp, 0x38]                            |         r2 = var_38h;
    0x00007a34 ldr r3, [pc, 0x294]                           |         r3 = *(0x7ccc);
    0x00007a36 str r0, [sp, 0x94]                            |         var_94h = r0;
    0x00007a38 ldr r3, [r2, r3]                              |         r3 = *((r2 + r3));
    0x00007a3a ldr r0, [r3]                                  |         r0 = *(0x7ccc);
    0x00007a3c str r0, [sp, 0x98]                            |         var_98h = r0;
    0x00007a3e blx 0x1abc                                    |         strchr (r0, r1);
    0x00007a42 strd r0, sl, [sp, 0x9c]                       |         __asm ("strd r0, sl, [var_9ch]");
    0x00007a46 mov r0, sl                                    |         r0 = sl;
    0x00007a48 blx 0x1abc                                    |         strchr (r0, r1);
    0x00007a4c strd r0, r5, [sp, 0xa4]                       |         __asm ("strd r0, r5, [var_a4h]");
    0x00007a50 mov r0, r5                                    |         r0 = r5;
    0x00007a52 blx 0x1abc                                    |         strchr (r0, r1);
    0x00007a56 ldr r3, [pc, 0x278]                           |         
    0x00007a58 movs r2, 5                                    |         r2 = 5;
    0x00007a5a str r0, [sp, 0xac]                            |         var_ach = r0;
    0x00007a5c add r1, sp, 0x90                              |         r1 += var_90h;
    0x00007a5e ldr r0, [r6]                                  |         r0 = *(r6);
    0x00007a60 add r3, pc                                    |         r3 = 0xf736;
    0x00007a62 str r3, [sp, 0xb0]                            |         var_b0h = r3;
    0x00007a64 movs r3, 1                                    |         r3 = 1;
    0x00007a66 str r3, [sp, 0xb4]                            |         var_b4h = r3;
    0x00007a68 blx 0x1bc4                                    |         r0 = getauxval ();
    0x00007a6c cmp r0, 0                                     |         
                                                             |         if (r0 < 0) {
    0x00007a6e blt.w 0x7d82                                  |             goto label_19;
                                                             |         }
                                                             | label_3:
    0x00007a72 cmp r4, 0                                     |         
    0x00007a74 bne 0x7990                                    |         
                                                             |     } while (r4 != 0);
                                                             | label_1:
    0x00007a76 ldr r3, [pc, 0x25c]                           |     
    0x00007a78 add r3, pc                                    |     r3 = 0xf752;
    0x00007a7a ldrb r3, [r3]                                 |     r3 = *(r3);
    0x00007a7c cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00007a7e bne.w 0x7d64                                  |         goto label_20;
                                                             |     }
    0x00007a80 strh r1, [r6, 0xa]                            |     *((r6 + 0xa)) = r1;
                                                             | label_13:
    0x00007a82 ldr r2, [pc, 0x254]                           |     
    0x00007a84 ldr r3, [pc, 0x218]                           |     r3 = *(0x7ca0);
    0x00007a86 ldr r0, [sp, 0x20]                            |     r0 = var_20h;
    0x00007a88 add r2, pc                                    |     r2 = 0xf766;
    0x00007a8a ldr r3, [r2, r3]                              |     r3 = *(0xf766);
    0x00007a8c cmp r0, 0                                     |     
    0x00007a8e it lt                                         |     
                                                             |     if (r0 < 0) {
    0x00007a90 rsblt r0, r0, 0                               |         __asm ("rsblt r0, r0, 0");
                                                             |     }
    0x00007a92 uxtb r0, r0                                   |     r0 = (int8_t) r0;
    0x00007a94 ldr r2, [r3]                                  |     r2 = *(0xf766);
    0x00007a96 ldr r3, [sp, 0x11c]                           |     r3 = var_11ch;
    0x00007a98 eors r2, r3                                   |     r2 ^= r3;
    0x00007a9a mov.w r3, 0                                   |     r3 = 0;
    0x00007a9e rsb.w r0, r0, 0                               |     r0 -= ;
                                                             |     if (r2 != r3) {
    0x00007aa2 bne.w 0x7d9a                                  |         goto label_21;
                                                             |     }
    0x00007aa6 add sp, 0x124                                 |     
    0x00007aa8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |     
                                                             | label_14:
    0x00007aac ldr r0, [r6]                                  |     r0 = *(r6);
    0x00007aae bl 0x5718                                     |     fcn_00005718 (r0);
    0x00007ab2 str r0, [r6]                                  |     *(r6) = r0;
    0x00007ab4 bl 0x6eac                                     |     fcn_00006eac ();
                                                             | label_7:
    0x00007ab8 mov r3, r5                                    |     r3 = r5;
    0x00007aba mov r2, sb                                    |     r2 = sb;
    0x00007abc mov r1, r8                                    |     r1 = r8;
    0x00007abe mov r0, r7                                    |     r0 = r7;
    0x00007ac0 bl 0x765c                                     |     fcn_0000765c (r0, r1, r2, r3, r4);
    0x00007ac4 cmp r4, 0                                     |     
                                                             |     if (r4 != 0) {
    0x00007ac6 bne.w 0x7990                                  |         goto label_0;
                                                             |     }
    0x00007aca b 0x7a76                                      |     goto label_1;
                                                             | label_17:
    0x00007acc cmp r3, 7                                     |     
                                                             |     if (r3 == 7) {
    0x00007ace beq.w 0x7c28                                  |         goto label_18;
                                                             |     }
    0x00007ad2 subs r2, r3, 5                                |     r2 = r3 - 5;
    0x00007ad4 cmp r2, 1                                     |     
                                                             |     if (r2 > 1) {
    0x00007ad6 bhi.w 0x79c8                                  |         goto label_2;
                                                             |     }
                                                             | label_6:
    0x00007ada ldr r3, [pc, 0x200]                           |     
    0x00007adc add r3, pc                                    |     
    0x00007ade ldr r3, [r3]                                  |     r3 = *(0xf7be);
    0x00007ae0 cmp r3, 0                                     |     
                                                             |     if (r3 < 0) {
    0x00007ae2 blt.w 0x7d5c                                  |         goto label_22;
                                                             |     }
    0x00007ae6 ldr r3, [pc, 0x1f8]                           |     
    0x00007ae8 add r6, sp, 0xb8                              |     r6 += var_b8h;
    0x00007aea movs r2, 1                                    |     r2 = 1;
    0x00007aec mov r0, r6                                    |     r0 = r6;
    0x00007aee str r7, [sp, 4]                               |     var_4h = r7;
    0x00007af0 add.w sl, sp, 0x64                            |     sl += var_64h;
    0x00007af4 add r3, pc                                    |     r3 = 0xf7da;
    0x00007af6 str r3, [sp]                                  |     *(sp) = r3;
    0x00007af8 movs r3, 0xf                                  |     r3 = 0xf;
    0x00007afa mov r1, r3                                    |     r1 = r3;
    0x00007afc blx 0x1cd8                                    |     fcn_00001cd8 ();
    0x00007b00 movs r0, 0                                    |     r0 = 0;
    0x00007b02 bl 0xb5b0                                     |     fcn_0000b5b0 (r0);
    0x00007b06 movw r2, 0x4240                               |     
    0x00007b0a movs r3, 0                                    |     r3 = 0;
    0x00007b0c movt r2, 0xf                                  |     r2 = 0xf4240;
    0x00007b10 bl 0xd150                                     |     fcn_0000d150 (r0, r1, r2, r3);
    0x00007b14 mov r1, sl                                    |     r1 = sl;
    0x00007b16 str r0, [sp, 0x44]                            |     var_44h = r0;
    0x00007b18 add r0, sp, 0x44                              |     r0 += var_44h;
    0x00007b1a blx 0x19a4                                    |     r0 = fcn_000019a4 ();
    0x00007b1e cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00007b20 beq.w 0x7d1c                                  |         goto label_23;
                                                             |     }
    0x00007b24 ldr r2, [pc, 0x1bc]                           |     
    0x00007b26 add.w fp, sp, 0xdc                            |     
    0x00007b2a mov r3, sl                                    |     r3 = sl;
    0x00007b2c movs r1, 0x40                                 |     r1 = 0x40;
    0x00007b2e mov r0, fp                                    |     r0 = fp;
    0x00007b30 add r2, pc                                    |     r2 = 0xf818;
    0x00007b32 blx 0x1a58                                    |     r0 = fcn_00001a58 ();
    0x00007b36 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00007b38 beq.w 0x7d1c                                  |         goto label_23;
                                                             |     }
    0x00007b3c bl 0x9624                                     |     fcn_00009624 (r0);
    0x00007b40 ldr r3, [pc, 0x1a4]                           |     
    0x00007b42 add.w sl, sp, 0xc8                            |     sl += s;
    0x00007b46 movs r2, 1                                    |     r2 = 1;
    0x00007b48 str r0, [sp, 4]                               |     var_4h = r0;
    0x00007b4a mov r0, sl                                    |     r0 = sl;
    0x00007b4c add r3, pc                                    |     r3 = "strnpcpy";
    0x00007b4e str r3, [sp]                                  |     *(sp) = r3;
    0x00007b50 movs r3, 0x11                                 |     r3 = 0x11;
    0x00007b52 mov r1, r3                                    |     r1 = r3;
    0x00007b54 blx 0x1cd8                                    |     fcn_00001cd8 ();
    0x00007b58 mov r0, r6                                    |     r0 = r6;
    0x00007b5a str r6, [sp, 0x90]                            |     var_90h = r6;
    0x00007b5c blx 0x1abc                                    |     strchr (r0, r1);
    0x00007b60 strd r0, fp, [sp, 0x94]                       |     __asm ("strd r0, fp, [var_0hx94]");
    0x00007b64 mov r0, fp                                    |     r0 = fp;
    0x00007b66 blx 0x1abc                                    |     strchr (r0, r1);
    0x00007b6a ldr r2, [sp, 0x38]                            |     r2 = var_38h;
    0x00007b6c add.w fp, sp, 0x48                            |     
    0x00007b70 ldr r3, [pc, 0x158]                           |     r3 = *(0x7ccc);
    0x00007b72 str r0, [sp, 0x9c]                            |     var_9ch = r0;
    0x00007b74 ldr r3, [r2, r3]                              |     r3 = *((r2 + r3));
    0x00007b76 ldr r0, [r3]                                  |     r0 = *(0x7ccc);
    0x00007b78 str r0, [sp, 0xa0]                            |     var_a0h = r0;
    0x00007b7a blx 0x1abc                                    |     strchr (r0, r1);
    0x00007b7e strd r0, sl, [sp, 0xa4]                       |     __asm ("strd r0, sl, [var_a4h]");
    0x00007b82 mov r0, sl                                    |     r0 = sl;
    0x00007b84 blx 0x1abc                                    |     strchr (r0, r1);
    0x00007b88 strd r0, r5, [sp, 0xac]                       |     __asm ("strd r0, r5, [var_ach]");
    0x00007b8c mov r0, r5                                    |     r0 = r5;
    0x00007b8e blx 0x1abc                                    |     strchr (r0, r1);
    0x00007b92 ldr r3, [pc, 0x158]                           |     
    0x00007b94 add.w sl, sp, 0x90                            |     sl += var_90h;
    0x00007b98 str r0, [sp, 0xb4]                            |     var_b4h = r0;
    0x00007b9a str.w sl, [sp, 0x50]                          |     __asm ("str.w sl, [var_50h]");
    0x00007b9e add r3, pc                                    |     r3 = "auth";
    0x00007ba0 ldrb r2, [r3]                                 |     r2 = *(r3);
    0x00007ba2 movs r3, 0                                    |     r3 = 0;
    0x00007ba4 strd r3, r3, [sp, 0x48]                       |     __asm ("strd r3, r3, [var_48h]");
    0x00007ba8 strd r3, r3, [sp, 0x58]                       |     __asm ("strd r3, r3, [var_58h]");
    0x00007bac str r3, [sp, 0x60]                            |     var_60h = r3;
    0x00007bae movs r3, 5                                    |     r3 = 5;
    0x00007bb0 str r3, [sp, 0x54]                            |     var_54h = r3;
                                                             |     if (r2 != 0) {
    0x00007bb2 cbz r2, 0x7bb8                                |         
    0x00007bb4 adds r0, 1                                    |         r0++;
    0x00007bb6 str r0, [sp, 0xb4]                            |         var_b4h = r0;
                                                             |     }
    0x00007bb8 ldr r3, [pc, 0x134]                           |     
    0x00007bba str r5, [sp, 0x3c]                            |     var_3ch = r5;
    0x00007bbc mov r5, fp                                    |     r5 = fp;
    0x00007bbe mov fp, sl                                    |     
    0x00007bc0 add r3, pc                                    |     r3 = "authpriv";
    0x00007bc2 mov sl, r3                                    |     sl = r3;
                                                             | label_4:
    0x00007bc4 ldr.w r0, [sl]                                |     r0 = *(sl);
    0x00007bc8 mov.w r2, 0x4000                              |     r2 = 0x4000;
    0x00007bcc mov r1, r5                                    |     r1 = r5;
    0x00007bce blx 0x192c                                    |     r0 = fcn_0000192c ();
    0x00007bd2 subs.w ip, r0, 0                              |     
                                                             |     if (ip < r0) {
    0x00007bd6 blt.w 0x7d08                                  |         goto label_24;
                                                             |     }
    0x00007bda ldr r3, [sp, 0x1c]                            |     r3 = var_1ch;
    0x00007bdc ldrb r3, [r3]                                 |     r3 = *(r3);
    0x00007bde cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00007be0 beq.w 0x7a72                                  |         goto label_3;
                                                             |     }
    0x00007be4 mov r1, ip                                    |     r1 = ip;
    0x00007be6 mov r3, fp                                    |     r3 = fp;
                                                             | label_5:
    0x00007be8 ldr r2, [r3, 4]                               |     r2 = var_94h;
                                                             |     if (r2 == 0) {
    0x00007bea cbz r2, 0x7c08                                |         goto label_25;
                                                             |     }
    0x00007bec cmp r1, 0                                     |     
                                                             |     if (r1 == 0) {
    0x00007bee beq 0x7bc4                                    |         goto label_4;
                                                             |     }
    0x00007bf0 cmp r2, r1                                    |     
    0x00007bf2 ldr r0, [r3]                                  |     r0 = *(r3);
    0x00007bf4 mov ip, r2                                    |     
    0x00007bf6 it hs                                         |     
                                                             |     if (r2 < r1) {
    0x00007bf8 movhs ip, r1                                  |         
                                                             |     }
    0x00007bfa sub.w r1, r1, ip                              |     r1 -= ip;
    0x00007bfe sub.w r2, r2, ip                              |     r2 -= ip;
    0x00007c02 add r0, ip                                    |     r0 += ip;
    0x00007c04 str r2, [r3, 4]                               |     var_94h = r2;
    0x00007c06 str r0, [r3]                                  |     *(r3) = r0;
                                                             | label_25:
    0x00007c08 adds r3, 8                                    |     r3 += 8;
    0x00007c0a cmp r3, r6                                    |     
                                                             |     if (r3 != r6) {
    0x00007c0c bne 0x7be8                                    |         goto label_5;
                                                             |     }
    0x00007c0e cmp r1, 0                                     |     
                                                             |     if (r1 == 0) {
    0x00007c10 beq.w 0x7a72                                  |         goto label_3;
                                                             |     }
    0x00007c14 ldr r1, [pc, 0xdc]                            |     
    0x00007c16 movs r2, 0x36                                 |     r2 = 0x36;
    0x00007c18 ldr r3, [pc, 0xdc]                            |     
    0x00007c1a ldr r0, [pc, 0xe0]                            |     
    0x00007c1c add r1, pc                                    |     r1 = 0xf914;
    0x00007c1e add r3, pc                                    |     r3 = 0xf91a;
    0x00007c20 adds r1, 7                                    |     r1 += 7;
    0x00007c22 add r0, pc                                    |     r0 = 0xf924;
    0x00007c24 bl 0x7f50                                     |     fcn_00007f50 (r0, r1, r2, r3);
                                                             | label_18:
    0x00007c28 ldr r3, [sp, 0x34]                            |     r3 = var_34h;
    0x00007c2a mov r2, r8                                    |     r2 = r8;
    0x00007c2c ldr r1, [sp, 0x20]                            |     r1 = var_20h;
    0x00007c2e mov r0, r7                                    |     r0 = r7;
    0x00007c30 str r5, [sp, 0x14]                            |     var_14h = r5;
    0x00007c32 str r3, [sp, 0x10]                            |     var_10h = r3;
    0x00007c34 ldr r3, [sp, 0x30]                            |     r3 = var_30h;
    0x00007c36 str r3, [sp, 0xc]                             |     var_ch = r3;
    0x00007c38 ldr r3, [sp, 0x2c]                            |     r3 = var_2ch;
    0x00007c3a str r3, [sp, 8]                               |     var_8h = r3;
    0x00007c3c ldr r3, [sp, 0x28]                            |     r3 = var_28h;
    0x00007c3e str r3, [sp, 4]                               |     var_4h = r3;
    0x00007c40 ldr r3, [sp, 0x24]                            |     r3 = var_24h;
    0x00007c42 str r3, [sp]                                  |     *(sp) = r3;
    0x00007c44 mov r3, sb                                    |     r3 = sb;
    0x00007c46 bl 0x7130                                     |     r0 = fcn_00007130 (r0, r1, r2, r3, r4, r5, r6);
    0x00007c4a adds.w r3, r0, 0xb                            |     r3 = r0 + 0xb;
    0x00007c4c lsls r3, r1, 0xc                              |     r3 = r1 << 0xc;
    0x00007c4e it ne                                         |     
                                                             |     if (r3 == r1) {
    0x00007c50 movne r3, 1                                   |         r3 = 1;
                                                             |     }
    0x00007c52 ands.w r3, r3, r0, lsr 31                     |     r3 &= (r0 >> 31);
    0x00007c54 strb r0, [r2, 0xf]                            |     *((r2 + 0xf)) = r0;
                                                             |     if (r3 != r3) {
    0x00007c56 bne 0x7d40                                    |         goto label_26;
                                                             |     }
    0x00007c58 ldr r3, [pc, 0xa4]                            |     
    0x00007c5a add r3, pc                                    |     
    0x00007c5c ldr r3, [r3]                                  |     r3 = *(0xf95e);
    0x00007c5e subs r3, 5                                    |     r3 -= 5;
    0x00007c60 cmp r3, 1                                     |     
                                                             |     if (r3 < 1) {
    0x00007c62 bls.w 0x7ada                                  |         goto label_6;
                                                             |     }
                                                             | label_10:
    0x00007c66 cmp r0, 0                                     |     
                                                             |     if (r0 > 0) {
    0x00007c68 bgt.w 0x7a72                                  |         goto label_3;
                                                             |     }
    0x00007c6c ldr r3, [pc, 0x94]                            |     
    0x00007c6e add r3, pc                                    |     r3 = 0xf976;
    0x00007c70 ldr r2, [r3]                                  |     r2 = *(0xf976);
    0x00007c72 cmp r2, 7                                     |     
                                                             |     if (r2 > 7) {
    0x00007c74 bhi.w 0x7ab8                                  |         goto label_7;
                                                             |     }
    0x00007c78 movs r3, 0xd4                                 |     r3 = 0xd4;
    0x00007c7a lsrs r3, r2                                   |     r3 >>= r2;
    0x00007c7c lsls r1, r3, 0x1f                             |     r1 = r3 << 0x1f;
                                                             |     if (r1 >= r3) {
    0x00007c7e bpl.w 0x7ab8                                  |         goto label_7;
                                                             |     }
    0x00007c82 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00007c84 beq.w 0x79d6                                  |         goto label_8;
                                                             |     }
                                                             | label_11:
    0x00007c88 bl 0x6e64                                     |     fcn_00006e64 ();
    0x00007c8c b 0x79d6                                      |     goto label_8;
                                                             | label_16:
    0x00007c8e bl 0x72a0                                     |     fcn_000072a0 ();
    0x00007c92 b 0x798a                                      |     goto label_9;
                                                             | label_24:
    0x00007d08 blx 0x1b04                                    |     r0 = sprintf_chk ()
    0x00007d0c ldr r0, [r0]                                  |     r0 = *(r0);
    0x00007d0e ldr r5, [sp, 0x3c]                            |     r5 = var_3ch;
    0x00007d10 cmp r0, 0xb                                   |     
    0x00007d12 it ne                                         |     
                                                             |     if (r0 != 0xb) {
    0x00007d14 cmpne r0, 0                                   |         __asm ("cmpne r0, 0");
                                                             |     }
    0x00007d16 it le                                         |     
                                                             |     if (r0 > 0xb) {
    0x00007d18 rsble r0, r0, 0                               |         __asm ("rsble r0, r0, 0");
                                                             |         goto label_27;
                                                             |     }
                                                             |     if (r0 <= 0xb) {
                                                             | label_27:
    0x00007d1a ble 0x7c66                                    |         goto label_10;
                                                             |     }
                                                             | label_23:
    0x00007d1c ldr r6, [pc, 0x80]                            |     
    0x00007d1e add r6, pc                                    |     r6 = 0xfac2;
    0x00007d20 ldr r0, [r6]                                  |     r0 = *(0xfac2);
    0x00007d22 bl 0x5718                                     |     fcn_00005718 (r0);
    0x00007d26 ldr r3, [pc, 0x7c]                            |     
    0x00007d28 str r0, [r6]                                  |     *(r6) = r0;
    0x00007d2a add r3, pc                                    |     
    0x00007d2c ldr r3, [r3]                                  |     r3 = imp.__progname;
                                                             | label_12:
    0x00007d2e cmp r3, 7                                     |     
                                                             |     if (r3 > 7) {
    0x00007d30 bhi.w 0x7ab8                                  |         goto label_7;
                                                             |     }
    0x00007d34 movs r2, 0xd4                                 |     r2 = 0xd4;
    0x00007d36 lsr.w r3, r2, r3                              |     r3 = r2 >> r3;
    0x00007d3a lsls r2, r3, 0x1f                             |     r2 = r3 << 0x1f;
                                                             |     if (r2 < r3) {
    0x00007d3c bmi 0x7c88                                    |         goto label_11;
                                                             |     }
    0x00007d3e b 0x7ab8                                      |     goto label_7;
                                                             | label_26:
    0x00007d40 ldr r6, [pc, 0x64]                            |     
    0x00007d42 add r6, pc                                    |     r6 = 0xfaee;
    0x00007d44 ldr r0, [r6]                                  |     r0 = *(0xfaee);
    0x00007d46 bl 0x5718                                     |     fcn_00005718 (r0);
    0x00007d4a ldr r3, [pc, 0x60]                            |     
    0x00007d4c str r0, [r6]                                  |     *(r6) = r0;
    0x00007d4e add r3, pc                                    |     
    0x00007d50 ldr r3, [r3]                                  |     r3 = *(0xfb00);
    0x00007d52 subs r2, r3, 5                                |     r2 = r3 - 5;
    0x00007d54 cmp r2, 1                                     |     
                                                             |     if (r2 < 1) {
    0x00007d56 bls.w 0x7ada                                  |         goto label_6;
                                                             |     }
    0x00007d5a b 0x7d2e                                      |     goto label_12;
                                                             | label_22:
    0x00007d5c ldr r3, [pc, 0x50]                            |     
    0x00007d5e add r3, pc                                    |     
    0x00007d60 ldr r3, [r3]                                  |     r3 = *(0xfb12);
    0x00007d62 b 0x79c8                                      |     goto label_2;
                                                             | label_20:
    0x00007d64 bl 0x75d4                                     |     fcn_000075d4 ();
    0x00007d68 b 0x7a82                                      |     goto label_13;
                                                             | label_15:
    0x00007d6a ldr r3, [pc, 0x48]                            |     
    0x00007d6c movs r2, 7                                    |     r2 = 7;
    0x00007d6e ldr r4, [sp, 0x38]                            |     r4 = var_38h;
    0x00007d70 movs r1, 1                                    |     r1 = 1;
    0x00007d72 ldr r0, [pc, 0x44]                            |     
    0x00007d74 ldr r3, [r4, r3]                              |     r3 = *((r4 + r3));
    0x00007d76 add r0, pc                                    |     r0 = 0xfb34;
    0x00007d78 ldr r3, [r3]                                  |     r3 = *(0x7db6);
    0x00007d7a blx 0x19c8                                    |     fcn_000019c8 ();
    0x00007d7e blx 0x1cb4                                    |     r0 = connect (r0, r1, r2);
                                                             | label_19:
    0x00007d82 blx 0x1b04                                    |     r0 = sprintf_chk ()
    0x00007d86 ldr r3, [r0]                                  |     r3 = *(r0);
    0x00007d88 cmp r3, 0                                     |     
                                                             |     if (r3 > 0) {
    0x00007d8a bgt.w 0x7aac                                  |         goto label_14;
                                                             |     }
                                                             |     if (r3 == 0) {
    0x00007d8e beq.w 0x7ab8                                  |         goto label_7;
                                                             |     }
    0x00007d92 cmp r4, 0                                     |     
                                                             |     if (r4 != 0) {
    0x00007d94 bne.w 0x7990                                  |         goto label_0;
                                                             |     }
    0x00007d98 b 0x7a76                                      |     goto label_1;
                                                             | label_21:
    0x00007d9a blx 0x1954                                    |     parse_printf_format ();
    0x00007d9e nop                                           |     
    0x00007da0 adr r5, 0xc8                                  |     r5 = 0xc8;
    0x00007da2 movs r1, r0                                   |     r1 = r0;
    0x00007da4 add sp, 0xe8                                  |     
    0x00007da6 movs r1, r0                                   |     r1 = r0;
    0x00007da8 adr r4, 0x3e8                                 |     r4 = 0x3e8;
    0x00007daa movs r1, r0                                   |     r1 = r0;
    0x00007dac add sp, 0x58                                  |     
    0x00007dae movs r1, r0                                   |     r1 = r0;
    0x00007db0 add sp, 0x18                                  |     
    0x00007db2 movs r1, r0                                   |     r1 = r0;
    0x00007db4 lsls r0, r7, 6                                |     r0 = r7 << 6;
    0x00007db6 movs r0, r0                                   |     
    0x00007db8 ldr r2, [r6, 0x48]                            |     r2 = *((r6 + 0x48));
    0x00007dba 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/udev/scsi_id @ 0x7dbc */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00007dbc ()                                  | void fcn_00007dbc (int16_t arg_81ch, int16_t arg_848h, int16_t arg_84ch, int16_t arg_850h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                             |     int16_t var_0h_2;
                                                             |     int16_t var_4h_2;
                                                             |     int16_t var_8h;
                                                             |     int16_t var_10h;
                                                             |     int16_t var_14h_2;
                                                             |     int32_t var_81ch;
                                                             |     int16_t var_0h;
                                                             |     int16_t var_4h;
                                                             |     int16_t var_28h;
                                                             |     int16_t var_14h;
                                                             |     int16_t var_1ch;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x00007dbc svcmi 0xf0e92d                                |     __asm ("svcmi 0xf0e92d");
    0x00007dc0 mov r6, r0                                    |     r6 = r0;
    0x00007dc2 ldr r0, [pc, 0xac]                            |     
    0x00007dc4 mov r7, r1                                    |     r7 = r1;
    0x00007dc6 subw sp, sp, 0x824                            |     __asm ("subw sp, sp, 0x824");
    0x00007dca mov r8, r2                                    |     r8 = r2;
    0x00007dcc ldr r1, [pc, 0xa4]                            |     r1 = *(0x7e74);
    0x00007dce mov sb, r3                                    |     sb = r3;
    0x00007dd0 add r0, pc                                    |     r0 = 0xfc46;
    0x00007dd2 eor.w r4, r7, r7, asr 31                      |     r4 = r7 ^ (r7 >> 31);
    0x00007dd6 ldr.w sl, [sp, 0x848]                         |     sl = *(arg_848h);
    0x00007dda ldr r1, [r0, r1]                              |     
    0x00007ddc sub.w r4, r4, r7, asr 31                      |     r4 -= (r7 >> 31);
    0x00007de0 uxtb r4, r4                                   |     r4 = (int8_t) r4;
    0x00007de2 ldr r1, [r1]                                  |     r1 = *(0xfc46);
    0x00007de4 str.w r1, [sp, 0x81c]                         |     __asm ("str.w r1, [arg_81ch]");
    0x00007de8 mov.w r1, 0                                   |     r1 = 0;
    0x00007dec blx 0x1b04                                    |     sprintf_chk ()
    0x00007df0 ldr r3, [pc, 0x84]                            |     
    0x00007df2 and r2, r6, 7                                 |     r2 = r6 & 7;
    0x00007df6 ldr.w r1, [sp, 0x84c]                         |     r1 = *(arg_84ch);
    0x00007dfa mov r5, r0                                    |     r5 = r0;
    0x00007dfc ldr.w fp, [r0]                                |     fp = *(0xfc46);
    0x00007e00 add r3, pc                                    |     
    0x00007e02 ldr r3, [r3]                                  |     r3 = *(0xfc7c);
    0x00007e04 cmp r2, r3                                    |     
                                                             |     if (r2 <= r3) {
    0x00007e06 ble 0x7e32                                    |         goto label_0;
                                                             |     }
    0x00007e08 rsbs r0, r4, 0                                |     r0 = r4 - ;
                                                             |     do {
    0x00007e0a ldr r2, [pc, 0x70]                            |         
    0x00007e0c cmp.w fp, 0                                   |         
    0x00007e10 ldr r3, [pc, 0x60]                            |         r3 = *(0x7e74);
    0x00007e12 it ge                                         |         
                                                             |         if (fp < 0) {
    0x00007e14 strge fp, [r5]                                |             *(r5) = fp;
                                                             |         }
    0x00007e18 add r2, pc                                    |         r2 = 0xfc9a;
    0x00007e1a ldr r3, [r2, r3]                              |         r3 = *(0xfc9a);
    0x00007e1c ldr r2, [r3]                                  |         r2 = *(0xfc9a);
    0x00007e1e ldr.w r3, [sp, 0x81c]                         |         r3 = *(arg_81ch);
    0x00007e22 eors r2, r3                                   |         r2 ^= r3;
    0x00007e24 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x00007e28 bne 0x7e6a                                    |             goto label_1;
                                                             |         }
    0x00007e2a addw sp, sp, 0x824                            |         __asm ("addw sp, var_0h");
    0x00007e2e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |         
                                                             | label_0:
    0x00007e32 ldr.w r3, [sp, 0x850]                         |         r3 = *(arg_850h);
    0x00007e36 movs r2, 1                                    |         r2 = 1;
    0x00007e38 str r4, [r0]                                  |         *(r0) = r4;
    0x00007e3a add r4, sp, 0x1c                              |         r4 += var_1ch;
    0x00007e3c str r1, [sp]                                  |         *(sp) = r1;
    0x00007e3e mov r0, r4                                    |         r0 = r4;
    0x00007e40 str r3, [sp, 4]                               |         var_4h = r3;
    0x00007e42 mov.w r3, 0x800                               |         r3 = 0x800;
    0x00007e46 mov r1, r3                                    |         r1 = r3;
    0x00007e48 blx 0x1914                                    |         fcn_00001914 ();
    0x00007e4a stcl p4, c9, [r4, -0x14]!                     |         __asm ("stcl p4, c9, [r4, -0x14]!");
    0x00007e4e movs r4, 0                                    |         r4 = 0;
    0x00007e50 mov r3, sb                                    |         r3 = sb;
    0x00007e52 mov r2, r8                                    |         r2 = r8;
    0x00007e54 mov r1, r7                                    |         r1 = r7;
    0x00007e56 mov r0, r6                                    |         r0 = r6;
    0x00007e58 str.w sl, [sp]                                |         __asm ("str.w sl, [sp]");
    0x00007e5c strd r4, r4, [sp, 0xc]                        |         __asm ("strd r4, r4, [sp, 0xc]");
    0x00007e60 strd r4, r4, [sp, 4]                          |         __asm ("strd r4, r4, [sp, 4]");
    0x00007e64 bl 0x7924                                     |         fcn_00007924 (r0, r1, r2, r3, r4, r5, r6);
    0x00007e68 b 0x7e0a                                      |         
                                                             |     } while (1);
                                                             | label_1:
    0x00007e6a blx 0x1954                                    |     parse_printf_format ();
    0x00007e6e nop                                           |     
    0x00007e70 adr r0, 0x140                                 |     r0 = 0x140;
    0x00007e72 movs r1, r0                                   |     r1 = r0;
    0x00007e74 lsls r0, r6, 6                                |     r0 = r6 << 6;
    0x00007e76 movs r0, r0                                   |     
    0x00007e78 adr r4, 0x120                                 |     r4 = 0x120;
    0x00007e7a movs r1, r0                                   |     r1 = r0;
    0x00007e7c adr r0, 0x20                                  |     r0 = 0x20;
    0x00007e7e movs r1, r0                                   |     r1 = 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/udev/scsi_id @ 0x8084 */
                                                             | #include <stdint.h>
                                                             |  
                                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                             |  
    ; (fcn) fcn.00008084 ()                                  | void fcn_00008084 (int16_t arg_4h, int16_t arg_278h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                             |     int16_t var_0h;
                                                             |     int16_t var_4h_2;
                                                             |     int16_t var_ch;
                                                             |     int16_t var_10h;
                                                             |     int16_t var_14h;
                                                             |     int16_t var_214h;
                                                             |     int16_t var_230h;
                                                             |     int16_t var_240h;
                                                             |     int16_t var_244h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x00008084 svcmi 0xf0e92d                                |     __asm ("svcmi 0xf0e92d");
    0x00008088 mov r4, r2                                    |     r4 = r2;
    0x0000808a sub.w sp, sp, 0x21c                           |     
    0x0000808e ldr r2, [pc, 0x154]                           |     
    0x00008090 str r3, [sp]                                  |     *(sp) = r3;
    0x00008092 ldr r3, [pc, 0x154]                           |     r3 = *(0x81ea);
    0x00008094 add r2, pc                                    |     r2 = 0x1027e;
    0x00008096 ldrd fp, sl, [sp, 0x244]                      |     __asm ("ldrd fp, sl, [var_244h]");
    0x00008098 invalid                                       |     
    0x0000809c ldr r3, [r2, r3]                              |     
    0x0000809e ldr r3, [r3]                                  |     r3 = *(0x1027e);
    0x000080a0 str r3, [sp, 0x214]                           |     var_214h = r3;
    0x000080a2 mov.w r3, 0                                   |     r3 = 0;
    0x000080a6 cmp.w fp, 0                                   |     
                                                             |     if (fp == 0) {
    0x000080aa beq 0x817c                                    |         goto label_2;
                                                             |     }
    0x000080ac cmp r6, 0                                     |     
    0x000080ae ldr r3, [pc, 0x13c]                           |     
    0x000080b0 it lt                                         |     
                                                             |     if (r6 < 0) {
    0x000080b2 rsblt r6, r6, 0                               |         __asm ("rsblt r6, r6, 0");
                                                             |     }
    0x000080b4 mov r5, r0                                    |     r5 = r0;
    0x000080b6 uxtb r7, r6                                   |     r7 = (int8_t) r6;
    0x000080b8 mov r8, r1                                    |     r8 = r1;
    0x000080ba add r3, pc                                    |     r3 = 0x102ac;
    0x000080bc str r3, [sp, 4]                               |     *(arg_4h) = r3;
                                                             | label_0:
    0x000080be ldr r2, [r4]                                  |     r2 = *(r4);
    0x000080c0 adds r2, 1                                    |     r2++;
    0x000080c2 cmp r2, r8                                    |     
                                                             |     if (r2 >= r8) {
    0x000080c4 bhs 0x817c                                    |         goto label_2;
                                                             |     }
    0x000080c6 add r6, sp, 0x10                              |     r6 += var_10h;
    0x000080c8 blx 0x1b04                                    |     sprintf_chk ()
    0x000080cc mov r3, sl                                    |     r3 = sl;
    0x000080ce str r7, [r0]                                  |     *(r0) = r7;
    0x000080d0 mov r2, fp                                    |     r2 = fp;
    0x000080d2 movs r1, 1                                    |     r1 = 1;
    0x000080d4 mov r0, r6                                    |     r0 = r6;
    0x000080d6 str.w sl, [sp, 0xc]                           |     __asm ("str.w sl, [var_ch]");
    0x000080da blx 0x1b28                                    |     r0 = memset (r0, r1, r2);
    0x000080de cmp r0, 0                                     |     
                                                             |     if (r0 < 0) {
    0x000080e0 blt 0x81c2                                    |         goto label_3;
                                                             |     }
    0x000080e2 add.w sb, sp, 0x14                            |     sb += var_14h;
    0x000080e6 movs r1, 0x80                                 |     r1 = 0x80;
    0x000080e8 mov r2, sb                                    |     r2 = sb;
    0x000080ea mov r0, fp                                    |     r0 = fp;
    0x000080ec blx 0x1960                                    |     r0 = register_atfork ();
    0x000080f0 cmp r0, 0x7f                                  |     
                                                             |     if (r0 > 0x7f) {
    0x000080f2 bhi 0x81ac                                    |         goto label_4;
                                                             |     }
                                                             |     if (r0 == 0) {
    0x000080f4 cbz r0, 0x813a                                |         goto label_5;
                                                             |     }
    0x000080f6 add.w r3, sb, r0, lsl 2                       |     r3 = sb + (r0 << 2);
    0x000080fa mov r2, sb                                    |     r2 = sb;
    0x000080fc movw r0, 0x107                                |     r0 = 0x107;
                                                             |     do {
    0x00008100 ldr r1, [r2], 4                               |         r1 = *(r2);
                                                             |         r2 += 4;
    0x00008104 tst.w r1, 0x800                               |         
                                                             |         if ((r1 & 0x800) == 0) {
    0x00008108 bne 0x8132                                    |             
    0x0000810a cmp.w r1, 0x100                               |             
                                                             |             if (r1 == 0x100) {
    0x0000810e beq 0x819e                                    |                 goto label_6;
                                                             |             }
                                                             |             if (r1 <= 0x100) {
    0x00008110 bgt 0x8126                                    |                 
    0x00008112 cmp r1, 7                                     |                 
                                                             |                 if (r1 > 7) {
    0x00008114 bhi 0x81c8                                    |                     goto label_7;
                                                             |                 }
    0x00008116 subs r1, 2                                    |                 r1 -= 2;
    0x00008118 cmp r1, 5                                     |                 
                                                             |                 if (r1 > 5) {
    0x0000811a bhi 0x8132                                    |                     goto label_8;
                                                             |                 }
                                                             |                 /* switch table (6 cases) at 0x8120 */
    0x0000811c tbb [pc, r1]                                  |                 __asm ("tbb [0x00008124]");
                                                             |             }
    0x00008126 cmp.w r1, 0x200                               |             
                                                             |             if (r1 == 0x200) {
    0x0000812a beq 0x8132                                    |                 goto label_8;
                                                             |             }
    0x0000812c cmp.w r1, 0x400                               |             
                                                             |             if (r1 != 0x400) {
    0x00008130 bne 0x819a                                    |                 goto label_9;
                                                             |             }
                                                             |         }
                                                             | label_8:
    0x00008132 add.w sl, sl, 4                               |         sl += 4;
                                                             | label_1:
    0x00008136 cmp r2, r3                                    |         
    0x00008138 bne 0x8100                                    |         
                                                             |     } while (r2 != r3);
                                                             | label_5:
    0x0000813a ldr.w sb, [r4]                                |     sb = *(r4);
    0x0000813e ldr r6, [r6]                                  |     r6 = *(r6);
    0x00008140 add.w r1, sb, 1                               |     r1 = sb + 1;
    0x00008144 mov r0, r6                                    |     r0 = r6;
    0x00008146 str r1, [r4]                                  |     *(r4) = r1;
    0x00008148 blx 0x1abc                                    |     strchr (r0, r1);
    0x0000814c ldr r3, [sp]                                  |     r3 = *(sp);
    0x0000814e add.w fp, r5, sb, lsl 3                       |     
    0x00008152 str.w r6, [r5, sb, lsl 3]                     |     __asm ("str.w r6, [r5, sb, lsl 3]");
    0x00008156 str.w r0, [fp, 4]                             |     __asm ("str.w r0, [arg_4h]");
                                                             |     if (r3 != 0) {
    0x0000815a cbz r3, 0x8172                                |         
    0x0000815c ldr r3, [r4]                                  |         r3 = *(r4);
    0x0000815e movs r2, 1                                    |         r2 = 1;
    0x00008160 ldr r1, [sp, 4]                               |         r1 = *(arg_4h);
    0x00008162 str.w r1, [r5, r3, lsl 3]                     |         __asm ("str.w r1, [r5, r3, lsl 3]");
    0x00008166 add.w r3, r5, r3, lsl 3                       |         r3 = r5 + (r3 << 3);
    0x0000816a str r2, [r3, 4]                               |         *((r3 + 4)) = r2;
    0x0000816c ldr r3, [r4]                                  |         r3 = *(r4);
    0x0000816e add r3, r2                                    |         r3 += r2;
    0x00008170 str r3, [r4]                                  |         *(r4) = r3;
                                                             |     }
    0x00008172 ldr fp, [sl], 4                               |     fp = *(sl);
                                                             |     sl += 4;
    0x00008176 cmp.w fp, 0                                   |     
                                                             |     if (fp != 0) {
    0x0000817a bne 0x80be                                    |         goto label_0;
                                                             |     }
                                                             | label_2:
    0x0000817c movs r0, 0                                    |     r0 = 0;
                                                             |     do {
    0x0000817e ldr r2, [pc, 0x70]                            |         
    0x00008180 ldr r3, [pc, 0x64]                            |         r3 = *(0x81e8);
    0x00008182 add r2, pc                                    |         r2 = 0x10378;
    0x00008184 ldr r3, [r2, r3]                              |         r3 = *(0x10378);
    0x00008186 ldr r2, [r3]                                  |         r2 = *(0x10378);
    0x00008188 ldr r3, [sp, 0x214]                           |         r3 = var_214h;
    0x0000818a eors r2, r3                                   |         r2 ^= r3;
    0x0000818c mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x00008190 bne 0x81de                                    |             goto label_10;
                                                             |         }
    0x00008192 add.w sp, sp, 0x21c                           |         
    0x00008196 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |         
                                                             | label_9:
    0x0000819a cmp r1, r0                                    |         
                                                             |         if (r1 != r0) {
    0x0000819c bne 0x81c8                                    |             goto label_7;
                                                             |         }
                                                             | label_6:
    0x0000819e add.w sl, sl, 7                               |         sl += 7;
    0x000081a2 bic sl, sl, 7                                 |         sl = BIT_MASK (sl, 7);
    0x000081a6 add.w sl, sl, 8                               |         sl += 8;
    0x000081aa b 0x8136                                      |         goto label_1;
                                                             | label_4:
    0x000081ac ldr r1, [pc, 0x44]                            |         
    0x000081ae movw r2, 0x397                                |         r2 = 0x397;
    0x000081b2 ldr r3, [pc, 0x44]                            |         
    0x000081b4 ldr r0, [pc, 0x44]                            |         
    0x000081b6 add r1, pc                                    |         r1 = 0x103ae;
    0x000081b8 add r3, pc                                    |         r3 = 0x103b6;
    0x000081ba adds r1, 7                                    |         r1 += 7;
    0x000081bc add r0, pc                                    |         r0 = 0x103bc;
    0x000081be bl 0x7f50                                     |         fcn_00007f50 (r0, r1, r2, r3);
                                                             | label_3:
    0x000081c2 mvn r0, 0x15                                  |         r0 = ~0x15;
    0x000081c6 b 0x817e                                      |         
                                                             |     } while (1);
                                                             | label_7:
    0x000081c8 ldr r1, [pc, 0x34]                            |     
    0x000081ca movw r2, 0x397                                |     r2 = 0x397;
    0x000081ce ldr r3, [pc, 0x34]                            |     
    0x000081d0 ldr r0, [pc, 0x34]                            |     
    0x000081d2 add r1, pc                                    |     r1 = 0x103d6;
    0x000081d4 add r3, pc                                    |     r3 = 0x103de;
    0x000081d6 adds r1, 7                                    |     r1 += 7;
    0x000081d8 add r0, pc                                    |     r0 = 0x103e4;
    0x000081da bl 0x804c                                     |     r0 = fcn_0000804c (r0, r1, r2, r3);
                                                             | label_10:
    0x000081de blx 0x1954                                    |     parse_printf_format ();
    0x000081e2 nop                                           |     
    0x000081e4 ldr r5, [sp, 0x230]                           |     r5 = var_230h;
    0x000081e6 movs r1, r0                                   |     r1 = r0;
    0x000081e8 lsls r0, r6, 6                                |     r0 = r6 << 6;
    0x000081ea movs r0, r0                                   |     
    0x000081ec strb r4, [r2, 1]                              |     *((r2 + 1)) = r4;
    0x000081ee movs r0, r0                                   |     
    0x000081f0 ldr r4, [sp, 0x278]                           |     r4 = *(arg_278h);
    0x000081f2 movs r1, r0                                   |     r1 = r0;
    0x000081f4 ldr r6, [r7, 0xc]                             |     r6 = *((r7 + 0xc));
    0x000081f6 movs r0, r0                                   |     
    0x000081f8 ldr r4, [r3, 0x6c]                            |     r4 = *((r3 + 0x6c));
    0x000081fa movs r0, r0                                   |     
    0x000081fc ldr r4, [r3, 0x18]                            |     r4 = *((r3 + 0x18));
    0x000081fe movs r0, r0                                   |     
    0x00008200 ldr r2, [r4, 0xc]                             |     r2 = *((r4 + 0xc));
    0x00008202 movs r0, r0                                   |     
    0x00008204 ldr r0, [r0, 0x6c]                            |     r0 = *((r0 + 0x6c));
    0x00008206 movs r0, r0                                   |     
    0x00008208 ldr r4, [r3, 0x18]                            |     r4 = *((r3 + 0x18));
    0x0000820a 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/udev/scsi_id @ 0x820c */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.0000820c ()                          | void fcn_0000820c (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                     |     int16_t var_0h_2;
                                                     |     int16_t var_4h;
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
                                                     |     r2 = arg3;
                                                     |     r3 = arg4;
    0x0000820c mvnsmi lr, 0xb4000                    |     __asm ("mvnsmi lr, 0xb4000");
    0x00008210 sub sp, 0xc                           |     
    0x00008212 mov r8, r3                            |     r8 = r3;
    0x00008214 mov r5, r0                            |     r5 = r0;
    0x00008216 mov r6, r1                            |     r6 = r1;
    0x00008218 mov r7, r2                            |     r7 = r2;
    0x0000821a blx 0x1b04                            |     sprintf_chk ()
    0x0000821e ldr r3, [pc, 0x38]                    |     
    0x00008220 mov r4, r0                            |     r4 = r0;
    0x00008222 ldr.w sb, [r0]                        |     sb = *(r0);
    0x00008226 add r3, pc                            |     
    0x00008228 ldr r3, [r3]                          |     r3 = *(0x10484);
    0x0000822a cmp r3, 6                             |     
    0x0000822c bgt 0x823e                            |     
                                                     |     while (1) {
    0x0000822e cmp.w sb, 0                           |         
    0x00008232 it ge                                 |         
                                                     |         if (sb < 0) {
    0x00008234 strge sb, [r4]                        |             *(r4) = sb;
                                                     |         }
    0x00008238 add sp, 0xc                           |         
    0x0000823a pop.w {r4, r5, r6, r7, r8, sb, pc}    |         
    0x0000823e ldr r0, [pc, 0x1c]                    |         
    0x00008240 mov r3, r7                            |         r3 = r7;
    0x00008242 mov r2, r6                            |         r2 = r6;
    0x00008244 mov r1, r5                            |         r1 = r5;
    0x00008246 str.w r8, [sp]                        |         __asm ("str.w r8, [sp]");
    0x0000824a add r0, pc                            |         r0 = 0x104ac;
    0x0000824c str r0, [sp, 4]                       |         var_4h = r0;
    0x0000824e movs r0, 7                            |         r0 = 7;
    0x00008250 bl 0x7efc                             |         fcn_00007efc (r0, r1, r2, r3, r4, r5);
    0x00008254 b 0x822e                              |         
                                                     |     }
                                                     | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/udev/scsi_id @ 0x8260 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.00008260 ()                                      | void fcn_00008260 (int16_t arg_24h, int16_t arg_28h, int16_t arg_2ch, int16_t arg_30h, int16_t arg_34h, int16_t arg_38h, int16_t arg_3ch, int16_t arg_40h, int16_t arg_48h, int16_t arg_5ch, int16_t arg_80h, int16_t arg_b8h, int16_t arg_e8h, int16_t arg_160h, int16_t arg_188h, int16_t arg_1a8h, int16_t arg_220h, int16_t arg_248h, int16_t arg_264h, int16_t arg_2b0h, int16_t arg_2c8h, int16_t arg_2d0h, int16_t arg_a5ch, int16_t arg_a88h, int16_t arg_a8ch, int16_t c, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_20h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x00008260 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00008264 mov r7, r0                                        |     r7 = r0;
    0x00008266 ldr r4, [pc, 0x2f0]                               |     
    0x00008268 subw sp, sp, 0xa64                                |     __asm ("subw sp, sp, 0xa64");
    0x0000826c ldr r0, [pc, 0x2ec]                               |     r0 = *(0x855c);
    0x0000826e add r4, pc                                        |     r4 = 0x107cc;
    0x00008270 ldr r0, [r4, r0]                                  |     
    0x00008272 mov r4, r1                                        |     r4 = r1;
    0x00008274 ldr r0, [r0]                                      |     r0 = *(0x107cc);
    0x00008276 str.w r0, [sp, 0xa5c]                             |     __asm ("str.w r0, [arg_a5ch]");
    0x0000827a mov.w r0, 0                                       |     r0 = 0;
    0x0000827e strd r2, r3, [sp, 0x1c]                           |     __asm ("strd r2, r3, [sp, 0x1c]");
    0x00008282 ldr.w r3, [sp, 0xa88]                             |     r3 = *(arg_a88h);
    0x00008286 str r3, [sp, 0x24]                                |     *(arg_24h) = r3;
    0x00008288 blx 0x1b04                                        |     sprintf_chk ()
    0x0000828c ldr r3, [pc, 0x2d0]                               |     
    0x0000828e and r2, r7, 7                                     |     r2 = r7 & 7;
    0x00008292 ldr.w r8, [sp, 0xa8c]                             |     r8 = *(arg_a8ch);
    0x00008296 mov r5, r0                                        |     r5 = r0;
    0x00008298 ldr.w sb, [r0]                                    |     sb = *(r0);
    0x0000829a str r0, [sp]                                      |     *(sp) = r0;
    0x0000829c add r3, pc                                        |     
    0x0000829e ldr r3, [r3]                                      |     r3 = *(0x10800);
    0x000082a0 cmp r2, r3                                        |     
    0x000082a2 ble 0x82da                                        |     
                                                                 |     while (r3 == 8) {
                                                                 | label_0:
    0x000082a4 eor.w r0, r4, r4, asr 31                          |         r0 = r4 ^ (r4 >> 31);
    0x000082a8 sub.w r0, r0, r4, asr 31                          |         r0 -= (r4 >> 31);
    0x000082ac uxtb r0, r0                                       |         r0 = (int8_t) r0;
    0x000082ae rsbs r0, r0, 0                                    |         r0 -= ;
                                                                 | label_7:
    0x000082b0 ldr r2, [pc, 0x2b0]                               |         
    0x000082b2 cmp.w sb, 0                                       |         
    0x000082b6 ldr r3, [pc, 0x2a4]                               |         r3 = *(0x855e);
    0x000082b8 it ge                                             |         
                                                                 |         if (sb < 0) {
    0x000082ba strge sb, [r5]                                    |             *(r5) = sb;
                                                                 |         }
    0x000082be add r2, pc                                        |         r2 = 0x10826;
    0x000082c0 ldr r3, [r2, r3]                                  |         r3 = *(0x10826);
    0x000082c2 ldr r2, [r3]                                      |         r2 = *(0x10826);
    0x000082c4 ldr.w r3, [sp, 0xa5c]                             |         r3 = *(arg_a5ch);
    0x000082c8 eors r2, r3                                       |         r2 ^= r3;
    0x000082ca mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x000082ce bne.w 0x8554                                      |             goto label_10;
                                                                 |         }
    0x000082d2 addw sp, sp, 0xa64                                |         __asm ("addw sp, var_0h");
    0x000082d6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
    0x000082da ldr r3, [pc, 0x28c]                               |         
    0x000082dc add r3, pc                                        |         
    0x000082de ldr r3, [r3]                                      |         r3 = *(0x1084a);
    0x000082e0 cmp r3, 8                                         |         
    0x000082e2 beq 0x82a4                                        |         
                                                                 |     }
    0x000082e4 tst.w r7, 0x3f8                                   |     
                                                                 |     if ((r7 & 0x3f8) == 0) {
    0x000082e8 bne 0x82f2                                        |         
    0x000082ea ldr r2, [pc, 0x280]                               |         
    0x000082ec add r2, pc                                        |         
    0x000082ee ldr r2, [r2]                                      |         r2 = *(0x1085e);
    0x000082f0 orrs r7, r2                                       |         r7 |= r2;
                                                                 |     }
    0x000082f2 cmp r3, 4                                         |     
                                                                 |     if (r3 <= 4) {
    0x000082f4 ble 0x83e6                                        |         goto label_11;
                                                                 |     }
    0x000082f6 cmp r3, 7                                         |     
                                                                 |     if (r3 != 7) {
    0x000082f8 bne 0x83ea                                        |         goto label_12;
                                                                 |     }
                                                                 | label_1:
    0x000082fa ldr r3, [pc, 0x274]                               |     
    0x000082fc ldr r2, [pc, 0x274]                               |     
    0x000082fe add r3, pc                                        |     r3 = 0x10874;
    0x00008300 ldrb r3, [r3]                                     |     r3 = *(r3);
    0x00008302 add r2, pc                                        |     
    0x00008304 ldr r2, [r2]                                      |     r2 = *(0x1087a);
    0x00008306 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00008308 bne.w 0x84ce                                      |         goto label_13;
                                                                 |     }
                                                                 | label_6:
    0x0000830c ldr r3, [pc, 0x268]                               |     
    0x0000830e add r3, pc                                        |     
    0x00008310 ldr r3, [r3]                                      |     r3 = *(0x1088a);
    0x00008312 cmp r3, 0                                         |     
                                                                 |     if (r3 < 0) {
    0x00008314 blt 0x83ea                                        |         goto label_12;
                                                                 |     }
                                                                 | label_5:
    0x00008316 add r2, sp, 0x5c                                  |     r2 += arg_5ch;
    0x00008318 movs r1, 0                                        |     r1 = 0;
    0x0000831a mov r6, r2                                        |     r6 = r2;
    0x0000831c movs r2, 0x88                                     |     r2 = 0x88;
    0x0000831e mov r0, r6                                        |     r0 = r6;
    0x00008320 add.w fp, sp, 0x25c                               |     
    0x00008324 blx 0x1b40                                        |     fsetlocking ();
    0x00008328 movs r3, 0                                        |     r3 = 0;
    0x0000832a movs r1, 0                                        |     r1 = 0;
    0x0000832c strd r3, r3, [sp, 0x10]                           |     __asm ("strd r3, r3, [sp, 0x10]");
    0x00008330 mov r2, r4                                        |     r2 = r4;
    0x00008332 strd r3, r3, [sp, 8]                              |     __asm ("strd r3, r3, [sp, 8]");
    0x00008336 mov r0, fp                                        |     r0 = fp;
    0x00008338 ldr r3, [sp, 0x24]                                |     r3 = *(arg_24h);
    0x0000833a add.w sl, sp, 0x38                                |     sl += arg_38h;
    0x0000833e str r6, [sp, 0x2c]                                |     *(arg_2ch) = r6;
    0x00008340 str r6, [sp, 0x48]                                |     *(arg_48h) = r6;
    0x00008342 add r6, sp, 0x3c                                  |     r6 += arg_3ch;
    0x00008344 str r3, [sp, 4]                                   |     var_4h = r3;
    0x00008346 ldr r3, [sp, 0x20]                                |     r3 = var_20h;
    0x00008348 strd r1, r1, [sp, 0x40]                           |     __asm ("strd r1, r1, [sp, 0x40]");
    0x0000834c strd r1, r1, [sp, 0x4c]                           |     __asm ("strd r1, r1, [sp, 0x4c]");
    0x00008350 str r3, [sp]                                      |     *(sp) = r3;
    0x00008352 add r3, sp, 0x40                                  |     r3 += arg_40h;
    0x00008354 str r3, [sp, 0x34]                                |     *(arg_34h) = r3;
    0x00008356 strd r1, r1, [sp, 0x54]                           |     __asm ("strd r1, r1, [sp, 0x54]");
    0x0000835a ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x0000835c str r1, [r6]                                      |     *(r6) = r1;
    0x0000835e mov r1, r7                                        |     r1 = r7;
    0x00008360 bl 0x6f04                                         |     fcn_00006f04 (r0, r1, r2, r3, r4, r5, r6);
    0x00008362 ldc2l p8, c6, [r0, 0xcc]                          |     __asm ("ldc2l p8, c6, [r0, 0xcc]");
    0x00008366 add.w r1, sp, 0xa90                               |     r1 += c;
    0x0000836a mov r0, fp                                        |     r0 = fp;
    0x0000836c str r1, [sp, 0x28]                                |     *(arg_28h) = r1;
    0x0000836e adds r2, r3, 1                                    |     r2 = r3 + 1;
    0x00008370 str r3, [sp, 0x30]                                |     *(arg_30h) = r3;
    0x00008372 str r2, [r6]                                      |     *(r6) = r2;
    0x00008374 blx 0x1abc                                        |     strchr (r0, r1);
    0x00008378 ldrd r2, r3, [sp, 0x2c]                           |     __asm ("ldrd r2, r3, [arg_2ch]");
    0x0000837c ldr r1, [sp, 0x28]                                |     r1 = *(arg_28h);
    0x0000837e str.w fp, [r2, r3, lsl 3]                         |     __asm ("str.w fp, [r2, r3, lsl 3]");
    0x00008382 add.w r3, r2, r3, lsl 3                           |     r3 = r2 + (r3 << 3);
    0x00008386 mov r2, r6                                        |     r2 = r6;
    0x00008388 str r0, [r3, 4]                                   |     *((r3 + 4)) = r0;
    0x0000838a movs r3, 1                                        |     r3 = 1;
    0x0000838c strd r8, r1, [sp, 4]                              |     __asm ("strd r8, r1, [sp, 4]");
    0x00008390 str r4, [sp]                                      |     *(sp) = r4;
    0x00008392 ldr r0, [sp, 0x2c]                                |     r0 = *(arg_2ch);
    0x00008394 str.w r1, [sl]                                    |     __asm ("str.w r1, [sl]");
    0x00008398 movs r1, 0x11                                     |     r1 = 0x11;
    0x0000839a bl 0x8084                                         |     r0 = fcn_00008084 (r0, r1, r2, r3, r4, r5);
    0x0000839e cmp r0, 0                                         |     
                                                                 |     if (r0 >= 0) {
    0x000083a0 bge.w 0x8518                                      |         goto label_14;
                                                                 |     }
    0x000083a4 ldr r3, [r6]                                      |     r3 = *(r6);
    0x000083a6 cmp r3, 1                                         |     
    0x000083a8 itt hi                                            |     
                                                                 |     if (r3 <= 1) {
    0x000083aa movhi r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 |     if (r3 <= 1) {
    0x000083ac strhi r3, [sp, 0x30]                              |         *(arg_30h) = r3;
                                                                 |     }
                                                                 |     if (r3 < 1) {
    0x000083ae bls 0x83f4                                        |         goto label_15;
                                                                 |     }
                                                                 | label_8:
    0x000083b0 ldr r3, [sp, 0x2c]                                |     r3 = *(arg_2ch);
    0x000083b2 mov.w fp, 1                                       |     
    0x000083b6 str r4, [sp, 0x2c]                                |     *(arg_2ch) = r4;
    0x000083b8 mov r4, r6                                        |     r4 = r6;
    0x000083ba mov r6, r3                                        |     r6 = r3;
                                                                 |     do {
    0x000083bc ldr r0, [r6, 8]                                   |         r0 = *((r6 + 8));
    0x000083be add.w fp, fp, 2                                   |         
    0x000083c2 blx 0x18cc                                        |         fcn_000018cc ();
    0x000083c6 ldr r3, [r4]                                      |         r3 = *(r4);
    0x000083c8 adds r6, 0x10                                     |         r6 += 0x10;
    0x000083ca cmp r3, fp                                        |         
    0x000083cc bhi 0x83bc                                        |         
                                                                 |     } while (r3 > fp);
    0x000083ce ldrd r4, r3, [sp, 0x2c]                           |     __asm ("ldrd r4, r3, [arg_2ch]");
                                                                 |     if (r3 != 0) {
    0x000083d2 cbnz r3, 0x83f4                                   |         goto label_15;
                                                                 |     }
                                                                 | label_9:
    0x000083d4 ldr r3, [pc, 0x1a4]                               |     
    0x000083d6 add r3, pc                                        |     r3 = 0x10956;
    0x000083d8 ldrb r3, [r3]                                     |     r3 = *(r3);
    0x000083da cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000083dc beq.w 0x82a4                                      |         goto label_0;
                                                                 |     }
                                                                 | label_3:
    0x000083e0 bl 0x75d4                                         |     fcn_000075d4 ();
    0x000083e4 b 0x82a4                                          |     goto label_0;
                                                                 | label_11:
    0x000083e6 cmp r3, 2                                         |     
                                                                 |     if (r3 > 2) {
    0x000083e8 bgt 0x82fa                                        |         goto label_1;
                                                                 |     }
                                                                 | label_12:
    0x000083ea add.w sl, sp, 0x38                                |     sl += arg_38h;
    0x000083ee add.w r3, sp, 0xa90                               |     r3 += c;
    0x000083f2 str r3, [sp, 0x28]                                |     *(arg_28h) = r3;
                                                                 | label_15:
    0x000083f4 ldr r3, [sp, 0x28]                                |     r3 = *(arg_28h);
    0x000083f6 str.w r3, [sl]                                    |     __asm ("str.w r3, [sl]");
    0x000083fa eor.w r3, r4, r4, asr 31                          |     r3 = r4 ^ (r4 >> 31);
    0x000083fe sub.w r3, r3, r4, asr 31                          |     r3 -= (r4 >> 31);
    0x00008402 uxtb r3, r3                                       |     r3 = (int8_t) r3;
    0x00008404 cmp.w r8, 0                                       |     
                                                                 |     if (r8 == 0) {
    0x00008408 beq 0x84b2                                        |         goto label_16;
                                                                 |     }
    0x0000840a ldr r2, [pc, 0x174]                               |     
    0x0000840c add r1, sp, 0x40                                  |     r1 += arg_40h;
    0x0000840e str.w sb, [sp, 0x28]                              |     __asm ("str.w sb, [arg_28h]");
    0x00008412 add.w fp, sp, 0x25c                               |     
    0x00008416 str r7, [sp, 0x30]                                |     *(arg_30h) = r7;
    0x00008418 movw r6, 0x107                                    |     r6 = 0x107;
    0x0000841c add r2, pc                                        |     r2 = 0x109a2;
    0x0000841e str r4, [sp, 0x2c]                                |     *(arg_2ch) = r4;
    0x00008420 mov r7, r3                                        |     r7 = r3;
    0x00008422 mov r4, r8                                        |     r4 = r8;
    0x00008424 mov sb, r1                                        |     sb = r1;
    0x00008426 mov r8, r2                                        |     r8 = r2;
                                                                 | label_2:
    0x00008428 str r7, [r5]                                      |     *(r5) = r7;
    0x0000842a movs r2, 1                                        |     r2 = 1;
    0x0000842c str r4, [sp]                                      |     *(sp) = r4;
    0x0000842e mov r0, fp                                        |     r0 = fp;
    0x00008430 ldr.w r3, [sl]                                    |     r3 = *(sl);
    0x00008434 str r3, [sp, 4]                                   |     var_4h = r3;
    0x00008436 str.w r3, [sb]                                    |     __asm ("str.w r3, [sb]");
    0x0000843a mov.w r3, 0x800                                   |     r3 = 0x800;
    0x0000843e mov r1, r3                                        |     r1 = r3;
    0x00008440 blx 0x1914                                        |     fcn_00001914 ();
    0x00008444 mov r1, r8                                        |     r1 = r8;
    0x00008446 mov r0, fp                                        |     r0 = fp;
    0x00008448 bl 0xc9e8                                         |     r0 = fcn_0000c9e8 (r0, r1);
    0x0000844c cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000844e bne 0x84f0                                        |         goto label_17;
                                                                 |     }
    0x00008450 mov r0, r4                                        |     r0 = r4;
    0x00008452 add r4, sp, 0x5c                                  |     r4 += arg_5ch;
    0x00008454 mov r2, r4                                        |     r2 = r4;
    0x00008456 movs r1, 0x80                                     |     r1 = 0x80;
    0x00008458 blx 0x1960                                        |     r0 = register_atfork ();
    0x0000845c cmp r0, 0x7f                                      |     
                                                                 |     if (r0 > 0x7f) {
    0x0000845e bhi 0x84da                                        |         goto label_18;
                                                                 |     }
    0x00008460 ldr.w r1, [sl]                                    |     r1 = *(sl);
                                                                 |     if (r0 == 0) {
    0x00008464 cbz r0, 0x84a2                                    |         goto label_19;
                                                                 |     }
    0x00008466 add.w r0, r4, r0, lsl 2                           |     r0 = r4 + (r0 << 2);
    0x0000846a mov r2, r4                                        |     r2 = r4;
                                                                 |     do {
    0x0000846c ldr r3, [r2], 4                                   |         r3 = *(r2);
                                                                 |         r2 += 4;
    0x00008470 lsls r4, r3, 0x14                                 |         r4 = r3 << 0x14;
                                                                 |         if (r4 >= r3) {
    0x00008472 bmi 0x849c                                        |             
    0x00008474 cmp.w r3, 0x100                                   |             
                                                                 |             if (r3 == 0x100) {
    0x00008478 beq 0x84c4                                        |                 goto label_20;
                                                                 |             }
                                                                 |             if (r3 <= 0x100) {
    0x0000847a bgt 0x8490                                        |                 
    0x0000847c cmp r3, 7                                         |                 
                                                                 |                 if (r3 > 7) {
    0x0000847e bhi 0x853e                                        |                     goto label_21;
                                                                 |                 }
    0x00008480 subs r3, 2                                        |                 r3 -= 2;
    0x00008482 cmp r3, 5                                         |                 
                                                                 |                 if (r3 > 5) {
    0x00008484 bhi 0x849c                                        |                     goto label_22;
                                                                 |                 }
                                                                 |                 /* switch table (6 cases) at 0x848a */
    0x00008486 tbb [pc, r3]                                      |                 __asm ("tbb [0x0000848c]");
                                                                 |             }
    0x00008490 cmp.w r3, 0x200                                   |             
                                                                 |             if (r3 == 0x200) {
    0x00008494 beq 0x849c                                        |                 goto label_22;
                                                                 |             }
    0x00008496 cmp.w r3, 0x400                                   |             
                                                                 |             if (r3 != 0x400) {
    0x0000849a bne 0x84c0                                        |                 goto label_23;
                                                                 |             }
                                                                 |         }
                                                                 | label_22:
    0x0000849c adds r1, 4                                        |         r1 += 4;
                                                                 | label_4:
    0x0000849e cmp r2, r0                                        |         
    0x000084a0 bne 0x846c                                        |         
                                                                 |     } while (r2 != r0);
                                                                 | label_19:
    0x000084a2 ldr r4, [r1]                                      |     r4 = *(r1);
    0x000084a4 adds r1, 4                                        |     r1 += 4;
    0x000084a6 str.w r1, [sl]                                    |     __asm ("str.w r1, [sl]");
    0x000084aa cmp r4, 0                                         |     
                                                                 |     if (r4 != 0) {
    0x000084ac bne 0x8428                                        |         goto label_2;
                                                                 |     }
    0x000084ae ldrd sb, r4, [sp, 0x28]                           |     __asm ("ldrd sb, r4, [arg_28h]");
                                                                 | label_16:
    0x000084b2 ldr r3, [pc, 0xd0]                                |     
    0x000084b4 add r3, pc                                        |     r3 = 0x10a3e;
    0x000084b6 ldrb r3, [r3]                                     |     r3 = *(r3);
    0x000084b8 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000084ba beq.w 0x82a4                                      |         goto label_0;
                                                                 |     }
    0x000084bc add r6, sp, 0x3cc                                 |     r6 = sp + 0x3cc;
    0x000084be b 0x83e0                                          |     goto label_3;
                                                                 | label_23:
    0x000084c0 cmp r3, r6                                        |     
                                                                 |     if (r3 != r6) {
    0x000084c2 bne 0x853e                                        |         goto label_21;
                                                                 |     }
                                                                 | label_20:
    0x000084c4 adds r1, 7                                        |     r1 += 7;
    0x000084c6 bic r1, r1, 7                                     |     r1 = BIT_MASK (r1, 7);
    0x000084ca adds r1, 8                                        |     r1 += 8;
    0x000084cc b 0x849e                                          |     goto label_4;
                                                                 | label_13:
    0x000084ce cmp r2, 0                                         |     
                                                                 |     if (r2 >= 0) {
    0x000084d0 bge.w 0x8316                                      |         goto label_5;
                                                                 |     }
    0x000084d4 bl 0x7250                                         |     fcn_00007250 ();
    0x000084d8 b 0x830c                                          |     goto label_6;
                                                                 | label_18:
    0x000084da ldr r1, [pc, 0xac]                                |     
    0x000084dc movw r2, 0x3f7                                    |     r2 = 0x3f7;
    0x000084e0 ldr r3, [pc, 0xa8]                                |     
    0x000084e2 ldr r0, [pc, 0xac]                                |     
    0x000084e4 add r1, pc                                        |     r1 = 0x10a72;
    0x000084e6 add r3, pc                                        |     r3 = 0x10a76;
    0x000084e8 adds r1, 7                                        |     r1 += 7;
    0x000084ea add r0, pc                                        |     r0 = 0x10a80;
    0x000084ec bl 0x7f50                                         |     fcn_00007f50 (r0, r1, r2, r3);
                                                                 | label_17:
    0x000084f0 ldrd r4, r7, [sp, 0x2c]                           |     __asm ("ldrd r4, r7, [arg_2ch]");
    0x000084f4 ldr r3, [sp, 0x24]                                |     r3 = *(arg_24h);
    0x000084f6 ldr.w sb, [sp, 0x28]                              |     sb = *(arg_28h);
    0x000084fa mov r1, r4                                        |     r1 = r4;
    0x000084fc movs r4, 0                                        |     r4 = 0;
    0x000084fe strd r4, r4, [sp, 0xc]                            |     __asm ("strd r4, r4, [sp, 0xc]");
    0x00008502 mov r0, r7                                        |     r0 = r7;
    0x00008504 strd r4, r4, [sp, 4]                              |     __asm ("strd r4, r4, [sp, 4]");
    0x00008508 add r4, sp, 0x264                                 |     r4 += arg_264h;
    0x0000850a str r3, [sp]                                      |     *(sp) = r3;
    0x0000850c str r4, [sp, 0x14]                                |     var_14h = r4;
    0x0000850e ldrd r2, r3, [sp, 0x1c]                           |     __asm ("ldrd r2, r3, [var_1ch]");
    0x00008512 bl 0x7924                                         |     fcn_00007924 (r0, r1, r2, r3, r4, r5, r6);
    0x00008516 b 0x82b0                                          |     goto label_7;
                                                                 | label_14:
    0x00008518 ldr r3, [pc, 0x78]                                |     
    0x0000851a ldr r2, [sp, 0x34]                                |     r2 = *(arg_34h);
    0x0000851c add r3, pc                                        |     r3 = 0x10ab4;
    0x0000851e ldr r0, [r3]                                      |     r0 = *(0x10ab4);
    0x00008520 mov r1, r2                                        |     r1 = r2;
    0x00008522 ldr r3, [r6]                                      |     r3 = *(r6);
    0x00008524 str r3, [r2, 0xc]                                 |     *((r2 + 0xc)) = r3;
    0x00008526 mov.w r2, 0x4000                                  |     r2 = 0x4000;
    0x0000852a blx 0x192c                                        |     fcn_0000192c ();
    0x0000852e ldr r3, [r6]                                      |     r3 = *(r6);
    0x00008530 cmp r3, 1                                         |     
    0x00008532 itt hi                                            |     
                                                                 |     if (r3 <= 1) {
    0x00008534 movhi r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r3 > 1) {
    0x00008536 strhi r3, [sp, 0x30]                              |         *(arg_30h) = r3;
                                                                 |         goto label_24;
                                                                 |     }
                                                                 |     if (r3 > 1) {
                                                                 | label_24:
    0x00008538 bhi.w 0x83b0                                      |         goto label_8;
                                                                 |     }
    0x0000853c b 0x83d4                                          |     goto label_9;
                                                                 | label_21:
    0x0000853e ldr r1, [pc, 0x58]                                |     
    0x00008540 movw r2, 0x3f7                                    |     r2 = 0x3f7;
    0x00008544 ldr r3, [pc, 0x54]                                |     
    0x00008546 ldr r0, [pc, 0x58]                                |     
    0x00008548 add r1, pc                                        |     r1 = 0x10ae6;
    0x0000854a add r3, pc                                        |     r3 = 0x10aea;
    0x0000854c adds r1, 7                                        |     r1 += 7;
    0x0000854e add r0, pc                                        |     r0 = 0x10af4;
    0x00008550 bl 0x804c                                         |     r0 = fcn_0000804c (r0, r1, r2, r3);
                                                                 | label_10:
    0x00008554 blx 0x1954                                        |     parse_printf_format ();
    0x00008558 ldr r3, [sp, 0x2c8]                               |     r3 = *(arg_2c8h);
    0x0000855a movs r1, r0                                       |     r1 = r0;
    0x0000855c lsls r0, r6, 6                                    |     r0 = r6 << 6;
    0x0000855e movs r0, r0                                       |     
    0x00008560 ldr r7, [sp, 0x2b0]                               |     r7 = *(arg_2b0h);
    0x00008562 movs r1, r0                                       |     r1 = r0;
    0x00008564 ldr r3, [sp, 0x188]                               |     r3 = *(arg_188h);
    0x00008566 movs r1, r0                                       |     r1 = r0;
    0x00008568 add r2, sp, 0x220                                 |     r2 += arg_220h;
    0x0000856a movs r1, r0                                       |     r1 = r0;
    0x0000856c ldr r7, [sp, 0x160]                               |     r7 = *(arg_160h);
    0x0000856e movs r1, r0                                       |     r1 = r0;
    0x00008570 add r2, sp, 0x1a8                                 |     r2 += arg_1a8h;
    0x00008572 movs r1, r0                                       |     r1 = r0;
    0x00008574 ldr r7, [sp, 0xe8]                                |     r7 = *(arg_e8h);
    0x00008576 movs r1, r0                                       |     r1 = r0;
    0x00008578 ldr r7, [sp, 0xb8]                                |     r7 = *(arg_b8h);
    0x0000857a movs r1, r0                                       |     r1 = r0;
    0x0000857c add r1, sp, 0x248                                 |     r1 += arg_248h;
    0x0000857e movs r1, r0                                       |     r1 = r0;
    0x00008580 str r4, [r6, 0x78]                                |     *((r6 + 0x78)) = r4;
    0x00008582 movs r0, r0                                       |     
    0x00008584 add r0, sp, 0x2d0                                 |     r0 += arg_2d0h;
    0x00008586 movs r1, r0                                       |     r1 = r0;
    0x00008588 str r0, [r2, 0x5c]                                |     *((r2 + 0x5c)) = r0;
    0x0000858a movs r0, r0                                       |     
    0x0000858c ldr r2, [r3, 0x38]                                |     r2 = *((r3 + 0x38));
    0x0000858e movs r0, r0                                       |     
    0x00008590 str r6, [r5, 0x64]                                |     *((r5 + 0x64)) = r6;
    0x00008592 movs r0, r0                                       |     
    0x00008594 ldr r5, [sp, 0x80]                                |     r5 = *(arg_80h);
    0x00008596 movs r1, r0                                       |     r1 = r0;
    0x00008598 str r4, [r5, 0x54]                                |     *((r5 + 0x54)) = r4;
    0x0000859a movs r0, r0                                       |     
    0x0000859c ldr r6, [r6, 0x30]                                |     r6 = *((r6 + 0x30));
    0x0000859e movs r0, r0                                       |     
    0x000085a0 str r6, [r4, 0x60]                                |     *((r4 + 0x60)) = r6;
    0x000085a2 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/udev/scsi_id @ 0x8b80 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00008b80 ()                                      | void fcn_00008b80 (int16_t arg_24h, int16_t arg_30h, int16_t arg_3ch, int16_t arg_40h, int16_t arg_44h, int16_t arg_108h, int16_t arg_230h, int16_t arg_248h, int16_t arg_844h, int16_t arg_870h, int16_t arg_874h, int16_t arg_878h, int16_t arg_87ch, int16_t arg_880h, int16_t arg_884h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_1ch;
                                                                 |     int32_t var_844h;
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch_2;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch_2;
                                                                 |     int16_t var_58h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x00008b80 svcmi 0xf0e92d                                    |     __asm ("svcmi 0xf0e92d");
    0x00008b84 mov r5, r1                                        |     r5 = r1;
    0x00008b86 ldr r4, [pc, 0x198]                               |     
    0x00008b88 subw sp, sp, 0x84c                                |     __asm ("subw sp, sp, 0x84c");
    0x00008b8c mov r6, r2                                        |     r6 = r2;
    0x00008b8e mov sb, r3                                        |     sb = r3;
    0x00008b90 ldr r1, [pc, 0x190]                               |     r1 = *(0x8d24);
    0x00008b92 mov r8, r0                                        |     r8 = r0;
    0x00008b94 add r4, pc                                        |     r4 = 0x118ba;
    0x00008b96 ldr r1, [r4, r1]                                  |     
    0x00008b98 ldr r1, [r1]                                      |     r1 = *(0x118ba);
    0x00008b9a str.w r1, [sp, 0x844]                             |     __asm ("str.w r1, [arg_844h]");
    0x00008b9e mov.w r1, 0                                       |     r1 = 0;
    0x00008ba0 lsls r0, r0, 4                                    |     r0 <<= 4;
    0x00008ba2 blx 0x1b04                                        |     sprintf_chk ()
    0x00008ba6 ldr.w r2, [sp, 0x870]                             |     r2 = *(arg_870h);
    0x00008baa mov r4, r0                                        |     r4 = r0;
    0x00008bac ldr r3, [pc, 0x178]                               |     
    0x00008bae ldr.w fp, [sp, 0x874]                             |     fp = *(arg_874h);
    0x00008bb2 ldr.w sl, [sp, 0x87c]                             |     sl = *(arg_87ch);
    0x00008bb6 add r3, pc                                        |     
    0x00008bb8 eor.w r0, r2, r2, asr 31                          |     r0 = r2 ^ (r2 >> 31);
    0x00008bbc ldr r3, [r3]                                      |     r3 = *(0x118e2);
    0x00008bbe sub.w r0, r0, r2, asr 31                          |     r0 -= (r2 >> 31);
    0x00008bc2 and r2, r5, 7                                     |     r2 = r5 & 7;
    0x00008bc6 ldr.w r1, [sp, 0x880]                             |     r1 = *(arg_880h);
    0x00008bca cmp r2, r3                                        |     
    0x00008bcc ldr r7, [r4]                                      |     r7 = *(r4);
    0x00008bce uxtb r0, r0                                       |     r0 = (int8_t) r0;
    0x00008bd0 ble 0x8bfa                                        |     
                                                                 |     while (r3 == 8) {
    0x00008bd2 rsbs r0, r0, 0                                    |         r0 -= ;
                                                                 | label_0:
    0x00008bd4 ldr r2, [pc, 0x154]                               |         
    0x00008bd6 cmp r7, 0                                         |         
    0x00008bd8 ldr r3, [pc, 0x148]                               |         r3 = *(0x8d24);
    0x00008bda it ge                                             |         
                                                                 |         if (r7 < 0) {
    0x00008bdc strge r7, [r4]                                    |             *(r4) = r7;
                                                                 |         }
    0x00008bde add r2, pc                                        |         r2 = 0x1190e;
    0x00008be0 ldr r3, [r2, r3]                                  |         r3 = *(0x1190e);
    0x00008be2 ldr r2, [r3]                                      |         r2 = *(0x1190e);
    0x00008be4 ldr.w r3, [sp, 0x844]                             |         r3 = *(arg_844h);
    0x00008be8 eors r2, r3                                       |         r2 ^= r3;
    0x00008bea mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00008bee bne.w 0x8d1c                                      |             goto label_1;
                                                                 |         }
    0x00008bf2 addw sp, sp, 0x84c                                |         __asm ("addw sp, var_0h");
    0x00008bf6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
    0x00008bf8 ldrh r0, [r6, 0x3e]                               |         r0 = *((r6 + 0x3e));
    0x00008bfa ldr r3, [pc, 0x134]                               |         
    0x00008bfc add r3, pc                                        |         
    0x00008bfe ldr r3, [r3]                                      |         r3 = *(0x11932);
    0x00008c00 cmp r3, 8                                         |         
    0x00008c02 beq 0x8bd2                                        |         
                                                                 |     }
    0x00008c04 add r3, sp, 0x44                                  |     r3 += arg_44h;
    0x00008c06 addw r2, sp, 0x884                                |     __asm ("addw r2, arg_884h");
    0x00008c0a str r0, [r4]                                      |     *(r4) = r0;
    0x00008c0c mov r0, r3                                        |     r0 = r3;
    0x00008c0e str r3, [sp, 0x3c]                                |     *(arg_3ch) = r3;
    0x00008c10 mov.w r3, 0x800                                   |     r3 = 0x800;
    0x00008c14 str r1, [sp]                                      |     *(sp) = r1;
    0x00008c16 mov r1, r3                                        |     r1 = r3;
    0x00008c18 str r2, [sp, 4]                                   |     var_4h = r2;
    0x00008c1a str r2, [sp, 0x40]                                |     *(arg_40h) = r2;
    0x00008c1c movs r2, 1                                        |     r2 = 1;
    0x00008c1e blx 0x1914                                        |     fcn_00001914 ();
    0x00008c20 mrc p1, 3, apsr_nzcv, c10, c8, 5                  |     __asm ("mrc p1, 3, apsr_nzcv, c10, c8, 5");
    0x00008c24 lsrs r0, r0, 0x1c                                 |     r0 >>= 0x1c;
                                                                 |     if (r0 == r0) {
    0x00008c26 beq 0x8c68                                        |         goto label_2;
                                                                 |     }
    0x00008c28 bl 0x9624                                         |     r0 = fcn_00009624 (r0);
    0x00008c2c cmp r0, 1                                         |     
                                                                 |     if (r0 == 1) {
    0x00008c2e beq 0x8d16                                        |         goto label_3;
                                                                 |     }
    0x00008c30 ldr r3, [pc, 0x100]                               |     
    0x00008c32 add r3, pc                                        |     r3 = 0x1196a;
                                                                 |     if (r6 == 0) {
                                                                 |         do {
    0x00008c34 cbnz r6, 0x8c6c                                   |             
    0x00008c36 str r3, [sp, 0x14]                                |             var_14h = r3;
    0x00008c38 mov r2, fp                                        |             r2 = fp;
    0x00008c3a ldr r3, [sp, 0x3c]                                |             r3 = *(arg_3ch);
    0x00008c3c mov r0, r5                                        |             r0 = r5;
    0x00008c3e ldr.w r1, [sp, 0x870]                             |             r1 = *(arg_870h);
    0x00008c42 str r6, [sp, 0x1c]                                |             var_1ch_2 = r6;
    0x00008c44 str r3, [sp, 0x10]                                |             var_10h = r3;
    0x00008c46 ldr r3, [pc, 0xf0]                                |             
    0x00008c48 str.w sl, [sp]                                    |             __asm ("str.w sl, [sp]");
    0x00008c4c str.w r8, [sp, 0x18]                              |             __asm ("str.w r8, [var_18h]");
    0x00008c4e strh r0, [r3]                                     |             *(r3) = r0;
    0x00008c50 add r3, pc                                        |             r3 = 0x1198e;
    0x00008c52 str.w r8, [sp, 0xc]                               |             __asm ("str.w r8, [var_ch_2]");
    0x00008c56 str r3, [sp, 8]                                   |             var_8h = r3;
    0x00008c58 ldr r3, [pc, 0xe0]                                |             
    0x00008c5a add r3, pc                                        |             r3 = 0x1199a;
    0x00008c5c str r3, [sp, 4]                                   |             var_4h = r3;
    0x00008c5e ldr.w r3, [sp, 0x878]                             |             r3 = *(arg_878h);
    0x00008c62 bl 0x8260                                         |             fcn_00008260 (r0, r1, r2, r3, r4, r5, r6);
    0x00008c66 b 0x8bd4                                          |             goto label_0;
                                                                 | label_2:
    0x00008c68 mov r3, r8                                        |             r3 = r8;
                                                                 |             if (r6 == 0) {
    0x00008c6a cbz r6, 0x8cb8                                    |                 goto label_4;
                                                                 |             }
                                                                 |         }
    0x00008c6c cmp.w sb, 0                                       |         
                                                                 |         if (sb != 0) {
    0x00008c70 beq 0x8ce0                                        |             
    0x00008c72 strd r3, r8, [sp, 0x28]                           |             __asm ("strd r3, r8, [sp, 0x28]");
    0x00008c76 mov r2, fp                                        |             r2 = fp;
    0x00008c78 ldr r3, [sp, 0x3c]                                |             r3 = *(arg_3ch);
    0x00008c7a mov r0, r5                                        |             r0 = r5;
    0x00008c7c ldr.w r1, [sp, 0x870]                             |             r1 = *(arg_870h);
    0x00008c80 str.w sl, [sp]                                    |             __asm ("str.w sl, [sp]");
    0x00008c84 str r3, [sp, 0x24]                                |             *(arg_24h) = r3;
    0x00008c86 ldr r3, [pc, 0xb8]                                |             
    0x00008c88 str.w sb, [sp, 0x20]                              |             __asm ("str.w sb, [var_58h]");
    0x00008c8c str.w sb, [sp, 0x14]                              |             __asm ("str.w sb, [var_14h]");
    0x00008c90 add r3, pc                                        |             r3 = 0x119d6;
    0x00008c92 str r6, [sp, 0x1c]                                |             var_1ch_2 = r6;
    0x00008c94 str r3, [sp, 0x18]                                |             var_18h = r3;
    0x00008c96 ldr r3, [pc, 0xac]                                |             
    0x00008c98 str r6, [sp, 0xc]                                 |             var_ch_2 = r6;
    0x00008c9a add r3, pc                                        |             r3 = 0x119e4;
    0x00008c9c str r3, [sp, 0x10]                                |             var_10h = r3;
    0x00008c9e ldr r3, [pc, 0xa8]                                |             
    0x00008ca0 add r3, pc                                        |             r3 = 0x119ee;
    0x00008ca2 str r3, [sp, 8]                                   |             var_8h = r3;
    0x00008ca4 ldr r3, [pc, 0xa4]                                |             
    0x00008ca6 add r3, pc                                        |             r3 = 0x119f6;
    0x00008ca8 str r3, [sp, 4]                                   |             var_4h = r3;
    0x00008caa movs r3, 0                                        |             r3 = 0;
    0x00008cac str r3, [sp, 0x30]                                |             *(arg_30h) = r3;
    0x00008cae ldr.w r3, [sp, 0x878]                             |             r3 = *(arg_878h);
    0x00008cb2 bl 0x8260                                         |             fcn_00008260 (r0, r1, r2, r3, r4, r5, r6);
    0x00008cb6 b 0x8bd4                                          |             goto label_0;
                                                                 | label_4:
    0x00008cb8 ldr r3, [sp, 0x3c]                                |             r3 = *(arg_3ch);
    0x00008cba mov r2, fp                                        |             r2 = fp;
    0x00008cbc ldr.w r1, [sp, 0x870]                             |             r1 = *(arg_870h);
    0x00008cc0 mov r0, r5                                        |             r0 = r5;
    0x00008cc2 str r6, [sp, 0x10]                                |             var_10h = r6;
    0x00008cc4 str r3, [sp, 0xc]                                 |             var_ch_2 = r3;
    0x00008cc6 ldr r3, [pc, 0x88]                                |             
    0x00008cc8 str.w sl, [sp]                                    |             __asm ("str.w sl, [sp]");
    0x00008ccc add r3, pc                                        |             r3 = 0x11a22;
    0x00008cce str r3, [sp, 8]                                   |             var_8h = r3;
    0x00008cd0 ldr r3, [pc, 0x80]                                |             
    0x00008cd2 add r3, pc                                        |             r3 = 0x11a2a;
    0x00008cd4 str r3, [sp, 4]                                   |             var_4h = r3;
    0x00008cd6 ldr.w r3, [sp, 0x878]                             |             r3 = *(arg_878h);
    0x00008cda bl 0x8260                                         |             fcn_00008260 (r0, r1, r2, r3, r4, r5, r6);
    0x00008cde b 0x8bd4                                          |             goto label_0;
                                                                 |         }
    0x00008ce0 str r3, [sp, 0x1c]                                |         var_1ch_2 = r3;
    0x00008ce2 mov r2, fp                                        |         r2 = fp;
    0x00008ce4 ldr r3, [sp, 0x3c]                                |         r3 = *(arg_3ch);
    0x00008ce6 mov r0, r5                                        |         r0 = r5;
    0x00008ce8 ldr.w r1, [sp, 0x870]                             |         r1 = *(arg_870h);
    0x00008cec strd r8, sb, [sp, 0x20]                           |         __asm ("strd r8, sb, [sp, 0x20]");
    0x00008cf0 str r3, [sp, 0x18]                                |         var_18h = r3;
    0x00008cf2 ldr r3, [pc, 0x64]                                |         
    0x00008cf4 str.w sl, [sp]                                    |         __asm ("str.w sl, [sp]");
    0x00008cf8 str r6, [sp, 0x14]                                |         var_14h = r6;
    0x00008cfa add r3, pc                                        |         r3 = 0x11a58;
    0x00008cfc str r6, [sp, 0xc]                                 |         var_ch_2 = r6;
    0x00008cfe str r3, [sp, 0x10]                                |         var_10h = r3;
    0x00008d00 ldr r3, [pc, 0x58]                                |         
    0x00008d02 add r3, pc                                        |         r3 = 0x11a62;
    0x00008d04 str r3, [sp, 8]                                   |         var_8h = r3;
    0x00008d06 ldr r3, [pc, 0x58]                                |         
    0x00008d08 add r3, pc                                        |         r3 = 0x11a6e;
    0x00008d0a str r3, [sp, 4]                                   |         var_4h = r3;
    0x00008d0c ldr.w r3, [sp, 0x878]                             |         r3 = *(arg_878h);
    0x00008d10 bl 0x8260                                         |         fcn_00008260 (r0, r1, r2, r3, r4, r5, r6);
    0x00008d14 b 0x8bd4                                          |         goto label_0;
                                                                 | label_3:
    0x00008d16 ldr r3, [pc, 0x4c]                                |         
    0x00008d18 add r3, pc                                        |         r3 = 0x11a82;
    0x00008d1a b 0x8c34                                          |         
                                                                 |     } while (1);
                                                                 | label_1:
    0x00008d1c blx 0x1954                                        |     parse_printf_format ();
    0x00008d20 str r2, [sp, 0x230]                               |     *(arg_230h) = r2;
    0x00008d22 movs r1, r0                                       |     r1 = r0;
    0x00008d24 lsls r0, r6, 6                                    |     r0 = r6 << 6;
    0x00008d26 movs r0, r0                                       |     
    0x00008d28 str r6, [sp, 0x248]                               |     *(arg_248h) = r6;
    0x00008d2a movs r1, r0                                       |     r1 = r0;
    0x00008d2c str r2, [sp, 0x108]                               |     *(arg_108h) = r2;
    0x00008d2e movs r1, r0                                       |     r1 = r0;
    0x00008d30 adr r1, 0x1a0                                     |     r1 = segment.PHDR;
    0x00008d32 movs r1, r0                                       |     r1 = r0;
    0x00008d34 str r2, [r5, 0x30]                                |     *((r5 + 0x30)) = r2;
    0x00008d36 movs r0, r0                                       |     
    0x00008d38 str r4, [r7, 0x34]                                |     *((r7 + 0x34)) = r4;
    0x00008d3a movs r0, r0                                       |     
    0x00008d3c str r6, [r0, 0x34]                                |     *((r0 + 0x34)) = r6;
    0x00008d3e movs r0, r0                                       |     
    0x00008d40 str r4, [r3, 0x2c]                                |     *((r3 + 0x2c)) = r4;
    0x00008d42 movs r0, r0                                       |     
    0x00008d44 str r6, [r4, 0x2c]                                |     *((r4 + 0x2c)) = r6;
    0x00008d46 movs r0, r0                                       |     
    0x00008d48 str r0, [r6, 0x2c]                                |     *((r6 + 0x2c)) = r0;
    0x00008d4a movs r0, r0                                       |     
    0x00008d4c str r2, [r7, 0x2c]                                |     *((r7 + 0x2c)) = r2;
    0x00008d4e movs r0, r0                                       |     
    0x00008d50 str r0, [r2, 0x30]                                |     *((r2 + 0x30)) = r0;
    0x00008d52 movs r0, r0                                       |     
    0x00008d54 str r6, [r1, 0x2c]                                |     *((r1 + 0x2c)) = r6;
    0x00008d56 movs r0, r0                                       |     
    0x00008d58 str r2, [r2, 0x2c]                                |     *((r2 + 0x2c)) = r2;
    0x00008d5a movs r0, r0                                       |     
    0x00008d5c str r6, [r1, 0x28]                                |     *((r1 + 0x28)) = r6;
    0x00008d5e movs r0, r0                                       |     
    0x00008d60 str r0, [r3, 0x28]                                |     *((r3 + 0x28)) = r0;
    0x00008d62 movs r0, r0                                       |     
    0x00008d64 str r4, [r7, 0x20]                                |     *((r7 + 0x20)) = r4;
    0x00008d66 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/udev/scsi_id @ 0x8f14 */
                                         | #include <stdint.h>
                                         |  
                                         | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                         |  
    ; (fcn) fcn.00008f14 ()              | void fcn_00008f14 (int16_t arg1, int16_t arg2, int16_t arg3) {
                                         |     int16_t var_4h;
                                         |     int16_t var_8h;
                                         |     int16_t var_ch;
                                         |     r0 = arg1;
                                         |     r1 = arg2;
                                         |     r2 = arg3;
    0x00008f14 invalid                   |     
    0x00008f18 ldr r0, [pc, 0x104]       |     
    0x00008f1a mov r6, r2                |     r6 = r2;
    0x00008f1c sub sp, 0x10              |     
    0x00008f1e movs r3, 0                |     r3 = 0;
    0x00008f20 ldr r2, [pc, 0x100]       |     r2 = *(0x9024);
    0x00008f22 add r0, pc                |     r0 = 0x11f46;
    0x00008f24 str r1, [sp, 4]           |     var_4h = r1;
    0x00008f26 ldr r2, [r0, r2]          |     
    0x00008f28 ldr r2, [r2]              |     r2 = *(0x11f46);
    0x00008f2a str r2, [sp, 0xc]         |     var_ch = r2;
    0x00008f2c mov.w r2, 0               |     r2 = 0;
    0x00008f30 str r3, [sp, 8]           |     var_8h = r3;
    0x00008f32 cmp r4, 0                 |     
                                         |     if (r4 == 0) {
    0x00008f34 beq 0x8fe8                |         goto label_3;
                                         |     }
    0x00008f36 bic r3, r1, 0x70000000    |     r3 = BIT_MASK (r1, 0x70000000);
    0x00008f3a mov r5, r1                |     r5 = r1;
    0x00008f3c cmp r3, 0x10              |     
                                         |     if (r3 > 0x10) {
    0x00008f3e bhi 0x8ffe                |         goto label_4;
                                         |     }
    0x00008f40 lsls r0, r1, 3            |     r0 = r1 << 3;
                                         |     if (r0 < r1) {
    0x00008f42 bpl 0x8f52                |         
    0x00008f44 ldr r0, [pc, 0xe0]        |         
    0x00008f46 ldrb r1, [r4]             |         r1 = *(r4);
    0x00008f48 add r0, pc                |         r0 = 0x11f74;
    0x00008f4a blx 0x1ad4                |         r0 = openat64 ();
    0x00008f4e cmp r0, 0                 |         
                                         |         if (r0 != 0) {
    0x00008f50 bne 0x8fda                |             goto label_2;
                                         |         }
                                         |     }
    0x00008f52 ldr r1, [pc, 0xd8]        |     
    0x00008f54 mov r0, r4                |     r0 = r4;
    0x00008f56 add r1, pc                |     r1 = 0x11f88;
    0x00008f58 blx 0x1ce4                |     fcn_00001ce4 ();
    0x00008f5c lsls r1, r5, 1            |     r1 = r5 << 1;
    0x00008f5e mov r3, r0                |     r3 = r0;
    0x00008f60 add r0, r4                |     r0 += r4;
    0x00008f62 bmi 0x8fd0                |     
                                         |     while ((r2 & 0xfd) != 0) {
    0x00008f64 lsls r2, r5, 2            |         r2 = r5 << 2;
                                         |         if (r2 < r5) {
    0x00008f66 bpl 0x8f6e                |             
    0x00008f68 ldrb r3, [r4, r3]         |             r3 = *((r4 + r3));
    0x00008f6a cmp r3, 0x30              |             
                                         |             if (r3 == 0x30) {
    0x00008f6c beq 0x8fe0                |                 goto label_5;
                                         |             }
                                         |         }
                                         | label_1:
    0x00008f6e add r1, sp, 4             |         r1 += var_4h;
    0x00008f70 bl 0x8db4                 |         r0 = fcn_00008db4 (r0, r1, r2, r3, r4);
    0x00008f74 mov r5, r0                |         r5 = r0;
    0x00008f76 blx 0x1b04                |         sprintf_chk ()
    0x00008f7a ldr r2, [sp, 4]           |         r2 = var_4h;
    0x00008f7c movs r3, 0                |         r3 = 0;
    0x00008f7e str r3, [r0]              |         *(r0) = r3;
    0x00008f80 mov r4, r0                |         r4 = r0;
    0x00008f82 add r1, sp, 8             |         r1 += var_8h;
    0x00008f84 mov r0, r5                |         r0 = r5;
    0x00008f86 bic r2, r2, 0x70000000    |         r2 = BIT_MASK (r2, 0x70000000);
    0x00008f8a blx 0x1ab0                |         libc_current_sigrtmax ();
    0x00008f8e ldr r3, [r4]              |         r3 = *(r4);
    0x00008f90 mov r2, r0                |         r2 = r0;
    0x00008f92 cmp r3, 0                 |         
    0x00008f94 it gt                     |         
                                         |         if (r3 > 0) {
    0x00008f96 rsbgt r0, r3, 0           |             __asm ("rsbgt r0, r3, 0");
                                         |         }
                                         |         if (r3 <= 0) {
    0x00008f98 bgt 0x8fb8                |             
    0x00008f9a ldr r3, [sp, 8]           |             r3 = var_8h;
    0x00008f9c cmp r3, 0                 |             
    0x00008f9e it ne                     |             
                                         |             if (r3 != 0) {
    0x00008fa0 cmpne r3, r5              |                 __asm ("cmpne r3, r5");
                                         |             }
                                         |             if (r3 == 0) {
    0x00008fa2 beq 0x8fda                |                 goto label_2;
                                         |             }
    0x00008fa4 ldrb r3, [r3]             |             r3 = *(r3);
                                         |             if (r3 != 0) {
    0x00008fa6 cbnz r3, 0x8fda           |                 goto label_2;
                                         |             }
                                         |             if (r2 != 0) {
    0x00008fa8 cbz r2, 0x8fb0            |                 
    0x00008faa ldrb r3, [r5]             |                 r3 = *(r5);
    0x00008fac cmp r3, 0x2d              |                 
                                         |                 if (r3 == 0x2d) {
    0x00008fae beq 0x9014                |                     goto label_6;
                                         |                 }
                                         |             }
    0x00008fb0 mov r0, r6                |             r0 = r6;
                                         |             if (r6 == 0) {
    0x00008fb2 cbz r6, 0x8fb8            |                 goto label_0;
                                         |             }
    0x00008fb4 movs r0, 0                |             r0 = 0;
    0x00008fb6 str r2, [r6]              |             *(r6) = r2;
                                         |         }
                                         | label_0:
    0x00008fb8 ldr r2, [pc, 0x74]        |         
    0x00008fba ldr r3, [pc, 0x68]        |         r3 = *(0x9026);
    0x00008fbc add r2, pc                |         r2 = 0x11ff0;
    0x00008fbe ldr r3, [r2, r3]          |         r3 = *(0x11ff0);
    0x00008fc0 ldr r2, [r3]              |         r2 = *(0x11ff0);
    0x00008fc2 ldr r3, [sp, 0xc]         |         r3 = var_ch;
    0x00008fc4 eors r2, r3               |         r2 ^= r3;
    0x00008fc6 mov.w r3, 0               |         r3 = 0;
                                         |         if (r2 != r3) {
    0x00008fca bne 0x901a                |             goto label_7;
                                         |         }
    0x00008fcc add sp, 0x10              |         
    0x00008fce pop {r4, r5, r6, pc}      |         
    0x00008fd0 ldrb r2, [r4, r3]         |         r2 = *((r4 + r3));
    0x00008fd2 subs r2, 0x2b             |         r2 -= 0x2b;
    0x00008fd4 tst.w r2, 0xfd            |         
    0x00008fd8 bne 0x8f64                |         
                                         |     }
                                         | label_2:
    0x00008fda mvn r0, 0x15              |     r0 = ~0x15;
    0x00008fde b 0x8fb8                  |     goto label_0;
                                         | label_5:
    0x00008fe0 ldrb r3, [r0, 1]          |     r3 = *((r0 + 1));
    0x00008fe2 cmp r3, 0                 |     
                                         |     if (r3 == 0) {
    0x00008fe4 beq 0x8f6e                |         goto label_1;
                                         |     }
    0x00008fe6 b 0x8fda                  |     goto label_2;
                                         | label_3:
    0x00008fe8 ldr r1, [pc, 0x48]        |     
    0x00008fea movw r2, 0x15b            |     r2 = 0x15b;
    0x00008fee ldr r3, [pc, 0x48]        |     
    0x00008ff0 ldr r0, [pc, 0x48]        |     
    0x00008ff2 add r1, pc                |     r1 = 0x1202a;
    0x00008ff4 add r3, pc                |     r3 = 0x12032;
    0x00008ff6 adds r1, 7                |     r1 += 7;
    0x00008ff8 add r0, pc                |     r0 = 0x12038;
    0x00008ffa bl 0x7f50                 |     fcn_00007f50 (r0, r1, r2, r3);
                                         | label_4:
    0x00008ffe ldr r1, [pc, 0x40]        |     
    0x00009000 mov.w r2, 0x15c           |     r2 = 0x15c;
    0x00009004 ldr r3, [pc, 0x3c]        |     
    0x00009006 ldr r0, [pc, 0x40]        |     
    0x00009008 add r1, pc                |     r1 = 0x1204e;
    0x0000900a add r3, pc                |     r3 = 0x12052;
    0x0000900c adds r1, 7                |     r1 += 7;
    0x0000900e add r0, pc                |     r0 = 0x1205c;
    0x00009010 bl 0x7f50                 |     fcn_00007f50 (r0, r1, r2, r3);
                                         | label_6:
    0x00009014 mvn r0, 0x21              |     r0 = ~0x21;
    0x00009018 b 0x8fb8                  |     goto label_0;
                                         | label_7:
    0x0000901a blx 0x1954                |     parse_printf_format ();
    0x0000901e nop                       |     
    0x00009020 ldrh r6, [r7, 0x36]       |     r6 = *((r7 + 0x36));
    0x00009022 movs r1, r0               |     r1 = r0;
    0x00009024 lsls r0, r6, 6            |     r0 = r6 << 6;
    0x00009026 movs r0, r0               |     
    0x00009028 str r0, [r1, r2]          |     *((r1 + r2)) = r0;
    0x0000902a movs r0, r0               |     
    0x0000902c str r2, [r7, r1]          |     *((r7 + r1)) = r2;
    0x0000902e movs r0, r0               |     
    0x00009030 ldrh r4, [r4, 0x32]       |     r4 = *((r4 + 0x32));
    0x00009032 movs r1, r0               |     r1 = r0;
    0x00009034 str r2, [r3, 0x24]        |     *((r3 + 0x24)) = r2;
    0x00009036 movs r0, r0               |     
    0x00009038 str r0, [r0, 0x30]        |     *((r0 + 0x30)) = r0;
    0x0000903a movs r0, r0               |     
    0x0000903c ldrsh r4, [r0, r6]        |     r4 = *((r0 + r6));
    0x0000903e movs r0, r0               |     
    0x00009040 str r4, [r0, 0x24]        |     *((r0 + 0x24)) = r4;
    0x00009042 movs r0, r0               |     
    0x00009044 str r2, [r5, 0x2c]        |     *((r5 + 0x2c)) = r2;
    0x00009046 movs r0, r0               |     
    0x00009048 str r2, [r0, 0x28]        |     *((r0 + 0x28)) = r2;
    0x0000904a 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/udev/scsi_id @ 0x90ec */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.000090ec ()                  | void fcn_000090ec (int16_t arg1, int16_t arg2) {
                                             |     int16_t var_4h_7;
                                             |     int16_t var_8h_5;
                                             |     int16_t var_ch_2;
                                             |     r0 = arg1;
                                             |     r1 = arg2;
    0x000090ec blmi 0xa1b990                 |     __asm ("blmi 0xa1b990");
    0x000090f0 push {r4, r5, r6, r7, lr}     |     
    0x000090f2 movs r7, 0                    |     r7 = 0;
    0x000090f4 add r2, pc                    |     r2 += pc;
    0x000090f6 sub sp, 0x14                  |     
    0x000090f8 ldr r3, [r2, r3]              |     r3 = *((r2 + r3));
    0x000090fa ldr r3, [r3]                  |     r3 = *(r3);
    0x000090fc str r3, [sp, 0xc]             |     var_ch_2 = r3;
    0x000090fe mov.w r3, 0                   |     r3 = 0;
    0x00009102 strd r7, r7, [sp, 4]          |     __asm ("strd r7, r7, [sp, 4]");
                                             |     if (r0 == 0) {
    0x00009106 cbz r0, 0x916a                |         goto label_1;
                                             |     }
    0x00009108 mov r6, r1                    |     r6 = r1;
    0x0000910a ldr r1, [pc, 0x88]            |     
    0x0000910c mov r4, r0                    |     r4 = r0;
    0x0000910e add r1, pc                    |     r1 = 0x122a8;
    0x00009110 blx 0x1ce4                    |     fcn_00001ce4 ();
    0x00009114 add r1, sp, 4                 |     r1 += var_4h_7;
    0x00009116 add r0, r4                    |     r0 += r4;
    0x00009118 bl 0x8db4                     |     r0 = fcn_00008db4 (r0, r1, r2, r3, r4);
    0x0000911c mov r5, r0                    |     r5 = r0;
    0x0000911e blx 0x1b04                    |     sprintf_chk ()
    0x00009122 ldr r2, [sp, 4]               |     r2 = var_4h_7;
    0x00009124 mov r4, r0                    |     r4 = r0;
    0x00009126 str r7, [r0]                  |     *(r0) = r7;
    0x00009128 add r1, sp, 8                 |     r1 += var_8h_5;
    0x0000912a mov r0, r5                    |     r0 = r5;
    0x0000912c blx 0x1884                    |     fcn_00001884 ();
    0x00009130 ldr r3, [r4]                  |     r3 = *(r4);
    0x00009132 mov r2, r0                    |     r2 = r0;
    0x00009134 cmp r3, 0                     |     
    0x00009136 it gt                         |     
                                             |     if (r3 > 0) {
    0x00009138 rsbgt r0, r3, 0               |         __asm ("rsbgt r0, r3, 0");
                                             |     }
                                             |     if (r3 > 0) {
    0x0000913a bgt 0x914e                    |         goto label_0;
                                             |     }
    0x0000913c ldr r3, [sp, 8]               |     r3 = var_8h_5;
    0x0000913e cmp r3, 0                     |     
    0x00009140 it ne                         |     
                                             |     if (r3 != 0) {
    0x00009142 cmpne r3, r5                  |         __asm ("cmpne r3, r5");
                                             |     }
                                             |     if (r3 == 0) {
    0x00009144 beq 0x9180                    |         goto label_2;
                                             |     }
    0x00009146 ldrb r0, [r3]                 |     r0 = *(r3);
                                             |     if (r0 != 0) {
    0x00009148 cbnz r0, 0x9180               |         goto label_2;
                                             |     }
                                             |     if (r6 == 0) {
    0x0000914a cbz r6, 0x9166                |         goto label_3;
                                             |     }
    0x0000914c str r2, [r6]                  |     *(r6) = r2;
                                             |     do {
                                             | label_0:
    0x0000914e ldr r2, [pc, 0x48]            |         
    0x00009150 ldr r3, [pc, 0x3c]            |         r3 = *(0x9190);
    0x00009152 add r2, pc                    |         r2 = 0x122f0;
    0x00009154 ldr r3, [r2, r3]              |         r3 = *(0x122f0);
    0x00009156 ldr r2, [r3]                  |         r2 = *(0x122f0);
    0x00009158 ldr r3, [sp, 0xc]             |         r3 = var_ch_2;
    0x0000915a eors r2, r3                   |         r2 ^= r3;
    0x0000915c mov.w r3, 0                   |         r3 = 0;
                                             |         if (r2 != r3) {
    0x00009160 bne 0x9186                    |             goto label_4;
                                             |         }
    0x00009162 add sp, 0x14                  |         
    0x00009164 pop {r4, r5, r6, r7, pc}      |         
                                             | label_3:
    0x00009166 mov r0, r6                    |         r0 = r6;
    0x00009168 b 0x914e                      |         
                                             |     } while (1);
                                             | label_1:
    0x0000916a ldr r1, [pc, 0x30]            |     
    0x0000916c movw r2, 0x18f                |     r2 = 0x18f;
    0x00009170 ldr r3, [pc, 0x2c]            |     
    0x00009172 ldr r0, [pc, 0x30]            |     
    0x00009174 add r1, pc                    |     r1 = 0x12316;
    0x00009176 add r3, pc                    |     r3 = 0x1231a;
    0x00009178 adds r1, 7                    |     r1 += 7;
    0x0000917a add r0, pc                    |     r0 = 0x12324;
    0x0000917c bl 0x7f50                     |     fcn_00007f50 (r0, r1, r2, r3);
                                             | label_2:
    0x00009180 mvn r0, 0x15                  |     r0 = ~0x15;
    0x00009184 b 0x914e                      |     goto label_0;
                                             | label_4:
    0x00009186 blx 0x1954                    |     parse_printf_format ();
    0x0000918a nop                           |     
    0x0000918c ldrh r4, [r5, 0x28]           |     r4 = *((r5 + 0x28));
    0x0000918e movs r1, r0                   |     r1 = r0;
    0x00009190 lsls r0, r6, 6                |     r0 = r6 << 6;
    0x00009192 movs r0, r0                   |     
    0x00009194 ldr r6, [pc, 0x308]           |     r6 = *(0x94a0);
    0x00009196 movs r0, r0                   |     
    0x00009198 ldrh r6, [r1, 0x26]           |     r6 = *((r1 + 0x26));
    0x0000919a movs r1, r0                   |     r1 = r0;
    0x0000919c str r0, [r3, 0xc]             |     *((r3 + 0xc)) = r0;
    0x0000919e movs r0, r0                   |     
    0x000091a0 str r6, [r5, 0x18]            |     *((r5 + 0x18)) = r6;
    0x000091a2 movs r0, r0                   |     
    0x000091a4 ldrsh r2, [r0, r0]            |     r2 = *((r0 + r0));
    0x000091a6 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/udev/scsi_id @ 0x91a8 */
                                         | #include <stdint.h>
                                         |  
                                         | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                         |  
    ; (fcn) fcn.000091a8 ()              | void fcn_000091a8 (int16_t arg1, int16_t arg2, int16_t arg3) {
                                         |     int16_t var_4h_3;
                                         |     int16_t var_8h_2;
                                         |     int16_t var_ch_3;
                                         |     r0 = arg1;
                                         |     r1 = arg2;
                                         |     r2 = arg3;
    0x000091a8 invalid                   |     
    0x000091ac ldr r0, [pc, 0x108]       |     
    0x000091ae mov r6, r2                |     r6 = r2;
    0x000091b0 sub sp, 0x10              |     
    0x000091b2 movs r3, 0                |     r3 = 0;
    0x000091b4 ldr r2, [pc, 0x104]       |     r2 = *(0x92bc);
    0x000091b6 add r0, pc                |     r0 = 0x12472;
    0x000091b8 str r1, [sp, 4]           |     var_4h_3 = r1;
    0x000091ba ldr r2, [r0, r2]          |     
    0x000091bc ldr r2, [r2]              |     r2 = *(0x12472);
    0x000091be str r2, [sp, 0xc]         |     var_ch_3 = r2;
    0x000091c0 mov.w r2, 0               |     r2 = 0;
    0x000091c4 str r3, [sp, 8]           |     var_8h_2 = r3;
    0x000091c6 cmp r4, 0                 |     
                                         |     if (r4 == 0) {
    0x000091c8 beq 0x9282                |         goto label_3;
                                         |     }
    0x000091ca bic r3, r1, 0x70000000    |     r3 = BIT_MASK (r1, 0x70000000);
    0x000091ce mov r5, r1                |     r5 = r1;
    0x000091d0 cmp r3, 0x10              |     
                                         |     if (r3 > 0x10) {
    0x000091d2 bhi 0x9298                |         goto label_4;
                                         |     }
    0x000091d4 lsls r0, r1, 3            |     r0 = r1 << 3;
                                         |     if (r0 < r1) {
    0x000091d6 bpl 0x91e6                |         
    0x000091d8 ldr r0, [pc, 0xe4]        |         
    0x000091da ldrb r1, [r4]             |         r1 = *(r4);
    0x000091dc add r0, pc                |         r0 = 0x124a0;
    0x000091de blx 0x1ad4                |         r0 = openat64 ();
    0x000091e2 cmp r0, 0                 |         
                                         |         if (r0 != 0) {
    0x000091e4 bne 0x9274                |             goto label_2;
                                         |         }
                                         |     }
    0x000091e6 ldr r1, [pc, 0xdc]        |     
    0x000091e8 mov r0, r4                |     r0 = r4;
    0x000091ea add r1, pc                |     r1 = 0x124b4;
    0x000091ec blx 0x1ce4                |     fcn_00001ce4 ();
    0x000091f0 lsls r1, r5, 1            |     r1 = r5 << 1;
    0x000091f2 mov r3, r0                |     r3 = r0;
    0x000091f4 add r0, r4                |     r0 += r4;
    0x000091f6 bmi 0x926a                |     
                                         |     while ((r2 & 0xfd) != 0) {
    0x000091f8 lsls r2, r5, 2            |         r2 = r5 << 2;
                                         |         if (r2 < r5) {
    0x000091fa bpl 0x9202                |             
    0x000091fc ldrb r3, [r4, r3]         |             r3 = *((r4 + r3));
    0x000091fe cmp r3, 0x30              |             
                                         |             if (r3 == 0x30) {
    0x00009200 beq 0x927a                |                 goto label_5;
                                         |             }
                                         |         }
                                         | label_1:
    0x00009202 add r1, sp, 4             |         r1 += var_4h_3;
    0x00009204 bl 0x8db4                 |         r0 = fcn_00008db4 (r0, r1, r2, r3, r4);
    0x00009208 mov r5, r0                |         r5 = r0;
    0x0000920a blx 0x1b04                |         sprintf_chk ()
    0x0000920e ldr r2, [sp, 4]           |         r2 = var_4h_3;
    0x00009210 movs r3, 0                |         r3 = 0;
    0x00009212 str r3, [r0]              |         *(r0) = r3;
    0x00009214 mov r4, r0                |         r4 = r0;
    0x00009216 add r1, sp, 8             |         r1 += var_8h_2;
    0x00009218 mov r0, r5                |         r0 = r5;
    0x0000921a bic r2, r2, 0x70000000    |         r2 = BIT_MASK (r2, 0x70000000);
    0x0000921e blx 0x1b64                |         printf_chk ();
    0x00009222 ldr r3, [r4]              |         r3 = *(r4);
    0x00009224 mov r2, r0                |         r2 = r0;
    0x00009226 cmp r3, 0                 |         
    0x00009228 it gt                     |         
                                         |         if (r3 > 0) {
    0x0000922a rsbgt r0, r3, 0           |             __asm ("rsbgt r0, r3, 0");
                                         |         }
                                         |         if (r3 <= 0) {
    0x0000922c bgt 0x9252                |             
    0x0000922e ldr r3, [sp, 8]           |             r3 = var_8h_2;
    0x00009230 cmp r3, 0                 |             
    0x00009232 it ne                     |             
                                         |             if (r3 != 0) {
    0x00009234 cmpne r3, r5              |                 __asm ("cmpne r3, r5");
                                         |             }
                                         |             if (r3 == 0) {
    0x00009236 beq 0x9274                |                 goto label_2;
                                         |             }
    0x00009238 ldrb r3, [r3]             |             r3 = *(r3);
                                         |             if (r3 != 0) {
    0x0000923a cbnz r3, 0x9274           |                 goto label_2;
                                         |             }
    0x0000923c orrs.w r3, r2, r1         |             r3 = r2 | r1;
                                         |             if (r3 != r2) {
    0x00009240 beq 0x9248                |                 
    0x00009242 ldrb r3, [r5]             |                 r3 = *(r5);
    0x00009244 cmp r3, 0x2d              |                 
                                         |                 if (r3 == 0x2d) {
    0x00009246 beq 0x92ae                |                     goto label_6;
                                         |                 }
                                         |             }
    0x00009248 mov r0, r6                |             r0 = r6;
                                         |             if (r6 == 0) {
    0x0000924a cbz r6, 0x9252            |                 goto label_0;
                                         |             }
    0x0000924c movs r0, 0                |             r0 = 0;
    0x0000924e strd r2, r1, [r6]         |             __asm ("strd r2, r1, [r6]");
                                         |         }
                                         | label_0:
    0x00009252 ldr r2, [pc, 0x74]        |         
    0x00009254 ldr r3, [pc, 0x64]        |         r3 = *(0x92bc);
    0x00009256 add r2, pc                |         r2 = 0x12524;
    0x00009258 ldr r3, [r2, r3]          |         r3 = *(0x12524);
    0x0000925a ldr r2, [r3]              |         r2 = *(0x12524);
    0x0000925c ldr r3, [sp, 0xc]         |         r3 = var_ch_3;
    0x0000925e eors r2, r3               |         r2 ^= r3;
    0x00009260 mov.w r3, 0               |         r3 = 0;
                                         |         if (r2 != r3) {
    0x00009264 bne 0x92b4                |             goto label_7;
                                         |         }
    0x00009266 add sp, 0x10              |         
    0x00009268 pop {r4, r5, r6, pc}      |         
    0x0000926a ldrb r2, [r4, r3]         |         r2 = *((r4 + r3));
    0x0000926c subs r2, 0x2b             |         r2 -= 0x2b;
    0x0000926e tst.w r2, 0xfd            |         
    0x00009272 bne 0x91f8                |         
                                         |     }
                                         | label_2:
    0x00009274 mvn r0, 0x15              |     r0 = ~0x15;
    0x00009278 b 0x9252                  |     goto label_0;
                                         | label_5:
    0x0000927a ldrb r3, [r0, 1]          |     r3 = *((r0 + 1));
    0x0000927c cmp r3, 0                 |     
                                         |     if (r3 == 0) {
    0x0000927e beq 0x9202                |         goto label_1;
                                         |     }
    0x00009280 b 0x9274                  |     goto label_2;
                                         | label_3:
    0x00009282 ldr r1, [pc, 0x48]        |     
    0x00009284 movw r2, 0x1a7            |     r2 = 0x1a7;
    0x00009288 ldr r3, [pc, 0x44]        |     
    0x0000928a ldr r0, [pc, 0x48]        |     
    0x0000928c add r1, pc                |     r1 = 0x1255e;
    0x0000928e add r3, pc                |     r3 = 0x12562;
    0x00009290 adds r1, 7                |     r1 += 7;
    0x00009292 add r0, pc                |     r0 = 0x1256c;
    0x00009294 bl 0x7f50                 |     fcn_00007f50 (r0, r1, r2, r3);
                                         | label_4:
    0x00009298 ldr r1, [pc, 0x3c]        |     
    0x0000929a mov.w r2, 0x1a8           |     r2 = 0x1a8;
    0x0000929e ldr r3, [pc, 0x3c]        |     
    0x000092a0 ldr r0, [pc, 0x3c]        |     
    0x000092a2 add r1, pc                |     r1 = 0x1257e;
    0x000092a4 add r3, pc                |     r3 = 0x12586;
    0x000092a6 adds r1, 7                |     r1 += 7;
    0x000092a8 add r0, pc                |     r0 = 0x1258c;
    0x000092aa bl 0x7f50                 |     fcn_00007f50 (r0, r1, r2, r3);
                                         | label_6:
    0x000092ae mvn r0, 0x21              |     r0 = ~0x21;
    0x000092b2 b 0x9252                  |     goto label_0;
                                         | label_7:
    0x000092b4 blx 0x1954                |     parse_printf_format ();
    0x000092b8 ldrh r2, [r5, 0x22]       |     r2 = *((r5 + 0x22));
    0x000092ba movs r1, r0               |     r1 = r0;
    0x000092bc lsls r0, r6, 6            |     r0 = r6 << 6;
    0x000092be movs r0, r0               |     
    0x000092c0 ldr r5, [pc, 0x3d0]       |     r5 = *(0x9694);
    0x000092c2 movs r0, r0               |     
    0x000092c4 ldr r5, [pc, 0x398]       |     r5 = *(0x9660);
    0x000092c6 movs r0, r0               |     
    0x000092c8 ldrh r2, [r1, 0x1e]       |     r2 = *((r1 + 0x1e));
    0x000092ca movs r1, r0               |     r1 = r0;
    0x000092cc ldrsh r0, [r0, r7]        |     r0 = *((r0 + r7));
    0x000092ce movs r0, r0               |     
    0x000092d0 str r2, [r0, 8]           |     *((r0 + 8)) = r2;
    0x000092d2 movs r0, r0               |     
    0x000092d4 ldrb r2, [r5, r3]         |     r2 = *((r5 + r3));
    0x000092d6 movs r0, r0               |     
    0x000092d8 ldrsh r2, [r5, r6]        |     r2 = *((r5 + r6));
    0x000092da movs r0, r0               |     
    0x000092dc str r4, [r5, 4]           |     *((r5 + 4)) = r4;
    0x000092de movs r0, r0               |     
    0x000092e0 ldrsh r0, [r5, r7]        |     r0 = *((r5 + r7));
    0x000092e2 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/udev/scsi_id @ 0x96b4 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.000096b4 ()                  | void fcn_000096b4 (uint32_t arg1, int16_t arg2) {
                                             |     int16_t var_ch;
                                             |     int16_t var_14h;
                                             |     int32_t var_0h_2;
                                             |     int32_t var_0h_3;
                                             |     int16_t socket;
                                             |     int16_t var_2h;
                                             |     int16_t var_8h;
                                             |     int32_t var_4h;
                                             |     int16_t var_0h;
                                             |     r0 = arg1;
                                             |     r1 = arg2;
    0x000096b4 invalid                       |     
    0x000096b8 ldr r1, [pc, 0xec]            |     
    0x000096ba sub sp, 0x14                  |     
    0x000096bc movs r3, 0                    |     r3 = 0;
    0x000096be ldr r2, [pc, 0xec]            |     r2 = *(0x97ae);
    0x000096c0 add r7, sp, 8                 |     r7 += var_8h;
    0x000096c2 add r1, pc                    |     r1 = 0x12e6e;
    0x000096c4 ldr r2, [r1, r2]              |     
    0x000096c6 ldr r2, [r2]                  |     r2 = *(0x12e6e);
    0x000096c8 str r2, [r7, 4]               |     var_4h = r2;
    0x000096ca mov.w r2, 0                   |     r2 = 0;
    0x000096ce str r3, [r7]                  |     *(r7) = r3;
    0x000096d0 cmp r4, 0                     |     
                                             |     if (r4 == 0) {
    0x000096d2 beq 0x9770                    |         goto label_2;
                                             |     }
    0x000096d4 cmp r0, 0                     |     
    0x000096d6 mov r5, r0                    |     r5 = r0;
                                             |     if (r0 < 0) {
    0x000096d8 blt 0x9784                    |         goto label_3;
                                             |     }
    0x000096da bne 0x9730                    |     
                                             |     while (r0 == r5) {
    0x000096dc movs r1, 1                    |         r1 = 1;
    0x000096de movs r0, 0x11                 |         r0 = 0x11;
    0x000096e0 blx 0x182c                    |         r0 = fcn_0000182c ();
    0x000096e4 mov r1, r0                    |         r1 = r0;
    0x000096e6 str r0, [r7]                  |         *(r7) = r0;
    0x000096e8 cmp r0, 0                     |         
                                             |         if (r0 == 0) {
    0x000096ea beq 0x979e                    |             goto label_4;
                                             |         }
    0x000096ec movs r0, 0x10                 |         r0 = 0x10;
    0x000096ee blx 0x1b88                    |         r0 = memchr (r0, r1, r2);
    0x000096f2 cmp r0, 0                     |         
                                             |         if (r0 < 0) {
    0x000096f4 blt 0x9766                    |             goto label_5;
                                             |         }
                                             | label_0:
    0x000096f6 movs r0, 0x80                 |         r0 = 0x80;
    0x000096f8 blx 0x1a4c                    |         fcn_00001a4c ();
    0x000096fc ldr r2, [r7]                  |         r2 = *(r7);
    0x000096fe mov r5, r0                    |         r5 = r0;
    0x00009700 cmp r0, 0                     |         
                                             |         if (r0 == 0) {
    0x00009702 beq 0x979e                    |             goto label_4;
                                             |         }
    0x00009704 movs r6, 0                    |         r6 = 0;
    0x00009706 movs r1, 0x80                 |         r1 = 0x80;
    0x00009708 bl 0xa864                     |         fcn_0000a864 (r0, r1, r2);
    0x0000970c str r5, [r4]                  |         *(r4) = r5;
                                             | label_1:
    0x0000970e ldr r0, [r7]                  |         r0 = *(r7);
    0x00009710 blx 0x18cc                    |         fcn_000018cc ();
    0x00009714 ldr r2, [pc, 0x98]            |         
    0x00009716 ldr r3, [pc, 0x94]            |         r3 = *(0x97ae);
    0x00009718 add r2, pc                    |         r2 = 0x12ecc;
    0x0000971a ldr r3, [r2, r3]              |         r3 = *(0x12ecc);
    0x0000971c ldr r2, [r3]                  |         r2 = *(0x12ecc);
    0x0000971e ldr r3, [r7, 4]               |         r3 = var_4h;
    0x00009720 eors r2, r3                   |         r2 ^= r3;
    0x00009722 mov.w r3, 0                   |         r3 = 0;
                                             |         if (r2 != r3) {
    0x00009726 bne 0x97a4                    |             goto label_6;
                                             |         }
    0x00009728 mov r0, r6                    |         r0 = r6;
    0x0000972a adds r7, 0xc                  |         r7 += 0xc;
    0x0000972c mov sp, r7                    |         
    0x0000972e pop {r4, r5, r6, r7, pc}      |         
    0x00009730 bl 0x9624                     |         r0 = fcn_00009624 (r0);
    0x00009734 cmp r0, r5                    |         
    0x00009736 beq 0x96dc                    |         
                                             |     }
    0x00009738 ldr r1, [pc, 0x78]            |     
    0x0000973a sub sp, 0x18                  |     
    0x0000973c ldr r3, [pc, 0x78]            |     
    0x0000973e add r6, sp, 8                 |     r6 += socket;
    0x00009740 movs r2, 0x18                 |     r2 = 0x18;
    0x00009742 mov r0, r6                    |     r0 = r6;
    0x00009744 add r1, pc                    |     r1 = 0x12efc;
    0x00009746 add r3, pc                    |     r3 = 0x12f02;
    0x00009748 strd r5, r1, [sp]             |     __asm ("strd r5, r1, [sp]");
    0x0000974c movs r1, 1                    |     r1 = 1;
    0x0000974e blx 0x1b1c                    |     bind (r0, r1, r2);
    0x00009752 mov r0, r6                    |     r0 = r6;
    0x00009754 mov r1, r7                    |     r1 = r7;
    0x00009756 bl 0x5fc8                     |     fcn_00005fc8 (r0, r1);
    0x0000975a adds r3, r0, 2                |     r3 += var_2h;
    0x0000975c mov r6, r0                    |     r6 = r0;
                                             |     if (r3 == var_2h) {
    0x0000975e beq 0x9798                    |         goto label_7;
                                             |     }
    0x00009760 cmp r0, 0                     |     
                                             |     if (r0 >= 0) {
    0x00009762 bge 0x96f6                    |         goto label_0;
                                             |     }
    0x00009764 b 0x970e                      |     goto label_1;
                                             | label_5:
    0x00009766 blx 0x1b04                    |     r0 = sprintf_chk ()
    0x0000976a ldr r6, [r0]                  |     r6 = *(r0);
    0x0000976c rsbs r6, r6, 0                |     r6 -= ;
    0x0000976e b 0x970e                      |     goto label_1;
                                             | label_2:
    0x00009770 ldr r1, [pc, 0x48]            |     
    0x00009772 movs r2, 0x5c                 |     r2 = 0x5c;
    0x00009774 ldr r3, [pc, 0x48]            |     
    0x00009776 ldr r0, [pc, 0x4c]            |     
    0x00009778 add r1, pc                    |     r1 = 0x12f38;
    0x0000977a add r3, pc                    |     r3 = 0x12f3e;
    0x0000977c adds r1, 7                    |     r1 += 7;
    0x0000977e add r0, pc                    |     r0 = 0x12f48;
    0x00009780 bl 0x7f50                     |     fcn_00007f50 (r0, r1, r2, r3);
                                             | label_3:
    0x00009784 ldr r1, [pc, 0x40]            |     
    0x00009786 movs r2, 0x5d                 |     r2 = 0x5d;
    0x00009788 ldr r3, [pc, 0x40]            |     
    0x0000978a ldr r0, [pc, 0x44]            |     
    0x0000978c add r1, pc                    |     r1 = 0x12f58;
    0x0000978e add r3, pc                    |     r3 = 0x12f5e;
    0x00009790 adds r1, 7                    |     r1 += 7;
    0x00009792 add r0, pc                    |     r0 = 0x12f68;
    0x00009794 bl 0x7f50                     |     fcn_00007f50 (r0, r1, r2, r3);
                                             | label_7:
    0x00009798 mvn r6, 2                     |     r6 = ~2;
    0x0000979c b 0x970e                      |     goto label_1;
                                             | label_4:
    0x0000979e mvn r6, 0xb                   |     r6 = ~0xb;
    0x000097a2 b 0x970e                      |     goto label_1;
                                             | label_6:
    0x000097a4 blx 0x1954                    |     parse_printf_format ();
    0x000097a8 strh r6, [r3, 0x3a]           |     *((r3 + 0x3a)) = r6;
    0x000097aa movs r1, r0                   |     r1 = r0;
    0x000097ac lsls r0, r6, 6                |     r0 = r6 << 6;
    0x000097ae movs r0, r0                   |     
    0x000097b0 strh r0, [r1, 0x38]           |     *((r1 + 0x38)) = r0;
    0x000097b2 movs r1, r0                   |     r1 = r0;
    0x000097b4 ldrb r0, [r6, r4]             |     r0 = *((r6 + r4));
    0x000097b6 movs r0, r0                   |     
    0x000097b8 ldrb r6, [r7, r3]             |     r6 = *((r7 + r3));
    0x000097ba movs r0, r0                   |     
    0x000097bc ldrb r4, [r2, r2]             |     r4 = *((r2 + r2));
    0x000097be movs r0, r0                   |     
    0x000097c0 ldrb r2, [r3, r5]             |     r2 = *((r3 + r5));
    0x000097c2 movs r0, r0                   |     
    0x000097c4 ldr r1, [pc, 0x3b8]           |     r1 = *(0x9b80);
    0x000097c6 movs r0, r0                   |     
    0x000097c8 ldrb r0, [r0, r2]             |     r0 = *((r0 + r2));
    0x000097ca movs r0, r0                   |     
    0x000097cc ldrb r6, [r0, r5]             |     r6 = *((r0 + r5));
    0x000097ce movs r0, r0                   |     
    0x000097d0 ldrb r6, [r0, r3]             |     r6 = *((r0 + r3));
    0x000097d2 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/udev/scsi_id @ 0xa4a4 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.0000a4a4 ()                                  | void fcn_0000a4a4 (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                             |     int16_t var_0h;
                                                             |     int16_t var_8h;
                                                             |     int16_t var_ch;
                                                             |     int16_t var_10h;
                                                             |     int16_t var_14h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     if (? >= ?) {
    0x0000a4a4 ldrbmi lr, [r0, sp, lsr 18]!                  |         
                                                             |     }
    0x0000a4a8 sub sp, 0x18                                  |     
    0x0000a4aa ldr r5, [pc, 0x110]                           |     
    0x0000a4ac movs r3, 4                                    |     r3 = 4;
    0x0000a4ae ldr r4, [pc, 0x110]                           |     r4 = *(0xa5c2);
    0x0000a4b0 add r5, pc                                    |     r5 = 0x14a72;
    0x0000a4b2 ldr r4, [r5, r4]                              |     
    0x0000a4b4 ldr r4, [r4]                                  |     r4 = *(0x14a72);
    0x0000a4b6 str r4, [sp, 0x14]                            |     var_14h = r4;
    0x0000a4b8 mov.w r4, 0                                   |     r4 = 0;
    0x0000a4bc subs r4, r1, 0                                |     r4 = r1 - 0;
    0x0000a4be str r3, [sp, 0xc]                             |     var_ch = r3;
                                                             |     if (r4 < r1) {
    0x0000a4c0 blt 0xa5b2                                    |         goto label_4;
                                                             |     }
    0x0000a4c2 add.w r8, sp, 8                               |     r8 += var_8h;
    0x0000a4c6 add.w sb, sp, 0xc                             |     sb += var_ch;
    0x0000a4c8 lsrs r4, r1, 4                                |     r4 = r1 >> 4;
    0x0000a4ca mov r5, r2                                    |     r5 = r2;
    0x0000a4cc mov r3, r8                                    |     r3 = r8;
    0x0000a4ce movs r2, 7                                    |     r2 = 7;
    0x0000a4d0 movs r1, 1                                    |     r1 = 1;
    0x0000a4d2 str.w sb, [sp]                                |     __asm ("str.w sb, [sp]");
    0x0000a4d6 mov r6, r0                                    |     r6 = r0;
    0x0000a4d8 blx 0x19d4                                    |     r0 = fcn_000019d4 ();
    0x0000a4dc cmp r0, 0                                     |     
    0x0000a4de lsl.w r7, r4, 1                               |     r7 = r4 << 1;
                                                             |     if (r0 >= 0) {
    0x0000a4e2 blt 0xa4f4                                    |         
    0x0000a4e4 ldr r2, [sp, 0xc]                             |         r2 = var_ch;
    0x0000a4e6 cmp r2, 4                                     |         
    0x0000a4e8 ite ne                                        |         
                                                             |         if (r2 == 4) {
    0x0000a4ea movne r3, 0                                   |             r3 = 0;
                                                             |         }
                                                             |         if (r2 != 4) {
    0x0000a4ec andeq r3, r5, 1                               |             r3 = r5 & 1;
                                                             |         }
    0x0000a4f0 cmp r3, 0                                     |         
                                                             |         if (r3 != 0) {
    0x0000a4f2 bne 0xa58e                                    |             goto label_5;
                                                             |         }
                                                             |     }
    0x0000a4f4 ldr r3, [sp, 8]                               |     r3 = var_8h;
    0x0000a4f6 subs r3, r3, r7                               |     r3 -= r7;
    0x0000a4f8 clz r3, r3                                    |     r3 &= r3;
    0x0000a4fc lsrs r3, r3, 5                                |     r3 >>= 5;
                                                             | label_1:
    0x0000a4fe movs r0, 0                                    |     r0 = 0;
                                                             |     if (r3 != 0) {
    0x0000a500 cbnz r3, 0xa566                               |         goto label_0;
                                                             |     }
    0x0000a502 movs r3, 4                                    |     r3 = 4;
    0x0000a504 add.w sl, sp, 0x10                            |     sl += var_10h;
    0x0000a508 str r3, [sp]                                  |     *(sp) = r3;
    0x0000a50a movs r2, 7                                    |     r2 = 7;
    0x0000a50c mov r3, sl                                    |     r3 = sl;
    0x0000a50e movs r1, 1                                    |     r1 = 1;
    0x0000a510 mov r0, r6                                    |     r0 = r6;
    0x0000a512 str r4, [sp, 0x10]                            |     var_10h = r4;
    0x0000a514 blx 0x1890                                    |     r0 = fcn_00001890 ();
    0x0000a518 cmp r0, 0                                     |     
    0x0000a51a blt 0xa580                                    |     
                                                             |     while (r0 <= 0) {
    0x0000a51c movs r2, 4                                    |         r2 = 4;
    0x0000a51e mov r3, r8                                    |         r3 = r8;
    0x0000a520 str r2, [sp, 0xc]                             |         var_ch = r2;
    0x0000a522 movs r1, 1                                    |         r1 = 1;
    0x0000a524 movs r2, 7                                    |         r2 = 7;
    0x0000a526 mov r0, r6                                    |         r0 = r6;
    0x0000a528 str.w sb, [sp]                                |         __asm ("str.w sb, [sp]");
    0x0000a52c blx 0x19d4                                    |         r0 = fcn_000019d4 ();
    0x0000a530 cmp r0, 0                                     |         
                                                             |         if (r0 >= 0) {
    0x0000a532 blt 0xa542                                    |             
    0x0000a534 ldr r3, [sp, 0xc]                             |             r3 = var_ch;
    0x0000a536 cmp r3, 4                                     |             
    0x0000a538 ite ne                                        |             
                                                             |             if (r3 == 4) {
    0x0000a53a movne r5, 0                                   |                 r5 = 0;
                                                             |             }
                                                             |             if (r3 != 4) {
    0x0000a53c andeq r5, r5, 1                               |                 r5 &= 1;
                                                             |             }
                                                             |             if (r5 != 0) {
    0x0000a540 cbnz r5, 0xa5a6                               |                 goto label_6;
                                                             |             }
                                                             |         }
    0x0000a542 ldr r3, [sp, 8]                               |         r3 = var_8h;
    0x0000a544 subs r3, r3, r7                               |         r3 -= r7;
    0x0000a546 clz r3, r3                                    |         r3 &= r3;
    0x0000a54a lsrs r3, r3, 5                                |         r3 >>= 5;
                                                             |         if (r3 == 0) {
                                                             | label_3:
    0x0000a54c cbnz r3, 0xa564                               |             
    0x0000a54e movs r1, 4                                    |             r1 = 4;
    0x0000a550 mov r3, sl                                    |             r3 = sl;
    0x0000a552 str r1, [sp]                                  |             *(sp) = r1;
    0x0000a554 movs r2, 0x20                                 |             r2 = 0x20;
    0x0000a556 mov r0, r6                                    |             r0 = r6;
    0x0000a558 movs r1, 1                                    |             r1 = 1;
    0x0000a55a str r4, [sp, 0x10]                            |             var_10h = r4;
    0x0000a55c blx 0x1890                                    |             r0 = fcn_00001890 ();
    0x0000a560 cmp r0, 0                                     |             
                                                             |             if (r0 < 0) {
    0x0000a562 blt 0xa59a                                    |                 goto label_7;
                                                             |             }
                                                             |         }
                                                             | label_2:
    0x0000a564 movs r0, 1                                    |         r0 = 1;
                                                             | label_0:
    0x0000a566 ldr r2, [pc, 0x5c]                            |         
    0x0000a568 ldr r3, [pc, 0x54]                            |         r3 = *(0xa5c0);
    0x0000a56a add r2, pc                                    |         r2 = 0x14b34;
    0x0000a56c ldr r3, [r2, r3]                              |         r3 = *(0x14b34);
    0x0000a56e ldr r2, [r3]                                  |         r2 = *(0x14b34);
    0x0000a570 ldr r3, [sp, 0x14]                            |         r3 = var_14h;
    0x0000a572 eors r2, r3                                   |         r2 ^= r3;
    0x0000a574 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x0000a578 bne 0xa5b8                                    |             goto label_8;
                                                             |         }
    0x0000a57a add sp, 0x18                                  |         
    0x0000a57c pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
    0x0000a580 blx 0x1b04                                    |         r0 = sprintf_chk ()
    0x0000a584 ldr r0, [r0]                                  |         r0 = *(r0);
    0x0000a586 cmp r0, 0                                     |         
    0x0000a588 ble 0xa51c                                    |         
                                                             |     }
                                                             |     do {
    0x0000a58a rsbs r0, r0, 0                                |         r0 -= ;
    0x0000a58c b 0xa566                                      |         goto label_0;
                                                             | label_5:
    0x0000a58e ldr r3, [sp, 8]                               |         r3 = var_8h;
    0x0000a590 cmp r3, r7                                    |         
    0x0000a592 ite lo                                        |         
                                                             |         if (r3 >= r7) {
    0x0000a594 movlo r3, 0                                   |             r3 = 0;
                                                             |         }
                                                             |         if (r3 < r7) {
    0x0000a596 movhs r3, 1                                   |             r3 = 1;
                                                             |         }
    0x0000a598 b 0xa4fe                                      |         goto label_1;
                                                             | label_7:
    0x0000a59a blx 0x1b04                                    |         r0 = sprintf_chk ()
    0x0000a59e ldr r0, [r0]                                  |         r0 = *(r0);
    0x0000a5a0 cmp r0, 0                                     |         
    0x0000a5a2 bgt 0xa58a                                    |         
                                                             |     } while (r0 > 0);
    0x0000a5a4 b 0xa564                                      |     goto label_2;
                                                             | label_6:
    0x0000a5a6 ldr r3, [sp, 8]                               |     r3 = var_8h;
    0x0000a5a8 cmp r7, r3                                    |     
    0x0000a5aa ite hi                                        |     
                                                             |     if (r7 <= r3) {
    0x0000a5ac movhi r3, 0                                   |         r3 = 0;
                                                             |     }
                                                             |     if (r7 > r3) {
    0x0000a5ae movls r3, 1                                   |         r3 = 1;
                                                             |     }
    0x0000a5b0 b 0xa54c                                      |     goto label_3;
                                                             | label_4:
    0x0000a5b2 mvn r0, 0x21                                  |     r0 = ~0x21;
    0x0000a5b6 b 0xa566                                      |     goto label_0;
                                                             | label_8:
    0x0000a5b8 blx 0x1954                                    |     parse_printf_format ();
    0x0000a5bc ldrb r0, [r6, 5]                              |     r0 = *((r6 + 5));
    0x0000a5be movs r1, r0                                   |     r1 = r0;
    0x0000a5c0 lsls r0, r6, 6                                |     r0 = r6 << 6;
    0x0000a5c2 movs r0, r0                                   |     
    0x0000a5c4 ldrb r6, [r6, 2]                              |     r6 = *((r6 + 2));
    0x0000a5c6 movs r1, r0                                   |     r1 = 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/udev/scsi_id @ 0xa6e8 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.0000a6e8 ()                  | void fcn_0000a6e8 () {
                                             |     int16_t var_0h;
                                             |     int16_t var_5ch;
    0x0000a6e8 blmi 0x4dcf38                 |     __asm ("blmi 0x4dcf38");
    0x0000a6ec push {r4, lr}                 |     
    0x0000a6ee sub sp, 0x60                  |     
    0x0000a6f0 add r2, pc                    |     r2 += pc;
    0x0000a6f2 mov r4, sp                    |     r4 = sp;
    0x0000a6f4 mov r1, r4                    |     r1 = r4;
    0x0000a6f6 ldr r3, [r2, r3]              |     r3 = *((r2 + r3));
    0x0000a6f8 ldr r3, [r3]                  |     r3 = *(r3);
    0x0000a6fa str r3, [sp, 0x5c]            |     var_5ch = r3;
    0x0000a6fc mov.w r3, 0                   |     r3 = 0;
    0x0000a700 blx 0x1c24                    |     r0 = flockfile ();
    0x0000a704 cmp r0, 0                     |     
                                             |     if (r0 < 0) {
    0x0000a706 blt 0xa726                    |         goto label_0;
                                             |     }
    0x0000a708 mov r0, r4                    |     r0 = r4;
    0x0000a70a bl 0xa6c0                     |     fcn_0000a6c0 (r0);
                                             |     do {
    0x0000a70e ldr r2, [pc, 0x2c]            |         
    0x0000a710 ldr r3, [pc, 0x24]            |         r3 = *(0xa738);
    0x0000a712 add r2, pc                    |         r2 = 0x14e54;
    0x0000a714 ldr r3, [r2, r3]              |         r3 = *(0x14e54);
    0x0000a716 ldr r2, [r3]                  |         r2 = *(0x14e54);
    0x0000a718 ldr r3, [sp, 0x5c]            |         r3 = var_5ch;
    0x0000a71a eors r2, r3                   |         r2 ^= r3;
    0x0000a71c mov.w r3, 0                   |         r3 = 0;
                                             |         if (r2 != r3) {
    0x0000a720 bne 0xa730                    |             goto label_1;
                                             |         }
    0x0000a722 add sp, 0x60                  |         
    0x0000a724 pop {r4, pc}                  |         
                                             | label_0:
    0x0000a726 blx 0x1b04                    |         r0 = sprintf_chk ()
    0x0000a72a ldr r0, [r0]                  |         r0 = *(r0);
    0x0000a72c rsbs r0, r0, 0                |         r0 -= ;
    0x0000a72e b 0xa70e                      |         
                                             |     } while (1);
                                             | label_1:
    0x0000a730 blx 0x1954                    |     parse_printf_format ();
    0x0000a734 strb r0, [r6, 0x1c]           |     *((r6 + 0x1c)) = r0;
    0x0000a736 movs r1, r0                   |     r1 = r0;
    0x0000a738 lsls r0, r6, 6                |     r0 = r6 << 6;
    0x0000a73a movs r0, r0                   |     
    0x0000a73c strb r6, [r1, 0x1c]           |     *((r1 + 0x1c)) = r6;
    0x0000a73e movs r1, r0                   |     r1 = 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/udev/scsi_id @ 0xb228 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.0000b228 ()                          | void fcn_0000b228 (int16_t arg1, int16_t arg2) {
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
    0x0000b228 invalid                               |     
                                                     |     if (? < ?) {
    0x0000b22c bmi 0xb2ac                            |         goto label_1;
                                                     |     }
    0x0000b22e mov r6, r1                            |     r6 = r1;
    0x0000b230 mov r7, r0                            |     r7 = r0;
    0x0000b232 movs r5, 0x15                         |     r5 = 0x15;
    0x0000b234 b 0xb23a                              |     
                                                     |     while (r5 != 1) {
    0x0000b236 blx 0x1a04                            |         fcn_00001a04 ();
    0x0000b23a movs r2, 0                            |         r2 = 0;
    0x0000b23c mov r1, r6                            |         r1 = r6;
    0x0000b23e mov r0, r7                            |         r0 = r7;
    0x0000b240 blx 0x1a28                            |         r0 = fcn_00001a28 ();
    0x0000b244 subs r4, r0, 0                        |         r4 = r0 - 0;
                                                     |         if (r4 >= r0) {
    0x0000b246 bge 0xb268                            |             goto label_2;
                                                     |         }
    0x0000b248 blx 0x1b04                            |         r0 = sprintf_chk ()
    0x0000b24c ldr r3, [r0]                          |         r3 = *(r0);
    0x0000b24e movw r0, 0xc350                       |         r0 = 0xc350;
    0x0000b252 cmp r3, 5                             |         
                                                     |         if (r3 != 5) {
    0x0000b254 bne 0xb2a0                            |             goto label_3;
                                                     |         }
    0x0000b256 subs r5, 1                            |         r5--;
    0x0000b258 bne 0xb236                            |         
                                                     |     }
    0x0000b25a mvn r5, 4                             |     r5 = ~4;
                                                     |     do {
                                                     | label_0:
    0x0000b25e mov r0, r4                            |         r0 = r4;
    0x0000b260 bl 0x5718                             |         fcn_00005718 (r0);
    0x0000b264 mov r0, r5                            |         r0 = r5;
    0x0000b266 pop {r3, r4, r5, r6, r7, pc}          |         
                                                     | label_2:
    0x0000b268 blx 0x1c9c                            |         r0 = abort ();
    0x0000b26c cmp r0, 0                             |         
    0x0000b26e itt gt                                |         
                                                     |         if (r0 <= 0) {
    0x0000b270 movgt r5, r4                          |             r5 = r4;
                                                     |         }
                                                     |         if (r0 <= 0) {
    0x0000b272 movgt r4, -1                          |             r4 = -1;
                                                     |         }
    0x0000b274 adds r4, 0xff                         |         r4 += 0xff;
    0x0000b276 bgt 0xb25e                            |         
                                                     |     } while (r4 > 0xff);
    0x0000b278 blx 0x1b04                            |     r0 = sprintf_chk ()
    0x0000b27c ldr r5, [r0]                          |     r5 = *(r0);
    0x0000b27e cmp r5, 0                             |     
    0x0000b280 it gt                                 |     
                                                     |     if (r5 <= 0) {
    0x0000b282 rsbgt r5, r5, 0                       |         __asm ("rsbgt r5, r5, 0");
                                                     |         goto label_4;
                                                     |     }
                                                     |     if (r5 > 0) {
                                                     | label_4:
    0x0000b284 bgt 0xb25e                            |         goto label_0;
                                                     |     }
    0x0000b286 ldr r1, [pc, 0x30]                    |     
    0x0000b288 movs r2, 0x1e                         |     r2 = 0x1e;
    0x0000b28a ldr r3, [pc, 0x30]                    |     
    0x0000b28c mvn r5, 0x15                          |     r5 = ~0x15;
    0x0000b290 ldr r0, [pc, 0x2c]                    |     
    0x0000b292 add r1, pc                            |     r1 = 0x16550;
    0x0000b294 add r3, pc                            |     r3 = 0x16556;
    0x0000b296 adds r1, 7                            |     r1 += 7;
    0x0000b298 add r0, pc                            |     r0 = 0x1655c;
    0x0000b29a bl 0x820c                             |     fcn_0000820c (r0, r1, r2, r3);
    0x0000b29e b 0xb25e                              |     goto label_0;
                                                     | label_3:
    0x0000b2a0 rsbs r5, r3, 0                        |     r5 = r3 - ;
    0x0000b2a2 mov r0, r4                            |     r0 = r4;
    0x0000b2a4 bl 0x5718                             |     fcn_00005718 (r0);
    0x0000b2a8 mov r0, r5                            |     r0 = r5;
    0x0000b2aa pop {r3, r4, r5, r6, r7, pc}          |     
                                                     | label_1:
    0x0000b2ac mov.w r4, -1                          |     r4 = -1;
    0x0000b2b0 mvn r5, 0x15                          |     r5 = ~0x15;
    0x0000b2b4 b 0xb25e                              |     goto label_0;
                                                     | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/udev/scsi_id @ 0xb9a8 */
                                                                     | #include <stdint.h>
                                                                     |  
                                                                     | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                     |  
    ; (fcn) fcn.0000b9a8 ()                                          | void fcn_0000b9a8 (uint32_t arg1, int16_t arg2) {
                                                                     |     int16_t var_4h;
                                                                     |     int16_t var_8h;
                                                                     |     int16_t var_10h;
                                                                     |     int16_t var_14h;
                                                                     |     int16_t var_18h;
                                                                     |     int16_t var_1ch;
                                                                     |     int16_t var_20h;
                                                                     |     int16_t var_24h;
                                                                     |     int16_t var_28h;
                                                                     |     int16_t var_2ch;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
                                                                     | label_9:
    0x0000b690 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000b694 sub sp, 0x34                                          |     
    0x0000b696 strd r2, r3, [sp, 8]                                  |     __asm ("strd r2, r3, [sp, 8]");
    0x0000b69a ldr r2, [pc, 0x2cc]                                   |     
    0x0000b69c ldr r3, [pc, 0x2cc]                                   |     r3 = *(0xb96c);
    0x0000b69e str r1, [sp, 0x1c]                                    |     var_1ch = r1;
    0x0000b6a0 add r2, pc                                            |     r2 = 0x1700e;
    0x0000b6a2 ldr r3, [r2, r3]                                      |     
    0x0000b6a4 ldr r3, [r3]                                          |     r3 = *(0x1700e);
    0x0000b6a6 str r3, [sp, 0x2c]                                    |     var_2ch = r3;
    0x0000b6a8 mov.w r3, 0                                           |     r3 = 0;
    0x0000b6ac cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000b6ae beq.w 0xb91c                                          |         goto label_10;
                                                                     |     }
    0x0000b6b2 ldrd r3, r2, [sp, 8]                                  |     __asm ("ldrd r3, r2, [var_8h]");
    0x0000b6b6 orrs r3, r2                                           |     r3 |= r2;
                                                                     |     if (r3 == r2) {
    0x0000b6b8 beq.w 0xb932                                          |         goto label_11;
                                                                     |     }
    0x0000b6bc ldr r3, [pc, 0x2b0]                                   |     
    0x0000b6be mov r6, r0                                            |     r6 = r0;
    0x0000b6c0 add r3, pc                                            |     r3 = 0x17034;
    0x0000b6c2 mov r1, r3                                            |     r1 = r3;
    0x0000b6c4 mov r4, r3                                            |     r4 = r3;
    0x0000b6c6 str r3, [sp, 0x18]                                    |     var_18h = r3;
    0x0000b6c8 blx 0x1ce4                                            |     fcn_00001ce4 ();
    0x0000b6ca add.w sb, ip, sb, asr 18                              |     sb = ip + (sb >> 18);
    0x0000b6ce add r6, r0                                            |     r6 += r0;
    0x0000b6d0 mov r0, r6                                            |     r0 = r6;
    0x0000b6d2 add r1, pc                                            |     r1 += pc;
    0x0000b6d4 bl 0xc9e8                                             |     r0 = fcn_0000c9e8 (r0, r1);
    0x0000b6d8 mov r5, r0                                            |     r5 = r0;
                                                                     |     if (r0 != 0) {
    0x0000b6da cbz r0, 0xb718                                        |         
    0x0000b6dc mov r1, r4                                            |         r1 = r4;
    0x0000b6de blx 0x1ce4                                            |         fcn_00001ce4 ();
    0x0000b6e2 ldrb r0, [r5, r0]                                     |         r0 = *((r5 + r0));
    0x0000b6e4 cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0000b6e6 bne.w 0xb810                                          |             goto label_7;
                                                                     |         }
    0x0000b6ea ldr r3, [sp, 0x1c]                                    |         r3 = var_1ch;
    0x0000b6ec cmp r3, 0                                             |         
                                                                     |         if (r3 == 0) {
    0x0000b6ee beq.w 0xb826                                          |             goto label_8;
                                                                     |         }
    0x0000b6f0 strh r2, [r3, 4]                                      |         *((r3 + 4)) = r2;
    0x0000b6f2 ldr r3, [sp, 0x1c]                                    |         r3 = var_1ch;
    0x0000b6f4 vmov.i8 d16, 0xff                                     |         __asm ("vmov.i8 d16, 0xff");
    0x0000b6f8 vstr d16, [r3]                                        |         __asm ("vstr d16, [r3]");
                                                                     | label_2:
    0x0000b6fc ldr r2, [pc, 0x278]                                   |         
    0x0000b6fe ldr r3, [pc, 0x26c]                                   |         r3 = *(0xb96e);
    0x0000b700 add r2, pc                                            |         r2 = 0x1707c;
    0x0000b702 ldr r3, [r2, r3]                                      |         r3 = *(0x1707c);
    0x0000b704 ldr r2, [r3]                                          |         r2 = *(0x1707c);
    0x0000b706 ldr r3, [sp, 0x2c]                                    |         r3 = var_2ch;
    0x0000b708 eors r2, r3                                           |         r2 ^= r3;
    0x0000b70a mov.w r3, 0                                           |         r3 = 0;
    0x0000b70c lsls r0, r0, 0xc                                      |         r0 <<= 0xc;
                                                                     |         if (r0 != r0) {
    0x0000b70e bne.w 0xb962                                          |             goto label_12;
                                                                     |         }
    0x0000b712 add sp, 0x34                                          |         
    0x0000b714 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
    0x0000b716 ldrh r0, [r6, 0x3e]                                   |         r0 = *((r6 + 0x3e));
                                                                     |     }
    0x0000b718 ldr r3, [pc, 0x260]                                   |     
    0x0000b71a mov r4, r0                                            |     r4 = r0;
    0x0000b71c mov fp, r0                                            |     
    0x0000b71e add r3, pc                                            |     r3 = 0x1709e;
    0x0000b720 str r3, [sp, 0x24]                                    |     var_24h = r3;
    0x0000b722 ldr r3, [pc, 0x25c]                                   |     
    0x0000b724 add r3, pc                                            |     r3 = 0x170aa;
    0x0000b726 str r3, [sp, 0x20]                                    |     var_20h = r3;
                                                                     | label_0:
    0x0000b728 mov r0, r6                                            |     r0 = r6;
    0x0000b72a ldr r1, [sp, 0x18]                                    |     r1 = var_18h;
    0x0000b72c blx 0x1ce4                                            |     fcn_00001ce4 ();
    0x0000b730 ldrb r3, [r6, r0]                                     |     r3 = *((r6 + r0));
    0x0000b732 add r6, r0                                            |     r6 += r0;
    0x0000b734 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000b736 beq.w 0xb948                                          |         goto label_13;
                                                                     |     }
    0x0000b73a cmp r3, 0x2d                                          |     
                                                                     |     if (r3 == 0x2d) {
    0x0000b73c beq 0xb82a                                            |         goto label_4;
                                                                     |     }
    0x0000b73e blx 0x1b04                                            |     sprintf_chk ()
    0x0000b742 movs r3, 0                                            |     r3 = 0;
    0x0000b744 mov r5, r0                                            |     r5 = r0;
    0x0000b746 str r3, [r0]                                          |     *(r0) = r3;
    0x0000b748 movs r2, 0xa                                          |     r2 = 0xa;
    0x0000b74a add r1, sp, 0x28                                      |     r1 += var_28h;
    0x0000b74c mov r0, r6                                            |     r0 = r6;
    0x0000b74e blx 0x19f8                                            |     fcn_000019f8 ();
    0x0000b752 ldr r3, [r5]                                          |     r3 = *(r5);
    0x0000b754 mov r7, r0                                            |     r7 = r0;
    0x0000b756 mov r8, r1                                            |     r8 = r1;
    0x0000b758 cmp r3, 0                                             |     
                                                                     |     if (r3 > 0) {
    0x0000b75a bgt.w 0xb95e                                          |         goto label_14;
                                                                     |     }
    0x0000b75c strh r0, [r0, 8]                                      |     *((r0 + 8)) = r0;
    0x0000b75e cmp r1, 0                                             |     
                                                                     |     if (r1 < 0) {
    0x0000b760 blt 0xb82a                                            |         goto label_4;
                                                                     |     }
    0x0000b762 ldr r3, [sp, 0x28]                                    |     r3 = var_28h;
    0x0000b764 str r3, [sp, 4]                                       |     var_4h = r3;
    0x0000b766 ldrb r3, [r3]                                         |     r3 = *(r3);
    0x0000b768 cmp r3, 0x2e                                          |     
    0x0000b76a str r3, [sp, 0x10]                                    |     var_10h = r3;
    0x0000b76c ldr r3, [sp, 4]                                       |     r3 = var_4h;
                                                                     |     if (r3 == 0x2e) {
    0x0000b76e beq 0xb816                                            |         goto label_15;
                                                                     |     }
    0x0000b770 cmp r3, r6                                            |     
                                                                     |     if (r3 == r6) {
    0x0000b772 beq 0xb810                                            |         goto label_7;
                                                                     |     }
    0x0000b774 mov sb, r3                                            |     sb = r3;
                                                                     | label_3:
    0x0000b776 ldr r1, [sp, 0x20]                                    |     r1 = var_20h;
    0x0000b778 mov r0, sb                                            |     r0 = sb;
    0x0000b77a blx 0x1ce4                                            |     fcn_00001ce4 ();
    0x0000b77e ldr r5, [pc, 0x204]                                   |     
    0x0000b780 add.w r6, sb, r0                                      |     r6 = sb + r0;
    0x0000b784 ldr r1, [pc, 0x200]                                   |     
    0x0000b786 mov.w sl, 0                                           |     sl = 0;
    0x0000b78a add r5, pc                                            |     r5 = 0x17114;
    0x0000b78c add r1, pc                                            |     r1 = 0x17118;
    0x0000b78e b 0xb79e                                              |     
                                                                     |     while (r0 == 0) {
    0x0000b790 add.w sl, sl, 1                                       |         sl++;
    0x0000b794 cmp.w sl, 0x1d                                        |         
                                                                     |         if (sl == 0x1d) {
    0x0000b798 beq 0xb802                                            |             goto label_16;
                                                                     |         }
    0x0000b79a ldr r1, [r5, 0x10]!                                   |         r1 = *((r5 += 0x10));
    0x0000b79e mov r0, r6                                            |         r0 = r6;
    0x0000b7a0 bl 0xc9e8                                             |         r0 = fcn_0000c9e8 (r0, r1);
    0x0000b7a4 cmp r0, 0                                             |         
    0x0000b7a6 beq 0xb790                                            |         
                                                                     |     }
    0x0000b7a8 ldr r2, [pc, 0x1e0]                                   |     
    0x0000b7aa mov r6, r0                                            |     r6 = r0;
    0x0000b7ac cmp sb, r6                                            |     
    0x0000b7ae add r2, pc                                            |     r2 = 0x1713e;
    0x0000b7b0 add.w r3, r2, sl, lsl 4                               |     r3 = r2 + (sl << 4);
    0x0000b7b4 ldrd r2, r5, [r3, 8]                                  |     __asm ("ldrd r2, r5, [r3, 8]");
                                                                     |     if (sb == r6) {
    0x0000b7b8 beq 0xb80a                                            |         goto label_17;
                                                                     |     }
                                                                     |     do {
                                                                     | label_1:
    0x0000b7ba mov r3, r5                                            |         r3 = r5;
    0x0000b7bc mov.w r0, -1                                          |         r0 = -1;
    0x0000b7c0 mov.w r1, -1                                          |         r1 = -1;
    0x0000b7c4 str r2, [sp, 0x14]                                    |         var_14h = r2;
    0x0000b7c6 bl 0xd150                                             |         r0 = fcn_0000d150 (r0, r1, r2, r3);
    0x0000b7ca cmp r7, r0                                            |         
    0x0000b7cc sbcs.w r1, r8, r1                                     |         __asm ("sbcs.w r1, r8, r1");
                                                                     |         if (r7 >= r0) {
    0x0000b7d0 bhs 0xb82a                                            |             goto label_4;
                                                                     |         }
    0x0000b7d2 ldr r2, [sp, 0x14]                                    |         r2 = var_14h;
    0x0000b7d4 mul r3, r7, r5                                        |         r3 = r7 * r5;
    0x0000b7d8 mvn.w r0, fp                                          |         r0 = ~fp;
    0x0000b7dc umull r1, r7, r7, r2                                  |         r1:r7 = r7 * r2;
    0x0000b7e0 mla r3, r2, r8, r3                                    |         __asm ("mla r3, r2, r8, r3");
    0x0000b7e4 add r3, r7                                            |         r3 += r7;
    0x0000b7e6 mvns r7, r4                                           |         r7 = ~r4;
    0x0000b7e8 cmp r1, r7                                            |         
    0x0000b7ea sbcs.w r0, r3, r0                                     |         __asm ("sbcs.w r0, r3, r0");
                                                                     |         if (r1 >= r7) {
    0x0000b7ee bhs 0xb82a                                            |             goto label_4;
                                                                     |         }
    0x0000b7f0 adds r1, r4, r1                                       |         r1 = r4 + r1;
    0x0000b7f2 adc.w fp, r3, fp                                      |         __asm ("adc.w fp, r3, fp");
    0x0000b7f6 ldr r3, [sp, 0x10]                                    |         r3 = var_10h;
    0x0000b7f8 mov r4, r1                                            |         r4 = r1;
    0x0000b7fa cmp r3, 0x2e                                          |         
                                                                     |         if (r3 == 0x2e) {
    0x0000b7fc beq 0xb830                                            |             goto label_18;
                                                                     |         }
                                                                     | label_6:
    0x0000b7fe movs r5, 1                                            |         r5 = 1;
    0x0000b800 b 0xb728                                              |         goto label_0;
                                                                     | label_16:
    0x0000b802 cmp sb, r6                                            |         
    0x0000b804 ldrd r2, r5, [sp, 8]                                  |         __asm ("ldrd r2, r5, [var_8h]");
    0x0000b808 bne 0xb7ba                                            |         
                                                                     |     } while (sb != r6);
                                                                     | label_17:
    0x0000b80a ldrb r3, [r6]                                         |     r3 = *(r6);
    0x0000b80c cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000b80e beq 0xb7ba                                            |         goto label_1;
                                                                     |     }
                                                                     |     do {
                                                                     | label_7:
    0x0000b810 mvn r0, 0x15                                          |         r0 = ~0x15;
    0x0000b814 b 0xb6fc                                              |         goto label_2;
                                                                     | label_15:
    0x0000b816 add.w sb, r3, 1                                       |         sb = r3 + 1;
    0x0000b81a ldr r1, [sp, 0x24]                                    |         r1 = var_24h;
    0x0000b81c mov r0, sb                                            |         r0 = sb;
    0x0000b81e blx 0x1ce4                                            |         r0 = fcn_00001ce4 ();
    0x0000b822 add sb, r0                                            |         sb += r0;
    0x0000b824 b 0xb776                                              |         goto label_3;
                                                                     | label_8:
    0x0000b826 movs r0, 0                                            |         r0 = 0;
    0x0000b828 b 0xb6fc                                              |         goto label_2;
                                                                     | label_4:
    0x0000b82a mvn r0, 0x21                                          |         r0 = ~0x21;
    0x0000b82e b 0xb6fc                                              |         goto label_2;
                                                                     | label_18:
    0x0000b830 adds r3, r2, r5                                       |         r3 = r2 + r5;
    0x0000b832 movw ip, 0xcccd                                       |         
    0x0000b836 adc r3, r3, 0                                         |         __asm ("adc r3, r3, 0");
    0x0000b83a movt ip, 0xcccc                                       |         ip = 0xcccccccd;
    0x0000b83e umull r1, r0, ip, r3                                  |         r1:r0 = ip * r3;
    0x0000b842 mov.w lr, -0x33333334                                 |         lr = -0x33333334;
    0x0000b846 ldr r7, [sp, 4]                                       |         r7 = var_4h;
    0x0000b848 ldrb r1, [r7, 1]                                      |         r1 = *((r7 + 1));
    0x0000b84a adds r7, 1                                            |         r7++;
    0x0000b84c bic r8, r0, 3                                         |         r8 = BIT_MASK (r0, 3);
    0x0000b850 str r7, [sp, 4]                                       |         var_4h = r7;
    0x0000b852 add.w r8, r8, r0, lsr 2                               |         r8 += (r0 >> 2);
    0x0000b856 subs r1, 0x30                                         |         r1 -= 0x30;
    0x0000b858 sub.w r3, r3, r8                                      |         r3 -= r8;
    0x0000b85c uxtb r7, r1                                           |         r7 = (int8_t) r1;
    0x0000b85e subs r3, r2, r3                                       |         r3 = r2 - r3;
    0x0000b860 mul r2, lr, r3                                        |         r2 = lr * r3;
    0x0000b864 sbc r5, r5, 0                                         |         __asm ("sbc r5, r5, 0");
    0x0000b868 cmp r7, 9                                             |         
    0x0000b86a mla r5, ip, r5, r2                                    |         __asm ("mla r5, ip, r5, r2");
    0x0000b86e umull r2, r0, r3, ip                                  |         r2:r0 = r3 * ip;
    0x0000b872 lsr.w r3, r2, 1                                       |         r3 = r2 >> 1;
    0x0000b876 add r0, r5                                            |         r0 += r5;
    0x0000b878 orr.w r3, r3, r0, lsl 31                              |         r3 |= (r0 << 31);
    0x0000b87c lsr.w r0, r0, 1                                       |         r0 >>= 1;
    0x0000b880 bhi 0xb810                                            |         
                                                                     |     } while (r7 > 9);
    0x0000b882 mul r5, r1, r0                                        |     r5 = r1 * r0;
    0x0000b886 asrs r2, r1, 0x1f                                     |     r2 = r1 >> 0x1f;
    0x0000b888 mvns r7, r4                                           |     r7 = ~r4;
    0x0000b88a mla r5, r3, r2, r5                                    |     __asm ("mla r5, r3, r2, r5");
    0x0000b88e umull r1, r2, r1, r3                                  |     r1:r2 = r1 * r3;
    0x0000b892 add r2, r5                                            |     r2 += r5;
    0x0000b894 cmp r1, r7                                            |     
    0x0000b896 mvn.w r5, fp                                          |     r5 = ~fp;
    0x0000b89a sbcs.w r5, r2, r5                                     |     __asm ("sbcs.w r5, r2, r5");
                                                                     |     if (r1 >= r7) {
    0x0000b89e bhs 0xb82a                                            |         goto label_4;
                                                                     |     }
    0x0000b8a0 mov r5, r3                                            |     r5 = r3;
    0x0000b8a2 ldr.w r8, [sp, 4]                                     |     r8 = var_4h;
    0x0000b8a6 mov sb, ip                                            |     sb = ip;
    0x0000b8a8 mov r3, r2                                            |     r3 = r2;
    0x0000b8aa b 0xb8ca                                              |     goto label_19;
                                                                     | label_5:
    0x0000b8ac mul r7, r2, r0                                        |     r7 = r2 * r0;
    0x0000b8b0 asrs r3, r2, 0x1f                                     |     r3 = r2 >> 0x1f;
    0x0000b8b2 mla r7, r5, r3, r7                                    |     __asm ("mla r7, r5, r3, r7");
    0x0000b8b6 umull r1, r3, r2, r5                                  |     r1:r3 = r2 * r5;
    0x0000b8ba mvn.w r2, fp                                          |     r2 = ~fp;
    0x0000b8be add r3, r7                                            |     r3 += r7;
    0x0000b8c0 mvns r7, r4                                           |     r7 = ~r4;
    0x0000b8c2 cmp r1, r7                                            |     
    0x0000b8c4 sbcs.w r2, r3, r2                                     |     __asm ("sbcs.w r2, r3, r2");
                                                                     |     if (r1 >= r7) {
    0x0000b8c8 bhs 0xb82a                                            |         goto label_4;
                                                                     |     }
                                                                     | label_19:
    0x0000b8ca adds r2, r4, r1                                       |     r2 = r4 + r1;
    0x0000b8cc adc.w fp, fp, r3                                      |     __asm ("adc.w fp, fp, r3");
    0x0000b8d0 adds r3, r5, r0                                       |     r3 = r5 + r0;
    0x0000b8d2 adc r3, r3, 0                                         |     __asm ("adc r3, r3, 0");
    0x0000b8d6 mov r4, r2                                            |     r4 = r2;
    0x0000b8d8 umull r1, sl, ip, r3                                  |     r1:sl = ip * r3;
    0x0000b8dc ldrb r2, [r8, 1]!                                     |     r2 = *((r8 += 1));
    0x0000b8e0 subs r2, 0x30                                         |     r2 -= 0x30;
    0x0000b8e2 uxtb r1, r2                                           |     r1 = (int8_t) r2;
    0x0000b8e4 bic r7, sl, 3                                         |     r7 = BIT_MASK (sl, 3);
    0x0000b8e6 lsls r3, r0, 0x1c                                     |     r3 = r0 << 0x1c;
    0x0000b8e8 add.w r7, r7, sl, lsr 2                               |     r7 += (sl >> 2);
    0x0000b8ec subs r3, r3, r7                                       |     r3 -= r7;
    0x0000b8ee subs r3, r5, r3                                       |     r3 = r5 - r3;
    0x0000b8f0 sbc r5, r0, 0                                         |     __asm ("sbc r5, r0, 0");
    0x0000b8f4 mul r0, lr, r3                                        |     r0 = lr * r3;
    0x0000b8f8 cmp r1, 9                                             |     
    0x0000b8fa mla r0, ip, r5, r0                                    |     __asm ("mla r0, ip, r5, r0");
    0x0000b8fe umull r3, r5, r3, sb                                  |     r3:r5 = r3 * sb;
    0x0000b902 lsr.w r3, r3, 1                                       |     r3 >>= 1;
    0x0000b906 add r0, r5                                            |     r0 += r5;
    0x0000b908 orr.w r5, r3, r0, lsl 31                              |     r5 = r3 | (r0 << 31);
    0x0000b90c lsr.w r0, r0, 1                                       |     r0 >>= 1;
                                                                     |     if (r1 < 9) {
    0x0000b910 bls 0xb8ac                                            |         goto label_5;
                                                                     |     }
    0x0000b912 ldr r3, [sp, 4]                                       |     r3 = var_4h;
    0x0000b914 cmp r3, r8                                            |     
                                                                     |     if (r3 != r8) {
    0x0000b916 bne.w 0xb7fe                                          |         goto label_6;
                                                                     |     }
    0x0000b91a b 0xb810                                              |     goto label_7;
                                                                     | label_10:
    0x0000b91c ldr r1, [pc, 0x70]                                    |     
    0x0000b91e mov.w r2, 0x3e8                                       |     r2 = 0x3e8;
    0x0000b922 ldr r3, [pc, 0x70]                                    |     
    0x0000b924 ldr r0, [pc, 0x70]                                    |     
    0x0000b926 add r1, pc                                            |     r1 = 0x172ba;
    0x0000b928 add r3, pc                                            |     r3 = 0x172c2;
    0x0000b92a adds r1, 7                                            |     r1 += 7;
    0x0000b92c add r0, pc                                            |     r0 = 0x172c8;
    0x0000b92e bl 0x7f50                                             |     fcn_00007f50 (r0, r1, r2, r3);
                                                                     | label_11:
    0x0000b932 ldr r1, [pc, 0x68]                                    |     
    0x0000b934 movw r2, 0x3e9                                        |     r2 = 0x3e9;
    0x0000b938 ldr r3, [pc, 0x64]                                    |     
    0x0000b93a ldr r0, [pc, 0x68]                                    |     
    0x0000b93c add r1, pc                                            |     r1 = 0x172de;
    0x0000b93e add r3, pc                                            |     r3 = 0x172e2;
    0x0000b940 adds r1, 7                                            |     r1 += 7;
    0x0000b942 add r0, pc                                            |     r0 = 0x172ec;
    0x0000b944 bl 0x7f50                                             |     fcn_00007f50 (r0, r1, r2, r3);
                                                                     | label_13:
    0x0000b948 cmp r5, 0                                             |     
                                                                     |     if (r5 == 0) {
    0x0000b94a beq.w 0xb810                                          |         goto label_7;
                                                                     |     }
    0x0000b94e ldr r2, [sp, 0x1c]                                    |     r2 = var_1ch;
    0x0000b950 cmp r2, 0                                             |     
                                                                     |     if (r2 == 0) {
    0x0000b952 beq.w 0xb826                                          |         goto label_8;
                                                                     |     }
    0x0000b956 mov r0, r3                                            |     r0 = r3;
    0x0000b958 strd r4, fp, [r2]                                     |     __asm ("strd r4, fp, [r2]");
    0x0000b95c b 0xb6fc                                              |     goto label_2;
                                                                     | label_14:
    0x0000b95e rsbs r0, r3, 0                                        |     r0 = r3 - ;
    0x0000b960 b 0xb6fc                                              |     goto label_2;
                                                                     | label_12:
    0x0000b962 blx 0x1954                                            |     parse_printf_format ();
    0x0000b966 nop                                                   |     
    0x0000b968 str r0, [r0, 0x78]                                    |     *((r0 + 0x78)) = r0;
    0x0000b96a movs r1, r0                                           |     r1 = r0;
    0x0000b96c lsls r0, r6, 6                                        |     r0 = r6 << 6;
    0x0000b96e movs r0, r0                                           |     
    0x0000b970 cmp r1, 0x10                                          |     
    0x0000b972 movs r0, r0                                           |     
    0x0000b974 add r2, fp                                            |     r2 += fp;
    0x0000b976 movs r0, r0                                           |     
    0x0000b978 str r0, [r4, 0x70]                                    |     *((r4 + 0x70)) = r0;
    0x0000b97a movs r1, r0                                           |     r1 = r0;
    0x0000b97c add r2, sl                                            |     r2 += sl;
    0x0000b97e movs r0, r0                                           |     
    0x0000b980 cmp r0, 0xac                                          |     
    0x0000b982 movs r0, r0                                           |     
    0x0000b984 str r2, [r7, 0x28]                                    |     *((r7 + 0x28)) = r2;
    0x0000b986 movs r1, r0                                           |     r1 = r0;
    0x0000b988 mvns r0, r1                                           |     r0 = ~r1;
    0x0000b98a movs r0, r0                                           |     
    0x0000b98c str r6, [r2, 0x28]                                    |     *((r2 + 0x28)) = r6;
    0x0000b98e movs r1, r0                                           |     r1 = r0;
    0x0000b990 lsrs r2, r2                                           |     r2 >>= r2;
    0x0000b992 movs r0, r0                                           |     
    0x0000b994 bics r0, r5                                           |     __asm ("bics r0, r5");
    0x0000b996 movs r0, r0                                           |     
    0x0000b998 ldr r7, [pc, 0x100]                                   |     r7 = *(0xba9c);
    0x0000b99a movs r0, r0                                           |     
    0x0000b99c lsls r4, r7                                           |     r4 <<= r7;
    0x0000b99e movs r0, r0                                           |     
    0x0000b9a0 bics r2, r2                                           |     __asm ("bics r2, r2");
    0x0000b9a2 movs r0, r0                                           |     
    0x0000b9a4 tst r2, r3                                            |     
    0x0000b9a6 movs r0, r0                                           |     
    0x0000b9a8 movw r2, 0x4240                                       |     
    0x0000b9ac movs r3, 0                                            |     r3 = 0;
    0x0000b9ae movt r2, 0xf                                          |     r2 = 0xf4240;
    0x0000b9b2 b.w 0xb690                                            |     goto label_9;
                                                                     | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/udev/scsi_id @ 0xc234 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.0000c234 ()                  | void fcn_0000c234 () {
                                             |     int32_t var_0h;
                                             |     int32_t var_0h_2;
    0x0000c234 push {r4, r5, lr}             |     
    0x0000c236 sub sp, 0xc                   |     
    0x0000c238 ldr r4, [pc, 0x140]           |     
    0x0000c23a add r4, pc                    |     r4 = 0x185ba;
    0x0000c23c ldr r3, [r4]                  |     r3 = *(0x185ba);
    0x0000c23e cmp r3, 0                     |     
                                             |     if (r3 < 0) {
    0x0000c240 blt 0xc24c                    |         goto label_4;
                                             |     }
    0x0000c242 ite ne                        |     
                                             |     if (r3 == 0) {
    0x0000c244 movne r0, 1                   |         r0 = 1;
                                             |     }
    0x0000c246 moveq r0, 0                   |     r0 = 0;
                                             |     while (r0 <= 6) {
                                             | label_0:
    0x0000c248 add sp, 0xc                   |         
    0x0000c24a pop {r4, r5, pc}              |         
                                             | label_4:
    0x0000c24c ldr r0, [pc, 0x130]           |         
    0x0000c24e add r0, pc                    |         r0 = 0x185d2;
    0x0000c250 blx 0x18a8                    |         r0 = fcn_000018a8 ();
    0x0000c254 mov r5, r0                    |         r5 = r0;
    0x0000c256 cmp r0, 0                     |         
                                             |         if (r0 == 0) {
    0x0000c258 beq 0xc2e8                    |             goto label_5;
                                             |         }
    0x0000c25a ldr r1, [pc, 0x128]           |         
    0x0000c25c add r1, pc                    |         r1 = 0x185e6;
    0x0000c25e blx 0x186c                    |         r0 = fcn_0000186c ();
                                             |         if (r0 != 0) {
    0x0000c262 cbnz r0, 0xc2ae               |             goto label_6;
                                             |         }
                                             | label_1:
    0x0000c264 ldr r0, [pc, 0x120]           |         
    0x0000c266 movs r1, 0                    |         r1 = 0;
    0x0000c268 add r0, pc                    |         r0 = 0x185f4;
    0x0000c26a blx 0x1bac                    |         r0 = writev ();
    0x0000c26e cmp r0, 0                     |         
                                             |         if (r0 < 0) {
    0x0000c270 blt 0xc30e                    |             goto label_7;
                                             |         }
    0x0000c272 ldr r5, [pc, 0x118]           |         
    0x0000c274 add r5, pc                    |         r5 = 0x18606;
    0x0000c276 ldr r4, [r5]                  |         r4 = *(0x18606);
    0x0000c278 cmp r4, 0                     |         
                                             |         if (r4 != 0) {
    0x0000c27a bne 0xc304                    |             goto label_8;
                                             |         }
    0x0000c27c bl 0x7630                     |         r0 = fcn_00007630 ();
    0x0000c280 cmp r0, 6                     |         
    0x0000c282 it le                         |         
                                             |         if (r0 > 6) {
    0x0000c284 movle r0, r4                  |             r0 = r4;
                                             |         }
    0x0000c286 ble 0xc248                    |         
                                             |     }
    0x0000c288 ldr r2, [pc, 0x104]           |     
    0x0000c28a mov r1, r4                    |     r1 = r4;
    0x0000c28c ldr r0, [pc, 0x104]           |     
    0x0000c28e ldr r3, [pc, 0x108]           |     
    0x0000c290 add r2, pc                    |     r2 = 0x18624;
    0x0000c292 add r0, pc                    |     r0 = 0x1862a;
    0x0000c294 adds r2, 7                    |     r2 += 7;
    0x0000c296 add r3, pc                    |     r3 = 0x18634;
    0x0000c298 strd r3, r0, [sp]             |     __asm ("strd r3, r0, [sp]");
    0x0000c29c movs r3, 0x66                 |     r3 = 0x66;
    0x0000c29e movs r0, 7                    |     r0 = 7;
    0x0000c2a0 bl 0x7e80                     |     fcn_00007e80 (r0, r1, r2, r3, r4);
    0x0000c2a4 ldr r0, [r5]                  |     r0 = *(r5);
    0x0000c2a6 subs r0, 0                    |     
    0x0000c2a8 it ne                         |     
                                             |     if (r0 == 0) {
    0x0000c2aa movne r0, 1                   |         r0 = 1;
                                             |     }
    0x0000c2ac b 0xc248                      |     goto label_0;
                                             | label_6:
    0x0000c2ae ldr r1, [pc, 0xec]            |     
    0x0000c2b0 mov r0, r5                    |     r0 = r5;
    0x0000c2b2 add r1, pc                    |     r1 = 0x18654;
    0x0000c2b4 blx 0x186c                    |     r0 = fcn_0000186c ();
                                             |     if (r0 != 0) {
    0x0000c2b8 cbz r0, 0xc2e8                |         
    0x0000c2ba mov r0, r5                    |         r0 = r5;
    0x0000c2bc bl 0x8e78                     |         r0 = fcn_00008e78 (r0, r1);
    0x0000c2c0 subs r5, r0, 0                |         r5 = r0 - 0;
                                             |         if (r5 >= r0) {
    0x0000c2c2 bge 0xc354                    |             goto label_9;
                                             |         }
    0x0000c2c4 bl 0x7630                     |         r0 = fcn_00007630 ();
    0x0000c2c8 cmp r0, 6                     |         
                                             |         if (r0 <= 6) {
    0x0000c2ca ble 0xc2e8                    |             goto label_5;
                                             |         }
    0x0000c2cc ldr r2, [pc, 0xd0]            |         
    0x0000c2ce movs r3, 0x57                 |         r3 = 0x57;
    0x0000c2d0 ldr r4, [pc, 0xd0]            |         
    0x0000c2d2 mov r1, r5                    |         r1 = r5;
    0x0000c2d4 ldr r0, [pc, 0xd0]            |         
    0x0000c2d6 add r2, pc                    |         r2 = 0x1867a;
    0x0000c2d8 add r4, pc                    |         r4 = 0x18680;
    0x0000c2da adds r2, 7                    |         r2 += 7;
    0x0000c2dc add r0, pc                    |         r0 = 0x18688;
    0x0000c2de strd r0, r4, [sp]             |         __asm ("strd r0, r4, [sp]");
    0x0000c2e2 movs r0, 7                    |         r0 = 7;
    0x0000c2e4 bl 0x7e80                     |         fcn_00007e80 (r0, r1, r2, r3, r4);
                                             |     }
                                             | label_5:
    0x0000c2e8 ldr r0, [pc, 0xc0]            |     
    0x0000c2ea add r0, pc                    |     r0 = 0x1869a;
    0x0000c2ec bl 0xa6e8                     |     r0 = fcn_0000a6e8 ();
    0x0000c2f0 subs r4, r0, 0                |     r4 = r0 - 0;
    0x0000c2f2 blt 0xc32e                    |     
                                             |     while (r0 <= 6) {
                                             | label_2:
    0x0000c2f4 ldr r3, [pc, 0xb8]            |         
    0x0000c2f6 cmp r4, 0                     |         
    0x0000c2f8 ite le                        |         
                                             |         if (r4 > 0) {
    0x0000c2fa movle r4, 0                   |             r4 = 0;
                                             |         }
                                             |         if (r4 <= 0) {
    0x0000c2fc movgt r4, 1                   |             r4 = 1;
                                             |         }
    0x0000c2fe add r3, pc                    |         r3 = 0x186b2;
    0x0000c300 str r4, [r3]                  |         *(r3) = r4;
    0x0000c302 b 0xc264                      |         goto label_1;
                                             | label_8:
    0x0000c304 movs r3, 1                    |         r3 = 1;
    0x0000c306 mov r0, r3                    |         r0 = r3;
    0x0000c308 str r3, [r5]                  |         *(r5) = r3;
    0x0000c30a add sp, 0xc                   |         
    0x0000c30c pop {r4, r5, pc}              |         
                                             | label_7:
    0x0000c30e blx 0x1b04                    |         r0 = sprintf_chk ()
    0x0000c312 ldr r4, [r0]                  |         r4 = *(r0);
    0x0000c314 cmp r4, 2                     |         
                                             |         if (r4 != 2) {
    0x0000c316 beq 0xc320                    |             
    0x0000c318 bl 0x7630                     |             r0 = fcn_00007630 ();
    0x0000c31c cmp r0, 6                     |             
                                             |             if (r0 > 6) {
    0x0000c31e bgt 0xc35e                    |                 goto label_10;
                                             |             }
                                             |         }
                                             | label_3:
    0x0000c320 ldr r3, [pc, 0x90]            |         
    0x0000c322 movs r2, 0                    |         r2 = 0;
    0x0000c324 mov r0, r2                    |         r0 = r2;
    0x0000c326 add r3, pc                    |         r3 = 0x186de;
    0x0000c328 str r2, [r3]                  |         *(r3) = r2;
    0x0000c32a add sp, 0xc                   |         
    0x0000c32c pop {r4, r5, pc}              |         
    0x0000c32e bl 0x7630                     |         r0 = fcn_00007630 ();
    0x0000c332 cmp r0, 6                     |         
    0x0000c334 ble 0xc2f4                    |         
                                             |     }
    0x0000c336 ldr r2, [pc, 0x80]            |     
    0x0000c338 movs r3, 0x5e                 |     r3 = 0x5e;
    0x0000c33a ldr r0, [pc, 0x80]            |     
    0x0000c33c ldr r1, [pc, 0x80]            |     
    0x0000c33e add r2, pc                    |     r2 = 0x186fc;
    0x0000c340 add r0, pc                    |     r0 = 0x18702;
    0x0000c342 adds r2, 7                    |     r2 += 7;
    0x0000c344 add r1, pc                    |     r1 = 0x18708;
    0x0000c346 strd r1, r0, [sp]             |     __asm ("strd r1, r0, [sp]");
    0x0000c34a mov r1, r4                    |     r1 = r4;
    0x0000c34c movs r0, 7                    |     r0 = 7;
    0x0000c34e bl 0x7e80                     |     fcn_00007e80 (r0, r1, r2, r3, r4);
    0x0000c352 b 0xc2f4                      |     goto label_2;
                                             | label_9:
    0x0000c354 ite gt                        |     
                                             |     if (r0 <= 7) {
    0x0000c356 movgt r0, 1                   |         r0 = 1;
                                             |     }
                                             |     if (r0 > 7) {
    0x0000c358 movle r0, 0                   |         r0 = 0;
                                             |     }
    0x0000c35a str r0, [r4]                  |     *(r4) = r0;
    0x0000c35c b 0xc248                      |     goto label_0;
                                             | label_10:
    0x0000c35e ldr r2, [pc, 0x64]            |     
    0x0000c360 movs r3, 0x6b                 |     r3 = 0x6b;
    0x0000c362 ldr r5, [pc, 0x64]            |     
    0x0000c364 mov r1, r4                    |     r1 = r4;
    0x0000c366 ldr r0, [pc, 0x64]            |     
    0x0000c368 add r2, pc                    |     r2 = 0x18732;
    0x0000c36a add r5, pc                    |     r5 = 0x18738;
    0x0000c36c adds r2, 7                    |     r2 += 7;
    0x0000c36e add r0, pc                    |     r0 = 0x18740;
    0x0000c370 strd r0, r5, [sp]             |     __asm ("strd r0, r5, [sp]");
    0x0000c374 movs r0, 7                    |     r0 = 7;
    0x0000c376 bl 0x7e80                     |     fcn_00007e80 (r0, r1, r2, r3, r4);
    0x0000c37a b 0xc320                      |     goto label_3;
                                             | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/udev/scsi_id @ 0xc3d0 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) fcn.0000c3d0 ()                              | void fcn_0000c3d0 () {
                                                         |     int32_t var_0h;
                                                         |     int32_t var_0h_2;
                                                         |     int16_t var_8h;
    0x0000c3d0 ldr r2, [pc, 0x6c]                        |     
    0x0000c3d2 push.w {r4, r5, r6, r7, r8, lr}           |     
    0x0000c3d6 movs r7, 0                                |     r7 = 0;
    0x0000c3d8 ldr r5, [pc, 0x68]                        |     
    0x0000c3da sub sp, 0x10                              |     
    0x0000c3dc add r2, pc                                |     r2 = 0x18820;
    0x0000c3de ldr.w r8, [pc, 0x68]                      |     
    0x0000c3e2 adds r4, r2, 7                            |     r4 = r2 + 7;
    0x0000c3e4 add r5, pc                                |     r5 = 0x1882c;
    0x0000c3e6 add r8, pc                                |     r8 = 0x18834;
                                                         |     do {
    0x0000c3e8 movs r1, 0                                |         r1 = 0;
    0x0000c3ea mov r0, r5                                |         r0 = r5;
    0x0000c3ec blx 0x1bac                                |         r0 = writev ();
    0x0000c3f0 cmp r0, 0                                 |         
                                                         |         if (r0 >= 0) {
    0x0000c3f2 bge 0xc432                                |             goto label_2;
                                                         |         }
    0x0000c3f4 blx 0x1b04                                |         r0 = sprintf_chk ()
    0x0000c3f8 ldr r6, [r0]                              |         r6 = *(r0);
    0x0000c3fa cmp r6, 2                                 |         
                                                         |         if (r6 != 2) {
    0x0000c3fc beq 0xc406                                |             
    0x0000c3fe bl 0x7630                                 |             r0 = fcn_00007630 ();
    0x0000c402 cmp r0, 6                                 |             
                                                         |             if (r0 > 6) {
    0x0000c404 bgt 0xc418                                |                 goto label_3;
                                                         |             }
                                                         |         }
                                                         | label_0:
    0x0000c406 ldr r5, [pc, 0x44]                        |         
    0x0000c408 add r5, pc                                |         r5 = 0x1885a;
                                                         |         if (r7 != 0) {
    0x0000c40a cbz r7, 0xc414                            |             
    0x0000c40c movs r0, 0                                |             r0 = 0;
                                                         | label_1:
    0x0000c40e add sp, 0x10                              |             
    0x0000c410 pop.w {r4, r5, r6, r7, r8, pc}            |             
                                                         |         }
    0x0000c414 movs r7, 1                                |         r7 = 1;
    0x0000c416 b 0xc3e8                                  |         
                                                         |     } while (1);
                                                         | label_3:
    0x0000c418 ldr r0, [pc, 0x34]                        |     
    0x0000c41a movw r3, 0x27a                            |     r3 = 0x27a;
    0x0000c41e mov r2, r4                                |     r2 = r4;
    0x0000c420 mov r1, r6                                |     r1 = r6;
    0x0000c422 str r5, [sp, 8]                           |     var_8h = r5;
    0x0000c424 add r0, pc                                |     r0 = 0x18878;
    0x0000c426 strd r0, r8, [sp]                         |     __asm ("strd r0, r8, [sp]");
    0x0000c42a movs r0, 7                                |     r0 = 7;
    0x0000c42c bl 0x7e80                                 |     fcn_00007e80 (r0, r1, r2, r3, r4);
    0x0000c430 b 0xc406                                  |     goto label_0;
                                                         | label_2:
    0x0000c432 ldr r3, [pc, 0x20]                        |     
    0x0000c434 add r3, pc                                |     r3 = 0x1888e;
    0x0000c436 add.w r3, r3, r7, lsl 3                   |     r3 += (r7 << 3);
    0x0000c43a ldr r0, [r3, 4]                           |     r0 = *((r3 + 4));
    0x0000c43c b 0xc40e                                  |     goto label_1;
                                                         | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/udev/scsi_id @ 0xc470 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.0000c470 ()                      | void fcn_0000c470 () {
                                                 |     int16_t var_0h_2;
                                                 |     int16_t var_4h_2;
                                                 |     int16_t var_8h_2;
                                                 |     int16_t socket;
                                                 |     int16_t var_0h;
                                                 |     int16_t var_4h;
                                                 |     int16_t var_8h;
                                                 |     int32_t var_bh;
                                                 |     int8_t var_fh;
                                                 |     int16_t var_10h;
                                                 |     int32_t var_0h_3;
                                                 |     int32_t var_8h_3;
                                                 |     int16_t var_ch;
                                                 |     int32_t var_10h_3;
                                                 |     int32_t var_14h;
                                                 |     int16_t var_0h_4;
    0x0000c470 ldr r2, [pc, 0x2d4]               |     
    0x0000c472 ldr r3, [pc, 0x2d8]               |     r3 = *(0xc74e);
    0x0000c474 ldr r0, [pc, 0x2c4]               |     
    0x0000c476 add r2, pc                        |     r2 = 0x18bc2;
    0x0000c478 push {r4, r5, r6, r7, lr}         |     
    0x0000c47a ldr r6, [pc, 0x2c4]               |     r6 = *(0xc742);
    0x0000c47c sub sp, 0x2c                      |     
    0x0000c47e movs r4, 0                        |     r4 = 0;
    0x0000c480 ldr r3, [r2, r3]                  |     
    0x0000c482 add r7, sp, 0x10                  |     r7 += var_10h;
    0x0000c484 add r0, pc                        |     r0 = 0x18bc4;
    0x0000c486 ldr r3, [r3]                      |     r3 = *(0x18bc2);
    0x0000c488 str r3, [r7, 0x14]                |     var_14h = r3;
    0x0000c48a mov.w r3, 0                       |     r3 = 0;
    0x0000c48e strd r4, r4, [r7]                 |     __asm ("strd r4, r4, [r7]");
    0x0000c492 str r4, [r7, 8]                   |     var_8h_3 = r4;
    0x0000c494 blx 0x1c78                        |     fseek (r0, r1, r2);
    0x0000c498 ldr r5, [r6, r0]                  |     r5 = *(0xc742);
    0x0000c49a cmp r5, r4                        |     
    0x0000c49c it ge                             |     
                                                 |     if (r5 < r4) {
    0x0000c49e movge r0, r4                      |         r0 = r4;
                                                 |     }
    0x0000c4a0 blt 0xc4d0                        |     
                                                 |     while (1) {
                                                 | label_5:
    0x0000c4a2 blx 0x18cc                        |         fcn_000018cc ();
    0x0000c4a6 ldr r0, [r7, 4]                   |         r0 = var_0h_3;
    0x0000c4a8 blx 0x18cc                        |         fcn_000018cc ();
    0x0000c4ac ldr r0, [r7]                      |         r0 = *(r7);
    0x0000c4ae blx 0x18cc                        |         fcn_000018cc ();
    0x0000c4b2 ldr r2, [pc, 0x29c]               |         
    0x0000c4b4 ldr r3, [pc, 0x294]               |         r3 = *(0xc74c);
    0x0000c4b6 add r2, pc                        |         r2 = 0x18c0c;
    0x0000c4b8 ldr r3, [r2, r3]                  |         r3 = *(0x18c0c);
    0x0000c4ba ldr r2, [r3]                      |         r2 = *(0x18c0c);
    0x0000c4bc ldr r3, [r7, 0x14]                |         r3 = var_14h;
    0x0000c4be eors r2, r3                       |         r2 ^= r3;
    0x0000c4c0 mov.w r3, 0                       |         r3 = 0;
                                                 |         if (r2 != r3) {
    0x0000c4c4 bne.w 0xc95c                      |             goto label_22;
                                                 |         }
    0x0000c4c8 mov r0, r5                        |         r0 = r5;
    0x0000c4ca adds r7, 0x1c                     |         r7 += 0x1c;
    0x0000c4cc mov sp, r7                        |         
    0x0000c4ce pop {r4, r5, r6, r7, pc}          |         
    0x0000c4d0 ldr r0, [pc, 0x280]               |         
    0x0000c4d2 mov r1, r4                        |         r1 = r4;
    0x0000c4d4 add r0, pc                        |         r0 = 0x18c2c;
    0x0000c4d6 blx 0x1bac                        |         r0 = writev ();
    0x0000c4da cmp r0, r4                        |         
                                                 |         if (r0 >= r4) {
    0x0000c4dc bge 0xc5d6                        |             goto label_23;
                                                 |         }
    0x0000c4de blx 0x1b04                        |         r0 = sprintf_chk ()
    0x0000c4e2 ldr r4, [r0]                      |         r4 = *(r0);
    0x0000c4e4 cmp r4, 2                         |         
                                                 |         if (r4 != 2) {
    0x0000c4e6 beq 0xc50e                        |             
    0x0000c4e8 bl 0x7630                         |             r0 = fcn_00007630 ();
    0x0000c4ec cmp r0, 6                         |             
                                                 |             if (r0 <= 6) {
    0x0000c4ee ble 0xc50e                        |                 goto label_1;
                                                 |             }
    0x0000c4f0 ldr r2, [pc, 0x264]               |             
    0x0000c4f2 movw r3, 0x28e                    |             r3 = 0x28e;
    0x0000c4f6 ldr r5, [pc, 0x264]               |             
    0x0000c4f8 ldr r0, [pc, 0x264]               |             
    0x0000c4fa add r2, pc                        |             r2 = 0x18c56;
    0x0000c4fc add r5, pc                        |             r5 = 0x18c5e;
    0x0000c4fe add r0, pc                        |             r0 = 0x18c62;
                                                 | label_2:
    0x0000c500 strd r0, r5, [sp]                 |             __asm ("strd r0, r5, [sp]");
    0x0000c504 mov r1, r4                        |             r1 = r4;
    0x0000c506 adds r2, 7                        |             r2 += 7;
    0x0000c508 movs r0, 7                        |             r0 = 7;
    0x0000c50a bl 0x7e80                         |             fcn_00007e80 (r0, r1, r2, r3, r4);
                                                 |         }
                                                 | label_1:
    0x0000c50e ldr r0, [pc, 0x254]               |         
    0x0000c510 adds r1, r7, 4                    |         r1 += var_0h_3;
    0x0000c512 add r0, pc                        |         r0 = 0x18c7c;
    0x0000c514 bl 0x5fc8                         |         r0 = fcn_00005fc8 (r0, r1);
    0x0000c518 subs r4, r0, 0                    |         r4 = r0 - 0;
                                                 |         if (r4 < r0) {
    0x0000c51a blt 0xc60a                        |             goto label_24;
                                                 |         }
    0x0000c51c ldr r4, [r7, 4]                   |         r4 = var_0h_3;
    0x0000c51e ldr r1, [pc, 0x248]               |         
    0x0000c520 mov r0, r4                        |         r0 = r4;
    0x0000c522 add r1, pc                        |         r1 = 0x18c90;
    0x0000c524 blx 0x1838                        |         r0 = fcn_00001838 ();
                                                 |         if (r0 == 0) {
    0x0000c528 cbz r0, 0xc544                    |             goto label_25;
                                                 |         }
                                                 | label_0:
    0x0000c52a movs r5, 0x18                     |         r5 = 0x18;
                                                 | label_6:
    0x0000c52c bl 0x7630                         |         r0 = fcn_00007630 ();
    0x0000c530 cmp r0, 6                         |         
                                                 |         if (r0 > 6) {
    0x0000c532 bgt 0xc632                        |             goto label_26;
                                                 |         }
                                                 | label_4:
    0x0000c534 ldr r0, [pc, 0x20c]               |         
    0x0000c536 add r0, pc                        |         r0 = 0x18c7e;
    0x0000c538 blx 0x1c78                        |         r0 = fseek (r0, r1, r2);
    0x0000c53c mov r3, r0                        |         r3 = r0;
    0x0000c53e ldr r0, [r7, 8]                   |         r0 = var_8h_3;
    0x0000c540 str r5, [r6, r3]                  |         *((r6 + r3)) = r5;
    0x0000c542 b 0xc4a2                          |         
                                                 |     }
                                                 | label_25:
    0x0000c544 ldr r1, [pc, 0x224]               |     
    0x0000c546 mov r0, r4                        |     r0 = r4;
    0x0000c548 add r1, pc                        |     r1 = 0x18cb8;
    0x0000c54a blx 0x1838                        |     r0 = fcn_00001838 ();
    0x0000c54e cmp r0, 0                         |     
                                                 |     if (r0 != 0) {
    0x0000c550 bne 0xc52a                        |         goto label_0;
                                                 |     }
                                                 | label_3:
    0x0000c552 ldr r2, [pc, 0x21c]               |     
    0x0000c554 add.w r3, r7, 8                   |     r3 += var_8h_3;
    0x0000c558 ldr r1, [pc, 0x218]               |     
    0x0000c55a ldr r0, [pc, 0x21c]               |     
    0x0000c55c add r2, pc                        |     r2 = 0x18cd2;
    0x0000c55e add r1, pc                        |     r1 = 0x18cd6;
    0x0000c560 add r0, pc                        |     r0 = 0x18cde;
    0x0000c562 bl 0x5b84                         |     r0 = fcn_00005b84 (r0, r1, r2, r3);
    0x0000c566 subs r4, r0, 0                    |     r4 = r0 - 0;
                                                 |     if (r4 < r0) {
    0x0000c568 blt 0xc65a                        |         goto label_27;
                                                 |     }
    0x0000c56a ldr r0, [r7, 8]                   |     r0 = var_8h_3;
    0x0000c56c ldrb r3, [r0]                     |     r3 = *(r0);
    0x0000c56e cmp r3, 0x30                      |     
                                                 |     if (r3 == 0x30) {
    0x0000c570 beq.w 0xc6bc                      |         goto label_28;
                                                 |     }
                                                 | label_8:
    0x0000c574 add.w r1, r7, 0xc                 |     r1 += var_ch;
    0x0000c578 bl 0x904c                         |     r0 = fcn_0000904c (r0, r1);
    0x0000c57c subs r4, r0, 0                    |     r4 = r0 - 0;
                                                 |     if (r4 < r0) {
    0x0000c57e blt.w 0xc7dc                      |         goto label_29;
                                                 |     }
    0x0000c582 ldr r1, [r7, 0xc]                 |     r1 = var_ch;
    0x0000c584 movs r3, 0                        |     r3 = 0;
    0x0000c586 str r3, [r7, 0x10]                |     var_10h_3 = r3;
    0x0000c588 cmp r1, 0                         |     
                                                 |     if (r1 != 0) {
    0x0000c58a bne.w 0xc82a                      |         goto label_30;
                                                 |     }
    0x0000c58e ldr r3, [pc, 0x1ec]               |     
    0x0000c590 sub sp, 0x10                      |     
    0x0000c592 ldr r5, [pc, 0x1ec]               |     
    0x0000c594 add r4, sp, 0x10                  |     r4 += var_0h;
    0x0000c596 add r3, pc                        |     r3 = 0x18d18;
    0x0000c598 ldm.w r3, {r0, r1, r2}            |     r0 = *(r3);
                                                 |     r1 = *((r3 + 4));
                                                 |     r2 = *((r3 + 8));
    0x0000c59c add r5, pc                        |     r5 = 0x18d22;
    0x0000c59e stm.w r4, {r0, r1, r2}            |     *(r4) = r0;
                                                 |     *((r4 + 4)) = r1;
                                                 |     *((r4 + 8)) = r2;
    0x0000c5a2 ldrb r2, [r5, 4]                  |     r2 = *((r5 + 4));
    0x0000c5a4 ldr r0, [r5]                      |     r0 = *(0x18d22);
    0x0000c5a6 strb r2, [r4, 0xf]                |     var_fh = r2;
    0x0000c5a8 str.w r0, [r4, 0xb]               |     __asm ("str.w r0, [var_bh]");
                                                 | label_15:
    0x0000c5ac add.w r1, r7, 0x10                |     r1 += var_10h_3;
    0x0000c5b0 mov r0, r4                        |     r0 = r4;
    0x0000c5b2 bl 0x5fc8                         |     fcn_00005fc8 (r0, r1);
    0x0000c5b6 subs r5, r0, 0                    |     r5 -= socket;
                                                 |     if (r5 < socket) {
    0x0000c5b8 blt.w 0xc8d2                      |         goto label_31;
                                                 |     }
    0x0000c5bc ldr r4, [r7, 0x10]                |     r4 = var_10h_3;
    0x0000c5be ldr r1, [pc, 0x1c4]               |     
    0x0000c5c0 mov r0, r4                        |     r0 = r4;
    0x0000c5c2 add r1, pc                        |     r1 = 0x18d4c;
    0x0000c5c4 bl 0xc9e8                         |     r0 = fcn_0000c9e8 (r0, r1);
    0x0000c5c8 cmp r0, 0                         |     
                                                 |     if (r0 != 0) {
    0x0000c5ca bne.w 0xc908                      |         goto label_32;
                                                 |     }
                                                 | label_17:
    0x0000c5ce mov r0, r4                        |     r0 = r4;
    0x0000c5d0 blx 0x18cc                        |     fcn_000018cc ();
    0x0000c5d4 b 0xc664                          |     goto label_7;
                                                 | label_23:
    0x0000c5d6 ldr r0, [pc, 0x1b0]               |     
    0x0000c5d8 mov r1, r4                        |     r1 = r4;
    0x0000c5da add r0, pc                        |     r0 = 0x18d68;
    0x0000c5dc blx 0x1bac                        |     r0 = writev ();
    0x0000c5e0 cmp r0, 0                         |     
                                                 |     if (r0 >= 0) {
    0x0000c5e2 bge 0xc50e                        |         goto label_1;
                                                 |     }
    0x0000c5e4 blx 0x1b04                        |     r0 = sprintf_chk ()
    0x0000c5e8 ldr r4, [r0]                      |     r4 = *(r0);
    0x0000c5ea bl 0x7630                         |     fcn_00007630 ();
    0x0000c5ee cmp r4, 2                         |     
                                                 |     if (r4 == 2) {
    0x0000c5f0 beq.w 0xc826                      |         goto label_33;
                                                 |     }
    0x0000c5f4 cmp r0, 6                         |     
                                                 |     if (r0 <= 6) {
    0x0000c5f6 ble 0xc50e                        |         goto label_1;
                                                 |     }
    0x0000c5f8 ldr r2, [pc, 0x190]               |     
    0x0000c5fa movw r3, 0x295                    |     r3 = 0x295;
    0x0000c5fe ldr r5, [pc, 0x190]               |     
    0x0000c600 ldr r0, [pc, 0x190]               |     
    0x0000c602 add r2, pc                        |     r2 = 0x18d92;
    0x0000c604 add r5, pc                        |     r5 = 0x18d9a;
    0x0000c606 add r0, pc                        |     r0 = 0x18d9e;
    0x0000c608 b 0xc500                          |     goto label_2;
                                                 | label_24:
    0x0000c60a bl 0x7630                         |     r0 = fcn_00007630 ();
    0x0000c60e cmp r0, 6                         |     
                                                 |     if (r0 <= 6) {
    0x0000c610 ble 0xc552                        |         goto label_3;
                                                 |     }
    0x0000c612 ldr r2, [pc, 0x184]               |     
    0x0000c614 movw r3, 0x29b                    |     r3 = 0x29b;
    0x0000c618 ldr r5, [pc, 0x180]               |     
    0x0000c61a mov r1, r4                        |     r1 = r4;
    0x0000c61c ldr r0, [pc, 0x180]               |     
    0x0000c61e add r2, pc                        |     r2 = 0x18dbc;
    0x0000c620 add r5, pc                        |     r5 = 0x18dc0;
    0x0000c622 adds r2, 7                        |     r2 += 7;
    0x0000c624 add r0, pc                        |     r0 = 0x18dc8;
    0x0000c626 strd r0, r5, [sp]                 |     __asm ("strd r0, r5, [sp]");
    0x0000c62a movs r0, 7                        |     r0 = 7;
    0x0000c62c bl 0x7e80                         |     fcn_00007e80 (r0, r1, r2, r3, r4);
    0x0000c630 b 0xc552                          |     goto label_3;
                                                 | label_26:
    0x0000c632 mov r0, r5                        |     r0 = r5;
    0x0000c634 ldr r4, [pc, 0x16c]               |     
    0x0000c636 bl 0xc458                         |     fcn_0000c458 (r0);
    0x0000c63a ldr r2, [pc, 0x16c]               |     
    0x0000c63c movs r1, 0                        |     r1 = 0;
    0x0000c63e ldr r3, [pc, 0x16c]               |     
    0x0000c640 add r4, pc                        |     r4 = 0x18de8;
    0x0000c642 str r0, [sp, 8]                   |     var_8h = r0;
    0x0000c644 movs r0, 7                        |     r0 = 7;
    0x0000c646 add r2, pc                        |     r2 = 0x18df4;
    0x0000c648 str r4, [sp]                      |     *(sp) = r4;
    0x0000c64a add r3, pc                        |     r3 = 0x18dfc;
    0x0000c64c adds r2, 7                        |     r2 += 7;
    0x0000c64e str r3, [sp, 4]                   |     var_4h = r3;
    0x0000c650 movw r3, 0x30e                    |     r3 = 0x30e;
    0x0000c654 bl 0x7e80                         |     fcn_00007e80 (r0, r1, r2, r3, r4);
    0x0000c658 b 0xc534                          |     goto label_4;
                                                 | label_27:
    0x0000c65a bl 0x7630                         |     r0 = fcn_00007630 ();
    0x0000c65e cmp r0, 6                         |     
                                                 |     if (r0 > 6) {
    0x0000c660 bgt.w 0xc814                      |         goto label_34;
                                                 |     }
                                                 | label_7:
    0x0000c664 ldr r0, [pc, 0x148]               |     
    0x0000c666 mov r1, r7                        |     r1 = r7;
    0x0000c668 add r0, pc                        |     r0 = 0x18e1c;
    0x0000c66a bl 0x5fc8                         |     r0 = fcn_00005fc8 (r0, r1);
    0x0000c66e subs r4, r0, 0                    |     r4 = r0 - 0;
                                                 |     if (r4 <= r0) {
    0x0000c670 bgt 0xc694                        |         
    0x0000c672 adds r3, r4, 2                    |         r3 = r4 + 2;
    0x0000c674 bics r3, r3, 2                    |         __asm ("bics r3, r3, 2");
                                                 |         if (r3 == r4) {
    0x0000c678 beq 0xc6c4                        |             goto label_35;
                                                 |         }
    0x0000c67a bl 0x7630                         |         r0 = fcn_00007630 ();
    0x0000c67e cmp r0, 6                         |         
                                                 |         if (r0 > 6) {
    0x0000c680 bgt 0xc70e                        |             goto label_36;
                                                 |         }
                                                 | label_10:
    0x0000c682 rsbs r5, r4, 0                    |         r5 = r4 - ;
    0x0000c684 uxtb r5, r5                       |         r5 = (int8_t) r5;
    0x0000c686 rsbs r5, r5, 0                    |         r5 -= ;
                                                 | label_11:
    0x0000c688 cmp r5, 0                         |         
    0x0000c68a ldr r0, [r7, 8]                   |         r0 = var_8h_3;
    0x0000c68c it ge                             |         
                                                 |         if (r5 < 0) {
    0x0000c68e mvnge r5, 0x55                    |             r5 = ~0x55;
                                                 |         }
    0x0000c692 b 0xc4a2                          |         goto label_5;
                                                 |     }
                                                 | label_9:
    0x0000c694 ldr r4, [r7]                      |     r4 = *(r7);
                                                 | label_12:
    0x0000c696 ldr r1, [pc, 0x11c]               |     
    0x0000c698 mov r0, r4                        |     r0 = r4;
    0x0000c69a add r1, pc                        |     r1 = 0x18e54;
    0x0000c69c blx 0x186c                        |     r0 = fcn_0000186c ();
    0x0000c6a0 cmp r0, 0                         |     
                                                 |     if (r0 == 0) {
    0x0000c6a2 beq.w 0xc806                      |         goto label_37;
                                                 |     }
    0x0000c6a6 ldr r0, [pc, 0x110]               |     
    0x0000c6a8 mov r2, r4                        |     r2 = r4;
    0x0000c6aa movs r1, 0x1c                     |     r1 = 0x1c;
    0x0000c6ac add r0, pc                        |     r0 = 0x18e6a;
    0x0000c6ae bl 0xa740                         |     r0 = fcn_0000a740 (r0, r1, r2);
    0x0000c6b2 subs r5, r0, 0                    |     r5 = r0 - 0;
                                                 |     if (r5 >= r0) {
    0x0000c6b4 bge.w 0xc52c                      |         goto label_6;
                                                 |     }
                                                 | label_13:
    0x0000c6b8 movs r5, 0x1b                     |     r5 = 0x1b;
    0x0000c6ba b 0xc52c                          |     goto label_6;
                                                 | label_28:
    0x0000c6bc ldrb r3, [r0, 1]                  |     r3 = *((r0 + 1));
    0x0000c6be cmp r3, 0                         |     
                                                 |     if (r3 == 0) {
    0x0000c6c0 beq 0xc664                        |         goto label_7;
                                                 |     }
    0x0000c6c2 b 0xc574                          |     goto label_8;
                                                 | label_35:
    0x0000c6c4 bl 0x9624                         |     r0 = fcn_00009624 (r0);
    0x0000c6c8 cmp r0, 1                         |     
                                                 |     if (r0 == 1) {
    0x0000c6ca beq 0xc720                        |         goto label_38;
                                                 |     }
    0x0000c6cc ldr r0, [pc, 0xec]                |     
    0x0000c6ce mov r1, r7                        |     r1 = r7;
    0x0000c6d0 add r0, pc                        |     r0 = 0x18e90;
    0x0000c6d2 bl 0x5fc8                         |     r0 = fcn_00005fc8 (r0, r1);
    0x0000c6d6 subs r4, r0, 0                    |     r4 = r0 - 0;
                                                 |     if (r4 > r0) {
    0x0000c6d8 bgt 0xc694                        |         goto label_9;
                                                 |     }
    0x0000c6da adds r3, r4, 2                    |     r3 = r4 + 2;
    0x0000c6dc bics r3, r3, 2                    |     __asm ("bics r3, r3, 2");
                                                 |     if (r3 == r4) {
    0x0000c6e0 beq.w 0xc846                      |         goto label_39;
                                                 |     }
    0x0000c6e4 bl 0x7630                         |     r0 = fcn_00007630 ();
    0x0000c6e8 cmp r0, 6                         |     
                                                 |     if (r0 <= 6) {
    0x0000c6ea ble 0xc682                        |         goto label_10;
                                                 |     }
    0x0000c6ec ldr r2, [pc, 0xd0]                |     
    0x0000c6ee mov.w r3, 0x2e0                   |     r3 = 0x2e0;
    0x0000c6f2 ldr r6, [pc, 0xd0]                |     
    0x0000c6f4 ldr r5, [pc, 0xd0]                |     
    0x0000c6f6 add r2, pc                        |     r2 = 0x18eba;
    0x0000c6f8 add r6, pc                        |     r6 = 0x18ec2;
    0x0000c6fa add r5, pc                        |     r5 = 0x18ec6;
                                                 |     do {
    0x0000c6fc movs r0, 7                        |         r0 = 7;
    0x0000c6fe strd r5, r6, [sp]                 |         __asm ("strd r5, r6, [sp]");
    0x0000c702 mov r1, r4                        |         r1 = r4;
    0x0000c704 add r2, r0                        |         r2 += r0;
    0x0000c706 bl 0x7e80                         |         r0 = fcn_00007e80 (r0, r1, r2, r3, r4);
    0x0000c70a mov r5, r0                        |         r5 = r0;
    0x0000c70c b 0xc688                          |         goto label_11;
                                                 | label_36:
    0x0000c70e ldr r2, [pc, 0xbc]                |         
    0x0000c710 mov.w r3, 0x2c4                   |         r3 = 0x2c4;
    0x0000c714 ldr r6, [pc, 0xb8]                |         
    0x0000c716 ldr r5, [pc, 0xbc]                |         
    0x0000c718 add r2, pc                        |         r2 = 0x18eea;
    0x0000c71a add r6, pc                        |         r6 = 0x18eee;
    0x0000c71c add r5, pc                        |         r5 = 0x18ef6;
    0x0000c71e b 0xc6fc                          |         
                                                 |     } while (1);
                                                 | label_38:
    0x0000c720 ldr r0, [pc, 0xb4]                |     
    0x0000c722 add r0, pc                        |     r0 = 0x18efe;
    0x0000c724 blx 0x1a34                        |     r0 = fcn_00001a34 ();
    0x0000c728 mov r4, r0                        |     r4 = r0;
    0x0000c72a cmp r0, 0                         |     
                                                 |     if (r0 == 0) {
    0x0000c72c beq.w 0xc862                      |         goto label_18;
                                                 |     }
    0x0000c730 ldrb r3, [r0]                     |     r3 = *(r0);
    0x0000c732 cmp r3, 0                         |     
                                                 |     if (r3 != 0) {
    0x0000c734 bne 0xc696                        |         goto label_12;
                                                 |     }
                                                 | label_16:
    0x0000c736 movs r5, 0                        |     r5 = 0;
    0x0000c738 b 0xc52c                          |     goto label_6;
                                                 | label_29:
    0x0000c7dc bl 0x7630                         |     r0 = fcn_00007630 ();
    0x0000c7e0 cmp r0, 6                         |     
                                                 |     if (r0 <= 6) {
    0x0000c7e2 ble.w 0xc664                      |         goto label_7;
                                                 |     }
    0x0000c7e6 ldr r2, [pc, 0x1a4]               |     
    0x0000c7e8 mov.w r3, 0x2ac                   |     r3 = 0x2ac;
    0x0000c7ec ldr r5, [pc, 0x1a0]               |     
    0x0000c7ee ldr r0, [pc, 0x1a4]               |     
    0x0000c7f0 add r2, pc                        |     r2 = 0x19182;
    0x0000c7f2 add r5, pc                        |     r5 = 0x19186;
    0x0000c7f4 add r0, pc                        |     r0 = 0x1918e;
                                                 | label_14:
    0x0000c7f6 strd r0, r5, [sp]                 |     __asm ("strd r0, r5, [sp]");
    0x0000c7fa mov r1, r4                        |     r1 = r4;
    0x0000c7fc adds r2, 7                        |     r2 += 7;
    0x0000c7fe movs r0, 7                        |     r0 = 7;
    0x0000c800 bl 0x7e80                         |     fcn_00007e80 (r0, r1, r2, r3, r4);
    0x0000c804 b 0xc664                          |     goto label_7;
                                                 | label_37:
    0x0000c806 bl 0xc3d0                         |     r0 = fcn_0000c3d0 ();
    0x0000c80a mov r5, r0                        |     r5 = r0;
    0x0000c80c cmp r0, 0                         |     
                                                 |     if (r0 != 0) {
    0x0000c80e bne.w 0xc52c                      |         goto label_6;
                                                 |     }
    0x0000c812 b 0xc6b8                          |     goto label_13;
                                                 | label_34:
    0x0000c814 ldr r2, [pc, 0x180]               |     
    0x0000c816 movw r3, 0x2a6                    |     r3 = 0x2a6;
    0x0000c81a ldr r5, [pc, 0x180]               |     
    0x0000c81c ldr r0, [pc, 0x180]               |     
    0x0000c81e add r2, pc                        |     r2 = 0x191ba;
    0x0000c820 add r5, pc                        |     r5 = 0x191c2;
    0x0000c822 add r0, pc                        |     r0 = 0x191c6;
    0x0000c824 b 0xc7f6                          |     goto label_14;
                                                 | label_33:
    0x0000c826 movs r5, 0x14                     |     r5 = 0x14;
    0x0000c828 b 0xc52c                          |     goto label_6;
                                                 | label_30:
    0x0000c82a ldr r0, [pc, 0x178]               |     
    0x0000c82c sub sp, 0x18                      |     
    0x0000c82e ldr r3, [pc, 0x178]               |     
    0x0000c830 add r4, sp, 0x10                  |     r4 += socket;
    0x0000c832 movs r2, 0x18                     |     r2 = 0x18;
    0x0000c834 add r0, pc                        |     r0 = 0x191de;
    0x0000c836 strd r1, r0, [sp]                 |     __asm ("strd r1, r0, [sp]");
    0x0000c83a add r3, pc                        |     r3 = 0x191e8;
    0x0000c83c movs r1, 1                        |     r1 = 1;
    0x0000c83e mov r0, r4                        |     r0 = r4;
    0x0000c840 blx 0x1b1c                        |     bind (r0, r1, r2);
    0x0000c844 b 0xc5ac                          |     goto label_15;
                                                 | label_39:
    0x0000c846 ldr r1, [pc, 0x164]               |     
    0x0000c848 mov r2, r7                        |     r2 = r7;
    0x0000c84a movs r0, 1                        |     r0 = 1;
    0x0000c84c add r1, pc                        |     r1 = 0x191fe;
    0x0000c84e bl 0x9ae0                         |     r0 = fcn_00009ae0 (r0, r1, r2, r3);
    0x0000c852 subs r4, r0, 0                    |     r4 = r0 - 0;
                                                 |     if (r4 > r0) {
    0x0000c854 bgt.w 0xc694                      |         goto label_9;
                                                 |     }
                                                 |     if (r4 != r0) {
    0x0000c858 beq 0xc862                        |         
    0x0000c85a bl 0x7630                         |         r0 = fcn_00007630 ();
    0x0000c85e cmp r0, 6                         |         
                                                 |         if (r0 > 6) {
    0x0000c860 bgt 0xc912                        |             goto label_40;
                                                 |         }
                                                 |     }
                                                 | label_18:
    0x0000c862 bl 0xc3d0                         |     r0 = fcn_0000c3d0 ();
    0x0000c866 mov r5, r0                        |     r5 = r0;
    0x0000c868 cmp r0, 0                         |     
                                                 |     if (r0 != 0) {
    0x0000c86a bne.w 0xc52c                      |         goto label_6;
                                                 |     }
    0x0000c86e bl 0xca50                         |     r0 = fcn_0000ca50 ();
    0x0000c872 cmp r0, 0                         |     
                                                 |     if (r0 == 0) {
    0x0000c874 beq.w 0xc736                      |         goto label_16;
                                                 |     }
    0x0000c878 bl 0xce70                         |     r0 = fcn_0000ce70 ();
    0x0000c87c subs r4, r0, 0                    |     r4 = r0 - 0;
                                                 |     if (r4 < r0) {
    0x0000c87e blt 0xc8a8                        |         goto label_41;
                                                 |     }
                                                 |     if (r4 == r0) {
    0x0000c880 beq 0xc932                        |         goto label_42;
                                                 |     }
    0x0000c882 ldr r0, [pc, 0x12c]               |     
    0x0000c884 mov r1, r5                        |     r1 = r5;
    0x0000c886 add r0, pc                        |     r0 = 0x1923c;
    0x0000c888 blx 0x1bac                        |     r0 = writev ();
    0x0000c88c cmp r0, 0                         |     
                                                 |     if (r0 >= 0) {
    0x0000c88e bge 0xc960                        |         goto label_43;
                                                 |     }
                                                 | label_19:
    0x0000c890 blx 0x1b04                        |     r0 = sprintf_chk ()
    0x0000c894 ldr r4, [r0]                      |     r4 = *(r0);
    0x0000c896 cmp r4, 2                         |     
                                                 |     if (r4 == 2) {
    0x0000c898 beq.w 0xc736                      |         goto label_16;
                                                 |     }
                                                 | label_20:
    0x0000c89c rsbs r4, r4, 0                    |     r4 -= ;
    0x0000c89e cmp r4, 0                         |     
                                                 |     if (r4 > 0) {
    0x0000c8a0 bgt.w 0xc6b8                      |         goto label_13;
                                                 |     }
                                                 |     if (r4 == 0) {
    0x0000c8a4 beq.w 0xc736                      |         goto label_16;
                                                 |     }
                                                 | label_41:
    0x0000c8a8 bl 0x7630                         |     r0 = fcn_00007630 ();
    0x0000c8ac cmp r0, 6                         |     
                                                 |     if (r0 <= 6) {
    0x0000c8ae ble.w 0xc534                      |         goto label_4;
                                                 |     }
    0x0000c8b2 ldr r2, [pc, 0x100]               |     
    0x0000c8b4 mov r1, r4                        |     r1 = r4;
    0x0000c8b6 ldr r0, [pc, 0x100]               |     
    0x0000c8b8 ldr r3, [pc, 0x100]               |     
    0x0000c8ba add r2, pc                        |     r2 = 0x19274;
    0x0000c8bc add r0, pc                        |     r0 = 0x1927a;
    0x0000c8be adds r2, 7                        |     r2 += 7;
    0x0000c8c0 add r3, pc                        |     r3 = 0x19280;
    0x0000c8c2 strd r3, r0, [sp]                 |     __asm ("strd r3, r0, [sp]");
    0x0000c8c6 movw r3, 0x2fa                    |     r3 = 0x2fa;
    0x0000c8ca movs r0, 7                        |     r0 = 7;
    0x0000c8cc bl 0x7e80                         |     fcn_00007e80 (r0, r1, r2, r3, r4);
    0x0000c8d0 b 0xc52c                          |     goto label_6;
                                                 | label_31:
    0x0000c8d2 bl 0x7630                         |     r0 = fcn_00007630 ();
    0x0000c8d6 cmp r0, 6                         |     
    0x0000c8d8 it le                             |     
                                                 |     if (r0 <= 6) {
    0x0000c8da ldrle r4, [r7, 0x10]              |         r4 = *((r7 + 0x10));
                                                 |         goto label_44;
                                                 |     }
                                                 |     if (r0 <= 6) {
                                                 | label_44:
    0x0000c8dc ble.w 0xc5ce                      |         goto label_17;
                                                 |     }
    0x0000c8e0 ldr r2, [pc, 0xdc]                |     
    0x0000c8e2 mov r1, r5                        |     r1 = r5;
    0x0000c8e4 ldr r3, [pc, 0xdc]                |     
    0x0000c8e6 movs r0, 7                        |     r0 = 7;
    0x0000c8e8 ldr.w ip, [pc, 0xdc]              |     
    0x0000c8ec add r2, pc                        |     r2 = 0x192b0;
    0x0000c8ee str r4, [sp, 8]                   |     var_8h_2 = r4;
    0x0000c8f0 add r3, pc                        |     r3 = 0x192b8;
    0x0000c8f2 adds r2, 7                        |     r2 += 7;
    0x0000c8f4 add ip, pc                        |     ip = 0x192c0;
    0x0000c8f6 str r3, [sp, 4]                   |     var_4h_2 = r3;
    0x0000c8f8 str.w ip, [sp]                    |     __asm ("str.w ip, [sp]");
    0x0000c8fc mov.w r3, 0x2b4                   |     r3 = 0x2b4;
    0x0000c900 bl 0x7e80                         |     fcn_00007e80 (r0, r1, r2, r3, r4);
    0x0000c904 ldr r4, [r7, 0x10]                |     r4 = var_10h_3;
    0x0000c906 b 0xc5ce                          |     goto label_17;
                                                 | label_32:
    0x0000c908 mov r0, r4                        |     r0 = r4;
    0x0000c90a movs r5, 0x19                     |     r5 = 0x19;
    0x0000c90c blx 0x18cc                        |     fcn_000018cc ();
    0x0000c910 b 0xc52c                          |     goto label_6;
                                                 | label_40:
    0x0000c912 ldr r2, [pc, 0xb8]                |     
    0x0000c914 movw r3, 0x2e9                    |     r3 = 0x2e9;
    0x0000c918 ldr r5, [pc, 0xb4]                |     
    0x0000c91a mov r1, r4                        |     r1 = r4;
    0x0000c91c ldr r0, [pc, 0xb4]                |     
    0x0000c91e add r2, pc                        |     r2 = 0x192f0;
    0x0000c920 add r5, pc                        |     r5 = 0x192f4;
    0x0000c922 adds r2, 7                        |     r2 += 7;
    0x0000c924 add r0, pc                        |     r0 = 0x192fc;
    0x0000c926 strd r0, r5, [sp]                 |     __asm ("strd r0, r5, [sp]");
    0x0000c92a movs r0, 7                        |     r0 = 7;
    0x0000c92c bl 0x7e80                         |     fcn_00007e80 (r0, r1, r2, r3, r4);
    0x0000c930 b 0xc862                          |     goto label_18;
                                                 | label_42:
    0x0000c932 ldr r0, [pc, 0xa4]                |     
    0x0000c934 mov r1, r4                        |     r1 = r4;
    0x0000c936 add r0, pc                        |     r0 = 0x19314;
    0x0000c938 blx 0x1bac                        |     r0 = writev ();
    0x0000c93c cmp r0, 0                         |     
                                                 |     if (r0 < 0) {
    0x0000c93e blt 0xc890                        |         goto label_19;
                                                 |     }
    0x0000c940 ldr r0, [pc, 0x98]                |     
    0x0000c942 mov r1, r4                        |     r1 = r4;
    0x0000c944 add r0, pc                        |     r0 = 0x19324;
    0x0000c946 blx 0x1bac                        |     r0 = writev ();
    0x0000c94a cmp r0, 0                         |     
                                                 |     if (r0 >= 0) {
    0x0000c94c bge.w 0xc736                      |         goto label_16;
                                                 |     }
                                                 | label_21:
    0x0000c950 blx 0x1b04                        |     r0 = sprintf_chk ()
    0x0000c954 ldr r4, [r0]                      |     r4 = *(r0);
    0x0000c956 cmp r4, 2                         |     
                                                 |     if (r4 != 2) {
    0x0000c958 bne 0xc89c                        |         goto label_20;
                                                 |     }
    0x0000c95a b 0xc6b8                          |     goto label_13;
                                                 | label_22:
    0x0000c95c blx 0x1954                        |     parse_printf_format ();
                                                 | label_43:
    0x0000c960 ldr r0, [pc, 0x7c]                |     
    0x0000c962 mov r1, r5                        |     r1 = r5;
    0x0000c964 add r0, pc                        |     r0 = 0x19348;
    0x0000c966 blx 0x1bac                        |     r0 = writev ();
    0x0000c96a cmp r0, 0                         |     
                                                 |     if (r0 == 0) {
    0x0000c96c beq.w 0xc6b8                      |         goto label_13;
                                                 |     }
                                                 |     if (r0 >= 0) {
    0x0000c970 bge 0xc97c                        |         goto label_45;
                                                 |     }
    0x0000c972 blx 0x1b04                        |     r0 = sprintf_chk ()
    0x0000c976 ldr r4, [r0]                      |     r4 = *(r0);
    0x0000c978 cmp r4, 2                         |     
                                                 |     if (r4 != 2) {
    0x0000c97a bne 0xc89c                        |         goto label_20;
                                                 |     }
                                                 | label_45:
    0x0000c97c ldr r0, [pc, 0x64]                |     
    0x0000c97e movs r1, 0                        |     r1 = 0;
    0x0000c980 add r0, pc                        |     r0 = 0x19368;
    0x0000c982 blx 0x1bac                        |     r0 = writev ();
    0x0000c986 cmp r0, 0                         |     
                                                 |     if (r0 < 0) {
    0x0000c988 blt 0xc950                        |         goto label_21;
                                                 |     }
    0x0000c98a b 0xc736                          |     goto label_16;
                                                 | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/udev/scsi_id @ 0xca50 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.0000ca50 ()                  | void fcn_0000ca50 () {
    0x0000ca50 ldr r0, [pc, 0x78]            |     
    0x0000ca52 push {r4, r5, r6, lr}         |     
    0x0000ca54 sub sp, 8                     |     
    0x0000ca56 ldr r4, [pc, 0x78]            |     r4 = *(0xcad2);
    0x0000ca58 add r0, pc                    |     r0 = 0x19528;
    0x0000ca5a blx 0x1c78                    |     fseek (r0, r1, r2);
    0x0000ca5e ldr r3, [r4, r0]              |     r3 = *(0xcad2);
    0x0000ca60 cmp r3, 0                     |     
                                             |     if (r3 >= 0) {
    0x0000ca62 blt 0xca70                    |         
    0x0000ca64 ite ne                        |         
                                             |         if (r3 == 0) {
    0x0000ca66 movne r5, 1                   |             r5 = 1;
                                             |         }
                                             |         if (r3 != 0) {
    0x0000ca68 moveq r5, 0                   |             r5 = 0;
                                             |         }
    0x0000ca6a mov r0, r5                    |         r0 = r5;
    0x0000ca6c add sp, 8                     |         
    0x0000ca6e pop {r4, r5, r6, pc}          |         
                                             |     }
    0x0000ca70 ldr r0, [pc, 0x64]            |     
    0x0000ca72 movs r1, 0                    |     r1 = 0;
    0x0000ca74 add r0, pc                    |     r0 = 0x19550;
    0x0000ca76 blx 0x1bac                    |     r0 = writev ();
    0x0000ca7a cmp r0, 0                     |     
    0x0000ca7c itt ge                        |     
                                             |     if (r0 < 0) {
    0x0000ca7e movge r6, 1                   |         r6 = 1;
                                             |     }
                                             |     if (r0 < 0) {
    0x0000ca80 movge r5, r6                  |         r5 = r6;
                                             |     }
    0x0000ca82 blt 0xca94                    |     
                                             |     while (1) {
    0x0000ca84 ldr r0, [pc, 0x4c]            |         
    0x0000ca86 add r0, pc                    |         r0 = 0x1955e;
    0x0000ca88 blx 0x1c78                    |         fseek (r0, r1, r2);
    0x0000ca8c str r6, [r4, r0]              |         *((r4 + r0)) = r6;
    0x0000ca8e mov r0, r5                    |         r0 = r5;
    0x0000ca90 add sp, 8                     |         
    0x0000ca92 pop {r4, r5, r6, pc}          |         
    0x0000ca94 blx 0x1b04                    |         r0 = sprintf_chk ()
    0x0000ca98 ldr r5, [r0]                  |         r5 = *(r0);
    0x0000ca9a cmp r5, 2                     |         
                                             |         if (r5 != 2) {
    0x0000ca9c beq 0xcaa6                    |             
    0x0000ca9e bl 0x7630                     |             r0 = fcn_00007630 ();
    0x0000caa2 cmp r0, 6                     |             
                                             |             if (r0 > 6) {
    0x0000caa4 bgt 0xcaac                    |                 goto label_1;
                                             |             }
                                             |         }
                                             | label_0:
    0x0000caa6 movs r6, 0                    |         r6 = 0;
    0x0000caa8 mov r5, r6                    |         r5 = r6;
    0x0000caaa b 0xca84                      |         
                                             |     }
                                             | label_1:
    0x0000caac ldr r2, [pc, 0x2c]            |     
    0x0000caae mov r1, r5                    |     r1 = r5;
    0x0000cab0 ldr r0, [pc, 0x2c]            |     
    0x0000cab2 ldr r3, [pc, 0x30]            |     
    0x0000cab4 add r2, pc                    |     r2 = 0x19594;
    0x0000cab6 add r0, pc                    |     r0 = 0x1959a;
    0x0000cab8 adds r2, 7                    |     r2 += 7;
    0x0000caba add r3, pc                    |     r3 = 0x195a4;
    0x0000cabc strd r3, r0, [sp]             |     __asm ("strd r3, r0, [sp]");
    0x0000cac0 movs r3, 0x90                 |     r3 = 0x90;
    0x0000cac2 movs r0, 7                    |     r0 = 7;
    0x0000cac4 bl 0x7e80                     |     fcn_00007e80 (r0, r1, r2, r3, r4);
    0x0000cac8 b 0xcaa6                      |     goto label_0;
                                             | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/udev/scsi_id @ 0xcae8 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.0000cae8 ()                      | void fcn_0000cae8 (uint32_t arg1) {
                                                 |     int16_t var_0h;
                                                 |     int16_t var_4h;
                                                 |     int16_t var_8h;
                                                 |     int16_t var_ch;
                                                 |     int16_t var_10h;
                                                 |     int16_t var_6ch;
                                                 |     r0 = arg1;
    0x0000cae8 ldr r2, [pc, 0x2f4]               |     
    0x0000caea ldr r3, [pc, 0x2f8]               |     r3 = *(0xcde6);
    0x0000caec push {r4, r5, r6, r7, lr}         |     
    0x0000caee sub sp, 0x74                      |     
    0x0000caf0 add r2, pc                        |     r2 = 0x198d4;
    0x0000caf2 ldr r3, [r2, r3]                  |     
    0x0000caf4 ldr r3, [r3]                      |     r3 = *(0x198d4);
    0x0000caf6 str r3, [sp, 0x6c]                |     var_6ch = r3;
    0x0000caf8 mov.w r3, 0                       |     r3 = 0;
    0x0000cafc cmp r0, 0                         |     
                                                 |     if (r0 == 0) {
    0x0000cafe beq 0xcb6c                        |         goto label_10;
                                                 |     }
    0x0000cb00 ldr r0, [pc, 0x2bc]               |     
    0x0000cb02 ldr r4, [pc, 0x2c0]               |     r4 = *(0xcdc6);
    0x0000cb04 add r0, pc                        |     r0 = 0x198c8;
    0x0000cb06 blx 0x1c78                        |     fseek (r0, r1, r2);
    0x0000cb0a mov.w r3, -1                      |     r3 = -1;
    0x0000cb0e str r3, [r4, r0]                  |     *((r4 + r0)) = r3;
                                                 |     do {
    0x0000cb10 ldr r0, [pc, 0x2d4]               |         
    0x0000cb12 add r7, sp, 0x10                  |         r7 += var_10h;
    0x0000cb14 mov r1, r7                        |         r1 = r7;
    0x0000cb16 add r0, pc                        |         r0 = 0x19902;
    0x0000cb18 blx 0x1c24                        |         r0 = flockfile ();
    0x0000cb1c cmp r0, 0                         |         
                                                 |         if (r0 < 0) {
    0x0000cb1e blt 0xcb7e                        |             goto label_11;
                                                 |         }
    0x0000cb20 ldr r5, [sp, 0x10]                |         r5 = var_10h;
    0x0000cb22 movw r6, 0x7270                   |         
    0x0000cb26 movt r6, 0x6367                   |         r6 = 0x63677270;
    0x0000cb2a cmp r5, r6                        |         
                                                 |         if (r5 == r6) {
    0x0000cb2c beq 0xcba2                        |             goto label_12;
                                                 |         }
    0x0000cb2e movw r3, 0x1994                   |         
    0x0000cb32 movt r3, 0x102                    |         r3 = 0xNaN;
    0x0000cb36 cmp r5, r3                        |         
                                                 |         if (r5 == r3) {
    0x0000cb38 beq 0xcc36                        |             goto label_13;
                                                 |         }
    0x0000cb3a bl 0x7630                         |         fcn_00007630 ();
    0x0000cb3e movw r3, 0x6572                   |         
    0x0000cb42 movt r3, 0x6265                   |         r3 = 0x62656572;
    0x0000cb46 cmp r5, r3                        |         
                                                 |         if (r5 == r3) {
    0x0000cb48 beq 0xcc0a                        |             goto label_14;
                                                 |         }
    0x0000cb4a cmp r0, 6                         |         
                                                 |         if (r0 > 6) {
    0x0000cb4c bgt 0xcbdc                        |             goto label_15;
                                                 |         }
                                                 | label_2:
    0x0000cb4e mvn r0, 0x7a                      |         r0 = ~0x7a;
                                                 | label_0:
    0x0000cb52 ldr r2, [pc, 0x298]               |         
    0x0000cb54 ldr r3, [pc, 0x28c]               |         r3 = *(0xcde4);
    0x0000cb56 add r2, pc                        |         r2 = 0x19948;
    0x0000cb58 ldr r3, [r2, r3]                  |         r3 = *(0x19948);
    0x0000cb5a ldr r2, [r3]                      |         r2 = *(0x19948);
    0x0000cb5c ldr r3, [sp, 0x6c]                |         r3 = var_6ch;
    0x0000cb5e eors r2, r3                       |         r2 ^= r3;
    0x0000cb60 mov.w r3, 0                       |         r3 = 0;
                                                 |         if (r2 != r3) {
    0x0000cb64 bne.w 0xcd94                      |             goto label_16;
                                                 |         }
    0x0000cb68 add sp, 0x74                      |         
    0x0000cb6a pop {r4, r5, r6, r7, pc}          |         
                                                 | label_10:
    0x0000cb6c ldr r0, [pc, 0x258]               |         
    0x0000cb6e ldr r4, [pc, 0x254]               |         r4 = *(0xcdc6);
    0x0000cb70 add r0, pc                        |         r0 = 0x1993c;
    0x0000cb72 blx 0x1c78                        |         fseek (r0, r1, r2);
    0x0000cb76 ldr r0, [r4, r0]                  |         r0 = *(0xcdc6);
    0x0000cb78 cmp r0, 0                         |         
    0x0000cb7a blt 0xcb10                        |         
                                                 |     } while (r0 < 0);
    0x0000cb7c b 0xcb52                          |     goto label_0;
                                                 | label_11:
    0x0000cb7e blx 0x1b04                        |     r0 = sprintf_chk ()
    0x0000cb82 ldr r4, [r0]                      |     r4 = *(r0);
    0x0000cb84 bl 0x7630                         |     r0 = fcn_00007630 ();
    0x0000cb88 cmp r0, 6                         |     
                                                 |     if (r0 > 6) {
    0x0000cb8a bgt 0xcbbc                        |         goto label_17;
                                                 |     }
                                                 | label_5:
    0x0000cb8c eor.w r0, r4, r4, asr 31          |     r0 = r4 ^ (r4 >> 31);
    0x0000cb90 sub.w r0, r0, r4, asr 31          |     r0 -= (r4 >> 31);
    0x0000cb94 uxtb r0, r0                       |     r0 = (int8_t) r0;
    0x0000cb96 rsbs r0, r0, 0                    |     r0 -= ;
                                                 | label_1:
    0x0000cb98 cmp r0, 0                         |     
                                                 |     if (r0 < 0) {
    0x0000cb9a blt 0xcb52                        |         goto label_0;
                                                 |     }
                                                 |     do {
                                                 | label_3:
    0x0000cb9c mvn r0, 0x55                      |         r0 = ~0x55;
    0x0000cba0 b 0xcb52                          |         goto label_0;
                                                 | label_12:
    0x0000cba2 bl 0x7630                         |         r0 = fcn_00007630 ();
    0x0000cba6 cmp r0, 6                         |         
                                                 |         if (r0 > 6) {
    0x0000cba8 bgt 0xcc8c                        |             goto label_18;
                                                 |         }
                                                 | label_4:
    0x0000cbaa ldr r0, [pc, 0x220]               |         
    0x0000cbac add r0, pc                        |         r0 = 0x1997e;
    0x0000cbae blx 0x1c78                        |         fseek (r0, r1, r2);
    0x0000cbb2 movs r3, 2                        |         r3 = 2;
    0x0000cbb4 mov r2, r0                        |         r2 = r0;
    0x0000cbb6 str r3, [r4, r2]                  |         *((r4 + r2)) = r3;
    0x0000cbb8 mov r0, r3                        |         r0 = r3;
    0x0000cbba b 0xcb52                          |         goto label_0;
                                                 | label_17:
    0x0000cbbc ldr r2, [pc, 0x230]               |         
    0x0000cbbe movw r3, 0x7fc                    |         r3 = 0x7fc;
    0x0000cbc2 ldr r5, [pc, 0x230]               |         
    0x0000cbc4 ldr r0, [pc, 0x230]               |         
    0x0000cbc6 add r2, pc                        |         r2 = 0x199ba;
    0x0000cbc8 add r5, pc                        |         r5 = 0x199c2;
    0x0000cbca add r0, pc                        |         r0 = 0x199c6;
                                                 | label_6:
    0x0000cbcc strd r0, r5, [sp]                 |         __asm ("strd r0, r5, [sp]");
    0x0000cbd0 mov r1, r4                        |         r1 = r4;
    0x0000cbd2 adds r2, 7                        |         r2 += 7;
    0x0000cbd4 movs r0, 7                        |         r0 = 7;
    0x0000cbd6 bl 0x7e80                         |         fcn_00007e80 (r0, r1, r2, r3, r4);
    0x0000cbda b 0xcb98                          |         goto label_1;
                                                 | label_15:
    0x0000cbdc ldr r2, [pc, 0x21c]               |         
    0x0000cbde asrs r6, r5, 0x1f                 |         r6 = r5 >> 0x1f;
    0x0000cbe0 ldr r0, [pc, 0x21c]               |         
    0x0000cbe2 movs r1, 0x7b                     |         r1 = 0x7b;
    0x0000cbe4 ldr r4, [pc, 0x21c]               |         
    0x0000cbe6 movw r3, 0x822                    |         r3 = 0x822;
    0x0000cbea add r2, pc                        |         r2 = 0x199ea;
    0x0000cbec movt r1, 0x4000                   |         r1 = (r1 & 0xFFFF) | 0x40000000;
    0x0000cbf0 add r0, pc                        |         r0 = 0x199f4;
    0x0000cbf2 adds r2, 7                        |         r2 += 7;
    0x0000cbf4 add r4, pc                        |         r4 = 0x199fc;
    0x0000cbf6 str r0, [sp, 4]                   |         var_4h = r0;
    0x0000cbf8 str r5, [sp, 8]                   |         var_8h = r5;
    0x0000cbfa movs r0, 7                        |         r0 = 7;
    0x0000cbfc str r6, [sp, 0xc]                 |         var_ch = r6;
    0x0000cbfe str r4, [sp]                      |         *(sp) = r4;
    0x0000cc00 bl 0x7e80                         |         r0 = fcn_00007e80 (r0, r1, r2, r3, r4);
    0x0000cc04 cmp r0, 0                         |         
    0x0000cc06 bge 0xcb9c                        |         
                                                 |     } while (r0 >= 0);
    0x0000cc08 b 0xcb52                          |     goto label_0;
                                                 | label_14:
    0x0000cc0a cmp r0, 6                         |     
                                                 |     if (r0 <= 6) {
    0x0000cc0c ble 0xcb4e                        |         goto label_2;
                                                 |     }
    0x0000cc0e ldr r2, [pc, 0x1f8]               |     
    0x0000cc10 movs r1, 0x7b                     |     r1 = 0x7b;
    0x0000cc12 ldr r0, [pc, 0x1f8]               |     
    0x0000cc14 movw r3, 0x81f                    |     r3 = 0x81f;
    0x0000cc18 ldr r4, [pc, 0x1f4]               |     
    0x0000cc1a movt r1, 0x4000                   |     r1 = (r1 & 0xFFFF) | 0x40000000;
    0x0000cc1e add r2, pc                        |     r2 = 0x19a2c;
    0x0000cc20 add r0, pc                        |     r0 = 0x19a32;
    0x0000cc22 adds r2, 7                        |     r2 += 7;
    0x0000cc24 add r4, pc                        |     r4 = 0x19a38;
    0x0000cc26 str r0, [sp, 4]                   |     var_4h = r0;
    0x0000cc28 str r4, [sp]                      |     *(sp) = r4;
    0x0000cc2a movs r0, 7                        |     r0 = 7;
    0x0000cc2c bl 0x7e80                         |     r0 = fcn_00007e80 (r0, r1, r2, r3, r4);
    0x0000cc30 cmp r0, 0                         |     
                                                 |     if (r0 >= 0) {
    0x0000cc32 bge 0xcb9c                        |         goto label_3;
                                                 |     }
    0x0000cc34 b 0xcb52                          |     goto label_0;
                                                 | label_13:
    0x0000cc36 ldr r0, [pc, 0x1dc]               |     
    0x0000cc38 mov r1, r7                        |     r1 = r7;
    0x0000cc3a add r0, pc                        |     r0 = 0x19a54;
    0x0000cc3c blx 0x1c24                        |     r0 = flockfile ();
    0x0000cc40 mov r5, r0                        |     r5 = r0;
                                                 |     if (r0 == 0) {
    0x0000cc42 cbnz r0, 0xcc4a                   |         
    0x0000cc44 ldr r3, [sp, 0x10]                |         r3 = var_10h;
    0x0000cc46 cmp r3, r6                        |         
                                                 |         if (r3 == r6) {
    0x0000cc48 beq 0xccd2                        |             goto label_19;
                                                 |         }
                                                 |     }
    0x0000cc4a ldr r0, [pc, 0x1cc]               |     
    0x0000cc4c mov r1, r7                        |     r1 = r7;
    0x0000cc4e add r0, pc                        |     r0 = 0x19a6c;
    0x0000cc50 blx 0x1c24                        |     r0 = flockfile ();
    0x0000cc54 cmp r0, 0                         |     
                                                 |     if (r0 >= 0) {
    0x0000cc56 blt 0xccac                        |         
    0x0000cc58 ldr r5, [sp, 0x10]                |         r5 = var_10h;
    0x0000cc5a bl 0x7630                         |         fcn_00007630 ();
    0x0000cc5e movw r3, 0x7270                   |         
    0x0000cc62 movt r3, 0x6367                   |         r3 = 0x63677270;
    0x0000cc66 cmp r5, r3                        |         
                                                 |         if (r5 == r3) {
    0x0000cc68 beq 0xccf0                        |             goto label_20;
                                                 |         }
    0x0000cc6a movw r3, 0xe0eb                   |         
    0x0000cc6e movt r3, 0x27                     |         r3 = 0x27e0eb;
    0x0000cc72 cmp r5, r3                        |         
                                                 |         if (r5 == r3) {
    0x0000cc74 beq 0xcd0a                        |             goto label_21;
                                                 |         }
    0x0000cc76 cmp r0, 6                         |         
                                                 |         if (r0 > 6) {
    0x0000cc78 bgt 0xcd4e                        |             goto label_22;
                                                 |         }
                                                 | label_7:
    0x0000cc7a ldr r0, [pc, 0x154]               |         
    0x0000cc7c add r0, pc                        |         r0 = 0x19a52;
    0x0000cc7e blx 0x1c78                        |         fseek (r0, r1, r2);
    0x0000cc82 movs r2, 0                        |         r2 = 0;
    0x0000cc84 mov r3, r0                        |         r3 = r0;
    0x0000cc86 str r2, [r4, r3]                  |         *((r4 + r3)) = r2;
    0x0000cc88 mov r0, r2                        |         r0 = r2;
    0x0000cc8a b 0xcb52                          |         goto label_0;
                                                 | label_18:
    0x0000cc8c ldr r2, [pc, 0x18c]               |         
    0x0000cc8e movw r3, 0x7ff                    |         r3 = 0x7ff;
    0x0000cc92 ldr r0, [pc, 0x18c]               |         
    0x0000cc94 ldr r1, [pc, 0x18c]               |         
    0x0000cc96 add r2, pc                        |         r2 = 0x19ab6;
    0x0000cc98 add r0, pc                        |         r0 = 0x19abe;
    0x0000cc9a adds r2, 7                        |         r2 += 7;
    0x0000cc9c add r1, pc                        |         r1 = 0x19ac4;
    0x0000cc9e strd r1, r0, [sp]                 |         __asm ("strd r1, r0, [sp]");
    0x0000cca2 movs r1, 0                        |         r1 = 0;
    0x0000cca4 movs r0, 7                        |         r0 = 7;
    0x0000cca6 bl 0x7e80                         |         fcn_00007e80 (r0, r1, r2, r3, r4);
    0x0000ccaa b 0xcbaa                          |         goto label_4;
                                                 |     }
    0x0000ccac blx 0x1b04                        |     r0 = sprintf_chk ()
    0x0000ccb0 ldr r4, [r0]                      |     r4 = *(r0);
    0x0000ccb2 bl 0x7630                         |     fcn_00007630 ();
    0x0000ccb6 cmp r4, 2                         |     
                                                 |     if (r4 == 2) {
    0x0000ccb8 beq 0xcd98                        |         goto label_23;
                                                 |     }
    0x0000ccba cmp r0, 6                         |     
                                                 |     if (r0 <= 6) {
    0x0000ccbc ble.w 0xcb8c                      |         goto label_5;
                                                 |     }
    0x0000ccc0 ldr r2, [pc, 0x164]               |     
    0x0000ccc2 movw r3, 0x80e                    |     r3 = 0x80e;
    0x0000ccc6 ldr r5, [pc, 0x164]               |     
    0x0000ccc8 ldr r0, [pc, 0x164]               |     
    0x0000ccca add r2, pc                        |     r2 = 0x19af6;
    0x0000cccc add r5, pc                        |     r5 = 0x19afe;
    0x0000ccce add r0, pc                        |     r0 = 0x19b02;
    0x0000ccd0 b 0xcbcc                          |     goto label_6;
                                                 | label_19:
    0x0000ccd2 bl 0x7630                         |     r0 = fcn_00007630 ();
    0x0000ccd6 cmp r0, 6                         |     
                                                 |     if (r0 > 6) {
    0x0000ccd8 bgt 0xcd2e                        |         goto label_24;
                                                 |     }
                                                 | label_8:
    0x0000ccda ldr r0, [pc, 0xf8]                |     
    0x0000ccdc add r0, pc                        |     r0 = 0x19ab6;
    0x0000ccde blx 0x1c78                        |     fseek (r0, r1, r2);
    0x0000cce2 ldr r2, [pc, 0xf4]                |     r2 = *(0xcdda);
    0x0000cce4 mov r3, r0                        |     r3 = r0;
    0x0000cce6 movs r1, 0                        |     r1 = 0;
    0x0000cce8 movs r0, 1                        |     r0 = 1;
    0x0000ccea str r0, [r4, r3]                  |     *((r4 + r3)) = r0;
    0x0000ccec strb r1, [r2, r3]                 |     *((r2 + r3)) = r1;
    0x0000ccee b 0xcb52                          |     goto label_0;
                                                 | label_20:
    0x0000ccf0 cmp r0, 6                         |     
                                                 |     if (r0 > 6) {
    0x0000ccf2 bgt 0xcd74                        |         goto label_25;
                                                 |     }
                                                 | label_9:
    0x0000ccf4 ldr r0, [pc, 0xe4]                |     
    0x0000ccf6 add r0, pc                        |     r0 = 0x19ad6;
    0x0000ccf8 blx 0x1c78                        |     fseek (r0, r1, r2);
    0x0000ccfc ldr r1, [pc, 0xd8]                |     r1 = *(0xcdd8);
    0x0000ccfe movs r2, 1                        |     r2 = 1;
    0x0000cd00 mov r3, r0                        |     r3 = r0;
    0x0000cd02 mov r0, r2                        |     r0 = r2;
    0x0000cd04 str r2, [r4, r3]                  |     *((r4 + r3)) = r2;
    0x0000cd06 strb r2, [r1, r3]                 |     *((r1 + r3)) = r2;
    0x0000cd08 b 0xcb52                          |     goto label_0;
                                                 | label_21:
    0x0000cd0a cmp r0, 6                         |     
                                                 |     if (r0 <= 6) {
    0x0000cd0c ble 0xcc7a                        |         goto label_7;
                                                 |     }
    0x0000cd0e ldr r2, [pc, 0x124]               |     
    0x0000cd10 movw r3, 0x816                    |     r3 = 0x816;
    0x0000cd14 ldr r0, [pc, 0x120]               |     
    0x0000cd16 ldr r1, [pc, 0x124]               |     
    0x0000cd18 add r2, pc                        |     r2 = 0x19b52;
    0x0000cd1a add r0, pc                        |     r0 = 0x19b56;
    0x0000cd1c adds r2, 7                        |     r2 += 7;
    0x0000cd1e add r1, pc                        |     r1 = 0x19b60;
    0x0000cd20 strd r1, r0, [sp]                 |     __asm ("strd r1, r0, [sp]");
    0x0000cd24 movs r1, 0                        |     r1 = 0;
    0x0000cd26 movs r0, 7                        |     r0 = 7;
    0x0000cd28 bl 0x7e80                         |     fcn_00007e80 (r0, r1, r2, r3, r4);
    0x0000cd2c b 0xcc7a                          |     goto label_7;
                                                 | label_24:
    0x0000cd2e ldr r2, [pc, 0x110]               |     
    0x0000cd30 mov r1, r5                        |     r1 = r5;
    0x0000cd32 ldr r0, [pc, 0x110]               |     
    0x0000cd34 ldr r3, [pc, 0x110]               |     
    0x0000cd36 add r2, pc                        |     r2 = 0x19b7c;
    0x0000cd38 add r0, pc                        |     r0 = 0x19b82;
    0x0000cd3a adds r2, 7                        |     r2 += 7;
    0x0000cd3c add r3, pc                        |     r3 = 0x19b88;
    0x0000cd3e strd r3, r0, [sp]                 |     __asm ("strd r3, r0, [sp]");
    0x0000cd42 movw r3, 0x804                    |     r3 = 0x804;
    0x0000cd46 movs r0, 7                        |     r0 = 7;
    0x0000cd48 bl 0x7e80                         |     fcn_00007e80 (r0, r1, r2, r3, r4);
    0x0000cd4c b 0xccda                          |     goto label_8;
                                                 | label_22:
    0x0000cd4e ldr r2, [pc, 0xfc]                |     
    0x0000cd50 asrs r3, r5, 0x1f                 |     r3 = r5 >> 0x1f;
    0x0000cd52 ldr r0, [pc, 0xfc]                |     
    0x0000cd54 ldr r1, [pc, 0xfc]                |     
    0x0000cd56 add r2, pc                        |     r2 = 0x19ba8;
    0x0000cd58 str r3, [sp, 0xc]                 |     var_ch = r3;
    0x0000cd5a add r0, pc                        |     r0 = 0x19bb0;
    0x0000cd5c adds r2, 7                        |     r2 += 7;
    0x0000cd5e add r1, pc                        |     r1 = 0x19bb6;
    0x0000cd60 movw r3, 0x819                    |     r3 = 0x819;
    0x0000cd64 strd r1, r0, [sp]                 |     __asm ("strd r1, r0, [sp]");
    0x0000cd68 movs r1, 0                        |     r1 = 0;
    0x0000cd6a str r5, [sp, 8]                   |     var_8h = r5;
    0x0000cd6c movs r0, 7                        |     r0 = 7;
    0x0000cd6e bl 0x7e80                         |     fcn_00007e80 (r0, r1, r2, r3, r4);
    0x0000cd72 b 0xcc7a                          |     goto label_7;
                                                 | label_25:
    0x0000cd74 ldr r2, [pc, 0xe0]                |     
    0x0000cd76 movw r3, 0x812                    |     r3 = 0x812;
    0x0000cd7a ldr r0, [pc, 0xe0]                |     
    0x0000cd7c ldr r1, [pc, 0xe0]                |     
    0x0000cd7e add r2, pc                        |     r2 = 0x19bda;
    0x0000cd80 add r0, pc                        |     r0 = 0x19be2;
    0x0000cd82 adds r2, 7                        |     r2 += 7;
    0x0000cd84 add r1, pc                        |     r1 = 0x19be8;
    0x0000cd86 strd r1, r0, [sp]                 |     __asm ("strd r1, r0, [sp]");
    0x0000cd8a movs r1, 0                        |     r1 = 0;
    0x0000cd8c movs r0, 7                        |     r0 = 7;
    0x0000cd8e bl 0x7e80                         |     fcn_00007e80 (r0, r1, r2, r3, r4);
    0x0000cd92 b 0xccf4                          |     goto label_9;
                                                 | label_16:
    0x0000cd94 blx 0x1954                        |     r0 = parse_printf_format ();
                                                 | label_23:
    0x0000cd98 cmp r0, 6                         |     
                                                 |     if (r0 <= 6) {
    0x0000cd9a ble.w 0xcb4e                      |         goto label_2;
                                                 |     }
    0x0000cd9e ldr r2, [pc, 0xc4]                |     
    0x0000cda0 movw r3, 0x80b                    |     r3 = 0x80b;
    0x0000cda4 ldr r5, [pc, 0xc0]                |     
    0x0000cda6 mov r1, r4                        |     r1 = r4;
    0x0000cda8 ldr r0, [pc, 0xc0]                |     
    0x0000cdaa add r2, pc                        |     r2 = 0x19c14;
    0x0000cdac add r5, pc                        |     r5 = 0x19c18;
    0x0000cdae adds r2, 7                        |     r2 += 7;
    0x0000cdb0 add r0, pc                        |     r0 = 0x19c20;
    0x0000cdb2 strd r0, r5, [sp]                 |     __asm ("strd r0, r5, [sp]");
    0x0000cdb6 movs r0, 7                        |     r0 = 7;
    0x0000cdb8 bl 0x7e80                         |     fcn_00007e80 (r0, r1, r2, r3, r4);
    0x0000cdbc b 0xcb4e                          |     goto label_2;
                                                 | }

[*] Function sprintf used 57 times scsi_id