[*] Binary protection state of ubinize
Partial RELRO No Canary found NX disabled No PIE No RPATH No RUNPATH No Symbols
[*] Function printf tear down of ubinize
; 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/ubinize @ 0x12f1c */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00012f1c () | void fcn_00012f1c (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_0h_2;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x00012f1c ldr r3, [pc, 0x144] | r3 = *(0x13064);
0x00012f20 cmp r2, 0 |
0x00012f24 push {r0, r1, r2, r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00012f28 ldr r6, [pc, 0x13c] | r6 = "__";
0x00012f2c mov r4, r0 | r4 = r0;
| if (r2 != 0) {
0x00012f30 moveq r6, r3 | r6 = r3;
| }
0x00012f34 mov r8, r2 | r8 = r2;
0x00012f38 mov r3, r1 | r3 = r1;
0x00012f3c mov r2, r0 | r2 = r0;
0x00012f40 ldr r0, [pc, 0x128] | r0 = *(0x1306c);
0x00012f44 mov r5, r1 | r5 = r1;
0x00012f48 bl 0x10a94 | printf (r0, r1, r2, r3, r4, r5, "__")
0x00012f4c cmp r4, 0x40000001 |
0x00012f50 sbcs r3, r5, 0 | __asm ("sbcs r3, r5, 0");
| if (r4 < 0x40000001) {
0x00012f54 blt 0x12fa8 | goto label_1;
| }
0x00012f58 add r3, pc, 0xf8 | r3 = pc + 0xf8;
0x00012f5c ldrd r2, r3, [r3] | __asm ("ldrd r2, r3, [r3]");
0x00012f60 bic r0, r4, 0xc0000000 | r0 = BIT_MASK (r4, 0xc0000000);
0x00012f64 mov r1, 0 | r1 = 0;
0x00012f68 bl 0x14144 | fcn_00014144 (r0);
0x00012f6c lsr r7, r4, 0x1e | r7 = r4 >> 0x1e;
0x00012f70 orr r7, r7, r5, lsl 2 | r7 |= (r5 << 2);
0x00012f74 asr sb, r5, 0x1e | sb = r5 >> 0x1e;
0x00012f78 mov r2, r7 | r2 = r7;
0x00012f7c mov r3, sb | r3 = sb;
0x00012f80 strd r0, r1, [sp] | __asm ("strd r0, r1, [sp]");
0x00012f84 ldr r0, [pc, 0xe8] | r0 = "%lld bytes";
0x00012f88 mov r1, r6 | r1 = r6;
| do {
| label_0:
0x00012f8c bl 0x10a94 | printf (r0, r1, r2, r3)
0x00012f90 cmp r8, 0 |
| if (r8 == 0) {
0x00012f94 beq 0x13050 | goto label_2;
| }
0x00012f98 mov r0, 0x29 | r0 = 0x29;
0x00012f9c add sp, sp, 0xc |
0x00012fa0 pop {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00012fa4 b 0x10a7c | void (*0x10a7c)() ();
| label_1:
0x00012fa8 mov r2, 0x100000 | r2 = 0x100000;
0x00012fac mov r3, 0 | r3 = 0;
0x00012fb0 cmp r2, r4 |
0x00012fb4 sbcs r3, r3, r5 | __asm ("sbcs r3, r3, r5");
| if (r2 >= r4) {
0x00012fb8 bge 0x12ffc | goto label_3;
| }
0x00012fbc ldr sl, [pc, 0xb4] | sl = *(0x00013078);
0x00012fc0 mov fp, 0 |
0x00012fc4 add r3, pc, 0x94 | r3 = pc + 0x94;
0x00012fc8 ldrd r2, r3, [r3] | __asm ("ldrd r2, r3, [r3]");
0x00012fcc and r0, sl, r4 | r0 = sl & r4;
0x00012fd0 and r1, fp, r5 | r1 = fp & r5;
0x00012fd4 bl 0x14144 | fcn_00014144 (r0);
0x00012fd8 lsr r7, r4, 0x14 | r7 = r4 >> 0x14;
0x00012fdc orr r7, r7, r5, lsl 12 | r7 |= (r5 << 12);
0x00012fe0 asr sb, r5, 0x14 | sb = r5 >> 0x14;
0x00012fe4 mov r2, r7 | r2 = r7;
0x00012fe8 mov r3, sb | r3 = sb;
0x00012fec strd r0, r1, [sp] | __asm ("strd r0, r1, [sp]");
0x00012ff0 ldr r0, [pc, 0x84] | r0 = *(0x13078);
0x00012ff4 mov r1, r6 | r1 = r6;
0x00012ff8 b 0x12f8c |
| } while (1);
| label_3:
0x00012ffc mov r2, 0x400 | r2 = 0x400;
0x00013000 mov r3, 0 | r3 = 0;
0x00013004 cmp r2, r4 |
0x00013008 sbcs r3, r3, r5 | __asm ("sbcs r3, r3, r5");
| if (r2 < r4) {
0x0001300c bge 0x13050 |
0x00013010 ldr sl, [pc, 0x68] | sl = *(0x00013080);
0x00013014 mov fp, 0 |
0x00013018 mov r2, 0x66 | r2 = 0x66;
0x0001301c mov r3, 0 | r3 = 0;
0x00013020 and r0, sl, r4 | r0 = sl & r4;
0x00013024 and r1, fp, r5 | r1 = fp & r5;
0x00013028 bl 0x14144 | fcn_00014144 (r0);
0x0001302c lsr r7, r4, 0xa | r7 = r4 >> 0xa;
0x00013030 orr r7, r7, r5, lsl 22 | r7 |= (r5 << 22);
0x00013034 asr sb, r5, 0xa | sb = r5 >> 0xa;
0x00013038 mov r2, r7 | r2 = r7;
0x0001303c mov r3, sb | r3 = sb;
0x00013040 strd r0, r1, [sp] | __asm ("strd r0, r1, [sp]");
0x00013044 ldr r0, [pc, 0x38] | r0 = *(0x13080);
0x00013048 mov r1, r6 | r1 = r6;
0x0001304c b 0x12f8c | goto label_0;
| }
| label_2:
0x00013050 add sp, sp, 0xc |
0x00013054 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/ubinize @ 0x10c90 */
| #include <stdint.h>
|
; (fcn) main () | int32_t main (char ** envp, int32_t argc, char ** argv) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_8h_2;
| int32_t var_10h;
| int32_t var_14h;
| size_t size;
| int32_t var_20h;
| int32_t var_24h;
| void * var_28h;
| void * ptr;
| int32_t var_30h;
| int32_t var_34h;
| int32_t var_3ch;
| int32_t var_40h;
| int32_t var_44h;
| int32_t var_48h;
| int32_t var_4ch;
| int32_t var_58h;
| int32_t var_5ch;
| int32_t var_60h;
| int32_t var_90h;
| int32_t var_90h_2;
| int32_t var_c8h;
| int32_t var_f8h;
| int32_t var_f8h_2;
| char * s;
| int32_t var_234h;
| r0 = argc;
| r1 = argv;
| /* [10] -r-x section size 14128 named .text */
0x00010c90 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00010c94 ldr r8, [pc, 0xf28] | r8 = *(0x11bc0);
0x00010c98 sub sp, sp, 0x234 |
0x00010c9c mov r6, r1 | r6 = r1;
0x00010ca0 mov r5, r0 | r5 = r0;
0x00010ca4 bl 0x13088 | fcn_00013088 ();
0x00010ca8 bl 0x10b60 | rand ();
0x00010cac ldr sb, [pc, 0xf14] | sb = "output";
0x00010cb0 ldr sl, [pc, 0xf14] | sl = "o:p:m:s:O:e:x:Q:vhV";
0x00010cb4 ldr r4, [pc, 0xf14] | r4 = "o:p:m:s:O:e:x:Q:vhV";
0x00010cb8 str r0, [r8, 0x24] | *((r8 + 0x24)) = r0;
| label_1:
0x00010cbc mov fp, 0 |
0x00010cc0 str fp, [sp] | *(sp) = fp;
0x00010cc4 mov r3, sb | r3 = sb;
0x00010cc8 mov r2, sl | r2 = sl;
0x00010ccc mov r1, r6 | r1 = r6;
0x00010cd0 mov r0, r5 | r0 = r5;
0x00010cd4 str fp, [sp, 0x130] | s = fp;
0x00010cd8 bl 0x10ab8 | r0 = getopt_long ();
0x00010cdc cmn r0, 1 |
0x00010ce0 mov r7, r0 | r7 = r0;
| if (r0 == 1) {
0x00010ce4 beq 0x10fec | goto label_20;
| }
0x00010ce8 cmp r0, 0x6d |
| if (r0 == 0x6d) {
0x00010cec beq 0x10e84 | goto label_21;
| }
| if (r0 > 0x6d) {
0x00010cf0 bgt 0x10d70 | goto label_22;
| }
0x00010cf4 cmp r0, 0x56 |
| if (r0 == 0x56) {
0x00010cf8 beq 0x10fd8 | goto label_23;
| }
| if (r0 > 0x56) {
0x00010cfc bgt 0x10d30 | goto label_24;
| }
0x00010d00 cmp r0, 0x4f |
| if (r0 == 0x4f) {
0x00010d04 beq 0x10f30 | goto label_25;
| }
0x00010d08 cmp r0, 0x51 |
| if (r0 == 0x51) {
0x00010d0c beq 0x10fa0 | goto label_26;
| }
| do {
| label_0:
0x00010d10 ldr r4, [pc, 0xebc] | r4 = optarg;
0x00010d14 ldr r0, [pc, 0xebc] | r0 = stderr;
0x00010d18 ldr r1, [r4] | r1 = optarg;
0x00010d1c bl 0x10c44 | fputs (r0, r1);
0x00010d20 ldr r1, [r4] | r1 = optarg;
0x00010d24 ldr r0, [pc, 0xeb0] | r0 = "Usage:_ubinize__options___ini_file_Generate_UBI_images._An_UBI_image_may_contain_one_or_more_UBI_volumes_whichhave_to_be_defined_in_the_input_configuration_ini_file._The_flashcharacteristics_are_defined_via_the_command_line_options.";
0x00010d28 bl 0x10c44 | fputs ("Usage:_ubinize__options___ini_file_Generate_UBI_images._An_UBI_image_may_contain_one_or_more_UBI_volumes_whichhave_to_be_defined_in_the_input_configuration_ini_file._The_flashcharacteristics_are_defined_via_the_command_line_options.", r1);
0x00010d2c b 0x10e68 | goto label_3;
| label_24:
0x00010d30 cmp r0, 0x65 |
| if (r0 == 0x65) {
0x00010d34 beq 0x10f68 | goto label_27;
| }
0x00010d38 cmp r0, 0x68 |
0x00010d3c bne 0x10d10 |
| } while (r0 != 0x68);
0x00010d40 ldr r4, [pc, 0xe98] | r4 = "Use -h for help\n\n";
0x00010d44 ldr r0, [pc, 0xe8c] | r0 = stderr;
0x00010d48 ldr r1, [r4] | r1 = "Use -h for help\n\n";
0x00010d4c bl 0x10c44 | fputs (r0, "Use -h for help\n\n");
0x00010d50 ldr r1, [r4] | r1 = "Use -h for help\n\n";
0x00010d54 ldr r0, [pc, 0xe88] | r0 = stdout;
0x00010d58 bl 0x10c44 | fputs (r0, "Use -h for help\n\n");
0x00010d5c ldr r1, [pc, 0xe84] | r1 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x00010d60 ldr r0, [pc, 0xe84] | r0 = "ubinize";
0x00010d64 bl 0x10a94 | printf ("ubinize", "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n")
| label_5:
0x00010d68 mov r0, fp | r0 = fp;
0x00010d6c bl 0x10c14 | r0 = exit (r0);
| label_22:
0x00010d70 cmp r0, 0x73 |
| if (r0 == 0x73) {
0x00010d74 beq 0x10ee0 | goto label_28;
| }
| if (r0 > 0x73) {
0x00010d78 bgt 0x10dbc | goto label_29;
| }
0x00010d7c cmp r0, 0x6f |
| if (r0 == 0x6f) {
0x00010d80 beq 0x10e04 | goto label_30;
| }
0x00010d84 cmp r0, 0x70 |
| if (r0 != 0x70) {
0x00010d88 bne 0x10d10 | goto label_0;
| }
0x00010d8c ldr r0, [r4] | r0 = *(r4);
0x00010d90 bl 0x12e10 | r0 = fcn_00012e10 (r0);
0x00010d94 cmp r0, 0 |
0x00010d98 str r0, [r8, 0xc] | *((r8 + 0xc)) = r0;
| if (r0 > 0) {
0x00010d9c bgt 0x10cbc | goto label_1;
| }
0x00010da0 ldr r3, [r4] | r3 = *(r4);
0x00010da4 ldr r2, [pc, 0xe3c] | r2 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x00010da8 ldr r1, [pc, 0xe40] | r1 = "For_more_information_see__man_8__s_";
| label_2:
0x00010dac ldr r0, [pc, 0xe20] |
0x00010db0 ldr r0, [r0] | r0 = optarg;
0x00010db4 bl 0x10b48 | fprintf (r0, "For_more_information_see__man_8__s_", "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n", r3)
0x00010db8 b 0x10e68 | goto label_3;
| label_29:
0x00010dbc cmp r0, 0x76 |
| if (r0 == 0x76) {
0x00010dc0 beq 0x10fcc | goto label_31;
| }
0x00010dc4 cmp r0, 0x78 |
| if (r0 != 0x78) {
0x00010dc8 bne 0x10d10 | goto label_0;
| }
0x00010dcc add r1, sp, 0x130 | r1 += s;
0x00010dd0 ldr r0, [r4] | r0 = *(r4);
0x00010dd4 bl 0x12008 | fcn_00012008 (r0, r1);
0x00010dd8 ldr r3, [sp, 0x130] | r3 = s;
0x00010ddc cmp r3, 0 |
0x00010de0 str r0, [r8, 0x20] | *((r8 + 0x20)) = r0;
| if (r3 != 0) {
0x00010de4 lsreq r0, r0, 0x1f | r0 >>= 0x1f;
| }
| if (r3 == 0) {
0x00010de8 movne r0, 1 | r0 = 1;
| }
0x00010dec cmp r0, 0 |
| if (r0 == 0) {
0x00010df0 beq 0x10cbc | goto label_1;
| }
0x00010df4 ldr r3, [r4] | r3 = *(r4);
0x00010df8 ldr r2, [pc, 0xde8] | r2 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x00010dfc ldr r1, [pc, 0xdf0] | r1 = "_s:_error_:_bad_physical_eraseblock_size:___s_";
0x00010e00 b 0x10dac | goto label_2;
| label_30:
0x00010e04 mov r2, 0x1b4 | r2 = 0x1b4;
0x00010e08 ldr r1, [pc, 0xde8] | r1 = "_s:_error_:_bad_UBI_version:___s_";
0x00010e0c ldr r0, [r4] | r0 = *(r4);
0x00010e10 bl 0x10bd8 | r0 = open64 ();
0x00010e14 cmn r0, 1 |
0x00010e18 str r0, [r8, 8] | *((r8 + 8)) = r0;
| if (r0 == 1) {
0x00010e1c bne 0x10e78 |
0x00010e20 bl 0x10c08 | errno_location ();
0x00010e24 ldr r6, [pc, 0xda8] | r6 = optarg;
0x00010e28 ldr r3, [r4] | r3 = *(r4);
0x00010e2c ldr r2, [pc, 0xdb4] | r2 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x00010e30 ldr r1, [pc, 0xdc4] | r1 = *(0x11bf8);
0x00010e34 ldr r5, [r0] | r5 = *(r0);
0x00010e38 ldr r0, [r6] | r0 = optarg;
0x00010e3c bl 0x10b48 | fprintf (r0, r1, "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n", r3, r4, r5, r6)
0x00010e40 mov r0, r5 | r0 = r5;
0x00010e44 ldr r4, [r6] | r4 = optarg;
0x00010e48 bl 0x10aa0 | strerror (r0);
0x00010e4c str r5, [sp] | *(sp) = r5;
0x00010e50 ldr r3, [pc, 0xf14] | r3 = "%s: error!: cannot open \"%s\"\n";
0x00010e54 mov r2, 9 | r2 = 9;
0x00010e58 ldr r1, [pc, 0xf10] | r1 = *(0x11d6c);
0x00010e5c str r0, [sp, 4] | var_4h = r0;
0x00010e60 mov r0, r4 | r0 = r4;
0x00010e64 bl 0x10b48 | fprintf (r0, r1, r2, "%s: error!: cannot open \"%s\"\n", r4, r5)
| label_3:
0x00010e68 mvn r7, 0 | r7 = ~0;
| label_6:
0x00010e6c mov r0, r7 | r0 = r7;
0x00010e70 add sp, sp, 0x234 |
0x00010e74 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x00010e78 ldr r3, [r4] | r3 = *(r4);
0x00010e7c str r3, [r8, 4] | *((r8 + 4)) = r3;
0x00010e80 b 0x10cbc | goto label_1;
| label_21:
0x00010e84 ldr r0, [r4] | r0 = *(r4);
0x00010e88 bl 0x12e10 | r0 = fcn_00012e10 (r0);
0x00010e8c cmp r0, 0 |
0x00010e90 str r0, [r8, 0x10] | *((r8 + 0x10)) = r0;
| if (r0 > 0) {
0x00010e94 ldrle r3, [r4] | r3 = *(r4);
| }
| if (r0 > 0) {
0x00010e98 ldrle r2, [pc, 0xd48] | r2 = "ubinize";
| }
| if (r0 <= 0) {
0x00010e9c ldrle r1, [pc, 0xd5c] | r1 = "_s:_error_:_bad_min._I_O_unit_size:___s_";
| goto label_32;
| }
| if (r0 <= 0) {
| label_32:
0x00010ea0 ble 0x10dac | goto label_2;
| }
0x00010ea4 mov r2, r0 | r2 = r0;
0x00010ea8 asr r3, r0, 0x1f | r3 = r0 >> 0x1f;
0x00010eac subs r2, r2, 1 | r2--;
0x00010eb0 mov r1, r3 | r1 = r3;
0x00010eb4 sbc r3, r3, 0 | __asm ("sbc r3, r3, 0");
0x00010eb8 and r0, r0, r2 | r0 &= r2;
0x00010ebc and r1, r1, r3 | r1 &= r3;
0x00010ec0 orrs r3, r0, r1 | r3 = r0 | r1;
| if (r3 == r0) {
0x00010ec4 beq 0x10cbc | goto label_1;
| }
0x00010ec8 ldr r2, [pc, 0xd18] | r2 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x00010ecc ldr r1, [pc, 0xd30] | r1 = "_s:_error_:_bad_min._I_O_unit_size:___s_";
| label_4:
0x00010ed0 ldr r3, [pc, 0xcfc] | r3 = optarg;
0x00010ed4 ldr r0, [r3] | r0 = optarg;
0x00010ed8 bl 0x10b48 | fprintf (r0, "_s:_error_:_bad_min._I_O_unit_size:___s_", "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n", r3)
0x00010edc b 0x10e68 | goto label_3;
| label_28:
0x00010ee0 ldr r0, [r4] | r0 = *(r4);
0x00010ee4 bl 0x12e10 | r0 = fcn_00012e10 (r0);
0x00010ee8 cmp r0, 0 |
0x00010eec str r0, [r8, 0x14] | *((r8 + 0x14)) = r0;
| if (r0 > 0) {
0x00010ef0 ldrle r3, [r4] | r3 = *(r4);
| }
| if (r0 > 0) {
0x00010ef4 ldrle r2, [pc, 0xcec] | r2 = "ubinize";
| }
| if (r0 <= 0) {
0x00010ef8 ldrle r1, [pc, 0xd08] | r1 = "%s: error!: bad sub-page size: \"%s\"\n";
| goto label_33;
| }
| if (r0 <= 0) {
| label_33:
0x00010efc ble 0x10dac | goto label_2;
| }
0x00010f00 mov r2, r0 | r2 = r0;
0x00010f04 asr r3, r0, 0x1f | r3 = r0 >> 0x1f;
0x00010f08 subs r2, r2, 1 | r2--;
0x00010f0c mov r1, r3 | r1 = r3;
0x00010f10 sbc r3, r3, 0 | __asm ("sbc r3, r3, 0");
0x00010f14 and r0, r0, r2 | r0 &= r2;
0x00010f18 and r1, r1, r3 | r1 &= r3;
0x00010f1c orrs r3, r0, r1 | r3 = r0 | r1;
| if (r3 == r0) {
0x00010f20 beq 0x10cbc | goto label_1;
| }
0x00010f24 ldr r2, [pc, 0xcbc] | r2 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x00010f28 ldr r1, [pc, 0xcdc] | r1 = "%s: error!: bad sub-page size: \"%s\"\n";
0x00010f2c b 0x10ed0 | goto label_4;
| label_25:
0x00010f30 add r1, sp, 0x130 | r1 += s;
0x00010f34 ldr r0, [r4] | r0 = *(r4);
0x00010f38 bl 0x12008 | fcn_00012008 (r0, r1);
0x00010f3c ldr r3, [sp, 0x130] | r3 = s;
0x00010f40 cmp r3, 0 |
0x00010f44 str r0, [r8, 0x18] | *((r8 + 0x18)) = r0;
| if (r3 != 0) {
0x00010f48 lsreq r0, r0, 0x1f | r0 >>= 0x1f;
| }
| if (r3 == 0) {
0x00010f4c movne r0, 1 | r0 = 1;
| }
0x00010f50 cmp r0, 0 |
| if (r0 == 0) {
0x00010f54 beq 0x10cbc | goto label_1;
| }
0x00010f58 ldr r3, [r4] | r3 = *(r4);
0x00010f5c ldr r2, [pc, 0xc84] | r2 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x00010f60 ldr r1, [pc, 0xca8] | r1 = "_s:_error_:_sub_page_size_should_be_power_of_2";
0x00010f64 b 0x10dac | goto label_2;
| label_27:
0x00010f68 add r1, sp, 0x130 | r1 += s;
0x00010f6c ldr r0, [r4] | r0 = *(r4);
0x00010f70 bl 0x12008 | fcn_00012008 (r0, r1);
0x00010f74 ldr r3, [sp, 0x130] | r3 = s;
0x00010f78 cmp r3, 0 |
0x00010f7c str r0, [r8, 0x1c] | *((r8 + 0x1c)) = r0;
| if (r3 != 0) {
0x00010f80 lsreq r0, r0, 0x1f | r0 >>= 0x1f;
| }
| if (r3 == 0) {
0x00010f84 movne r0, 1 | r0 = 1;
| }
0x00010f88 cmp r0, 0 |
| if (r0 == 0) {
0x00010f8c beq 0x10cbc | goto label_1;
| }
0x00010f90 ldr r3, [r4] | r3 = *(r4);
0x00010f94 ldr r2, [pc, 0xc4c] | r2 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x00010f98 ldr r1, [pc, 0xc74] | r1 = "_s:_error_:_bad_VID_header_offset:___s_";
0x00010f9c b 0x10dac | goto label_2;
| label_26:
0x00010fa0 add r1, sp, 0x130 | r1 += s;
0x00010fa4 ldr r0, [r4] | r0 = *(r4);
0x00010fa8 bl 0x12008 | fcn_00012008 (r0, r1);
0x00010fac ldr r3, [sp, 0x130] | r3 = s;
0x00010fb0 cmp r3, 0 |
| if (r3 == 0) {
0x00010fb4 ldrne r3, [r4] | r3 = *(r4);
| }
| if (r3 == 0) {
0x00010fb8 ldrne r2, [pc, 0xc28] | r2 = "ubinize";
| }
| if (r3 != 0) {
0x00010fbc ldrne r1, [pc, 0xc54] | r1 = "%s: error!: bad UBI image sequence number: \"%s\"\n";
| goto label_34;
| }
| if (r3 != 0) {
| label_34:
0x00010fc0 bne 0x10dac | goto label_2;
| }
0x00010fc4 str r0, [r8, 0x24] | *((r8 + 0x24)) = r0;
0x00010fc8 b 0x10cbc | goto label_1;
| label_31:
0x00010fcc mov r3, 1 | r3 = 1;
0x00010fd0 str r3, [r8, 0x28] | *((r8 + 0x28)) = r3;
0x00010fd4 b 0x10cbc | goto label_1;
| label_23:
0x00010fd8 ldr r2, [pc, 0xc3c] | r2 = "%s: error!: bad UBI image sequence number: \"%s\"\n";
0x00010fdc ldr r1, [pc, 0xc04] | r1 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x00010fe0 ldr r0, [pc, 0xc38] | r0 = "_.1.0";
0x00010fe4 bl 0x10a94 | printf ("_.1.0", "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n", "%s: error!: bad UBI image sequence number: \"%s\"\n")
0x00010fe8 b 0x10d68 | goto label_5;
| label_20:
0x00010fec ldr r3, [pc, 0xc30] |
0x00010ff0 ldr r3, [r3] | r3 = "_s__mtd_utils___s";
0x00010ff4 cmp r5, r3 |
| if (r5 != r3) {
0x00010ff8 bne 0x11014 | goto label_35;
| }
0x00010ffc ldr r2, [pc, 0xbe4] | r2 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x00011000 ldr r1, [pc, 0xc20] | r1 = optind;
| do {
| label_7:
0x00011004 ldr r3, [pc, 0xbc8] | r3 = optarg;
0x00011008 ldr r0, [r3] | r0 = optarg;
0x0001100c bl 0x10b48 | fprintf (r0, r1, "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n", r3)
0x00011010 b 0x10e6c | goto label_6;
| label_35:
0x00011014 sub r5, r5, 1 | r5--;
0x00011018 cmp r3, r5 |
| if (r3 == r5) {
0x0001101c ldrne r2, [pc, 0xbc4] | r2 = "ubinize";
| }
| if (r3 == r5) {
0x00011020 ldrne r1, [pc, 0xc04] | r1 = "%s: error!: more then one configuration file was specified (use -h for help)\n";
| }
0x00011024 bne 0x11004 |
| } while (r3 != r5);
0x00011028 ldr r4, [r8, 0xc] | r4 = *((r8 + 0xc));
0x0001102c ldr r3, [r6, r3, lsl 2] | offset_0 = r3 << 2;
| r3 = *((r6 + offset_0));
0x00011030 cmp r4, 0 |
0x00011034 str r3, [r8] | *(r8) = r3;
| if (r4 >= 0) {
0x00011038 ldrlt r2, [pc, 0xba8] | r2 = "ubinize";
| }
| if (r4 < 0) {
0x0001103c ldrlt r1, [pc, 0xbec] | r1 = "%s: error!: physical eraseblock size was not specified (use -h for help)\n";
| goto label_36;
| }
| if (r4 < 0) {
| label_36:
0x00011040 blt 0x11004 | goto label_7;
| }
0x00011044 cmp r4, 0x200000 |
| if (r4 > 0x200000) {
0x00011048 ble 0x11068 |
0x0001104c ldr r0, [pc, 0xb80] |
0x00011050 mov r3, r4 | r3 = r4;
0x00011054 ldr r2, [pc, 0xb8c] | r2 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x00011058 ldr r1, [pc, 0xbd4] | r1 = "%s: error!: physical eraseblock size was not specified (use -h for help)\n";
0x0001105c ldr r0, [r0] | r0 = optarg;
0x00011060 bl 0x10b48 | fprintf (r0, "%s: error!: physical eraseblock size was not specified (use -h for help)\n", "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n", r3)
0x00011064 b 0x10e6c | goto label_6;
| }
0x00011068 ldr r5, [r8, 0x10] | r5 = *((r8 + 0x10));
0x0001106c cmp r5, 0 |
| if (r5 >= 0) {
0x00011070 ldrlt r2, [pc, 0xb70] | r2 = "ubinize";
| }
| if (r5 < 0) {
0x00011074 ldrlt r1, [pc, 0xbbc] | r1 = "%s: error!: min. I/O unit size was not specified (use -h for help)\n";
| goto label_37;
| }
| if (r5 < 0) {
| label_37:
0x00011078 blt 0x11004 | goto label_7;
| }
0x0001107c ldr r3, [r8, 0x14] | r3 = *((r8 + 0x14));
0x00011080 cmp r3, 0 |
| if (r3 >= 0) {
0x00011084 strlt r5, [r8, 0x14] | *((r8 + 0x14)) = r5;
| }
0x00011088 ldr r6, [r8, 0x14] | r6 = *((r8 + 0x14));
0x0001108c cmp r5, r6 |
| if (r5 >= r6) {
0x00011090 ldrlt r2, [pc, 0xb50] | r2 = "ubinize";
| }
| if (r5 < r6) {
0x00011094 ldrlt r1, [pc, 0xba0] | r1 = "%s: error!: sub-page cannot be larger then min. I/O unit\n";
| goto label_38;
| }
| if (r5 < r6) {
| label_38:
0x00011098 blt 0x11004 | goto label_7;
| }
0x0001109c mov r1, r5 | r1 = r5;
0x000110a0 mov r0, r4 | r0 = r4;
0x000110a4 bl 0x14124 | fcn_00014124 (r0, r1);
0x000110a8 cmp r1, 0 |
| if (r1 == 0) {
0x000110ac ldrne r2, [pc, 0xb34] | r2 = "ubinize";
| }
| if (r1 != 0) {
0x000110b0 ldrne r1, [pc, 0xb88] | r1 = "%s: error!: physical eraseblock should be multiple of min. I/O units\n";
| goto label_39;
| }
| if (r1 != 0) {
| label_39:
0x000110b4 bne 0x11004 | goto label_7;
| }
0x000110b8 mov r1, r6 | r1 = r6;
0x000110bc mov r0, r5 | r0 = r5;
0x000110c0 bl 0x14124 | fcn_00014124 (r0, r1);
0x000110c4 subs r3, r1, 0 | r3 = r1 - 0;
0x000110c8 str r3, [sp, 0x20] | var_20h = r3;
| if (r3 == r1) {
0x000110cc ldrne r2, [pc, 0xb14] | r2 = "ubinize";
| }
| if (r3 != r1) {
0x000110d0 ldrne r1, [pc, 0xb6c] | r1 = "%s: error!: min. I/O unit size should be multiple of sub-page size\n";
| goto label_40;
| }
| if (r3 != r1) {
| label_40:
0x000110d4 bne 0x11004 | goto label_7;
| }
0x000110d8 ldr r3, [r8, 4] | r3 = *((r8 + 4));
0x000110dc cmp r3, 0 |
| if (r3 != 0) {
0x000110e0 ldreq r2, [pc, 0xb00] | r2 = "ubinize";
| }
| if (r3 == 0) {
0x000110e4 ldreq r1, [pc, 0xb5c] | r1 = "%s: error!: output file was not specified (use -h for help)\n";
| goto label_41;
| }
| if (r3 == 0) {
| label_41:
0x000110e8 beq 0x11004 | goto label_7;
| }
0x000110ec ldr r2, [r8, 0x18] | r2 = *((r8 + 0x18));
0x000110f0 cmp r2, 0 |
| if (r2 == 0) {
0x000110f4 beq 0x1111c | goto label_42;
| }
0x000110f8 add r3, r2, 0x40 | r3 = r2 + 0x40;
0x000110fc cmp r4, r3 |
| if (r4 > r3) {
0x00011100 ldrle r2, [pc, 0xae0] | r2 = "ubinize";
| }
| if (r4 <= r3) {
0x00011104 ldrle r1, [pc, 0xb40] | r1 = "_s:_error_:_bad_VID_header_position";
| goto label_43;
| }
| if (r4 <= r3) {
| label_43:
0x00011108 ble 0x11004 | goto label_7;
| }
0x0001110c tst r2, 7 |
| if ((r2 & 7) == 0) {
0x00011110 ldrne r2, [pc, 0xad0] | r2 = "ubinize";
| }
| if ((r2 & 7) != 0) {
0x00011114 ldrne r1, [pc, 0xb34] | r1 = "%s: error!: VID header offset has to be multiple of min. I/O unit size\n";
| goto label_44;
| }
| if ((r2 & 7) != 0) {
| label_44:
0x00011118 bne 0x11004 | goto label_7;
| }
| label_42:
0x0001111c ldr r3, [r8, 0x24] | r3 = *((r8 + 0x24));
0x00011120 mov r1, r4 | r1 = r4;
0x00011124 str r3, [sp, 8] | var_8h = r3;
0x00011128 ldr r3, [r8, 0x20] | r3 = *((r8 + 0x20));
0x0001112c add r0, sp, 0x3c | r0 += var_3ch;
0x00011130 stm sp, {r2, r3} | *(sp) = r2;
| *((sp + 4)) = r3;
0x00011134 mov r3, r6 | r3 = r6;
0x00011138 mov r2, r5 | r2 = r5;
0x0001113c bl 0x12080 | fcn_00012080 (r0, r1, r2, r3, r4);
0x00011140 ldr r3, [r8, 0x28] | r3 = *((r8 + 0x28));
0x00011144 cmp r3, 0 |
| if (r3 != 0) {
0x00011148 beq 0x1115c |
0x0001114c ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x00011150 ldr r1, [pc, 0xa90] | r1 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x00011154 ldr r0, [pc, 0xaf8] | r0 = "%s: error!: VID header offset has to be multiple of min. I/O unit size\n";
0x00011158 bl 0x10a94 | printf ("%s: error!: VID header offset has to be multiple of min. I/O unit size\n", "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n", r2)
| }
0x0001115c ldr r3, [r8, 0x28] | r3 = *((r8 + 0x28));
0x00011160 cmp r3, 0 |
| if (r3 != 0) {
0x00011164 beq 0x11178 |
0x00011168 ldr r2, [sp, 0x40] | r2 = var_40h;
0x0001116c ldr r1, [pc, 0xa74] | r1 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x00011170 ldr r0, [pc, 0xae0] | r0 = "%s: LEB size: %d\n";
0x00011174 bl 0x10a94 | printf ("%s: LEB size: %d\n", "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n", r2)
| }
0x00011178 ldr r3, [r8, 0x28] | r3 = *((r8 + 0x28));
0x0001117c cmp r3, 0 |
| if (r3 != 0) {
0x00011180 beq 0x11194 |
0x00011184 ldr r2, [sp, 0x44] | r2 = var_44h;
0x00011188 ldr r1, [pc, 0xa58] | r1 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x0001118c ldr r0, [pc, 0xac8] | r0 = "_s:_PEB_size:___________________d";
0x00011190 bl 0x10a94 | printf ("_s:_PEB_size:___________________d", "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n", r2)
| }
0x00011194 ldr r3, [r8, 0x28] | r3 = *((r8 + 0x28));
0x00011198 cmp r3, 0 |
| if (r3 != 0) {
0x0001119c beq 0x111b0 |
0x000111a0 ldr r2, [r8, 0x14] | r2 = *((r8 + 0x14));
0x000111a4 ldr r1, [pc, 0xa3c] | r1 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x000111a8 ldr r0, [pc, 0xab0] | r0 = "%s: min. I/O size: %d\n";
0x000111ac bl 0x10a94 | printf ("%s: min. I/O size: %d\n", "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n", r2)
| }
0x000111b0 ldr r3, [r8, 0x28] | r3 = *((r8 + 0x28));
0x000111b4 cmp r3, 0 |
| if (r3 != 0) {
0x000111b8 beq 0x111cc |
0x000111bc ldr r2, [sp, 0x48] | r2 = var_48h;
0x000111c0 ldr r1, [pc, 0xa20] | r1 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x000111c4 ldr r0, [pc, 0xa98] | r0 = "_s:_sub_page_size:______________d";
0x000111c8 bl 0x10a94 | printf ("_s:_sub_page_size:______________d", "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n", r2)
| }
0x000111cc ldr r3, [r8, 0x28] | r3 = *((r8 + 0x28));
0x000111d0 cmp r3, 0 |
| if (r3 != 0) {
0x000111d4 beq 0x111e8 |
0x000111d8 ldr r2, [sp, 0x4c] | r2 = var_4ch;
0x000111dc ldr r1, [pc, 0xa04] | r1 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x000111e0 ldr r0, [pc, 0xa80] | r0 = "%s: VID offset: %d\n";
0x000111e4 bl 0x10a94 | printf ("%s: VID offset: %d\n", "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n", r2)
| }
0x000111e8 ldr r3, [r8, 0x28] | r3 = *((r8 + 0x28));
0x000111ec cmp r3, 0 |
| if (r3 != 0) {
0x000111f0 beq 0x11204 |
0x000111f4 ldr r2, [sp, 0x5c] | r2 = var_5ch;
0x000111f8 ldr r1, [pc, 0x9e8] | r1 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x000111fc ldr r0, [pc, 0xa68] | r0 = "_s:_data_offset:________________d";
0x00011200 bl 0x10a94 | printf ("_s:_data_offset:________________d", "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n", r2)
| }
0x00011204 add r0, sp, 0x3c | r0 += var_3ch;
0x00011208 bl 0x1211c | fcn_0001211c (r0);
0x0001120c subs r3, r0, 0 | r3 -= var_3ch;
0x00011210 str r3, [sp, 0x2c] | ptr = r3;
| if (r3 == var_3ch) {
0x00011214 beq 0x1124c | goto label_45;
| }
0x00011218 ldr r0, [r8] | r0 = *(r8);
0x0001121c bl 0x135b4 | r0 = fcn_000135b4 (r0, r1);
0x00011220 cmp r0, 0 |
0x00011224 str r0, [r8, 0x2c] | *((r8 + 0x2c)) = r0;
| if (r0 != 0) {
0x00011228 bne 0x11268 | goto label_46;
| }
0x0001122c ldr r0, [pc, 0x9a0] |
0x00011230 ldr r3, [r8] | r3 = *(r8);
0x00011234 ldr r2, [pc, 0x9ac] | r2 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x00011238 ldr r1, [pc, 0xa30] | r1 = "%s: UBI image sequence number: %u\n";
0x0001123c ldr r0, [r0] | r0 = optarg;
0x00011240 bl 0x10b48 | fprintf (r0, "%s: UBI image sequence number: %u\n", "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n", r3)
| do {
0x00011244 ldr r0, [sp, 0x2c] | r0 = ptr;
0x00011248 bl 0x10c74 | free (r0);
| label_45:
0x0001124c ldr r4, [pc, 0x970] | r4 = *(0x11bc0);
0x00011250 ldr r0, [r4, 8] | r0 = "output";
0x00011254 bl 0x10c5c | close ("output");
0x00011258 ldr r0, [r4, 4] | r0 = *(0x11bc4);
0x0001125c bl 0x10b00 | remove (r0);
0x00011260 ldr r7, [sp, 0x20] | r7 = var_20h;
0x00011264 b 0x10e6c | goto label_6;
| label_46:
0x00011268 ldr r3, [r8, 0x28] | r3 = *((r8 + 0x28));
0x0001126c cmp r3, 0 |
| if (r3 != 0) {
0x00011270 beq 0x11284 |
0x00011274 ldr r2, [r8] | r2 = *(r8);
0x00011278 ldr r1, [pc, 0x968] | r1 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x0001127c ldr r0, [pc, 0x9f0] | r0 = "_s:_error_:_cannot_load_the_input_ini_file___s_";
0x00011280 bl 0x10a94 | printf ("_s:_error_:_cannot_load_the_input_ini_file___s_", "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n", r2)
| }
0x00011284 ldr r0, [r8, 0x2c] | r0 = *((r8 + 0x2c));
0x00011288 bl 0x131f4 | r0 = fcn_000131f4 (r0);
0x0001128c cmn r0, 1 |
0x00011290 str r0, [sp, 0x1c] | size = r0;
| if (r0 == 1) {
0x00011294 bne 0x112b0 |
0x00011298 ldr r2, [pc, 0x948] | r2 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x0001129c ldr r1, [pc, 0x9d4] | r1 = "%s: loaded the ini-file \"%s\"\n";
| label_9:
0x000112a0 ldr r3, [pc, 0x92c] | r3 = optarg;
0x000112a4 ldr r0, [r3] | r0 = optarg;
0x000112a8 bl 0x10b48 | fprintf (r0, "%s: loaded the ini-file \"%s\"\n", "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n", r3)
0x000112ac b 0x112f8 |
| } else {
0x000112b0 ldr r3, [r8, 0x28] | r3 = *((r8 + 0x28));
0x000112b4 cmp r3, 0 |
| if (r3 != 0) {
0x000112b8 beq 0x112cc |
0x000112bc ldr r2, [sp, 0x1c] | r2 = size;
0x000112c0 ldr r1, [pc, 0x920] | r1 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x000112c4 ldr r0, [pc, 0x9b0] | r0 = "%s: error!: ini-file parsing error (iniparser_getnsec)\n";
0x000112c8 bl 0x10a94 | printf ("%s: error!: ini-file parsing error (iniparser_getnsec)\n", "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n", r2)
| }
0x000112cc ldr r3, [sp, 0x1c] | r3 = size;
0x000112d0 cmp r3, 0 |
| if (r3 != 0) {
0x000112d4 bne 0x11308 | goto label_47;
| }
0x000112d8 ldr r0, [pc, 0x8f4] |
0x000112dc ldr r3, [r8] | r3 = *(r8);
0x000112e0 ldr r2, [pc, 0x900] | r2 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x000112e4 ldr r1, [pc, 0x994] | r1 = "%s: count of sections: %d\n";
0x000112e8 ldr r0, [r0] | r0 = optarg;
0x000112ec bl 0x10b48 | fprintf (r0, "%s: count of sections: %d\n", "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n", r3)
0x000112f0 ldr r3, [sp, 0x1c] | r3 = size;
0x000112f4 str r3, [sp, 0x20] | var_20h = r3;
| }
| label_8:
0x000112f8 ldr r3, [pc, 0x8c4] | r3 = *(0x11bc0);
0x000112fc ldr r0, [r3, 0x2c] | r0 = "For_more_information_see__man_8__s_";
0x00011300 bl 0x13a84 | fcn_00013a84 ("For_more_information_see__man_8__s_");
0x00011304 b 0x11244 |
| } while (1);
| label_47:
0x00011308 ldr r3, [sp, 0x58] | r3 = var_58h;
0x0001130c ldr r2, [sp, 0x1c] | r2 = size;
0x00011310 cmp r3, r2 |
| if (r3 < r2) {
0x00011314 bge 0x1134c |
0x00011318 ldr r3, [r8] | r3 = *(r8);
0x0001131c ldr r0, [pc, 0x8b0] |
0x00011320 str r3, [sp] | *(sp) = r3;
0x00011324 ldr r1, [pc, 0x958] | r1 = "_s:_error_:_no_sections_found_the_ini_file___s_";
0x00011328 mov r3, r2 | r3 = r2;
0x0001132c ldr r0, [r0] | r0 = optarg;
0x00011330 ldr r2, [pc, 0x8b0] | r2 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x00011334 bl 0x10b48 | fprintf (r0, "_s:_error_:_no_sections_found_the_ini_file___s_", "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n", r3)
0x00011338 ldr r2, [sp, 0x58] | r2 = var_58h;
0x0001133c ldr r1, [pc, 0x8a4] | r1 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x00011340 ldr r0, [pc, 0x940] | r0 = "%s: error!: too many sections (%d) in the ini-file \"%s\"\n";
0x00011344 bl 0x10a94 | printf ("%s: error!: too many sections (%d) in the ini-file \"%s\"\n", "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n", r2)
0x00011348 b 0x112f8 | goto label_8;
| }
0x0001134c ldr r1, [sp, 0x1c] | r1 = size;
0x00011350 mov r0, 0x38 | r0 = 0x38;
0x00011354 bl 0x10b30 | r0 = calloc (r0, r1);
0x00011358 subs r3, r0, 0 | r3 = r0 - 0;
0x0001135c str r3, [sp, 0x28] | var_28h = r3;
| if (r3 != r0) {
0x00011360 ldreq r2, [pc, 0x880] | r2 = "ubinize";
| }
| if (r3 == r0) {
0x00011364 ldreq r1, [pc, 0x920] | r1 = "%s: error!: cannot allocate memory\n";
| goto label_48;
| }
| if (r3 == r0) {
| label_48:
0x00011368 beq 0x112a0 | goto label_9;
| }
0x0001136c ldr r4, [sp, 0x40] | r4 = var_40h;
0x00011370 mov r6, 0 | r6 = 0;
0x00011374 lsl r4, r4, 1 | r4 <<= 1;
0x00011378 asr r5, r4, 0x1f | r5 = r4 >> 0x1f;
0x0001137c str r6, [sp] | *(sp) = r6;
0x00011380 mov r2, r4 | r2 = r4;
0x00011384 mov r3, r5 | r3 = r5;
0x00011388 ldr r0, [r8, 8] | r0 = *((r8 + 8));
0x0001138c bl 0x10c2c | lseek64 ();
0x00011390 cmp r1, r5 |
0x00011394 cmpeq r0, r4 | __asm ("cmpeq r0, r4");
| if (r1 == r5) {
0x00011398 bne 0x11418 |
0x0001139c str r6, [sp, 0x24] | var_24h = r6;
0x000113a0 ldr r4, [sp, 0x28] | r4 = var_28h;
0x000113a4 ldr r6, [pc, 0x818] | r6 = *(0x11bc0);
0x000113a8 ldr sb, [pc, 0x838] | sb = "ubinize";
0x000113ac ldr r3, [sp, 0x24] | r3 = var_24h;
0x000113b0 ldr r2, [sp, 0x1c] | r2 = size;
0x000113b4 cmp r3, r2 |
| if (r3 >= r2) {
0x000113b8 blt 0x11440 |
0x000113bc ldr r3, [r6, 0x28] | r3 = *((r6 + 0x28));
0x000113c0 cmp r3, 0 |
| if (r3 != 0) {
0x000113c4 beq 0x113d4 |
0x000113c8 ldr r1, [pc, 0x818] | r1 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x000113cc ldr r0, [pc, 0x8bc] | r0 = "%s: error!: cannot allocate memory\n";
0x000113d0 bl 0x10a94 | printf ("%s: error!: cannot allocate memory\n", "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n")
| }
0x000113d4 ldr r1, [r6, 8] | r1 = *((r6 + 8));
0x000113d8 ldr r2, [r6, 0x1c] | r2 = *((r6 + 0x1c));
0x000113dc str r1, [sp, 0x14] | var_14h = r1;
0x000113e0 ldr r1, [sp, 0x2c] | r1 = ptr;
0x000113e4 asr r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x000113e8 str r1, [sp, 0x10] | var_10h = r1;
0x000113ec strd r2, r3, [sp, 8] | __asm ("strd r2, r3, [var_8h]");
0x000113f0 strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x000113f4 mov r1, 0 | r1 = 0;
0x000113f8 mov r2, 1 | r2 = 1;
0x000113fc add r0, sp, 0x3c | r0 += var_3ch;
0x00011400 bl 0x12b68 | fcn_00012b68 (r0, r1, r2, r3, r4, r5);
0x00011404 subs r7, r0, 0 | r7 -= var_3ch;
| if (r7 == var_3ch) {
0x00011408 beq 0x11eb4 | goto label_49;
| }
0x0001140c ldr r2, [pc, 0x7d4] | r2 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x00011410 ldr r1, [pc, 0x87c] | r1 = "%s: writing layout volume\n";
0x00011414 b 0x1145c |
| } else {
0x00011418 bl 0x10c08 | errno_location ();
0x0001141c ldr r5, [pc, 0x7b0] | r5 = optarg;
0x00011420 ldr r3, [r8, 4] | r3 = *((r8 + 4));
0x00011424 ldr r2, [pc, 0x7bc] | r2 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x00011428 ldr r1, [pc, 0x868] | r1 = "_s:_error_:_cannot_write_layout_volume";
0x0001142c ldr r4, [r0] | r4 = *(r0);
| label_15:
0x00011430 ldr r0, [r5] | r0 = *(r5);
0x00011434 bl 0x10b48 | fprintf (r0, "_s:_error_:_cannot_write_layout_volume", "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n", r3, r4, r5)
0x00011438 ldr r5, [r5] | r5 = *(r5);
0x0001143c b 0x11684 | goto label_50;
| }
0x00011440 ldr r1, [sp, 0x24] | r1 = var_24h;
0x00011444 ldr r0, [r6, 0x2c] | r0 = *((r6 + 0x2c));
0x00011448 bl 0x13248 | r0 = fcn_00013248 (r0, r1);
0x0001144c subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x00011450 bne 0x11468 | goto label_51;
| }
0x00011454 ldr r2, [pc, 0x78c] | r2 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x00011458 ldr r1, [pc, 0x83c] | r1 = "%s: error!: cannot seek file \"%s\"\n";
| }
0x0001145c ldr r3, [pc, 0x770] | r3 = optarg;
0x00011460 ldr r0, [r3] | r0 = optarg;
0x00011464 b 0x11510 | goto label_52;
| label_51:
0x00011468 ldr r3, [r6, 0x28] | r3 = *((r6 + 0x28));
0x0001146c cmp r3, 0 |
| if (r3 != 0) {
0x00011470 beq 0x1147c |
0x00011474 mov r0, 0xa | r0 = 0xa;
0x00011478 bl 0x10a7c | putchar (r0);
| }
0x0001147c ldr r3, [r6, 0x28] | r3 = *((r6 + 0x28));
0x00011480 cmp r3, 0 |
| if (r3 != 0) {
0x00011484 beq 0x11498 |
0x00011488 mov r2, r5 | r2 = r5;
0x0001148c mov r1, sb | r1 = sb;
0x00011490 ldr r0, [pc, 0x808] | r0 = "_s:_error_:_ini_file_parsing_error__iniparser_getsecname_";
0x00011494 bl 0x10a94 | printf ("_s:_error_:_ini_file_parsing_error__iniparser_getsecname_", r1, r2)
| }
0x00011498 mov r0, r5 | r0 = r5;
0x0001149c bl 0x10c20 | r0 = strlen (r0);
0x000114a0 cmp r0, 0x80 |
| if (r0 >= 0x80) {
0x000114a4 bls 0x114c4 |
0x000114a8 ldr r2, [pc, 0x738] | r2 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x000114ac ldr r1, [pc, 0x7f0] | r1 = "%s: parsing section \"%s\"\n";
0x000114b0 mov r3, r5 | r3 = r5;
| label_12:
0x000114b4 ldr r0, [pc, 0x718] |
0x000114b8 ldr r0, [r0] | r0 = optarg;
0x000114bc bl 0x10b48 | fprintf (r0, "%s: parsing section \"%s\"\n", "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n", r3)
0x000114c0 b 0x116a8 | goto label_11;
| }
0x000114c4 mov r2, r5 | r2 = r5;
0x000114c8 ldr r1, [pc, 0x7d8] | r1 = "%s: error!: too long section name \"%s\"\n";
0x000114cc add r0, sp, 0x130 | r0 += s;
0x000114d0 bl 0x10bf0 | sprintf (r0, "%s: error!: too long section name \"%s\"\n", r2)
0x000114d4 mov r2, 0 | r2 = 0;
0x000114d8 add r1, sp, 0x130 | r1 += s;
0x000114dc ldr r0, [r6, 0x2c] | r0 = *((r6 + 0x2c));
0x000114e0 bl 0x134b4 | r0 = fcn_000134b4 (r0, r1);
0x000114e4 cmp r0, 0 |
| if (r0 == 0) {
0x000114e8 bne 0x11518 |
0x000114ec ldr r4, [pc, 0x6e0] | r4 = optarg;
0x000114f0 ldr r2, [pc, 0x6f0] | r2 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x000114f4 ldr r1, [pc, 0x7b0] | r1 = "%s:mode";
0x000114f8 mov r3, r5 | r3 = r5;
0x000114fc ldr r0, [r4] | r0 = optarg;
0x00011500 bl 0x10b48 | fprintf (r0, "%s:mode", "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n", r3, r4)
0x00011504 ldr r2, [pc, 0x6dc] | r2 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x00011508 ldr r1, [pc, 0x7a0] | r1 = "%s: error!: \"mode\" key not found in section \"%s\"\n";
0x0001150c ldr r0, [r4] | r0 = optarg;
| label_52:
0x00011510 bl 0x10b48 | fprintf (r0, "%s: error!: \"mode\" key not found in section \"%s\"\n", "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n")
0x00011514 b 0x116a8 | goto label_11;
| }
0x00011518 ldr r1, [pc, 0x794] | r1 = "%s: error!: the \"mode\" key is mandatory and has to be \"mode=ubi\" if the section describes an UBI volume\n";
0x0001151c bl 0x10be4 | strcmp (r0, "%s: error!: the \"mode\" key is mandatory and has to be \"mode=ubi\" if the section describes an UBI volume\n");
0x00011520 ldr r8, [r6, 0x28] | r8 = *((r6 + 0x28));
0x00011524 cmp r0, 0 |
| if (r0 != 0) {
0x00011528 beq 0x115a4 |
0x0001152c cmp r8, 0 |
| if (r8 != 0) {
0x00011530 beq 0x11548 |
0x00011534 mov r2, r5 | r2 = r5;
0x00011538 mov r1, sb | r1 = sb;
0x0001153c ldr r0, [pc, 0x774] | r0 = "ubi";
0x00011540 bl 0x10a94 | printf ("ubi", r1, r2)
0x00011544 mov r8, 0 | r8 = 0;
| }
| label_17:
0x00011548 ldr r3, [r6, 0x28] | r3 = *((r6 + 0x28));
0x0001154c cmp r3, 0 |
| if (r3 != 0) {
0x00011550 beq 0x11564 |
0x00011554 ldr r2, [r4] | r2 = *(r4);
0x00011558 mov r1, sb | r1 = sb;
0x0001155c ldr r0, [pc, 0x758] | r0 = "_s:_skip_non_ubi_section___s_";
0x00011560 bl 0x10a94 | printf ("_s:_skip_non_ubi_section___s_", r1, r2)
| }
0x00011564 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00011568 mov r2, 0x38 | r2 = 0x38;
0x0001156c mul r3, r2, r3 | r3 = r2 * r3;
0x00011570 mov fp, 0 |
0x00011574 mov r2, r3 | r2 = r3;
| label_19:
0x00011578 cmp r2, fp |
| if (r2 != fp) {
0x0001157c bne 0x11b14 | goto label_53;
| }
0x00011580 ldrb r3, [r4, 0x30] | r3 = *((r4 + 0x30));
0x00011584 tst r3, 2 |
| if ((r3 & 2) == 0) {
0x00011588 beq 0x11b78 | goto label_54;
| }
0x0001158c ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x00011590 cmp r2, 2 |
| if (r2 == 2) {
0x00011594 beq 0x11b78 | goto label_54;
| }
0x00011598 ldr r2, [pc, 0x648] | r2 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x0001159c ldr r1, [pc, 0x71c] | r1 = "%s: adding volume %d\n";
0x000115a0 b 0x11004 | goto label_7;
| }
0x000115a4 cmp r8, 0 |
| if (r8 != 0) {
0x000115a8 beq 0x115b8 |
0x000115ac mov r1, sb | r1 = sb;
0x000115b0 ldr r0, [pc, 0x70c] | r0 = "_s:_error_:_skip_check_is_only_valid_for_static_volumes";
0x000115b4 bl 0x10a94 | printf ("_s:_error_:_skip_check_is_only_valid_for_static_volumes", r1)
| }
0x000115b8 mov r2, r5 | r2 = r5;
0x000115bc ldr r1, [pc, 0x704] | r1 = "%s: mode=ubi, keep parsing\n";
0x000115c0 add r0, sp, 0x130 | r0 += s;
0x000115c4 bl 0x10bf0 | sprintf (r0, "%s: mode=ubi, keep parsing\n", r2)
0x000115c8 mov r2, 0 | r2 = 0;
0x000115cc add r1, sp, 0x130 | r1 += s;
0x000115d0 ldr r0, [r6, 0x2c] | r0 = *((r6 + 0x2c));
0x000115d4 bl 0x134b4 | r0 = fcn_000134b4 (r0, r1);
0x000115d8 subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 != r0) {
0x000115dc bne 0x116b8 | goto label_55;
| }
0x000115e0 mov r2, r5 | r2 = r5;
0x000115e4 mov r1, sb | r1 = sb;
0x000115e8 ldr r0, [pc, 0x6dc] | r0 = "%s:vol_type";
0x000115ec bl 0x10a94 | printf ("%s:vol_type", r1, r2)
| label_10:
0x000115f0 mov r3, 1 | r3 = 1;
| do {
0x000115f4 str r3, [r4, 4] | *((r4 + 4)) = r3;
0x000115f8 ldr r3, [r6, 0x28] | r3 = *((r6 + 0x28));
0x000115fc cmp r3, 0 |
| if (r3 != 0) {
0x00011600 beq 0x11624 |
0x00011604 ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x00011608 ldr r3, [pc, 0x6c0] | r3 = "%s: volume type was not specified in section \"%s\", assume \"dynamic\"\n\n";
0x0001160c cmp r1, 1 |
0x00011610 ldr r2, [pc, 0x6bc] | r2 = "dynamic";
0x00011614 mov r1, sb | r1 = sb;
| if (r1 != 1) {
0x00011618 moveq r2, r3 | r2 = r3;
| }
0x0001161c ldr r0, [pc, 0x6b4] | r0 = "static";
0x00011620 bl 0x10a94 | printf ("static", r1, "dynamic", "%s: volume type was not specified in section \"%s\", assume \"dynamic\"\n\n")
| }
0x00011624 mov r2, r5 | r2 = r5;
0x00011628 ldr r1, [pc, 0x6ac] | r1 = "_s:_volume_type:__s";
0x0001162c add r0, sp, 0x130 | r0 += s;
0x00011630 bl 0x10bf0 | sprintf (r0, "_s:_volume_type:__s", r2)
0x00011634 mov r2, 0 | r2 = 0;
0x00011638 add r1, sp, 0x130 | r1 += s;
0x0001163c ldr r0, [r6, 0x2c] | r0 = *((r6 + 0x2c));
0x00011640 bl 0x134b4 | r0 = fcn_000134b4 (r0, r1);
0x00011644 subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 == r0) {
0x00011648 beq 0x11720 | goto label_56;
| }
0x0001164c add r1, sp, 0x60 | r1 += var_60h;
0x00011650 bl 0x10aac | r0 = stat64 ();
0x00011654 cmp r0, 0 |
| if (r0 == 0) {
0x00011658 beq 0x11700 | goto label_57;
| }
0x0001165c bl 0x10c08 | errno_location ();
0x00011660 ldr r6, [pc, 0x56c] | r6 = optarg;
0x00011664 mov r3, r8 | r3 = r8;
0x00011668 ldr r2, [pc, 0x578] | r2 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x0001166c ldr r1, [pc, 0x66c] | r1 = "%s:image";
0x00011670 ldr r4, [r0] | r4 = *(r0);
0x00011674 str r5, [sp] | *(sp) = r5;
0x00011678 ldr r0, [r6] | r0 = optarg;
0x0001167c bl 0x10b48 | fprintf (r0, "%s:image", "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n", r3, r4, r5, r6)
0x00011680 ldr r5, [r6] | r5 = optarg;
| label_50:
0x00011684 mov r0, r4 | r0 = r4;
0x00011688 bl 0x10aa0 | strerror (r0);
0x0001168c ldr r3, [pc, 0x6d8] | r3 = "%s: error!: cannot open \"%s\"\n";
0x00011690 ldr r1, [pc, 0x6d8] | r1 = *(0x11d6c);
0x00011694 mov r2, 9 | r2 = 9;
0x00011698 str r4, [sp] | *(sp) = r4;
0x0001169c str r0, [sp, 4] | var_4h = r0;
0x000116a0 mov r0, r5 | r0 = r5;
| label_14:
0x000116a4 bl 0x10b48 | fprintf (r0, r1, r2, "%s: error!: cannot open \"%s\"\n", r4)
| label_11:
0x000116a8 ldr r0, [sp, 0x28] | r0 = var_28h;
0x000116ac bl 0x10c74 | free (r0);
0x000116b0 str r7, [sp, 0x20] | var_20h = r7;
0x000116b4 b 0x112f8 | goto label_8;
| label_55:
0x000116b8 ldr r1, [pc, 0x614] | r1 = "dynamic";
0x000116bc bl 0x10be4 | r0 = strcmp (r0, "dynamic");
0x000116c0 cmp r0, 0 |
| if (r0 != 0) {
0x000116c4 moveq r3, 2 | r3 = 2;
| }
0x000116c8 beq 0x115f4 |
| } while (r0 == 0);
0x000116cc ldr r1, [pc, 0x5fc] | r1 = "%s: volume type was not specified in section \"%s\", assume \"dynamic\"\n\n";
0x000116d0 mov r0, r8 | r0 = r8;
0x000116d4 bl 0x10be4 | r0 = strcmp (r0, "%s: volume type was not specified in section \"%s\", assume \"dynamic\"\n\n");
0x000116d8 cmp r0, 0 |
| if (r0 == 0) {
0x000116dc beq 0x115f0 | goto label_10;
| }
0x000116e0 ldr r2, [pc, 0x500] | r2 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x000116e4 ldr r1, [pc, 0x5f8] | r1 = "_s:_error_:_cannot_stat___s__referred_from_section___s_";
0x000116e8 mov r3, r8 | r3 = r8;
0x000116ec str r5, [sp] | *(sp) = r5;
| do {
| label_13:
0x000116f0 ldr r0, [pc, 0x4dc] |
0x000116f4 ldr r0, [r0] | r0 = optarg;
0x000116f8 bl 0x10b48 | fprintf (r0, "_s:_error_:_cannot_stat___s__referred_from_section___s_", "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n", r3, r4, r5)
0x000116fc b 0x116a8 | goto label_11;
| label_57:
0x00011700 ldrd r2, r3, [sp, 0x90] | __asm ("ldrd r2, r3, [var_90h]");
0x00011704 orrs r3, r2, r3 | r3 = r2 | r3;
| if (r3 != r2) {
0x00011708 bne 0x11738 | goto label_58;
| }
0x0001170c str r5, [sp] | *(sp) = r5;
0x00011710 mov r3, r8 | r3 = r8;
0x00011714 ldr r2, [pc, 0x4cc] | r2 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x00011718 ldr r1, [pc, 0x5c8] | r1 = "%s: error!: invalid volume type \"%s\" in section \"%s\"\n";
0x0001171c b 0x116f0 |
| } while (1);
| label_56:
0x00011720 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00011724 cmp r3, 2 |
| if (r3 != 2) {
0x00011728 moveq r3, r5 | r3 = r5;
| }
| if (r3 != 2) {
0x0001172c ldreq r2, [pc, 0x4b4] | r2 = "ubinize";
| }
| if (r3 == 2) {
0x00011730 ldreq r1, [pc, 0x5b4] | r1 = "%s: error!: image is not specified for static volume in section \"%s\"\n";
| goto label_59;
| }
| if (r3 == 2) {
| label_59:
0x00011734 beq 0x114b4 | goto label_12;
| }
| label_58:
0x00011738 mov r2, r5 | r2 = r5;
0x0001173c ldr r1, [pc, 0x5ac] | r1 = "%s: error!: image is not specified for static volume in section \"%s\"\n";
0x00011740 add r0, sp, 0x130 | r0 += s;
0x00011744 bl 0x10bf0 | sprintf (r0, "%s: error!: image is not specified for static volume in section \"%s\"\n", r2)
0x00011748 mvn r2, 0 | r2 = ~0;
0x0001174c add r1, sp, 0x130 | r1 += s;
0x00011750 ldr r0, [r6, 0x2c] | r0 = *((r6 + 0x2c));
0x00011754 bl 0x134f0 | r0 = fcn_000134f0 (r0, r1);
0x00011758 cmn r0, 1 |
0x0001175c mov fp, r0 |
0x00011760 str r0, [r4] | *(r4) = r0;
| if (r0 == 1) {
0x00011764 bne 0x11788 |
0x00011768 ldr r2, [pc, 0x478] | r2 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x0001176c ldr r1, [pc, 0x580] | r1 = "%s:vol_id";
0x00011770 mov r3, r5 | r3 = r5;
0x00011774 ldr r0, [pc, 0x458] |
0x00011778 ldr r0, [r0] | r0 = optarg;
0x0001177c bl 0x10b48 | fprintf (r0, "%s:vol_id", "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n", r3)
0x00011780 mov r7, fp | r7 = fp;
0x00011784 b 0x116a8 | goto label_11;
| }
0x00011788 cmp r0, 0 |
| if (r0 >= 0) {
0x0001178c strlt r5, [sp] | *(sp) = r5;
| }
| if (r0 >= 0) {
0x00011790 movlt r3, r0 | r3 = r0;
| }
| if (r0 >= 0) {
0x00011794 ldrlt r2, [pc, 0x44c] | r2 = "ubinize";
| }
| if (r0 < 0) {
0x00011798 ldrlt r1, [pc, 0x558] | r1 = "%s: error!: negative volume ID %d in section \"%s\"\n";
| goto label_60;
| }
| if (r0 < 0) {
| label_60:
0x0001179c blt 0x116f0 | goto label_13;
| }
0x000117a0 ldr r3, [sp, 0x58] | r3 = var_58h;
0x000117a4 cmp r0, r3 |
| if (r0 >= r3) {
0x000117a8 blt 0x117cc |
0x000117ac str r3, [sp, 4] | var_4h = r3;
0x000117b0 mov r3, r0 | r3 = r0;
0x000117b4 ldr r0, [pc, 0x418] |
0x000117b8 str r5, [sp] | *(sp) = r5;
0x000117bc ldr r2, [pc, 0x424] | r2 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x000117c0 ldr r1, [pc, 0x534] | r1 = "%s: error!: negative volume ID %d in section \"%s\"\n";
0x000117c4 ldr r0, [r0] | r0 = optarg;
0x000117c8 b 0x116a4 | goto label_14;
| }
0x000117cc ldr r3, [r6, 0x28] | r3 = *((r6 + 0x28));
0x000117d0 cmp r3, 0 |
| if (r3 != 0) {
0x000117d4 beq 0x117e8 |
0x000117d8 mov r2, r0 | r2 = r0;
0x000117dc mov r1, sb | r1 = sb;
0x000117e0 ldr r0, [pc, 0x518] | r0 = "%s: error!: too high volume ID %d in section \"%s\", max. is %d\n";
0x000117e4 bl 0x10a94 | printf ("%s: error!: too high volume ID %d in section \"%s\", max. is %d\n", r1, r2)
| }
0x000117e8 mov r2, r5 | r2 = r5;
0x000117ec ldr r1, [pc, 0x510] | r1 = "_s:_volume_ID:__d";
0x000117f0 add r0, sp, 0x130 | r0 += s;
0x000117f4 bl 0x10bf0 | sprintf (r0, "_s:_volume_ID:__d", r2)
0x000117f8 mov r2, 0 | r2 = 0;
0x000117fc add r1, sp, 0x130 | r1 += s;
0x00011800 ldr r0, [r6, 0x2c] | r0 = *((r6 + 0x2c));
0x00011804 bl 0x134b4 | r0 = fcn_000134b4 (r0, r1);
0x00011808 subs fp, r0, 0 |
| if (fp == r0) {
0x0001180c beq 0x118cc | goto label_61;
| }
0x00011810 bl 0x12e10 | fcn_00012e10 (r0);
0x00011814 mov r3, r1 | r3 = r1;
0x00011818 cmp r0, 1 |
0x0001181c mov r2, r0 | r2 = r0;
0x00011820 sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
0x00011824 strd r2, r3, [r4, 0x28] | __asm ("strd r2, r3, [r4, 0x28]");
| if (r0 >= 1) {
0x00011828 strlt r5, [sp] | *(sp) = r5;
| }
| if (r0 >= 1) {
0x0001182c movlt r3, fp | r3 = fp;
| }
| if (r0 >= 1) {
0x00011830 ldrlt r2, [pc, 0x3b0] | r2 = "ubinize";
| }
| if (r0 < 1) {
0x00011834 ldrlt r1, [pc, 0x4cc] | r1 = "%s: error!: bad \"vol_size\" key value \"%s\" (section \"%s\")\n";
| goto label_62;
| }
| if (r0 < 1) {
| label_62:
0x00011838 blt 0x116f0 | goto label_13;
| }
0x0001183c cmp r8, 0 |
| if (r8 != 0) {
0x00011840 beq 0x1187c |
0x00011844 ldrd r0, r1, [sp, 0x90] | __asm ("ldrd r0, r1, [var_90h]");
0x00011848 cmp r2, r0 |
0x0001184c sbcs ip, r3, r1 | __asm ("sbcs ip, r3, r1");
| if (r2 >= r0) {
0x00011850 bge 0x1187c | goto label_63;
| }
0x00011854 strd r0, r1, [sp, 8] | __asm ("strd r0, r1, [var_8h]");
0x00011858 ldr r0, [pc, 0x374] |
0x0001185c strd r2, r3, [sp, 0x10] | __asm ("strd r2, r3, [var_14h]");
0x00011860 ldr r1, [pc, 0x4a4] | r1 = "%s: error!: bad \"vol_size\" key value \"%s\" (section \"%s\")\n";
0x00011864 str r8, [sp] | *(sp) = r8;
0x00011868 mov r3, r5 | r3 = r5;
0x0001186c ldr r2, [pc, 0x374] | r2 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x00011870 ldr r0, [r0] | r0 = optarg;
0x00011874 bl 0x10b48 | fprintf (r0, "%s: error!: bad \"vol_size\" key value \"%s\" (section \"%s\")\n", r2, r3)
0x00011878 b 0x116a8 | goto label_11;
| }
| label_63:
0x0001187c ldr r1, [r6, 0x28] | r1 = *((r6 + 0x28));
0x00011880 cmp r1, 0 |
| if (r1 != 0) {
0x00011884 beq 0x11894 |
0x00011888 mov r1, sb | r1 = sb;
0x0001188c ldr r0, [pc, 0x47c] | r0 = "%s: error!: error in section \"%s\": size of the image file \"%s\" is %lld, which is larger than volume size %lld\n";
0x00011890 bl 0x10a94 | printf ("%s: error!: error in section \"%s\": size of the image file \"%s\" is %lld, which is larger than volume size %lld\n", r1)
| }
| label_16:
0x00011894 mov r2, r5 | r2 = r5;
0x00011898 ldr r1, [pc, 0x474] | r1 = "_s:_volume_size:__lld_bytes";
0x0001189c add r0, sp, 0x130 | r0 += s;
0x000118a0 bl 0x10bf0 | sprintf (r0, "_s:_volume_size:__lld_bytes", r2)
0x000118a4 mov r2, 0 | r2 = 0;
0x000118a8 add r1, sp, 0x130 | r1 += s;
0x000118ac ldr r0, [r6, 0x2c] | r0 = *((r6 + 0x2c));
0x000118b0 bl 0x134b4 | r0 = fcn_000134b4 (r0, r1);
0x000118b4 subs fp, r0, 0 |
| if (fp != r0) {
0x000118b8 bne 0x1195c | goto label_64;
| }
0x000118bc mov r3, r5 | r3 = r5;
0x000118c0 ldr r2, [pc, 0x320] | r2 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x000118c4 ldr r1, [pc, 0x44c] | r1 = "%s:vol_name";
0x000118c8 b 0x114b4 | goto label_12;
| label_61:
0x000118cc cmp r8, 0 |
| if (r8 != 0) {
0x000118d0 moveq r3, r5 | r3 = r5;
| }
| if (r8 != 0) {
0x000118d4 ldreq r2, [pc, 0x30c] | r2 = "ubinize";
| }
| if (r8 == 0) {
0x000118d8 ldreq r1, [pc, 0x43c] | r1 = "%s: error!: neither image file (\"image=\") nor volume size (\"vol_size=\") specified in section \"%s\"\n";
| goto label_65;
| }
| if (r8 == 0) {
| label_65:
0x000118dc beq 0x114b4 | goto label_12;
| }
0x000118e0 add r1, sp, 0xc8 | r1 += var_c8h;
0x000118e4 mov r0, r8 | r0 = r8;
0x000118e8 bl 0x10aac | r0 = stat64 ();
0x000118ec cmp r0, 0 |
| if (r0 != 0) {
0x000118f0 beq 0x11910 |
0x000118f4 bl 0x10c08 | errno_location ();
0x000118f8 ldr r5, [pc, 0x2d4] | r5 = optarg;
0x000118fc mov r3, r8 | r3 = r8;
0x00011900 ldr r2, [pc, 0x2e0] | r2 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x00011904 ldr r1, [pc, 0x414] | r1 = "%s: error!: neither image file (\"image=\") nor volume size (\"vol_size=\") specified in section \"%s\"\n";
0x00011908 ldr r4, [r0] | r4 = *(r0);
0x0001190c b 0x11430 | goto label_15;
| }
0x00011910 ldrd r2, r3, [sp, 0xf8] | __asm ("ldrd r2, r3, [var_f8h]");
0x00011914 strd r2, r3, [r4, 0x28] | __asm ("strd r2, r3, [r4, 0x28]");
0x00011918 orrs r3, r2, r3 | r3 = r2 | r3;
| if (r3 != r2) {
0x0001191c streq r5, [sp] | *(sp) = r5;
| }
| if (r3 != r2) {
0x00011920 moveq r3, r8 | r3 = r8;
| }
| if (r3 != r2) {
0x00011924 ldreq r2, [pc, 0x2bc] | r2 = "ubinize";
| }
| if (r3 == r2) {
0x00011928 ldreq r1, [pc, 0x3f4] | r1 = "_s:_error_:_file___s__referred_from_section___s__is_empty";
| goto label_66;
| }
| if (r3 == r2) {
| label_66:
0x0001192c beq 0x116f0 | goto label_13;
| }
0x00011930 mov r3, r8 | r3 = r8;
0x00011934 mov r2, r5 | r2 = r5;
0x00011938 mov r1, sb | r1 = sb;
0x0001193c ldr r0, [pc, 0x3e4] | r0 = "_s:_error_:_file___s__referred_from_section___s__is_empty";
0x00011940 bl 0x10a94 | printf ("_s:_error_:_file___s__referred_from_section___s__is_empty", r1, r2, r3)
0x00011944 ldrd r0, r1, [r4, 0x28] | __asm ("ldrd r0, r1, [r4, 0x28]");
0x00011948 mov r2, 1 | r2 = 1;
0x0001194c bl 0x12f1c | fcn_00012f1c (r0, r1);
0x00011950 mov r0, 0xa | r0 = 0xa;
0x00011954 bl 0x10a7c | putchar (r0);
0x00011958 b 0x11894 | goto label_16;
| label_64:
0x0001195c str fp, [r4, 0x14] | *((r4 + 0x14)) = fp;
0x00011960 bl 0x10c20 | r0 = strlen (r0);
0x00011964 cmp r0, 0x7f |
0x00011968 str r0, [r4, 0x18] | *((r4 + 0x18)) = r0;
| if (r0 >= 0x7f) {
0x0001196c bls 0x11988 |
0x00011970 mov r3, 0x7f | r3 = 0x7f;
0x00011974 str r3, [sp] | *(sp) = r3;
0x00011978 ldr r2, [pc, 0x268] | r2 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x0001197c mov r3, fp | r3 = fp;
0x00011980 ldr r1, [pc, 0x3a4] | r1 = "%s: volume size was not specified in section \"%s\", assume minimum to fit image \"%s\";
0x00011984 b 0x116f0 | goto label_13;
| }
0x00011988 ldr r3, [r6, 0x28] | r3 = *((r6 + 0x28));
0x0001198c cmp r3, 0 |
| if (r3 != 0) {
0x00011990 beq 0x119a4 |
0x00011994 mov r2, fp | r2 = fp;
0x00011998 mov r1, sb | r1 = sb;
0x0001199c ldr r0, [pc, 0x38c] | r0 = "%s: error!: too long volume name in section \"%s\", max. is %d characters\n";
0x000119a0 bl 0x10a94 | printf ("%s: error!: too long volume name in section \"%s\", max. is %d characters\n", r1, r2)
| }
0x000119a4 mov r2, r5 | r2 = r5;
0x000119a8 ldr r1, [pc, 0x384] | r1 = "_s:_volume_name:__s";
0x000119ac add r0, sp, 0x130 | r0 += s;
0x000119b0 bl 0x10bf0 | sprintf (r0, "_s:_volume_name:__s", r2)
0x000119b4 mvn r2, 0 | r2 = ~0;
0x000119b8 add r1, sp, 0x130 | r1 += s;
0x000119bc ldr r0, [r6, 0x2c] | r0 = *((r6 + 0x2c));
0x000119c0 bl 0x134f0 | r0 = fcn_000134f0 (r0, r1);
0x000119c4 cmn r0, 1 |
0x000119c8 mov r3, r0 | r3 = r0;
| if (r0 != 1) {
0x000119cc moveq r3, 1 | r3 = 1;
| }
0x000119d0 str r0, [r4, 8] | *((r4 + 8)) = r0;
| if (r0 != 1) {
0x000119d4 streq r3, [r4, 8] | *((r4 + 8)) = r3;
| }
| if (r0 == 1) {
0x000119d8 beq 0x119f4 | goto label_67;
| }
0x000119dc ldr r2, [r4] | r2 = *(r4);
0x000119e0 cmp r2, 0 |
| if (r2 >= 0) {
0x000119e4 strlt r5, [sp] | *(sp) = r5;
| }
| if (r2 >= 0) {
0x000119e8 ldrlt r2, [pc, 0x1f8] | r2 = "ubinize";
| }
| if (r2 < 0) {
0x000119ec ldrlt r1, [pc, 0x344] | r1 = "_s:_error_:_negative_volume_alignement__d_in_section___s_";
| goto label_68;
| }
| if (r2 < 0) {
| label_68:
0x000119f0 blt 0x116f0 | goto label_13;
| }
| label_67:
0x000119f4 ldr r3, [r6, 0x28] | r3 = *((r6 + 0x28));
0x000119f8 cmp r3, 0 |
| if (r3 != 0) {
0x000119fc beq 0x11a10 |
0x00011a00 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x00011a04 mov r1, sb | r1 = sb;
0x00011a08 ldr r0, [pc, 0x32c] | r0 = "_s:_error_:_negative_volume_alignement__d_in_section___s_";
0x00011a0c bl 0x10a94 | printf ("_s:_error_:_negative_volume_alignement__d_in_section___s_", r1, r2)
| }
0x00011a10 mov r2, r5 | r2 = r5;
0x00011a14 ldr r1, [pc, 0x324] | r1 = "%s: volume alignment: %d\n";
0x00011a18 add r0, sp, 0x130 | r0 += s;
0x00011a1c bl 0x10bf0 | sprintf (r0, "%s: volume alignment: %d\n", r2)
0x00011a20 mov r2, 0 | r2 = 0;
0x00011a24 add r1, sp, 0x130 | r1 += s;
0x00011a28 ldr r0, [r6, 0x2c] | r0 = *((r6 + 0x2c));
0x00011a2c bl 0x134b4 | r0 = fcn_000134b4 (r0, r1);
0x00011a30 subs fp, r0, 0 |
| if (fp == r0) {
0x00011a34 beq 0x11a6c | goto label_69;
| }
0x00011a38 ldr r1, [pc, 0x304] | r1 = "%s:vol_flags";
0x00011a3c bl 0x10be4 | r0 = strcmp (r0, "%s:vol_flags");
0x00011a40 cmp r0, 0 |
| if (r0 != 0) {
0x00011a44 bne 0x11ac0 | goto label_70;
| }
0x00011a48 ldr r3, [r6, 0x28] | r3 = *((r6 + 0x28));
0x00011a4c cmp r3, 0 |
| if (r3 != 0) {
0x00011a50 beq 0x11a60 |
0x00011a54 mov r1, sb | r1 = sb;
0x00011a58 ldr r0, [pc, 0x2e8] | r0 = "autoresize";
0x00011a5c bl 0x10a94 | printf ("autoresize", r1)
| }
0x00011a60 ldrb r3, [r4, 0x30] | r3 = *((r4 + 0x30));
0x00011a64 orr r3, r3, 1 | r3 |= 1;
| do {
0x00011a68 strb r3, [r4, 0x30] | *((r4 + 0x30)) = r3;
| label_69:
0x00011a6c ldr fp, [sp, 0x3c] | fp = var_3ch;
0x00011a70 ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x00011a74 mov r0, fp | r0 = fp;
0x00011a78 bl 0x14124 | fcn_00014124 (r0, r1);
0x00011a7c sub r2, fp, r1 | r2 = fp - r1;
0x00011a80 str r1, [r4, 0xc] | *((r4 + 0xc)) = r1;
0x00011a84 ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x00011a88 str r2, [r4, 0x10] | *((r4 + 0x10)) = r2;
0x00011a8c cmp r1, 1 |
0x00011a90 asr r3, r2, 0x1f | r3 = r2 >> 0x1f;
| if (r1 != 1) {
0x00011a94 bne 0x11b0c | goto label_71;
| }
0x00011a98 ldrd r0, r1, [r4, 0x28] | __asm ("ldrd r0, r1, [r4, 0x28]");
| label_18:
0x00011a9c adds sl, r0, r2 | sl = r0 + r2;
0x00011aa0 adc fp, r1, r3 | __asm ("adc fp, r1, r3");
0x00011aa4 subs r0, sl, 1 | r0 = sl - 1;
0x00011aa8 sbc r1, fp, 0 | __asm ("sbc r1, envp");
0x00011aac bl 0x14144 | fcn_00014144 (r0);
0x00011ab0 mov r3, 0 | r3 = 0;
0x00011ab4 str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
0x00011ab8 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x00011abc b 0x11548 | goto label_17;
| label_70:
0x00011ac0 ldr r1, [pc, 0x284] | r1 = "%s: autoresize flags found\n";
0x00011ac4 mov r0, fp | r0 = fp;
0x00011ac8 bl 0x10be4 | r0 = strcmp (r0, "%s: autoresize flags found\n");
0x00011acc cmp r0, 0 |
| if (r0 != 0) {
0x00011ad0 bne 0x11af8 | goto label_72;
| }
0x00011ad4 ldr r3, [r6, 0x28] | r3 = *((r6 + 0x28));
0x00011ad8 cmp r3, 0 |
| if (r3 != 0) {
0x00011adc beq 0x11aec |
0x00011ae0 mov r1, sb | r1 = sb;
0x00011ae4 ldr r0, [pc, 0x264] | r0 = "skip-check";
0x00011ae8 bl 0x10a94 | printf ("skip-check", r1)
| }
0x00011aec ldrb r3, [r4, 0x30] | r3 = *((r4 + 0x30));
0x00011af0 orr r3, r3, 2 | r3 |= 2;
0x00011af4 b 0x11a68 |
| } while (1);
| label_72:
0x00011af8 str r5, [sp] | *(sp) = r5;
0x00011afc mov r3, fp | r3 = fp;
0x00011b00 ldr r2, [pc, 0xe0] | r2 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x00011b04 ldr r1, [pc, 0x248] | r1 = "_s:_skip_check_flag_found";
0x00011b08 b 0x116f0 | goto label_13;
| label_71:
0x00011b0c ldrd r0, r1, [sp, 0x90] | __asm ("ldrd r0, r1, [var_90h]");
0x00011b10 b 0x11a9c | goto label_18;
| label_53:
0x00011b14 ldr r1, [sp, 0x28] | r1 = var_28h;
0x00011b18 ldr r3, [r4] | r3 = *(r4);
0x00011b1c ldr r1, [r1, fp] | r1 = *((r1 + fp));
0x00011b20 cmp r3, r1 |
| if (r3 != r1) {
0x00011b24 streq r5, [sp] | *(sp) = r5;
| }
| if (r3 != r1) {
0x00011b28 ldreq r2, [pc, 0xb8] | r2 = "ubinize";
| }
| if (r3 == r1) {
0x00011b2c ldreq r1, [pc, 0x224] | r1 = "%s: error!: volume IDs must be unique, but ID %d in section \"%s\" is not\n";
| goto label_73;
| }
| if (r3 == r1) {
| label_73:
0x00011b30 beq 0x116f0 | goto label_13;
| }
0x00011b34 str r2, [sp, 0x34] | var_34h = r2;
0x00011b38 ldr r2, [sp, 0x28] | r2 = var_28h;
0x00011b3c ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00011b40 add r1, r2, fp | r1 = r2 + fp;
0x00011b44 mov r0, r3 | r0 = r3;
0x00011b48 ldr r1, [r1, 0x14] | r1 = *((r1 + 0x14));
0x00011b4c str r3, [sp, 0x30] | var_30h = r3;
0x00011b50 bl 0x10be4 | strcmp (r0, r1);
0x00011b54 add fp, fp, 0x38 |
0x00011b58 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00011b5c ldr r2, [sp, 0x34] | r2 = var_34h;
0x00011b60 cmp r0, 0 |
| if (r0 != 0) {
0x00011b64 bne 0x11578 | goto label_19;
| }
0x00011b68 str r5, [sp] | *(sp) = r5;
0x00011b6c ldr r2, [pc, 0x74] | r2 = "-o, --output=<file name> output file name\n-p, --peb-size=<bytes> size of the physical eraseblock of the flash\n this UBI image is created for in bytes,\n kilobytes (KiB), or megabytes (MiB)\n (mandatory parameter)\n-m, --min-io-size=<bytes> minimum input/output unit size of the flash\n in bytes\n-s, --sub-page-size=<bytes> minimum input/output unit used for UBI\n headers, e.g. sub-page size in case of NAND\n flash (equivalent to the minimum input/output\n unit size by default)\n-O, --vid-hdr-offset=<num> offset if the VID header from start of the\n physical eraseblock (default is the next\n minimum I/O unit or sub-page after the EC\n header)\n-e, --erase-counter=<num> the erase counter value to put to EC headers\n (default is 0)\n-x, --ubi-ver=<num> UBI version number to put to EC headers\n (default is 1)\n-Q, --image-seq=<num> 32-bit UBI image sequence number to use\n (by default a random number is picked)\n-v, --verbose be verbose\n-h, --help print help message\n-V, --version print program version\n\n";
0x00011b70 ldr r1, [pc, 0x1e4] | r1 = "%s: error!: volume IDs must be unique, but ID %d in section \"%s\" is not\n";
0x00011b74 b 0x116f0 | goto label_13;
| label_54:
0x00011b78 tst r3, 1 |
| if ((r3 & 1) == 0) {
0x00011b7c beq 0x11b9c | goto label_74;
| }
0x00011b80 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00011b84 cmp r3, 0 |
| if (r3 == 0) {
0x00011b88 ldrne r2, [pc, 0x58] | r2 = "ubinize";
| }
| if (r3 != 0) {
0x00011b8c ldrne r1, [pc, 0x1cc] | r1 = "%s: error!: only one volume is allowed to have auto-resize flag\n";
| goto label_75;
| }
| if (r3 != 0) {
| label_75:
0x00011b90 bne 0x11004 | goto label_7;
| }
| label_74:
0x00011b9c ldr r2, [sp, 0x2c] | r2 = ptr;
0x00011ba0 mov r1, r4 | r1 = r4;
0x00011ba4 add r0, sp, 0x3c | r0 += var_3ch;
0x00011ba8 bl 0x121f8 | fcn_000121f8 (r0, r1, r2);
0x00011bac subs fp, r0, 0 |
| if (fp == var_3ch) {
0x00011bb0 beq 0x11d8c | void (*0x11d8c)() ();
| }
| label_49:
0x00011eb4 ldr r3, [r6, 0x28] | r3 = *((r6 + 0x28));
0x00011eb8 cmp r3, 0 |
| if (r3 != 0) {
0x00011ebc beq 0x11ecc |
0x00011ec0 ldr r1, [pc, -0x144] | r1 = "ubinize";
0x00011ec4 ldr r0, [pc, -0x144] | r0 = "_s:_done";
0x00011ec8 bl 0x10a94 | printf ("_s:_done", "ubinize")
| }
0x00011ecc ldr r0, [sp, 0x28] | r0 = var_28h;
0x00011ed0 bl 0x10c74 | free (r0);
0x00011ed4 ldr r0, [r6, 0x2c] | r0 = *((r6 + 0x2c));
0x00011ed8 bl 0x13a84 | fcn_00013a84 (r0);
0x00011edc ldr r0, [sp, 0x2c] | r0 = ptr;
0x00011ee0 bl 0x10c74 | free (r0);
0x00011ee4 ldr r0, [r6, 8] | r0 = *((r6 + 8));
0x00011ee8 bl 0x10c5c | close (r0);
0x00011eec b 0x10e6c | goto label_6;
| }
[*] Function printf used 57 times ubinize