[*] Binary protection state of ubinize
Partial RELRO No Canary found NX disabled No PIE No RPATH No RUNPATH No Symbols
[*] Function fprintf 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 @ 0x12008 */
| #include <stdint.h>
|
; (fcn) fcn.00012008 () | void fcn_00012008 (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| char * * endptr;
| int32_t var_10h;
| r0 = arg1;
| r1 = arg2;
0x00012008 push {r0, r1, r2, r3, r4, r5, r6, lr} |
0x0001200c mov r6, r1 | r6 = r1;
0x00012010 mov r2, 0 | r2 = 0;
0x00012014 add r1, sp, 0xc | r1 += endptr;
0x00012018 mov r4, r0 | r4 = r0;
0x0001201c bl 0x10b0c | strtoul (r0, r1, r2);
0x00012020 ldrb r3, [r4] | r3 = *(r4);
0x00012024 cmp r3, 0 |
0x00012028 mov r5, r0 | r5 = r0;
| if (r3 != 0) {
0x0001202c beq 0x12040 |
0x00012030 ldr r3, [sp, 0xc] | r3 = endptr;
0x00012034 ldrb r3, [r3] | r3 = *(r3);
0x00012038 cmp r3, 0 |
| if (r3 == 0) {
0x0001203c beq 0x12064 | goto label_0;
| }
| }
0x00012040 ldr r0, [pc, 0x28] |
0x00012044 str r4, [sp] | *(sp) = r4;
0x00012048 ldr r3, [pc, 0x24] | r3 = stderr;
0x0001204c ldr r2, [pc, 0x24] | r2 = "strtoul";
0x00012050 ldr r1, [pc, 0x24] | r1 = "ubinize";
0x00012054 ldr r0, [r0] | r0 = *(0x1206c);
0x00012058 bl 0x10b48 | fprintf (r0, "ubinize", "strtoul", r3, r4)
0x0001205c mov r3, 1 | r3 = 1;
0x00012060 str r3, [r6] | *(r6) = r3;
| label_0:
0x00012064 mov r0, r5 | r0 = r5;
0x00012068 add sp, sp, 0x10 |
0x0001206c pop {r4, r5, r6, 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 @ 0x1211c */
| #include <stdint.h>
|
; (fcn) fcn.0001211c () | void fcn_0001211c (size_t size) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| r0 = size;
0x0001211c push {r0, r1, r4, r5, r6, r7, r8, lr} |
0x00012120 ldr r8, [r0, 0x18] | r8 = *((r0 + 0x18));
0x00012124 mov r7, r0 | r7 = r0;
0x00012128 mov r1, r8 | r1 = r8;
0x0001212c mov r0, 1 | r0 = 1;
0x00012130 bl 0x10b30 | r0 = calloc (r0, r1);
0x00012134 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 == r0) {
0x00012138 movne r4, r6 | r4 = r6;
| }
| if (r6 == r0) {
0x0001213c movne r5, 0 | r5 = 0;
| }
| if (r6 != r0) {
0x00012140 bne 0x121d4 | goto label_1;
| }
0x00012144 bl 0x10c08 | errno_location ();
0x00012148 ldr r5, [pc, 0x94] |
0x0001214c mov r3, r8 | r3 = r8;
0x00012150 ldr r2, [pc, 0x90] | r2 = stderr;
0x00012154 ldr r1, [pc, 0x90] | r1 = "libubigen";
0x00012158 ldr r4, [r0] | r4 = *(r0);
0x0001215c ldr r0, [r5] | r0 = *(0x121e0);
0x00012160 bl 0x10b48 | fprintf (r0, "libubigen", r2, r3, r4, r5)
0x00012164 mov r0, r4 | r0 = r4;
0x00012168 ldr r5, [r5] | r5 = *(0x121e0);
0x0001216c bl 0x10aa0 | strerror (r0);
0x00012170 str r4, [sp] | *(sp) = r4;
0x00012174 ldr r3, [pc, 0x74] | r3 = "_s:_error_:_cannot_allocate__d_bytes_of_memory";
0x00012178 mov r2, 0xb | r2 = 0xb;
0x0001217c ldr r1, [pc, 0x70] | r1 = *(0x121f0);
0x00012180 str r0, [sp, 4] | var_4h = r0;
0x00012184 mov r0, r5 | r0 = r5;
0x00012188 bl 0x10b48 | fprintf (r0, r1, r2, "_s:_error_:_cannot_allocate__d_bytes_of_memory", r4)
| label_0:
0x0001218c mov r0, r6 | r0 = r6;
0x00012190 add sp, sp, 8 |
0x00012194 pop {r4, r5, r6, r7, r8, pc} |
| do {
0x00012198 mov r2, 0xa8 | r2 = 0xa8;
0x0001219c mov r1, r4 | r1 = r4;
0x000121a0 mvn r0, 0 | r0 = ~0;
0x000121a4 bl 0x130d4 | fcn_000130d4 (r0);
0x000121a8 add r5, r5, 1 | r5++;
0x000121ac add r4, r4, 0xac | r4 += 0xac;
0x000121b0 lsr r3, r0, 0x18 | r3 = r0 >> 0x18;
0x000121b4 lsl r2, r0, 8 | r2 = r0 << 8;
0x000121b8 orr r3, r3, r0, lsl 24 | r3 |= (r0 << 24);
0x000121bc and r2, r2, 0xff0000 | r2 &= 0xff0000;
0x000121c0 lsr r0, r0, 8 | r0 >>= 8;
0x000121c4 orr r3, r3, r2 | r3 |= r2;
0x000121c8 and r0, r0, 0xff00 | r0 &= 0xff00;
0x000121cc orr r0, r3, r0 | r0 = r3 | r0;
0x000121d0 str r0, [r4, -4] | *((r4 - 4)) = r0;
| label_1:
0x000121d4 ldr r3, [r7, 0x1c] | r3 = *((r7 + 0x1c));
0x000121d8 cmp r3, r5 |
0x000121dc bgt 0x12198 |
| } while (r3 > r5);
0x000121e0 b 0x1218c | goto label_0;
| }
; 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 @ 0x121f8 */
| #include <stdint.h>
|
; (fcn) fcn.000121f8 () | void fcn_000121f8 (int32_t arg_0h, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x000121f8 ldr r3, [r1] | r3 = *(r1);
0x000121fc push {r0, r1, r2, r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00012200 mov r6, r2 | r6 = r2;
0x00012204 mov r5, r1 | r5 = r1;
0x00012208 mov r2, 0xac | r2 = 0xac;
0x0001220c ldr r1, [r0, 0x1c] | r1 = *(arg_0hx1c);
0x00012210 mul r8, r2, r3 | r8 = r2 * r3;
0x00012214 cmp r3, r1 |
0x00012218 add r4, r6, r8 | r4 = r6 + r8;
| if (r3 < r1) {
0x0001221c blt 0x12250 | goto label_1;
| }
0x00012220 str r1, [sp] | *(sp) = r1;
0x00012224 ldr r2, [pc, 0x1d0] | r2 = *(0x123f8);
0x00012228 ldr r1, [pc, 0x1d0] | r1 = "libubigen";
| do {
0x0001222c ldr r0, [pc, 0x1d0] |
0x00012230 ldr r0, [r0] | r0 = "_s:_error_:_too_high_volume_id__d__max._volumes_is__d";
0x00012234 bl 0x10b48 | r0 = fprintf ("_s:_error_:_too_high_volume_id__d__max._volumes_is__d", r1, r2)
0x00012238 bl 0x10c08 | errno_location ();
0x0001223c mov r3, 0x16 | r3 = 0x16;
0x00012240 str r3, [r0] | *(r0) = r3;
0x00012244 mvn r0, 0 | r0 = ~0;
| label_0:
0x00012248 add sp, sp, 0xc |
0x0001224c pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_1:
0x00012250 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x00012254 ldr r1, [r0] | r1 = *(r0);
0x00012258 mov r7, r0 | r7 = r0;
0x0001225c cmp r3, r1 |
| if (r3 < r1) {
0x00012260 strge r1, [sp] | *(sp) = r1;
| }
| if (r3 < r1) {
0x00012264 ldrge r2, [pc, 0x190] | r2 = "libubigen";
| }
| if (r3 < r1) {
0x00012268 ldrge r1, [pc, 0x198] | r1 = "%s: error!: too large alignment %d, max is %d (LEB size)\n";
| }
0x0001226c bge 0x1222c |
| } while (r3 >= r1);
0x00012270 mov r1, 0 | r1 = 0;
0x00012274 mov r0, r4 | r0 = r4;
0x00012278 bl 0x10bb4 | memset (r0, r1, r2);
0x0001227c ldr r7, [r7] | r7 = *(r7);
0x00012280 ldrd r0, r1, [r5, 0x28] | __asm ("ldrd r0, r1, [r5, 0x28]");
0x00012284 asr r3, r7, 0x1f | r3 = r7 >> 0x1f;
0x00012288 adds sl, r0, r7 | sl = r0 + r7;
0x0001228c adc fp, r1, r3 | __asm ("adc fp, r1, r3");
0x00012290 subs r0, sl, 1 | r0 = sl - 1;
0x00012294 sbc r1, fp, 0 | __asm ("sbc r1, arg_0h");
0x00012298 mov r2, r7 | r2 = r7;
0x0001229c bl 0x14144 | fcn_00014144 (r0);
0x000122a0 ldr r1, [r5, 8] | r1 = *((r5 + 8));
0x000122a4 mov sb, 0 | sb = 0;
0x000122a8 lsr r3, r0, 0x18 | r3 = r0 >> 0x18;
0x000122ac lsl r2, r0, 8 | r2 = r0 << 8;
0x000122b0 orr r3, r3, r0, lsl 24 | r3 |= (r0 << 24);
0x000122b4 and r2, r2, 0xff0000 | r2 &= 0xff0000;
0x000122b8 lsr r0, r0, 8 | r0 >>= 8;
0x000122bc orr r3, r3, r2 | r3 |= r2;
0x000122c0 and r0, r0, 0xff00 | r0 &= 0xff00;
0x000122c4 orr r0, r3, r0 | r0 = r3 | r0;
0x000122c8 lsr r3, r0, 8 | r3 = r0 >> 8;
0x000122cc strb r0, [r6, r8] | *((r6 + r8)) = r0;
0x000122d0 strb r3, [r4, 1] | *((r4 + 1)) = r3;
0x000122d4 lsr r3, r0, 0x10 | r3 = r0 >> 0x10;
0x000122d8 strb r3, [r4, 2] | *((r4 + 2)) = r3;
0x000122dc lsl r2, r1, 8 | r2 = r1 << 8;
0x000122e0 lsr r3, r1, 0x18 | r3 = r1 >> 0x18;
0x000122e4 orr r3, r3, r1, lsl 24 | r3 |= (r1 << 24);
0x000122e8 and r2, r2, 0xff0000 | r2 &= 0xff0000;
0x000122ec orr r3, r3, r2 | r3 |= r2;
0x000122f0 lsr r2, r1, 8 | r2 = r1 >> 8;
0x000122f4 and r2, r2, 0xff00 | r2 &= 0xff00;
0x000122f8 orr r3, r3, r2 | r3 |= r2;
0x000122fc lsr r2, r3, 8 | r2 = r3 >> 8;
0x00012300 strb r3, [r4, 4] | *((r4 + 4)) = r3;
0x00012304 strb r2, [r4, 5] | *((r4 + 5)) = r2;
0x00012308 lsr r2, r3, 0x10 | r2 = r3 >> 0x10;
0x0001230c lsr r3, r3, 0x18 | r3 >>= 0x18;
0x00012310 strb r3, [r4, 7] | *((r4 + 7)) = r3;
0x00012314 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00012318 lsr r0, r0, 0x18 | r0 >>= 0x18;
0x0001231c strb r0, [r4, 3] | *((r4 + 3)) = r0;
0x00012320 strb r2, [r4, 6] | *((r4 + 6)) = r2;
0x00012324 strb r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
0x00012328 mov r0, r7 | r0 = r7;
0x0001232c bl 0x14124 | fcn_00014124 (r0, r1);
0x00012330 add r0, r4, 0x10 | r0 = r4 + 0x10;
0x00012334 lsr r3, r1, 0x18 | r3 = r1 >> 0x18;
0x00012338 lsl r2, r1, 8 | r2 = r1 << 8;
0x0001233c orr r3, r3, r1, lsl 24 | r3 |= (r1 << 24);
0x00012340 and r2, r2, 0xff0000 | r2 &= 0xff0000;
0x00012344 lsr r1, r1, 8 | r1 >>= 8;
0x00012348 orr r3, r3, r2 | r3 |= r2;
0x0001234c and r1, r1, 0xff00 | r1 &= 0xff00;
0x00012350 orr r1, r3, r1 | r1 = r3 | r1;
0x00012354 lsr r3, r1, 8 | r3 = r1 >> 8;
0x00012358 strb r1, [r4, 8] | *((r4 + 8)) = r1;
0x0001235c strb r3, [r4, 9] | *((r4 + 9)) = r3;
0x00012360 lsr r3, r1, 0x10 | r3 = r1 >> 0x10;
0x00012364 lsr r1, r1, 0x18 | r1 >>= 0x18;
0x00012368 strb r1, [r4, 0xb] | *((r4 + 0xb)) = r1;
0x0001236c strb r3, [r4, 0xa] | *((r4 + 0xa)) = r3;
0x00012370 ldrb r3, [r5, 0x30] | r3 = *((r5 + 0x30));
0x00012374 strb r3, [r4, 0x90] | *((r4 + 0x90)) = r3;
0x00012378 ldr r2, [r5, 0x18] | r2 = *((r5 + 0x18));
0x0001237c ldr r1, [r5, 0x14] | r1 = *((r5 + 0x14));
0x00012380 bl 0x10adc | memcpy (r0, r1, r2);
0x00012384 ldr r2, [r5, 0x18] | r2 = *((r5 + 0x18));
0x00012388 mov r1, r4 | r1 = r4;
0x0001238c add r3, r4, r2 | r3 = r4 + r2;
0x00012390 strb sb, [r3, 0x10] | *((r3 + 0x10)) = sb;
0x00012394 lsl r3, r2, 0x10 | r3 = r2 << 0x10;
0x00012398 lsr r3, r3, 0x18 | r3 >>= 0x18;
0x0001239c orr r3, r3, r2, lsl 8 | r3 |= (r2 << 8);
0x000123a0 strb r3, [r4, 0xe] | *((r4 + 0xe)) = r3;
0x000123a4 lsr r3, r3, 8 | r3 >>= 8;
0x000123a8 strb r3, [r4, 0xf] | *((r4 + 0xf)) = r3;
0x000123ac mov r2, 0xa8 | r2 = 0xa8;
0x000123b0 mvn r0, 0 | r0 = ~0;
0x000123b4 bl 0x130d4 | r0 = fcn_000130d4 (r0);
0x000123b8 lsr r3, r0, 0x18 | r3 = r0 >> 0x18;
0x000123bc lsl r2, r0, 8 | r2 = r0 << 8;
0x000123c0 orr r3, r3, r0, lsl 24 | r3 |= (r0 << 24);
0x000123c4 and r2, r2, 0xff0000 | r2 &= 0xff0000;
0x000123c8 lsr r0, r0, 8 | r0 >>= 8;
0x000123cc orr r3, r3, r2 | r3 |= r2;
0x000123d0 and r0, r0, 0xff00 | r0 &= 0xff00;
0x000123d4 orr r3, r3, r0 | r3 |= r0;
0x000123d8 lsr r2, r3, 8 | r2 = r3 >> 8;
0x000123dc strb r3, [r4, 0xa8] | *((r4 + 0xa8)) = r3;
0x000123e0 strb r2, [r4, 0xa9] | *((r4 + 0xa9)) = r2;
0x000123e4 lsr r2, r3, 0x10 | r2 = r3 >> 0x10;
0x000123e8 lsr r3, r3, 0x18 | r3 >>= 0x18;
0x000123ec strb r2, [r4, 0xaa] | *((r4 + 0xaa)) = r2;
0x000123f0 strb r3, [r4, 0xab] | *((r4 + 0xab)) = r3;
0x000123f4 mov r0, sb | r0 = sb;
0x000123f8 b 0x12248 | goto label_0;
| }
; 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 @ 0x128a0 */
| #include <stdint.h>
|
; (fcn) fcn.000128a0 () | void fcn_000128a0 (int32_t arg_38h, int32_t fildes, int32_t fd, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_8h_2;
| int32_t var_14h;
| r0 = arg1;
| r1 = arg2;
0x000128a0 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000128a4 ldr r5, [r1, 0x10] | r5 = *((r1 + 0x10));
0x000128a8 sub sp, sp, 0x14 |
0x000128ac strd r2, r3, [sp, 8] | __asm ("strd r2, r3, [var_8h]");
0x000128b0 ldr r3, [r1] | r3 = *(r1);
0x000128b4 ldr r2, [r0, 0x1c] | r2 = *(arg_38hx1c);
0x000128b8 ldrd r8, sb, [sp, 0x38] | __asm ("ldrd r8, sb, [arg_38h]");
0x000128bc cmp r3, r2 |
| if (r3 < r2) {
0x000128c0 blt 0x128f0 | goto label_3;
| }
0x000128c4 str r2, [sp] | *(sp) = r2;
0x000128c8 ldr r1, [pc, 0x274] | r1 = *(0x12b40);
0x000128cc ldr r2, [pc, 0x274] | r2 = "_s:_error_:_too_high_volume_id__d__max._volumes_is__d";
| do {
0x000128d0 ldr r0, [pc, 0x274] |
0x000128d4 ldr r0, [r0] | r0 = "libubigen";
0x000128d8 bl 0x10b48 | r0 = fprintf ("libubigen", r1, r2)
0x000128dc bl 0x10c08 | errno_location ();
0x000128e0 mov r3, 0x16 | r3 = 0x16;
0x000128e4 str r3, [r0] | *(r0) = r3;
| label_0:
0x000128e8 mvn r0, 0 | r0 = ~0;
0x000128ec b 0x12a14 | goto label_4;
| label_3:
0x000128f0 ldr r3, [r1, 8] | r3 = *((r1 + 8));
0x000128f4 ldr r6, [r0] | r6 = *(r0);
0x000128f8 mov r4, r0 | r4 = r0;
0x000128fc cmp r3, r6 |
0x00012900 mov sl, r1 | sl = r1;
| if (r3 < r6) {
0x00012904 strge r6, [sp] | *(sp) = r6;
| }
| if (r3 < r6) {
0x00012908 ldrge r2, [pc, 0x238] | r2 = "libubigen";
| }
| if (r3 < r6) {
0x0001290c ldrge r1, [pc, 0x23c] | r1 = "%s: error!: too large alignment %d, max is %d (LEB size)\n";
| }
0x00012910 bge 0x128d0 |
| } while (r3 >= r6);
0x00012914 mov r0, r6 | r0 = r6;
0x00012918 bl 0x10af4 | r0 = malloc (r0);
0x0001291c subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 == r0) {
0x00012920 bne 0x12970 |
0x00012924 bl 0x10c08 | errno_location ();
0x00012928 ldr r5, [pc, 0x21c] |
0x0001292c mov r3, r6 | r3 = r6;
0x00012930 ldr r2, [pc, 0x210] | r2 = "_s:_error_:_too_high_volume_id__d__max._volumes_is__d";
0x00012934 ldr r1, [pc, 0x218] | r1 = "%s: error!: too large alignment %d, max is %d (LEB size)\n";
0x00012938 ldr r4, [r0] | r4 = *(r0);
0x0001293c ldr r0, [r5] | r0 = "libubigen";
0x00012940 bl 0x10b48 | fprintf ("libubigen", "%s: error!: too large alignment %d, max is %d (LEB size)\n", "_s:_error_:_too_high_volume_id__d__max._volumes_is__d", r3, r4, "libubigen")
0x00012944 mov r0, r4 | r0 = r4;
0x00012948 ldr r5, [r5] | r5 = "libubigen";
0x0001294c bl 0x10aa0 | strerror (r0);
0x00012950 str r4, [sp] | *(sp) = r4;
0x00012954 ldr r3, [pc, 0x1fc] | r3 = "_s:_error_:_cannot_allocate__d_bytes_of_memory";
0x00012958 mov r2, 0xb | r2 = 0xb;
0x0001295c ldr r1, [pc, 0x1f8] | r1 = *(0x12b58);
0x00012960 str r0, [sp, 4] | var_4h = r0;
0x00012964 mov r0, r5 | r0 = r5;
0x00012968 bl 0x10b48 | fprintf (r0, r1, r2, "_s:_error_:_cannot_allocate__d_bytes_of_memory", r4)
0x0001296c b 0x128e8 | goto label_0;
| }
0x00012970 ldr fp, [r4, 4] | fp = *((r4 + 4));
0x00012974 mov r0, fp | r0 = fp;
0x00012978 bl 0x10af4 | r0 = malloc (r0);
0x0001297c subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x00012980 bne 0x129d8 | goto label_5;
| }
0x00012984 bl 0x10c08 | errno_location ();
0x00012988 ldr r5, [pc, 0x1bc] |
0x0001298c mov r3, fp | r3 = fp;
0x00012990 ldr r2, [pc, 0x1b0] | r2 = "_s:_error_:_too_high_volume_id__d__max._volumes_is__d";
0x00012994 ldr r1, [pc, 0x1b8] | r1 = "%s: error!: too large alignment %d, max is %d (LEB size)\n";
0x00012998 ldr r4, [r0] | r4 = *(r0);
0x0001299c ldr r0, [r5] | r0 = "libubigen";
0x000129a0 bl 0x10b48 | fprintf ("libubigen", "%s: error!: too large alignment %d, max is %d (LEB size)\n", "_s:_error_:_too_high_volume_id__d__max._volumes_is__d", r3, r4, "libubigen")
0x000129a4 mov r0, r4 | r0 = r4;
0x000129a8 ldr r5, [r5] | r5 = "libubigen";
0x000129ac bl 0x10aa0 | strerror (r0);
0x000129b0 str r4, [sp] | *(sp) = r4;
0x000129b4 ldr r3, [pc, 0x19c] | r3 = "_s:_error_:_cannot_allocate__d_bytes_of_memory";
0x000129b8 mov r2, 0xb | r2 = 0xb;
0x000129bc ldr r1, [pc, 0x198] | r1 = *(0x12b58);
0x000129c0 str r0, [sp, 4] | var_4h = r0;
0x000129c4 mov r0, r5 | r0 = r5;
0x000129c8 bl 0x10b48 | fprintf (r0, r1, r2, "_s:_error_:_cannot_allocate__d_bytes_of_memory", r4)
| do {
0x000129cc mov r0, r7 | r0 = r7;
0x000129d0 bl 0x10c74 | free (r0);
0x000129d4 b 0x128e8 | goto label_0;
| label_5:
0x000129d8 ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x000129dc mov r1, 0xff | r1 = 0xff;
0x000129e0 bl 0x10bb4 | memset (r0, r1, r2);
0x000129e4 ldrd r2, r3, [sp, 8] | __asm ("ldrd r2, r3, [var_8h]");
0x000129e8 mov r1, r6 | r1 = r6;
0x000129ec mov r0, r4 | r0 = r4;
0x000129f0 bl 0x1240c | fcn_0001240c (r0, r1);
0x000129f4 mov fp, 0 |
| label_2:
0x000129f8 orrs r3, r8, sb | r3 = r8 | sb;
| if (r3 == r8) {
0x000129fc bne 0x12a1c |
0x00012a00 mov r0, r6 | r0 = r6;
0x00012a04 bl 0x10c74 | free (r0);
0x00012a08 mov r0, r7 | r0 = r7;
0x00012a0c bl 0x10c74 | free (r0);
0x00012a10 mov r0, 0 | r0 = 0;
| label_4:
0x00012a14 add sp, sp, 0x14 |
0x00012a18 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x00012a1c cmp r8, r5 |
0x00012a20 asr r3, r5, 0x1f | r3 = r5 >> 0x1f;
0x00012a24 sbcs r3, sb, r3 | __asm ("sbcs r3, sb, r3");
| if (r8 >= r5) {
0x00012a28 movlt r5, r8 | r5 = r8;
| }
0x00012a2c subs r8, r8, r5 | r8 -= r5;
0x00012a30 mov r2, r5 | r2 = r5;
0x00012a34 mov r1, r7 | r1 = r7;
0x00012a38 ldr r0, [sp, 0x40] | r0 = *(fildes);
0x00012a3c sbc sb, sb, r5, asr 31 | __asm ("sbc sb, sb, r5, asr 31");
0x00012a40 bl 0x10b6c | r0 = read (r0, r1, r2);
0x00012a44 cmp r5, r0 |
| if (r5 == r0) {
0x00012a48 beq 0x12aa0 | goto label_6;
| }
0x00012a4c bl 0x10c08 | errno_location ();
0x00012a50 ldr r8, [pc, 0xf4] | r8 = "libubigen";
0x00012a54 mov r3, r5 | r3 = r5;
0x00012a58 ldr r2, [pc, 0xe8] | r2 = "_s:_error_:_too_high_volume_id__d__max._volumes_is__d";
0x00012a5c ldr r1, [pc, 0xfc] | r1 = "_serror__d___s_";
0x00012a60 ldr r4, [r0] | r4 = *(r0);
0x00012a64 ldr r0, [r8] | r0 = "libubigen";
0x00012a68 bl 0x10b48 | fprintf ("libubigen", "_serror__d___s_", "_s:_error_:_too_high_volume_id__d__max._volumes_is__d", r3, r4)
0x00012a6c ldr r5, [r8] | r5 = "libubigen";
| label_1:
0x00012a70 mov r0, r4 | r0 = r4;
0x00012a74 bl 0x10aa0 | strerror (r0);
0x00012a78 str r4, [sp] | *(sp) = r4;
0x00012a7c ldr r3, [pc, 0xd4] | r3 = "_s:_error_:_cannot_allocate__d_bytes_of_memory";
0x00012a80 mov r2, 0xb | r2 = 0xb;
0x00012a84 ldr r1, [pc, 0xd0] | r1 = *(0x12b58);
0x00012a88 str r0, [sp, 4] | var_4h = r0;
0x00012a8c mov r0, r5 | r0 = r5;
0x00012a90 bl 0x10b48 | fprintf (r0, r1, r2, "_s:_error_:_cannot_allocate__d_bytes_of_memory", r4)
0x00012a94 mov r0, r6 | r0 = r6;
0x00012a98 bl 0x10c74 | free (r0);
0x00012a9c b 0x129cc |
| } while (1);
| label_6:
0x00012aa0 ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x00012aa4 mov r3, fp | r3 = fp;
0x00012aa8 add r2, r6, r2 | r2 = r6 + r2;
0x00012aac mov r1, sl | r1 = sl;
0x00012ab0 mov r0, r4 | r0 = r4;
0x00012ab4 str r5, [sp, 4] | var_4h = r5;
0x00012ab8 str r7, [sp] | *(sp) = r7;
0x00012abc bl 0x12664 | fcn_00012664 (r0, r1, r2, r3);
0x00012ac0 ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x00012ac4 mov r2, r5 | r2 = r5;
0x00012ac8 mov r1, r7 | r1 = r7;
0x00012acc add r0, r6, r0 | r0 = r6 + r0;
0x00012ad0 bl 0x10adc | memcpy (r0, r1, r2);
0x00012ad4 ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x00012ad8 ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x00012adc mov r1, 0xff | r1 = 0xff;
0x00012ae0 sub r2, r2, r0 | r2 -= r0;
0x00012ae4 add r0, r0, r5 | r0 += r5;
0x00012ae8 sub r2, r2, r5 | r2 -= r5;
0x00012aec add r0, r6, r0 | r0 = r6 + r0;
0x00012af0 bl 0x10bb4 | memset (r0, r1, r2);
0x00012af4 ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x00012af8 mov r1, r6 | r1 = r6;
0x00012afc ldr r0, [sp, 0x44] | r0 = *(fd);
0x00012b00 bl 0x10b3c | write (r0, r1, r2);
0x00012b04 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00012b08 cmp r0, r3 |
| if (r0 != r3) {
0x00012b0c beq 0x12b3c |
0x00012b10 str r3, [sp, 8] | var_8h = r3;
0x00012b14 bl 0x10c08 | errno_location ();
0x00012b18 ldr r5, [pc, 0x2c] |
0x00012b1c ldr r3, [sp, 8] | r3 = var_8h;
0x00012b20 ldr r2, [pc, 0x20] | r2 = "_s:_error_:_too_high_volume_id__d__max._volumes_is__d";
0x00012b24 ldr r1, [pc, 0x38] | r1 = "%s: error!: cannot read %d bytes from the input file\n";
0x00012b28 ldr r4, [r0] | r4 = *(r0);
0x00012b2c ldr r0, [r5] | r0 = "libubigen";
0x00012b30 bl 0x10b48 | fprintf ("libubigen", "%s: error!: cannot read %d bytes from the input file\n", "_s:_error_:_too_high_volume_id__d__max._volumes_is__d", r3, r4, "libubigen")
0x00012b34 ldr r5, [r5] | r5 = "libubigen";
0x00012b38 b 0x12a70 | goto label_1;
| }
0x00012b3c add fp, fp, 1 |
0x00012b40 b 0x129f8 | goto label_2;
| }
; 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 @ 0x12b68 */
| #include <stdint.h>
|
; (fcn) fcn.00012b68 () | void fcn_00012b68 (int32_t arg_70h, int32_t arg_78h, void * s2, int32_t fd, int32_t arg1, void * arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| int32_t var_28h;
| int32_t var_28h_2;
| int32_t var_38h;
| int32_t var_38h_2;
| int32_t var_4ch;
| r0 = arg1;
| r1 = arg2;
0x00012b68 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00012b6c mov fp, r1 |
0x00012b70 ldr r1, [r0] | r1 = *(r0);
0x00012b74 sub sp, sp, 0x4c |
0x00012b78 str r2, [sp, 0xc] | var_ch = r2;
0x00012b7c lsl r2, r1, 1 | r2 = r1 << 1;
0x00012b80 asr r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x00012b84 strd r2, r3, [sp, 0x38] | __asm ("strd r2, r3, [var_38h]");
0x00012b88 ldr r3, [pc, 0x25c] | r3 = *(0x12de8);
0x00012b8c mov r8, 0xd | r8 = 0xd;
0x00012b90 mov sb, 5 | sb = 5;
0x00012b94 strd r8, sb, [sp, 0x28] | __asm ("strd r8, sb, [var_28h]");
0x00012b98 ldr r8, [r0, 4] | r8 = *((r0 + 4));
0x00012b9c str r3, [sp, 0x10] | var_10h = r3;
0x00012ba0 ldr r3, [pc, 0x248] | r3 = *(0x12dec);
0x00012ba4 mov r7, 1 | r7 = 1;
0x00012ba8 mov r4, r0 | r4 = r0;
0x00012bac mov r5, 0 | r5 = 0;
0x00012bb0 mov r0, r8 | r0 = r8;
0x00012bb4 str r7, [sp, 0x18] | var_18h = r7;
0x00012bb8 str r5, [sp, 0x1c] | var_1ch = r5;
0x00012bbc str r1, [sp, 0x20] | var_20h = r1;
0x00012bc0 str r7, [sp, 0x14] | var_14h = r7;
0x00012bc4 str r3, [sp, 0x24] | var_24h = r3;
0x00012bc8 bl 0x10af4 | r0 = malloc (r0);
0x00012bcc subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x00012bd0 bne 0x12c24 | goto label_3;
| }
0x00012bd4 bl 0x10c08 | errno_location ();
0x00012bd8 ldr r5, [pc, 0x214] |
0x00012bdc mov r3, r8 | r3 = r8;
0x00012be0 ldr r2, [pc, 0x210] | r2 = stderr;
0x00012be4 ldr r1, [pc, 0x210] | r1 = "libubigen";
0x00012be8 ldr r4, [r0] | r4 = *(r0);
0x00012bec ldr r0, [r5] | r0 = "layout volume";
0x00012bf0 bl 0x10b48 | fprintf ("layout volume", "libubigen", r2, r3, r4, "layout volume")
0x00012bf4 mov r0, r4 | r0 = r4;
0x00012bf8 ldr r5, [r5] | r5 = "layout volume";
0x00012bfc bl 0x10aa0 | strerror (r0);
0x00012c00 str r4, [sp] | *(sp) = r4;
0x00012c04 ldr r3, [pc, 0x1f4] | r3 = "%s: error!: failed to allocate %d bytes\n";
0x00012c08 mov r2, 0xb | r2 = 0xb;
0x00012c0c ldr r1, [pc, 0x1f0] | r1 = *(0x12e00);
0x00012c10 str r0, [sp, 4] | var_4h = r0;
0x00012c14 mov r0, r5 | r0 = r5;
0x00012c18 bl 0x10b48 | fprintf (r0, r1, r2, "%s: error!: failed to allocate %d bytes\n", r4)
| do {
0x00012c1c mvn r0, 0 | r0 = ~0;
0x00012c20 b 0x12de4 | goto label_4;
| label_3:
0x00012c24 ldr r8, [r4, 0x10] | r8 = *((r4 + 0x10));
0x00012c28 mov r1, 0xff | r1 = 0xff;
0x00012c2c mov r2, r8 | r2 = r8;
0x00012c30 bl 0x10bb4 | memset (r0, r1, r2);
0x00012c34 ldr r2, [r4, 0x18] | r2 = *((r4 + 0x18));
0x00012c38 ldr r1, [sp, 0x80] | r1 = *(s2);
0x00012c3c add r0, r6, r8 | r0 = r6 + r8;
0x00012c40 ldr sl, [r4, 0xc] | sl = *((r4 + 0xc));
0x00012c44 bl 0x10adc | memcpy (r0, r1, r2);
0x00012c48 ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x00012c4c ldr r2, [r4, 0x18] | r2 = *((r4 + 0x18));
0x00012c50 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00012c54 mov r1, 0xff | r1 = 0xff;
0x00012c58 sub r3, r3, r0 | r3 -= r0;
0x00012c5c add r0, r0, r2 | r0 += r2;
0x00012c60 add r0, r6, r0 | r0 = r6 + r0;
0x00012c64 sub r2, r3, r2 | r2 = r3 - r2;
0x00012c68 bl 0x10bb4 | memset (r0, r1, r2);
0x00012c6c ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00012c70 ldr r0, [sp, 0x84] | r0 = *(fd);
0x00012c74 smull r8, sb, fp, r3 | r8:sb = fp * r3;
0x00012c78 str r5, [sp] | *(sp) = r5;
0x00012c7c mov r2, r8 | r2 = r8;
0x00012c80 mov r3, sb | r3 = sb;
0x00012c84 bl 0x10c2c | lseek64 ();
0x00012c88 add sl, r6, sl | sl = r6 + sl;
0x00012c8c cmp r1, sb |
0x00012c90 cmpeq r0, r8 | __asm ("cmpeq r0, r8");
| if (r1 == sb) {
0x00012c94 beq 0x12ce8 | goto label_5;
| }
| label_1:
0x00012c98 bl 0x10c08 | errno_location ();
0x00012c9c ldr r5, [pc, 0x150] | r5 = "layout volume";
0x00012ca0 ldr r2, [pc, 0x150] | r2 = stderr;
0x00012ca4 ldr r1, [pc, 0x15c] | r1 = "_serror__d___s_";
0x00012ca8 ldr r4, [r0] | r4 = *(r0);
0x00012cac ldr r0, [r5] | r0 = "layout volume";
0x00012cb0 bl 0x10b48 | fprintf ("layout volume", "_serror__d___s_", r2, r3, r4, "layout volume")
| label_0:
0x00012cb4 mov r0, r4 | r0 = r4;
0x00012cb8 ldr r5, [r5] | r5 = *(r5);
0x00012cbc bl 0x10aa0 | strerror (r0);
0x00012cc0 str r4, [sp] | *(sp) = r4;
0x00012cc4 ldr r3, [pc, 0x134] | r3 = "%s: error!: failed to allocate %d bytes\n";
0x00012cc8 mov r2, 0xb | r2 = 0xb;
0x00012ccc ldr r1, [pc, 0x130] | r1 = *(0x12e00);
0x00012cd0 str r0, [sp, 4] | var_4h = r0;
0x00012cd4 mov r0, r5 | r0 = r5;
0x00012cd8 bl 0x10b48 | fprintf (r0, r1, r2, "%s: error!: failed to allocate %d bytes\n", r4)
0x00012cdc mov r0, r6 | r0 = r6;
0x00012ce0 bl 0x10c74 | free (r0);
0x00012ce4 b 0x12c1c |
| } while (1);
| label_5:
0x00012ce8 ldrd r2, r3, [sp, 0x70] | __asm ("ldrd r2, r3, [arg_70h]");
0x00012cec mov r1, r6 | r1 = r6;
0x00012cf0 mov r0, r4 | r0 = r4;
0x00012cf4 bl 0x1240c | fcn_0001240c (r0, r1);
0x00012cf8 mov r3, r5 | r3 = r5;
0x00012cfc mov r2, sl | r2 = sl;
0x00012d00 add r1, sp, 0x10 | r1 += var_10h;
0x00012d04 mov r0, r4 | r0 = r4;
0x00012d08 str r5, [sp, 4] | var_4h = r5;
0x00012d0c str r5, [sp] | *(sp) = r5;
0x00012d10 bl 0x12664 | fcn_00012664 (r0, r1, r2, r3);
0x00012d14 ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x00012d18 mov r1, r6 | r1 = r6;
0x00012d1c ldr r0, [sp, 0x84] | r0 = *(fd);
0x00012d20 bl 0x10b3c | write (r0, r1, r2);
0x00012d24 ldr fp, [r4, 4] | fp = *((r4 + 4));
0x00012d28 cmp fp, r0 |
| if (fp != r0) {
0x00012d2c beq 0x12d54 |
0x00012d30 bl 0x10c08 | errno_location ();
0x00012d34 ldr r5, [pc, 0xb8] | r5 = "layout volume";
0x00012d38 mov r3, fp | r3 = fp;
0x00012d3c ldr r4, [r0] | r4 = *(r0);
| label_2:
0x00012d40 ldr r2, [pc, 0xb0] | r2 = stderr;
0x00012d44 ldr r1, [pc, 0xc0] | r1 = "_s:_error_:_cannot_seek_output_file";
0x00012d48 ldr r0, [r5] | r0 = *(r5);
0x00012d4c bl 0x10b48 | fprintf (r0, "_s:_error_:_cannot_seek_output_file", r2, r3, r4, "layout volume")
0x00012d50 b 0x12cb4 | goto label_0;
| }
0x00012d54 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00012d58 str r5, [sp] | *(sp) = r5;
0x00012d5c smull r8, sb, r3, fp | r8:sb = r3 * fp;
0x00012d60 ldr r0, [sp, 0x84] | r0 = *(fd);
0x00012d64 mov r2, r8 | r2 = r8;
0x00012d68 mov r3, sb | r3 = sb;
0x00012d6c bl 0x10c2c | lseek64 ();
0x00012d70 cmp r1, sb |
0x00012d74 cmpeq r0, r8 | __asm ("cmpeq r0, r8");
| if (r1 != sb) {
0x00012d78 bne 0x12c98 | goto label_1;
| }
0x00012d7c ldrd r2, r3, [sp, 0x78] | __asm ("ldrd r2, r3, [arg_78h]");
0x00012d80 mov r1, r6 | r1 = r6;
0x00012d84 mov r0, r4 | r0 = r4;
0x00012d88 bl 0x1240c | fcn_0001240c (r0, r1);
0x00012d8c mov r3, r7 | r3 = r7;
0x00012d90 mov r2, sl | r2 = sl;
0x00012d94 add r1, sp, 0x10 | r1 += var_10h;
0x00012d98 mov r0, r4 | r0 = r4;
0x00012d9c str r5, [sp, 4] | var_4h = r5;
0x00012da0 str r5, [sp] | *(sp) = r5;
0x00012da4 bl 0x12664 | fcn_00012664 (r0, r1, r2, r3);
0x00012da8 ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x00012dac mov r1, r6 | r1 = r6;
0x00012db0 ldr r0, [sp, 0x84] | r0 = *(fd);
0x00012db4 bl 0x10b3c | write (r0, r1, r2);
0x00012db8 ldr r7, [r4, 4] | r7 = *((r4 + 4));
0x00012dbc cmp r7, r0 |
| if (r7 != r0) {
0x00012dc0 beq 0x12dd8 |
0x00012dc4 bl 0x10c08 | errno_location ();
0x00012dc8 ldr r5, [pc, 0x24] | r5 = "layout volume";
0x00012dcc mov r3, r7 | r3 = r7;
0x00012dd0 ldr r4, [r0] | r4 = *(r0);
0x00012dd4 b 0x12d40 | goto label_2;
| }
0x00012dd8 mov r0, r6 | r0 = r6;
0x00012ddc bl 0x10c74 | free (r0);
0x00012de0 mov r0, r5 | r0 = r5;
| label_4:
0x00012de4 add sp, sp, 0x4c |
0x00012de8 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 @ 0x12e10 */
| #include <stdint.h>
|
; (fcn) fcn.00012e10 () | void fcn_00012e10 (int32_t arg1) {
| char * * endptr;
| int32_t var_ch;
| r0 = arg1;
0x00012e10 push {r0, r1, r2, r4, r5, r6, r7, lr} |
0x00012e14 mov r2, 0 | r2 = 0;
0x00012e18 add r1, sp, 4 | r1 += endptr;
0x00012e1c mov r7, r0 | r7 = r0;
0x00012e20 bl 0x10b9c | strtoull (r0, r1, r2);
0x00012e24 ldr r6, [sp, 4] | r6 = endptr;
0x00012e28 sub r3, r6, r7 | r3 = r6 - r7;
0x00012e2c clz r3, r3 | r3 &= r3;
0x00012e30 lsr r3, r3, 5 | r3 >>= 5;
0x00012e34 orrs r3, r3, r1, lsr 31 | r3 |= (r1 >> 31);
| if (r3 == r3) {
0x00012e38 movne r2, r7 | r2 = r7;
| }
| if (r3 == r3) {
0x00012e3c ldrne r1, [pc, 0xc0] | r1 = "incorrect_amount_of_bytes:___s_";
| }
| if (r3 != r3) {
0x00012e40 bne 0x12eb8 | goto label_1;
| }
0x00012e44 ldrb r3, [r6] | r3 = *(r6);
0x00012e48 mov r4, r0 | r4 = r0;
0x00012e4c cmp r3, 0 |
0x00012e50 mov r5, r1 | r5 = r1;
| if (r3 == 0) {
0x00012e54 beq 0x12ecc | goto label_2;
| }
0x00012e58 mov r3, r6 | r3 = r6;
| do {
0x00012e5c mov r7, r3 | r7 = r3;
0x00012e60 ldrb r2, [r3], 1 | r2 = *(r3);
| r3++;
0x00012e64 cmp r2, 9 |
0x00012e68 cmpne r2, 0x20 | __asm ("cmpne r2, 0x20");
0x00012e6c beq 0x12e5c |
| } while (r2 == 9);
0x00012e70 ldr r1, [pc, 0x90] | r1 = "incorrect_amount_of_bytes:___s_";
0x00012e74 mov r0, r7 | r0 = r7;
0x00012e78 bl 0x10be4 | r0 = strcmp (r0, "incorrect_amount_of_bytes:___s_");
0x00012e7c cmp r0, 0 |
| if (r0 == 0) {
0x00012e80 beq 0x12edc | goto label_3;
| }
0x00012e84 ldr r1, [pc, 0x80] | r1 = "KiB";
0x00012e88 mov r0, r7 | r0 = r7;
0x00012e8c bl 0x10be4 | r0 = strcmp (r0, "KiB");
0x00012e90 cmp r0, 0 |
| if (r0 == 0) {
0x00012e94 beq 0x12efc | goto label_4;
| }
0x00012e98 ldr r1, [pc, 0x70] | r1 = "MiB";
0x00012e9c mov r0, r7 | r0 = r7;
0x00012ea0 bl 0x10be4 | r0 = strcmp (r0, "MiB");
0x00012ea4 cmp r0, 0 |
| if (r0 != 0) {
0x00012ea8 moveq r3, 0x40000000 | r3 = 0x40000000;
| }
| if (r0 == 0) {
0x00012eac beq 0x12ee0 | goto label_0;
| }
0x00012eb0 ldr r1, [pc, 0x5c] | r1 = "GiB";
0x00012eb4 mov r2, r6 | r2 = r6;
| label_1:
0x00012eb8 ldr r3, [pc, 0x58] | r3 = "bad size specifier: \"%s\" - should be 'KiB', 'MiB' or 'GiB'\n";
0x00012ebc mvn r4, 0 | r4 = ~0;
0x00012ec0 ldr r0, [r3] | r0 = "bad size specifier: \"%s\" - should be 'KiB', 'MiB' or 'GiB'\n";
0x00012ec4 bl 0x10b48 | fprintf ("bad size specifier: \"%s\" - should be 'KiB', 'MiB' or 'GiB'\n", "GiB", r2, "bad size specifier: \"%s\" - should be 'KiB', 'MiB' or 'GiB'\n", r4)
0x00012ec8 mvn r5, 0 | r5 = ~0;
| do {
| label_2:
0x00012ecc mov r0, r4 | r0 = r4;
0x00012ed0 mov r1, r5 | r1 = r5;
0x00012ed4 add sp, sp, 0xc |
0x00012ed8 pop {r4, r5, r6, r7, pc} |
| label_3:
0x00012edc mov r3, 0x400 | r3 = 0x400;
| label_0:
0x00012ee0 asr r1, r3, 0x1f | r1 = r3 >> 0x1f;
0x00012ee4 mul ip, r4, r1 |
0x00012ee8 mov r1, r4 | r1 = r4;
0x00012eec mla r2, r3, r5, ip | __asm ("mla r2, r3, r5, ip");
0x00012ef0 umull r4, r5, r1, r3 | r4:r5 = r1 * r3;
0x00012ef4 add r5, r2, r5 | r5 = r2 + r5;
0x00012ef8 b 0x12ecc |
| } while (1);
| label_4:
0x00012efc mov r3, 0x100000 | r3 = 0x100000;
0x00012f00 b 0x12ee0 | goto label_0;
| }
; 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 @ 0x135b4 */
| #include <stdint.h>
|
; (fcn) fcn.000135b4 () | void fcn_000135b4 (FILE * stream, int32_t arg1) {
| char * src;
| char * var_400h;
| char * var_4h;
| char * var_800h;
| char * var_8h;
| int32_t var_810h;
| int32_t var_8h_2;
| char * var_c00h;
| char * var_ch;
| char * var_1000h;
| char * s1;
| char * s;
| char * dest;
| int32_t var_1800h;
| int32_t var_18h;
| int32_t var_1ch;
| r0 = arg1;
0x000135b4 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000135b8 ldr r1, [pc, 0x480] | r1 = *(0x13a3c);
0x000135bc sub sp, sp, 0x1800 |
0x000135c0 sub sp, sp, 0x1c |
0x000135c4 mov r8, r0 | r8 = r0;
0x000135c8 bl 0x10c80 | r0 = fopen64 ();
0x000135cc subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x000135d0 bne 0x135fc | goto label_8;
| }
0x000135d4 ldr r3, [pc, 0x468] | r3 = *(0x13a40);
0x000135d8 mov r2, r8 | r2 = r8;
0x000135dc ldr r1, [pc, 0x464] | r1 = stderr;
0x000135e0 ldr r0, [r3] | r0 = *(0x13a40);
0x000135e4 bl 0x10b48 | fprintf (r0, r1, r2, r3)
| label_2:
0x000135e8 mov r5, 0 | r5 = 0;
| do {
0x000135ec mov r0, r5 | r0 = r5;
0x000135f0 add sp, sp, 0x1800 |
0x000135f4 add sp, sp, 0x1c |
0x000135f8 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_8:
0x000135fc mov r0, 0 | r0 = 0;
0x00013600 bl 0x13b3c | r0 = fcn_00013b3c (r0);
0x00013604 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x00013608 bne 0x13618 | goto label_9;
| }
| label_0:
0x0001360c mov r0, r6 | r0 = r6;
0x00013610 bl 0x10bcc | fclose (r0);
0x00013614 b 0x135ec |
| } while (1);
| label_9:
0x00013618 mov r2, 0x400 | r2 = 0x400;
0x0001361c mov r1, 0 | r1 = 0;
0x00013620 mov r0, sp | r0 = sp;
0x00013624 bl 0x10bb4 | memset (r0, r1, r2);
0x00013628 add r0, sp, 0x400 | r0 += var_400h;
0x0001362c mov r2, 0x400 | r2 = 0x400;
0x00013630 mov r1, 0 | r1 = 0;
0x00013634 add r0, r0, 4 | r0 += var_4h;
0x00013638 bl 0x10bb4 | memset (r0, r1, r2);
0x0001363c add r0, sp, 0x800 | r0 += var_800h;
0x00013640 mov r2, 0x400 | r2 = 0x400;
0x00013644 mov r1, 0 | r1 = 0;
0x00013648 add r0, r0, 8 | r0 += var_8h;
0x0001364c bl 0x10bb4 | memset (r0, r1, r2);
0x00013650 ldr sl, [pc, 0x3f4] | sl = obj.__ctype_b;
0x00013654 add r0, sp, 0x1000 | r0 += var_1000h;
0x00013658 mov r4, 0 | r4 = 0;
0x0001365c mov r2, 0x400 | r2 = 0x400;
0x00013660 mov r1, 0 | r1 = 0;
0x00013664 add r0, r0, 0x10 | r0 += s1;
0x00013668 bl 0x10bb4 | memset (r0, r1, r2);
0x0001366c mov r7, r4 | r7 = r4;
0x00013670 mov r0, r4 | r0 = r4;
0x00013674 mov sb, r4 | sb = r4;
| label_1:
0x00013678 rsb r1, r0, 0x400 | r1 = 0x400 - r0;
0x0001367c mov r2, r6 | r2 = r6;
0x00013680 add r0, sp, r0 | r0 = sp + r0;
0x00013684 bl 0x10ad0 | r0 = fgets (r0, r1, r2);
0x00013688 cmp r0, 0 |
| if (r0 != 0) {
0x0001368c bne 0x1369c | goto label_10;
| }
0x00013690 cmp r4, 0 |
| if (r4 == 0) {
0x00013694 beq 0x1360c | goto label_0;
| }
0x00013698 b 0x13a28 | goto label_11;
| label_10:
0x0001369c mov r0, sp | r0 = sp;
0x000136a0 bl 0x10c20 | strlen (r0);
0x000136a4 add r3, sp, 0x810 | r3 += var_810h;
0x000136a8 add r3, r3, 8 | r3 += var_8h_2;
0x000136ac add r7, r7, 1 | r7++;
0x000136b0 sub r0, r0, 1 | r0--;
0x000136b4 add r3, r3, r0 | r3 += r0;
0x000136b8 ldrb r3, [r3, -0x818] | r3 = *((r3 - 0x818));
0x000136bc cmp r3, 0xa |
| if (r3 != 0xa) {
0x000136c0 bne 0x137d0 | goto label_12;
| }
0x000136c4 ldr r2, [sl] | r2 = *(sl);
| label_3:
0x000136c8 cmn r0, 1 |
| if (r0 != 1) {
0x000136cc beq 0x136ec |
0x000136d0 ldrb r3, [sp, r0] | r3 = *((sp + r0));
0x000136d4 cmp r3, 0xa |
| if (r3 == 0xa) {
0x000136d8 beq 0x137fc | goto label_13;
| }
0x000136dc lsl r3, r3, 1 | r3 <<= 1;
0x000136e0 ldrh r3, [r2, r3] | r3 = *((r2 + r3));
0x000136e4 tst r3, 0x20 |
| if ((r3 & 0x20) != 0) {
0x000136e8 bne 0x137fc | goto label_13;
| }
| }
0x000136ec add r3, sp, 0x810 | r3 += var_810h;
0x000136f0 add r3, r3, 8 | r3 += var_8h_2;
0x000136f4 add r3, r3, r0 | r3 += r0;
0x000136f8 ldrb r3, [r3, -0x818] | r3 = *((r3 - 0x818));
0x000136fc cmp r3, 0x5c |
| if (r3 == 0x5c) {
0x00013700 beq 0x13678 | goto label_1;
| }
0x00013704 mov r0, sp | r0 = sp;
0x00013708 bl 0x13160 | r0 = fcn_00013160 (r0);
0x0001370c mov r1, r0 | r1 = r0;
0x00013710 add r0, sp, 0x1400 | r0 += s;
0x00013714 add r0, r0, 0x14 | r0 += dest;
0x00013718 bl 0x10a88 | strcpy (r0, r1);
0x0001371c add r0, sp, 0x1400 | r0 += s;
0x00013720 add r0, r0, 0x14 | r0 += dest;
0x00013724 bl 0x10c20 | r0 = strlen (r0);
0x00013728 cmp r0, 0 |
| if (r0 == 0) {
0x0001372c beq 0x13a00 | goto label_14;
| }
0x00013730 add r3, sp, 0x1400 | r3 += s;
0x00013734 add r3, r3, 0x14 | r3 += dest;
0x00013738 ldrb r3, [r3] | r3 = *(r3);
0x0001373c cmp r3, 0x23 |
| if (r3 == 0x23) {
0x00013740 beq 0x13a00 | goto label_14;
| }
0x00013744 cmp r3, 0x5b |
| if (r3 == 0x5b) {
0x00013748 bne 0x13808 |
0x0001374c add r3, sp, 0x1800 | r3 += var_1800h;
0x00013750 add r3, r3, 0x18 | r3 += var_18h;
0x00013754 add r0, r3, r0 | r0 = r3 + r0;
0x00013758 ldrb r3, [r0, -0x405] | r3 = *((r0 - 0x405));
0x0001375c cmp r3, 0x5d |
| if (r3 != 0x5d) {
0x00013760 bne 0x13808 | goto label_15;
| }
0x00013764 add r2, sp, 0x400 | r2 += var_400h;
0x00013768 add r0, sp, 0x1400 | r0 += s;
0x0001376c add r2, r2, 4 | r2 += var_4h;
0x00013770 ldr r1, [pc, 0x2d8] | r1 = __ctype_b;
0x00013774 add r0, r0, 0x14 | r0 += dest;
0x00013778 bl 0x10b84 | sscanf (r0, r1, r2);
0x0001377c add r0, sp, 0x400 | r0 += var_400h;
0x00013780 add r0, r0, 4 | r0 += var_4h;
0x00013784 bl 0x13160 | r0 = fcn_00013160 (r0);
0x00013788 mov r1, r0 | r1 = r0;
0x0001378c add r0, sp, 0x400 | r0 += var_400h;
0x00013790 add r0, r0, 4 | r0 += var_4h;
0x00013794 bl 0x10a88 | strcpy (r0, r1);
0x00013798 add r0, sp, 0x400 | r0 += var_400h;
0x0001379c add r0, r0, 4 | r0 += var_4h;
0x000137a0 bl 0x130fc | r0 = fcn_000130fc (r0);
0x000137a4 mov r1, r0 | r1 = r0;
0x000137a8 add r0, sp, 0x400 | r0 += var_400h;
0x000137ac add r0, r0, 4 | r0 += var_4h;
0x000137b0 bl 0x10a88 | strcpy (r0, r1);
0x000137b4 add r1, sp, 0x400 | r1 += var_400h;
0x000137b8 mov r2, 0 | r2 = 0;
0x000137bc add r1, r1, 4 | r1 += var_4h;
| label_6:
0x000137c0 mov r0, r5 | r0 = r5;
0x000137c4 bl 0x13c88 | r0 = fcn_00013c88 (r0, r1);
0x000137c8 mov r4, r0 | r4 = r0;
0x000137cc b 0x13a00 | goto label_14;
| label_12:
0x000137d0 ldr r0, [pc, 0x26c] |
0x000137d4 mov r3, r7 | r3 = r7;
0x000137d8 mov r2, r8 | r2 = r8;
0x000137dc ldr r1, [pc, 0x270] | r1 = "[%[^]]";
0x000137e0 ldr r0, [r0] | r0 = *(0x13a40);
0x000137e4 bl 0x10b48 | fprintf (r0, "[%[^]]", r2, r3)
0x000137e8 mov r0, r5 | r0 = r5;
0x000137ec bl 0x13b9c | fcn_00013b9c (r0);
0x000137f0 mov r0, r6 | r0 = r6;
0x000137f4 bl 0x10bcc | fclose (r0);
0x000137f8 b 0x135e8 | goto label_2;
| label_13:
0x000137fc strb sb, [sp, r0] | *((sp + r0)) = sb;
0x00013800 sub r0, r0, 1 | r0--;
0x00013804 b 0x136c8 | goto label_3;
| }
| label_15:
0x00013808 add r3, sp, 0x1000 | r3 += var_1000h;
0x0001380c add r2, sp, 0x800 | r2 += var_800h;
0x00013810 add r0, sp, 0x1400 | r0 += s;
0x00013814 add r3, r3, 0x10 | r3 += s1;
0x00013818 add r2, r2, 8 | r2 += var_8h;
0x0001381c ldr r1, [pc, 0x234] | r1 = "iniparser:_input_line_too_long_in__s___d_";
0x00013820 add r0, r0, 0x14 | r0 += dest;
0x00013824 bl 0x10b84 | r0 = sscanf (r0, "iniparser:_input_line_too_long_in__s___d_", r2);
0x00013828 cmp r0, 2 |
0x0001382c bne 0x138ac |
| while (r0 == 2) {
| label_4:
0x00013830 add r0, sp, 0x800 | r0 += var_800h;
0x00013834 add r0, r0, 8 | r0 += var_8h;
0x00013838 bl 0x13160 | r0 = fcn_00013160 (r0);
0x0001383c mov r1, r0 | r1 = r0;
0x00013840 add r0, sp, 0x800 | r0 += var_800h;
0x00013844 add r0, r0, 8 | r0 += var_8h;
0x00013848 bl 0x10a88 | strcpy (r0, r1);
0x0001384c add r0, sp, 0x800 | r0 += var_800h;
0x00013850 add r0, r0, 8 | r0 += var_8h;
0x00013854 bl 0x130fc | r0 = fcn_000130fc (r0);
0x00013858 mov r1, r0 | r1 = r0;
0x0001385c add r0, sp, 0x800 | r0 += var_800h;
0x00013860 add r0, r0, 8 | r0 += var_8h;
0x00013864 bl 0x10a88 | strcpy (r0, r1);
0x00013868 add r0, sp, 0x1000 | r0 += var_1000h;
0x0001386c add r0, r0, 0x10 | r0 += s1;
0x00013870 bl 0x13160 | r0 = fcn_00013160 (r0);
0x00013874 mov r1, r0 | r1 = r0;
0x00013878 add r0, sp, 0x1000 | r0 += var_1000h;
0x0001387c add r0, r0, 0x10 | r0 += s1;
0x00013880 bl 0x10a88 | strcpy (r0, r1);
0x00013884 add r0, sp, 0x1000 | r0 += var_1000h;
0x00013888 ldr r1, [pc, 0x1cc] | r1 = "___________";
0x0001388c add r0, r0, 0x10 | r0 += s1;
0x00013890 bl 0x10be4 | r0 = strcmp (r0, "___________");
0x00013894 cmp r0, 0 |
| if (r0 != 0) {
0x00013898 bne 0x13960 | goto label_16;
| }
| label_5:
0x0001389c add r3, sp, 0x1000 | r3 += var_1000h;
0x000138a0 add r3, r3, 0x10 | r3 += s1;
0x000138a4 strb sb, [r3] | *(r3) = sb;
0x000138a8 b 0x13978 | goto label_17;
0x000138ac add r3, sp, 0x1000 | r3 += var_1000h;
0x000138b0 add r2, sp, 0x800 | r2 += var_800h;
0x000138b4 add r0, sp, 0x1400 | r0 += s;
0x000138b8 add r3, r3, 0x10 | r3 += s1;
0x000138bc add r2, r2, 8 | r2 += var_8h;
0x000138c0 ldr r1, [pc, 0x198] | r1 = "__";
0x000138c4 add r0, r0, 0x14 | r0 += dest;
0x000138c8 bl 0x10b84 | r0 = sscanf (r0, "__", r2);
0x000138cc cmp r0, 2 |
0x000138d0 beq 0x13830 |
| }
0x000138d4 add r3, sp, 0x1000 | r3 += var_1000h;
0x000138d8 add r2, sp, 0x800 | r2 += var_800h;
0x000138dc add r0, sp, 0x1400 | r0 += s;
0x000138e0 add r3, r3, 0x10 | r3 += s1;
0x000138e4 add r2, r2, 8 | r2 += var_8h;
0x000138e8 ldr r1, [pc, 0x174] | r1 = "%[^=] = '%[^']';
0x000138ec add r0, r0, 0x14 | r0 += dest;
0x000138f0 bl 0x10b84 | r0 = sscanf (r0, "%[^=] = '%[^']', r2);
0x000138f4 cmp r0, 2 |
| if (r0 == 2) {
0x000138f8 beq 0x13830 | goto label_4;
| }
0x000138fc add r3, sp, 0x1000 | r3 += var_1000h;
0x00013900 add r2, sp, 0x800 | r2 += var_800h;
0x00013904 add r0, sp, 0x1400 | r0 += s;
0x00013908 add r3, r3, 0x10 | r3 += s1;
0x0001390c add r2, r2, 8 | r2 += var_8h;
0x00013910 ldr r1, [pc, 0x150] | r1 = "%[^=] = %[^;#]";
0x00013914 add r0, r0, 0x14 | r0 += dest;
0x00013918 bl 0x10b84 | r0 = sscanf (r0, "%[^=] = %[^;#]", r2);
0x0001391c cmp r0, 2 |
| if (r0 != 2) {
0x00013920 bne 0x139ac | goto label_18;
| }
| label_7:
0x00013924 add r0, sp, 0x800 | r0 += var_800h;
0x00013928 add r0, r0, 8 | r0 += var_8h;
0x0001392c bl 0x13160 | r0 = fcn_00013160 (r0);
0x00013930 mov r1, r0 | r1 = r0;
0x00013934 add r0, sp, 0x800 | r0 += var_800h;
0x00013938 add r0, r0, 8 | r0 += var_8h;
0x0001393c bl 0x10a88 | strcpy (r0, r1);
0x00013940 add r0, sp, 0x800 | r0 += var_800h;
0x00013944 add r0, r0, 8 | r0 += var_8h;
0x00013948 bl 0x130fc | r0 = fcn_000130fc (r0);
0x0001394c mov r1, r0 | r1 = r0;
0x00013950 add r0, sp, 0x800 | r0 += var_800h;
0x00013954 add r0, r0, 8 | r0 += var_8h;
0x00013958 bl 0x10a88 | strcpy (r0, r1);
0x0001395c b 0x1389c | goto label_5;
| label_16:
0x00013960 add r0, sp, 0x1000 | r0 += var_1000h;
0x00013964 ldr r1, [pc, 0x100] | r1 = "%[^=] = %[;#]";
0x00013968 add r0, r0, 0x10 | r0 += s1;
0x0001396c bl 0x10be4 | r0 = strcmp (r0, "%[^=] = %[;#]");
0x00013970 cmp r0, 0 |
| if (r0 == 0) {
0x00013974 beq 0x1389c | goto label_5;
| }
| label_17:
0x00013978 add r3, sp, 0x800 | r3 += var_800h;
0x0001397c add r2, sp, 0x400 | r2 += var_400h;
0x00013980 add r0, sp, 0xc00 | r0 += var_c00h;
0x00013984 add r2, r2, 4 | r2 += var_4h;
0x00013988 ldr r1, [pc, 0xe0] | r1 = "_";
0x0001398c add r3, r3, 8 | r3 += var_8h;
0x00013990 add r0, r0, 0xc | r0 += var_ch;
0x00013994 bl 0x10bf0 | sprintf (r0, "_", r2);
0x00013998 add r2, sp, 0x1000 | r2 += var_1000h;
0x0001399c add r1, sp, 0xc00 | r1 += var_c00h;
0x000139a0 add r2, r2, 0x10 | r2 += s1;
0x000139a4 add r1, r1, 0xc | r1 += var_ch;
0x000139a8 b 0x137c0 | goto label_6;
| label_18:
0x000139ac add r3, sp, 0x1000 | r3 += var_1000h;
0x000139b0 add r2, sp, 0x800 | r2 += var_800h;
0x000139b4 add r0, sp, 0x1400 | r0 += s;
0x000139b8 add r3, r3, 0x10 | r3 += s1;
0x000139bc add r2, r2, 8 | r2 += var_8h;
0x000139c0 ldr r1, [pc, 0xac] | r1 = "_s:_s";
0x000139c4 add r0, r0, 0x14 | r0 += dest;
0x000139c8 bl 0x10b84 | r0 = sscanf (r0, "_s:_s", r2);
0x000139cc cmp r0, 2 |
| if (r0 == 2) {
0x000139d0 beq 0x13924 | goto label_7;
| }
0x000139d4 ldr fp, [pc, 0x68] | fp = obj.stderr;
0x000139d8 mov r3, r7 | r3 = r7;
0x000139dc mov r2, r8 | r2 = r8;
0x000139e0 ldr r1, [pc, 0x90] | r1 = "%[^=] %[=]";
0x000139e4 ldr r0, [fp] | r0 = *(fp);
0x000139e8 bl 0x10b48 | fprintf (r0, "%[^=] %[=]", r2, r3)
0x000139ec mov r2, sp | r2 = sp;
0x000139f0 ldr r1, [pc, 0x84] | r1 = "iniparser:_syntax_error_in__s___d_:";
0x000139f4 ldr r0, [fp] | r0 = *(fp);
0x000139f8 bl 0x10b48 | fprintf (r0, "iniparser:_syntax_error_in__s___d_:", r2)
0x000139fc add r4, r4, 1 | r4++;
| label_14:
0x00013a00 mov r2, 0x400 | r2 = 0x400;
0x00013a04 mov r1, 0 | r1 = 0;
0x00013a08 mov r0, sp | r0 = sp;
0x00013a0c bl 0x10bb4 | memset (r0, r1, r2);
0x00013a10 cmp r4, 0 |
| if (r4 < 0) {
0x00013a14 bge 0x13a38 |
0x00013a18 ldr r3, [pc, 0x24] | r3 = *(0x13a40);
0x00013a1c ldr r0, [pc, 0x5c] | r0 = "-> %s\n";
0x00013a20 ldr r1, [r3] | r1 = *(0x13a40);
0x00013a24 bl 0x10c44 | fputs ("-> %s\n", r1);
| label_11:
0x00013a28 mov r0, r5 | r0 = r5;
0x00013a2c bl 0x13b9c | fcn_00013b9c (r0);
0x00013a30 mov r5, 0 | r5 = 0;
0x00013a34 b 0x1360c | goto label_0;
| }
0x00013a38 mov r0, 0 | r0 = 0;
0x00013a3c b 0x13678 | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/sbin/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 fprintf used 42 times ubinize