[*] Binary protection state of cdrom_id

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


[*] Function sprintf tear down of cdrom_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/cdrom_id @ 0x22e4 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.000022e4 ()                  | void fcn_000022e4 (int16_t arg1, int16_t arg2) {
                                             |     int16_t var_0h;
                                             |     int16_t var_4h;
                                             |     r0 = arg1;
                                             |     r1 = arg2;
    0x000022e4 push {r4, r5, lr}             |     
    0x000022e6 movs r2, 8                    |     r2 = 8;
    0x000022e8 sub sp, 0xc                   |     
    0x000022ea mov r5, r1                    |     r5 = r1;
    0x000022ec movw r1, 0x5321               |     r1 = 0x5321;
    0x000022f0 mov r4, r0                    |     r4 = r0;
    0x000022f2 blx 0x1cac                    |     r0 = fcn_00001cac ();
    0x000022f6 cmp r0, 0                     |     
    0x000022f8 blt 0x2312                    |     
                                             |     while (r0 <= 6) {
                                             | label_0:
    0x000022fa mov r2, r5                    |         r2 = r5;
    0x000022fc movw r1, 0x5329               |         r1 = 0x5329;
    0x00002300 mov r0, r4                    |         r0 = r4;
    0x00002302 blx 0x1cac                    |         r0 = fcn_00001cac ();
    0x00002306 cmp r0, 0                     |         
    0x00002308 it ge                         |         
                                             |         if (r0 < 0) {
    0x0000230a movge r0, 0                   |             r0 = 0;
                                             |         }
                                             |         if (r0 < 0) {
    0x0000230c blt 0x233c                    |             goto label_2;
                                             |         }
                                             | label_1:
    0x0000230e add sp, 0xc                   |         
    0x00002310 pop {r4, r5, pc}              |         
    0x00002312 bl 0x7be0                     |         r0 = fcn_00007be0 ();
    0x00002316 cmp r0, 6                     |         
    0x00002318 ble 0x22fa                    |         
                                             |     }
    0x0000231a blx 0x1de8                    |     sprintf_chk ()
    0x0000231e ldr r3, [pc, 0x60]            |     
    0x00002320 ldr r2, [pc, 0x60]            |     
    0x00002322 add r3, pc                    |     r3 = 0x46a8;
    0x00002324 str r3, [sp, 4]               |     var_4h = r3;
    0x00002326 add r2, pc                    |     r2 = 0x46ae;
    0x00002328 ldr r3, [pc, 0x5c]            |     
    0x0000232a adds r2, 7                    |     r2 += 7;
    0x0000232c add r3, pc                    |     r3 = 0x46b8;
    0x0000232e str r3, [sp]                  |     *(sp) = r3;
    0x00002330 movs r3, 0xec                 |     r3 = 0xec;
    0x00002332 ldr r1, [r0]                  |     r1 = *(r0);
    0x00002334 movs r0, 7                    |     r0 = 7;
    0x00002336 bl 0x8430                     |     fcn_00008430 (r0, r1, r2, r3, r4);
    0x0000233a b 0x22fa                      |     goto label_0;
                                             | label_2:
    0x0000233c blx 0x1de8                    |     r0 = sprintf_chk ()
    0x00002340 ldr r4, [r0]                  |     r4 = *(r0);
    0x00002342 bl 0x7be0                     |     r0 = fcn_00007be0 ();
    0x00002346 cmp r0, 6                     |     
                                             |     if (r0 > 6) {
    0x00002348 bgt 0x2360                    |         goto label_3;
                                             |     }
    0x0000234a eor.w r0, r4, r4, asr 31      |     r0 = r4 ^ (r4 >> 31);
    0x0000234e sub.w r0, r0, r4, asr 31      |     r0 -= (r4 >> 31);
    0x00002352 uxtb r0, r0                   |     r0 = (int8_t) r0;
    0x00002354 rsbs r0, r0, 0                |     r0 -= ;
                                             |     do {
    0x00002356 cmp r0, 0                     |         
    0x00002358 it ge                         |         
                                             |         if (r0 < 0) {
    0x0000235a mvnge r0, 0x55                |             r0 = ~0x55;
                                             |         }
    0x0000235e b 0x230e                      |         goto label_1;
                                             | label_3:
    0x00002360 ldr r2, [pc, 0x28]            |         
    0x00002362 movs r3, 0xef                 |         r3 = 0xef;
    0x00002364 ldr r5, [pc, 0x28]            |         
    0x00002366 mov r1, r4                    |         r1 = r4;
    0x00002368 ldr r0, [pc, 0x28]            |         
    0x0000236a add r2, pc                    |         r2 = 0x46fa;
    0x0000236c add r5, pc                    |         r5 = 0x4700;
    0x0000236e adds r2, 7                    |         r2 += 7;
    0x00002370 add r0, pc                    |         r0 = 0x4708;
    0x00002372 strd r0, r5, [sp]             |         __asm ("strd r0, r5, [sp]");
    0x00002376 movs r0, 7                    |         r0 = 7;
    0x00002378 bl 0x8430                     |         fcn_00008430 (r0, r1, r2, r3, r4);
    0x0000237c b 0x2356                      |         
                                             |     } 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/cdrom_id @ 0x3c80 */
                                                             | #include <stdint.h>
                                                             |  
                                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                             |  
    ; (fcn) fcn.00003c80 ()                                  | void fcn_00003c80 (int16_t arg_70h, int16_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_18h;
                                                             |     int16_t var_1ch;
                                                             |     int16_t var_20h;
                                                             |     int16_t var_24h;
                                                             |     int16_t var_28h;
                                                             |     int16_t var_34h;
                                                             |     int16_t var_38h;
                                                             |     int16_t var_3ch;
                                                             |     int16_t var_40h;
                                                             |     int16_t var_44h;
                                                             |     int16_t var_48h;
                                                             |     int16_t var_4ch;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x00003c80 push.w {r4, r5, r6, r7, r8, sb, sl, lr}       |     
    0x00003c84 mov r6, r2                                    |     r6 = r2;
    0x00003c86 ldr r2, [pc, 0x2e4]                           |     
    0x00003c88 mov sb, r3                                    |     sb = r3;
    0x00003c8a sub sp, 0x50                                  |     
    0x00003c8c mov r7, r1                                    |     r7 = r1;
    0x00003c8e ldr r3, [pc, 0x2e0]                           |     r3 = *(0x3f72);
    0x00003c90 movs r5, 0                                    |     r5 = 0;
    0x00003c92 add r2, pc                                    |     r2 = 0x7c04;
    0x00003c94 ldr r1, [pc, 0x2dc]                           |     
    0x00003c96 mov r8, r0                                    |     r8 = r0;
    0x00003c98 mov r0, r5                                    |     r0 = r5;
    0x00003c9a ldr r3, [r2, r3]                              |     
    0x00003c9c ldr r2, [pc, 0x2d8]                           |     
    0x00003c9e add r1, pc                                    |     r1 = 0x7c16;
    0x00003ca0 ldr.w sl, [sp, 0x70]                          |     sl = *(arg_70h);
    0x00003ca4 ldr r3, [r3]                                  |     r3 = *(0x7c04);
    0x00003ca6 str r3, [sp, 0x4c]                            |     var_4ch = r3;
    0x00003ca8 mov.w r3, 0                                   |     r3 = 0;
    0x00003cac ldr r3, [pc, 0x2cc]                           |     
    0x00003cae add r2, pc                                    |     r2 = 0x7c2a;
    0x00003cb0 str r5, [sp, 0x28]                            |     var_28h = r5;
    0x00003cb2 strd r5, r5, [sp, 0x34]                       |     __asm ("strd r5, r5, [var_38h]");
    0x00003cb6 add r3, pc                                    |     r3 = 0x7c36;
    0x00003cb8 strd r5, r5, [sp, 0x3c]                       |     __asm ("strd r5, r5, [var_40h]");
    0x00003cbc str r3, [sp, 0x20]                            |     var_20h = r3;
    0x00003cbe ldr r3, [pc, 0x2c0]                           |     
    0x00003cc0 strd r5, r5, [sp, 0x44]                       |     __asm ("strd r5, r5, [var_48h]");
    0x00003cc4 add r3, pc                                    |     r3 = 0x7c4a;
    0x00003cc6 str r3, [sp, 0x18]                            |     var_18h = r3;
    0x00003cc8 ldr r3, [pc, 0x2b8]                           |     
    0x00003cca add r3, pc                                    |     r3 = 0x7c52;
    0x00003ccc str r3, [sp, 0x10]                            |     var_10h = r3;
    0x00003cce ldr r3, [pc, 0x2b8]                           |     
    0x00003cd0 add r3, pc                                    |     r3 = 0x7c5e;
    0x00003cd2 str r3, [sp, 8]                               |     var_8h = r3;
    0x00003cd4 ldr r3, [pc, 0x2b4]                           |     
    0x00003cd6 add r3, pc                                    |     r3 = 0x7c66;
    0x00003cd8 str r3, [sp]                                  |     *(sp) = r3;
    0x00003cda add r3, sp, 0x48                              |     r3 += var_48h;
    0x00003cdc str r3, [sp, 0x24]                            |     var_24h = r3;
    0x00003cde add r3, sp, 0x44                              |     r3 += var_44h;
    0x00003ce0 str r3, [sp, 0x1c]                            |     var_1ch = r3;
    0x00003ce2 add r3, sp, 0x40                              |     r3 += var_40h;
    0x00003ce4 str r3, [sp, 0x14]                            |     var_14h = r3;
    0x00003ce6 add r3, sp, 0x3c                              |     r3 += var_3ch;
    0x00003ce8 str r3, [sp, 0xc]                             |     var_ch = r3;
    0x00003cea add r3, sp, 0x38                              |     r3 += var_38h;
    0x00003cec str r3, [sp, 4]                               |     var_4h = r3;
    0x00003cee add r3, sp, 0x34                              |     r3 += var_34h;
    0x00003cf0 bl 0x4edc                                     |     r0 = fcn_00004edc ();
    0x00003cf4 adds r3, r0, 2                                |     r3 = r0 + 2;
                                                             |     if (r3 == r0) {
    0x00003cf6 beq.w 0x3e20                                  |         goto label_18;
                                                             |     }
    0x00003cfa cmp r0, 0                                     |     
    0x00003cfc mov r4, r0                                    |     r4 = r0;
                                                             |     if (r0 < 0) {
    0x00003cfe blt.w 0x3e1c                                  |         goto label_19;
                                                             |     }
    0x00003d00 strh r5, [r1, 4]                              |     *((r1 + 4)) = r5;
    0x00003d02 ldr r5, [sp, 0x34]                            |     r5 = var_34h;
                                                             |     if (r5 != 0) {
    0x00003d04 cbz r5, 0x3d32                                |         
    0x00003d06 mov r0, r5                                    |         r0 = r5;
    0x00003d08 blx 0x1da0                                    |         r0 = strchr (r0, r1);
    0x00003d0c cmp r0, 1                                     |         
                                                             |         if (r0 >= 1) {
    0x00003d0e bls 0x3d28                                    |             
    0x00003d10 ldrb r3, [r5]                                 |             r3 = *(r5);
    0x00003d12 cmp r3, 0x22                                  |             
                                                             |             if (r3 == 0x22) {
    0x00003d14 beq.w 0x3f52                                  |                 goto label_20;
                                                             |             }
    0x00003d16 strh r5, [r3, 8]                              |             *((r3 + 8)) = r5;
    0x00003d18 cmp r3, 0x27                                  |             
                                                             |             if (r3 != 0x27) {
    0x00003d1a bne 0x3d28                                    |                 goto label_10;
                                                             |             }
    0x00003d1c subs r0, 1                                    |             r0--;
    0x00003d1e ldrb r3, [r5, r0]                             |             r3 = *((r5 + r0));
    0x00003d20 add r0, r5                                    |             r0 += r5;
    0x00003d22 cmp r3, 0x27                                  |             
                                                             |             if (r3 == 0x27) {
    0x00003d24 beq.w 0x3f5e                                  |                 goto label_21;
                                                             |             }
                                                             |         }
                                                             | label_10:
    0x00003d28 mov r0, r5                                    |         r0 = r5;
    0x00003d2a bl 0x85e8                                     |         r0 = fcn_000085e8 ();
    0x00003d2e subs r4, r0, 0                                |         r4 = r0 - 0;
                                                             |         if (r4 < r0) {
    0x00003d30 blt 0x3e26                                    |             goto label_22;
                                                             |         }
                                                             |     }
                                                             | label_1:
    0x00003d32 cmp.w r8, 0                                   |     
                                                             |     if (r8 != 0) {
    0x00003d36 beq 0x3d4a                                    |         
                                                             | label_2:
    0x00003d38 ldr r0, [sp, 0x38]                            |         r0 = var_38h;
                                                             |         if (r0 == 0) {
    0x00003d3a cbz r0, 0x3d4a                                |             goto label_3;
                                                             |         }
    0x00003d3c mov r2, r8                                    |         r2 = r8;
    0x00003d3e movs r1, 0                                    |         r1 = 0;
    0x00003d40 bl 0x94c4                                     |         r0 = fcn_000094c4 (r0, r1, r2);
    0x00003d44 subs r4, r0, 0                                |         r4 = r0 - 0;
                                                             |         if (r4 < r0) {
    0x00003d46 blt.w 0x3e96                                  |             goto label_23;
                                                             |         }
                                                             |     }
                                                             |     if (r7 != 0) {
                                                             | label_3:
    0x00003d4a cbz r7, 0x3d5c                                |         
                                                             | label_5:
    0x00003d4c ldr r0, [sp, 0x3c]                            |         r0 = var_3ch;
                                                             |         if (r0 == 0) {
    0x00003d4e cbz r0, 0x3d5c                                |             goto label_6;
                                                             |         }
    0x00003d50 mov r1, r7                                    |         r1 = r7;
    0x00003d52 bl 0xc014                                     |         r0 = fcn_0000c014 (r0, r1);
    0x00003d56 subs r4, r0, 0                                |         r4 = r0 - 0;
                                                             |         if (r4 < r0) {
    0x00003d58 blt.w 0x3f14                                  |             goto label_24;
                                                             |         }
                                                             |     }
                                                             |     if (r6 != 0) {
                                                             | label_6:
    0x00003d5c cbz r6, 0x3d6e                                |         
                                                             | label_9:
    0x00003d5e ldr r0, [sp, 0x40]                            |         r0 = var_40h;
                                                             |         if (r0 == 0) {
    0x00003d60 cbz r0, 0x3d6e                                |             goto label_7;
                                                             |         }
    0x00003d62 mov r1, r6                                    |         r1 = r6;
    0x00003d64 bl 0xc014                                     |         r0 = fcn_0000c014 (r0, r1);
    0x00003d68 subs r4, r0, 0                                |         r4 = r0 - 0;
                                                             |         if (r4 < r0) {
    0x00003d6a blt.w 0x3ed4                                  |             goto label_25;
                                                             |         }
                                                             |     }
                                                             | label_7:
    0x00003d6e cmp.w sb, 0                                   |     
                                                             |     if (sb != 0) {
    0x00003d72 beq 0x3d88                                    |         
                                                             | label_8:
    0x00003d74 ldr r5, [sp, 0x44]                            |         r5 = var_44h;
                                                             |         if (r5 == 0) {
    0x00003d76 cbz r5, 0x3d88                                |             goto label_4;
                                                             |         }
    0x00003d78 mov r0, r5                                    |         r0 = r5;
    0x00003d7a bl 0x3c70                                     |         fcn_00003c70 (r0);
    0x00003d7c vsub.i64 d18, d9, d0                          |         __asm ("vsub.i64 d18, d9, d0");
    0x00003d80 it ge                                         |         
                                                             |         if (r5 < 0) {
    0x00003d82 strge r0, [sb]                                |             *(sb) = r0;
                                                             |         }
                                                             |         if (r5 < 0) {
    0x00003d86 blt 0x3e62                                    |             goto label_26;
                                                             |         }
                                                             |     }
                                                             | label_4:
    0x00003d88 ldr r6, [sp, 0x48]                            |     r6 = var_48h;
    0x00003d8a cmp.w sl, 0                                   |     
                                                             |     if (sl != 0) {
    0x00003d8e beq 0x3dac                                    |         
                                                             |         if (r6 == 0) {
    0x00003d90 cbz r6, 0x3dac                                |             goto label_27;
                                                             |         }
    0x00003d92 mov r0, r6                                    |         r0 = r6;
    0x00003d94 bl 0xa7ac                                     |         r0 = fcn_0000a7ac (r0);
    0x00003d98 subs r5, r0, 0                                |         r5 = r0 - 0;
    0x00003d9a itt ge                                        |         
                                                             |         if (r5 < r0) {
    0x00003d9c movge r4, 0                                   |             r4 = 0;
                                                             |         }
                                                             |         if (r5 < r0) {
    0x00003d9e strge r5, [sl]                                |             *(sl) = r5;
                                                             |         }
                                                             |         if (r5 >= r0) {
    0x00003da2 bge 0x3dae                                    |             goto label_0;
                                                             |         }
    0x00003da4 bl 0x7be0                                     |         r0 = fcn_00007be0 ();
    0x00003da8 cmp r0, 3                                     |         
                                                             |         if (r0 > 3) {
    0x00003daa bgt 0x3df0                                    |             goto label_28;
                                                             |         }
                                                             |     }
                                                             | label_27:
    0x00003dac movs r4, 0                                    |     r4 = 0;
                                                             |     do {
                                                             | label_0:
    0x00003dae mov r0, r6                                    |         r0 = r6;
    0x00003db0 blx 0x1b80                                    |         fcn_00001b80 ();
    0x00003db4 ldr r0, [sp, 0x44]                            |         r0 = var_44h;
    0x00003db6 blx 0x1b80                                    |         fcn_00001b80 ();
    0x00003dba ldr r0, [sp, 0x40]                            |         r0 = var_40h;
    0x00003dbc blx 0x1b80                                    |         fcn_00001b80 ();
    0x00003dc0 ldr r0, [sp, 0x3c]                            |         r0 = var_3ch;
    0x00003dc2 blx 0x1b80                                    |         fcn_00001b80 ();
    0x00003dc6 ldr r0, [sp, 0x38]                            |         r0 = var_38h;
    0x00003dc8 blx 0x1b80                                    |         fcn_00001b80 ();
    0x00003dcc ldr r0, [sp, 0x34]                            |         r0 = var_34h;
    0x00003dce blx 0x1b80                                    |         fcn_00001b80 ();
    0x00003dd2 ldr r2, [pc, 0x1bc]                           |         
    0x00003dd4 ldr r3, [pc, 0x198]                           |         r3 = *(0x3f70);
    0x00003dd6 add r2, pc                                    |         r2 = 0x7d6c;
    0x00003dd8 ldr r3, [r2, r3]                              |         r3 = *(0x7d6c);
    0x00003dda ldr r2, [r3]                                  |         r2 = *(0x7d6c);
    0x00003ddc ldr r3, [sp, 0x4c]                            |         r3 = var_4ch;
    0x00003dde eors r2, r3                                   |         r2 ^= r3;
    0x00003de0 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x00003de4 bne.w 0x3f68                                  |             goto label_29;
                                                             |         }
    0x00003de8 mov r0, r4                                    |         r0 = r4;
    0x00003dea add sp, 0x50                                  |         
    0x00003dec pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_28:
    0x00003df0 ldr r4, [pc, 0x1a0]                           |         
    0x00003df2 movs r3, 0                                    |         r3 = 0;
    0x00003df4 ldr r0, [pc, 0x1a0]                           |         
    0x00003df6 ldr r1, [pc, 0x1a4]                           |         
    0x00003df8 add r4, pc                                    |         r4 = 0x7d90;
    0x00003dfa ldr r2, [pc, 0x1a4]                           |         
    0x00003dfc add r0, pc                                    |         r0 = 0x7d98;
    0x00003dfe str r6, [sp, 0x14]                            |         var_14h = r6;
    0x00003e00 strd r0, r4, [sp, 0xc]                        |         __asm ("strd r0, r4, [var_10h]");
    0x00003e04 add r1, pc                                    |         r1 = 0x7da6;
    0x00003e06 movs r4, 0x73                                 |         r4 = 0x73;
    0x00003e08 adds r1, 7                                    |         r1 += 7;
    0x00003e0a str r4, [sp, 8]                               |         var_8h = r4;
    0x00003e0c movs r4, 0                                    |         r4 = 0;
    0x00003e0e str r1, [sp, 4]                               |         var_4h = r1;
    0x00003e10 add r2, pc                                    |         r2 = 0x7db6;
    0x00003e12 movs r1, 4                                    |         r1 = 4;
    0x00003e14 mov r0, r3                                    |         r0 = r3;
    0x00003e16 str r5, [sp]                                  |         *(sp) = r5;
    0x00003e18 bl 0x9130                                     |         fcn_00009130 (r0, r1, r2, r3, r4, r5, r6);
                                                             | label_19:
    0x00003e1c ldr r6, [sp, 0x48]                            |         r6 = var_48h;
    0x00003e1e b 0x3dae                                      |         
                                                             |     } while (1);
                                                             | label_18:
    0x00003e20 ldr r6, [sp, 0x48]                            |     r6 = var_48h;
    0x00003e22 mov r4, r5                                    |     r4 = r5;
    0x00003e24 b 0x3dae                                      |     goto label_0;
                                                             | label_22:
    0x00003e26 bl 0x7be0                                     |     r0 = fcn_00007be0 ();
    0x00003e2a cmp r0, 3                                     |     
                                                             |     if (r0 <= 3) {
    0x00003e2c ble 0x3d32                                    |         goto label_1;
                                                             |     }
    0x00003e2e ldr r3, [pc, 0x174]                           |     
    0x00003e30 movs r1, 4                                    |     r1 = 4;
    0x00003e32 ldr r2, [pc, 0x174]                           |     
    0x00003e34 str r5, [sp, 0x14]                            |     var_14h = r5;
    0x00003e36 add r3, pc                                    |     r3 = 0x7de0;
    0x00003e38 str r4, [sp]                                  |     *(sp) = r4;
    0x00003e3a adds r3, 7                                    |     r3 += 7;
    0x00003e3c add r2, pc                                    |     r2 = 0x7dea;
    0x00003e3e str r3, [sp, 4]                               |     var_4h = r3;
    0x00003e40 ldr r3, [pc, 0x168]                           |     
    0x00003e42 add r3, pc                                    |     r3 = 0x7df2;
    0x00003e44 str r3, [sp, 0x10]                            |     var_10h = r3;
    0x00003e46 ldr r3, [pc, 0x168]                           |     
    0x00003e48 add r3, pc                                    |     r3 = 0x7dfe;
    0x00003e4a str r3, [sp, 0xc]                             |     var_ch = r3;
    0x00003e4c movs r3, 0x4c                                 |     r3 = 0x4c;
    0x00003e4e str r3, [sp, 8]                               |     var_8h = r3;
    0x00003e50 movs r3, 0                                    |     r3 = 0;
    0x00003e52 mov r0, r3                                    |     r0 = r3;
    0x00003e54 bl 0x9130                                     |     fcn_00009130 (r0, r1, r2, r3, r4, r5, r6);
    0x00003e58 cmp.w r8, 0                                   |     
                                                             |     if (r8 != 0) {
    0x00003e5c bne.w 0x3d38                                  |         goto label_2;
                                                             |     }
    0x00003e60 b 0x3d4a                                      |     goto label_3;
                                                             | label_26:
    0x00003e62 bl 0x7be0                                     |     r0 = fcn_00007be0 ();
    0x00003e66 cmp r0, 3                                     |     
                                                             |     if (r0 <= 3) {
    0x00003e68 ble 0x3d88                                    |         goto label_4;
                                                             |     }
    0x00003e6a ldr r2, [pc, 0x148]                           |     
    0x00003e6c movs r3, 0                                    |     r3 = 0;
    0x00003e6e ldr r0, [pc, 0x148]                           |     
    0x00003e70 ldr r1, [pc, 0x148]                           |     
    0x00003e72 add r2, pc                                    |     r2 = 0x7e2c;
    0x00003e74 str r5, [sp, 0x14]                            |     var_14h = r5;
    0x00003e76 add r0, pc                                    |     r0 = 0x7e34;
    0x00003e78 adds r2, 7                                    |     r2 += 7;
    0x00003e7a add r1, pc                                    |     r1 = 0x7e3a;
    0x00003e7c str r4, [sp]                                  |     *(sp) = r4;
    0x00003e7e strd r1, r0, [sp, 0xc]                        |     __asm ("strd r1, r0, [var_10h]");
    0x00003e80 asrs r3, r0, 0x20                             |     r3 = r0 >> 0x20;
    0x00003e82 movs r1, 0x6a                                 |     r1 = 0x6a;
    0x00003e84 strd r2, r1, [sp, 4]                          |     __asm ("strd r2, r1, [var_8h]");
    0x00003e88 mov r0, r3                                    |     r0 = r3;
    0x00003e8a ldr r2, [pc, 0x134]                           |     
    0x00003e8c movs r1, 4                                    |     r1 = 4;
    0x00003e8e add r2, pc                                    |     r2 = 0x7e54;
    0x00003e90 bl 0x9130                                     |     fcn_00009130 (r0, r1, r2, r3, r4, r5, r6);
    0x00003e92 invalid                                       |     
                                                             | label_23:
    0x00003e96 bl 0x7be0                                     |     r0 = fcn_00007be0 ();
    0x00003e9a cmp r0, 3                                     |     
                                                             |     if (r0 <= 3) {
    0x00003e9c ble.w 0x3d4a                                  |         goto label_3;
                                                             |     }
    0x00003ea0 ldr r3, [pc, 0x120]                           |     
    0x00003ea2 movs r1, 4                                    |     r1 = 4;
    0x00003ea4 ldr r2, [pc, 0x120]                           |     
    0x00003ea6 str r4, [sp]                                  |     *(sp) = r4;
    0x00003ea8 add r3, pc                                    |     r3 = 0x7e70;
    0x00003eaa adds r3, 7                                    |     r3 += 7;
    0x00003eac add r2, pc                                    |     r2 = 0x7e78;
    0x00003eae str r3, [sp, 4]                               |     var_4h = r3;
    0x00003eb0 ldr r3, [sp, 0x38]                            |     r3 = var_38h;
    0x00003eb2 str r3, [sp, 0x14]                            |     var_14h = r3;
    0x00003eb4 ldr r3, [pc, 0x114]                           |     
    0x00003eb6 add r3, pc                                    |     r3 = 0x7e86;
    0x00003eb8 str r3, [sp, 0x10]                            |     var_10h = r3;
    0x00003eba ldr r3, [pc, 0x114]                           |     
    0x00003ebc add r3, pc                                    |     r3 = 0x7e92;
    0x00003ebe str r3, [sp, 0xc]                             |     var_ch = r3;
    0x00003ec0 movs r3, 0x53                                 |     r3 = 0x53;
    0x00003ec2 str r3, [sp, 8]                               |     var_8h = r3;
    0x00003ec4 movs r3, 0                                    |     r3 = 0;
    0x00003ec6 mov r0, r3                                    |     r0 = r3;
    0x00003ec8 bl 0x9130                                     |     fcn_00009130 (r0, r1, r2, r3, r4, r5, r6);
    0x00003ecc cmp r7, 0                                     |     
                                                             |     if (r7 != 0) {
    0x00003ece bne.w 0x3d4c                                  |         goto label_5;
                                                             |     }
    0x00003ed2 b 0x3d5c                                      |     goto label_6;
                                                             | label_25:
    0x00003ed4 bl 0x7be0                                     |     r0 = fcn_00007be0 ();
    0x00003ed8 cmp r0, 3                                     |     
                                                             |     if (r0 <= 3) {
    0x00003eda ble.w 0x3d6e                                  |         goto label_7;
                                                             |     }
    0x00003ede ldr r2, [sp, 0x40]                            |     r2 = var_40h;
    0x00003ee0 movs r1, 4                                    |     r1 = 4;
    0x00003ee2 ldr r3, [pc, 0xf0]                            |     
    0x00003ee4 str r4, [sp]                                  |     *(sp) = r4;
    0x00003ee6 str r2, [sp, 0x14]                            |     var_14h = r2;
    0x00003ee8 ldr r2, [pc, 0xec]                            |     
    0x00003eea add r3, pc                                    |     r3 = 0x7ec4;
    0x00003eec adds r3, 7                                    |     r3 += 7;
    0x00003eee str r3, [sp, 4]                               |     var_4h = r3;
    0x00003ef0 movs r3, 0                                    |     r3 = 0;
    0x00003ef2 add r2, pc                                    |     r2 = 0x7ece;
    0x00003ef4 mov r0, r3                                    |     r0 = r3;
    0x00003ef6 str r2, [sp, 0x10]                            |     var_10h = r2;
    0x00003ef8 ldr r2, [pc, 0xe0]                            |     
    0x00003efa add r2, pc                                    |     r2 = 0x7eda;
    0x00003efc str r2, [sp, 0xc]                             |     var_ch = r2;
    0x00003efe movs r2, 0x61                                 |     r2 = 0x61;
    0x00003f00 str r2, [sp, 8]                               |     var_8h = r2;
    0x00003f02 ldr r2, [pc, 0xdc]                            |     
    0x00003f04 add r2, pc                                    |     r2 = 0x7eea;
    0x00003f06 bl 0x9130                                     |     fcn_00009130 (r0, r1, r2, r3, r4, r5, r6);
    0x00003f0a cmp.w sb, 0                                   |     
    0x00003f0c lsrs r0, r0, 0x1c                             |     r0 >>= 0x1c;
                                                             |     if (r0 != r0) {
    0x00003f0e bne.w 0x3d74                                  |         goto label_8;
                                                             |     }
    0x00003f12 b 0x3d88                                      |     goto label_4;
                                                             | label_24:
    0x00003f14 bl 0x7be0                                     |     r0 = fcn_00007be0 ();
    0x00003f18 cmp r0, 3                                     |     
                                                             |     if (r0 <= 3) {
    0x00003f1a ble.w 0x3d5c                                  |         goto label_6;
                                                             |     }
    0x00003f1e ldr r3, [sp, 0x3c]                            |     r3 = var_3ch;
    0x00003f20 movs r1, 4                                    |     r1 = 4;
    0x00003f22 ldr r2, [pc, 0xc0]                            |     
    0x00003f24 str r4, [sp]                                  |     *(sp) = r4;
    0x00003f26 str r3, [sp, 0x14]                            |     var_14h = r3;
    0x00003f28 ldr r3, [pc, 0xbc]                            |     
    0x00003f2a add r2, pc                                    |     r2 = 0x7f14;
    0x00003f2c add r3, pc                                    |     r3 = 0x7f18;
    0x00003f2e str r3, [sp, 0x10]                            |     var_10h = r3;
    0x00003f30 ldr r3, [pc, 0xb8]                            |     
    0x00003f32 add r3, pc                                    |     r3 = 0x7f22;
    0x00003f34 str r3, [sp, 0xc]                             |     var_ch = r3;
    0x00003f36 movs r3, 0x5a                                 |     r3 = 0x5a;
    0x00003f38 str r3, [sp, 8]                               |     var_8h = r3;
    0x00003f3a ldr r3, [pc, 0xb4]                            |     
    0x00003f3c add r3, pc                                    |     r3 = 0x7f32;
    0x00003f3e adds r3, 7                                    |     r3 += 7;
    0x00003f40 str r3, [sp, 4]                               |     var_4h = r3;
    0x00003f42 movs r3, 0                                    |     r3 = 0;
    0x00003f44 mov r0, r3                                    |     r0 = r3;
    0x00003f46 bl 0x9130                                     |     fcn_00009130 (r0, r1, r2, r3, r4, r5, r6);
    0x00003f4a cmp r6, 0                                     |     
                                                             |     if (r6 != 0) {
    0x00003f4c bne.w 0x3d5e                                  |         goto label_9;
                                                             |     }
    0x00003f50 b 0x3d6e                                      |     goto label_7;
                                                             | label_20:
    0x00003f52 subs r0, 1                                    |     r0--;
    0x00003f54 ldrb r3, [r5, r0]                             |     r3 = *((r5 + r0));
    0x00003f56 add r0, r5                                    |     r0 += r5;
    0x00003f58 cmp r3, 0x22                                  |     
                                                             |     if (r3 != 0x22) {
    0x00003f5a bne.w 0x3d28                                  |         goto label_10;
                                                             |     }
                                                             | label_21:
    0x00003f5e movs r3, 0                                    |     r3 = 0;
    0x00003f60 strb r3, [r0]                                 |     *(r0) = r3;
    0x00003f62 ldr r5, [sp, 0x34]                            |     r5 = var_34h;
    0x00003f64 adds r5, 1                                    |     r5++;
    0x00003f66 b 0x3d28                                      |     goto label_10;
                                                             | label_29:
    0x00003f68 blx 0x1bfc                                    |     parse_printf_format ();
    0x00003f6c b 0x422c                                      |     goto label_30;
                                                             | label_12:
    0x00004050 cmp r4, 0                                     |     
                                                             |     if (r4 != 0) {
    0x00004052 bne 0x4144                                    |         goto label_31;
                                                             |     }
                                                             |     do {
                                                             | label_11:
    0x00004054 mov r0, sb                                    |         r0 = sb;
    0x00004056 bl 0x5a98                                     |         fcn_00005a98 (r0, r1, r2, r3, r4);
    0x00004058 ldc2 p10, c4, [pc, -0x24c]                    |         __asm ("ldc2 p10, c4, aav.0x000000ff");
    0x0000405c ldr r3, [pc, 0x244]                           |         r3 = *(0x42a4);
    0x0000405e add r2, pc                                    |         r2 += pc;
    0x00004060 ldr r3, [r2, r3]                              |         r3 = *((r2 + r3));
    0x00004062 ldr r2, [r3]                                  |         r2 = *(0x42a4);
    0x00004064 ldr.w r3, [r7, 0xac]                          |         r3 = *((r7 + 0xac));
    0x00004068 eors r2, r3                                   |         r2 ^= r3;
    0x0000406a mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x0000406e bne.w 0x429c                                  |             goto label_32;
                                                             |         }
    0x00004072 mov r0, r6                                    |         r0 = r6;
    0x00004074 adds r7, 0xb4                                 |         r7 += 0xb4;
    0x00004076 mov sp, r7                                    |         
    0x00004078 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |         
    0x0000407a ldrh r0, [r6, 0x3e]                           |         r0 = *((r6 + 0x3e));
                                                             | label_14:
    0x0000412c mov.w r2, 0x4000                              |         r2 = 0x4000;
    0x00004130 add.w r1, r7, 0x10                            |         r1 = r7 + 0x10;
    0x00004134 mov r0, sb                                    |         r0 = sb;
    0x00004136 blx 0x1bd4                                    |         r0 = fcn_00001bd4 ();
    0x0000413a cmp r0, 0                                     |         
                                                             |         if (r0 < 0) {
    0x0000413c blt 0x421a                                    |             goto label_33;
                                                             |         }
                                                             | label_13:
    0x0000413e movs r6, 1                                    |         r6 = 1;
    0x00004140 cmp r4, 0                                     |         
    0x00004142 beq 0x4054                                    |         
                                                             |     } while (r4 == 0);
                                                             | label_31:
    0x00004144 ldr r0, [pc, 0x168]                           |     
    0x00004146 add r0, pc                                    |     r0 = 0x83fa;
    0x00004148 blx 0x1f9c                                    |     fcn_00001f9c ();
    0x0000414a vadd.i32 d2, d8, d0                           |     __asm ("vadd.i32 d2, d8, d0");
                                                             |     if (r4 == 0) {
    0x0000414e beq 0x4054                                    |         goto label_11;
                                                             |     }
    0x00004150 ldr r1, [pc, 0x160]                           |     
    0x00004152 movw r2, 0x226                                |     r2 = 0x226;
    0x00004156 ldr r3, [pc, 0x160]                           |     
    0x00004158 ldr r0, [pc, 0x160]                           |     
    0x0000415a add r1, pc                                    |     r1 = 0x8412;
    0x0000415c add r3, pc                                    |     r3 = 0x841a;
    0x0000415e adds r1, 7                                    |     r1 += 7;
    0x00004160 add r0, pc                                    |     r0 = 0x8420;
    0x00004162 bl 0x8500                                     |     fcn_00008500 (r0, r1, r2, r3, r4);
    0x00004166 mov.w sb, -1                                  |     sb = -1;
    0x0000416a b 0x4050                                      |     goto label_12;
                                                             | label_15:
    0x000041c4 movs r3, 2                                    |     r3 = 2;
    0x000041c6 movs r2, 1                                    |     r2 = 1;
    0x000041c8 strd r2, r3, [sl, 4]                          |     __asm ("strd r2, r3, [sl, 4]");
    0x000041cc movs r3, 0x18                                 |     r3 = 0x18;
    0x000041ce str.w r3, [sl]                                |     __asm ("str.w r3, [sl]");
                                                             | label_17:
    0x000041d0 adds r0, 0                                    |     r0 += 0;
    0x000041d2 cmp.w r8, 0                                   |     
                                                             |     if (r8 == 0) {
    0x000041d6 beq 0x427e                                    |         goto label_34;
                                                             |     }
                                                             | label_16:
    0x000041d8 str.w r8, [sl, 0xc]                           |     __asm ("str.w r8, [sl, 0xc]");
    0x000041dc add.w r5, r7, 0x10                            |     r5 = r7 + 0x10;
    0x000041e0 blx 0x1b74                                    |     fcn_00001b74 ();
    0x000041e4 str.w r0, [sl, 0x10]                          |     __asm ("str.w r0, [sl, 0x10]");
    0x000041e8 blx 0x1e24                                    |     fsetlocking ();
    0x000041ec mov.w r2, 0x4000                              |     r2 = 0x4000;
    0x000041f0 str.w r0, [sl, 0x14]                          |     __asm ("str.w r0, [sl, 0x14]");
    0x000041f4 mov r1, r5                                    |     r1 = r5;
    0x000041f6 mov r0, sb                                    |     r0 = sb;
    0x000041f8 blx 0x1bd4                                    |     r0 = fcn_00001bd4 ();
    0x000041fc cmp r0, 0                                     |     
                                                             |     if (r0 >= 0) {
    0x000041fe bge 0x413e                                    |         goto label_13;
                                                             |     }
    0x00004200 ldr r3, [r7, 0x24]                            |     r3 = *((r7 + 0x24));
    0x00004202 subs r3, 0x18                                 |     r3 -= 0x18;
    0x00004204 str r3, [r7, 0x24]                            |     *((r7 + 0x24)) = r3;
                                                             |     if (r3 == 0) {
    0x00004206 cbnz r3, 0x420a                               |         
    0x00004208 str r3, [r7, 0x20]                            |         *((r7 + 0x20)) = r3;
                                                             |     }
    0x0000420a mov.w r2, 0x4000                              |     r2 = 0x4000;
    0x0000420e mov r1, r5                                    |     r1 = r5;
    0x00004210 mov r0, sb                                    |     r0 = sb;
    0x00004212 blx 0x1bd4                                    |     r0 = fcn_00001bd4 ();
    0x00004216 cmp r0, 0                                     |     
                                                             |     if (r0 >= 0) {
    0x00004218 bge 0x413e                                    |         goto label_13;
                                                             |     }
                                                             | label_33:
    0x0000421a blx 0x1de8                                    |     r0 = sprintf_chk ()
    0x0000421e ldr r6, [r0]                                  |     r6 = *(r0);
    0x00004220 rsbs r6, r6, 0                                |     r6 -= ;
    0x00004222 b 0x4050                                      |     goto label_12;
                                                             | label_30:
    0x0000422c movs r2, 1                                    |     r2 = 1;
    0x0000422e mov r0, sl                                    |     r0 = sl;
    0x00004230 strd r2, r2, [sl, 4]                          |     __asm ("strd r2, r2, [sl, 4]");
    0x00004234 sub.w r2, r5, 0xc                             |     r2 = r5 - 0xc;
    0x00004238 str r5, [r0], 0xc                             |     *(r0) = r5;
                                                             |     r0 += 0xc;
    0x0000423c blx 0x1bc8                                    |     fcn_00001bc8 ();
    0x00004240 ldr r3, [r7, 4]                               |     r3 = *((r7 + 4));
    0x00004242 cmp r6, 0                                     |     
                                                             |     if (r6 == 0) {
    0x00004244 beq.w 0x412c                                  |         goto label_14;
                                                             |     }
    0x00004248 cmp r5, 0xb                                   |     
                                                             |     if (r5 < 0xb) {
    0x0000424a bls 0x4268                                    |         goto label_35;
                                                             |     }
    0x0000424c add sl, r5                                    |     sl += r5;
    0x0000424e add r3, fp                                    |     r3 += fp;
    0x00004250 add.w r2, sl, 0xc                             |     r2 = sl + 0xc;
    0x00004252 lsls r4, r1, 8                                |     r4 = r1 << 8;
    0x00004254 cmp r3, r2                                    |     
                                                             |     if (r3 <= r2) {
    0x00004256 blo 0x4268                                    |         goto label_35;
                                                             |     }
    0x00004258 ldr.w r2, [sl]                                |     r2 = *(sl);
    0x0000425c adds r2, 3                                    |     r2 += 3;
    0x0000425e bic r2, r2, 3                                 |     r2 = BIT_MASK (r2, 3);
    0x00004262 add r2, sl                                    |     r2 += sl;
    0x00004264 cmp r3, r2                                    |     
                                                             |     if (r3 >= r2) {
    0x00004266 bhs 0x41c4                                    |         goto label_15;
                                                             |     }
                                                             | label_35:
    0x00004268 ldr r1, [pc, 0x54]                            |     
    0x0000426a movw r2, 0x1ff                                |     r2 = 0x1ff;
    0x0000426e ldr r3, [pc, 0x54]                            |     
    0x00004270 ldr r0, [pc, 0x54]                            |     
    0x00004272 add r1, pc                                    |     r1 = 0x8536;
    0x00004274 add r3, pc                                    |     r3 = 0x853e;
    0x00004276 adds r1, 7                                    |     r1 += 7;
    0x00004278 add r0, pc                                    |     r0 = 0x8544;
    0x0000427a bl 0x8500                                     |     fcn_00008500 (r0, r1, r2, r3, r4);
                                                             |     do {
    0x0000427c invalid                                       |         
                                                             | label_34:
    0x0000427e bl 0x9cd0                                     |         r0 = fcn_00009cd0 (r0);
    0x00004282 mov r8, r0                                    |         r8 = r0;
    0x00004284 b 0x41d8                                      |         goto label_16;
                                                             | label_32:
    0x0000429c blx 0x1bfc                                    |         parse_printf_format ();
    0x000042a0 ble 0x427c                                    |         
                                                             |     } while (r1 <= 7);
    0x000042a2 movs r1, r0                                   |     r1 = r0;
    0x000042a4 lsls r4, r2, 7                                |     r4 = r2 << 7;
    0x000042a6 movs r0, r0                                   |     
                                                             |     if (r0 <= r0) {
    0x000042a8 ble 0x41d0                                    |         goto label_17;
                                                             |     }
    0x000042aa movs r1, r0                                   |     r1 = r0;
    0x000042ac adr r4, 0x280                                 |     r4 = 0x280;
    0x000042ae movs r0, r0                                   |     
    0x000042b0 adr r3, 0x368                                 |     r3 = 0x368;
    0x000042b2 movs r0, r0                                   |     
    0x000042b4 adr r3, 0x238                                 |     r3 = 0x238;
    0x000042b6 movs r0, r0                                   |     
    0x000042b8 adr r4, 0xb0                                  |     r4 = 0xb0;
    0x000042ba movs r0, r0                                   |     
    0x000042bc adr r4, 0x20                                  |     r4 = 0x20;
    0x000042be movs r0, r0                                   |     
    0x000042c0 adr r2, 0x1d8                                 |     r2 = 0x1d8;
    0x000042c2 movs r0, r0                                   |     
    0x000042c4 adr r3, 0x50                                  |     r3 = 0x50;
    0x000042c6 movs r0, r0                                   |     
    0x000042c8 adr r2, 0x330                                 |     r2 = 0x330;
    0x000042ca movs r0, r0                                   |     
    0x000042cc adr r2, 0x160                                 |     r2 = 0x160;
    0x000042ce movs r0, r0                                   |     
    0x000042d0 adr r2, 0x3d8                                 |     r2 = 0x3d8;
    0x000042d2 movs r0, r0                                   |     
    0x000042d4 adr r2, 0x268                                 |     r2 = 0x268;
    0x000042d6 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/cdrom_id @ 0x43e0 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.000043e0 ()              | void fcn_000043e0 () {
                                         |     int32_t var_0h;
                                         |     int32_t var_0h_2;
    0x000043e0 ldr r0, [pc, 0x78]        |     
    0x000043e2 push {r4, r5, r6, lr}     |     
    0x000043e4 sub sp, 8                 |     
    0x000043e6 ldr r4, [pc, 0x78]        |     r4 = *(0x4462);
    0x000043e8 add r0, pc                |     r0 = 0x8848;
    0x000043ea blx 0x1f60                |     fcn_00001f60 ();
    0x000043ee ldr r3, [r4, r0]          |     r3 = *(0x4462);
    0x000043f0 cmp r3, 0                 |     
                                         |     if (r3 >= 0) {
    0x000043f2 blt 0x4400                |         
    0x000043f4 ite ne                    |         
                                         |         if (r3 == 0) {
    0x000043f6 movne r5, 1               |             r5 = 1;
                                         |         }
                                         |         if (r3 != 0) {
    0x000043f8 moveq r5, 0               |             r5 = 0;
                                         |         }
    0x000043fa mov r0, r5                |         r0 = r5;
    0x000043fc add sp, 8                 |         
    0x000043fe pop {r4, r5, r6, pc}      |         
                                         |     }
    0x00004400 ldr r0, [pc, 0x64]        |     
    0x00004402 movs r1, 0                |     r1 = 0;
    0x00004404 add r0, pc                |     r0 = 0x8870;
    0x00004406 blx 0x1e94                |     r0 = fcn_00001e94 ();
    0x0000440a cmp r0, 0                 |     
    0x0000440c itt ge                    |     
                                         |     if (r0 < 0) {
    0x0000440e movge r6, 1               |         r6 = 1;
                                         |     }
                                         |     if (r0 < 0) {
    0x00004410 movge r5, r6              |         r5 = r6;
                                         |     }
    0x00004412 blt 0x4424                |     
                                         |     while (1) {
    0x00004414 ldr r0, [pc, 0x4c]        |         
    0x00004416 add r0, pc                |         r0 = 0x887e;
    0x00004418 blx 0x1f60                |         fcn_00001f60 ();
    0x0000441c str r6, [r4, r0]          |         *((r4 + r0)) = r6;
    0x0000441e mov r0, r5                |         r0 = r5;
    0x00004420 add sp, 8                 |         
    0x00004422 pop {r4, r5, r6, pc}      |         
    0x00004424 blx 0x1de8                |         r0 = sprintf_chk ()
    0x00004428 ldr r5, [r0]              |         r5 = *(r0);
    0x0000442a cmp r5, 2                 |         
                                         |         if (r5 != 2) {
    0x0000442c beq 0x4436                |             
    0x0000442e bl 0x7be0                 |             r0 = fcn_00007be0 ();
    0x00004432 cmp r0, 6                 |             
                                         |             if (r0 > 6) {
    0x00004434 bgt 0x443c                |                 goto label_1;
                                         |             }
                                         |         }
                                         | label_0:
    0x00004436 movs r6, 0                |         r6 = 0;
    0x00004438 mov r5, r6                |         r5 = r6;
    0x0000443a b 0x4414                  |         
                                         |     }
                                         | label_1:
    0x0000443c ldr r2, [pc, 0x2c]        |     
    0x0000443e mov r1, r5                |     r1 = r5;
    0x00004440 ldr r0, [pc, 0x2c]        |     
    0x00004442 ldr r3, [pc, 0x30]        |     
    0x00004444 add r2, pc                |     r2 = 0x88b4;
    0x00004446 add r0, pc                |     r0 = 0x88ba;
    0x00004448 adds r2, 7                |     r2 += 7;
    0x0000444a add r3, pc                |     r3 = 0x88c4;
    0x0000444c strd r3, r0, [sp]         |     __asm ("strd r3, r0, [sp]");
    0x0000444e adds r0, 0                |     r0 += 0;
    0x00004450 movs r3, 0x90             |     r3 = 0x90;
    0x00004452 movs r0, 7                |     r0 = 7;
    0x00004454 bl 0x8430                 |     fcn_00008430 (r0, r1, r2, r3, r4);
    0x00004458 b 0x4436                  |     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/cdrom_id @ 0x4478 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.00004478 ()                  | void fcn_00004478 (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;
    0x00004478 ldr r2, [pc, 0x2f4]           |     
    0x0000447a ldr r3, [pc, 0x2f8]           |     r3 = *(0x4776);
    0x0000447c push {r4, r5, r6, r7, lr}     |     
    0x0000447e sub sp, 0x74                  |     
    0x00004480 add r2, pc                    |     r2 = 0x8bf4;
    0x00004482 ldr r3, [r2, r3]              |     
    0x00004484 ldr r3, [r3]                  |     r3 = *(0x8bf4);
    0x00004486 str r3, [sp, 0x6c]            |     var_6ch = r3;
    0x00004488 mov.w r3, 0                   |     r3 = 0;
    0x0000448c cmp r0, 0                     |     
                                             |     if (r0 == 0) {
    0x0000448e beq 0x44fc                    |         goto label_9;
                                             |     }
    0x00004490 ldr r0, [pc, 0x2bc]           |     
    0x00004492 ldr r4, [pc, 0x2c0]           |     r4 = *(0x4756);
    0x00004494 add r0, pc                    |     r0 = 0x8be8;
    0x00004496 blx 0x1f60                    |     fcn_00001f60 ();
    0x0000449a mov.w r3, -1                  |     r3 = -1;
    0x0000449e str r3, [r4, r0]              |     *((r4 + r0)) = r3;
                                             |     do {
    0x000044a0 ldr r0, [pc, 0x2d4]           |         
    0x000044a2 add r7, sp, 0x10              |         r7 += var_10h;
    0x000044a4 mov r1, r7                    |         r1 = r7;
    0x000044a6 add r0, pc                    |         r0 = 0x8c22;
    0x000044a8 blx 0x1f0c                    |         r0 = fcn_00001f0c ();
    0x000044ac cmp r0, 0                     |         
                                             |         if (r0 < 0) {
    0x000044ae blt 0x450e                    |             goto label_10;
                                             |         }
    0x000044b0 ldr r5, [sp, 0x10]            |         r5 = var_10h;
    0x000044b2 movw r6, 0x7270               |         
    0x000044b6 movt r6, 0x6367               |         r6 = 0xNaN;
    0x000044ba cmp r5, r6                    |         
                                             |         if (r5 == r6) {
    0x000044bc beq 0x4532                    |             goto label_11;
                                             |         }
    0x000044be movw r3, 0x1994               |         
    0x000044c2 movt r3, 0x102                |         r3 = 0x1021994;
    0x000044c4 asrs r2, r0, 0xc              |         r2 = r0 >> 0xc;
    0x000044c6 cmp r5, r3                    |         
                                             |         if (r5 == r3) {
    0x000044c8 beq 0x45c6                    |             goto label_12;
                                             |         }
    0x000044ca bl 0x7be0                     |         fcn_00007be0 ();
    0x000044ce movw r3, 0x6572               |         
    0x000044d2 movt r3, 0x6265               |         r3 = 0x62656572;
    0x000044d6 cmp r5, r3                    |         
                                             |         if (r5 == r3) {
    0x000044d8 beq 0x459a                    |             goto label_13;
                                             |         }
    0x000044da cmp r0, 6                     |         
                                             |         if (r0 > 6) {
    0x000044dc bgt 0x456c                    |             goto label_14;
                                             |         }
                                             | label_1:
    0x000044de mvn r0, 0x7a                  |         r0 = ~0x7a;
                                             | label_0:
    0x000044e2 ldr r2, [pc, 0x298]           |         
    0x000044e4 ldr r3, [pc, 0x28c]           |         r3 = *(0x4774);
    0x000044e6 add r2, pc                    |         r2 = 0x8c68;
    0x000044e8 ldr r3, [r2, r3]              |         r3 = *(0x8c68);
    0x000044ea ldr r2, [r3]                  |         r2 = *(0x8c68);
    0x000044ec ldr r3, [sp, 0x6c]            |         r3 = var_6ch;
    0x000044ee eors r2, r3                   |         r2 ^= r3;
    0x000044f0 mov.w r3, 0                   |         r3 = 0;
                                             |         if (r2 != r3) {
    0x000044f4 bne.w 0x4724                  |             goto label_15;
                                             |         }
    0x000044f8 add sp, 0x74                  |         
    0x000044fa pop {r4, r5, r6, r7, pc}      |         
                                             | label_9:
    0x000044fc ldr r0, [pc, 0x258]           |         
    0x000044fe ldr r4, [pc, 0x254]           |         r4 = *(0x4756);
    0x00004500 add r0, pc                    |         r0 = 0x8c5c;
    0x00004502 blx 0x1f60                    |         fcn_00001f60 ();
    0x00004506 ldr r0, [r4, r0]              |         r0 = *(0x4756);
    0x00004508 cmp r0, 0                     |         
    0x0000450a blt 0x44a0                    |         
                                             |     } while (r0 < 0);
    0x0000450c b 0x44e2                      |     goto label_0;
                                             | label_10:
    0x0000450e blx 0x1de8                    |     r0 = sprintf_chk ()
    0x00004512 ldr r4, [r0]                  |     r4 = *(r0);
    0x00004514 bl 0x7be0                     |     fcn_00007be0 ();
    0x00004516 smmls r8, r4, r6, r2          |     __asm ("smmls r8, r4, r6, r2");
                                             |     if (r0 > 0) {
    0x0000451a bgt 0x454c                    |         goto label_16;
                                             |     }
                                             | label_4:
    0x0000451c eor.w r0, r4, r4, asr 31      |     r0 = r4 ^ (r4 >> 31);
    0x00004520 sub.w r0, r0, r4, asr 31      |     r0 -= (r4 >> 31);
    0x00004524 uxtb r0, r0                   |     r0 = (int8_t) r0;
    0x00004526 rsbs r0, r0, 0                |     r0 -= ;
    0x00004528 cmp r0, 0                     |     
                                             |     if (r0 < 0) {
    0x0000452a blt 0x44e2                    |         goto label_0;
                                             |     }
                                             |     do {
                                             | label_2:
    0x0000452c mvn r0, 0x55                  |         r0 = ~0x55;
    0x00004530 b 0x44e2                      |         goto label_0;
                                             | label_11:
    0x00004532 bl 0x7be0                     |         r0 = fcn_00007be0 ();
    0x00004536 cmp r0, 6                     |         
                                             |         if (r0 > 6) {
    0x00004538 bgt 0x461c                    |             goto label_17;
                                             |         }
                                             | label_3:
    0x0000453a ldr r0, [pc, 0x220]           |         
    0x0000453c add r0, pc                    |         r0 = 0x8c9e;
    0x0000453e blx 0x1f60                    |         fcn_00001f60 ();
    0x00004542 movs r3, 2                    |         r3 = 2;
    0x00004544 mov r2, r0                    |         r2 = r0;
    0x00004546 str r3, [r4, r2]              |         *((r4 + r2)) = r3;
    0x00004548 mov r0, r3                    |         r0 = r3;
    0x0000454a b 0x44e2                      |         goto label_0;
                                             | label_16:
    0x0000454c ldr r2, [pc, 0x230]           |         
    0x0000454e movw r3, 0x7fc                |         r3 = 0x7fc;
    0x00004550 strb r4, [r7, 0xf]            |         *((r7 + 0xf)) = r4;
    0x00004552 ldr r5, [pc, 0x230]           |         
    0x00004554 ldr r0, [pc, 0x230]           |         
    0x00004556 add r2, pc                    |         r2 = 0x8cda;
    0x00004558 add r5, pc                    |         r5 = 0x8ce2;
    0x0000455a add r0, pc                    |         r0 = 0x8ce6;
                                             | label_5:
    0x0000455c strd r0, r5, [sp]             |         __asm ("strd r0, r5, [sp]");
    0x00004560 mov r1, r4                    |         r1 = r4;
    0x00004562 adds r2, 7                    |         r2 += 7;
    0x00004564 movs r0, 7                    |         r0 = 7;
    0x00004566 bl 0x8430                     |         fcn_00008430 (r0, r1, r2, r3, r4);
    0x00004568 invalid                       |         
                                             | label_14:
    0x0000456c ldr r2, [pc, 0x21c]           |         
    0x0000456e asrs r6, r5, 0x1f             |         r6 = r5 >> 0x1f;
    0x00004570 ldr r0, [pc, 0x21c]           |         
    0x00004572 movs r1, 0x7b                 |         r1 = 0x7b;
    0x00004574 ldr r4, [pc, 0x21c]           |         
    0x00004576 movw r3, 0x822                |         r3 = 0x822;
    0x0000457a add r2, pc                    |         r2 = 0x8d0a;
    0x0000457c movt r1, 0x4000               |         r1 = (r1 & 0xFFFF) | 0x40000000;
    0x00004580 add r0, pc                    |         r0 = 0x8d14;
    0x00004582 adds r2, 7                    |         r2 += 7;
    0x00004584 add r4, pc                    |         r4 = 0x8d1c;
    0x00004586 str r0, [sp, 4]               |         var_4h = r0;
    0x00004588 str r5, [sp, 8]               |         var_8h = r5;
    0x0000458a movs r0, 7                    |         r0 = 7;
    0x0000458c str r6, [sp, 0xc]             |         var_ch = r6;
    0x0000458e str r4, [sp]                  |         *(sp) = r4;
    0x00004590 bl 0x8430                     |         r0 = fcn_00008430 (r0, r1, r2, r3, r4);
    0x00004594 cmp r0, 0                     |         
    0x00004596 bge 0x452c                    |         
                                             |     } while (r0 >= 0);
    0x00004598 b 0x44e2                      |     goto label_0;
                                             | label_13:
    0x0000459a cmp r0, 6                     |     
                                             |     if (r0 <= 6) {
    0x0000459c ble 0x44de                    |         goto label_1;
                                             |     }
    0x0000459e ldr r2, [pc, 0x1f8]           |     
    0x000045a0 movs r1, 0x7b                 |     r1 = 0x7b;
    0x000045a2 ldr r0, [pc, 0x1f8]           |     
    0x000045a4 movw r3, 0x81f                |     r3 = 0x81f;
    0x000045a6 lsls r7, r3, 0xc              |     r7 = r3 << 0xc;
    0x000045a8 ldr r4, [pc, 0x1f4]           |     
    0x000045aa movt r1, 0x4000               |     r1 = (r1 & 0xFFFF) | 0x40000000;
    0x000045ae add r2, pc                    |     r2 = 0x8d4c;
    0x000045b0 add r0, pc                    |     r0 = 0x8d52;
    0x000045b2 adds r2, 7                    |     r2 += 7;
    0x000045b4 add r4, pc                    |     r4 = 0x8d58;
    0x000045b6 str r0, [sp, 4]               |     var_4h = r0;
    0x000045b8 str r4, [sp]                  |     *(sp) = r4;
    0x000045ba movs r0, 7                    |     r0 = 7;
    0x000045bc bl 0x8430                     |     r0 = fcn_00008430 (r0, r1, r2, r3, r4);
    0x000045c0 cmp r0, 0                     |     
                                             |     if (r0 >= 0) {
    0x000045c2 bge 0x452c                    |         goto label_2;
                                             |     }
    0x000045c4 b 0x44e2                      |     goto label_0;
                                             | label_12:
    0x000045c6 ldr r0, [pc, 0x1dc]           |     
    0x000045c8 mov r1, r7                    |     r1 = r7;
    0x000045ca add r0, pc                    |     r0 = 0x8d74;
    0x000045cc blx 0x1f0c                    |     fcn_00001f0c ();
    0x000045ce ldc p6, c4, [lr], {5}         |     __asm ("ldc p6, c4, [lr], {5}");
                                             |     if (r0 == 0) {
    0x000045d2 cbnz r0, 0x45da               |         
    0x000045d4 ldr r3, [sp, 0x10]            |         r3 = var_10h;
    0x000045d6 cmp r3, r6                    |         
                                             |         if (r3 == r6) {
    0x000045d8 beq 0x4662                    |             goto label_18;
                                             |         }
                                             |     }
    0x000045da ldr r0, [pc, 0x1cc]           |     
    0x000045dc mov r1, r7                    |     r1 = r7;
    0x000045de add r0, pc                    |     r0 = 0x8d8c;
    0x000045e0 blx 0x1f0c                    |     r0 = fcn_00001f0c ();
    0x000045e4 cmp r0, 0                     |     
                                             |     if (r0 >= 0) {
    0x000045e6 blt 0x463c                    |         
    0x000045e8 ldr r5, [sp, 0x10]            |         r5 = var_10h;
    0x000045ea bl 0x7be0                     |         fcn_00007be0 ();
    0x000045ee movw r3, 0x7270               |         
    0x000045f2 movt r3, 0x6367               |         r3 = 0xNaN;
    0x000045f6 cmp r5, r3                    |         
                                             |         if (r5 == r3) {
    0x000045f8 beq 0x4680                    |             goto label_19;
                                             |         }
    0x000045fa movw r3, 0xe0eb               |         
    0x000045fe movt r3, 0x27                 |         r3 = 0x27e0eb;
    0x00004602 cmp r5, r3                    |         
                                             |         if (r5 == r3) {
    0x00004604 beq 0x469a                    |             goto label_20;
                                             |         }
    0x00004606 cmp r0, 6                     |         
                                             |         if (r0 > 6) {
    0x00004608 bgt 0x46de                    |             goto label_21;
                                             |         }
                                             | label_6:
    0x0000460a ldr r0, [pc, 0x154]           |         
    0x0000460c add r0, pc                    |         r0 = 0x8d72;
    0x0000460e blx 0x1f60                    |         fcn_00001f60 ();
    0x00004612 movs r2, 0                    |         r2 = 0;
    0x00004614 mov r3, r0                    |         r3 = r0;
    0x00004616 str r2, [r4, r3]              |         *((r4 + r3)) = r2;
    0x00004618 mov r0, r2                    |         r0 = r2;
    0x0000461a b 0x44e2                      |         goto label_0;
                                             | label_17:
    0x0000461c ldr r2, [pc, 0x18c]           |         
    0x0000461e movw r3, 0x7ff                |         r3 = 0x7ff;
    0x00004622 ldr r0, [pc, 0x18c]           |         
    0x00004624 ldr r1, [pc, 0x18c]           |         
    0x00004626 add r2, pc                    |         r2 = 0x8dd6;
    0x00004628 add r0, pc                    |         r0 = 0x8dde;
    0x0000462a adds r2, 7                    |         r2 += 7;
    0x0000462c add r1, pc                    |         r1 = 0x8de4;
    0x0000462e strd r1, r0, [sp]             |         __asm ("strd r1, r0, [sp]");
    0x00004632 movs r1, 0                    |         r1 = 0;
    0x00004634 movs r0, 7                    |         r0 = 7;
    0x00004636 bl 0x8430                     |         fcn_00008430 (r0, r1, r2, r3, r4);
    0x0000463a b 0x453a                      |         goto label_3;
                                             |     }
    0x0000463c blx 0x1de8                    |     r0 = sprintf_chk ()
    0x00004640 ldr r4, [r0]                  |     r4 = *(r0);
    0x00004642 bl 0x7be0                     |     fcn_00007be0 ();
    0x00004644 invalid                       |     
                                             |     if (r0 == 7) {
    0x00004648 beq 0x4728                    |         goto label_22;
                                             |     }
    0x0000464a cmp r0, 6                     |     
                                             |     if (r0 <= 6) {
    0x0000464c ble.w 0x451c                  |         goto label_4;
                                             |     }
    0x00004650 ldr r2, [pc, 0x164]           |     
    0x00004652 movw r3, 0x80e                |     r3 = 0x80e;
    0x00004656 ldr r5, [pc, 0x164]           |     
    0x00004658 ldr r0, [pc, 0x164]           |     
    0x0000465a add r2, pc                    |     r2 = 0x8e16;
    0x0000465c add r5, pc                    |     r5 = 0x8e1e;
    0x0000465e add r0, pc                    |     r0 = 0x8e22;
    0x00004660 b 0x455c                      |     goto label_5;
                                             | label_18:
    0x00004662 bl 0x7be0                     |     r0 = fcn_00007be0 ();
    0x00004666 cmp r0, 6                     |     
                                             |     if (r0 > 6) {
    0x00004668 bgt 0x46be                    |         goto label_23;
                                             |     }
                                             | label_7:
    0x0000466a ldr r0, [pc, 0xf8]            |     
    0x0000466c add r0, pc                    |     r0 = 0x8dd6;
    0x0000466e blx 0x1f60                    |     fcn_00001f60 ();
    0x00004670 invalid                       |     
    0x00004672 ldr r2, [pc, 0xf4]            |     r2 = *(0x476a);
    0x00004674 mov r3, r0                    |     r3 = r0;
    0x00004676 movs r1, 0                    |     r1 = 0;
    0x00004678 movs r0, 1                    |     r0 = 1;
    0x0000467a str r0, [r4, r3]              |     *((r4 + r3)) = r0;
    0x0000467c strb r1, [r2, r3]             |     *((r2 + r3)) = r1;
    0x0000467e b 0x44e2                      |     goto label_0;
                                             | label_19:
    0x00004680 cmp r0, 6                     |     
                                             |     if (r0 > 6) {
    0x00004682 bgt 0x4704                    |         goto label_24;
                                             |     }
                                             | label_8:
    0x00004684 ldr r0, [pc, 0xe4]            |     
    0x00004686 add r0, pc                    |     r0 = 0x8df6;
    0x00004688 blx 0x1f60                    |     fcn_00001f60 ();
    0x0000468a stcl p9, c4, [sl], -0xd8      |     __asm ("stcl p9, c4, [sl], -0xd8");
    0x0000468e movs r2, 1                    |     r2 = 1;
    0x00004690 mov r3, r0                    |     r3 = r0;
    0x00004692 mov r0, r2                    |     r0 = r2;
    0x00004694 str r2, [r4, r3]              |     *((r4 + r3)) = r2;
    0x00004696 strb r2, [r1, r3]             |     *((r1 + r3)) = r2;
    0x00004698 b 0x44e2                      |     goto label_0;
                                             | label_20:
    0x0000469a cmp r0, 6                     |     
                                             |     if (r0 <= 6) {
    0x0000469c ble 0x460a                    |         goto label_6;
                                             |     }
    0x0000469e ldr r2, [pc, 0x124]           |     
    0x000046a0 movw r3, 0x816                |     r3 = 0x816;
    0x000046a4 ldr r0, [pc, 0x120]           |     
    0x000046a6 ldr r1, [pc, 0x124]           |     
    0x000046a8 add r2, pc                    |     r2 = 0x8e72;
    0x000046aa add r0, pc                    |     r0 = 0x8e76;
    0x000046ac adds r2, 7                    |     r2 += 7;
    0x000046ae add r1, pc                    |     r1 = 0x8e80;
    0x000046b0 strd r1, r0, [sp]             |     __asm ("strd r1, r0, [sp]");
    0x000046b2 asrs r0, r0, 0x20             |     r0 >>= 0x20;
    0x000046b4 movs r1, 0                    |     r1 = 0;
    0x000046b6 movs r0, 7                    |     r0 = 7;
    0x000046b8 bl 0x8430                     |     fcn_00008430 (r0, r1, r2, r3, r4);
    0x000046bc b 0x460a                      |     goto label_6;
                                             | label_23:
    0x000046be ldr r2, [pc, 0x110]           |     
    0x000046c0 mov r1, r5                    |     r1 = r5;
    0x000046c2 ldr r0, [pc, 0x110]           |     
    0x000046c4 ldr r3, [pc, 0x110]           |     
    0x000046c6 add r2, pc                    |     r2 = 0x8e9c;
    0x000046c8 add r0, pc                    |     r0 = 0x8ea2;
    0x000046ca adds r2, 7                    |     r2 += 7;
    0x000046cc add r3, pc                    |     r3 = 0x8ea8;
    0x000046ce strd r3, r0, [sp]             |     __asm ("strd r3, r0, [sp]");
    0x000046d2 movw r3, 0x804                |     r3 = 0x804;
    0x000046d6 movs r0, 7                    |     r0 = 7;
    0x000046d8 bl 0x8430                     |     fcn_00008430 (r0, r1, r2, r3, r4);
    0x000046dc b 0x466a                      |     goto label_7;
                                             | label_21:
    0x000046de ldr r2, [pc, 0xfc]            |     
    0x000046e0 asrs r3, r5, 0x1f             |     r3 = r5 >> 0x1f;
    0x000046e2 ldr r0, [pc, 0xfc]            |     
    0x000046e4 ldr r1, [pc, 0xfc]            |     
    0x000046e6 add r2, pc                    |     r2 = 0x8ec8;
    0x000046e8 str r3, [sp, 0xc]             |     var_ch = r3;
    0x000046ea add r0, pc                    |     r0 = 0x8ed0;
    0x000046ec adds r2, 7                    |     r2 += 7;
    0x000046ee add r1, pc                    |     r1 = 0x8ed6;
    0x000046f0 movw r3, 0x819                |     r3 = 0x819;
    0x000046f4 strd r1, r0, [sp]             |     __asm ("strd r1, r0, [sp]");
    0x000046f6 asrs r0, r0, 0x20             |     r0 >>= 0x20;
    0x000046f8 movs r1, 0                    |     r1 = 0;
    0x000046fa str r5, [sp, 8]               |     var_8h = r5;
    0x000046fc movs r0, 7                    |     r0 = 7;
    0x000046fe bl 0x8430                     |     fcn_00008430 (r0, r1, r2, r3, r4);
    0x00004702 b 0x460a                      |     goto label_6;
                                             | label_24:
    0x00004704 ldr r2, [pc, 0xe0]            |     
    0x00004706 movw r3, 0x812                |     r3 = 0x812;
    0x0000470a ldr r0, [pc, 0xe0]            |     
    0x0000470c ldr r1, [pc, 0xe0]            |     
    0x0000470e add r2, pc                    |     r2 = 0x8efa;
    0x00004710 add r0, pc                    |     r0 = 0x8f02;
    0x00004712 adds r2, 7                    |     r2 += 7;
    0x00004714 add r1, pc                    |     r1 = 0x8f08;
    0x00004716 strd r1, r0, [sp]             |     __asm ("strd r1, r0, [sp]");
    0x0000471a movs r1, 0                    |     r1 = 0;
    0x0000471c movs r0, 7                    |     r0 = 7;
    0x0000471e bl 0x8430                     |     fcn_00008430 (r0, r1, r2, r3, r4);
    0x00004722 b 0x4684                      |     goto label_8;
                                             | label_15:
    0x00004724 blx 0x1bfc                    |     r0 = parse_printf_format ();
                                             | label_22:
    0x00004728 cmp r0, 6                     |     
                                             |     if (r0 <= 6) {
    0x0000472a ble.w 0x44de                  |         goto label_1;
                                             |     }
    0x0000472e ldr r2, [pc, 0xc4]            |     
    0x00004730 movw r3, 0x80b                |     r3 = 0x80b;
    0x00004734 ldr r5, [pc, 0xc0]            |     
    0x00004736 mov r1, r4                    |     r1 = r4;
    0x00004738 ldr r0, [pc, 0xc0]            |     
    0x0000473a add r2, pc                    |     r2 = 0x8f34;
    0x0000473c add r5, pc                    |     r5 = 0x8f38;
    0x0000473e adds r2, 7                    |     r2 += 7;
    0x00004740 add r0, pc                    |     r0 = 0x8f40;
    0x00004742 strd r0, r5, [sp]             |     __asm ("strd r0, r5, [sp]");
    0x00004746 movs r0, 7                    |     r0 = 7;
    0x00004748 bl 0x8430                     |     fcn_00008430 (r0, r1, r2, r3, r4);
    0x0000474c b 0x44de                      |     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/cdrom_id @ 0x5a54 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.00005a54 ()                  | void fcn_00005a54 (int16_t arg_190h, int16_t arg_378h, uint32_t arg1) {
                                             |     r0 = arg1;
    0x00005a54 cmp r0, 0                     |     
    0x00005a56 push {r3, lr}                 |     
                                             |     if (r0 >= 0) {
    0x00005a58 blt 0x5a76                    |         
    0x00005a5a blx 0x1fc0                    |         r0 = fcn_00001fc0 ();
    0x00005a5e cmp r0, 0                     |         
                                             |         if (r0 < 0) {
    0x00005a60 bge 0x5a72                    |             
    0x00005a62 blx 0x1de8                    |             r0 = sprintf_chk ()
    0x00005a66 ldr r0, [r0]                  |             r0 = *(r0);
    0x00005a68 cmp r0, 4                     |             
    0x00005a6a it ne                         |             
                                             |             if (r0 != 4) {
    0x00005a6c rsbne r0, r0, 0               |                 __asm ("rsbne r0, r0, 0");
                                             |             }
                                             |             if (r0 == 4) {
    0x00005a6e beq 0x5a72                    |                 goto label_0;
                                             |             }
    0x00005a70 pop {r3, pc}                  |             
                                             |         }
                                             | label_0:
    0x00005a72 movs r0, 0                    |         r0 = 0;
    0x00005a74 pop {r3, pc}                  |         
                                             |     }
    0x00005a76 ldr r1, [pc, 0x14]            |     
    0x00005a78 movs r2, 0x24                 |     r2 = 0x24;
    0x00005a7a ldr r3, [pc, 0x14]            |     
    0x00005a7c ldr r0, [pc, 0x14]            |     
    0x00005a7e add r1, pc                    |     r1 = 0xb510;
    0x00005a80 add r3, pc                    |     r3 = 0xb516;
    0x00005a82 adds r1, 7                    |     r1 += 7;
    0x00005a84 add r0, pc                    |     r0 = 0xb51c;
    0x00005a86 bl 0x8500                     |     fcn_00008500 (r0, r1, r2, r3, r4);
    0x00005a8a nop                           |     
    0x00005a8c str r0, [sp, 0x378]           |     *(arg_378h) = r0;
    0x00005a8e movs r0, r0                   |     
    0x00005a90 str r1, [sp, 0x190]           |     *(arg_190h) = r1;
    0x00005a92 movs r0, r0                   |     
    0x00005a94 ldrb r0, [r1, 0xb]            |     r0 = *((r1 + 0xb));
    0x00005a96 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/cdrom_id @ 0x5a98 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.00005a98 ()                  | void fcn_00005a98 (int16_t arg_30h, int16_t arg_108h, int16_t arg_248h, int16_t arg_2a0h, int16_t arg1) {
                                             |     r0 = arg1;
    0x00005a98 push {r3, r4, r5, lr}         |     
    0x00005a9a subs r4, r0, 0                |     r4 = r0 - 0;
                                             |     if (r4 < r0) {
    0x00005a9c bge 0x5aa4                    |         
    0x00005a9e mov.w r0, -1                  |         r0 = -1;
    0x00005aa2 pop {r3, r4, r5, pc}          |         
                                             |     }
    0x00005aa4 blx 0x1de8                    |     r0 = sprintf_chk ()
    0x00005aa8 mov r5, r0                    |     r5 = r0;
    0x00005aaa mov r0, r4                    |     r0 = r4;
    0x00005aac ldr r4, [r5]                  |     r4 = *(r5);
    0x00005aae bl 0x5a54                     |     fcn_00005a54 (r0, r1, r2);
    0x00005ab2 adds r0, 9                    |     r0 += 9;
                                             |     if (r0 != 9) {
    0x00005ab4 beq 0x5ac2                    |         
    0x00005ab6 cmp r4, 0                     |         
    0x00005ab8 mov.w r0, -1                  |         r0 = -1;
    0x00005abc it ge                         |         
                                             |         if (r4 < 0) {
    0x00005abe strge r4, [r5]                |             *(r5) = r4;
                                             |         }
    0x00005ac0 pop {r3, r4, r5, pc}          |         
                                             |     }
    0x00005ac2 ldr r1, [pc, 0x14]            |     
    0x00005ac4 movs r2, 0x4a                 |     r2 = 0x4a;
    0x00005ac6 ldr r3, [pc, 0x14]            |     
    0x00005ac8 ldr r0, [pc, 0x14]            |     
    0x00005aca add r1, pc                    |     r1 = 0xb5a8;
    0x00005acc add r3, pc                    |     r3 = 0xb5ae;
    0x00005ace adds r1, 7                    |     r1 += 7;
    0x00005ad0 add r0, pc                    |     r0 = 0xb5b4;
    0x00005ad2 bl 0x8500                     |     fcn_00008500 (r0, r1, r2, r3, r4);
    0x00005ad6 nop                           |     
    0x00005ad8 str r0, [sp, 0x248]           |     *(arg_248h) = r0;
    0x00005ada movs r0, r0                   |     
    0x00005adc str r1, [sp, 0x30]            |     *(arg_30h) = r1;
    0x00005ade movs r0, r0                   |     
    0x00005ae0 str r0, [sp, 0x2a0]           |     *(arg_2a0h) = r0;
    0x00005ae2 movs r0, r0                   |     
    0x00005ae4 push {r4, r5, r6, lr}         |     
                                             |     if (r0 != 0) {
    0x00005ae6 cbz r0, 0x5b12                |         
    0x00005ae8 mov r4, r0                    |         r4 = r0;
    0x00005aea movs r6, 0                    |         r6 = 0;
    0x00005aec blx 0x1de8                    |         r0 = sprintf_chk ()
    0x00005af0 mov r5, r0                    |         r5 = r0;
    0x00005af2 mov r0, r4                    |         r0 = r4;
    0x00005af4 str r6, [r5]                  |         *(r5) = r6;
    0x00005af6 blx 0x1eb8                    |         r0 = fcn_00001eb8 ();
                                             |         if (r0 != 0) {
    0x00005afa cbz r0, 0x5b10                |             
    0x00005afc ldr r0, [r5]                  |             r0 = *(r5);
    0x00005afe cmp r0, 4                     |             
    0x00005b00 it eq                         |             
                                             |             if (r0 != 4) {
    0x00005b02 moveq r0, r6                  |                 r0 = r6;
                                             |             }
                                             |             if (r0 == 4) {
    0x00005b04 beq 0x5b10                    |                 goto label_0;
                                             |             }
    0x00005b06 cmp r0, r6                    |             
    0x00005b08 ite gt                        |             
                                             |             if (r0 > r6) {
    0x00005b0a rsbgt r0, r0, 0               |                 __asm ("rsbgt r0, r0, 0");
                                             |             }
                                             |             if (r0 <= r6) {
    0x00005b0c mvnle r0, 4                   |                 r0 = ~4;
                                             |                 goto label_0;
                                             |             }
                                             |         }
                                             | label_0:
    0x00005b10 pop {r4, r5, r6, pc}          |         
                                             |     }
    0x00005b12 ldr r1, [pc, 0x14]            |     
    0x00005b14 movs r2, 0x66                 |     r2 = 0x66;
    0x00005b16 ldr r3, [pc, 0x14]            |     
    0x00005b18 ldr r0, [pc, 0x14]            |     
    0x00005b1a add r1, pc                    |     r1 = 0xb648;
    0x00005b1c add r3, pc                    |     r3 = 0xb64e;
    0x00005b1e adds r1, 7                    |     r1 += 7;
    0x00005b20 add r0, pc                    |     r0 = 0xb654;
    0x00005b22 bl 0x8500                     |     fcn_00008500 (r0, r1, r2, r3, r4);
    0x00005b26 nop                           |     
    0x00005b28 str r0, [sp, 0x108]           |     *(arg_108h) = r0;
    0x00005b2a movs r0, r0                   |     
    0x00005b2c str r0, [sp, 0x2b0]           |     *(arg_2a0h) = r0;
    0x00005b2e movs r0, r0                   |     
    0x00005b30 ldrh r4, [r0, 0x18]           |     r4 = *((r0 + 0x18));
    0x00005b32 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/cdrom_id @ 0x5b34 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.00005b34 ()                  | uint32_t fcn_00005b34 (int16_t arg_a8h, int16_t arg_158h, FILE * arg1) {
                                             |     r0 = arg1;
                                             |     if (r0 != 0) {
    0x00005b34 cbz r0, 0x5b58                |         
    0x00005b36 push {r3, r4, r5, lr}         |         
    0x00005b38 mov r4, r0                    |         r4 = r0;
    0x00005b3a blx 0x1de8                    |         r0 = sprintf_chk ()
    0x00005b3e mov r5, r0                    |         r5 = r0;
    0x00005b40 mov r0, r4                    |         r0 = r4;
    0x00005b42 ldr r4, [r5]                  |         r4 = *(r5);
    0x00005b44 bl 0x5ae4                     |         void (*0x5ae4)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3, r4);
    0x00005b48 adds r0, 9                    |         r0 += 9;
                                             |         if (r0 == 9) {
    0x00005b4a beq 0x5b5c                    |             goto label_0;
                                             |         }
    0x00005b4c cmp r4, 0                     |         
    0x00005b4e mov.w r0, 0                   |         r0 = 0;
    0x00005b52 it ge                         |         
                                             |         if (r4 < 0) {
    0x00005b54 strge r4, [r5]                |             *(r5) = r4;
                                             |         }
    0x00005b56 pop {r3, r4, r5, pc}          |         
                                             |     }
    0x00005b58 movs r0, 0                    |     r0 = 0;
    0x00005b5a bx lr                         |     return r0;
                                             | label_0:
    0x00005b5c ldr r1, [pc, 0x10]            |     
    0x00005b5e movs r2, 0x7d                 |     r2 = 0x7d;
    0x00005b60 ldr r3, [pc, 0x10]            |     
    0x00005b62 ldr r0, [pc, 0x14]            |     
    0x00005b64 add r1, pc                    |     r1 = 0xb6d8;
    0x00005b66 add r3, pc                    |     r3 = 0xb6de;
    0x00005b68 adds r1, 7                    |     r1 += 7;
    0x00005b6a add r0, pc                    |     r0 = 0xb6e8;
    0x00005b6c bl 0x8500                     |     fcn_00008500 (r0, r1, r2, r3, r4);
    0x00005b70 ldrh r0, [r7, 0x3e]           |     r0 = *((r7 + 0x3e));
    0x00005b72 movs r0, r0                   |     
    0x00005b74 str r0, [sp, 0x158]           |     *(arg_158h) = r0;
    0x00005b76 movs r0, r0                   |     
    0x00005b78 str r0, [sp, 0xa8]            |     *(arg_a8h) = r0;
    0x00005b7a 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/cdrom_id @ 0x5b7c */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.00005b7c ()                          | void fcn_00005b7c (int16_t arg_50h, int16_t arg1) {
                                                     |     r0 = arg1;
    0x00005b7c push {r3, r4, r5, r6, r7, lr}         |     
    0x00005b7e mov r4, r0                            |     r4 = r0;
    0x00005b80 blx 0x1de8                            |     sprintf_chk ()
    0x00005b84 cmp r4, 2                             |     
    0x00005b86 mov r5, r0                            |     r5 = r0;
    0x00005b88 ldr r7, [r0]                          |     r7 = *(r0);
    0x00005b8a bls 0x5b98                            |     
                                                     |     while (r0 < 0) {
                                                     | label_0:
    0x00005b8c mov r6, r4                            |         r6 = r4;
    0x00005b8e cmp r7, 0                             |         
    0x00005b90 mov r0, r6                            |         r0 = r6;
    0x00005b92 it ge                                 |         
                                                     |         if (r7 < 0) {
    0x00005b94 strge r7, [r5]                        |             *(r5) = r7;
                                                     |         }
    0x00005b96 pop {r3, r4, r5, r6, r7, pc}          |         
    0x00005b98 movs r2, 0                            |         r2 = 0;
    0x00005b9a movs r1, 1                            |         r1 = 1;
    0x00005b9c mov r0, r4                            |         r0 = r4;
    0x00005b9e blx 0x1edc                            |         r0 = fcn_00001edc ();
    0x00005ba2 cmp r0, 0                             |         
    0x00005ba4 blt 0x5b8c                            |         
                                                     |     }
    0x00005ba6 ands r1, r0, 1                        |     r1 = r0 & 1;
    0x00005baa mov.w r2, 3                           |     r2 = 3;
    0x00005bae it ne                                 |     
                                                     |     if (r1 != r0) {
    0x00005bb0 movwne r1, 0x406                      |         __asm ("movwne r1, aav.0x000000ff");
                                                     |     }
    0x00005bb4 mov r0, r4                            |     r0 = r4;
    0x00005bb6 blx 0x1edc                            |     r0 = fcn_00001edc ();
    0x00005bba cmp r0, 0                             |     
    0x00005bbc mov r6, r0                            |     r6 = r0;
                                                     |     if (r0 < 0) {
    0x00005bbe blt 0x5b8c                            |         goto label_0;
                                                     |     }
    0x00005bc0 cmp r0, 2                             |     
                                                     |     if (r0 > 2) {
    0x00005bc2 ble 0x5bd4                            |         
    0x00005bc4 mov r0, r4                            |         r0 = r4;
    0x00005bc6 blx 0x1fc0                            |         fcn_00001fc0 ();
    0x00005bca cmp r7, 0                             |         
    0x00005bcc mov r0, r6                            |         r0 = r6;
    0x00005bce it ge                                 |         
                                                     |         if (r7 < 0) {
    0x00005bd0 strge r7, [r5]                        |             *(r5) = r7;
                                                     |         }
    0x00005bd2 pop {r3, r4, r5, r6, r7, pc}          |         
                                                     |     }
    0x00005bd4 ldr r1, [pc, 0x14]                    |     
    0x00005bd6 movw r2, 0x22b                        |     r2 = 0x22b;
    0x00005bda ldr r3, [pc, 0x14]                    |     
    0x00005bdc ldr r0, [pc, 0x14]                    |     
    0x00005bde add r1, pc                            |     r1 = 0xb7ce;
    0x00005be0 add r3, pc                            |     r3 = 0xb7d6;
    0x00005be2 adds r1, 7                            |     r1 += 7;
    0x00005be4 add r0, pc                            |     r0 = 0xb7dc;
    0x00005be6 bl 0x8500                             |     fcn_00008500 (r0, r1, r2, r3, r4);
    0x00005bea nop                                   |     
    0x00005bec ldrh r6, [r7, 0x3a]                   |     r6 = *((r7 + 0x3a));
    0x00005bee movs r0, r0                           |     
    0x00005bf0 str r0, [sp, 0x50]                    |     *(arg_50h) = r0;
    0x00005bf2 movs r0, r0                           |     
    0x00005bf4 ldrh r4, [r1, 0x3e]                   |     r4 = *((r1 + 0x3e));
    0x00005bf6 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/cdrom_id @ 0x5cb8 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.00005cb8 ()                  | void fcn_00005cb8 (int16_t arg3) {
                                             |     r2 = arg3;
    0x00005cb8 push {r3, r4, r5, lr}         |     
                                             |     if (r2 != 0) {
    0x00005cba cbz r2, 0x5cd2                |         
    0x00005cbc mov r4, r2                    |         r4 = r2;
    0x00005cbe blx 0x1f30                    |         r0 = fcn_00001f30 ();
    0x00005cc2 mov r5, r0                    |         r5 = r0;
                                             |         if (r0 == 0) {
    0x00005cc4 cbz r0, 0x5ce6                |             goto label_0;
                                             |         }
    0x00005cc6 movs r1, 2                    |         r1 = 2;
    0x00005cc8 blx 0x1e3c                    |         fgetc (r0);
    0x00005ccc movs r0, 0                    |         r0 = 0;
    0x00005cce str r5, [r4]                  |         *(r4) = r5;
    0x00005cd0 pop {r3, r4, r5, pc}          |         
                                             |     }
    0x00005cd2 ldr r1, [pc, 0x1c]            |     
    0x00005cd4 movs r2, 0x2d                 |     r2 = 0x2d;
    0x00005cd6 ldr r3, [pc, 0x1c]            |     
    0x00005cd8 ldr r0, [pc, 0x1c]            |     
    0x00005cda add r1, pc                    |     r1 = 0xb9d0;
    0x00005cdc add r3, pc                    |     r3 = 0xb9d6;
    0x00005cde adds r1, 7                    |     r1 += 7;
    0x00005ce0 add r0, pc                    |     r0 = 0xb9dc;
    0x00005ce2 bl 0x8500                     |     fcn_00008500 (r0, r1, r2, r3, r4);
    0x00005ce4 invalid                       |     
                                             | label_0:
    0x00005ce6 blx 0x1de8                    |     r0 = sprintf_chk ()
    0x00005cea ldr r0, [r0]                  |     r0 = *(r0);
    0x00005cec rsbs r0, r0, 0                |     r0 -= ;
    0x00005cee 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/cdrom_id @ 0x5cfc */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00005cfc ()                                  | void fcn_00005cfc (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;
    0x00005cfc svcmi 0xf0e92d                                |     __asm ("svcmi aav.0x000000ff");
    0x00005d00 sub sp, 0x8c                                  |     
    0x00005d02 strd r3, r2, [sp, 0xc]                        |     __asm ("strd r3, r2, [var_10h]");
    0x00005d06 mov r8, r1                                    |     r8 = r1;
    0x00005d08 mov.w r1, 0x100                               |     r1 = 0x100;
    0x00005d0c ldr r2, [pc, 0x1dc]                           |     
    0x00005d0e movt r1, 8                                    |     r1 = (r1 & 0xFFFF) | 0x80000;
    0x00005d12 ldr r3, [pc, 0x1dc]                           |     r3 = *(0x5ef2);
    0x00005d14 add r2, pc                                    |     r2 = 0xbc04;
    0x00005d16 ldr r3, [r2, r3]                              |     
    0x00005d18 ldr r3, [r3]                                  |     r3 = *(0xbc04);
    0x00005d1a str r3, [sp, 0x84]                            |     var_84h = r3;
    0x00005d1c mov.w r3, 0                                   |     r3 = 0;
    0x00005d20 blx 0x1cf4                                    |     r0 = fcn_00001cf4 ();
    0x00005d24 subs r4, r0, 0                                |     r4 = r0 - 0;
                                                             |     if (r4 < r0) {
    0x00005d26 blt.w 0x5e4c                                  |         goto label_6;
                                                             |     }
    0x00005d2a movs r3, 1                                    |     
    0x00005d2c movt r3, 0xffc0                               |     r3 = 0x-3fffff;
    0x00005d30 add r3, r8                                    |     r3 += r8;
    0x00005d32 cmn.w r3, 0x400000                            |     
                                                             |     if (r3 <= 0x400000) {
    0x00005d36 blo.w 0x5e6e                                  |         goto label_7;
                                                             |     }
    0x00005d3a movw sl, 0xfffe                               |     
    0x00005d3e mov r3, r8                                    |     r3 = r8;
    0x00005d40 movt sl, 0x3f                                 |     sl = 0x3ffffe;
    0x00005d44 mov.w sb, 3                                   |     sb = 3;
    0x00005d48 cmp r8, sl                                    |     
    0x00005d4a str.w sl, [sp, 0x14]                          |     __asm ("str.w sl, [var_14h]");
    0x00005d4e it hs                                         |     
                                                             |     if (r8 < sl) {
    0x00005d50 movhs r3, sl                                  |         r3 = sl;
                                                             |     }
    0x00005d52 add.w fp, sp, 0x18                            |     
    0x00005d56 mov sl, r3                                    |     sl = r3;
                                                             | label_0:
    0x00005d58 mov r1, fp                                    |     r1 = fp;
    0x00005d5a mov r0, r4                                    |     r0 = r4;
    0x00005d5c blx 0x1f54                                    |     r0 = fcn_00001f54 ();
    0x00005d60 cmp r0, 0                                     |     
                                                             |     if (r0 < 0) {
    0x00005d62 blt 0x5e4c                                    |         goto label_6;
                                                             |     }
    0x00005d64 ldr r3, [sp, 0x28]                            |     r3 = var_28h;
    0x00005d66 and r3, r3, 0xf000                            |     r3 &= 0xf000;
    0x00005d6a cmp.w r3, 0x8000                              |     
                                                             |     if (r3 != 0x8000) {
    0x00005d6e bne.w 0x5e84                                  |         goto label_8;
                                                             |     }
    0x00005d72 ldrd r0, r3, [sp, 0x48]                       |     __asm ("ldrd r0, r3, [var_48h]");
    0x00005d76 cmp r0, 1                                     |     
    0x00005d78 sbcs r2, r3, 0                                |     __asm ("sbcs r2, r3, 0");
                                                             |     if (r0 < 1) {
    0x00005d7c blt 0x5e34                                    |         goto label_9;
                                                             |     }
    0x00005d7e cmp.w sb, 1                                   |     
                                                             |     if (sb == 1) {
    0x00005d82 beq 0x5dfa                                    |         goto label_10;
                                                             |     }
    0x00005d84 cmp.w r0, -0x80000000                         |     
    0x00005d88 sbcs r3, r3, 0                                |     __asm ("sbcs r3, r3, 0");
                                                             |     if (r0 < -0x80000000) {
    0x00005d8c blt 0x5e5a                                    |         goto label_11;
                                                             |     }
    0x00005d8e cmp.w r8, -1                                  |     
                                                             |     if (r8 == -1) {
    0x00005d92 beq 0x5e66                                    |         goto label_12;
                                                             |     }
    0x00005d94 mov r0, r8                                    |     r0 = r8;
                                                             | label_3:
    0x00005d96 add.w sb, sb, -1                              |     sb += -1;
                                                             | label_1:
    0x00005d9a adds r0, 1                                    |     r0++;
    0x00005d9c blx 0x1d24                                    |     r0 = fcn_00001d24 ();
    0x00005da0 mov r5, r0                                    |     r5 = r0;
    0x00005da2 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00005da4 beq.w 0x5ee6                                  |         goto label_13;
                                                             |     }
    0x00005da8 blx 0x1df4                                    |     r0 = vasprintf_chk ()
    0x00005dac subs r7, r0, 1                                |     r7 = r0 - 1;
    0x00005dae cmp r7, sl                                    |     
    0x00005db0 it hs                                         |     
                                                             |     if (r7 < sl) {
    0x00005db2 movhs r7, sl                                  |         r7 = sl;
                                                             |     }
    0x00005db4 adds r6, r7, 1                                |     r6 = r7 + 1;
    0x00005db6 b 0x5dc2                                      |     
                                                             |     while (r0 < 0) {
    0x00005db8 blx 0x1de8                                    |         r0 = sprintf_chk ()
    0x00005dbc ldr r0, [r0]                                  |         r0 = *(r0);
    0x00005dbe cmp r0, 4                                     |         
                                                             |         if (r0 != 4) {
    0x00005dc0 bne 0x5e08                                    |             goto label_14;
                                                             |         }
    0x00005dc2 mov r2, r6                                    |         r2 = r6;
    0x00005dc4 mov r1, r5                                    |         r1 = r5;
    0x00005dc6 mov r0, r4                                    |         r0 = r4;
    0x00005dc8 blx 0x1b50                                    |         r0 = fcn_00001b50 ();
    0x00005dcc cmp r0, 0                                     |         
    0x00005dce blt 0x5db8                                    |         
                                                             |     }
    0x00005dd0 cmp r7, r0                                    |     
    0x00005dd2 mov r6, r0                                    |     r6 = r0;
                                                             |     if (r7 >= r0) {
    0x00005dd4 bhs 0x5e92                                    |         goto label_15;
                                                             |     }
    0x00005dd6 cmp r8, r0                                    |     
                                                             |     if (r8 <= r0) {
    0x00005dd8 blo 0x5eb8                                    |         goto label_16;
                                                             |     }
    0x00005dda cmp.w sb, 0                                   |     
                                                             |     if (sb == 0) {
    0x00005dde beq 0x5e8c                                    |         goto label_17;
                                                             |     }
    0x00005de0 movs r3, 0                                    |     r3 = 0;
    0x00005de2 mov r0, r4                                    |     r0 = r4;
    0x00005de4 str r3, [sp]                                  |     *(sp) = r3;
    0x00005de6 movs r2, 0                                    |     r2 = 0;
    0x00005de8 movs r3, 0                                    |     r3 = 0;
    0x00005dea blx 0x1cb8                                    |     fcn_00001cb8 ();
    0x00005dee cmp r1, 0                                     |     
                                                             |     if (r1 < 0) {
    0x00005df0 blt 0x5e02                                    |         goto label_18;
                                                             |     }
    0x00005df2 mov r0, r5                                    |     r0 = r5;
    0x00005df4 blx 0x1b80                                    |     fcn_00001b80 ();
    0x00005df8 b 0x5d58                                      |     goto label_0;
                                                             |     do {
                                                             | label_10:
    0x00005dfa mov r0, sl                                    |         r0 = sl;
    0x00005dfc mov.w sb, 0                                   |         sb = 0;
    0x00005e00 b 0x5d9a                                      |         goto label_1;
                                                             | label_18:
    0x00005e02 blx 0x1de8                                    |         r0 = sprintf_chk ()
    0x00005e06 ldr r0, [r0]                                  |         r0 = *(r0);
                                                             | label_14:
    0x00005e08 rsb.w r8, r0, 0                               |         r8 = r0 - ;
                                                             | label_2:
    0x00005e0c mov r0, r4                                    |         r0 = r4;
    0x00005e0e bl 0x5a98                                     |         fcn_00005a98 (r0, r1, r2, r3, r4);
    0x00005e12 mov r0, r5                                    |         r0 = r5;
    0x00005e14 blx 0x1b80                                    |         fcn_00001b80 ();
    0x00005e16 invalid                                       |         
    0x00005e1a ldr r3, [pc, 0xd4]                            |         r3 = *(0x5ef2);
    0x00005e1c add r2, pc                                    |         r2 += pc;
    0x00005e1e ldr r3, [r2, r3]                              |         r3 = *((r2 + r3));
    0x00005e20 ldr r2, [r3]                                  |         r2 = *(0x5ef2);
    0x00005e22 ldr r3, [sp, 0x84]                            |         r3 = var_84h;
    0x00005e24 eors r2, r3                                   |         r2 ^= r3;
    0x00005e26 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x00005e2a bne 0x5ee2                                    |             goto label_19;
                                                             |         }
    0x00005e2c mov r0, r8                                    |         r0 = r8;
    0x00005e2e add sp, 0x8c                                  |         
    0x00005e30 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |         
                                                             | label_9:
    0x00005e34 cmp.w sb, 1                                   |         
    0x00005e38 beq 0x5dfa                                    |         
                                                             |     } while (sb == 1);
    0x00005e3a bl 0x9318                                     |     fcn_00009318 ();
    0x00005e3e subs r0, 1                                    |     r0--;
    0x00005e40 mov.w sb, 1                                   |     sb = 1;
    0x00005e44 cmp r0, sl                                    |     
    0x00005e46 it hs                                         |     
                                                             |     if (r0 < sl) {
    0x00005e48 movhs r0, sl                                  |         r0 = sl;
                                                             |     }
    0x00005e4a b 0x5d9a                                      |     goto label_1;
                                                             | label_6:
    0x00005e4c blx 0x1de8                                    |     r0 = sprintf_chk ()
    0x00005e50 ldr r0, [r0]                                  |     r0 = *(r0);
    0x00005e52 movs r5, 0                                    |     r5 = 0;
    0x00005e54 rsb.w r8, r0, 0                               |     r8 = r0 - ;
    0x00005e58 b 0x5e0c                                      |     goto label_2;
                                                             | label_11:
    0x00005e5a ldr r3, [sp, 0x14]                            |     r3 = var_14h;
    0x00005e5c cmp r0, r8                                    |     
    0x00005e5e it hs                                         |     
                                                             |     if (r0 < r8) {
    0x00005e60 movhs r0, r8                                  |         r0 = r8;
                                                             |     }
    0x00005e62 cmp r0, r3                                    |     
                                                             |     if (r0 < r3) {
    0x00005e64 bls 0x5d96                                    |         goto label_3;
                                                             |     }
                                                             | label_12:
    0x00005e66 movs r5, 0                                    |     r5 = 0;
    0x00005e68 mvn r8, 0x1a                                  |     r8 = ~0x1a;
    0x00005e6c b 0x5e0c                                      |     goto label_2;
                                                             | label_7:
    0x00005e6e ldr r1, [pc, 0x88]                            |     
    0x00005e70 mov.w r2, 0x192                               |     r2 = 0x192;
    0x00005e74 ldr r3, [pc, 0x84]                            |     
    0x00005e76 ldr r0, [pc, 0x88]                            |     
    0x00005e78 add r1, pc                                    |     r1 = 0xbd76;
    0x00005e7a add r3, pc                                    |     r3 = 0xbd7a;
    0x00005e7c adds r1, 7                                    |     r1 += 7;
    0x00005e7e add r0, pc                                    |     r0 = 0xbd84;
    0x00005e80 bl 0x8500                                     |     fcn_00008500 (r0, r1, r2, r3, r4);
                                                             | label_8:
    0x00005e84 movs r5, 0                                    |     r5 = 0;
    0x00005e86 mvn r8, 8                                     |     r8 = ~8;
    0x00005e8a b 0x5e0c                                      |     goto label_2;
                                                             | label_17:
    0x00005e8c mvn r8, 0x1a                                  |     r8 = ~0x1a;
    0x00005e90 b 0x5e0c                                      |     goto label_2;
                                                             | label_15:
    0x00005e92 mov.w r8, 0                                   |     r8 = 0;
                                                             |     do {
    0x00005e96 ldr r3, [sp, 0x10]                            |         r3 = var_10h;
                                                             |         if (r3 != 0) {
    0x00005e98 cbz r3, 0x5eac                                |             
    0x00005e9a ldr r3, [sp, 0xc]                             |             r3 = var_ch;
                                                             |             if (r3 == 0) {
    0x00005e9c cbz r3, 0x5ece                                |                 goto label_20;
                                                             |             }
                                                             | label_5:
    0x00005e9e cmp r6, r7                                    |             
                                                             |             if (r6 <= r7) {
    0x00005ea0 blo 0x5ec0                                    |                 goto label_21;
                                                             |             }
                                                             | label_4:
    0x00005ea2 ldr r3, [sp, 0x10]                            |             r3 = var_10h;
    0x00005ea4 str r5, [r3]                                  |             *(r3) = r5;
    0x00005ea6 movs r3, 0                                    |             r3 = 0;
    0x00005ea8 strb r3, [r5, r6]                             |             *((r5 + r6)) = r3;
    0x00005eaa mov r5, r3                                    |             r5 = r3;
                                                             |         }
    0x00005eac ldr r3, [sp, 0xc]                             |         r3 = var_ch;
                                                             |         if (r3 != 0) {
    0x00005eae cbz r3, 0x5eb2                                |             
    0x00005eb0 str r6, [r3]                                  |             *(r3) = r6;
                                                             |         }
    0x00005eb2 eor r8, r8, 1                                 |         r8 ^= 1;
    0x00005eb6 b 0x5e0c                                      |         goto label_2;
                                                             | label_16:
    0x00005eb8 mov r6, r7                                    |         r6 = r7;
    0x00005eba mov.w r8, 1                                   |         r8 = 1;
    0x00005ebc lsrs r1, r0, 0x20                             |         r1 = r0 >> 0x20;
    0x00005ebe b 0x5e96                                      |         
                                                             |     } while (1);
                                                             | label_21:
    0x00005ec0 adds r1, r6, 1                                |     r1 = r6 + 1;
    0x00005ec2 mov r0, r5                                    |     r0 = r5;
    0x00005ec4 blx 0x1c48                                    |     r0 = fcn_00001c48 ();
                                                             |     if (r0 == 0) {
    0x00005ec8 cbz r0, 0x5ee6                                |         goto label_13;
                                                             |     }
    0x00005eca mov r5, r0                                    |     r5 = r0;
    0x00005ecc b 0x5ea2                                      |     goto label_4;
                                                             | label_20:
    0x00005ece mov r2, r6                                    |     r2 = r6;
    0x00005ed0 mov r1, r3                                    |     r1 = r3;
    0x00005ed2 mov r0, r5                                    |     r0 = r5;
    0x00005ed4 blx 0x1e88                                    |     r0 = fcn_00001e88 ();
    0x00005ed8 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00005eda beq 0x5e9e                                    |         goto label_5;
                                                             |     }
    0x00005edc mvn r8, 0x49                                  |     r8 = ~0x49;
    0x00005ee0 b 0x5e0c                                      |     goto label_2;
                                                             | label_19:
    0x00005ee2 blx 0x1bfc                                    |     parse_printf_format ();
                                                             | label_13:
    0x00005ee6 mvn r8, 0xb                                   |     r8 = ~0xb;
    0x00005eea b 0x5e0c                                      |     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/cdrom_id @ 0x60a4 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.000060a4 ()                      | void fcn_000060a4 (int16_t arg_18h, uint32_t arg1, int16_t arg2, int16_t arg3, uint32_t arg4) {
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
                                                 |     r2 = arg3;
                                                 |     r3 = arg4;
    0x000060a4 cmp r3, 0                         |     
    0x000060a6 it eq                             |     
                                                 |     if (r3 == 0) {
    0x000060a8 cmneq r0, 0x64                    |         __asm ("cmneq arg_18hx64");
                                                 |     }
    0x000060ac push {r3, r4, r5, r6, r7, lr}     |     
    0x000060ae mov r7, r1                        |     r7 = r1;
    0x000060b0 mov r6, r2                        |     r6 = r2;
                                                 |     if (r3 != 0) {
    0x000060b2 bne 0x60c8                        |         goto label_1;
                                                 |     }
    0x000060b4 mov r1, r2                        |     r1 = r2;
    0x000060b6 mov r0, r7                        |     r0 = r7;
    0x000060b8 blx 0x1f30                        |     r0 = fcn_00001f30 ();
    0x000060bc mov r3, r0                        |     r3 = r0;
                                                 |     if (r0 == 0) {
    0x000060be cbz r0, 0x60f8                    |         goto label_2;
                                                 |     }
                                                 | label_0:
    0x000060c0 ldr r2, [sp, 0x18]                |     r2 = *(arg_18h);
    0x000060c2 movs r0, 0                        |     r0 = 0;
    0x000060c4 str r3, [r2]                      |     *(r2) = r3;
                                                 |     do {
    0x000060c6 pop {r3, r4, r5, r6, r7, pc}      |         
                                                 | label_1:
    0x000060c8 mov r4, r0                        |         r4 = r0;
    0x000060ca mov r0, r2                        |         r0 = r2;
    0x000060cc mov r5, r3                        |         r5 = r3;
    0x000060ce bl 0x5bf8                         |         r0 = fcn_00005bf8 (r0);
    0x000060d2 cmp r0, 0                         |         
    0x000060d4 blt 0x60c6                        |         
                                                 |     } while (r0 < 0);
    0x000060d6 orr.w r2, r5, r0                  |     r2 = r5 | r0;
    0x000060da mov r1, r7                        |     r1 = r7;
    0x000060dc mov r0, r4                        |     r0 = r4;
    0x000060de blx 0x1ba4                        |     r0 = fcn_00001ba4 ();
    0x000060e2 subs r4, r0, 0                    |     r4 = r0 - 0;
                                                 |     if (r4 < r0) {
    0x000060e4 blt 0x60f8                        |         goto label_2;
                                                 |     }
    0x000060e6 mov r1, r6                        |     r1 = r6;
    0x000060e8 blx 0x1ab8                        |     r0 = fdopen ();
    0x000060ec mov r3, r0                        |     r3 = r0;
    0x000060ee cmp r0, 0                         |     
                                                 |     if (r0 != 0) {
    0x000060f0 bne 0x60c0                        |         goto label_0;
                                                 |     }
    0x000060f2 mov r0, r4                        |     r0 = r4;
    0x000060f4 bl 0x5a98                         |     r0 = fcn_00005a98 (r0, r1, r2, r3, r4);
                                                 | label_2:
    0x000060f8 blx 0x1de8                        |     r0 = sprintf_chk ()
    0x000060fc ldr r0, [r0]                      |     r0 = *(r0);
    0x000060fe rsbs r0, r0, 0                    |     r0 -= ;
    0x00006100 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/cdrom_id @ 0x6104 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.00006104 ()                  | void fcn_00006104 (int16_t arg1, int16_t arg2) {
                                             |     r0 = arg1;
                                             |     r1 = arg2;
                                             |     if (? >= ?) {
    0x00006104 mvnlt fp, r0, ror r5          |         
                                             |     }
    0x00006108 mov r5, r1                    |     r5 = r1;
    0x0000610a mov r4, r0                    |     r4 = r0;
    0x0000610c blx 0x1de8                    |     sprintf_chk ()
    0x0000610e cdp p3, 6, c2, c12, c0, 0     |     __asm ("cdp p3, 6, c2, c12, c0, 0");
    0x00006112 mov r6, r0                    |     r6 = r0;
    0x00006114 str r3, [r6]                  |     *(r6) = r3;
    0x00006116 mov r0, r4                    |     r0 = r4;
    0x00006118 blx 0x1e54                    |     r0 = prctl ();
    0x0000611c adds r2, r0, 1                |     r2 = r0 + 1;
    0x0000611e mov r3, r0                    |     r3 = r0;
                                             |     if (r2 == r0) {
    0x00006120 beq 0x612a                    |         goto label_1;
                                             |     }
    0x00006122 movs r0, 1                    |     r0 = 1;
                                             |     if (r5 == 0) {
    0x00006124 cbz r5, 0x6128                |         goto label_0;
                                             |     }
    0x00006126 strb r3, [r5]                 |     *(r5) = r3;
                                             |     do {
                                             | label_0:
    0x00006128 pop {r4, r5, r6, pc}          |         
                                             | label_1:
    0x0000612a mov r0, r4                    |         r0 = r4;
    0x0000612c blx 0x1b8c                    |         r0 = fcn_00001b8c ();
                                             |         if (r0 == 0) {
    0x00006130 cbz r0, 0x6158                |             goto label_2;
                                             |         }
    0x00006132 ldr r0, [r6]                  |         r0 = *(r6);
    0x00006134 cmp r0, 0                     |         
    0x00006136 it gt                         |         
                                             |         if (r0 > 0) {
    0x00006138 rsbgt r0, r0, 0               |             __asm ("rsbgt r0, r0, 0");
                                             |         }
    0x0000613a bgt 0x6128                    |         
                                             |     } while (r0 > 0);
    0x0000613c mvn r0, 4                     |     r0 = ~4;
    0x00006140 pop {r4, r5, r6, pc}          |     
    0x00006142 ldr r1, [pc, 0x1c]            |     
    0x00006144 movw r2, 0x55d                |     r2 = 0x55d;
    0x00006148 ldr r3, [pc, 0x18]            |     
    0x0000614a ldr r0, [pc, 0x1c]            |     
    0x0000614c add r1, pc                    |     r1 = 0xc2b2;
    0x0000614e add r3, pc                    |     r3 = 0xc2b6;
    0x00006150 adds r1, 7                    |     r1 += 7;
    0x00006152 add r0, pc                    |     r0 = 0xc2c0;
    0x00006154 bl 0x8500                     |     fcn_00008500 (r0, r1, r2, r3, r4);
                                             | label_2:
    0x00006158 cmp r5, 0                     |     
                                             |     if (r5 == 0) {
    0x0000615a beq 0x6128                    |         goto label_0;
                                             |     }
    0x0000615c strb r0, [r5]                 |     *(r5) = r0;
    0x0000615e 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/cdrom_id @ 0x63fc */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.000063fc ()                          | void fcn_000063fc (int16_t arg1, uint32_t arg2, int16_t arg3, int16_t arg4) {
                                                     |     int16_t var_10h;
                                                     |     int16_t var_14h;
                                                     |     int16_t var_8ch_2;
                                                     |     int16_t var_b8h;
                                                     |     int16_t var_4h;
                                                     |     int16_t var_c0h;
                                                     |     int16_t var_c4h;
                                                     |     int16_t var_10h_2;
                                                     |     int32_t var_14h_2;
                                                     |     int32_t var_14h_3;
                                                     |     int16_t var_20h;
                                                     |     int32_t var_10h_3;
                                                     |     int16_t var_8ch;
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
                                                     |     r2 = arg3;
                                                     |     r3 = arg4;
    0x000063fc push.w {r4, r5, r6, r7, r8, lr}       |     
    0x00006400 mov r6, r2                            |     r6 = r2;
    0x00006402 ldr r2, [pc, 0xcc]                    |     
    0x00006404 mov r7, r3                            |     r7 = r3;
    0x00006406 sub sp, 0x90                          |     
    0x00006408 ldr r3, [pc, 0xc8]                    |     r3 = *(0x64d4);
    0x0000640a add r2, pc                            |     r2 = 0xc8e0;
    0x0000640c ldr r3, [r2, r3]                      |     
    0x0000640e ldr r3, [r3]                          |     r3 = *(0xc8e0);
    0x00006410 str r3, [sp, 0x8c]                    |     var_8ch = r3;
    0x00006412 mov.w r3, 0                           |     r3 = 0;
                                                     |     if (r0 == 0) {
    0x00006416 cbz r0, 0x6432                        |         goto label_2;
                                                     |     }
    0x00006418 mov r5, r0                            |     r5 = r0;
    0x0000641a cmp r1, 0                             |     
                                                     |     if (r1 == 0) {
    0x0000641c beq 0x64b2                            |         goto label_3;
                                                     |     }
                                                     | label_1:
    0x0000641e ldr.w r8, [r1, 0x10]                  |     r8 = var_10h_3;
    0x00006422 tst.w r8, 7                           |     
                                                     |     if ((r8 & 7) == 0) {
    0x00006426 beq 0x6432                            |         goto label_2;
                                                     |     }
    0x00006428 bl 0x7be0                             |     fcn_00007be0 ();
                                                     |     if (r6 == 0) {
    0x0000642c cbz r6, 0x644e                        |         goto label_4;
                                                     |     }
    0x0000642e cmp r0, 3                             |     
                                                     |     if (r0 > 3) {
    0x00006430 bgt 0x647c                            |         goto label_5;
                                                     |     }
                                                     |     do {
                                                     | label_2:
    0x00006432 movs r0, 0                            |         r0 = 0;
                                                     | label_0:
    0x00006434 ldr r2, [pc, 0xa0]                    |         
    0x00006436 ldr r3, [pc, 0x9c]                    |         r3 = *(0x64d6);
    0x00006438 add r2, pc                            |         r2 = 0xc914;
    0x0000643a ldr r3, [r2, r3]                      |         r3 = *(0xc914);
    0x0000643c ldr r2, [r3]                          |         r2 = *(0xc914);
    0x0000643e ldr r3, [sp, 0x8c]                    |         r3 = var_8ch;
    0x00006440 eors r2, r3                           |         r2 ^= r3;
    0x00006442 mov.w r3, 0                           |         r3 = 0;
                                                     |         if (r2 != r3) {
    0x00006446 bne 0x64cc                            |             goto label_6;
                                                     |         }
    0x00006448 add sp, 0x90                          |         
    0x0000644a pop.w {r4, r5, r6, r7, r8, pc}        |         
                                                     | label_4:
    0x0000644e cmp r0, 3                             |         
    0x00006450 ble 0x6432                            |         
                                                     |     } while (r0 <= 3);
    0x00006452 ldr r2, [pc, 0x88]                    |     
    0x00006454 ubfx r3, r8, 0, 0xc                   |     r3 = (r8 >> 0) & ((1 << 0xc) - 1);
    0x00006458 ldr r0, [pc, 0x84]                    |     
    0x0000645a ldr r1, [pc, 0x88]                    |     
    0x0000645c add r2, pc                            |     r2 = 0xc93e;
    0x0000645e strd r5, r3, [sp, 8]                  |     __asm ("strd r5, r3, [var_c0h]");
    0x00006462 add r0, pc                            |     r0 = 0xc946;
    0x00006464 movw r3, 0x589                        |     r3 = 0x589;
    0x00006466 strh r1, [r1, r6]                     |     *((r1 + r6)) = r1;
    0x00006468 add r1, pc                            |     r1 = 0xc952;
    0x0000646a adds r2, 7                            |     r2 += 7;
    0x0000646c strd r1, r0, [sp]                     |     __asm ("strd r1, r0, [sp]");
    0x0000646e asrs r0, r0, 0x20                     |     r0 >>= 0x20;
    0x00006470 mov r1, r6                            |     r1 = r6;
    0x00006472 movs r0, 4                            |     r0 = 4;
    0x00006474 bl 0x8430                             |     fcn_00008430 (r0, r1, r2, r3, r4);
    0x00006478 mov r0, r6                            |     r0 = r6;
    0x0000647a b 0x6434                              |     goto label_0;
                                                     | label_5:
    0x0000647c ldr r3, [pc, 0x68]                    |     
    0x0000647e movs r4, 0                            |     r4 = 0;
    0x00006480 ldr r2, [pc, 0x68]                    |     
    0x00006482 mov r0, r6                            |     r0 = r6;
    0x00006484 ldr r1, [pc, 0x68]                    |     
    0x00006486 add r3, pc                            |     r3 = 0xc972;
    0x00006488 str r4, [sp]                          |     *(sp) = r4;
    0x0000648a add r2, pc                            |     r2 = 0xc97a;
    0x0000648c adds r3, 7                            |     r3 += 7;
    0x0000648e add r1, pc                            |     r1 = 0xc982;
    0x00006490 str r2, [sp, 0x10]                    |     var_10h_2 = r2;
    0x00006492 str r1, [sp, 0xc]                     |     var_c4h = r1;
    0x00006494 ubfx r2, r8, 0, 0xc                   |     r2 = (r8 >> 0) & ((1 << 0xc) - 1);
    0x00006498 movw r1, 0x585                        |     r1 = 0x585;
    0x0000649c str r3, [sp, 4]                       |     var_4h = r3;
    0x0000649e strd r5, r2, [sp, 0x14]               |     __asm ("strd r5, r2, [var_14h_2]");
    0x000064a2 mov r3, r7                            |     r3 = r7;
    0x000064a4 str r1, [sp, 8]                       |     var_c0h = r1;
    0x000064a6 mov r2, r5                            |     r2 = r5;
    0x000064a8 movs r1, 4                            |     r1 = 4;
    0x000064aa bl 0x9130                             |     fcn_00009130 (r0, r1, r2, r3, r4, r5, r6);
    0x000064ae mov r0, r4                            |     r0 = r4;
    0x000064b0 b 0x6434                              |     goto label_0;
                                                     | label_3:
    0x000064b2 add r4, sp, 0x20                      |     r4 += var_20h;
    0x000064b4 mov r1, r4                            |     r1 = r4;
    0x000064b6 blx 0x1c24                            |     r0 = fcn_00001c24 ();
    0x000064ba cmp r0, 0                             |     
    0x000064bc it ge                                 |     
                                                     |     if (r0 >= 0) {
    0x000064be movge r1, r4                          |         r1 = r4;
                                                     |         goto label_7;
                                                     |     }
                                                     |     if (r0 >= 0) {
                                                     | label_7:
    0x000064c0 bge 0x641e                            |         goto label_1;
                                                     |     }
    0x000064c2 blx 0x1de8                            |     r0 = sprintf_chk ()
    0x000064c6 ldr r0, [r0]                          |     r0 = *(r0);
    0x000064c8 rsbs r0, r0, 0                        |     r0 -= ;
    0x000064ca b 0x6434                              |     goto label_0;
                                                     | label_6:
    0x000064cc blx 0x1bfc                            |     parse_printf_format ();
                                                     |     if (r6 != 0) {
    0x000064d0 cbnz r6, 0x650c                       |         void (*0x650c)() ();
                                                     |     }
    0x000064d2 movs r1, r0                           |     r1 = r0;
    0x000064d4 lsls r4, r2, 7                        |     r4 = r2 << 7;
    0x000064d6 movs r0, r0                           |     
                                                     |     if (r0 != 0) {
    0x000064d8 cbnz r0, 0x650a                       |         void (*0x650a)() ();
                                                     |     }
    0x000064da movs r1, r0                           |     r1 = r0;
    0x000064dc strh r0, [r7, 0x3c]                   |     *((r7 + 0x3c)) = r0;
    0x000064de movs r0, r0                           |     
    0x000064e0 ldrh r2, [r4, 4]                      |     r2 = *((r4 + 4));
    0x000064e2 movs r0, r0                           |     
    0x000064e4 ldrh r4, [r6, 0x10]                   |     r4 = *((r6 + 0x10));
    0x000064e6 movs r0, r0                           |     
    0x000064e8 strh r6, [r1, 0x3c]                   |     *((r1 + 0x3c)) = r6;
    0x000064ea movs r0, r0                           |     
    0x000064ec ldrh r2, [r7, 2]                      |     r2 = *((r7 + 2));
    0x000064ee movs r0, r0                           |     
    0x000064f0 ldrh r6, [r1, 0x10]                   |     r6 = *((r1 + 0x10));
    0x000064f2 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/cdrom_id @ 0x64f4 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.000064f4 ()                                      | void fcn_000064f4 (int16_t arg_b8h, int16_t arg_bch, int16_t arg_c0h, int16_t arg_c4h, FILE * arg1, 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_1ch;
                                                                 |     int16_t var_20h;
                                                                 |     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;
    0x000064f4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x000064f8 mov r4, r2                                        |     r4 = r2;
    0x000064fa ldr r2, [pc, 0x3a0]                               |     
    0x000064fc mov r7, r3                                        |     r7 = r3;
    0x000064fe sub sp, 0x94                                      |     
    0x00006500 ldr r3, [pc, 0x39c]                               |     r3 = *(0x68a0);
    0x00006502 add r2, pc                                        |     r2 = 0xcda4;
    0x00006504 ldr.w sl, [sp, 0xb8]                              |     sl = *(arg_b8h);
    0x00006508 ldr r3, [r2, r3]                                  |     r3 = *(0xcda4);
    0x0000650a ldr r3, [r3]                                      |     r3 = *(r3);
    0x0000650c str r3, [sp, 0x8c]                                |     var_8ch = r3;
    0x0000650e mov.w r3, 0                                       |     r3 = 0;
    0x00006512 ldr r3, [sp, 0xc0]                                |     r3 = *(arg_c0h);
    0x00006514 str r3, [sp, 0x10]                                |     var_10h = r3;
    0x00006516 ldr r3, [sp, 0xc4]                                |     r3 = *(arg_c4h);
    0x00006518 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x0000651a cmp r0, 0                                         |     
                                                                 |     if (arg_b8h == ) {
    0x0000651c beq.w 0x66f0                                      |         goto label_13;
                                                                 |     }
    0x00006520 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x00006522 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00006524 beq.w 0x6706                                      |         goto label_14;
                                                                 |     }
    0x00006528 ldr r3, [sp, 0xbc]                                |     r3 = *(arg_bch);
    0x0000652a mvns r3, r3                                       |     r3 = ~r3;
    0x0000652c tst.w r3, 6                                       |     
                                                                 |     if ((r3 & 6) == 0) {
    0x00006530 beq.w 0x671c                                      |         goto label_15;
                                                                 |     }
    0x00006532 strh r4, [r6, 6]                                  |     *((r6 + 6)) = r4;
    0x00006534 mov r8, r1                                        |     r8 = r1;
    0x00006536 mvn r2, 0x80000000                                |     r2 = ~0x80000000;
    0x0000653a adds.w r1, r4, -0x80000000                        |     r1 = r4 + -0x80000000;
    0x0000653e adc r3, r7, -1                                    |     __asm ("adc r3, r7, -1");
    0x00006542 cmp r1, r2                                        |     
    0x00006544 sbcs r3, r3, -1                                   |     __asm ("sbcs r3, r3, -1");
                                                                 |     if (r1 <= r2) {
    0x00006548 blo.w 0x6866                                      |         goto label_16;
                                                                 |     }
    0x0000654c cmp.w sl, -1                                      |     
    0x00006550 mov r6, r0                                        |     r6 = r0;
    0x00006552 ite ne                                            |     
                                                                 |     if (sl == -1) {
    0x00006554 movne r5, sl                                      |         r5 = sl;
                                                                 |     }
                                                                 |     if (sl != -1) {
    0x00006556 moveq r5, 0x800                                   |         r5 = 0x800;
                                                                 |     }
    0x00006558 str r0, [r0, 0x50]                                |     *((r0 + 0x50)) = r0;
    0x0000655a blx 0x1e7c                                        |     r0 = fcn_00001e7c ();
    0x0000655e cmp r0, 0                                         |     
                                                                 |     if (r0 >= 0) {
    0x00006560 bge.w 0x6680                                      |         goto label_17;
                                                                 |     }
                                                                 | label_2:
    0x00006564 cmp.w r7, -1                                      |     
    0x00006568 it eq                                             |     
                                                                 |     if (r7 == -1) {
    0x0000656a cmpeq r4, -1                                      |         __asm ("cmpeq r4, -1");
                                                                 |     }
    0x0000656c subs r7, 0xff                                     |     r7 -= 0xff;
                                                                 |     if (r7 != 0xff) {
    0x0000656e bne 0x6642                                        |         goto label_18;
                                                                 |     }
                                                                 | label_1:
    0x00006570 ldr r3, [sp, 0xbc]                                |     r3 = *(arg_bch);
    0x00006572 mov.w r8, 0                                       |     r8 = 0;
    0x00006574 lsrs r0, r0, 0x20                                 |     r0 >>= 0x20;
    0x00006576 mov r7, r8                                        |     r7 = r8;
    0x00006578 mov sb, r8                                        |     sb = r8;
    0x0000657a adds r1, r5, 1                                    |     r1 = r5 + 1;
    0x0000657c and r3, r3, 1                                     |     r3 &= 1;
    0x0000657e lsls r1, r0, 0xc                                  |     r1 = r0 << 0xc;
    0x00006580 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x00006582 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x00006584 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00006586 beq 0x662e                                        |         goto label_19;
                                                                 |     }
                                                                 |     do {
    0x00006588 mov r0, r1                                        |         r0 = r1;
    0x0000658a blx 0x1d24                                        |         r0 = fcn_00001d24 ();
    0x0000658e mov r4, r0                                        |         r4 = r0;
    0x00006590 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00006592 beq.w 0x688c                                      |             goto label_20;
                                                                 |         }
    0x00006596 cmp.w sb, 0                                       |         
                                                                 |         if (sb != 0) {
    0x0000659a beq 0x65b8                                        |             
    0x0000659c cmp.w r8, 0                                       |             
                                                                 |             if (r8 == 0) {
    0x000065a0 beq.w 0x6740                                      |                 goto label_21;
                                                                 |             }
    0x000065a4 mov r2, sb                                        |             r2 = sb;
    0x000065a6 mov r1, r8                                        |             r1 = r8;
    0x000065a8 blx 0x1bc8                                        |             fcn_00001bc8 ();
    0x000065ac mov r1, sb                                        |             r1 = sb;
    0x000065ae mov.w r2, -1                                      |             r2 = -1;
    0x000065b2 mov r0, r8                                        |             r0 = r8;
    0x000065b4 blx 0x1f00                                        |             fcn_00001f00 ();
                                                                 |         }
    0x000065b8 mov r0, r8                                        |         r0 = r8;
    0x000065ba blx 0x1b80                                        |         fcn_00001b80 ();
                                                                 | label_0:
    0x000065be cmp.w sl, -1                                      |         
                                                                 |         if (sl == -1) {
    0x000065c2 beq 0x66ba                                        |             goto label_22;
                                                                 |         }
                                                                 | label_3:
    0x000065c4 blx 0x1de8                                        |         sprintf_chk ()
    0x000065c8 sub.w r8, r5, r7                                  |         r8 = r5 - r7;
    0x000065cc movs r3, 0                                        |         r3 = 0;
    0x000065ce str r3, [r0]                                      |         *(r0) = r3;
    0x000065d0 mov sb, r0                                        |         sb = r0;
    0x000065d2 mov r3, r6                                        |         r3 = r6;
    0x000065d4 mov r2, r8                                        |         r2 = r8;
    0x000065d6 movs r1, 1                                        |         r1 = 1;
    0x000065d8 adds r0, r4, r7                                   |         r0 = r4 + r7;
    0x000065da blx 0x1ce8                                        |         r0 = fcn_00001ce8 ();
    0x000065de cmp r8, r0                                        |         
    0x000065e0 mov fp, r0                                        |         
                                                                 |         if (r8 <= r0) {
    0x000065e2 blo 0x66c4                                        |             goto label_23;
                                                                 |         }
    0x000065e4 add r7, r0                                        |         r7 += r0;
    0x000065e6 mov r0, r6                                        |         r0 = r6;
    0x000065e8 blx 0x1b8c                                        |         r0 = fcn_00001b8c ();
    0x000065ec mov r8, r0                                        |         r8 = r0;
    0x000065ee cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x000065f0 bne.w 0x681a                                      |             goto label_24;
                                                                 |         }
    0x000065f4 mov r0, r6                                        |         r0 = r6;
    0x000065f6 blx 0x1d7c                                        |         r0 = strtoul (r0, r1, r2);
    0x000065fa cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x000065fc bne.w 0x6754                                      |             goto label_7;
                                                                 |         }
    0x00006600 cmp.w sl, -1                                      |         
                                                                 |         if (sl != -1) {
    0x00006604 bne.w 0x682e                                      |             goto label_25;
                                                                 |         }
    0x00006608 cmp.w fp, 0                                       |         
                                                                 |         if (fp == 0) {
    0x0000660c beq 0x66da                                        |             goto label_26;
                                                                 |         }
    0x0000660e mvn r3, 0xfc000000                                |         r3 = ~0xfc000000;
    0x00006612 cmp r5, r3                                        |         
                                                                 |         if (r5 >= r3) {
    0x00006614 bhs.w 0x6848                                      |             goto label_27;
                                                                 |         }
    0x00006616 strh r0, [r3, 8]                                  |         *((r3 + 8)) = r0;
    0x00006618 lsls r2, r5, 1                                    |         r2 = r5 << 1;
    0x0000661a mov sb, r5                                        |         sb = r5;
    0x0000661c mov r8, r4                                        |         r8 = r4;
    0x0000661e cmp r2, r3                                        |         
    0x00006620 it hs                                             |         
                                                                 |         if (r2 < r3) {
    0x00006622 movhs r2, r3                                      |             r2 = r3;
                                                                 |         }
    0x00006624 ldr r3, [sp, 0xc]                                 |         r3 = var_ch;
    0x00006626 mov r5, r2                                        |         r5 = r2;
    0x00006628 adds r1, r5, 1                                    |         r1 = r5 + 1;
    0x0000662a cmp r3, 0                                         |         
    0x0000662c bne 0x6588                                        |         
                                                                 |     } while (r3 != 0);
                                                                 | label_19:
    0x0000662e mov r0, r8                                        |     r0 = r8;
    0x00006630 blx 0x1c48                                        |     r0 = fcn_00001c48 ();
    0x00006634 mov r4, r0                                        |     r4 = r0;
    0x00006636 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00006638 bne 0x65be                                        |         goto label_0;
                                                                 |     }
    0x0000663a mov r4, r8                                        |     r4 = r8;
    0x0000663c mvn r8, 0xb                                       |     r8 = ~0xb;
    0x00006640 b 0x665c                                          |     goto label_4;
                                                                 | label_18:
    0x00006642 mov r1, r4                                        |     r1 = r4;
    0x00006644 movs r2, 0                                        |     r2 = 0;
    0x00006646 mov r0, r6                                        |     r0 = r6;
    0x00006648 blx 0x1f84                                        |     r0 = fcn_00001f84 ();
    0x0000664c cmp r0, 0                                         |     
                                                                 |     if (r0 >= 0) {
    0x0000664e bge 0x6570                                        |         goto label_1;
                                                                 |     }
    0x00006650 blx 0x1de8                                        |     r0 = sprintf_chk ()
    0x00006654 ldr r3, [r0]                                      |     r3 = *(r0);
    0x00006656 movs r4, 0                                        |     r4 = 0;
    0x00006658 rsb.w r8, r3, 0                                   |     r8 = r3 - ;
                                                                 | label_4:
    0x0000665c mov r0, r4                                        |     r0 = r4;
    0x0000665e blx 0x1b80                                        |     fcn_00001b80 ();
    0x00006662 ldr r2, [pc, 0x240]                               |     
    0x00006664 ldr r3, [pc, 0x238]                               |     r3 = *(0x68a0);
    0x00006666 add r2, pc                                        |     r2 = 0xcf10;
    0x00006668 ldr r3, [r2, r3]                                  |     r3 = *(0xcf10);
    0x0000666a ldr r2, [r3]                                      |     r2 = *(0xcf10);
    0x0000666c ldr r3, [sp, 0x8c]                                |     r3 = var_8ch;
    0x0000666e eors r2, r3                                       |     r2 ^= r3;
    0x00006670 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x00006674 bne.w 0x6896                                      |         goto label_28;
                                                                 |     }
    0x00006678 mov r0, r8                                        |     r0 = r8;
    0x0000667a add sp, 0x94                                      |     
    0x0000667c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_17:
    0x00006680 add.w sb, sp, 0x20                                |     sb += var_20h;
    0x00006684 mov r1, sb                                        |     r1 = sb;
    0x00006686 blx 0x1f54                                        |     r0 = fcn_00001f54 ();
    0x0000668a cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x0000668c blt 0x6732                                        |         goto label_29;
                                                                 |     }
    0x0000668e ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x00006690 and r3, r3, 0xf000                                |     r3 &= 0xf000;
    0x00006694 cmp.w r3, 0x8000                                  |     
                                                                 |     if (r3 != 0x8000) {
    0x00006698 bne.w 0x6564                                      |         goto label_2;
                                                                 |     }
    0x0000669c cmp.w sl, -1                                      |     
                                                                 |     if (sl == -1) {
    0x000066a0 beq.w 0x67b2                                      |         goto label_30;
                                                                 |     }
                                                                 | label_5:
    0x000066a4 ldr r3, [sp, 0xbc]                                |     r3 = *(arg_bch);
    0x000066a6 lsls r3, r3, 0x1c                                 |     r3 <<= 0x1c;
                                                                 |     if (r3 >= r3) {
    0x000066a8 bpl.w 0x6564                                      |         goto label_2;
                                                                 |     }
    0x000066aa add r7, sp, 0x170                                 |     r7 = sp + 0x170;
    0x000066ac movs r3, 0                                        |     r3 = 0;
    0x000066ae mov r1, sb                                        |     r1 = sb;
    0x000066b0 mov r0, r8                                        |     r0 = r8;
    0x000066b2 mov r2, r3                                        |     r2 = r3;
    0x000066b4 bl 0x63fc                                         |     fcn_000063fc (r0, r1, r2, r3);
    0x000066b8 b 0x6564                                          |     goto label_2;
                                                                 | label_22:
    0x000066ba mov r0, r4                                        |     r0 = r4;
    0x000066bc blx 0x1df4                                        |     r0 = vasprintf_chk ()
    0x000066c0 subs r5, r0, 1                                    |     r5 = r0 - 1;
    0x000066c2 b 0x65c4                                          |     goto label_3;
                                                                 | label_23:
    0x000066c4 ldr r1, [pc, 0x1e0]                               |     
    0x000066c6 movw r2, 0x263                                    |     r2 = 0x263;
    0x000066ca ldr r3, [pc, 0x1e0]                               |     
    0x000066cc ldr r0, [pc, 0x1e0]                               |     
    0x000066ce add r1, pc                                        |     r1 = 0xcf7a;
    0x000066d0 add r3, pc                                        |     r3 = 0xcf82;
    0x000066d2 adds r1, 7                                        |     r1 += 7;
    0x000066d4 add r0, pc                                        |     r0 = 0xcf88;
    0x000066d6 bl 0x8500                                         |     fcn_00008500 (r0, r1, r2, r3, r4);
                                                                 | label_26:
    0x000066da ldr r1, [pc, 0x1d8]                               |     
    0x000066dc movw r2, 0x272                                    |     r2 = 0x272;
    0x000066e0 ldr r3, [pc, 0x1d4]                               |     
    0x000066e2 ldr r0, [pc, 0x1d8]                               |     
    0x000066e4 add r1, pc                                        |     r1 = 0xcf9e;
    0x000066e6 add r3, pc                                        |     r3 = 0xcfa2;
    0x000066e8 adds r1, 7                                        |     r1 += 7;
    0x000066ea add r0, pc                                        |     r0 = 0xcfac;
    0x000066ec bl 0x8500                                         |     fcn_00008500 (r0, r1, r2, r3, r4);
                                                                 | label_13:
    0x000066f0 ldr r1, [pc, 0x1cc]                               |     
    0x000066f2 mov.w r2, 0x21c                                   |     r2 = 0x21c;
    0x000066f4 strb r7, [r0, 8]                                  |     *((r0 + 8)) = r7;
    0x000066f6 ldr r3, [pc, 0x1cc]                               |     
    0x000066f8 ldr r0, [pc, 0x1cc]                               |     
    0x000066fa add r1, pc                                        |     r1 = 0xcfbe;
    0x000066fc add r3, pc                                        |     r3 = 0xcfc6;
    0x000066fe adds r1, 7                                        |     r1 += 7;
    0x00006700 add r0, pc                                        |     r0 = 0xcfcc;
    0x00006702 bl 0x8500                                         |     fcn_00008500 (r0, r1, r2, r3, r4);
                                                                 | label_14:
    0x00006706 ldr r1, [pc, 0x1c4]                               |     
    0x00006708 movw r2, 0x21d                                    |     r2 = 0x21d;
    0x0000670c ldr r3, [pc, 0x1c0]                               |     
    0x0000670e ldr r0, [pc, 0x1c4]                               |     
    0x00006710 add r1, pc                                        |     r1 = 0xcfe2;
    0x00006712 add r3, pc                                        |     r3 = 0xcfe6;
    0x00006714 adds r1, 7                                        |     r1 += 7;
    0x00006716 add r0, pc                                        |     r0 = 0xcff0;
    0x00006718 bl 0x8500                                         |     fcn_00008500 (r0, r1, r2, r3, r4);
                                                                 | label_15:
    0x0000671c ldr r1, [pc, 0x1b8]                               |     
    0x0000671e movw r2, 0x21e                                    |     r2 = 0x21e;
    0x00006722 ldr r3, [pc, 0x1b8]                               |     
    0x00006724 ldr r0, [pc, 0x1b8]                               |     
    0x00006726 add r1, pc                                        |     r1 = 0xd002;
    0x00006728 add r3, pc                                        |     r3 = 0xd00a;
    0x0000672a adds r1, 7                                        |     r1 += 7;
    0x0000672c add r0, pc                                        |     r0 = 0xd010;
    0x0000672e bl 0x8500                                         |     r0 = fcn_00008500 (r0, r1, r2, r3, r4);
                                                                 | label_29:
    0x00006732 blx 0x1de8                                        |     r0 = sprintf_chk ()
    0x00006736 ldr r3, [r0]                                      |     r3 = *(r0);
    0x00006738 rsb.w r8, r3, 0                                   |     r8 = r3 - ;
                                                                 | label_11:
    0x0000673c movs r4, 0                                        |     r4 = 0;
    0x0000673e b 0x665c                                          |     goto label_4;
                                                                 | label_21:
    0x00006740 ldr r1, [pc, 0x1a0]                               |     
    0x00006742 movs r2, 0x16                                     |     r2 = 0x16;
    0x00006744 ldr r3, [pc, 0x1a0]                               |     
    0x00006746 ldr r0, [pc, 0x1a4]                               |     
    0x00006748 add r1, pc                                        |     r1 = 0xd030;
    0x0000674a add r3, pc                                        |     r3 = 0xd036;
    0x0000674c adds r1, 7                                        |     r1 += 7;
    0x0000674e add r0, pc                                        |     r0 = 0xd040;
    0x00006750 bl 0x8500                                         |     fcn_00008500 (r0, r1, r2, r3, r4);
                                                                 | label_7:
    0x00006754 ldr r3, [sp, 0xbc]                                |     r3 = *(arg_bch);
    0x00006756 tst.w r3, 6                                       |     
                                                                 |     if ((r3 & 6) != 0) {
    0x0000675a beq 0x679e                                        |         
    0x0000675c movs r3, 0                                        |         r3 = 0;
    0x0000675e ldrb.w r2, [sp, 0xc]                              |         r2 = var_ch;
    0x00006762 strb r3, [r4, r7]                                 |         *((r4 + r7)) = r3;
    0x00006764 adds r1, r7, 1                                    |         r1 = r7 + 1;
    0x00006766 str r3, [sp, 0x1c]                                |         var_1ch = r3;
    0x00006768 mov r0, r4                                        |         r0 = r4;
    0x0000676a ldr r3, [sp, 0xbc]                                |         r3 = *(arg_bch);
    0x0000676c tst.w r3, 2                                       |         
    0x0000676e lsrs r2, r0, 0x1c                                 |         r2 = r0 >> 0x1c;
    0x00006770 add r3, sp, 0x20                                  |         r3 += var_20h;
    0x00006772 str r3, [sp]                                      |         *(sp) = r3;
    0x00006774 add r3, sp, 0x1c                                  |         r3 += var_1ch;
                                                                 |         if (r2 == r0) {
    0x00006776 beq 0x684e                                        |             goto label_31;
                                                                 |         }
    0x00006778 bl 0x6e74                                         |         r0 = fcn_00006e74 (r0, r1, r2, r3, r4, r5, r6);
    0x0000677c mov r3, r0                                        |         r3 = r0;
                                                                 | label_8:
    0x0000677e cmp r3, 0                                         |         
                                                                 |         if (r3 < 0) {
    0x00006780 blt 0x686e                                        |             goto label_32;
                                                                 |         }
    0x00006782 ldr r3, [sp, 0xc]                                 |         r3 = var_ch;
    0x00006784 cmp r5, 0                                         |         
    0x00006786 ite eq                                            |         
                                                                 |         if (r5 != 0) {
    0x00006788 moveq r3, 0                                       |             r3 = 0;
                                                                 |         }
                                                                 |         if (r5 == 0) {
    0x0000678a andne r3, r3, 1                                   |             r3 &= 1;
                                                                 |         }
    0x0000678c lsls r1, r0, 0xc                                  |         r1 = r0 << 0xc;
    0x0000678e cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x00006790 bne 0x6878                                        |             goto label_33;
                                                                 |         }
                                                                 | label_10:
    0x00006792 mov r0, r4                                        |         r0 = r4;
    0x00006794 blx 0x1b80                                        |         fcn_00001b80 ();
    0x00006796 ldrd lr, sb, [r4, 0x374]!                         |         __asm ("ldrd lr, sb, aav.0x000000ff!");
    0x0000679a cmp r7, r0                                        |         
    0x0000679c mov r7, r5                                        |         r7 = r5;
                                                                 |     }
    0x0000679e ldr r3, [sp, 0x14]                                |     r3 = var_14h;
                                                                 |     if (r3 != 0) {
    0x000067a0 cbz r3, 0x67ee                                    |         
    0x000067a2 ldr r2, [sp, 0x10]                                |         r2 = var_10h;
    0x000067a4 movs r3, 0                                        |         r3 = 0;
    0x000067a6 strb r3, [r4, r7]                                 |         *((r4 + r7)) = r3;
    0x000067a8 str r4, [r2]                                      |         *(r2) = r4;
    0x000067aa mov r4, r3                                        |         r4 = r3;
    0x000067ac ldr r3, [sp, 0x14]                                |         r3 = var_14h;
    0x000067ae str r7, [r3]                                      |         *(r3) = r7;
    0x000067b0 b 0x665c                                          |         goto label_4;
                                                                 | label_30:
    0x000067b2 ldrd r0, r2, [sp, 0x50]                           |         __asm ("ldrd r0, r2, [var_50h]");
    0x000067b6 cmp.w r7, -1                                      |         
    0x000067ba it eq                                             |         
                                                                 |         if (r7 == -1) {
    0x000067bc cmpeq r4, -1                                      |             __asm ("cmpeq r4, -1");
                                                                 |         }
    0x000067be subs r7, 0xff                                     |         r7 -= 0xff;
    0x000067c0 itete eq                                          |         
                                                                 |         if (r7 != 0xff) {
    0x000067c2 moveq r3, 0                                       |             r3 = 0;
                                                                 |         }
                                                                 |         if (r7 == 0xff) {
    0x000067c4 movne r3, r4                                      |             r3 = r4;
                                                                 |         }
                                                                 |         if (r7 != 0xff) {
    0x000067c6 moveq r1, r3                                      |             r1 = r3;
                                                                 |         }
                                                                 |         if (r7 == 0xff) {
    0x000067c8 movne r1, r7                                      |             r1 = r7;
                                                                 |         }
    0x000067ca cmp r3, r0                                        |         
    0x000067cc sbcs.w ip, r1, r2                                 |         __asm ("sbcs.w ip, r1, r2");
                                                                 |         if (r3 >= r0) {
    0x000067d0 bhs 0x6856                                        |             goto label_34;
                                                                 |         }
    0x000067d2 subs r3, r0, r3                                   |         r3 = r0 - r3;
    0x000067d4 sbc.w r1, r2, r1                                  |         __asm ("sbc.w r1, r2, r1");
    0x000067d8 cmp.w r3, 0x4000000                               |         
    0x000067dc sbcs r1, r1, 0                                    |         __asm ("sbcs r1, r1, 0");
                                                                 |         if (r3 >= 0x4000000) {
    0x000067e0 bhs 0x6886                                        |             goto label_35;
                                                                 |         }
                                                                 | label_9:
    0x000067e2 cmp r0, 1                                         |         
    0x000067e4 sbcs r2, r2, 0                                    |         __asm ("sbcs r2, r2, 0");
    0x000067e8 it ge                                             |         
                                                                 |         if (r0 < 1) {
    0x000067ea addge r5, r3, 1                                   |             r5 = r3 + 1;
                                                                 |         }
    0x000067ec b 0x66a4                                          |         goto label_5;
                                                                 |     }
    0x000067ee mov r2, r7                                        |     r2 = r7;
    0x000067f0 mov r1, r3                                        |     r1 = r3;
    0x000067f2 mov r0, r4                                        |     r0 = r4;
    0x000067f4 blx 0x1e88                                        |     r0 = fcn_00001e88 ();
                                                                 |     if (r0 == 0) {
    0x000067f8 cbz r0, 0x685a                                    |         goto label_36;
                                                                 |     }
    0x000067fa mvn r8, 0x49                                      |     r8 = ~0x49;
                                                                 | label_6:
    0x000067fe ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x00006800 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00006802 beq.w 0x665c                                      |         goto label_4;
                                                                 |     }
                                                                 | label_12:
    0x00006806 cmp r5, 0                                         |     
                                                                 |     if (r5 == 0) {
    0x00006808 beq.w 0x665c                                      |         goto label_4;
                                                                 |     }
    0x0000680c mov.w r2, -1                                      |     r2 = -1;
    0x00006810 mov r1, r5                                        |     r1 = r5;
    0x00006812 mov r0, r4                                        |     r0 = r4;
    0x00006814 blx 0x1f00                                        |     r0 = fcn_00001f00 ();
    0x00006816 sbcs.w r7, r4, r0, asr 24                         |     __asm ("sbcs.w r7, r4, r0, asr 24");
                                                                 | label_24:
    0x0000681a ldr.w r3, [sb]                                    |     r3 = *(sb);
    0x0000681e cmp r3, 0                                         |     
    0x00006820 it gt                                             |     
                                                                 |     if (r3 <= 0) {
    0x00006822 rsbgt r8, r3, 0                                   |         __asm ("rsbgt r8, r3, 0");
                                                                 |         goto label_37;
                                                                 |     }
                                                                 |     if (r3 > 0) {
                                                                 | label_37:
    0x00006826 bgt 0x67fe                                        |         goto label_6;
                                                                 |     }
    0x00006828 mvn r8, 4                                         |     r8 = ~4;
    0x0000682c b 0x67fe                                          |     goto label_6;
                                                                 | label_25:
    0x0000682e cmp sl, r7                                        |     
                                                                 |     if (sl == r7) {
    0x00006830 beq 0x6754                                        |         goto label_7;
                                                                 |     }
    0x00006832 ldr r1, [pc, 0xbc]                                |     
    0x00006834 movw r2, 0x26e                                    |     r2 = 0x26e;
    0x00006838 ldr r3, [pc, 0xb8]                                |     
    0x0000683a ldr r0, [pc, 0xbc]                                |     
    0x0000683c add r1, pc                                        |     r1 = 0xd132;
    0x0000683e add r3, pc                                        |     r3 = 0xd136;
    0x00006840 adds r1, 7                                        |     r1 += 7;
    0x00006842 add r0, pc                                        |     r0 = 0xd140;
    0x00006844 bl 0x8500                                         |     fcn_00008500 (r0, r1, r2, r3, r4);
                                                                 | label_27:
    0x00006848 mvn r8, 6                                         |     r8 = ~6;
    0x0000684c b 0x67fe                                          |     goto label_6;
                                                                 | label_31:
    0x0000684e bl 0x6c6c                                         |     r0 = fcn_00006c6c (r0, r1, r2, r3, r4);
    0x00006852 mov r3, r0                                        |     r3 = r0;
    0x00006854 b 0x677e                                          |     goto label_8;
                                                                 | label_34:
    0x00006856 movs r3, 0                                        |     r3 = 0;
    0x00006858 b 0x67e2                                          |     goto label_9;
                                                                 | label_36:
    0x0000685a ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x0000685c ldr r2, [sp, 0x10]                                |     r2 = var_10h;
    0x0000685e strb r3, [r4, r7]                                 |     *((r4 + r7)) = r3;
    0x00006860 str r4, [r2]                                      |     *(r2) = r4;
    0x00006862 mov r4, r3                                        |     r4 = r3;
    0x00006864 b 0x665c                                          |     goto label_4;
                                                                 | label_16:
    0x00006866 movs r4, 0                                        |     r4 = 0;
    0x00006868 mvn r8, 0x21                                      |     r8 = ~0x21;
    0x0000686c b 0x665c                                          |     goto label_4;
                                                                 | label_32:
    0x0000686e ldr r0, [sp, 0x1c]                                |     r0 = var_1ch;
    0x00006870 mov r8, r3                                        |     r8 = r3;
    0x00006872 blx 0x1b80                                        |     fcn_00001b80 ();
    0x00006874 invalid                                           |     
                                                                 | label_33:
    0x00006878 mov r1, r5                                        |     r1 = r5;
    0x0000687a mov.w r2, -1                                      |     r2 = -1;
    0x0000687e mov r0, r4                                        |     r0 = r4;
    0x00006880 blx 0x1f00                                        |     fcn_00001f00 ();
    0x00006884 b 0x6792                                          |     goto label_10;
                                                                 | label_35:
    0x00006886 mvn r8, 6                                         |     r8 = ~6;
    0x0000688a b 0x673c                                          |     goto label_11;
                                                                 | label_20:
    0x0000688c mov r4, r8                                        |     r4 = r8;
    0x0000688e mov r5, sb                                        |     r5 = sb;
    0x00006890 mvn r8, 0xb                                       |     r8 = ~0xb;
    0x00006892 lsrs r3, r1, 0x20                                 |     r3 = r1 >> 0x20;
    0x00006894 b 0x6806                                          |     goto label_12;
                                                                 | label_28:
    0x00006896 blx 0x1bfc                                        |     parse_printf_format ();
    0x0000689a nop                                               |     
    0x0000689c 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/cdrom_id @ 0x68fc */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.000068fc ()                                  | uint32_t fcn_000068fc (int16_t arg_170h, int16_t arg_174h, int16_t arg_178h, int16_t arg_17ch, int16_t arg_368h, 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;
                                                             |     int16_t var_14h;
                                                             |     int16_t var_18h;
                                                             |     size_t c;
                                                             |     FILE * stream;
                                                             |     int16_t var_28h;
                                                             |     int16_t var_2ah;
                                                             |     int16_t var_2bh;
                                                             |     int16_t var_3h;
                                                             |     int16_t var_3h_2;
                                                             |     size_t n;
                                                             |     int16_t var_128h;
                                                             |     int16_t var_144h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x000068fc svcmi 0xf0e92d                                |     __asm ("svcmi aav.0x000000ff");
    0x00006900 mov r8, r2                                    |     r8 = r2;
    0x00006902 ldr r2, [pc, 0x264]                           |     
    0x00006904 mov r7, r3                                    |     r7 = r3;
    0x00006906 sub sp, 0x14c                                 |     
    0x00006908 ldr r3, [pc, 0x260]                           |     r3 = *(0x6b6c);
    0x0000690a add r6, sp, 0x24                              |     r6 += stream;
    0x0000690c add r2, pc                                    |     r2 = 0xd47a;
    0x0000690e ldrd sl, fp, [sp, 0x17c]                      |     __asm ("ldrd sl, fp, [arg_17ch]");
    0x00006912 ldr r3, [r2, r3]                              |     
    0x00006914 ldr r2, [sp, 0x178]                           |     r2 = *(arg_178h);
    0x00006916 ldr r3, [r3]                                  |     r3 = *(0xd47a);
    0x00006918 str r3, [sp, 0x144]                           |     var_144h = r3;
    0x0000691a mov.w r3, 0                                   |     r3 = 0;
    0x0000691e movs r3, 0                                    |     r3 = 0;
    0x00006920 str r3, [r6]                                  |     *(r6) = r3;
    0x00006922 str r2, [sp, 0x10]                            |     var_10h = r2;
    0x00006924 cmp r1, 0                                     |     
                                                             |     if (r1 == 0) {
    0x00006926 beq.w 0x6aae                                  |         goto label_3;
                                                             |     }
    0x0000692a cmp.w sl, 0                                   |     
                                                             |     if (sl == 0) {
    0x0000692e beq.w 0x6ac4                                  |         goto label_4;
                                                             |     }
    0x00006932 ldr r2, [pc, 0x23c]                           |     
    0x00006934 mov sb, r0                                    |     sb = r0;
    0x00006936 str r6, [sp]                                  |     *(sp) = r6;
    0x00006938 mov r5, r1                                    |     r5 = r1;
    0x0000693a add r2, pc                                    |     r2 = 0xd4b0;
    0x0000693c bl 0x60a4                                     |     r0 = fcn_000060a4 (r0, r1, r2, r3, r4);
    0x00006940 subs r4, r0, 0                                |     r4 = r0 - 0;
                                                             |     if (r4 < r0) {
    0x00006942 bge.w 0x6a52                                  |         
    0x00006946 adds r2, r4, 6                                |         r2 = r4 + 6;
                                                             |         if (r2 != r4) {
    0x00006948 bne.w 0x6a9a                                  |             goto label_5;
                                                             |         }
    0x0000694c ldr r3, [sp, 0x174]                           |         r3 = *(arg_174h);
    0x0000694e lsls r3, r3, 0x1b                             |         r3 <<= 0x1b;
                                                             |         if (r3 >= r3) {
    0x00006950 bpl.w 0x6a9a                                  |             goto label_5;
                                                             |         }
    0x00006954 cmp.w r7, -1                                  |         
    0x00006958 it eq                                         |         
                                                             |         if (r7 == -1) {
    0x0000695a cmpeq r8, -1                                  |             __asm ("cmpeq r8, -1");
                                                             |         }
                                                             |         if (r7 != -1) {
    0x0000695e bne.w 0x6ada                                  |             goto label_6;
                                                             |         }
    0x00006962 cmn.w sb, 0x64                                |         
                                                             |         if (sb == 0x64) {
    0x00006966 beq.w 0x6af4                                  |             goto label_7;
                                                             |         }
    0x0000696a mov r0, sb                                    |         r0 = sb;
    0x0000696c mov.w r2, 0x280000                            |         r2 = 0x280000;
    0x0000696e asrs r0, r4, 8                                |         r0 = r4 >> 8;
    0x00006970 mov r1, r5                                    |         r1 = r5;
    0x00006972 blx 0x1dd0                                    |         r0 = errno_location ();
    0x00006976 subs.w sb, r0, 0                              |         sb = r0 - 0;
                                                             |         if (sb < r0) {
    0x0000697a blt.w 0x6ae6                                  |             goto label_8;
                                                             |         }
    0x0000697e ldr r3, [pc, 0x1f4]                           |         
    0x00006980 add r0, sp, 0x128                             |         r0 += var_128h;
    0x00006982 movs r2, 1                                    |         r2 = 1;
    0x00006984 str.w sb, [sp, 4]                             |         __asm ("str.w sb, [var_4h]");
    0x00006988 str r0, [sp, 0x14]                            |         var_14h = r0;
    0x0000698a add r3, pc                                    |         r3 = "error != 0";
    0x0000698c str r3, [sp]                                  |         *(sp) = r3;
    0x0000698e movs r3, 0x1a                                 |         r3 = 0x1a;
    0x00006990 mov r1, r3                                    |         r1 = r3;
    0x00006992 blx 0x1fd8                                    |         fcn_00001fd8 ();
    0x00006996 add r3, sp, 0x28                              |         r3 += var_28h;
    0x00006998 ldr r1, [sp, 0x14]                            |         r1 = var_14h;
    0x0000699a mov r0, r3                                    |         r0 = r3;
    0x0000699c str r3, [sp, 0x14]                            |         var_14h = r3;
    0x0000699e bl 0xaf64                                     |         r0 = fcn_0000af64 (r0, r1);
                                                             | label_1:
    0x000069a2 cmp r0, 0                                     |         
                                                             |         if (r0 < 0) {
    0x000069a4 blt.w 0x6b06                                  |             goto label_9;
                                                             |         }
    0x000069a8 movs r1, 1                                    |         r1 = 1;
    0x000069aa movs r2, 0                                    |         r2 = 0;
    0x000069ac movt r1, 8                                    |         r1 = (r1 & 0xFFFF) | 0x80000;
    0x000069b0 movs r0, 1                                    |         r0 = 1;
    0x000069b2 blx 0x1f48                                    |         r0 = fcn_00001f48 ();
    0x000069b6 subs r3, r0, 0                                |         r3 = r0 - 0;
                                                             |         if (r3 < r0) {
    0x000069b8 blt.w 0x6b0e                                  |             goto label_10;
                                                             |         }
    0x000069bc ldr r1, [sp, 0x10]                            |         r1 = var_10h;
                                                             |         if (r1 != 0) {
    0x000069be cbz r1, 0x69ea                                |             
    0x000069c0 add r2, sp, 0xa8                              |             r2 += n;
    0x000069c2 str r3, [sp, 0x10]                            |             var_10h = r3;
    0x000069c4 mov r0, r2                                    |             r0 = r2;
    0x000069c6 str r2, [sp, 0x1c]                            |             c = r2;
    0x000069c8 bl 0xaf64                                     |             r0 = fcn_0000af64 (r0, r1);
    0x000069cc cmp r0, 0                                     |             
    0x000069ce ldr r3, [sp, 0x10]                            |             r3 = var_10h;
    0x000069d0 str r0, [sp, 0x18]                            |             var_18h = r0;
                                                             |             if (r0 < 0) {
    0x000069d2 blt.w 0x6b2c                                  |                 goto label_11;
                                                             |             }
    0x000069d6 ldr r2, [sp, 0x1c]                            |             r2 = c;
    0x000069d8 mov r1, r2                                    |             r1 = r2;
    0x000069da mov r2, r0                                    |             r2 = r0;
    0x000069dc mov r0, r3                                    |             r0 = r3;
    0x000069de blx 0x1e18                                    |             r0 = memset (r0, r1, r2);
    0x000069e0 ands.w r8, ip, r0, lsl 8                      |             r8 = ip & (r0 << 8);
    0x000069e2 cmp r0, 0                                     |             
    0x000069e4 ldr r3, [sp, 0x10]                            |             r3 = var_10h;
                                                             |             if (r0 < 0) {
    0x000069e6 blt.w 0x6b2c                                  |                 goto label_11;
                                                             |             }
                                                             |         }
    0x000069ea ldr r2, [sp, 0x14]                            |         r2 = var_14h;
    0x000069ec ldrh r2, [r2]                                 |         r2 = *(r2);
    0x000069ee cmp r2, 1                                     |         
                                                             |         if (r2 != 1) {
    0x000069f0 bne.w 0x6b4c                                  |             goto label_12;
                                                             |         }
    0x000069f4 ldr r2, [sp, 0x14]                            |         r2 = var_14h;
    0x000069f6 str r3, [sp, 0x10]                            |         var_10h = r3;
    0x000069f8 ldrb r2, [r2, 2]                              |         r2 = *((r2 + 2));
    0x000069fa cmp r2, 0                                     |         
                                                             |         if (r2 != 0) {
    0x000069fc bne.w 0x6b1c                                  |             goto label_13;
                                                             |         }
    0x00006a00 movs r1, 0x6b                                 |         r1 = 0x6b;
    0x00006a02 add.w r0, sp, 0x2b                            |         r0 += var_2bh;
    0x00006a06 blx 0x1ed0                                    |         fcn_00001ed0 ();
    0x00006a0a ldr r3, [sp, 0x10]                            |         r3 = var_10h;
    0x00006a0c adds r2, r0, 3                                |         r2 += var_3h_2;
                                                             | label_2:
    0x00006a0e mov r0, r3                                    |         r0 = r3;
    0x00006a10 ldr r1, [sp, 0x14]                            |         r1 = var_14h;
    0x00006a12 str r3, [sp, 0x10]                            |         var_10h = r3;
    0x00006a14 blx 0x1fcc                                    |         fcn_00001fcc ();
    0x00006a16 invalid                                       |         
    0x00006a1a ldr r3, [sp, 0x10]                            |         r3 = var_10h;
                                                             |         if (r2 < var_3h_2) {
    0x00006a1c blt.w 0x6b30                                  |             goto label_14;
                                                             |         }
    0x00006a20 mov r0, r3                                    |         r0 = r3;
    0x00006a22 movs r1, 1                                    |         r1 = 1;
    0x00006a24 str r3, [sp, 0x10]                            |         var_10h = r3;
    0x00006a26 blx 0x1ee8                                    |         r0 = fcn_00001ee8 ();
    0x00006a2a cmp r0, 0                                     |         
    0x00006a2c ldr r3, [sp, 0x10]                            |         r3 = var_10h;
                                                             |         if (r0 < 0) {
    0x00006a2e blt.w 0x6b40                                  |             goto label_15;
                                                             |         }
    0x00006a32 ldr r1, [pc, 0x144]                           |         
    0x00006a34 mov r0, r3                                    |         r0 = r3;
    0x00006a36 str r3, [sp, 0x10]                            |         var_10h = r3;
    0x00006a38 add r1, pc                                    |         r1 = 0xd5b6;
    0x00006a3a blx 0x1ab8                                    |         fdopen ();
    0x00006a3e str r0, [r6]                                  |         *(r6) = r0;
    0x00006a40 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00006a42 beq 0x6b40                                    |             goto label_15;
                                                             |         }
    0x00006a44 mov.w r0, -1                                  |         r0 = -1;
    0x00006a48 bl 0x5a98                                     |         fcn_00005a98 (r0, r1, r2, r3, r4);
    0x00006a4c mov r0, sb                                    |         r0 = sb;
    0x00006a4e bl 0x5a98                                     |         fcn_00005a98 (r0, r1, r2, r3, r4);
                                                             |     }
    0x00006a52 movs r1, 2                                    |     r1 = 2;
    0x00006a54 ldr r0, [r6]                                  |     r0 = *(r6);
    0x00006a56 blx 0x1e3c                                    |     fgetc (r0);
    0x00006a5a ldr r4, [sp, 0x174]                           |     r4 = *(arg_174h);
    0x00006a5c mov r2, r8                                    |     r2 = r8;
    0x00006a5e str.w fp, [sp, 0xc]                           |     __asm ("str.w fp, [var_ch]");
    0x00006a60 add sp, 0x30                                  |     
    0x00006a62 mov r3, r7                                    |     r3 = r7;
    0x00006a64 str.w sl, [sp, 8]                             |     __asm ("str.w sl, [var_8h]");
    0x00006a68 mov r1, r5                                    |     r1 = r5;
    0x00006a6a ldr r0, [r6]                                  |     r0 = *(r6);
    0x00006a6c str r4, [sp, 4]                               |     var_4h = r4;
    0x00006a6e ldr r4, [sp, 0x170]                           |     r4 = *(arg_170h);
    0x00006a70 str r4, [sp]                                  |     *(sp) = r4;
    0x00006a72 bl 0x64f4                                     |     fcn_000064f4 (r0, r1, r2, r3, r4, r5, r6);
    0x00006a74 ldc2 p6, c4, [pc, -0x10]!                     |     __asm ("ldc2 p6, c4, aav.0x000000ff!");
                                                             |     do {
    0x00006a78 ldr r0, [r6]                                  |         r0 = *(r6);
    0x00006a7a bl 0x5b34                                     |         fcn_00005b34 (r0, r1, r2);
    0x00006a7e ldr r2, [pc, 0xfc]                            |         
    0x00006a80 ldr r3, [pc, 0xe8]                            |         r3 = *(0x6b6c);
    0x00006a82 add r2, pc                                    |         r2 = 0xd604;
    0x00006a84 ldr r3, [r2, r3]                              |         r3 = *(0xd604);
    0x00006a86 ldr r2, [r3]                                  |         r2 = *(0xd604);
    0x00006a88 ldr r3, [sp, 0x144]                           |         r3 = var_144h;
    0x00006a8a eors r2, r3                                   |         r2 ^= r3;
    0x00006a8c mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x00006a90 bne 0x6b62                                    |             goto label_16;
                                                             |         }
    0x00006a92 mov r0, r4                                    |         r0 = r4;
    0x00006a94 add sp, 0x14c                                 |         
    0x00006a96 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |         
                                                             | label_5:
    0x00006a9a mov.w r3, -1                                  |         r3 = -1;
    0x00006a9e mov sb, r3                                    |         sb = r3;
                                                             | label_0:
    0x00006aa0 mov r0, r3                                    |         r0 = r3;
    0x00006aa2 bl 0x5a98                                     |         fcn_00005a98 (r0, r1, r2, r3, r4);
    0x00006aa6 mov r0, sb                                    |         r0 = sb;
    0x00006aa8 bl 0x5a98                                     |         fcn_00005a98 (r0, r1, r2, r3, r4);
    0x00006aac b 0x6a78                                      |         
                                                             |     } while (1);
                                                             | label_3:
    0x00006aae ldr r1, [pc, 0xd0]                            |     
    0x00006ab0 movw r2, 0x2b6                                |     r2 = 0x2b6;
    0x00006ab4 ldr r3, [pc, 0xcc]                            |     
    0x00006ab6 ldr r0, [pc, 0xd0]                            |     
    0x00006ab8 add r1, pc                                    |     r1 = 0xd63e;
    0x00006aba add r3, pc                                    |     r3 = 0xd642;
    0x00006abc adds r1, 7                                    |     r1 += 7;
    0x00006abe add r0, pc                                    |     r0 = 0xd64c;
    0x00006ac0 bl 0x8500                                     |     fcn_00008500 (r0, r1, r2, r3, r4);
                                                             | label_4:
    0x00006ac4 ldr r1, [pc, 0xc4]                            |     
    0x00006ac6 movw r2, 0x2b7                                |     r2 = 0x2b7;
    0x00006aca ldr r3, [pc, 0xc4]                            |     
    0x00006acc ldr r0, [pc, 0xc4]                            |     
    0x00006ace add r1, pc                                    |     r1 = 0xd65e;
    0x00006ad0 add r3, pc                                    |     r3 = 0xd666;
    0x00006ad2 adds r1, 7                                    |     r1 += 7;
    0x00006ad4 add r0, pc                                    |     r0 = 0xd66c;
    0x00006ad6 bl 0x8500                                     |     fcn_00008500 (r0, r1, r2, r3, r4);
                                                             | label_6:
    0x00006ada mov.w r3, -1                                  |     r3 = -1;
    0x00006ade mvn r4, 0x1c                                  |     r4 = ~0x1c;
    0x00006ae0 lsls r4, r3, 0x10                             |     r4 = r3 << 0x10;
    0x00006ae2 mov sb, r3                                    |     sb = r3;
    0x00006ae4 b 0x6aa0                                      |     goto label_0;
                                                             | label_8:
    0x00006ae6 blx 0x1de8                                    |     r0 = sprintf_chk ()
    0x00006aea ldr r4, [r0]                                  |     r4 = *(r0);
    0x00006aec mov.w r3, -1                                  |     r3 = -1;
    0x00006af0 rsbs r4, r4, 0                                |     r4 -= ;
    0x00006af2 b 0x6aa0                                      |     goto label_0;
                                                             | label_7:
    0x00006af4 add r3, sp, 0x28                              |     r3 += var_28h;
    0x00006af6 mov r1, r5                                    |     r1 = r5;
    0x00006af8 mov r0, r3                                    |     r0 = r3;
    0x00006afa str r3, [sp, 0x14]                            |     var_14h = r3;
    0x00006afc mov.w sb, -1                                  |     sb = -1;
    0x00006b00 bl 0xaf64                                     |     fcn_0000af64 (r0, r1);
    0x00006b04 b 0x69a2                                      |     goto label_1;
                                                             | label_9:
    0x00006b06 mov r4, r0                                    |     r4 = r0;
    0x00006b08 mov.w r3, -1                                  |     r3 = -1;
    0x00006b0c b 0x6aa0                                      |     goto label_0;
                                                             | label_10:
    0x00006b0e str r3, [sp, 0x10]                            |     var_10h = r3;
    0x00006b10 blx 0x1de8                                    |     r0 = sprintf_chk ()
    0x00006b14 ldr r4, [r0]                                  |     r4 = *(r0);
    0x00006b16 ldr r3, [sp, 0x10]                            |     r3 = var_10h;
    0x00006b18 rsbs r4, r4, 0                                |     r4 -= ;
    0x00006b1a b 0x6aa0                                      |     goto label_0;
                                                             | label_13:
    0x00006b1c movs r1, 0x6c                                 |     r1 = 0x6c;
    0x00006b1e add.w r0, sp, 0x2a                            |     r0 += var_2ah;
    0x00006b22 blx 0x1ed0                                    |     fcn_00001ed0 ();
    0x00006b26 ldr r3, [sp, 0x10]                            |     r3 = var_10h;
    0x00006b28 adds r2, r0, 3                                |     r2 += var_3h;
    0x00006b2a b 0x6a0e                                      |     goto label_2;
                                                             | label_11:
    0x00006b2c ldr r4, [sp, 0x18]                            |     r4 = var_18h;
    0x00006b2e b 0x6aa0                                      |     goto label_0;
                                                             | label_14:
    0x00006b30 blx 0x1de8                                    |     r0 = sprintf_chk ()
    0x00006b34 ldr r2, [r0]                                  |     r2 = *(r0);
    0x00006b36 ldr r3, [sp, 0x10]                            |     r3 = var_10h;
    0x00006b38 cmp r2, 0x58                                  |     
    0x00006b3a it ne                                         |     
                                                             |     if (r2 != 0x58) {
    0x00006b3c rsbne r4, r2, 0                               |         __asm ("rsbne r4, r2, 0");
                                                             |     }
    0x00006b3e b 0x6aa0                                      |     goto label_0;
                                                             | label_15:
    0x00006b40 blx 0x1de8                                    |     r0 = sprintf_chk ()
    0x00006b44 ldr r4, [r0]                                  |     r4 = *(r0);
    0x00006b46 ldr r3, [sp, 0x10]                            |     r3 = var_10h;
    0x00006b48 rsbs r4, r4, 0                                |     r4 -= ;
    0x00006b4a b 0x6aa0                                      |     goto label_0;
                                                             | label_12:
    0x00006b4c ldr r1, [pc, 0x48]                            |     
    0x00006b4e movw r2, 0x2ef                                |     r2 = 0x2ef;
    0x00006b52 ldr r3, [pc, 0x48]                            |     
    0x00006b54 ldr r0, [pc, 0x48]                            |     
    0x00006b56 add r1, pc                                    |     r1 = 0xd6f2;
    0x00006b58 add r3, pc                                    |     r3 = 0xd6fa;
    0x00006b5a adds r1, 7                                    |     r1 += 7;
    0x00006b5c add r0, pc                                    |     r0 = 0xd700;
    0x00006b5e bl 0x8500                                     |     r0 = fcn_00008500 (r0, r1, r2, r3, r4);
                                                             | label_16:
    0x00006b62 blx 0x1bfc                                    |     parse_printf_format ();
    0x00006b66 nop                                           |     
    0x00006b68 push {r2, r5, r6, r7}                         |     
    0x00006b6a movs r1, r0                                   |     r1 = r0;
    0x00006b6c lsls r4, r2, 7                                |     r4 = r2 << 7;
    0x00006b6e movs r0, r0                                   |     
    0x00006b70 add r2, sp, 0x368                             |     r2 += arg_368h;
    0x00006b72 movs r0, r0                                   |     
    0x00006b74 strh r6, [r0, 0x22]                           |     *((r0 + 0x22)) = r6;
    0x00006b76 movs r0, r0                                   |     
    0x00006b78 strb r4, [r3, 0x1c]                           |     *((r3 + 0x1c)) = r4;
    0x00006b7a movs r0, r0                                   |     
                                                             |     if (r6 != 0) {
    0x00006b7c cbz r6, 0x6bda                                |         
    0x00006b7e movs r1, r0                                   |         r1 = r0;
    0x00006b80 strh r4, [r3, 0xa]                            |         *((r3 + 0xa)) = r4;
    0x00006b82 movs r0, r0                                   |         
    0x00006b84 strh r2, [r4, 0x1a]                           |         *((r4 + 0x1a)) = r2;
    0x00006b86 movs r0, r0                                   |         
    0x00006b88 strh r2, [r3, 0xe]                            |         *((r3 + 0xe)) = r2;
    0x00006b8a movs r0, r0                                   |         
    0x00006b8c strh r6, [r0, 0xa]                            |         *((r0 + 0xa)) = r6;
    0x00006b8e movs r0, r0                                   |         
    0x00006b90 strh r4, [r1, 0x1a]                           |         *((r1 + 0x1a)) = r4;
    0x00006b92 movs r0, r0                                   |         
    0x00006b94 strh r0, [r1, 0x14]                           |         *((r1 + 0x14)) = r0;
    0x00006b96 movs r0, r0                                   |         
    0x00006b98 strh r6, [r7, 4]                              |         *((r7 + 4)) = r6;
    0x00006b9a movs r0, r0                                   |         
    0x00006b9c strh r4, [r0, 0x16]                           |         *((r0 + 0x16)) = r4;
    0x00006b9e movs r0, r0                                   |         
    0x00006ba0 strh r0, [r1, 0x14]                           |         *((r1 + 0x14)) = r0;
    0x00006ba2 movs r0, r0                                   |         
                                                             |     }
    0x00006bda cmp r3, 5                                     |     
                                                             |     if (r3 >= 5) {
    0x00006bdc bls 0x6bee                                    |         
    0x00006bde sub.w r3, r0, 0x41                            |         r3 = r0 - 0x41;
    0x00006be2 cmp r3, 5                                     |         
    0x00006be4 ite ls                                        |         
                                                             |         if (r3 > 5) {
    0x00006be6 subls r0, 0x37                                |             r0 -= 0x37;
                                                             |         }
                                                             |         if (r3 <= 5) {
    0x00006be8 mvnhi r0, 0x15                                |             r0 = ~0x15;
                                                             |         }
    0x00006bec bx lr                                         |         return r0;
                                                             |     }
    0x00006bee subs r0, 0x57                                 |     r0 -= 0x57;
    0x00006bf0 bx lr                                         |     return 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/cdrom_id @ 0x6e74 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00006e74 ()                                      | void fcn_00006e74 (int16_t arg_48h, int16_t arg_b0h, int16_t arg_130h, int16_t arg_1a8h, int16_t arg_1f8h, int16_t arg_218h, int16_t arg_2b8h, int16_t arg1, uint32_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_4h_2;
                                                                 |     int16_t var_8h_2;
                                                                 |     int16_t var_ah;
                                                                 |     int16_t var_ch_2;
                                                                 |     int16_t var_4h_3;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch_3;
                                                                 |     int16_t var_10h;
                                                                 |     uint32_t var_14h;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x00006e74 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00006e78 sub sp, 0x24                                      |     
    0x00006e7a strd r2, r3, [sp, 8]                              |     __asm ("strd r2, r3, [var_8h]");
    0x00006e7e cmp r1, 0                                         |     
    0x00006e80 ldr r2, [pc, 0x1bc]                               |     
    0x00006e82 ldr r3, [pc, 0x1c0]                               |     r3 = *(0x7046);
    0x00006e84 str r1, [sp, 0x14]                                |     var_14h = r1;
    0x00006e86 add r2, pc                                        |     r2 = 0xdeca;
    0x00006e88 ldr r3, [r2, r3]                                  |     
    0x00006e8a ldr r2, [sp, 0x48]                                |     r2 = *(arg_48h);
    0x00006e8c ldr r3, [r3]                                      |     r3 = *(0xdeca);
    0x00006e8e str r3, [sp, 0x1c]                                |     var_1ch = r3;
    0x00006e90 mov.w r3, 0                                       |     r3 = 0;
    0x00006e94 clz r3, r0                                        |     r3 &= r0;
    0x00006e98 lsr.w r3, r3, 5                                   |     r3 >>= 5;
    0x00006e9c it eq                                             |     
                                                                 |     if (r1 != 0) {
    0x00006e9e moveq r3, 0                                       |         r3 = 0;
                                                                 |     }
    0x00006ea0 str r2, [sp, 0x10]                                |     var_10h = r2;
    0x00006ea2 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00006ea4 bne.w 0x6fce                                      |         goto label_6;
                                                                 |     }
    0x00006ea8 adds r2, r1, 1                                    |     r2 = r1 + 1;
    0x00006eaa mov r4, r0                                        |     r4 = r0;
                                                                 |     if (r2 == r1) {
    0x00006eac bne 0x6eb6                                        |         
    0x00006eae blx 0x1da0                                        |         r0 = strchr (r0, r1);
    0x00006eb2 mov r1, r0                                        |         r1 = r0;
    0x00006eb4 str r0, [sp, 0x14]                                |         var_14h = r0;
                                                                 |     }
    0x00006eb6 lsr.w sl, r1, 2                                   |     sl = r1 >> 2;
    0x00006eba ands r1, r1, 3                                    |     r1 &= 3;
    0x00006ebe it ne                                             |     
                                                                 |     if (r1 == r1) {
    0x00006ec0 addne r1, r1, -1                                  |         r1 += -1;
                                                                 |     }
    0x00006ec4 add.w r3, sl, sl, lsl 1                           |     r3 = sl + (sl << 1);
    0x00006ec8 str r3, [sp]                                      |     *(sp) = r3;
    0x00006eca itt ne                                            |     
                                                                 |     if (r1 == r1) {
    0x00006ecc addne r3, r3, r1                                  |         r3 += r1;
                                                                 |     }
                                                                 |     if (r1 == r1) {
    0x00006ece strne r3, [sp]                                    |         *(sp) = r3;
                                                                 |     }
    0x00006ed0 ldr r3, [sp]                                      |     r3 = *(sp);
    0x00006ed2 adds r0, r3, 1                                    |     r0 = r3 + 1;
    0x00006ed4 blx 0x1d24                                        |     fcn_00001d24 ();
    0x00006ed8 str r0, [sp, 4]                                   |     var_4h = r0;
    0x00006eda cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00006edc beq.w 0x7036                                      |         goto label_7;
                                                                 |     }
    0x00006ee0 mov r5, r0                                        |     r5 = r0;
    0x00006ee2 add.w fp, sp, 0x14                                |     
    0x00006ee6 add.w r8, sp, 0x18                                |     r8 += var_18h;
    0x00006eea mvn sb, 0x80000000                                |     sb = ~0x80000000;
    0x00006eee str r4, [sp, 0x18]                                |     var_18h = r4;
    0x00006ef0 b 0x6f50                                          |     
                                                                 |     while (r0 != 0x20) {
    0x00006ef2 cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x00006ef4 blt 0x6f8a                                        |             goto label_0;
                                                                 |         }
    0x00006ef6 cmp r0, sb                                        |         
                                                                 |         if (r0 == sb) {
    0x00006ef8 beq 0x6f86                                        |             goto label_1;
                                                                 |         }
    0x00006efa mov r1, fp                                        |         r1 = fp;
    0x00006efc mov r0, r8                                        |         r0 = r8;
    0x00006efe bl 0x6df4                                         |         fcn_00006df4 (r0, r1);
    0x00006f02 subs r7, r0, 0                                    |         r7 -= var_18h;
                                                                 |         if (r7 < var_18h) {
    0x00006f04 blt 0x6fca                                        |             goto label_8;
                                                                 |         }
    0x00006f06 cmp r7, sb                                        |         
                                                                 |         if (r7 == sb) {
    0x00006f08 beq 0x6f86                                        |             goto label_1;
                                                                 |         }
    0x00006f0a mov r1, fp                                        |         r1 = fp;
    0x00006f0c mov r0, r8                                        |         r0 = r8;
    0x00006f0e bl 0x6df4                                         |         fcn_00006df4 (r0, r1);
    0x00006f12 subs.w sl, r0, 0                                  |         sl -= var_18h;
                                                                 |         if (sl < var_18h) {
    0x00006f16 blt 0x6fe4                                        |             goto label_9;
                                                                 |         }
    0x00006f18 mov r1, fp                                        |         r1 = fp;
    0x00006f1a mov r0, r8                                        |         r0 = r8;
    0x00006f1c bl 0x6df4                                         |         r0 = fcn_00006df4 (r0, r1);
    0x00006f20 cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x00006f22 blt 0x6fe8                                        |             goto label_10;
                                                                 |         }
    0x00006f24 cmp sl, sb                                        |         
                                                                 |         if (sl == sb) {
    0x00006f26 beq 0x6f82                                        |             goto label_11;
                                                                 |         }
    0x00006f28 cmp r0, sb                                        |         
    0x00006f2a add.w r5, r5, 3                                   |         r5 += 3;
                                                                 |         if (r0 == sb) {
    0x00006f2e beq 0x6fec                                        |             goto label_12;
                                                                 |         }
    0x00006f30 orr.w r0, r0, sl, lsl 6                           |         r0 |= (sl << 6);
    0x00006f34 ubfx sl, sl, 2, 6                                 |         sl = (sl >> 2) & ((1 << 6) - 1);
    0x00006f38 orr.w sl, sl, r7, lsl 4                           |         sl |= (r7 << 4);
    0x00006f3c ubfx r7, r7, 4, 4                                 |         r7 = (r7 >> 4) & ((1 << 4) - 1);
    0x00006f40 orr.w r7, r7, r4, lsl 2                           |         r7 |= (r4 << 2);
    0x00006f44 strb r0, [r5, -0x1]                               |         *((r5 - 0x1)) = r0;
    0x00006f48 strb sl, [r5, -0x2]                               |         *((r5 - 0x2)) = sl;
    0x00006f4c strb r7, [r5, -0x3]                               |         *((r5 - 0x3)) = r7;
    0x00006f50 mov r1, fp                                        |         r1 = fp;
    0x00006f52 mov r0, r8                                        |         r0 = r8;
    0x00006f54 bl 0x6df4                                         |         r0 = fcn_00006df4 (r0, r1);
    0x00006f58 cmn.w r0, 0x20                                    |         
    0x00006f5c mov r4, r0                                        |         r4 = r0;
    0x00006f5e mov r6, r5                                        |         r6 = r5;
    0x00006f60 bne 0x6ef2                                        |         
                                                                 |     }
                                                                 | label_2:
    0x00006f62 movs r3, 0                                        |     r3 = 0;
    0x00006f64 strb r3, [r6]                                     |     *(r6) = r3;
    0x00006f66 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
                                                                 |     if (r3 != 0) {
    0x00006f68 cbz r3, 0x6f70                                    |         
    0x00006f6a ldr r2, [sp, 4]                                   |         r2 = var_4h;
    0x00006f6c subs r6, r6, r2                                   |         r6 -= r2;
    0x00006f6e str r6, [r3]                                      |         *(r3) = r6;
                                                                 |     }
    0x00006f70 ldr r3, [sp, 0xc]                                 |     r3 = var_ch_3;
    0x00006f72 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00006f74 beq 0x7012                                        |         goto label_13;
                                                                 |     }
    0x00006f76 ldr r2, [sp, 4]                                   |     r2 = var_4h;
    0x00006f78 str r2, [r3]                                      |     *(r3) = r2;
    0x00006f7a movs r3, 0                                        |     r3 = 0;
    0x00006f7c mov r4, r3                                        |     r4 = r3;
    0x00006f7e str r3, [sp, 4]                                   |     var_4h = r3;
    0x00006f80 b 0x6f9a                                          |     goto label_3;
                                                                 | label_11:
    0x00006f82 cmp r0, sb                                        |     
                                                                 |     if (r0 == sb) {
    0x00006f84 beq 0x7016                                        |         goto label_14;
                                                                 |     }
                                                                 | label_1:
    0x00006f86 mvn r4, 0x15                                      |     r4 = ~0x15;
                                                                 | label_0:
    0x00006f8a ldr r3, [sp, 8]                                   |     r3 = var_8h;
    0x00006f8c ldr r2, [sp]                                      |     r2 = *(sp);
    0x00006f8e cmp r2, 0                                         |     
    0x00006f90 ite eq                                            |     
                                                                 |     if (r2 != 0) {
    0x00006f92 moveq r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r2 == 0) {
    0x00006f94 andne r3, r3, 1                                   |         r3 &= 1;
                                                                 |     }
    0x00006f98 cbnz r3, 0x6fbc                                   |     
                                                                 |     while (1) {
                                                                 | label_3:
    0x00006f9a ldr r0, [sp, 4]                                   |         r0 = var_4h;
    0x00006f9c blx 0x1b80                                        |         fcn_00001b80 ();
    0x00006fa0 ldr r2, [pc, 0xa4]                                |         
    0x00006fa2 ldr r3, [pc, 0xa0]                                |         r3 = *(0x7046);
    0x00006fa4 add r2, pc                                        |         r2 = "MO_WO";
    0x00006fa6 ldr r3, [r2, r3]                                  |         r3 = "MO_WO";
    0x00006fa8 ldr r2, [r3]                                      |         r2 = "MO_WO";
    0x00006faa ldr r3, [sp, 0x1c]                                |         r3 = var_1ch;
    0x00006fac eors r2, r3                                       |         r2 ^= r3;
    0x00006fae mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00006fb2 bne 0x703c                                        |             goto label_15;
                                                                 |         }
    0x00006fb4 mov r0, r4                                        |         r0 = r4;
    0x00006fb6 add sp, 0x24                                      |         
    0x00006fb8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
    0x00006fbc ldrd r1, r0, [sp]                                 |         __asm ("ldrd r1, r0, [sp]");
    0x00006fc0 mov.w r2, -1                                      |         r2 = -1;
    0x00006fc4 blx 0x1f00                                        |         fcn_00001f00 ();
    0x00006fc8 b 0x6f9a                                          |         
                                                                 |     }
                                                                 | label_8:
    0x00006fca mov r4, r7                                        |     r4 = r7;
    0x00006fcc b 0x6f8a                                          |     goto label_0;
                                                                 | label_6:
    0x00006fce ldr r1, [pc, 0x7c]                                |     
    0x00006fd0 movw r2, 0x2cd                                    |     r2 = 0x2cd;
    0x00006fd4 ldr r3, [pc, 0x78]                                |     
    0x00006fd6 ldr r0, [pc, 0x7c]                                |     
    0x00006fd8 add r1, pc                                        |     r1 = 0xe02a;
    0x00006fda add r3, pc                                        |     r3 = 0xe02e;
    0x00006fdc adds r1, 7                                        |     r1 += 7;
    0x00006fde add r0, pc                                        |     r0 = 0xe038;
    0x00006fe0 bl 0x8500                                         |     fcn_00008500 (r0, r1, r2, r3, r4);
                                                                 | label_9:
    0x00006fe4 mov r4, sl                                        |     r4 = sl;
    0x00006fe6 b 0x6f8a                                          |     goto label_0;
                                                                 | label_10:
    0x00006fe8 mov r4, r0                                        |     r4 = r0;
    0x00006fea b 0x6f8a                                          |     goto label_0;
                                                                 | label_12:
    0x00006fec tst.w sl, 3                                       |     
                                                                 |     if ((sl & 3) != 0) {
    0x00006ff0 bne 0x6f86                                        |         goto label_1;
                                                                 |     }
    0x00006ff2 ldr r2, [sp, 0x14]                                |     r2 = var_14h;
                                                                 |     if (r2 != 0) {
    0x00006ff4 cbnz r2, 0x7030                                   |         goto label_16;
                                                                 |     }
    0x00006ff6 ubfx r3, sl, 2, 6                                 |     r3 = (sl >> 2) & ((1 << 6) - 1);
    0x00006ffa ubfx r1, r7, 4, 4                                 |     r1 = (r7 >> 4) & ((1 << 4) - 1);
    0x00006ffe orr.w r2, r3, r7, lsl 4                           |     r2 = r3 | (r7 << 4);
    0x00007002 orr.w r1, r1, r4, lsl 2                           |     r1 |= (r4 << 2);
    0x00007006 mov r3, r6                                        |     r3 = r6;
    0x00007008 strb r1, [r3], 2                                  |     *(r3) = r1;
                                                                 |     r3 += 2;
    0x0000700c strb r2, [r6, 1]                                  |     *((r6 + 1)) = r2;
    0x0000700e mov r6, r3                                        |     r6 = r3;
    0x00007010 b 0x6f62                                          |     goto label_2;
                                                                 | label_13:
    0x00007012 ldr r4, [sp, 0xc]                                 |     r4 = var_ch_3;
    0x00007014 b 0x6f9a                                          |     goto label_3;
                                                                 | label_14:
    0x00007016 lsls r3, r7, 0x1c                                 |     r3 = r7 << 0x1c;
                                                                 |     if (r3 != r7) {
    0x00007018 bne 0x6f86                                        |         goto label_1;
                                                                 |     }
    0x0000701a ldr r3, [sp, 0x14]                                |     r3 = var_14h;
                                                                 |     if (r3 == 0) {
    0x0000701c cbnz r3, 0x7030                                   |         
    0x0000701e lsls r3, r4, 2                                    |         r3 = r4 << 2;
    0x00007020 and r3, r3, 0x3fc                                 |         r3 &= 0x3fc;
    0x00007024 orr.w r3, r3, r7, asr 4                           |         r3 |= (r7 >> 4);
    0x00007028 strb r3, [r5], 1                                  |         *(r5) = r3;
                                                                 |         r5++;
    0x0000702c mov r6, r5                                        |         r6 = r5;
    0x0000702e b 0x6f62                                          |         goto label_2;
                                                                 |     }
                                                                 | label_16:
    0x00007030 mvn r4, 0x23                                      |     r4 = ~0x23;
    0x00007034 b 0x6f8a                                          |     goto label_0;
                                                                 | label_7:
    0x00007036 mvn r4, 0xb                                       |     r4 = ~0xb;
    0x0000703a b 0x6f9a                                          |     goto label_3;
                                                                 | label_15:
    0x0000703c blx 0x1bfc                                        |     parse_printf_format ();
    0x00007040 add r7, sp, 0x1a8                                 |     r7 += arg_1a8h;
    0x00007042 movs r1, r0                                       |     r1 = r0;
    0x00007044 lsls r4, r2, 7                                    |     r4 = r2 << 7;
    0x00007046 movs r0, r0                                       |     
    0x00007048 add r6, sp, 0x130                                 |     r6 += arg_130h;
    0x0000704a movs r1, r0                                       |     r1 = r0;
    0x0000704c ldrb r4, [r4, 0x1b]                               |     r4 = *((r4 + 0x1b));
    0x0000704e movs r0, r0                                       |     
    0x00007050 ldrb r6, [r3, 0x1c]                               |     r6 = *((r3 + 0x1c));
    0x00007052 movs r0, r0                                       |     
    0x00007054 ldrb r6, [r7, 0x1b]                               |     r6 = *((r7 + 0x1b));
    0x00007056 movs r0, r0                                       |     
    0x00007058 push {r4, r5, r6, lr}                             |     
    0x0000705a clz r6, r0                                        |     r6 &= r0;
    0x0000705e ldr r5, [pc, 0xbc]                                |     
    0x00007060 lsrs r6, r6, 5                                    |     r6 >>= 5;
    0x00007062 cmp r1, 0                                         |     
    0x00007064 ldr r4, [pc, 0xb8]                                |     r4 = *(0x7120);
    0x00007066 it eq                                             |     
                                                                 |     if (r1 != 0) {
    0x00007068 moveq r6, 0                                       |         r6 = 0;
                                                                 |     }
    0x0000706a add r5, pc                                        |     r5 = 0xe18c;
    0x0000706c sub sp, 0x10                                      |     
    0x0000706e ldr r4, [r5, r4]                                  |     
    0x00007070 ldr r4, [r4]                                      |     r4 = *(0xe18c);
    0x00007072 str r4, [sp, 0xc]                                 |     var_ch = r4;
    0x00007074 mov.w r4, 0                                       |     r4 = 0;
    0x00007076 lsls r0, r0, 0x10                                 |     r0 <<= 0x10;
    0x00007078 cmp r6, 0                                         |     
                                                                 |     if (r6 != 0) {
    0x0000707a bne 0x7104                                        |         goto label_17;
                                                                 |     }
    0x0000707c mov r4, r1                                        |     r4 = r1;
                                                                 |     if (r1 == 0) {
    0x0000707e cbz r1, 0x70f0                                    |         goto label_18;
                                                                 |     }
    0x00007080 cmp.w r3, -1                                      |     
    0x00007084 it eq                                             |     
                                                                 |     if (r3 == -1) {
    0x00007086 cmpeq r2, -1                                      |         __asm ("cmpeq r2, -1");
                                                                 |     }
    0x0000708a mov r5, r0                                        |     r5 = r0;
    0x0000708c it eq                                             |     
                                                                 |     if (r3 != -1) {
    0x0000708e moveq r2, r6                                      |         r2 = r6;
                                                                 |     }
                                                                 |     if (r3 != -1) {
    0x00007090 bne 0x70d8                                        |         goto label_19;
                                                                 |     }
    0x00007092 movs r3, 0                                        |     r3 = 0;
    0x00007094 mov r1, r4                                        |     r1 = r4;
    0x00007096 mov r0, r5                                        |     r0 = r5;
    0x00007098 blx 0x1d0c                                        |     r0 = fcn_00001d0c ();
    0x0000709c cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x0000709e blt 0x70f4                                        |         goto label_20;
                                                                 |     }
                                                                 |     if (r0 == 0) {
                                                                 | label_4:
    0x000070a0 beq 0x70c0                                        |         goto label_5;
                                                                 |     }
    0x000070a2 mov r1, r0                                        |     r1 = r0;
    0x000070a4 movs r3, 0                                        |     r3 = 0;
    0x000070a6 add.w ip, r5, 6                                   |     
                                                                 |     do {
    0x000070aa ldrsh.w r2, [ip, r3, lsl 3]                       |         offset_0 = r3 << 3;
                                                                 |         r2 = *((ip + offset_0));
                                                                 |         if (r2 != 0) {
    0x000070ae cbz r2, 0x70b6                                    |             
    0x000070b0 lsls r2, r2, 0x1a                                 |             r2 <<= 0x1a;
                                                                 |             if (r2 < r2) {
    0x000070b2 bmi 0x70fe                                        |                 goto label_21;
                                                                 |             }
    0x000070b4 subs r1, 1                                        |             r1--;
                                                                 |         }
    0x000070b6 adds r3, 1                                        |         r3++;
    0x000070b8 cmp r1, 0                                         |         
    0x000070ba it ne                                             |         
                                                                 |         if (r1 != 0) {
    0x000070bc cmpne r4, r3                                      |             __asm ("cmpne r4, r3");
                                                                 |         }
    0x000070be bhi 0x70aa                                        |         
                                                                 |     } while (r1 > 0);
                                                                 | label_5:
    0x000070c0 ldr r2, [pc, 0x60]                                |     
    0x000070c2 ldr r3, [pc, 0x5c]                                |     r3 = *(0x7122);
    0x000070c4 add r2, pc                                        |     r2 = 0xe1ec;
    0x000070c6 ldr r3, [r2, r3]                                  |     r3 = *(0xe1ec);
    0x000070c8 ldr r2, [r3]                                      |     r2 = *(0xe1ec);
    0x000070ca ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x000070cc eors r2, r3                                       |     r2 ^= r3;
    0x000070ce mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x000070d2 bne 0x7118                                        |         goto label_22;
                                                                 |     }
    0x000070d4 add sp, 0x10                                      |     
    0x000070d6 pop {r4, r5, r6, pc}                              |     
                                                                 | label_19:
    0x000070d8 add r0, sp, 4                                     |     r0 += var_4h_3;
    0x000070da bl 0xbc28                                         |     fcn_0000bc28 (r0, r1, r2);
    0x000070de movs r3, 0                                        |     r3 = 0;
    0x000070e0 mov r2, r0                                        |     r2 = r0;
    0x000070e2 mov r1, r4                                        |     r1 = r4;
    0x000070e4 mov r0, r5                                        |     r0 = r5;
    0x000070e6 blx 0x1d0c                                        |     r0 = fcn_00001d0c ();
    0x000070ea cmp r0, 0                                         |     
                                                                 |     if (r0 >= 0) {
    0x000070ec bge 0x70a0                                        |         goto label_4;
                                                                 |     }
    0x000070ee b 0x70f4                                          |     goto label_20;
                                                                 | label_18:
    0x000070f0 mov r0, r1                                        |     r0 = r1;
    0x000070f2 b 0x70c0                                          |     goto label_5;
                                                                 | label_20:
    0x000070f4 blx 0x1de8                                        |     r0 = sprintf_chk ()
    0x000070f8 ldr r0, [r0]                                      |     r0 = *(r0);
    0x000070fa rsbs r0, r0, 0                                    |     r0 -= ;
    0x000070fc b 0x70c0                                          |     goto label_5;
                                                                 | label_21:
    0x000070fe mvn r0, 8                                         |     r0 = ~8;
    0x00007102 b 0x70c0                                          |     goto label_5;
                                                                 | label_17:
    0x00007104 ldr r1, [pc, 0x20]                                |     
    0x00007106 movs r2, 0xa5                                     |     r2 = 0xa5;
    0x00007108 ldr r3, [pc, 0x20]                                |     
    0x0000710a ldr r0, [pc, 0x24]                                |     
    0x0000710c add r1, pc                                        |     r1 = 0xe238;
    0x0000710e add r3, pc                                        |     r3 = 0xe23e;
    0x00007110 adds r1, 7                                        |     r1 += 7;
    0x00007112 add r0, pc                                        |     r0 = "parse_argv";
    0x00007114 bl 0x8500                                         |     fcn_00008500 (r0, r1, r2, r3, r4);
    0x00007116 invalid                                           |     
                                                                 | label_22:
    0x00007118 blx 0x1bfc                                        |     parse_printf_format ();
    0x0000711c add r5, sp, 0x218                                 |     r5 += arg_218h;
    0x0000711e movs r1, r0                                       |     r1 = r0;
    0x00007120 lsls r4, r2, 7                                    |     r4 = r2 << 7;
    0x00007122 movs r0, r0                                       |     
    0x00007124 add r5, sp, 0xb0                                  |     r5 += arg_b0h;
    0x00007126 movs r1, r0                                       |     r1 = r0;
    0x00007128 ldrb r0, [r2, 0x18]                               |     r0 = *((r2 + 0x18));
    0x0000712a movs r0, r0                                       |     
    0x0000712c ldrb r2, [r3, 0x19]                               |     r2 = *((r3 + 0x19));
    0x0000712e movs r0, r0                                       |     
    0x00007130 ldrb r6, [r4, 0x18]                               |     r6 = *((r4 + 0x18));
    0x00007132 movs r0, r0                                       |     
    0x00007134 push {r4, lr}                                     |     
    0x00007136 mov ip, r1                                        |     
    0x00007138 ldr r4, [pc, 0x50]                                |     
    0x0000713a sub sp, 0x10                                      |     
    0x0000713c movs r1, 0                                        |     r1 = 0;
    0x0000713e ldr.w lr, [pc, 0x50]                              |     lr = *(0x7192);
    0x00007142 add r4, pc                                        |     r4 = 0xe2d2;
    0x00007144 ldr.w lr, [r4, lr]                                |     
    0x00007148 ldr.w lr, [lr]                                    |     lr = *(0xe2d2);
    0x0000714c str.w lr, [sp, 0xc]                               |     __asm ("str.w lr, [var_ch_2]");
    0x00007150 mov.w lr, 0                                       |     lr = 0;
    0x00007154 strh.w r1, [sp, 0xa]                              |     var_ah = r1;
    0x00007158 str r0, [sp, 4]                                   |     var_4h_2 = r0;
    0x0000715a movs r1, 1                                        |     r1 = 1;
    0x0000715c add r0, sp, 4                                     |     r0 += var_4h_2;
    0x0000715e strh.w ip, [sp, 8]                                |     var_8h_2 = ip;
    0x00007162 bl 0x7058                                         |     void (*0x7058)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3, r4, r5, r6);
    0x00007166 ldr r2, [pc, 0x2c]                                |     
    0x00007168 cmp r0, 0                                         |     
    0x0000716a ldr r3, [pc, 0x24]                                |     r3 = *(0x7192);
    0x0000716c it gt                                             |     
                                                                 |     if (r0 > 0) {
    0x0000716e ldrshgt r0, [sp, 0xa]                             |         __asm ("ldrshgt r0, [var_ah]");
                                                                 |     }
    0x00007170 movs r2, r1                                       |     r2 = r1;
    0x00007172 add r2, pc                                        |     r2 = 0xe30c;
    0x00007174 ldr r3, [r2, r3]                                  |     r3 = *(0xe30c);
    0x00007176 ldr r2, [r3]                                      |     r2 = *(0xe30c);
    0x00007178 ldr r3, [sp, 0xc]                                 |     r3 = var_ch_2;
    0x0000717a eors r2, r3                                       |     r2 ^= r3;
    0x0000717c mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 == r3) {
    0x00007180 bne 0x7186                                        |         
    0x00007182 add sp, 0x10                                      |         
    0x00007184 pop {r4, pc}                                      |         
                                                                 |     }
    0x00007186 blx 0x1bfc                                        |     parse_printf_format ();
    0x0000718a nop                                               |     
    0x0000718c add r4, sp, 0x2b8                                 |     r4 += arg_2b8h;
    0x0000718e movs r1, r0                                       |     r1 = r0;
    0x00007190 lsls r4, r2, 7                                    |     r4 = r2 << 7;
    0x00007192 movs r0, r0                                       |     
    0x00007194 add r4, sp, 0x1f8                                 |     r4 += arg_1f8h;
    0x00007196 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/cdrom_id @ 0x7198 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.00007198 ()                      | void fcn_00007198 (int16_t arg1, uint32_t arg2, uint32_t arg3, int16_t arg4) {
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
                                                 |     r2 = arg3;
                                                 |     r3 = arg4;
    0x00007198 mvnsmi lr, sp, lsr 18             |     __asm ("mvnsmi lr, sp, lsr 18");
    0x0000719c subs r6, r0, 0                    |     r6 = r0 - 0;
                                                 |     if (r6 < r0) {
    0x0000719e blt 0x721e                        |         goto label_3;
                                                 |     }
    0x000071a0 mov r5, r1                        |     r5 = r1;
    0x000071a2 cmp r1, 0                         |     
                                                 |     if (r1 == 0) {
    0x000071a4 beq 0x7232                        |         goto label_4;
                                                 |     }
    0x000071a6 cmp r2, 0                         |     
    0x000071a8 mov r4, r2                        |     r4 = r2;
                                                 |     if (r2 < 0) {
    0x000071aa blt 0x7246                        |         goto label_5;
                                                 |     }
    0x000071ac mov r8, r3                        |     r8 = r3;
    0x000071ae movs r7, 0                        |     r7 = 0;
                                                 |     do {
                                                 | label_2:
    0x000071b0 mov r2, r4                        |         r2 = r4;
    0x000071b2 mov r1, r5                        |         r1 = r5;
    0x000071b4 mov r0, r6                        |         r0 = r6;
    0x000071b6 blx 0x1b50                        |         r0 = fcn_00001b50 ();
    0x000071ba cmp r0, 0                         |         
                                                 |         if (r0 < 0) {
    0x000071bc blt 0x71d4                        |             goto label_6;
                                                 |         }
                                                 |         if (r0 == 0) {
    0x000071be beq 0x71ce                        |             goto label_1;
                                                 |         }
    0x000071c0 cmp r0, r4                        |         
                                                 |         if (r0 > r4) {
    0x000071c2 bhi 0x720a                        |             goto label_7;
                                                 |         }
    0x000071c4 add r5, r0                        |         r5 += r0;
    0x000071c6 subs r4, r4, r0                   |         r4 -= r0;
    0x000071c8 add r7, r0                        |         r7 += r0;
                                                 | label_0:
    0x000071ca cmp r4, 0                         |         
    0x000071cc bne 0x71b0                        |         
                                                 |     } while (r4 != 0);
                                                 | label_1:
    0x000071ce mov r0, r7                        |     r0 = r7;
    0x000071d0 pop.w {r4, r5, r6, r7, r8, pc}    |     
                                                 | label_6:
    0x000071d4 blx 0x1de8                        |     r0 = sprintf_chk ()
    0x000071d8 ldr r3, [r0]                      |     r3 = *(r0);
    0x000071da cmp r3, 4                         |     
                                                 |     if (r3 == 4) {
    0x000071dc beq 0x71ca                        |         goto label_0;
                                                 |     }
    0x000071de cmp r3, 0xb                       |     
                                                 |     if (r3 == 0xb) {
    0x000071e0 bne 0x71e8                        |         
    0x000071e2 cmp.w r8, 0                       |         
                                                 |         if (r8 != 0) {
    0x000071e6 bne 0x71f4                        |             goto label_8;
                                                 |         }
                                                 |     }
    0x000071e8 cmp r7, 0                         |     
                                                 |     if (r7 != 0) {
    0x000071ea bne 0x71ce                        |         goto label_1;
                                                 |     }
    0x000071ec rsbs r7, r3, 0                    |     r7 = r3 - ;
    0x000071ee mov r0, r7                        |     r0 = r7;
    0x000071f0 pop.w {r4, r5, r6, r7, r8, pc}    |     
                                                 | label_8:
    0x000071f4 movs r1, 1                        |     r1 = 1;
    0x000071f6 mov r0, r6                        |     r0 = r6;
    0x000071f8 mov.w r2, -1                      |     r2 = -1;
    0x000071fc mov.w r3, -1                      |     r3 = -1;
    0x00007200 bl 0x7134                         |     void (*0x7134)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3, r4, r5, r6);
    0x00007204 cmp r4, 0                         |     
                                                 |     if (r4 != 0) {
    0x00007206 bne 0x71b0                        |         goto label_2;
                                                 |     }
    0x00007208 b 0x71ce                          |     goto label_1;
                                                 | label_7:
    0x0000720a ldr r1, [pc, 0x40]                |     
    0x0000720c movs r2, 0x58                     |     r2 = 0x58;
    0x0000720e ldr r3, [pc, 0x40]                |     
    0x00007210 ldr r0, [pc, 0x40]                |     
    0x00007212 add r1, pc                        |     r1 = 0xe464;
    0x00007214 add r3, pc                        |     r3 = 0xe46a;
    0x00007216 adds r1, 7                        |     r1 += 7;
    0x00007218 add r0, pc                        |     r0 = 0xe470;
    0x0000721a bl 0x8500                         |     fcn_00008500 (r0, r1, r2, r3, r4);
    0x0000721c invalid                           |     
                                                 | label_3:
    0x0000721e ldr r1, [pc, 0x38]                |     
    0x00007220 movs r2, 0x37                     |     r2 = 0x37;
    0x00007222 ldr r3, [pc, 0x38]                |     
    0x00007224 ldr r0, [pc, 0x38]                |     
    0x00007226 add r1, pc                        |     r1 = 0xe484;
    0x00007228 add r3, pc                        |     r3 = 0xe48a;
    0x0000722a adds r1, 7                        |     r1 += 7;
    0x0000722c add r0, pc                        |     r0 = 0xe490;
    0x0000722e bl 0x8500                         |     fcn_00008500 (r0, r1, r2, r3, r4);
                                                 | label_4:
    0x00007232 ldr r1, [pc, 0x30]                |     
    0x00007234 movs r2, 0x38                     |     r2 = 0x38;
    0x00007236 ldr r3, [pc, 0x30]                |     
    0x00007238 ldr r0, [pc, 0x30]                |     
    0x0000723a add r1, pc                        |     r1 = 0xe4a4;
    0x0000723c add r3, pc                        |     r3 = 0xe4aa;
    0x0000723e adds r1, 7                        |     r1 += 7;
    0x00007240 add r0, pc                        |     r0 = 0xe4b0;
    0x00007242 bl 0x8500                         |     fcn_00008500 (r0, r1, r2, r3, r4);
                                                 | label_5:
    0x00007246 mvn r7, 0x15                      |     r7 = ~0x15;
    0x0000724a b 0x71ce                          |     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/cdrom_id @ 0x737c */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.0000737c ()              | void fcn_0000737c (int16_t arg_30h, int16_t arg_190h, int16_t arg1) {
                                         |     int16_t var_0h;
                                         |     int16_t var_ch;
                                         |     int16_t var_14h;
                                         |     r0 = arg1;
    0x0000737c push {r4, r5, lr}         |     
    0x0000737e orr r1, r0, 0x80000       |     r1 = r0 | 0x80000;
    0x00007380 movs r1, 0                |     r1 = 0;
    0x00007382 ldr r4, [pc, 0x84]        |     
    0x00007384 sub sp, 0x1c              |     
    0x00007386 movs r2, 0                |     r2 = 0;
    0x00007388 movs r0, 1                |     r0 = 1;
    0x0000738a ldr r3, [pc, 0x80]        |     r3 = *(0x740e);
    0x0000738c add r4, pc                |     r4 = 0xe79a;
    0x0000738e ldr r3, [r4, r3]          |     
    0x00007390 ldr r3, [r3]              |     r3 = *(0xe79a);
    0x00007392 str r3, [sp, 0x14]        |     var_14h = r3;
    0x00007394 mov.w r3, 0               |     r3 = 0;
    0x00007398 blx 0x1f48                |     r0 = fcn_00001f48 ();
    0x0000739c cmp r0, 0                 |     
                                         |     if (r0 < 0) {
    0x0000739e blt 0x73fa                |         goto label_0;
                                         |     }
    0x000073a0 bl 0x5b7c                 |     fcn_00005b7c (r0, r1);
    0x000073a4 movs r2, 1                |     r2 = 1;
    0x000073a6 mov.w r1, 0x800000        |     r1 = 0x800000;
    0x000073aa mov r4, r0                |     r4 = r0;
    0x000073ac add r5, sp, 0xc           |     r5 += var_ch;
    0x000073ae bl 0xae40                 |     r0 = fcn_0000ae40 (r0, r1, r2);
    0x000073b2 bl 0x9cd0                 |     r0 = fcn_00009cd0 (r0);
    0x000073b6 cmp r0, 1                 |     
    0x000073b8 mov.w r3, 0               |     r3 = 0;
    0x000073bc itet ne                   |     
                                         |     if (r0 != 1) {
    0x000073be movwne r2, 0x9680         |         __asm ("movwne r2, aav.0x000000ff");
                                         |     }
                                         |     if (r0 == 1) {
    0x000073c2 movwne r2, 0x2710         |         
                                         |     }
                                         |     if (r0 != 1) {
    0x000073c6 movt r2, 0x98             |         r2 = 0x982710;
                                         |     }
    0x000073ca mov r0, r5                |     r0 = r5;
    0x000073cc bl 0xbc98                 |     fcn_0000bc98 (r0, r1, r2);
    0x000073d0 movs r0, 8                |     r0 = 8;
    0x000073d2 mov r3, r5                |     r3 = r5;
    0x000073d4 str r0, [sp]              |     *(sp) = r0;
    0x000073d6 movs r2, 0x15             |     r2 = 0x15;
    0x000073d8 movs r1, 1                |     r1 = 1;
    0x000073da mov r0, r4                |     r0 = r4;
    0x000073dc blx 0x1b2c                |     fcn_00001b2c ();
    0x000073de invalid                   |     
                                         |     do {
    0x000073e0 ldr r2, [pc, 0x2c]        |         
    0x000073e2 ldr r3, [pc, 0x28]        |         r3 = *(0x740e);
    0x000073e4 add r2, pc                |         r2 = 0xe7f8;
    0x000073e6 ldr r3, [r2, r3]          |         r3 = *(0xe7f8);
    0x000073e8 ldr r2, [r3]              |         r2 = *(0xe7f8);
    0x000073ea ldr r3, [sp, 0x14]        |         r3 = var_14h;
    0x000073ec eors r2, r3               |         r2 ^= r3;
    0x000073ee mov.w r3, 0               |         r3 = 0;
                                         |         if (r2 != r3) {
    0x000073f2 bne 0x7404                |             goto label_1;
                                         |         }
    0x000073f4 mov r0, r4                |         r0 = r4;
    0x000073f6 add sp, 0x1c              |         
    0x000073f8 pop {r4, r5, pc}          |         
                                         | label_0:
    0x000073fa blx 0x1de8                |         r0 = sprintf_chk ()
    0x000073fe ldr r4, [r0]              |         r4 = *(r0);
    0x00007400 rsbs r4, r4, 0            |         r4 -= ;
    0x00007402 b 0x73e0                  |         
                                         |     } while (1);
                                         | label_1:
    0x00007404 blx 0x1bfc                |     parse_printf_format ();
    0x00007408 add r2, sp, 0x190         |     r2 += arg_190h;
    0x0000740a movs r1, r0               |     r1 = r0;
    0x0000740c lsls r4, r2, 7            |     r4 = r2 << 7;
    0x0000740e movs r0, r0               |     
    0x00007410 add r2, sp, 0x30          |     r2 += arg_30h;
    0x00007412 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/cdrom_id @ 0x7414 */
                                     | #include <stdint.h>
                                     |  
    ; (fcn) fcn.00007414 ()          | void fcn_00007414 () {
    0x00007414 invalid               |     
    0x00007418 add r4, pc            |     r4 += pc;
    0x0000741a ldr r3, [r4]          |     r3 = *(r4);
    0x0000741c cmp r3, 0             |     
    0x0000741e it ge                 |     
                                     |     if (r3 < 0) {
    0x00007420 movge r0, 0           |         r0 = 0;
                                     |     }
                                     |     if (r3 >= 0) {
    0x00007422 blt 0x7426            |         
    0x00007424 pop {r4, pc}          |         
                                     |     }
    0x00007426 ldr r0, [pc, 0x30]    |     
    0x00007428 movw r1, 0x101        |     
    0x0000742c movt r1, 8            |     r1 = 0x80101;
    0x00007430 add r0, pc            |     r0 = 0xe88e;
    0x00007432 blx 0x1cf4            |     r0 = fcn_00001cf4 ();
    0x00007436 cmp r0, 0             |     
    0x00007438 str r0, [r4]          |     *(r4) = r0;
                                     |     if (r0 >= 0) {
    0x0000743a blt 0x7448            |         
    0x0000743c bl 0x5b7c             |         r0 = fcn_00005b7c (r0, r1);
    0x00007440 mov r3, r0            |         r3 = r0;
    0x00007442 movs r0, 0            |         r0 = 0;
    0x00007444 str r3, [r4]          |         *(r4) = r3;
    0x00007446 pop {r4, pc}          |         
                                     |     }
    0x00007448 blx 0x1de8            |     r0 = sprintf_chk ()
    0x0000744c ldr r0, [r0]          |     r0 = *(r0);
    0x0000744e rsbs r0, r0, 0        |     r0 -= ;
    0x00007450 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/cdrom_id @ 0x76e0 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.000076e0 ()                                  | void fcn_000076e0 (int16_t arg_2c8h, 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_2;
                                                             |     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;
                                                             |     char * str;
                                                             |     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_d0h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x000076e0 svcmi 0xf0e92d                                |     __asm ("svcmi aav.0x000000ff");
    0x000076e4 mov sl, r2                                    |     sl = r2;
    0x000076e6 subw sp, sp, 0x874                            |     __asm ("subw sp, sp, aav.0x000000ff");
    0x000076ea ldr r2, [pc, 0x100]                           |     
    0x000076ec mov fp, r3                                    |     
    0x000076ee add r5, sp, 0x4c                              |     r5 += str;
    0x000076f0 ldr.w r4, [sp, 0x898]                         |     r4 = *(arg_898h);
    0x000076f4 mov r6, r0                                    |     r6 = r0;
    0x000076f6 ldr r3, [pc, 0xf8]                            |     r3 = *(0x77f2);
    0x000076f8 add r2, pc                                    |     r2 = 0xeeea;
    0x000076fa ldr.w r8, [pc, 0xf8]                          |     r8 = *(0x000077f4);
    0x000076fe mov r7, r1                                    |     r7 = r1;
    0x00007700 str r4, [sp, 0x1c]                            |     var_1ch = r4;
    0x00007702 movs r1, 0                                    |     r1 = 0;
    0x00007704 ldr r3, [r2, r3]                              |     
    0x00007706 mov r0, r5                                    |     r0 = r5;
    0x00007708 ldr.w r4, [sp, 0x8a0]                         |     r4 = *(arg_8a0h);
    0x0000770c add r8, pc                                    |     r8 += pc;
    0x0000770e movs r2, 0x20                                 |     r2 = 0x20;
    0x00007710 ldr.w sb, [sp, 0x8ac]                         |     sb = *(arg_8ach);
    0x00007714 ldr r3, [r3]                                  |     r3 = *(0xeeea);
    0x00007716 str.w r3, [sp, 0x86c]                         |     __asm ("str.w r3, [arg_86ch]");
    0x00007718 subs r0, 0x6c                                 |     r0 -= 0x6c;
    0x0000771a mov.w r3, 0                                   |     r3 = 0;
    0x0000771c lsls r0, r0, 0xc                              |     r0 <<= 0xc;
    0x0000771e ldr.w r3, [sp, 0x89c]                         |     r3 = *(arg_89ch);
    0x00007722 str r4, [sp, 0x24]                            |     var_0h = r4;
    0x00007724 ldr.w r4, [sp, 0x8a8]                         |     r4 = *(arg_8a8h);
    0x00007728 str r3, [sp, 0x20]                            |     var_20h_2 = r3;
    0x0000772a ldr.w r3, [sp, 0x8a4]                         |     r3 = *(arg_8a4h);
    0x0000772e str r4, [sp, 0x2c]                            |     var_8h = r4;
    0x00007730 str r3, [sp, 0x28]                            |     var_4h = r3;
    0x00007732 blx 0x1e30                                    |     strtoull (r0, r1, r2);
    0x00007736 ldr.w r3, [r8]                                |     r3 = *(r8);
    0x0000773a movs r0, 0                                    |     r0 = 0;
    0x0000773c strd r0, r0, [sp, 0x30]                       |     __asm ("strd r0, r0, [sp, 0x30]");
    0x00007740 strd r0, r0, [sp, 0x38]                       |     __asm ("strd r0, r0, [sp, 0x38]");
    0x00007744 cmp r3, r0                                    |     
    0x00007746 strd r0, r0, [sp, 0x40]                       |     __asm ("strd r0, r0, [sp, 0x40]");
    0x0000774a str r0, [sp, 0x48]                            |     var_24h = r0;
                                                             |     if (r3 < r0) {
    0x0000774c blt 0x77c0                                    |         goto label_0;
                                                             |     }
    0x0000774e ldr r2, [sp, 0x2c]                            |     r2 = var_8h;
    0x00007750 add r4, sp, 0x30                              |     r4 += var_ch;
    0x00007752 ldr r1, [sp, 0x24]                            |     r1 = var_0h;
    0x00007754 ldr r0, [sp, 0x28]                            |     r0 = var_4h;
    0x00007756 str r2, [sp, 0x14]                            |     var_14h = r2;
    0x00007758 ldr r2, [sp, 0x20]                            |     r2 = var_20h_2;
    0x0000775a ldr r3, [sp, 0x1c]                            |     r3 = var_1ch;
    0x0000775c str r1, [sp, 0xc]                             |     var_ch_2 = r1;
    0x0000775e mov r1, r6                                    |     r1 = r6;
    0x00007760 ldr r6, [pc, 0x94]                            |     
    0x00007762 str r2, [sp, 8]                               |     var_8h_2 = r2;
    0x00007764 mov r2, r7                                    |     r2 = r7;
    0x00007766 add r7, sp, 0x6c                              |     r7 += var_6ch_2;
    0x00007768 str r0, [sp, 0x10]                            |     var_10h_2 = r0;
    0x0000776a strd fp, r3, [sp]                             |     __asm ("strd fp, r3, [sp]");
    0x0000776e mov r0, r7                                    |     r0 = r7;
    0x00007770 mov r3, sl                                    |     r3 = sl;
    0x00007772 add r6, pc                                    |     r6 = 0xef6e;
    0x00007774 bl 0x74b4                                     |     fcn_000074b4 (r0, r1, r2, r3, r4, r5, r6);
    0x00007778 mov r0, r7                                    |     r0 = r7;
    0x0000777a blx 0x1da0                                    |     r0 = strchr (r0, r1);
    0x0000777e strd r7, r0, [sp, 0x4c]                       |     __asm ("strd r7, r0, [sp, 0x4c]");
    0x00007782 add r3, sp, 0x54                              |     r3 += var_54h_2;
    0x00007784 ldm.w r6, {r0, r1}                            |     r0 = *(r6);
                                                             |     r1 = *((r6 + 4));
    0x00007788 adds r6, 8                                    |     r6 += 8;
    0x0000778a stm.w r3, {r0, r1}                            |     *(r3) = r0;
                                                             |     *((r3 + 4)) = r1;
    0x0000778e mov r0, sb                                    |     r0 = sb;
    0x00007790 blx 0x1da0                                    |     strchr (r0, r1);
    0x00007794 str r0, [sp, 0x60]                            |     var_60h_2 = r0;
    0x00007796 add r3, sp, 0x64                              |     r3 += var_64h;
    0x00007798 ldm.w r6, {r0, r1}                            |     r0 = *(r6);
                                                             |     r1 = *((r6 + 4));
    0x0000779c mov.w r2, 0x4000                              |     r2 = 0x4000;
    0x000077a0 str.w sb, [sp, 0x5c]                          |     __asm ("str.w sb, [var_38h]");
    0x000077a4 str r5, [sp, 0x38]                            |     var_38h_2 = r5;
    0x000077a6 stm.w r3, {r0, r1}                            |     *(r3) = r0;
                                                             |     *((r3 + 4)) = r1;
    0x000077aa movs r3, 4                                    |     r3 = 4;
    0x000077ac ldr.w r0, [r8]                                |     r0 = *(r8);
    0x000077b0 mov r1, r4                                    |     r1 = r4;
    0x000077b2 str r3, [sp, 0x3c]                            |     var_3ch = r3;
    0x000077b4 blx 0x1bd4                                    |     r0 = fcn_00001bd4 ();
    0x000077b8 cmp r0, 0                                     |     
    0x000077ba it ge                                         |     
                                                             |     if (r0 < 0) {
    0x000077bc movge r0, 1                                   |         r0 = 1;
                                                             |     }
    0x000077be blt 0x77de                                    |     
                                                             |     while (1) {
                                                             | label_0:
    0x000077c0 ldr r2, [pc, 0x38]                            |         
    0x000077c2 ldr r3, [pc, 0x2c]                            |         r3 = *(0x77f2);
    0x000077c4 add r2, pc                                    |         r2 = 0xefc4;
    0x000077c6 ldr r3, [r2, r3]                              |         r3 = *(0xefc4);
    0x000077c8 ldr r2, [r3]                                  |         r2 = *(0xefc4);
    0x000077ca ldr.w r3, [sp, 0x86c]                         |         r3 = *(arg_86ch);
    0x000077ce eors r2, r3                                   |         r2 ^= r3;
    0x000077d0 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x000077d4 bne 0x77e8                                    |             goto label_1;
                                                             |         }
    0x000077d6 addw sp, sp, 0x874                            |         __asm ("addw sp, sp, aav.0x000000ff");
    0x000077da pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |         
    0x000077de blx 0x1de8                                    |         r0 = sprintf_chk ()
    0x000077e2 ldr r0, [r0]                                  |         r0 = *(r0);
    0x000077e4 rsbs r0, r0, 0                                |         r0 -= ;
    0x000077e6 b 0x77c0                                      |         
                                                             |     }
                                                             | label_1:
    0x000077e8 blx 0x1bfc                                    |     parse_printf_format ();
    0x000077ec adr r6, 0x3e0                                 |     r6 = 0x3e0;
    0x000077ee movs r1, r0                                   |     r1 = r0;
    0x000077f0 lsls r4, r2, 7                                |     r4 = r2 << 7;
    0x000077f2 movs r0, r0                                   |     
    0x000077f4 add r1, sp, 0xd0                              |     r1 += var_d0h;
    0x000077f6 movs r1, r0                                   |     r1 = r0;
    0x000077f8 add r0, sp, 0x2c8                             |     r0 += arg_2c8h;
    0x000077fa movs r1, r0                                   |     r1 = r0;
    0x000077fc adr r6, 0xb0                                  |     r6 = 0xb0;
    0x000077fe 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/cdrom_id @ 0x7800 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.00007800 ()                  | void fcn_00007800 () {
                                             |     if (? < ?) {
    0x00007800 andhs fp, r2, r8, lsr r5      |         
                                             |     }
    0x00007804 ldr r5, [pc, 0x3c]            |     
    0x00007806 bl 0x737c                     |     r0 = fcn_0000737c (r0, r1, r2);
    0x0000780a cmp r0, 0                     |     
    0x0000780c add r5, pc                    |     r5 = "LANG";
    0x0000780e str r0, [r5]                  |     *(r5) = r0;
                                             |     if (r0 >= 0) {
    0x00007810 blt 0x7828                    |         
    0x00007812 ldr r1, [pc, 0x34]            |         
    0x00007814 movs r2, 0x1e                 |         r2 = 0x1e;
    0x00007816 add r1, pc                    |         r1 = 0xf064;
    0x00007818 blx 0x1fcc                    |         r0 = fcn_00001fcc ();
    0x0000781c cmp r0, 0                     |         
    0x0000781e it ge                         |         
                                             |         if (r0 < 0) {
    0x00007820 movge r4, 0                   |             r4 = 0;
                                             |         }
                                             |         if (r0 < 0) {
    0x00007822 blt 0x7838                    |             goto label_0;
                                             |         }
    0x00007824 mov r0, r4                    |         r0 = r4;
    0x00007826 pop {r3, r4, r5, pc}          |         
                                             |     }
    0x00007828 mov r4, r0                    |     r4 = r0;
                                             |     do {
    0x0000782a bl 0x5a98                     |         fcn_00005a98 (r0, r1, r2, r3, r4);
    0x0000782e ldr r3, [pc, 0x1c]            |         
    0x00007830 add r3, pc                    |         r3 = 0xf082;
    0x00007832 str r0, [r3]                  |         *(r3) = r0;
    0x00007834 mov r0, r4                    |         r0 = r4;
    0x00007836 pop {r3, r4, r5, pc}          |         
                                             | label_0:
    0x00007838 blx 0x1de8                    |         r0 = sprintf_chk ()
    0x0000783c ldr r4, [r0]                  |         r4 = *(r0);
    0x0000783e ldr r0, [r5]                  |         r0 = *(r5);
    0x00007840 rsbs r4, r4, 0                |         r4 -= ;
    0x00007842 b 0x782a                      |         
                                             |     } 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/cdrom_id @ 0x7850 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.00007850 ()                  | void fcn_00007850 () {
                                             |     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;
    0x00007850 ldr r2, [pc, 0x2a8]           |     
    0x00007852 ldr r3, [pc, 0x2ac]           |     r3 = *(0x7b02);
    0x00007854 push {r4, r5, r6, r7, lr}     |     
    0x00007856 sub sp, 0x8c                  |     
    0x00007858 add r2, pc                    |     r2 = 0xf358;
    0x0000785a ldr r5, [pc, 0x2a8]           |     
    0x0000785c ldr r3, [r2, r3]              |     
    0x0000785e add r5, pc                    |     r5 = 0xf368;
    0x00007860 ldr r3, [r3]                  |     r3 = *(0xf358);
    0x00007862 str r3, [sp, 0x84]            |     var_84h = r3;
    0x00007864 mov.w r3, 0                   |     r3 = 0;
    0x00007868 blx 0x1de8                    |     sprintf_chk ()
    0x0000786a invalid                       |     
    0x0000786e mov r4, r0                    |     r4 = r0;
    0x00007870 ldr r6, [r0]                  |     r6 = *(r0);
    0x00007872 cmp r3, 8                     |     
                                             |     if (r3 == 8) {
    0x00007874 beq.w 0x79b6                  |         goto label_10;
                                             |     }
    0x00007878 bl 0x9cd0                     |     r0 = fcn_00009cd0 (r0);
    0x0000787c cmp r0, 1                     |     
                                             |     if (r0 != 1) {
    0x0000787e bne 0x78ea                    |         goto label_11;
                                             |     }
    0x00007880 ldr r3, [r5]                  |     r3 = *(r5);
                                             |     do {
                                             | label_2:
    0x00007882 ldr r2, [pc, 0x284]           |         
    0x00007884 add r2, pc                    |         r2 = 0xf392;
    0x00007886 ldrb r2, [r2]                 |         r2 = *(r2);
                                             |         if (r2 == 0) {
    0x00007888 cbnz r2, 0x7892               |             
    0x0000788a cmp r3, 4                     |             
                                             |             if (r3 > 4) {
    0x0000788c bgt 0x796a                    |                 goto label_12;
                                             |             }
    0x0000788e cmp r3, 2                     |             
                                             |             if (r3 > 2) {
    0x00007890 bgt 0x796e                    |                 goto label_13;
                                             |             }
                                             |         }
                                             | label_4:
    0x00007892 cmp r3, 7                     |         
                                             |         if (r3 <= 7) {
    0x00007894 bhi 0x78aa                    |             
    0x00007896 movs r2, 0xd4                 |             r2 = 0xd4;
    0x00007898 lsr.w r3, r2, r3              |             r3 = r2 >> r3;
    0x0000789c lsls r3, r3, 0x1f             |             r3 <<= 0x1f;
                                             |             if (r3 >= r3) {
    0x0000789e bpl 0x78aa                    |                 goto label_1;
                                             |             }
    0x000078a0 bl 0x7414                     |             r0 = fcn_00007414 ();
    0x000078a4 subs r5, r0, 0                |             r5 = r0 - 0;
                                             |             if (r5 >= r0) {
    0x000078a6 bge.w 0x7a2c                  |                 goto label_14;
                                             |             }
                                             |         }
                                             | label_1:
    0x000078aa ldr r7, [pc, 0x260]           |         
    0x000078ac ldr r5, [pc, 0x260]           |         
    0x000078ae add r7, pc                    |         r7 = 0xf3c0;
    0x000078b0 add r5, pc                    |         r5 = 0xf3c4;
    0x000078b2 ldr r0, [r7]                  |         r0 = *(0xf3c0);
    0x000078b4 bl 0x5a98                     |         fcn_00005a98 (r0, r1, r2, r3, r4);
    0x000078b8 str r0, [r7]                  |         *(r7) = r0;
    0x000078ba ldr r0, [r5]                  |         r0 = *(0xf3c4);
    0x000078bc bl 0x5a98                     |         fcn_00005a98 (r0, r1, r2, r3, r4);
    0x000078c0 str r0, [r5]                  |         *(r5) = r0;
    0x000078c2 bl 0x745c                     |         r0 = fcn_0000745c ();
    0x000078c6 mov r5, r0                    |         r5 = r0;
                                             | label_0:
    0x000078c8 ldr r2, [pc, 0x248]           |         
    0x000078ca cmp r6, 0                     |         
    0x000078cc ldr r3, [pc, 0x230]           |         r3 = *(0x7b00);
    0x000078ce it ge                         |         
                                             |         if (r6 < 0) {
    0x000078d0 strge r6, [r4]                |             *(r4) = r6;
                                             |         }
    0x000078d2 add r2, pc                    |         r2 = 0xf3ea;
    0x000078d4 ldr r3, [r2, r3]              |         r3 = *(0xf3ea);
    0x000078d6 ldr r2, [r3]                  |         r2 = *(0xf3ea);
    0x000078d8 ldr r3, [sp, 0x84]            |         r3 = var_84h;
    0x000078da eors r2, r3                   |         r2 ^= r3;
    0x000078dc mov.w r3, 0                   |         r3 = 0;
                                             |         if (r2 != r3) {
    0x000078e0 bne.w 0x7aec                  |             goto label_15;
                                             |         }
    0x000078e4 mov r0, r5                    |         r0 = r5;
    0x000078e6 add sp, 0x8c                  |         
    0x000078e8 pop {r4, r5, r6, r7, pc}      |         
                                             | label_11:
    0x000078ea ldr r0, [pc, 0x22c]           |         
    0x000078ec movs r5, 0                    |         r5 = 0;
    0x000078ee str r5, [sp]                  |         *(sp) = r5;
    0x000078f0 add r0, pc                    |         r0 = 0xf40e;
    0x000078f2 blx 0x1d00                    |         fcn_00001d00 ();
    0x000078f6 str r0, [sp, 4]               |         var_4h = r0;
    0x000078f8 cmp r0, 0                     |         
                                             |         if (r0 == 0) {
    0x000078fa beq 0x79a0                    |             goto label_16;
                                             |         }
    0x000078fc ldr r2, [pc, 0x21c]           |         
    0x000078fe movs r3, 0x40                 |         r3 = 0x40;
    0x00007900 mov r1, sp                    |         r1 = sp;
    0x00007902 add r0, sp, 4                 |         r0 += var_4h;
    0x00007904 add r2, pc                    |         r2 = 0xf424;
    0x00007906 bl 0x5640                     |         r0 = fcn_00005640 (r0, r1, r2, r3, r4, r5, r6);
    0x0000790a cmp r0, 0                     |         
                                             |         if (r0 <= 0) {
    0x0000790c ble 0x79a0                    |             goto label_16;
                                             |         }
    0x0000790e ldrd r0, r3, [sp]             |         __asm ("ldrd r0, r3, [sp]");
    0x00007912 cmp r3, 0                     |         
                                             |         if (r3 == 0) {
    0x00007914 beq 0x79a2                    |             goto label_17;
                                             |         }
    0x00007916 add r2, sp, 8                 |         r2 += var_8h;
    0x00007918 mov r1, r5                    |         r1 = r5;
    0x0000791a bl 0x9758                     |         r0 = fcn_00009758 (r0, r1, r2);
    0x0000791e cmp r0, 0                     |         
                                             |         if (r0 < 0) {
    0x00007920 blt 0x79a0                    |             goto label_16;
                                             |         }
    0x00007922 ldr r0, [sp, 4]               |         r0 = var_4h;
    0x00007924 add r2, sp, 0x10              |         r2 += var_10h;
    0x00007926 mov r1, r5                    |         r1 = r5;
    0x00007928 bl 0x9758                     |         r0 = fcn_00009758 (r0, r1, r2);
    0x0000792c cmp r0, 0                     |         
                                             |         if (r0 < 0) {
    0x0000792e blt 0x79a0                    |             goto label_16;
                                             |         }
    0x00007930 add r1, sp, 0x18              |         r1 += var_18h;
    0x00007932 movs r0, 2                    |         r0 = 2;
    0x00007934 blx 0x1f54                    |         r0 = fcn_00001f54 ();
    0x00007938 cmp r0, 0                     |         
                                             |         if (r0 < 0) {
    0x0000793a blt 0x79a0                    |             goto label_16;
                                             |         }
    0x0000793c ldrd r5, r2, [sp, 0x18]       |         __asm ("ldrd r5, r2, [var_18h]");
    0x00007940 ldr r1, [sp, 8]               |         r1 = var_8h;
    0x00007942 ldr r3, [sp, 0xc]             |         r3 = var_ch;
    0x00007944 ldr r0, [sp]                  |         r0 = *(sp);
    0x00007946 cmp r2, r3                    |         
    0x00007948 it eq                         |         
                                             |         if (r2 == r3) {
    0x0000794a cmpeq r5, r1                  |             __asm ("cmpeq r5, r1");
                                             |         }
                                             |         if (r2 != r3) {
    0x0000794c bne 0x79a2                    |             goto label_17;
                                             |         }
    0x0000794e ldrd r5, r2, [sp, 0x78]       |         __asm ("ldrd r5, r2, [var_78h]");
    0x00007952 ldrd r1, r3, [sp, 0x10]       |         __asm ("ldrd r1, r3, [var_10h]");
    0x00007956 cmp r2, r3                    |         
    0x00007958 it eq                         |         
                                             |         if (r2 == r3) {
    0x0000795a cmpeq r5, r1                  |             __asm ("cmpeq r5, r1");
                                             |         }
                                             |         if (r2 != r3) {
    0x0000795c bne 0x79a2                    |             goto label_17;
                                             |         }
    0x0000795e blx 0x1b80                    |         fcn_00001b80 ();
    0x00007962 ldr r3, [pc, 0x1bc]           |         
    0x00007964 add r3, pc                    |         
    0x00007966 ldr r3, [r3]                  |         r3 = *(0xf48a);
    0x00007968 b 0x7882                      |         
                                             |     } while (1);
                                             | label_12:
    0x0000796a cmp r3, 7                     |     
                                             |     if (r3 != 7) {
    0x0000796c bne 0x79f4                    |         goto label_18;
                                             |     }
                                             | label_13:
    0x0000796e ldr r3, [pc, 0x1b4]           |     
    0x00007970 add r3, pc                    |     
    0x00007972 ldr r3, [r3]                  |     r3 = *(0xf49a);
    0x00007974 cmp r3, 0                     |     
    0x00007976 it ge                         |     
                                             |     if (r3 < 0) {
    0x00007978 movge r5, 0                   |         r5 = 0;
                                             |     }
                                             |     if (r3 < 0) {
    0x0000797a blt 0x79e6                    |         goto label_19;
                                             |     }
                                             | label_3:
    0x0000797c ldr r7, [pc, 0x1a8]           |     
    0x0000797e add r7, pc                    |     r7 = 0xf4aa;
    0x00007980 ldr r0, [r7]                  |     r0 = *(0xf4aa);
    0x00007982 bl 0x5a98                     |     fcn_00005a98 (r0, r1, r2, r3, r4);
    0x00007986 ldr r3, [pc, 0x1a4]           |     
    0x00007988 str r0, [r7]                  |     *(r7) = r0;
    0x0000798a add r3, pc                    |     r3 = 0xf4bc;
    0x0000798c ldr r0, [r3]                  |     r0 = *(0xf4bc);
    0x0000798e cmp r0, 2                     |     
                                             |     if (r0 <= 2) {
    0x00007990 ble.w 0x7aca                  |         goto label_20;
                                             |     }
    0x00007994 bl 0x5a98                     |     fcn_00005a98 (r0, r1, r2, r3, r4);
                                             | label_7:
    0x00007998 ldr r3, [pc, 0x194]           |     
    0x0000799a add r3, pc                    |     r3 = 0xf4ce;
    0x0000799c str r0, [r3]                  |     *(r3) = r0;
    0x0000799e b 0x78c8                      |     goto label_0;
                                             | label_16:
    0x000079a0 ldr r0, [sp]                  |     r0 = *(sp);
                                             | label_17:
    0x000079a2 blx 0x1b80                    |     fcn_00001b80 ();
    0x000079a6 ldr r3, [pc, 0x18c]           |     
    0x000079a8 add r3, pc                    |     
    0x000079aa ldr r3, [r3]                  |     r3 = *(0xf4e2);
    0x000079ac subs r2, r3, 2                |     r2 = r3 - 2;
    0x000079ae cmp r2, 4                     |     
                                             |     if (r2 > 4) {
    0x000079b0 bhi.w 0x78aa                  |         goto label_1;
                                             |     }
    0x000079b4 b 0x7882                      |     goto label_2;
                                             | label_10:
    0x000079b6 ldr r7, [pc, 0x180]           |     
    0x000079b8 ldr r5, [pc, 0x180]           |     
    0x000079ba add r7, pc                    |     r7 = 0xf4f8;
    0x000079bc add r5, pc                    |     r5 = 0xf4fc;
    0x000079be ldr r0, [r7]                  |     r0 = *(0xf4f8);
    0x000079c0 bl 0x5a98                     |     fcn_00005a98 (r0, r1, r2, r3, r4);
    0x000079c4 str r0, [r7]                  |     *(r7) = r0;
    0x000079c6 ldr r0, [r5]                  |     r0 = *(0xf4fc);
    0x000079c8 bl 0x5a98                     |     fcn_00005a98 (r0, r1, r2, r3, r4);
    0x000079cc ldr r3, [pc, 0x170]           |     
    0x000079ce str r0, [r5]                  |     *(r5) = r0;
    0x000079d0 add r3, pc                    |     r3 = 0xf514;
    0x000079d2 ldr r0, [r3]                  |     r0 = *(0xf514);
    0x000079d4 cmp r0, 2                     |     
                                             |     if (r0 <= 2) {
    0x000079d6 ble 0x7a98                    |         goto label_21;
                                             |     }
    0x000079d8 bl 0x5a98                     |     fcn_00005a98 (r0, r1, r2, r3, r4);
                                             | label_5:
    0x000079dc ldr r3, [pc, 0x164]           |     
    0x000079de movs r5, 0                    |     r5 = 0;
    0x000079e0 add r3, pc                    |     r3 = 0xf528;
    0x000079e2 str r0, [r3]                  |     *(r3) = r0;
    0x000079e4 b 0x78c8                      |     goto label_0;
                                             | label_19:
    0x000079e6 bl 0x7800                     |     r0 = fcn_00007800 ();
    0x000079ea subs r5, r0, 0                |     r5 = r0 - 0;
                                             |     if (r5 >= r0) {
    0x000079ec bge 0x797c                    |         goto label_3;
                                             |     }
    0x000079ee ldr r3, [pc, 0x158]           |     
    0x000079f0 add r3, pc                    |     
    0x000079f2 ldr r3, [r3]                  |     r3 = *(0xf53e);
                                             | label_18:
    0x000079f4 subs r2, r3, 5                |     r2 = r3 - 5;
    0x000079f6 cmp r2, 1                     |     
                                             |     if (r2 > 1) {
    0x000079f8 bhi.w 0x7892                  |         goto label_4;
                                             |     }
    0x000079fc ldr r7, [pc, 0x14c]           |     
    0x000079fe add r7, pc                    |     r7 = 0xf54e;
    0x00007a00 ldr r3, [r7]                  |     r3 = *(0xf54e);
    0x00007a02 cmp r3, 0                     |     
    0x00007a04 it ge                         |     
                                             |     if (r3 < 0) {
    0x00007a06 movge r5, 0                   |         r5 = 0;
                                             |     }
    0x00007a08 blt 0x7a5a                    |     
                                             |     while (1) {
                                             | label_6:
    0x00007a0a ldr r7, [pc, 0x144]           |         
    0x00007a0c add r7, pc                    |         r7 = 0xf562;
    0x00007a0e ldr r0, [r7]                  |         r0 = *(0xf562);
    0x00007a10 bl 0x5a98                     |         fcn_00005a98 (r0, r1, r2, r3, r4);
    0x00007a14 ldr r3, [pc, 0x13c]           |         
    0x00007a16 str r0, [r7]                  |         *(r7) = r0;
    0x00007a18 add r3, pc                    |         r3 = 0xf570;
    0x00007a1a ldr r0, [r3]                  |         r0 = *(0xf570);
    0x00007a1c cmp r0, 2                     |         
                                             |         if (r0 <= 2) {
    0x00007a1e ble 0x7af0                    |             goto label_22;
                                             |         }
    0x00007a20 bl 0x5a98                     |         fcn_00005a98 (r0, r1, r2, r3, r4);
                                             | label_9:
    0x00007a24 ldr r3, [pc, 0x130]           |         
    0x00007a26 add r3, pc                    |         r3 = 0xf582;
    0x00007a28 str r0, [r3]                  |         *(r3) = r0;
    0x00007a2a b 0x78c8                      |         goto label_0;
                                             | label_14:
    0x00007a2c ldr r7, [pc, 0x12c]           |         
    0x00007a2e add r7, pc                    |         r7 = 0xf58e;
    0x00007a30 ldr r0, [r7]                  |         r0 = *(0xf58e);
    0x00007a32 bl 0x5a98                     |         fcn_00005a98 (r0, r1, r2, r3, r4);
    0x00007a36 str r0, [r7]                  |         *(r7) = r0;
    0x00007a38 ldr r7, [pc, 0x124]           |         
    0x00007a3a add r7, pc                    |         r7 = 0xf59e;
    0x00007a3c ldr r0, [r7]                  |         r0 = *(0xf59e);
    0x00007a3e bl 0x5a98                     |         fcn_00005a98 (r0, r1, r2, r3, r4);
    0x00007a42 ldr r3, [pc, 0x120]           |         
    0x00007a44 str r0, [r7]                  |         *(r7) = r0;
    0x00007a46 add r3, pc                    |         r3 = 0xf5b0;
    0x00007a48 ldr r0, [r3]                  |         r0 = *(0xf5b0);
    0x00007a4a cmp r0, 2                     |         
                                             |         if (r0 <= 2) {
    0x00007a4c ble 0x7ad0                    |             goto label_23;
                                             |         }
    0x00007a4e bl 0x5a98                     |         fcn_00005a98 (r0, r1, r2, r3, r4);
                                             | label_8:
    0x00007a52 ldr r3, [pc, 0x114]           |         
    0x00007a54 add r3, pc                    |         r3 = 0xf5c2;
    0x00007a56 str r0, [r3]                  |         *(r3) = r0;
    0x00007a58 b 0x78c8                      |         goto label_0;
    0x00007a5a movs r0, 2                    |         r0 = 2;
    0x00007a5c bl 0x737c                     |         r0 = fcn_0000737c (r0, r1, r2);
    0x00007a60 cmp r0, 0                     |         
    0x00007a62 mov r3, r0                    |         r3 = r0;
    0x00007a64 str r0, [r7]                  |         *(r7) = r0;
                                             |         if (r0 < 0) {
    0x00007a66 blt 0x7a84                    |             goto label_24;
                                             |         }
    0x00007a68 ldr r5, [pc, 0x100]           |         
    0x00007a6a movs r2, 0xb                  |         r2 = 0xb;
    0x00007a6c add r5, pc                    |         r5 = 0xf5dc;
    0x00007a6e mov r1, r5                    |         r1 = r5;
    0x00007a70 blx 0x1fcc                    |         r0 = fcn_00001fcc ();
    0x00007a74 cmp r0, 0                     |         
                                             |         if (r0 < 0) {
    0x00007a76 blt 0x7a9e                    |             goto label_25;
                                             |         }
    0x00007a78 ldr r3, [pc, 0xf4]            |         
    0x00007a7a movs r2, 0                    |         r2 = 0;
    0x00007a7c mov r5, r2                    |         r5 = r2;
    0x00007a7e add r3, pc                    |         r3 = 0xf5f2;
    0x00007a80 strb r2, [r3]                 |         *(r3) = r2;
    0x00007a82 b 0x7a0a                      |         
                                             |     }
                                             |     do {
                                             | label_24:
    0x00007a84 mov r0, r3                    |         r0 = r3;
    0x00007a86 bl 0x5a98                     |         fcn_00005a98 (r0, r1, r2, r3, r4);
    0x00007a8a ldr r2, [pc, 0xe8]            |         
    0x00007a8c ldr r3, [pc, 0xe8]            |         
    0x00007a8e add r2, pc                    |         r2 = 0xf608;
    0x00007a90 add r3, pc                    |         
    0x00007a92 str r0, [r2]                  |         *(r2) = r0;
    0x00007a94 ldr r3, [r3]                  |         r3 = *(0xf60c);
    0x00007a96 b 0x7892                      |         goto label_4;
                                             | label_21:
    0x00007a98 mov.w r0, -1                  |         r0 = -1;
    0x00007a9c b 0x79dc                      |         goto label_5;
                                             | label_25:
    0x00007a9e ldr r0, [r7]                  |         r0 = *(r7);
    0x00007aa0 bl 0x5a98                     |         fcn_00005a98 (r0, r1, r2, r3, r4);
    0x00007aa4 movs r0, 1                    |         r0 = 1;
    0x00007aa6 bl 0x737c                     |         r0 = fcn_0000737c (r0, r1, r2);
    0x00007aaa cmp r0, 0                     |         
    0x00007aac mov r3, r0                    |         r3 = r0;
    0x00007aae str r0, [r7]                  |         *(r7) = r0;
    0x00007ab0 blt 0x7a84                    |         
                                             |     } while (r0 < 0);
    0x00007ab2 mov r1, r5                    |     r1 = r5;
    0x00007ab4 movs r2, 0xb                  |     r2 = 0xb;
    0x00007ab6 blx 0x1fcc                    |     r0 = fcn_00001fcc ();
    0x00007aba cmp r0, 0                     |     
                                             |     if (r0 >= 0) {
    0x00007abc blt 0x7ad6                    |         
    0x00007abe ldr r3, [pc, 0xbc]            |         
    0x00007ac0 movs r2, 1                    |         r2 = 1;
    0x00007ac2 movs r5, 0                    |         r5 = 0;
    0x00007ac4 add r3, pc                    |         r3 = 0xf646;
    0x00007ac6 strb r2, [r3]                 |         *(r3) = r2;
    0x00007ac8 b 0x7a0a                      |         goto label_6;
                                             | label_20:
    0x00007aca mov.w r0, -1                  |         r0 = -1;
    0x00007ace b 0x7998                      |         goto label_7;
                                             | label_23:
    0x00007ad0 mov.w r0, -1                  |         r0 = -1;
    0x00007ad4 b 0x7a52                      |         goto label_8;
                                             |     }
    0x00007ad6 ldr r5, [r4]                  |     r5 = *(r4);
    0x00007ad8 ldr r0, [r7]                  |     r0 = *(r7);
    0x00007ada bl 0x5a98                     |     fcn_00005a98 (r0, r1, r2, r3, r4);
    0x00007ade cmp r5, 0                     |     
    0x00007ae0 str r0, [r7]                  |     *(r7) = r0;
                                             |     if (r5 > 0) {
    0x00007ae2 ble 0x7af6                    |         
    0x00007ae4 ldr r3, [pc, 0x98]            |         
    0x00007ae6 add r3, pc                    |         
    0x00007ae8 ldr r3, [r3]                  |         r3 = "siphash24_compress";
    0x00007aea b 0x7892                      |         goto label_4;
                                             | label_15:
    0x00007aec blx 0x1bfc                    |         parse_printf_format ();
                                             | label_22:
    0x00007af0 mov.w r0, -1                  |         r0 = -1;
    0x00007af4 b 0x7a24                      |         goto label_9;
                                             |     }
    0x00007af6 rsbs r5, r5, 0                |     r5 -= ;
    0x00007af8 b 0x7a0a                      |     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/cdrom_id @ 0x7c0c */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00007c0c ()                                      | void fcn_00007c0c (int16_t arg_210h, int16_t arg_230h, int16_t arg_81ch, int16_t arg_848h, int16_t arg_84ch, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_148h;
                                                                 |     int16_t var_14ch;
                                                                 |     int32_t var_4h_3;
                                                                 |     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_2;
                                                                 |     int32_t var_0h_2;
                                                                 |     int32_t var_0h_3;
                                                                 |     int32_t var_4h;
                                                                 |     int16_t var_0h_4;
                                                                 |     int32_t var_4h_2;
                                                                 |     char * var_74h;
                                                                 |     char * var_84h;
                                                                 |     char * var_94h;
                                                                 |     char * s;
                                                                 |     int16_t var_c8h;
                                                                 |     int8_t var_12h;
                                                                 |     int8_t var_14h;
                                                                 |     int32_t var_0h;
                                                                 |     int16_t var_188h;
                                                                 |     int16_t var_1bch;
                                                                 |     int16_t var_1e4h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x00007c0c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00007c10 mov r6, r3                                        |     r6 = r3;
    0x00007c12 ldr r5, [pc, 0x268]                               |     
    0x00007c14 sub sp, 0x1c4                                     |     
    0x00007c16 add.w sb, sp, 0x24                                |     sb += var_24h;
    0x00007c18 lsrs r4, r4, 4                                    |     r4 >>= 4;
    0x00007c1a add.w sl, sp, 0x28                                |     sl += var_28h;
    0x00007c1e ldr r4, [pc, 0x260]                               |     r4 = *(0x7e82);
    0x00007c20 ldr r3, [pc, 0x260]                               |     
    0x00007c22 add r5, pc                                        |     r5 = 0xfaa4;
    0x00007c24 ldr r4, [r5, r4]                                  |     
    0x00007c26 add r3, pc                                        |     
    0x00007c28 ldr r3, [r3]                                      |     r3 = imp.__progname;
    0x00007c2a ldr r4, [r4]                                      |     r4 = imp.__progname;
    0x00007c2c str r4, [sp, 0x1bc]                               |     var_1bch = r4;
    0x00007c2e mov.w r4, 0                                       |     r4 = 0;
    0x00007c32 movs r4, 0                                        |     r4 = 0;
    0x00007c34 str r1, [sp, 0x1c]                                |     var_1ch = r1;
    0x00007c36 cmp r3, r4                                        |     
    0x00007c38 str.w r4, [sb]                                    |     __asm ("str.w r4, [sb]");
    0x00007c3c str.w r4, [sl]                                    |     __asm ("str.w r4, [sl]");
                                                                 |     if (r3 < r4) {
    0x00007c40 blt 0x7d30                                        |         goto label_6;
                                                                 |     }
    0x00007c42 ldr r3, [pc, 0x244]                               |     
    0x00007c44 mov r8, r2                                        |     r8 = r2;
    0x00007c46 mov r7, r0                                        |     r7 = r0;
    0x00007c48 add r3, pc                                        |     r3 = 0xfad6;
    0x00007c4a ldr r2, [r3]                                      |     r2 = imp.__progname;
    0x00007c4c cmp r2, 1                                         |     
    0x00007c4e it ne                                             |     
                                                                 |     if (r2 == 1) {
    0x00007c50 addne r5, sp, 0x2c                                |         r5 += var_2ch_2;
                                                                 |     }
                                                                 |     if (r2 == 1) {
    0x00007c52 beq.w 0x7e38                                      |         goto label_10;
                                                                 |     }
    0x00007c54 strh r1, [r6, 6]                                  |     *((r6 + 6)) = r1;
                                                                 | label_7:
    0x00007c56 ldr r3, [pc, 0x234]                               |     
    0x00007c58 add r3, pc                                        |     r3 = 0xfaea;
    0x00007c5a ldrb r3, [r3]                                     |     r3 = *(r3);
    0x00007c5c cmp r3, 0                                         |     
    0x00007c5e bne 0x7d4c                                        |     
                                                                 |     while (r0 == 0) {
                                                                 | label_0:
    0x00007c60 ldr r3, [pc, 0x22c]                               |         
    0x00007c62 add r3, pc                                        |         r3 = 0xfaf6;
    0x00007c64 ldrb r3, [r3]                                     |         r3 = *(r3);
    0x00007c66 cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x00007c68 bne.w 0x7dd8                                      |             goto label_11;
                                                                 |         }
                                                                 | label_4:
    0x00007c6c bl 0x7bf8                                         |         r0 = fcn_00007bf8 ();
    0x00007c70 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00007c72 bne.w 0x7d98                                      |             goto label_12;
                                                                 |         }
    0x00007c76 ldr r3, [pc, 0x21c]                               |         
    0x00007c78 add r3, pc                                        |         r3 = 0xfb12;
    0x00007c7a ldrb r3, [r3]                                     |         r3 = *(r3);
                                                                 |         if (r3 != 0) {
    0x00007c7c cbz r3, 0x7cba                                    |             
                                                                 | label_2:
    0x00007c7e ldr r3, [pc, 0x218]                               |             
    0x00007c80 add r3, pc                                        |             r3 = 0xfb1e;
    0x00007c82 mov r7, r3                                        |             r7 = r3;
                                                                 | label_3:
    0x00007c84 strd r8, r3, [sp, 0xc]                            |             __asm ("strd r8, r3, [var_ch]");
    0x00007c88 movs r2, 1                                        |             r2 = 1;
    0x00007c8a ldr r3, [sp, 0x1c]                                |             r3 = var_1ch;
    0x00007c8c add.w r8, r4, 1                                   |             r8 = r4 + 1;
    0x00007c90 strd r7, r3, [sp, 4]                              |             __asm ("strd r7, r3, [var_14ch]");
    0x00007c94 add r7, sp, 0xbc                                  |             r7 += s;
    0x00007c96 ldr r3, [pc, 0x204]                               |             
    0x00007c98 mov r0, r7                                        |             r0 = r7;
    0x00007c9a add r3, pc                                        |             r3 = 0xfb3c;
    0x00007c9c str r3, [sp]                                      |             *(sp) = r3;
    0x00007c9e mov.w r3, 0x100                                   |             r3 = 0x100;
    0x00007ca2 mov r1, r3                                        |             r1 = r3;
    0x00007ca4 blx 0x1fd8                                        |             fcn_00001fd8 ();
    0x00007ca8 mov r0, r7                                        |             r0 = r7;
    0x00007caa blx 0x1da0                                        |             strchr (r0, r1);
    0x00007cae str.w r7, [r5, r4, lsl 3]                         |             __asm ("str.w r7, [r5, r4, lsl 3]");
    0x00007cb2 add.w r4, r5, r4, lsl 3                           |             r4 = r5 + (r4 << 3);
    0x00007cb6 str r0, [r4, 4]                                   |             var_4h = r0;
    0x00007cb8 mov r4, r8                                        |             r4 = r8;
                                                                 |         }
                                                                 | label_1:
    0x00007cba ldr.w r7, [sb]                                    |         r7 = *(sb);
                                                                 |         if (r7 != 0) {
    0x00007cbe cbz r7, 0x7cd2                                    |             
    0x00007cc0 mov r0, r7                                        |             r0 = r7;
    0x00007cc2 blx 0x1da0                                        |             strchr (r0, r1);
    0x00007cc6 add.w r3, r5, r4, lsl 3                           |             r3 = r5 + (r4 << 3);
    0x00007cca str.w r7, [r5, r4, lsl 3]                         |             __asm ("str.w r7, [r5, r4, lsl 3]");
    0x00007cce adds r4, 1                                        |             r4++;
    0x00007cd0 str r0, [r3, 4]                                   |             var_4h = r0;
                                                                 |         }
    0x00007cd2 mov r0, r6                                        |         r0 = r6;
    0x00007cd4 adds r7, r4, 1                                    |         r7 = r4 + 1;
    0x00007cd6 blx 0x1da0                                        |         strchr (r0, r1);
    0x00007cda str.w r6, [r5, r4, lsl 3]                         |         __asm ("str.w r6, [r5, r4, lsl 3]");
    0x00007cde add.w r3, r5, r4, lsl 3                           |         r3 = r5 + (r4 << 3);
    0x00007ce2 ldr.w r6, [sl]                                    |         r6 = *(sl);
    0x00007ce6 str r0, [r3, 4]                                   |         var_4h = r0;
    0x00007ce8 cmp r6, 0                                         |         
                                                                 |         if (r6 == 0) {
    0x00007cea beq.w 0x7e08                                      |             goto label_13;
                                                                 |         }
    0x00007cee mov r0, r6                                        |         r0 = r6;
    0x00007cf0 adds r4, 2                                        |         r4 += 2;
    0x00007cf2 blx 0x1da0                                        |         strchr (r0, r1);
    0x00007cf4 invalid                                           |         
    0x00007cf6 str.w r6, [r5, r7, lsl 3]                         |         __asm ("str.w r6, [r5, r7, lsl 3]");
    0x00007cf8 str r7, [r6]                                      |         *(r6) = r7;
    0x00007cfa add.w r7, r5, r7, lsl 3                           |         r7 = r5 + (r7 << 3);
    0x00007cfe str r0, [r7, 4]                                   |         var_4h_2 = r0;
                                                                 | label_5:
    0x00007d00 ldr r3, [pc, 0x19c]                               |         
    0x00007d02 add.w r2, r5, r4, lsl 3                           |         r2 = r5 + (r4 << 3);
    0x00007d06 ldr r6, [pc, 0x19c]                               |         
    0x00007d08 adds r4, 1                                        |         r4++;
    0x00007d0a add r3, pc                                        |         r3 = 0xfbae;
    0x00007d0c adds r3, 8                                        |         r3 += 8;
    0x00007d0e add r6, pc                                        |         r6 = 0xfbb8;
    0x00007d10 ldm.w r3, {r0, r1}                                |         r0 = *(r3);
                                                                 |         r1 = *((r3 + 4));
    0x00007d14 stm.w r2, {r0, r1}                                |         *(r2) = r0;
                                                                 |         *((r2 + 4)) = r1;
    0x00007d18 mov r2, r4                                        |         r2 = r4;
    0x00007d1a ldr r0, [r6]                                      |         r0 = *(0xfbb8);
    0x00007d1c mov r1, r5                                        |         r1 = r5;
    0x00007d1e blx 0x1eac                                        |         r0 = fcn_00001eac ();
    0x00007d22 cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x00007d24 bge 0x7d30                                        |             
    0x00007d26 blx 0x1de8                                        |             r0 = sprintf_chk ()
    0x00007d2a ldr r3, [r0]                                      |             r3 = *(r0);
    0x00007d2c cmp r3, 5                                         |             
                                                                 |             if (r3 == 5) {
    0x00007d2e beq 0x7e0c                                        |                 goto label_14;
                                                                 |             }
                                                                 |         }
                                                                 | label_6:
    0x00007d30 ldr r2, [pc, 0x174]                               |         
    0x00007d32 ldr r3, [pc, 0x14c]                               |         r3 = *(0x7e82);
    0x00007d34 add r2, pc                                        |         r2 = "safe_atou_full";
    0x00007d36 ldr r3, [r2, r3]                                  |         r3 = "safe_atou_full";
    0x00007d38 ldr r2, [r3]                                      |         r2 = "safe_atou_full";
    0x00007d3a ldr r3, [sp, 0x1bc]                               |         r3 = var_1bch;
    0x00007d3c eors r2, r3                                       |         r2 ^= r3;
    0x00007d3e mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00007d42 bne.w 0x7e76                                      |             goto label_15;
                                                                 |         }
    0x00007d46 add sp, 0x1c4                                     |         
    0x00007d48 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
    0x00007d4c movs r0, 0                                        |         r0 = 0;
    0x00007d4e add.w fp, sp, 0x94                                |         
    0x00007d52 bl 0xbbac                                         |         fcn_0000bbac (r0);
    0x00007d56 mov r3, r1                                        |         r3 = r1;
    0x00007d58 movs r1, 0                                        |         r1 = 0;
    0x00007d5a mov r2, r0                                        |         r2 = r0;
    0x00007d5c str r1, [sp]                                      |         *(sp) = r1;
    0x00007d5e mov r0, fp                                        |         r0 = fp;
    0x00007d60 movs r1, 0x26                                     |         r1 = 0x26;
    0x00007d62 bl 0xc030                                         |         r0 = fcn_0000c030 (r0, r1, r2, r3, r4);
    0x00007d66 cmp r0, 0                                         |         
    0x00007d68 beq.w 0x7c60                                      |         
                                                                 |     }
    0x00007d6c mov r0, fp                                        |     r0 = fp;
    0x00007d6e blx 0x1da0                                        |     strchr (r0, r1);
    0x00007d72 ldr r2, [pc, 0x138]                               |     
    0x00007d74 mov ip, r0                                        |     
    0x00007d76 adds r3, r4, 1                                    |     r3 = r4 + 1;
    0x00007d78 str.w fp, [r5, r4, lsl 3]                         |     __asm ("str.w fp, [r5, r4, lsl 3]");
    0x00007d7c add.w r3, r5, r3, lsl 3                           |     r3 = r5 + (r3 << 3);
    0x00007d80 add r2, pc                                        |     r2 = 0xfc32;
    0x00007d82 adds r2, 0x10                                     |     r2 += 0x10;
    0x00007d84 ldm.w r2, {r0, r1}                                |     r0 = *(r2);
                                                                 |     r1 = *((r2 + 4));
    0x00007d88 add.w r2, r5, r4, lsl 3                           |     r2 = r5 + (r4 << 3);
    0x00007d8c adds r4, 2                                        |     r4 += 2;
    0x00007d8e str.w ip, [r2, 4]                                 |     __asm ("str.w ip, [var_0h_2]");
    0x00007d92 stm.w r3, {r0, r1}                                |     *(r3) = r0;
                                                                 |     *((r3 + 4)) = r1;
    0x00007d96 b 0x7c60                                          |     goto label_0;
                                                                 | label_12:
    0x00007d98 movs r3, 0                                        |     r3 = 0;
    0x00007d9a and r0, r7, 7                                     |     r0 = r7 & 7;
    0x00007d9e mov r2, sl                                        |     r2 = sl;
    0x00007da0 mov r1, sb                                        |     r1 = sb;
    0x00007da2 bl 0xb9c0                                         |     fcn_0000b9c0 (r0, r1, r2, r3);
    0x00007da6 ldr r3, [pc, 0x108]                               |     
    0x00007da8 add r3, pc                                        |     r3 = 0xfc5e;
    0x00007daa ldrb r3, [r3]                                     |     r3 = *(r3);
    0x00007dac cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00007dae beq 0x7cba                                        |         goto label_1;
                                                                 |     }
    0x00007db0 bl 0x7bf8                                         |     r0 = fcn_00007bf8 ();
    0x00007db4 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00007db6 beq.w 0x7c7e                                      |         goto label_2;
                                                                 |     }
    0x00007dba bl 0xb93c                                         |     r0 = fcn_0000b93c ();
    0x00007dbe cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00007dc0 beq 0x7e6a                                        |         goto label_16;
                                                                 |     }
    0x00007dc2 cmp r0, 0x10                                      |     
                                                                 |     if (r0 != 0x10) {
    0x00007dc4 bne 0x7e64                                        |         goto label_17;
                                                                 |     }
    0x00007dc6 ldr r7, [pc, 0xec]                                |     
    0x00007dc8 add r7, pc                                        |     r7 = 0xfc82;
                                                                 | label_8:
    0x00007dca bl 0xb93c                                         |     r0 = fcn_0000b93c ();
    0x00007dce cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00007dd0 bne 0x7e5e                                        |         goto label_18;
                                                                 |     }
    0x00007dd2 ldr r3, [pc, 0xe4]                                |     
    0x00007dd4 add r3, pc                                        |     r3 = 0xfc92;
    0x00007dd6 b 0x7c84                                          |     goto label_3;
                                                                 | label_11:
    0x00007dd8 blx 0x1b5c                                        |     fcn_00001b5c ();
    0x00007ddc ldr r3, [pc, 0xdc]                                |     
    0x00007dde add.w fp, sp, 0x84                                |     
    0x00007de2 movs r2, 1                                        |     r2 = 1;
    0x00007de4 str r0, [sp, 4]                                   |     var_14ch = r0;
    0x00007de6 mov r0, fp                                        |     r0 = fp;
    0x00007de8 add r3, pc                                        |     r3 = 0xfca8;
    0x00007dea str r3, [sp]                                      |     *(sp) = r3;
    0x00007dec movs r3, 0x10                                     |     r3 = 0x10;
    0x00007dee mov r1, r3                                        |     r1 = r3;
    0x00007df0 blx 0x1fd8                                        |     fcn_00001fd8 ();
    0x00007df4 mov r0, fp                                        |     r0 = fp;
    0x00007df6 blx 0x1da0                                        |     strchr (r0, r1);
    0x00007dfa add.w r3, r5, r4, lsl 3                           |     r3 = r5 + (r4 << 3);
    0x00007dfe str.w fp, [r5, r4, lsl 3]                         |     __asm ("str.w fp, [r5, r4, lsl 3]");
    0x00007e02 adds r4, 1                                        |     r4++;
    0x00007e04 str r0, [r3, 4]                                   |     var_0h_2 = r0;
    0x00007e06 b 0x7c6c                                          |     goto label_4;
                                                                 | label_13:
    0x00007e08 mov r4, r7                                        |     r4 = r7;
    0x00007e0a b 0x7d00                                          |     goto label_5;
                                                                 | label_14:
    0x00007e0c bl 0x9cd0                                         |     r0 = fcn_00009cd0 (r0);
    0x00007e10 cmp r0, 1                                         |     
                                                                 |     if (r0 != 1) {
    0x00007e12 bne 0x7d30                                        |         goto label_6;
                                                                 |     }
    0x00007e14 ldr r0, [r6]                                      |     r0 = *(r6);
    0x00007e16 cmp r0, 2                                         |     
                                                                 |     if (r0 <= 2) {
    0x00007e18 ble 0x7e70                                        |         goto label_19;
                                                                 |     }
    0x00007e1a bl 0x5a98                                         |     fcn_00005a98 (r0, r1, r2, r3, r4);
                                                                 | label_9:
    0x00007e1e ldr r6, [pc, 0xa0]                                |     
    0x00007e20 add r6, pc                                        |     r6 = 0xfce6;
    0x00007e22 str r0, [r6]                                      |     *(r6) = r0;
    0x00007e24 bl 0x745c                                         |     r0 = fcn_0000745c ();
    0x00007e26 smlatt r8, sl, r0, r6                             |     __asm ("smlatt r8, sl, r0, r6");
    0x00007e2a cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00007e2c blt 0x7d30                                        |         goto label_6;
                                                                 |     }
    0x00007e2e mov r2, r4                                        |     r2 = r4;
    0x00007e30 mov r1, r5                                        |     r1 = r5;
    0x00007e32 blx 0x1eac                                        |     fcn_00001eac ();
    0x00007e36 b 0x7d30                                          |     goto label_6;
                                                                 | label_10:
    0x00007e38 ldr r3, [pc, 0x88]                                |     
    0x00007e3a add.w fp, sp, 0x74                                |     
    0x00007e3e str r0, [sp, 4]                                   |     var_14ch = r0;
    0x00007e40 mov r0, fp                                        |     r0 = fp;
    0x00007e42 mov r4, r2                                        |     r4 = r2;
    0x00007e44 add r5, sp, 0x2c                                  |     r5 += var_2ch_2;
    0x00007e46 add r3, pc                                        |     r3 = 0xfd0e;
    0x00007e48 str r3, [sp]                                      |     *(sp) = r3;
    0x00007e4a movs r3, 0xf                                      |     r3 = 0xf;
    0x00007e4c mov r1, r3                                        |     r1 = r3;
    0x00007e4e blx 0x1fd8                                        |     fcn_00001fd8 ();
    0x00007e52 mov r0, fp                                        |     r0 = fp;
    0x00007e54 blx 0x1da0                                        |     r0 = strchr (r0, r1);
    0x00007e58 strd fp, r0, [r5]                                 |     __asm ("strd fp, r0, [r5]");
    0x00007e5a add sp, 0                                         |     
    0x00007e5c b 0x7c56                                          |     goto label_7;
                                                                 | label_18:
    0x00007e5e ldr r3, [pc, 0x68]                                |     
    0x00007e60 add r3, pc                                        |     r3 = 0xfd2e;
    0x00007e62 b 0x7c84                                          |     goto label_3;
                                                                 | label_17:
    0x00007e64 ldr r7, [pc, 0x64]                                |     
    0x00007e66 add r7, pc                                        |     r7 = 0xfd36;
    0x00007e68 b 0x7dca                                          |     goto label_8;
                                                                 | label_16:
    0x00007e6a ldr r7, [pc, 0x64]                                |     
    0x00007e6c add r7, pc                                        |     r7 = 0xfd42;
    0x00007e6e b 0x7dca                                          |     goto label_8;
                                                                 | label_19:
    0x00007e70 mov.w r0, -1                                      |     r0 = -1;
    0x00007e74 b 0x7e1e                                          |     goto label_9;
                                                                 | label_15:
    0x00007e76 blx 0x1bfc                                        |     parse_printf_format ();
    0x00007e7a nop                                               |     
    0x00007e7c adr r1, 0x338                                     |     r1 = 0x338;
    0x00007e7e movs r1, r0                                       |     r1 = r0;
    0x00007e80 lsls r4, r2, 7                                    |     r4 = r2 << 7;
    0x00007e82 movs r0, r0                                       |     
    0x00007e84 adr r4, 0x58                                      |     r4 = 0x58;
    0x00007e86 movs r1, r0                                       |     r1 = r0;
    0x00007e88 add r4, sp, 0x230                                 |     r4 += arg_230h;
    0x00007e8a movs r1, r0                                       |     r1 = r0;
    0x00007e8c add r4, sp, 0x210                                 |     r4 += arg_210h;
    0x00007e8e movs r1, r0                                       |     r1 = r0;
    0x00007e90 add r4, sp, 0x1e4                                 |     r4 += var_1e4h;
    0x00007e92 movs r1, r0                                       |     r1 = r0;
    0x00007e94 add r4, sp, 0x188                                 |     r4 += var_188h;
    0x00007e96 movs r1, r0                                       |     r1 = r0;
    0x00007e98 ldrsh r4, [r6, r4]                                |     r4 = *((r6 + r4));
    0x00007e9a movs r0, r0                                       |     
    0x00007e9c strb r2, [r6, 0x19]                               |     *((r6 + 0x19)) = r2;
    0x00007e9e movs r0, r0                                       |     
    0x00007ea0 adr r3, 0x68                                      |     r3 = 0x68;
    0x00007ea2 movs r1, r0                                       |     r1 = r0;
    0x00007ea4 adr r3, 0xb8                                      |     r3 = 0xb8;
    0x00007ea6 movs r1, r0                                       |     r1 = r0;
    0x00007ea8 adr r0, 0x2f0                                     |     r0 = 0x2f0;
    0x00007eaa movs r1, r0                                       |     r1 = r0;
    0x00007eac adr r2, 0x290                                     |     r2 = 0x290;
    0x00007eae movs r1, r0                                       |     r1 = r0;
    0x00007eb0 add r3, sp, 0xc8                                  |     r3 += var_c8h;
    0x00007eb2 movs r1, r0                                       |     r1 = r0;
    0x00007eb4 strb r0, [r3, 0x14]                               |     var_14h = r0;
    0x00007eb6 movs r0, r0                                       |     
    0x00007eb8 ldrb r0, [r4, r7]                                 |     r0 = *((r4 + r7));
    0x00007eba movs r0, r0                                       |     
    0x00007ebc strb r0, [r6, 0x14]                               |     *((r6 + 0x14)) = r0;
    0x00007ebe movs r0, r0                                       |     
    0x00007ec0 adr r2, 0x70                                      |     r2 = 0x70;
    0x00007ec2 movs r1, r0                                       |     r1 = r0;
    0x00007ec4 strb r6, [r7, 0x12]                               |     *((r7 + 0x12)) = r6;
    0x00007ec6 movs r0, r0                                       |     
    0x00007ec8 strb r4, [r3, 0x12]                               |     var_12h = r4;
    0x00007eca movs r0, r0                                       |     
    0x00007ecc strb r6, [r0, 0x12]                               |     *((r0 + 0x12)) = r6;
    0x00007ece movs r0, r0                                       |     
    0x00007ed0 ldrb r0, [r1, r5]                                 |     r0 = *((r1 + r5));
    0x00007ed2 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/cdrom_id @ 0x7ed4 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00007ed4 ()                                  | void fcn_00007ed4 (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_2;
                                                             |     int16_t var_20h;
                                                             |     int16_t var_24h_2;
                                                             |     int16_t var_28h_2;
                                                             |     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_50h;
                                                             |     int16_t var_54h;
                                                             |     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;
                                                             |     int16_t var_ach;
                                                             |     int16_t var_b0h;
                                                             |     int16_t var_b4h;
                                                             |     int16_t var_b8h;
                                                             |     int16_t var_c8h_2;
                                                             |     int16_t var_dch;
                                                             |     int16_t var_11ch;
                                                             |     int16_t var_138h;
                                                             |     int16_t var_148h;
                                                             |     int16_t var_14ch;
                                                             |     int16_t var_150h;
                                                             |     int16_t var_154h;
                                                             |     int16_t var_158h;
                                                             |     int16_t var_15ch;
                                                             |     int16_t var_218h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x00007ed4 svcmi 0xf0e92d                                |     __asm ("svcmi aav.0x000000ff");
    0x00007ed8 mov r8, r2                                    |     r8 = r2;
    0x00007eda sub sp, 0x124                                 |     
    0x00007edc ldr r2, [pc, 0x36c]                           |     
    0x00007ede mov sb, r3                                    |     sb = r3;
    0x00007ee0 ldr r4, [sp, 0x148]                           |     r4 = var_148h;
    0x00007ee2 ldr r3, [pc, 0x36c]                           |     r3 = *(0x8252);
    0x00007ee4 add r2, pc                                    |     r2 = 0x10134;
    0x00007ee6 strd r1, r4, [sp, 0x20]                       |     __asm ("strd r1, r4, [sp, 0x20]");
    0x00007eea ldr r3, [r2, r3]                              |     
    0x00007eec ldr r4, [sp, 0x15c]                           |     r4 = var_15ch;
    0x00007eee ldr r3, [r3]                                  |     r3 = *(0x10134);
    0x00007ef0 str r3, [sp, 0x11c]                           |     var_11ch = r3;
    0x00007ef2 mov.w r3, 0                                   |     r3 = 0;
    0x00007ef6 ldr r3, [pc, 0x35c]                           |     
    0x00007ef8 add r3, pc                                    |     r3 = 0x10152;
    0x00007efa str r3, [sp, 0x38]                            |     var_38h = r3;
    0x00007efc ldr r3, [sp, 0x14c]                           |     r3 = var_14ch;
    0x00007efe str r3, [sp, 0x28]                            |     var_28h_2 = r3;
    0x00007f00 ldr r3, [sp, 0x150]                           |     r3 = var_150h;
    0x00007f02 str r3, [sp, 0x2c]                            |     var_2ch = r3;
    0x00007f04 ldr r3, [sp, 0x154]                           |     r3 = var_154h;
    0x00007f06 str r3, [sp, 0x30]                            |     var_30h = r3;
    0x00007f08 ldr r3, [sp, 0x158]                           |     r3 = var_158h;
    0x00007f0a str r3, [sp, 0x34]                            |     var_34h = r3;
    0x00007f0c cmp r4, 0                                     |     
                                                             |     if (r4 == 0) {
    0x00007f0e beq.w 0x831a                                  |         goto label_15;
                                                             |     }
    0x00007f12 ldr r3, [pc, 0x344]                           |     
    0x00007f14 add r3, pc                                    |     
    0x00007f16 ldr r3, [r3]                                  |     r3 = *(0x10172);
    0x00007f18 cmp r3, 8                                     |     
                                                             |     if (r3 == 8) {
    0x00007f1a beq.w 0x8032                                  |         goto label_13;
                                                             |     }
    0x00007f1e tst.w r0, 0x3f8                               |     
    0x00007f22 mov r7, r0                                    |     r7 = r0;
                                                             |     if ((var_0hx3f8 & undefined) == 0) {
    0x00007f24 bne 0x7f2e                                    |         
    0x00007f26 ldr r3, [pc, 0x334]                           |         
    0x00007f28 add r3, pc                                    |         
    0x00007f2a ldr r3, [r3]                                  |         r3 = *(0x1018a);
    0x00007f2c orrs r7, r3                                   |         r7 |= r3;
                                                             |     }
    0x00007f2e ldr r3, [pc, 0x330]                           |     
    0x00007f30 add r3, pc                                    |     r3 = 0x10196;
    0x00007f32 ldrb r3, [r3]                                 |     r3 = *(r3);
    0x00007f34 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00007f36 bne.w 0x823e                                  |         goto label_16;
                                                             |     }
                                                             | label_9:
    0x00007f3a ldr r3, [pc, 0x328]                           |     
    0x00007f3c add r3, pc                                    |     r3 = 0x101a6;
    0x00007f3e str r3, [sp, 0x1c]                            |     var_1ch_2 = r3;
                                                             |     do {
                                                             | label_0:
    0x00007f40 ldr r6, [pc, 0x324]                           |         
    0x00007f42 mov r0, r4                                    |         r0 = r4;
    0x00007f44 add r6, pc                                    |         r6 = 0x101b0;
    0x00007f46 mov r1, r6                                    |         r1 = r6;
    0x00007f48 blx 0x1fe4                                    |         fcn_00001fe4 ();
    0x00007f4c ldrb r3, [r4, r0]                             |         r3 = *((r4 + r0));
    0x00007f4e adds r5, r4, r0                               |         r5 = r4 + r0;
    0x00007f50 cmp r3, 0                                     |         
                                                             |         if (r3 == 0) {
    0x00007f52 beq 0x8026                                    |             goto label_1;
                                                             |         }
    0x00007f54 mov r1, r6                                    |         r1 = r6;
    0x00007f56 mov r0, r5                                    |         r0 = r5;
    0x00007f58 blx 0x1f3c                                    |         r0 = fcn_00001f3c ();
    0x00007f5c mov r4, r0                                    |         r4 = r0;
                                                             |         if (r0 != 0) {
    0x00007f5e cbz r0, 0x7f66                                |             
    0x00007f60 movs r3, 0                                    |             r3 = 0;
    0x00007f62 strb r3, [r4], 1                              |             *(r4) = r3;
                                                             |             r4++;
                                                             |         }
    0x00007f66 ldr r3, [pc, 0x304]                           |         
    0x00007f68 add r3, pc                                    |         
    0x00007f6a ldr r3, [r3]                                  |         r3 = *(0x101da);
    0x00007f6c cmp r3, 4                                     |         
                                                             |         if (r3 > 4) {
    0x00007f6e bgt.w 0x807c                                  |             goto label_17;
                                                             |         }
    0x00007f72 cmp r3, 2                                     |         
                                                             |         if (r3 > 2) {
    0x00007f74 bgt.w 0x81d8                                  |             goto label_18;
                                                             |         }
                                                             | label_2:
    0x00007f78 cmp r3, 7                                     |         
                                                             |         if (r3 > 7) {
    0x00007f7a bhi 0x8068                                    |             goto label_7;
                                                             |         }
    0x00007f7c movs r2, 0xd4                                 |         r2 = 0xd4;
    0x00007f7e lsr.w r3, r2, r3                              |         r3 = r2 >> r3;
    0x00007f82 lsls r3, r3, 0x1f                             |         r3 <<= 0x1f;
                                                             |         if (r3 >= r3) {
    0x00007f84 bpl 0x8068                                    |             goto label_7;
                                                             |         }
                                                             | label_8:
    0x00007f86 ldr r6, [pc, 0x2e8]                           |         
    0x00007f88 add r6, pc                                    |         r6 = 0x101fe;
    0x00007f8a ldr r3, [r6]                                  |         r3 = *(0x101fe);
    0x00007f8c cmp r3, 0                                     |         
                                                             |         if (r3 < 0) {
    0x00007f8e blt 0x8068                                    |             goto label_7;
                                                             |         }
    0x00007f90 ldr r0, [pc, 0x2b0]                           |         
    0x00007f92 add r0, pc                                    |         r0 = 0x101da;
    0x00007f94 blx 0x1f60                                    |         fcn_00001f60 ();
    0x00007f98 ldr r3, [pc, 0x2ac]                           |         r3 = *(0x8248);
    0x00007f9a add r0, r3                                    |         r0 += r3;
    0x00007f9c bl 0xa720                                     |         r0 = fcn_0000a720 (r0, r1);
    0x00007fa0 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00007fa2 beq 0x8068                                    |             goto label_7;
                                                             |         }
    0x00007fa4 ldr r3, [pc, 0x2cc]                           |         
    0x00007fa6 add.w fp, sp, 0xc8                            |         
    0x00007faa movs r2, 1                                    |         r2 = 1;
    0x00007fac mov r0, fp                                    |         r0 = fp;
    0x00007fae str r7, [sp, 4]                               |         var_4h = r7;
    0x00007fb0 add.w sl, sp, 0xdc                            |         sl += var_dch;
    0x00007fb4 add r3, pc                                    |         r3 = 0x1022c;
    0x00007fb6 str r3, [sp]                                  |         *(sp) = r3;
    0x00007fb8 movs r3, 0xf                                  |         r3 = 0xf;
    0x00007fba mov r1, r3                                    |         r1 = r3;
    0x00007fbc blx 0x1fd8                                    |         fcn_00001fd8 ();
    0x00007fc0 bl 0x9cd0                                     |         fcn_00009cd0 (r0);
    0x00007fc4 ldr r3, [pc, 0x2b0]                           |         
    0x00007fc6 movs r2, 1                                    |         r2 = 1;
    0x00007fc8 str r0, [sp, 4]                               |         var_4h = r0;
    0x00007fca mov r0, sl                                    |         r0 = sl;
    0x00007fcc add r3, pc                                    |         r3 = 0x10248;
    0x00007fce str r3, [sp]                                  |         *(sp) = r3;
    0x00007fd0 movs r3, 0x11                                 |         r3 = 0x11;
    0x00007fd2 mov r1, r3                                    |         r1 = r3;
    0x00007fd4 blx 0x1fd8                                    |         fcn_00001fd8 ();
    0x00007fd8 mov r0, fp                                    |         r0 = fp;
    0x00007fda str.w fp, [sp, 0x90]                          |         __asm ("str.w fp, [var_90h]");
    0x00007fde blx 0x1da0                                    |         strchr (r0, r1);
    0x00007fe2 ldr r2, [sp, 0x38]                            |         r2 = var_38h;
    0x00007fe4 ldr r3, [pc, 0x294]                           |         r3 = *(0x827c);
    0x00007fe6 str r0, [sp, 0x94]                            |         var_94h = r0;
    0x00007fe8 ldr r3, [r2, r3]                              |         r3 = *((r2 + r3));
    0x00007fea ldr r0, [r3]                                  |         r0 = *(0x827c);
    0x00007fec str r0, [sp, 0x98]                            |         var_98h = r0;
    0x00007fee blx 0x1da0                                    |         strchr (r0, r1);
    0x00007ff2 strd r0, sl, [sp, 0x9c]                       |         __asm ("strd r0, sl, [sp, 0x9c]");
    0x00007ff6 mov r0, sl                                    |         r0 = sl;
    0x00007ff8 blx 0x1da0                                    |         strchr (r0, r1);
    0x00007ffc strd r0, r5, [sp, 0xa4]                       |         __asm ("strd r0, r5, [sp, 0xa4]");
    0x00008000 mov r0, r5                                    |         r0 = r5;
    0x00008002 blx 0x1da0                                    |         strchr (r0, r1);
    0x00008006 ldr r3, [pc, 0x278]                           |         
    0x00008008 movs r2, 5                                    |         r2 = 5;
    0x0000800a str r0, [sp, 0xac]                            |         var_ach = r0;
    0x0000800c add r1, sp, 0x90                              |         r1 += var_90h;
    0x0000800e ldr r0, [r6]                                  |         r0 = *(r6);
    0x00008010 add r3, pc                                    |         r3 = 0x10296;
    0x00008012 str r3, [sp, 0xb0]                            |         var_b0h = r3;
    0x00008014 movs r3, 1                                    |         r3 = 1;
    0x00008016 str r3, [sp, 0xb4]                            |         var_b4h = r3;
    0x00008018 blx 0x1eac                                    |         r0 = fcn_00001eac ();
    0x0000801c cmp r0, 0                                     |         
                                                             |         if (r0 < 0) {
    0x0000801e blt.w 0x8332                                  |             goto label_19;
                                                             |         }
                                                             | label_3:
    0x00008022 cmp r4, 0                                     |         
    0x00008024 bne 0x7f40                                    |         
                                                             |     } while (r4 != 0);
                                                             | label_1:
    0x00008026 ldr r3, [pc, 0x25c]                           |     
    0x00008028 add r3, pc                                    |     r3 = 0x102b2;
    0x0000802a ldrb r3, [r3]                                 |     r3 = *(r3);
    0x0000802c cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x0000802e bne.w 0x8314                                  |         goto label_20;
                                                             |     }
                                                             | label_13:
    0x00008032 ldr r2, [pc, 0x254]                           |     
    0x00008034 ldr r3, [pc, 0x218]                           |     r3 = *(0x8250);
    0x00008036 ldr r0, [sp, 0x20]                            |     r0 = var_20h;
    0x00008038 add r2, pc                                    |     r2 = 0x102c6;
    0x0000803a ldr r3, [r2, r3]                              |     r3 = *(0x102c6);
    0x0000803c cmp r0, 0                                     |     
    0x0000803e it lt                                         |     
                                                             |     if (r0 < 0) {
    0x00008040 rsblt r0, r0, 0                               |         __asm ("rsblt r0, r0, 0");
                                                             |     }
    0x00008042 uxtb r0, r0                                   |     r0 = (int8_t) r0;
    0x00008044 ldr r2, [r3]                                  |     r2 = *(0x102c6);
    0x00008046 ldr r3, [sp, 0x11c]                           |     r3 = var_11ch;
    0x00008048 eors r2, r3                                   |     r2 ^= r3;
    0x0000804a mov.w r3, 0                                   |     r3 = 0;
    0x0000804e rsb.w r0, r0, 0                               |     r0 -= ;
                                                             |     if (r2 != r3) {
    0x00008052 bne.w 0x834a                                  |         goto label_21;
                                                             |     }
    0x00008056 add sp, 0x124                                 |     
    0x00008058 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |     
                                                             | label_14:
    0x0000805c ldr r0, [r6]                                  |     r0 = *(r6);
    0x0000805e bl 0x5a98                                     |     fcn_00005a98 (r0, r1, r2, r3, r4);
    0x00008062 str r0, [r6]                                  |     *(r6) = r0;
    0x00008064 bl 0x745c                                     |     fcn_0000745c ();
                                                             | label_7:
    0x00008068 mov r3, r5                                    |     r3 = r5;
    0x0000806a mov r2, sb                                    |     r2 = sb;
    0x0000806c mov r1, r8                                    |     r1 = r8;
    0x0000806e mov r0, r7                                    |     r0 = r7;
    0x00008070 bl 0x7c0c                                     |     fcn_00007c0c (r0, r1, r2, r3, r4, r5, r6);
    0x00008074 cmp r4, 0                                     |     
                                                             |     if (r4 != 0) {
    0x00008076 bne.w 0x7f40                                  |         goto label_0;
                                                             |     }
    0x0000807a b 0x8026                                      |     goto label_1;
                                                             | label_17:
    0x0000807c cmp r3, 7                                     |     
                                                             |     if (r3 == 7) {
    0x0000807e beq.w 0x81d8                                  |         goto label_18;
                                                             |     }
    0x00008082 subs r2, r3, 5                                |     r2 = r3 - 5;
    0x00008084 cmp r2, 1                                     |     
                                                             |     if (r2 > 1) {
    0x00008086 bhi.w 0x7f78                                  |         goto label_2;
                                                             |     }
                                                             | label_6:
    0x0000808a ldr r3, [pc, 0x200]                           |     
    0x0000808c add r3, pc                                    |     
    0x0000808e ldr r3, [r3]                                  |     r3 = *(0x1031e);
    0x00008090 cmp r3, 0                                     |     
                                                             |     if (r3 < 0) {
    0x00008092 blt.w 0x830c                                  |         goto label_22;
                                                             |     }
    0x00008094 strh r3, [r7, 8]                              |     *((r7 + 8)) = r3;
    0x00008096 ldr r3, [pc, 0x1f8]                           |     
    0x00008098 add r6, sp, 0xb8                              |     r6 += var_b8h;
    0x0000809a movs r2, 1                                    |     r2 = 1;
    0x0000809c mov r0, r6                                    |     r0 = r6;
    0x0000809e str r7, [sp, 4]                               |     var_4h = r7;
    0x000080a0 add.w sl, sp, 0x64                            |     sl += var_64h;
    0x000080a4 add r3, pc                                    |     r3 = 0x1033a;
    0x000080a6 str r3, [sp]                                  |     *(sp) = r3;
    0x000080a8 movs r3, 0xf                                  |     r3 = 0xf;
    0x000080aa mov r1, r3                                    |     r1 = r3;
    0x000080ac blx 0x1fd8                                    |     fcn_00001fd8 ();
    0x000080b0 movs r0, 0                                    |     r0 = 0;
    0x000080b2 bl 0xbbac                                     |     fcn_0000bbac (r0);
    0x000080b6 movw r2, 0x4240                               |     
    0x000080ba movs r3, 0                                    |     r3 = 0;
    0x000080bc movt r2, 0xf                                  |     r2 = 0xf4240;
    0x000080be lsls r7, r1, 8                                |     r7 = r1 << 8;
    0x000080c0 bl 0xd388                                     |     fcn_0000d388 (r0, r1, r2, r3);
    0x000080c4 mov r1, sl                                    |     r1 = sl;
    0x000080c6 str r0, [sp, 0x44]                            |     var_44h = r0;
    0x000080c8 add r0, sp, 0x44                              |     r0 += var_44h;
    0x000080ca blx 0x1c58                                    |     r0 = fcn_00001c58 ();
    0x000080ce cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000080d0 beq.w 0x82cc                                  |         goto label_23;
                                                             |     }
    0x000080d4 ldr r2, [pc, 0x1bc]                           |     
    0x000080d6 add.w fp, sp, 0xdc                            |     
    0x000080da mov r3, sl                                    |     r3 = sl;
    0x000080dc movs r1, 0x40                                 |     r1 = 0x40;
    0x000080de mov r0, fp                                    |     r0 = fp;
    0x000080e0 add r2, pc                                    |     r2 = "years";
    0x000080e2 blx 0x1d30                                    |     r0 = fcn_00001d30 ();
    0x000080e6 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000080e8 beq.w 0x82cc                                  |         goto label_23;
                                                             |     }
    0x000080ec bl 0x9cd0                                     |     fcn_00009cd0 (r0);
    0x000080f0 ldr r3, [pc, 0x1a4]                           |     
    0x000080f2 add.w sl, sp, 0xc8                            |     sl += var_c8h_2;
    0x000080f6 movs r2, 1                                    |     r2 = 1;
    0x000080f8 str r0, [sp, 4]                               |     var_4h = r0;
    0x000080fa mov r0, sl                                    |     r0 = sl;
    0x000080fc add r3, pc                                    |     r3 = "week";
    0x000080fe str r3, [sp]                                  |     *(sp) = r3;
    0x00008100 movs r3, 0x11                                 |     r3 = 0x11;
    0x00008102 mov r1, r3                                    |     r1 = r3;
    0x00008104 blx 0x1fd8                                    |     fcn_00001fd8 ();
    0x00008108 mov r0, r6                                    |     r0 = r6;
    0x0000810a str r6, [sp, 0x90]                            |     var_90h = r6;
    0x0000810c blx 0x1da0                                    |     strchr (r0, r1);
    0x00008110 strd r0, fp, [sp, 0x94]                       |     __asm ("strd r0, fp, [var_0hx94]");
    0x00008114 mov r0, fp                                    |     r0 = fp;
    0x00008116 blx 0x1da0                                    |     strchr (r0, r1);
    0x0000811a ldr r2, [sp, 0x38]                            |     r2 = var_38h;
    0x0000811c add.w fp, sp, 0x48                            |     
    0x00008120 ldr r3, [pc, 0x158]                           |     r3 = *(0x827c);
    0x00008122 str r0, [sp, 0x9c]                            |     var_9ch = r0;
    0x00008124 ldr r3, [r2, r3]                              |     r3 = *((r2 + r3));
    0x00008126 ldr r0, [r3]                                  |     r0 = *(0x827c);
    0x00008128 str r0, [sp, 0xa0]                            |     var_a0h = r0;
    0x0000812a blx 0x1da0                                    |     strchr (r0, r1);
    0x0000812e strd r0, sl, [sp, 0xa4]                       |     __asm ("strd r0, sl, [sp, 0xa4]");
    0x00008132 mov r0, sl                                    |     r0 = sl;
    0x00008134 blx 0x1da0                                    |     strchr (r0, r1);
    0x00008138 strd r0, r5, [sp, 0xac]                       |     __asm ("strd r0, r5, [sp, 0xac]");
    0x0000813c mov r0, r5                                    |     r0 = r5;
    0x0000813e blx 0x1da0                                    |     strchr (r0, r1);
    0x00008142 ldr r3, [pc, 0x158]                           |     
    0x00008144 add.w sl, sp, 0x90                            |     sl += var_90h;
    0x00008146 lsrs r0, r2, 0xa                              |     r0 = r2 >> 0xa;
    0x00008148 str r0, [sp, 0xb4]                            |     var_b4h = r0;
    0x0000814a str.w sl, [sp, 0x50]                          |     __asm ("str.w sl, [var_50h]");
    0x0000814e add r3, pc                                    |     r3 = 0x103f0;
    0x00008150 ldrb r2, [r3]                                 |     r2 = *(r3);
    0x00008152 movs r3, 0                                    |     r3 = 0;
    0x00008154 strd r3, r3, [sp, 0x48]                       |     __asm ("strd r3, r3, [sp, 0x48]");
    0x00008158 strd r3, r3, [sp, 0x58]                       |     __asm ("strd r3, r3, [sp, 0x58]");
    0x0000815c str r3, [sp, 0x60]                            |     var_60h = r3;
    0x0000815e movs r3, 5                                    |     r3 = 5;
    0x00008160 str r3, [sp, 0x54]                            |     var_54h = r3;
                                                             |     if (r2 != 0) {
    0x00008162 cbz r2, 0x8168                                |         
    0x00008164 adds r0, 1                                    |         r0++;
    0x00008166 str r0, [sp, 0xb4]                            |         var_b4h = r0;
                                                             |     }
    0x00008168 ldr r3, [pc, 0x134]                           |     
    0x0000816a str r5, [sp, 0x3c]                            |     var_3ch = r5;
    0x0000816c mov r5, fp                                    |     r5 = fp;
    0x0000816e mov fp, sl                                    |     
    0x00008170 add r3, pc                                    |     r3 = 0x10414;
    0x00008172 mov sl, r3                                    |     sl = r3;
                                                             | label_4:
    0x00008174 ldr.w r0, [sl]                                |     r0 = *(sl);
    0x00008178 mov.w r2, 0x4000                              |     r2 = 0x4000;
    0x0000817c mov r1, r5                                    |     r1 = r5;
    0x0000817e blx 0x1bd4                                    |     r0 = fcn_00001bd4 ();
    0x00008182 subs.w ip, r0, 0                              |     
                                                             |     if (ip < r0) {
    0x00008186 blt.w 0x82b8                                  |         goto label_24;
                                                             |     }
    0x00008188 strh r7, [r2, 4]                              |     *((r2 + 4)) = r7;
    0x0000818a ldr r3, [sp, 0x1c]                            |     r3 = var_1ch_2;
    0x0000818c ldrb r3, [r3]                                 |     r3 = *(r3);
    0x0000818e cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00008190 beq.w 0x8022                                  |         goto label_3;
                                                             |     }
    0x00008194 mov r1, ip                                    |     r1 = ip;
    0x00008196 mov r3, fp                                    |     r3 = fp;
                                                             | label_5:
    0x00008198 ldr r2, [r3, 4]                               |     r2 = *((r3 + 4));
                                                             |     if (r2 == 0) {
    0x0000819a cbz r2, 0x81b8                                |         goto label_25;
                                                             |     }
    0x0000819c cmp r1, 0                                     |     
                                                             |     if (r1 == 0) {
    0x0000819e beq 0x8174                                    |         goto label_4;
                                                             |     }
    0x000081a0 cmp r2, r1                                    |     
    0x000081a2 ldr r0, [r3]                                  |     r0 = *(r3);
    0x000081a4 mov ip, r2                                    |     
    0x000081a6 it hs                                         |     
                                                             |     if (r2 < r1) {
    0x000081a8 movhs ip, r1                                  |         
                                                             |     }
    0x000081aa sub.w r1, r1, ip                              |     r1 -= ip;
    0x000081ae sub.w r2, r2, ip                              |     r2 -= ip;
    0x000081b2 add r0, ip                                    |     r0 += ip;
    0x000081b4 str r2, [r3, 4]                               |     *((r3 + 4)) = r2;
    0x000081b6 str r0, [r3]                                  |     *(r3) = r0;
                                                             | label_25:
    0x000081b8 adds r3, 8                                    |     r3 += 8;
    0x000081ba cmp r3, r6                                    |     
                                                             |     if (r3 != r6) {
    0x000081bc bne 0x8198                                    |         goto label_5;
                                                             |     }
    0x000081be cmp r1, 0                                     |     
                                                             |     if (r1 == 0) {
    0x000081c0 beq.w 0x8022                                  |         goto label_3;
                                                             |     }
    0x000081c4 ldr r1, [pc, 0xdc]                            |     
    0x000081c6 movs r2, 0x36                                 |     r2 = 0x36;
    0x000081c8 ldr r3, [pc, 0xdc]                            |     
    0x000081ca ldr r0, [pc, 0xe0]                            |     
    0x000081cc add r1, pc                                    |     r1 = 0x10474;
    0x000081ce add r3, pc                                    |     r3 = 0x1047a;
    0x000081d0 adds r1, 7                                    |     r1 += 7;
    0x000081d2 add r0, pc                                    |     r0 = "0123456789";
    0x000081d4 bl 0x8500                                     |     fcn_00008500 (r0, r1, r2, r3, r4);
                                                             | label_18:
    0x000081d8 ldr r3, [sp, 0x34]                            |     r3 = var_34h;
    0x000081da mov r2, r8                                    |     r2 = r8;
    0x000081dc ldr r1, [sp, 0x20]                            |     r1 = var_20h;
    0x000081de mov r0, r7                                    |     r0 = r7;
    0x000081e0 str r5, [sp, 0x14]                            |     var_14h = r5;
    0x000081e2 str r3, [sp, 0x10]                            |     var_10h = r3;
    0x000081e4 ldr r3, [sp, 0x30]                            |     r3 = var_30h;
    0x000081e6 str r3, [sp, 0xc]                             |     var_ch = r3;
    0x000081e8 ldr r3, [sp, 0x2c]                            |     r3 = var_2ch;
    0x000081ea str r3, [sp, 8]                               |     var_8h = r3;
    0x000081ec ldr r3, [sp, 0x28]                            |     r3 = var_28h_2;
    0x000081ee str r3, [sp, 4]                               |     var_4h = r3;
    0x000081f0 ldr r3, [sp, 0x24]                            |     r3 = var_24h_2;
    0x000081f2 str r3, [sp]                                  |     *(sp) = r3;
    0x000081f4 mov r3, sb                                    |     r3 = sb;
    0x000081f6 bl 0x76e0                                     |     r0 = fcn_000076e0 (r0, r1, r2, r3, r4, r5, r6);
    0x000081fa adds.w r3, r0, 0xb                            |     r3 = r0 + 0xb;
    0x000081fe it ne                                         |     
                                                             |     if (r3 == r0) {
    0x00008200 movne r3, 1                                   |         r3 = 1;
                                                             |     }
    0x00008202 ands.w r3, r3, r0, lsr 31                     |     r3 &= (r0 >> 31);
                                                             |     if (r3 != r3) {
    0x00008206 bne 0x82f0                                    |         goto label_26;
                                                             |     }
    0x00008208 ldr r3, [pc, 0xa4]                            |     
    0x0000820a add r3, pc                                    |     
    0x0000820c ldr r3, [r3]                                  |     r3 = *(0x104be);
    0x0000820e subs r3, 5                                    |     r3 -= 5;
    0x00008210 cmp r3, 1                                     |     
                                                             |     if (r3 < 1) {
    0x00008212 bls.w 0x808a                                  |         goto label_6;
                                                             |     }
                                                             | label_10:
    0x00008216 cmp r0, 0                                     |     
                                                             |     if (r0 > 0) {
    0x00008218 bgt.w 0x8022                                  |         goto label_3;
                                                             |     }
    0x0000821c ldr r3, [pc, 0x94]                            |     
    0x0000821e add r3, pc                                    |     r3 = 0x104d6;
    0x00008220 ldr r2, [r3]                                  |     r2 = *(0x104d6);
    0x00008222 cmp r2, 7                                     |     
                                                             |     if (r2 > 7) {
    0x00008224 bhi.w 0x8068                                  |         goto label_7;
                                                             |     }
    0x00008228 movs r3, 0xd4                                 |     r3 = 0xd4;
    0x0000822a lsrs r3, r2                                   |     r3 >>= r2;
    0x0000822c lsls r1, r3, 0x1f                             |     r1 = r3 << 0x1f;
                                                             |     if (r1 >= r3) {
    0x0000822e bpl.w 0x8068                                  |         goto label_7;
                                                             |     }
    0x00008232 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00008234 beq.w 0x7f86                                  |         goto label_8;
                                                             |     }
                                                             | label_11:
    0x00008238 bl 0x7414                                     |     fcn_00007414 ();
    0x0000823c b 0x7f86                                      |     goto label_8;
                                                             | label_16:
    0x0000823e bl 0x7850                                     |     fcn_00007850 ();
    0x00008242 b 0x7f3a                                      |     goto label_9;
                                                             | label_24:
    0x000082b8 blx 0x1de8                                    |     r0 = sprintf_chk ()
    0x000082bc ldr r0, [r0]                                  |     r0 = *(r0);
    0x000082be ldr r5, [sp, 0x3c]                            |     r5 = var_3ch;
    0x000082c0 cmp r0, 0xb                                   |     
    0x000082c2 it ne                                         |     
                                                             |     if (r0 != 0xb) {
    0x000082c4 cmpne r0, 0                                   |         __asm ("cmpne r0, 0");
                                                             |     }
    0x000082c6 it le                                         |     
                                                             |     if (r0 > 0xb) {
    0x000082c8 rsble r0, r0, 0                               |         __asm ("rsble r0, r0, 0");
                                                             |         goto label_27;
                                                             |     }
                                                             |     if (r0 <= 0xb) {
                                                             | label_27:
    0x000082ca ble 0x8216                                    |         goto label_10;
                                                             |     }
                                                             | label_23:
    0x000082cc ldr r6, [pc, 0x80]                            |     
    0x000082ce add r6, pc                                    |     r6 = 0x10622;
    0x000082d0 ldr r0, [r6]                                  |     r0 = *(0x10622);
    0x000082d2 bl 0x5a98                                     |     fcn_00005a98 (r0, r1, r2, r3, r4);
    0x000082d6 ldr r3, [pc, 0x7c]                            |     
    0x000082d8 str r0, [r6]                                  |     *(r6) = r0;
    0x000082da add r3, pc                                    |     
    0x000082dc ldr r3, [r3]                                  |     r3 = *(0x10634);
                                                             | label_12:
    0x000082de cmp r3, 7                                     |     
                                                             |     if (r3 > 7) {
    0x000082e0 bhi.w 0x8068                                  |         goto label_7;
                                                             |     }
    0x000082e4 movs r2, 0xd4                                 |     r2 = 0xd4;
    0x000082e6 lsr.w r3, r2, r3                              |     r3 = r2 >> r3;
    0x000082ea lsls r2, r3, 0x1f                             |     r2 = r3 << 0x1f;
                                                             |     if (r2 < r3) {
    0x000082ec bmi 0x8238                                    |         goto label_11;
                                                             |     }
    0x000082ee b 0x8068                                      |     goto label_7;
                                                             | label_26:
    0x000082f0 ldr r6, [pc, 0x64]                            |     
    0x000082f2 add r6, pc                                    |     r6 = 0x1064e;
    0x000082f4 ldr r0, [r6]                                  |     r0 = *(0x1064e);
    0x000082f6 bl 0x5a98                                     |     fcn_00005a98 (r0, r1, r2, r3, r4);
    0x000082fa ldr r3, [pc, 0x60]                            |     
    0x000082fc str r0, [r6]                                  |     *(r6) = r0;
    0x000082fe add r3, pc                                    |     
    0x00008300 ldr r3, [r3]                                  |     r3 = *(0x10660);
    0x00008302 subs r2, r3, 5                                |     r2 = r3 - 5;
    0x00008304 cmp r2, 1                                     |     
                                                             |     if (r2 < 1) {
    0x00008306 bls.w 0x808a                                  |         goto label_6;
                                                             |     }
    0x0000830a b 0x82de                                      |     goto label_12;
                                                             | label_22:
    0x0000830c ldr r3, [pc, 0x50]                            |     
    0x0000830e add r3, pc                                    |     
    0x00008310 ldr r3, [r3]                                  |     r3 = *(0x10672);
    0x00008312 b 0x7f78                                      |     goto label_2;
                                                             | label_20:
    0x00008314 bl 0x7b84                                     |     fcn_00007b84 ();
    0x00008318 b 0x8032                                      |     goto label_13;
                                                             | label_15:
    0x0000831a ldr r3, [pc, 0x48]                            |     
    0x0000831c movs r2, 7                                    |     r2 = 7;
    0x0000831e ldr r4, [sp, 0x38]                            |     r4 = var_38h;
    0x00008320 movs r1, 1                                    |     r1 = 1;
    0x00008322 ldr r0, [pc, 0x44]                            |     
    0x00008324 ldr r3, [r4, r3]                              |     r3 = *((r4 + r3));
    0x00008326 add r0, pc                                    |     r0 = 0x10694;
    0x00008328 ldr r3, [r3]                                  |     r3 = *(0x8366);
    0x0000832a blx 0x1c94                                    |     fcn_00001c94 ();
    0x0000832e blx 0x1fb4                                    |     fcn_00001fb4 ();
                                                             | label_19:
    0x00008332 blx 0x1de8                                    |     r0 = sprintf_chk ()
    0x00008336 ldr r3, [r0]                                  |     r3 = *(r0);
    0x00008338 cmp r3, 0                                     |     
                                                             |     if (r3 > 0) {
    0x0000833a bgt.w 0x805c                                  |         goto label_14;
                                                             |     }
                                                             |     if (r3 == 0) {
    0x0000833e beq.w 0x8068                                  |         goto label_7;
                                                             |     }
    0x00008342 cmp r4, 0                                     |     
                                                             |     if (r4 != 0) {
    0x00008344 bne.w 0x7f40                                  |         goto label_0;
                                                             |     }
    0x00008348 b 0x8026                                      |     goto label_1;
                                                             | label_21:
    0x0000834a blx 0x1bfc                                    |     parse_printf_format ();
    0x0000834e nop                                           |     
    0x00008350 ldr r5, [sp, 0x218]                           |     r5 = var_218h;
    0x00008352 movs r1, r0                                   |     r1 = r0;
    0x00008354 adr r5, 0x3e8                                 |     r5 = 0x3e8;
    0x00008356 movs r1, r0                                   |     r1 = r0;
    0x00008358 ldr r5, [sp, 0x138]                           |     r5 = var_138h;
    0x0000835a movs r1, r0                                   |     r1 = r0;
    0x0000835c adr r5, 0x358                                 |     r5 = 0x358;
    0x0000835e movs r1, r0                                   |     r1 = r0;
    0x00008360 adr r5, 0x318                                 |     r5 = 0x318;
    0x00008362 movs r1, r0                                   |     r1 = r0;
    0x00008364 lsls r4, r3, 7                                |     r4 = r3 << 7;
    0x00008366 movs r0, r0                                   |     
    0x00008368 ldr r2, [r7, 0x7c]                            |     r2 = *((r7 + 0x7c));
    0x0000836a 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/cdrom_id @ 0x836c */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.0000836c ()                                  | void fcn_0000836c (int16_t arg_a0h, int16_t arg_1c0h, int16_t arg_270h, 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;
    0x0000836c svcmi 0xf0e92d                                |     __asm ("svcmi aav.0x000000ff");
    0x00008370 mov r6, r0                                    |     r6 = r0;
    0x00008372 ldr r0, [pc, 0xac]                            |     
    0x00008374 mov r7, r1                                    |     r7 = r1;
    0x00008376 subw sp, sp, 0x824                            |     __asm ("subw sp, sp, aav.0x000000ff");
    0x0000837a mov r8, r2                                    |     r8 = r2;
    0x0000837c ldr r1, [pc, 0xa4]                            |     r1 = *(0x8424);
    0x0000837e mov sb, r3                                    |     sb = r3;
    0x00008380 add r0, pc                                    |     r0 = 0x107a6;
    0x00008382 eor.w r4, r7, r7, asr 31                      |     r4 = r7 ^ (r7 >> 31);
    0x00008386 ldr.w sl, [sp, 0x848]                         |     sl = *(arg_848h);
    0x0000838a ldr r1, [r0, r1]                              |     
    0x0000838c sub.w r4, r4, r7, asr 31                      |     r4 -= (r7 >> 31);
    0x00008390 uxtb r4, r4                                   |     r4 = (int8_t) r4;
    0x00008392 ldr r1, [r1]                                  |     r1 = *(0x107a6);
    0x00008394 str.w r1, [sp, 0x81c]                         |     __asm ("str.w r1, [arg_81ch]");
    0x00008398 mov.w r1, 0                                   |     r1 = 0;
    0x0000839c blx 0x1de8                                    |     sprintf_chk ()
    0x000083a0 ldr r3, [pc, 0x84]                            |     
    0x000083a2 and r2, r6, 7                                 |     r2 = r6 & 7;
    0x000083a6 ldr.w r1, [sp, 0x84c]                         |     r1 = *(arg_84ch);
    0x000083aa mov r5, r0                                    |     r5 = r0;
    0x000083ac ldr.w fp, [r0]                                |     fp = *(0x107a6);
    0x000083b0 add r3, pc                                    |     
    0x000083b2 ldr r3, [r3]                                  |     r3 = "/etc/initrd-release";
    0x000083b4 cmp r2, r3                                    |     
                                                             |     if (r2 <= r3) {
    0x000083b6 ble 0x83e2                                    |         goto label_0;
                                                             |     }
    0x000083b8 rsbs r0, r4, 0                                |     r0 = r4 - ;
                                                             |     do {
    0x000083ba ldr r2, [pc, 0x70]                            |         
    0x000083bc cmp.w fp, 0                                   |         
    0x000083c0 ldr r3, [pc, 0x60]                            |         r3 = *(0x8424);
    0x000083c2 it ge                                         |         
                                                             |         if (fp < 0) {
    0x000083c4 strge fp, [r5]                                |             *(r5) = fp;
                                                             |         }
    0x000083c8 add r2, pc                                    |         r2 = 0x107fa;
    0x000083ca ldr r3, [r2, r3]                              |         r3 = *(0x107fa);
    0x000083cc ldr r2, [r3]                                  |         r2 = *(0x107fa);
    0x000083ce ldr.w r3, [sp, 0x81c]                         |         r3 = *(arg_81ch);
    0x000083d2 eors r2, r3                                   |         r2 ^= r3;
    0x000083d4 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x000083d8 bne 0x841a                                    |             goto label_1;
                                                             |         }
    0x000083da addw sp, sp, 0x824                            |         __asm ("addw sp, var_0h");
    0x000083de pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |         
                                                             | label_0:
    0x000083e2 ldr.w r3, [sp, 0x850]                         |         r3 = *(arg_850h);
    0x000083e6 movs r2, 1                                    |         r2 = 1;
    0x000083e8 str r4, [r0]                                  |         *(r0) = r4;
    0x000083ea add r4, sp, 0x1c                              |         r4 += var_1ch;
    0x000083ec str r1, [sp]                                  |         *(sp) = r1;
    0x000083ee mov r0, r4                                    |         r0 = r4;
    0x000083f0 str r3, [sp, 4]                               |         var_4h = r3;
    0x000083f2 mov.w r3, 0x800                               |         r3 = 0x800;
    0x000083f6 mov r1, r3                                    |         r1 = r3;
    0x000083f8 blx 0x1bbc                                    |         fcn_00001bbc ();
    0x000083fc str r4, [sp, 0x14]                            |         var_14h = r4;
    0x000083fe movs r4, 0                                    |         r4 = 0;
    0x00008400 mov r3, sb                                    |         r3 = sb;
    0x00008402 mov r2, r8                                    |         r2 = r8;
    0x00008404 mov r1, r7                                    |         r1 = r7;
    0x00008406 mov r0, r6                                    |         r0 = r6;
    0x00008408 str.w sl, [sp]                                |         __asm ("str.w sl, [sp]");
    0x0000840c strd r4, r4, [sp, 0xc]                        |         __asm ("strd r4, r4, [sp, 0xc]");
    0x00008410 strd r4, r4, [sp, 4]                          |         __asm ("strd r4, r4, [sp, 4]");
    0x00008414 bl 0x7ed4                                     |         fcn_00007ed4 (r0, r1, r2, r3);
    0x00008418 b 0x83ba                                      |         
                                                             |     } while (1);
                                                             | label_1:
    0x0000841a blx 0x1bfc                                    |     parse_printf_format ();
    0x0000841e nop                                           |     
    0x00008420 ldr r2, [sp, 0x1c0]                           |     r2 = *(arg_1c0h);
    0x00008422 movs r1, r0                                   |     r1 = r0;
    0x00008424 lsls r4, r2, 7                                |     r4 = r2 << 7;
    0x00008426 movs r0, r0                                   |     
    0x00008428 ldr r4, [sp, 0x270]                           |     r4 = *(arg_270h);
    0x0000842a movs r1, r0                                   |     r1 = r0;
    0x0000842c ldr r2, [sp, 0xa0]                            |     r2 = *(arg_a0h);
    0x0000842e 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/cdrom_id @ 0x8634 */
                                                             | #include <stdint.h>
                                                             |  
                                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                             |  
    ; (fcn) fcn.00008634 ()                                  | void fcn_00008634 (int16_t arg_4h, int16_t arg_2b0h, int16_t arg_2f8h, 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_240h;
                                                             |     int16_t var_244h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x00008634 svcmi 0xf0e92d                                |     __asm ("svcmi aav.0x000000ff");
    0x00008638 mov r4, r2                                    |     r4 = r2;
    0x0000863a sub.w sp, sp, 0x21c                           |     
    0x0000863e ldr r2, [pc, 0x154]                           |     
    0x00008640 str r3, [sp]                                  |     *(sp) = r3;
    0x00008642 ldr r3, [pc, 0x154]                           |     r3 = *(0x879a);
    0x00008644 add r2, pc                                    |     r2 = 0x10dde;
    0x00008646 ldrd fp, sl, [sp, 0x244]                      |     __asm ("ldrd fp, sl, [var_244h]");
    0x0000864a ldr r6, [sp, 0x240]                           |     r6 = var_240h;
    0x0000864c ldr r3, [r2, r3]                              |     
    0x0000864e ldr r3, [r3]                                  |     r3 = *(0x10dde);
    0x00008650 str r3, [sp, 0x214]                           |     var_214h = r3;
    0x00008652 mov.w r3, 0                                   |     r3 = 0;
    0x00008656 cmp.w fp, 0                                   |     
                                                             |     if (fp == 0) {
    0x0000865a beq 0x872c                                    |         goto label_2;
                                                             |     }
    0x0000865c cmp r6, 0                                     |     
    0x0000865e ldr r3, [pc, 0x13c]                           |     
    0x00008660 it lt                                         |     
                                                             |     if (r6 < 0) {
    0x00008662 rsblt r6, r6, 0                               |         __asm ("rsblt r6, r6, 0");
                                                             |     }
    0x00008664 mov r5, r0                                    |     r5 = r0;
    0x00008666 uxtb r7, r6                                   |     r7 = (int8_t) r6;
    0x00008668 mov r8, r1                                    |     r8 = r1;
    0x0000866a add r3, pc                                    |     r3 = 0x10e0c;
    0x0000866c str r3, [sp, 4]                               |     *(arg_4h) = r3;
                                                             | label_0:
    0x0000866e ldr r2, [r4]                                  |     r2 = *(r4);
    0x00008670 adds r2, 1                                    |     r2++;
    0x00008672 cmp r2, r8                                    |     
                                                             |     if (r2 >= r8) {
    0x00008674 bhs 0x872c                                    |         goto label_2;
                                                             |     }
    0x00008676 add r6, sp, 0x10                              |     r6 += var_10h;
    0x00008678 blx 0x1de8                                    |     sprintf_chk ()
    0x0000867c mov r3, sl                                    |     r3 = sl;
    0x0000867e str r7, [r0]                                  |     *(r0) = r7;
    0x00008680 mov r2, fp                                    |     r2 = fp;
    0x00008682 movs r1, 1                                    |     r1 = 1;
    0x00008684 mov r0, r6                                    |     r0 = r6;
    0x00008686 str.w sl, [sp, 0xc]                           |     __asm ("str.w sl, [var_ch]");
    0x0000868a blx 0x1e0c                                    |     r0 = getgid ();
    0x0000868e cmp r0, 0                                     |     
                                                             |     if (r0 < 0) {
    0x00008690 blt 0x8772                                    |         goto label_3;
                                                             |     }
    0x00008692 add.w sb, sp, 0x14                            |     sb += var_14h;
    0x00008696 movs r1, 0x80                                 |     r1 = 0x80;
    0x00008698 mov r2, sb                                    |     r2 = sb;
    0x0000869a mov r0, fp                                    |     r0 = fp;
    0x0000869c blx 0x1c08                                    |     r0 = register_atfork ();
    0x000086a0 cmp r0, 0x7f                                  |     
                                                             |     if (r0 > 0x7f) {
    0x000086a2 bhi 0x875c                                    |         goto label_4;
                                                             |     }
                                                             |     if (r0 == 0) {
    0x000086a4 cbz r0, 0x86ea                                |         goto label_5;
                                                             |     }
    0x000086a6 add.w r3, sb, r0, lsl 2                       |     r3 = sb + (r0 << 2);
    0x000086aa mov r2, sb                                    |     r2 = sb;
    0x000086ac movw r0, 0x107                                |     r0 = 0x107;
                                                             |     do {
    0x000086b0 ldr r1, [r2], 4                               |         r1 = *(r2);
                                                             |         r2 += 4;
    0x000086b4 tst.w r1, 0x800                               |         
                                                             |         if ((r1 & 0x800) == 0) {
    0x000086b8 bne 0x86e2                                    |             
    0x000086ba cmp.w r1, 0x100                               |             
                                                             |             if (r1 == 0x100) {
    0x000086be beq 0x874e                                    |                 goto label_6;
                                                             |             }
                                                             |             if (r1 <= 0x100) {
    0x000086c0 bgt 0x86d6                                    |                 
    0x000086c2 cmp r1, 7                                     |                 
                                                             |                 if (r1 > 7) {
    0x000086c4 bhi 0x8778                                    |                     goto label_7;
                                                             |                 }
    0x000086c6 subs r1, 2                                    |                 r1 -= 2;
    0x000086c8 cmp r1, 5                                     |                 
                                                             |                 if (r1 > 5) {
    0x000086ca bhi 0x86e2                                    |                     goto label_8;
                                                             |                 }
                                                             |                 /* switch table (6 cases) at 0x86d0 */
    0x000086cc tbb [pc, r1]                                  |                 __asm ("tbb aav.0x000000ff");
                                                             |             }
    0x000086d6 cmp.w r1, 0x200                               |             
                                                             |             if (r1 == 0x200) {
    0x000086da beq 0x86e2                                    |                 goto label_8;
                                                             |             }
    0x000086dc cmp.w r1, 0x400                               |             
                                                             |             if (r1 != 0x400) {
    0x000086e0 bne 0x874a                                    |                 goto label_9;
                                                             |             }
                                                             |         }
                                                             | label_8:
    0x000086e2 add.w sl, sl, 4                               |         sl += 4;
                                                             | label_1:
    0x000086e6 cmp r2, r3                                    |         
    0x000086e8 bne 0x86b0                                    |         
                                                             |     } while (r2 != r3);
                                                             | label_5:
    0x000086ea ldr.w sb, [r4]                                |     sb = *(r4);
    0x000086ee ldr r6, [r6]                                  |     r6 = *(r6);
    0x000086f0 add.w r1, sb, 1                               |     r1 = sb + 1;
    0x000086f4 mov r0, r6                                    |     r0 = r6;
    0x000086f6 str r1, [r4]                                  |     *(r4) = r1;
    0x000086f8 blx 0x1da0                                    |     strchr (r0, r1);
    0x000086fc ldr r3, [sp]                                  |     r3 = *(sp);
    0x000086fe add.w fp, r5, sb, lsl 3                       |     
    0x00008702 str.w r6, [r5, sb, lsl 3]                     |     __asm ("str.w r6, [r5, sb, lsl 3]");
    0x00008706 str.w r0, [fp, 4]                             |     __asm ("str.w r0, [arg_4h]");
                                                             |     if (r3 != 0) {
    0x0000870a cbz r3, 0x8722                                |         
    0x0000870c ldr r3, [r4]                                  |         r3 = *(r4);
    0x0000870e movs r2, 1                                    |         r2 = 1;
    0x00008710 ldr r1, [sp, 4]                               |         r1 = *(arg_4h);
    0x00008712 str.w r1, [r5, r3, lsl 3]                     |         __asm ("str.w r1, [r5, r3, lsl 3]");
    0x00008714 asrs r3, r6, 0x20                             |         r3 = r6 >> 0x20;
    0x00008716 add.w r3, r5, r3, lsl 3                       |         r3 = r5 + (r3 << 3);
    0x00008718 lsls r3, r0, 0xf                              |         r3 = r0 << 0xf;
    0x0000871a str r2, [r3, 4]                               |         *((r3 + 4)) = r2;
    0x0000871c ldr r3, [r4]                                  |         r3 = *(r4);
    0x0000871e add r3, r2                                    |         r3 += r2;
    0x00008720 str r3, [r4]                                  |         *(r4) = r3;
                                                             |     }
    0x00008722 ldr fp, [sl], 4                               |     fp = *(sl);
                                                             |     sl += 4;
    0x00008726 cmp.w fp, 0                                   |     
                                                             |     if (fp != 0) {
    0x0000872a bne 0x866e                                    |         goto label_0;
                                                             |     }
                                                             | label_2:
    0x0000872c movs r0, 0                                    |     r0 = 0;
                                                             |     do {
    0x0000872e ldr r2, [pc, 0x70]                            |         
    0x00008730 ldr r3, [pc, 0x64]                            |         r3 = *(0x8798);
    0x00008732 add r2, pc                                    |         r2 = 0x10ed8;
    0x00008734 ldr r3, [r2, r3]                              |         r3 = *(0x10ed8);
    0x00008736 ldr r2, [r3]                                  |         r2 = *(0x10ed8);
    0x00008738 ldr r3, [sp, 0x214]                           |         r3 = var_214h;
    0x0000873a eors r2, r3                                   |         r2 ^= r3;
    0x0000873c mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x00008740 bne 0x878e                                    |             goto label_10;
                                                             |         }
    0x00008742 add.w sp, sp, 0x21c                           |         
    0x00008746 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |         
                                                             | label_9:
    0x0000874a cmp r1, r0                                    |         
                                                             |         if (r1 != r0) {
    0x0000874c bne 0x8778                                    |             goto label_7;
                                                             |         }
                                                             | label_6:
    0x0000874e add.w sl, sl, 7                               |         sl += 7;
    0x00008752 bic sl, sl, 7                                 |         sl = BIT_MASK (sl, 7);
    0x00008756 add.w sl, sl, 8                               |         sl += 8;
    0x0000875a b 0x86e6                                      |         goto label_1;
                                                             | label_4:
    0x0000875c ldr r1, [pc, 0x44]                            |         
    0x0000875e movw r2, 0x397                                |         r2 = 0x397;
    0x00008762 ldr r3, [pc, 0x44]                            |         
    0x00008764 ldr r0, [pc, 0x44]                            |         
    0x00008766 add r1, pc                                    |         r1 = 0x10f0e;
    0x00008768 add r3, pc                                    |         r3 = 0x10f16;
    0x0000876a adds r1, 7                                    |         r1 += 7;
    0x0000876c add r0, pc                                    |         r0 = 0x10f1c;
    0x0000876e bl 0x8500                                     |         fcn_00008500 (r0, r1, r2, r3, r4);
                                                             | label_3:
    0x00008772 mvn r0, 0x15                                  |         r0 = ~0x15;
    0x00008776 b 0x872e                                      |         
                                                             |     } while (1);
                                                             | label_7:
    0x00008778 ldr r1, [pc, 0x34]                            |     
    0x0000877a movw r2, 0x397                                |     r2 = 0x397;
    0x0000877e ldr r3, [pc, 0x34]                            |     
    0x00008780 ldr r0, [pc, 0x34]                            |     
    0x00008782 add r1, pc                                    |     r1 = 0x10f36;
    0x00008784 add r3, pc                                    |     r3 = 0x10f3e;
    0x00008786 adds r1, 7                                    |     r1 += 7;
    0x00008788 add r0, pc                                    |     r0 = 0x10f44;
    0x0000878a lsls r7, r7, 3                                |     r7 <<= 3;
    0x0000878c invalid                                       |     
                                                             | label_10:
    0x0000878e blx 0x1bfc                                    |     parse_printf_format ();
    0x00008792 nop                                           |     
    0x00008794 str r7, [sp, 0x2b0]                           |     *(arg_2b0h) = r7;
    0x00008796 movs r1, r0                                   |     r1 = r0;
    0x00008798 lsls r4, r2, 7                                |     r4 = r2 << 7;
    0x0000879a movs r0, r0                                   |     
    0x0000879c strb r4, [r2, 0xe]                            |     *((r2 + 0xe)) = r4;
    0x0000879e movs r0, r0                                   |     
    0x000087a0 str r6, [sp, 0x2f8]                           |     *(arg_2f8h) = r6;
    0x000087a2 movs r1, r0                                   |     r1 = r0;
    0x000087a4 ldr r6, [r0, 0x44]                            |     r6 = *((r0 + 0x44));
    0x000087a6 movs r0, r0                                   |     
    0x000087a8 strb r4, [r3, 8]                              |     *((r3 + 8)) = r4;
    0x000087aa movs r0, r0                                   |     
    0x000087ac ldr r4, [r4, 0x4c]                            |     r4 = *((r4 + 0x4c));
    0x000087ae movs r0, r0                                   |     
    0x000087b0 ldr r2, [r5, 0x40]                            |     r2 = *((r5 + 0x40));
    0x000087b2 movs r0, r0                                   |     
    0x000087b4 strb r0, [r0, 8]                              |     *((r0 + 8)) = r0;
    0x000087b6 movs r0, r0                                   |     
    0x000087b8 ldr r4, [r4, 0x4c]                            |     r4 = *((r4 + 0x4c));
    0x000087ba 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/cdrom_id @ 0x87bc */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.000087bc ()                          | void fcn_000087bc (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;
    0x000087bc mvnsmi lr, 0xb4000                    |     __asm ("mvnsmi lr, aav.0x000000ff");
    0x000087c0 sub sp, 0xc                           |     
    0x000087c2 mov r8, r3                            |     r8 = r3;
    0x000087c4 mov r5, r0                            |     r5 = r0;
    0x000087c6 mov r6, r1                            |     r6 = r1;
    0x000087c8 mov r7, r2                            |     r7 = r2;
    0x000087ca blx 0x1de8                            |     sprintf_chk ()
    0x000087ce ldr r3, [pc, 0x38]                    |     
    0x000087d0 mov r4, r0                            |     r4 = r0;
    0x000087d2 ldr.w sb, [r0]                        |     sb = *(r0);
    0x000087d6 add r3, pc                            |     
    0x000087d8 ldr r3, [r3]                          |     r3 = *(0x10fe4);
    0x000087da cmp r3, 6                             |     
    0x000087dc bgt 0x87ee                            |     
                                                     |     while (1) {
    0x000087de cmp.w sb, 0                           |         
    0x000087e2 it ge                                 |         
                                                     |         if (sb < 0) {
    0x000087e4 strge sb, [r4]                        |             *(r4) = sb;
                                                     |         }
    0x000087e8 add sp, 0xc                           |         
    0x000087ea pop.w {r4, r5, r6, r7, r8, sb, pc}    |         
    0x000087ee ldr r0, [pc, 0x1c]                    |         
    0x000087f0 mov r3, r7                            |         r3 = r7;
    0x000087f2 mov r2, r6                            |         r2 = r6;
    0x000087f4 mov r1, r5                            |         r1 = r5;
    0x000087f6 str.w r8, [sp]                        |         __asm ("str.w r8, [sp]");
    0x000087fa add r0, pc                            |         r0 = 0x1100c;
    0x000087fc str r0, [sp, 4]                       |         var_4h = r0;
    0x000087fe movs r0, 7                            |         r0 = 7;
    0x00008800 bl 0x84ac                             |         fcn_000084ac (r0, r1, r2, r3, r4, r5);
    0x00008804 b 0x87de                              |         
                                                     |     }
                                                     | }
    ; 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/cdrom_id @ 0x8810 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.00008810 ()                                      | void fcn_00008810 (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, char * base, int16_t arg_148h, int16_t arg_1d0h, int16_t arg_208h, int16_t arg_238h, int16_t arg_264h, int16_t arg_2b0h, int16_t arg_348h, 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;
    0x00008810 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00008814 mov r7, r0                                        |     r7 = r0;
    0x00008816 ldr r4, [pc, 0x2f0]                               |     
    0x00008818 subw sp, sp, 0xa64                                |     __asm ("subw sp, sp, aav.0x000000ff");
    0x0000881c ldr r0, [pc, 0x2ec]                               |     r0 = *(0x8b0c);
    0x0000881e add r4, pc                                        |     r4 = 0x1132c;
    0x00008820 ldr r0, [r4, r0]                                  |     
    0x00008822 mov r4, r1                                        |     r4 = r1;
    0x00008824 ldr r0, [r0]                                      |     r0 = *(0x1132c);
    0x00008826 str.w r0, [sp, 0xa5c]                             |     __asm ("str.w r0, [arg_a5ch]");
    0x0000882a mov.w r0, 0                                       |     r0 = 0;
    0x0000882e strd r2, r3, [sp, 0x1c]                           |     __asm ("strd r2, r3, [sp, 0x1c]");
    0x00008832 ldr.w r3, [sp, 0xa88]                             |     r3 = *(arg_a88h);
    0x00008836 str r3, [sp, 0x24]                                |     *(arg_24h) = r3;
    0x00008838 blx 0x1de8                                        |     sprintf_chk ()
    0x0000883c ldr r3, [pc, 0x2d0]                               |     
    0x0000883e and r2, r7, 7                                     |     r2 = r7 & 7;
    0x00008842 ldr.w r8, [sp, 0xa8c]                             |     r8 = *(arg_a8ch);
    0x00008846 mov r5, r0                                        |     r5 = r0;
    0x00008848 ldr.w sb, [r0]                                    |     sb = *(r0);
    0x0000884c add r3, pc                                        |     
    0x0000884e ldr r3, [r3]                                      |     r3 = *(0x11360);
    0x00008850 cmp r2, r3                                        |     
    0x00008852 ble 0x888a                                        |     
                                                                 |     while (r3 == 8) {
                                                                 | label_0:
    0x00008854 eor.w r0, r4, r4, asr 31                          |         r0 = r4 ^ (r4 >> 31);
    0x00008858 sub.w r0, r0, r4, asr 31                          |         r0 -= (r4 >> 31);
    0x0000885c uxtb r0, r0                                       |         r0 = (int8_t) r0;
    0x0000885e rsbs r0, r0, 0                                    |         r0 -= ;
                                                                 | label_7:
    0x00008860 ldr r2, [pc, 0x2b0]                               |         
    0x00008862 cmp.w sb, 0                                       |         
    0x00008866 ldr r3, [pc, 0x2a4]                               |         r3 = *(0x8b0e);
    0x00008868 it ge                                             |         
                                                                 |         if (sb < 0) {
    0x0000886a strge sb, [r5]                                    |             *(r5) = sb;
                                                                 |         }
    0x0000886e add r2, pc                                        |         r2 = 0x11386;
    0x00008870 ldr r3, [r2, r3]                                  |         r3 = *(0x11386);
    0x00008872 ldr r2, [r3]                                      |         r2 = *(0x11386);
    0x00008874 ldr.w r3, [sp, 0xa5c]                             |         r3 = *(arg_a5ch);
    0x00008878 eors r2, r3                                       |         r2 ^= r3;
    0x0000887a mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0000887e bne.w 0x8b04                                      |             goto label_10;
                                                                 |         }
    0x00008882 addw sp, sp, 0xa64                                |         __asm ("addw sp, var_0h");
    0x00008886 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
    0x0000888a ldr r3, [pc, 0x28c]                               |         
    0x0000888c add r3, pc                                        |         
    0x0000888e ldr r3, [r3]                                      |         r3 = *(0x113aa);
    0x00008890 cmp r3, 8                                         |         
    0x00008892 beq 0x8854                                        |         
                                                                 |     }
    0x00008894 tst.w r7, 0x3f8                                   |     
                                                                 |     if ((r7 & 0x3f8) == 0) {
    0x00008898 bne 0x88a2                                        |         
    0x0000889a ldr r2, [pc, 0x280]                               |         
    0x0000889c add r2, pc                                        |         
    0x0000889e ldr r2, [r2]                                      |         r2 = *(0x113be);
    0x000088a0 orrs r7, r2                                       |         r7 |= r2;
                                                                 |     }
    0x000088a2 cmp r3, 4                                         |     
                                                                 |     if (r3 <= 4) {
    0x000088a4 ble 0x8996                                        |         goto label_11;
                                                                 |     }
    0x000088a6 cmp r3, 7                                         |     
                                                                 |     if (r3 != 7) {
    0x000088a8 bne 0x899a                                        |         goto label_12;
                                                                 |     }
                                                                 | label_1:
    0x000088aa ldr r3, [pc, 0x274]                               |     
    0x000088ac ldr r2, [pc, 0x274]                               |     
    0x000088ae add r3, pc                                        |     r3 = 0x113d4;
    0x000088b0 ldrb r3, [r3]                                     |     r3 = *(r3);
    0x000088b2 add r2, pc                                        |     
    0x000088b4 ldr r2, [r2]                                      |     r2 = *(0x113da);
    0x000088b6 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x000088b8 bne.w 0x8a7e                                      |         goto label_13;
                                                                 |     }
                                                                 | label_6:
    0x000088bc ldr r3, [pc, 0x268]                               |     
    0x000088be add r3, pc                                        |     
    0x000088c0 ldr r3, [r3]                                      |     r3 = *(0x113ea);
    0x000088c2 cmp r3, 0                                         |     
                                                                 |     if (r3 < 0) {
    0x000088c4 blt 0x899a                                        |         goto label_12;
                                                                 |     }
                                                                 | label_5:
    0x000088c6 add r2, sp, 0x5c                                  |     r2 += base;
    0x000088c8 movs r1, 0                                        |     r1 = 0;
    0x000088ca mov r6, r2                                        |     r6 = r2;
    0x000088cc movs r2, 0x88                                     |     r2 = 0x88;
    0x000088ce mov r0, r6                                        |     r0 = r6;
    0x000088d0 add.w fp, sp, 0x25c                               |     
    0x000088d4 blx 0x1e30                                        |     strtoull (r0, r1, r2);
    0x000088d8 movs r3, 0                                        |     r3 = 0;
    0x000088da movs r1, 0                                        |     r1 = 0;
    0x000088dc strd r3, r3, [sp, 0x10]                           |     __asm ("strd r3, r3, [sp, 0x10]");
    0x000088e0 mov r2, r4                                        |     r2 = r4;
    0x000088e2 strd r3, r3, [sp, 8]                              |     __asm ("strd r3, r3, [sp, 8]");
    0x000088e6 mov r0, fp                                        |     r0 = fp;
    0x000088e8 ldr r3, [sp, 0x24]                                |     r3 = *(arg_24h);
    0x000088ea add.w sl, sp, 0x38                                |     sl += arg_38h;
    0x000088ee str r6, [sp, 0x2c]                                |     *(arg_2ch) = r6;
    0x000088f0 str r6, [sp, 0x48]                                |     *(arg_48h) = r6;
    0x000088f2 add r6, sp, 0x3c                                  |     r6 += arg_3ch;
    0x000088f4 str r3, [sp, 4]                                   |     var_4h = r3;
    0x000088f6 ldr r3, [sp, 0x20]                                |     r3 = var_20h;
    0x000088f8 strd r1, r1, [sp, 0x40]                           |     __asm ("strd r1, r1, [sp, 0x40]");
    0x000088fc strd r1, r1, [sp, 0x4c]                           |     __asm ("strd r1, r1, [sp, 0x4c]");
    0x00008900 str r3, [sp]                                      |     *(sp) = r3;
    0x00008902 add r3, sp, 0x40                                  |     r3 += arg_40h;
    0x00008904 str r3, [sp, 0x34]                                |     *(arg_34h) = r3;
    0x00008906 strd r1, r1, [sp, 0x54]                           |     __asm ("strd r1, r1, [sp, 0x54]");
    0x0000890a ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x0000890c str r1, [r6]                                      |     *(r6) = r1;
    0x0000890e mov r1, r7                                        |     r1 = r7;
    0x00008910 bl 0x74b4                                         |     fcn_000074b4 (r0, r1, r2, r3, r4, r5, r6);
    0x00008914 ldr r3, [r6]                                      |     r3 = *(r6);
    0x00008916 add.w r1, sp, 0xa90                               |     r1 += c;
    0x0000891a mov r0, fp                                        |     r0 = fp;
    0x0000891c str r1, [sp, 0x28]                                |     *(arg_28h) = r1;
    0x0000891e adds r2, r3, 1                                    |     r2 = r3 + 1;
    0x00008920 str r3, [sp, 0x30]                                |     *(arg_30h) = r3;
    0x00008922 str r2, [r6]                                      |     *(r6) = r2;
    0x00008924 blx 0x1da0                                        |     strchr (r0, r1);
    0x00008928 ldrd r2, r3, [sp, 0x2c]                           |     __asm ("ldrd r2, r3, [arg_2ch]");
    0x0000892c ldr r1, [sp, 0x28]                                |     r1 = *(arg_28h);
    0x0000892e str.w fp, [r2, r3, lsl 3]                         |     __asm ("str.w fp, [r2, r3, lsl 3]");
    0x00008932 add.w r3, r2, r3, lsl 3                           |     r3 = r2 + (r3 << 3);
    0x00008936 mov r2, r6                                        |     r2 = r6;
    0x00008938 str r0, [r3, 4]                                   |     *((r3 + 4)) = r0;
    0x0000893a movs r3, 1                                        |     r3 = 1;
    0x0000893c strd r8, r1, [sp, 4]                              |     __asm ("strd r8, r1, [sp, 4]");
    0x00008940 str r4, [sp]                                      |     *(sp) = r4;
    0x00008942 ldr r0, [sp, 0x2c]                                |     r0 = *(arg_2ch);
    0x00008944 str.w r1, [sl]                                    |     __asm ("str.w r1, [sl]");
    0x00008948 movs r1, 0x11                                     |     r1 = 0x11;
    0x0000894a bl 0x8634                                         |     r0 = fcn_00008634 (r0, r1, r2, r3, r4, r5, r6);
    0x0000894e cmp r0, 0                                         |     
                                                                 |     if (r0 >= 0) {
    0x00008950 bge.w 0x8ac8                                      |         goto label_14;
                                                                 |     }
    0x00008954 ldr r3, [r6]                                      |     r3 = *(r6);
    0x00008956 cmp r3, 1                                         |     
    0x00008958 itt hi                                            |     
                                                                 |     if (r3 <= 1) {
    0x0000895a movhi r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 |     if (r3 <= 1) {
    0x0000895c strhi r3, [sp, 0x30]                              |         *(arg_30h) = r3;
                                                                 |     }
                                                                 |     if (r3 < 1) {
    0x0000895e bls 0x89a4                                        |         goto label_15;
                                                                 |     }
                                                                 | label_8:
    0x00008960 ldr r3, [sp, 0x2c]                                |     r3 = *(arg_2ch);
    0x00008962 mov.w fp, 1                                       |     
    0x00008966 str r4, [sp, 0x2c]                                |     *(arg_2ch) = r4;
    0x00008968 mov r4, r6                                        |     r4 = r6;
    0x0000896a mov r6, r3                                        |     r6 = r3;
                                                                 |     do {
    0x0000896c ldr r0, [r6, 8]                                   |         r0 = *((r6 + 8));
    0x0000896e add.w fp, fp, 2                                   |         
    0x00008972 blx 0x1b80                                        |         fcn_00001b80 ();
    0x00008976 ldr r3, [r4]                                      |         r3 = *(r4);
    0x00008978 adds r6, 0x10                                     |         r6 += 0x10;
    0x0000897a cmp r3, fp                                        |         
    0x0000897c bhi 0x896c                                        |         
                                                                 |     } while (r3 > fp);
    0x0000897e ldrd r4, r3, [sp, 0x2c]                           |     __asm ("ldrd r4, r3, [arg_2ch]");
                                                                 |     if (r3 != 0) {
    0x00008982 cbnz r3, 0x89a4                                   |         goto label_15;
                                                                 |     }
                                                                 | label_9:
    0x00008984 ldr r3, [pc, 0x1a4]                               |     
    0x00008986 add r3, pc                                        |     r3 = 0x114b6;
    0x00008988 ldrb r3, [r3]                                     |     r3 = *(r3);
    0x0000898a cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0000898c beq.w 0x8854                                      |         goto label_0;
                                                                 |     }
                                                                 | label_3:
    0x00008990 bl 0x7b84                                         |     fcn_00007b84 ();
    0x00008994 b 0x8854                                          |     goto label_0;
                                                                 | label_11:
    0x00008996 cmp r3, 2                                         |     
                                                                 |     if (r3 > 2) {
    0x00008998 bgt 0x88aa                                        |         goto label_1;
                                                                 |     }
                                                                 | label_12:
    0x0000899a add.w sl, sp, 0x38                                |     sl += arg_38h;
    0x0000899e add.w r3, sp, 0xa90                               |     r3 += c;
    0x000089a2 str r3, [sp, 0x28]                                |     *(arg_28h) = r3;
                                                                 | label_15:
    0x000089a4 ldr r3, [sp, 0x28]                                |     r3 = *(arg_28h);
    0x000089a6 str.w r3, [sl]                                    |     __asm ("str.w r3, [sl]");
    0x000089aa eor.w r3, r4, r4, asr 31                          |     r3 = r4 ^ (r4 >> 31);
    0x000089ae sub.w r3, r3, r4, asr 31                          |     r3 -= (r4 >> 31);
    0x000089b2 uxtb r3, r3                                       |     r3 = (int8_t) r3;
    0x000089b4 cmp.w r8, 0                                       |     
                                                                 |     if (r8 == 0) {
    0x000089b8 beq 0x8a62                                        |         goto label_16;
                                                                 |     }
    0x000089ba ldr r2, [pc, 0x174]                               |     
    0x000089bc add r1, sp, 0x40                                  |     r1 += arg_40h;
    0x000089be str.w sb, [sp, 0x28]                              |     __asm ("str.w sb, [arg_28h]");
    0x000089c2 add.w fp, sp, 0x25c                               |     
    0x000089c6 str r7, [sp, 0x30]                                |     *(arg_30h) = r7;
    0x000089c8 movw r6, 0x107                                    |     r6 = 0x107;
    0x000089cc add r2, pc                                        |     r2 = 0x11502;
    0x000089ce str r4, [sp, 0x2c]                                |     *(arg_2ch) = r4;
    0x000089d0 mov r7, r3                                        |     r7 = r3;
    0x000089d2 mov r4, r8                                        |     r4 = r8;
    0x000089d4 mov sb, r1                                        |     sb = r1;
    0x000089d6 mov r8, r2                                        |     r8 = r2;
                                                                 | label_2:
    0x000089d8 str r7, [r5]                                      |     *(r5) = r7;
    0x000089da movs r2, 1                                        |     r2 = 1;
    0x000089dc str r4, [sp]                                      |     *(sp) = r4;
    0x000089de mov r0, fp                                        |     r0 = fp;
    0x000089e0 ldr.w r3, [sl]                                    |     r3 = *(sl);
    0x000089e4 str r3, [sp, 4]                                   |     var_4h = r3;
    0x000089e6 str.w r3, [sb]                                    |     __asm ("str.w r3, [sb]");
    0x000089ea mov.w r3, 0x800                                   |     r3 = 0x800;
    0x000089ee mov r1, r3                                        |     r1 = r3;
    0x000089f0 blx 0x1bbc                                        |     fcn_00001bbc ();
    0x000089f4 mov r1, r8                                        |     r1 = r8;
    0x000089f6 mov r0, fp                                        |     r0 = fp;
    0x000089f8 bl 0xd054                                         |     r0 = fcn_0000d054 (r0, r1);
    0x000089fc cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000089fe bne 0x8aa0                                        |         goto label_17;
                                                                 |     }
    0x00008a00 mov r0, r4                                        |     r0 = r4;
    0x00008a02 add r4, sp, 0x5c                                  |     r4 += base;
    0x00008a04 mov r2, r4                                        |     r2 = r4;
    0x00008a06 movs r1, 0x80                                     |     r1 = 0x80;
    0x00008a08 blx 0x1c08                                        |     r0 = register_atfork ();
    0x00008a0c cmp r0, 0x7f                                      |     
                                                                 |     if (r0 > 0x7f) {
    0x00008a0e bhi 0x8a8a                                        |         goto label_18;
                                                                 |     }
    0x00008a10 ldr.w r1, [sl]                                    |     r1 = *(sl);
                                                                 |     if (r0 == 0) {
    0x00008a14 cbz r0, 0x8a52                                    |         goto label_19;
                                                                 |     }
    0x00008a16 add.w r0, r4, r0, lsl 2                           |     r0 = r4 + (r0 << 2);
    0x00008a1a mov r2, r4                                        |     r2 = r4;
                                                                 |     do {
    0x00008a1c ldr r3, [r2], 4                                   |         r3 = *(r2);
                                                                 |         r2 += 4;
    0x00008a20 lsls r4, r3, 0x14                                 |         r4 = r3 << 0x14;
                                                                 |         if (r4 >= r3) {
    0x00008a22 bmi 0x8a4c                                        |             
    0x00008a24 cmp.w r3, 0x100                                   |             
                                                                 |             if (r3 == 0x100) {
    0x00008a28 beq 0x8a74                                        |                 goto label_20;
                                                                 |             }
                                                                 |             if (r3 <= 0x100) {
    0x00008a2a bgt 0x8a40                                        |                 
    0x00008a2c cmp r3, 7                                         |                 
                                                                 |                 if (r3 > 7) {
    0x00008a2e bhi 0x8aee                                        |                     goto label_21;
                                                                 |                 }
    0x00008a30 subs r3, 2                                        |                 r3 -= 2;
    0x00008a32 cmp r3, 5                                         |                 
                                                                 |                 if (r3 > 5) {
    0x00008a34 bhi 0x8a4c                                        |                     goto label_22;
                                                                 |                 }
                                                                 |                 /* switch table (6 cases) at 0x8a3a */
    0x00008a36 tbb [pc, r3]                                      |                 __asm ("tbb aav.0x000000ff");
                                                                 |             }
    0x00008a40 cmp.w r3, 0x200                                   |             
                                                                 |             if (r3 == 0x200) {
    0x00008a44 beq 0x8a4c                                        |                 goto label_22;
                                                                 |             }
    0x00008a46 cmp.w r3, 0x400                                   |             
                                                                 |             if (r3 != 0x400) {
    0x00008a4a bne 0x8a70                                        |                 goto label_23;
                                                                 |             }
                                                                 |         }
                                                                 | label_22:
    0x00008a4c adds r1, 4                                        |         r1 += 4;
                                                                 | label_4:
    0x00008a4e cmp r2, r0                                        |         
    0x00008a50 bne 0x8a1c                                        |         
                                                                 |     } while (r2 != r0);
                                                                 | label_19:
    0x00008a52 ldr r4, [r1]                                      |     r4 = *(r1);
    0x00008a54 adds r1, 4                                        |     r1 += 4;
    0x00008a56 str.w r1, [sl]                                    |     __asm ("str.w r1, [sl]");
    0x00008a5a cmp r4, 0                                         |     
                                                                 |     if (r4 != 0) {
    0x00008a5c bne 0x89d8                                        |         goto label_2;
                                                                 |     }
    0x00008a5e ldrd sb, r4, [sp, 0x28]                           |     __asm ("ldrd sb, r4, [arg_28h]");
                                                                 | label_16:
    0x00008a62 ldr r3, [pc, 0xd0]                                |     
    0x00008a64 add r3, pc                                        |     r3 = 0x1159e;
    0x00008a66 ldrb r3, [r3]                                     |     r3 = *(r3);
    0x00008a68 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00008a6a beq.w 0x8854                                      |         goto label_0;
                                                                 |     }
    0x00008a6e b 0x8990                                          |     goto label_3;
                                                                 | label_23:
    0x00008a70 cmp r3, r6                                        |     
                                                                 |     if (r3 != r6) {
    0x00008a72 bne 0x8aee                                        |         goto label_21;
                                                                 |     }
                                                                 | label_20:
    0x00008a74 adds r1, 7                                        |     r1 += 7;
    0x00008a76 bic r1, r1, 7                                     |     r1 = BIT_MASK (r1, 7);
    0x00008a7a adds r1, 8                                        |     r1 += 8;
    0x00008a7c b 0x8a4e                                          |     goto label_4;
                                                                 | label_13:
    0x00008a7e cmp r2, 0                                         |     
                                                                 |     if (r2 >= 0) {
    0x00008a80 bge.w 0x88c6                                      |         goto label_5;
                                                                 |     }
    0x00008a84 bl 0x7800                                         |     fcn_00007800 ();
    0x00008a88 b 0x88bc                                          |     goto label_6;
                                                                 | label_18:
    0x00008a8a ldr r1, [pc, 0xac]                                |     
    0x00008a8c movw r2, 0x3f7                                    |     r2 = 0x3f7;
    0x00008a90 ldr r3, [pc, 0xa8]                                |     
    0x00008a92 ldr r0, [pc, 0xac]                                |     
    0x00008a94 add r1, pc                                        |     r1 = 0x115d2;
    0x00008a96 add r3, pc                                        |     r3 = 0x115d6;
    0x00008a98 adds r1, 7                                        |     r1 += 7;
    0x00008a9a add r0, pc                                        |     r0 = 0x115e0;
    0x00008a9c bl 0x8500                                         |     fcn_00008500 (r0, r1, r2, r3, r4);
                                                                 | label_17:
    0x00008aa0 ldrd r4, r7, [sp, 0x2c]                           |     __asm ("ldrd r4, r7, [arg_2ch]");
    0x00008aa4 ldr r3, [sp, 0x24]                                |     r3 = *(arg_24h);
    0x00008aa6 ldr.w sb, [sp, 0x28]                              |     sb = *(arg_28h);
    0x00008aaa mov r1, r4                                        |     r1 = r4;
    0x00008aac movs r4, 0                                        |     r4 = 0;
    0x00008aae strd r4, r4, [sp, 0xc]                            |     __asm ("strd r4, r4, [sp, 0xc]");
    0x00008ab2 mov r0, r7                                        |     r0 = r7;
    0x00008ab4 strd r4, r4, [sp, 4]                              |     __asm ("strd r4, r4, [sp, 4]");
    0x00008ab8 add r4, sp, 0x264                                 |     r4 += arg_264h;
    0x00008aba str r3, [sp]                                      |     *(sp) = r3;
    0x00008abc str r4, [sp, 0x14]                                |     var_14h = r4;
    0x00008abe ldrd r2, r3, [sp, 0x1c]                           |     __asm ("ldrd r2, r3, [var_1ch]");
    0x00008ac2 bl 0x7ed4                                         |     fcn_00007ed4 (r0, r1, r2, r3);
    0x00008ac6 b 0x8860                                          |     goto label_7;
                                                                 | label_14:
    0x00008ac8 ldr r3, [pc, 0x78]                                |     
    0x00008aca ldr r2, [sp, 0x34]                                |     r2 = *(arg_34h);
    0x00008acc add r3, pc                                        |     r3 = 0x11614;
    0x00008ace ldr r0, [r3]                                      |     r0 = *(0x11614);
    0x00008ad0 mov r1, r2                                        |     r1 = r2;
    0x00008ad2 ldr r3, [r6]                                      |     r3 = *(r6);
    0x00008ad4 str r3, [r2, 0xc]                                 |     *((r2 + 0xc)) = r3;
    0x00008ad6 mov.w r2, 0x4000                                  |     r2 = 0x4000;
    0x00008ada blx 0x1bd4                                        |     fcn_00001bd4 ();
    0x00008ade ldr r3, [r6]                                      |     r3 = *(r6);
    0x00008ae0 cmp r3, 1                                         |     
    0x00008ae2 itt hi                                            |     
                                                                 |     if (r3 <= 1) {
    0x00008ae4 movhi r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r3 > 1) {
    0x00008ae6 strhi r3, [sp, 0x30]                              |         *(arg_30h) = r3;
                                                                 |         goto label_24;
                                                                 |     }
                                                                 |     if (r3 > 1) {
                                                                 | label_24:
    0x00008ae8 bhi.w 0x8960                                      |         goto label_8;
                                                                 |     }
    0x00008aec b 0x8984                                          |     goto label_9;
                                                                 | label_21:
    0x00008aee ldr r1, [pc, 0x58]                                |     
    0x00008af0 movw r2, 0x3f7                                    |     r2 = 0x3f7;
    0x00008af4 ldr r3, [pc, 0x54]                                |     
    0x00008af6 ldr r0, [pc, 0x58]                                |     
    0x00008af8 add r1, pc                                        |     r1 = 0x11646;
    0x00008afa add r3, pc                                        |     r3 = 0x1164a;
    0x00008afc adds r1, 7                                        |     r1 += 7;
    0x00008afe add r0, pc                                        |     r0 = 0x11654;
    0x00008b00 bl 0x85fc                                         |     r0 = fcn_000085fc (r0, r1, r2, r3, r4);
                                                                 | label_10:
    0x00008b04 blx 0x1bfc                                        |     parse_printf_format ();
    0x00008b08 str r5, [sp, 0x348]                               |     *(arg_348h) = r5;
    0x00008b0a movs r1, r0                                       |     r1 = r0;
    0x00008b0c lsls r4, r2, 7                                    |     r4 = r2 << 7;
    0x00008b0e movs r0, r0                                       |     
    0x00008b10 ldr r0, [sp]                                      |     r0 = *(sp);
    0x00008b12 movs r1, r0                                       |     r1 = r0;
    0x00008b14 str r5, [sp, 0x208]                               |     *(arg_208h) = r5;
    0x00008b16 movs r1, r0                                       |     r1 = r0;
    0x00008b18 adr r0, 0x120                                     |     r0 = 0x120;
    0x00008b1a movs r1, r0                                       |     r1 = r0;
    0x00008b1c str r7, [sp, 0x2b0]                               |     *(arg_2b0h) = r7;
    0x00008b1e movs r1, r0                                       |     r1 = r0;
    0x00008b20 adr r0, 0xa8                                      |     r0 = 0xa8;
    0x00008b22 movs r1, r0                                       |     r1 = r0;
    0x00008b24 str r7, [sp, 0x238]                               |     *(arg_238h) = r7;
    0x00008b26 movs r1, r0                                       |     r1 = r0;
    0x00008b28 str r7, [sp, 0x208]                               |     *(arg_208h) = r7;
    0x00008b2a movs r1, r0                                       |     r1 = r0;
    0x00008b2c ldr r7, [sp, 0x148]                               |     r7 = *(arg_148h);
    0x00008b2e movs r1, r0                                       |     r1 = r0;
    0x00008b30 ldr r4, [r7, 0x2c]                                |     r4 = *((r7 + 0x2c));
    0x00008b32 movs r0, r0                                       |     
    0x00008b34 ldr r6, [sp, 0x1d0]                               |     r6 = *(arg_1d0h);
    0x00008b36 movs r1, r0                                       |     r1 = r0;
    0x00008b38 ldr r0, [r3, 0x10]                                |     r0 = *((r3 + 0x10));
    0x00008b3a movs r0, r0                                       |     
    0x00008b3c ldr r2, [r3, 0x6c]                                |     r2 = *((r3 + 0x6c));
    0x00008b3e movs r0, r0                                       |     
    0x00008b40 ldr r6, [r6, 0x18]                                |     r6 = *((r6 + 0x18));
    0x00008b42 movs r0, r0                                       |     
    0x00008b44 str r5, [sp, 0x1d0]                               |     *(arg_1d0h) = r5;
    0x00008b46 movs r1, r0                                       |     r1 = r0;
    0x00008b48 ldr r4, [r6, 8]                                   |     r4 = *((r6 + 8));
    0x00008b4a movs r0, r0                                       |     
    0x00008b4c ldr r6, [r6, 0x64]                                |     r6 = *((r6 + 0x64));
    0x00008b4e movs r0, r0                                       |     
    0x00008b50 ldr r6, [r5, 0x14]                                |     r6 = *((r5 + 0x14));
    0x00008b52 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/cdrom_id @ 0x9130 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00009130 ()                                  | void fcn_00009130 (int16_t arg_24h, int16_t arg_30h, int16_t arg_3ch, int16_t arg_40h, int16_t arg_44h, int16_t arg_a0h, 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_4h;
                                                             |     int16_t var_8h;
                                                             |     int16_t var_ch_2;
                                                             |     int32_t var_844h;
                                                             |     int16_t var_0h;
                                                             |     int16_t var_4h_2;
                                                             |     int16_t var_8h_2;
                                                             |     int16_t var_ch_3;
                                                             |     int16_t var_10h;
                                                             |     int16_t var_14h;
                                                             |     int16_t var_18h;
                                                             |     int16_t var_1ch_2;
                                                             |     int16_t var_20h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x00009130 svcmi 0xf0e92d                                |     __asm ("svcmi aav.0x000000ff");
    0x00009134 mov r5, r1                                    |     r5 = r1;
    0x00009136 ldr r4, [pc, 0x198]                           |     
    0x00009138 subw sp, sp, 0x84c                            |     __asm ("subw sp, sp, aav.0x000000ff");
    0x0000913c mov r6, r2                                    |     r6 = r2;
    0x0000913e mov sb, r3                                    |     sb = r3;
    0x00009140 ldr r1, [pc, 0x190]                           |     r1 = *(0x92d4);
    0x00009142 mov r8, r0                                    |     r8 = r0;
    0x00009144 add r4, pc                                    |     r4 = 0x1241a;
    0x00009146 ldr r1, [r4, r1]                              |     
    0x00009148 ldr r1, [r1]                                  |     r1 = *(0x1241a);
    0x0000914a str.w r1, [sp, 0x844]                         |     __asm ("str.w r1, [arg_844h]");
    0x0000914e mov.w r1, 0                                   |     r1 = 0;
    0x00009152 blx 0x1de8                                    |     sprintf_chk ()
    0x00009156 ldr.w r2, [sp, 0x870]                         |     r2 = *(arg_870h);
    0x0000915a mov r4, r0                                    |     r4 = r0;
    0x0000915c ldr r3, [pc, 0x178]                           |     
    0x0000915e ldr.w fp, [sp, 0x874]                         |     fp = *(arg_874h);
    0x00009162 ldr.w sl, [sp, 0x87c]                         |     sl = *(arg_87ch);
    0x00009164 add r0, sp, 0x1f0                             |     r0 = sp + 0x1f0;
    0x00009166 add r3, pc                                    |     
    0x00009168 eor.w r0, r2, r2, asr 31                      |     r0 = r2 ^ (r2 >> 31);
    0x0000916c ldr r3, [r3]                                  |     r3 = *(0x12442);
    0x0000916e sub.w r0, r0, r2, asr 31                      |     r0 -= (r2 >> 31);
    0x00009172 and r2, r5, 7                                 |     r2 = r5 & 7;
    0x00009176 ldr.w r1, [sp, 0x880]                         |     r1 = *(arg_880h);
    0x0000917a cmp r2, r3                                    |     
    0x0000917c ldr r7, [r4]                                  |     r7 = *(r4);
    0x0000917e uxtb r0, r0                                   |     r0 = (int8_t) r0;
    0x00009180 ble 0x91aa                                    |     
                                                             |     while (r3 == 8) {
    0x00009182 rsbs r0, r0, 0                                |         r0 -= ;
                                                             | label_0:
    0x00009184 ldr r2, [pc, 0x154]                           |         
    0x00009186 cmp r7, 0                                     |         
    0x00009188 ldr r3, [pc, 0x148]                           |         r3 = *(0x92d4);
    0x0000918a it ge                                         |         
                                                             |         if (r7 < 0) {
    0x0000918c strge r7, [r4]                                |             *(r4) = r7;
                                                             |         }
    0x0000918e add r2, pc                                    |         r2 = 0x1246e;
    0x00009190 ldr r3, [r2, r3]                              |         r3 = *(0x1246e);
    0x00009192 ldr r2, [r3]                                  |         r2 = *(0x1246e);
    0x00009194 ldr.w r3, [sp, 0x844]                         |         r3 = *(arg_844h);
    0x00009198 eors r2, r3                                   |         r2 ^= r3;
    0x0000919a mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x0000919e bne.w 0x92cc                                  |             goto label_1;
                                                             |         }
    0x000091a2 addw sp, sp, 0x84c                            |         __asm ("addw sp, var_0h");
    0x000091a6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |         
    0x000091aa ldr r3, [pc, 0x134]                           |         
    0x000091ac add r3, pc                                    |         
    0x000091ae ldr r3, [r3]                                  |         r3 = *(0x12492);
    0x000091b0 cmp r3, 8                                     |         
    0x000091b2 beq 0x9182                                    |         
                                                             |     }
    0x000091b4 add r3, sp, 0x44                              |     r3 += arg_44h;
    0x000091b6 addw r2, sp, 0x884                            |     __asm ("addw r2, arg_884h");
    0x000091ba str r0, [r4]                                  |     *(r4) = r0;
    0x000091bc mov r0, r3                                    |     r0 = r3;
    0x000091be str r3, [sp, 0x3c]                            |     *(arg_3ch) = r3;
    0x000091c0 mov.w r3, 0x800                               |     r3 = 0x800;
    0x000091c4 str r1, [sp]                                  |     *(sp) = r1;
    0x000091c6 mov r1, r3                                    |     r1 = r3;
    0x000091c8 str r2, [sp, 4]                               |     var_4h_2 = r2;
    0x000091ca str r2, [sp, 0x40]                            |     *(arg_40h) = r2;
    0x000091cc movs r2, 1                                    |     r2 = 1;
    0x000091ce blx 0x1bbc                                    |     fcn_00001bbc ();
    0x000091d2 cmp.w r8, 0                                   |     
                                                             |     if (r8 == 0) {
    0x000091d6 beq 0x9218                                    |         goto label_2;
                                                             |     }
    0x000091d8 bl 0x9cd0                                     |     r0 = fcn_00009cd0 (r0);
    0x000091dc cmp r0, 1                                     |     
                                                             |     if (r0 == 1) {
    0x000091de beq 0x92c6                                    |         goto label_3;
                                                             |     }
    0x000091e0 ldr r3, [pc, 0x100]                           |     
    0x000091e2 add r3, pc                                    |     r3 = 0x124ca;
                                                             |     do {
                                                             |         if (r6 == 0) {
    0x000091e4 cbnz r6, 0x921c                               |             
    0x000091e6 str r3, [sp, 0x14]                            |             var_14h = r3;
    0x000091e8 mov r2, fp                                    |             r2 = fp;
    0x000091ea ldr r3, [sp, 0x3c]                            |             r3 = *(arg_3ch);
    0x000091ec mov r0, r5                                    |             r0 = r5;
    0x000091ee ldr.w r1, [sp, 0x870]                         |             r1 = *(arg_870h);
    0x000091f2 str r6, [sp, 0x1c]                            |             var_1ch_2 = r6;
    0x000091f4 str r3, [sp, 0x10]                            |             var_10h = r3;
    0x000091f6 ldr r3, [pc, 0xf0]                            |             
    0x000091f8 str.w sl, [sp]                                |             __asm ("str.w sl, [sp]");
    0x000091fc str.w r8, [sp, 0x18]                          |             __asm ("str.w r8, [var_18h]");
    0x00009200 add r3, pc                                    |             r3 = 0x124ee;
    0x00009202 str.w r8, [sp, 0xc]                           |             __asm ("str.w r8, [var_ch_3]");
    0x00009206 str r3, [sp, 8]                               |             var_8h_2 = r3;
    0x00009208 ldr r3, [pc, 0xe0]                            |             
    0x0000920a add r3, pc                                    |             r3 = 0x124fa;
    0x0000920c str r3, [sp, 4]                               |             var_4h_2 = r3;
    0x0000920e ldr.w r3, [sp, 0x878]                         |             r3 = *(arg_878h);
    0x00009212 bl 0x8810                                     |             fcn_00008810 (r0, r1, r2, r3, r4, r5, r6);
    0x00009216 b 0x9184                                      |             goto label_0;
                                                             | label_2:
    0x00009218 mov r3, r8                                    |             r3 = r8;
                                                             |             if (r6 == 0) {
    0x0000921a cbz r6, 0x9268                                |                 goto label_4;
                                                             |             }
                                                             |         }
    0x0000921c cmp.w sb, 0                                   |         
                                                             |         if (sb != 0) {
    0x00009220 beq 0x9290                                    |             
    0x00009222 strd r3, r8, [sp, 0x28]                       |             __asm ("strd r3, r8, [sp, 0x28]");
    0x00009226 mov r2, fp                                    |             r2 = fp;
    0x00009228 ldr r3, [sp, 0x3c]                            |             r3 = *(arg_3ch);
    0x0000922a mov r0, r5                                    |             r0 = r5;
    0x0000922c ldr.w r1, [sp, 0x870]                         |             r1 = *(arg_870h);
    0x0000922e adds r0, r6, r1                               |             r0 = r6 + r1;
    0x00009230 str.w sl, [sp]                                |             __asm ("str.w sl, [sp]");
    0x00009234 str r3, [sp, 0x24]                            |             *(arg_24h) = r3;
    0x00009236 ldr r3, [pc, 0xb8]                            |             
    0x00009238 str.w sb, [sp, 0x20]                          |             __asm ("str.w sb, [var_20h]");
    0x0000923c str.w sb, [sp, 0x14]                          |             __asm ("str.w sb, [var_14h]");
    0x00009240 add r3, pc                                    |             r3 = 0x12536;
    0x00009242 str r6, [sp, 0x1c]                            |             var_1ch_2 = r6;
    0x00009244 str r3, [sp, 0x18]                            |             var_18h = r3;
    0x00009246 ldr r3, [pc, 0xac]                            |             
    0x00009248 str r6, [sp, 0xc]                             |             var_ch_3 = r6;
    0x0000924a add r3, pc                                    |             r3 = 0x12544;
    0x0000924c str r3, [sp, 0x10]                            |             var_10h = r3;
    0x0000924e ldr r3, [pc, 0xa8]                            |             
    0x00009250 add r3, pc                                    |             r3 = 0x1254e;
    0x00009252 str r3, [sp, 8]                               |             var_8h_2 = r3;
    0x00009254 ldr r3, [pc, 0xa4]                            |             
    0x00009256 add r3, pc                                    |             r3 = 0x12556;
    0x00009258 str r3, [sp, 4]                               |             var_4h_2 = r3;
    0x0000925a movs r3, 0                                    |             r3 = 0;
    0x0000925c str r3, [sp, 0x30]                            |             *(arg_30h) = r3;
    0x0000925e ldr.w r3, [sp, 0x878]                         |             r3 = *(arg_878h);
    0x00009262 bl 0x8810                                     |             fcn_00008810 (r0, r1, r2, r3, r4, r5, r6);
    0x00009266 b 0x9184                                      |             goto label_0;
                                                             | label_4:
    0x00009268 ldr r3, [sp, 0x3c]                            |             r3 = *(arg_3ch);
    0x0000926a mov r2, fp                                    |             r2 = fp;
    0x0000926c ldr.w r1, [sp, 0x870]                         |             r1 = *(arg_870h);
    0x00009270 mov r0, r5                                    |             r0 = r5;
    0x00009272 str r6, [sp, 0x10]                            |             var_10h = r6;
    0x00009274 str r3, [sp, 0xc]                             |             var_ch_3 = r3;
    0x00009276 ldr r3, [pc, 0x88]                            |             
    0x00009278 str.w sl, [sp]                                |             __asm ("str.w sl, [sp]");
    0x0000927c add r3, pc                                    |             r3 = 0x12582;
    0x0000927e str r3, [sp, 8]                               |             var_8h_2 = r3;
    0x00009280 ldr r3, [pc, 0x80]                            |             
    0x00009282 add r3, pc                                    |             r3 = 0x1258a;
    0x00009284 str r3, [sp, 4]                               |             var_4h_2 = r3;
    0x00009286 ldr.w r3, [sp, 0x878]                         |             r3 = *(arg_878h);
    0x0000928a bl 0x8810                                     |             fcn_00008810 (r0, r1, r2, r3, r4, r5, r6);
    0x0000928c invalid                                       |             
                                                             |         }
    0x00009290 str r3, [sp, 0x1c]                            |         var_1ch_2 = r3;
    0x00009292 mov r2, fp                                    |         r2 = fp;
    0x00009294 ldr r3, [sp, 0x3c]                            |         r3 = *(arg_3ch);
    0x00009296 mov r0, r5                                    |         r0 = r5;
    0x00009298 ldr.w r1, [sp, 0x870]                         |         r1 = *(arg_870h);
    0x0000929c strd r8, sb, [sp, 0x20]                       |         __asm ("strd r8, sb, [sp, 0x20]");
    0x000092a0 str r3, [sp, 0x18]                            |         var_18h = r3;
    0x000092a2 ldr r3, [pc, 0x64]                            |         
    0x000092a4 str.w sl, [sp]                                |         __asm ("str.w sl, [sp]");
    0x000092a8 str r6, [sp, 0x14]                            |         var_14h = r6;
    0x000092aa add r3, pc                                    |         r3 = 0x125b8;
    0x000092ac str r6, [sp, 0xc]                             |         var_ch_3 = r6;
    0x000092ae str r3, [sp, 0x10]                            |         var_10h = r3;
    0x000092b0 ldr r3, [pc, 0x58]                            |         
    0x000092b2 add r3, pc                                    |         r3 = 0x125c2;
    0x000092b4 str r3, [sp, 8]                               |         var_8h_2 = r3;
    0x000092b6 ldr r3, [pc, 0x58]                            |         
    0x000092b8 add r3, pc                                    |         r3 = 0x125ce;
    0x000092ba str r3, [sp, 4]                               |         var_4h_2 = r3;
    0x000092bc ldr.w r3, [sp, 0x878]                         |         r3 = *(arg_878h);
    0x000092c0 bl 0x8810                                     |         fcn_00008810 (r0, r1, r2, r3, r4, r5, r6);
    0x000092c4 b 0x9184                                      |         goto label_0;
                                                             | label_3:
    0x000092c6 ldr r3, [pc, 0x4c]                            |         
    0x000092c8 add r3, pc                                    |         r3 = 0x125e2;
    0x000092ca b 0x91e4                                      |         
                                                             |     } while (1);
                                                             | label_1:
    0x000092cc blx 0x1bfc                                    |     parse_printf_format ();
    0x000092d0 ldrh r4, [r5, 0x24]                           |     r4 = *((r5 + 0x24));
    0x000092d2 movs r1, r0                                   |     r1 = r0;
    0x000092d4 lsls r4, r2, 7                                |     r4 = r2 << 7;
    0x000092d6 movs r0, r0                                   |     
    0x000092d8 ldrh r6, [r4, 0x36]                           |     r6 = *((r4 + 0x36));
    0x000092da movs r1, r0                                   |     r1 = r0;
    0x000092dc ldrh r2, [r4, 0x22]                           |     r2 = *((r4 + 0x22));
    0x000092de movs r1, r0                                   |     r1 = r0;
    0x000092e0 str r7, [sp, 0xa0]                            |     *(arg_a0h) = r7;
    0x000092e2 movs r1, r0                                   |     r1 = r0;
    0x000092e4 str r2, [r5, 0x64]                            |     *((r5 + 0x64)) = r2;
    0x000092e6 movs r0, r0                                   |     
    0x000092e8 str r4, [r7, 0x68]                            |     *((r7 + 0x68)) = r4;
    0x000092ea movs r0, r0                                   |     
    0x000092ec str r6, [r0, 0x68]                            |     *((r0 + 0x68)) = r6;
    0x000092ee movs r0, r0                                   |     
    0x000092f0 str r4, [r3, 0x60]                            |     *((r3 + 0x60)) = r4;
    0x000092f2 movs r0, r0                                   |     
    0x000092f4 str r6, [r4, 0x60]                            |     *((r4 + 0x60)) = r6;
    0x000092f6 movs r0, r0                                   |     
    0x000092f8 str r0, [r6, 0x60]                            |     *((r6 + 0x60)) = r0;
    0x000092fa movs r0, r0                                   |     
    0x000092fc str r2, [r7, 0x60]                            |     *((r7 + 0x60)) = r2;
    0x000092fe movs r0, r0                                   |     
    0x00009300 str r0, [r2, 0x64]                            |     *((r2 + 0x64)) = r0;
    0x00009302 movs r0, r0                                   |     
    0x00009304 str r6, [r1, 0x60]                            |     *((r1 + 0x60)) = r6;
    0x00009306 movs r0, r0                                   |     
    0x00009308 str r2, [r2, 0x60]                            |     *((r2 + 0x60)) = r2;
    0x0000930a movs r0, r0                                   |     
    0x0000930c str r6, [r1, 0x5c]                            |     *((r1 + 0x5c)) = r6;
    0x0000930e movs r0, r0                                   |     
    0x00009310 str r0, [r3, 0x5c]                            |     *((r3 + 0x5c)) = r0;
    0x00009312 movs r0, r0                                   |     
    0x00009314 str r4, [r7, 0x54]                            |     *((r7 + 0x54)) = r4;
    0x00009316 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/cdrom_id @ 0x94c4 */
                                         | #include <stdint.h>
                                         |  
                                         | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                         |  
    ; (fcn) fcn.000094c4 ()              | void fcn_000094c4 (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;
    0x000094c4 invalid                   |     
    0x000094c8 ldr r0, [pc, 0x104]       |     
    0x000094ca mov r6, r2                |     r6 = r2;
    0x000094cc sub sp, 0x10              |     
    0x000094ce movs r3, 0                |     r3 = 0;
    0x000094d0 ldr r2, [pc, 0x100]       |     r2 = *(0x95d4);
    0x000094d2 add r0, pc                |     r0 = 0x12aa6;
    0x000094d4 str r1, [sp, 4]           |     var_4h = r1;
    0x000094d6 ldr r2, [r0, r2]          |     
    0x000094d8 ldr r2, [r2]              |     r2 = *(0x12aa6);
    0x000094da str r2, [sp, 0xc]         |     var_ch = r2;
    0x000094dc mov.w r2, 0               |     r2 = 0;
    0x000094e0 str r3, [sp, 8]           |     var_8h = r3;
    0x000094e2 cmp r4, 0                 |     
                                         |     if (r4 == 0) {
    0x000094e4 beq 0x9598                |         goto label_3;
                                         |     }
    0x000094e6 bic r3, r1, 0x70000000    |     r3 = BIT_MASK (r1, 0x70000000);
    0x000094ea mov r5, r1                |     r5 = r1;
    0x000094ec cmp r3, 0x10              |     
                                         |     if (r3 > 0x10) {
    0x000094ee bhi 0x95ae                |         goto label_4;
                                         |     }
    0x000094f0 lsls r0, r1, 3            |     r0 = r1 << 3;
                                         |     if (r0 < r1) {
    0x000094f2 bpl 0x9502                |         
    0x000094f4 ldr r0, [pc, 0xe0]        |         
    0x000094f6 ldrb r1, [r4]             |         r1 = *(r4);
    0x000094f8 add r0, pc                |         r0 = 0x12ad4;
    0x000094fa blx 0x1db8                |         r0 = openat64 ();
    0x000094fe cmp r0, 0                 |         
                                         |         if (r0 != 0) {
    0x00009500 bne 0x958a                |             goto label_2;
                                         |         }
                                         |     }
    0x00009502 ldr r1, [pc, 0xd8]        |     
    0x00009504 mov r0, r4                |     r0 = r4;
    0x00009506 add r1, pc                |     r1 = 0x12ae8;
    0x00009508 blx 0x1fe4                |     fcn_00001fe4 ();
    0x0000950c lsls r1, r5, 1            |     r1 = r5 << 1;
    0x0000950e mov r3, r0                |     r3 = r0;
    0x00009510 add r0, r4                |     r0 += r4;
    0x00009512 bmi 0x9580                |     
                                         |     while ((r2 & 0xfd) != 0) {
    0x00009514 lsls r2, r5, 2            |         r2 = r5 << 2;
                                         |         if (r2 < r5) {
    0x00009516 bpl 0x951e                |             
    0x00009518 ldrb r3, [r4, r3]         |             r3 = *((r4 + r3));
    0x0000951a cmp r3, 0x30              |             
                                         |             if (r3 == 0x30) {
    0x0000951c beq 0x9590                |                 goto label_5;
                                         |             }
                                         |         }
                                         | label_1:
    0x0000951e add r1, sp, 4             |         r1 += var_4h;
    0x00009520 bl 0x9364                 |         r0 = fcn_00009364 (r0, r1);
    0x00009524 mov r5, r0                |         r5 = r0;
    0x00009526 blx 0x1de8                |         sprintf_chk ()
    0x0000952a ldr r2, [sp, 4]           |         r2 = var_4h;
    0x0000952c movs r3, 0                |         r3 = 0;
    0x0000952e str r3, [r0]              |         *(r0) = r3;
    0x00009530 mov r4, r0                |         r4 = r0;
    0x00009532 add r1, sp, 8             |         r1 += var_8h;
    0x00009534 mov r0, r5                |         r0 = r5;
    0x00009536 bic r2, r2, 0x70000000    |         r2 = BIT_MASK (r2, 0x70000000);
    0x0000953a blx 0x1d94                |         libc_current_sigrtmax ();
    0x0000953e ldr r3, [r4]              |         r3 = *(r4);
    0x00009540 mov r2, r0                |         r2 = r0;
    0x00009542 cmp r3, 0                 |         
    0x00009544 it gt                     |         
                                         |         if (r3 > 0) {
    0x00009546 rsbgt r0, r3, 0           |             __asm ("rsbgt r0, r3, 0");
                                         |         }
                                         |         if (r3 <= 0) {
    0x00009548 bgt 0x9568                |             
    0x0000954a ldr r3, [sp, 8]           |             r3 = var_8h;
    0x0000954c cmp r3, 0                 |             
    0x0000954e it ne                     |             
                                         |             if (r3 != 0) {
    0x00009550 cmpne r3, r5              |                 __asm ("cmpne r3, r5");
                                         |             }
                                         |             if (r3 == 0) {
    0x00009552 beq 0x958a                |                 goto label_2;
                                         |             }
    0x00009554 ldrb r3, [r3]             |             r3 = *(r3);
                                         |             if (r3 != 0) {
    0x00009556 cbnz r3, 0x958a           |                 goto label_2;
                                         |             }
                                         |             if (r2 != 0) {
    0x00009558 cbz r2, 0x9560            |                 
    0x0000955a ldrb r3, [r5]             |                 r3 = *(r5);
    0x0000955c cmp r3, 0x2d              |                 
                                         |                 if (r3 == 0x2d) {
    0x0000955e beq 0x95c4                |                     goto label_6;
                                         |                 }
                                         |             }
    0x00009560 mov r0, r6                |             r0 = r6;
                                         |             if (r6 == 0) {
    0x00009562 cbz r6, 0x9568            |                 goto label_0;
                                         |             }
    0x00009564 movs r0, 0                |             r0 = 0;
    0x00009566 str r2, [r6]              |             *(r6) = r2;
                                         |         }
                                         | label_0:
    0x00009568 ldr r2, [pc, 0x74]        |         
    0x0000956a ldr r3, [pc, 0x68]        |         r3 = *(0x95d6);
    0x0000956c add r2, pc                |         r2 = 0x12b50;
    0x0000956e ldr r3, [r2, r3]          |         r3 = *(0x12b50);
    0x00009570 ldr r2, [r3]              |         r2 = *(0x12b50);
    0x00009572 ldr r3, [sp, 0xc]         |         r3 = var_ch;
    0x00009574 eors r2, r3               |         r2 ^= r3;
    0x00009576 mov.w r3, 0               |         r3 = 0;
                                         |         if (r2 != r3) {
    0x0000957a bne 0x95ca                |             goto label_7;
                                         |         }
    0x0000957c add sp, 0x10              |         
    0x0000957e pop {r4, r5, r6, pc}      |         
    0x00009580 ldrb r2, [r4, r3]         |         r2 = *((r4 + r3));
    0x00009582 subs r2, 0x2b             |         r2 -= 0x2b;
    0x00009584 tst.w r2, 0xfd            |         
    0x00009588 bne 0x9514                |         
                                         |     }
                                         | label_2:
    0x0000958a mvn r0, 0x15              |     r0 = ~0x15;
    0x0000958e b 0x9568                  |     goto label_0;
                                         | label_5:
    0x00009590 ldrb r3, [r0, 1]          |     r3 = *((r0 + 1));
    0x00009592 cmp r3, 0                 |     
                                         |     if (r3 == 0) {
    0x00009594 beq 0x951e                |         goto label_1;
                                         |     }
    0x00009596 b 0x958a                  |     goto label_2;
                                         | label_3:
    0x00009598 ldr r1, [pc, 0x48]        |     
    0x0000959a movw r2, 0x15b            |     r2 = 0x15b;
    0x0000959e ldr r3, [pc, 0x48]        |     
    0x000095a0 ldr r0, [pc, 0x48]        |     
    0x000095a2 add r1, pc                |     r1 = 0x12b8a;
    0x000095a4 add r3, pc                |     r3 = 0x12b92;
    0x000095a6 adds r1, 7                |     r1 += 7;
    0x000095a8 add r0, pc                |     r0 = 0x12b98;
    0x000095aa bl 0x8500                 |     fcn_00008500 (r0, r1, r2, r3, r4);
                                         | label_4:
    0x000095ae ldr r1, [pc, 0x40]        |     
    0x000095b0 mov.w r2, 0x15c           |     r2 = 0x15c;
    0x000095b4 ldr r3, [pc, 0x3c]        |     
    0x000095b6 ldr r0, [pc, 0x40]        |     
    0x000095b8 add r1, pc                |     r1 = 0x12bae;
    0x000095ba add r3, pc                |     r3 = 0x12bb2;
    0x000095bc adds r1, 7                |     r1 += 7;
    0x000095be add r0, pc                |     r0 = 0x12bbc;
    0x000095c0 bl 0x8500                 |     fcn_00008500 (r0, r1, r2, r3, r4);
                                         | label_6:
    0x000095c4 mvn r0, 0x21              |     r0 = ~0x21;
    0x000095c8 b 0x9568                  |     goto label_0;
                                         | label_7:
    0x000095ca blx 0x1bfc                |     parse_printf_format ();
    0x000095ce nop                       |     
    0x000095d0 ldrh r6, [r3, 8]          |     r6 = *((r3 + 8));
    0x000095d2 movs r1, r0               |     r1 = r0;
    0x000095d4 lsls r4, r2, 7            |     r4 = r2 << 7;
    0x000095d6 movs r0, r0               |     
    0x000095d8 strb r4, [r4, r4]         |     *((r4 + r4)) = r4;
    0x000095da movs r0, r0               |     
    0x000095dc strb r6, [r2, r4]         |     *((r2 + r4)) = r6;
    0x000095de movs r0, r0               |     
    0x000095e0 ldrh r4, [r0, 4]          |     r4 = *((r0 + 4));
    0x000095e2 movs r1, r0               |     r1 = r0;
    0x000095e4 str r2, [r3, 0x58]        |     *((r3 + 0x58)) = r2;
    0x000095e6 movs r0, r0               |     
    0x000095e8 str r0, [r7, 0x60]        |     *((r7 + 0x60)) = r0;
    0x000095ea movs r0, r0               |     
    0x000095ec str r4, [r0, 0x2c]        |     *((r0 + 0x2c)) = r4;
    0x000095ee movs r0, r0               |     
    0x000095f0 str r4, [r0, 0x58]        |     *((r0 + 0x58)) = r4;
    0x000095f2 movs r0, r0               |     
    0x000095f4 str r2, [r4, 0x60]        |     *((r4 + 0x60)) = r2;
    0x000095f6 movs r0, r0               |     
    0x000095f8 str r2, [r0, 0x5c]        |     *((r0 + 0x5c)) = r2;
    0x000095fa 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/cdrom_id @ 0x969c */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.0000969c ()                  | void fcn_0000969c (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;
    0x0000969c blmi 0xa1bf40                 |     __asm ("blmi 0xa1bf40");
    0x000096a0 push {r4, r5, r6, r7, lr}     |     
    0x000096a2 movs r7, 0                    |     r7 = 0;
    0x000096a4 add r2, pc                    |     r2 += pc;
    0x000096a6 sub sp, 0x14                  |     
    0x000096a8 ldr r3, [r2, r3]              |     r3 = *((r2 + r3));
    0x000096aa ldr r3, [r3]                  |     r3 = *(r3);
    0x000096ac str r3, [sp, 0xc]             |     var_ch_2 = r3;
    0x000096ae mov.w r3, 0                   |     r3 = 0;
    0x000096b2 strd r7, r7, [sp, 4]          |     __asm ("strd r7, r7, [sp, 4]");
                                             |     if (r0 == 0) {
    0x000096b6 cbz r0, 0x971a                |         goto label_1;
                                             |     }
    0x000096b8 mov r6, r1                    |     r6 = r1;
    0x000096ba ldr r1, [pc, 0x88]            |     
    0x000096bc mov r4, r0                    |     r4 = r0;
    0x000096be add r1, pc                    |     r1 = 0x12e08;
    0x000096c0 blx 0x1fe4                    |     fcn_00001fe4 ();
    0x000096c4 add r1, sp, 4                 |     r1 += var_4h_7;
    0x000096c6 add r0, r4                    |     r0 += r4;
    0x000096c8 bl 0x9364                     |     r0 = fcn_00009364 (r0, r1);
    0x000096cc mov r5, r0                    |     r5 = r0;
    0x000096ce blx 0x1de8                    |     sprintf_chk ()
    0x000096d2 ldr r2, [sp, 4]               |     r2 = var_4h_7;
    0x000096d4 mov r4, r0                    |     r4 = r0;
    0x000096d6 str r7, [r0]                  |     *(r0) = r7;
    0x000096d8 add r1, sp, 8                 |     r1 += var_8h_5;
    0x000096da mov r0, r5                    |     r0 = r5;
    0x000096dc blx 0x1b20                    |     fcn_00001b20 ();
    0x000096e0 ldr r3, [r4]                  |     r3 = *(r4);
    0x000096e2 mov r2, r0                    |     r2 = r0;
    0x000096e4 cmp r3, 0                     |     
    0x000096e6 it gt                         |     
                                             |     if (r3 > 0) {
    0x000096e8 rsbgt r0, r3, 0               |         __asm ("rsbgt r0, r3, 0");
                                             |     }
                                             |     if (r3 > 0) {
    0x000096ea bgt 0x96fe                    |         goto label_0;
                                             |     }
    0x000096ec ldr r3, [sp, 8]               |     r3 = var_8h_5;
    0x000096ee cmp r3, 0                     |     
    0x000096f0 it ne                         |     
                                             |     if (r3 != 0) {
    0x000096f2 cmpne r3, r5                  |         __asm ("cmpne r3, r5");
                                             |     }
                                             |     if (r3 == 0) {
    0x000096f4 beq 0x9730                    |         goto label_2;
                                             |     }
    0x000096f6 ldrb r0, [r3]                 |     r0 = *(r3);
                                             |     if (r0 != 0) {
    0x000096f8 cbnz r0, 0x9730               |         goto label_2;
                                             |     }
                                             |     if (r6 == 0) {
    0x000096fa cbz r6, 0x9716                |         goto label_3;
                                             |     }
    0x000096fc str r2, [r6]                  |     *(r6) = r2;
                                             |     do {
                                             | label_0:
    0x000096fe ldr r2, [pc, 0x48]            |         
    0x00009700 ldr r3, [pc, 0x3c]            |         r3 = *(0x9740);
    0x00009702 add r2, pc                    |         r2 = 0x12e50;
    0x00009704 ldr r3, [r2, r3]              |         r3 = *(0x12e50);
    0x00009706 ldr r2, [r3]                  |         r2 = *(0x12e50);
    0x00009708 ldr r3, [sp, 0xc]             |         r3 = var_ch_2;
    0x0000970a eors r2, r3                   |         r2 ^= r3;
    0x0000970c mov.w r3, 0                   |         r3 = 0;
                                             |         if (r2 != r3) {
    0x00009710 bne 0x9736                    |             goto label_4;
                                             |         }
    0x00009712 add sp, 0x14                  |         
    0x00009714 pop {r4, r5, r6, r7, pc}      |         
                                             | label_3:
    0x00009716 mov r0, r6                    |         r0 = r6;
    0x00009718 b 0x96fe                      |         
                                             |     } while (1);
                                             | label_1:
    0x0000971a ldr r1, [pc, 0x30]            |     
    0x0000971c movw r2, 0x18f                |     r2 = 0x18f;
    0x00009720 ldr r3, [pc, 0x2c]            |     
    0x00009722 ldr r0, [pc, 0x30]            |     
    0x00009724 add r1, pc                    |     r1 = 0x12e76;
    0x00009726 add r3, pc                    |     r3 = 0x12e7a;
    0x00009728 adds r1, 7                    |     r1 += 7;
    0x0000972a add r0, pc                    |     r0 = 0x12e84;
    0x0000972c bl 0x8500                     |     fcn_00008500 (r0, r1, r2, r3, r4);
                                             | label_2:
    0x00009730 mvn r0, 0x15                  |     r0 = ~0x15;
    0x00009734 b 0x96fe                      |     goto label_0;
                                             | label_4:
    0x00009736 blx 0x1bfc                    |     parse_printf_format ();
    0x0000973a nop                           |     
    0x0000973c strh r4, [r1, 0x3a]           |     *((r1 + 0x3a)) = r4;
    0x0000973e movs r1, r0                   |     r1 = r0;
    0x00009740 lsls r4, r2, 7                |     r4 = r2 << 7;
    0x00009742 movs r0, r0                   |     
    0x00009744 strh r6, [r3, r5]             |     *((r3 + r5)) = r6;
    0x00009746 movs r0, r0                   |     
    0x00009748 strh r6, [r5, 0x36]           |     *((r5 + 0x36)) = r6;
    0x0000974a movs r1, r0                   |     r1 = r0;
    0x0000974c str r0, [r3, 0x40]            |     *((r3 + 0x40)) = r0;
    0x0000974e movs r0, r0                   |     
    0x00009750 str r6, [r4, 0x4c]            |     *((r4 + 0x4c)) = r6;
    0x00009752 movs r0, r0                   |     
    0x00009754 str r2, [r0, 0x14]            |     *((r0 + 0x14)) = r2;
    0x00009756 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/cdrom_id @ 0x9758 */
                                         | #include <stdint.h>
                                         |  
                                         | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                         |  
    ; (fcn) fcn.00009758 ()              | void fcn_00009758 (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;
    0x00009758 invalid                   |     
    0x0000975c ldr r0, [pc, 0x108]       |     
    0x0000975e mov r6, r2                |     r6 = r2;
    0x00009760 sub sp, 0x10              |     
    0x00009762 movs r3, 0                |     r3 = 0;
    0x00009764 ldr r2, [pc, 0x104]       |     r2 = *(0x986c);
    0x00009766 add r0, pc                |     r0 = 0x12fd2;
    0x00009768 str r1, [sp, 4]           |     var_4h_3 = r1;
    0x0000976a ldr r2, [r0, r2]          |     
    0x0000976c ldr r2, [r2]              |     r2 = *(0x12fd2);
    0x0000976e str r2, [sp, 0xc]         |     var_ch_3 = r2;
    0x00009770 mov.w r2, 0               |     r2 = 0;
    0x00009774 str r3, [sp, 8]           |     var_8h_2 = r3;
    0x00009776 cmp r4, 0                 |     
                                         |     if (r4 == 0) {
    0x00009778 beq 0x9832                |         goto label_3;
                                         |     }
    0x0000977a bic r3, r1, 0x70000000    |     r3 = BIT_MASK (r1, 0x70000000);
    0x0000977e mov r5, r1                |     r5 = r1;
    0x00009780 cmp r3, 0x10              |     
                                         |     if (r3 > 0x10) {
    0x00009782 bhi 0x9848                |         goto label_4;
                                         |     }
    0x00009784 lsls r0, r1, 3            |     r0 = r1 << 3;
                                         |     if (r0 < r1) {
    0x00009786 bpl 0x9796                |         
    0x00009788 ldr r0, [pc, 0xe4]        |         
    0x0000978a ldrb r1, [r4]             |         r1 = *(r4);
    0x0000978c add r0, pc                |         r0 = 0x13000;
    0x0000978e blx 0x1db8                |         r0 = openat64 ();
    0x00009792 cmp r0, 0                 |         
                                         |         if (r0 != 0) {
    0x00009794 bne 0x9824                |             goto label_2;
                                         |         }
                                         |     }
    0x00009796 ldr r1, [pc, 0xdc]        |     
    0x00009798 mov r0, r4                |     r0 = r4;
    0x0000979a add r1, pc                |     r1 = 0x13014;
    0x0000979c blx 0x1fe4                |     fcn_00001fe4 ();
    0x000097a0 lsls r1, r5, 1            |     r1 = r5 << 1;
    0x000097a2 mov r3, r0                |     r3 = r0;
    0x000097a4 add r0, r4                |     r0 += r4;
    0x000097a6 bmi 0x981a                |     
                                         |     while ((r2 & 0xfd) != 0) {
    0x000097a8 lsls r2, r5, 2            |         r2 = r5 << 2;
                                         |         if (r2 < r5) {
    0x000097aa bpl 0x97b2                |             
    0x000097ac ldrb r3, [r4, r3]         |             r3 = *((r4 + r3));
    0x000097ae cmp r3, 0x30              |             
                                         |             if (r3 == 0x30) {
    0x000097b0 beq 0x982a                |                 goto label_5;
                                         |             }
                                         |         }
                                         | label_1:
    0x000097b2 add r1, sp, 4             |         r1 += var_4h_3;
    0x000097b4 bl 0x9364                 |         r0 = fcn_00009364 (r0, r1);
    0x000097b8 mov r5, r0                |         r5 = r0;
    0x000097ba blx 0x1de8                |         sprintf_chk ()
    0x000097be ldr r2, [sp, 4]           |         r2 = var_4h_3;
    0x000097c0 movs r3, 0                |         r3 = 0;
    0x000097c2 str r3, [r0]              |         *(r0) = r3;
    0x000097c4 mov r4, r0                |         r4 = r0;
    0x000097c6 add r1, sp, 8             |         r1 += var_8h_2;
    0x000097c8 mov r0, r5                |         r0 = r5;
    0x000097ca bic r2, r2, 0x70000000    |         r2 = BIT_MASK (r2, 0x70000000);
    0x000097ce blx 0x1e48                |         printf_chk ();
    0x000097d2 ldr r3, [r4]              |         r3 = *(r4);
    0x000097d4 mov r2, r0                |         r2 = r0;
    0x000097d6 cmp r3, 0                 |         
    0x000097d8 it gt                     |         
                                         |         if (r3 > 0) {
    0x000097da rsbgt r0, r3, 0           |             __asm ("rsbgt r0, r3, 0");
                                         |         }
                                         |         if (r3 <= 0) {
    0x000097dc bgt 0x9802                |             
    0x000097de ldr r3, [sp, 8]           |             r3 = var_8h_2;
    0x000097e0 cmp r3, 0                 |             
    0x000097e2 it ne                     |             
                                         |             if (r3 != 0) {
    0x000097e4 cmpne r3, r5              |                 __asm ("cmpne r3, r5");
                                         |             }
                                         |             if (r3 == 0) {
    0x000097e6 beq 0x9824                |                 goto label_2;
                                         |             }
    0x000097e8 ldrb r3, [r3]             |             r3 = *(r3);
                                         |             if (r3 != 0) {
    0x000097ea cbnz r3, 0x9824           |                 goto label_2;
                                         |             }
    0x000097ec orrs.w r3, r2, r1         |             r3 = r2 | r1;
                                         |             if (r3 != r2) {
    0x000097f0 beq 0x97f8                |                 
    0x000097f2 ldrb r3, [r5]             |                 r3 = *(r5);
    0x000097f4 cmp r3, 0x2d              |                 
                                         |                 if (r3 == 0x2d) {
    0x000097f6 beq 0x985e                |                     goto label_6;
                                         |                 }
                                         |             }
    0x000097f8 mov r0, r6                |             r0 = r6;
                                         |             if (r6 == 0) {
    0x000097fa cbz r6, 0x9802            |                 goto label_0;
                                         |             }
    0x000097fc movs r0, 0                |             r0 = 0;
    0x000097fe strd r2, r1, [r6]         |             __asm ("strd r2, r1, [r6]");
                                         |         }
                                         | label_0:
    0x00009802 ldr r2, [pc, 0x74]        |         
    0x00009804 ldr r3, [pc, 0x64]        |         r3 = *(0x986c);
    0x00009806 add r2, pc                |         r2 = 0x13084;
    0x00009808 ldr r3, [r2, r3]          |         r3 = *(0x13084);
    0x0000980a ldr r2, [r3]              |         r2 = *(0x13084);
    0x0000980c ldr r3, [sp, 0xc]         |         r3 = var_ch_3;
    0x0000980e eors r2, r3               |         r2 ^= r3;
    0x00009810 mov.w r3, 0               |         r3 = 0;
    0x00009812 lsls r0, r0, 0xc          |         r0 <<= 0xc;
                                         |         if (r0 != r0) {
    0x00009814 bne 0x9864                |             goto label_7;
                                         |         }
    0x00009816 add sp, 0x10              |         
    0x00009818 pop {r4, r5, r6, pc}      |         
    0x0000981a ldrb r2, [r4, r3]         |         r2 = *((r4 + r3));
    0x0000981c subs r2, 0x2b             |         r2 -= 0x2b;
    0x0000981e tst.w r2, 0xfd            |         
    0x00009822 bne 0x97a8                |         
                                         |     }
                                         | label_2:
    0x00009824 mvn r0, 0x15              |     r0 = ~0x15;
    0x00009828 b 0x9802                  |     goto label_0;
                                         | label_5:
    0x0000982a ldrb r3, [r0, 1]          |     r3 = *((r0 + 1));
    0x0000982c cmp r3, 0                 |     
                                         |     if (r3 == 0) {
    0x0000982e beq 0x97b2                |         goto label_1;
                                         |     }
    0x00009830 b 0x9824                  |     goto label_2;
                                         | label_3:
    0x00009832 ldr r1, [pc, 0x48]        |     
    0x00009834 movw r2, 0x1a7            |     r2 = 0x1a7;
    0x00009838 ldr r3, [pc, 0x44]        |     
    0x0000983a ldr r0, [pc, 0x48]        |     
    0x0000983c add r1, pc                |     r1 = 0x130be;
    0x0000983e add r3, pc                |     r3 = 0x130c2;
    0x00009840 adds r1, 7                |     r1 += 7;
    0x00009842 add r0, pc                |     r0 = 0x130cc;
    0x00009844 bl 0x8500                 |     fcn_00008500 (r0, r1, r2, r3, r4);
                                         | label_4:
    0x00009848 ldr r1, [pc, 0x3c]        |     
    0x0000984a mov.w r2, 0x1a8           |     r2 = 0x1a8;
    0x0000984e ldr r3, [pc, 0x3c]        |     
    0x00009850 ldr r0, [pc, 0x3c]        |     
    0x00009852 add r1, pc                |     r1 = 0x130de;
    0x00009854 add r3, pc                |     r3 = 0x130e6;
    0x00009856 adds r1, 7                |     r1 += 7;
    0x00009858 add r0, pc                |     r0 = 0x130ec;
    0x0000985a bl 0x8500                 |     fcn_00008500 (r0, r1, r2, r3, r4);
                                         | label_6:
    0x0000985e mvn r0, 0x21              |     r0 = ~0x21;
    0x00009862 b 0x9802                  |     goto label_0;
                                         | label_7:
    0x00009864 blx 0x1bfc                |     parse_printf_format ();
    0x00009868 strh r2, [r1, 0x34]       |     *((r1 + 0x34)) = r2;
    0x0000986a movs r1, r0               |     r1 = r0;
    0x0000986c lsls r4, r2, 7            |     r4 = r2 << 7;
    0x0000986e movs r0, r0               |     
    0x00009870 strh r0, [r2, r2]         |     *((r2 + r2)) = r0;
    0x00009872 movs r0, r0               |     
    0x00009874 strh r2, [r0, r2]         |     *((r0 + r2)) = r2;
    0x00009876 movs r0, r0               |     
    0x00009878 strh r2, [r5, 0x2e]       |     *((r5 + 0x2e)) = r2;
    0x0000987a movs r1, r0               |     r1 = r0;
    0x0000987c str r0, [r0, 0x30]        |     *((r0 + 0x30)) = r0;
    0x0000987e movs r0, r0               |     
    0x00009880 str r2, [r7, 0x38]        |     *((r7 + 0x38)) = r2;
    0x00009882 movs r0, r0               |     
    0x00009884 str r2, [r5]              |     *(r5) = r2;
    0x00009886 movs r0, r0               |     
    0x00009888 str r2, [r5, 0x2c]        |     *((r5 + 0x2c)) = r2;
    0x0000988a movs r0, r0               |     
    0x0000988c str r4, [r4, 0x38]        |     *((r4 + 0x38)) = r4;
    0x0000988e movs r0, r0               |     
    0x00009890 str r0, [r5, 0x30]        |     *((r5 + 0x30)) = r0;
    0x00009892 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/cdrom_id @ 0x9bd4 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.00009bd4 ()                  | void fcn_00009bd4 (int16_t arg1, int16_t arg2) {
                                             |     char * str;
                                             |     int16_t var_84h;
                                             |     r0 = arg1;
                                             |     r1 = arg2;
    0x00009bd4 blmi 0x9dc474                 |     __asm ("blmi 0x9dc474");
    0x00009bd8 push {r4, r5, lr}             |     
    0x00009bda subs r5, r0, 0                |     r5 = r0 - 0;
    0x00009bdc add r2, pc                    |     r2 += pc;
    0x00009bde sub sp, 0x8c                  |     
    0x00009be0 ldr r3, [r2, r3]              |     r3 = *((r2 + r3));
    0x00009be2 ldr r3, [r3]                  |     r3 = *(r3);
    0x00009be4 str r3, [sp, 0x84]            |     var_84h = r3;
    0x00009be6 mov.w r3, 0                   |     r3 = 0;
                                             |     if (r5 <= r0) {
    0x00009bea ble 0x9c38                    |         goto label_2;
                                             |     }
    0x00009bec mov r4, r1                    |     r4 = r1;
                                             |     if (r1 == 0) {
    0x00009bee cbz r1, 0x9c34                |         goto label_3;
                                             |     }
                                             |     do {
                                             | label_0:
    0x00009bf0 movs r2, 0x80                 |         r2 = 0x80;
    0x00009bf2 movs r1, 0                    |         r1 = 0;
    0x00009bf4 mov r0, r4                    |         r0 = r4;
    0x00009bf6 blx 0x1e30                    |         strtoull (r0, r1, r2);
    0x00009bfa movs r3, 4                    |         r3 = 4;
    0x00009bfc mov r2, r4                    |         r2 = r4;
    0x00009bfe mov r1, r5                    |         r1 = r5;
    0x00009c00 movs r0, 1                    |         r0 = 1;
    0x00009c02 blx 0x1d88                    |         r0 = strlen (r0);
    0x00009c06 cmp r0, 0                     |         
                                             |         if (r0 >= 0) {
    0x00009c08 bge 0x9c4e                    |             goto label_4;
                                             |         }
    0x00009c0a blx 0x1de8                    |         r0 = sprintf_chk ()
    0x00009c0e ldr r0, [r0]                  |         r0 = *(r0);
    0x00009c10 cmp r0, 4                     |         
    0x00009c12 beq 0x9bf0                    |         
                                             |     } while (r0 == 4);
    0x00009c14 cmp r0, 0                     |     
    0x00009c16 it gt                         |     
                                             |     if (r0 > 0) {
    0x00009c18 rsbgt r0, r0, 0               |         __asm ("rsbgt r0, r0, 0");
                                             |     }
                                             |     if (r0 <= 0) {
    0x00009c1a ble 0x9c52                    |         goto label_5;
                                             |     }
                                             |     do {
                                             | label_1:
    0x00009c1c ldr r2, [pc, 0x58]            |         
    0x00009c1e ldr r3, [pc, 0x54]            |         r3 = *(0x9c76);
    0x00009c20 add r2, pc                    |         r2 = 0x1389c;
    0x00009c22 ldr r3, [r2, r3]              |         r3 = *(0x1389c);
    0x00009c24 ldr r2, [r3]                  |         r2 = *(0x1389c);
    0x00009c26 ldr r3, [sp, 0x84]            |         r3 = var_84h;
    0x00009c28 eors r2, r3                   |         r2 ^= r3;
    0x00009c2a mov.w r3, 0                   |         r3 = 0;
                                             |         if (r2 != r3) {
    0x00009c2e bne 0x9c6c                    |             goto label_6;
                                             |         }
    0x00009c30 add sp, 0x8c                  |         
    0x00009c32 pop {r4, r5, pc}              |         
                                             | label_3:
    0x00009c34 add r4, sp, 4                 |         r4 += str;
    0x00009c36 b 0x9bf0                      |         goto label_0;
                                             | label_2:
    0x00009c38 ldr r1, [pc, 0x40]            |         
    0x00009c3a mov.w r2, 0x2d0               |         r2 = 0x2d0;
    0x00009c3e ldr r3, [pc, 0x40]            |         
    0x00009c40 ldr r0, [pc, 0x40]            |         
    0x00009c42 add r1, pc                    |         r1 = 0x138c2;
    0x00009c44 add r3, pc                    |         r3 = 0x138ca;
    0x00009c46 adds r1, 7                    |         r1 += 7;
    0x00009c48 add r0, pc                    |         r0 = 0x138d0;
    0x00009c4a bl 0x8500                     |         fcn_00008500 (r0, r1, r2, r3, r4);
                                             | label_4:
    0x00009c4e movs r0, 0                    |         r0 = 0;
    0x00009c50 b 0x9c1c                      |         
                                             |     } while (1);
                                             | label_5:
    0x00009c52 ldr r1, [pc, 0x34]            |     
    0x00009c54 movs r2, 0x1e                 |     r2 = 0x1e;
    0x00009c56 ldr r3, [pc, 0x34]            |     
    0x00009c58 ldr r0, [pc, 0x34]            |     
    0x00009c5a add r1, pc                    |     r1 = 0x138e8;
    0x00009c5c add r3, pc                    |     r3 = 0x138ee;
    0x00009c5e adds r1, 7                    |     r1 += 7;
    0x00009c60 add r0, pc                    |     r0 = 0x138f4;
    0x00009c62 bl 0x87bc                     |     fcn_000087bc (r0, r1, r2, r3);
    0x00009c66 mvn r0, 0x15                  |     r0 = ~0x15;
    0x00009c6a b 0x9c1c                      |     goto label_1;
                                             | label_6:
    0x00009c6c blx 0x1bfc                    |     parse_printf_format ();
    0x00009c70 strh r4, [r2, 0x10]           |     *((r2 + 0x10)) = r4;
    0x00009c72 movs r1, r0                   |     r1 = r0;
    0x00009c74 lsls r4, r2, 7                |     r4 = r2 << 7;
    0x00009c76 movs r0, r0                   |     
    0x00009c78 strh r0, [r2, 0xe]            |     *((r2 + 0xe)) = r0;
    0x00009c7a movs r1, r0                   |     r1 = r0;
    0x00009c7c str r2, [r6, 8]               |     *((r6 + 8)) = r2;
    0x00009c7e movs r0, r0                   |     
    0x00009c80 str r4, [r4, 0x18]            |     *((r4 + 0x18)) = r4;
    0x00009c82 movs r0, r0                   |     
    0x00009c84 str r4, [r1, 0x10]            |     *((r1 + 0x10)) = r4;
    0x00009c86 movs r0, r0                   |     
    0x00009c88 str r6, [r0, 0x10]            |     *((r0 + 0x10)) = r6;
    0x00009c8a movs r0, r0                   |     
    0x00009c8c str r4, [r7, 0x14]            |     *((r7 + 0x14)) = r4;
    0x00009c8e movs r0, r0                   |     
    0x00009c90 str r0, [r4, 0x10]            |     *((r4 + 0x10)) = r0;
    0x00009c92 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/cdrom_id @ 0x9c94 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.00009c94 ()                  | void fcn_00009c94 (int16_t arg1, int16_t arg2) {
                                             |     r0 = arg1;
                                             |     r1 = arg2;
    0x00009c94 invalid                       |     
    0x00009c98 mov r4, r1                    |     r4 = r1;
    0x00009c9a blx 0x1d54                    |     r0 = fcn_00001d54 ();
    0x00009c9e cmp r0, 0                     |     
    0x00009ca0 it ge                         |     
                                             |     if (r0 < 0) {
    0x00009ca2 movge r6, 0                   |         r6 = 0;
                                             |     }
    0x00009ca4 blt 0x9cbe                    |     
                                             |     while (r3 <= 0) {
    0x00009ca6 cmp r4, 9                     |         
                                             |         if (r4 != 9) {
    0x00009ca8 beq 0x9cae                    |             
    0x00009caa cmp r4, 0x12                  |             
                                             |             if (r4 != 0x12) {
    0x00009cac bne 0x9cb2                    |                 goto label_0;
                                             |             }
                                             |         }
    0x00009cae mov r0, r6                    |         r0 = r6;
    0x00009cb0 pop {r4, r5, r6, pc}          |         
                                             | label_0:
    0x00009cb2 movs r1, 0x12                 |         r1 = 0x12;
    0x00009cb4 mov r0, r5                    |         r0 = r5;
    0x00009cb6 blx 0x1d54                    |         fcn_00001d54 ();
    0x00009cba mov r0, r6                    |         r0 = r6;
    0x00009cbc pop {r4, r5, r6, pc}          |         
    0x00009cbe blx 0x1de8                    |         r0 = sprintf_chk ()
    0x00009cc2 ldr r3, [r0]                  |         r3 = *(r0);
    0x00009cc4 cmp r3, 0                     |         
    0x00009cc6 rsb.w r6, r3, 0               |         r6 = r3 - ;
    0x00009cca ble 0x9ca6                    |         
                                             |     }
    0x00009ccc mov r0, r6                    |     r0 = r6;
    0x00009cce 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/cdrom_id @ 0x9d60 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.00009d60 ()                  | void fcn_00009d60 (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;
    0x00009d60 push {r4, r5, r6, r7, lr}     |     
    0x00009d62 mov r4, r1                    |     r4 = r1;
    0x00009d64 ldr r1, [pc, 0xec]            |     
    0x00009d66 sub sp, 0x14                  |     
    0x00009d68 movs r3, 0                    |     r3 = 0;
    0x00009d6a ldr r2, [pc, 0xec]            |     r2 = *(0x9e5a);
    0x00009d6c add r7, sp, 8                 |     r7 += var_8h;
    0x00009d6e add r1, pc                    |     r1 = 0x13bc6;
    0x00009d70 ldr r2, [r1, r2]              |     
    0x00009d72 ldr r2, [r2]                  |     r2 = *(0x13bc6);
    0x00009d74 str r2, [r7, 4]               |     var_4h = r2;
    0x00009d76 mov.w r2, 0                   |     r2 = 0;
    0x00009d7a str r3, [r7]                  |     *(r7) = r3;
    0x00009d7c cmp r4, 0                     |     
                                             |     if (r4 == 0) {
    0x00009d7e beq 0x9e1c                    |         goto label_2;
                                             |     }
    0x00009d80 cmp r0, 0                     |     
    0x00009d82 mov r5, r0                    |     r5 = r0;
                                             |     if (r0 < 0) {
    0x00009d84 blt 0x9e30                    |         goto label_3;
                                             |     }
    0x00009d86 bne 0x9ddc                    |     
                                             |     while (r0 == r5) {
    0x00009d88 movs r1, 1                    |         r1 = 1;
    0x00009d8a movs r0, 0x11                 |         r0 = 0x11;
    0x00009d8c blx 0x1ac8                    |         r0 = fcn_00001ac8 ();
    0x00009d90 mov r1, r0                    |         r1 = r0;
    0x00009d92 str r0, [r7]                  |         *(r7) = r0;
    0x00009d94 cmp r0, 0                     |         
                                             |         if (r0 == 0) {
    0x00009d96 beq 0x9e4a                    |             goto label_4;
                                             |         }
    0x00009d98 movs r0, 0x10                 |         r0 = 0x10;
    0x00009d9a blx 0x1e70                    |         r0 = fcn_00001e70 ();
    0x00009d9e cmp r0, 0                     |         
                                             |         if (r0 < 0) {
    0x00009da0 blt 0x9e12                    |             goto label_5;
                                             |         }
                                             | label_0:
    0x00009da2 movs r0, 0x80                 |         r0 = 0x80;
    0x00009da4 blx 0x1d24                    |         fcn_00001d24 ();
    0x00009da8 ldr r2, [r7]                  |         r2 = *(r7);
    0x00009daa mov r5, r0                    |         r5 = r0;
    0x00009dac cmp r0, 0                     |         
                                             |         if (r0 == 0) {
    0x00009dae beq 0x9e4a                    |             goto label_4;
                                             |         }
    0x00009db0 movs r6, 0                    |         r6 = 0;
    0x00009db2 movs r1, 0x80                 |         r1 = 0x80;
    0x00009db4 bl 0xb200                     |         fcn_0000b200 (r0, r1, r2);
    0x00009db8 str r5, [r4]                  |         *(r4) = r5;
                                             | label_1:
    0x00009dba ldr r0, [r7]                  |         r0 = *(r7);
    0x00009dbc blx 0x1b80                    |         fcn_00001b80 ();
    0x00009dc0 ldr r2, [pc, 0x98]            |         
    0x00009dc2 ldr r3, [pc, 0x94]            |         r3 = *(0x9e5a);
    0x00009dc4 add r2, pc                    |         r2 = 0x13c24;
    0x00009dc6 ldr r3, [r2, r3]              |         r3 = *(0x13c24);
    0x00009dc8 ldr r2, [r3]                  |         r2 = *(0x13c24);
    0x00009dca ldr r3, [r7, 4]               |         r3 = var_4h;
    0x00009dcc eors r2, r3                   |         r2 ^= r3;
    0x00009dce mov.w r3, 0                   |         r3 = 0;
                                             |         if (r2 != r3) {
    0x00009dd2 bne 0x9e50                    |             goto label_6;
                                             |         }
    0x00009dd4 mov r0, r6                    |         r0 = r6;
    0x00009dd6 adds r7, 0xc                  |         r7 += 0xc;
    0x00009dd8 mov sp, r7                    |         
    0x00009dda pop {r4, r5, r6, r7, pc}      |         
    0x00009ddc bl 0x9cd0                     |         r0 = fcn_00009cd0 (r0);
    0x00009de0 cmp r0, r5                    |         
    0x00009de2 beq 0x9d88                    |         
                                             |     }
    0x00009de4 ldr r1, [pc, 0x78]            |     
    0x00009de6 sub sp, 0x18                  |     
    0x00009de8 ldr r3, [pc, 0x78]            |     
    0x00009dea add r6, sp, 8                 |     r6 += socket;
    0x00009dec movs r2, 0x18                 |     r2 = 0x18;
    0x00009dee mov r0, r6                    |     r0 = r6;
    0x00009df0 add r1, pc                    |     r1 = 0x13c54;
    0x00009df2 add r3, pc                    |     r3 = 0x13c5a;
    0x00009df4 strd r5, r1, [sp]             |     __asm ("strd r5, r1, [sp]");
    0x00009df8 movs r1, 1                    |     r1 = 1;
    0x00009dfa blx 0x1e00                    |     bind (r0, r1, r2);
    0x00009dfe mov r0, r6                    |     r0 = r6;
    0x00009e00 mov r1, r7                    |     r1 = r7;
    0x00009e02 bl 0x6348                     |     fcn_00006348 (r0, r1);
    0x00009e06 adds r3, r0, 2                |     r3 += var_2h;
    0x00009e08 mov r6, r0                    |     r6 = r0;
                                             |     if (r3 == var_2h) {
    0x00009e0a beq 0x9e44                    |         goto label_7;
                                             |     }
    0x00009e0c cmp r0, 0                     |     
                                             |     if (r0 >= 0) {
    0x00009e0e bge 0x9da2                    |         goto label_0;
                                             |     }
    0x00009e10 b 0x9dba                      |     goto label_1;
                                             | label_5:
    0x00009e12 blx 0x1de8                    |     r0 = sprintf_chk ()
    0x00009e16 ldr r6, [r0]                  |     r6 = *(r0);
    0x00009e18 rsbs r6, r6, 0                |     r6 -= ;
    0x00009e1a b 0x9dba                      |     goto label_1;
                                             | label_2:
    0x00009e1c ldr r1, [pc, 0x48]            |     
    0x00009e1e movs r2, 0x5c                 |     r2 = 0x5c;
    0x00009e20 ldr r3, [pc, 0x48]            |     
    0x00009e22 ldr r0, [pc, 0x4c]            |     
    0x00009e24 add r1, pc                    |     r1 = 0x13c90;
    0x00009e26 add r3, pc                    |     r3 = 0x13c96;
    0x00009e28 adds r1, 7                    |     r1 += 7;
    0x00009e2a add r0, pc                    |     r0 = 0x13ca0;
    0x00009e2c bl 0x8500                     |     fcn_00008500 (r0, r1, r2, r3, r4);
                                             | label_3:
    0x00009e30 ldr r1, [pc, 0x40]            |     
    0x00009e32 movs r2, 0x5d                 |     r2 = 0x5d;
    0x00009e34 ldr r3, [pc, 0x40]            |     
    0x00009e36 ldr r0, [pc, 0x44]            |     
    0x00009e38 add r1, pc                    |     r1 = 0x13cb0;
    0x00009e3a add r3, pc                    |     r3 = 0x13cb6;
    0x00009e3c adds r1, 7                    |     r1 += 7;
    0x00009e3e add r0, pc                    |     r0 = 0x13cc0;
    0x00009e40 bl 0x8500                     |     fcn_00008500 (r0, r1, r2, r3, r4);
                                             | label_7:
    0x00009e44 mvn r6, 2                     |     r6 = ~2;
    0x00009e48 b 0x9dba                      |     goto label_1;
                                             | label_4:
    0x00009e4a mvn r6, 0xb                   |     r6 = ~0xb;
    0x00009e4e b 0x9dba                      |     goto label_1;
                                             | label_6:
    0x00009e50 blx 0x1bfc                    |     parse_printf_format ();
    0x00009e54 strh r2, [r0, 4]              |     *((r0 + 4)) = r2;
    0x00009e56 movs r1, r0                   |     r1 = r0;
    0x00009e58 lsls r4, r2, 7                |     r4 = r2 << 7;
    0x00009e5a movs r0, r0                   |     
    0x00009e5c strh r4, [r5]                 |     *(r5) = r4;
    0x00009e5e movs r1, r0                   |     r1 = r0;
    0x00009e60 ldrsh r4, [r3, r6]            |     r4 = *((r3 + r6));
    0x00009e62 movs r0, r0                   |     
    0x00009e64 ldrsh r2, [r6, r4]            |     r2 = *((r6 + r4));
    0x00009e66 movs r0, r0                   |     
    0x00009e68 ldrsh r0, [r2, r3]            |     r0 = *((r2 + r3));
    0x00009e6a movs r0, r0                   |     
    0x00009e6c ldrsh r2, [r5, r7]            |     r2 = *((r5 + r7));
    0x00009e6e movs r0, r0                   |     
    0x00009e70 ldr r4, [pc, 0x118]           |     r4 = *(0x9f8c);
    0x00009e72 movs r0, r0                   |     
    0x00009e74 ldrsh r4, [r7, r2]            |     r4 = *((r7 + r2));
    0x00009e76 movs r0, r0                   |     
    0x00009e78 ldrsh r6, [r2, r7]            |     r6 = *((r2 + r7));
    0x00009e7a movs r0, r0                   |     
    0x00009e7c ldrsh r2, [r7, r3]            |     r2 = *((r7 + r3));
    0x00009e7e 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/cdrom_id @ 0xa46c */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.0000a46c ()                                      | void fcn_0000a46c (int16_t arg1, uint32_t arg2, int16_t arg3) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
    0x0000a46c svcmi 0xf0e92d                                    |     __asm ("svcmi aav.0x000000ff");
    0x0000a470 mov r8, r2                                        |     r8 = r2;
    0x0000a472 ldr r2, [pc, 0x1c0]                               |     
    0x0000a474 sub sp, 0xc                                       |     
    0x0000a476 ldr r3, [pc, 0x1c0]                               |     r3 = *(0xa63a);
    0x0000a478 add r2, pc                                        |     r2 = 0x14ab2;
    0x0000a47a ldr r3, [r2, r3]                                  |     
    0x0000a47c ldr r3, [r3]                                      |     r3 = *(0x14ab2);
    0x0000a47e str r3, [sp, 4]                                   |     var_4h = r3;
    0x0000a480 mov.w r3, 0                                       |     r3 = 0;
    0x0000a484 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x0000a486 beq 0xa540                                        |         goto label_4;
                                                                 |     }
    0x0000a488 ands r5, r8, 8                                    |     r5 = r8 & 8;
    0x0000a48c mov r6, r0                                        |     r6 = r0;
    0x0000a48e mov r4, r1                                        |     r4 = r1;
                                                                 |     if (r5 == r8) {
    0x0000a490 bne 0xa504                                        |         
                                                                 | label_0:
    0x0000a492 ldr r3, [pc, 0x1a8]                               |         
    0x0000a494 add r3, pc                                        |         
    0x0000a496 ldr r3, [r3]                                      |         r3 = *(0x14ad6);
                                                                 |         if (r3 != 0) {
    0x0000a498 cbz r3, 0xa4e2                                    |             
    0x0000a49a ldr.w sb, [pc, 0x1a4]                             |             sb = *(0x0000a640);
    0x0000a49e lsr.w sl, r8, 2                                   |             sl = r8 >> 2;
    0x0000a4a0 lsrs r0, r3, 0xa                                  |             r0 = r3 >> 0xa;
    0x0000a4a2 and fp, r8, 2                                     |             
    0x0000a4a6 movs r7, 1                                        |             r7 = 1;
    0x0000a4a8 add sb, pc                                        |             sb += pc;
                                                                 | label_1:
    0x0000a4aa and r2, sl, 4                                     |             r2 = sl & 4;
    0x0000a4ae mov r1, r4                                        |             r1 = r4;
    0x0000a4b0 cmp.w fp, 0                                       |             
    0x0000a4b2 lsrs r0, r0, 0x1c                                 |             r0 >>= 0x1c;
    0x0000a4b4 it eq                                             |             
                                                                 |             if (r0 != r0) {
    0x0000a4b6 orreq r2, r2, 1                                   |                 r2 |= 1;
                                                                 |             }
    0x0000a4ba mov r0, r6                                        |             r0 = r6;
    0x0000a4bc blx 0x1f6c                                        |             r0 = fcn_00001f6c ();
    0x0000a4c0 cmp r0, 0                                         |             
                                                                 |             if (r0 <= 0) {
    0x0000a4c2 ble 0xa568                                        |                 goto label_5;
                                                                 |             }
    0x0000a4c4 cmp r4, r0                                        |             
    0x0000a4c6 str.w r7, [sb]                                    |             __asm ("str.w r7, [sb]");
                                                                 |             if (r4 == r0) {
    0x0000a4ca beq 0xa540                                        |                 goto label_4;
                                                                 |             }
    0x0000a4cc cmp r0, r4                                        |             
                                                                 |             if (r0 >= r4) {
    0x0000a4ce bhs 0xa5c6                                        |                 goto label_6;
                                                                 |             }
    0x0000a4d0 tst.w r8, 1                                       |             
    0x0000a4d4 add r6, r0                                        |             r6 += r0;
    0x0000a4d6 sub.w r4, r4, r0                                  |             r4 -= r0;
                                                                 |             if ((r8 & 1) != 0) {
    0x0000a4da bne 0xa5da                                        |                 goto label_7;
                                                                 |             }
    0x0000a4dc cmp.w fp, 0                                       |             
                                                                 |             if (fp != 0) {
    0x0000a4e0 bne 0xa5ae                                        |                 goto label_8;
                                                                 |             }
                                                                 |         }
                                                                 | label_2:
    0x0000a4e2 ldr r0, [pc, 0x160]                               |         
    0x0000a4e4 mov.w r1, 0x100                                   |         
    0x0000a4e8 movt r1, 8                                        |         r1 = 0x80100;
    0x0000a4ea lsls r0, r1, 4                                    |         r0 = r1 << 4;
    0x0000a4ec add r0, pc                                        |         r0 = 0x14b36;
    0x0000a4ee blx 0x1cf4                                        |         r0 = fcn_00001cf4 ();
    0x0000a4f2 subs r5, r0, 0                                    |         r5 = r0 - 0;
                                                                 |         if (r5 < r0) {
    0x0000a4f4 blt 0xa5b2                                        |             goto label_9;
                                                                 |         }
    0x0000a4f6 mov r2, r4                                        |         r2 = r4;
    0x0000a4f8 movs r3, 1                                        |         r3 = 1;
    0x0000a4fa mov r1, r6                                        |         r1 = r6;
    0x0000a4fc bl 0x7270                                         |         r0 = fcn_00007270 (r0, r1, r2, r3);
    0x0000a500 mov r4, r0                                        |         r4 = r0;
    0x0000a502 b 0xa546                                          |         goto label_3;
                                                                 |     }
    0x0000a504 movs r5, 0                                        |     r5 = 0;
    0x0000a506 mov r7, sp                                        |     r7 = sp;
    0x0000a508 b 0xa524                                          |     
                                                                 |     while (r0 >= 0) {
    0x0000a50a cmp r4, 4                                         |         
    0x0000a50c mov r5, r4                                        |         r5 = r4;
    0x0000a50e it hs                                             |         
                                                                 |         if (r4 < 4) {
    0x0000a510 movhs r5, 4                                       |             r5 = 4;
                                                                 |         }
    0x0000a512 mov r0, r6                                        |         r0 = r6;
    0x0000a514 mov r2, r5                                        |         r2 = r5;
    0x0000a516 mov r1, r7                                        |         r1 = r7;
    0x0000a518 blx 0x1bc8                                        |         fcn_00001bc8 ();
    0x0000a51a adcs.w fp, r6, r4, asr 5                          |         __asm ("adcs.w fp, r6, r4, asr 5");
    0x0000a51e add r6, r5                                        |         r6 += r5;
                                                                 |         if (r4 == 4) {
    0x0000a520 beq 0xa540                                        |             goto label_4;
                                                                 |         }
    0x0000a522 movs r5, 1                                        |         r5 = 1;
    0x0000a524 mov r0, r7                                        |         r0 = r7;
    0x0000a526 bl 0xa36c                                         |         r0 = fcn_0000a36c ();
    0x0000a52a cmp r0, 0                                         |         
    0x0000a52c bge 0xa50a                                        |         
                                                                 |     }
    0x0000a52e cmp r5, 0                                         |     
                                                                 |     if (r5 == 0) {
    0x0000a530 beq 0xa492                                        |         goto label_0;
                                                                 |     }
    0x0000a532 tst.w r8, 1                                       |     
                                                                 |     if ((r8 & 1) == 0) {
    0x0000a536 beq 0xa492                                        |         goto label_0;
                                                                 |     }
    0x0000a538 mov r1, r4                                        |     r1 = r4;
    0x0000a53a mov r0, r6                                        |     r0 = r6;
    0x0000a53c bl 0xa430                                         |     fcn_0000a430 (r0, r1);
    0x0000a53e invalid                                           |     
                                                                 | label_4:
    0x0000a540 mov.w r5, -1                                      |     r5 = -1;
    0x0000a544 movs r4, 0                                        |     r4 = 0;
                                                                 | label_3:
    0x0000a546 mov r0, r5                                        |     r0 = r5;
    0x0000a548 bl 0x5a98                                         |     fcn_00005a98 (r0, r1, r2, r3, r4);
    0x0000a54c ldr r2, [pc, 0xf8]                                |     
    0x0000a54e ldr r3, [pc, 0xe8]                                |     r3 = *(0xa63a);
    0x0000a550 add r2, pc                                        |     r2 = 0x14b9c;
    0x0000a552 ldr r3, [r2, r3]                                  |     r3 = *(0x14b9c);
    0x0000a554 ldr r2, [r3]                                      |     r2 = *(0x14b9c);
    0x0000a556 ldr r3, [sp, 4]                                   |     r3 = var_4h;
    0x0000a558 eors r2, r3                                       |     r2 ^= r3;
    0x0000a55a mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x0000a55e bne 0xa630                                        |         goto label_10;
                                                                 |     }
    0x0000a560 mov r0, r4                                        |     r0 = r4;
    0x0000a562 add sp, 0xc                                       |     
    0x0000a564 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 |     if (r2 == r3) {
                                                                 | label_5:
    0x0000a568 beq 0xa5ea                                        |         goto label_11;
                                                                 |     }
    0x0000a56a blx 0x1de8                                        |     r0 = sprintf_chk ()
    0x0000a56e ldr r3, [r0]                                      |     r3 = *(r0);
    0x0000a570 eor.w r2, r3, r3, asr 31                          |     r2 = r3 ^ (r3 >> 31);
    0x0000a574 sub.w r2, r2, r3, asr 31                          |     r2 -= (r3 >> 31);
    0x0000a578 cmp r2, 0x26                                      |     
                                                                 |     if (r2 == 0x26) {
    0x0000a57a beq 0xa5a4                                        |         goto label_12;
                                                                 |     }
                                                                 |     if (r2 > 0x26) {
    0x0000a57c bgt 0xa59e                                        |         goto label_13;
                                                                 |     }
    0x0000a57e cmp r2, 0x19                                      |     
                                                                 |     if (r2 == 0x19) {
    0x0000a580 beq 0xa5a4                                        |         goto label_12;
                                                                 |     }
                                                                 |     do {
    0x0000a582 cmp r3, 0xb                                       |         
                                                                 |         if (r3 == 0xb) {
    0x0000a584 beq 0xa606                                        |             goto label_14;
                                                                 |         }
    0x0000a586 cmp r3, 0x16                                      |         
                                                                 |         if (r3 != 0x16) {
    0x0000a588 bne 0xa628                                        |             goto label_15;
                                                                 |         }
    0x0000a58a tst.w r8, 0x10                                    |         
                                                                 |         if ((r8 & 0x10) == 0) {
    0x0000a58e beq 0xa5fc                                        |             goto label_16;
                                                                 |         }
    0x0000a590 bic r8, r8, 0x10                                  |         r8 = BIT_MASK (r8, 0x10);
    0x0000a594 lsr.w sl, r8, 2                                   |         sl = r8 >> 2;
    0x0000a598 and fp, r8, 2                                     |         
    0x0000a59c b 0xa4aa                                          |         goto label_1;
                                                                 | label_13:
    0x0000a59e subs r2, 0x5d                                     |         r2 -= 0x5d;
    0x0000a5a0 cmp r2, 4                                         |         
    0x0000a5a2 bhi 0xa582                                        |         
                                                                 |     } while (r2 > 4);
                                                                 | label_12:
    0x0000a5a4 ldr r3, [pc, 0xa4]                                |     
    0x0000a5a6 movs r2, 0                                        |     r2 = 0;
    0x0000a5a8 add r3, pc                                        |     r3 = 0x14bf8;
    0x0000a5aa str r2, [r3]                                      |     *(r3) = r2;
    0x0000a5ac b 0xa4e2                                          |     goto label_2;
                                                                 | label_8:
    0x0000a5ae movs r5, 1                                        |     r5 = 1;
    0x0000a5b0 b 0xa4aa                                          |     goto label_1;
                                                                 | label_9:
    0x0000a5b2 blx 0x1de8                                        |     r0 = sprintf_chk ()
    0x0000a5b6 ldr r4, [r0]                                      |     r4 = *(r0);
    0x0000a5b8 cmp r4, 2                                         |     
    0x0000a5ba it ne                                             |     
                                                                 |     if (r4 == 2) {
    0x0000a5bc rsbne r4, r4, 0                                   |         __asm ("rsbne r4, r4, 0");
                                                                 |         goto label_17;
                                                                 |     }
                                                                 |     if (r4 != 2) {
                                                                 | label_17:
    0x0000a5be bne 0xa546                                        |         goto label_3;
                                                                 |     }
    0x0000a5c0 mvn r4, 0x25                                      |     r4 = ~0x25;
    0x0000a5c4 b 0xa546                                          |     goto label_3;
                                                                 | label_6:
    0x0000a5c6 ldr r1, [pc, 0x88]                                |     
    0x0000a5c8 movs r2, 0xe8                                     |     r2 = 0xe8;
    0x0000a5ca ldr r3, [pc, 0x88]                                |     
    0x0000a5cc ldr r0, [pc, 0x88]                                |     
    0x0000a5ce add r1, pc                                        |     r1 = 0x14c24;
    0x0000a5d0 add r3, pc                                        |     r3 = 0x14c2a;
    0x0000a5d2 adds r1, 7                                        |     r1 += 7;
    0x0000a5d4 add r0, pc                                        |     r0 = 0x14c30;
    0x0000a5d6 bl 0x8500                                         |     fcn_00008500 (r0, r1, r2, r3, r4);
                                                                 |     do {
                                                                 | label_7:
    0x0000a5da mov r1, r4                                        |         r1 = r4;
    0x0000a5dc mov r0, r6                                        |         r0 = r6;
    0x0000a5de mov.w r5, -1                                      |         r5 = -1;
    0x0000a5e2 movs r4, 0                                        |         r4 = 0;
    0x0000a5e4 bl 0xa430                                         |         fcn_0000a430 (r0, r1);
    0x0000a5e6 vabd.u32 d14, d20, d29                            |         __asm ("vabd.u32 d14, d20, d29");
                                                                 | label_11:
    0x0000a5ea ldr r3, [pc, 0x70]                                |         
    0x0000a5ec movs r2, 1                                        |         r2 = 1;
    0x0000a5ee mov.w r5, -1                                      |         r5 = -1;
    0x0000a5f2 mvn r4, 4                                         |         r4 = ~4;
    0x0000a5f6 add r3, pc                                        |         r3 = 0x14c58;
    0x0000a5f8 str r2, [r3]                                      |         *(r3) = r2;
    0x0000a5fa b 0xa546                                          |         goto label_3;
                                                                 | label_16:
    0x0000a5fc mov.w r5, -1                                      |         r5 = -1;
    0x0000a600 mvn r4, 0x15                                      |         r4 = ~0x15;
    0x0000a604 b 0xa546                                          |         goto label_3;
                                                                 | label_14:
    0x0000a606 ldr r3, [pc, 0x58]                                |         
    0x0000a608 movs r2, 1                                        |         r2 = 1;
    0x0000a60a add r3, pc                                        |         r3 = 0x14c70;
    0x0000a60c str r2, [r3]                                      |         *(r3) = r2;
                                                                 |         if (r5 == 0) {
    0x0000a60e cbz r5, 0xa616                                    |             goto label_18;
                                                                 |         }
    0x0000a610 tst.w r8, 1                                       |         
    0x0000a614 bne 0xa5da                                        |         
                                                                 |     } while ((r8 & 1) != 0);
                                                                 | label_18:
    0x0000a616 tst.w r8, 4                                       |     
                                                                 |     if ((r8 & 4) == 0) {
    0x0000a61a beq.w 0xa4e2                                      |         goto label_2;
                                                                 |     }
    0x0000a61e mov.w r5, -1                                      |     r5 = -1;
    0x0000a622 mvn r4, 0x3c                                      |     r4 = ~0x3c;
    0x0000a626 b 0xa546                                          |     goto label_3;
                                                                 | label_15:
    0x0000a628 rsbs r4, r3, 0                                    |     r4 = r3 - ;
    0x0000a62a mov.w r5, -1                                      |     r5 = -1;
    0x0000a62e b 0xa546                                          |     goto label_3;
                                                                 | label_10:
    0x0000a630 blx 0x1bfc                                        |     parse_printf_format ();
    0x0000a634 ldrb r0, [r7, 5]                                  |     r0 = *((r7 + 5));
    0x0000a636 movs r1, r0                                       |     r1 = r0;
    0x0000a638 lsls r4, r2, 7                                    |     r4 = r2 << 7;
    0x0000a63a movs r0, r0                                       |     
    0x0000a63c ldrb r4, [r2, 0x10]                               |     r4 = *((r2 + 0x10));
    0x0000a63e movs r1, r0                                       |     r1 = r0;
    0x0000a640 ldrb r0, [r0, 0x10]                               |     r0 = *((r0 + 0x10));
    0x0000a642 movs r1, r0                                       |     r1 = r0;
    0x0000a644 ldr r0, [r5, r5]                                  |     r0 = *((r5 + r5));
    0x0000a646 movs r0, r0                                       |     
    0x0000a648 ldrb r0, [r4, 2]                                  |     r0 = *((r4 + 2));
    0x0000a64a movs r1, r0                                       |     r1 = r0;
    0x0000a64c ldrb r0, [r0, 0xc]                                |     r0 = *((r0 + 0xc));
    0x0000a64e movs r1, r0                                       |     r1 = r0;
    0x0000a650 ldr r6, [r2, r1]                                  |     r6 = *((r2 + r1));
    0x0000a652 movs r0, r0                                       |     
    0x0000a654 ldr r4, [r2, r2]                                  |     r4 = *((r2 + r2));
    0x0000a656 movs r0, r0                                       |     
    0x0000a658 ldr r0, [r6, r1]                                  |     r0 = *((r6 + r1));
    0x0000a65a movs r0, r0                                       |     
    0x0000a65c ldrb r2, [r6, 0xa]                                |     r2 = *((r6 + 0xa));
    0x0000a65e movs r1, r0                                       |     r1 = r0;
    0x0000a660 ldrb r6, [r3, 0xa]                                |     r6 = *((r3 + 0xa));
    0x0000a662 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/cdrom_id @ 0xae40 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.0000ae40 ()                                  | void fcn_0000ae40 (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 (? >= ?) {
    0x0000ae40 ldrbmi lr, [r0, sp, lsr 18]!                  |         
                                                             |     }
    0x0000ae44 sub sp, 0x18                                  |     
    0x0000ae46 ldr r5, [pc, 0x110]                           |     
    0x0000ae48 movs r3, 4                                    |     r3 = 4;
    0x0000ae4a ldr r4, [pc, 0x110]                           |     r4 = *(0xaf5e);
    0x0000ae4c add r5, pc                                    |     r5 = 0x15daa;
    0x0000ae4e ldr r4, [r5, r4]                              |     
    0x0000ae50 ldr r4, [r4]                                  |     r4 = *(0x15daa);
    0x0000ae52 str r4, [sp, 0x14]                            |     var_14h = r4;
    0x0000ae54 mov.w r4, 0                                   |     r4 = 0;
    0x0000ae58 subs r4, r1, 0                                |     r4 = r1 - 0;
    0x0000ae5a str r3, [sp, 0xc]                             |     var_ch = r3;
                                                             |     if (r4 < r1) {
    0x0000ae5c blt 0xaf4e                                    |         goto label_4;
                                                             |     }
    0x0000ae5e add.w r8, sp, 8                               |     r8 += var_8h;
    0x0000ae62 add.w sb, sp, 0xc                             |     sb += var_ch;
    0x0000ae66 mov r5, r2                                    |     r5 = r2;
    0x0000ae68 mov r3, r8                                    |     r3 = r8;
    0x0000ae6a movs r2, 7                                    |     r2 = 7;
    0x0000ae6c movs r1, 1                                    |     r1 = 1;
    0x0000ae6e str.w sb, [sp]                                |     __asm ("str.w sb, [sp]");
    0x0000ae72 mov r6, r0                                    |     r6 = r0;
    0x0000ae74 blx 0x1ca0                                    |     r0 = fcn_00001ca0 ();
    0x0000ae78 cmp r0, 0                                     |     
    0x0000ae7a lsl.w r7, r4, 1                               |     r7 = r4 << 1;
                                                             |     if (r0 >= 0) {
    0x0000ae7e blt 0xae90                                    |         
    0x0000ae80 ldr r2, [sp, 0xc]                             |         r2 = var_ch;
    0x0000ae82 cmp r2, 4                                     |         
    0x0000ae84 ite ne                                        |         
                                                             |         if (r2 == 4) {
    0x0000ae86 movne r3, 0                                   |             r3 = 0;
                                                             |         }
                                                             |         if (r2 != 4) {
    0x0000ae88 andeq r3, r5, 1                               |             r3 = r5 & 1;
                                                             |         }
    0x0000ae8c cmp r3, 0                                     |         
                                                             |         if (r3 != 0) {
    0x0000ae8e bne 0xaf2a                                    |             goto label_5;
                                                             |         }
                                                             |     }
    0x0000ae90 ldr r3, [sp, 8]                               |     r3 = var_8h;
    0x0000ae92 subs r3, r3, r7                               |     r3 -= r7;
    0x0000ae94 clz r3, r3                                    |     r3 &= r3;
    0x0000ae98 lsrs r3, r3, 5                                |     r3 >>= 5;
                                                             | label_1:
    0x0000ae9a movs r0, 0                                    |     r0 = 0;
                                                             |     if (r3 != 0) {
    0x0000ae9c cbnz r3, 0xaf02                               |         goto label_0;
                                                             |     }
    0x0000ae9e movs r3, 4                                    |     r3 = 4;
    0x0000aea0 add.w sl, sp, 0x10                            |     sl += var_10h;
    0x0000aea4 str r3, [sp]                                  |     *(sp) = r3;
    0x0000aea6 movs r2, 7                                    |     r2 = 7;
    0x0000aea8 mov r3, sl                                    |     r3 = sl;
    0x0000aeaa movs r1, 1                                    |     r1 = 1;
    0x0000aeac mov r0, r6                                    |     r0 = r6;
    0x0000aeae str r4, [sp, 0x10]                            |     var_10h = r4;
    0x0000aeb0 blx 0x1b2c                                    |     r0 = fcn_00001b2c ();
    0x0000aeb4 cmp r0, 0                                     |     
    0x0000aeb6 blt 0xaf1c                                    |     
                                                             |     while (r0 <= 0) {
    0x0000aeb8 movs r2, 4                                    |         r2 = 4;
    0x0000aeba mov r3, r8                                    |         r3 = r8;
    0x0000aebc str r2, [sp, 0xc]                             |         var_ch = r2;
    0x0000aebe movs r1, 1                                    |         r1 = 1;
    0x0000aec0 movs r2, 7                                    |         r2 = 7;
    0x0000aec2 mov r0, r6                                    |         r0 = r6;
    0x0000aec4 str.w sb, [sp]                                |         __asm ("str.w sb, [sp]");
    0x0000aec8 blx 0x1ca0                                    |         r0 = fcn_00001ca0 ();
    0x0000aecc cmp r0, 0                                     |         
                                                             |         if (r0 >= 0) {
    0x0000aece blt 0xaede                                    |             
    0x0000aed0 ldr r3, [sp, 0xc]                             |             r3 = var_ch;
    0x0000aed2 cmp r3, 4                                     |             
    0x0000aed4 ite ne                                        |             
                                                             |             if (r3 == 4) {
    0x0000aed6 movne r5, 0                                   |                 r5 = 0;
                                                             |             }
                                                             |             if (r3 != 4) {
    0x0000aed8 andeq r5, r5, 1                               |                 r5 &= 1;
                                                             |             }
                                                             |             if (r5 != 0) {
    0x0000aedc cbnz r5, 0xaf42                               |                 goto label_6;
                                                             |             }
                                                             |         }
    0x0000aede ldr r3, [sp, 8]                               |         r3 = var_8h;
    0x0000aee0 subs r3, r3, r7                               |         r3 -= r7;
    0x0000aee2 clz r3, r3                                    |         r3 &= r3;
    0x0000aee6 lsrs r3, r3, 5                                |         r3 >>= 5;
                                                             |         if (r3 == 0) {
                                                             | label_3:
    0x0000aee8 cbnz r3, 0xaf00                               |             
    0x0000aeea movs r1, 4                                    |             r1 = 4;
    0x0000aeec mov r3, sl                                    |             r3 = sl;
    0x0000aeee str r1, [sp]                                  |             *(sp) = r1;
    0x0000aef0 movs r2, 0x20                                 |             r2 = 0x20;
    0x0000aef2 mov r0, r6                                    |             r0 = r6;
    0x0000aef4 movs r1, 1                                    |             r1 = 1;
    0x0000aef6 str r4, [sp, 0x10]                            |             var_10h = r4;
    0x0000aef8 blx 0x1b2c                                    |             r0 = fcn_00001b2c ();
    0x0000aefc cmp r0, 0                                     |             
                                                             |             if (r0 < 0) {
    0x0000aefe blt 0xaf36                                    |                 goto label_7;
                                                             |             }
                                                             |         }
                                                             | label_2:
    0x0000af00 movs r0, 1                                    |         r0 = 1;
                                                             | label_0:
    0x0000af02 ldr r2, [pc, 0x5c]                            |         
    0x0000af04 ldr r3, [pc, 0x54]                            |         r3 = *(0xaf5c);
    0x0000af06 add r2, pc                                    |         r2 = 0x15e6c;
    0x0000af08 ldr r3, [r2, r3]                              |         r3 = *(0x15e6c);
    0x0000af0a ldr r2, [r3]                                  |         r2 = *(0x15e6c);
    0x0000af0c ldr r3, [sp, 0x14]                            |         r3 = var_14h;
    0x0000af0e eors r2, r3                                   |         r2 ^= r3;
    0x0000af10 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x0000af14 bne 0xaf54                                    |             goto label_8;
                                                             |         }
    0x0000af16 add sp, 0x18                                  |         
    0x0000af18 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
    0x0000af1c blx 0x1de8                                    |         r0 = sprintf_chk ()
    0x0000af20 ldr r0, [r0]                                  |         r0 = *(r0);
    0x0000af22 cmp r0, 0                                     |         
    0x0000af24 ble 0xaeb8                                    |         
                                                             |     }
                                                             |     do {
    0x0000af26 rsbs r0, r0, 0                                |         r0 -= ;
    0x0000af28 b 0xaf02                                      |         goto label_0;
                                                             | label_5:
    0x0000af2a ldr r3, [sp, 8]                               |         r3 = var_8h;
    0x0000af2c cmp r3, r7                                    |         
    0x0000af2e ite lo                                        |         
                                                             |         if (r3 >= r7) {
    0x0000af30 movlo r3, 0                                   |             r3 = 0;
                                                             |         }
                                                             |         if (r3 < r7) {
    0x0000af32 movhs r3, 1                                   |             r3 = 1;
                                                             |         }
    0x0000af34 b 0xae9a                                      |         goto label_1;
                                                             | label_7:
    0x0000af36 blx 0x1de8                                    |         r0 = sprintf_chk ()
    0x0000af3a ldr r0, [r0]                                  |         r0 = *(r0);
    0x0000af3c cmp r0, 0                                     |         
    0x0000af3e bgt 0xaf26                                    |         
                                                             |     } while (r0 > 0);
    0x0000af40 b 0xaf00                                      |     goto label_2;
                                                             | label_6:
    0x0000af42 ldr r3, [sp, 8]                               |     r3 = var_8h;
    0x0000af44 cmp r7, r3                                    |     
    0x0000af46 ite hi                                        |     
                                                             |     if (r7 <= r3) {
    0x0000af48 movhi r3, 0                                   |         r3 = 0;
                                                             |     }
                                                             |     if (r7 > r3) {
    0x0000af4a movls r3, 1                                   |         r3 = 1;
                                                             |     }
    0x0000af4c b 0xaee8                                      |     goto label_3;
                                                             | label_4:
    0x0000af4e mvn r0, 0x21                                  |     r0 = ~0x21;
    0x0000af52 b 0xaf02                                      |     goto label_0;
                                                             | label_8:
    0x0000af54 blx 0x1bfc                                    |     parse_printf_format ();
    0x0000af58 ldr r4, [r4, 0x78]                            |     r4 = *((r4 + 0x78));
    0x0000af5a movs r1, r0                                   |     r1 = r0;
    0x0000af5c lsls r5, r6, 5                                |     r5 = r6 << 5;
    0x0000af5e movs r0, r0                                   |     
    0x0000af60 ldr r2, [r5, 0x6c]                            |     r2 = *((r5 + 0x6c));
    0x0000af62 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/cdrom_id @ 0xb084 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.0000b084 ()              | void fcn_0000b084 () {
                                         |     int16_t var_0h;
                                         |     int32_t var_54h;
                                         |     int16_t var_5ch;
    0x0000b084 blmi 0x4dd8d4             |     __asm ("blmi 0x4dd8d4");
    0x0000b088 push {r4, lr}             |     
    0x0000b08a sub sp, 0x60              |     
    0x0000b08c add r2, pc                |     r2 += pc;
    0x0000b08e mov r4, sp                |     r4 = sp;
    0x0000b090 mov r1, r4                |     r1 = r4;
    0x0000b092 ldr r3, [r2, r3]          |     r3 = *((r2 + r3));
    0x0000b094 ldr r3, [r3]              |     r3 = *(r3);
    0x0000b096 str r3, [sp, 0x5c]        |     var_5ch = r3;
    0x0000b098 mov.w r3, 0               |     r3 = 0;
    0x0000b09c blx 0x1f0c                |     r0 = fcn_00001f0c ();
    0x0000b0a0 cmp r0, 0                 |     
                                         |     if (r0 < 0) {
    0x0000b0a2 blt 0xb0c2                |         goto label_0;
                                         |     }
    0x0000b0a4 mov r0, r4                |     r0 = r4;
    0x0000b0a6 bl 0xb05c                 |     fcn_0000b05c (r0);
                                         |     do {
    0x0000b0aa ldr r2, [pc, 0x2c]        |         
    0x0000b0ac ldr r3, [pc, 0x24]        |         r3 = *(0xb0d4);
    0x0000b0ae add r2, pc                |         r2 = 0x1618c;
    0x0000b0b0 ldr r3, [r2, r3]          |         r3 = *(0x1618c);
    0x0000b0b2 ldr r2, [r3]              |         r2 = *(0x1618c);
    0x0000b0b4 ldr r3, [sp, 0x5c]        |         r3 = var_5ch;
    0x0000b0b6 eors r2, r3               |         r2 ^= r3;
    0x0000b0b8 mov.w r3, 0               |         r3 = 0;
    0x0000b0ba lsls r0, r0, 0xc          |         r0 <<= 0xc;
                                         |         if (r0 != r0) {
    0x0000b0bc bne 0xb0cc                |             goto label_1;
                                         |         }
    0x0000b0be add sp, 0x60              |         
    0x0000b0c0 pop {r4, pc}              |         
                                         | label_0:
    0x0000b0c2 blx 0x1de8                |         r0 = sprintf_chk ()
    0x0000b0c6 ldr r0, [r0]              |         r0 = *(r0);
    0x0000b0c8 rsbs r0, r0, 0            |         r0 -= ;
    0x0000b0ca b 0xb0aa                  |         
                                         |     } while (1);
                                         | label_1:
    0x0000b0cc blx 0x1bfc                |     parse_printf_format ();
    0x0000b0d0 ldr r4, [r4, 0x54]        |     r4 = var_54h;
    0x0000b0d2 movs r1, r0               |     r1 = r0;
    0x0000b0d4 lsls r4, r2, 7            |     r4 = r2 << 7;
    0x0000b0d6 movs r0, r0               |     
    0x0000b0d8 ldr r2, [r0, 0x54]        |     r2 = *((r0 + 0x54));
    0x0000b0da 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/cdrom_id @ 0xb824 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.0000b824 ()                          | void fcn_0000b824 (int16_t arg1, int16_t arg2) {
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
    0x0000b824 invalid                               |     
                                                     |     if (? < ?) {
    0x0000b828 bmi 0xb8a8                            |         goto label_1;
                                                     |     }
    0x0000b82a mov r6, r1                            |     r6 = r1;
    0x0000b82c mov r7, r0                            |     r7 = r0;
    0x0000b82e movs r5, 0x15                         |     r5 = 0x15;
    0x0000b830 b 0xb836                              |     
                                                     |     while (r5 != 1) {
    0x0000b832 blx 0x1cd0                            |         fcn_00001cd0 ();
    0x0000b836 movs r2, 0                            |         r2 = 0;
    0x0000b838 mov r1, r6                            |         r1 = r6;
    0x0000b83a mov r0, r7                            |         r0 = r7;
    0x0000b83c blx 0x1cf4                            |         r0 = fcn_00001cf4 ();
    0x0000b840 subs r4, r0, 0                        |         r4 = r0 - 0;
                                                     |         if (r4 >= r0) {
    0x0000b842 bge 0xb864                            |             goto label_2;
                                                     |         }
    0x0000b844 blx 0x1de8                            |         r0 = sprintf_chk ()
    0x0000b848 ldr r3, [r0]                          |         r3 = *(r0);
    0x0000b84a movw r0, 0xc350                       |         r0 = 0xc350;
    0x0000b84e cmp r3, 5                             |         
                                                     |         if (r3 != 5) {
    0x0000b850 bne 0xb89c                            |             goto label_3;
                                                     |         }
    0x0000b852 subs r5, 1                            |         r5--;
    0x0000b854 bne 0xb832                            |         
                                                     |     }
    0x0000b856 mvn r5, 4                             |     r5 = ~4;
                                                     |     do {
                                                     | label_0:
    0x0000b85a mov r0, r4                            |         r0 = r4;
    0x0000b85c bl 0x5a98                             |         fcn_00005a98 (r0, r1, r2, r3, r4);
    0x0000b860 mov r0, r5                            |         r0 = r5;
    0x0000b862 pop {r3, r4, r5, r6, r7, pc}          |         
                                                     | label_2:
    0x0000b864 blx 0x1f90                            |         r0 = fcn_00001f90 ();
    0x0000b868 cmp r0, 0                             |         
    0x0000b86a itt gt                                |         
                                                     |         if (r0 <= 0) {
    0x0000b86c movgt r5, r4                          |             r5 = r4;
                                                     |         }
                                                     |         if (r0 <= 0) {
    0x0000b86e movgt r4, -1                          |             r4 = -1;
                                                     |         }
    0x0000b870 adds r4, 0xff                         |         r4 += 0xff;
    0x0000b872 bgt 0xb85a                            |         
                                                     |     } while (r4 > 0xff);
    0x0000b874 blx 0x1de8                            |     r0 = sprintf_chk ()
    0x0000b878 ldr r5, [r0]                          |     r5 = *(r0);
    0x0000b87a cmp r5, 0                             |     
    0x0000b87c it gt                                 |     
                                                     |     if (r5 <= 0) {
    0x0000b87e rsbgt r5, r5, 0                       |         __asm ("rsbgt r5, r5, 0");
                                                     |         goto label_4;
                                                     |     }
                                                     |     if (r5 > 0) {
                                                     | label_4:
    0x0000b880 bgt 0xb85a                            |         goto label_0;
                                                     |     }
    0x0000b882 ldr r1, [pc, 0x30]                    |     
    0x0000b884 movs r2, 0x1e                         |     r2 = 0x1e;
    0x0000b886 ldr r3, [pc, 0x30]                    |     
    0x0000b888 mvn r5, 0x15                          |     r5 = ~0x15;
    0x0000b88c ldr r0, [pc, 0x2c]                    |     
    0x0000b88e add r1, pc                            |     r1 = 0x17148;
    0x0000b890 add r3, pc                            |     r3 = 0x1714e;
    0x0000b892 adds r1, 7                            |     r1 += 7;
    0x0000b894 add r0, pc                            |     r0 = 0x17154;
    0x0000b896 bl 0x87bc                             |     fcn_000087bc (r0, r1, r2, r3);
    0x0000b89a b 0xb85a                              |     goto label_0;
                                                     | label_3:
    0x0000b89c rsbs r5, r3, 0                        |     r5 = r3 - ;
    0x0000b89e mov r0, r4                            |     r0 = r4;
    0x0000b8a0 bl 0x5a98                             |     fcn_00005a98 (r0, r1, r2, r3, r4);
    0x0000b8a4 mov r0, r5                            |     r0 = r5;
    0x0000b8a6 pop {r3, r4, r5, r6, r7, pc}          |     
                                                     | label_1:
    0x0000b8a8 mov.w r4, -1                          |     r4 = -1;
    0x0000b8ac mvn r5, 0x15                          |     r5 = ~0x15;
    0x0000b8b0 b 0xb85a                              |     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/cdrom_id @ 0xbc98 */
                                                                     | #include <stdint.h>
                                                                     |  
                                                                     | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                     |  
    ; (fcn) fcn.0000bc98 ()                                          | void fcn_0000bc98 (int16_t arg1, uint32_t arg3, int16_t arg4) {
                                                                     |     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;
                                                                     |     r2 = arg3;
                                                                     |     r3 = arg4;
    0x0000bc98 push {r4, lr}                                         |     
                                                                     |     if (r0 != 0) {
    0x0000bc9a cbz r0, 0xbcda                                        |         
    0x0000bc9c mov r1, r3                                            |         r1 = r3;
    0x0000bc9e mov.w ip, -1                                          |         
    0x0000bca2 movw r3, 0xa11f                                       |         
    0x0000bca6 cmp ip, r2                                            |         
    0x0000bca8 movt r3, 7                                            |         r3 = 0x7a11f;
    0x0000bcac mov r4, r0                                            |         r4 = r0;
    0x0000bcae sbcs r3, r1                                           |         __asm ("sbcs r3, r1");
    0x0000bcb0 mov lr, r2                                            |         lr = r2;
    0x0000bcb2 itt lo                                                |         
                                                                     |         if (ip >= r2) {
    0x0000bcb4 movlo r0, ip                                          |             r0 = ip;
                                                                     |         }
                                                                     |         if (ip >= r2) {
    0x0000bcb6 movlo r2, r0                                          |             r2 = r0;
                                                                     |         }
                                                                     |         if (ip < r2) {
    0x0000bcb8 bhs 0xbcc2                                            |             
    0x0000bcba strd r0, r2, [r4]                                     |             __asm ("strd r0, r2, [r4]");
    0x0000bcbe mov r0, r4                                            |             r0 = r4;
    0x0000bcc0 pop {r4, pc}                                          |             
                                                                     |         }
    0x0000bcc2 movw r2, 0x4240                                       |         
    0x0000bcc6 mov r0, lr                                            |         r0 = lr;
    0x0000bcc8 movt r2, 0xf                                          |         r2 = 0xf4240;
    0x0000bccc movs r3, 0                                            |         r3 = 0;
    0x0000bcce bl 0xd388                                             |         fcn_0000d388 (r0, r1, r2, r3);
    0x0000bcd2 strd r0, r2, [r4]                                     |         __asm ("strd r0, r2, [r4]");
    0x0000bcd6 mov r0, r4                                            |         r0 = r4;
    0x0000bcd8 pop {r4, pc}                                          |         
                                                                     |     }
    0x0000bcda ldr r1, [pc, 0x14]                                    |     
    0x0000bcdc movw r2, 0x11f                                        |     r2 = 0x11f;
    0x0000bcde asrs r7, r3, 8                                        |     r7 = r3 >> 8;
    0x0000bce0 ldr r3, [pc, 0x10]                                    |     
    0x0000bce2 ldr r0, [pc, 0x14]                                    |     
    0x0000bce4 add r1, pc                                            |     r1 = 0x179da;
    0x0000bce6 add r3, pc                                            |     r3 = 0x179de;
    0x0000bce8 adds r1, 7                                            |     r1 += 7;
    0x0000bcea add r0, pc                                            |     r0 = 0x179e8;
    0x0000bcec bl 0x8500                                             |     fcn_00008500 (r0, r1, r2, r3, r4);
    0x0000bcf0 mov r4, r4                                            |     
    0x0000bcf2 movs r0, r0                                           |     
    0x0000bcf4 ldr r1, [pc, 0x78]                                    |     r1 = *(0xbd70);
    0x0000bcf6 movs r0, r0                                           |     
    0x0000bcf8 mov r2, lr                                            |     r2 = lr;
    0x0000bcfa movs r0, r0                                           |     
    0x0000bcfc push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000bd00 sub sp, 0x34                                          |     
    0x0000bd02 strd r2, r3, [sp, 8]                                  |     __asm ("strd r2, r3, [sp, 8]");
    0x0000bd06 ldr r2, [pc, 0x2cc]                                   |     
    0x0000bd08 ldr r3, [pc, 0x2cc]                                   |     r3 = *(0xbfd8);
    0x0000bd0a str r1, [sp, 0x1c]                                    |     var_1ch = r1;
    0x0000bd0c add r2, pc                                            |     r2 = 0x17ce6;
    0x0000bd0e ldr r3, [r2, r3]                                      |     
    0x0000bd10 ldr r3, [r3]                                          |     r3 = *(0x17ce6);
    0x0000bd12 str r3, [sp, 0x2c]                                    |     var_2ch = r3;
    0x0000bd14 mov.w r3, 0                                           |     r3 = 0;
    0x0000bd18 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000bd1a beq.w 0xbf88                                          |         goto label_9;
                                                                     |     }
    0x0000bd1e ldrd r3, r2, [sp, 8]                                  |     __asm ("ldrd r3, r2, [var_8h]");
    0x0000bd22 orrs r3, r2                                           |     r3 |= r2;
                                                                     |     if (r3 == r2) {
    0x0000bd24 beq.w 0xbf9e                                          |         goto label_10;
                                                                     |     }
    0x0000bd28 ldr r3, [pc, 0x2b0]                                   |     
    0x0000bd2a mov r6, r0                                            |     r6 = r0;
    0x0000bd2c add r3, pc                                            |     r3 = 0x17d0c;
    0x0000bd2e mov r1, r3                                            |     r1 = r3;
    0x0000bd30 mov r4, r3                                            |     r4 = r3;
    0x0000bd32 str r3, [sp, 0x18]                                    |     var_18h = r3;
    0x0000bd34 blx 0x1fe4                                            |     fcn_00001fe4 ();
    0x0000bd38 ldr r1, [pc, 0x2a4]                                   |     
    0x0000bd3a add r6, r0                                            |     r6 += r0;
    0x0000bd3c mov r0, r6                                            |     r0 = r6;
    0x0000bd3e add r1, pc                                            |     r1 = 0x17d22;
    0x0000bd40 bl 0xd054                                             |     r0 = fcn_0000d054 (r0, r1);
    0x0000bd44 mov r5, r0                                            |     r5 = r0;
                                                                     |     if (r0 != 0) {
    0x0000bd46 cbz r0, 0xbd84                                        |         
    0x0000bd48 mov r1, r4                                            |         r1 = r4;
    0x0000bd4a blx 0x1fe4                                            |         fcn_00001fe4 ();
    0x0000bd4e ldrb r0, [r5, r0]                                     |         r0 = *((r5 + r0));
    0x0000bd50 cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0000bd52 bne.w 0xbe7c                                          |             goto label_7;
                                                                     |         }
    0x0000bd56 ldr r3, [sp, 0x1c]                                    |         r3 = var_1ch;
    0x0000bd58 cmp r3, 0                                             |         
                                                                     |         if (r3 == 0) {
    0x0000bd5a beq.w 0xbe92                                          |             goto label_8;
                                                                     |         }
    0x0000bd5e ldr r3, [sp, 0x1c]                                    |         r3 = var_1ch;
    0x0000bd60 vmov.i8 d16, 0xff                                     |         __asm ("vmov.i8 d16, 0xff");
    0x0000bd64 vstr d16, [r3]                                        |         __asm ("vstr d16, [r3]");
                                                                     | label_2:
    0x0000bd68 ldr r2, [pc, 0x278]                                   |         
    0x0000bd6a ldr r3, [pc, 0x26c]                                   |         r3 = *(0xbfda);
    0x0000bd6c add r2, pc                                            |         r2 = 0x17d54;
    0x0000bd6e ldr r3, [r2, r3]                                      |         r3 = *(0x17d54);
    0x0000bd70 ldr r2, [r3]                                          |         r2 = *(0x17d54);
    0x0000bd72 ldr r3, [sp, 0x2c]                                    |         r3 = var_2ch;
    0x0000bd74 eors r2, r3                                           |         r2 ^= r3;
    0x0000bd76 mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 != r3) {
    0x0000bd7a bne.w 0xbfce                                          |             goto label_11;
                                                                     |         }
    0x0000bd7e add sp, 0x34                                          |         
    0x0000bd80 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     |     }
    0x0000bd84 ldr r3, [pc, 0x260]                                   |     
    0x0000bd86 mov r4, r0                                            |     r4 = r0;
    0x0000bd88 mov fp, r0                                            |     
    0x0000bd8a add r3, pc                                            |     r3 = 0x17d76;
    0x0000bd8c str r3, [sp, 0x24]                                    |     var_24h = r3;
    0x0000bd8e ldr r3, [pc, 0x25c]                                   |     
    0x0000bd90 add r3, pc                                            |     r3 = 0x17d82;
    0x0000bd92 str r3, [sp, 0x20]                                    |     var_8h = r3;
                                                                     | label_0:
    0x0000bd94 mov r0, r6                                            |     r0 = r6;
    0x0000bd96 ldr r1, [sp, 0x18]                                    |     r1 = var_18h;
    0x0000bd98 blx 0x1fe4                                            |     fcn_00001fe4 ();
    0x0000bd9c ldrb r3, [r6, r0]                                     |     r3 = *((r6 + r0));
    0x0000bd9e add r6, r0                                            |     r6 += r0;
    0x0000bda0 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000bda2 beq.w 0xbfb4                                          |         goto label_12;
                                                                     |     }
    0x0000bda6 cmp r3, 0x2d                                          |     
                                                                     |     if (r3 == 0x2d) {
    0x0000bda8 beq 0xbe96                                            |         goto label_4;
                                                                     |     }
    0x0000bdaa blx 0x1de8                                            |     sprintf_chk ()
    0x0000bdae movs r3, 0                                            |     r3 = 0;
    0x0000bdb0 mov r5, r0                                            |     r5 = r0;
    0x0000bdb2 str r3, [r0]                                          |     *(r0) = r3;
    0x0000bdb4 movs r2, 0xa                                          |     r2 = 0xa;
    0x0000bdb6 add r1, sp, 0x28                                      |     r1 += var_28h;
    0x0000bdb8 mov r0, r6                                            |     r0 = r6;
    0x0000bdba blx 0x1cc4                                            |     fcn_00001cc4 ();
    0x0000bdbe ldr r3, [r5]                                          |     r3 = *(r5);
    0x0000bdc0 mov r7, r0                                            |     r7 = r0;
    0x0000bdc2 mov r8, r1                                            |     r8 = r1;
    0x0000bdc4 cmp r3, 0                                             |     
                                                                     |     if (r3 > 0) {
    0x0000bdc6 bgt.w 0xbfca                                          |         goto label_13;
                                                                     |     }
    0x0000bdca cmp r1, 0                                             |     
                                                                     |     if (r1 < 0) {
    0x0000bdcc blt 0xbe96                                            |         goto label_4;
                                                                     |     }
    0x0000bdce ldr r3, [sp, 0x28]                                    |     r3 = var_28h;
    0x0000bdd0 str r3, [sp, 4]                                       |     var_4h = r3;
    0x0000bdd2 ldrb r3, [r3]                                         |     r3 = *(r3);
    0x0000bdd4 cmp r3, 0x2e                                          |     
    0x0000bdd6 str r3, [sp, 0x10]                                    |     var_10h = r3;
    0x0000bdd8 ldr r3, [sp, 4]                                       |     r3 = var_4h;
                                                                     |     if (r3 == 0x2e) {
    0x0000bdda beq 0xbe82                                            |         goto label_14;
                                                                     |     }
    0x0000bddc cmp r3, r6                                            |     
                                                                     |     if (r3 == r6) {
    0x0000bdde beq 0xbe7c                                            |         goto label_7;
                                                                     |     }
    0x0000bde0 mov sb, r3                                            |     sb = r3;
                                                                     | label_3:
    0x0000bde2 ldr r1, [sp, 0x20]                                    |     r1 = var_8h;
    0x0000bde4 mov r0, sb                                            |     r0 = sb;
    0x0000bde6 blx 0x1fe4                                            |     fcn_00001fe4 ();
    0x0000bdea ldr r5, [pc, 0x204]                                   |     
    0x0000bdec add.w r6, sb, r0                                      |     r6 = sb + r0;
    0x0000bdf0 ldr r1, [pc, 0x200]                                   |     
    0x0000bdf2 mov.w sl, 0                                           |     sl = 0;
    0x0000bdf6 add r5, pc                                            |     r5 = 0x17dec;
    0x0000bdf8 add r1, pc                                            |     r1 = 0x17df0;
    0x0000bdfa b 0xbe0a                                              |     
                                                                     |     while (r0 == 0) {
    0x0000bdfc add.w sl, sl, 1                                       |         sl++;
    0x0000be00 cmp.w sl, 0x1d                                        |         
                                                                     |         if (sl == 0x1d) {
    0x0000be04 beq 0xbe6e                                            |             goto label_15;
                                                                     |         }
    0x0000be06 ldr r1, [r5, 0x10]!                                   |         r1 = *((r5 += 0x10));
    0x0000be0a mov r0, r6                                            |         r0 = r6;
    0x0000be0c bl 0xd054                                             |         r0 = fcn_0000d054 (r0, r1);
    0x0000be10 cmp r0, 0                                             |         
    0x0000be12 beq 0xbdfc                                            |         
                                                                     |     }
    0x0000be14 ldr r2, [pc, 0x1e0]                                   |     
    0x0000be16 mov r6, r0                                            |     r6 = r0;
    0x0000be18 cmp sb, r6                                            |     
    0x0000be1a add r2, pc                                            |     r2 = 0x17e16;
    0x0000be1c add.w r3, r2, sl, lsl 4                               |     r3 = r2 + (sl << 4);
    0x0000be20 ldrd r2, r5, [r3, 8]                                  |     __asm ("ldrd r2, r5, [r3, 8]");
                                                                     |     if (sb == r6) {
    0x0000be24 beq 0xbe76                                            |         goto label_16;
                                                                     |     }
                                                                     |     do {
                                                                     | label_1:
    0x0000be26 mov r3, r5                                            |         r3 = r5;
    0x0000be28 mov.w r0, -1                                          |         r0 = -1;
    0x0000be2c mov.w r1, -1                                          |         r1 = -1;
    0x0000be30 str r2, [sp, 0x14]                                    |         var_14h = r2;
    0x0000be32 bl 0xd388                                             |         r0 = fcn_0000d388 (r0, r1, r2, r3);
    0x0000be36 cmp r7, r0                                            |         
    0x0000be38 sbcs.w r1, r8, r1                                     |         __asm ("sbcs.w r1, r8, r1");
                                                                     |         if (r7 >= r0) {
    0x0000be3c bhs 0xbe96                                            |             goto label_4;
                                                                     |         }
    0x0000be3e ldr r2, [sp, 0x14]                                    |         r2 = var_14h;
    0x0000be40 mul r3, r7, r5                                        |         r3 = r7 * r5;
    0x0000be44 mvn.w r0, fp                                          |         r0 = ~fp;
    0x0000be48 umull r1, r7, r7, r2                                  |         r1:r7 = r7 * r2;
    0x0000be4c mla r3, r2, r8, r3                                    |         __asm ("mla r3, r2, r8, r3");
    0x0000be50 add r3, r7                                            |         r3 += r7;
    0x0000be52 mvns r7, r4                                           |         r7 = ~r4;
    0x0000be54 cmp r1, r7                                            |         
    0x0000be56 sbcs.w r0, r3, r0                                     |         __asm ("sbcs.w r0, r3, r0");
                                                                     |         if (r1 >= r7) {
    0x0000be5a bhs 0xbe96                                            |             goto label_4;
                                                                     |         }
    0x0000be5c adds r1, r4, r1                                       |         r1 = r4 + r1;
    0x0000be5e adc.w fp, r3, fp                                      |         __asm ("adc.w fp, r3, fp");
    0x0000be62 ldr r3, [sp, 0x10]                                    |         r3 = var_10h;
    0x0000be64 mov r4, r1                                            |         r4 = r1;
    0x0000be66 cmp r3, 0x2e                                          |         
                                                                     |         if (r3 == 0x2e) {
    0x0000be68 beq 0xbe9c                                            |             goto label_17;
                                                                     |         }
                                                                     | label_6:
    0x0000be6a movs r5, 1                                            |         r5 = 1;
    0x0000be6c b 0xbd94                                              |         goto label_0;
                                                                     | label_15:
    0x0000be6e cmp sb, r6                                            |         
    0x0000be70 ldrd r2, r5, [sp, 8]                                  |         __asm ("ldrd r2, r5, [var_8h]");
    0x0000be74 bne 0xbe26                                            |         
                                                                     |     } while (sb != r6);
                                                                     | label_16:
    0x0000be76 ldrb r3, [r6]                                         |     r3 = *(r6);
    0x0000be78 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000be7a beq 0xbe26                                            |         goto label_1;
                                                                     |     }
                                                                     |     do {
                                                                     | label_7:
    0x0000be7c mvn r0, 0x15                                          |         r0 = ~0x15;
    0x0000be80 b 0xbd68                                              |         goto label_2;
                                                                     | label_14:
    0x0000be82 add.w sb, r3, 1                                       |         sb = r3 + 1;
    0x0000be86 ldr r1, [sp, 0x24]                                    |         r1 = var_24h;
    0x0000be88 mov r0, sb                                            |         r0 = sb;
    0x0000be8a blx 0x1fe4                                            |         r0 = fcn_00001fe4 ();
    0x0000be8e add sb, r0                                            |         sb += r0;
    0x0000be90 b 0xbde2                                              |         goto label_3;
                                                                     | label_8:
    0x0000be92 movs r0, 0                                            |         r0 = 0;
    0x0000be94 b 0xbd68                                              |         goto label_2;
                                                                     | label_4:
    0x0000be96 mvn r0, 0x21                                          |         r0 = ~0x21;
    0x0000be9a b 0xbd68                                              |         goto label_2;
                                                                     | label_17:
    0x0000be9c adds r3, r2, r5                                       |         r3 = r2 + r5;
    0x0000be9e movw ip, 0xcccd                                       |         
    0x0000bea2 adc r3, r3, 0                                         |         __asm ("adc r3, r3, 0");
    0x0000bea6 movt ip, 0xcccc                                       |         ip = 0xcccccccd;
    0x0000beaa umull r1, r0, ip, r3                                  |         r1:r0 = ip * r3;
    0x0000beae mov.w lr, -0x33333334                                 |         lr = -0x33333334;
    0x0000beb2 ldr r7, [sp, 4]                                       |         r7 = var_4h;
    0x0000beb4 ldrb r1, [r7, 1]                                      |         r1 = *((r7 + 1));
    0x0000beb6 adds r7, 1                                            |         r7++;
    0x0000beb8 bic r8, r0, 3                                         |         r8 = BIT_MASK (r0, 3);
    0x0000bebc str r7, [sp, 4]                                       |         var_4h = r7;
    0x0000bebe add.w r8, r8, r0, lsr 2                               |         r8 += (r0 >> 2);
    0x0000bec2 subs r1, 0x30                                         |         r1 -= 0x30;
    0x0000bec4 sub.w r3, r3, r8                                      |         r3 -= r8;
    0x0000bec8 uxtb r7, r1                                           |         r7 = (int8_t) r1;
    0x0000beca subs r3, r2, r3                                       |         r3 = r2 - r3;
    0x0000becc mul r2, lr, r3                                        |         r2 = lr * r3;
    0x0000bed0 sbc r5, r5, 0                                         |         __asm ("sbc r5, r5, 0");
    0x0000bed4 cmp r7, 9                                             |         
    0x0000bed6 mla r5, ip, r5, r2                                    |         __asm ("mla r5, ip, r5, r2");
    0x0000beda umull r2, r0, r3, ip                                  |         r2:r0 = r3 * ip;
    0x0000bede lsr.w r3, r2, 1                                       |         r3 = r2 >> 1;
    0x0000bee2 add r0, r5                                            |         r0 += r5;
    0x0000bee4 orr.w r3, r3, r0, lsl 31                              |         r3 |= (r0 << 31);
    0x0000bee8 lsr.w r0, r0, 1                                       |         r0 >>= 1;
    0x0000beec bhi 0xbe7c                                            |         
                                                                     |     } while (r7 > 9);
    0x0000beee mul r5, r1, r0                                        |     r5 = r1 * r0;
    0x0000bef2 asrs r2, r1, 0x1f                                     |     r2 = r1 >> 0x1f;
    0x0000bef4 mvns r7, r4                                           |     r7 = ~r4;
    0x0000bef6 mla r5, r3, r2, r5                                    |     __asm ("mla r5, r3, r2, r5");
    0x0000befa umull r1, r2, r1, r3                                  |     r1:r2 = r1 * r3;
    0x0000befe add r2, r5                                            |     r2 += r5;
    0x0000bf00 cmp r1, r7                                            |     
    0x0000bf02 mvn.w r5, fp                                          |     r5 = ~fp;
    0x0000bf06 sbcs.w r5, r2, r5                                     |     __asm ("sbcs.w r5, r2, r5");
                                                                     |     if (r1 >= r7) {
    0x0000bf0a bhs 0xbe96                                            |         goto label_4;
                                                                     |     }
    0x0000bf0c mov r5, r3                                            |     r5 = r3;
    0x0000bf0e ldr.w r8, [sp, 4]                                     |     r8 = var_4h;
    0x0000bf12 mov sb, ip                                            |     sb = ip;
    0x0000bf14 mov r3, r2                                            |     r3 = r2;
    0x0000bf16 b 0xbf36                                              |     goto label_18;
                                                                     | label_5:
    0x0000bf18 mul r7, r2, r0                                        |     r7 = r2 * r0;
    0x0000bf1c asrs r3, r2, 0x1f                                     |     r3 = r2 >> 0x1f;
    0x0000bf1e mla r7, r5, r3, r7                                    |     __asm ("mla r7, r5, r3, r7");
    0x0000bf22 umull r1, r3, r2, r5                                  |     r1:r3 = r2 * r5;
    0x0000bf26 mvn.w r2, fp                                          |     r2 = ~fp;
    0x0000bf28 lsls r3, r1, 8                                        |     r3 = r1 << 8;
    0x0000bf2a add r3, r7                                            |     r3 += r7;
    0x0000bf2c mvns r7, r4                                           |     r7 = ~r4;
    0x0000bf2e cmp r1, r7                                            |     
    0x0000bf30 sbcs.w r2, r3, r2                                     |     __asm ("sbcs.w r2, r3, r2");
                                                                     |     if (r1 >= r7) {
    0x0000bf34 bhs 0xbe96                                            |         goto label_4;
                                                                     |     }
                                                                     | label_18:
    0x0000bf36 adds r2, r4, r1                                       |     r2 = r4 + r1;
    0x0000bf38 adc.w fp, fp, r3                                      |     __asm ("adc.w fp, fp, r3");
    0x0000bf3c adds r3, r5, r0                                       |     r3 = r5 + r0;
    0x0000bf3e adc r3, r3, 0                                         |     __asm ("adc r3, r3, 0");
    0x0000bf42 mov r4, r2                                            |     r4 = r2;
    0x0000bf44 umull r1, sl, ip, r3                                  |     r1:sl = ip * r3;
    0x0000bf48 ldrb r2, [r8, 1]!                                     |     r2 = *((r8 += 1));
    0x0000bf4c subs r2, 0x30                                         |     r2 -= 0x30;
    0x0000bf4e uxtb r1, r2                                           |     r1 = (int8_t) r2;
    0x0000bf50 bic r7, sl, 3                                         |     r7 = BIT_MASK (sl, 3);
    0x0000bf54 add.w r7, r7, sl, lsr 2                               |     r7 += (sl >> 2);
    0x0000bf58 subs r3, r3, r7                                       |     r3 -= r7;
    0x0000bf5a subs r3, r5, r3                                       |     r3 = r5 - r3;
    0x0000bf5c sbc r5, r0, 0                                         |     __asm ("sbc r5, r0, 0");
    0x0000bf60 mul r0, lr, r3                                        |     r0 = lr * r3;
    0x0000bf64 cmp r1, 9                                             |     
    0x0000bf66 mla r0, ip, r5, r0                                    |     __asm ("mla r0, ip, r5, r0");
    0x0000bf6a umull r3, r5, r3, sb                                  |     r3:r5 = r3 * sb;
    0x0000bf6e lsr.w r3, r3, 1                                       |     r3 >>= 1;
    0x0000bf72 add r0, r5                                            |     r0 += r5;
    0x0000bf74 orr.w r5, r3, r0, lsl 31                              |     r5 = r3 | (r0 << 31);
    0x0000bf78 lsr.w r0, r0, 1                                       |     r0 >>= 1;
                                                                     |     if (r1 < 9) {
    0x0000bf7c bls 0xbf18                                            |         goto label_5;
                                                                     |     }
    0x0000bf7e ldr r3, [sp, 4]                                       |     r3 = var_4h;
    0x0000bf80 cmp r3, r8                                            |     
                                                                     |     if (r3 != r8) {
    0x0000bf82 bne.w 0xbe6a                                          |         goto label_6;
                                                                     |     }
    0x0000bf86 b 0xbe7c                                              |     goto label_7;
                                                                     | label_9:
    0x0000bf88 ldr r1, [pc, 0x70]                                    |     
    0x0000bf8a mov.w r2, 0x3e8                                       |     r2 = 0x3e8;
    0x0000bf8e ldr r3, [pc, 0x70]                                    |     
    0x0000bf90 ldr r0, [pc, 0x70]                                    |     
    0x0000bf92 add r1, pc                                            |     r1 = 0x17f92;
    0x0000bf94 add r3, pc                                            |     r3 = 0x17f9a;
    0x0000bf96 adds r1, 7                                            |     r1 += 7;
    0x0000bf98 add r0, pc                                            |     r0 = 0x17fa0;
    0x0000bf9a bl 0x8500                                             |     fcn_00008500 (r0, r1, r2, r3, r4);
                                                                     | label_10:
    0x0000bf9e ldr r1, [pc, 0x68]                                    |     
    0x0000bfa0 movw r2, 0x3e9                                        |     r2 = 0x3e9;
    0x0000bfa4 ldr r3, [pc, 0x64]                                    |     
    0x0000bfa6 ldr r0, [pc, 0x68]                                    |     
    0x0000bfa8 add r1, pc                                            |     r1 = 0x17fb6;
    0x0000bfaa add r3, pc                                            |     r3 = 0x17fba;
    0x0000bfac adds r1, 7                                            |     r1 += 7;
    0x0000bfae add r0, pc                                            |     r0 = 0x17fc4;
    0x0000bfb0 bl 0x8500                                             |     fcn_00008500 (r0, r1, r2, r3, r4);
                                                                     | label_12:
    0x0000bfb4 cmp r5, 0                                             |     
                                                                     |     if (r5 == 0) {
    0x0000bfb6 beq.w 0xbe7c                                          |         goto label_7;
                                                                     |     }
    0x0000bfba ldr r2, [sp, 0x1c]                                    |     r2 = var_1ch;
    0x0000bfbc cmp r2, 0                                             |     
                                                                     |     if (r2 == 0) {
    0x0000bfbe beq.w 0xbe92                                          |         goto label_8;
                                                                     |     }
    0x0000bfc2 mov r0, r3                                            |     r0 = r3;
    0x0000bfc4 strd r4, fp, [r2]                                     |     __asm ("strd r4, fp, [r2]");
    0x0000bfc8 b 0xbd68                                              |     goto label_2;
                                                                     | label_13:
    0x0000bfca rsbs r0, r3, 0                                        |     r0 = r3 - ;
    0x0000bfcc b 0xbd68                                              |     goto label_2;
                                                                     | label_11:
    0x0000bfce blx 0x1bfc                                            |     parse_printf_format ();
    0x0000bfd2 nop                                                   |     
    0x0000bfd4 str r4, [r4, 0xc]                                     |     *((r4 + 0xc)) = r4;
    0x0000bfd6 movs r1, r0                                           |     r1 = r0;
    0x0000bfd8 lsls r4, r2, 7                                        |     r4 = r2 << 7;
    0x0000bfda movs r0, r0                                           |     
    0x0000bfdc cmp r4, 0xf0                                          |     
    0x0000bfde movs r0, r0                                           |     
    0x0000bfe0 mov lr, pc                                            |     lr = pc;
    0x0000bfe2 movs r0, r0                                           |     
    0x0000bfe4 str r4, [r0, 8]                                       |     *((r0 + 8)) = r4;
    0x0000bfe6 movs r1, r0                                           |     r1 = r0;
    0x0000bfe8 mov lr, lr                                            |     
    0x0000bfea movs r0, r0                                           |     
    0x0000bfec cmp r4, 0x8c                                          |     
    0x0000bfee movs r0, r0                                           |     
    0x0000bff0 ldrb r6, [r3, r0]                                     |     r6 = *((r3 + r0));
    0x0000bff2 movs r1, r0                                           |     r1 = r0;
    0x0000bff4 mov r4, sp                                            |     r4 = sp;
    0x0000bff6 movs r0, r0                                           |     
    0x0000bff8 ldrh r2, [r7, r7]                                     |     r2 = *((r7 + r7));
    0x0000bffa movs r1, r0                                           |     r1 = r0;
    0x0000bffc muls r6, r6, r6                                       |     r6 *= r6;
    0x0000bffe movs r0, r0                                           |     
    0x0000c000 mov r4, sb                                            |     r4 = sb;
    0x0000c002 movs r0, r0                                           |     
    0x0000c004 str r0, [r7, r7]                                      |     *((r7 + r7)) = r0;
    0x0000c006 movs r0, r0                                           |     
    0x0000c008 muls r0, r4, r0                                       |     r0 = r4 * r0;
    0x0000c00a movs r0, r0                                           |     
    0x0000c00c mov r6, r6                                            |     
    0x0000c00e movs r0, r0                                           |     
    0x0000c010 add lr, r7                                            |     lr += r7;
    0x0000c012 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/cdrom_id @ 0xc8a0 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.0000c8a0 ()                      | void fcn_0000c8a0 () {
                                                 |     int32_t var_0h;
                                                 |     int32_t var_0h_2;
                                                 |     if (? >= ?) {
    0x0000c8a0 addlt fp, r3, r0, lsr r5          |         
                                                 |     }
    0x0000c8a4 ldr r4, [pc, 0x140]               |     
    0x0000c8a6 add r4, pc                        |     r4 = 0x19292;
    0x0000c8a8 ldr r3, [r4]                      |     r3 = *(0x19292);
    0x0000c8aa cmp r3, 0                         |     
                                                 |     if (r3 < 0) {
    0x0000c8ac blt 0xc8b8                        |         goto label_4;
                                                 |     }
    0x0000c8ae ite ne                            |     
                                                 |     if (r3 == 0) {
    0x0000c8b0 movne r0, 1                       |         r0 = 1;
                                                 |     }
    0x0000c8b2 moveq r0, 0                       |     r0 = 0;
                                                 |     while (r0 <= 6) {
                                                 | label_0:
    0x0000c8b4 add sp, 0xc                       |         
    0x0000c8b6 pop {r4, r5, pc}                  |         
                                                 | label_4:
    0x0000c8b8 ldr r0, [pc, 0x130]               |         
    0x0000c8ba add r0, pc                        |         r0 = 0x192aa;
    0x0000c8bc blx 0x1b44                        |         r0 = fcn_00001b44 ();
    0x0000c8c0 mov r5, r0                        |         r5 = r0;
    0x0000c8c2 cmp r0, 0                         |         
                                                 |         if (r0 == 0) {
    0x0000c8c4 beq 0xc954                        |             goto label_5;
                                                 |         }
    0x0000c8c6 ldr r1, [pc, 0x128]               |         
    0x0000c8c8 add r1, pc                        |         r1 = 0x192be;
    0x0000c8ca blx 0x1b08                        |         r0 = fcn_00001b08 ();
                                                 |         if (r0 != 0) {
    0x0000c8ce cbnz r0, 0xc91a                   |             goto label_6;
                                                 |         }
                                                 | label_1:
    0x0000c8d0 ldr r0, [pc, 0x120]               |         
    0x0000c8d2 movs r1, 0                        |         r1 = 0;
    0x0000c8d4 add r0, pc                        |         r0 = 0x192cc;
    0x0000c8d6 blx 0x1e94                        |         r0 = fcn_00001e94 ();
    0x0000c8da cmp r0, 0                         |         
                                                 |         if (r0 < 0) {
    0x0000c8dc blt 0xc97a                        |             goto label_7;
                                                 |         }
    0x0000c8de ldr r5, [pc, 0x118]               |         
    0x0000c8e0 add r5, pc                        |         r5 = 0x192de;
    0x0000c8e2 ldr r4, [r5]                      |         r4 = *(0x192de);
    0x0000c8e4 cmp r4, 0                         |         
                                                 |         if (r4 != 0) {
    0x0000c8e6 bne 0xc970                        |             goto label_8;
                                                 |         }
    0x0000c8e8 bl 0x7be0                         |         r0 = fcn_00007be0 ();
    0x0000c8ec cmp r0, 6                         |         
    0x0000c8ee it le                             |         
                                                 |         if (r0 > 6) {
    0x0000c8f0 movle r0, r4                      |             r0 = r4;
                                                 |         }
    0x0000c8f2 ble 0xc8b4                        |         
                                                 |     }
    0x0000c8f4 ldr r2, [pc, 0x104]               |     
    0x0000c8f6 mov r1, r4                        |     r1 = r4;
    0x0000c8f8 ldr r0, [pc, 0x104]               |     
    0x0000c8fa ldr r3, [pc, 0x108]               |     
    0x0000c8fc add r2, pc                        |     r2 = 0x192fc;
    0x0000c8fe add r0, pc                        |     r0 = 0x19302;
    0x0000c900 adds r2, 7                        |     r2 += 7;
    0x0000c902 add r3, pc                        |     r3 = 0x1930c;
    0x0000c904 strd r3, r0, [sp]                 |     __asm ("strd r3, r0, [sp]");
    0x0000c908 movs r3, 0x66                     |     r3 = 0x66;
    0x0000c90a movs r0, 7                        |     r0 = 7;
    0x0000c90c bl 0x8430                         |     fcn_00008430 (r0, r1, r2, r3, r4);
    0x0000c910 ldr r0, [r5]                      |     r0 = *(r5);
    0x0000c912 subs r0, 0                        |     
    0x0000c914 it ne                             |     
                                                 |     if (r0 == 0) {
    0x0000c916 movne r0, 1                       |         r0 = 1;
                                                 |     }
    0x0000c918 b 0xc8b4                          |     goto label_0;
                                                 | label_6:
    0x0000c91a ldr r1, [pc, 0xec]                |     
    0x0000c91c mov r0, r5                        |     r0 = r5;
    0x0000c91e add r1, pc                        |     r1 = 0x1932c;
    0x0000c920 blx 0x1b08                        |     r0 = fcn_00001b08 ();
                                                 |     if (r0 != 0) {
    0x0000c924 cbz r0, 0xc954                    |         
    0x0000c926 mov r0, r5                        |         r0 = r5;
    0x0000c928 bl 0x9428                         |         r0 = fcn_00009428 (r0);
    0x0000c92c subs r5, r0, 0                    |         r5 = r0 - 0;
                                                 |         if (r5 >= r0) {
    0x0000c92e bge 0xc9c0                        |             goto label_9;
                                                 |         }
    0x0000c930 bl 0x7be0                         |         r0 = fcn_00007be0 ();
    0x0000c934 cmp r0, 6                         |         
                                                 |         if (r0 <= 6) {
    0x0000c936 ble 0xc954                        |             goto label_5;
                                                 |         }
    0x0000c938 ldr r2, [pc, 0xd0]                |         
    0x0000c93a movs r3, 0x57                     |         r3 = 0x57;
    0x0000c93c ldr r4, [pc, 0xd0]                |         
    0x0000c93e mov r1, r5                        |         r1 = r5;
    0x0000c940 ldr r0, [pc, 0xd0]                |         
    0x0000c942 add r2, pc                        |         r2 = 0x19352;
    0x0000c944 add r4, pc                        |         r4 = 0x19358;
    0x0000c946 adds r2, 7                        |         r2 += 7;
    0x0000c948 add r0, pc                        |         r0 = 0x19360;
    0x0000c94a strd r0, r4, [sp]                 |         __asm ("strd r0, r4, [sp]");
    0x0000c94e movs r0, 7                        |         r0 = 7;
    0x0000c950 bl 0x8430                         |         fcn_00008430 (r0, r1, r2, r3, r4);
                                                 |     }
                                                 | label_5:
    0x0000c954 ldr r0, [pc, 0xc0]                |     
    0x0000c956 add r0, pc                        |     r0 = 0x19372;
    0x0000c958 bl 0xb084                         |     r0 = fcn_0000b084 ();
    0x0000c95c subs r4, r0, 0                    |     r4 = r0 - 0;
    0x0000c95e blt 0xc99a                        |     
                                                 |     while (r0 <= 6) {
                                                 | label_2:
    0x0000c960 ldr r3, [pc, 0xb8]                |         
    0x0000c962 cmp r4, 0                         |         
    0x0000c964 ite le                            |         
                                                 |         if (r4 > 0) {
    0x0000c966 movle r4, 0                       |             r4 = 0;
                                                 |         }
                                                 |         if (r4 <= 0) {
    0x0000c968 movgt r4, 1                       |             r4 = 1;
                                                 |         }
    0x0000c96a add r3, pc                        |         r3 = 0x1938a;
    0x0000c96c str r4, [r3]                      |         *(r3) = r4;
    0x0000c96e b 0xc8d0                          |         goto label_1;
                                                 | label_8:
    0x0000c970 movs r3, 1                        |         r3 = 1;
    0x0000c972 mov r0, r3                        |         r0 = r3;
    0x0000c974 str r3, [r5]                      |         *(r5) = r3;
    0x0000c976 add sp, 0xc                       |         
    0x0000c978 pop {r4, r5, pc}                  |         
                                                 | label_7:
    0x0000c97a blx 0x1de8                        |         r0 = sprintf_chk ()
    0x0000c97e ldr r4, [r0]                      |         r4 = *(r0);
    0x0000c980 cmp r4, 2                         |         
                                                 |         if (r4 != 2) {
    0x0000c982 beq 0xc98c                        |             
    0x0000c984 bl 0x7be0                         |             r0 = fcn_00007be0 ();
    0x0000c988 cmp r0, 6                         |             
                                                 |             if (r0 > 6) {
    0x0000c98a bgt 0xc9ca                        |                 goto label_10;
                                                 |             }
                                                 |         }
                                                 | label_3:
    0x0000c98c ldr r3, [pc, 0x90]                |         
    0x0000c98e movs r2, 0                        |         r2 = 0;
    0x0000c990 mov r0, r2                        |         r0 = r2;
    0x0000c992 add r3, pc                        |         r3 = 0x193b6;
    0x0000c994 str r2, [r3]                      |         *(r3) = r2;
    0x0000c996 add sp, 0xc                       |         
    0x0000c998 pop {r4, r5, pc}                  |         
    0x0000c99a bl 0x7be0                         |         r0 = fcn_00007be0 ();
    0x0000c99e cmp r0, 6                         |         
    0x0000c9a0 ble 0xc960                        |         
                                                 |     }
    0x0000c9a2 ldr r2, [pc, 0x80]                |     
    0x0000c9a4 movs r3, 0x5e                     |     r3 = 0x5e;
    0x0000c9a6 ldr r0, [pc, 0x80]                |     
    0x0000c9a8 ldr r1, [pc, 0x80]                |     
    0x0000c9aa add r2, pc                        |     r2 = 0x193d4;
    0x0000c9ac add r0, pc                        |     r0 = 0x193da;
    0x0000c9ae adds r2, 7                        |     r2 += 7;
    0x0000c9b0 add r1, pc                        |     r1 = 0x193e0;
    0x0000c9b2 strd r1, r0, [sp]                 |     __asm ("strd r1, r0, [sp]");
    0x0000c9b6 mov r1, r4                        |     r1 = r4;
    0x0000c9b8 movs r0, 7                        |     r0 = 7;
    0x0000c9ba bl 0x8430                         |     fcn_00008430 (r0, r1, r2, r3, r4);
    0x0000c9be b 0xc960                          |     goto label_2;
                                                 | label_9:
    0x0000c9c0 ite gt                            |     
                                                 |     if (r0 <= 7) {
    0x0000c9c2 movgt r0, 1                       |         r0 = 1;
                                                 |     }
                                                 |     if (r0 > 7) {
    0x0000c9c4 movle r0, 0                       |         r0 = 0;
                                                 |     }
    0x0000c9c6 str r0, [r4]                      |     *(r4) = r0;
    0x0000c9c8 b 0xc8b4                          |     goto label_0;
                                                 | label_10:
    0x0000c9ca ldr r2, [pc, 0x64]                |     
    0x0000c9cc movs r3, 0x6b                     |     r3 = 0x6b;
    0x0000c9ce ldr r5, [pc, 0x64]                |     
    0x0000c9d0 mov r1, r4                        |     r1 = r4;
    0x0000c9d2 ldr r0, [pc, 0x64]                |     
    0x0000c9d4 add r2, pc                        |     r2 = 0x1940a;
    0x0000c9d6 add r5, pc                        |     r5 = 0x19410;
    0x0000c9d8 adds r2, 7                        |     r2 += 7;
    0x0000c9da add r0, pc                        |     r0 = 0x19418;
    0x0000c9dc strd r0, r5, [sp]                 |     __asm ("strd r0, r5, [sp]");
    0x0000c9e0 movs r0, 7                        |     r0 = 7;
    0x0000c9e2 bl 0x8430                         |     fcn_00008430 (r0, r1, r2, r3, r4);
    0x0000c9e6 b 0xc98c                          |     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/cdrom_id @ 0xca3c */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) fcn.0000ca3c ()                              | void fcn_0000ca3c () {
                                                         |     int32_t var_0h;
                                                         |     int32_t var_0h_2;
                                                         |     int16_t var_8h;
    0x0000ca3c ldr r2, [pc, 0x6c]                        |     
    0x0000ca3e push.w {r4, r5, r6, r7, r8, lr}           |     
    0x0000ca42 movs r7, 0                                |     r7 = 0;
    0x0000ca44 ldr r5, [pc, 0x68]                        |     
    0x0000ca46 sub sp, 0x10                              |     
    0x0000ca48 add r2, pc                                |     r2 = 0x194f8;
    0x0000ca4a ldr.w r8, [pc, 0x68]                      |     
    0x0000ca4e adds r4, r2, 7                            |     r4 = r2 + 7;
    0x0000ca50 add r5, pc                                |     r5 = 0x19504;
    0x0000ca52 add r8, pc                                |     r8 = 0x1950c;
                                                         |     do {
    0x0000ca54 movs r1, 0                                |         r1 = 0;
    0x0000ca56 mov r0, r5                                |         r0 = r5;
    0x0000ca58 blx 0x1e94                                |         r0 = fcn_00001e94 ();
    0x0000ca5c cmp r0, 0                                 |         
                                                         |         if (r0 >= 0) {
    0x0000ca5e bge 0xca9e                                |             goto label_2;
                                                         |         }
    0x0000ca60 blx 0x1de8                                |         r0 = sprintf_chk ()
    0x0000ca64 ldr r6, [r0]                              |         r6 = *(r0);
    0x0000ca66 cmp r6, 2                                 |         
                                                         |         if (r6 != 2) {
    0x0000ca68 beq 0xca72                                |             
    0x0000ca6a bl 0x7be0                                 |             r0 = fcn_00007be0 ();
    0x0000ca6e cmp r0, 6                                 |             
                                                         |             if (r0 > 6) {
    0x0000ca70 bgt 0xca84                                |                 goto label_3;
                                                         |             }
                                                         |         }
                                                         | label_0:
    0x0000ca72 ldr r5, [pc, 0x44]                        |         
    0x0000ca74 add r5, pc                                |         r5 = 0x19532;
                                                         |         if (r7 != 0) {
    0x0000ca76 cbz r7, 0xca80                            |             
    0x0000ca78 movs r0, 0                                |             r0 = 0;
                                                         | label_1:
    0x0000ca7a add sp, 0x10                              |             
    0x0000ca7c pop.w {r4, r5, r6, r7, r8, pc}            |             
                                                         |         }
    0x0000ca80 movs r7, 1                                |         r7 = 1;
    0x0000ca82 b 0xca54                                  |         
                                                         |     } while (1);
                                                         | label_3:
    0x0000ca84 ldr r0, [pc, 0x34]                        |     
    0x0000ca86 movw r3, 0x27a                            |     r3 = 0x27a;
    0x0000ca8a mov r2, r4                                |     r2 = r4;
    0x0000ca8c mov r1, r6                                |     r1 = r6;
    0x0000ca8e str r5, [sp, 8]                           |     var_8h = r5;
    0x0000ca90 add r0, pc                                |     r0 = 0x19550;
    0x0000ca92 strd r0, r8, [sp]                         |     __asm ("strd r0, r8, [sp]");
    0x0000ca96 movs r0, 7                                |     r0 = 7;
    0x0000ca98 bl 0x8430                                 |     fcn_00008430 (r0, r1, r2, r3, r4);
    0x0000ca9c b 0xca72                                  |     goto label_0;
                                                         | label_2:
    0x0000ca9e ldr r3, [pc, 0x20]                        |     
    0x0000caa0 add r3, pc                                |     r3 = 0x19566;
    0x0000caa2 add.w r3, r3, r7, lsl 3                   |     r3 += (r7 << 3);
    0x0000caa6 ldr r0, [r3, 4]                           |     r0 = *((r3 + 4));
    0x0000caa8 b 0xca7a                                  |     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/cdrom_id @ 0xcadc */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.0000cadc ()                      | void fcn_0000cadc () {
                                                 |     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;
    0x0000cadc ldr r2, [pc, 0x2d4]               |     
    0x0000cade ldr r3, [pc, 0x2d8]               |     r3 = *(0xcdba);
    0x0000cae0 ldr r0, [pc, 0x2c4]               |     
    0x0000cae2 add r2, pc                        |     r2 = 0x1989a;
    0x0000cae4 push {r4, r5, r6, r7, lr}         |     
    0x0000cae6 ldr r6, [pc, 0x2c4]               |     r6 = *(0xcdae);
    0x0000cae8 sub sp, 0x2c                      |     
    0x0000caea movs r4, 0                        |     r4 = 0;
    0x0000caec ldr r3, [r2, r3]                  |     
    0x0000caee add r7, sp, 0x10                  |     r7 += var_10h;
    0x0000caf0 add r0, pc                        |     r0 = 0x1989c;
    0x0000caf2 ldr r3, [r3]                      |     r3 = *(0x1989a);
    0x0000caf4 str r3, [r7, 0x14]                |     var_14h = r3;
    0x0000caf6 mov.w r3, 0                       |     r3 = 0;
    0x0000cafa strd r4, r4, [r7]                 |     __asm ("strd r4, r4, [r7]");
    0x0000cafe str r4, [r7, 8]                   |     var_8h_3 = r4;
    0x0000cb00 blx 0x1f60                        |     fcn_00001f60 ();
    0x0000cb04 ldr r5, [r6, r0]                  |     r5 = *(0xcdae);
    0x0000cb06 cmp r5, r4                        |     
    0x0000cb08 it ge                             |     
                                                 |     if (r5 < r4) {
    0x0000cb0a movge r0, r4                      |         r0 = r4;
                                                 |     }
    0x0000cb0c blt 0xcb3c                        |     
                                                 |     while (1) {
                                                 | label_5:
    0x0000cb0e blx 0x1b80                        |         fcn_00001b80 ();
    0x0000cb12 ldr r0, [r7, 4]                   |         r0 = var_0h_3;
    0x0000cb14 blx 0x1b80                        |         fcn_00001b80 ();
    0x0000cb18 ldr r0, [r7]                      |         r0 = *(r7);
    0x0000cb1a blx 0x1b80                        |         fcn_00001b80 ();
    0x0000cb1e ldr r2, [pc, 0x29c]               |         
    0x0000cb20 ldr r3, [pc, 0x294]               |         r3 = *(0xcdb8);
    0x0000cb22 add r2, pc                        |         r2 = 0x198e4;
    0x0000cb24 ldr r3, [r2, r3]                  |         r3 = *(0x198e4);
    0x0000cb26 ldr r2, [r3]                      |         r2 = *(0x198e4);
    0x0000cb28 ldr r3, [r7, 0x14]                |         r3 = var_14h;
    0x0000cb2a eors r2, r3                       |         r2 ^= r3;
    0x0000cb2c mov.w r3, 0                       |         r3 = 0;
                                                 |         if (r2 != r3) {
    0x0000cb30 bne.w 0xcfc8                      |             goto label_22;
                                                 |         }
    0x0000cb34 mov r0, r5                        |         r0 = r5;
    0x0000cb36 adds r7, 0x1c                     |         r7 += 0x1c;
    0x0000cb38 mov sp, r7                        |         
    0x0000cb3a pop {r4, r5, r6, r7, pc}          |         
    0x0000cb3c ldr r0, [pc, 0x280]               |         
    0x0000cb3e mov r1, r4                        |         r1 = r4;
    0x0000cb40 add r0, pc                        |         r0 = 0x19904;
    0x0000cb42 blx 0x1e94                        |         r0 = fcn_00001e94 ();
    0x0000cb46 cmp r0, r4                        |         
                                                 |         if (r0 >= r4) {
    0x0000cb48 bge 0xcc42                        |             goto label_23;
                                                 |         }
    0x0000cb4a blx 0x1de8                        |         r0 = sprintf_chk ()
    0x0000cb4e ldr r4, [r0]                      |         r4 = *(r0);
    0x0000cb50 cmp r4, 2                         |         
                                                 |         if (r4 != 2) {
    0x0000cb52 beq 0xcb7a                        |             
    0x0000cb54 bl 0x7be0                         |             r0 = fcn_00007be0 ();
    0x0000cb58 cmp r0, 6                         |             
                                                 |             if (r0 <= 6) {
    0x0000cb5a ble 0xcb7a                        |                 goto label_1;
                                                 |             }
    0x0000cb5c ldr r2, [pc, 0x264]               |             
    0x0000cb5e movw r3, 0x28e                    |             r3 = 0x28e;
    0x0000cb62 ldr r5, [pc, 0x264]               |             
    0x0000cb64 ldr r0, [pc, 0x264]               |             
    0x0000cb66 add r2, pc                        |             r2 = 0x1992e;
    0x0000cb68 add r5, pc                        |             r5 = 0x19936;
    0x0000cb6a add r0, pc                        |             r0 = 0x1993a;
                                                 | label_2:
    0x0000cb6c strd r0, r5, [sp]                 |             __asm ("strd r0, r5, [sp]");
    0x0000cb70 mov r1, r4                        |             r1 = r4;
    0x0000cb72 adds r2, 7                        |             r2 += 7;
    0x0000cb74 movs r0, 7                        |             r0 = 7;
    0x0000cb76 bl 0x8430                         |             fcn_00008430 (r0, r1, r2, r3, r4);
                                                 |         }
                                                 | label_1:
    0x0000cb7a ldr r0, [pc, 0x254]               |         
    0x0000cb7c adds r1, r7, 4                    |         r1 += var_0h_3;
    0x0000cb7e add r0, pc                        |         r0 = 0x19954;
    0x0000cb80 bl 0x6348                         |         r0 = fcn_00006348 (r0, r1);
    0x0000cb84 subs r4, r0, 0                    |         r4 = r0 - 0;
                                                 |         if (r4 < r0) {
    0x0000cb86 blt 0xcc76                        |             goto label_24;
                                                 |         }
    0x0000cb88 ldr r4, [r7, 4]                   |         r4 = var_0h_3;
    0x0000cb8a ldr r1, [pc, 0x248]               |         
    0x0000cb8c mov r0, r4                        |         r0 = r4;
    0x0000cb8e add r1, pc                        |         r1 = 0x19968;
    0x0000cb90 blx 0x1ad4                        |         r0 = fcn_00001ad4 ();
                                                 |         if (r0 == 0) {
    0x0000cb94 cbz r0, 0xcbb0                    |             goto label_25;
                                                 |         }
                                                 | label_0:
    0x0000cb96 movs r5, 0x18                     |         r5 = 0x18;
                                                 | label_6:
    0x0000cb98 bl 0x7be0                         |         r0 = fcn_00007be0 ();
    0x0000cb9c cmp r0, 6                         |         
                                                 |         if (r0 > 6) {
    0x0000cb9e bgt 0xcc9e                        |             goto label_26;
                                                 |         }
                                                 | label_4:
    0x0000cba0 ldr r0, [pc, 0x20c]               |         
    0x0000cba2 add r0, pc                        |         r0 = 0x19956;
    0x0000cba4 blx 0x1f60                        |         r0 = fcn_00001f60 ();
    0x0000cba8 mov r3, r0                        |         r3 = r0;
    0x0000cbaa ldr r0, [r7, 8]                   |         r0 = var_8h_3;
    0x0000cbac str r5, [r6, r3]                  |         *((r6 + r3)) = r5;
    0x0000cbae b 0xcb0e                          |         
                                                 |     }
                                                 | label_25:
    0x0000cbb0 ldr r1, [pc, 0x224]               |     
    0x0000cbb2 mov r0, r4                        |     r0 = r4;
    0x0000cbb4 add r1, pc                        |     r1 = 0x19990;
    0x0000cbb6 blx 0x1ad4                        |     r0 = fcn_00001ad4 ();
    0x0000cbba cmp r0, 0                         |     
                                                 |     if (r0 != 0) {
    0x0000cbbc bne 0xcb96                        |         goto label_0;
                                                 |     }
                                                 | label_3:
    0x0000cbbe ldr r2, [pc, 0x21c]               |     
    0x0000cbc0 add.w r3, r7, 8                   |     r3 += var_8h_3;
    0x0000cbc4 ldr r1, [pc, 0x218]               |     
    0x0000cbc6 ldr r0, [pc, 0x21c]               |     
    0x0000cbc8 add r2, pc                        |     r2 = 0x199aa;
    0x0000cbca add r1, pc                        |     r1 = 0x199ae;
    0x0000cbcc add r0, pc                        |     r0 = 0x199b6;
    0x0000cbce bl 0x5f04                         |     r0 = fcn_00005f04 (r0, r1, r2, r3);
    0x0000cbd2 subs r4, r0, 0                    |     r4 = r0 - 0;
                                                 |     if (r4 < r0) {
    0x0000cbd4 blt 0xccc6                        |         goto label_27;
                                                 |     }
    0x0000cbd6 ldr r0, [r7, 8]                   |     r0 = var_8h_3;
    0x0000cbd8 ldrb r3, [r0]                     |     r3 = *(r0);
    0x0000cbda cmp r3, 0x30                      |     
                                                 |     if (r3 == 0x30) {
    0x0000cbdc beq.w 0xcd28                      |         goto label_28;
                                                 |     }
                                                 | label_8:
    0x0000cbe0 add.w r1, r7, 0xc                 |     r1 += var_ch;
    0x0000cbe4 bl 0x95fc                         |     r0 = fcn_000095fc (r0, r1);
    0x0000cbe8 subs r4, r0, 0                    |     r4 = r0 - 0;
                                                 |     if (r4 < r0) {
    0x0000cbea blt.w 0xce48                      |         goto label_29;
                                                 |     }
    0x0000cbee ldr r1, [r7, 0xc]                 |     r1 = var_ch;
    0x0000cbf0 movs r3, 0                        |     r3 = 0;
    0x0000cbf2 str r3, [r7, 0x10]                |     var_10h_3 = r3;
    0x0000cbf4 cmp r1, 0                         |     
                                                 |     if (r1 != 0) {
    0x0000cbf6 bne.w 0xce96                      |         goto label_30;
                                                 |     }
    0x0000cbfa ldr r3, [pc, 0x1ec]               |     
    0x0000cbfc sub sp, 0x10                      |     
    0x0000cbfe ldr r5, [pc, 0x1ec]               |     
    0x0000cc00 add r4, sp, 0x10                  |     r4 += var_0h;
    0x0000cc02 add r3, pc                        |     r3 = 0x199f0;
    0x0000cc04 ldm.w r3, {r0, r1, r2}            |     r0 = *(r3);
                                                 |     r1 = *((r3 + 4));
                                                 |     r2 = *((r3 + 8));
    0x0000cc08 add r5, pc                        |     r5 = 0x199fa;
    0x0000cc0a stm.w r4, {r0, r1, r2}            |     *(r4) = r0;
                                                 |     *((r4 + 4)) = r1;
                                                 |     *((r4 + 8)) = r2;
    0x0000cc0e ldrb r2, [r5, 4]                  |     r2 = *((r5 + 4));
    0x0000cc10 ldr r0, [r5]                      |     r0 = *(0x199fa);
    0x0000cc12 strb r2, [r4, 0xf]                |     var_fh = r2;
    0x0000cc14 str.w r0, [r4, 0xb]               |     __asm ("str.w r0, [var_bh]");
                                                 | label_15:
    0x0000cc18 add.w r1, r7, 0x10                |     r1 += var_10h_3;
    0x0000cc1c mov r0, r4                        |     r0 = r4;
    0x0000cc1e bl 0x6348                         |     fcn_00006348 (r0, r1);
    0x0000cc22 subs r5, r0, 0                    |     r5 -= socket;
                                                 |     if (r5 < socket) {
    0x0000cc24 blt.w 0xcf3e                      |         goto label_31;
                                                 |     }
    0x0000cc28 ldr r4, [r7, 0x10]                |     r4 = var_10h_3;
    0x0000cc2a ldr r1, [pc, 0x1c4]               |     
    0x0000cc2c mov r0, r4                        |     r0 = r4;
    0x0000cc2e add r1, pc                        |     r1 = 0x19a24;
    0x0000cc30 bl 0xd054                         |     r0 = fcn_0000d054 (r0, r1);
    0x0000cc34 cmp r0, 0                         |     
                                                 |     if (r0 != 0) {
    0x0000cc36 bne.w 0xcf74                      |         goto label_32;
                                                 |     }
                                                 | label_17:
    0x0000cc3a mov r0, r4                        |     r0 = r4;
    0x0000cc3c blx 0x1b80                        |     fcn_00001b80 ();
    0x0000cc40 b 0xccd0                          |     goto label_7;
                                                 | label_23:
    0x0000cc42 ldr r0, [pc, 0x1b0]               |     
    0x0000cc44 mov r1, r4                        |     r1 = r4;
    0x0000cc46 add r0, pc                        |     r0 = 0x19a40;
    0x0000cc48 blx 0x1e94                        |     r0 = fcn_00001e94 ();
    0x0000cc4c cmp r0, 0                         |     
                                                 |     if (r0 >= 0) {
    0x0000cc4e bge 0xcb7a                        |         goto label_1;
                                                 |     }
    0x0000cc50 blx 0x1de8                        |     r0 = sprintf_chk ()
    0x0000cc54 ldr r4, [r0]                      |     r4 = *(r0);
    0x0000cc56 bl 0x7be0                         |     fcn_00007be0 ();
    0x0000cc5a cmp r4, 2                         |     
                                                 |     if (r4 == 2) {
    0x0000cc5c beq.w 0xce92                      |         goto label_33;
                                                 |     }
    0x0000cc60 cmp r0, 6                         |     
                                                 |     if (r0 <= 6) {
    0x0000cc62 ble 0xcb7a                        |         goto label_1;
                                                 |     }
    0x0000cc64 ldr r2, [pc, 0x190]               |     
    0x0000cc66 movw r3, 0x295                    |     r3 = 0x295;
    0x0000cc6a ldr r5, [pc, 0x190]               |     
    0x0000cc6c ldr r0, [pc, 0x190]               |     
    0x0000cc6e add r2, pc                        |     r2 = 0x19a6a;
    0x0000cc70 add r5, pc                        |     r5 = 0x19a72;
    0x0000cc72 add r0, pc                        |     r0 = 0x19a76;
    0x0000cc74 b 0xcb6c                          |     goto label_2;
                                                 | label_24:
    0x0000cc76 bl 0x7be0                         |     r0 = fcn_00007be0 ();
    0x0000cc7a cmp r0, 6                         |     
                                                 |     if (r0 <= 6) {
    0x0000cc7c ble 0xcbbe                        |         goto label_3;
                                                 |     }
    0x0000cc7e ldr r2, [pc, 0x184]               |     
    0x0000cc80 movw r3, 0x29b                    |     r3 = 0x29b;
    0x0000cc84 ldr r5, [pc, 0x180]               |     
    0x0000cc86 mov r1, r4                        |     r1 = r4;
    0x0000cc88 ldr r0, [pc, 0x180]               |     
    0x0000cc8a add r2, pc                        |     r2 = 0x19a94;
    0x0000cc8c add r5, pc                        |     r5 = 0x19a98;
    0x0000cc8e adds r2, 7                        |     r2 += 7;
    0x0000cc90 add r0, pc                        |     r0 = 0x19aa0;
    0x0000cc92 strd r0, r5, [sp]                 |     __asm ("strd r0, r5, [sp]");
    0x0000cc96 movs r0, 7                        |     r0 = 7;
    0x0000cc98 bl 0x8430                         |     fcn_00008430 (r0, r1, r2, r3, r4);
    0x0000cc9c b 0xcbbe                          |     goto label_3;
                                                 | label_26:
    0x0000cc9e mov r0, r5                        |     r0 = r5;
    0x0000cca0 ldr r4, [pc, 0x16c]               |     
    0x0000cca2 bl 0xcac4                         |     fcn_0000cac4 (r0);
    0x0000cca6 ldr r2, [pc, 0x16c]               |     
    0x0000cca8 movs r1, 0                        |     r1 = 0;
    0x0000ccaa ldr r3, [pc, 0x16c]               |     
    0x0000ccac add r4, pc                        |     r4 = 0x19ac0;
    0x0000ccae str r0, [sp, 8]                   |     var_8h = r0;
    0x0000ccb0 movs r0, 7                        |     r0 = 7;
    0x0000ccb2 add r2, pc                        |     r2 = 0x19acc;
    0x0000ccb4 str r4, [sp]                      |     *(sp) = r4;
    0x0000ccb6 add r3, pc                        |     r3 = 0x19ad4;
    0x0000ccb8 adds r2, 7                        |     r2 += 7;
    0x0000ccba str r3, [sp, 4]                   |     var_4h = r3;
    0x0000ccbc movw r3, 0x30e                    |     r3 = 0x30e;
    0x0000ccc0 bl 0x8430                         |     fcn_00008430 (r0, r1, r2, r3, r4);
    0x0000ccc4 b 0xcba0                          |     goto label_4;
                                                 | label_27:
    0x0000ccc6 bl 0x7be0                         |     r0 = fcn_00007be0 ();
    0x0000ccca cmp r0, 6                         |     
                                                 |     if (r0 > 6) {
    0x0000cccc bgt.w 0xce80                      |         goto label_34;
                                                 |     }
                                                 | label_7:
    0x0000ccd0 ldr r0, [pc, 0x148]               |     
    0x0000ccd2 mov r1, r7                        |     r1 = r7;
    0x0000ccd4 add r0, pc                        |     r0 = 0x19af4;
    0x0000ccd6 bl 0x6348                         |     r0 = fcn_00006348 (r0, r1);
    0x0000ccda subs r4, r0, 0                    |     r4 = r0 - 0;
                                                 |     if (r4 <= r0) {
    0x0000ccdc bgt 0xcd00                        |         
    0x0000ccde adds r3, r4, 2                    |         r3 = r4 + 2;
    0x0000cce0 bics r3, r3, 2                    |         __asm ("bics r3, r3, 2");
                                                 |         if (r3 == r4) {
    0x0000cce4 beq 0xcd30                        |             goto label_35;
                                                 |         }
    0x0000cce6 bl 0x7be0                         |         r0 = fcn_00007be0 ();
    0x0000ccea cmp r0, 6                         |         
                                                 |         if (r0 > 6) {
    0x0000ccec bgt 0xcd7a                        |             goto label_36;
                                                 |         }
                                                 | label_10:
    0x0000ccee rsbs r5, r4, 0                    |         r5 = r4 - ;
    0x0000ccf0 uxtb r5, r5                       |         r5 = (int8_t) r5;
    0x0000ccf2 rsbs r5, r5, 0                    |         r5 -= ;
                                                 | label_11:
    0x0000ccf4 cmp r5, 0                         |         
    0x0000ccf6 ldr r0, [r7, 8]                   |         r0 = var_8h_3;
    0x0000ccf8 it ge                             |         
                                                 |         if (r5 < 0) {
    0x0000ccfa mvnge r5, 0x55                    |             r5 = ~0x55;
                                                 |         }
    0x0000ccfe b 0xcb0e                          |         goto label_5;
                                                 |     }
                                                 | label_9:
    0x0000cd00 ldr r4, [r7]                      |     r4 = *(r7);
                                                 | label_12:
    0x0000cd02 ldr r1, [pc, 0x11c]               |     
    0x0000cd04 mov r0, r4                        |     r0 = r4;
    0x0000cd06 add r1, pc                        |     r1 = 0x19b2c;
    0x0000cd08 blx 0x1b08                        |     r0 = fcn_00001b08 ();
    0x0000cd0c cmp r0, 0                         |     
                                                 |     if (r0 == 0) {
    0x0000cd0e beq.w 0xce72                      |         goto label_37;
                                                 |     }
    0x0000cd12 ldr r0, [pc, 0x110]               |     
    0x0000cd14 mov r2, r4                        |     r2 = r4;
    0x0000cd16 movs r1, 0x1c                     |     r1 = 0x1c;
    0x0000cd18 add r0, pc                        |     r0 = 0x19b42;
    0x0000cd1a bl 0xb0dc                         |     r0 = fcn_0000b0dc (r0, r1, r2);
    0x0000cd1e subs r5, r0, 0                    |     r5 = r0 - 0;
                                                 |     if (r5 >= r0) {
    0x0000cd20 bge.w 0xcb98                      |         goto label_6;
                                                 |     }
                                                 | label_13:
    0x0000cd24 movs r5, 0x1b                     |     r5 = 0x1b;
    0x0000cd26 b 0xcb98                          |     goto label_6;
                                                 | label_28:
    0x0000cd28 ldrb r3, [r0, 1]                  |     r3 = *((r0 + 1));
    0x0000cd2a cmp r3, 0                         |     
                                                 |     if (r3 == 0) {
    0x0000cd2c beq 0xccd0                        |         goto label_7;
                                                 |     }
    0x0000cd2e b 0xcbe0                          |     goto label_8;
                                                 | label_35:
    0x0000cd30 bl 0x9cd0                         |     r0 = fcn_00009cd0 (r0);
    0x0000cd34 cmp r0, 1                         |     
                                                 |     if (r0 == 1) {
    0x0000cd36 beq 0xcd8c                        |         goto label_38;
                                                 |     }
    0x0000cd38 ldr r0, [pc, 0xec]                |     
    0x0000cd3a mov r1, r7                        |     r1 = r7;
    0x0000cd3c add r0, pc                        |     r0 = 0x19b68;
    0x0000cd3e bl 0x6348                         |     r0 = fcn_00006348 (r0, r1);
    0x0000cd42 subs r4, r0, 0                    |     r4 = r0 - 0;
                                                 |     if (r4 > r0) {
    0x0000cd44 bgt 0xcd00                        |         goto label_9;
                                                 |     }
    0x0000cd46 adds r3, r4, 2                    |     r3 = r4 + 2;
    0x0000cd48 bics r3, r3, 2                    |     __asm ("bics r3, r3, 2");
                                                 |     if (r3 == r4) {
    0x0000cd4c beq.w 0xceb2                      |         goto label_39;
                                                 |     }
    0x0000cd50 bl 0x7be0                         |     r0 = fcn_00007be0 ();
    0x0000cd54 cmp r0, 6                         |     
                                                 |     if (r0 <= 6) {
    0x0000cd56 ble 0xccee                        |         goto label_10;
                                                 |     }
    0x0000cd58 ldr r2, [pc, 0xd0]                |     
    0x0000cd5a mov.w r3, 0x2e0                   |     r3 = 0x2e0;
    0x0000cd5e ldr r6, [pc, 0xd0]                |     
    0x0000cd60 ldr r5, [pc, 0xd0]                |     
    0x0000cd62 add r2, pc                        |     r2 = 0x19b92;
    0x0000cd64 add r6, pc                        |     r6 = 0x19b9a;
    0x0000cd66 add r5, pc                        |     r5 = 0x19b9e;
                                                 |     do {
    0x0000cd68 movs r0, 7                        |         r0 = 7;
    0x0000cd6a strd r5, r6, [sp]                 |         __asm ("strd r5, r6, [sp]");
    0x0000cd6e mov r1, r4                        |         r1 = r4;
    0x0000cd70 add r2, r0                        |         r2 += r0;
    0x0000cd72 bl 0x8430                         |         r0 = fcn_00008430 (r0, r1, r2, r3, r4);
    0x0000cd76 mov r5, r0                        |         r5 = r0;
    0x0000cd78 b 0xccf4                          |         goto label_11;
                                                 | label_36:
    0x0000cd7a ldr r2, [pc, 0xbc]                |         
    0x0000cd7c mov.w r3, 0x2c4                   |         r3 = 0x2c4;
    0x0000cd80 ldr r6, [pc, 0xb8]                |         
    0x0000cd82 ldr r5, [pc, 0xbc]                |         
    0x0000cd84 add r2, pc                        |         r2 = 0x19bc2;
    0x0000cd86 add r6, pc                        |         r6 = 0x19bc6;
    0x0000cd88 add r5, pc                        |         r5 = 0x19bce;
    0x0000cd8a b 0xcd68                          |         
                                                 |     } while (1);
                                                 | label_38:
    0x0000cd8c ldr r0, [pc, 0xb4]                |     
    0x0000cd8e add r0, pc                        |     r0 = 0x19bd6;
    0x0000cd90 blx 0x1d00                        |     r0 = fcn_00001d00 ();
    0x0000cd94 mov r4, r0                        |     r4 = r0;
    0x0000cd96 cmp r0, 0                         |     
                                                 |     if (r0 == 0) {
    0x0000cd98 beq.w 0xcece                      |         goto label_18;
                                                 |     }
    0x0000cd9c ldrb r3, [r0]                     |     r3 = *(r0);
    0x0000cd9e cmp r3, 0                         |     
                                                 |     if (r3 != 0) {
    0x0000cda0 bne 0xcd02                        |         goto label_12;
                                                 |     }
                                                 | label_16:
    0x0000cda2 movs r5, 0                        |     r5 = 0;
    0x0000cda4 b 0xcb98                          |     goto label_6;
                                                 | label_29:
    0x0000ce48 bl 0x7be0                         |     r0 = fcn_00007be0 ();
    0x0000ce4c cmp r0, 6                         |     
                                                 |     if (r0 <= 6) {
    0x0000ce4e ble.w 0xccd0                      |         goto label_7;
                                                 |     }
    0x0000ce52 ldr r2, [pc, 0x1a4]               |     
    0x0000ce54 mov.w r3, 0x2ac                   |     r3 = 0x2ac;
    0x0000ce58 ldr r5, [pc, 0x1a0]               |     
    0x0000ce5a ldr r0, [pc, 0x1a4]               |     
    0x0000ce5c add r2, pc                        |     r2 = 0x19e5a;
    0x0000ce5e add r5, pc                        |     r5 = 0x19e5e;
    0x0000ce60 add r0, pc                        |     r0 = 0x19e66;
                                                 | label_14:
    0x0000ce62 strd r0, r5, [sp]                 |     __asm ("strd r0, r5, [sp]");
    0x0000ce66 mov r1, r4                        |     r1 = r4;
    0x0000ce68 adds r2, 7                        |     r2 += 7;
    0x0000ce6a movs r0, 7                        |     r0 = 7;
    0x0000ce6c bl 0x8430                         |     fcn_00008430 (r0, r1, r2, r3, r4);
    0x0000ce70 b 0xccd0                          |     goto label_7;
                                                 | label_37:
    0x0000ce72 bl 0xca3c                         |     r0 = fcn_0000ca3c ();
    0x0000ce76 mov r5, r0                        |     r5 = r0;
    0x0000ce78 cmp r0, 0                         |     
                                                 |     if (r0 != 0) {
    0x0000ce7a bne.w 0xcb98                      |         goto label_6;
                                                 |     }
    0x0000ce7e b 0xcd24                          |     goto label_13;
                                                 | label_34:
    0x0000ce80 ldr r2, [pc, 0x180]               |     
    0x0000ce82 movw r3, 0x2a6                    |     r3 = 0x2a6;
    0x0000ce86 ldr r5, [pc, 0x180]               |     
    0x0000ce88 ldr r0, [pc, 0x180]               |     
    0x0000ce8a add r2, pc                        |     r2 = 0x19e92;
    0x0000ce8c add r5, pc                        |     r5 = 0x19e9a;
    0x0000ce8e add r0, pc                        |     r0 = 0x19e9e;
    0x0000ce90 b 0xce62                          |     goto label_14;
                                                 | label_33:
    0x0000ce92 movs r5, 0x14                     |     r5 = 0x14;
    0x0000ce94 b 0xcb98                          |     goto label_6;
                                                 | label_30:
    0x0000ce96 ldr r0, [pc, 0x178]               |     
    0x0000ce98 sub sp, 0x18                      |     
    0x0000ce9a ldr r3, [pc, 0x178]               |     
    0x0000ce9c add r4, sp, 0x10                  |     r4 += socket;
    0x0000ce9e movs r2, 0x18                     |     r2 = 0x18;
    0x0000cea0 add r0, pc                        |     r0 = 0x19eb6;
    0x0000cea2 strd r1, r0, [sp]                 |     __asm ("strd r1, r0, [sp]");
    0x0000cea6 add r3, pc                        |     r3 = 0x19ec0;
    0x0000cea8 movs r1, 1                        |     r1 = 1;
    0x0000ceaa mov r0, r4                        |     r0 = r4;
    0x0000ceac blx 0x1e00                        |     bind (r0, r1, r2);
    0x0000ceb0 b 0xcc18                          |     goto label_15;
                                                 | label_39:
    0x0000ceb2 ldr r1, [pc, 0x164]               |     
    0x0000ceb4 mov r2, r7                        |     r2 = r7;
    0x0000ceb6 movs r0, 1                        |     r0 = 1;
    0x0000ceb8 add r1, pc                        |     r1 = 0x19ed6;
    0x0000ceba bl 0xa18c                         |     r0 = fcn_0000a18c (r0, r1, r2, r3);
    0x0000cebe subs r4, r0, 0                    |     r4 = r0 - 0;
                                                 |     if (r4 > r0) {
    0x0000cec0 bgt.w 0xcd00                      |         goto label_9;
                                                 |     }
                                                 |     if (r4 != r0) {
    0x0000cec4 beq 0xcece                        |         
    0x0000cec6 bl 0x7be0                         |         r0 = fcn_00007be0 ();
    0x0000ceca cmp r0, 6                         |         
                                                 |         if (r0 > 6) {
    0x0000cecc bgt 0xcf7e                        |             goto label_40;
                                                 |         }
                                                 |     }
                                                 | label_18:
    0x0000cece bl 0xca3c                         |     r0 = fcn_0000ca3c ();
    0x0000ced2 mov r5, r0                        |     r5 = r0;
    0x0000ced4 cmp r0, 0                         |     
                                                 |     if (r0 != 0) {
    0x0000ced6 bne.w 0xcb98                      |         goto label_6;
                                                 |     }
    0x0000ceda bl 0x43e0                         |     r0 = fcn_000043e0 ();
    0x0000cede cmp r0, 0                         |     
                                                 |     if (r0 == 0) {
    0x0000cee0 beq.w 0xcda2                      |         goto label_16;
                                                 |     }
    0x0000cee4 bl 0x4800                         |     r0 = fcn_00004800 ();
    0x0000cee8 subs r4, r0, 0                    |     r4 = r0 - 0;
                                                 |     if (r4 < r0) {
    0x0000ceea blt 0xcf14                        |         goto label_41;
                                                 |     }
                                                 |     if (r4 == r0) {
    0x0000ceec beq 0xcf9e                        |         goto label_42;
                                                 |     }
    0x0000ceee ldr r0, [pc, 0x12c]               |     
    0x0000cef0 mov r1, r5                        |     r1 = r5;
    0x0000cef2 add r0, pc                        |     r0 = 0x19f14;
    0x0000cef4 blx 0x1e94                        |     r0 = fcn_00001e94 ();
    0x0000cef8 cmp r0, 0                         |     
                                                 |     if (r0 >= 0) {
    0x0000cefa bge 0xcfcc                        |         goto label_43;
                                                 |     }
                                                 | label_19:
    0x0000cefc blx 0x1de8                        |     r0 = sprintf_chk ()
    0x0000cf00 ldr r4, [r0]                      |     r4 = *(r0);
    0x0000cf02 cmp r4, 2                         |     
                                                 |     if (r4 == 2) {
    0x0000cf04 beq.w 0xcda2                      |         goto label_16;
                                                 |     }
                                                 | label_20:
    0x0000cf08 rsbs r4, r4, 0                    |     r4 -= ;
    0x0000cf0a cmp r4, 0                         |     
                                                 |     if (r4 > 0) {
    0x0000cf0c bgt.w 0xcd24                      |         goto label_13;
                                                 |     }
                                                 |     if (r4 == 0) {
    0x0000cf10 beq.w 0xcda2                      |         goto label_16;
                                                 |     }
                                                 | label_41:
    0x0000cf14 bl 0x7be0                         |     r0 = fcn_00007be0 ();
    0x0000cf18 cmp r0, 6                         |     
                                                 |     if (r0 <= 6) {
    0x0000cf1a ble.w 0xcba0                      |         goto label_4;
                                                 |     }
    0x0000cf1e ldr r2, [pc, 0x100]               |     
    0x0000cf20 mov r1, r4                        |     r1 = r4;
    0x0000cf22 ldr r0, [pc, 0x100]               |     
    0x0000cf24 ldr r3, [pc, 0x100]               |     
    0x0000cf26 add r2, pc                        |     r2 = 0x19f4c;
    0x0000cf28 add r0, pc                        |     r0 = 0x19f52;
    0x0000cf2a adds r2, 7                        |     r2 += 7;
    0x0000cf2c add r3, pc                        |     r3 = 0x19f58;
    0x0000cf2e strd r3, r0, [sp]                 |     __asm ("strd r3, r0, [sp]");
    0x0000cf32 movw r3, 0x2fa                    |     r3 = 0x2fa;
    0x0000cf36 movs r0, 7                        |     r0 = 7;
    0x0000cf38 bl 0x8430                         |     fcn_00008430 (r0, r1, r2, r3, r4);
    0x0000cf3c b 0xcb98                          |     goto label_6;
                                                 | label_31:
    0x0000cf3e bl 0x7be0                         |     r0 = fcn_00007be0 ();
    0x0000cf42 cmp r0, 6                         |     
    0x0000cf44 it le                             |     
                                                 |     if (r0 <= 6) {
    0x0000cf46 ldrle r4, [r7, 0x10]              |         r4 = *((r7 + 0x10));
                                                 |         goto label_44;
                                                 |     }
                                                 |     if (r0 <= 6) {
                                                 | label_44:
    0x0000cf48 ble.w 0xcc3a                      |         goto label_17;
                                                 |     }
    0x0000cf4c ldr r2, [pc, 0xdc]                |     
    0x0000cf4e mov r1, r5                        |     r1 = r5;
    0x0000cf50 ldr r3, [pc, 0xdc]                |     
    0x0000cf52 movs r0, 7                        |     r0 = 7;
    0x0000cf54 ldr.w ip, [pc, 0xdc]              |     
    0x0000cf58 add r2, pc                        |     r2 = 0x19f88;
    0x0000cf5a str r4, [sp, 8]                   |     var_8h_2 = r4;
    0x0000cf5c add r3, pc                        |     r3 = 0x19f90;
    0x0000cf5e adds r2, 7                        |     r2 += 7;
    0x0000cf60 add ip, pc                        |     ip = 0x19f98;
    0x0000cf62 str r3, [sp, 4]                   |     var_4h_2 = r3;
    0x0000cf64 str.w ip, [sp]                    |     __asm ("str.w ip, [sp]");
    0x0000cf68 mov.w r3, 0x2b4                   |     r3 = 0x2b4;
    0x0000cf6c bl 0x8430                         |     fcn_00008430 (r0, r1, r2, r3, r4);
    0x0000cf70 ldr r4, [r7, 0x10]                |     r4 = var_10h_3;
    0x0000cf72 b 0xcc3a                          |     goto label_17;
                                                 | label_32:
    0x0000cf74 mov r0, r4                        |     r0 = r4;
    0x0000cf76 movs r5, 0x19                     |     r5 = 0x19;
    0x0000cf78 blx 0x1b80                        |     fcn_00001b80 ();
    0x0000cf7c b 0xcb98                          |     goto label_6;
                                                 | label_40:
    0x0000cf7e ldr r2, [pc, 0xb8]                |     
    0x0000cf80 movw r3, 0x2e9                    |     r3 = 0x2e9;
    0x0000cf84 ldr r5, [pc, 0xb4]                |     
    0x0000cf86 mov r1, r4                        |     r1 = r4;
    0x0000cf88 ldr r0, [pc, 0xb4]                |     
    0x0000cf8a add r2, pc                        |     r2 = 0x19fc8;
    0x0000cf8c add r5, pc                        |     r5 = 0x19fcc;
    0x0000cf8e adds r2, 7                        |     r2 += 7;
    0x0000cf90 add r0, pc                        |     r0 = 0x19fd4;
    0x0000cf92 strd r0, r5, [sp]                 |     __asm ("strd r0, r5, [sp]");
    0x0000cf96 movs r0, 7                        |     r0 = 7;
    0x0000cf98 bl 0x8430                         |     fcn_00008430 (r0, r1, r2, r3, r4);
    0x0000cf9c b 0xcece                          |     goto label_18;
                                                 | label_42:
    0x0000cf9e ldr r0, [pc, 0xa4]                |     
    0x0000cfa0 mov r1, r4                        |     r1 = r4;
    0x0000cfa2 add r0, pc                        |     r0 = 0x19fec;
    0x0000cfa4 blx 0x1e94                        |     r0 = fcn_00001e94 ();
    0x0000cfa8 cmp r0, 0                         |     
                                                 |     if (r0 < 0) {
    0x0000cfaa blt 0xcefc                        |         goto label_19;
                                                 |     }
    0x0000cfac ldr r0, [pc, 0x98]                |     
    0x0000cfae mov r1, r4                        |     r1 = r4;
    0x0000cfb0 add r0, pc                        |     r0 = 0x19ffc;
    0x0000cfb2 blx 0x1e94                        |     r0 = fcn_00001e94 ();
    0x0000cfb6 cmp r0, 0                         |     
                                                 |     if (r0 >= 0) {
    0x0000cfb8 bge.w 0xcda2                      |         goto label_16;
                                                 |     }
                                                 | label_21:
    0x0000cfbc blx 0x1de8                        |     r0 = sprintf_chk ()
    0x0000cfc0 ldr r4, [r0]                      |     r4 = *(r0);
    0x0000cfc2 cmp r4, 2                         |     
                                                 |     if (r4 != 2) {
    0x0000cfc4 bne 0xcf08                        |         goto label_20;
                                                 |     }
    0x0000cfc6 b 0xcd24                          |     goto label_13;
                                                 | label_22:
    0x0000cfc8 blx 0x1bfc                        |     parse_printf_format ();
                                                 | label_43:
    0x0000cfcc ldr r0, [pc, 0x7c]                |     
    0x0000cfce mov r1, r5                        |     r1 = r5;
    0x0000cfd0 add r0, pc                        |     r0 = 0x1a020;
    0x0000cfd2 blx 0x1e94                        |     r0 = fcn_00001e94 ();
    0x0000cfd6 cmp r0, 0                         |     
                                                 |     if (r0 == 0) {
    0x0000cfd8 beq.w 0xcd24                      |         goto label_13;
                                                 |     }
                                                 |     if (r0 >= 0) {
    0x0000cfdc bge 0xcfe8                        |         goto label_45;
                                                 |     }
    0x0000cfde blx 0x1de8                        |     r0 = sprintf_chk ()
    0x0000cfe2 ldr r4, [r0]                      |     r4 = *(r0);
    0x0000cfe4 cmp r4, 2                         |     
                                                 |     if (r4 != 2) {
    0x0000cfe6 bne 0xcf08                        |         goto label_20;
                                                 |     }
                                                 | label_45:
    0x0000cfe8 ldr r0, [pc, 0x64]                |     
    0x0000cfea movs r1, 0                        |     r1 = 0;
    0x0000cfec add r0, pc                        |     r0 = 0x1a040;
    0x0000cfee blx 0x1e94                        |     r0 = fcn_00001e94 ();
    0x0000cff2 cmp r0, 0                         |     
                                                 |     if (r0 < 0) {
    0x0000cff4 blt 0xcfbc                        |         goto label_21;
                                                 |     }
    0x0000cff6 b 0xcda2                          |     goto label_16;
                                                 | }

[*] Function sprintf used 64 times cdrom_id