[*] Binary protection state of libudev.so.1.7.2
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function sprintf tear down of libudev.so.1.7.2
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libudev.so.1.7.2 @ 0x10f00 */
| #include <stdint.h>
|
; (fcn) fcn.00010f00 () | void fcn_00010f00 (int16_t arg_8ch, uint32_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| FILE * stream;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00010f00 mvnsmi lr, 0xb4000 | __asm ("mvnsmi lr, 0xb4000");
0x00010f04 mov r4, r2 | r4 = r2;
0x00010f06 ldr r2, [pc, 0x24c] |
0x00010f08 mov r8, r3 | r8 = r3;
0x00010f0a sub sp, 0x14 |
0x00010f0c ldr r3, [pc, 0x248] | r3 = *(0x11158);
0x00010f0e add r2, pc | r2 = 0x22068;
0x00010f10 ldr r3, [r2, r3] |
0x00010f12 ldr r3, [r3] | r3 = *(0x22068);
0x00010f14 str r3, [sp, 0xc] | var_ch = r3;
0x00010f16 mov.w r3, 0 | r3 = 0;
0x00010f18 lsls r0, r0, 0xc | r0 <<= 0xc;
0x00010f1a movs r3, 0 | r3 = 0;
0x00010f1c str r3, [sp] | *(sp) = r3;
0x00010f1e cmp r0, 0 |
| if (r0 == 0) {
0x00010f20 beq.w 0x110c2 | goto label_8;
| }
0x00010f24 mov r7, r1 | r7 = r1;
0x00010f26 cmp r1, 0 |
| if (r1 == 0) {
0x00010f28 beq.w 0x110d6 | goto label_9;
| }
0x00010f2c and r3, r4, 0x50 | r3 = r4 & 0x50;
0x00010f30 cmp r3, 0x50 |
| if (r3 == 0x50) {
0x00010f32 beq.w 0x110ea | goto label_10;
| }
0x00010f36 lsls r5, r4, 0x16 | r5 = r4 << 0x16;
0x00010f38 mov r6, r0 | r6 = r0;
| if (r5 < r4) {
0x00010f3a bmi.w 0x11048 | goto label_11;
| }
0x00010f3e lsls r1, r4, 0x1d | r1 = r4 << 0x1d;
| if (r1 >= r4) {
0x00010f40 bpl 0x10fdc | goto label_2;
| }
| label_1:
0x00010f42 mvn.w sb, r4 | sb = ~r4;
0x00010f46 ands sb, sb, 1 | sb &= 1;
0x00010f48 lsrs r1, r0, 4 | r1 = r0 >> 4;
| if (r1 != r0) {
0x00010f4a bne.w 0x1110c | goto label_12;
| }
0x00010f4e add r2, sp, 8 | r2 += stream;
0x00010f50 add r1, sp, 4 | r1 += var_4h;
0x00010f52 mov r0, r6 | r0 = r6;
0x00010f54 strd sb, sb, [sp, 4] | __asm ("strd sb, sb, [stream]");
0x00010f58 bl 0x1a9c4 | r0 = fcn_0001a9c4 (r0, r1, r2);
0x00010f5c subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x00010f5e blt.w 0x1108a | goto label_13;
| }
0x00010f62 ldr r0, [sp, 4] | r0 = var_4h;
0x00010f64 mov r3, r8 | r3 = r8;
0x00010f66 mov r2, r4 | r2 = r4;
0x00010f68 mov r1, r7 | r1 = r7;
0x00010f6a bl 0x10d34 | r0 = fcn_00010d34 (r0, r1, r2, r3, r4);
0x00010f6e subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x00010f70 blt.w 0x110a4 | goto label_14;
| }
0x00010f74 ldr r0, [sp, 4] | r0 = var_4h;
0x00010f76 blx 0x38d4 | fcn_000038d4 ();
0x00010f7a tst.w r4, 0x400 |
0x00010f7c ldr r0, [r0, 0x78] | r0 = *((r0 + 0x78));
0x00010f7e ite ne |
| if ((r4 & 0x400) == 0) {
0x00010f80 movne r1, 0x180 | r1 = 0x180;
| }
| if ((r4 & 0x400) == 0) {
0x00010f84 mov.w r1, 0x1a4 | r1 = 0x1a4;
| }
0x00010f88 bl 0x11f90 | r0 = fcn_00011f90 (r0, r1);
0x00010f8c subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x00010f8e blt.w 0x110a4 | goto label_14;
| }
0x00010f92 ldr r0, [sp, 8] | r0 = stream;
0x00010f94 mov r1, r6 | r1 = r6;
0x00010f96 blx 0x3770 | r0 = ctype_b_loc ();
0x00010f9a cmp r0, 0 |
| if (r0 < 0) {
0x00010f9c blt 0x1109c | goto label_15;
| }
0x00010f9e ands r8, r4, 0x40 | r8 = r4 & 0x40;
| if (r8 != r4) {
0x00010fa2 bne.w 0x1113e | goto label_16;
| }
0x00010fa6 ldr r0, [sp, 8] | r0 = stream;
0x00010fa8 mov r5, r8 | r5 = r8;
0x00010faa blx 0x3530 | ferror (r0);
0x00010fae ldr r0, [sp, 4] | r0 = var_4h;
0x00010fb0 str.w r8, [sp, 8] | __asm ("str.w r8, [stream]");
0x00010fb4 bl 0x1060c | fcn_0001060c (r0);
| do {
| label_0:
0x00010fb8 ldr r0, [sp] | r0 = *(sp);
0x00010fba bl 0x1060c | fcn_0001060c (r0);
0x00010fbe ldr r2, [pc, 0x19c] |
0x00010fc0 ldr r3, [pc, 0x194] | r3 = *(0x11158);
0x00010fc2 add r2, pc | r2 = 0x22124;
0x00010fc4 ldr r3, [r2, r3] | r3 = *(0x22124);
0x00010fc6 ldr r2, [r3] | r2 = *(0x22124);
0x00010fc8 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00010fca eors r2, r3 | r2 ^= r3;
0x00010fcc mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00010fd0 bne.w 0x1114e | goto label_17;
| }
0x00010fd4 mov r0, r5 | r0 = r5;
0x00010fd6 add sp, 0x14 |
0x00010fd8 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_2:
0x00010fdc cmp.w r8, 0 |
| if (r8 != 0) {
0x00010fe0 bne.w 0x11120 | goto label_18;
| }
0x00010fe4 lsls r3, r4, 7 | r3 = r4 << 7;
0x00010fe6 lsls r2, r4, 8 | r2 = r4 << 8;
0x00010fe8 and r3, r3, 0x8000 | r3 &= 0x8000;
0x00010fea orrs r0, r0 | r0 |= r0;
0x00010fec and r2, r2, 0x200 | r2 &= 0x200;
0x00010ff0 orrs r3, r2 | r3 |= r2;
0x00010ff2 lsls r2, r4, 6 | r2 = r4 << 6;
0x00010ff4 movw r1, 0x101 |
0x00010ff8 and r2, r2, 0x40 | r2 &= 0x40;
0x00010ffa lsls r0, r0, 9 | r0 <<= 9;
0x00010ffc tst.w r4, 0x400 |
0x00011000 orr.w r3, r3, r2 | r3 |= r2;
0x00011004 movt r1, 8 | r1 = 0x80101;
0x00011008 ite ne |
| if ((r4 & 0x400) == 0) {
0x0001100a movne r2, 0x180 | r2 = 0x180;
| }
| if ((r4 & 0x400) == 0) {
0x0001100e mov.w r2, 0x1b6 | r2 = 0x1b6;
| }
0x00011012 orrs r1, r3 | r1 |= r3;
0x00011014 mov r0, r6 | r0 = r6;
0x00011016 blx 0x36ec | r0 = asprintf_chk ()
0x0001101a subs.w sb, r0, 0 | sb = r0 - 0;
| if (sb < r0) {
0x0001101e blt 0x1105c | goto label_19;
| }
0x00011020 ldr r1, [pc, 0x13c] |
0x00011022 mov r2, sp | r2 = sp;
0x00011024 add r1, pc | r1 = 0x22188;
0x00011026 bl 0x1084c | r0 = fcn_0001084c (r0);
0x0001102a subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x0001102c blt.w 0x11136 | goto label_20;
| }
0x00011030 lsls r2, r4, 0x18 | r2 = r4 << 0x18;
| if (r2 < r4) {
0x00011032 bmi 0x110fe | goto label_21;
| }
| label_5:
0x00011034 ldr r0, [sp] | r0 = *(sp);
0x00011036 movs r3, 0 | r3 = 0;
0x00011038 mov r2, r4 | r2 = r4;
0x0001103a mov r1, r7 | r1 = r7;
0x0001103c bl 0x10d34 | r0 = fcn_00010d34 (r0, r1, r2, r3, r4);
0x00011040 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x00011042 blt 0x11064 | goto label_4;
| }
| label_3:
0x00011044 movs r5, 0 | r5 = 0;
0x00011046 b 0x10fb8 |
| } while (1);
| label_11:
0x00011048 movw r1, 0x1ed | r1 = 0x1ed;
0x0001104c bl 0x17598 | r0 = fcn_00017598 (r0, r1);
0x00011050 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x00011052 blt 0x10fb8 | goto label_0;
| }
0x00011054 lsls r1, r4, 0x1d | r1 = r4 << 0x1d;
| if (r1 < r4) {
0x00011056 bmi.w 0x10f42 | goto label_1;
| }
0x0001105a b 0x10fdc | goto label_2;
| label_19:
0x0001105c blx 0x3828 | r0 = fcn_00003828 ();
0x00011060 ldr r5, [r0] | r5 = *(r0);
0x00011062 rsbs r5, r5, 0 | r5 -= ;
| label_4:
0x00011064 lsls r3, r4, 0x1b | r3 = r4 << 0x1b;
| if (r3 >= r4) {
0x00011066 bpl 0x10fb8 | goto label_0;
| }
0x00011068 ldr r0, [sp] | r0 = *(sp);
0x0001106a bl 0x1060c | fcn_0001060c (r0);
0x0001106e and r2, r4, 0x28 | r2 = r4 & 0x28;
0x00011072 mov r3, r0 | r3 = r0;
0x00011074 subs r2, 8 | r2 -= 8;
0x00011076 mov r1, r7 | r1 = r7;
0x00011078 it ne |
| if (r2 == 8) {
0x0001107a movne r2, 1 | r2 = 1;
| }
0x0001107c mov r0, r6 | r0 = r6;
0x0001107e str r3, [sp] | *(sp) = r3;
0x00011080 bl 0x108cc | r0 = fcn_000108cc (r0, r1, r2, r3);
0x00011084 cmp r0, 0 |
| if (r0 > 0) {
0x00011086 bgt 0x11044 | goto label_3;
| }
0x00011088 b 0x10fb8 | goto label_0;
| label_13:
0x0001108a ldr r0, [sp, 8] | r0 = stream;
0x0001108c blx 0x3530 | ferror (r0);
0x00011090 ldr r0, [sp, 4] | r0 = var_4h;
0x00011092 str.w sb, [sp, 8] | __asm ("str.w sb, [stream]");
0x00011096 bl 0x1060c | fcn_0001060c (r0);
0x0001109a b 0x11064 | goto label_4;
| label_15:
0x0001109c blx 0x3828 | r0 = fcn_00003828 ();
0x000110a0 ldr r5, [r0] | r5 = *(r0);
0x000110a2 rsbs r5, r5, 0 | r5 -= ;
| label_14:
0x000110a4 ldr r0, [sp, 8] | r0 = stream;
0x000110a6 blx 0x3610 | fcn_00003610 ();
| label_6:
0x000110aa ldr r0, [sp, 8] | r0 = stream;
0x000110ac blx 0x3530 | ferror (r0);
0x000110b0 movs r3, 0 | r3 = 0;
0x000110b2 ldr r0, [sp, 4] | r0 = var_4h;
0x000110b4 str r3, [sp, 8] | stream = r3;
0x000110b6 bl 0x1060c | fcn_0001060c (r0);
0x000110ba cmp r5, 0 |
| if (r5 >= 0) {
0x000110bc bge.w 0x10fb8 | goto label_0;
| }
0x000110c0 b 0x11064 | goto label_4;
| label_8:
0x000110c2 ldr r1, [pc, 0xa0] |
0x000110c4 movs r2, 0xf2 | r2 = 0xf2;
0x000110c6 ldr r3, [pc, 0xa0] |
0x000110c8 ldr r0, [pc, 0xa0] |
0x000110ca add r1, pc | r1 = 0x22234;
0x000110cc add r3, pc | r3 = 0x2223a;
0x000110ce adds r1, 7 | r1 += 7;
0x000110d0 add r0, pc | r0 = 0x22240;
0x000110d2 bl 0x16594 | fcn_00016594 (r0, r1, r2, r3, r4);
| label_9:
0x000110d6 ldr r1, [pc, 0x98] |
0x000110d8 movs r2, 0xf3 | r2 = 0xf3;
0x000110da ldr r3, [pc, 0x98] |
0x000110dc ldr r0, [pc, 0x98] |
0x000110de add r1, pc | r1 = 0x22254;
0x000110e0 add r3, pc | r3 = 0x2225a;
0x000110e2 adds r1, 7 | r1 += 7;
0x000110e4 add r0, pc | r0 = 0x22260;
0x000110e6 bl 0x16594 | fcn_00016594 (r0, r1, r2, r3, r4);
| label_10:
0x000110ea ldr r1, [pc, 0x90] |
0x000110ec movs r2, 0xf6 | r2 = 0xf6;
0x000110ee ldr r3, [pc, 0x90] |
0x000110f0 ldr r0, [pc, 0x90] |
0x000110f2 add r1, pc | r1 = 0x22274;
0x000110f4 add r3, pc | r3 = 0x2227a;
0x000110f6 adds r1, 7 | r1 += 7;
0x000110f8 add r0, pc | r0 = 0x22280;
0x000110fa bl 0x16594 | fcn_00016594 (r0, r1, r2, r3, r4);
| label_21:
0x000110fe ldr r0, [sp] | r0 = *(sp);
0x00011100 mov r3, r8 | r3 = r8;
0x00011102 mov r1, r8 | r1 = r8;
0x00011104 movs r2, 2 | r2 = 2;
0x00011106 blx 0x3888 | fcn_00003888 ();
0x0001110a b 0x11034 | goto label_5;
| label_12:
0x0001110c ldr r1, [pc, 0x78] |
0x0001110e movs r2, 0xff | r2 = 0xff;
0x00011110 ldr r3, [pc, 0x78] |
0x00011112 ldr r0, [pc, 0x7c] |
0x00011114 add r1, pc | r1 = 0x222a0;
0x00011116 add r3, pc | r3 = 0x222a6;
0x00011118 adds r1, 7 | r1 += 7;
0x0001111a add r0, pc | r0 = 0x222b0;
0x0001111c bl 0x16594 | fcn_00016594 (r0, r1, r2, r3, r4);
| label_18:
0x00011120 ldr r1, [pc, 0x70] |
0x00011122 movw r2, 0x107 | r2 = 0x107;
0x00011126 ldr r3, [pc, 0x70] |
0x00011128 ldr r0, [pc, 0x70] |
0x0001112a add r1, pc | r1 = 0x222c2;
0x0001112c add r3, pc | r3 = 0x222ca;
0x0001112e adds r1, 7 | r1 += 7;
0x00011130 add r0, pc | r0 = 0x222d0;
0x00011132 bl 0x16594 | fcn_00016594 (r0, r1, r2, r3, r4);
| label_20:
0x00011136 mov r0, sb | r0 = sb;
0x00011138 bl 0x10570 | fcn_00010570 (r0);
0x0001113a invalid |
| label_16:
0x0001113e ldr r0, [sp, 4] | r0 = var_4h;
0x00011140 blx 0x38d4 | fcn_000038d4 ();
0x00011144 bl 0x12bfc | r0 = fcn_00012bfc (r0);
0x00011148 and.w r5, r0, r0, asr 31 | r5 = r0 & (r0 >> 31);
0x0001114c b 0x110aa | goto label_6;
| label_17:
0x0001114e blx 0x35d0 | fcn_000035d0 ();
0x00011152 nop |
0x00011154 lsrs r6, r0, 0x19 | r6 = r0 >> 0x19;
0x00011156 movs r2, r0 | r2 = r0;
0x00011158 lsls r4, r5, 9 | r4 = r5 << 9;
0x0001115a movs r0, r0 |
0x0001115c lsrs r2, r2, 0x16 | r2 >>= 0x16;
0x0001115e movs r2, r0 | r2 = r0;
0x00011160 b 0x1188c | goto label_22;
| do {
0x00011644 mov r0, r4 | r0 = r4;
0x00011646 blx 0x3530 | ferror (r0);
0x0001164a ldr r2, [pc, 0x240] |
0x0001164c ldr r3, [pc, 0x238] | r3 = *(0x11888);
0x0001164e add r2, pc | r2 = 0x22ee0;
0x00011650 ldr r3, [r2, r3] | r3 = *(0x22ee0);
0x00011652 ldr r2, [r3] | r2 = *(0x22ee0);
0x00011654 ldr r3, [sp, 0x8c] | r3 = *(arg_8ch);
0x00011656 eors r2, r3 | r2 ^= r3;
0x00011658 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001165c bne.w 0x1187e | goto label_23;
| }
0x00011660 mov r0, r8 | r0 = r8;
0x00011662 add sp, 0x94 |
0x00011664 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_7:
0x00011850 mvn r8, 0x21 | r8 = ~0x21;
0x00011854 b 0x11644 |
| } while (1);
| label_23:
0x0001187e blx 0x35d0 | fcn_000035d0 ();
0x00011882 nop |
0x00011884 lsrs r2, r5, 1 | r2 = r5 >> 1;
0x00011886 movs r2, r0 | r2 = r0;
0x00011888 lsls r4, r5, 9 | r4 = r5 << 9;
0x0001188a movs r0, r0 |
| label_22:
0x0001188c lsls r6, r0, 0x1c | r6 = r0 << 0x1c;
0x0001188e movs r2, r0 | r2 = r0;
| if (r2 <= r0) {
0x00011890 ble 0x118b0 | goto label_24;
| }
0x00011892 movs r0, r0 |
0x00011894 svc 0x58 | __asm ("svc 0x58");
0x00011896 movs r0, r0 |
0x00011898 udf 0xec | __asm ("udf 0xec");
| if (r0 > r0) {
| label_24:
0x000118b0 bgt 0x1192c | void (*0x1192c)() ();
| }
0x000118b2 movs r0, r0 |
| if (r0 > r0) {
0x000118b4 bgt 0x11850 | goto label_7;
| }
0x000118b6 movs r0, r0 |
0x000118b8 svc 0x16 | __asm ("svc 0x16");
0x000118ba movs r0, r0 |
0x000118bc udf 0x56 | __asm ("udf 0x56");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libudev.so.1.7.2 @ 0x122b8 */
| #include <stdint.h>
|
; (fcn) fcn.000122b8 () | void fcn_000122b8 (int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000122b8 push {r4, r5, r6, r7, lr} |
0x000122ba sub sp, 0xc |
| if (r0 != 0) {
0x000122bc cbz r0, 0x122fe |
0x000122be mov r6, r1 | r6 = r1;
0x000122c0 mov.w r1, 0x288000 | r1 = 0x288000;
0x000122c4 mov r7, r2 | r7 = r2;
0x000122c6 mov r5, r3 | r5 = r3;
0x000122c8 blx 0x36ec | r0 = asprintf_chk ()
0x000122cc subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 >= r0) {
0x000122ce blt 0x122ea |
0x000122d0 mov r3, r7 | r3 = r7;
0x000122d2 mov r2, r6 | r2 = r6;
0x000122d4 movs r1, 0 | r1 = 0;
0x000122d6 str r5, [sp] | *(sp) = r5;
0x000122d8 bl 0x1204c | fcn_0001204c (r0, r1, r2, r3, r4);
0x000122da cdp2 p6, 0xb, c4, c8, c5, 0 | __asm ("cdp2 p6, 0xb, c4, c8, c5, 0");
0x000122de mov r0, r4 | r0 = r4;
0x000122e0 bl 0x10570 | fcn_00010570 (r0);
| label_0:
0x000122e4 mov r0, r5 | r0 = r5;
0x000122e6 add sp, 0xc |
0x000122e8 pop {r4, r5, r6, r7, pc} |
| }
0x000122ea blx 0x3828 | r0 = fcn_00003828 ();
0x000122ee ldr r5, [r0] | r5 = *(r0);
0x000122f0 mov r0, r4 | r0 = r4;
0x000122f2 bl 0x10570 | fcn_00010570 (r0);
0x000122f6 rsbs r5, r5, 0 | r5 -= ;
0x000122f8 mov r0, r5 | r0 = r5;
0x000122fa add sp, 0xc |
0x000122fc pop {r4, r5, r6, r7, pc} |
| }
0x000122fe ldr r1, [pc, 0x14] |
0x00012300 movs r2, 0xdb | r2 = 0xdb;
0x00012302 ldr r3, [pc, 0x14] |
0x00012304 ldr r0, [pc, 0x14] |
0x00012306 add r1, pc | r1 = 0x24620;
0x00012308 add r3, pc | r3 = 0x24626;
0x0001230a adds r1, 7 | r1 += 7;
0x0001230c add r0, pc | r0 = 0x2462c;
0x0001230e bl 0x16594 | fcn_00016594 (r0, r1, r2, r3, r4);
0x00012312 nop |
| if (r1 < 7) {
0x00012314 bmi 0x12344 | void (*0x12344)() ();
| }
0x00012316 movs r0, r0 |
| if (r0 >= r0) {
0x00012318 bpl 0x122e4 | goto label_0;
| }
0x0001231a movs r0, r0 |
0x0001231c invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libudev.so.1.7.2 @ 0x12340 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00012340 () | void fcn_00012340 (uint32_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int8_t var_1h;
| char * src;
| int16_t var_ch;
| int16_t var_10h;
| int32_t var_4h_2;
| int32_t var_8h_2;
| int32_t var_ch_2;
| int32_t var_10h_2;
| 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_2ch;
| int32_t var_30h;
| int32_t var_34h;
| FILE * var_38h;
| FILE * var_38h_2;
| FILE * stream;
| int32_t var_44h;
| int16_t var_48h;
| FILE * var_4ch;
| int16_t var_50h;
| int16_t var_b8h;
| int32_t var_c8h;
| int32_t var_124h;
| int16_t var_12ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00012340 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00012344 sub sp, 0x13c |
0x00012346 add r7, sp, 0x10 | r7 += var_10h;
0x00012348 movs r4, 0 | r4 = 0;
0x0001234a ldr.w r5, [r7, 0x150] | r5 = *((r7 + 0x150));
0x0001234e str r3, [r7, 0x30] | var_30h = r3;
0x00012350 ldr.w r3, [pc, 0x7b4] | r3 = *(0x12b08);
0x00012354 str r5, [r7, 0x34] | var_34h = r5;
0x00012356 mov r5, r2 | r5 = r2;
0x00012358 ldr.w r2, [pc, 0x7b0] |
0x0001235a movs r7, 0xb0 | r7 = 0xb0;
0x0001235c add r2, pc | r2 = 0x24e6c;
0x0001235e ldr r3, [r2, r3] |
0x00012360 ldr r3, [r3] | r3 = *(0x24e6c);
0x00012362 str.w r3, [r7, 0x124] | __asm ("str.w r3, [var_124h]");
0x00012366 mov.w r3, 0 | r3 = 0;
0x0001236a strd r4, r4, [r7, 0x38] | __asm ("strd r4, r4, [var_38h]");
0x0001236e str r4, [r7, 0x40] | stream = r4;
0x00012370 cmp r0, 0 |
| if (r0 == 0) {
0x00012372 beq.w 0x128be | goto label_26;
| }
0x00012376 ands r3, r5, 2 | r3 = r5 & 2;
0x0001237a mov r6, r1 | r6 = r1;
0x0001237c mov r4, r0 | r4 = r0;
0x0001237e str r3, [r7, 0x1c] | var_1ch = r3;
| if (r3 != r5) {
0x00012380 bne 0x123de | goto label_27;
| }
0x00012382 ands r3, r5, 0x20 | r3 = r5 & 0x20;
0x00012386 str r3, [r7, 0x2c] | var_2ch = r3;
| if (r3 != r5) {
0x00012388 beq 0x1238e |
0x0001238a ldr r3, [r7, 0x34] | r3 = var_34h;
| if (r3 != 0) {
0x0001238c cbnz r3, 0x12392 | goto label_0;
| }
| }
0x0001238e ldrb r3, [r4] | r3 = *(r4);
| if (r3 != 0) {
0x00012390 cbnz r3, 0x123f0 | goto label_28;
| }
| do {
| label_0:
0x00012392 mov.w r6, -1 | r6 = -1;
0x00012396 mvn r1, 0x15 | r1 = ~0x15;
| label_3:
0x0001239a mov r0, r6 | r0 = r6;
0x0001239c str r1, [r7, 0x34] | var_34h = r1;
0x0001239e bl 0x10570 | fcn_00010570 (r0);
0x000123a2 ldr r0, [r7, 0x40] | r0 = stream;
0x000123a4 blx 0x3530 | ferror (r0);
0x000123a8 ldr r0, [r7, 0x3c] | r0 = var_38h_2;
0x000123aa blx 0x3530 | ferror (r0);
0x000123ae ldr r0, [r7, 0x38] | r0 = var_38h;
0x000123b0 blx 0x3530 | ferror (r0);
0x000123b4 ldr.w r2, [pc, 0x758] |
0x000123b8 ldr.w r3, [pc, 0x74c] | r3 = *(0x12b08);
0x000123bc ldr r1, [r7, 0x34] | r1 = var_34h;
0x000123be add r2, pc | r2 = 0x24ed2;
0x000123c0 ldr r3, [r2, r3] | r3 = *(0x24ed2);
0x000123c2 ldr r2, [r3] | r2 = *(0x24ed2);
0x000123c4 ldr.w r3, [r7, 0x124] | r3 = var_124h;
0x000123c8 eors r2, r3 | r2 ^= r3;
0x000123ca mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000123ce bne.w 0x12aea | goto label_29;
| }
0x000123d2 mov r0, r1 | r0 = r1;
0x000123d4 add.w r7, r7, 0x12c | r7 += var_12ch;
0x000123d8 mov sp, r7 |
0x000123da pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_27:
0x000123de ldr r3, [r7, 0x34] | r3 = var_34h;
0x000123e0 cmp r3, 0 |
0x000123e2 bne 0x12392 |
| } while (r3 != 0);
0x000123e4 and r3, r5, 0x20 | r3 = r5 & 0x20;
0x000123e8 str r3, [r7, 0x2c] | var_2ch = r3;
0x000123ea ldrb r3, [r4] | r3 = *(r4);
0x000123ec cmp r3, 0 |
| if (r3 == 0) {
0x000123ee beq 0x12392 | goto label_0;
| }
| label_28:
0x000123f0 mov r0, r6 | r0 = r6;
0x000123f2 bl 0x18b40 | r0 = fcn_00018b40 (r0);
0x000123f6 cmp r0, 0 |
| if (r0 == 0) {
0x000123f8 beq.w 0x125aa | goto label_30;
| }
0x000123fc ldr r3, [r7, 0x30] | r3 = var_30h;
| if (r3 == 0) {
0x000123fe cbnz r3, 0x12418 |
| label_1:
0x00012400 ldr r3, [r7, 0x34] | r3 = var_34h;
0x00012402 and r2, r5, 0x2e | r2 = r5 & 0x2e;
0x00012406 subs r3, 0 |
0x00012408 it ne |
| if (r3 == 0) {
0x0001240a movne r3, 1 | r3 = 1;
| }
0x0001240c cmp r2, 0 |
0x0001240e it ne |
| if (r2 == 0) {
0x00012410 movne r3, 0 | r3 = 0;
| }
0x00012412 cmp r3, 0 |
| if (r3 != 0) {
0x00012414 bne.w 0x12808 | goto label_31;
| }
| }
| label_2:
0x00012418 add.w r1, r7, 0x38 | r1 += var_38h;
0x0001241c mov r0, r4 | r0 = r4;
0x0001241e bl 0x1827c | r0 = fcn_0001827c (r0, r1, r2, r3);
0x00012422 subs r1, r0, 0 | r1 = r0 - 0;
| if (r1 < r0) {
0x00012424 blt.w 0x1265c | goto label_32;
| }
0x00012428 ldr r0, [r7, 0x40] | r0 = stream;
0x0001242a cmp r0, 0 |
| if (r0 == 0) {
0x0001242c beq.w 0x128b8 | goto label_33;
| }
| label_10:
0x00012430 mov.w r1, 0x284000 | r1 = 0x284000;
0x00012434 blx 0x36ec | r0 = asprintf_chk ()
0x00012438 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 < r0) {
0x0001243a blt.w 0x12670 | goto label_34;
| }
0x0001243e ands r3, r5, 8 | r3 = r5 & 8;
0x00012442 str r3, [r7, 0x18] | var_18h = r3;
| if (r3 != r5) {
0x00012444 bne.w 0x12662 | goto label_35;
| }
| label_4:
0x00012448 ands r3, r5, 0x10 | r3 = r5 & 0x10;
0x0001244c ldr.w sb, [r7, 0x38] | sb = var_38h;
0x00012450 it eq |
| if (r3 != r5) {
0x00012452 streq r3, [r7, 0xc] | var_ch_2 = r3;
| }
| if (r3 != r5) {
0x00012454 beq 0x1246c |
0x00012456 ldr.w r1, [pc, 0x6bc] |
0x0001245a mov r0, sb | r0 = sb;
0x0001245c add r1, pc | r1 = 0x24f76;
0x0001245e bl 0x1af54 | r0 = fcn_0001af54 (r0, r1);
0x00012462 cmp r0, 0 |
| if (r0 == 0) {
0x00012464 beq.w 0x1293e | goto label_36;
| }
0x00012468 movs r3, 1 | r3 = 1;
0x0001246a str r3, [r7, 0xc] | var_ch_2 = r3;
| }
| label_14:
0x0001246c ldr.w r8, [r7, 0x40] | r8 = stream;
0x00012470 cmp.w r8, 0 |
| if (r8 == 0) {
0x00012474 beq.w 0x128e2 | goto label_37;
| }
0x00012478 mov r0, sb | r0 = sb;
0x0001247a movs r2, 1 | r2 = 1;
0x0001247c mov r1, r8 | r1 = r8;
0x0001247e bl 0x18554 | fcn_00018554 (r0, r1, r2, r3, r4);
0x00012482 str r0, [r7, 0x44] | var_44h = r0;
0x00012484 cmp r0, 0 |
| if (r0 == 0) {
0x00012486 beq.w 0x1267a | goto label_38;
| }
0x0001248a mov r0, r8 | r0 = r8;
0x0001248c blx 0x35c4 | fcn_000035c4 ();
| label_11:
0x00012490 ldr.w r3, [pc, 0x684] |
0x00012494 str r0, [r7, 0x3c] | var_38h_2 = r0;
0x00012496 add r3, pc | r3 = 0x24fb2;
0x00012498 str r3, [r7, 0x20] | var_20h = r3;
0x0001249a ldr.w r3, [pc, 0x680] |
0x0001249e add r3, pc | r3 = 0x24fc0;
0x000124a0 str r3, [r7, 4] | var_4h_2 = r3;
0x000124a2 ldr.w r3, [pc, 0x67c] |
0x000124a4 adds r6, 0x7c | r6 += 0x7c;
0x000124a6 add r3, pc | r3 = 0x24fcc;
0x000124a8 str r3, [r7, 8] | var_8h_2 = r3;
0x000124aa movs r3, 0x20 | r3 = 0x20;
0x000124ac str r3, [r7, 0x14] | var_14h = r3;
0x000124ae add.w r3, r7, 0x48 | r3 += var_48h;
0x000124b2 str r3, [r7, 0x24] | var_24h = r3;
0x000124b4 add.w r3, r7, 0x44 | r3 += var_44h;
0x000124b8 str r3, [r7, 0x28] | var_28h = r3;
| do {
| label_6:
0x000124ba movs r1, 1 | r1 = 1;
0x000124bc ldr r2, [r7, 0x24] | r2 = var_24h;
0x000124be ldr r0, [r7, 0x28] | r0 = var_28h;
0x000124c0 bl 0x183bc | r0 = fcn_000183bc (r0, r1, r2);
0x000124c4 subs r1, r0, 0 | r1 = r0 - 0;
| if (r1 < r0) {
0x000124c6 blt.w 0x12974 | goto label_39;
| }
| if (r1 == r0) {
0x000124ca beq.w 0x1297e | goto label_40;
| }
0x000124ce ldr r0, [r7, 0x48] | r0 = var_48h;
0x000124d0 blx 0x3548 | r0 = openat64_2 ();
0x000124d4 mov r8, r0 | r8 = r0;
0x000124d6 cmp r0, 0 |
| if (r0 == 0) {
0x000124d8 beq.w 0x12a76 | goto label_41;
| }
0x000124dc ldr r1, [r7, 0x20] | r1 = var_20h;
0x000124de bl 0x18674 | r0 = fcn_00018674 (r0, r1, r2, r3);
0x000124e2 mov sb, r0 | sb = r0;
0x000124e4 cmp r0, 0 |
| if (r0 != 0) {
0x000124e6 bne.w 0x126ca | goto label_42;
| }
0x000124ea ldr r0, [r7, 0x3c] | r0 = var_38h_2;
0x000124ec bl 0x18b40 | r0 = fcn_00018b40 (r0);
0x000124f0 cmp r0, 0 |
| if (r0 == 0) {
0x000124f2 bne 0x1258a |
0x000124f4 ldr r0, [r7, 0x3c] | r0 = var_38h_2;
0x000124f6 bl 0x1834c | r0 = fcn_0001834c ();
0x000124fa mov sb, r0 | sb = r0;
0x000124fc cmp r0, 0 |
| if (r0 == 0) {
0x000124fe beq.w 0x12ab2 | goto label_43;
| }
0x00012502 ldrd sl, fp, [r7, 0x3c] | __asm ("ldrd sl, fp, [var_38h_2]");
0x00012506 cmp.w fp, 0 |
| if (fp != 0) {
0x0001250a beq 0x12524 |
0x0001250c movs r2, 1 | r2 = 1;
0x0001250e mov r1, fp | r1 = fp;
0x00012510 mov r0, sl | r0 = sl;
0x00012512 bl 0x18554 | r0 = fcn_00018554 (r0, r1, r2, r3, r4);
| if (r0 == 0) {
0x00012516 cbz r0, 0x12524 | goto label_44;
| }
0x00012518 mov r1, fp | r1 = fp;
0x0001251a movs r2, 1 | r2 = 1;
0x0001251c mov r0, sb | r0 = sb;
0x0001251e bl 0x18554 | r0 = fcn_00018554 (r0, r1, r2, r3, r4);
| if (r0 == 0) {
0x00012522 cbz r0, 0x1258a | goto label_45;
| }
| }
| label_44:
0x00012524 mov r0, sl | r0 = sl;
0x00012526 blx 0x3530 | ferror (r0);
0x00012528 invalid |
0x0001252c str.w sb, [r7, 0x3c] | __asm ("str.w sb, [var_38h_2]");
0x00012530 cmp r3, 0 |
| if (r3 != 0) {
0x00012532 bne.w 0x12abc | goto label_46;
| }
0x00012536 ldr.w r1, [pc, 0x5ec] |
0x0001253a mov.w r2, 0x288000 | r2 = 0x288000;
0x0001253e mov r0, r6 | r0 = r6;
0x00012540 add r1, pc | r1 = 0x2506a;
0x00012542 blx 0x37ec | r0 = fcn_000037ec ();
0x00012546 subs.w sb, r0, 0 | sb = r0 - 0;
| if (sb < r0) {
0x0001254a blt.w 0x12a58 | goto label_47;
| }
0x0001254e ldr r3, [r7, 0x18] | r3 = var_18h;
| if (r3 != 0) {
0x00012550 cbz r3, 0x1257e |
0x00012552 add.w sl, r7, 0xb8 | sl += var_b8h;
0x00012556 mov r1, sl | r1 = sl;
0x00012558 blx 0x3a30 | r0 = fcn_00003a30 ();
0x0001255c cmp r0, 0 |
| if (r0 < 0) {
0x0001255e blt.w 0x12a58 | goto label_47;
| }
0x00012562 add.w fp, r7, 0x50 |
0x00012566 mov r1, sl | r1 = sl;
0x00012568 mov r0, fp | r0 = fp;
0x0001256a bl 0x12330 | r0 = fcn_00012330 (r0, r1);
0x0001256e cmp r0, 0 |
| if (r0 != 0) {
0x00012570 bne.w 0x12952 | goto label_48;
| }
0x00012572 strh r7, [r5, 0xe] | *((r5 + 0xe)) = r7;
0x00012574 mov r1, sl | r1 = sl;
0x00012576 mov r0, fp | r0 = fp;
0x00012578 movs r2, 0x68 | r2 = 0x68;
0x0001257a blx 0x3578 | mmap64 ();
| }
0x0001257e mov r0, r6 | r0 = r6;
0x00012580 mov r6, sb | r6 = sb;
0x00012582 mov.w sb, 0 | sb = 0;
0x00012584 lsrs r0, r0, 4 | r0 >>= 4;
0x00012586 bl 0x10570 | fcn_00010570 (r0);
| }
| label_45:
0x0001258a mov.w r0, -1 | r0 = -1;
0x0001258e bl 0x10570 | fcn_00010570 (r0);
0x00012592 mov r0, sb | r0 = sb;
0x00012594 mov.w sb, -1 | sb = -1;
0x00012598 blx 0x3530 | ferror (r0);
| label_5:
0x0001259c mov r0, sb | r0 = sb;
0x0001259e bl 0x10570 | fcn_00010570 (r0);
0x000125a2 mov r0, r8 | r0 = r8;
0x000125a4 blx 0x3530 | ferror (r0);
0x000125a8 b 0x124ba |
| } while (1);
| label_30:
0x000125aa ldr r3, [r7, 0x30] | r3 = var_30h;
0x000125ac orrs r3, r6 | r3 |= r6;
| if (r3 == r6) {
0x000125ae beq.w 0x12400 | goto label_1;
| }
0x000125b2 cmp r6, 0 |
| if (r6 == 0) {
0x000125b4 beq.w 0x12418 | goto label_2;
| }
0x000125b8 add.w r1, r7, 0x40 | r1 += stream;
0x000125bc mov r0, r6 | r0 = r6;
0x000125be bl 0x1827c | fcn_0001827c (r0, r1, r2, r3);
0x000125c0 cdp2 p14, 5, c1, c13, c1, 0 | __asm ("cdp2 p14, 5, c1, c13, c1, 0");
| if (r6 < 0) {
0x000125c4 blt 0x1265c | goto label_32;
| }
0x000125c6 ldr.w r1, [pc, 0x560] |
0x000125ca ldr r0, [r7, 0x40] | r0 = stream;
0x000125cc add r1, pc | r1 = 0x250fa;
0x000125ce bl 0x19e5c | fcn_00019e5c (r0, r1);
0x000125d2 ldr r0, [r7, 0x40] | r0 = stream;
0x000125d4 bl 0x1847c | fcn_0001847c (r0, r1, r2);
0x000125d6 vabd.u16 q8, q9, q12 | __asm ("vabd.u16 q8, q9, q12");
| if (r6 >= 0) {
0x000125da bpl.w 0x12418 | goto label_2;
| }
0x000125de ldrb r3, [r4] | r3 = *(r4);
0x000125e0 cmp r3, 0x2f |
| if (r3 != 0x2f) {
0x000125e2 bne.w 0x12392 | goto label_0;
| }
0x000125e6 ldr r6, [r7, 0x40] | r6 = stream;
0x000125e8 mov r3, r4 | r3 = r4;
| do {
0x000125ea mov r4, r3 | r4 = r3;
0x000125ec adds r3, 1 | r3++;
0x000125ee ldrb r2, [r4, 1] | r2 = *((r4 + 1));
0x000125f0 cmp r2, 0x2f |
0x000125f2 beq 0x125ea |
| } while (r2 == 0x2f);
0x000125f4 cmp r6, 0 |
| if (r6 == 0) {
0x000125f6 beq.w 0x12418 | goto label_2;
| }
0x000125fa ldrb r3, [r6] | r3 = *(r6);
0x000125fc cmp r3, 0 |
| if (r3 == 0) {
0x000125fe beq.w 0x12418 | goto label_2;
| }
0x00012602 mov r0, r6 | r0 = r6;
0x00012604 blx 0x37c8 | r0 = fcn_000037c8 ();
0x00012608 mov sb, r0 | sb = r0;
0x0001260a mov r0, r4 | r0 = r4;
0x0001260c blx 0x37c8 | r0 = fcn_000037c8 ();
0x00012610 add.w r3, sb, r0 | r3 = sb + r0;
0x00012614 mov r8, r0 | r8 = r0;
0x00012616 adds r2, r3, 2 | r2 = r3 + 2;
0x00012618 cmp.w r2, 0x400000 |
| if (r2 > 0x400000) {
0x0001261c bhi.w 0x12a42 | goto label_49;
| }
0x00012620 adds r3, 9 | r3 += 9;
0x00012622 mov r1, r6 | r1 = r6;
0x00012624 bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x00012628 sub.w sp, sp, r3 |
0x0001262c add r6, sp, 0x10 | r6 += var_10h;
0x0001262e mov r0, r6 | r0 = r6;
0x00012630 blx 0x35b4 | r0 = strdup (r0);
0x00012634 cmp r0, r6 |
0x00012636 mov r3, r0 | r3 = r0;
| if (r0 > r6) {
0x00012638 bhi 0x12642 | goto label_50;
| }
0x0001263a b 0x1264e | goto label_15;
| do {
0x0001263c cmp r6, r3 |
| if (r6 == r3) {
0x0001263e beq.w 0x12970 | goto label_51;
| }
| label_50:
0x00012642 ldrb r2, [r3, -0x1] | r2 = *((r3 - 0x1));
0x00012646 mov r0, r3 | r0 = r3;
0x00012648 subs r3, 1 | r3--;
0x0001264a cmp r2, 0x2f |
0x0001264c beq 0x1263c |
| } while (r2 == 0x2f);
| label_15:
0x0001264e mov r1, r4 | r1 = r4;
0x00012650 add.w r2, r8, 1 | r2 = r8 + 1;
0x00012654 mov r4, r6 | r4 = r6;
0x00012656 blx 0x3578 | mmap64 ();
0x0001265a b 0x12418 | goto label_2;
| label_32:
0x0001265c mov.w r6, -1 | r6 = -1;
0x00012660 b 0x1239a | goto label_3;
| label_35:
0x00012662 add.w r1, r7, 0x50 | r1 += var_50h;
0x00012666 blx 0x3a30 | r0 = fcn_00003a30 ();
0x0001266a cmp r0, 0 |
| if (r0 >= 0) {
0x0001266c bge.w 0x12448 | goto label_4;
| }
| label_34:
0x00012670 blx 0x3828 | r0 = fcn_00003828 ();
0x00012674 ldr r1, [r0] | r1 = *(r0);
0x00012676 rsbs r1, r1, 0 | r1 -= ;
0x00012678 b 0x1239a | goto label_3;
| label_38:
0x0001267a tst.w r5, 0x80 |
0x0001267e ite ne |
| if ((r5 & 0x80) == 0) {
0x00012680 movne r5, 4 | r5 = 4;
| }
| if ((r5 & 0x80) != 0) {
0x00012682 moveq r5, 7 | r5 = 7;
| }
0x00012684 bl 0x15ca8 | r0 = fcn_00015ca8 ();
0x00012688 cmp r0, r5 |
0x0001268a it lt |
| if (r0 < r5) {
0x0001268c mvnlt r1, 0x2b | r1 = ~0x2b;
| goto label_52;
| }
| if (r0 < r5) {
| label_52:
0x00012690 blt.w 0x1239a | goto label_3;
| }
0x00012694 strd r4, r8, [sp, 8] | __asm ("strd r4, r8, [src]");
0x00012698 movs r1, 0x2c | r1 = 0x2c;
0x0001269a ldr.w r2, [pc, 0x490] |
0x0001269e movt r1, 0x4000 | r1 = (r1 & 0xFFFF) | 0x40000000;
0x000126a2 ldr.w ip, [pc, 0x48c] |
0x000126a6 mov r0, r5 | r0 = r5;
0x000126a8 ldr.w r4, [pc, 0x488] |
0x000126ac movw r3, 0x387 | r3 = 0x387;
0x000126b0 add r2, pc | r2 = 0x251e2;
0x000126b2 add ip, pc | ip = 0x251e8;
0x000126b4 adds r2, 7 | r2 += 7;
0x000126b6 add r4, pc | r4 = 0x251ee;
0x000126b8 strd r4, ip, [sp] | __asm ("strd r4, ip, [sp]");
0x000126bc bl 0x164ec | r0 = fcn_000164ec (r0, r1, r2);
0x000126c0 subs r1, r0, 0 | r1 = r0 - 0;
0x000126c2 it ge |
| if (r1 < r0) {
0x000126c4 mvnge r1, 0x55 | r1 = ~0x55;
| }
0x000126c8 b 0x1239a | goto label_3;
| label_42:
0x000126ca mov.w r2, 0x288000 | r2 = 0x288000;
0x000126ce mov r1, r8 | r1 = r8;
0x000126d0 mov r0, r6 | r0 = r6;
0x000126d2 blx 0x37ec | r0 = fcn_000037ec ();
0x000126d6 subs.w sb, r0, 0 | sb = r0 - 0;
| if (sb < r0) {
0x000126da blt.w 0x12a18 | goto label_53;
| }
0x000126de add.w sl, r7, 0xb8 | sl += var_b8h;
0x000126e2 mov r1, sl | r1 = sl;
0x000126e4 blx 0x3a30 | r0 = fcn_00003a30 ();
0x000126e8 cmp r0, 0 |
| if (r0 < 0) {
0x000126ea blt.w 0x12a38 | goto label_54;
| }
0x000126ee ldr r3, [r7, 0x18] | r3 = var_18h;
0x000126f0 add.w fp, r7, 0x50 |
0x000126f4 cmp r3, 0 |
| if (r3 != 0) {
0x000126f6 bne.w 0x12828 | goto label_55;
| }
| label_7:
0x000126fa mov r1, sl | r1 = sl;
0x000126fc movs r2, 0x68 | r2 = 0x68;
0x000126fe mov r0, fp | r0 = fp;
0x00012700 blx 0x3578 | mmap64 ();
0x00012702 invalid |
| if (r2 < 0x68) {
0x00012706 bmi.w 0x12846 | goto label_56;
| }
| label_9:
0x0001270a ldr.w r3, [r7, 0xc8] | r3 = var_c8h;
0x0001270e and r3, r3, 0xf000 | r3 &= 0xf000;
0x00012712 cmp.w r3, 0xa000 |
| if (r3 != 0xa000) {
0x00012716 bne 0x127be | goto label_57;
| }
0x00012718 lsls r3, r5, 0x19 | r3 = r5 << 0x19;
| if (r3 < r5) {
0x0001271a bpl 0x12728 |
0x0001271c ldr r3, [r7, 0x44] | r3 = var_44h;
0x0001271e cmp r3, 0 |
| if (r3 == 0) {
0x00012720 beq 0x127be | goto label_57;
| }
0x00012722 ldrb r3, [r3] | r3 = *(r3);
0x00012724 cmp r3, 0 |
| if (r3 == 0) {
0x00012726 beq 0x127be | goto label_57;
| }
| }
0x00012728 movs r3, 0 | r3 = 0;
0x0001272a str r3, [r7, 0x4c] | var_4ch = r3;
0x0001272c ldr r3, [r7, 0x14] | r3 = var_14h;
0x0001272e subs r3, 1 | r3--;
0x00012730 str r3, [r7, 0x14] | var_14h = r3;
| if (r3 == 1) {
0x00012732 beq.w 0x12ac8 | goto label_58;
| }
0x00012736 add.w r3, r7, 0x4c | r3 += var_4ch;
0x0001273a mov r1, r8 | r1 = r8;
0x0001273c mov r2, r3 | r2 = r3;
0x0001273e mov r0, r6 | r0 = r6;
0x00012740 str r3, [r7, 0x10] | var_10h_2 = r3;
0x00012742 bl 0x11e4c | r0 = fcn_00011e4c (r0);
0x00012746 subs r1, r0, 0 | r1 = r0 - 0;
0x00012748 ldr r3, [r7, 0x10] | r3 = var_10h_2;
0x0001274a ldr r0, [r7, 0x4c] | r0 = var_4ch;
| if (r1 < r0) {
0x0001274c blt 0x127ee | goto label_13;
| }
0x0001274e cmp r0, 0 |
| if (r0 == 0) {
0x00012750 beq 0x127ea | goto label_59;
| }
0x00012752 ldrb r2, [r0] | r2 = *(r0);
0x00012754 cmp r2, 0 |
| if (r2 == 0) {
0x00012756 beq 0x127ea | goto label_59;
| }
0x00012758 cmp r2, 0x2f |
| if (r2 == 0x2f) {
0x0001275a beq.w 0x128f0 | goto label_60;
| }
| label_12:
0x0001275e ldr r1, [r7, 0x44] | r1 = var_44h;
0x00012760 mov r0, r3 | r0 = r3;
0x00012762 mov.w r2, -1 | r2 = -1;
0x00012766 bl 0x1812c | r0 = fcn_0001812c (r0, r1);
0x0001276a cmp r0, 0 |
| if (r0 == 0) {
0x0001276c beq.w 0x12ad0 | goto label_61;
| }
0x00012770 ldr r0, [r7, 0x38] | r0 = var_38h;
0x00012772 blx 0x3530 | ferror (r0);
0x00012776 ldr r3, [r7, 0x4c] | r3 = var_4ch;
0x00012778 str r3, [r7, 0x38] | var_38h = r3;
0x0001277a str r3, [r7, 0x44] | var_44h = r3;
0x0001277c ldr r3, [r7, 0x2c] | r3 = var_2ch;
0x0001277e cmp r3, 0 |
| if (r3 == 0) {
0x00012780 beq.w 0x1259c | goto label_5;
| }
0x00012784 mov r0, sb | r0 = sb;
0x00012786 bl 0x10570 | fcn_00010570 (r0);
0x0001278a mov r0, r8 | r0 = r8;
0x0001278c blx 0x3530 | ferror (r0);
0x00012790 ldr r3, [r7, 0x30] | r3 = var_30h;
0x00012792 mov r1, r3 | r1 = r3;
0x00012794 cmp r3, 0 |
| if (r3 == 0) {
0x00012796 beq.w 0x1239a | goto label_3;
| }
0x0001279a movs r1, 1 | r1 = 1;
0x0001279c ldr r0, [r7, 0x28] | r0 = var_28h;
0x0001279e add.w r2, r7, 0xb8 | r2 += var_b8h;
0x000127a2 bl 0x183bc | r0 = fcn_000183bc (r0, r1, r2);
0x000127a6 subs r1, r0, 0 | r1 = r0 - 0;
| if (r1 < r0) {
0x000127a8 blt.w 0x1239a | goto label_3;
| }
0x000127ac ldr r0, [r7, 0x3c] | r0 = var_38h_2;
0x000127ae it eq |
| if (r1 != r0) {
0x000127b0 streq r1, [r7, 0x3c] | var_38h_2 = r1;
| }
| if (r1 != r0) {
0x000127b2 bne.w 0x129fc | goto label_62;
| }
| label_19:
0x000127b6 ldr r3, [r7, 0x30] | r3 = var_30h;
0x000127b8 movs r1, 0 | r1 = 0;
0x000127ba str r0, [r3] | *(r3) = r0;
0x000127bc b 0x1239a | goto label_3;
| label_57:
0x000127be mov.w r2, -1 | r2 = -1;
0x000127c2 mov r1, r8 | r1 = r8;
0x000127c4 add.w r0, r7, 0x3c | r0 += var_38h_2;
0x000127c8 bl 0x1812c | r0 = fcn_0001812c (r0, r1);
0x000127cc cmp r0, 0 |
| if (r0 == 0) {
0x000127ce beq.w 0x12aac | goto label_63;
| }
0x000127d2 mov r0, r6 | r0 = r6;
0x000127d4 mov r6, sb | r6 = sb;
0x000127d6 bl 0x10570 | fcn_00010570 (r0);
0x000127da mov.w r0, -1 | r0 = -1;
0x000127de bl 0x10570 | fcn_00010570 (r0);
0x000127e2 mov r0, r8 | r0 = r8;
0x000127e4 blx 0x3530 | ferror (r0);
0x000127e8 b 0x124ba | goto label_6;
| label_59:
0x000127ea mvn r1, 0x15 | r1 = ~0x15;
| label_13:
0x000127ee str r1, [r7, 0x34] | var_34h = r1;
0x000127f0 blx 0x3530 | ferror (r0);
0x000127f4 ldr r1, [r7, 0x34] | r1 = var_34h;
| label_8:
0x000127f6 mov r0, sb | r0 = sb;
0x000127f8 str r1, [r7, 0x34] | var_34h = r1;
0x000127fa bl 0x10570 | fcn_00010570 (r0);
0x000127fe mov r0, r8 | r0 = r8;
0x00012800 blx 0x3530 | ferror (r0);
0x00012804 ldr r1, [r7, 0x34] | r1 = var_34h;
0x00012806 b 0x1239a | goto label_3;
| label_31:
0x00012808 lsls r1, r5, 9 | r1 = r5 << 9;
0x0001280a mov r0, r4 | r0 = r4;
0x0001280c and r1, r1, 0x8000 | r1 &= 0x8000;
0x00012810 orr r1, r1, 0x280000 | r1 |= 0x280000;
0x00012814 blx 0x3810 | r0 = fcn_00003810 ();
0x00012818 cmp r0, 0 |
| if (r0 < 0) {
0x0001281a blt 0x128d4 | goto label_64;
| }
0x0001281c ldr r3, [r7, 0x34] | r3 = var_34h;
0x0001281e mov.w r6, -1 | r6 = -1;
0x00012822 movs r1, 0 | r1 = 0;
0x00012824 str r0, [r3] | *(r3) = r0;
0x00012826 b 0x1239a | goto label_3;
| label_55:
0x00012828 mov r1, sl | r1 = sl;
0x0001282a mov r0, fp | r0 = fp;
0x0001282c bl 0x12330 | r0 = fcn_00012330 (r0, r1);
0x00012830 cmp r0, 0 |
| if (r0 == 0) {
0x00012832 beq.w 0x126fa | goto label_7;
| }
0x00012836 mov r1, sb | r1 = sb;
0x00012838 mov r3, r5 | r3 = r5;
0x0001283a mov r2, r4 | r2 = r4;
0x0001283c mov r0, r6 | r0 = r6;
0x0001283e bl 0x11ce0 | r0 = fcn_00011ce0 (r0, r1, r2, r3);
0x00012842 mov r1, r0 | r1 = r0;
0x00012844 b 0x127f6 | goto label_8;
| label_56:
0x00012846 movw r1, 0x187 | r1 = 0x187;
0x0001284a mov r0, sb | r0 = sb;
0x0001284c bl 0x19ca4 | r0 = fcn_00019ca4 (r0);
0x00012850 cmp r0, 0 |
| if (r0 <= 0) {
0x00012852 ble.w 0x1270a | goto label_9;
| }
0x00012856 lsls r2, r5, 0x18 | r2 = r5 << 0x18;
0x00012858 mov.w r3, 0 | r3 = 0;
0x0001285c str r3, [r7, 0x4c] | var_4ch = r3;
| if (r2 >= r5) {
0x0001285e bpl.w 0x12b00 | goto label_65;
| }
0x00012862 add.w r1, r7, 0x4c | r1 += var_4ch;
0x00012866 mov r0, sb | r0 = sb;
0x00012868 bl 0x10654 | r0 = fcn_00010654 (r0, r1);
0x0001286c bl 0x15ca8 | r0 = fcn_00015ca8 ();
0x00012870 cmp r0, 3 |
| if (r0 <= 3) {
0x00012872 ble.w 0x12b00 | goto label_65;
| }
0x00012876 ldr r1, [r7, 0x4c] | r1 = var_4ch;
0x00012878 cmp r1, 0 |
| if (r1 == 0) {
0x0001287a beq.w 0x12ae4 | goto label_66;
| }
| label_24:
0x0001287e ldr r2, [pc, 0x2b8] |
0x00012880 ldr r3, [pc, 0x2b8] |
0x00012882 ldr r0, [pc, 0x2bc] |
0x00012884 str r1, [sp, 8] | src = r1;
0x00012886 add r2, pc | r2 = 0x253c4;
0x00012888 add r3, pc | r3 = 0x253c8;
0x0001288a movs r1, 0x42 | r1 = 0x42;
0x0001288c add r0, pc | r0 = 0x253d2;
0x0001288e movt r1, 0x4000 | r1 = (r1 & 0xFFFF) | 0x40000000;
0x00012892 str r3, [sp, 4] | var_4h = r3;
0x00012894 adds r2, 7 | r2 += 7;
0x00012896 str r0, [sp] | *(sp) = r0;
0x00012898 mov.w r3, 0x304 | r3 = 0x304;
0x0001289c movs r0, 4 | r0 = 4;
0x0001289e str r4, [sp, 0xc] | var_ch = r4;
0x000128a0 bl 0x164ec | r0 = fcn_000164ec (r0, r1, r2);
0x000128a4 subs r1, r0, 0 | r1 = r0 - 0;
0x000128a6 it ge |
| if (r1 < r0) {
0x000128a8 mvnge r1, 0x55 | r1 = ~0x55;
| }
| label_25:
0x000128ac ldr r0, [r7, 0x4c] | r0 = var_4ch;
0x000128ae str r1, [r7, 0x34] | var_34h = r1;
0x000128b0 blx 0x3530 | ferror (r0);
0x000128b4 ldr r1, [r7, 0x34] | r1 = var_34h;
0x000128b6 b 0x127f6 | goto label_8;
| label_33:
0x000128b8 ldr r0, [pc, 0x288] |
0x000128ba add r0, pc | r0 = 0x25402;
0x000128bc b 0x12430 | goto label_10;
| label_26:
0x000128be ldr r1, [pc, 0x288] |
0x000128c0 movw r2, 0x312 | r2 = 0x312;
0x000128c4 ldr r3, [pc, 0x284] |
0x000128c6 ldr r0, [pc, 0x288] |
0x000128c8 add r1, pc | r1 = 0x25416;
0x000128ca add r3, pc | r3 = 0x2541a;
0x000128cc adds r1, 7 | r1 += 7;
0x000128ce add r0, pc | r0 = 0x25424;
0x000128d0 bl 0x16594 | r0 = fcn_00016594 (r0, r1, r2, r3, r4);
| label_64:
0x000128d4 blx 0x3828 | r0 = fcn_00003828 ();
0x000128d8 ldr r1, [r0] | r1 = *(r0);
0x000128da mov.w r6, -1 | r6 = -1;
0x000128de rsbs r1, r1, 0 | r1 -= ;
0x000128e0 b 0x1239a | goto label_3;
| label_37:
0x000128e2 ldr r0, [pc, 0x270] |
0x000128e4 str.w sb, [r7, 0x44] | __asm ("str.w sb, [var_44h]");
0x000128e8 add r0, pc | r0 = 0x25442;
0x000128ea blx 0x35c4 | fcn_000035c4 ();
0x000128ee b 0x12490 | goto label_11;
| label_60:
0x000128f0 mov r0, r6 | r0 = r6;
0x000128f2 str r3, [r7, 0x10] | var_10h_2 = r3;
0x000128f4 bl 0x10570 | fcn_00010570 (r0);
0x000128f6 mrc2 p12, 1, r6, c12, c8, 1 | __asm ("mrc2 p12, 1, r6, c12, c8, 1");
0x000128fa ldr r3, [r7, 0x10] | r3 = var_10h_2;
0x000128fc cmp r0, 0 |
| if (r0 == 0) {
0x000128fe beq 0x129f2 | goto label_67;
| }
| label_17:
0x00012900 mov.w r1, 0x284000 | r1 = 0x284000;
0x00012904 str r3, [r7, 0x10] | var_10h_2 = r3;
0x00012906 blx 0x36ec | r0 = asprintf_chk ()
0x0001290a subs r6, r0, 0 | r6 = r0 - 0;
0x0001290c ldr r3, [r7, 0x10] | r3 = var_10h_2;
| if (r6 < r0) {
0x0001290e blt.w 0x12ad8 | goto label_68;
| }
0x00012912 ldr r2, [r7, 0x18] | r2 = var_18h;
0x00012914 cmp r2, 0 |
| if (r2 != 0) {
0x00012916 bne 0x129c0 | goto label_69;
| }
| label_16:
0x00012918 ldr r1, [r7, 0x40] | r1 = stream;
0x0001291a cmp r1, 0 |
| if (r1 == 0) {
0x0001291c beq 0x129f8 | goto label_70;
| }
0x0001291e ldrb r2, [r1] | r2 = *(r1);
0x00012920 cmp r2, 0 |
0x00012922 ldr r2, [r7, 8] | r2 = var_8h_2;
0x00012924 it eq |
| if (r2 != 0) {
0x00012926 moveq r1, r2 | r1 = r2;
| }
| label_18:
0x00012928 add.w r0, r7, 0x3c | r0 += var_38h_2;
0x0001292c str r3, [r7, 0x10] | var_10h_2 = r3;
0x0001292e bl 0x1a050 | fcn_0001a050 (r0, r1);
0x00012932 subs r1, r0, 0 | r1 -= var_38h_2;
0x00012934 ldr r3, [r7, 0x10] | r3 = var_10h_2;
| if (r1 >= var_38h_2) {
0x00012936 bge.w 0x1275e | goto label_12;
| }
0x0001293a ldr r0, [r7, 0x4c] | r0 = var_4ch;
0x0001293c b 0x127ee | goto label_13;
| label_36:
0x0001293e ldr r1, [pc, 0x218] |
0x00012940 mov r0, sb | r0 = sb;
0x00012942 add r1, pc | r1 = 0x254a0;
0x00012944 bl 0x1af54 | r0 = fcn_0001af54 (r0, r1);
0x00012948 subs r3, r0, 0 | r3 = r0 - 0;
0x0001294a it ne |
| if (r3 == r0) {
0x0001294c movne r3, 1 | r3 = 1;
| }
0x0001294e str r3, [r7, 0xc] | var_ch_2 = r3;
0x00012950 b 0x1246c | goto label_14;
| label_48:
0x00012952 mov r1, sb | r1 = sb;
0x00012954 mov r3, r5 | r3 = r5;
0x00012956 mov r2, r4 | r2 = r4;
0x00012958 mov r0, r6 | r0 = r6;
0x0001295a bl 0x11ce0 | r0 = fcn_00011ce0 (r0, r1, r2, r3);
0x0001295e mov r1, r0 | r1 = r0;
| label_20:
0x00012960 mov r0, sb | r0 = sb;
0x00012962 str r1, [r7, 0x34] | var_34h = r1;
0x00012964 mov.w sb, -1 | sb = -1;
0x00012968 bl 0x10570 | fcn_00010570 (r0);
0x0001296c ldr r1, [r7, 0x34] | r1 = var_34h;
0x0001296e b 0x127f6 | goto label_8;
| label_51:
0x00012970 mov r0, r6 | r0 = r6;
0x00012972 b 0x1264e | goto label_15;
| label_39:
0x00012974 mov.w sb, -1 | sb = -1;
0x00012978 mov.w r8, 0 | r8 = 0;
0x0001297c b 0x127f6 | goto label_8;
| label_40:
0x0001297e ldr r3, [r7, 0xc] | r3 = var_ch_2;
0x00012980 cmp r3, 0 |
| if (r3 != 0) {
0x00012982 bne 0x12a62 | goto label_71;
| }
| label_21:
0x00012984 mov.w sb, -1 | sb = -1;
0x00012988 mov.w r8, 0 | r8 = 0;
0x0001298c movs r4, 1 | r4 = 1;
| label_23:
0x0001298e mov r0, sb | r0 = sb;
0x00012990 bl 0x10570 | fcn_00010570 (r0);
0x00012994 mov r0, r8 | r0 = r8;
0x00012996 blx 0x3530 | ferror (r0);
0x0001299a ldr r3, [r7, 0x30] | r3 = var_30h;
| if (r3 != 0) {
0x0001299c cbz r3, 0x129a8 |
0x0001299e ldr r3, [r7, 0x3c] | r3 = var_38h_2;
0x000129a0 ldr r2, [r7, 0x30] | r2 = var_30h;
0x000129a2 str r3, [r2] | *(r2) = r3;
0x000129a4 movs r3, 0 | r3 = 0;
0x000129a6 str r3, [r7, 0x3c] | var_38h_2 = r3;
| }
0x000129a8 ldr r3, [r7, 0x34] | r3 = var_34h;
| if (r3 != 0) {
0x000129aa cbz r3, 0x129b4 |
0x000129ac ldr r3, [r7, 0x34] | r3 = var_34h;
0x000129ae str r6, [r3] | *(r3) = r6;
0x000129b0 mov.w r6, -1 | r6 = -1;
| }
0x000129b4 ldr r3, [r7, 0x2c] | r3 = var_2ch;
0x000129b6 cmp r3, 0 |
0x000129b8 ite eq |
| if (r3 != 0) {
0x000129ba moveq r1, r4 | r1 = r4;
| }
| if (r3 == 0) {
0x000129bc movne r1, 1 | r1 = 1;
| }
0x000129be b 0x1239a | goto label_3;
| label_69:
0x000129c0 mov r1, sl | r1 = sl;
0x000129c2 str r3, [r7, 0x10] | var_10h_2 = r3;
0x000129c4 blx 0x3a30 | r0 = fcn_00003a30 ();
0x000129c8 cmp r0, 0 |
0x000129ca ldr r3, [r7, 0x10] | r3 = var_10h_2;
| if (r0 < 0) {
0x000129cc blt.w 0x12ad8 | goto label_68;
| }
0x000129d0 mov r1, sl | r1 = sl;
0x000129d2 mov r0, fp | r0 = fp;
0x000129d4 str r3, [r7, 0x10] | var_10h_2 = r3;
0x000129d6 bl 0x12330 | fcn_00012330 (r0, r1);
0x000129da ldr r3, [r7, 0x10] | r3 = var_10h_2;
0x000129dc cmp r0, 0 |
| if (r0 != 0) {
0x000129de bne.w 0x12aee | goto label_72;
| }
0x000129e2 mov r1, sl | r1 = sl;
0x000129e4 mov r0, fp | r0 = fp;
0x000129e6 movs r2, 0x68 | r2 = 0x68;
0x000129e8 str r3, [r7, 0x10] | var_10h_2 = r3;
0x000129ea blx 0x3578 | mmap64 ();
0x000129ee ldr r3, [r7, 0x10] | r3 = var_10h_2;
0x000129f0 b 0x12918 | goto label_16;
| label_67:
0x000129f2 ldr r0, [pc, 0x168] |
0x000129f4 add r0, pc | r0 = 0x25556;
0x000129f6 b 0x12900 | goto label_17;
| label_70:
0x000129f8 ldr r1, [r7, 4] | r1 = var_4h_2;
0x000129fa b 0x12928 | goto label_18;
| label_62:
0x000129fc mov r1, r0 | r1 = r0;
0x000129fe ldr.w r2, [r7, 0xb8] | r2 = var_b8h;
0x00012a02 mov.w r3, -1 | r3 = -1;
0x00012a06 movs r0, 0 | r0 = 0;
0x00012a08 bl 0x1812c | fcn_0001812c (r0, r1);
0x00012a0c mvn r1, 0xb | r1 = ~0xb;
0x00012a10 cmp r0, 0 |
| if (r0 != 0) {
0x00012a12 bne.w 0x127b6 | goto label_19;
| }
0x00012a16 b 0x1239a | goto label_3;
| label_53:
0x00012a18 blx 0x3828 | r0 = fcn_00003828 ();
0x00012a1c ldr r4, [r0] | r4 = *(r0);
0x00012a1e ldr r2, [r7, 0x1c] | r2 = var_1ch;
0x00012a20 sub.w r3, r4, 2 | r3 = r4 - 2;
0x00012a24 clz r3, r3 | r3 &= r3;
0x00012a28 cmp r2, 0 |
0x00012a2a lsr.w r3, r3, 5 | r3 >>= 5;
0x00012a2e it eq |
| if (r2 != 0) {
0x00012a30 moveq r3, 0 | r3 = 0;
| }
| if (r3 != 0) {
0x00012a32 cbnz r3, 0x12a80 | goto label_73;
| }
| label_22:
0x00012a34 rsbs r1, r4, 0 | r1 = r4 - ;
0x00012a36 b 0x127f6 | goto label_8;
| label_54:
0x00012a38 blx 0x3828 | r0 = fcn_00003828 ();
0x00012a3c ldr r1, [r0] | r1 = *(r0);
0x00012a3e rsbs r1, r1, 0 | r1 -= ;
0x00012a40 b 0x127f6 | goto label_8;
| label_49:
0x00012a42 ldr r1, [pc, 0x11c] |
0x00012a44 movw r2, 0x36f | r2 = 0x36f;
0x00012a48 ldr r3, [pc, 0x118] |
0x00012a4a ldr r0, [pc, 0x11c] |
0x00012a4c add r1, pc | r1 = 0x255b2;
0x00012a4e add r3, pc | r3 = 0x255b6;
0x00012a50 adds r1, 7 | r1 += 7;
0x00012a52 add r0, pc | r0 = 0x255c0;
0x00012a54 bl 0x16594 | r0 = fcn_00016594 (r0, r1, r2, r3, r4);
| label_47:
0x00012a58 blx 0x3828 | r0 = fcn_00003828 ();
0x00012a5c ldr r1, [r0] | r1 = *(r0);
0x00012a5e rsbs r1, r1, 0 | r1 -= ;
0x00012a60 b 0x12960 | goto label_20;
| label_71:
0x00012a62 ldr r2, [pc, 0x108] |
0x00012a64 mov r3, r1 | r3 = r1;
0x00012a66 add.w r0, r7, 0x3c | r0 += var_38h_2;
0x00012a6a add r2, pc | r2 = 0x255dc;
0x00012a6c bl 0x19ed8 | r0 = fcn_00019ed8 (r0);
0x00012a70 mov r8, r0 | r8 = r0;
0x00012a72 cmp r0, 0 |
| if (r0 != 0) {
0x00012a74 bne 0x12984 | goto label_21;
| }
| label_41:
0x00012a76 mov.w sb, -1 | sb = -1;
0x00012a7a mvn r1, 0xb | r1 = ~0xb;
0x00012a7e b 0x127f6 | goto label_8;
| label_73:
0x00012a80 ldr r5, [r7, 0x44] | r5 = var_44h;
| if (r5 == 0) {
0x00012a82 cbz r5, 0x12a94 | goto label_74;
| }
0x00012a84 ldrb r3, [r5] | r3 = *(r5);
| if (r3 == 0) {
0x00012a86 cbz r3, 0x12a94 | goto label_74;
| }
0x00012a88 movs r1, 0 | r1 = 0;
0x00012a8a mov r0, r5 | r0 = r5;
0x00012a8c bl 0x188b4 | fcn_000188b4 (r0, r1, r2, r3);
0x00012a8e vsub.i16 d2, d2, d0 | __asm ("vsub.i16 d2, d2, d0");
| if (r1 == 0) {
0x00012a92 beq 0x12a34 | goto label_22;
| }
| label_74:
0x00012a94 mov r2, r5 | r2 = r5;
0x00012a96 mov.w r3, -1 | r3 = -1;
0x00012a9a mov r1, r8 | r1 = r8;
0x00012a9c add.w r0, r7, 0x3c | r0 += var_38h_2;
0x00012aa0 movs r4, 0 | r4 = 0;
0x00012aa2 bl 0x1812c | r0 = fcn_0001812c (r0, r1);
0x00012aa6 cmp r0, 0 |
| if (r0 != 0) {
0x00012aa8 bne.w 0x1298e | goto label_23;
| }
| label_63:
0x00012aac mvn r1, 0xb | r1 = ~0xb;
0x00012ab0 b 0x127f6 | goto label_8;
| label_43:
0x00012ab2 mov.w sb, -1 | sb = -1;
0x00012ab6 mvn r1, 0xb | r1 = ~0xb;
0x00012ab8 lsls r3, r1, 4 | r3 = r1 << 4;
0x00012aba b 0x12960 | goto label_20;
| label_46:
0x00012abc mov.w r0, -1 | r0 = -1;
0x00012ac0 mov sb, r0 | sb = r0;
0x00012ac2 bl 0x10570 | fcn_00010570 (r0);
0x00012ac4 ldc2l p6, c14, [r5, -0x174] | __asm ("ldc2l p6, c14, [r5, -0x174]");
| label_58:
0x00012ac8 ldr r0, [r7, 0x14] | r0 = var_14h;
0x00012aca mvn r1, 0x27 | r1 = ~0x27;
0x00012ace b 0x127ee | goto label_13;
| label_61:
0x00012ad0 ldr r0, [r7, 0x4c] | r0 = var_4ch;
0x00012ad2 mvn r1, 0xb | r1 = ~0xb;
0x00012ad6 b 0x127ee | goto label_13;
| label_68:
0x00012ad8 blx 0x3828 | r0 = fcn_00003828 ();
0x00012adc ldr r1, [r0] | r1 = *(r0);
0x00012ade ldr r0, [r7, 0x4c] | r0 = var_4ch;
0x00012ae0 rsbs r1, r1, 0 | r1 -= ;
0x00012ae2 b 0x127ee | goto label_13;
| label_66:
0x00012ae4 ldr r1, [pc, 0x88] |
0x00012ae6 add r1, pc | r1 = 0x2565a;
0x00012ae8 b 0x1287e | goto label_24;
| label_29:
0x00012aea blx 0x35d0 | fcn_000035d0 ();
| label_72:
0x00012aee mov r1, r6 | r1 = r6;
0x00012af0 mov r3, r5 | r3 = r5;
0x00012af2 mov r2, r4 | r2 = r4;
0x00012af4 mov r0, sb | r0 = sb;
0x00012af6 bl 0x11ce0 | r0 = fcn_00011ce0 (r0, r1, r2, r3);
0x00012afa mov r1, r0 | r1 = r0;
0x00012afc ldr r0, [r7, 0x4c] | r0 = var_4ch;
0x00012afe b 0x127ee | goto label_13;
| label_65:
0x00012b00 mvn r1, 0x41 | r1 = ~0x41;
0x00012b04 b 0x128ac | goto label_25;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libudev.so.1.7.2 @ 0x12b74 */
| #include <stdint.h>
|
; (fcn) fcn.00012b74 () | void fcn_00012b74 (int16_t arg1, int16_t arg2, int16_t arg3) {
| FILE * stream;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00012b74 push {r4, r5, r6, lr} |
0x00012b76 mov r6, r2 | r6 = r2;
0x00012b78 ldr r4, [pc, 0x74] |
0x00012b7a sub sp, 8 |
0x00012b7c movs r3, 0 | r3 = 0;
0x00012b7e mov r5, r1 | r5 = r1;
0x00012b80 ldr r2, [pc, 0x70] | r2 = *(0x12bf4);
0x00012b82 mov r1, sp | r1 = sp;
0x00012b84 add r4, pc | r4 = 0x25778;
0x00012b86 ldr r2, [r4, r2] |
0x00012b88 ldr r2, [r2] | r2 = *(0x25778);
0x00012b8a str r2, [sp, 4] | var_4h = r2;
0x00012b8c mov.w r2, 0 | r2 = 0;
0x00012b90 str r3, [sp] | *(sp) = r3;
0x00012b92 bl 0x189b8 | r0 = fcn_000189b8 (r0, r1);
0x00012b96 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x00012b98 blt 0x12bc0 | goto label_0;
| }
0x00012b9a mov.w r3, 0x4000 | r3 = 0x4000;
0x00012b9e ldr r0, [sp] | r0 = *(sp);
0x00012ba0 mov r2, r3 | r2 = r3;
0x00012ba2 movt r3, 0x60 | r3 = (r3 & 0xFFFF) | 0x600000;
0x00012ba4 lsls r0, r4, 0xd | r0 = r4 << 0xd;
0x00012ba6 ands r3, r5 | r3 &= r5;
0x00012ba8 movt r2, 0x40 | r2 = (r2 & 0xFFFF) | 0x400000;
0x00012bac cmp r3, r2 |
0x00012bae mov r2, r6 | r2 = r6;
0x00012bb0 it ne |
| if (r3 == r2) {
0x00012bb2 orrne r5, r5, 0x4000 | r5 |= 0x4000;
| }
0x00012bb6 mov r1, r5 | r1 = r5;
0x00012bb8 blx 0x36ec | r0 = asprintf_chk ()
0x00012bbc subs r4, r0, 0 | r4 = r0 - 0;
0x00012bbe blt 0x12be0 |
| while (1) {
| label_0:
0x00012bc0 ldr r0, [sp] | r0 = *(sp);
0x00012bc2 blx 0x3530 | ferror (r0);
0x00012bc6 ldr r2, [pc, 0x30] |
0x00012bc8 ldr r3, [pc, 0x28] | r3 = *(0x12bf4);
0x00012bca add r2, pc | r2 = 0x257c8;
0x00012bcc ldr r3, [r2, r3] | r3 = *(0x257c8);
0x00012bce ldr r2, [r3] | r2 = *(0x257c8);
0x00012bd0 ldr r3, [sp, 4] | r3 = var_4h;
0x00012bd2 eors r2, r3 | r2 ^= r3;
0x00012bd4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00012bd8 bne 0x12bea | goto label_1;
| }
0x00012bda mov r0, r4 | r0 = r4;
0x00012bdc add sp, 8 |
0x00012bde pop {r4, r5, r6, pc} |
0x00012be0 blx 0x3828 | r0 = fcn_00003828 ();
0x00012be4 ldr r4, [r0] | r4 = *(r0);
0x00012be6 rsbs r4, r4, 0 | r4 -= ;
0x00012be8 b 0x12bc0 |
| }
| label_1:
0x00012bea blx 0x35d0 | fcn_000035d0 ();
0x00012bee nop |
0x00012bf0 rsbs.w r0, r0, 1 | r0 = 1 - r0;
0x00012bf4 lsls r4, r5, 9 | r4 = r5 << 9;
0x00012bf6 movs r0, r0 |
0x00012bf8 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libudev.so.1.7.2 @ 0x154dc */
| #include <stdint.h>
|
; (fcn) fcn.000154dc () | void fcn_000154dc () {
0x000154dc invalid |
0x000154e0 add r4, pc | r4 += pc;
0x000154e2 ldr r3, [r4] | r3 = *(r4);
0x000154e4 cmp r3, 0 |
0x000154e6 it ge |
| if (r3 < 0) {
0x000154e8 movge r0, 0 | r0 = 0;
| }
| if (r3 >= 0) {
0x000154ea blt 0x154ee |
0x000154ec pop {r4, pc} |
| }
0x000154ee ldr r0, [pc, 0x30] |
0x000154f0 movw r1, 0x101 |
0x000154f4 movt r1, 8 | r1 = 0x80101;
0x000154f8 add r0, pc | r0 = 0x2aa1e;
0x000154fa blx 0x36ec | r0 = asprintf_chk ()
0x000154fe cmp r0, 0 |
0x00015500 str r0, [r4] | *(r4) = r0;
| if (r0 >= 0) {
0x00015502 blt 0x15510 |
0x00015504 bl 0x106cc | r0 = fcn_000106cc (r0);
0x00015508 mov r3, r0 | r3 = r0;
0x0001550a movs r0, 0 | r0 = 0;
0x0001550c str r3, [r4] | *(r4) = r3;
0x0001550e pop {r4, pc} |
| }
0x00015510 blx 0x3828 | r0 = fcn_00003828 ();
0x00015514 ldr r0, [r0] | r0 = *(r0);
0x00015516 rsbs r0, r0, 0 | r0 -= ;
0x00015518 pop {r4, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libudev.so.1.7.2 @ 0x190b8 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.000190b8 () | void fcn_000190b8 (int16_t arg_50h, int16_t arg1, uint32_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x000190b8 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x000190bc mov r8, r2 | r8 = r2;
0x000190be ldr r2, [pc, 0x1c0] |
0x000190c0 sub sp, 0xc |
0x000190c2 ldr r3, [pc, 0x1c0] | r3 = *(0x19286);
0x000190c4 add r2, pc | r2 = 0x3234a;
0x000190c6 ldr r3, [r2, r3] |
0x000190c8 ldr r3, [r3] | r3 = LIBUDEV_247;
0x000190ca str r3, [sp, 4] | var_4h = r3;
0x000190cc mov.w r3, 0 | r3 = 0;
0x000190d0 cmp r1, 0 |
| if (r1 == 0) {
0x000190d2 beq 0x1918c | goto label_4;
| }
0x000190d4 ands r5, r8, 8 | r5 = r8 & 8;
0x000190d8 mov r6, r0 | r6 = r0;
0x000190da mov r4, r1 | r4 = r1;
| if (r5 == r8) {
0x000190dc bne 0x19150 |
| label_0:
0x000190de ldr r3, [pc, 0x1a8] |
0x000190e0 add r3, pc |
0x000190e2 ldr r3, [r3] | r3 = LIBUDEV_247;
| if (r3 != 0) {
0x000190e4 cbz r3, 0x1912e |
0x000190e6 ldr.w sb, [pc, 0x1a4] |
0x000190ea lsr.w sl, r8, 2 | sl = r8 >> 2;
0x000190ee and fp, r8, 2 |
0x000190f2 movs r7, 1 | r7 = 1;
0x000190f4 add sb, pc | sb = 0x32386;
| label_1:
0x000190f6 and r2, sl, 4 | r2 = sl & 4;
0x000190fa mov r1, r4 | r1 = r4;
0x000190fc cmp.w fp, 0 |
0x00019100 it eq |
| if (fp != 0) {
0x00019102 orreq r2, r2, 1 | r2 |= 1;
| }
0x00019106 mov r0, r6 | r0 = r6;
0x00019108 blx 0x3a48 | r0 = fcn_00003a48 ();
0x0001910c cmp r0, 0 |
| if (r0 <= 0) {
0x0001910e ble 0x191b4 | goto label_5;
| }
0x00019110 cmp r4, r0 |
0x00019112 str.w r7, [sb] | __asm ("str.w r7, [sb]");
| if (r4 == r0) {
0x00019116 beq 0x1918c | goto label_4;
| }
0x00019118 cmp r0, r4 |
| if (r0 >= r4) {
0x0001911a bhs 0x19212 | goto label_6;
| }
0x0001911c tst.w r8, 1 |
0x00019120 add r6, r0 | r6 += r0;
0x00019122 sub.w r4, r4, r0 | r4 -= r0;
| if ((r8 & 1) != 0) {
0x00019126 bne 0x19226 | goto label_7;
| }
0x00019128 cmp.w fp, 0 |
| if (fp != 0) {
0x0001912c bne 0x191fa | goto label_8;
| }
| }
| label_2:
0x0001912e ldr r0, [pc, 0x160] |
0x00019130 mov.w r1, 0x100 |
0x00019134 movt r1, 8 | r1 = 0x80100;
0x00019138 add r0, pc | r0 = 0x323ce;
0x0001913a blx 0x36ec | r0 = asprintf_chk ()
0x0001913e subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x00019140 blt 0x191fe | goto label_9;
| }
0x00019142 mov r2, r4 | r2 = r4;
0x00019144 movs r3, 1 | r3 = 1;
0x00019146 mov r1, r6 | r1 = r6;
0x00019148 bl 0x15228 | r0 = fcn_00015228 (r0, r1, r2, r3);
0x0001914c mov r4, r0 | r4 = r0;
0x0001914e b 0x19192 | goto label_3;
| }
0x00019150 movs r5, 0 | r5 = 0;
0x00019152 mov r7, sp | r7 = sp;
0x00019154 b 0x19170 |
| while (r0 >= 0) {
0x00019156 cmp r4, 4 |
0x00019158 mov r5, r4 | r5 = r4;
0x0001915a it hs |
| if (r4 < 4) {
0x0001915c movhs r5, 4 | r5 = 4;
| }
0x0001915e mov r0, r6 | r0 = r6;
0x00019160 mov r2, r5 | r2 = r5;
0x00019162 mov r1, r7 | r1 = r7;
0x00019164 blx 0x3578 | mmap64 ();
0x00019168 subs r4, r4, r5 | r4 -= r5;
0x0001916a add r6, r5 | r6 += r5;
| if (r4 == r4) {
0x0001916c beq 0x1918c | goto label_4;
| }
0x0001916e movs r5, 1 | r5 = 1;
0x00019170 mov r0, r7 | r0 = r7;
0x00019172 bl 0x18fb8 | r0 = fcn_00018fb8 ();
0x00019176 cmp r0, 0 |
0x00019178 bge 0x19156 |
| }
0x0001917a cmp r5, 0 |
| if (r5 == 0) {
0x0001917c beq 0x190de | goto label_0;
| }
0x0001917e tst.w r8, 1 |
| if ((r8 & 1) == 0) {
0x00019182 beq 0x190de | goto label_0;
| }
0x00019184 mov r1, r4 | r1 = r4;
0x00019186 mov r0, r6 | r0 = r6;
0x00019188 bl 0x1907c | fcn_0001907c (r0, r1);
| label_4:
0x0001918c mov.w r5, -1 | r5 = -1;
0x00019190 movs r4, 0 | r4 = 0;
| label_3:
0x00019192 mov r0, r5 | r0 = r5;
0x00019194 bl 0x10570 | fcn_00010570 (r0);
0x00019198 ldr r2, [pc, 0xf8] |
0x0001919a ldr r3, [pc, 0xe8] | r3 = *(0x19286);
0x0001919c add r2, pc | r2 = 0x32434;
0x0001919e ldr r3, [r2, r3] | r3 = LIBUDEV_247;
0x000191a0 ldr r2, [r3] | r2 = LIBUDEV_247;
0x000191a2 ldr r3, [sp, 4] | r3 = var_4h;
0x000191a4 eors r2, r3 | r2 ^= r3;
0x000191a6 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000191aa bne 0x1927c | goto label_10;
| }
0x000191ac mov r0, r4 | r0 = r4;
0x000191ae add sp, 0xc |
0x000191b0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| if (r2 == r3) {
| label_5:
0x000191b4 beq 0x19236 | goto label_11;
| }
0x000191b6 blx 0x3828 | r0 = fcn_00003828 ();
0x000191ba ldr r3, [r0] | r3 = *(r0);
0x000191bc eor.w r2, r3, r3, asr 31 | r2 = r3 ^ (r3 >> 31);
0x000191c0 sub.w r2, r2, r3, asr 31 | r2 -= (r3 >> 31);
0x000191c4 cmp r2, 0x26 |
| if (r2 == 0x26) {
0x000191c6 beq 0x191f0 | goto label_12;
| }
| if (r2 > 0x26) {
0x000191c8 bgt 0x191ea | goto label_13;
| }
0x000191ca cmp r2, 0x19 |
| if (r2 == 0x19) {
0x000191cc beq 0x191f0 | goto label_12;
| }
| do {
0x000191ce cmp r3, 0xb |
| if (r3 == 0xb) {
0x000191d0 beq 0x19252 | goto label_14;
| }
0x000191d2 cmp r3, 0x16 |
| if (r3 != 0x16) {
0x000191d4 bne 0x19274 | goto label_15;
| }
0x000191d6 tst.w r8, 0x10 |
| if ((r8 & 0x10) == 0) {
0x000191da beq 0x19248 | goto label_16;
| }
0x000191dc bic r8, r8, 0x10 | r8 = BIT_MASK (r8, 0x10);
0x000191e0 lsr.w sl, r8, 2 | sl = r8 >> 2;
0x000191e4 and fp, r8, 2 |
0x000191e8 b 0x190f6 | goto label_1;
| label_13:
0x000191ea subs r2, 0x5d | r2 -= 0x5d;
0x000191ec cmp r2, 4 |
0x000191ee bhi 0x191ce |
| } while (r2 > 4);
| label_12:
0x000191f0 ldr r3, [pc, 0xa4] |
0x000191f2 movs r2, 0 | r2 = 0;
0x000191f4 add r3, pc | r3 = 0x32490;
0x000191f6 str r2, [r3] | *(r3) = r2;
0x000191f8 b 0x1912e | goto label_2;
| label_8:
0x000191fa movs r5, 1 | r5 = 1;
0x000191fc b 0x190f6 | goto label_1;
| label_9:
0x000191fe blx 0x3828 | r0 = fcn_00003828 ();
0x00019202 ldr r4, [r0] | r4 = *(r0);
0x00019204 cmp r4, 2 |
0x00019206 it ne |
| if (r4 == 2) {
0x00019208 rsbne r4, r4, 0 | __asm ("rsbne r4, r4, 0");
| goto label_17;
| }
| if (r4 != 2) {
| label_17:
0x0001920a bne 0x19192 | goto label_3;
| }
0x0001920c mvn r4, 0x25 | r4 = ~0x25;
0x00019210 b 0x19192 | goto label_3;
| label_6:
0x00019212 ldr r1, [pc, 0x88] |
0x00019214 movs r2, 0xe8 | r2 = 0xe8;
0x00019216 ldr r3, [pc, 0x88] |
0x00019218 ldr r0, [pc, 0x88] |
0x0001921a add r1, pc | r1 = 0x324bc;
0x0001921c add r3, pc | r3 = 0x324c2;
0x0001921e adds r1, 7 | r1 += 7;
0x00019220 add r0, pc | r0 = 0x324c8;
0x00019222 bl 0x16594 | fcn_00016594 (r0, r1, r2, r3, r4);
| do {
| label_7:
0x00019226 mov r1, r4 | r1 = r4;
0x00019228 mov r0, r6 | r0 = r6;
0x0001922a mov.w r5, -1 | r5 = -1;
0x0001922e movs r4, 0 | r4 = 0;
0x00019230 bl 0x1907c | fcn_0001907c (r0, r1);
0x00019234 b 0x19192 | goto label_3;
| label_11:
0x00019236 ldr r3, [pc, 0x70] |
0x00019238 movs r2, 1 | r2 = 1;
0x0001923a mov.w r5, -1 | r5 = -1;
0x0001923e mvn r4, 4 | r4 = ~4;
0x00019242 add r3, pc | r3 = 0x324f0;
0x00019244 str r2, [r3] | *(r3) = r2;
0x00019246 b 0x19192 | goto label_3;
| label_16:
0x00019248 mov.w r5, -1 | r5 = -1;
0x0001924c mvn r4, 0x15 | r4 = ~0x15;
0x00019250 b 0x19192 | goto label_3;
| label_14:
0x00019252 ldr r3, [pc, 0x58] |
0x00019254 movs r2, 1 | r2 = 1;
0x00019256 add r3, pc | r3 = 0x32508;
0x00019258 str r2, [r3] | *(r3) = r2;
| if (r5 == 0) {
0x0001925a cbz r5, 0x19262 | goto label_18;
| }
0x0001925c tst.w r8, 1 |
0x00019260 bne 0x19226 |
| } while ((r8 & 1) != 0);
| label_18:
0x00019262 tst.w r8, 4 |
| if ((r8 & 4) == 0) {
0x00019266 beq.w 0x1912e | goto label_2;
| }
0x0001926a mov.w r5, -1 | r5 = -1;
0x0001926e mvn r4, 0x3c | r4 = ~0x3c;
0x00019272 b 0x19192 | goto label_3;
| label_15:
0x00019274 rsbs r4, r3, 0 | r4 = r3 - ;
0x00019276 mov.w r5, -1 | r5 = -1;
0x0001927a b 0x19192 | goto label_3;
| label_10:
0x0001927c blx 0x35d0 | fcn_000035d0 ();
0x00019280 ldrh r0, [r2, 0x24] | r0 = *((r2 + 0x24));
0x00019282 movs r1, r0 | r1 = r0;
0x00019284 lsls r4, r5, 9 | r4 = r5 << 9;
0x00019286 movs r0, r0 |
0x00019288 str r0, [sp, 0x50] | *(arg_50h) = r0;
0x0001928a movs r1, r0 | r1 = r0;
0x0001928c str r0, [sp] | *(sp) = r0;
0x0001928e movs r1, r0 | r1 = r0;
0x00019290 ldrb r0, [r0, 0xb] | r0 = *((r0 + 0xb));
0x00019292 movs r0, r0 |
0x00019294 ldrh r0, [r7, 0x1c] | r0 = *((r7 + 0x1c));
0x00019296 movs r1, r0 | r1 = r0;
0x00019298 ldrh r0, [r0, 0x38] | r0 = *((r0 + 0x38));
0x0001929a movs r1, r0 | r1 = r0;
0x0001929c ldrb r6, [r5, 6] | r6 = *((r5 + 6));
0x0001929e movs r0, r0 |
0x000192a0 ldrb r4, [r5, 7] | r4 = *((r5 + 7));
0x000192a2 movs r0, r0 |
0x000192a4 ldrb r0, [r1, 7] | r0 = *((r1 + 7));
0x000192a6 movs r0, r0 |
0x000192a8 ldrh r2, [r6, 0x34] | r2 = *((r6 + 0x34));
0x000192aa movs r1, r0 | r1 = r0;
0x000192ac ldrh r6, [r3, 0x34] | r6 = *((r3 + 0x34));
0x000192ae movs r1, r0 | r1 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libudev.so.1.7.2 @ 0x1a1a4 */
| #include <stdint.h>
|
; (fcn) fcn.0001a1a4 () | void fcn_0001a1a4 (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0001a1a4 invalid |
| if (? < ?) {
0x0001a1a8 bmi 0x1a228 | goto label_1;
| }
0x0001a1aa mov r6, r1 | r6 = r1;
0x0001a1ac mov r7, r0 | r7 = r0;
0x0001a1ae movs r5, 0x15 | r5 = 0x15;
0x0001a1b0 b 0x1a1b6 |
| while (r5 != 1) {
0x0001a1b2 blx 0x36b0 | fread (r0, r1, r2, r3);
0x0001a1b6 movs r2, 0 | r2 = 0;
0x0001a1b8 mov r1, r6 | r1 = r6;
0x0001a1ba mov r0, r7 | r0 = r7;
0x0001a1bc blx 0x36ec | r0 = asprintf_chk ()
0x0001a1c0 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 >= r0) {
0x0001a1c2 bge 0x1a1e4 | goto label_2;
| }
0x0001a1c4 blx 0x3828 | r0 = fcn_00003828 ();
0x0001a1c8 ldr r3, [r0] | r3 = *(r0);
0x0001a1ca movw r0, 0xc350 | r0 = 0xc350;
0x0001a1ce cmp r3, 5 |
| if (r3 != 5) {
0x0001a1d0 bne 0x1a21c | goto label_3;
| }
0x0001a1d2 subs r5, 1 | r5--;
0x0001a1d4 bne 0x1a1b2 |
| }
0x0001a1d6 mvn r5, 4 | r5 = ~4;
| do {
| label_0:
0x0001a1da mov r0, r4 | r0 = r4;
0x0001a1dc bl 0x10570 | fcn_00010570 (r0);
0x0001a1e0 mov r0, r5 | r0 = r5;
0x0001a1e2 pop {r3, r4, r5, r6, r7, pc} |
| label_2:
0x0001a1e4 blx 0x3a78 | r0 = fcn_00003a78 ();
0x0001a1e8 cmp r0, 0 |
0x0001a1ea itt gt |
| if (r0 <= 0) {
0x0001a1ec movgt r5, r4 | r5 = r4;
| }
| if (r0 <= 0) {
0x0001a1ee movgt r4, -1 | r4 = -1;
| }
0x0001a1f2 bgt 0x1a1da |
| } while (r0 > 0);
0x0001a1f4 blx 0x3828 | r0 = fcn_00003828 ();
0x0001a1f8 ldr r5, [r0] | r5 = *(r0);
0x0001a1fa cmp r5, 0 |
0x0001a1fc it gt |
| if (r5 <= 0) {
0x0001a1fe rsbgt r5, r5, 0 | __asm ("rsbgt r5, r5, 0");
| goto label_4;
| }
| if (r5 > 0) {
| label_4:
0x0001a200 bgt 0x1a1da | goto label_0;
| }
0x0001a202 ldr r1, [pc, 0x30] |
0x0001a204 movs r2, 0x1e | r2 = 0x1e;
0x0001a206 ldr r3, [pc, 0x30] |
0x0001a208 mvn r5, 0x15 | r5 = ~0x15;
0x0001a20c ldr r0, [pc, 0x2c] |
0x0001a20e add r1, pc | r1 = 0x34448;
0x0001a210 add r3, pc | r3 = 0x3444e;
0x0001a212 adds r1, 7 | r1 += 7;
0x0001a214 add r0, pc | r0 = 0x34454;
0x0001a216 bl 0x167c8 | fcn_000167c8 (r0, r1, r2, r3);
0x0001a218 invalid |
| label_3:
0x0001a21c rsbs r5, r3, 0 | r5 = r3 - ;
0x0001a21e mov r0, r4 | r0 = r4;
0x0001a220 bl 0x10570 | fcn_00010570 (r0);
0x0001a224 mov r0, r5 | r0 = r5;
0x0001a226 pop {r3, r4, r5, r6, r7, pc} |
| label_1:
0x0001a228 mov.w r4, -1 | r4 = -1;
0x0001a22c mvn r5, 0x15 | r5 = ~0x15;
0x0001a230 b 0x1a1da | goto label_0;
| }
[*] Function sprintf used 9 times libudev.so.1.7.2