[*] Binary protection state of ubiformat

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


[*] Function fprintf tear down of ubiformat

    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ubiformat @ 0x592c */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.0000592c ()                                      | void fcn_0000592c (int16_t arg_0h, int16_t arg_88h, int16_t arg_90h, int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     size_t var_10h;
                                                                 |     size_t n;
                                                                 |     int16_t var_18h;
                                                                 |     int32_t var_1ch;
                                                                 |     int32_t var_1ch_2;
                                                                 |     int16_t var_24h;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_2ch;
                                                                 |     int32_t var_30h;
                                                                 |     int32_t var_30h_2;
                                                                 |     int16_t var_40h;
                                                                 |     int16_t var_44h;
                                                                 |     int16_t var_54h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
    0x0000592c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00005930 mov r8, r2                                        |     r8 = r2;
    0x00005932 ldr r2, [pc, 0x298]                               |     
    0x00005934 sub sp, 0x5c                                      |     
    0x00005936 mov r4, r0                                        |     r4 = r0;
    0x00005938 mov r7, r1                                        |     r7 = r1;
    0x0000593a ldr r3, [pc, 0x294]                               |     r3 = *(0x5bd2);
    0x0000593c movs r1, 0xd                                      |     r1 = 0xd;
    0x0000593e add r2, pc                                        |     r2 = 0xb510;
    0x00005940 mov.w fp, 1                                       |     
    0x00005944 movs r6, 0                                        |     r6 = 0;
    0x00005946 ldrd sb, sl, [sp, 0x90]                           |     __asm ("ldrd sb, sl, [arg_90h]");
    0x0000594a ldr r3, [r2, r3]                                  |     
    0x0000594c ldr r2, [r0, 4]                                   |     r2 = *((r0 + 4));
    0x0000594e ldr r3, [r3]                                      |     r3 = *(0xb510);
    0x00005950 str r3, [sp, 0x54]                                |     var_54h = r3;
    0x00005952 mov.w r3, 0                                       |     r3 = 0;
    0x00005956 ldr r3, [r0]                                      |     r3 = *(r0);
    0x00005958 mov r0, r2                                        |     r0 = r2;
    0x0000595a strd fp, fp, [sp, 0x1c]                           |     __asm ("strd fp, fp, [var_0hx1c]");
    0x0000595e str r6, [sp, 0x24]                                |     var_24h = r6;
    0x00005960 str r3, [sp, 0x28]                                |     var_28h = r3;
    0x00005962 lsls r3, r3, 1                                    |     r3 <<= 1;
    0x00005964 str r2, [sp, 0x10]                                |     var_10h = r2;
    0x00005966 str r3, [sp, 0x40]                                |     var_40h = r3;
    0x00005968 asrs r3, r3, 0x1f                                 |     r3 >>= 0x1f;
    0x0000596a str r3, [sp, 0x44]                                |     var_44h = r3;
    0x0000596c ldr r3, [pc, 0x264]                               |     
    0x0000596e add r3, pc                                        |     r3 = 0xb546;
    0x00005970 str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x00005972 movw r3, 0xefff                                   |     
    0x00005976 movt r3, 0x7fff                                   |     r3 = 0x7fffefff;
    0x0000597a str r3, [sp, 0x18]                                |     var_18h = r3;
    0x0000597c movs r3, 5                                        |     r3 = 5;
    0x0000597e strd r1, r3, [sp, 0x30]                           |     __asm ("strd r1, r3, [var_30h]");
    0x00005982 blx 0xc74                                         |     fcn_00000c74 ();
    0x00005986 ldr r3, [pc, 0x250]                               |     
    0x00005988 add r3, pc                                        |     r3 = 0xb566;
    0x0000598a str r3, [sp, 0x14]                                |     n = r3;
    0x0000598c cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000598e beq.w 0x5b82                                      |         goto label_2;
                                                                 |     }
    0x00005992 ldr r2, [r4, 0x10]                                |     r2 = *((r4 + 0x10));
    0x00005994 movs r1, 0xff                                     |     r1 = 0xff;
    0x00005996 mov r5, r0                                        |     r5 = r0;
    0x00005998 str r2, [sp, 0x10]                                |     var_10h = r2;
    0x0000599a blx 0xd04                                         |     fcn_00000d04 ();
    0x0000599e ldr r2, [sp, 0x10]                                |     r2 = var_10h;
    0x000059a0 mov r1, sb                                        |     r1 = sb;
    0x000059a2 ldr r3, [r4, 0xc]                                 |     r3 = *((r4 + 0xc));
    0x000059a4 adds r0, r5, r2                                   |     r0 = r5 + r2;
    0x000059a6 ldr r2, [r4, 0x18]                                |     r2 = *((r4 + 0x18));
    0x000059a8 add.w sb, r5, r3                                  |     sb = r5 + r3;
    0x000059aa lsrs r3, r0, 4                                    |     r3 = r0 >> 4;
    0x000059ac blx 0xbd4                                         |     fcn_00000bd4 ();
    0x000059b0 ldr r0, [r4, 0x10]                                |     r0 = *((r4 + 0x10));
    0x000059b2 movs r1, 0xff                                     |     r1 = 0xff;
    0x000059b4 ldr r2, [r4, 0x18]                                |     r2 = *((r4 + 0x18));
    0x000059b6 ldr r3, [r4, 4]                                   |     r3 = *((r4 + 4));
    0x000059b8 subs r3, r3, r0                                   |     r3 -= r0;
    0x000059ba add r0, r2                                        |     r0 += r2;
    0x000059bc add r0, r5                                        |     r0 += r5;
    0x000059be subs r2, r3, r2                                   |     r2 = r3 - r2;
    0x000059c0 blx 0xd04                                         |     fcn_00000d04 ();
    0x000059c4 str r6, [sp]                                      |     *(sp) = r6;
    0x000059c6 mov r0, sl                                        |     r0 = sl;
    0x000059c8 ldr r3, [r4, 4]                                   |     r3 = *((r4 + 4));
    0x000059ca smull r2, r7, r7, r3                              |     r2:r7 = r7 * r3;
    0x000059ce mov r3, r7                                        |     r3 = r7;
    0x000059d0 str r2, [sp, 0x10]                                |     var_10h = r2;
    0x000059d2 blx 0xc2c                                         |     fcn_00000c2c ();
    0x000059d6 ldr r2, [sp, 0x10]                                |     r2 = var_10h;
    0x000059d8 cmp r1, r7                                        |     
    0x000059da it eq                                             |     
                                                                 |     if (r1 == r7) {
    0x000059dc cmpeq r0, r2                                      |         __asm ("cmpeq r0, r2");
                                                                 |     }
                                                                 |     if (r1 != r7) {
    0x000059de bne 0x5a78                                        |         goto label_3;
                                                                 |     }
    0x000059e0 ldrd r2, r3, [sp, 0x80]                           |     __asm ("ldrd r2, r3, [arg_0h]");
    0x000059e4 mov r1, r5                                        |     r1 = r5;
    0x000059e6 mov r0, r4                                        |     r0 = r4;
    0x000059e8 add r7, sp, 0x18                                  |     r7 += var_18h;
    0x000059ea bl 0x55a4                                         |     fcn_000055a4 (r0, r1, r2, r3);
    0x000059ee mov r3, r6                                        |     r3 = r6;
    0x000059f0 mov r2, sb                                        |     r2 = sb;
    0x000059f2 mov r1, r7                                        |     r1 = r7;
    0x000059f4 mov r0, r4                                        |     r0 = r4;
    0x000059f6 strd r6, r6, [sp]                                 |     __asm ("strd r6, r6, [sp]");
    0x000059fa bl 0x5600                                         |     fcn_00005600 (r0, r1, r2, r3, r4, r5);
    0x000059fe ldr r2, [r4, 4]                                   |     r2 = *((r4 + 4));
    0x00005a00 mov r1, r5                                        |     r1 = r5;
    0x00005a02 mov r0, sl                                        |     r0 = sl;
    0x00005a04 blx 0xd44                                         |     fprintf_chk ()
    0x00005a08 ldr r3, [r4, 4]                                   |     r3 = *((r4 + 4));
    0x00005a0a cmp r3, r0                                        |     
                                                                 |     if (r3 != r0) {
    0x00005a0c bne 0x5ac0                                        |         goto label_4;
                                                                 |     }
    0x00005a0e smull r2, r8, r8, r3                              |     r2:r8 = r8 * r3;
    0x00005a12 mov r0, sl                                        |     r0 = sl;
    0x00005a14 str r6, [sp]                                      |     *(sp) = r6;
    0x00005a16 mov r3, r8                                        |     r3 = r8;
    0x00005a18 str r2, [sp, 0x10]                                |     var_10h = r2;
    0x00005a1a blx 0xc2c                                         |     fcn_00000c2c ();
    0x00005a1e ldr r2, [sp, 0x10]                                |     r2 = var_10h;
    0x00005a20 cmp r1, r8                                        |     
    0x00005a22 it eq                                             |     
                                                                 |     if (r1 == r8) {
    0x00005a24 cmpeq r0, r2                                      |         __asm ("cmpeq r0, r2");
                                                                 |     }
                                                                 |     if (r1 != r8) {
    0x00005a26 bne 0x5b04                                        |         goto label_5;
                                                                 |     }
    0x00005a28 ldrd r2, r3, [sp, 0x88]                           |     __asm ("ldrd r2, r3, [arg_88h]");
    0x00005a2c mov r0, r4                                        |     r0 = r4;
    0x00005a2e mov r1, r5                                        |     r1 = r5;
    0x00005a30 bl 0x55a4                                         |     fcn_000055a4 (r0, r1, r2, r3);
    0x00005a34 mov r0, r4                                        |     r0 = r4;
    0x00005a36 mov r2, sb                                        |     r2 = sb;
    0x00005a38 mov r1, r7                                        |     r1 = r7;
    0x00005a3a mov r3, fp                                        |     r3 = fp;
    0x00005a3c strd r6, r6, [sp]                                 |     __asm ("strd r6, r6, [sp]");
    0x00005a40 bl 0x5600                                         |     fcn_00005600 (r0, r1, r2, r3, r4, r5);
    0x00005a44 ldr r2, [r4, 4]                                   |     r2 = *((r4 + 4));
    0x00005a46 mov r0, sl                                        |     r0 = sl;
    0x00005a48 mov r1, r5                                        |     r1 = r5;
    0x00005a4a blx 0xd44                                         |     fprintf_chk ()
    0x00005a4e ldr r4, [r4, 4]                                   |     r4 = *((r4 + 4));
    0x00005a50 cmp r4, r0                                        |     
                                                                 |     if (r4 != r0) {
    0x00005a52 bne 0x5b42                                        |         goto label_6;
                                                                 |     }
    0x00005a54 mov r0, r5                                        |     r0 = r5;
    0x00005a56 blx 0xbbc                                         |     fcn_00000bbc ();
    0x00005a5a mov r0, r6                                        |     r0 = r6;
                                                                 |     do {
                                                                 | label_1:
    0x00005a5c ldr r2, [pc, 0x17c]                               |         
    0x00005a5e ldr r3, [pc, 0x170]                               |         r3 = *(0x5bd2);
    0x00005a60 add r2, pc                                        |         r2 = 0xb640;
    0x00005a62 ldr r3, [r2, r3]                                  |         r3 = *(0xb640);
    0x00005a64 ldr r2, [r3]                                      |         r2 = *(0xb640);
    0x00005a66 ldr r3, [sp, 0x54]                                |         r3 = var_54h;
    0x00005a68 eors r2, r3                                       |         r2 ^= r3;
    0x00005a6a mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00005a6e bne.w 0x5bc8                                      |             goto label_7;
                                                                 |         }
    0x00005a72 add sp, 0x5c                                      |         
    0x00005a74 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_3:
    0x00005a78 blx 0xce0                                         |         fcn_00000ce0 ();
    0x00005a7c ldr r2, [sp, 0x14]                                |         r2 = n;
    0x00005a7e mov r1, fp                                        |         r1 = fp;
    0x00005a80 ldr r3, [pc, 0x15c]                               |         r3 = *(0x5be0);
    0x00005a82 ldr r4, [r0]                                      |         r4 = *(r0);
    0x00005a84 ldr r6, [r2, r3]                                  |         r6 = *((r2 + r3));
    0x00005a86 ldr r3, [pc, 0x15c]                               |         
    0x00005a88 ldr r2, [pc, 0x15c]                               |         
    0x00005a8a ldr r0, [r6]                                      |         r0 = *(r6);
    0x00005a8c add r3, pc                                        |         r3 = 0xb676;
    0x00005a8e add r2, pc                                        |         r2 = 0xb67a;
    0x00005a90 blx 0xd50                                         |         memchr (r0, r1, r2);
    0x00005a94 mov r0, r4                                        |         r0 = r4;
    0x00005a96 ldr r6, [r6]                                      |         r6 = *(r6);
    0x00005a98 blx 0xc80                                         |         fcn_00000c80 ();
    0x00005a9c ldr r3, [pc, 0x14c]                               |         
    0x00005a9e mov r1, fp                                        |         r1 = fp;
    0x00005aa0 ldr r2, [pc, 0x14c]                               |         
    0x00005aa2 str r0, [sp, 8]                                   |         var_8h = r0;
    0x00005aa4 mov r0, r6                                        |         r0 = r6;
    0x00005aa6 add r3, pc                                        |         r3 = 0xb696;
    0x00005aa8 strd r3, r4, [sp]                                 |         __asm ("strd r3, r4, [sp]");
    0x00005aac add r2, pc                                        |         r2 = 0xb6a0;
    0x00005aae movs r3, 0xb                                      |         r3 = 0xb;
    0x00005ab0 blx 0xd50                                         |         memchr (r0, r1, r2);
                                                                 | label_0:
    0x00005ab4 mov r0, r5                                        |         r0 = r5;
    0x00005ab6 blx 0xbbc                                         |         fcn_00000bbc ();
    0x00005aba mov.w r0, -1                                      |         r0 = -1;
    0x00005abe b 0x5a5c                                          |         
                                                                 |     } while (1);
                                                                 | label_4:
    0x00005ac0 str r3, [sp, 0x10]                                |     var_10h = r3;
    0x00005ac2 blx 0xce0                                         |     fcn_00000ce0 ();
    0x00005ac6 ldr r3, [sp, 0x14]                                |     r3 = n;
    0x00005ac8 mov r1, fp                                        |     r1 = fp;
    0x00005aca ldr r2, [pc, 0x114]                               |     r2 = *(0x5be2);
    0x00005acc ldr r4, [r0]                                      |     r4 = *(r0);
    0x00005ace ldr r6, [r3, r2]                                  |     r6 = *((r3 + r2));
    0x00005ad0 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x00005ad2 ldr r2, [pc, 0x120]                               |     
    0x00005ad4 str r3, [sp]                                      |     *(sp) = r3;
    0x00005ad6 ldr r3, [pc, 0x120]                               |     
    0x00005ad8 add r2, pc                                        |     r2 = 0xb6d2;
    0x00005ada ldr r0, [r6]                                      |     r0 = *(r6);
    0x00005adc add r3, pc                                        |     r3 = 0xb6da;
    0x00005ade blx 0xd50                                         |     memchr (r0, r1, r2);
    0x00005ae2 mov r0, r4                                        |     r0 = r4;
    0x00005ae4 ldr r6, [r6]                                      |     r6 = *(r6);
    0x00005ae6 blx 0xc80                                         |     fcn_00000c80 ();
    0x00005aea ldr r3, [pc, 0x110]                               |     
    0x00005aec mov r1, fp                                        |     r1 = fp;
    0x00005aee ldr r2, [pc, 0x110]                               |     
    0x00005af0 str r0, [sp, 8]                                   |     var_8h = r0;
    0x00005af2 mov r0, r6                                        |     r0 = r6;
    0x00005af4 add r3, pc                                        |     r3 = 0xb6f6;
    0x00005af6 strd r3, r4, [sp]                                 |     __asm ("strd r3, r4, [sp]");
    0x00005afa add r2, pc                                        |     r2 = 0xb700;
    0x00005afc movs r3, 0xb                                      |     r3 = 0xb;
    0x00005afe blx 0xd50                                         |     memchr (r0, r1, r2);
    0x00005b00 invalid                                           |     
                                                                 | label_5:
    0x00005b04 blx 0xce0                                         |     fcn_00000ce0 ();
    0x00005b08 ldr r2, [sp, 0x14]                                |     r2 = n;
    0x00005b0a mov r1, fp                                        |     r1 = fp;
    0x00005b0c ldr r3, [pc, 0xd0]                                |     r3 = *(0x5be0);
    0x00005b0e ldr r4, [r0]                                      |     r4 = *(r0);
    0x00005b10 ldr r6, [r2, r3]                                  |     r6 = *((r2 + r3));
    0x00005b12 ldr r3, [pc, 0xf0]                                |     
    0x00005b14 ldr r2, [pc, 0xf0]                                |     
    0x00005b16 ldr r0, [r6]                                      |     r0 = *(r6);
    0x00005b18 add r3, pc                                        |     r3 = 0xb722;
    0x00005b1a add r2, pc                                        |     r2 = 0xb726;
    0x00005b1c blx 0xd50                                         |     memchr (r0, r1, r2);
    0x00005b20 mov r0, r4                                        |     r0 = r4;
    0x00005b22 ldr r6, [r6]                                      |     r6 = *(r6);
    0x00005b24 blx 0xc80                                         |     fcn_00000c80 ();
    0x00005b28 ldr r3, [pc, 0xe0]                                |     
    0x00005b2a mov r1, fp                                        |     r1 = fp;
    0x00005b2c ldr r2, [pc, 0xe0]                                |     
    0x00005b2e str r0, [sp, 8]                                   |     var_8h = r0;
    0x00005b30 mov r0, r6                                        |     r0 = r6;
    0x00005b32 add r3, pc                                        |     r3 = 0xb742;
    0x00005b34 strd r3, r4, [sp]                                 |     __asm ("strd r3, r4, [sp]");
    0x00005b38 add r2, pc                                        |     r2 = 0xb74c;
    0x00005b3a movs r3, 0xb                                      |     r3 = 0xb;
    0x00005b3c blx 0xd50                                         |     memchr (r0, r1, r2);
    0x00005b40 b 0x5ab4                                          |     goto label_0;
                                                                 | label_6:
    0x00005b42 blx 0xce0                                         |     fcn_00000ce0 ();
    0x00005b46 ldr r2, [sp, 0x14]                                |     r2 = n;
    0x00005b48 mov r1, fp                                        |     r1 = fp;
    0x00005b4a ldr r3, [pc, 0x94]                                |     r3 = *(0x5be2);
    0x00005b4c ldr r6, [r0]                                      |     r6 = *(r0);
    0x00005b4e ldr r7, [r2, r3]                                  |     r7 = *((r2 + r3));
    0x00005b50 ldr r3, [pc, 0xc0]                                |     
    0x00005b52 ldr r2, [pc, 0xc4]                                |     
    0x00005b54 str r4, [sp]                                      |     *(sp) = r4;
    0x00005b56 add r3, pc                                        |     r3 = 0xb76e;
    0x00005b58 ldr r0, [r7]                                      |     r0 = *(r7);
    0x00005b5a add r2, pc                                        |     r2 = 0xb778;
    0x00005b5c blx 0xd50                                         |     memchr (r0, r1, r2);
    0x00005b60 mov r0, r6                                        |     r0 = r6;
    0x00005b62 ldr r4, [r7]                                      |     r4 = *(r7);
    0x00005b64 blx 0xc80                                         |     fcn_00000c80 ();
    0x00005b68 ldr r3, [pc, 0xb0]                                |     
    0x00005b6a mov r1, fp                                        |     r1 = fp;
    0x00005b6c ldr r2, [pc, 0xb0]                                |     
    0x00005b6e str r0, [sp, 8]                                   |     var_8h = r0;
    0x00005b70 mov r0, r4                                        |     r0 = r4;
    0x00005b72 add r3, pc                                        |     r3 = 0xb792;
    0x00005b74 strd r3, r6, [sp]                                 |     __asm ("strd r3, r6, [sp]");
    0x00005b78 add r2, pc                                        |     r2 = 0xb79c;
    0x00005b7a movs r3, 0xb                                      |     r3 = 0xb;
    0x00005b7c blx 0xd50                                         |     memchr (r0, r1, r2);
    0x00005b80 b 0x5ab4                                          |     goto label_0;
                                                                 | label_2:
    0x00005b82 blx 0xce0                                         |     fcn_00000ce0 ();
    0x00005b86 ldr r2, [sp, 0x14]                                |     r2 = n;
    0x00005b88 mov r1, fp                                        |     r1 = fp;
    0x00005b8a ldr r3, [pc, 0x54]                                |     r3 = *(0x5be2);
    0x00005b8c ldr r5, [r0]                                      |     r5 = *(r0);
    0x00005b8e ldr r4, [r2, r3]                                  |     r4 = *((r2 + r3));
    0x00005b90 ldr r2, [sp, 0x10]                                |     r2 = var_10h;
    0x00005b92 ldr r3, [pc, 0x90]                                |     
    0x00005b94 str r2, [sp]                                      |     *(sp) = r2;
    0x00005b96 ldr r2, [pc, 0x90]                                |     
    0x00005b98 add r3, pc                                        |     r3 = 0xb7c2;
    0x00005b9a ldr r0, [r4]                                      |     r0 = *(r4);
    0x00005b9c add r2, pc                                        |     r2 = 0xb7ca;
    0x00005b9e blx 0xd50                                         |     memchr (r0, r1, r2);
    0x00005ba2 ldr r6, [r4]                                      |     r6 = *(r4);
    0x00005ba4 mov r0, r5                                        |     r0 = r5;
    0x00005ba6 ldr r4, [pc, 0x84]                                |     
    0x00005ba8 blx 0xc80                                         |     fcn_00000c80 ();
    0x00005bac ldr r2, [pc, 0x80]                                |     
    0x00005bae mov r1, fp                                        |     r1 = fp;
    0x00005bb0 add r4, pc                                        |     r4 = 0xb7e2;
    0x00005bb2 str r0, [sp, 8]                                   |     var_8h = r0;
    0x00005bb4 movs r3, 0xb                                      |     r3 = 0xb;
    0x00005bb6 mov r0, r6                                        |     r0 = r6;
    0x00005bb8 add r2, pc                                        |     r2 = 0xb7ec;
    0x00005bba str r5, [sp, 4]                                   |     var_4h = r5;
    0x00005bbc str r4, [sp]                                      |     *(sp) = r4;
    0x00005bbe blx 0xd50                                         |     memchr (r0, r1, r2);
    0x00005bc2 mov.w r0, -1                                      |     r0 = -1;
    0x00005bc6 b 0x5a5c                                          |     goto label_1;
                                                                 | label_7:
    0x00005bc8 blx 0xbec                                         |     fcn_00000bec ();
    0x00005bcc strh r6, [r7, 0x2c]                               |     *((r7 + 0x2c)) = r6;
    0x00005bce movs r1, r0                                       |     r1 = r0;
    0x00005bd0 lsls r4, r3, 3                                    |     r4 = r3 << 3;
    0x00005bd2 movs r0, r0                                       |     
    0x00005bd4 ldr r6, [r2, 0x10]                                |     r6 = *((r2 + 0x10));
    0x00005bd6 movs r0, r0                                       |     
    0x00005bd8 strh r4, [r6, 0x2a]                               |     *((r6 + 0x2a)) = r4;
    0x00005bda movs r1, r0                                       |     r1 = r0;
    0x00005bdc strh r4, [r3, 0x24]                               |     *((r3 + 0x24)) = r4;
    0x00005bde movs r1, r0                                       |     r1 = r0;
    0x00005be0 lsls r4, r4, 3                                    |     r4 <<= 3;
    0x00005be2 movs r0, r0                                       |     
    0x00005be4 str r0, [r1, 0x70]                                |     *((r1 + 0x70)) = r0;
    0x00005be6 movs r0, r0                                       |     
    0x00005be8 ldr r2, [r6]                                      |     r2 = *(r6);
    0x00005bea movs r0, r0                                       |     
    0x00005bec ldr r6, [pc, 0x68]                                |     r6 = *(0x5c58);
    0x00005bee movs r0, r0                                       |     
    0x00005bf0 ldr r2, [pc, 0x280]                               |     r2 = *(0x5e74);
    0x00005bf2 movs r0, r0                                       |     
    0x00005bf4 ldr r0, [r2]                                      |     r0 = *(0x5e74);
    0x00005bf6 movs r0, r0                                       |     
    0x00005bf8 str r0, [r7, 0x68]                                |     *((r7 + 0x68)) = r0;
    0x00005bfa movs r0, r0                                       |     
    0x00005bfc ldr r5, [pc, 0x330]                               |     r5 = *(0x5f30);
    0x00005bfe movs r0, r0                                       |     
    0x00005c00 ldr r2, [pc, 0x148]                               |     r2 = *(0x5d4c);
    0x00005c02 movs r0, r0                                       |     
    0x00005c04 str r4, [r7, 0x64]                                |     *((r7 + 0x64)) = r4;
    0x00005c06 movs r0, r0                                       |     
    0x00005c08 str r6, [r4, 0x78]                                |     *((r4 + 0x78)) = r6;
    0x00005c0a movs r0, r0                                       |     
    0x00005c0c ldr r5, [pc, 0x238]                               |     r5 = *(0x5e48);
    0x00005c0e movs r0, r0                                       |     
    0x00005c10 ldr r2, [pc, 0x50]                                |     r2 = *(0x5c64);
    0x00005c12 movs r0, r0                                       |     
    0x00005c14 str r6, [r7, 0x60]                                |     *((r7 + 0x60)) = r6;
    0x00005c16 movs r0, r0                                       |     
    0x00005c18 str r6, [r1, 0x78]                                |     *((r1 + 0x78)) = r6;
    0x00005c1a movs r0, r0                                       |     
    0x00005c1c ldr r5, [pc, 0x138]                               |     r5 = *(0x5d58);
    0x00005c1e movs r0, r0                                       |     
    0x00005c20 ldr r1, [pc, 0x350]                               |     r1 = *(0x5f74);
    0x00005c22 movs r0, r0                                       |     
    0x00005c24 str r4, [r7, 0x5c]                                |     *((r7 + 0x5c)) = r4;
    0x00005c26 movs r0, r0                                       |     
    0x00005c28 str r0, [r7, 0x6c]                                |     *((r7 + 0x6c)) = r0;
    0x00005c2a movs r0, r0                                       |     
    0x00005c2c ldr r5, [pc, 0x40]                                |     r5 = *(0x5c70);
    0x00005c2e movs r0, r0                                       |     
    0x00005c30 ldr r1, [pc, 0x250]                               |     r1 = *(0x5e84);
    0x00005c32 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/sbin/ubiformat @ 0x7f10 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00007f10 ()                                  | void fcn_00007f10 (int16_t arg_178h, int16_t arg_17ch, size_t n, int16_t arg_184h, int16_t arg_188h, int16_t arg_18ch, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                             |     int16_t var_bp_8h;
                                                             |     int16_t var_bp_ch;
                                                             |     int16_t var_10h;
                                                             |     int16_t var_14h;
                                                             |     int16_t var_bp_28h;
                                                             |     int16_t var_0h;
                                                             |     int16_t var_4h_2;
                                                             |     int16_t var_8h_2;
                                                             |     int16_t var_ch_2;
                                                             |     int16_t var_sp_10h;
                                                             |     int16_t var_sp_14h;
                                                             |     int16_t var_18h;
                                                             |     int16_t var_24h;
                                                             |     int16_t var_28h;
                                                             |     int16_t var_2ch;
                                                             |     int16_t var_30h;
                                                             |     int16_t var_34h;
                                                             |     int16_t var_38h;
                                                             |     void * s;
                                                             |     int16_t var_40h;
                                                             |     int16_t var_44h;
                                                             |     int16_t var_48h;
                                                             |     int16_t var_4ch;
                                                             |     int16_t var_50h;
                                                             |     int32_t var_0h_2;
                                                             |     int32_t var_18h_2;
                                                             |     int32_t var_18h_3;
                                                             |     int32_t var_20h;
                                                             |     int32_t var_20h_2;
                                                             |     int16_t var_84h;
                                                             |     int16_t var_88h;
                                                             |     int32_t var_8h;
                                                             |     int16_t var_90h;
                                                             |     int32_t var_ch;
                                                             |     int16_t var_14ch;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x00007f10 svcmi 0xf0e92d                                |     __asm ("svcmi 0xf0e92d");
    0x00007f14 mov r8, r2                                    |     r8 = r2;
    0x00007f16 ldr.w r2, [pc, 0x408]                         |     r2 = *(0x00008320);
    0x00007f1a mov r4, r3                                    |     r4 = r3;
    0x00007f1c sub sp, 0x154                                 |     
    0x00007f1e mov r5, r1                                    |     r5 = r1;
    0x00007f20 ldr.w r3, [pc, 0x400]                         |     
    0x00007f24 add.w fp, sp, 0x50                            |     
    0x00007f28 add r2, pc                                    |     r2 += pc;
    0x00007f2a str r0, [sp, 0x30]                            |     var_30h = r0;
    0x00007f2c movs r1, 0                                    |     r1 = 0;
    0x00007f2e mov r0, fp                                    |     r0 = fp;
    0x00007f30 ldr r3, [r2, r3]                              |     r3 = *((r2 + r3));
    0x00007f32 movs r2, 0x30                                 |     r2 = 0x30;
    0x00007f34 ldr r6, [sp, 0x178]                           |     r6 = *(arg_178h);
    0x00007f36 ldr r3, [r3]                                  |     r3 = *(0x8324);
    0x00007f38 str r3, [sp, 0x14c]                           |     var_14ch = r3;
    0x00007f3a mov.w r3, 0                                   |     r3 = 0;
    0x00007f3e ldr r3, [sp, 0x17c]                           |     r3 = *(arg_17ch);
    0x00007f40 str r3, [sp, 0x24]                            |     var_24h = r3;
    0x00007f42 ldr r3, [sp, 0x184]                           |     r3 = *(arg_184h);
    0x00007f44 str r3, [sp, 0x28]                            |     var_28h = r3;
    0x00007f46 ldrb.w r3, [sp, 0x18c]                        |     r3 = *(arg_18ch);
    0x00007f4a str r3, [sp, 0x2c]                            |     var_2ch = r3;
    0x00007f4c blx 0xd04                                     |     fcn_00000d04 ();
    0x00007f50 ldr r3, [pc, 0x3d4]                           |     
    0x00007f52 cmp r4, 0                                     |     
    0x00007f54 ldr.w r2, [r5, 0xe0]                          |     r2 = *((r5 + 0xe0));
    0x00007f58 add r3, pc                                    |     r3 = 0x10284;
    0x00007f5a str r3, [sp, 0x3c]                            |     s = r3;
                                                             |     if (r4 < 0) {
    0x00007f5c blt.w 0x81b0                                  |         goto label_4;
                                                             |     }
    0x00007f60 cmp r4, r2                                    |     
                                                             |     if (r4 >= r2) {
    0x00007f62 bge.w 0x81b0                                  |         goto label_4;
                                                             |     }
    0x00007f66 cmp r6, 0                                     |     
    0x00007f68 ldr.w sb, [r5, 0xe4]                          |     sb = *((r5 + 0xe4));
                                                             |     if (r6 < 0) {
    0x00007f6c blt.w 0x81dc                                  |         goto label_5;
                                                             |     }
    0x00007f6e strh r6, [r6, 8]                              |     *((r6 + 8)) = r6;
    0x00007f70 ldr r3, [sp, 0x180]                           |     r3 = *(n);
    0x00007f72 adds r2, r6, r3                               |     r2 = r6 + r3;
    0x00007f74 cmp r2, sb                                    |     
                                                             |     if (r2 > sb) {
    0x00007f76 bgt.w 0x81dc                                  |         goto label_5;
                                                             |     }
    0x00007f7a ldr.w sl, [r5, 0xec]                          |     sl = *((r5 + 0xec));
    0x00007f7e mov r0, r6                                    |     r0 = r6;
    0x00007f80 mov r1, sl                                    |     r1 = sl;
    0x00007f82 bl 0xa13c                                     |     fcn_0000a13c (r0, r1);
    0x00007f86 cmp r1, 0                                     |     
                                                             |     if (r1 != 0) {
    0x00007f88 bne.w 0x825e                                  |         goto label_6;
                                                             |     }
    0x00007f8c ldr r0, [sp, 0x180]                           |     r0 = *(n);
    0x00007f8e mov r1, sl                                    |     r1 = sl;
    0x00007f90 bl 0xa13c                                     |     fcn_0000a13c (r0, r1);
    0x00007f94 mov r7, r1                                    |     r7 = r1;
    0x00007f96 cmp r1, 0                                     |     
                                                             |     if (r1 != 0) {
    0x00007f98 bne.w 0x827a                                  |         goto label_7;
                                                             |     }
    0x00007f9a strh r7, [r5, 0xa]                            |     *((r5 + 0xa)) = r7;
    0x00007f9c asrs r2, r6, 0x1f                             |     r2 = r6 >> 0x1f;
    0x00007f9e mov r1, r6                                    |     r1 = r6;
    0x00007fa0 mov r3, r2                                    |     r3 = r2;
    0x00007fa2 smlal r1, r3, r4, sb                          |     __asm ("smlal r1, r3, r4, sb");
    0x00007fa6 mov r2, r1                                    |     r2 = r1;
    0x00007fa8 str r1, [sp, 0x34]                            |     var_34h = r1;
    0x00007faa ldr r1, [sp, 0x28]                            |     r1 = var_28h;
    0x00007fac str r3, [sp, 0x38]                            |     var_38h = r3;
    0x00007fae cmp r1, 0                                     |     
                                                             |     if (r1 != 0) {
    0x00007fb0 beq 0x804c                                    |         
    0x00007fb2 strd r2, r3, [fp]                             |         __asm ("strd r2, r3, [fp]");
    0x00007fb6 mov r0, r8                                    |         r0 = r8;
    0x00007fb8 ldr r3, [sp, 0x180]                           |         r3 = *(n);
    0x00007fba strd r1, r7, [fp, 0x20]                       |         __asm ("strd r1, r7, [var_20h]");
    0x00007fbe movw r1, 0x4d18                               |         
    0x00007fc2 movt r1, 0xc030                               |         r1 = 0xc0304d18;
    0x00007fc6 str.w r3, [fp, 8]                             |         __asm ("str.w r3, [var_bp_8h]");
    0x00007fca ldr r3, [sp, 0x188]                           |         r3 = *(arg_188h);
    0x00007fcc str.w r3, [fp, 0x10]                          |         __asm ("str.w r3, [var_10h]");
    0x00007fd0 ldr r3, [sp, 0x24]                            |         r3 = var_24h;
    0x00007fd2 strd r3, r7, [fp, 0x18]                       |         __asm ("strd r3, r7, [var_18h_2]");
    0x00007fd6 ldr r3, [sp, 0x2c]                            |         r3 = var_2ch;
    0x00007fd8 strb.w r3, [fp, 0x28]                         |         var_bp_28h = r3;
    0x00007fdc ldr r3, [sp, 0x180]                           |         r3 = *(n);
    0x00007fde asrs r2, r3, 0x1f                             |         r2 = r3 >> 0x1f;
    0x00007fe0 ldr r3, [sp, 0x188]                           |         r3 = *(arg_188h);
    0x00007fe2 str.w r2, [fp, 0xc]                           |         __asm ("str.w r2, [var_bp_ch]");
    0x00007fe6 mov r2, fp                                    |         r2 = fp;
    0x00007fe8 asrs r3, r3, 0x1f                             |         r3 >>= 0x1f;
    0x00007fea str r3, [sp, 0x40]                            |         var_40h = r3;
    0x00007fec str.w r3, [fp, 0x14]                          |         __asm ("str.w r3, [var_14h]");
    0x00007ff0 blx 0xc20                                     |         r0 = fcn_00000c20 ();
    0x00007ff4 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00007ff6 beq 0x8086                                    |             goto label_0;
                                                             |         }
    0x00007ff8 blx 0xce0                                     |         r0 = fcn_00000ce0 ();
    0x00007ffc ldr.w sb, [r0]                                |         sb = *(r0);
    0x00008000 str r0, [sp, 0x44]                            |         var_44h = r0;
    0x00008002 cmp.w sb, 0x19                                |         
    0x00008006 it ne                                         |         
                                                             |         if (sb != 0x19) {
    0x00008008 cmpne sb, 0x5f                                |             __asm ("cmpne sb, 0x5f");
                                                             |         }
                                                             |         if (sb != 0x19) {
    0x0000800c bne 0x810a                                    |             goto label_8;
                                                             |         }
    0x0000800e ldr r3, [sp, 0x2c]                            |         r3 = var_2ch;
    0x00008010 cmp r3, 1                                     |         
                                                             |         if (r3 == 1) {
    0x00008012 beq 0x80a4                                    |             goto label_9;
                                                             |         }
                                                             | label_1:
    0x00008014 ldr r3, [sp, 0x28]                            |         r3 = var_28h;
    0x00008016 mov r2, r8                                    |         r2 = r8;
    0x00008018 ldr r0, [sp, 0x30]                            |         r0 = var_30h;
    0x0000801a mov r1, r5                                    |         r1 = r5;
    0x0000801c str r3, [sp, 0x10]                            |         var_sp_10h = r3;
    0x0000801e ldr r3, [sp, 0x40]                            |         r3 = var_40h;
    0x00008020 str r3, [sp, 0xc]                             |         var_ch_2 = r3;
    0x00008022 ldr r3, [sp, 0x188]                           |         r3 = *(arg_188h);
    0x00008024 str r3, [sp, 8]                               |         var_8h_2 = r3;
    0x00008026 ldr r3, [sp, 0x34]                            |         r3 = var_34h;
    0x00008028 str r3, [sp]                                  |         *(sp) = r3;
    0x0000802a ldr r3, [sp, 0x38]                            |         r3 = var_38h;
    0x0000802c str r3, [sp, 4]                               |         var_4h_2 = r3;
    0x0000802e movw r3, 0x4d03                               |         
    0x00008032 movt r3, 0xc00c                               |         r3 = 0xc00c4d03;
    0x00008036 str r3, [sp, 0x18]                            |         var_18h = r3;
    0x00008038 movw r3, 0x4d15                               |         
    0x0000803c movt r3, 0xc018                               |         r3 = 0xc0184d15;
    0x00008040 str r3, [sp, 0x14]                            |         var_sp_14h = r3;
    0x00008042 bl 0x6508                                     |         r0 = fcn_00006508 (r0, r1, r2, r3);
    0x00008046 cmp r0, 0                                     |         
                                                             |         if (r0 < 0) {
    0x00008048 blt.w 0x8170                                  |             goto label_10;
                                                             |         }
                                                             |     }
    0x0000804c ldr r3, [sp, 0x24]                            |     r3 = var_24h;
                                                             |     if (r3 != 0) {
    0x0000804e cbz r3, 0x8086                                |         
    0x00008050 ldr.w sl, [sp, 0x34]                          |         sl = var_34h;
    0x00008054 movs r3, 0                                    |         r3 = 0;
    0x00008056 ldr.w sb, [sp, 0x38]                          |         sb = var_38h;
    0x0000805a mov r0, r8                                    |         r0 = r8;
    0x0000805c str r3, [sp]                                  |         *(sp) = r3;
    0x0000805e mov r2, sl                                    |         r2 = sl;
    0x00008060 mov r3, sb                                    |         r3 = sb;
    0x00008062 blx 0xc2c                                     |         fcn_00000c2c ();
    0x00008066 mov r2, sl                                    |         r2 = sl;
    0x00008068 mov r3, sb                                    |         r3 = sb;
    0x0000806a cmp r1, r3                                    |         
    0x0000806c it eq                                         |         
                                                             |         if (r1 == r3) {
    0x0000806e cmpeq r0, r2                                  |             __asm ("cmpeq r0, r2");
                                                             |         }
                                                             |         if (r1 != r3) {
    0x00008070 bne.w 0x820e                                  |             goto label_11;
                                                             |         }
    0x00008074 ldr r1, [sp, 0x24]                            |         r1 = var_24h;
    0x00008076 mov r0, r8                                    |         r0 = r8;
    0x00008078 ldr r2, [sp, 0x180]                           |         r2 = *(n);
    0x0000807a blx 0xd44                                     |         fprintf_chk ()
    0x0000807e ldr r3, [sp, 0x180]                           |         r3 = *(n);
    0x00008080 cmp r3, r0                                    |         
                                                             |         if (r3 != r0) {
    0x00008082 bne.w 0x8298                                  |             goto label_12;
                                                             |         }
                                                             |     }
                                                             | label_0:
    0x00008086 ldr r2, [pc, 0x2a4]                           |     
    0x00008088 ldr r3, [pc, 0x298]                           |     r3 = *(0x8324);
    0x0000808a add r2, pc                                    |     r2 = 0x103bc;
    0x0000808c ldr r3, [r2, r3]                              |     r3 = *(0x103bc);
    0x0000808e ldr r2, [r3]                                  |     r2 = *(0x103bc);
    0x00008090 ldr r3, [sp, 0x14c]                           |     r3 = var_14ch;
    0x00008092 eors r2, r3                                   |     r2 ^= r3;
    0x00008094 mov.w r3, 0                                   |     r3 = 0;
                                                             |     if (r2 != r3) {
    0x00008098 bne.w 0x831c                                  |         goto label_13;
                                                             |     }
    0x0000809c mov r0, r7                                    |     r0 = r7;
    0x0000809e add sp, 0x154                                 |     
    0x000080a0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |     
                                                             | label_9:
    0x000080a4 add.w sb, sp, 0x84                            |     sb += var_84h;
    0x000080a8 movw r1, 0x4d0a                               |     
    0x000080ac movt r1, 0x80c8                               |     r1 = 0x80c84d0a;
    0x000080b0 mov r2, sb                                    |     r2 = sb;
    0x000080b2 mov r0, r8                                    |     r0 = r8;
    0x000080b4 blx 0xc20                                     |     r0 = fcn_00000c20 ();
    0x000080b8 mov fp, r0                                    |     
    0x000080ba cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000080bc bne.w 0x82e8                                  |         goto label_14;
                                                             |     }
    0x000080c0 ldr r0, [sp, 0x188]                           |     r0 = *(arg_188h);
    0x000080c2 blx 0xc74                                     |     fcn_00000c74 ();
    0x000080c6 ldr r2, [sp, 0x188]                           |     r2 = *(arg_188h);
    0x000080c8 mov sl, r0                                    |     sl = r0;
    0x000080ca ldr r1, [sp, 0x28]                            |     r1 = var_28h;
    0x000080cc str r0, [sp, 0x2c]                            |     var_2ch = r0;
    0x000080ce blx 0xbd4                                     |     fcn_00000bd4 ();
    0x000080d2 ldr r3, [sp, 0x84]                            |     r3 = var_84h;
    0x000080d4 cmp r3, 2                                     |     
                                                             |     if (r3 != 2) {
    0x000080d6 bne 0x8154                                    |         goto label_15;
                                                             |     }
    0x000080d8 ldr r2, [sp, 0x90]                            |     r2 = var_90h;
    0x000080da cmp r2, 0                                     |     
                                                             |     if (r2 == 0) {
    0x000080dc beq 0x8168                                    |         goto label_16;
                                                             |     }
    0x000080de str r4, [sp, 0x4c]                            |     var_4ch = r4;
    0x000080e0 mov r4, fp                                    |     r4 = fp;
    0x000080e2 ldr.w fp, [sp, 0x28]                          |     fp = var_28h;
    0x000080e6 str r5, [sp, 0x48]                            |     var_48h = r5;
    0x000080e8 mov r5, r2                                    |     r5 = r2;
                                                             |     do {
    0x000080ea ldr r0, [sb, 8]!                              |         r0 = var_8h;
    0x000080ee mov r2, r5                                    |         r2 = r5;
    0x000080f0 add.w r1, sl, r4                              |         r1 = sl + r4;
    0x000080f4 add r4, r5                                    |         r4 += r5;
    0x000080f6 add r0, fp                                    |         r0 += fp;
    0x000080f8 blx 0xbd4                                     |         fcn_00000bd4 ();
    0x000080fc ldr.w r5, [sb, 0xc]                           |         r5 = var_ch;
    0x00008100 cmp r5, 0                                     |         
    0x00008102 bne 0x80ea                                    |         
                                                             |     } while (r5 != 0);
    0x00008104 ldrd r5, r4, [sp, 0x48]                       |     __asm ("ldrd r5, r4, [var_4ch]");
    0x00008108 b 0x8168                                      |     goto label_16;
                                                             | label_8:
    0x0000810a ldr r2, [r5]                                  |     r2 = *(r5);
    0x0000810c mov.w r7, -1                                  |     r7 = -1;
    0x00008110 ldr r1, [sp, 0x3c]                            |     r1 = s;
    0x00008112 ldr r3, [pc, 0x21c]                           |     r3 = *(0x8332);
    0x00008114 ldr r5, [r1, r3]                              |     r5 = *((r1 + r3));
    0x00008116 movs r1, 1                                    |     r1 = 1;
    0x00008118 str r2, [sp, 8]                               |     var_8h_2 = r2;
    0x0000811a ldr r2, [pc, 0x218]                           |     
    0x0000811c str r4, [sp, 4]                               |     var_4h_2 = r4;
    0x0000811e ldr r3, [pc, 0x218]                           |     
    0x00008120 add r2, pc                                    |     r2 = 0x1045a;
    0x00008122 ldr r0, [r5]                                  |     r0 = *(r5);
    0x00008124 str r2, [sp]                                  |     *(sp) = r2;
    0x00008126 ldr r2, [pc, 0x214]                           |     
    0x00008128 add r3, pc                                    |     r3 = 0x10466;
    0x0000812a ldr r4, [pc, 0x214]                           |     
    0x0000812c add r2, pc                                    |     r2 = 0x1046e;
    0x0000812e blx 0xd50                                     |     memchr (r0, r1, r2);
    0x00008132 mov r0, sb                                    |     r0 = sb;
    0x00008134 ldr r5, [r5]                                  |     r5 = *(r5);
    0x00008136 blx 0xc80                                     |     fcn_00000c80 ();
    0x0000813a ldr r2, [pc, 0x208]                           |     
    0x0000813c mov r1, r0                                    |     r1 = r0;
    0x0000813e add r4, pc                                    |     r4 = 0x10484;
    0x00008140 strd sb, r1, [sp, 4]                          |     __asm ("strd sb, r1, [var_8h_2]");
    0x00008144 movs r3, 8                                    |     r3 = 8;
    0x00008146 mov r0, r5                                    |     r0 = r5;
    0x00008148 add r2, pc                                    |     r2 = 0x10492;
    0x0000814a movs r1, 1                                    |     r1 = 1;
    0x0000814c str r4, [sp]                                  |     *(sp) = r4;
    0x0000814e blx 0xd50                                     |     memchr (r0, r1, r2);
    0x00008152 b 0x8086                                      |     goto label_0;
                                                             | label_15:
    0x00008154 ldr r0, [sp, 0x88]                            |     r0 = var_88h;
    0x00008156 ldr r3, [sp, 0x2c]                            |     r3 = var_2ch;
    0x00008158 ldr.w r2, [r5, 0xf0]                          |     r2 = *((r5 + 0xf0));
    0x0000815c adds r1, r3, r0                               |     r1 = r3 + r0;
    0x0000815e ldr r3, [sp, 0x28]                            |     r3 = var_28h;
    0x00008160 subs r2, r2, r0                               |     r2 -= r0;
    0x00008162 add r0, r3                                    |     r0 += r3;
    0x00008164 blx 0xbd4                                     |     fcn_00000bd4 ();
                                                             | label_16:
    0x00008168 ldr r0, [sp, 0x2c]                            |     r0 = var_2ch;
    0x0000816a blx 0xbbc                                     |     fcn_00000bbc ();
    0x0000816e b 0x8014                                      |     goto label_1;
                                                             | label_10:
    0x00008170 ldr r3, [sp, 0x44]                            |     r3 = var_44h;
    0x00008172 mov.w r7, -1                                  |     r7 = -1;
    0x00008176 ldr r0, [sp, 0x3c]                            |     r0 = s;
    0x00008178 ldr r1, [pc, 0x1b4]                           |     r1 = *(0x8330);
    0x0000817a ldr r4, [r3]                                  |     r4 = *(r3);
    0x0000817c ldr r2, [pc, 0x1c8]                           |     
    0x0000817e ldr r5, [r0, r1]                              |     r5 = *((r0 + r1));
    0x00008180 movs r1, 1                                    |     r1 = 1;
    0x00008182 ldr r3, [pc, 0x1c8]                           |     
    0x00008184 add r2, pc                                    |     r2 = 0x104d0;
    0x00008186 ldr r0, [r5]                                  |     r0 = *(r5);
    0x00008188 add r3, pc                                    |     r3 = 0x104da;
    0x0000818a blx 0xd50                                     |     memchr (r0, r1, r2);
    0x0000818c stcl p6, c4, [r2, 0x80]!                      |     __asm ("stcl p6, c4, [r2, 0x80]!");
    0x00008190 ldr r5, [r5]                                  |     r5 = *(r5);
    0x00008192 blx 0xc80                                     |     fcn_00000c80 ();
    0x00008196 ldr r1, [pc, 0x1b8]                           |     
    0x00008198 ldr r2, [pc, 0x1b8]                           |     
    0x0000819a strd r4, r0, [sp, 4]                          |     __asm ("strd r4, r0, [var_8h_2]");
    0x0000819e add r1, pc                                    |     r1 = 0x104f4;
    0x000081a0 add r2, pc                                    |     r2 = 0x104f8;
                                                             | label_3:
    0x000081a2 str r1, [sp]                                  |     *(sp) = r1;
    0x000081a4 movs r3, 8                                    |     r3 = 8;
    0x000081a6 mov r0, r5                                    |     r0 = r5;
    0x000081a8 movs r1, 1                                    |     r1 = 1;
    0x000081aa blx 0xd50                                     |     memchr (r0, r1, r2);
    0x000081ae b 0x8086                                      |     goto label_0;
                                                             | label_4:
    0x000081b0 ldr r1, [r5]                                  |     r1 = *(r5);
    0x000081b2 ldr r3, [pc, 0x17c]                           |     r3 = *(0x8332);
    0x000081b4 ldr r0, [sp, 0x3c]                            |     r0 = s;
    0x000081b6 ldr r0, [r0, r3]                              |     r0 = *((r0 + r3));
    0x000081b8 strd r1, r2, [sp, 4]                          |     __asm ("strd r1, r2, [var_8h_2]");
    0x000081bc movs r1, 1                                    |     r1 = 1;
    0x000081be ldr r3, [pc, 0x198]                           |     
    0x000081c0 ldr r2, [pc, 0x198]                           |     
    0x000081c2 ldr r0, [r0]                                  |     r0 = *(r0);
    0x000081c4 add r3, pc                                    |     r3 = 0x10522;
    0x000081c6 str r4, [sp]                                  |     *(sp) = r4;
    0x000081c8 add r2, pc                                    |     r2 = 0x10528;
                                                             |     do {
                                                             | label_2:
    0x000081ca blx 0xd50                                     |         r0 = memchr (r0, r1, r2);
    0x000081ce blx 0xce0                                     |         fcn_00000ce0 ();
    0x000081d2 movs r3, 0x16                                 |         r3 = 0x16;
    0x000081d4 mov.w r7, -1                                  |         r7 = -1;
    0x000081d8 str r3, [r0]                                  |         *(r0) = r3;
    0x000081da b 0x8086                                      |         goto label_0;
                                                             | label_5:
    0x000081dc ldr r2, [r5]                                  |         r2 = *(r5);
    0x000081de mov.w r7, -1                                  |         r7 = -1;
    0x000081e2 ldr r3, [pc, 0x14c]                           |         r3 = *(0x8332);
    0x000081e4 ldr r1, [sp, 0x3c]                            |         r1 = s;
    0x000081e6 ldr r1, [r1, r3]                              |         r1 = *((r1 + r3));
    0x000081e8 str r2, [sp, 8]                               |         var_8h_2 = r2;
    0x000081ea ldr r2, [sp, 0x180]                           |         r2 = *(n);
    0x000081ec ldr r3, [pc, 0x170]                           |         
    0x000081ee str.w sb, [sp, 0xc]                           |         __asm ("str.w sb, [var_ch_2]");
    0x000081f2 str r2, [sp, 4]                               |         var_4h_2 = r2;
    0x000081f4 ldr r2, [pc, 0x16c]                           |         
    0x000081f6 add r3, pc                                    |         r3 = 0x1055a;
    0x000081f8 ldr r0, [r1]                                  |         r0 = *(r1);
    0x000081fa movs r1, 1                                    |         r1 = 1;
    0x000081fc str r6, [sp]                                  |         *(sp) = r6;
    0x000081fe add r2, pc                                    |         r2 = 0x10566;
    0x00008200 blx 0xd50                                     |         r0 = memchr (r0, r1, r2);
    0x00008204 blx 0xce0                                     |         fcn_00000ce0 ();
    0x00008208 movs r3, 0x16                                 |         r3 = 0x16;
    0x0000820a str r3, [r0]                                  |         *(r0) = r3;
    0x0000820c b 0x8086                                      |         goto label_0;
                                                             | label_11:
    0x0000820e blx 0xce0                                     |         fcn_00000ce0 ();
    0x00008212 ldr r1, [sp, 0x3c]                            |         r1 = s;
    0x00008214 mov.w r7, -1                                  |         r7 = -1;
    0x00008218 ldr r3, [pc, 0x114]                           |         r3 = *(0x8330);
    0x0000821a ldr r2, [r5]                                  |         r2 = *(r5);
    0x0000821c ldr r5, [r0]                                  |         r5 = *(r0);
    0x0000821e ldr r4, [r1, r3]                              |         r4 = *((r1 + r3));
    0x00008220 ldr r3, [sp, 0x34]                            |         r3 = var_34h;
    0x00008222 ldr r1, [sp, 0x38]                            |         r1 = var_38h;
    0x00008224 str r2, [sp]                                  |         *(sp) = r2;
    0x00008226 str r3, [sp, 8]                               |         var_8h_2 = r3;
    0x00008228 ldr r2, [pc, 0x13c]                           |         
    0x0000822a ldr r3, [pc, 0x140]                           |         
    0x0000822c str r1, [sp, 0xc]                             |         var_ch_2 = r1;
    0x0000822e movs r1, 1                                    |         r1 = 1;
    0x00008230 add r2, pc                                    |         r2 = 0x1059c;
    0x00008232 ldr r0, [r4]                                  |         r0 = *(r4);
    0x00008234 add r3, pc                                    |         r3 = 0x105a6;
    0x00008236 blx 0xd50                                     |         memchr (r0, r1, r2);
    0x0000823a ldr r6, [r4]                                  |         r6 = *(r4);
    0x0000823c mov r0, r5                                    |         r0 = r5;
    0x0000823e ldr r4, [pc, 0x130]                           |         
    0x00008240 blx 0xc80                                     |         fcn_00000c80 ();
    0x00008244 ldr r2, [pc, 0x12c]                           |         
    0x00008246 mov r1, r0                                    |         r1 = r0;
    0x00008248 add r4, pc                                    |         r4 = 0x105be;
    0x0000824a strd r5, r1, [sp, 4]                          |         __asm ("strd r5, r1, [var_8h_2]");
    0x0000824c str r1, [r0, r4]                              |         *((r0 + r4)) = r1;
    0x0000824e movs r3, 8                                    |         r3 = 8;
    0x00008250 mov r0, r6                                    |         r0 = r6;
    0x00008252 add r2, pc                                    |         r2 = 0x105ca;
    0x00008254 movs r1, 1                                    |         r1 = 1;
    0x00008256 str r4, [sp]                                  |         *(sp) = r4;
    0x00008258 blx 0xd50                                     |         memchr (r0, r1, r2);
    0x0000825c b 0x8086                                      |         goto label_0;
                                                             | label_6:
    0x0000825e ldr r3, [pc, 0xd0]                            |         r3 = *(0x8332);
    0x00008260 ldr r2, [sp, 0x3c]                            |         r2 = s;
    0x00008262 ldr r1, [r5]                                  |         r1 = *(r5);
    0x00008264 ldr r0, [r2, r3]                              |         r0 = *((r2 + r3));
    0x00008266 ldr r3, [pc, 0x110]                           |         
    0x00008268 ldr r2, [pc, 0x110]                           |         
    0x0000826a strd r1, sl, [sp, 4]                          |         __asm ("strd r1, sl, [var_8h_2]");
    0x0000826e movs r1, 1                                    |         r1 = 1;
    0x00008270 ldr r0, [r0]                                  |         r0 = *(r0);
    0x00008272 add r3, pc                                    |         r3 = 0x105f0;
    0x00008274 add r2, pc                                    |         r2 = 0x105f4;
    0x00008276 str r6, [sp]                                  |         *(sp) = r6;
    0x00008278 b 0x81ca                                      |         
                                                             |     } while (1);
                                                             | label_7:
    0x0000827a ldr r3, [pc, 0xb4]                            |     r3 = *(0x8332);
    0x0000827c ldr r2, [sp, 0x3c]                            |     r2 = s;
    0x0000827e ldr r1, [r5]                                  |     r1 = *(r5);
    0x00008280 ldr r4, [sp, 0x180]                           |     r4 = *(n);
    0x00008282 ldr r0, [r2, r3]                              |     r0 = *((r2 + r3));
    0x00008284 ldr r3, [pc, 0xf8]                            |     
    0x00008286 ldr r2, [pc, 0xfc]                            |     
    0x00008288 strd r1, sl, [sp, 4]                          |     __asm ("strd r1, sl, [var_8h_2]");
    0x0000828c movs r1, 1                                    |     r1 = 1;
    0x0000828e ldr r0, [r0]                                  |     r0 = *(r0);
    0x00008290 add r3, pc                                    |     r3 = 0x10614;
    0x00008292 add r2, pc                                    |     r2 = 0x1061c;
    0x00008294 str r4, [sp]                                  |     *(sp) = r4;
    0x00008296 b 0x81ca                                      |     goto label_2;
                                                             | label_12:
    0x00008298 blx 0xce0                                     |     fcn_00000ce0 ();
    0x0000829c ldr r2, [r5]                                  |     r2 = *(r5);
    0x0000829e ldr r1, [sp, 0x3c]                            |     r1 = s;
    0x000082a0 ldr r3, [pc, 0x8c]                            |     r3 = *(0x8330);
    0x000082a2 ldr r5, [r0]                                  |     r5 = *(r0);
    0x000082a4 ldr r7, [r1, r3]                              |     r7 = *((r1 + r3));
    0x000082a6 movs r1, 1                                    |     r1 = 1;
    0x000082a8 str r2, [sp, 4]                               |     var_4h_2 = r2;
    0x000082aa ldr r2, [sp, 0x180]                           |     r2 = *(n);
    0x000082ac ldr r3, [pc, 0xd8]                            |     
    0x000082ae strd r4, r6, [sp, 8]                          |     __asm ("strd r4, r6, [var_8h_2]");
    0x000082b2 str r2, [sp]                                  |     *(sp) = r2;
    0x000082b4 ldr r2, [pc, 0xd4]                            |     
    0x000082b6 add r3, pc                                    |     r3 = 0x10642;
    0x000082b8 ldr r0, [r7]                                  |     r0 = *(r7);
    0x000082ba ldr r4, [pc, 0xd4]                            |     
    0x000082bc add r2, pc                                    |     r2 = 0x1064c;
    0x000082be blx 0xd50                                     |     memchr (r0, r1, r2);
    0x000082c2 mov r0, r5                                    |     r0 = r5;
    0x000082c4 ldr r6, [r7]                                  |     r6 = *(r7);
    0x000082c6 blx 0xc80                                     |     fcn_00000c80 ();
    0x000082ca ldr r2, [pc, 0xc8]                            |     
    0x000082cc mov r1, r0                                    |     r1 = r0;
    0x000082ce add r4, pc                                    |     r4 = 0x10664;
    0x000082d0 strd r5, r1, [sp, 4]                          |     __asm ("strd r5, r1, [var_8h_2]");
    0x000082d4 movs r3, 8                                    |     r3 = 8;
    0x000082d6 mov r0, r6                                    |     r0 = r6;
    0x000082d8 add r2, pc                                    |     r2 = 0x10672;
    0x000082da movs r1, 1                                    |     r1 = 1;
    0x000082dc str r4, [sp]                                  |     *(sp) = r4;
    0x000082de mov.w r7, -1                                  |     r7 = -1;
    0x000082e2 blx 0xd50                                     |     memchr (r0, r1, r2);
    0x000082e6 b 0x8086                                      |     goto label_0;
                                                             | label_14:
    0x000082e8 ldr r3, [sp, 0x44]                            |     r3 = var_44h;
    0x000082ea mov.w r7, -1                                  |     r7 = -1;
    0x000082ee ldr r0, [sp, 0x3c]                            |     r0 = s;
    0x000082f0 ldr r1, [pc, 0x3c]                            |     r1 = *(0x8330);
    0x000082f2 ldr r4, [r3]                                  |     r4 = *(r3);
    0x000082f4 ldr r2, [pc, 0xa0]                            |     
    0x000082f6 ldr r5, [r0, r1]                              |     r5 = *((r0 + r1));
    0x000082f8 movs r1, 1                                    |     r1 = 1;
    0x000082fa ldr r3, [pc, 0xa0]                            |     
    0x000082fc add r2, pc                                    |     r2 = 0x10698;
    0x000082fe ldr r0, [r5]                                  |     r0 = *(r5);
    0x00008300 add r3, pc                                    |     r3 = 0x106a2;
    0x00008302 blx 0xd50                                     |     memchr (r0, r1, r2);
    0x00008306 mov r0, r4                                    |     r0 = r4;
    0x00008308 ldr r5, [r5]                                  |     r5 = *(r5);
    0x0000830a blx 0xc80                                     |     fcn_00000c80 ();
    0x0000830e ldr r1, [pc, 0x90]                            |     
    0x00008310 ldr r2, [pc, 0x90]                            |     
    0x00008312 strd r4, r0, [sp, 4]                          |     __asm ("strd r4, r0, [var_8h_2]");
    0x00008316 add r1, pc                                    |     r1 = 0x106bc;
    0x00008318 add r2, pc                                    |     r2 = 0x106c0;
    0x0000831a b 0x81a2                                      |     goto label_3;
                                                             | label_13:
    0x0000831c blx 0xbec                                     |     fcn_00000bec ();
    0x00008320 ldrsh r4, [r2, r7]                            |     r4 = *((r2 + r7));
    0x00008322 movs r1, r0                                   |     r1 = r0;
    0x00008324 lsls r4, r3, 3                                |     r4 = r3 << 3;
    0x00008326 movs r0, r0                                   |     
    0x00008328 ldrsh r4, [r4, r6]                            |     r4 = *((r4 + r6));
    0x0000832a movs r1, r0                                   |     r1 = r0;
    0x0000832c ldrsh r2, [r6, r1]                            |     r2 = *((r6 + r1));
    0x0000832e movs r1, r0                                   |     r1 = r0;
    0x00008330 lsls r4, r4, 3                                |     r4 <<= 3;
    0x00008332 movs r0, r0                                   |     
    0x00008334 mov ip, sl                                    |     
    0x00008336 movs r0, r0                                   |     
    0x00008338 rors r4, r4                                   |     __asm ("rors r4, r4");
    0x0000833a movs r0, r0                                   |     
    0x0000833c cmp r4, r4                                    |     
    0x0000833e movs r0, r0                                   |     
    0x00008340 movs r7, 0x82                                 |     r7 = 0x82;
    0x00008342 movs r0, r0                                   |     
    0x00008344 movs r4, 4                                    |     r4 = 4;
    0x00008346 movs r0, r0                                   |     
    0x00008348 mov r8, r4                                    |     r8 = r4;
    0x0000834a movs r0, r0                                   |     
    0x0000834c sbcs r4, r0                                   |     __asm ("sbcs r4, r0");
    0x0000834e movs r0, r0                                   |     
    0x00008350 movs r7, 0x22                                 |     r7 = 0x22;
    0x00008352 movs r0, r0                                   |     
    0x00008354 movs r3, 0xac                                 |     r3 = 0xac;
    0x00008356 movs r0, r0                                   |     
    0x00008358 adcs r0, r1                                   |     __asm ("adcs r0, r1");
    0x0000835a movs r0, r0                                   |     
    0x0000835c add r0, sb                                    |     r0 += sb;
    0x0000835e movs r0, r0                                   |     
    0x00008360 asrs r6, r2                                   |     r6 >>= r2;
    0x00008362 movs r0, r0                                   |     
    0x00008364 cmp r6, r5                                    |     
    0x00008366 movs r0, r0                                   |     
    0x00008368 cmn r4, r0                                    |     
    0x0000836a movs r0, r0                                   |     
    0x0000836c lsrs r0, r3                                   |     r0 >>= r3;
    0x0000836e movs r0, r0                                   |     
    0x00008370 movs r6, 0x78                                 |     r6 = 0x78;
    0x00008372 movs r0, r0                                   |     
    0x00008374 movs r2, 0xfa                                 |     r2 = 0xfa;
    0x00008376 movs r0, r0                                   |     
    0x00008378 lsls r2, r3                                   |     r2 <<= r3;
    0x0000837a movs r0, r0                                   |     
    0x0000837c add r8, lr                                    |     r8 += lr;
    0x0000837e movs r0, r0                                   |     
    0x00008380 eors r4, r7                                   |     r4 ^= r7;
    0x00008382 movs r0, r0                                   |     
    0x00008384 cmp r2, r3                                    |     
    0x00008386 movs r0, r0                                   |     
    0x00008388 eors r6, r2                                   |     r6 ^= r2;
    0x0000838a movs r0, r0                                   |     
    0x0000838c cmp ip, r1                                    |     
    0x0000838e movs r0, r0                                   |     
    0x00008390 movs r5, 0xf2                                 |     r5 = 0xf2;
    0x00008392 movs r0, r0                                   |     
    0x00008394 movs r2, 0x74                                 |     r2 = 0x74;
    0x00008396 movs r0, r0                                   |     
    0x00008398 cmp r4, r0                                    |     
    0x0000839a movs r0, r0                                   |     
    0x0000839c ands r4, r1                                   |     r4 &= r1;
    0x0000839e movs r0, r0                                   |     
    0x000083a0 movs r5, 0xaa                                 |     r5 = 0xaa;
    0x000083a2 movs r0, r0                                   |     
    0x000083a4 movs r2, 0x34                                 |     r2 = 0x34;
    0x000083a6 movs r0, r0                                   |     
                                                             | }

[*] Function fprintf used 4 times ubiformat