[*] Binary protection state of ubinfo

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


[*] Function printf tear down of ubinfo

    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/sbin/ubinfo @ 0x113cc */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.000113cc ()                  | void fcn_000113cc (int32_t arg2) {
                                             |     int32_t var_0h;
                                             |     int32_t var_4h;
                                             |     int32_t var_8h;
                                             |     int32_t var_ch;
                                             |     int32_t var_10h;
                                             |     int32_t var_14h;
                                             |     int32_t var_18h;
                                             |     int32_t var_1ch;
                                             |     int32_t var_20h;
                                             |     int32_t var_20h_2;
                                             |     int32_t var_28h;
                                             |     int32_t var_28h_2;
                                             |     int32_t var_30h;
                                             |     int32_t var_38h;
                                             |     int32_t var_3ch;
                                             |     int32_t var_c4h;
                                             |     r1 = arg2;
    0x000113cc push {r4, r5, r6, r7, lr}     |     
    0x000113d0 sub sp, sp, 0xc4              |     
    0x000113d4 add r3, sp, 8                 |     r3 += var_8h;
    0x000113d8 mov r7, r1                    |     r7 = r1;
    0x000113dc mov r6, r2                    |     r6 = r2;
    0x000113e0 bl 0x1385c                    |     r0 = fcn_0001385c (r0, r1);
    0x000113e4 subs r4, r0, 0                |     r4 = r0 - 0;
                                             |     if (r4 == r0) {
    0x000113e8 beq 0x11448                   |         goto label_0;
                                             |     }
    0x000113ec bl 0x10b24                    |     errno_location ();
    0x000113f0 ldr r5, [pc, 0x114]           |     
    0x000113f4 mov r3, r6                    |     r3 = r6;
    0x000113f8 ldr r2, [pc, 0x110]           |     r2 = stderr;
    0x000113fc ldr r1, [pc, 0x110]           |     r1 = "ubinfo";
    0x00011400 ldr r4, [r0]                  |     r4 = *(r0);
    0x00011404 str r7, [sp]                  |     *(sp) = r7;
    0x00011408 ldr r0, [r5]                  |     r0 = *(0x11508);
    0x0001140c bl 0x10a64                    |     fprintf (r0, "ubinfo", r2, r3, r4, r5)
    0x00011410 mov r0, r4                    |     r0 = r4;
    0x00011414 ldr r5, [r5]                  |     r5 = *(0x11508);
    0x00011418 bl 0x109d4                    |     strerror (r0);
    0x0001141c str r4, [sp]                  |     *(sp) = r4;
    0x00011420 ldr r3, [pc, 0xf0]            |     r3 = "_s:_error_:_cannot_get_information_about_UBI_volume__d_on_ubi_d";
    0x00011424 mov r2, 8                     |     r2 = 8;
    0x00011428 ldr r1, [pc, 0xec]            |     r1 = *(0x11518);
    0x0001142c mvn r4, 0                     |     r4 = ~0;
    0x00011430 str r0, [sp, 4]               |     var_4h = r0;
    0x00011434 mov r0, r5                    |     r0 = r5;
    0x00011438 bl 0x10a64                    |     fprintf (r0, r1, r2, "_s:_error_:_cannot_get_information_about_UBI_volume__d_on_ubi_d", r4)
                                             |     do {
    0x0001143c mov r0, r4                    |         r0 = r4;
    0x00011440 add sp, sp, 0xc4              |         
    0x00011444 pop {r4, r5, r6, r7, pc}      |         
                                             | label_0:
    0x00011448 ldr r2, [sp, 8]               |         r2 = var_8h;
    0x0001144c ldr r1, [sp, 0xc]             |         r1 = var_ch;
    0x00011450 ldr r0, [pc, 0xc8]            |         r0 = "_serror__d___s_";
    0x00011454 bl 0x109c8                    |         printf ("_serror__d___s_", r1, r2)
    0x00011458 ldr r1, [sp, 0x18]            |         r1 = var_18h;
    0x0001145c ldr r3, [pc, 0xc0]            |         r3 = "Volume ID:   %d (on ubi%d)\n";
    0x00011460 ldr r2, [pc, 0xc0]            |         r2 = "static";
    0x00011464 cmp r1, 3                     |         
                                             |         if (r1 != 3) {
    0x00011468 moveq r1, r2                  |             r1 = r2;
                                             |         }
                                             |         if (r1 == 3) {
    0x0001146c movne r1, r3                  |             r1 = r3;
                                             |         }
    0x00011470 ldr r0, [pc, 0xb4]            |         r0 = "dynamic";
    0x00011474 bl 0x109c8                    |         printf ("dynamic", r1, "static", "Volume ID:   %d (on ubi%d)\n")
    0x00011478 ldr r1, [sp, 0x1c]            |         r1 = var_1ch;
    0x0001147c ldr r0, [pc, 0xac]            |         r0 = "Type:        %s\n";
    0x00011480 bl 0x109c8                    |         printf ("Type:        %s\n", r1)
    0x00011484 ldr r1, [sp, 0x30]            |         r1 = var_30h;
    0x00011488 ldr r0, [pc, 0xa4]            |         r0 = "Alignment:____d";
    0x0001148c bl 0x109c8                    |         printf ("Alignment:____d", r1)
    0x00011490 ldrd r0, r1, [sp, 0x28]       |         __asm ("ldrd r0, r1, [var_28h]");
    0x00011494 mov r2, r4                    |         r2 = r4;
    0x00011498 bl 0x11a3c                    |         fcn_00011a3c (r0, r1);
    0x0001149c ldr r0, [pc, 0x94]            |         r0 = "Size:        %d LEBs (";
    0x000114a0 bl 0x10a1c                    |         puts ("Size:        %d LEBs (");
    0x000114a4 ldr r3, [sp, 0x18]            |         r3 = var_18h;
    0x000114a8 cmp r3, 4                     |         
                                             |         if (r3 == 4) {
    0x000114ac bne 0x114cc                   |             
    0x000114b0 ldr r0, [pc, 0x84]            |             r0 = *(0x11538);
    0x000114b4 bl 0x109c8                    |             printf (r0)
    0x000114b8 ldrd r0, r1, [sp, 0x20]       |             __asm ("ldrd r0, r1, [var_20h]");
    0x000114bc mov r2, 1                     |             r2 = 1;
    0x000114c0 bl 0x11a3c                    |             fcn_00011a3c (r0, r1);
    0x000114c4 mov r0, 0xa                   |             r0 = 0xa;
    0x000114c8 bl 0x109b0                    |             putchar (r0);
                                             |         }
    0x000114cc ldr r1, [sp, 0x38]            |         r1 = var_38h;
    0x000114d0 ldr r2, [pc, 0x68]            |         r2 = "Data_bytes:__";
    0x000114d4 ldr r3, [pc, 0x68]            |         r3 = "corrupted";
    0x000114d8 cmp r1, 0                     |         
                                             |         if (r1 == 0) {
    0x000114dc movne r1, r2                  |             r1 = r2;
                                             |         }
                                             |         if (r1 != 0) {
    0x000114e0 moveq r1, r3                  |             r1 = r3;
                                             |         }
    0x000114e4 ldr r0, [pc, 0x5c]            |         r0 = *(0x11544);
    0x000114e8 bl 0x109c8                    |         printf (r0, r1, "Data_bytes:__", "corrupted")
    0x000114ec add r1, sp, 0x3c              |         r1 += var_3ch;
    0x000114f0 ldr r0, [pc, 0x54]            |         r0 = "State:________s";
    0x000114f4 bl 0x109c8                    |         printf ("State:________s", r1)
    0x000114f8 ldr r2, [sp, 0x14]            |         r2 = var_14h;
    0x000114fc ldr r1, [sp, 0x10]            |         r1 = var_10h;
    0x00011500 ldr r0, [pc, 0x48]            |         r0 = "Name:        %s\n";
    0x00011504 bl 0x109c8                    |         printf ("Name:        %s\n", r1, r2)
    0x00011508 b 0x1143c                     |         
                                             |     } while (1);
                                             | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/sbin/ubinfo @ 0x11554 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00011554 ()                                  | void fcn_00011554 (int32_t arg1, int32_t arg2) {
                                                             |     int32_t var_0h;
                                                             |     int32_t var_4h;
                                                             |     int32_t var_8h;
                                                             |     int32_t var_10h;
                                                             |     int32_t var_14h;
                                                             |     int32_t var_18h;
                                                             |     int32_t var_1ch;
                                                             |     int32_t var_20h;
                                                             |     int32_t var_24h;
                                                             |     int32_t var_28h;
                                                             |     int32_t var_30h;
                                                             |     int32_t var_30h_2;
                                                             |     int32_t var_38h;
                                                             |     int32_t var_38h_2;
                                                             |     int32_t var_40h;
                                                             |     int32_t var_44h;
                                                             |     int32_t var_48h;
                                                             |     int32_t var_48h_2;
                                                             |     int32_t var_50h;
                                                             |     int32_t var_54h;
                                                             |     int32_t var_58h;
                                                             |     int32_t var_60h;
                                                             |     int32_t var_11ch;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
    0x00011554 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}     |     
    0x00011558 sub sp, sp, 0x11c                             |     
    0x0001155c mov sb, r2                                    |     sb = r2;
    0x00011560 add r2, sp, 8                                 |     r2 += var_8h;
    0x00011564 mov r6, r0                                    |     r6 = r0;
    0x00011568 mov r7, r1                                    |     r7 = r1;
    0x0001156c bl 0x13334                                    |     r0 = fcn_00013334 (r0, r1);
    0x00011570 subs r4, r0, 0                                |     r4 = r0 - 0;
                                                             |     if (r4 == r0) {
    0x00011574 beq 0x115d0                                   |         goto label_5;
                                                             |     }
    0x00011578 bl 0x10b24                                    |     errno_location ();
    0x0001157c ldr r5, [pc, 0x2d4]                           |     
    0x00011580 mov r3, r7                                    |     r3 = r7;
    0x00011584 ldr r2, [pc, 0x2d0]                           |     r2 = stderr;
    0x00011588 ldr r1, [pc, 0x2d0]                           |     r1 = "ubinfo";
    0x0001158c ldr r4, [r0]                                  |     r4 = *(r0);
    0x00011590 ldr r0, [r5]                                  |     r0 = *(0x11854);
    0x00011594 bl 0x10a64                                    |     fprintf (r0, "ubinfo", r2, r3, r4, r5)
    0x00011598 mov r0, r4                                    |     r0 = r4;
    0x0001159c ldr r5, [r5]                                  |     r5 = *(0x11854);
    0x000115a0 bl 0x109d4                                    |     strerror (r0);
    0x000115a4 ldr r3, [pc, 0x2b8]                           |     r3 = "_s:_error_:_cannot_get_information_about_UBI_device__d";
    0x000115a8 ldr r1, [pc, 0x2b8]                           |     r1 = *(0x11864);
    0x000115ac mov r2, 8                                     |     r2 = 8;
    0x000115b0 str r4, [sp]                                  |     *(sp) = r4;
    0x000115b4 str r0, [sp, 4]                               |     var_4h = r0;
    0x000115b8 mov r0, r5                                    |     r0 = r5;
                                                             | label_1:
    0x000115bc bl 0x10a64                                    |     fprintf (r0, r1, r2, "_s:_error_:_cannot_get_information_about_UBI_device__d", r4)
    0x000115c0 mvn r4, 0                                     |     r4 = ~0;
                                                             |     do {
                                                             | label_2:
    0x000115c4 mov r0, r4                                    |         r0 = r4;
    0x000115c8 add sp, sp, 0x11c                             |         
    0x000115cc pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}      |         
                                                             | label_5:
    0x000115d0 ldr r1, [sp, 8]                               |         r1 = var_8h;
    0x000115d4 ldr r0, [pc, 0x290]                           |         r0 = "_serror__d___s_";
    0x000115d8 bl 0x109c8                                    |         printf ("_serror__d___s_", r1)
    0x000115dc ldr r1, [sp, 0x10]                            |         r1 = var_10h;
    0x000115e0 ldr r0, [pc, 0x288]                           |         r0 = "ubi_d";
    0x000115e4 bl 0x109c8                                    |         printf ("ubi_d", r1)
    0x000115e8 ldr r0, [pc, 0x284]                           |         r0 = "Volumes_count:____________________________d";
    0x000115ec bl 0x109c8                                    |         printf ("Volumes_count:____________________________d")
    0x000115f0 ldr r0, [sp, 0x44]                            |         r0 = var_44h;
    0x000115f4 mov r2, r4                                    |         r2 = r4;
    0x000115f8 asr r1, r0, 0x1f                              |         r1 = r0 >> 0x1f;
    0x000115fc bl 0x11a3c                                    |         fcn_00011a3c (r0, r1);
    0x00011600 mov r0, 0xa                                   |         r0 = 0xa;
    0x00011604 bl 0x109b0                                    |         putchar (r0);
    0x00011608 ldr r1, [sp, 0x24]                            |         r1 = var_24h;
    0x0001160c ldr r0, [pc, 0x264]                           |         r0 = "Logical eraseblock size:                 ";
    0x00011610 bl 0x109c8                                    |         printf ("Logical eraseblock size:                 ", r1)
    0x00011614 mov r2, r4                                    |         r2 = r4;
    0x00011618 ldrd r0, r1, [sp, 0x30]                       |         __asm ("ldrd r0, r1, [var_30h]");
    0x0001161c bl 0x11a3c                                    |         fcn_00011a3c (r0, r1);
    0x00011620 ldr r0, [pc, 0x254]                           |         r0 = "Total amount of logical eraseblocks:     %d (";
    0x00011624 bl 0x10a1c                                    |         puts ("Total amount of logical eraseblocks:     %d (");
    0x00011628 ldr r1, [sp, 0x28]                            |         r1 = var_28h;
    0x0001162c ldr r0, [pc, 0x24c]                           |         r0 = *(0x1187c);
    0x00011630 bl 0x109c8                                    |         printf (r0, r1)
    0x00011634 mov r2, r4                                    |         r2 = r4;
    0x00011638 ldrd r0, r1, [sp, 0x38]                       |         __asm ("ldrd r0, r1, [var_38h]");
    0x0001163c bl 0x11a3c                                    |         fcn_00011a3c (r0, r1);
    0x00011640 ldr r0, [pc, 0x234]                           |         r0 = "Total amount of logical eraseblocks:     %d (";
    0x00011644 bl 0x10a1c                                    |         puts ("Total amount of logical eraseblocks:     %d (");
    0x00011648 ldr r1, [sp, 0x54]                            |         r1 = var_54h;
    0x0001164c ldr r0, [pc, 0x230]                           |         r0 = "Amount of available logical eraseblocks: %d (";
    0x00011650 bl 0x109c8                                    |         printf ("Amount of available logical eraseblocks: %d (", r1)
    0x00011654 ldr r1, [sp, 0x40]                            |         r1 = var_40h;
    0x00011658 ldr r0, [pc, 0x228]                           |         r0 = "Maximum count of volumes                 %d\n";
    0x0001165c bl 0x109c8                                    |         printf ("Maximum count of volumes                 %d\n", r1)
    0x00011660 ldr r1, [sp, 0x50]                            |         r1 = var_50h;
    0x00011664 ldr r0, [pc, 0x220]                           |         r0 = "Count_of_bad_physical_eraseblocks:________d";
    0x00011668 bl 0x109c8                                    |         printf ("Count_of_bad_physical_eraseblocks:________d", r1)
    0x0001166c ldrd r2, r3, [sp, 0x48]                       |         __asm ("ldrd r2, r3, [var_48h]");
    0x00011670 ldr r0, [pc, 0x218]                           |         r0 = "Count of reserved physical eraseblocks:  %d\n";
    0x00011674 bl 0x109c8                                    |         printf ("Count of reserved physical eraseblocks:  %d\n", r1, r2)
    0x00011678 ldr r1, [sp, 0x58]                            |         r1 = var_58h;
    0x0001167c ldr r3, [pc, 0x210]                           |         r3 = "Current_maximum_erase_counter_value:______lld";
    0x00011680 cmp r1, 1                                     |         
    0x00011684 ldr r2, [pc, 0x20c]                           |         r2 = "byte";
    0x00011688 ldr r0, [pc, 0x20c]                           |         r0 = *(0x11898);
                                                             |         if (r1 > 1) {
    0x0001168c movle r2, r3                                  |             r2 = r3;
                                                             |         }
    0x00011690 bl 0x109c8                                    |         printf (r0, r1, "byte", "Current_maximum_erase_counter_value:______lld")
    0x00011694 ldr r2, [sp, 0x20]                            |         r2 = var_20h;
    0x00011698 ldr r1, [sp, 0x1c]                            |         r1 = var_1ch;
    0x0001169c ldr r0, [pc, 0x1fc]                           |         r0 = "Minimum input/output unit size:          %d %s\n";
    0x000116a0 bl 0x109c8                                    |         printf ("Minimum input/output unit size:          %d %s\n", r1, r2)
    0x000116a4 ldr r3, [sp, 0x10]                            |         r3 = var_10h;
    0x000116a8 cmp r3, 0                                     |         
                                                             |         if (r3 != 0) {
    0x000116ac bne 0x116b8                                   |             goto label_6;
                                                             |         }
                                                             | label_0:
    0x000116b0 mov r4, 0                                     |         r4 = 0;
    0x000116b4 b 0x115c4                                     |         
                                                             |     } while (1);
                                                             | label_6:
    0x000116b8 ldr r0, [pc, 0x1e4]                           |     r0 = "Character device major/minor:            %d:%d\n";
    0x000116bc bl 0x109c8                                    |     printf ("Character device major/minor:            %d:%d\n")
    0x000116c0 ldr sl, [pc, 0x1e0]                           |     sl = "_d";
    0x000116c4 ldr r5, [sp, 0x14]                            |     r5 = var_14h;
    0x000116c8 ldr fp, [pc, 0x1dc]                           |     fp = "___d";
    0x000116cc mov r8, 1                                     |     r8 = 1;
                                                             | label_3:
    0x000116d0 ldr r3, [sp, 0x18]                            |     r3 = var_18h;
    0x000116d4 cmp r3, r5                                    |     
                                                             |     if (r3 >= r5) {
    0x000116d8 bge 0x11790                                   |         goto label_7;
                                                             |     }
    0x000116dc mov r0, 0xa                                   |     r0 = 0xa;
    0x000116e0 bl 0x109b0                                    |     putchar (r0);
    0x000116e4 cmp sb, 0                                     |     
                                                             |     if (sb == 0) {
    0x000116e8 beq 0x116b0                                   |         goto label_0;
                                                             |     }
    0x000116ec mov r0, 0xa                                   |     r0 = 0xa;
    0x000116f0 bl 0x109b0                                    |     putchar (r0);
    0x000116f4 ldr sb, [pc, 0x1b4]                           |     sb = "-----------------------------------";
    0x000116f8 ldr r5, [sp, 0x14]                            |     r5 = var_14h;
    0x000116fc mov r4, 1                                     |     r4 = 1;
                                                             | label_4:
    0x00011700 ldr r3, [sp, 0x18]                            |     r3 = var_18h;
    0x00011704 cmp r3, r5                                    |     
                                                             |     if (r3 < r5) {
    0x00011708 blt 0x116b0                                   |         goto label_0;
                                                             |     }
    0x0001170c cmp r4, 0                                     |     
                                                             |     if (r4 == 0) {
    0x00011710 bne 0x1171c                                   |         
    0x00011714 mov r0, sb                                    |         r0 = sb;
    0x00011718 bl 0x10a1c                                    |         puts (r0);
                                                             |     }
    0x0001171c add r3, sp, 0x60                              |     r3 += var_60h;
    0x00011720 mov r2, r5                                    |     r2 = r5;
    0x00011724 ldr r1, [sp, 8]                               |     r1 = var_8h;
    0x00011728 mov r0, r6                                    |     r0 = r6;
    0x0001172c bl 0x1385c                                    |     r0 = fcn_0001385c (r0, r1);
    0x00011730 cmn r0, 1                                     |     
                                                             |     if (r0 != 1) {
    0x00011734 bne 0x11838                                   |         goto label_8;
                                                             |     }
    0x00011738 bl 0x10b24                                    |     r0 = errno_location ();
    0x0001173c ldr r7, [r0]                                  |     r7 = *(r0);
    0x00011740 cmp r7, 2                                     |     
                                                             |     if (r7 == 2) {
    0x00011744 beq 0x11850                                   |         goto label_9;
                                                             |     }
    0x00011748 ldr r3, [sp, 8]                               |     r3 = var_8h;
    0x0001174c ldr r4, [pc, 0x104]                           |     
    0x00011750 str r3, [sp]                                  |     *(sp) = r3;
    0x00011754 ldr r2, [pc, 0x100]                           |     r2 = stderr;
    0x00011758 mov r3, r5                                    |     r3 = r5;
    0x0001175c ldr r1, [pc, 0x150]                           |     r1 = "-----------------------------------";
    0x00011760 ldr r0, [r4]                                  |     r0 = *(0x11854);
    0x00011764 bl 0x10a64                                    |     fprintf (r0, "-----------------------------------", r2, r3, r4)
    0x00011768 mov r0, r7                                    |     r0 = r7;
    0x0001176c ldr r4, [r4]                                  |     r4 = *(0x11854);
    0x00011770 bl 0x109d4                                    |     strerror (r0);
    0x00011774 str r7, [sp]                                  |     *(sp) = r7;
    0x00011778 ldr r3, [pc, 0xe4]                            |     r3 = "_s:_error_:_cannot_get_information_about_UBI_device__d";
    0x0001177c mov r2, 8                                     |     r2 = 8;
    0x00011780 ldr r1, [pc, 0xe0]                            |     r1 = *(0x11864);
    0x00011784 str r0, [sp, 4]                               |     var_4h = r0;
    0x00011788 mov r0, r4                                    |     r0 = r4;
    0x0001178c b 0x115bc                                     |     goto label_1;
                                                             | label_7:
    0x00011790 add r3, sp, 0x60                              |     r3 += var_60h;
    0x00011794 mov r2, r5                                    |     r2 = r5;
    0x00011798 ldr r1, [sp, 8]                               |     r1 = var_8h;
    0x0001179c mov r0, r6                                    |     r0 = r6;
    0x000117a0 bl 0x1385c                                    |     r0 = fcn_0001385c (r0, r1);
    0x000117a4 cmn r0, 1                                     |     
    0x000117a8 mov r4, r0                                    |     r4 = r0;
                                                             |     if (r0 == 1) {
    0x000117ac bne 0x1180c                                   |         
    0x000117b0 bl 0x10b24                                    |         r0 = errno_location ();
    0x000117b4 ldr r7, [r0]                                  |         r7 = *(r0);
    0x000117b8 cmp r7, 2                                     |         
                                                             |         if (r7 == 2) {
    0x000117bc beq 0x11820                                   |             goto label_10;
                                                             |         }
    0x000117c0 ldr r3, [sp, 8]                               |         r3 = var_8h;
    0x000117c4 ldr r6, [pc, 0x8c]                            |         r6 = *(0x11854);
    0x000117c8 str r3, [sp]                                  |         *(sp) = r3;
    0x000117cc ldr r2, [pc, 0x88]                            |         r2 = stderr;
    0x000117d0 mov r3, r5                                    |         r3 = r5;
    0x000117d4 ldr r1, [pc, 0xd8]                            |         r1 = "-----------------------------------";
    0x000117d8 ldr r0, [r6]                                  |         r0 = *(0x11854);
    0x000117dc bl 0x10a64                                    |         fprintf (r0, "-----------------------------------", r2, r3, r4, r5, r6)
    0x000117e0 mov r0, r7                                    |         r0 = r7;
    0x000117e4 ldr r5, [r6]                                  |         r5 = *(0x11854);
    0x000117e8 bl 0x109d4                                    |         strerror (r0);
    0x000117ec str r7, [sp]                                  |         *(sp) = r7;
    0x000117f0 ldr r3, [pc, 0x6c]                            |         r3 = "_s:_error_:_cannot_get_information_about_UBI_device__d";
    0x000117f4 mov r2, 8                                     |         r2 = 8;
    0x000117f8 ldr r1, [pc, 0x68]                            |         r1 = *(0x11864);
    0x000117fc str r0, [sp, 4]                               |         var_4h = r0;
    0x00011800 mov r0, r5                                    |         r0 = r5;
    0x00011804 bl 0x10a64                                    |         fprintf (r0, r1, r2, "_s:_error_:_cannot_get_information_about_UBI_device__d")
    0x00011808 b 0x115c4                                     |         goto label_2;
                                                             |     }
    0x0001180c cmp r8, 0                                     |     
    0x00011810 mov r1, r5                                    |     r1 = r5;
                                                             |     if (r8 != 0) {
    0x00011814 bne 0x11828                                   |         goto label_11;
                                                             |     }
    0x00011818 mov r0, fp                                    |     r0 = fp;
    0x0001181c bl 0x109c8                                    |     printf (r0)
                                                             |     do {
                                                             | label_10:
    0x00011820 add r5, r5, 1                                 |         r5++;
    0x00011824 b 0x116d0                                     |         goto label_3;
                                                             | label_11:
    0x00011828 mov r0, sl                                    |         r0 = sl;
    0x0001182c bl 0x109c8                                    |         printf (r0)
    0x00011830 mov r8, 0                                     |         r8 = 0;
    0x00011834 b 0x11820                                     |         
                                                             |     } while (1);
                                                             | label_8:
    0x00011838 mov r2, r5                                    |     r2 = r5;
    0x0001183c ldr r1, [sp, 8]                               |     r1 = var_8h;
    0x00011840 mov r0, r6                                    |     r0 = r6;
    0x00011844 bl 0x113cc                                    |     r0 = fcn_000113cc (r0);
    0x00011848 subs r4, r0, 0                                |     r4 = r0 - 0;
                                                             |     if (r4 != r0) {
    0x0001184c bne 0x115c4                                   |         goto label_2;
                                                             |     }
                                                             | label_9:
    0x00011850 add r5, r5, 1                                 |     r5++;
    0x00011854 b 0x11700                                     |     goto label_4;
                                                             | }
    ; assembly                                                               | /* r2dec pseudo code output */
                                                                             | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/sbin/ubinfo @ 0x11a3c */
                                                                             | #include <stdint.h>
                                                                             |  
                                                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                             |  
    ; (fcn) fcn.00011a3c ()                                                  | void fcn_00011a3c (int32_t arg1, int32_t arg2) {
                                                                             |     int32_t var_0h;
                                                                             |     int32_t var_0h_2;
                                                                             |     int32_t var_ch;
                                                                             |     r0 = arg1;
                                                                             |     r1 = arg2;
    0x00011a3c ldr r3, [pc, 0x144]                                           |     r3 = *(0x11b84);
    0x00011a40 cmp r2, 0                                                     |     
    0x00011a44 push {r0, r1, r2, r4, r5, r6, r7, r8, sb, sl, fp, lr}         |     
    0x00011a48 ldr r6, [pc, 0x13c]                                           |     r6 = *(0x11b88);
    0x00011a4c mov r4, r0                                                    |     r4 = r0;
                                                                             |     if (r2 != 0) {
    0x00011a50 moveq r6, r3                                                  |         r6 = r3;
                                                                             |     }
    0x00011a54 mov r8, r2                                                    |     r8 = r2;
    0x00011a58 mov r3, r1                                                    |     r3 = r1;
    0x00011a5c mov r2, r0                                                    |     r2 = r0;
    0x00011a60 ldr r0, [pc, 0x128]                                           |     r0 = "_";
    0x00011a64 mov r5, r1                                                    |     r5 = r1;
    0x00011a68 bl 0x109c8                                                    |     printf (r0, r1, r2, r3, r4, r5, r6)
    0x00011a6c cmp r4, 0x40000001                                            |     
    0x00011a70 sbcs r3, r5, 0                                                |     __asm ("sbcs r3, r5, 0");
                                                                             |     if (r4 < 0x40000001) {
    0x00011a74 blt 0x11ac8                                                   |         goto label_1;
                                                                             |     }
    0x00011a78 add r3, pc, 0xf8                                              |     r3 = pc + 0xf8;
    0x00011a7c ldrd r2, r3, [r3]                                             |     __asm ("ldrd r2, r3, [r3]");
    0x00011a80 bic r0, r4, 0xc0000000                                        |     r0 = BIT_MASK (r4, 0xc0000000);
    0x00011a84 mov r1, 0                                                     |     r1 = 0;
    0x00011a88 bl 0x13fa0                                                    |     fcn_00013fa0 (r0);
    0x00011a8c lsr r7, r4, 0x1e                                              |     r7 = r4 >> 0x1e;
    0x00011a90 orr r7, r7, r5, lsl 2                                         |     r7 |= (r5 << 2);
    0x00011a94 asr sb, r5, 0x1e                                              |     sb = r5 >> 0x1e;
    0x00011a98 mov r2, r7                                                    |     r2 = r7;
    0x00011a9c mov r3, sb                                                    |     r3 = sb;
    0x00011aa0 strd r0, r1, [sp]                                             |     __asm ("strd r0, r1, [sp]");
    0x00011aa4 ldr r0, [pc, 0xe8]                                            |     r0 = "_lld_bytes";
    0x00011aa8 mov r1, r6                                                    |     r1 = r6;
                                                                             |     do {
                                                                             | label_0:
    0x00011aac bl 0x109c8                                                    |         printf (r0, r1, r2, r3)
    0x00011ab0 cmp r8, 0                                                     |         
                                                                             |         if (r8 == 0) {
    0x00011ab4 beq 0x11b70                                                   |             goto label_2;
                                                                             |         }
    0x00011ab8 mov r0, 0x29                                                  |         r0 = 0x29;
    0x00011abc add sp, sp, 0xc                                               |         
    0x00011ac0 pop {r4, r5, r6, r7, r8, sb, sl, fp, lr}                      |         
    0x00011ac4 b 0x109b0                                                     |         void (*0x109b0)() ();
                                                                             | label_1:
    0x00011ac8 mov r2, 0x100000                                              |         r2 = 0x100000;
    0x00011acc mov r3, 0                                                     |         r3 = 0;
    0x00011ad0 cmp r2, r4                                                    |         
    0x00011ad4 sbcs r3, r3, r5                                               |         __asm ("sbcs r3, r3, r5");
                                                                             |         if (r2 >= r4) {
    0x00011ad8 bge 0x11b1c                                                   |             goto label_3;
                                                                             |         }
    0x00011adc ldr sl, [pc, 0xb4]                                            |         sl = *(0x00011b98);
    0x00011ae0 mov fp, 0                                                     |         
    0x00011ae4 add r3, pc, 0x94                                              |         r3 = pc + 0x94;
    0x00011ae8 ldrd r2, r3, [r3]                                             |         __asm ("ldrd r2, r3, [r3]");
    0x00011aec and r0, sl, r4                                                |         r0 = sl & r4;
    0x00011af0 and r1, fp, r5                                                |         r1 = fp & r5;
    0x00011af4 bl 0x13fa0                                                    |         fcn_00013fa0 (r0);
    0x00011af8 lsr r7, r4, 0x14                                              |         r7 = r4 >> 0x14;
    0x00011afc orr r7, r7, r5, lsl 12                                        |         r7 |= (r5 << 12);
    0x00011b00 asr sb, r5, 0x14                                              |         sb = r5 >> 0x14;
    0x00011b04 mov r2, r7                                                    |         r2 = r7;
    0x00011b08 mov r3, sb                                                    |         r3 = sb;
    0x00011b0c strd r0, r1, [sp]                                             |         __asm ("strd r0, r1, [sp]");
    0x00011b10 ldr r0, [pc, 0x84]                                            |         r0 = *(0x11b98);
    0x00011b14 mov r1, r6                                                    |         r1 = r6;
    0x00011b18 b 0x11aac                                                     |         
                                                                             |     } while (1);
                                                                             | label_3:
    0x00011b1c mov r2, 0x400                                                 |     r2 = 0x400;
    0x00011b20 mov r3, 0                                                     |     r3 = 0;
    0x00011b24 cmp r2, r4                                                    |     
    0x00011b28 sbcs r3, r3, r5                                               |     __asm ("sbcs r3, r3, r5");
                                                                             |     if (r2 < r4) {
    0x00011b2c bge 0x11b70                                                   |         
    0x00011b30 ldr sl, [pc, 0x68]                                            |         sl = *(0x00011ba0);
    0x00011b34 mov fp, 0                                                     |         
    0x00011b38 mov r2, 0x66                                                  |         r2 = 0x66;
    0x00011b3c mov r3, 0                                                     |         r3 = 0;
    0x00011b40 and r0, sl, r4                                                |         r0 = sl & r4;
    0x00011b44 and r1, fp, r5                                                |         r1 = fp & r5;
    0x00011b48 bl 0x13fa0                                                    |         fcn_00013fa0 (r0);
    0x00011b4c lsr r7, r4, 0xa                                               |         r7 = r4 >> 0xa;
    0x00011b50 orr r7, r7, r5, lsl 22                                        |         r7 |= (r5 << 22);
    0x00011b54 asr sb, r5, 0xa                                               |         sb = r5 >> 0xa;
    0x00011b58 mov r2, r7                                                    |         r2 = r7;
    0x00011b5c mov r3, sb                                                    |         r3 = sb;
    0x00011b60 strd r0, r1, [sp]                                             |         __asm ("strd r0, r1, [sp]");
    0x00011b64 ldr r0, [pc, 0x38]                                            |         r0 = *(0x11ba0);
    0x00011b68 mov r1, r6                                                    |         r1 = r6;
    0x00011b6c b 0x11aac                                                     |         goto label_0;
                                                                             |     }
                                                                             | label_2:
    0x00011b70 add sp, sp, 0xc                                               |     
    0x00011b74 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                      |     
                                                                             | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/sbin/ubinfo @ 0x10b90 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) main ()                                          | int32_t main (int32_t argc, char ** argv) {
                                                             |     int32_t var_0h;
                                                             |     int32_t var_4h;
                                                             |     int32_t var_8h;
                                                             |     int32_t var_ch;
                                                             |     int32_t var_10h;
                                                             |     int32_t var_14h;
                                                             |     int32_t var_18h;
                                                             |     int32_t var_1ch;
                                                             |     int32_t var_20h;
                                                             |     int32_t var_24h;
                                                             |     int32_t var_dch;
                                                             |     r0 = argc;
                                                             |     r1 = argv;
                                                             |     /* [10] -r-x section size 13964 named .text */
    0x00010b90 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}     |     
    0x00010b94 ldr sb, [pc, 0x4f0]                           |     sb = "devn";
    0x00010b98 ldr sl, [pc, 0x4f0]                           |     sl = "an:N:d:hV";
    0x00010b9c ldr r6, [pc, 0x4f0]                           |     r6 = "an:N:d:hV";
    0x00010ba0 sub sp, sp, 0xdc                              |     
    0x00010ba4 mov r7, r0                                    |     r7 = r0;
    0x00010ba8 mov r8, r1                                    |     r8 = r1;
                                                             |     do {
                                                             | label_0:
    0x00010bac mov r5, 0                                     |         r5 = 0;
    0x00010bb0 str r5, [sp]                                  |         *(sp) = r5;
    0x00010bb4 mov r3, sb                                    |         r3 = sb;
    0x00010bb8 mov r2, sl                                    |         r2 = sl;
    0x00010bbc mov r1, r8                                    |         r1 = r8;
    0x00010bc0 mov r0, r7                                    |         r0 = r7;
    0x00010bc4 str r5, [sp, 0x20]                            |         var_20h = r5;
    0x00010bc8 bl 0x109ec                                    |         r0 = getopt_long ();
    0x00010bcc cmn r0, 1                                     |         
    0x00010bd0 mov r4, r0                                    |         r4 = r0;
                                                             |         if (r0 == 1) {
    0x00010bd4 beq 0x10d28                                   |             goto label_11;
                                                             |         }
    0x00010bd8 cmp r0, 0x61                                  |         
                                                             |         if (r0 == 0x61) {
    0x00010bdc beq 0x10c68                                   |             goto label_12;
                                                             |         }
                                                             |         if (r0 <= 0x61) {
    0x00010be0 bgt 0x10c14                                   |             
    0x00010be4 cmp r0, 0x4e                                  |             
                                                             |             if (r0 == 0x4e) {
    0x00010be8 beq 0x10cc8                                   |                 goto label_13;
                                                             |             }
    0x00010bec cmp r0, 0x56                                  |             
                                                             |             if (r0 == 0x56) {
    0x00010bf0 beq 0x10d00                                   |                 goto label_14;
                                                             |             }
    0x00010bf4 cmp r0, 0x3a                                  |             
                                                             |             if (r0 != 0x3a) {
    0x00010bf8 bne 0x10d14                                   |                 goto label_15;
                                                             |             }
    0x00010bfc ldr r3, [pc, 0x494]                           |             r3 = *(0x11094);
    0x00010c00 ldr r2, [pc, 0x494]                           |             r2 = stderr;
    0x00010c04 ldr r1, [pc, 0x494]                           |             r1 = "ubinfo";
    0x00010c08 ldr r0, [r3]                                  |             r0 = *(0x11094);
    0x00010c0c bl 0x10a64                                    |             fprintf (r0, "ubinfo", r2, r3)
    0x00010c10 b 0x10cb8                                     |             goto label_1;
                                                             |         }
    0x00010c14 cmp r0, 0x68                                  |         
                                                             |         if (r0 == 0x68) {
    0x00010c18 beq 0x10cd8                                   |             goto label_16;
                                                             |         }
    0x00010c1c cmp r0, 0x6e                                  |         
                                                             |         if (r0 == 0x6e) {
    0x00010c20 beq 0x10c74                                   |             goto label_17;
                                                             |         }
    0x00010c24 cmp r0, 0x64                                  |         
                                                             |         if (r0 != 0x64) {
    0x00010c28 bne 0x10d14                                   |             goto label_15;
                                                             |         }
    0x00010c2c ldr r4, [pc, 0x470]                           |         r4 = "_s:_error_:_parameter_is_missing";
    0x00010c30 add r1, sp, 0x20                              |         r1 += var_20h;
    0x00010c34 ldr r0, [r4]                                  |         r0 = "_s:_error_:_parameter_is_missing";
    0x00010c38 bl 0x118b8                                    |         fcn_000118b8 ("_s:_error_:_parameter_is_missing", r1);
    0x00010c3c ldr r3, [sp, 0x20]                            |         r3 = var_20h;
    0x00010c40 cmp r3, 0                                     |         
    0x00010c44 str r0, [r6]                                  |         *(r6) = r0;
                                                             |         if (r3 != 0) {
    0x00010c48 lsreq r0, r0, 0x1f                            |             r0 >>= 0x1f;
                                                             |         }
                                                             |         if (r3 == 0) {
    0x00010c4c movne r0, 1                                   |             r0 = 1;
                                                             |         }
    0x00010c50 cmp r0, 0                                     |         
    0x00010c54 beq 0x10bac                                   |         
                                                             |     } while (r0 == 0);
    0x00010c58 ldr r3, [r4]                                  |     r3 = *(r4);
    0x00010c5c ldr r2, [pc, 0x438]                           |     r2 = stderr;
    0x00010c60 ldr r1, [pc, 0x440]                           |     r1 = optarg;
    0x00010c64 b 0x10cac                                     |     goto label_18;
                                                             | label_12:
    0x00010c68 mov r3, 1                                     |     r3 = 1;
    0x00010c6c str r3, [r6, 8]                               |     *((r6 + 8)) = r3;
    0x00010c70 b 0x10bac                                     |     goto label_0;
                                                             | label_17:
    0x00010c74 ldr r4, [pc, 0x428]                           |     r4 = "_s:_error_:_parameter_is_missing";
    0x00010c78 add r1, sp, 0x20                              |     r1 += var_20h;
    0x00010c7c ldr r0, [r4]                                  |     r0 = "_s:_error_:_parameter_is_missing";
    0x00010c80 bl 0x118b8                                    |     fcn_000118b8 ("_s:_error_:_parameter_is_missing", r1);
    0x00010c84 ldr r3, [sp, 0x20]                            |     r3 = var_20h;
    0x00010c88 cmp r3, 0                                     |     
    0x00010c8c str r0, [r6, 4]                               |     *((r6 + 4)) = r0;
                                                             |     if (r3 != 0) {
    0x00010c90 lsreq r0, r0, 0x1f                            |         r0 >>= 0x1f;
                                                             |     }
                                                             |     if (r3 == 0) {
    0x00010c94 movne r0, 1                                   |         r0 = 1;
                                                             |     }
    0x00010c98 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00010c9c beq 0x10bac                                   |         goto label_0;
                                                             |     }
    0x00010ca0 ldr r3, [r4]                                  |     r3 = *(r4);
    0x00010ca4 ldr r2, [pc, 0x3f0]                           |     r2 = stderr;
    0x00010ca8 ldr r1, [pc, 0x3fc]                           |     r1 = "%s: error!: bad UBI device number: \"%s\"\n";
                                                             | label_18:
    0x00010cac ldr r0, [pc, 0x3e4]                           |     
    0x00010cb0 ldr r0, [r0]                                  |     r0 = *(0x11094);
    0x00010cb4 bl 0x10a64                                    |     fprintf (r0, "%s: error!: bad UBI device number: \"%s\"\n", r2, r3)
                                                             | label_1:
    0x00010cb8 mvn r4, 0                                     |     r4 = ~0;
                                                             | label_2:
    0x00010cbc mov r0, r4                                    |     r0 = r4;
    0x00010cc0 add sp, sp, 0xdc                              |     
    0x00010cc4 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}      |     
                                                             | label_13:
    0x00010cc8 ldr r3, [pc, 0x3d4]                           |     
    0x00010ccc ldr r3, [r3]                                  |     r3 = "_s:_error_:_parameter_is_missing";
    0x00010cd0 str r3, [r6, 0x10]                            |     *((r6 + 0x10)) = r3;
    0x00010cd4 b 0x10bac                                     |     goto label_0;
                                                             | label_16:
    0x00010cd8 ldr r1, [pc, 0x3d0]                           |     r1 = "_s:_error_:_bad_volume_ID:___s_";
    0x00010cdc ldr r0, [pc, 0x3d0]                           |     r0 = "ubinfo_version_2.1.0___a_tool_to_print_UBI_information.";
    0x00010ce0 bl 0x109c8                                    |     printf ("ubinfo_version_2.1.0___a_tool_to_print_UBI_information.", "_s:_error_:_bad_volume_ID:___s_")
    0x00010ce4 ldr r1, [pc, 0x3cc]                           |     r1 = "_s";
    0x00010ce8 ldr r0, [pc, 0x3c4]                           |     r0 = "ubinfo_version_2.1.0___a_tool_to_print_UBI_information.";
    0x00010cec bl 0x109c8                                    |     printf ("ubinfo_version_2.1.0___a_tool_to_print_UBI_information.", "_s")
    0x00010cf0 ldr r0, [pc, 0x3c4]                           |     r0 = "Usage_1:_ubinfo___d__UBI_device_number_____n__volume_ID____N__volume_name_____a____h____V____vol_id_volume_ID_____name__volume_name______devn__UBI_device_number______all_____help_____version_Usage_2:_ubinfo__UBI_device_node_file_name____a____h____V";
    0x00010cf4 bl 0x10a1c                                    |     puts ("Usage_1:_ubinfo___d__UBI_device_number_____n__volume_ID____N__volume_name_____a____h____V____vol_id_volume_ID_____name__volume_name______devn__UBI_device_number______all_____help_____version_Usage_2:_ubinfo__UBI_device_node_file_name____a____h____V");
                                                             |     do {
    0x00010cf8 mov r0, r5                                    |         r0 = r5;
    0x00010cfc bl 0x10b30                                    |         exit (r0);
                                                             | label_14:
    0x00010d00 ldr r2, [pc, 0x3b8]                           |         r2 = "-d, --devn=<UBI device number>  UBI device number to get information about\n-n, --vol_id=<volume ID>        ID of UBI volume to print information about\n-N, --name=<volume name>        name of UBI volume to print information about\n-a, --all                       print information about all devices and volumes,\n                                or about all volumes if the UBI device was\n                                specified\n-h, --help                      print help message\n-V, --version                   print program version";
    0x00010d04 ldr r1, [pc, 0x390]                           |         r1 = stderr;
    0x00010d08 ldr r0, [pc, 0x3b4]                           |         r0 = "2.1.0";
    0x00010d0c bl 0x109c8                                    |         printf ("2.1.0", r1, "-d, --devn=<UBI device number>  UBI device number to get information about\n-n, --vol_id=<volume ID>        ID of UBI volume to print information about\n-N, --name=<volume name>        name of UBI volume to print information about\n-a, --all                       print information about all devices and volumes,\n                                or about all volumes if the UBI device was\n                                specified\n-h, --help                      print help message\n-V, --version                   print program version")
    0x00010d10 b 0x10cf8                                     |         
                                                             |     } while (1);
                                                             | label_15:
    0x00010d14 ldr r3, [pc, 0x37c]                           |     r3 = *(0x11094);
    0x00010d18 ldr r0, [pc, 0x3a8]                           |     r0 = "%s (mtd-utils) %s\n";
    0x00010d1c ldr r1, [r3]                                  |     r1 = *(0x11094);
    0x00010d20 bl 0x10b48                                    |     fputs ("%s (mtd-utils) %s\n", r1);
    0x00010d24 b 0x10cb8                                     |     goto label_1;
                                                             | label_11:
    0x00010d28 ldr r3, [pc, 0x39c]                           |     
    0x00010d2c sub r2, r7, 1                                 |     r2 = r7 - 1;
    0x00010d30 ldr r3, [r3]                                  |     r3 = "Use__h_for_help";
    0x00010d34 cmp r2, r3                                    |     
                                                             |     if (r2 != r3) {
    0x00010d38 bne 0x10d78                                   |         goto label_19;
                                                             |     }
    0x00010d3c ldr r2, [r8, r2, lsl 2]                       |     offset_0 = r2 << 2;
                                                             |     r2 = *((r8 + offset_0));
    0x00010d40 ldr r3, [pc, 0x34c]                           |     r3 = "an:N:d:hV";
    0x00010d44 str r2, [r3, 0xc]                             |     *((r3 + 0xc)) = r2;
                                                             |     do {
    0x00010d48 bl 0x124ec                                    |         r0 = fcn_000124ec ();
    0x00010d4c subs r6, r0, 0                                |         r6 = r0 - 0;
                                                             |         if (r6 != r0) {
    0x00010d50 bne 0x10dcc                                   |             goto label_20;
                                                             |         }
    0x00010d54 bl 0x10b24                                    |         errno_location ();
    0x00010d58 ldr r6, [pc, 0x338]                           |         r6 = *(0x11094);
    0x00010d5c ldr r2, [pc, 0x338]                           |         r2 = stderr;
    0x00010d60 ldr r5, [r0]                                  |         r5 = *(r0);
    0x00010d64 ldr r0, [r6]                                  |         r0 = *(0x11094);
    0x00010d68 cmp r5, 0                                     |         
                                                             |         if (r5 != 0) {
    0x00010d6c bne 0x10d98                                   |             goto label_21;
                                                             |         }
    0x00010d70 ldr r1, [pc, 0x358]                           |         r1 = optind;
    0x00010d74 b 0x10d90                                     |         goto label_22;
                                                             | label_19:
    0x00010d78 cmp r7, r3                                    |         
    0x00010d7c ble 0x10d48                                   |         
                                                             |     } while (r7 <= r3);
    0x00010d80 ldr r3, [pc, 0x310]                           |     r3 = *(0x11094);
    0x00010d84 ldr r2, [pc, 0x310]                           |     r2 = stderr;
    0x00010d88 ldr r1, [pc, 0x344]                           |     r1 = "%s: error!: UBI is not present in the system\n";
    0x00010d8c ldr r0, [r3]                                  |     r0 = *(0x11094);
                                                             | label_22:
    0x00010d90 bl 0x10a64                                    |     fprintf (r0, "%s: error!: UBI is not present in the system\n", r2, r3)
    0x00010d94 b 0x10cbc                                     |     goto label_2;
                                                             | label_21:
    0x00010d98 ldr r1, [pc, 0x338]                           |     r1 = "%s: error!: more then one UBI device specified (use -h for help)\n";
    0x00010d9c bl 0x10a64                                    |     fprintf (r0, "%s: error!: more then one UBI device specified (use -h for help)\n")
    0x00010da0 mov r0, r5                                    |     r0 = r5;
    0x00010da4 ldr r6, [r6]                                  |     r6 = *(r6);
    0x00010da8 bl 0x109d4                                    |     strerror (r0);
    0x00010dac str r5, [sp]                                  |     *(sp) = r5;
    0x00010db0 ldr r3, [pc, 0x324]                           |     r3 = "%s: error!: cannot open libubi\n";
    0x00010db4 mov r2, 8                                     |     r2 = 8;
    0x00010db8 ldr r1, [pc, 0x320]                           |     r1 = *(0x110dc);
    0x00010dbc str r0, [sp, 4]                               |     var_4h = r0;
    0x00010dc0 mov r0, r6                                    |     r0 = r6;
    0x00010dc4 bl 0x10a64                                    |     fprintf (r0, r1, r2, "%s: error!: cannot open libubi\n", r4, r5)
    0x00010dc8 b 0x10cbc                                     |     goto label_2;
                                                             | label_20:
    0x00010dcc ldr r5, [pc, 0x2c0]                           |     r5 = "an:N:d:hV";
    0x00010dd0 ldr r1, [r5, 0xc]                             |     r1 = "ubinfo";
    0x00010dd4 cmp r1, 0                                     |     
    0x00010dd8 bne 0x10e08                                   |     
                                                             |     while (r0 == 0) {
    0x00010ddc ldr r7, [r5, 0x10]                            |         r7 = *((r5 + 0x10));
    0x00010de0 cmp r7, 0                                     |         
                                                             |         if (r7 != 0) {
    0x00010de4 bne 0x10e20                                   |             goto label_23;
                                                             |         }
                                                             | label_3:
    0x00010de8 ldm r5, {r1, r2}                              |         r1 = *(r5);
                                                             |         r2 = *((r5 + 4));
    0x00010dec cmn r2, 1                                     |         
                                                             |         if (r2 == 1) {
    0x00010df0 beq 0x1106c                                   |             goto label_24;
                                                             |         }
    0x00010df4 cmn r1, 1                                     |         
                                                             |         if (r1 != 1) {
    0x00010df8 bne 0x10eb8                                   |             goto label_25;
                                                             |         }
    0x00010dfc ldr r2, [pc, 0x298]                           |         r2 = stderr;
    0x00010e00 ldr r1, [pc, 0x2dc]                           |         r1 = "_serror__d___s_";
    0x00010e04 b 0x10e34                                     |         goto label_26;
    0x00010e08 bl 0x11230                                    |         r0 = fcn_00011230 (r0, r1);
    0x00010e0c cmp r0, 0                                     |         
    0x00010e10 beq 0x10ddc                                   |         
                                                             |     }
                                                             |     do {
                                                             | label_4:
    0x00010e14 mov r0, r6                                    |         r0 = r6;
    0x00010e18 bl 0x12418                                    |         fcn_00012418 (r0);
    0x00010e1c b 0x10cbc                                     |         goto label_2;
                                                             | label_23:
    0x00010e20 ldr r8, [r5]                                  |         r8 = *(r5);
    0x00010e24 cmn r8, 1                                     |         
                                                             |         if (r8 != 1) {
    0x00010e28 bne 0x10e44                                   |             goto label_27;
                                                             |         }
    0x00010e2c ldr r2, [pc, 0x268]                           |         r2 = stderr;
    0x00010e30 ldr r1, [pc, 0x2b0]                           |         r1 = "_s:_error_:_volume_ID_is_specified__but_UBI_device_number_is_not__use__h_for_help_";
                                                             | label_26:
    0x00010e34 ldr r3, [pc, 0x25c]                           |         r3 = *(0x11094);
    0x00010e38 ldr r0, [r3]                                  |         r0 = *(0x11094);
    0x00010e3c bl 0x10a64                                    |         fprintf (r0, "_s:_error_:_volume_ID_is_specified__but_UBI_device_number_is_not__use__h_for_help_", r2, r3)
    0x00010e40 b 0x10e14                                     |         
                                                             |     } while (1);
                                                             | label_27:
    0x00010e44 add r3, sp, 0x20                              |     r3 += var_20h;
    0x00010e48 mov r2, r7                                    |     r2 = r7;
    0x00010e4c mov r1, r8                                    |     r1 = r8;
    0x00010e50 mov r0, r6                                    |     r0 = r6;
    0x00010e54 bl 0x13d6c                                    |     r0 = fcn_00013d6c (r0, r1);
    0x00010e58 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00010e5c ldreq r3, [sp, 0x24]                          |         r3 = var_24h;
                                                             |     }
                                                             |     if (r0 == 0) {
    0x00010e60 streq r3, [r5, 4]                             |         *((r5 + 4)) = r3;
                                                             |         goto label_28;
                                                             |     }
                                                             |     if (r0 == 0) {
                                                             | label_28:
    0x00010e64 beq 0x10de8                                   |         goto label_3;
                                                             |     }
    0x00010e68 bl 0x10b24                                    |     errno_location ();
    0x00010e6c ldr sb, [pc, 0x224]                           |     sb = obj.stderr;
    0x00010e70 mov r3, r7                                    |     r3 = r7;
    0x00010e74 ldr r2, [pc, 0x220]                           |     r2 = stderr;
    0x00010e78 ldr r1, [pc, 0x26c]                           |     r1 = "%s: error!: volume name is specified, but UBI device number is not (use -h for help)\n\n";
    0x00010e7c ldr r5, [r0]                                  |     r5 = *(r0);
    0x00010e80 str r8, [sp]                                  |     *(sp) = r8;
    0x00010e84 ldr r0, [sb]                                  |     r0 = *(sb);
    0x00010e88 bl 0x10a64                                    |     fprintf (r0, "%s: error!: volume name is specified, but UBI device number is not (use -h for help)\n\n", r2, r3, r4, r5)
    0x00010e8c ldr r7, [sb]                                  |     r7 = *(sb);
                                                             |     do {
    0x00010e90 mov r0, r5                                    |         r0 = r5;
    0x00010e94 bl 0x109d4                                    |         strerror (r0);
    0x00010e98 str r5, [sp]                                  |         *(sp) = r5;
    0x00010e9c ldr r3, [pc, 0x238]                           |         r3 = "%s: error!: cannot open libubi\n";
    0x00010ea0 mov r2, 8                                     |         r2 = 8;
    0x00010ea4 ldr r1, [pc, 0x234]                           |         r1 = *(0x110dc);
    0x00010ea8 str r0, [sp, 4]                               |         var_4h = r0;
    0x00010eac mov r0, r7                                    |         r0 = r7;
    0x00010eb0 bl 0x10a64                                    |         fprintf (r0, r1, r2, "%s: error!: cannot open libubi\n", r4, r5)
    0x00010eb4 b 0x10e14                                     |         goto label_4;
                                                             | label_25:
    0x00010eb8 mov r0, r6                                    |         r0 = r6;
    0x00010ebc bl 0x113cc                                    |         fcn_000113cc (r0);
                                                             | label_5:
    0x00010ec0 mov r0, r6                                    |         r0 = r6;
    0x00010ec4 bl 0x12418                                    |         fcn_00012418 (r0);
    0x00010ec8 mov r4, 0                                     |         r4 = 0;
    0x00010ecc b 0x10cbc                                     |         goto label_2;
                                                             | label_10:
    0x00010ed0 add r1, sp, 8                                 |         r1 += var_8h;
    0x00010ed4 mov r0, r6                                    |         r0 = r6;
    0x00010ed8 ldr sb, [r5, 8]                               |         sb = *((r5 + 8));
    0x00010edc bl 0x129a8                                    |         r0 = fcn_000129a8 (r0, r1);
    0x00010ee0 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00010ee4 beq 0x10f0c                                   |             goto label_29;
                                                             |         }
    0x00010ee8 bl 0x10b24                                    |         errno_location ();
    0x00010eec ldr r7, [pc, 0x1a4]                           |         r7 = *(0x11094);
    0x00010ef0 ldr r2, [pc, 0x1a4]                           |         r2 = stderr;
    0x00010ef4 ldr r1, [pc, 0x1f4]                           |         r1 = "_s:_error_:_cannot_get_information_about_volume___s__on_ubi_d";
    0x00010ef8 ldr r5, [r0]                                  |         r5 = *(r0);
    0x00010efc ldr r0, [r7]                                  |         r0 = *(0x11094);
    0x00010f00 bl 0x10a64                                    |         fprintf (r0, "_s:_error_:_cannot_get_information_about_volume___s__on_ubi_d", r2, r3, r4, r5)
                                                             | label_8:
    0x00010f04 ldr r7, [r7]                                  |         r7 = *(r7);
    0x00010f08 b 0x10e90                                     |         
                                                             |     } while (1);
                                                             | label_29:
    0x00010f0c ldr r1, [sp, 0x14]                            |     r1 = var_14h;
    0x00010f10 ldr r0, [pc, 0x1dc]                           |     r0 = "%s: error!: cannot get UBI information\n";
    0x00010f14 bl 0x109c8                                    |     printf ("%s: error!: cannot get UBI information\n", r1)
    0x00010f18 ldr r1, [sp, 8]                               |     r1 = var_8h;
    0x00010f1c ldr r0, [pc, 0x1d4]                           |     r0 = "UBI version:                    %d\n";
    0x00010f20 bl 0x109c8                                    |     printf ("UBI version:                    %d\n", r1)
    0x00010f24 ldr r1, [sp, 0x18]                            |     r1 = var_18h;
    0x00010f28 cmn r1, 1                                     |     
                                                             |     if (r1 == 1) {
    0x00010f2c beq 0x10fe0                                   |         goto label_30;
                                                             |     }
    0x00010f30 ldr r2, [sp, 0x1c]                            |     r2 = var_1ch;
    0x00010f34 ldr r0, [pc, 0x1c0]                           |     r0 = "Count of UBI devices:           %d\n";
    0x00010f38 bl 0x109c8                                    |     printf ("Count of UBI devices:           %d\n", r1, r2)
                                                             | label_7:
    0x00010f3c ldr r3, [sp, 8]                               |     r3 = var_8h;
    0x00010f40 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00010f44 beq 0x10ec0                                   |         goto label_5;
                                                             |     }
    0x00010f48 ldr r0, [pc, 0x1b0]                           |     r0 = "UBI control device major/minor: %d:%d\n";
    0x00010f4c bl 0x109c8                                    |     printf ("UBI control device major/minor: %d:%d\n")
    0x00010f50 ldr sl, [pc, 0x1ac]                           |     sl = "Present UBI devices:            ";
    0x00010f54 ldr r8, [sp, 0xc]                             |     r8 = var_ch;
    0x00010f58 ldr fp, [pc, 0x1a8]                           |     fp = "__ubi_d";
    0x00010f5c mov r7, 1                                     |     r7 = 1;
                                                             | label_9:
    0x00010f60 ldr r3, [sp, 0x10]                            |     r3 = var_10h;
    0x00010f64 cmp r8, r3                                    |     
                                                             |     if (r8 <= r3) {
    0x00010f68 ble 0x10fec                                   |         goto label_31;
                                                             |     }
    0x00010f6c mov r0, 0xa                                   |     r0 = 0xa;
    0x00010f70 bl 0x109b0                                    |     putchar (r0);
    0x00010f74 cmp sb, 0                                     |     
                                                             |     if (sb == 0) {
    0x00010f78 beq 0x10ec0                                   |         goto label_5;
                                                             |     }
    0x00010f7c mov r0, 0xa                                   |     r0 = 0xa;
    0x00010f80 bl 0x109b0                                    |     putchar (r0);
    0x00010f84 ldr r8, [pc, 0x180]                           |     r8 = "__ubi_d";
    0x00010f88 ldr r5, [sp, 0xc]                             |     r5 = var_ch;
    0x00010f8c mov r7, 1                                     |     r7 = 1;
                                                             | label_6:
    0x00010f90 ldr r3, [sp, 0x10]                            |     r3 = var_10h;
    0x00010f94 cmp r5, r3                                    |     
                                                             |     if (r5 > r3) {
    0x00010f98 bgt 0x10ec0                                   |         goto label_5;
                                                             |     }
    0x00010f9c mov r1, r5                                    |     r1 = r5;
    0x00010fa0 mov r0, r6                                    |     r0 = r6;
    0x00010fa4 bl 0x132e0                                    |     r0 = fcn_000132e0 (r0, r1);
    0x00010fa8 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00010fac beq 0x10fd8                                   |         goto label_32;
                                                             |     }
    0x00010fb0 cmp r7, 0                                     |     
                                                             |     if (r7 == 0) {
    0x00010fb4 bne 0x10fc0                                   |         
    0x00010fb8 mov r0, r8                                    |         r0 = r8;
    0x00010fbc bl 0x10a1c                                    |         puts (r0);
                                                             |     }
    0x00010fc0 mov r2, sb                                    |     r2 = sb;
    0x00010fc4 mov r1, r5                                    |     r1 = r5;
    0x00010fc8 mov r0, r6                                    |     r0 = r6;
    0x00010fcc bl 0x11554                                    |     r0 = fcn_00011554 (r0, r1);
    0x00010fd0 subs r7, r0, 0                                |     r7 = r0 - 0;
                                                             |     if (r7 != r0) {
    0x00010fd4 bne 0x10e14                                   |         goto label_4;
                                                             |     }
                                                             | label_32:
    0x00010fd8 add r5, r5, 1                                 |     r5++;
    0x00010fdc b 0x10f90                                     |     goto label_6;
                                                             | label_30:
    0x00010fe0 ldr r0, [pc, 0x128]                           |     r0 = "_";
    0x00010fe4 bl 0x10a1c                                    |     puts ("_");
    0x00010fe8 b 0x10f3c                                     |     goto label_7;
                                                             | label_31:
    0x00010fec add r2, sp, 0x20                              |     r2 += var_20h;
    0x00010ff0 mov r1, r8                                    |     r1 = r8;
    0x00010ff4 mov r0, r6                                    |     r0 = r6;
    0x00010ff8 bl 0x13334                                    |     r0 = fcn_00013334 (r0, r1);
    0x00010ffc cmn r0, 1                                     |     
                                                             |     if (r0 == 1) {
    0x00011000 bne 0x11040                                   |         
    0x00011004 bl 0x10b24                                    |         r0 = errno_location ();
    0x00011008 ldr r3, [r0]                                  |         r3 = *(r0);
    0x0001100c mov r5, r0                                    |         r5 = r0;
    0x00011010 cmp r3, 2                                     |         
                                                             |         if (r3 == 2) {
    0x00011014 beq 0x11054                                   |             goto label_33;
                                                             |         }
    0x00011018 ldr r7, [pc, 0x78]                            |         r7 = *(0x11094);
    0x0001101c mov r0, 0xa                                   |         r0 = 0xa;
    0x00011020 bl 0x109b0                                    |         putchar (r0);
    0x00011024 mov r3, r8                                    |         r3 = r8;
    0x00011028 ldr r2, [pc, 0x6c]                            |         r2 = stderr;
    0x0001102c ldr r1, [pc, 0xe0]                            |         r1 = "UBI_control_device_is_not_supported_by_this_kernel";
    0x00011030 ldr r0, [r7]                                  |         r0 = *(0x11094);
    0x00011034 ldr r5, [r5]                                  |         r5 = *(r5);
    0x00011038 bl 0x10a64                                    |         fprintf (r0, "UBI_control_device_is_not_supported_by_this_kernel", r2, r3, r4, r5)
    0x0001103c b 0x10f04                                     |         goto label_8;
                                                             |     }
    0x00011040 cmp r7, 0                                     |     
    0x00011044 mov r1, r8                                    |     r1 = r8;
                                                             |     if (r7 != 0) {
    0x00011048 bne 0x1105c                                   |         goto label_34;
                                                             |     }
    0x0001104c mov r0, fp                                    |     r0 = fp;
    0x00011050 bl 0x109c8                                    |     printf (r0)
                                                             |     do {
                                                             | label_33:
    0x00011054 add r8, r8, 1                                 |         r8++;
    0x00011058 b 0x10f60                                     |         goto label_9;
                                                             | label_34:
    0x0001105c mov r0, sl                                    |         r0 = sl;
    0x00011060 bl 0x109c8                                    |         printf (r0)
    0x00011064 mov r7, 0                                     |         r7 = 0;
    0x00011068 b 0x11054                                     |         
                                                             |     } while (1);
                                                             | label_24:
    0x0001106c cmn r1, 1                                     |     
                                                             |     if (r1 == 1) {
    0x00011070 beq 0x10ed0                                   |         goto label_10;
                                                             |     }
    0x00011074 ldr r2, [r5, 8]                               |     r2 = *((r5 + 8));
    0x00011078 mov r0, r6                                    |     r0 = r6;
    0x0001107c bl 0x11554                                    |     r0 = fcn_00011554 (r0, r1);
    0x00011080 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00011084 beq 0x10ec0                                   |         goto label_5;
                                                             |     }
    0x00011088 b 0x10e14                                     |     goto label_4;
                                                             | }

[*] Function printf used 51 times ubinfo