[*] Binary protection state of libblkid.so.1.1.0
Partial RELRO No Canary found NX disabled DSO No RPATH No RUNPATH No Symbols
[*] Function sprintf tear down of libblkid.so.1.1.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/lib/libblkid.so.1.1.0 @ 0x8388 */
| #include <stdint.h>
|
; (fcn) fcn.00008388 () | void fcn_00008388 (int32_t arg_0h, int32_t arg_10h, int32_t arg_18h, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_14h;
| FILE * var_18h;
| FILE * stream;
| char * var_20h;
| FILE * var_24h;
| char * s2;
| char * format;
| int32_t var_30h;
| int32_t var_ch;
| int32_t var_38h;
| int32_t var_40h;
| int32_t var_44h;
| int32_t var_48h;
| int32_t var_4ch;
| char * s;
| int32_t var_b8h;
| int32_t var_13ch;
| char * var_1c0h;
| int32_t var_1d0h;
| int32_t var_20h_2;
| int32_t var_24h_2;
| int32_t var_5c0h;
| int32_t var_4h_2;
| r0 = arg1;
| r1 = arg2;
0x00008388 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000838c ldr sb, [pc, 0xb3c] | sb = *(0x00008ed0);
0x00008390 sub sp, sp, 0x5c0 |
0x00008394 sub sp, sp, 4 |
0x00008398 add r3, sp, 0xb8 | r3 += var_b8h;
0x0000839c mov r4, 0 | r4 = 0;
0x000083a0 str r3, [sp, 0x40] | var_40h = r3;
0x000083a4 subs fp, r0, 0 |
0x000083a8 add r3, sp, 0x13c | r3 += var_13ch;
0x000083ac add sb, pc, sb | sb = pc + sb;
0x000083b0 str r4, [sp, 0x48] | var_48h = r4;
0x000083b4 str r4, [sp, 0x4c] | var_4ch = r4;
0x000083b8 str r3, [sp, 0x44] | var_44h = r3;
| if (fp != arg_0h) {
0x000083bc mvneq r0, 0x15 | r0 = ~0x15;
| }
| if (fp == arg_0h) {
0x000083c0 beq 0x854c | goto label_4;
| }
0x000083c4 ldr r3, [fp, 0x18] | r3 = *(arg_18h);
0x000083c8 str r1, [sp, 0x14] | var_14h = r1;
0x000083cc tst r3, 2 |
| if ((r3 & 2) != 0) {
0x000083d0 bne 0x8530 | goto label_9;
| }
| label_1:
0x000083d4 mov r0, fp | r0 = fp;
0x000083d8 bl 0xe460 | fcn_0000e460 (r0);
0x000083dc ldr r1, [pc, 0xaf0] | r1 = *(0x8ed0);
0x000083e0 ldr r0, [pc, 0xaf0] | r0 = *(0x8ed4);
0x000083e4 add r1, pc, r1 | r1 = pc + r1;
0x000083e8 add r0, pc, r0 | r0 = pc + r0;
0x000083ec bl 0x6238 | r0 = fopen64 ();
0x000083f0 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 == r0) {
0x000083f4 addne r7, sp, 0x40 | r7 += var_40h;
| }
| if (r5 == r0) {
0x000083f8 subne r8, r7, 0xc | r8 -= var_ch;
| }
| if (r5 != r0) {
0x000083fc bne 0x8618 | goto label_10;
| }
| label_2:
0x00008400 ldr r4, [pc, 0xad4] | r4 = *(0x8ed8);
0x00008404 add r4, pc, r4 | r4 = pc + r4;
0x00008408 mov r0, r4 | r0 = r4;
0x0000840c bl 0x5ec0 | r0 = opendir ();
0x00008410 subs r3, r0, 0 | r3 = r0 - 0;
0x00008414 str r3, [sp, 0x20] | var_20h = r3;
| if (r3 == r0) {
0x00008418 beq 0x86b4 | goto label_11;
| }
0x0000841c ldr r3, [pc, 0xabc] | r3 = *(0x8edc);
0x00008420 ldr r8, [sb, r3] | r8 = *((sb + r3));
0x00008424 ldr r3, [r8] | r3 = *(r8);
0x00008428 tst r3, 0x20 |
| if ((r3 & 0x20) != 0) {
0x0000842c beq 0x8478 |
0x00008430 ldr r3, [pc, 0xaac] | r3 = *(0x8ee0);
0x00008434 ldr r3, [sb, r3] | r3 = *((sb + r3));
0x00008438 ldr r5, [r3] | r5 = *(0x8ee0);
0x0000843c bl 0x58fc | getpid ();
0x00008440 ldr r3, [pc, 0xaa0] | r3 = *(0x8ee4);
0x00008444 ldr r1, [pc, 0xaa0] | r1 = *(0x8ee8);
0x00008448 add r3, pc, r3 | r3 = pc + r3;
0x0000844c str r3, [sp] | *(sp) = r3;
0x00008450 ldr r3, [pc, 0xa98] | r3 = *(0x8eec);
0x00008454 add r1, pc, r1 | r1 = pc + r1;
0x00008458 add r3, pc, r3 | r3 = pc + r3;
0x0000845c mov r2, r0 | r2 = r0;
0x00008460 mov r0, r5 | r0 = r5;
0x00008464 bl 0x5c50 | fprintf (r0, r1, r2, r3);
0x00008468 ldr r0, [pc, 0xa84] | r0 = *(0x8ef0);
0x0000846c mov r1, r4 | r1 = r4;
0x00008470 add r0, pc, r0 | r0 = pc + r0;
0x00008474 bl 0x7b24 | fcn_00007b24 ();
| }
0x00008478 add r3, sp, 0x38 | r3 += var_38h;
0x0000847c str r3, [sp, 0x24] | var_24h = r3;
| do {
| label_0:
0x00008480 ldr r0, [sp, 0x20] | r0 = var_20h;
0x00008484 bl 0x5dac | r0 = readdir64 ();
0x00008488 cmp r0, 0 |
| if (r0 == 0) {
0x0000848c beq 0x86ac | goto label_12;
| }
0x00008490 ldr r1, [pc, 0xa60] | r1 = *(0x8ef4);
0x00008494 add r5, r0, 0x13 | r5 = r0 + 0x13;
0x00008498 add r1, pc, r1 | r1 = pc + r1;
0x0000849c mov r0, r5 | r0 = r5;
0x000084a0 bl 0x5efc | r0 = strcmp (r0, r1);
0x000084a4 cmp r0, 0 |
0x000084a8 beq 0x8480 |
| } while (r0 == 0);
0x000084ac ldr r1, [pc, 0xa48] | r1 = *(0x8ef8);
0x000084b0 mov r0, r5 | r0 = r5;
0x000084b4 add r1, pc, r1 | r1 = pc + r1;
0x000084b8 bl 0x5efc | r0 = strcmp (r0, r1);
0x000084bc cmp r0, 0 |
| if (r0 == 0) {
0x000084c0 beq 0x8480 | goto label_0;
| }
0x000084c4 mov r0, r5 | r0 = r5;
0x000084c8 bl 0x6118 | r0 = strlen (r0);
0x000084cc add r0, r0, 0x15 | r0 += 0x15;
0x000084d0 bl 0x59f8 | r0 = malloc (r0);
0x000084d4 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x000084d8 beq 0x86ac | goto label_12;
| }
0x000084dc ldr r2, [pc, 0xa1c] | r2 = *(0x8efc);
0x000084e0 ldr r1, [pc, 0xa1c] | r1 = *(0x8f00);
0x000084e4 mov r3, r5 | r3 = r5;
0x000084e8 add r2, pc, r2 | r2 = pc + r2;
0x000084ec add r1, pc, r1 | r1 = pc + r1;
0x000084f0 bl 0x5f68 | sprintf (r0, r1, r2)
0x000084f4 mov r0, r4 | r0 = r4;
0x000084f8 bl 0x5ec0 | opendir ();
0x000084fc str r0, [sp, 0x18] | var_18h = r0;
0x00008500 mov r0, r4 | r0 = r4;
0x00008504 bl 0x6220 | free (r0);
0x00008508 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0000850c cmp r3, 0 |
| if (r3 == 0) {
0x00008510 beq 0x8480 | goto label_0;
| }
| label_3:
0x00008514 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00008518 bl 0x5dac | r0 = readdir64 ();
0x0000851c cmp r0, 0 |
| if (r0 != 0) {
0x00008520 bne 0x8648 | goto label_13;
| }
0x00008524 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00008528 bl 0x6184 | closedir ();
0x0000852c b 0x8480 | goto label_0;
| label_9:
0x00008530 mov r0, r4 | r0 = r4;
0x00008534 bl 0x5eb4 | time (r0);
0x00008538 ldr r3, [fp, 0x10] | r3 = *(arg_10h);
0x0000853c sub r0, r0, r3 | r0 -= r3;
0x00008540 cmp r0, 0xc7 |
| if (r0 > 0xc7) {
0x00008544 bgt 0x83d4 | goto label_1;
| }
| label_5:
0x00008548 mov r0, 0 | r0 = 0;
| label_4:
0x0000854c add sp, sp, 0x5c0 |
0x00008550 add sp, sp, 4 |
0x00008554 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| do {
0x00008558 sub r3, r7, 8 | r3 -= var_38h;
0x0000855c add r4, sp, 0x1c0 | r4 += var_1c0h;
0x00008560 str r3, [sp] | *(sp) = r3;
0x00008564 str r4, [sp, 4] | var_4h = r4;
0x00008568 mov r3, r8 | r3 = r8;
0x0000856c add r2, sp, 0x30 | r2 += var_30h;
0x00008570 mov r1, sl | r1 = sl;
0x00008574 mov r0, r6 | r0 = r6;
0x00008578 bl 0x5df4 | r0 = sscanf (r0, r1, r2);
0x0000857c cmp r0, 4 |
| if (r0 == 4) {
0x00008580 bne 0x8620 |
0x00008584 ldr r3, [pc, 0x954] |
0x00008588 ldr r3, [sb, r3] | r3 = *((sb + r3));
0x0000858c ldr r3, [r3] | r3 = *(0x8edc);
0x00008590 tst r3, 0x20 |
| if ((r3 & 0x20) != 0) {
0x00008594 beq 0x85e4 |
0x00008598 ldr r3, [pc, 0x944] | r3 = *(0x8ee0);
0x0000859c ldr r3, [sb, r3] | r3 = *((sb + r3));
0x000085a0 ldr r6, [r3] | r6 = *(0x8ee0);
0x000085a4 bl 0x58fc | getpid ();
0x000085a8 ldr r3, [pc, 0x958] | r3 = *(0x8f04);
0x000085ac ldr r1, [pc, 0x958] | r1 = *(0x8f08);
0x000085b0 add r3, pc, r3 | r3 = pc + r3;
0x000085b4 str r3, [sp] | *(sp) = r3;
0x000085b8 ldr r3, [pc, 0x950] | r3 = *(0x8f0c);
0x000085bc add r1, pc, r1 | r1 = pc + r1;
0x000085c0 add r3, pc, r3 | r3 = pc + r3;
0x000085c4 mov r2, r0 | r2 = r0;
0x000085c8 mov r0, r6 | r0 = r6;
0x000085cc bl 0x5c50 | fprintf (r0, r1, r2, r3);
0x000085d0 ldr r0, [pc, 0x93c] | r0 = *(0x8f10);
0x000085d4 ldrd r2, r3, [sp, 0x30] | __asm ("ldrd r2, r3, [var_30h]");
0x000085d8 mov r1, r4 | r1 = r4;
0x000085dc add r0, pc, r0 | r0 = pc + r0;
0x000085e0 bl 0x7b24 | fcn_00007b24 ();
| }
0x000085e4 ldrd r0, r1, [sp, 0x30] | __asm ("ldrd r0, r1, [var_30h]");
0x000085e8 bl 0x60e8 | gnu_dev_makedev ();
0x000085ec mov r3, 0 | r3 = 0;
0x000085f0 str r3, [sp, 8] | var_8h = r3;
0x000085f4 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000085f8 str r3, [sp, 4] | var_4h = r3;
0x000085fc mov r3, 0x1e | r3 = 0x1e;
0x00008600 str r3, [sp] | *(sp) = r3;
0x00008604 mov r2, r0 | r2 = r0;
0x00008608 mov r3, r1 | r3 = r1;
0x0000860c mov r0, fp | r0 = fp;
0x00008610 mov r1, r4 | r1 = r4;
0x00008614 bl 0x7f3c | fcn_00007f3c (r0, r1, r2, r3, r4);
| label_10:
0x00008618 ldr sl, [pc, 0x8f8] | sl = *(0x8f14);
0x0000861c add sl, pc, sl | sl = pc + sl;
| }
0x00008620 add r6, sp, 0x50 | r6 += s;
0x00008624 mov r2, r5 | r2 = r5;
0x00008628 mov r1, 0x64 | r1 = 0x64;
0x0000862c mov r0, r6 | r0 = r6;
0x00008630 bl 0x5920 | r0 = fgets (r0, r1, r2);
0x00008634 cmp r0, 0 |
0x00008638 bne 0x8558 |
| } while (r0 != 0);
0x0000863c mov r0, r5 | r0 = r5;
0x00008640 bl 0x5e90 | fclose (r0);
0x00008644 b 0x8400 | goto label_2;
| label_13:
0x00008648 ldr r1, [pc, 0x8cc] | r1 = *(0x8f18);
0x0000864c add r6, r0, 0x13 | r6 = r0 + 0x13;
0x00008650 add r1, pc, r1 | r1 = pc + r1;
0x00008654 mov r0, r6 | r0 = r6;
0x00008658 bl 0x5efc | r0 = strcmp (r0, r1);
0x0000865c cmp r0, 0 |
| if (r0 == 0) {
0x00008660 beq 0x8514 | goto label_3;
| }
0x00008664 ldr r1, [pc, 0x8b4] | r1 = *(0x8f1c);
0x00008668 mov r0, r6 | r0 = r6;
0x0000866c add r1, pc, r1 | r1 = pc + r1;
0x00008670 bl 0x5efc | r0 = strcmp (r0, r1);
0x00008674 cmp r0, 0 |
| if (r0 == 0) {
0x00008678 beq 0x8514 | goto label_3;
| }
0x0000867c mov r0, r5 | r0 = r5;
0x00008680 bl 0x6118 | r0 = strlen (r0);
0x00008684 mov r4, r0 | r4 = r0;
0x00008688 mov r0, r6 | r0 = r6;
0x0000868c bl 0x6118 | r0 = strlen (r0);
0x00008690 add r0, r4, r0 | r0 = r4 + r0;
0x00008694 add r0, r0, 0x15 | r0 += 0x15;
0x00008698 bl 0x59f8 | r0 = malloc (r0);
0x0000869c subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 != r0) {
0x000086a0 bne 0x8790 | goto label_14;
| }
0x000086a4 ldr r0, [sp, 0x18] | r0 = var_18h;
0x000086a8 bl 0x6184 | closedir ();
| label_12:
0x000086ac ldr r0, [sp, 0x20] | r0 = var_20h;
0x000086b0 bl 0x6184 | closedir ();
| label_11:
0x000086b4 ldr r3, [pc, 0x868] | r3 = *(0x8f20);
0x000086b8 ldr r5, [pc, 0x868] | r5 = *(0x8f24);
0x000086bc add r3, pc, r3 | r3 = pc + r3;
0x000086c0 str r3, [sp, 0x24] | var_24h = r3;
0x000086c4 ldr r3, [pc, 0x860] | r3 = *(0x8f28);
0x000086c8 add r5, pc, r5 | r5 = pc + r5;
0x000086cc add r3, pc, r3 | r3 = pc + r3;
0x000086d0 sub r5, r5, 4 | r5 -= 4;
0x000086d4 str r3, [sp, 0x28] | s2 = r3;
| label_6:
0x000086d8 ldr r4, [r5, 4]! | r4 = *((r5 += 4));
0x000086dc cmp r4, 0 |
| if (r4 != 0) {
0x000086e0 bne 0x8994 | goto label_15;
| }
0x000086e4 ldr r1, [pc, 0x844] | r1 = *(0x8f2c);
0x000086e8 ldr r0, [pc, 0x844] | r0 = *(0x8f30);
0x000086ec add r1, pc, r1 | r1 = pc + r1;
0x000086f0 add r0, pc, r0 | r0 = pc + r0;
0x000086f4 bl 0x6238 | r0 = fopen64 ();
0x000086f8 subs r3, r0, 0 | r3 = r0 - 0;
0x000086fc str r3, [sp, 0x1c] | stream = r3;
| if (r3 == r0) {
0x00008700 mvneq r0, 8 | r0 = ~8;
| goto label_16;
| }
| if (r3 == r0) {
| label_16:
0x00008704 beq 0x854c | goto label_4;
| }
0x00008708 add r3, sp, 0x40 | r3 += var_40h;
0x0000870c str r3, [sp, 0x18] | var_18h = r3;
0x00008710 sub r3, r3, 0xc | r3 -= var_ch;
0x00008714 str r3, [sp, 0x28] | s2 = r3;
0x00008718 ldr r3, [pc, 0x818] | r3 = *(0x8f34);
0x0000871c mov r6, r4 | r6 = r4;
0x00008720 add r3, pc, r3 | r3 = pc + r3;
0x00008724 str r3, [sp, 0x2c] | format = r3;
| label_8:
0x00008728 add r7, sp, 0x1c0 | r7 += var_1c0h;
0x0000872c ldr r2, [sp, 0x1c] | r2 = stream;
0x00008730 mov r1, 0x400 | r1 = 0x400;
0x00008734 mov r0, r7 | r0 = r7;
0x00008738 bl 0x5920 | r0 = fgets (r0, r1, r2);
0x0000873c cmp r0, 0 |
| if (r0 != 0) {
0x00008740 bne 0x8b84 | goto label_17;
| }
0x00008744 add r3, sp, 0x5c0 | r3 += var_5c0h;
0x00008748 add r3, r3, r4, lsl 2 | r3 += (r4 << 2);
0x0000874c ldr r3, [r3, -0x578] | r3 = *((r3 - 0x578));
0x00008750 cmp r3, 0 |
| if (r3 != 0) {
0x00008754 beq 0x877c |
0x00008758 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000875c lsl r4, r4, 3 | r4 <<= 3;
0x00008760 stm sp, {r0, r3} | *(sp) = r0;
| *((sp + 4)) = r3;
0x00008764 add r3, sp, 0x50 | r3 += s;
0x00008768 str r0, [sp, 8] | var_8h = r0;
0x0000876c mov r1, r6 | r1 = r6;
0x00008770 ldrd r2, r3, [r3, r4] | __asm ("ldrd r2, r3, [r3, r4]");
0x00008774 mov r0, fp | r0 = fp;
0x00008778 bl 0x7f3c | fcn_00007f3c (r0, r1, r2, r3, r4);
| }
0x0000877c ldr r0, [sp, 0x1c] | r0 = stream;
0x00008780 bl 0x5e90 | fclose (r0);
0x00008784 mov r0, fp | r0 = fp;
0x00008788 bl 0xf258 | fcn_0000f258 (r0, r1);
0x0000878c b 0x8548 | goto label_5;
| label_14:
0x00008790 ldr r2, [pc, 0x7a4] | r2 = *(0x8f38);
0x00008794 ldr r1, [pc, 0x7a4] | r1 = *(0x8f3c);
0x00008798 mov r3, r5 | r3 = r5;
0x0000879c str r6, [sp] | *(sp) = r6;
0x000087a0 add r2, pc, r2 | r2 = pc + r2;
0x000087a4 add r1, pc, r1 | r1 = pc + r1;
0x000087a8 bl 0x5f68 | sprintf (r0, r1, r2)
0x000087ac ldr r3, [r8] | r3 = *(r8);
0x000087b0 tst r3, 0x20 |
| if ((r3 & 0x20) != 0) {
0x000087b4 beq 0x8800 |
0x000087b8 ldr r3, [pc, 0x724] | r3 = *(0x8ee0);
0x000087bc ldr r3, [sb, r3] | r3 = *((sb + r3));
0x000087c0 ldr r4, [r3] | r4 = *(0x8ee0);
0x000087c4 bl 0x58fc | getpid ();
0x000087c8 ldr r3, [pc, 0x774] | r3 = *(0x8f40);
0x000087cc ldr r1, [pc, 0x774] | r1 = *(0x8f44);
0x000087d0 add r3, pc, r3 | r3 = pc + r3;
0x000087d4 str r3, [sp] | *(sp) = r3;
0x000087d8 ldr r3, [pc, 0x76c] | r3 = *(0x8f48);
0x000087dc add r1, pc, r1 | r1 = pc + r1;
0x000087e0 add r3, pc, r3 | r3 = pc + r3;
0x000087e4 mov r2, r0 | r2 = r0;
0x000087e8 mov r0, r4 | r0 = r4;
0x000087ec bl 0x5c50 | fprintf (r0, r1, r2, r3);
0x000087f0 ldr r0, [pc, 0x758] | r0 = *(0x8f4c);
0x000087f4 mov r1, r7 | r1 = r7;
0x000087f8 add r0, pc, r0 | r0 = pc + r0;
0x000087fc bl 0x7b24 | fcn_00007b24 ();
| }
0x00008800 ldr r1, [pc, 0x74c] | r1 = *(0x8f50);
0x00008804 mov r0, r7 | r0 = r7;
0x00008808 add r1, pc, r1 | r1 = pc + r1;
0x0000880c bl 0x6238 | r0 = fopen64 ();
0x00008810 subs r3, r0, 0 | r3 = r0 - 0;
0x00008814 str r3, [sp, 0x1c] | stream = r3;
| if (r3 == r0) {
0x00008818 beq 0x884c | goto label_18;
| }
0x0000881c ldr r4, [pc, 0x734] | r4 = *(0x8f54);
0x00008820 add r4, pc, r4 | r4 = pc + r4;
| do {
0x00008824 add sl, sp, 0x1c0 | sl += var_1c0h;
0x00008828 ldr r2, [sp, 0x1c] | r2 = stream;
0x0000882c mov r1, 0x400 | r1 = 0x400;
0x00008830 mov r0, sl | r0 = sl;
0x00008834 bl 0x5920 | r0 = fgets (r0, r1, r2);
0x00008838 cmp r0, 0 |
| if (r0 == 0) {
0x0000883c bne 0x88b4 |
0x00008840 mov r4, r0 | r4 = r0;
0x00008844 mov sl, r0 | sl = r0;
0x00008848 b 0x88e4 | goto label_19;
| label_18:
0x0000884c ldr r4, [r8] | r4 = *(r8);
0x00008850 ands r4, r4, 0x20 | r4 &= 0x20;
| if (r4 != r4) {
0x00008854 beq 0x88ac |
0x00008858 ldr r3, [pc, 0x684] | r3 = *(0x8ee0);
0x0000885c ldr r3, [sb, r3] | r3 = *((sb + r3));
0x00008860 ldr r4, [r3] | r4 = *(0x8ee0);
0x00008864 bl 0x58fc | getpid ();
0x00008868 ldr r3, [pc, 0x6ec] | r3 = *(0x8f58);
0x0000886c ldr r1, [pc, 0x6ec] | r1 = *(0x8f5c);
0x00008870 add r3, pc, r3 | r3 = pc + r3;
0x00008874 str r3, [sp] | *(sp) = r3;
0x00008878 ldr r3, [pc, 0x6e4] | r3 = *(0x8f60);
0x0000887c add r1, pc, r1 | r1 = pc + r1;
0x00008880 add r3, pc, r3 | r3 = pc + r3;
0x00008884 mov r2, r0 | r2 = r0;
0x00008888 mov r0, r4 | r0 = r4;
0x0000888c bl 0x5c50 | r0 = fprintf (r0, r1, r2, r3);
0x00008890 bl 0x60ac | errno_location ();
0x00008894 mov r1, r7 | r1 = r7;
0x00008898 ldr r2, [r0] | r2 = *(r0);
0x0000889c ldr r0, [pc, 0x6c4] | r0 = *(0x8f64);
0x000088a0 add r0, pc, r0 | r0 = pc + r0;
0x000088a4 bl 0x7b24 | fcn_00007b24 ();
0x000088a8 ldr r4, [sp, 0x1c] | r4 = stream;
| }
0x000088ac mov sl, r4 | sl = r4;
0x000088b0 b 0x88ec | goto label_20;
| }
0x000088b4 add r3, sp, 0x50 | r3 += s;
0x000088b8 ldr r2, [sp, 0x24] | r2 = var_24h;
0x000088bc mov r1, r4 | r1 = r4;
0x000088c0 mov r0, sl | r0 = sl;
0x000088c4 bl 0x5df4 | r0 = sscanf (r0, r1, r2);
0x000088c8 cmp r0, 2 |
0x000088cc bne 0x8824 |
| } while (r0 != 2);
0x000088d0 ldr r1, [sp, 0x50] | r1 = s;
0x000088d4 ldr r0, [sp, 0x38] | r0 = var_38h;
0x000088d8 bl 0x60e8 | r0 = gnu_dev_makedev ();
0x000088dc mov r4, r0 | r4 = r0;
0x000088e0 mov sl, r1 | sl = r1;
| label_19:
0x000088e4 ldr r0, [sp, 0x1c] | r0 = stream;
0x000088e8 bl 0x5e90 | fclose (r0);
| label_20:
0x000088ec ldr r1, [pc, 0x678] | r1 = *(0x8f68);
0x000088f0 mov r3, r6 | r3 = r6;
0x000088f4 mov r2, r5 | r2 = r5;
0x000088f8 add r1, pc, r1 | r1 = pc + r1;
0x000088fc mov r0, r7 | r0 = r7;
0x00008900 bl 0x5f68 | sprintf (r0, r1, r2)
0x00008904 ldr r3, [r8] | r3 = *(r8);
0x00008908 tst r3, 0x20 |
| if ((r3 & 0x20) != 0) {
0x0000890c beq 0x895c |
0x00008910 ldr r3, [pc, 0x5cc] | r3 = *(0x8ee0);
0x00008914 ldr r3, [sb, r3] | r3 = *((sb + r3));
0x00008918 ldr r6, [r3] | r6 = *(0x8ee0);
0x0000891c bl 0x58fc | getpid ();
0x00008920 ldr r3, [pc, 0x648] | r3 = *(0x8f6c);
0x00008924 ldr r1, [pc, 0x648] | r1 = *(0x8f70);
0x00008928 add r3, pc, r3 | r3 = pc + r3;
0x0000892c str r3, [sp] | *(sp) = r3;
0x00008930 ldr r3, [pc, 0x640] | r3 = *(0x8f74);
0x00008934 add r1, pc, r1 | r1 = pc + r1;
0x00008938 add r3, pc, r3 | r3 = pc + r3;
0x0000893c mov r2, r0 | r2 = r0;
0x00008940 mov r0, r6 | r0 = r6;
0x00008944 bl 0x5c50 | fprintf (r0, r1, r2, r3);
0x00008948 ldr r0, [pc, 0x62c] | r0 = *(0x8f78);
0x0000894c mov r2, r4 | r2 = r4;
0x00008950 mov r1, r7 | r1 = r7;
0x00008954 add r0, pc, r0 | r0 = pc + r0;
0x00008958 bl 0x7b24 | fcn_00007b24 ();
| }
0x0000895c mov r3, 0 | r3 = 0;
0x00008960 str r3, [sp, 8] | var_8h = r3;
0x00008964 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00008968 mov r0, fp | r0 = fp;
0x0000896c str r3, [sp, 4] | var_4h = r3;
0x00008970 mov r3, 0x14 | r3 = 0x14;
0x00008974 str r3, [sp] | *(sp) = r3;
0x00008978 mov r2, r4 | r2 = r4;
0x0000897c mov r3, sl | r3 = sl;
0x00008980 mov r1, r7 | r1 = r7;
0x00008984 bl 0x7f3c | fcn_00007f3c (r0, r1, r2, r3, r4);
0x00008988 mov r0, r7 | r0 = r7;
0x0000898c bl 0x6220 | free (r0);
0x00008990 b 0x8514 | goto label_3;
| label_15:
0x00008994 ldr r3, [pc, 0x544] | r3 = *(0x8edc);
0x00008998 ldr sl, [sb, r3] | sl = *((sb + r3));
0x0000899c ldr r3, [sl] | r3 = *(sl);
0x000089a0 tst r3, 0x20 |
| if ((r3 & 0x20) != 0) {
0x000089a4 beq 0x89ec |
0x000089a8 ldr r3, [pc, 0x534] | r3 = *(0x8ee0);
0x000089ac ldr r3, [sb, r3] | r3 = *((sb + r3));
0x000089b0 ldr r4, [r3] | r4 = *(0x8ee0);
0x000089b4 bl 0x58fc | getpid ();
0x000089b8 ldr r3, [pc, 0x5c0] | r3 = *(0x8f7c);
0x000089bc ldr r1, [pc, 0x5c0] | r1 = *(0x8f80);
0x000089c0 add r3, pc, r3 | r3 = pc + r3;
0x000089c4 str r3, [sp] | *(sp) = r3;
0x000089c8 add r1, pc, r1 | r1 = pc + r1;
0x000089cc ldr r3, [sp, 0x24] | r3 = var_24h;
0x000089d0 mov r2, r0 | r2 = r0;
0x000089d4 mov r0, r4 | r0 = r4;
0x000089d8 bl 0x5c50 | fprintf (r0, r1, r2, r3);
0x000089dc ldr r0, [pc, 0x5a4] | r0 = *(0x8f84);
0x000089e0 ldr r1, [r5] | r1 = *(r5);
0x000089e4 add r0, pc, r0 | r0 = pc + r0;
0x000089e8 bl 0x7b24 | fcn_00007b24 ();
| }
0x000089ec ldr r0, [r5] | r0 = *(r5);
0x000089f0 bl 0x5ec0 | r0 = opendir ();
0x000089f4 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 == r0) {
0x000089f8 beq 0x86d8 | goto label_6;
| }
0x000089fc ldr r3, [pc, 0x588] | r3 = *(0x8f88);
0x00008a00 add r3, pc, r3 | r3 = pc + r3;
0x00008a04 str r3, [sp, 0x1c] | stream = r3;
0x00008a08 ldr r3, [pc, 0x580] | r3 = *(0x8f8c);
0x00008a0c add r3, pc, r3 | r3 = pc + r3;
0x00008a10 str r3, [sp, 0x20] | var_20h = r3;
| do {
| label_7:
0x00008a14 mov r0, r6 | r0 = r6;
0x00008a18 bl 0x5dac | r0 = readdir64 ();
0x00008a1c cmp r0, 0 |
| if (r0 == 0) {
0x00008a20 bne 0x8a30 |
0x00008a24 mov r0, r6 | r0 = r6;
0x00008a28 bl 0x6184 | closedir ();
0x00008a2c b 0x86d8 | goto label_6;
| }
0x00008a30 ldrb r7, [r0, 0x12] | r7 = *((r0 + 0x12));
0x00008a34 add r4, r0, 0x13 | r4 = r0 + 0x13;
0x00008a38 and r3, r7, 0xfd | r3 = r7 & 0xfd;
0x00008a3c cmp r7, 0xa |
0x00008a40 cmpne r3, 0 | __asm ("cmpne r3, 0");
| if (r7 == 0xa) {
0x00008a44 movne r7, 1 | r7 = 1;
| }
| if (r7 != 0xa) {
0x00008a48 moveq r7, 0 | r7 = 0;
| }
0x00008a4c bne 0x8a14 |
| } while (r7 != 0xa);
0x00008a50 ldr r1, [sp, 0x28] | r1 = s2;
0x00008a54 mov r0, r4 | r0 = r4;
0x00008a58 bl 0x5efc | r0 = strcmp (r0, r1);
0x00008a5c cmp r0, 0 |
| if (r0 == 0) {
0x00008a60 beq 0x8a14 | goto label_7;
| }
0x00008a64 ldr r1, [sp, 0x1c] | r1 = stream;
0x00008a68 mov r0, r4 | r0 = r4;
0x00008a6c bl 0x5efc | r0 = strcmp (r0, r1);
0x00008a70 cmp r0, 0 |
| if (r0 == 0) {
0x00008a74 beq 0x8a14 | goto label_7;
| }
0x00008a78 ldr r1, [sp, 0x20] | r1 = var_20h;
0x00008a7c mov r0, r4 | r0 = r4;
0x00008a80 bl 0x5d04 | r0 = strstr (r0, r1);
0x00008a84 cmp r0, 0 |
| if (r0 == 0) {
0x00008a88 beq 0x8a14 | goto label_7;
| }
0x00008a8c ldr r1, [pc, 0x500] | r1 = *(0x8f90);
0x00008a90 mov r0, r4 | r0 = r4;
0x00008a94 add r1, pc, r1 | r1 = pc + r1;
0x00008a98 bl 0x5efc | r0 = strcmp (r0, r1);
0x00008a9c cmp r0, 0 |
| if (r0 == 0) {
0x00008aa0 beq 0x8a14 | goto label_7;
| }
0x00008aa4 mov r0, r6 | r0 = r6;
0x00008aa8 add r8, sp, 0x1c0 | r8 += var_1c0h;
0x00008aac bl 0x5d28 | dirfd ();
0x00008ab0 mov r3, r7 | r3 = r7;
0x00008ab4 mov r2, r8 | r2 = r8;
0x00008ab8 mov r1, r4 | r1 = r4;
0x00008abc bl 0x5f44 | r0 = fstatat64 ();
0x00008ac0 cmp r0, 0 |
| if (r0 != 0) {
0x00008ac4 bne 0x8a14 | goto label_7;
| }
0x00008ac8 ldr r3, [sp, 0x1d0] | r3 = var_1d0h;
0x00008acc and r3, r3, 0xf000 | r3 &= 0xf000;
0x00008ad0 cmp r3, 0x2000 |
| if (r3 != 0x2000) {
0x00008ad4 bne 0x8a14 | goto label_7;
| }
0x00008ad8 ldr r7, [r8, 0x20] | r7 = var_20h_2;
0x00008adc ldr r8, [r8, 0x24] | r8 = var_24h_2;
0x00008ae0 mov r0, r7 | r0 = r7;
0x00008ae4 mov r1, r8 | r1 = r8;
0x00008ae8 bl 0x5af4 | r0 = gnu_dev_minor ();
0x00008aec cmp r0, 0 |
| if (r0 == 0) {
0x00008af0 beq 0x8a14 | goto label_7;
| }
0x00008af4 ldr r3, [sl] | r3 = *(sl);
0x00008af8 tst r3, 0x20 |
| if ((r3 & 0x20) != 0) {
0x00008afc beq 0x8b54 |
0x00008b00 ldr r3, [pc, 0x3dc] |
0x00008b04 ldr r3, [sb, r3] | r3 = *((sb + r3));
0x00008b08 ldr r3, [r3] | r3 = *(0x8ee0);
0x00008b0c str r3, [sp, 0x18] | var_18h = r3;
0x00008b10 bl 0x58fc | getpid ();
0x00008b14 ldr r3, [pc, 0x47c] | r3 = *(0x8f94);
0x00008b18 ldr r1, [pc, 0x47c] | r1 = *(0x8f98);
0x00008b1c add r3, pc, r3 | r3 = pc + r3;
0x00008b20 str r3, [sp] | *(sp) = r3;
0x00008b24 ldr r3, [pc, 0x474] | r3 = *(0x8f9c);
0x00008b28 add r1, pc, r1 | r1 = pc + r1;
0x00008b2c add r3, pc, r3 | r3 = pc + r3;
0x00008b30 mov r2, r0 | r2 = r0;
0x00008b34 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00008b38 bl 0x5c50 | fprintf (r0, r1, r2, r3);
0x00008b3c ldr r0, [pc, 0x460] | r0 = *(0x8fa0);
0x00008b40 mov r3, r7 | r3 = r7;
0x00008b44 mov r2, r4 | r2 = r4;
0x00008b48 ldr r1, [r5] | r1 = *(r5);
0x00008b4c add r0, pc, r0 | r0 = pc + r0;
0x00008b50 bl 0x7b24 | fcn_00007b24 ();
| }
0x00008b54 mov r3, 0 | r3 = 0;
0x00008b58 str r3, [sp, 8] | var_8h = r3;
0x00008b5c ldr r3, [sp, 0x14] | r3 = var_14h;
0x00008b60 mov r2, r7 | r2 = r7;
0x00008b64 str r3, [sp, 4] | var_4h = r3;
0x00008b68 mov r3, 0x32 | r3 = 0x32;
0x00008b6c str r3, [sp] | *(sp) = r3;
0x00008b70 mov r1, r4 | r1 = r4;
0x00008b74 mov r3, r8 | r3 = r8;
0x00008b78 mov r0, fp | r0 = fp;
0x00008b7c bl 0x7f3c | fcn_00007f3c (r0, r1, r2, r3, r4);
0x00008b80 b 0x8a14 | goto label_7;
| label_17:
0x00008b84 eor sl, r4, 1 | sl = r4 ^ 1;
0x00008b88 lsl r5, sl, 2 | r5 = sl << 2;
0x00008b8c add r3, sp, 0x5c0 | r3 += var_5c0h;
0x00008b90 add r3, r3, r5 | r3 += r5;
0x00008b94 ldr r6, [r3, -0x580] | r6 = *((r3 - 0x580));
0x00008b98 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00008b9c str r6, [sp, 4] | var_4h = r6;
0x00008ba0 sub r3, r3, 8 | r3 -= 8;
0x00008ba4 str r3, [sp] | *(sp) = r3;
0x00008ba8 add r2, sp, 0x30 | r2 += var_30h;
0x00008bac ldr r3, [sp, 0x28] | r3 = s2;
0x00008bb0 ldr r1, [sp, 0x2c] | r1 = format;
0x00008bb4 mov r0, r7 | r0 = r7;
0x00008bb8 bl 0x5df4 | r0 = sscanf (r0, r1, r2);
0x00008bbc cmp r0, 4 |
| if (r0 != 4) {
0x00008bc0 bne 0x8ebc | goto label_21;
| }
0x00008bc4 ldrd r0, r1, [sp, 0x30] | __asm ("ldrd r0, r1, [var_30h]");
0x00008bc8 bl 0x60e8 | gnu_dev_makedev ();
0x00008bcc add r3, sp, 0x50 | r3 += s;
0x00008bd0 add r2, r3, sl, lsl 3 | r2 = r3 + (sl << 3);
0x00008bd4 str r0, [r3, sl, lsl 3] | offset_0 = sl << 3;
| *((r3 + offset_0)) = r0;
0x00008bd8 ldr r3, [pc, 0x300] | r3 = *(0x8edc);
0x00008bdc str r1, [sp, 0x20] | var_20h = r1;
0x00008be0 str r1, [r2, 4] | *((r2 + 4)) = r1;
0x00008be4 ldr r7, [sb, r3] | r7 = *((sb + r3));
0x00008be8 mov r8, r0 | r8 = r0;
0x00008bec ldr r3, [r7] | r3 = *(r7);
0x00008bf0 tst r3, 0x20 |
| if ((r3 & 0x20) != 0) {
0x00008bf4 beq 0x8c44 |
0x00008bf8 ldr r3, [pc, 0x2e4] |
0x00008bfc ldr r3, [sb, r3] | r3 = *((sb + r3));
0x00008c00 ldr r3, [r3] | r3 = *(0x8ee0);
0x00008c04 str r3, [sp, 0x24] | var_24h = r3;
0x00008c08 bl 0x58fc | getpid ();
0x00008c0c ldr r3, [pc, 0x394] | r3 = *(0x8fa4);
0x00008c10 ldr r1, [pc, 0x394] | r1 = *(0x8fa8);
0x00008c14 add r3, pc, r3 | r3 = pc + r3;
0x00008c18 str r3, [sp] | *(sp) = r3;
0x00008c1c ldr r3, [pc, 0x38c] | r3 = *(0x8fac);
0x00008c20 add r1, pc, r1 | r1 = pc + r1;
0x00008c24 add r3, pc, r3 | r3 = pc + r3;
0x00008c28 mov r2, r0 | r2 = r0;
0x00008c2c ldr r0, [sp, 0x24] | r0 = var_24h;
0x00008c30 bl 0x5c50 | fprintf (r0, r1, r2, r3);
0x00008c34 ldr r0, [pc, 0x378] | r0 = *(0x8fb0);
0x00008c38 mov r1, r6 | r1 = r6;
0x00008c3c add r0, pc, r0 | r0 = pc + r0;
0x00008c40 bl 0x7b24 | fcn_00007b24 ();
| }
0x00008c44 mov r0, r6 | r0 = r6;
0x00008c48 bl 0x6118 | strlen (r0);
0x00008c4c ldr r2, [pc, 0x364] |
0x00008c50 add r3, sp, 0x5c0 | r3 += var_5c0h;
0x00008c54 add r5, r3, r5 | r5 = r3 + r5;
0x00008c58 str r0, [r5, -0x578] | *((r5 - 0x578)) = r0;
0x00008c5c ldr r2, [sb, r2] | r2 = *((sb + r2));
0x00008c60 add r0, r6, r0 | r0 = r6 + r0;
0x00008c64 ldrsb r3, [r0, -1] | r3 = *((r0 - 1));
0x00008c68 ldr r2, [r2] | r2 = *(0x8fb4);
0x00008c6c lsl r3, r3, 1 | r3 <<= 1;
0x00008c70 ldrh r3, [r2, r3] | r3 = *((r2 + r3));
0x00008c74 tst r3, 8 |
| if ((r3 & 8) != 0) {
0x00008c78 beq 0x8d20 |
0x00008c7c ldr r3, [r7] | r3 = *(r7);
0x00008c80 tst r3, 0x20 |
| if ((r3 & 0x20) != 0) {
0x00008c84 beq 0x8cd4 |
0x00008c88 ldr r3, [pc, 0x254] | r3 = *(0x8ee0);
0x00008c8c ldr r3, [sb, r3] | r3 = *((sb + r3));
0x00008c90 ldr r5, [r3] | r5 = *(0x8ee0);
0x00008c94 bl 0x58fc | getpid ();
0x00008c98 ldr r3, [pc, 0x31c] | r3 = *(0x8fb8);
0x00008c9c ldr r1, [pc, 0x31c] | r1 = *(0x8fbc);
0x00008ca0 add r3, pc, r3 | r3 = pc + r3;
0x00008ca4 str r3, [sp] | *(sp) = r3;
0x00008ca8 ldr r3, [pc, 0x314] | r3 = *(0x8fc0);
0x00008cac add r1, pc, r1 | r1 = pc + r1;
0x00008cb0 add r3, pc, r3 | r3 = pc + r3;
0x00008cb4 mov r2, r0 | r2 = r0;
0x00008cb8 mov r0, r5 | r0 = r5;
0x00008cbc bl 0x5c50 | fprintf (r0, r1, r2, r3);
0x00008cc0 ldr r0, [pc, 0x300] | r0 = *(0x8fc4);
0x00008cc4 mov r2, r8 | r2 = r8;
0x00008cc8 mov r1, r6 | r1 = r6;
0x00008ccc add r0, pc, r0 | r0 = pc + r0;
0x00008cd0 bl 0x7b24 | fcn_00007b24 ();
| }
0x00008cd4 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00008cd8 ldrd r2, r3, [r3, -8] | __asm ("ldrd r2, r3, [r3, -8]");
0x00008cdc cmp r3, 0 |
0x00008ce0 cmpeq r2, 1 | __asm ("cmpeq r2, 1");
| if (r3 >= 0) {
0x00008ce4 bls 0x8d10 |
0x00008ce8 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00008cec mov r3, 0 | r3 = 0;
0x00008cf0 str r3, [sp, 8] | var_8h = r3;
0x00008cf4 str r2, [sp, 4] | var_4h = r2;
0x00008cf8 str r3, [sp] | *(sp) = r3;
0x00008cfc mov r2, r8 | r2 = r8;
0x00008d00 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00008d04 mov r1, r6 | r1 = r6;
0x00008d08 mov r0, fp | r0 = fp;
0x00008d0c bl 0x7f3c | fcn_00007f3c (r0, r1, r2, r3, r4);
| }
0x00008d10 add r3, sp, 0x5c0 | r3 += var_5c0h;
0x00008d14 mov r2, 0 | r2 = 0;
0x00008d18 add r3, r3, sl, lsl 2 | r3 += (sl << 2);
0x00008d1c str r2, [r3, -0x578] | *((r3 - 0x578)) = r2;
| }
0x00008d20 add r3, sp, 0x5c0 | r3 += var_5c0h;
0x00008d24 add r3, r3, r4, lsl 2 | r3 += (r4 << 2);
0x00008d28 ldr r2, [r3, -0x578] | r2 = *((r3 - 0x578));
0x00008d2c cmp r2, 0 |
| if (r2 == 0) {
0x00008d30 beq 0x8dec | goto label_22;
| }
0x00008d34 mov r1, r6 | r1 = r6;
0x00008d38 ldr r0, [r3, -0x580] | r0 = *((r3 - 0x580));
0x00008d3c bl 0x5d34 | r0 = strncmp (r0, r1, r2);
0x00008d40 cmp r0, 0 |
| if (r0 != 0) {
0x00008d44 bne 0x8dec | goto label_22;
| }
0x00008d48 ldr r5, [fp] | r5 = *(fp);
0x00008d4c add lr, sp, 0x50 | lr += s;
0x00008d50 ldr ip, [r5] | ip = *(r5);
0x00008d54 add lr, lr, r4, lsl 3 | lr += (r4 << 3);
| do {
0x00008d58 cmp fp, r5 |
| if (fp != r5) {
0x00008d5c beq 0x8ddc |
0x00008d60 ldrd r0, r1, [r5, 0x28] | __asm ("ldrd r0, r1, [r5, 0x28]");
0x00008d64 ldrd r2, r3, [lr] | __asm ("ldrd r2, r3, [lr]");
0x00008d68 cmp r1, r3 |
0x00008d6c cmpeq r0, r2 | __asm ("cmpeq r0, r2");
| if (r1 != r3) {
0x00008d70 bne 0x8ec4 | goto label_23;
| }
0x00008d74 ldr r3, [r7] | r3 = *(r7);
0x00008d78 tst r3, 0x20 |
| if ((r3 & 0x20) != 0) {
0x00008d7c beq 0x8dc8 |
0x00008d80 ldr r3, [pc, 0x15c] | r3 = *(0x8ee0);
0x00008d84 ldr r3, [sb, r3] | r3 = *((sb + r3));
0x00008d88 ldr r8, [r3] | r8 = *(0x8ee0);
0x00008d8c bl 0x58fc | getpid ();
0x00008d90 ldr r3, [pc, 0x234] | r3 = *(0x8fc8);
0x00008d94 ldr r1, [pc, 0x234] | r1 = *(0x8fcc);
0x00008d98 add r3, pc, r3 | r3 = pc + r3;
0x00008d9c str r3, [sp] | *(sp) = r3;
0x00008da0 ldr r3, [pc, 0x22c] | r3 = *(0x8fd0);
0x00008da4 add r1, pc, r1 | r1 = pc + r1;
0x00008da8 add r3, pc, r3 | r3 = pc + r3;
0x00008dac mov r2, r0 | r2 = r0;
0x00008db0 mov r0, r8 | r0 = r8;
0x00008db4 bl 0x5c50 | fprintf (r0, r1, r2, r3);
0x00008db8 ldr r0, [pc, 0x218] | r0 = *(0x8fd4);
0x00008dbc ldr r1, [r5, 0x14] | r1 = *((r5 + 0x14));
0x00008dc0 add r0, pc, r0 | r0 = pc + r0;
0x00008dc4 bl 0x7b24 | fcn_00007b24 ();
| }
0x00008dc8 mov r0, r5 | r0 = r5;
0x00008dcc bl 0x7738 | fcn_00007738 (r0);
0x00008dd0 ldr r3, [fp, 0x18] | r3 = *(arg_18h);
0x00008dd4 orr r3, r3, 4 | r3 |= 4;
0x00008dd8 str r3, [fp, 0x18] | *(arg_18h) = r3;
| }
0x00008ddc add r3, sp, 0x5c0 | r3 += var_5c0h;
0x00008de0 mov r2, 0 | r2 = 0;
0x00008de4 add r3, r3, r4, lsl 2 | r3 += (r4 << 2);
0x00008de8 str r2, [r3, -0x578] | *((r3 - 0x578)) = r2;
| label_22:
0x00008dec lsl r5, r4, 2 | r5 = r4 << 2;
0x00008df0 add r3, sp, 0x5c0 | r3 += var_5c0h;
0x00008df4 add r3, r3, r5 | r3 += r5;
0x00008df8 ldr r2, [r3, -0x578] | r2 = *((r3 - 0x578));
0x00008dfc cmp r2, 0 |
| if (r2 != 0) {
0x00008e00 beq 0x8ebc |
0x00008e04 ldr r8, [r3, -0x580] | r8 = *((r3 - 0x580));
0x00008e08 mov r1, r6 | r1 = r6;
0x00008e0c mov r0, r8 | r0 = r8;
0x00008e10 bl 0x5d34 | r0 = strncmp (r0, r1, r2);
0x00008e14 cmp r0, 0 |
| if (r0 == 0) {
0x00008e18 beq 0x8ebc | goto label_21;
| }
0x00008e1c add r3, sp, 0x50 | r3 += s;
0x00008e20 add r2, r3, r4, lsl 3 | r2 = r3 + (r4 << 3);
0x00008e24 ldr r4, [r3, r4, lsl 3] | offset_1 = r4 << 3;
| r4 = *((r3 + offset_1));
0x00008e28 ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x00008e2c str r3, [sp, 0x20] | var_20h = r3;
0x00008e30 ldr r3, [r7] | r3 = *(r7);
0x00008e34 tst r3, 0x20 |
| if ((r3 & 0x20) != 0) {
0x00008e38 beq 0x8e88 |
0x00008e3c ldr r3, [pc, 0xa0] | r3 = *(0x8ee0);
0x00008e40 ldr r3, [sb, r3] | r3 = *((sb + r3));
0x00008e44 ldr r7, [r3] | r7 = *(0x8ee0);
0x00008e48 bl 0x58fc | getpid ();
0x00008e4c ldr r3, [pc, 0x188] | r3 = *(0x8fd8);
0x00008e50 ldr r1, [pc, 0x188] | r1 = *(0x8fdc);
0x00008e54 add r3, pc, r3 | r3 = pc + r3;
0x00008e58 str r3, [sp] | *(sp) = r3;
0x00008e5c ldr r3, [pc, 0x180] | r3 = *(0x8fe0);
0x00008e60 add r1, pc, r1 | r1 = pc + r1;
0x00008e64 add r3, pc, r3 | r3 = pc + r3;
0x00008e68 mov r2, r0 | r2 = r0;
0x00008e6c mov r0, r7 | r0 = r7;
0x00008e70 bl 0x5c50 | fprintf (r0, r1, r2, r3);
0x00008e74 ldr r0, [pc, 0x16c] | r0 = *(0x8fe4);
0x00008e78 mov r2, r4 | r2 = r4;
0x00008e7c mov r1, r8 | r1 = r8;
0x00008e80 add r0, pc, r0 | r0 = pc + r0;
0x00008e84 bl 0x7b24 | fcn_00007b24 ();
| }
0x00008e88 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00008e8c mov r7, 0 | r7 = 0;
0x00008e90 str r3, [sp, 4] | var_4h = r3;
0x00008e94 str r7, [sp, 8] | var_8h = r7;
0x00008e98 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00008e9c str r7, [sp] | *(sp) = r7;
0x00008ea0 mov r2, r4 | r2 = r4;
0x00008ea4 mov r1, r8 | r1 = r8;
0x00008ea8 mov r0, fp | r0 = fp;
0x00008eac bl 0x7f3c | fcn_00007f3c (r0, r1, r2, r3, r4);
0x00008eb0 add r3, sp, 0x5c0 | r3 += var_5c0h;
0x00008eb4 add r5, r3, r5 | r5 = r3 + r5;
0x00008eb8 str r7, [r5, -0x578] | *((r5 - 0x578)) = r7;
| }
| label_21:
0x00008ebc mov r4, sl | r4 = sl;
0x00008ec0 b 0x8728 | goto label_8;
| label_23:
0x00008ec4 mov r5, ip | r5 = ip;
0x00008ec8 ldr ip, [ip] | ip = *(ip);
0x00008ecc b 0x8d58 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/lib/libblkid.so.1.1.0 @ 0xf258 */
| #include <stdint.h>
|
; (fcn) fcn.0000f258 () | void fcn_0000f258 (int32_t arg_0h, uint32_t arg1) {
| int32_t var_0h;
| int32_t var_8h;
| void * ptr;
| int32_t var_10h;
| char * format;
| char * var_18h;
| char * var_1ch;
| int32_t var_20h;
| int32_t var_30h;
| int32_t var_8ch;
| r0 = arg1;
0x0000f258 ldr r3, [r0] | r3 = *(r0);
0x0000f25c push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000f260 ldr r6, [pc, 0x970] | r6 = *(0xfbd4);
0x0000f264 cmp r0, r3 |
0x0000f268 add r6, pc, r6 | r6 = pc + r6;
0x0000f26c sub sp, sp, 0x8c |
| if (r0 != r3) {
0x0000f270 beq 0xf284 |
0x0000f274 ldr r3, [r0, 0x18] | r3 = *(arg_0hx18);
0x0000f278 mov sl, r0 | sl = r0;
0x0000f27c tst r3, 4 |
| if ((r3 & 4) != 0) {
0x0000f280 bne 0xf2e8 | goto label_16;
| }
| }
0x0000f284 ldr r3, [pc, 0x950] |
0x0000f288 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x0000f28c ldr r3, [r3] | r3 = *(0xfbd8);
0x0000f290 tst r3, 0x800 |
0x0000f294 bne 0xf2a0 |
| while (1) {
| label_0:
0x0000f298 mov fp, 0 |
0x0000f29c b 0xf3d4 | goto label_1;
0x0000f2a0 ldr r3, [pc, 0x938] | r3 = *(0xfbdc);
0x0000f2a4 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x0000f2a8 ldr r4, [r3] | r4 = *(0xfbdc);
0x0000f2ac bl 0x58fc | getpid ();
0x0000f2b0 ldr r3, [pc, 0x92c] | r3 = *(0xfbe0);
0x0000f2b4 ldr r1, [pc, 0x92c] | r1 = *(0xfbe4);
0x0000f2b8 add r3, pc, r3 | r3 = pc + r3;
0x0000f2bc str r3, [sp] | *(sp) = r3;
0x0000f2c0 ldr r3, [pc, 0x924] | r3 = *(0xfbe8);
0x0000f2c4 add r1, pc, r1 | r1 = pc + r1;
0x0000f2c8 add r3, pc, r3 | r3 = pc + r3;
0x0000f2cc mov r2, r0 | r2 = r0;
0x0000f2d0 mov r0, r4 | r0 = r4;
0x0000f2d4 bl 0x5c50 | fprintf (r0, r1, r2, r3);
0x0000f2d8 ldr r0, [pc, 0x910] | r0 = *(0xfbec);
0x0000f2dc add r0, pc, r0 | r0 = pc + r0;
0x0000f2e0 bl 0xf1cc | fcn_0000f1cc ();
0x0000f2e4 b 0xf298 |
| }
| label_16:
0x0000f2e8 ldr r5, [r0, 0x1c] | r5 = *(arg_0hx1c);
0x0000f2ec cmp r5, 0 |
| if (r5 == 0) {
0x0000f2f0 bne 0xf308 |
0x0000f2f4 mov r0, r5 | r0 = r5;
0x0000f2f8 bl 0x6a04 | r0 = fcn_00006a04 (r0);
0x0000f2fc subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x0000f300 mvneq fp, 0x15 |
| }
| if (r5 == r0) {
0x0000f304 beq 0xf3d4 | goto label_1;
| }
| }
0x0000f308 ldr r1, [pc, 0x8e4] | r1 = *(0xfbf0);
0x0000f30c mov r2, 0xb | r2 = 0xb;
0x0000f310 add r1, pc, r1 | r1 = pc + r1;
0x0000f314 mov r0, r5 | r0 = r5;
0x0000f318 bl 0x5d34 | strncmp (r0, r1, r2);
0x0000f31c ldr r3, [pc, 0x8b8] | r3 = *(0xfbd8);
0x0000f320 add r7, sp, 0x20 | r7 += var_20h;
0x0000f324 ldr sb, [r6, r3] | sb = *((r6 + r3));
0x0000f328 subs fp, r0, 0 |
| if (fp != r0) {
0x0000f32c bne 0xf3e0 | goto label_17;
| }
0x0000f330 ldr r4, [pc, 0x8c0] | r4 = *(0xfbf4);
0x0000f334 mov r1, r7 | r1 = r7;
0x0000f338 add r4, pc, r4 | r4 = pc + r4;
0x0000f33c mov r0, r4 | r0 = r4;
0x0000f340 bl 0x5800 | r0 = stat64 ();
0x0000f344 cmp r0, 0 |
| if (r0 == 0) {
0x0000f348 beq 0xf3e0 | goto label_17;
| }
0x0000f34c bl 0x60ac | r0 = errno_location ();
0x0000f350 ldr r3, [r0] | r3 = *(r0);
0x0000f354 mov r8, r0 | r8 = r0;
0x0000f358 cmp r3, 2 |
| if (r3 != 2) {
0x0000f35c bne 0xf3e0 | goto label_17;
| }
0x0000f360 ldr r1, [pc, 0x894] | r1 = *(0xfbf8);
0x0000f364 mov r0, r4 | r0 = r4;
0x0000f368 bl 0x61cc | r0 = mkdir ();
0x0000f36c cmp r0, 0 |
| if (r0 == 0) {
0x0000f370 beq 0xf3e0 | goto label_17;
| }
0x0000f374 ldr r3, [r8] | r3 = *(r8);
0x0000f378 cmp r3, 0x11 |
| if (r3 == 0x11) {
0x0000f37c beq 0xf3e0 | goto label_17;
| }
0x0000f380 ldr r3, [sb] | r3 = *(sb);
0x0000f384 tst r3, 0x800 |
| if ((r3 & 0x800) == 0) {
0x0000f388 beq 0xf298 | goto label_0;
| }
0x0000f38c ldr r3, [pc, 0x84c] | r3 = *(0xfbdc);
0x0000f390 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x0000f394 ldr r5, [r3] | r5 = *(0xfbdc);
0x0000f398 bl 0x58fc | getpid ();
0x0000f39c ldr r3, [pc, 0x85c] | r3 = *(0xfbfc);
0x0000f3a0 ldr r1, [pc, 0x85c] | r1 = *(0xfc00);
0x0000f3a4 add r3, pc, r3 | r3 = pc + r3;
0x0000f3a8 str r3, [sp] | *(sp) = r3;
0x0000f3ac ldr r3, [pc, 0x854] | r3 = *(0xfc04);
0x0000f3b0 add r1, pc, r1 | r1 = pc + r1;
0x0000f3b4 add r3, pc, r3 | r3 = pc + r3;
0x0000f3b8 mov r2, r0 | r2 = r0;
0x0000f3bc mov r0, r5 | r0 = r5;
0x0000f3c0 bl 0x5c50 | fprintf (r0, r1, r2, r3);
0x0000f3c4 ldr r0, [pc, 0x840] | r0 = *(0xfc08);
0x0000f3c8 mov r1, r4 | r1 = r4;
0x0000f3cc add r0, pc, r0 | r0 = pc + r0;
0x0000f3d0 bl 0xf1cc | fcn_0000f1cc ();
| label_1:
0x0000f3d4 mov r0, fp | r0 = fp;
0x0000f3d8 add sp, sp, 0x8c |
0x0000f3dc pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_17:
0x0000f3e0 mov r1, r7 | r1 = r7;
0x0000f3e4 mov r0, r5 | r0 = r5;
0x0000f3e8 bl 0x5800 | r0 = stat64 ();
0x0000f3ec subs fp, r0, 0 |
| if (fp >= r0) {
0x0000f3f0 bge 0xf428 | goto label_18;
| }
0x0000f3f4 bl 0x60ac | r0 = errno_location ();
0x0000f3f8 ldr r3, [r0] | r3 = *(r0);
0x0000f3fc cmp r3, 2 |
| if (r3 != 2) {
0x0000f400 bne 0xf440 | goto label_19;
| }
| do {
| label_13:
0x0000f404 mov r8, 0 | r8 = 0;
| label_14:
0x0000f408 ldr r1, [pc, 0x800] | r1 = *(0xfc0c);
0x0000f40c mov r0, r5 | r0 = r5;
0x0000f410 add r1, pc, r1 | r1 = pc + r1;
0x0000f414 bl 0x6238 | fopen64 ();
0x0000f418 str r8, [sp, 0xc] | ptr = r8;
0x0000f41c mov r8, r5 | r8 = r5;
0x0000f420 mov r4, r0 | r4 = r0;
0x0000f424 b 0xf4b4 | goto label_20;
| label_18:
0x0000f428 bne 0xf404 |
| } while (r3 != 2);
0x0000f42c mov r1, 2 | r1 = 2;
0x0000f430 mov r0, r5 | r0 = r5;
0x0000f434 bl 0x6064 | r0 = access (r0, r1);
0x0000f438 cmp r0, 0 |
| if (r0 >= 0) {
0x0000f43c bge 0xfb20 | goto label_21;
| }
| label_19:
0x0000f440 ldr r3, [sb] | r3 = *(sb);
0x0000f444 tst r3, 0x800 |
| if ((r3 & 0x800) == 0) {
0x0000f448 beq 0xf298 | goto label_0;
| }
0x0000f44c ldr r3, [pc, 0x78c] | r3 = *(0xfbdc);
0x0000f450 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x0000f454 ldr r4, [r3] | r4 = *(0xfbdc);
0x0000f458 bl 0x58fc | getpid ();
0x0000f45c ldr r3, [pc, 0x7b0] | r3 = *(0xfc10);
0x0000f460 ldr r1, [pc, 0x7b0] | r1 = *(0xfc14);
0x0000f464 add r3, pc, r3 | r3 = pc + r3;
0x0000f468 str r3, [sp] | *(sp) = r3;
0x0000f46c ldr r3, [pc, 0x7a8] | r3 = *(0xfc18);
0x0000f470 add r1, pc, r1 | r1 = pc + r1;
0x0000f474 add r3, pc, r3 | r3 = pc + r3;
0x0000f478 mov r2, r0 | r2 = r0;
0x0000f47c mov r0, r4 | r0 = r4;
0x0000f480 bl 0x5c50 | fprintf (r0, r1, r2, r3);
0x0000f484 ldr r0, [pc, 0x794] | r0 = *(0xfc1c);
0x0000f488 mov r1, r5 | r1 = r5;
0x0000f48c add r0, pc, r0 | r0 = pc + r0;
0x0000f490 bl 0xf1cc | fcn_0000f1cc ();
0x0000f494 b 0xf298 | goto label_0;
| label_15:
0x0000f498 ldr r1, [pc, 0x784] | r1 = *(0xfc20);
0x0000f49c mov r0, r7 | r0 = r7;
0x0000f4a0 add r1, pc, r1 | r1 = pc + r1;
0x0000f4a4 bl 0x5ddc | r0 = fdopen ();
0x0000f4a8 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x0000f4ac strne r8, [sp, 0xc] | ptr = r8;
| }
| if (r4 == r0) {
0x0000f4b0 beq 0xfbcc | goto label_22;
| }
| label_20:
0x0000f4b4 ldr r3, [sb] | r3 = *(sb);
0x0000f4b8 tst r3, 0x800 |
| if ((r3 & 0x800) != 0) {
0x0000f4bc beq 0xf50c |
0x0000f4c0 ldr r3, [pc, 0x718] | r3 = *(0xfbdc);
0x0000f4c4 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x0000f4c8 ldr r7, [r3] | r7 = *(0xfbdc);
0x0000f4cc bl 0x58fc | getpid ();
0x0000f4d0 ldr r3, [pc, 0x750] | r3 = *(0xfc24);
0x0000f4d4 ldr r1, [pc, 0x750] | r1 = *(0xfc28);
0x0000f4d8 add r3, pc, r3 | r3 = pc + r3;
0x0000f4dc str r3, [sp] | *(sp) = r3;
0x0000f4e0 ldr r3, [pc, 0x748] | r3 = *(0xfc2c);
0x0000f4e4 add r1, pc, r1 | r1 = pc + r1;
0x0000f4e8 add r3, pc, r3 | r3 = pc + r3;
0x0000f4ec mov r2, r0 | r2 = r0;
0x0000f4f0 mov r0, r7 | r0 = r7;
0x0000f4f4 bl 0x5c50 | fprintf (r0, r1, r2, r3);
0x0000f4f8 ldr r0, [pc, 0x734] | r0 = *(0xfc30);
0x0000f4fc mov r2, r8 | r2 = r8;
0x0000f500 mov r1, r5 | r1 = r5;
0x0000f504 add r0, pc, r0 | r0 = pc + r0;
0x0000f508 bl 0xf1cc | fcn_0000f1cc ();
| }
0x0000f50c cmp r4, 0 |
| if (r4 != 0) {
0x0000f510 bne 0xf53c | goto label_23;
| }
0x0000f514 bl 0x60ac | r0 = errno_location ();
0x0000f518 ldr fp, [r0] | fp = *(r0);
| label_2:
0x0000f51c ldr r0, [sp, 0xc] | r0 = ptr;
0x0000f520 bl 0x6220 | free (r0);
0x0000f524 ldr r3, [sl, 0x1c] | r3 = *((sl + 0x1c));
0x0000f528 cmp r3, r5 |
| if (r3 == r5) {
0x0000f52c beq 0xf3d4 | goto label_1;
| }
0x0000f530 mov r0, r5 | r0 = r5;
0x0000f534 bl 0x6220 | free (r0);
0x0000f538 b 0xf3d4 | goto label_1;
| label_23:
0x0000f53c ldr r3, [pc, 0x6f4] | r3 = *(0xfc34);
0x0000f540 ldr r7, [sl] | r7 = *(sl);
0x0000f544 add r3, pc, r3 | r3 = pc + r3;
0x0000f548 str r3, [sp, 0x14] | format = r3;
0x0000f54c ldr r3, [pc, 0x6e8] | r3 = *(0xfc38);
0x0000f550 add r3, pc, r3 | r3 = pc + r3;
0x0000f554 str r3, [sp, 0x18] | var_18h = r3;
0x0000f558 ldr r3, [pc, 0x6e0] | r3 = *(0xfc3c);
0x0000f55c add r3, pc, r3 | r3 = pc + r3;
0x0000f560 str r3, [sp, 0x1c] | var_1ch = r3;
| label_3:
0x0000f564 cmp sl, r7 |
| if (sl != r7) {
0x0000f568 bne 0xf640 | goto label_24;
| }
0x0000f56c cmp fp, 0 |
| if (fp < 0) {
0x0000f570 ldrge r3, [sl, 0x18] | r3 = *((sl + 0x18));
| }
0x0000f574 mov r0, r4 | r0 = r4;
0x0000f578 bicge r3, r3, 4 | __asm ("bicge r3, r3, 4");
| if (fp < 0) {
0x0000f57c strge r3, [sl, 0x18] | *((sl + 0x18)) = r3;
| }
| if (fp < 0) {
0x0000f580 movge fp, 1 |
| }
0x0000f584 bl 0x5824 | r0 = fpending ();
0x0000f588 mov r7, r0 | r7 = r0;
0x0000f58c mov r0, r4 | r0 = r4;
0x0000f590 bl 0x5cf8 | ferror (r0);
0x0000f594 str r0, [sp, 8] | var_8h = r0;
0x0000f598 mov r0, r4 | r0 = r4;
0x0000f59c bl 0x5e90 | fclose (r0);
0x0000f5a0 ldr r3, [sp, 8] | r3 = var_8h;
0x0000f5a4 cmp r3, 0 |
0x0000f5a8 mov r4, r0 | r4 = r0;
| if (r3 != 0) {
0x0000f5ac bne 0xf940 | goto label_25;
| }
0x0000f5b0 cmp r0, 0 |
| if (r0 != 0) {
0x0000f5b4 beq 0xf5d0 |
0x0000f5b8 cmp r7, 0 |
| if (r7 != 0) {
0x0000f5bc bne 0xf958 | goto label_26;
| }
0x0000f5c0 bl 0x60ac | r0 = errno_location ();
0x0000f5c4 ldr r3, [r0] | r3 = *(r0);
0x0000f5c8 cmp r3, 9 |
| if (r3 != 9) {
0x0000f5cc bne 0xf958 | goto label_26;
| }
| }
| label_11:
0x0000f5d0 cmp r8, r5 |
| if (r8 == r5) {
0x0000f5d4 beq 0xf51c | goto label_2;
| }
0x0000f5d8 cmp fp, 0 |
| if (fp >= 0) {
0x0000f5dc bge 0xf9b0 | goto label_27;
| }
0x0000f5e0 mov r0, r8 | r0 = r8;
0x0000f5e4 bl 0x5d4c | unlink (r0);
0x0000f5e8 ldr r3, [sb] | r3 = *(sb);
0x0000f5ec tst r3, 0x800 |
| if ((r3 & 0x800) == 0) {
0x0000f5f0 beq 0xf51c | goto label_2;
| }
0x0000f5f4 ldr r3, [pc, 0x5e4] | r3 = *(0xfbdc);
0x0000f5f8 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x0000f5fc ldr r4, [r3] | r4 = *(0xfbdc);
0x0000f600 bl 0x58fc | getpid ();
0x0000f604 ldr r3, [pc, 0x638] | r3 = *(0xfc40);
0x0000f608 ldr r1, [pc, 0x638] | r1 = *(0xfc44);
0x0000f60c add r3, pc, r3 | r3 = pc + r3;
0x0000f610 str r3, [sp] | *(sp) = r3;
0x0000f614 ldr r3, [pc, 0x630] | r3 = *(0xfc48);
0x0000f618 add r1, pc, r1 | r1 = pc + r1;
0x0000f61c add r3, pc, r3 | r3 = pc + r3;
0x0000f620 mov r2, r0 | r2 = r0;
0x0000f624 mov r0, r4 | r0 = r4;
0x0000f628 bl 0x5c50 | fprintf (r0, r1, r2, r3);
0x0000f62c ldr r0, [pc, 0x61c] | r0 = *(0xfc4c);
0x0000f630 mov r1, r8 | r1 = r8;
0x0000f634 add r0, pc, r0 | r0 = pc + r0;
| label_12:
0x0000f638 bl 0xf1cc | fcn_0000f1cc ();
0x0000f63c b 0xf51c | goto label_2;
| label_24:
0x0000f640 ldr r3, [r7, 0x1c] | r3 = *((r7 + 0x1c));
0x0000f644 cmp r3, 0 |
| if (r3 == 0) {
0x0000f648 beq 0xf738 | goto label_28;
| }
0x0000f64c ldr r3, [r7, 0x38] | r3 = *((r7 + 0x38));
0x0000f650 ands r3, r3, 8 | r3 &= 8;
| if (r3 != r3) {
0x0000f654 bne 0xf738 | goto label_28;
| }
0x0000f658 ldr r2, [r7, 0x14] | r2 = *((r7 + 0x14));
0x0000f65c ldrsb r2, [r2] | r2 = *(r2);
0x0000f660 cmp r2, 0x2f |
| if (r2 == 0x2f) {
0x0000f664 movne fp, r3 |
| }
| if (r2 != 0x2f) {
0x0000f668 bne 0xf738 | goto label_28;
| }
0x0000f66c ldr r3, [sb] | r3 = *(sb);
0x0000f670 tst r3, 0x800 |
| if ((r3 & 0x800) != 0) {
0x0000f674 beq 0xf6d0 |
0x0000f678 ldr r3, [pc, 0x560] | r3 = *(0xfbdc);
0x0000f67c ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x0000f680 ldr fp, [r3] | fp = *(0xfbdc);
0x0000f684 bl 0x58fc | getpid ();
0x0000f688 ldr r3, [pc, 0x5c4] | r3 = *(0xfc50);
0x0000f68c ldr r1, [pc, 0x5c4] | r1 = *(0xfc54);
0x0000f690 add r3, pc, r3 | r3 = pc + r3;
0x0000f694 str r3, [sp] | *(sp) = r3;
0x0000f698 ldr r3, [pc, 0x5bc] | r3 = *(0xfc58);
0x0000f69c add r1, pc, r1 | r1 = pc + r1;
0x0000f6a0 add r3, pc, r3 | r3 = pc + r3;
0x0000f6a4 mov r2, r0 | r2 = r0;
0x0000f6a8 mov r0, fp | r0 = fp;
0x0000f6ac bl 0x5c50 | fprintf (r0, r1, r2, r3);
0x0000f6b0 ldr r2, [r7, 0x1c] | r2 = *((r7 + 0x1c));
0x0000f6b4 ldr r1, [r7, 0x14] | r1 = *((r7 + 0x14));
0x0000f6b8 cmp r2, 0 |
| if (r2 != 0) {
0x0000f6bc ldreq r2, [pc, 0x59c] | r2 = *((pc + 0x59c));
| }
| if (r2 != 0) {
0x0000f6c0 addeq r2, pc, r2 | r2 = pc + r2;
| }
0x0000f6c4 ldr r0, [pc, 0x598] | r0 = *(0xfc60);
0x0000f6c8 add r0, pc, r0 | r0 = pc + r0;
0x0000f6cc bl 0xf1cc | fcn_0000f1cc ();
| }
0x0000f6d0 ldr r3, [r7, 0x34] | r3 = *((r7 + 0x34));
0x0000f6d4 ldr r1, [sp, 0x14] | r1 = format;
0x0000f6d8 str r3, [sp] | *(sp) = r3;
0x0000f6dc mov r0, r4 | r0 = r4;
0x0000f6e0 ldr r2, [r7, 0x28] | r2 = *((r7 + 0x28));
0x0000f6e4 ldr r3, [r7, 0x30] | r3 = *((r7 + 0x30));
0x0000f6e8 bl 0x5c50 | fprintf (r0, r1, r2, r3);
0x0000f6ec ldr r2, [r7, 0x20] | r2 = *((r7 + 0x20));
0x0000f6f0 cmp r2, 0 |
| if (r2 != 0) {
0x0000f6f4 beq 0xf704 |
0x0000f6f8 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x0000f6fc mov r0, r4 | r0 = r4;
0x0000f700 bl 0x5c50 | fprintf (r0, r1);
| }
0x0000f704 mov r3, r7 | r3 = r7;
0x0000f708 ldr r2, [r3, 8]! | r2 = *((r3 += 8));
0x0000f70c str r2, [sp, 8] | var_8h = r2;
0x0000f710 str r3, [sp, 0x10] | var_10h = r3;
| do {
0x0000f714 ldr r3, [sp, 8] | r3 = var_8h;
0x0000f718 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0000f71c cmp r3, r2 |
| if (r3 == r2) {
0x0000f720 bne 0xf740 |
0x0000f724 ldr r2, [r7, 0x14] | r2 = *((r7 + 0x14));
0x0000f728 ldr r1, [sp, 0x18] | r1 = var_18h;
0x0000f72c mov r0, r4 | r0 = r4;
0x0000f730 bl 0x5c50 | fprintf (r0, r1, r2);
0x0000f734 mov fp, 0 |
| label_28:
0x0000f738 ldr r7, [r7] | r7 = *(r7);
0x0000f73c b 0xf564 | goto label_3;
| }
0x0000f740 ldr r3, [r4, 0x34] | r3 = *((r4 + 0x34));
0x0000f744 cmp r3, 0 |
| if (r3 == 0) {
0x0000f748 beq 0xf83c | goto label_29;
| }
0x0000f74c ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0000f750 ldr r2, [r4, 0x1c] | r2 = *((r4 + 0x1c));
0x0000f754 cmp r3, r2 |
| if (r3 >= r2) {
0x0000f758 bhs 0xf82c | goto label_30;
| }
0x0000f75c add r2, r3, 1 | r2 = r3 + 1;
0x0000f760 str r2, [r4, 0x10] | *((r4 + 0x10)) = r2;
0x0000f764 mov r2, 0x20 | r2 = 0x20;
0x0000f768 strb r2, [r3] | *(r3) = r2;
| label_4:
0x0000f76c ldr r3, [sp, 8] | r3 = var_8h;
0x0000f770 mov r1, r4 | r1 = r4;
0x0000f774 ldr r0, [r3, 0x10] | r0 = *((r3 + 0x10));
0x0000f778 bl 0x6154 | fputs (r0, r1);
0x0000f77c ldr r3, [r4, 0x34] | r3 = *((r4 + 0x34));
0x0000f780 cmp r3, 0 |
| if (r3 == 0) {
0x0000f784 beq 0xf85c | goto label_31;
| }
0x0000f788 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0000f78c ldr r2, [r4, 0x1c] | r2 = *((r4 + 0x1c));
0x0000f790 cmp r3, r2 |
| if (r3 >= r2) {
0x0000f794 bhs 0xf84c | goto label_32;
| }
0x0000f798 add r2, r3, 1 | r2 = r3 + 1;
0x0000f79c str r2, [r4, 0x10] | *((r4 + 0x10)) = r2;
0x0000f7a0 mov r2, 0x3d | r2 = 0x3d;
0x0000f7a4 strb r2, [r3] | *(r3) = r2;
| label_5:
0x0000f7a8 ldr r3, [sp, 8] | r3 = var_8h;
0x0000f7ac ldr fp, [r3, 0x14] | fp = *((r3 + 0x14));
0x0000f7b0 ldr r3, [r4, 0x34] | r3 = *((r4 + 0x34));
0x0000f7b4 cmp r3, 0 |
| if (r3 == 0) {
0x0000f7b8 beq 0xf87c | goto label_33;
| }
0x0000f7bc ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0000f7c0 ldr r2, [r4, 0x1c] | r2 = *((r4 + 0x1c));
0x0000f7c4 cmp r3, r2 |
| if (r3 >= r2) {
0x0000f7c8 bhs 0xf86c | goto label_34;
| }
0x0000f7cc add r2, r3, 1 | r2 = r3 + 1;
0x0000f7d0 str r2, [r4, 0x10] | *((r4 + 0x10)) = r2;
0x0000f7d4 mov r2, 0x22 | r2 = 0x22;
0x0000f7d8 strb r2, [r3] | *(r3) = r2;
| label_6:
0x0000f7dc cmp fp, 0 |
0x0000f7e0 ldr r2, [r4, 0x34] | r2 = *((r4 + 0x34));
| if (fp != 0) {
0x0000f7e4 beq 0xf7f4 |
0x0000f7e8 ldrsb r3, [fp] | r3 = *(fp);
0x0000f7ec cmp r3, 0 |
| if (r3 != 0) {
0x0000f7f0 bne 0xf88c | goto label_35;
| }
| }
0x0000f7f4 cmp r2, 0 |
| if (r2 == 0) {
0x0000f7f8 beq 0xf930 | goto label_36;
| }
0x0000f7fc ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0000f800 ldr r2, [r4, 0x1c] | r2 = *((r4 + 0x1c));
0x0000f804 cmp r3, r2 |
| if (r3 >= r2) {
0x0000f808 bhs 0xf920 | goto label_37;
| }
0x0000f80c add r2, r3, 1 | r2 = r3 + 1;
0x0000f810 str r2, [r4, 0x10] | *((r4 + 0x10)) = r2;
0x0000f814 mov r2, 0x22 | r2 = 0x22;
0x0000f818 strb r2, [r3] | *(r3) = r2;
| label_10:
0x0000f81c ldr r3, [sp, 8] | r3 = var_8h;
0x0000f820 ldr r3, [r3] | r3 = *(r3);
0x0000f824 str r3, [sp, 8] | var_8h = r3;
0x0000f828 b 0xf714 |
| } while (1);
| label_30:
0x0000f82c mov r1, r4 | r1 = r4;
0x0000f830 mov r0, 0x20 | r0 = 0x20;
0x0000f834 bl 0x622c | fputc_unlocked ();
0x0000f838 b 0xf76c | goto label_4;
| label_29:
0x0000f83c mov r1, r4 | r1 = r4;
0x0000f840 mov r0, 0x20 | r0 = 0x20;
0x0000f844 bl 0x5ff8 | fputc (r0, r1);
0x0000f848 b 0xf76c | goto label_4;
| label_32:
0x0000f84c mov r1, r4 | r1 = r4;
0x0000f850 mov r0, 0x3d | r0 = 0x3d;
0x0000f854 bl 0x622c | fputc_unlocked ();
0x0000f858 b 0xf7a8 | goto label_5;
| label_31:
0x0000f85c mov r1, r4 | r1 = r4;
0x0000f860 mov r0, 0x3d | r0 = 0x3d;
0x0000f864 bl 0x5ff8 | fputc (r0, r1);
0x0000f868 b 0xf7a8 | goto label_5;
| label_34:
0x0000f86c mov r1, r4 | r1 = r4;
0x0000f870 mov r0, 0x22 | r0 = 0x22;
| label_8:
0x0000f874 bl 0x622c | fputc_unlocked ();
0x0000f878 b 0xf7dc | goto label_6;
| label_33:
0x0000f87c mov r1, r4 | r1 = r4;
0x0000f880 mov r0, 0x22 | r0 = 0x22;
| label_9:
0x0000f884 bl 0x5ff8 | fputc (r0, r1);
0x0000f888 b 0xf7dc | goto label_6;
| label_35:
0x0000f88c cmp r3, 0x5c |
0x0000f890 cmpne r3, 0x22 | __asm ("cmpne r3, 0x22");
| if (r3 != 0x5c) {
0x0000f894 bne 0xf8c0 | goto label_7;
| }
0x0000f898 cmp r2, 0 |
| if (r2 == 0) {
0x0000f89c beq 0xf900 | goto label_38;
| }
0x0000f8a0 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0000f8a4 ldr r2, [r4, 0x1c] | r2 = *((r4 + 0x1c));
0x0000f8a8 cmp r3, r2 |
| if (r3 >= r2) {
0x0000f8ac bhs 0xf8f0 | goto label_39;
| }
0x0000f8b0 add r2, r3, 1 | r2 = r3 + 1;
0x0000f8b4 str r2, [r4, 0x10] | *((r4 + 0x10)) = r2;
0x0000f8b8 mov r2, 0x5c | r2 = 0x5c;
0x0000f8bc strb r2, [r3] | *(r3) = r2;
| do {
| label_7:
0x0000f8c0 ldr r3, [r4, 0x34] | r3 = *((r4 + 0x34));
0x0000f8c4 ldrsb r0, [fp], 1 | r0 = *(fp);
| fp++;
0x0000f8c8 cmp r3, 0 |
| if (r3 == 0) {
0x0000f8cc beq 0xf918 | goto label_40;
| }
0x0000f8d0 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0000f8d4 ldr r2, [r4, 0x1c] | r2 = *((r4 + 0x1c));
0x0000f8d8 cmp r3, r2 |
| if (r3 >= r2) {
0x0000f8dc bhs 0xf910 | goto label_41;
| }
0x0000f8e0 add r2, r3, 1 | r2 = r3 + 1;
0x0000f8e4 str r2, [r4, 0x10] | *((r4 + 0x10)) = r2;
0x0000f8e8 strb r0, [r3] | *(r3) = r0;
0x0000f8ec b 0xf7dc | goto label_6;
| label_39:
0x0000f8f0 mov r1, r4 | r1 = r4;
0x0000f8f4 mov r0, 0x5c | r0 = 0x5c;
0x0000f8f8 bl 0x622c | fputc_unlocked ();
0x0000f8fc b 0xf8c0 |
| } while (1);
| label_38:
0x0000f900 mov r1, r4 | r1 = r4;
0x0000f904 mov r0, 0x5c | r0 = 0x5c;
0x0000f908 bl 0x5ff8 | fputc (r0, r1);
0x0000f90c b 0xf8c0 | goto label_7;
| label_41:
0x0000f910 mov r1, r4 | r1 = r4;
0x0000f914 b 0xf874 | goto label_8;
| label_40:
0x0000f918 mov r1, r4 | r1 = r4;
0x0000f91c b 0xf884 | goto label_9;
| label_37:
0x0000f920 mov r1, r4 | r1 = r4;
0x0000f924 mov r0, 0x22 | r0 = 0x22;
0x0000f928 bl 0x622c | fputc_unlocked ();
0x0000f92c b 0xf81c | goto label_10;
| label_36:
0x0000f930 mov r1, r4 | r1 = r4;
0x0000f934 mov r0, 0x22 | r0 = 0x22;
0x0000f938 bl 0x5ff8 | fputc (r0, r1);
0x0000f93c b 0xf81c | goto label_10;
| label_25:
0x0000f940 cmp r0, 0 |
| if (r0 == 0) {
0x0000f944 bne 0xf958 |
0x0000f948 bl 0x60ac | r0 = errno_location ();
0x0000f94c ldr r3, [r0] | r3 = *(r0);
0x0000f950 cmp r3, 0x20 |
| if (r3 != 0x20) {
0x0000f954 strne r4, [r0] | *(r0) = r4;
| goto label_26;
| }
| }
| label_26:
0x0000f958 ldr r3, [sb] | r3 = *(sb);
0x0000f95c tst r3, 0x800 |
| if ((r3 & 0x800) == 0) {
0x0000f960 beq 0xf5d0 | goto label_11;
| }
0x0000f964 ldr r3, [pc, 0x274] | r3 = *(0xfbdc);
0x0000f968 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x0000f96c ldr r4, [r3] | r4 = *(0xfbdc);
0x0000f970 bl 0x58fc | getpid ();
0x0000f974 ldr r3, [pc, 0x2ec] | r3 = *(0xfc64);
0x0000f978 ldr r1, [pc, 0x2ec] | r1 = *(0xfc68);
0x0000f97c add r3, pc, r3 | r3 = pc + r3;
0x0000f980 str r3, [sp] | *(sp) = r3;
0x0000f984 ldr r3, [pc, 0x2e4] | r3 = *(0xfc6c);
0x0000f988 add r1, pc, r1 | r1 = pc + r1;
0x0000f98c add r3, pc, r3 | r3 = pc + r3;
0x0000f990 mov r2, r0 | r2 = r0;
0x0000f994 mov r0, r4 | r0 = r4;
0x0000f998 bl 0x5c50 | fprintf (r0, r1, r2, r3);
0x0000f99c ldr r0, [pc, 0x2d0] | r0 = *(0xfc70);
0x0000f9a0 mov r1, r5 | r1 = r5;
0x0000f9a4 add r0, pc, r0 | r0 = pc + r0;
0x0000f9a8 bl 0xf1cc | fcn_0000f1cc ();
0x0000f9ac b 0xf5d0 | goto label_11;
| label_27:
0x0000f9b0 mov r0, r5 | r0 = r5;
0x0000f9b4 bl 0x6118 | r0 = strlen (r0);
0x0000f9b8 add r0, r0, 5 | r0 += 5;
0x0000f9bc bl 0x59f8 | r0 = malloc (r0);
0x0000f9c0 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x0000f9c4 beq 0xfa54 |
0x0000f9c8 ldr r1, [pc, 0x2a8] | r1 = *(0xfc74);
0x0000f9cc mov r2, r5 | r2 = r5;
0x0000f9d0 add r1, pc, r1 | r1 = pc + r1;
0x0000f9d4 bl 0x5f68 | sprintf (r0, r1, r2)
0x0000f9d8 mov r0, r4 | r0 = r4;
0x0000f9dc bl 0x5d4c | unlink (r0);
0x0000f9e0 mov r1, r4 | r1 = r4;
0x0000f9e4 mov r0, r5 | r0 = r5;
0x0000f9e8 bl 0x60b8 | r0 = link ();
0x0000f9ec cmp r0, 0 |
| if (r0 != 0) {
0x0000f9f0 beq 0xfa4c |
0x0000f9f4 ldr r3, [sb] | r3 = *(sb);
0x0000f9f8 tst r3, 0x800 |
| if ((r3 & 0x800) == 0) {
0x0000f9fc beq 0xfa4c | goto label_42;
| }
0x0000fa00 ldr r3, [pc, 0x1d8] | r3 = *(0xfbdc);
0x0000fa04 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x0000fa08 ldr r7, [r3] | r7 = *(0xfbdc);
0x0000fa0c bl 0x58fc | getpid ();
0x0000fa10 ldr r3, [pc, 0x264] | r3 = *(0xfc78);
0x0000fa14 ldr r1, [pc, 0x264] | r1 = *(0xfc7c);
0x0000fa18 add r3, pc, r3 | r3 = pc + r3;
0x0000fa1c str r3, [sp] | *(sp) = r3;
0x0000fa20 ldr r3, [pc, 0x25c] | r3 = *(0xfc80);
0x0000fa24 add r1, pc, r1 | r1 = pc + r1;
0x0000fa28 add r3, pc, r3 | r3 = pc + r3;
0x0000fa2c mov r2, r0 | r2 = r0;
0x0000fa30 mov r0, r7 | r0 = r7;
0x0000fa34 bl 0x5c50 | fprintf (r0, r1, r2, r3);
0x0000fa38 ldr r0, [pc, 0x248] | r0 = *(0xfc84);
0x0000fa3c mov r2, r4 | r2 = r4;
0x0000fa40 mov r1, r5 | r1 = r5;
0x0000fa44 add r0, pc, r0 | r0 = pc + r0;
0x0000fa48 bl 0xf1cc | fcn_0000f1cc ();
| }
| label_42:
0x0000fa4c mov r0, r4 | r0 = r4;
0x0000fa50 bl 0x6220 | free (r0);
| }
0x0000fa54 mov r1, r5 | r1 = r5;
0x0000fa58 mov r0, r8 | r0 = r8;
0x0000fa5c bl 0x5bb4 | r0 = rename (r0, r1);
0x0000fa60 cmp r0, 0 |
| if (r0 == 0) {
0x0000fa64 beq 0xfacc | goto label_43;
| }
0x0000fa68 bl 0x60ac | errno_location ();
0x0000fa6c ldr r3, [sb] | r3 = *(sb);
0x0000fa70 tst r3, 0x800 |
0x0000fa74 ldr fp, [r0] | fp = *(r0);
| if ((r3 & 0x800) == 0) {
0x0000fa78 beq 0xf51c | goto label_2;
| }
0x0000fa7c ldr r3, [pc, 0x15c] | r3 = *(0xfbdc);
0x0000fa80 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x0000fa84 ldr r4, [r3] | r4 = *(0xfbdc);
0x0000fa88 bl 0x58fc | getpid ();
0x0000fa8c ldr r3, [pc, 0x1f8] | r3 = *(0xfc88);
0x0000fa90 ldr r1, [pc, 0x1f8] | r1 = *(0xfc8c);
0x0000fa94 add r3, pc, r3 | r3 = pc + r3;
0x0000fa98 str r3, [sp] | *(sp) = r3;
0x0000fa9c ldr r3, [pc, 0x1f0] | r3 = *(0xfc90);
0x0000faa0 add r1, pc, r1 | r1 = pc + r1;
0x0000faa4 add r3, pc, r3 | r3 = pc + r3;
0x0000faa8 mov r2, r0 | r2 = r0;
0x0000faac mov r0, r4 | r0 = r4;
0x0000fab0 bl 0x5c50 | fprintf (r0, r1, r2, r3);
0x0000fab4 ldr r0, [pc, 0x1dc] | r0 = *(0xfc94);
0x0000fab8 mov r2, r5 | r2 = r5;
0x0000fabc mov r1, r8 | r1 = r8;
0x0000fac0 add r0, pc, r0 | r0 = pc + r0;
0x0000fac4 bl 0xf1cc | fcn_0000f1cc ();
0x0000fac8 b 0xf51c | goto label_2;
| label_43:
0x0000facc ldr r3, [sb] | r3 = *(sb);
0x0000fad0 tst r3, 0x800 |
| if ((r3 & 0x800) == 0) {
0x0000fad4 beq 0xf51c | goto label_2;
| }
0x0000fad8 ldr r3, [pc, 0x100] | r3 = *(0xfbdc);
0x0000fadc ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x0000fae0 ldr r4, [r3] | r4 = *(0xfbdc);
0x0000fae4 bl 0x58fc | getpid ();
0x0000fae8 ldr r3, [pc, 0x1ac] | r3 = *(0xfc98);
0x0000faec ldr r1, [pc, 0x1ac] | r1 = *(0xfc9c);
0x0000faf0 add r3, pc, r3 | r3 = pc + r3;
0x0000faf4 str r3, [sp] | *(sp) = r3;
0x0000faf8 ldr r3, [pc, 0x1a4] | r3 = *(0xfca0);
0x0000fafc add r1, pc, r1 | r1 = pc + r1;
0x0000fb00 add r3, pc, r3 | r3 = pc + r3;
0x0000fb04 mov r2, r0 | r2 = r0;
0x0000fb08 mov r0, r4 | r0 = r4;
0x0000fb0c bl 0x5c50 | fprintf (r0, r1, r2, r3);
0x0000fb10 ldr r0, [pc, 0x190] | r0 = *(0xfca4);
0x0000fb14 mov r1, r8 | r1 = r8;
0x0000fb18 add r0, pc, r0 | r0 = pc + r0;
0x0000fb1c b 0xf638 | goto label_12;
| label_21:
0x0000fb20 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0000fb24 and r3, r3, 0xf000 | r3 &= 0xf000;
0x0000fb28 cmp r3, 0x8000 |
| if (r3 != 0x8000) {
0x0000fb2c bne 0xf404 | goto label_13;
| }
0x0000fb30 mov r0, r5 | r0 = r5;
0x0000fb34 bl 0x6118 | r0 = strlen (r0);
0x0000fb38 add r0, r0, 8 | r0 += 8;
0x0000fb3c bl 0x59f8 | r0 = malloc (r0);
0x0000fb40 subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 == r0) {
0x0000fb44 beq 0xf404 | goto label_13;
| }
0x0000fb48 ldr r1, [pc, 0x15c] | r1 = *(0xfca8);
0x0000fb4c mov r2, r5 | r2 = r5;
0x0000fb50 add r1, pc, r1 | r1 = pc + r1;
0x0000fb54 bl 0x5f68 | sprintf (r0, r1, r2)
0x0000fb58 mov r0, r8 | r0 = r8;
0x0000fb5c bl 0x22fc8 | r0 = fcn_00022fc8 ();
0x0000fb60 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 < r0) {
0x0000fb64 blt 0xf408 | goto label_14;
| }
0x0000fb68 mov r1, 0x1a4 | r1 = 0x1a4;
0x0000fb6c bl 0x58c0 | r0 = fchmod (r0, r1);
0x0000fb70 cmp r0, 0 |
| if (r0 == 0) {
0x0000fb74 beq 0xf498 | goto label_15;
| }
0x0000fb78 ldr r3, [sb] | r3 = *(sb);
0x0000fb7c tst r3, 0x800 |
| if ((r3 & 0x800) != 0) {
0x0000fb80 beq 0xfbcc |
0x0000fb84 ldr r3, [pc, 0x54] | r3 = *(0xfbdc);
0x0000fb88 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x0000fb8c ldr r4, [r3] | r4 = *(0xfbdc);
0x0000fb90 bl 0x58fc | getpid ();
0x0000fb94 ldr r3, [pc, 0x114] | r3 = *(0xfcac);
0x0000fb98 ldr r1, [pc, 0x114] | r1 = *(0xfcb0);
0x0000fb9c add r3, pc, r3 | r3 = pc + r3;
0x0000fba0 str r3, [sp] | *(sp) = r3;
0x0000fba4 ldr r3, [pc, 0x10c] | r3 = *(0xfcb4);
0x0000fba8 add r1, pc, r1 | r1 = pc + r1;
0x0000fbac add r3, pc, r3 | r3 = pc + r3;
0x0000fbb0 mov r2, r0 | r2 = r0;
0x0000fbb4 mov r0, r4 | r0 = r4;
0x0000fbb8 bl 0x5c50 | fprintf (r0, r1, r2, r3);
0x0000fbbc ldr r0, [pc, 0xf8] | r0 = *(0xfcb8);
0x0000fbc0 mov r1, r5 | r1 = r5;
0x0000fbc4 add r0, pc, r0 | r0 = pc + r0;
0x0000fbc8 bl 0xf1cc | fcn_0000f1cc ();
| }
| label_22:
0x0000fbcc mov r0, r7 | r0 = r7;
0x0000fbd0 bl 0x61e4 | close (r0);
0x0000fbd4 b 0xf408 | goto label_14;
| }
; 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/lib/libblkid.so.1.1.0 @ 0x23e9c */
| #include <stdint.h>
|
; (fcn) fcn.00023e9c () | void fcn_00023e9c (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| char * format;
| char * var_ch;
| char * var_10h;
| int32_t var_14h;
| wchar_t * pwc;
| int32_t var_20h;
| int32_t var_4h_2;
| int32_t var_2ch;
| r0 = arg1;
| r1 = arg2;
0x00023e9c push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00023ea0 mov fp, r3 |
0x00023ea4 ldr r3, [pc, 0x230] | r3 = *(0x240d8);
0x00023ea8 sub sp, sp, 0x2c |
0x00023eac add r3, pc, r3 | r3 = pc + r3;
0x00023eb0 subs r5, r0, 0 | r5 = r0 - 0;
0x00023eb4 mov r6, r1 | r6 = r1;
0x00023eb8 mov r8, r2 | r8 = r2;
0x00023ebc str r3, [sp, 4] | var_4h = r3;
0x00023ec0 mov r4, 0 | r4 = 0;
| if (r5 != r0) {
0x00023ec4 moveq r0, r5 | r0 = r5;
| }
| if (r5 != r0) {
0x00023ec8 beq 0x23ed0 |
0x00023ecc bl 0x6118 | strlen (r0);
| }
0x00023ed0 add r3, sp, 0x20 | r3 += var_20h;
0x00023ed4 cmp r0, 0 |
0x00023ed8 str r3, [sp] | *(sp) = r3;
0x00023edc str r4, [sp, 0x20] | var_20h = r4;
0x00023ee0 str r4, [r3, 4] | var_4h_2 = r4;
0x00023ee4 clz r3, r8 | r3 &= r8;
0x00023ee8 lsr r3, r3, 5 | r3 >>= 5;
| if (r0 != 0) {
0x00023eec moveq r3, 1 | r3 = 1;
| }
0x00023ef0 cmp r3, 0 |
| if (r3 == 0) {
0x00023ef4 movne r0, 0 | r0 = 0;
| }
| if (r3 != 0) {
0x00023ef8 bne 0x23f48 | goto label_3;
| }
0x00023efc str r3, [r6] | *(r6) = r3;
0x00023f00 ldr r3, [pc, 0x1d8] | r3 = *(0x240dc);
0x00023f04 mov r4, r8 | r4 = r8;
0x00023f08 add r3, pc, r3 | r3 = pc + r3;
0x00023f0c str r3, [sp, 8] | format = r3;
0x00023f10 ldr r3, [pc, 0x1cc] | r3 = *(0x240e0);
0x00023f14 add r3, pc, r3 | r3 = pc + r3;
0x00023f18 str r3, [sp, 0xc] | var_ch = r3;
0x00023f1c ldr r3, [pc, 0x1c4] | r3 = *(0x240e4);
0x00023f20 add r3, pc, r3 | r3 = pc + r3;
0x00023f24 str r3, [sp, 0x10] | var_10h = r3;
| do {
| label_0:
0x00023f28 cmp r5, 0 |
| if (r5 != 0) {
0x00023f2c beq 0x23f3c |
0x00023f30 ldrsb r7, [r5] | r7 = *(r5);
0x00023f34 cmp r7, 0 |
| if (r7 != 0) {
0x00023f38 bne 0x23f50 | goto label_4;
| }
| }
| label_1:
0x00023f3c mov r3, 0 | r3 = 0;
0x00023f40 mov r0, r8 | r0 = r8;
0x00023f44 strb r3, [r4] | *(r4) = r3;
| label_3:
0x00023f48 add sp, sp, 0x2c |
0x00023f4c pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_4:
0x00023f50 cmp fp, 0 |
| if (fp == 0) {
0x00023f54 beq 0x23f78 | goto label_5;
| }
0x00023f58 mov r1, r7 | r1 = r7;
0x00023f5c mov r0, fp | r0 = fp;
0x00023f60 bl 0x613c | r0 = strchr (r0, r1);
0x00023f64 cmp r0, 0 |
| if (r0 == 0) {
0x00023f68 strbne r7, [r4] | *(r4) = r7;
| }
| if (r0 == 0) {
0x00023f6c addne r5, r5, 1 | r5++;
| }
| if (r0 == 0) {
0x00023f70 addne r4, r4, 1 | r4++;
| }
0x00023f74 bne 0x23f28 |
| } while (r0 != 0);
| label_5:
0x00023f78 cmp r7, 0x5c |
0x00023f7c and r2, r7, 0xff | r2 = r7 & 0xff;
| if (r7 == 0x5c) {
0x00023f80 bne 0x23f90 |
0x00023f84 ldrsb r3, [r5, 1] | r3 = *((r5 + 1));
0x00023f88 cmp r3, 0x78 |
| if (r3 == 0x78) {
0x00023f8c beq 0x23fb0 | goto label_6;
| }
| }
0x00023f90 ldr r1, [pc, 0x154] | r1 = *(0x240e8);
0x00023f94 ldr r0, [sp, 4] | r0 = var_4h;
0x00023f98 lsl r3, r2, 1 | r3 = r2 << 1;
0x00023f9c ldr sb, [r0, r1] | sb = *((r0 + r1));
0x00023fa0 ldr r1, [sb] | r1 = *(sb);
0x00023fa4 ldrh r3, [r1, r3] | r3 = *((r1 + r3));
0x00023fa8 tst r3, 0x200 |
| if ((r3 & 0x200) != 0) {
0x00023fac beq 0x23fd4 |
| label_6:
0x00023fb0 mov r0, r4 | r0 = r4;
0x00023fb4 ldr r1, [sp, 8] | r1 = format;
0x00023fb8 bl 0x5f68 | sprintf (r0, r1, r2)
0x00023fbc ldr r3, [r6] | r3 = *(r6);
0x00023fc0 add r4, r4, 4 | r4 += 4;
0x00023fc4 add r3, r3, 4 | r3 += 4;
0x00023fc8 str r3, [r6] | *(r6) = r3;
0x00023fcc add r5, r5, 1 | r5++;
0x00023fd0 b 0x23f28 | goto label_0;
| }
0x00023fd4 bl 0x5c80 | stdlib_mb_cur_max ();
0x00023fd8 ldr r3, [sp] | r3 = *(sp);
0x00023fdc mov r1, r5 | r1 = r5;
0x00023fe0 mov r2, r0 | r2 = r0;
0x00023fe4 add r0, sp, 0x1c | r0 += pwc;
0x00023fe8 bl 0x59b0 | mbrtowc (r0, r1, r2, r3);
0x00023fec subs r7, r0, 0 | r7 -= pwc;
| if (r7 == pwc) {
0x00023ff0 beq 0x23f3c | goto label_1;
| }
0x00023ff4 cmn r7, 2 |
| if (r7 <= 2) {
0x00023ff8 blo 0x24058 | goto label_7;
| }
0x00023ffc ldrb r2, [r5] | r2 = *(r5);
0x00024000 ldr r1, [sb] | r1 = *(sb);
0x00024004 lsl r3, r2, 1 | r3 = r2 << 1;
0x00024008 ldrh r3, [r1, r3] | r3 = *((r1 + r3));
0x0002400c tst r3, 0x40 |
| if ((r3 & 0x40) != 0) {
0x00024010 bne 0x2403c | goto label_8;
| }
0x00024014 mov r0, r4 | r0 = r4;
0x00024018 ldr r1, [sp, 0x10] | r1 = var_10h;
0x0002401c bl 0x5f68 | sprintf (r0, r1, r2)
0x00024020 ldr r3, [r6] | r3 = *(r6);
0x00024024 add r4, r4, 4 | r4 += 4;
0x00024028 add r3, r3, 4 | r3 += 4;
0x0002402c str r3, [r6] | *(r6) = r3;
| do {
0x00024030 mov r7, 1 | r7 = 1;
| label_2:
0x00024034 add r5, r5, r7 | r5 += r7;
0x00024038 b 0x23f28 | goto label_0;
| label_8:
0x0002403c ldr r3, [r6] | r3 = *(r6);
0x00024040 add r4, r4, 1 | r4++;
0x00024044 add r3, r3, 1 | r3++;
0x00024048 str r3, [r6] | *(r6) = r3;
0x0002404c ldrsb r3, [r5] | r3 = *(r5);
0x00024050 strb r3, [r4, -1] | *((r4 - 1)) = r3;
0x00024054 b 0x24030 |
| } while (1);
| label_7:
0x00024058 ldr sb, [sp, 0x1c] | sb = pwc;
0x0002405c mov r0, sb | r0 = sb;
0x00024060 bl 0x5b9c | r0 = iswprint (r0);
0x00024064 cmp r0, 0 |
| if (r0 != 0) {
0x00024068 bne 0x240b0 | goto label_9;
| }
0x0002406c mov sb, r5 | sb = r5;
0x00024070 add r3, r7, r5 | r3 = r7 + r5;
0x00024074 mov sl, r4 | sl = r4;
| do {
0x00024078 ldrb r2, [sb], 1 | r2 = *(sb);
| sb++;
0x0002407c mov r0, sl | r0 = sl;
0x00024080 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00024084 str r3, [sp, 0x14] | var_14h = r3;
0x00024088 bl 0x5f68 | sprintf (r0, r1, r2)
0x0002408c ldr r2, [r6] | r2 = *(r6);
0x00024090 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00024094 add r2, r2, 4 | r2 += 4;
0x00024098 cmp sb, r3 |
0x0002409c add sl, sl, 4 | sl += 4;
0x000240a0 str r2, [r6] | *(r6) = r2;
0x000240a4 bne 0x24078 |
| } while (sb != r3);
0x000240a8 add r4, r4, r7, lsl 2 | r4 += (r7 << 2);
0x000240ac b 0x24034 | goto label_2;
| label_9:
0x000240b0 mov r2, r7 | r2 = r7;
0x000240b4 mov r1, r5 | r1 = r5;
0x000240b8 mov r0, r4 | r0 = r4;
0x000240bc bl 0x5950 | memcpy (r0, r1, r2);
0x000240c0 mov r0, sb | r0 = sb;
0x000240c4 bl 0x5d70 | wcwidth ();
0x000240c8 ldr r3, [r6] | r3 = *(r6);
0x000240cc add r4, r4, r7 | r4 += r7;
0x000240d0 add r0, r3, r0 | r0 = r3 + r0;
0x000240d4 str r0, [r6] | *(r6) = r0;
0x000240d8 b 0x24034 | 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/lib/libblkid.so.1.1.0 @ 0x240f0 */
| #include <stdint.h>
|
; (fcn) fcn.000240f0 () | void fcn_000240f0 (int32_t arg1, int32_t arg2) {
| wchar_t * pwc;
| char * format;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_4h_2;
| int32_t var_1ch;
| r0 = arg1;
| r1 = arg2;
0x000240f0 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000240f4 ldr sb, [pc, 0x184] | sb = *(0x2427c);
0x000240f8 subs r5, r0, 0 | r5 = r0 - 0;
0x000240fc add sb, pc, sb | sb = pc + sb;
0x00024100 sub sp, sp, 0x1c |
0x00024104 mov r6, r1 | r6 = r1;
0x00024108 mov r7, r2 | r7 = r2;
0x0002410c mov r4, 0 | r4 = 0;
| if (r5 != r0) {
0x00024110 moveq r0, r5 | r0 = r5;
| }
| if (r5 != r0) {
0x00024114 beq 0x2411c |
0x00024118 bl 0x6118 | r0 = strlen (r0);
| }
0x0002411c cmp r0, 0 |
0x00024120 clz r3, r7 | r3 &= r7;
0x00024124 lsr r3, r3, 5 | r3 >>= 5;
| if (r0 != 0) {
0x00024128 moveq r3, 1 | r3 = 1;
| }
0x0002412c add r8, sp, 0x10 | r8 += var_10h;
0x00024130 cmp r3, 0 |
0x00024134 str r4, [sp, 0x10] | var_10h = r4;
| if (r3 == 0) {
0x00024138 movne r0, 0 | r0 = 0;
| }
0x0002413c str r4, [r8, 4] | var_4h_2 = r4;
| if (r3 != 0) {
0x00024140 bne 0x24188 | goto label_2;
| }
0x00024144 str r3, [r6] | *(r6) = r3;
0x00024148 add r3, sp, 0xc | r3 += var_ch;
0x0002414c str r3, [sp] | *(sp) = r3;
0x00024150 ldr fp, [pc, 0x12c] | fp = *(0x00024284);
0x00024154 ldr r3, [pc, 0x12c] | r3 = *(0x24284);
0x00024158 mov r4, r7 | r4 = r7;
0x0002415c add r3, pc, r3 | r3 = pc + r3;
0x00024160 add fp, pc, fp |
0x00024164 str r3, [sp, 4] | format = r3;
| label_0:
0x00024168 cmp r5, 0 |
| if (r5 == 0) {
0x0002416c beq 0x2417c | goto label_3;
| }
0x00024170 ldrsb r3, [r5] | r3 = *(r5);
0x00024174 cmp r3, 0 |
0x00024178 bne 0x24190 |
| while (sl == r0) {
| label_3:
0x0002417c mov r3, 0 | r3 = 0;
0x00024180 mov r0, r7 | r0 = r7;
0x00024184 strb r3, [r4] | *(r4) = r3;
| label_2:
0x00024188 add sp, sp, 0x1c |
0x0002418c pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00024190 bl 0x5c80 | stdlib_mb_cur_max ();
0x00024194 mov r3, r8 | r3 = r8;
0x00024198 mov r1, r5 | r1 = r5;
0x0002419c mov r2, r0 | r2 = r0;
0x000241a0 ldr r0, [sp] | r0 = *(sp);
0x000241a4 bl 0x59b0 | r0 = mbrtowc (r0, r1, r2, r3);
0x000241a8 subs sl, r0, 0 | sl = r0 - 0;
0x000241ac beq 0x2417c |
| }
0x000241b0 cmn sl, 2 |
0x000241b4 ldrsb r2, [r5] | r2 = *(r5);
| if (sl <= 2) {
0x000241b8 blo 0x24220 | goto label_4;
| }
0x000241bc ldr r1, [pc, 0xc8] |
0x000241c0 and r2, r2, 0xff | r2 &= 0xff;
0x000241c4 ldr r1, [sb, r1] | r1 = *((sb + r1));
0x000241c8 lsl r3, r2, 1 | r3 = r2 << 1;
0x000241cc ldr r1, [r1] | r1 = *(0x24288);
0x000241d0 ldrh r3, [r1, r3] | r3 = *((r1 + r3));
0x000241d4 tst r3, 0x40 |
| if ((r3 & 0x40) != 0) {
0x000241d8 bne 0x24204 | goto label_5;
| }
0x000241dc mov r0, r4 | r0 = r4;
0x000241e0 mov r1, fp | r1 = fp;
0x000241e4 bl 0x5f68 | sprintf (r0, r1, r2)
0x000241e8 ldr r3, [r6] | r3 = *(r6);
0x000241ec add r4, r4, 4 | r4 += 4;
0x000241f0 add r3, r3, 4 | r3 += 4;
0x000241f4 str r3, [r6] | *(r6) = r3;
| do {
0x000241f8 mov sl, 1 | sl = 1;
| label_1:
0x000241fc add r5, r5, sl | r5 += sl;
0x00024200 b 0x24168 | goto label_0;
| label_5:
0x00024204 ldr r3, [r6] | r3 = *(r6);
0x00024208 add r4, r4, 1 | r4++;
0x0002420c add r3, r3, 1 | r3++;
0x00024210 str r3, [r6] | *(r6) = r3;
0x00024214 ldrsb r3, [r5] | r3 = *(r5);
0x00024218 strb r3, [r4, -1] | *((r4 - 1)) = r3;
0x0002421c b 0x241f8 |
| } while (1);
| label_4:
0x00024220 cmp r2, 0x5c |
| if (r2 == 0x5c) {
0x00024224 bne 0x24254 |
0x00024228 ldrsb r1, [r5, 1] | r1 = *((r5 + 1));
0x0002422c cmp r1, 0x78 |
| if (r1 != 0x78) {
0x00024230 bne 0x24254 | goto label_6;
| }
0x00024234 mov r0, r4 | r0 = r4;
0x00024238 ldr r1, [sp, 4] | r1 = format;
0x0002423c bl 0x5f68 | sprintf (r0, r1, r2)
0x00024240 ldr r2, [r6] | r2 = *(r6);
0x00024244 add r4, r4, 4 | r4 += 4;
0x00024248 add r2, r2, 4 | r2 += 4;
0x0002424c str r2, [r6] | *(r6) = r2;
0x00024250 b 0x241fc | goto label_1;
| }
| label_6:
0x00024254 mov r2, sl | r2 = sl;
0x00024258 mov r1, r5 | r1 = r5;
0x0002425c mov r0, r4 | r0 = r4;
0x00024260 bl 0x5950 | memcpy (r0, r1, r2);
0x00024264 ldr r0, [sp, 0xc] | r0 = var_ch;
0x00024268 bl 0x5d70 | wcwidth ();
0x0002426c ldr r2, [r6] | r2 = *(r6);
0x00024270 add r4, r4, sl | r4 += sl;
0x00024274 add r0, r2, r0 | r0 = r2 + r0;
0x00024278 str r0, [r6] | *(r6) = r0;
0x0002427c b 0x241fc | 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/lib/libblkid.so.1.1.0 @ 0x9fbc */
| #include <stdint.h>
|
; (fcn) sym.blkid_encode_string () | void blkid_encode_string (uint32_t arg1, uint32_t arg2) {
| void * s2;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x00009fbc push {r0, r1, r2, r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00009fc0 cmp r1, 0 |
0x00009fc4 mov r8, r2 | r8 = r2;
0x00009fc8 clz r2, r2 | r2 &= r2;
0x00009fcc lsr r2, r2, 5 | r2 >>= 5;
| if (r1 != 0) {
0x00009fd0 moveq r4, 1 | r4 = 1;
| }
| if (r1 == 0) {
0x00009fd4 movne r4, r2 | r4 = r2;
| }
0x00009fd8 cmp r0, 0 |
| if (r0 != 0) {
0x00009fdc moveq r4, 1 | r4 = 1;
| }
0x00009fe0 cmp r4, 0 |
| if (r4 == 0) {
0x00009fe4 beq 0xa0bc | goto label_5;
| }
| do {
| label_0:
0x00009fe8 mvn r0, 0 | r0 = ~0;
| label_2:
0x00009fec add sp, sp, 0xc |
0x00009ff0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_1:
0x00009ff4 mov r0, r1 | r0 = r1;
0x00009ff8 str r1, [sp, 4] | s2 = r1;
0x00009ffc bl 0x9ca8 | r0 = fcn_00009ca8 (r0);
0x0000a000 cmp r0, 1 |
0x0000a004 mov sl, r0 | sl = r0;
| if (r0 <= 1) {
0x0000a008 ble 0xa068 | goto label_6;
| }
0x0000a00c sub r3, r8, r4 | r3 = r8 - r4;
0x0000a010 cmp r3, r0 |
0x0000a014 blo 0x9fe8 |
| } while (r3 <= r0);
0x0000a018 mov r2, r0 | r2 = r0;
0x0000a01c ldr r1, [sp, 4] | r1 = s2;
0x0000a020 add r0, r7, r4 | r0 = r7 + r4;
0x0000a024 bl 0x5950 | memcpy (r0, r1, r2);
0x0000a028 sub r6, r6, 1 | r6--;
0x0000a02c add r4, r4, sl | r4 += sl;
0x0000a030 add r6, sl, r6 | r6 = sl + r6;
| label_3:
0x0000a034 add r3, r4, 3 | r3 = r4 + 3;
0x0000a038 cmp r3, r8 |
| if (r3 >= r8) {
0x0000a03c bhs 0x9fe8 | goto label_0;
| }
0x0000a040 add r6, r6, 1 | r6++;
| label_4:
0x0000a044 ldrsb r5, [sb, r6] | r5 = *((sb + r6));
0x0000a048 add r1, sb, r6 | r1 = sb + r6;
0x0000a04c cmp r5, 0 |
| if (r5 != 0) {
0x0000a050 bne 0x9ff4 | goto label_1;
| }
0x0000a054 cmp r4, r8 |
| if (r4 == r8) {
0x0000a058 beq 0x9fe8 | goto label_0;
| }
0x0000a05c strb r5, [r7, r4] | *((r7 + r4)) = r5;
0x0000a060 mov r0, r5 | r0 = r5;
0x0000a064 b 0x9fec | goto label_2;
| label_6:
0x0000a068 cmp r5, 0x5c |
| if (r5 != 0x5c) {
0x0000a06c beq 0xa084 |
0x0000a070 mov r1, 0 | r1 = 0;
0x0000a074 mov r0, r5 | r0 = r5;
0x0000a078 bl 0x9df4 | r0 = fcn_00009df4 (r0, r1);
0x0000a07c cmp r0, 0 |
| if (r0 != 0) {
0x0000a080 bne 0xa0a8 | goto label_7;
| }
| }
0x0000a084 sub r3, r8, r4 | r3 = r8 - r4;
0x0000a088 cmp r3, 3 |
| if (r3 < 3) {
0x0000a08c bls 0x9fe8 | goto label_0;
| }
0x0000a090 add r0, r7, r4 | r0 = r7 + r4;
0x0000a094 and r2, r5, 0xff | r2 = r5 & 0xff;
0x0000a098 mov r1, fp | r1 = fp;
0x0000a09c bl 0x5f68 | sprintf (r0, r1, r2)
0x0000a0a0 add r4, r4, 4 | r4 += 4;
0x0000a0a4 b 0xa034 | goto label_3;
| label_7:
0x0000a0a8 cmp r4, r8 |
| if (r4 == r8) {
0x0000a0ac beq 0x9fe8 | goto label_0;
| }
0x0000a0b0 strb r5, [r7, r4] | *((r7 + r4)) = r5;
0x0000a0b4 add r4, r4, 1 | r4++;
0x0000a0b8 b 0xa034 | goto label_3;
| label_5:
0x0000a0bc ldr fp, [pc, 0x10] | fp = *(0x0000a0d4);
0x0000a0c0 mov sb, r0 | sb = r0;
0x0000a0c4 mov r7, r1 | r7 = r1;
0x0000a0c8 mov r6, r4 | r6 = r4;
0x0000a0cc add fp, pc, fp |
0x0000a0d0 b 0xa044 | goto label_4;
| }
[*] Function sprintf used 12 times libblkid.so.1.1.0