[*] Binary protection state of keyctl
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function fprintf tear down of keyctl
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/keyctl @ 0x1c2c */
| #include <stdint.h>
|
; (fcn) fcn.00001c2c () | void fcn_00001c2c (char * s) {
| int16_t var_0h_2;
| char * * endptr;
| int16_t var_ch;
| r0 = s;
0x00001c2c blmi 0x15d458c | __asm ("blmi 0x15d458c");
0x00001c30 push {r4, r5, r6, lr} |
0x00001c32 sub sp, 0x10 |
0x00001c34 add r2, pc | r2 += pc;
0x00001c36 ldr r5, [pc, 0x158] |
0x00001c38 mov r4, r0 | r4 = r0;
0x00001c3a ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00001c3c add r5, pc | r5 = 0x39d2;
0x00001c3e ldr r3, [r3] | r3 = *(r3);
0x00001c40 str r3, [sp, 0xc] | var_ch = r3;
0x00001c42 mov.w r3, 0 | r3 = 0;
0x00001c46 ldrb r3, [r0] | r3 = *(r0);
0x00001c48 cmp r3, 0x40 |
| if (r3 == 0x40) {
0x00001c4a beq 0x1cc4 | goto label_2;
| }
0x00001c4c cmp r3, 0x25 |
| if (r3 != 0x25) {
0x00001c4e bne 0x1c9c | goto label_3;
| }
0x00001c50 ldrb r3, [r0, 1] | r3 = *((r0 + 1));
0x00001c52 cmp r3, 0 |
| if (r3 == 0) {
0x00001c54 beq 0x1d48 | goto label_4;
| }
0x00001c56 cmp r3, 0x3a |
| if (r3 == 0x3a) {
0x00001c58 beq 0x1d1c | goto label_5;
| }
0x00001c5a adds r6, r0, 1 | r6 = r0 + 1;
0x00001c5c movs r1, 0x3a | r1 = 0x3a;
0x00001c5e mov r0, r6 | r0 = r6;
0x00001c60 blx 0x17c8 | strchr (r0, r1);
0x00001c62 ldc p6, c4, [r2, 0x10]! | __asm ("ldc p6, c4, [r2, 0x10]!");
0x00001c66 cmp r0, 0 |
| if (r0 == 0) {
0x00001c68 beq 0x1d48 | goto label_4;
| }
0x00001c6a movs r3, 0 | r3 = 0;
0x00001c6c strb r3, [r4], 1 | *(r4) = r3;
| r4++;
| label_1:
0x00001c70 ldrb r3, [r4] | r3 = *(r4);
0x00001c72 cmp r3, 0 |
| if (r3 == 0) {
0x00001c74 beq 0x1d48 | goto label_4;
| }
0x00001c76 movs r2, 0 | r2 = 0;
0x00001c78 mov r1, r4 | r1 = r4;
0x00001c7a mov r0, r6 | r0 = r6;
0x00001c7c blx 0x166c | r0 = find_key_by_type_and_desc ();
0x00001c80 adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 == r0) {
0x00001c82 beq 0x1d6c | goto label_6;
| }
| do {
| label_0:
0x00001c84 ldr r2, [pc, 0x10c] |
0x00001c86 ldr r3, [pc, 0x104] | r3 = *(0x1d8e);
0x00001c88 add r2, pc | r2 = 0x3a20;
0x00001c8a ldr r3, [r2, r3] | r3 = *(0x3a20);
0x00001c8c ldr r2, [r3] | r2 = *(0x3a20);
0x00001c8e ldr r3, [sp, 0xc] | r3 = var_ch;
0x00001c90 eors r2, r3 | r2 ^= r3;
0x00001c92 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00001c96 bne 0x1d60 | goto label_7;
| }
0x00001c98 add sp, 0x10 |
0x00001c9a pop {r4, r5, r6, pc} |
| label_3:
0x00001c9c movs r2, 0 | r2 = 0;
0x00001c9e add r1, sp, 8 | r1 += endptr;
0x00001ca0 blx 0x17b0 | strtoul (r0, r1, r2);
0x00001ca4 ldr r3, [sp, 8] | r3 = endptr;
0x00001ca6 ldrb r3, [r3] | r3 = *(r3);
0x00001ca8 cmp r3, 0 |
0x00001caa beq 0x1c84 |
| } while (r3 == 0);
0x00001cac ldr r2, [pc, 0xe8] |
0x00001cae ldr r0, [pc, 0xec] | r0 = *(0x1d9e);
0x00001cb0 add r2, pc | r2 = 0x3a4c;
| do {
0x00001cb2 ldr r0, [r5, r0] | r0 = *((r5 + r0));
0x00001cb4 mov r3, r4 | r3 = r4;
0x00001cb6 movs r1, 1 | r1 = 1;
0x00001cb8 ldr r0, [r0] | r0 = *(r0);
0x00001cba blx 0x1858 | fprintf_chk ()
0x00001cbe movs r0, 2 | r0 = 2;
0x00001cc0 blx 0x1780 | exit (r0);
| label_2:
0x00001cc4 ldr r1, [pc, 0xd8] |
0x00001cc6 add r1, pc | r1 = 0x3a6a;
0x00001cc8 blx 0x1600 | r0 = strcmp (r0, r1);
| if (r0 != 0) {
0x00001ccc cbz r0, 0x1d24 |
0x00001cce ldr r1, [pc, 0xd4] |
0x00001cd0 mov r0, r4 | r0 = r4;
0x00001cd2 add r1, pc | r1 = 0x3a7c;
0x00001cd4 blx 0x1600 | r0 = strcmp (r0, r1);
| if (r0 == 0) {
0x00001cd8 cbz r0, 0x1d2a | goto label_8;
| }
0x00001cda ldr r1, [pc, 0xcc] |
0x00001cdc mov r0, r4 | r0 = r4;
0x00001cde add r1, pc | r1 = 0x3a8c;
0x00001ce0 blx 0x1600 | r0 = strcmp (r0, r1);
| if (r0 == 0) {
0x00001ce4 cbz r0, 0x1d30 | goto label_9;
| }
0x00001ce6 ldr r1, [pc, 0xc4] |
0x00001ce8 mov r0, r4 | r0 = r4;
0x00001cea add r1, pc | r1 = 0x3a9c;
0x00001cec blx 0x1600 | r0 = strcmp (r0, r1);
| if (r0 == 0) {
0x00001cf0 cbz r0, 0x1d36 | goto label_10;
| }
0x00001cf2 ldr r1, [pc, 0xbc] |
0x00001cf4 mov r0, r4 | r0 = r4;
0x00001cf6 add r1, pc | r1 = 0x3aac;
0x00001cf8 blx 0x1600 | r0 = strcmp (r0, r1);
| if (r0 == 0) {
0x00001cfc cbz r0, 0x1d3c | goto label_11;
| }
0x00001cfe ldr r1, [pc, 0xb4] |
0x00001d00 mov r0, r4 | r0 = r4;
0x00001d02 add r1, pc | r1 = 0x3abc;
0x00001d04 blx 0x1600 | r0 = strcmp (r0, r1);
| if (r0 == 0) {
0x00001d08 cbz r0, 0x1d42 | goto label_12;
| }
0x00001d0a ldr r1, [pc, 0xac] |
0x00001d0c mov r0, r4 | r0 = r4;
0x00001d0e add r1, pc | r1 = 0x3acc;
0x00001d10 blx 0x1600 | r0 = strcmp (r0, r1);
| if (r0 != 0) {
0x00001d14 cbnz r0, 0x1d64 | goto label_13;
| }
0x00001d16 mvn r0, 6 | r0 = ~6;
0x00001d1a b 0x1c84 | goto label_0;
| label_5:
0x00001d1c ldr r6, [pc, 0x9c] |
0x00001d1e adds r4, 2 | r4 += 2;
0x00001d20 add r6, pc | r6 = 0x3ae0;
0x00001d22 b 0x1c70 | goto label_1;
| }
0x00001d24 mov.w r0, -1 | r0 = -1;
0x00001d28 b 0x1c84 | goto label_0;
| label_8:
0x00001d2a mvn r0, 1 | r0 = ~1;
0x00001d2e b 0x1c84 | goto label_0;
| label_9:
0x00001d30 mvn r0, 2 | r0 = ~2;
0x00001d34 b 0x1c84 | goto label_0;
| label_10:
0x00001d36 mvn r0, 3 | r0 = ~3;
0x00001d3a b 0x1c84 | goto label_0;
| label_11:
0x00001d3c mvn r0, 4 | r0 = ~4;
0x00001d40 b 0x1c84 | goto label_0;
| label_12:
0x00001d42 mvn r0, 5 | r0 = ~5;
0x00001d46 b 0x1c84 | goto label_0;
| label_4:
0x00001d48 ldr r3, [pc, 0x50] |
0x00001d4a movs r2, 0x1b | r2 = 0x1b;
0x00001d4c ldr r0, [pc, 0x70] |
0x00001d4e movs r1, 1 | r1 = 1;
0x00001d50 ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x00001d52 add r0, pc | r0 = 0x3b16;
0x00001d54 ldr r3, [r3] | r3 = *(0x1d9c);
0x00001d56 blx 0x16d8 | fwrite (r0, r1, r2, r3);
0x00001d5a movs r0, 2 | r0 = 2;
0x00001d5c blx 0x1780 | r0 = exit (r0);
| label_7:
0x00001d60 blx 0x169c | stack_chk_fail ();
| label_13:
0x00001d64 ldr r2, [pc, 0x5c] |
0x00001d66 ldr r0, [pc, 0x34] | r0 = *(0x1d9e);
0x00001d68 add r2, pc | r2 = 0x3b30;
0x00001d6a b 0x1cb2 |
| } while (1);
| label_6:
0x00001d6c ldr r1, [pc, 0x2c] | r1 = *(0x1d9c);
0x00001d6e mov r3, r6 | r3 = r6;
0x00001d70 ldr r2, [pc, 0x54] |
0x00001d72 ldr r0, [r5, r1] | r0 = *((r5 + r1));
0x00001d74 movs r1, 1 | r1 = 1;
0x00001d76 str r4, [sp] | *(sp) = r4;
0x00001d78 add r2, pc | r2 = 0x3b44;
0x00001d7a ldr r0, [r0] | r0 = *(r0);
0x00001d7c blx 0x1858 | fprintf_chk ()
0x00001d80 movs r0, 1 | r0 = 1;
0x00001d82 blx 0x1780 | exit (r0);
0x00001d86 nop |
0x00001d88 rsbs r0, r5, 0 | r0 = r5 - ;
0x00001d8a movs r1, r0 | r1 = r0;
0x00001d8c lsls r0, r0, 5 | r0 <<= 5;
0x00001d8e movs r0, r0 |
0x00001d90 rsbs r0, r4, 0 | r0 = r4 - ;
0x00001d92 movs r1, r0 | r1 = r0;
0x00001d94 tst r4, r2 |
0x00001d96 movs r1, r0 | r1 = r0;
0x00001d98 movs r7, 0xa0 | r7 = 0xa0;
0x00001d9a movs r0, r0 |
0x00001d9c lsls r4, r0, 5 | r4 = r0 << 5;
0x00001d9e movs r0, r0 |
0x00001da0 movs r7, 0x3e | r7 = 0x3e;
0x00001da2 movs r0, r0 |
0x00001da4 movs r7, 0x36 | r7 = 0x36;
0x00001da6 movs r0, r0 |
0x00001da8 movs r7, 0x2e | r7 = 0x2e;
0x00001daa movs r0, r0 |
0x00001dac movs r7, 0x26 | r7 = 0x26;
0x00001dae movs r0, r0 |
0x00001db0 movs r7, 0x1e | r7 = 0x1e;
0x00001db2 movs r0, r0 |
0x00001db4 movs r7, 0x16 | r7 = 0x16;
0x00001db6 movs r0, r0 |
0x00001db8 movs r7, 0xe | r7 = 0xe;
0x00001dba movs r0, r0 |
0x00001dbc cmp r2, 0xc4 |
0x00001dbe movs r0, r0 |
0x00001dc0 movs r7, 0x16 | r7 = 0x16;
0x00001dc2 movs r0, r0 |
0x00001dc4 movs r6, 0xb8 | r6 = 0xb8;
0x00001dc6 movs r0, r0 |
0x00001dc8 movs r6, 0xc4 | r6 = 0xc4;
0x00001dca movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/keyctl @ 0x2440 */
| #include <stdint.h>
|
; (fcn) fcn.00002440 () | void fcn_00002440 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_bp_4h;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_24h_3;
| int16_t var_1ch;
| int16_t var_2ch_3;
| int16_t var_24h;
| int16_t var_28h;
| char * s;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int32_t var_4ch_3;
| int16_t var_4ch;
| int16_t var_0h_2;
| int16_t var_4h_2;
| int16_t var_8h_2;
| int16_t var_ch;
| int16_t var_10h_2;
| int16_t var_14h_2;
| int16_t var_1ch_2;
| int16_t var_20h;
| int16_t var_24h_2;
| int16_t var_28h_2;
| int16_t var_2ch_2;
| int16_t var_30h_2;
| int16_t var_34h_2;
| int16_t var_38h_2;
| int16_t var_3ch_2;
| char * ptr;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch_2;
| int16_t var_50h;
| char * s1;
| int16_t var_15ch;
| int16_t var_0h_3;
| int16_t var_4h_3;
| int16_t var_8h_3;
| int16_t var_ch_2;
| int32_t var_10h_3;
| int32_t var_10h_4;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00002440 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x00002444 mov r4, r0 | r4 = r0;
0x00002446 ldr r6, [pc, 0x12c] |
0x00002448 sub sp, 0x1c |
0x0000244a mov r7, r1 | r7 = r1;
0x0000244c mov sb, r2 | sb = r2;
0x0000244e mov r5, r3 | r5 = r3;
0x00002450 add r6, pc | r6 = 0x49ca;
0x00002452 ldr.w fp, [r6, 4] | fp = *(0x49ce);
0x00002456 cmp.w fp, 0 |
0x00002458 lsrs r0, r0, 0x1c | r0 >>= 0x1c;
| if (r0 == r0) {
0x0000245a beq 0x24fe | goto label_9;
| }
0x0000245c ldr.w sl, [r6, 8] | sl = *((r6 + 8));
| label_0:
0x00002460 lsr.w ip, r7, 0x18 |
0x00002464 cmp sl, sb |
0x00002466 itt eq |
| if (sl != sb) {
0x00002468 orreq r1, ip, r7, lsr 16 | r1 = ip | (r7 >> 16);
| }
| if (sl == sb) {
0x0000246c and r1, r1, 0x3f | r1 &= 0x3f;
| }
| if (sl == sb) {
0x00002470 beq 0x24a0 | goto label_1;
| }
0x00002472 adds r1, r5, 1 | r1 = r5 + 1;
| if (r1 == r5) {
0x00002474 beq 0x255a | goto label_10;
| }
0x00002476 ldr r3, [pc, 0x100] |
0x00002478 add r3, pc | r3 = 0x49f6;
0x0000247a ldr r2, [r3, 0xc] | r2 = *(0x4a02);
0x0000247c cmp r2, r5 |
| if (r2 == r5) {
0x0000247e beq 0x2498 | goto label_11;
| }
0x00002480 ldrd r2, r0, [r3, 0x10] | __asm ("ldrd r2, r0, [r3, 0x10]");
0x00002484 cmp r2, 0 |
| if (r2 <= 0) {
0x00002486 ble 0x255a | goto label_10;
| }
0x00002488 subs r0, 4 | r0 -= 4;
0x0000248a b 0x2490 |
| while (r3 != r5) {
0x0000248c subs r2, 1 | r2--;
| if (r2 == 1) {
0x0000248e beq 0x255a | goto label_10;
| }
0x00002490 ldr r3, [r0, 4]! | r3 = *((r0 += 4));
0x00002494 cmp r3, r5 |
0x00002496 bne 0x248c |
| }
| label_11:
0x00002498 orr.w r1, ip, r7, lsr 8 | r1 = ip | (r7 >> 8);
0x0000249c and r1, r1, 0x3f | r1 &= 0x3f;
| label_1:
0x000024a0 tst.w r1, 0x20 |
0x000024a4 mov r0, r4 | r0 = r4;
0x000024a6 ite ne |
| if ((r1 & 0x20) == 0) {
0x000024a8 movne r3, 0x61 | r3 = 0x61;
| }
| if ((r1 & 0x20) != 0) {
0x000024aa moveq r3, 0x2d | r3 = 0x2d;
| }
0x000024ac tst.w r1, 0x10 |
0x000024b0 str r3, [sp] | *(sp) = r3;
0x000024b2 ite ne |
| if ((r1 & 0x10) == 0) {
0x000024b4 movne r3, 0x6c | r3 = 0x6c;
| }
| if ((r1 & 0x10) != 0) {
0x000024b6 moveq r3, 0x2d | r3 = 0x2d;
| }
0x000024b8 tst.w r1, 8 |
0x000024bc str r3, [sp, 4] | var_4h_3 = r3;
0x000024be ite ne |
| if ((r1 & 8) == 0) {
0x000024c0 movne r3, 0x73 | r3 = 0x73;
| }
| if ((r1 & 8) != 0) {
0x000024c2 moveq r3, 0x2d | r3 = 0x2d;
| }
0x000024c4 tst.w r1, 4 |
0x000024c8 str r3, [sp, 8] | var_8h_3 = r3;
0x000024ca ite ne |
| if ((r1 & 4) == 0) {
0x000024cc movne r4, 0x77 | r4 = 0x77;
| }
| if ((r1 & 4) != 0) {
0x000024ce moveq r4, 0x2d | r4 = 0x2d;
| }
0x000024d0 ldr r3, [pc, 0xa8] |
0x000024d2 tst.w r1, 2 |
0x000024d6 ite ne |
| if ((r1 & 2) == 0) {
0x000024d8 movne r2, 0x72 | r2 = 0x72;
| }
| if ((r1 & 2) != 0) {
0x000024da moveq r2, 0x2d | r2 = 0x2d;
| }
0x000024dc tst.w r1, 1 |
0x000024e0 str r4, [sp, 0xc] | var_ch_2 = r4;
0x000024e2 ite ne |
| if ((r1 & 1) == 0) {
0x000024e4 movne r1, 0x76 | r1 = 0x76;
| }
| if ((r1 & 1) != 0) {
0x000024e6 moveq r1, 0x2d | r1 = 0x2d;
| }
0x000024e8 strd r2, r1, [sp, 0x10] | __asm ("strd r2, r1, [var_10h_3]");
0x000024ec add r3, pc | r3 = 0x4a6c;
0x000024ee mov.w r2, -1 | r2 = -1;
0x000024f2 movs r1, 1 | r1 = 1;
0x000024f4 blx 0x1810 | sprintf_chk ();
0x000024f8 add sp, 0x1c |
0x000024fa pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_9:
0x000024fe movs r3, 1 | r3 = 1;
0x00002500 str r3, [r6, 4] | *((r6 + 4)) = r3;
0x00002502 blx 0x16b4 | r0 = geteuid ();
0x00002506 mov sl, r0 | sl = r0;
0x00002508 str r0, [r6, 8] | *((r6 + 8)) = r0;
0x0000250a blx 0x16cc | getegid ();
0x0000250e mov r1, fp | r1 = fp;
0x00002510 mov r8, r0 | r8 = r0;
0x00002512 str r0, [r6, 0xc] | *((r6 + 0xc)) = r0;
0x00002514 mov r0, fp | r0 = fp;
0x00002516 blx 0x18b8 | getgroups ();
0x0000251a cmp.w r8, -1 |
0x0000251e it ne |
| if (r8 != -1) {
0x00002520 cmpne sl, -1 | __asm ("cmpne sl, -1");
| }
0x00002524 mov fp, r0 |
0x00002526 ite eq |
| if (r8 != -1) {
0x00002528 moveq r3, 1 | r3 = 1;
| }
| if (r8 == -1) {
0x0000252a movne r3, 0 | r3 = 0;
| }
0x0000252c cmp.w r0, -1 |
0x00002530 it eq |
| if (r0 != -1) {
0x00002532 orreq r3, r3, 1 | r3 |= 1;
| }
0x00002536 str r0, [r6, 0x10] | *((r6 + 0x10)) = r0;
| if (r3 != 0) {
0x00002538 cbnz r3, 0x2564 | goto label_12;
| }
0x0000253a movs r1, 4 | r1 = 4;
0x0000253c blx 0x15c4 | calloc (r0, r1);
0x0000253e strex r6, r4, [r2, 4] | __asm ("strex r6, r4, [r2, 4]");
0x00002542 str r0, [r6, 0x14] | *((r6 + 0x14)) = r0;
| if (r0 == 0) {
0x00002544 cbz r0, 0x256c | goto label_13;
| }
0x00002546 mov r0, fp | r0 = fp;
0x00002548 blx 0x18b8 | r0 = getgroups ();
0x0000254c cmp r0, 0 |
0x0000254e str r0, [r6, 0x10] | *((r6 + 0x10)) = r0;
| if (r0 >= 0) {
0x00002550 bge 0x2460 | goto label_0;
| }
0x00002552 ldr r0, [pc, 0x2c] |
0x00002554 add r0, pc | r0 = 0x4ada;
0x00002556 bl 0x1dcc | fcn_00001dcc ();
| label_10:
0x0000255a orr.w r1, ip, r7 | r1 = ip | r7;
0x0000255e and r1, r1, 0x3f | r1 &= 0x3f;
0x00002562 b 0x24a0 | goto label_1;
| label_12:
0x00002564 ldr r0, [pc, 0x1c] |
0x00002566 add r0, pc | r0 = 0x4aee;
0x00002568 bl 0x1dcc | fcn_00001dcc ();
| label_13:
0x0000256c ldr r0, [pc, 0x18] |
0x0000256e add r0, pc | r0 = 0x4afa;
0x00002570 bl 0x1dcc | fcn_00001dcc ();
0x00002574 subs r3, 0xb8 | r3 -= 0xb8;
0x00002576 movs r1, r0 | r1 = r0;
0x00002578 subs r3, 0x90 | r3 -= 0x90;
0x0000257a movs r1, r0 | r1 = r0;
0x0000257c movs r1, 0x84 | r1 = 0x84;
0x0000257e movs r0, r0 |
0x00002580 movs r1, 4 | r1 = 4;
0x00002582 movs r0, r0 |
0x00002584 movs r0, 0xca | r0 = 0xca;
0x00002586 movs r0, r0 |
0x00002588 movs r0, 0xe2 | r0 = 0xe2;
0x0000258a movs r0, r0 |
0x0000258c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00002590 mov fp, r1 |
0x00002592 ldr r4, [pc, 0x238] |
0x00002594 cmp.w fp, 0x20 |
0x00002598 sub sp, 0x164 |
0x0000259a ldr r1, [pc, 0x234] | r1 = *(0x27d2);
0x0000259c add r4, pc | r4 = 0x4d6e;
0x0000259e ldr r7, [pc, 0x234] |
0x000025a0 ldr r1, [r4, r1] |
0x000025a2 add r7, pc | r7 = 0x4d7c;
0x000025a4 ldr r1, [r1] | r1 = *(0x4d6e);
0x000025a6 str r1, [sp, 0x15c] | var_15ch = r1;
0x000025a8 mov.w r1, 0 | r1 = 0;
0x000025ac strd r3, r2, [sp, 0x1c] | __asm ("strd r3, r2, [var_1ch_2]");
0x000025b0 ble 0x25d2 |
| while (r0 != 0) {
0x000025b2 movs r4, 0 | r4 = 0;
| label_3:
0x000025b4 ldr r2, [pc, 0x220] |
0x000025b6 ldr r3, [pc, 0x218] | r3 = *(0x27d2);
0x000025b8 add r2, pc | r2 = 0x4d94;
0x000025ba ldr r3, [r2, r3] | r3 = *(0x4d94);
0x000025bc ldr r2, [r3] | r2 = *(0x4d94);
0x000025be ldr r3, [sp, 0x15c] | r3 = var_15ch;
0x000025c0 eors r2, r3 | r2 ^= r3;
0x000025c2 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000025c6 bne.w 0x27a6 | goto label_14;
| }
0x000025ca mov r0, r4 | r0 = r4;
0x000025cc add sp, 0x164 |
0x000025ce pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x000025d2 add r6, sp, 0x40 | r6 += ptr;
0x000025d4 mov r4, r0 | r4 = r0;
0x000025d6 mov r1, r6 | r1 = r6;
0x000025d8 blx 0x16f0 | r0 = keyctl_describe_alloc ();
0x000025dc cmp r0, 0 |
| if (r0 < 0) {
0x000025de blt.w 0x276e | goto label_15;
| }
0x000025e0 strh r6, [r0, 6] | *((r0 + 6)) = r6;
0x000025e2 ldr r1, [pc, 0x1f8] |
0x000025e4 add r3, sp, 0x4c | r3 += var_4ch_2;
0x000025e6 str r3, [sp, 8] | var_8h_2 = r3;
0x000025e8 add r5, sp, 0x5c | r5 += s1;
0x000025ea add.w sb, sp, 0x44 | sb += var_44h;
0x000025ee add.w r8, sp, 0x48 | r8 += var_48h;
0x000025f2 add.w sl, sp, 0x38 | sl += var_38h_2;
0x000025f6 str r3, [sp, 0x24] | var_24h_2 = r3;
0x000025f8 movs r3, 0 | r3 = 0;
0x000025fa str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x000025fe str.w sl, [sp, 4] | __asm ("str.w sl, [var_4h_2]");
0x00002602 add r1, pc | r1 = 0x4de4;
0x00002604 strb r3, [r5] | *(r5) = r3;
0x00002606 mov r2, r5 | r2 = r5;
0x00002608 str.w r3, [sb] | __asm ("str.w r3, [sb]");
0x0000260a adds r0, 0 | r0 += 0;
0x0000260c str.w r3, [r8] | __asm ("str.w r3, [r8]");
0x00002610 str.w r3, [sl] | __asm ("str.w r3, [sl]");
0x00002614 mov r3, sb | r3 = sb;
0x00002616 ldr r0, [r6] | r0 = *(r6);
0x00002618 blx 0x181c | r0 = isoc99_sscanf ();
0x0000261c cmp r0, 4 |
| if (r0 != 4) {
0x0000261e bne.w 0x27aa | goto label_16;
| }
0x00002622 add r7, sp, 0x50 | r7 += var_50h;
0x00002624 ldr.w r3, [r8] | r3 = *(r8);
0x00002628 ldr.w r1, [sl] | r1 = *(sl);
0x0000262c mov r0, r7 | r0 = r7;
0x0000262e ldr.w r2, [sb] | r2 = *(sb);
0x00002632 bl 0x2440 | fcn_00002440 (r0, r1, r2, r3);
0x00002636 ldr r3, [sp, 0x1c] | r3 = var_1ch_2;
0x00002638 cmp r3, 0 |
| if (r3 != 0) {
0x0000263a bne 0x2732 | goto label_17;
| }
0x0000263c cmp.w fp, 0 |
0x00002640 ldr.w r3, [sb] | r3 = *(sb);
0x00002644 ldr.w r2, [r8] | r2 = *(r8);
| if (fp <= 0) {
0x00002648 ble.w 0x279a | goto label_18;
| }
0x0000264c ldr r1, [pc, 0x190] |
0x0000264e add r1, pc | r1 = 0x4e32;
| label_5:
0x00002650 strd r3, r2, [sp] | __asm ("strd r3, r2, [sp]");
0x00002654 movs r0, 1 | r0 = 1;
0x00002656 ldr r3, [sp, 0x24] | r3 = var_24h_2;
0x00002658 str r1, [sp, 0xc] | var_ch = r1;
0x0000265a ldr r1, [r3] | r1 = *(r3);
0x0000265c mov r3, r7 | r3 = r7;
0x0000265e str r5, [sp, 0x10] | var_10h_2 = r5;
0x00002660 ldr r2, [r6] | r2 = *(r6);
0x00002662 add r2, r1 | r2 += r1;
0x00002664 ldr r1, [pc, 0x17c] |
0x00002666 str r2, [sp, 0x14] | var_14h_2 = r2;
0x00002668 ldr r2, [pc, 0x17c] |
0x0000266a add r1, pc | r1 = 0x4e52;
0x0000266c add r2, pc | r2 = "<key> <timeout> <keyring>";
0x0000266e adds r2, 0x18 | r2 += 0x18;
0x00002670 str r2, [sp, 8] | var_8h_2 = r2;
0x00002672 mov r2, r4 | r2 = r4;
0x00002674 blx 0x1834 | printf_chk ();
| label_2:
0x00002678 ldr r7, [pc, 0x170] |
0x0000267a ldr r0, [r6] | r0 = *(r6);
0x0000267c blx 0x163c | free (r0);
0x00002680 add r7, pc | r7 = 0x4e70;
0x00002682 mov r0, r5 | r0 = r5;
0x00002684 mov r1, r7 | r1 = r7;
0x00002686 blx 0x1600 | r0 = strcmp (r0, r1);
0x0000268a cmp r0, 0 |
0x0000268c bne 0x25b2 |
| }
0x0000268e add.w sb, sp, 0x3c | sb += var_3ch_2;
0x00002692 mov r0, r4 | r0 = r4;
0x00002694 mov r1, sb | r1 = sb;
0x00002696 blx 0x18ac | r0 = keyctl_read_alloc ();
0x0000269a subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 < r0) {
0x0000269c blt.w 0x27c2 | goto label_19;
| }
0x000026a0 cmp r6, 3 |
0x000026a2 ldr.w r8, [sb] | r8 = *(sb);
0x000026a6 lsr.w r4, r6, 2 | r4 = r6 >> 2;
| if (r6 <= 3) {
0x000026aa ble 0x272a | goto label_20;
| }
0x000026ac ldr r3, [pc, 0x140] |
0x000026ae cmp.w fp, 0 |
0x000026b2 ldr r2, [pc, 0x140] |
0x000026b4 str.w fp, [sp, 0x24] | __asm ("str.w fp, [var_24h_2]");
0x000026b8 add r3, pc | r3 = 0x4eac;
0x000026ba add r3, fp | r3 += fp;
0x000026bc add r2, pc | r2 = 0x4eb6;
0x000026be str r3, [sp, 0x2c] | var_2ch_2 = r3;
0x000026c0 ldr r3, [pc, 0x134] |
0x000026c2 str r2, [sp, 0x34] | var_34h_2 = r2;
0x000026c4 add.w r2, fp, 4 | r2 += var_bp_4h;
0x000026c8 str r2, [sp, 0x28] | var_28h_2 = r2;
0x000026ca it eq |
| if (fp != 0) {
0x000026cc moveq r2, 1 | r2 = 1;
| }
0x000026ce add r3, pc | r3 = 0x4eca;
0x000026d0 add.w sl, r3, fp | sl = r3 + fp;
0x000026d4 ldr.w fp, [sp, 0x1c] | fp = var_1ch_2;
0x000026d8 str.w sb, [sp, 0x1c] | __asm ("str.w sb, [var_1ch_2]");
0x000026dc mov sb, r2 | sb = r2;
0x000026de str r3, [sp, 0x30] | var_30h_2 = r3;
| do {
0x000026e0 mov r1, r7 | r1 = r7;
0x000026e2 mov r0, r5 | r0 = r5;
0x000026e4 blx 0x1600 | strcmp (r0, r1);
0x000026e8 add.w r8, r8, 4 | r8 += 4;
0x000026ec subs r6, 4 | r6 -= 4;
0x000026ee mov r3, r0 | r3 = r0;
| if (r0 == 0) {
0x000026f0 cbnz r0, 0x271e |
0x000026f2 ldr r2, [sp, 0x24] | r2 = var_24h_2;
0x000026f4 ldr r0, [r8, -0x4] | r0 = *((r8 - 0x4));
0x000026f8 cmp r2, 0 |
| if (r2 != 0) {
0x000026fa bne 0x277e | goto label_21;
| }
0x000026fc ldr r2, [sp, 0x34] | r2 = var_34h_2;
0x000026fe movs r3, 0x20 | r3 = 0x20;
0x00002700 strh r3, [r2, 0x18] | *((r2 + 0x18)) = r3;
| label_4:
0x00002702 ldr r3, [sp, 0x20] | r3 = var_20h;
| if (r3 != 0) {
0x00002704 cbz r3, 0x270c |
0x00002706 ldr r2, [sp, 0x2c] | r2 = var_2ch_2;
0x00002708 movs r3, 0x7c | r3 = 0x7c;
0x0000270a strb r3, [r2, 0x18] | *((r2 + 0x18)) = r3;
| }
0x0000270c cmp r6, 3 |
0x0000270e mov r3, fp | r3 = fp;
0x00002710 ite ls |
| if (r6 > 3) {
0x00002712 movls r2, 0 | r2 = 0;
| }
| if (r6 <= 3) {
0x00002714 movhi r2, 1 | r2 = 1;
| }
0x00002716 mov r1, sb | r1 = sb;
0x00002718 bl 0x258c | r0 = void (*0x258c)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0000271c add r4, r0 | r4 += r0;
| }
0x0000271e cmp r6, 3 |
0x00002720 bhi 0x26e0 |
| } while (r6 > 3);
0x00002722 ldr.w sb, [sp, 0x1c] | sb = var_1ch_2;
0x00002726 ldr.w r8, [sb] | r8 = *(sb);
| label_20:
0x0000272a mov r0, r8 | r0 = r8;
0x0000272c blx 0x163c | free (r0);
0x0000272e invalid |
| label_17:
0x00002732 cmp.w fp, 0 |
0x00002736 ldr.w r3, [sb] | r3 = *(sb);
0x0000273a ldr.w r2, [r8] | r2 = *(r8);
0x0000273c movs r0, 0 | r0 = 0;
| if (r0 <= 0) {
0x0000273e ble 0x27a0 | goto label_22;
| }
0x00002740 ldr r1, [pc, 0xb8] |
0x00002742 add r1, pc | r1 = 0x4f42;
| do {
0x00002744 strd r3, r2, [sp] | __asm ("strd r3, r2, [sp]");
0x00002748 movs r0, 1 | r0 = 1;
0x0000274a ldr r3, [sp, 0x24] | r3 = var_24h_2;
0x0000274c str r1, [sp, 0xc] | var_ch = r1;
0x0000274e ldr r1, [r3] | r1 = *(r3);
0x00002750 mov r3, r7 | r3 = r7;
0x00002752 str r5, [sp, 0x10] | var_10h_2 = r5;
0x00002754 ldr r2, [r6] | r2 = *(r6);
0x00002756 add r2, r1 | r2 += r1;
0x00002758 ldr r1, [pc, 0xa4] |
0x0000275a str r2, [sp, 0x14] | var_14h_2 = r2;
0x0000275c ldr r2, [pc, 0xa4] |
0x0000275e add r1, pc | r1 = 0x4f62;
0x00002760 add r2, pc | r2 = 0x4f68;
0x00002762 adds r2, 0x18 | r2 += 0x18;
0x00002764 str r2, [sp, 8] | var_8h_2 = r2;
0x00002766 mov r2, r4 | r2 = r4;
0x00002768 blx 0x1834 | printf_chk ();
0x0000276c b 0x2678 | goto label_2;
| label_15:
0x0000276e ldr r1, [pc, 0x98] |
0x00002770 mov r2, r4 | r2 = r4;
0x00002772 movs r0, 1 | r0 = 1;
0x00002774 movs r4, 0 | r4 = 0;
0x00002776 add r1, pc | r1 = "<type> <desc> [<dest_keyring>]";
0x00002778 blx 0x1834 | printf_chk ();
0x0000277c b 0x25b4 | goto label_3;
| label_21:
0x0000277e movs r2, 0x20 | r2 = 0x20;
0x00002780 ldr r1, [sp, 0x28] | r1 = var_28h_2;
0x00002782 strb.w r2, [sl, 0x18] | *((sl + 0x18)) = r2;
0x00002786 strb.w r2, [sl, 0x19] | *((sl + 0x19)) = r2;
0x0000278a strb.w r2, [sl, 0x1a] | *((sl + 0x1a)) = r2;
0x0000278e strb.w r2, [sl, 0x1b] | *((sl + 0x1b)) = r2;
0x00002792 ldr r2, [sp, 0x30] | r2 = var_30h_2;
0x00002794 add r2, r1 | r2 += r1;
0x00002796 strb r3, [r2, 0x18] | *((r2 + 0x18)) = r3;
0x00002798 b 0x2702 | goto label_4;
| label_18:
0x0000279a ldr r1, [pc, 0x70] |
0x0000279c add r1, pc | r1 = 0x4fae;
0x0000279e b 0x2650 | goto label_5;
| label_22:
0x000027a0 ldr r1, [pc, 0x6c] |
0x000027a2 add r1, pc | r1 = 0x4fb6;
0x000027a4 b 0x2744 |
| } while (1);
| label_14:
0x000027a6 blx 0x169c | stack_chk_fail ();
| label_16:
0x000027aa ldr r0, [pc, 0x68] |
0x000027ac mov r3, r4 | r3 = r4;
0x000027ae ldr r2, [pc, 0x68] |
0x000027b0 movs r1, 1 | r1 = 1;
0x000027b2 ldr r0, [r7, r0] | r0 = *((r7 + r0));
0x000027b4 add r2, pc | r2 = 0x4fd2;
0x000027b6 ldr r0, [r0] | r0 = *(0x2816);
0x000027b8 blx 0x1858 | fprintf_chk ()
0x000027bc movs r0, 3 | r0 = 3;
0x000027be blx 0x1780 | exit (r0);
| label_19:
0x000027c2 ldr r0, [pc, 0x58] |
0x000027c4 add r0, pc | r0 = 0x4fe6;
0x000027c6 bl 0x1dcc | fcn_00001dcc ();
0x000027ca nop |
0x000027cc subs r1, 0 |
0x000027ce movs r1, r0 | r1 = r0;
0x000027d0 lsls r0, r0, 5 | r0 <<= 5;
0x000027d2 movs r0, r0 |
0x000027d4 subs r0, 0xfa | r0 -= 0xfa;
0x000027d6 movs r1, r0 | r1 = r0;
0x000027d8 subs r0, 0xe4 | r0 -= 0xe4;
0x000027da movs r1, r0 | r1 = r0;
0x000027dc movs r0, 0x9e | r0 = 0x9e;
0x000027de movs r0, r0 |
0x000027e0 movs r0, 0x32 | r0 = 0x32;
0x000027e2 movs r0, r0 |
0x000027e4 movs r0, 0x6a | r0 = 0x6a;
0x000027e6 movs r0, r0 |
0x000027e8 subs r1, 0x9c | r1 -= 0x9c;
0x000027ea movs r1, r0 | r1 = r0;
0x000027ec movs r1, 0x64 | r1 = 0x64;
0x000027ee movs r0, r0 |
0x000027f0 subs r1, 0x50 | r1 -= 0x50;
0x000027f2 movs r1, r0 | r1 = r0;
0x000027f4 subs r1, 0x4c | r1 -= 0x4c;
0x000027f6 movs r1, r0 | r1 = r0;
0x000027f8 subs r1, 0x3a | r1 -= 0x3a;
0x000027fa movs r1, r0 | r1 = r0;
0x000027fc subs r6, r7, 4 | r6 = r7 - 4;
0x000027fe movs r0, r0 |
0x00002800 subs r6, r2, 5 | r6 = r2 - 5;
0x00002802 movs r0, r0 |
0x00002804 subs r0, 0xa8 | r0 -= 0xa8;
0x00002806 movs r1, r0 | r1 = r0;
0x00002808 subs r6, r1, 4 | r6 = r1 - 4;
0x0000280a movs r0, r0 |
0x0000280c subs r0, r6, r3 | r0 = r6 - r3;
0x0000280e movs r0, r0 |
0x00002810 subs r2, r5, r3 | r2 = r5 - r3;
0x00002812 movs r0, r0 |
0x00002814 lsls r4, r0, 5 | r4 = r0 << 5;
0x00002816 movs r0, r0 |
0x00002818 adds r4, r4, 7 | r4 += 7;
0x0000281a movs r0, r0 |
0x0000281c subs r0, r2, 1 | r0 = r2 - 1;
0x0000281e movs r0, r0 |
0x00002820 cmp r0, 1 |
0x00002822 push {r3, lr} |
| if (r0 <= 1) {
0x00002824 ble 0x2848 | goto label_23;
| }
0x00002826 mov r5, r1 | r5 = r1;
0x00002828 ldr r1, [pc, 0x68] |
0x0000282a mov r4, r0 | r4 = r0;
0x0000282c ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x0000282e add r1, pc | r1 = 0x50c6;
0x00002830 blx 0x1600 | r0 = strcmp (r0, r1);
| if (r0 == 0) {
0x00002834 cbz r0, 0x2840 | goto label_24;
| }
0x00002836 movs r6, 0 | r6 = 0;
| do {
0x00002838 cmp r4, 2 |
| if (r4 <= 2) {
0x0000283a ble 0x2872 | goto label_25;
| }
0x0000283c bl 0x1af0 | fcn_00001af0 ();
| label_24:
0x00002840 subs r4, 1 | r4--;
0x00002842 adds r5, 4 | r5 += 4;
0x00002844 movs r6, 1 | r6 = 1;
0x00002846 b 0x2838 |
| } while (1);
| label_23:
0x00002848 ldr r0, [pc, 0x4c] |
0x0000284a movs r6, 0 | r6 = 0;
0x0000284c mvn r4, 2 | r4 = ~2;
0x00002850 add r0, pc | r0 = 0x50ec;
| do {
| label_6:
0x00002852 blx 0x172c | puts (r0);
0x00002856 movs r1, 0 | r1 = 0;
0x00002858 mov r0, r4 | r0 = r4;
0x0000285a blx 0x187c | r0 = keyctl_get_keyring_ID ();
0x0000285e adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 == r0) {
0x00002860 beq 0x288c | goto label_26;
| }
0x00002862 movs r2, 0 | r2 = 0;
0x00002864 mov r3, r6 | r3 = r6;
0x00002866 mov r1, r2 | r1 = r2;
0x00002868 bl 0x258c | void (*0x258c)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0000286c movs r0, 0 | r0 = 0;
0x0000286e blx 0x1780 | exit (r0);
| if (r0 != 0) {
| label_25:
0x00002872 bne 0x2882 | goto label_27;
| }
0x00002874 ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x00002876 bl 0x1c2c | r0 = fcn_00001c2c (r0);
0x0000287a mov r4, r0 | r4 = r0;
0x0000287c ldr r0, [pc, 0x1c] |
0x0000287e add r0, pc | r0 = 0x511e;
0x00002880 b 0x2852 |
| } while (1);
| label_27:
0x00002882 ldr r0, [pc, 0x1c] |
0x00002884 mvn r4, 2 | r4 = ~2;
0x00002888 add r0, pc | r0 = 0x512e;
0x0000288a b 0x2852 | goto label_6;
| label_26:
0x0000288c ldr r0, [pc, 0x14] |
0x0000288e add r0, pc | r0 = 0x5136;
0x00002890 bl 0x1dcc | fcn_00001dcc ();
0x00002894 subs r6, r2, 3 | r6 = r2 - 3;
0x00002896 movs r0, r0 |
0x00002898 subs r4, r4, 2 | r4 -= 2;
0x0000289a movs r0, r0 |
0x0000289c subs r6, r7, 1 | r6 = r7 - 1;
0x0000289e movs r0, r0 |
0x000028a0 subs r4, r5, 1 | r4 = r5 - 1;
0x000028a2 movs r0, r0 |
0x000028a4 subs r2, r7, 1 | r2 = r7 - 1;
0x000028a6 movs r0, r0 |
0x000028a8 ldr r2, [pc, 0x124] |
0x000028aa cmp r0, 2 |
0x000028ac ldr r3, [pc, 0x124] | r3 = *(0x29d4);
0x000028ae push.w {r7, fp, lr} |
0x000028b2 sub sp, 0x54 |
0x000028b4 add r2, pc | r2 = 0x5288;
0x000028b6 ldr r6, [pc, 0x120] |
0x000028b8 ldr r3, [r2, r3] |
0x000028ba add r6, pc | r6 = 0x5298;
0x000028bc ldr r3, [r3] | r3 = *(0x5288);
0x000028be str r3, [sp, 0x4c] | var_4ch = r3;
0x000028c0 mov.w r3, 0 | r3 = 0;
| if (r0 != 2) {
0x000028c4 beq 0x28ca |
0x000028c6 bl 0x1af0 | fcn_00001af0 ();
| }
0x000028ca ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x000028cc bl 0x1c2c | fcn_00001c2c (r0);
0x000028d0 add r1, sp, 0x28 | r1 += var_28h;
0x000028d2 blx 0x18ac | r0 = keyctl_read_alloc ();
0x000028d6 cmp r0, 0 |
| if (r0 < 0) {
0x000028d8 blt 0x29a2 | goto label_28;
| }
0x000028da lsrs r4, r0, 2 | r4 = r0 >> 2;
| if (r4 == r0) {
0x000028dc beq 0x298e | goto label_29;
| }
0x000028de cmp r4, 1 |
| if (r4 == 1) {
0x000028e0 beq 0x29c6 | goto label_30;
| }
0x000028e2 ldr r1, [pc, 0xf8] |
0x000028e4 mov r2, r4 | r2 = r4;
0x000028e6 movs r0, 1 | r0 = 1;
0x000028e8 add r1, pc | r1 = 0x52ca;
0x000028ea blx 0x1834 | printf_chk ();
| label_8:
0x000028ee ldr r3, [pc, 0xf0] |
0x000028f0 add r7, sp, 0x2c | r7 += s;
0x000028f2 ldr.w r8, [pc, 0xf0] |
0x000028f6 ldr.w sb, [pc, 0xf0] |
0x000028fa add r3, pc | r3 = 0x52e0;
0x000028fc ldr r5, [sp, 0x28] | r5 = var_28h;
0x000028fe add r8, pc | r8 = 0x52e8;
0x00002900 mov sl, r3 | sl = r3;
0x00002902 add sb, pc | sb = 0x52f0;
0x00002904 str r6, [sp, 0x1c] | var_1ch = r6;
0x00002906 b 0x2972 |
| while (r0 >= 0) {
0x00002908 add r3, sp, 0x3c | r3 += var_3ch;
0x0000290a ldr r0, [sp, 0x2c] | r0 = s;
0x0000290c str r3, [sp, 8] | var_8h = r3;
0x0000290e add r3, sp, 0x24 | r3 += var_24h;
0x00002910 str r3, [sp, 4] | var_4h = r3;
0x00002912 add r3, sp, 0x34 | r3 += var_28h;
0x00002914 str r3, [sp] | *(sp) = r3;
0x00002916 movs r3, 0 | r3 = 0;
0x00002918 strd r3, r3, [sp, 0x30] | __asm ("strd r3, r3, [var_28h]");
0x0000291c add r2, sp, 0x38 | r2 += s;
0x0000291e str r3, [sp, 0x24] | var_24h = r3;
0x00002920 mov.w r3, -1 | r3 = -1;
0x00002924 strd r3, r3, [sp, 0x38] | __asm ("strd r3, r3, [s]");
0x00002928 mov r1, r8 | r1 = r8;
0x0000292a add r3, sp, 0x30 | r3 += var_24h;
0x0000292c blx 0x181c | r0 = isoc99_sscanf ();
0x00002930 cmp r0, 3 |
| if (r0 != 3) {
0x00002932 bne 0x29aa | goto label_31;
| }
0x00002934 add.w fp, sp, 0x40 |
0x00002938 ldrd r2, r3, [sp, 0x30] | __asm ("ldrd r2, r3, [var_28h]");
0x0000293c ldr r1, [sp, 0x24] | r1 = var_24h;
0x0000293e mov r0, fp | r0 = fp;
0x00002940 bl 0x2440 | fcn_00002440 (r0, r1, r2, r3);
0x00002944 ldr r1, [sp, 0x2c] | r1 = s;
0x00002946 mov r3, fp | r3 = fp;
0x00002948 ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x0000294a mov r2, r6 | r2 = r6;
0x0000294c str r1, [sp, 0x10] | var_4h = r1;
0x0000294e add r1, r0 | r1 += r0;
0x00002950 movs r0, 1 | r0 = 1;
0x00002952 str r1, [sp, 0x14] | var_8h = r1;
0x00002954 ldr r1, [sp, 0x38] | r1 = s;
0x00002956 strd r1, r1, [sp, 8] | __asm ("strd r1, r1, [var_0h]");
0x0000295a ldr r1, [sp, 0x34] | r1 = var_28h;
0x0000295c str r1, [sp, 4] | var_4h = r1;
0x0000295e ldr r1, [sp, 0x30] | r1 = var_24h;
0x00002960 str r1, [sp] | *(sp) = r1;
0x00002962 mov r1, sb | r1 = sb;
0x00002964 blx 0x1834 | printf_chk ();
0x00002968 ldr r0, [sp, 0x2c] | r0 = s;
0x0000296a blx 0x163c | free (r0);
| label_7:
0x0000296e subs r4, 1 | r4--;
| if (r4 == 1) {
0x00002970 beq 0x299c | goto label_32;
| }
0x00002972 ldr r6, [r5], 4 | r6 = *(r5);
| r5 += 4;
0x00002976 mov r1, r7 | r1 = r7;
0x00002978 mov r0, r6 | r0 = r6;
0x0000297a blx 0x16f0 | r0 = keyctl_describe_alloc ();
0x0000297e cmp r0, 0 |
0x00002980 bge 0x2908 |
| }
0x00002982 mov r2, r6 | r2 = r6;
0x00002984 mov r1, sl | r1 = sl;
0x00002986 movs r0, 1 | r0 = 1;
0x00002988 blx 0x1834 | printf_chk ();
0x0000298c b 0x296e | goto label_7;
| label_29:
0x0000298e ldr r0, [pc, 0x5c] |
0x00002990 add r0, pc | r0 = 0x5382;
0x00002992 blx 0x172c | puts (r0);
0x00002996 mov r0, r4 | r0 = r4;
0x00002998 blx 0x1780 | exit (r0);
| label_32:
0x0000299c mov r0, r4 | r0 = r4;
0x0000299e blx 0x1780 | exit (r0);
| label_28:
0x000029a2 ldr r0, [pc, 0x4c] |
0x000029a4 add r0, pc | r0 = 0x539a;
0x000029a6 bl 0x1dcc | fcn_00001dcc ();
| label_31:
0x000029aa mov fp, r6 |
0x000029ac ldr r0, [pc, 0x44] |
0x000029ae ldr r6, [sp, 0x1c] | r6 = var_1ch;
0x000029b0 mov r3, fp | r3 = fp;
0x000029b2 ldr r2, [pc, 0x44] |
0x000029b4 movs r1, 1 | r1 = 1;
0x000029b6 ldr r0, [r6, r0] | r0 = *((r6 + r0));
0x000029b8 add r2, pc | r2 = 0x53b6;
0x000029ba ldr r0, [r0] | r0 = *(0x29f4);
0x000029bc blx 0x1858 | fprintf_chk ()
0x000029c0 movs r0, 3 | r0 = 3;
0x000029c2 blx 0x1780 | exit (r0);
| label_30:
0x000029c6 ldr r0, [pc, 0x34] |
0x000029c8 add r0, pc | r0 = 0x53ca;
0x000029ca blx 0x172c | puts (r0);
0x000029ce b 0x28ee | goto label_8;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/keyctl @ 0x30f4 */
| #include <stdint.h>
|
; (fcn) fcn.000030f4 () | void fcn_000030f4 (int16_t arg1, int16_t arg2) {
| int16_t var_0h_9;
| int16_t var_4h_9;
| int32_t var_4h_23;
| int16_t var_0h_8;
| int16_t var_4h_8;
| int32_t var_0h_20;
| int32_t var_8h_11;
| int32_t var_ch_10;
| void * var_0h_10;
| int16_t var_4h_7;
| int32_t var_4h_24;
| int32_t var_8h_12;
| int32_t var_ch_11;
| int16_t var_10h_2;
| int16_t var_8h_5;
| int16_t var_ch_5;
| int16_t var_0h_11;
| char * * var_4h_10;
| int16_t var_8h_6;
| int16_t var_ch_6;
| int16_t var_10h;
| int16_t var_14h;
| char * * endptr;
| int16_t var_0h_7;
| int16_t var_4h_6;
| int32_t var_0h_18;
| int16_t var_0h_6;
| int16_t var_4h_5;
| int32_t var_0h_17;
| int16_t var_0h_5;
| int16_t var_8h_10;
| int32_t var_ch_9;
| int16_t var_0h_4;
| int16_t var_0h_16;
| int16_t var_0h_3;
| int16_t var_8h_4;
| int16_t var_ch_4;
| int32_t var_4h_22;
| int32_t var_0h_21;
| int16_t var_0h_2;
| int16_t var_4h_4;
| int16_t var_ch_8;
| char * ptr;
| int16_t var_4h_3;
| size_t var_2eh;
| int16_t var_0h_13;
| int16_t var_4h_11;
| int16_t var_8h_3;
| int16_t var_ch_3;
| int16_t var_4h_21;
| int16_t var_48h_6;
| int16_t var_48h_3;
| int16_t var_1040h_6;
| int16_t var_4h_20;
| int32_t var_0h_22;
| int32_t var_4h_25;
| int16_t var_8h_9;
| int16_t var_1040h_3;
| size_t var_0h_14;
| int16_t var_4h_12;
| int16_t var_8h_2;
| int16_t var_ch_2;
| int16_t var_4h_19;
| int16_t var_48h_5;
| int16_t var_48h_2;
| int16_t var_1040h_5;
| int16_t var_4h_18;
| int16_t var_1040h_2;
| int32_t var_4h_26;
| int16_t var_8h_8;
| int16_t var_0h_15;
| int16_t var_4h_13;
| int16_t var_8h;
| size_t var_32h;
| int16_t var_ch;
| int16_t var_4h_17;
| int16_t var_48h_4;
| int16_t var_48h;
| int16_t var_1040h_4;
| int16_t var_4h_16;
| int16_t var_1040h;
| int16_t var_4h_2;
| int32_t var_38h;
| int32_t var_34h;
| int32_t var_32h_2;
| int32_t var_30h;
| int32_t var_2eh_2;
| int16_t var_4h_15;
| int16_t var_40h;
| int16_t var_1020h;
| int16_t var_1ch;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_ch_7;
| int16_t var_8h_7;
| int16_t var_4h_14;
| int16_t var_18h;
| int16_t var_1000h;
| int16_t var_14h_2;
| void * buf;
| size_t size;
| int16_t var_5ch;
| r0 = arg1;
| r1 = arg2;
0x000030f4 ldr r2, [pc, 0xa8] |
0x000030f6 ldr r3, [pc, 0xac] | r3 = *(0x31a6);
0x000030f8 push.w {r4, r5, r6, r7, r8, sb, lr} |
0x000030fc mov r6, r1 | r6 = r1;
0x000030fe add r2, pc | r2 = 0x62a2;
0x00003100 sub sp, 0x64 |
0x00003102 movs r1, 0 | r1 = 0;
0x00003104 mov r7, r0 | r7 = r0;
0x00003106 ldr r3, [r2, r3] |
0x00003108 ldr.w r8, [pc, 0x9c] | r8 = *(0x000031a8);
0x0000310c ldr r3, [r3] | r3 = *(0x62a2);
0x0000310e str r3, [sp, 0x5c] | var_5ch = r3;
0x00003110 mov.w r3, 0 | r3 = 0;
0x00003114 blx 0x1750 | open (r0, r1, r2);
0x00003116 adds.w lr, ip, r5, lsl 4 | lr = ip + (r5 << 4);
0x0000311a add r8, pc | r8 += pc;
| if (lr >= ip) {
0x0000311c blt 0x3174 |
0x0000311e mov r1, sp | r1 = sp;
0x00003120 blx 0x190c | r0 = fstat (r0, r1);
0x00003124 cmp r0, 0 |
| if (r0 < 0) {
0x00003126 blt 0x3174 | goto label_6;
| }
0x00003128 ldr.w sb, [sp, 0x2c] | sb = size;
0x0000312c mov r0, sb | r0 = sb;
0x0000312e blx 0x1738 | r0 = malloc (r0);
0x00003132 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x00003134 cbz r0, 0x3198 | goto label_7;
| }
0x00003136 mov r1, r0 | r1 = r0;
0x00003138 mov r2, sb | r2 = sb;
0x0000313a mov r0, r5 | r0 = r5;
0x0000313c blx 0x1624 | r0 = read (r0, r1, r2);
0x00003140 adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 == r0) {
0x00003142 beq 0x3174 | goto label_6;
| }
0x00003144 ldr r3, [sp, 0x2c] | r3 = size;
0x00003146 cmp r3, r0 |
| if (r3 != r0) {
0x00003148 bne 0x317e | goto label_8;
| }
0x0000314a mov r0, r5 | r0 = r5;
0x0000314c blx 0x1918 | r0 = close (r0);
0x00003150 cmp r0, 0 |
| if (r0 < 0) {
0x00003152 blt 0x3174 | goto label_6;
| }
0x00003154 ldr r3, [sp, 0x2c] | r3 = size;
0x00003156 ldr r2, [pc, 0x54] |
0x00003158 str r3, [r6] | *(r6) = r3;
0x0000315a ldr r3, [pc, 0x48] | r3 = *(0x31a6);
0x0000315c add r2, pc | r2 = 0x630e;
0x0000315e ldr r3, [r2, r3] | r3 = *(0x630e);
0x00003160 ldr r2, [r3] | r2 = *(0x630e);
0x00003162 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x00003164 eors r2, r3 | r2 ^= r3;
0x00003166 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000316a bne 0x317a | goto label_9;
| }
0x0000316c mov r0, r4 | r0 = r4;
0x0000316e add sp, 0x64 |
0x00003170 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| }
| label_6:
0x00003174 mov r0, r7 | r0 = r7;
0x00003176 bl 0x1dcc | fcn_00001dcc ();
| label_9:
0x0000317a blx 0x169c | stack_chk_fail ();
| label_8:
0x0000317e ldr r0, [pc, 0x30] |
0x00003180 mov r3, r7 | r3 = r7;
0x00003182 ldr r2, [pc, 0x30] |
0x00003184 movs r1, 1 | r1 = 1;
0x00003186 ldr.w r0, [r8, r0] | r0 = *((r8 + r0));
0x0000318a add r2, pc | r2 = 0x6344;
0x0000318c ldr r0, [r0] | r0 = *(0x31b2);
0x0000318e blx 0x1858 | fprintf_chk ()
0x00003192 movs r0, 1 | r0 = 1;
0x00003194 blx 0x1780 | exit (r0);
| label_7:
0x00003198 ldr r0, [pc, 0x1c] |
0x0000319a add r0, pc | r0 = 0x6356;
0x0000319c bl 0x1dcc | fcn_00001dcc ();
0x000031a0 cmp r5, 0x9e |
0x000031a2 movs r1, r0 | r1 = r0;
0x000031a4 lsls r0, r0, 5 | r0 <<= 5;
0x000031a6 movs r0, r0 |
0x000031a8 cmp r5, 0x82 |
0x000031aa movs r1, r0 | r1 = r0;
0x000031ac cmp r5, 0x40 |
0x000031ae movs r1, r0 | r1 = r0;
0x000031b0 lsls r4, r0, 5 | r4 = r0 << 5;
0x000031b2 movs r0, r0 |
0x000031b4 asrs r2, r0, 0x1f | r2 = r0 >> 0x1f;
0x000031b6 movs r0, r0 |
0x000031b8 asrs r2, r5, 0x1e | r2 = r5 >> 0x1e;
0x000031ba movs r0, r0 |
0x000031bc ldr r2, [pc, 0xa8] |
0x000031be cmp r0, 4 |
0x000031c0 ldr r3, [pc, 0xa8] | r3 = *(0x326c);
0x000031c2 push {r7, lr} |
0x000031c4 sub.w sp, sp, 0x1000 |
0x000031c8 add r2, pc | r2 = 0x6434;
0x000031ca ldr r6, [pc, 0xa4] |
0x000031cc sub sp, 0x18 |
0x000031ce ldr r3, [r2, r3] |
0x000031d0 add.w r4, sp, 0x1000 | r4 += var_1000h;
0x000031d4 add r6, pc | r6 = 0x644a;
0x000031d6 add.w r4, r4, 0x14 | r4 += var_14h_2;
0x000031da ldr r3, [r3] | r3 = *(0x6434);
0x000031dc str r3, [r4] | *(r4) = r3;
0x000031de mov.w r3, 0 | r3 = 0;
| if (r0 <= 4) {
0x000031e2 bgt 0x31e8 |
0x000031e4 bl 0x1af0 | fcn_00001af0 ();
| }
0x000031e8 add r7, sp, 0x18 | r7 += var_18h;
0x000031ea mov r4, r1 | r4 = r1;
0x000031ec sub.w sb, r7, 4 | sb -= var_4h_14;
0x000031f0 add.w r0, r4, 0x14 | r0 = r4 + 0x14;
0x000031f4 mov r1, sb | r1 = sb;
0x000031f6 bl 0x3048 | fcn_00003048 (r0, r1);
0x000031fa ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x000031fc bl 0x1c2c | fcn_00001c2c (r0);
0x00003200 ldr r1, [pc, 0x70] |
0x00003202 mov r8, r0 | r8 = r0;
0x00003204 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x00003206 add r1, pc | r1 = 0x647e;
0x00003208 blx 0x1600 | r0 = strcmp (r0, r1);
0x0000320c mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x0000320e cbz r0, 0x3228 |
0x00003210 ldr r3, [pc, 0x64] |
0x00003212 movs r2, 0x26 | r2 = 0x26;
0x00003214 ldr r0, [pc, 0x64] |
0x00003216 movs r1, 1 | r1 = 1;
0x00003218 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x0000321a add r0, pc | r0 = 0x649a;
0x0000321c ldr r3, [r3] | r3 = *(0x3278);
0x0000321e blx 0x16d8 | fwrite (r0, r1, r2, r3);
0x00003222 movs r0, 2 | r0 = 2;
0x00003224 blx 0x1780 | exit (r0);
| }
0x00003228 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x0000322a sub.w r1, r7, 0xc | r1 -= var_ch_7;
0x0000322e bl 0x30f4 | fcn_000030f4 (r0, r1);
0x00003232 sub.w r1, r7, 8 | r1 -= var_8h_7;
0x00003236 mov r2, r0 | r2 = r0;
0x00003238 ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x0000323a mov r4, r2 | r4 = r2;
0x0000323c bl 0x30f4 | fcn_000030f4 (r0, r1);
0x00003240 str r0, [sp] | *(sp) = r0;
0x00003242 mov r2, r4 | r2 = r4;
0x00003244 ldr r3, [r7, -0x8] | r3 = *((r7 - 0x8));
0x00003248 mov r1, sb | r1 = sb;
0x0000324a mov r0, r8 | r0 = r8;
0x0000324c str r3, [sp, 4] | var_4h = r3;
0x0000324e ldr r3, [r7, -0xc] | r3 = var_ch_7;
0x00003252 blx 0x184c | r0 = keyctl_pkey_verify ();
0x00003256 cmp r0, 0 |
| if (r0 >= 0) {
0x00003258 blt 0x3260 |
0x0000325a mov r0, r5 | r0 = r5;
0x0000325c blx 0x1780 | exit (r0);
| }
0x00003260 ldr r0, [pc, 0x1c] |
0x00003262 add r0, pc | r0 = 0x64e6;
0x00003264 bl 0x1dcc | fcn_00001dcc ();
0x00003268 cmp r4, 0xd4 |
0x0000326a movs r1, r0 | r1 = r0;
0x0000326c lsls r0, r0, 5 | r0 <<= 5;
0x0000326e movs r0, r0 |
0x00003270 cmp r4, 0xc8 |
0x00003272 movs r1, r0 | r1 = r0;
0x00003274 asrs r6, r2, 0x1d | r6 = r2 >> 0x1d;
0x00003276 movs r0, r0 |
0x00003278 lsls r4, r0, 5 | r4 = r0 << 5;
0x0000327a movs r0, r0 |
0x0000327c asrs r6, r0, 0x1d | r6 = r0 >> 0x1d;
0x0000327e movs r0, r0 |
0x00003280 asrs r6, r4, 0x1c | r6 = r4 >> 0x1c;
0x00003282 movs r0, r0 |
0x00003284 ldr r2, [pc, 0x128] |
0x00003286 cmp r0, 2 |
0x00003288 ldr r3, [pc, 0x128] | r3 = *(0x33b4);
0x0000328a push {r7, lr} |
0x0000328c sub.w sp, sp, 0x1040 |
0x0000328e ldrb r2, [r0, r6] | r2 = *((r0 + r6));
0x00003290 add r2, pc | r2 = 0x6644;
0x00003292 ldr r6, [pc, 0x124] |
0x00003294 add.w r4, sp, 0x1020 | r4 += var_1020h;
0x00003298 ldr r3, [r2, r3] |
0x0000329a add.w r4, r4, 0x1c | r4 += var_1ch;
0x0000329e add r6, pc | r6 = 0x665c;
0x000032a0 ldr r3, [r3] | r3 = *(0x6644);
0x000032a2 str r3, [r4] | *(r4) = r3;
0x000032a4 mov.w r3, 0 | r3 = 0;
| if (r0 <= 2) {
0x000032a8 bgt 0x32ae |
0x000032aa bl 0x1af0 | fcn_00001af0 ();
| }
0x000032ae add r5, sp, 0x40 | r5 += var_40h;
0x000032b0 mov r4, r1 | r4 = r1;
0x000032b2 sub.w r8, r5, 4 | r8 -= var_4h_15;
0x000032b6 add.w r0, r4, 0xc | r0 = r4 + 0xc;
0x000032ba mov r1, r8 | r1 = r8;
0x000032bc bl 0x3048 | fcn_00003048 (r0, r1);
0x000032c0 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x000032c2 bl 0x1c2c | fcn_00001c2c (r0);
0x000032c6 ldr r1, [pc, 0xf4] |
0x000032c8 mov r7, r0 | r7 = r0;
0x000032ca ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x000032cc add r1, pc | r1 = 0x668e;
0x000032ce blx 0x1600 | r0 = strcmp (r0, r1);
0x000032d2 mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x000032d4 cbz r0, 0x32ee |
0x000032d6 ldr r3, [pc, 0xe8] |
0x000032d8 movs r2, 0x26 | r2 = 0x26;
0x000032da ldr r0, [pc, 0xe8] |
0x000032dc movs r1, 1 | r1 = 1;
0x000032de ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x000032e0 add r0, pc | r0 = 0x66aa;
0x000032e2 ldr r3, [r3] | r3 = *(0x33c2);
0x000032e4 blx 0x16d8 | fwrite (r0, r1, r2, r3);
0x000032e8 movs r0, 2 | r0 = 2;
0x000032ea blx 0x1780 | exit (r0);
| }
0x000032ee add r2, sp, 4 | r2 += var_4h_2;
0x000032f0 mov r1, r8 | r1 = r8;
0x000032f2 mov r0, r7 | r0 = r7;
0x000032f4 blx 0x193c | r0 = keyctl_pkey_query ();
0x000032f8 cmp r0, 0 |
| if (r0 >= 0) {
0x000032fa blt 0x33a8 |
0x000032fc ldr r1, [pc, 0xc8] |
0x000032fe movs r0, 1 | r0 = 1;
0x00003300 ldr r2, [r5, -0x38] | r2 = var_38h;
0x00003304 add r1, pc | r1 = 0x66d0;
0x00003306 blx 0x1834 | printf_chk ();
0x0000330a ldr r1, [pc, 0xc0] |
0x0000330c movs r0, 1 | r0 = 1;
0x0000330e ldrh r2, [r5, -0x34] | r2 = var_34h;
0x00003312 add r1, pc |
0x00003314 blx 0x1834 | printf_chk ();
0x00003316 eor.w sb, lr, sp, asr 16 | sb = lr ^ (sp >> 16);
0x0000331a movs r0, 1 | r0 = 1;
0x0000331c ldrh r2, [r5, -0x32] | r2 = var_32h_2;
0x00003320 add r1, pc | r1 = 0x9a08;
0x00003322 blx 0x1834 | printf_chk ();
0x00003326 ldr r1, [pc, 0xac] |
0x00003328 movs r0, 1 | r0 = 1;
0x0000332a ldrh r2, [r5, -0x30] | r2 = var_30h;
0x0000332e add r1, pc | r1 = 0x6708;
0x00003330 blx 0x1834 | printf_chk ();
0x00003334 ldr r1, [pc, 0xa0] |
0x00003336 movs r0, 1 | r0 = 1;
0x00003338 ldrh r2, [r5, -0x2e] | r2 = var_2eh_2;
0x0000333c add r1, pc | r1 = 0x6718;
0x0000333e blx 0x1834 | printf_chk ();
0x00003342 ldr r3, [r5, -0x3c] | r3 = var_4h_2;
0x00003346 movs r0, 1 | r0 = 1;
0x00003348 ldr r1, [pc, 0x90] |
0x0000334a tst.w r3, 1 |
0x0000334e ite ne |
| if ((r3 & 1) == 0) {
0x00003350 movne r2, 0x79 | r2 = 0x79;
| }
| if ((r3 & 1) != 0) {
0x00003352 moveq r2, 0x6e | r2 = 0x6e;
| }
0x00003354 add r1, pc | r1 = 0x6734;
0x00003356 blx 0x1834 | printf_chk ();
0x0000335a ldr r3, [r5, -0x3c] | r3 = var_4h_2;
0x0000335e movs r0, 1 | r0 = 1;
0x00003360 ldr r1, [pc, 0x7c] |
0x00003362 tst.w r3, 2 |
0x00003366 ite ne |
| if ((r3 & 2) == 0) {
0x00003368 movne r2, 0x79 | r2 = 0x79;
| }
| if ((r3 & 2) != 0) {
0x0000336a moveq r2, 0x6e | r2 = 0x6e;
| }
0x0000336c add r1, pc | r1 = 0x6750;
0x0000336e blx 0x1834 | printf_chk ();
0x00003372 ldr r3, [r5, -0x3c] | r3 = var_4h_2;
0x00003376 movs r0, 1 | r0 = 1;
0x00003378 ldr r1, [pc, 0x68] |
0x0000337a tst.w r3, 4 |
0x0000337e ite ne |
| if ((r3 & 4) == 0) {
0x00003380 movne r2, 0x79 | r2 = 0x79;
| }
| if ((r3 & 4) != 0) {
0x00003382 moveq r2, 0x6e | r2 = 0x6e;
| }
0x00003384 add r1, pc | r1 = 0x676c;
0x00003386 blx 0x1834 | printf_chk ();
0x0000338a ldr r3, [r5, -0x3c] | r3 = var_4h_2;
0x0000338e movs r0, 1 | r0 = 1;
0x00003390 ldr r1, [pc, 0x54] |
0x00003392 tst.w r3, 8 |
0x00003396 add r1, pc | r1 = 0x6782;
0x00003398 ite ne |
| if ((r3 & 8) == 0) {
0x0000339a movne r2, 0x79 | r2 = 0x79;
| }
| if ((r3 & 8) != 0) {
0x0000339c moveq r2, 0x6e | r2 = 0x6e;
| }
0x0000339e blx 0x1834 | printf_chk ();
0x000033a2 mov r0, r4 | r0 = r4;
0x000033a4 blx 0x1780 | exit (r0);
| }
0x000033a8 ldr r0, [pc, 0x40] |
0x000033aa add r0, pc | r0 = 0x679a;
0x000033ac bl 0x1dcc | fcn_00001dcc ();
0x000033b0 cmp r4, 0xc |
0x000033b2 movs r1, r0 | r1 = r0;
0x000033b4 lsls r0, r0, 5 | r0 <<= 5;
0x000033b6 movs r0, r0 |
0x000033b8 cmp r3, 0xfe |
0x000033ba movs r1, r0 | r1 = r0;
0x000033bc asrs r0, r2, 0x1a | r0 = r2 >> 0x1a;
0x000033be movs r0, r0 |
0x000033c0 lsls r4, r0, 5 | r4 = r0 << 5;
0x000033c2 movs r0, r0 |
0x000033c4 asrs r0, r0, 0x1a | r0 >>= 0x1a;
0x000033c6 movs r0, r0 |
0x000033c8 asrs r4, r5, 0x1a | r4 = r5 >> 0x1a;
0x000033ca movs r0, r0 |
0x000033cc asrs r6, r5, 0x1a | r6 = r5 >> 0x1a;
0x000033ce movs r0, r0 |
0x000033d0 asrs r4, r6, 0x1a | r4 = r6 >> 0x1a;
0x000033d2 movs r0, r0 |
0x000033d4 asrs r2, r7, 0x1a | r2 = r7 >> 0x1a;
0x000033d6 movs r0, r0 |
0x000033d8 asrs r0, r0, 0x1b | r0 >>= 0x1b;
0x000033da movs r0, r0 |
0x000033dc asrs r4, r7, 0x1a | r4 = r7 >> 0x1a;
0x000033de movs r0, r0 |
0x000033e0 asrs r0, r6, 0x1a | r0 = r6 >> 0x1a;
0x000033e2 movs r0, r0 |
0x000033e4 asrs r4, r4, 0x1a | r4 >>= 0x1a;
0x000033e6 movs r0, r0 |
0x000033e8 asrs r6, r3, 0x1a | r6 = r3 >> 0x1a;
0x000033ea movs r0, r0 |
0x000033ec asrs r2, r6, 0x17 | r2 = r6 >> 0x17;
0x000033ee movs r0, r0 |
0x000033f0 ldr r2, [pc, 0xe4] |
0x000033f2 cmp r0, 3 |
0x000033f4 ldr r3, [pc, 0xe4] | r3 = *(0x34dc);
0x000033f6 push.w {r7, fp, lr} |
0x000033fa sub.w sp, sp, 0x1040 |
0x000033fe add r2, pc | r2 = 0x68da;
0x00003400 ldr r6, [pc, 0xdc] |
0x00003402 sub sp, 0xc |
0x00003404 ldr r3, [r2, r3] |
0x00003406 add.w r4, sp, 0x1040 | r4 += var_1040h;
0x0000340a add r6, pc | r6 = 0x68ee;
0x0000340c add.w r4, r4, 4 | r4 += var_4h_16;
0x00003410 ldr r3, [r3] | r3 = *(0x68da);
0x00003412 str r3, [r4] | *(r4) = r3;
0x00003414 mov.w r3, 0 | r3 = 0;
0x00003416 lsls r0, r0, 0xc | r0 <<= 0xc;
| if (r0 <= r0) {
0x00003418 bgt 0x341e |
0x0000341a bl 0x1af0 | fcn_00001af0 ();
| }
0x0000341e add.w sb, sp, 0x48 | sb += var_48h;
0x00003422 mov r4, r1 | r4 = r1;
0x00003424 sub.w r8, sb, 4 | r8 -= var_4h_17;
0x00003428 add.w r0, r4, 0x10 | r0 = r4 + 0x10;
0x0000342c mov r1, r8 | r1 = r8;
0x0000342e bl 0x3048 | fcn_00003048 (r0, r1);
0x00003432 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x00003434 bl 0x1c2c | fcn_00001c2c (r0);
0x00003438 ldr r1, [pc, 0xa8] |
0x0000343a mov r7, r0 | r7 = r0;
0x0000343c ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0000343e add r1, pc | r1 = 0x6926;
0x00003440 blx 0x1600 | r0 = strcmp (r0, r1);
0x00003444 mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x00003446 cbz r0, 0x3460 |
0x00003448 ldr r3, [pc, 0x9c] |
0x0000344a movs r2, 0x26 | r2 = 0x26;
0x0000344c ldr r0, [pc, 0x9c] |
0x0000344e movs r1, 1 | r1 = 1;
0x00003450 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x00003452 add r0, pc | r0 = 0x6942;
0x00003454 ldr r3, [r3] | r3 = *(0x34e8);
0x00003456 blx 0x16d8 | fwrite (r0, r1, r2, r3);
0x0000345a movs r0, 2 | r0 = 2;
0x0000345c blx 0x1780 | exit (r0);
| }
0x00003460 add r1, sp, 8 | r1 += var_8h;
0x00003462 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x00003464 bl 0x30f4 | fcn_000030f4 (r0, r1);
0x00003468 add r2, sp, 0xc | r2 += var_ch;
0x0000346a mov sl, r0 | sl = r0;
0x0000346c mov r1, r8 | r1 = r8;
0x0000346e mov r0, r7 | r0 = r7;
0x00003470 blx 0x193c | r0 = keyctl_pkey_query ();
0x00003474 cmp r0, 0 |
| if (r0 >= 0) {
0x00003476 blt 0x34b8 |
0x00003478 ldrh fp, [sb, -0x32] | fp = var_32h;
0x0000347c mov r0, fp | r0 = fp;
0x0000347e blx 0x1738 | r0 = malloc (r0);
0x00003482 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x00003484 cbz r0, 0x34ce | goto label_10;
| }
0x00003486 mov r1, r8 | r1 = r8;
0x00003488 str.w fp, [sp, 4] | __asm ("str.w fp, [var_4h_13]");
0x0000348c mov r2, sl | r2 = sl;
0x0000348e ldr r3, [sb, -0x40] | r3 = var_8h_8;
0x00003492 mov r0, r7 | r0 = r7;
0x00003494 str r4, [sp] | *(sp) = r4;
0x00003496 blx 0x15dc | r0 = keyctl_pkey_sign ();
0x0000349a subs r1, r0, 0 | r1 = r0 - 0;
| if (r1 < r0) {
0x0000349c blt 0x34c0 | goto label_11;
| }
0x0000349e ldr r3, [pc, 0x50] |
0x000034a0 mov r0, r4 | r0 = r4;
0x000034a2 movs r2, 1 | r2 = 1;
0x000034a4 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x000034a6 ldr r3, [r3] | r3 = *(0x34f2);
0x000034a8 blx 0x16d8 | r0 = fwrite (r0, r1, r2, r3);
0x000034ac cmp r0, 1 |
| if (r0 == 1) {
0x000034ae beq 0x34c8 | goto label_12;
| }
0x000034b0 ldr r0, [pc, 0x40] |
0x000034b2 add r0, pc | r0 = 0x69aa;
0x000034b4 bl 0x1dcc | fcn_00001dcc ();
| }
0x000034b8 ldr r0, [pc, 0x3c] |
0x000034ba add r0, pc | r0 = 0x69b6;
0x000034bc bl 0x1dcc | fcn_00001dcc ();
| label_11:
0x000034c0 ldr r0, [pc, 0x38] |
0x000034c2 add r0, pc | r0 = 0x69c2;
0x000034c4 bl 0x1dcc | fcn_00001dcc ();
| label_12:
0x000034c8 mov r0, r5 | r0 = r5;
0x000034ca blx 0x1780 | exit (r0);
| label_10:
0x000034ce ldr r0, [pc, 0x30] |
0x000034d0 add r0, pc | r0 = 0x69d6;
0x000034d2 bl 0x1dcc | fcn_00001dcc ();
0x000034d6 nop |
0x000034d8 cmp r2, 0x9e |
0x000034da movs r1, r0 | r1 = r0;
0x000034dc lsls r0, r0, 5 | r0 <<= 5;
0x000034de movs r0, r0 |
0x000034e0 cmp r2, 0x92 |
0x000034e2 movs r1, r0 | r1 = r0;
0x000034e4 asrs r6, r3, 0x14 | r6 = r3 >> 0x14;
0x000034e6 movs r0, r0 |
0x000034e8 lsls r4, r0, 5 | r4 = r0 << 5;
0x000034ea movs r0, r0 |
0x000034ec asrs r6, r1, 0x14 | r6 = r1 >> 0x14;
0x000034ee movs r0, r0 |
0x000034f0 lsls r0, r2, 5 | r0 = r2 << 5;
0x000034f2 movs r0, r0 |
0x000034f4 asrs r2, r4, 0x16 | r2 = r4 >> 0x16;
0x000034f6 movs r0, r0 |
0x000034f8 asrs r2, r4, 0x13 | r2 = r4 >> 0x13;
0x000034fa movs r0, r0 |
0x000034fc asrs r6, r7, 0x15 | r6 = r7 >> 0x15;
0x000034fe movs r0, r0 |
0x00003500 asrs r4, r6, 0x11 | r4 = r6 >> 0x11;
0x00003502 movs r0, r0 |
0x00003504 ldr r2, [pc, 0xe4] |
0x00003506 cmp r0, 3 |
0x00003508 ldr r3, [pc, 0xe4] | r3 = *(0x35f0);
0x0000350a push.w {r7, fp, lr} |
0x0000350e sub.w sp, sp, 0x1040 |
0x00003512 add r2, pc | r2 = 0x6b02;
0x00003514 ldr r6, [pc, 0xdc] |
0x00003516 sub sp, 0xc |
0x00003518 ldr r3, [r2, r3] |
0x0000351a add.w r4, sp, 0x1040 | r4 += var_1040h_2;
0x0000351e add r6, pc | r6 = 0x6b16;
0x00003520 add.w r4, r4, 4 | r4 += var_4h_18;
0x00003524 ldr r3, [r3] | r3 = *(0x6b02);
0x00003526 str r3, [r4] | *(r4) = r3;
0x00003528 mov.w r3, 0 | r3 = 0;
| if (r0 <= 3) {
0x0000352c bgt 0x3532 |
0x0000352e bl 0x1af0 | fcn_00001af0 ();
| }
0x00003532 add.w sb, sp, 0x48 | sb += var_48h_2;
0x00003536 mov r4, r1 | r4 = r1;
0x00003538 sub.w r8, sb, 4 | r8 -= var_4h_19;
0x0000353c add.w r0, r4, 0x10 | r0 = r4 + 0x10;
0x00003540 mov r1, r8 | r1 = r8;
0x00003542 bl 0x3048 | fcn_00003048 (r0, r1);
0x00003546 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x00003548 bl 0x1c2c | fcn_00001c2c (r0);
0x0000354c ldr r1, [pc, 0xa8] |
0x0000354e mov r7, r0 | r7 = r0;
0x00003550 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x00003552 add r1, pc | r1 = 0x6b4e;
0x00003554 blx 0x1600 | r0 = strcmp (r0, r1);
0x00003558 mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x0000355a cbz r0, 0x3574 |
0x0000355c ldr r3, [pc, 0x9c] |
0x0000355e movs r2, 0x26 | r2 = 0x26;
0x00003560 ldr r0, [pc, 0x9c] |
0x00003562 movs r1, 1 | r1 = 1;
0x00003564 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x00003566 add r0, pc | r0 = 0x6b6a;
0x00003568 ldr r3, [r3] | r3 = *(0x35fc);
0x0000356a blx 0x16d8 | fwrite (r0, r1, r2, r3);
0x0000356e movs r0, 2 | r0 = 2;
0x00003570 blx 0x1780 | exit (r0);
| }
0x00003574 add r1, sp, 8 | r1 += var_8h_2;
0x00003576 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x00003578 bl 0x30f4 | fcn_000030f4 (r0, r1);
0x0000357c add r2, sp, 0xc | r2 += var_ch_2;
0x0000357e mov sl, r0 | sl = r0;
0x00003580 mov r1, r8 | r1 = r8;
0x00003582 mov r0, r7 | r0 = r7;
0x00003584 blx 0x193c | r0 = keyctl_pkey_query ();
0x00003588 cmp r0, 0 |
| if (r0 >= 0) {
0x0000358a blt 0x35cc |
0x0000358c ldrh fp, [sb, -0x30] | fp = var_0h_14;
0x00003590 mov r0, fp | r0 = fp;
0x00003592 blx 0x1738 | r0 = malloc (r0);
0x00003596 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x00003598 cbz r0, 0x35e2 | goto label_13;
| }
0x0000359a mov r1, r8 | r1 = r8;
0x0000359c str.w fp, [sp, 4] | __asm ("str.w fp, [var_4h_12]");
0x000035a0 mov r2, sl | r2 = sl;
0x000035a2 ldr r3, [sb, -0x40] | r3 = var_8h_9;
0x000035a6 mov r0, r7 | r0 = r7;
0x000035a8 str r4, [sp] | *(sp) = r4;
0x000035aa blx 0x1870 | r0 = keyctl_pkey_decrypt ();
0x000035ae subs r1, r0, 0 | r1 = r0 - 0;
| if (r1 < r0) {
0x000035b0 blt 0x35d4 | goto label_14;
| }
0x000035b2 ldr r3, [pc, 0x50] |
0x000035b4 mov r0, r4 | r0 = r4;
0x000035b6 movs r2, 1 | r2 = 1;
0x000035b8 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x000035ba ldr r3, [r3] | r3 = *(0x3606);
0x000035bc blx 0x16d8 | r0 = fwrite (r0, r1, r2, r3);
0x000035c0 cmp r0, 1 |
| if (r0 == 1) {
0x000035c2 beq 0x35dc | goto label_15;
| }
0x000035c4 ldr r0, [pc, 0x40] |
0x000035c6 add r0, pc | r0 = 0x6bd2;
0x000035c8 bl 0x1dcc | fcn_00001dcc ();
| }
0x000035cc ldr r0, [pc, 0x3c] |
0x000035ce add r0, pc | r0 = 0x6bde;
0x000035d0 bl 0x1dcc | fcn_00001dcc ();
| label_14:
0x000035d4 ldr r0, [pc, 0x38] |
0x000035d6 add r0, pc | r0 = 0x6bea;
0x000035d8 bl 0x1dcc | fcn_00001dcc ();
| label_15:
0x000035dc mov r0, r5 | r0 = r5;
0x000035de blx 0x1780 | exit (r0);
| label_13:
0x000035e2 ldr r0, [pc, 0x30] |
0x000035e4 add r0, pc | r0 = 0x6bfe;
0x000035e6 bl 0x1dcc | fcn_00001dcc ();
0x000035ea nop |
0x000035ec cmp r1, 0x8a |
0x000035ee movs r1, r0 | r1 = r0;
0x000035f0 lsls r0, r0, 5 | r0 <<= 5;
0x000035f2 movs r0, r0 |
0x000035f4 cmp r1, 0x7e |
0x000035f6 movs r1, r0 | r1 = r0;
0x000035f8 asrs r2, r1, 0x10 | r2 = r1 >> 0x10;
0x000035fa movs r0, r0 |
0x000035fc lsls r4, r0, 5 | r4 = r0 << 5;
0x000035fe movs r0, r0 |
0x00003600 asrs r2, r7, 0xf | r2 = r7 >> 0xf;
0x00003602 movs r0, r0 |
0x00003604 lsls r0, r2, 5 | r0 = r2 << 5;
0x00003606 movs r0, r0 |
0x00003608 asrs r6, r1, 0x12 | r6 = r1 >> 0x12;
0x0000360a movs r0, r0 |
0x0000360c asrs r6, r1, 0xf | r6 = r1 >> 0xf;
0x0000360e movs r0, r0 |
0x00003610 asrs r6, r0, 0x12 | r6 = r0 >> 0x12;
0x00003612 movs r0, r0 |
0x00003614 asrs r0, r4, 0xd | r0 = r4 >> 0xd;
0x00003616 movs r0, r0 |
0x00003618 ldr r2, [pc, 0xe4] |
0x0000361a cmp r0, 3 |
0x0000361c ldr r3, [pc, 0xe4] | r3 = *(0x3704);
0x0000361e push.w {r7, fp, lr} |
0x00003622 sub.w sp, sp, 0x1040 |
0x00003626 add r2, pc | r2 = 0x6d2a;
0x00003628 ldr r6, [pc, 0xdc] |
0x0000362a sub sp, 0xc |
0x0000362c ldr r3, [r2, r3] |
0x0000362e add.w r4, sp, 0x1040 | r4 += var_1040h_3;
0x00003632 add r6, pc | r6 = 0x6d3e;
0x00003634 add.w r4, r4, 4 | r4 += var_4h_20;
0x00003638 ldr r3, [r3] | r3 = *(0x6d2a);
0x0000363a str r3, [r4] | *(r4) = r3;
0x0000363c mov.w r3, 0 | r3 = 0;
| if (r0 <= 3) {
0x00003640 bgt 0x3646 |
0x00003642 bl 0x1af0 | fcn_00001af0 ();
| }
0x00003646 add.w sb, sp, 0x48 | sb += var_48h_3;
0x0000364a mov r4, r1 | r4 = r1;
0x0000364c sub.w r8, sb, 4 | r8 -= var_4h_21;
0x00003650 add.w r0, r4, 0x10 | r0 = r4 + 0x10;
0x00003654 mov r1, r8 | r1 = r8;
0x00003656 bl 0x3048 | fcn_00003048 (r0, r1);
0x0000365a ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x0000365c bl 0x1c2c | fcn_00001c2c (r0);
0x00003660 ldr r1, [pc, 0xa8] |
0x00003662 mov r7, r0 | r7 = r0;
0x00003664 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x00003666 add r1, pc | r1 = 0x6d76;
0x00003668 blx 0x1600 | r0 = strcmp (r0, r1);
0x0000366c mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x0000366e cbz r0, 0x3688 |
0x00003670 ldr r3, [pc, 0x9c] |
0x00003672 movs r2, 0x26 | r2 = 0x26;
0x00003674 ldr r0, [pc, 0x9c] |
0x00003676 movs r1, 1 | r1 = 1;
0x00003678 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x0000367a add r0, pc | r0 = 0x6d92;
0x0000367c ldr r3, [r3] | r3 = *(0x3710);
0x0000367e blx 0x16d8 | fwrite (r0, r1, r2, r3);
0x00003682 movs r0, 2 | r0 = 2;
0x00003684 blx 0x1780 | exit (r0);
| }
0x00003688 add r1, sp, 8 | r1 += var_8h_3;
0x0000368a ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x0000368c bl 0x30f4 | fcn_000030f4 (r0, r1);
0x00003690 add r2, sp, 0xc | r2 += var_ch_3;
0x00003692 mov sl, r0 | sl = r0;
0x00003694 mov r1, r8 | r1 = r8;
0x00003696 mov r0, r7 | r0 = r7;
0x00003698 blx 0x193c | r0 = keyctl_pkey_query ();
0x0000369c cmp r0, 0 |
| if (r0 >= 0) {
0x0000369e blt 0x36e0 |
0x000036a0 ldrh fp, [sb, -0x2e] | fp = var_2eh;
0x000036a4 mov r0, fp | r0 = fp;
0x000036a6 blx 0x1738 | r0 = malloc (r0);
0x000036aa mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x000036ac cbz r0, 0x36f6 | goto label_16;
| }
0x000036ae mov r1, r8 | r1 = r8;
0x000036b0 str.w fp, [sp, 4] | __asm ("str.w fp, [var_0h_2]");
0x000036b4 mov r2, sl | r2 = sl;
0x000036b6 ldr r3, [sb, -0x40] | r3 = var_4h_4;
0x000036ba mov r0, r7 | r0 = r7;
0x000036bc str r4, [sp] | *(sp) = r4;
0x000036be blx 0x16a8 | r0 = keyctl_pkey_encrypt ();
0x000036c2 subs r1, r0, 0 | r1 = r0 - 0;
| if (r1 < r0) {
0x000036c4 blt 0x36e8 | goto label_17;
| }
0x000036c6 ldr r3, [pc, 0x50] |
0x000036c8 mov r0, r4 | r0 = r4;
0x000036ca movs r2, 1 | r2 = 1;
0x000036cc ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x000036ce ldr r3, [r3] | r3 = *(0x371a);
0x000036d0 blx 0x16d8 | r0 = fwrite (r0, r1, r2, r3);
0x000036d4 cmp r0, 1 |
| if (r0 == 1) {
0x000036d6 beq 0x36f0 | goto label_18;
| }
0x000036d8 ldr r0, [pc, 0x40] |
0x000036da add r0, pc | r0 = 0x6dfa;
0x000036dc bl 0x1dcc | fcn_00001dcc ();
| }
0x000036e0 ldr r0, [pc, 0x3c] |
0x000036e2 add r0, pc | r0 = 0x6e06;
0x000036e4 bl 0x1dcc | fcn_00001dcc ();
| label_17:
0x000036e8 ldr r0, [pc, 0x38] |
0x000036ea add r0, pc | r0 = 0x6e12;
0x000036ec bl 0x1dcc | fcn_00001dcc ();
| label_18:
0x000036f0 mov r0, r5 | r0 = r5;
0x000036f2 blx 0x1780 | exit (r0);
| label_16:
0x000036f6 ldr r0, [pc, 0x30] |
0x000036f8 add r0, pc | r0 = 0x6e26;
0x000036fa bl 0x1dcc | fcn_00001dcc ();
0x000036fe nop |
0x00003700 cmp r0, 0x76 |
0x00003702 movs r1, r0 | r1 = r0;
0x00003704 lsls r0, r0, 5 | r0 <<= 5;
0x00003706 movs r0, r0 |
0x00003708 cmp r0, 0x6a |
0x0000370a movs r1, r0 | r1 = r0;
0x0000370c asrs r6, r6, 0xb | r6 >>= 0xb;
0x0000370e movs r0, r0 |
0x00003710 lsls r4, r0, 5 | r4 = r0 << 5;
0x00003712 movs r0, r0 |
0x00003714 asrs r6, r4, 0xb | r6 = r4 >> 0xb;
0x00003716 movs r0, r0 |
0x00003718 lsls r0, r2, 5 | r0 = r2 << 5;
0x0000371a movs r0, r0 |
0x0000371c asrs r2, r7, 0xd | r2 = r7 >> 0xd;
0x0000371e movs r0, r0 |
0x00003720 asrs r2, r7, 0xa | r2 = r7 >> 0xa;
0x00003722 movs r0, r0 |
0x00003724 asrs r6, r0, 0xe | r6 = r0 >> 0xe;
0x00003726 movs r0, r0 |
0x00003728 asrs r4, r1, 9 | r4 = r1 >> 9;
0x0000372a movs r0, r0 |
0x0000372c ldr r2, [pc, 0x4c] |
0x0000372e cmp r0, 2 |
0x00003730 ldr r3, [pc, 0x4c] | r3 = *(0x3780);
0x00003732 push {lr} |
0x00003734 sub sp, 0xc |
0x00003736 add r2, pc | r2 = 0x6eb6;
0x00003738 ldr r3, [r2, r3] |
0x0000373a ldr r3, [r3] | r3 = *(0x6eb6);
0x0000373c str r3, [sp, 4] | var_4h_3 = r3;
0x0000373e mov.w r3, 0 | r3 = 0;
| if (r0 != 2) {
0x00003742 beq 0x3748 |
0x00003744 bl 0x1af0 | fcn_00001af0 ();
| }
0x00003748 ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x0000374a bl 0x1c2c | fcn_00001c2c (r0);
0x0000374e mov r1, sp | r1 = sp;
0x00003750 blx 0x18ac | r0 = keyctl_read_alloc ();
0x00003754 subs r2, r0, 0 | r2 = r0 - 0;
| if (r2 >= r0) {
0x00003756 blt 0x376c |
| if (r2 != r0) {
0x00003758 beq 0x3766 |
0x0000375a ldr r1, [sp] | r1 = *(sp);
0x0000375c movs r0, 1 | r0 = 1;
0x0000375e blx 0x1840 | r0 = write (r0, r1, r2);
0x00003762 cmp r0, 0 |
| if (r0 < 0) {
0x00003764 blt 0x3774 | goto label_19;
| }
| }
0x00003766 movs r0, 0 | r0 = 0;
0x00003768 blx 0x1780 | exit (r0);
| }
0x0000376c ldr r0, [pc, 0x14] |
0x0000376e add r0, pc | r0 = 0x6ef6;
0x00003770 bl 0x1dcc | fcn_00001dcc ();
| label_19:
0x00003774 ldr r0, [pc, 0x10] |
0x00003776 add r0, pc | r0 = 0x6f02;
0x00003778 bl 0x1dcc | fcn_00001dcc ();
0x0000377c movs r7, 0x66 | r7 = 0x66;
0x0000377e movs r1, r0 | r1 = r0;
0x00003780 lsls r0, r0, 5 | r0 <<= 5;
0x00003782 movs r0, r0 |
0x00003784 lsrs r6, r4, 0x1a | r6 = r4 >> 0x1a;
0x00003786 movs r0, r0 |
0x00003788 asrs r6, r1, 0xc | r6 = r1 >> 0xc;
0x0000378a movs r0, r0 |
0x0000378c ldr r2, [pc, 0x50] |
0x0000378e cmp r0, 3 |
0x00003790 ldr r3, [pc, 0x50] | r3 = *(0x37e4);
0x00003792 push {lr} |
0x00003794 sub sp, 0xc |
0x00003796 add r2, pc | r2 = 0x6f7a;
0x00003798 ldr r3, [r2, r3] |
0x0000379a ldr r3, [r3] | r3 = *(0x6f7a);
0x0000379c str r3, [sp, 4] | var_4h_4 = r3;
0x0000379e mov.w r3, 0 | r3 = 0;
| if (r0 != 3) {
0x000037a2 beq 0x37a8 |
0x000037a4 bl 0x1af0 | fcn_00001af0 ();
| }
0x000037a8 mov r4, r1 | r4 = r1;
0x000037aa ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x000037ac bl 0x1c2c | r0 = fcn_00001c2c (r0);
0x000037b0 mov r3, r0 | r3 = r0;
0x000037b2 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x000037b4 mov r4, r3 | r4 = r3;
0x000037b6 bl 0x1c2c | r0 = fcn_00001c2c (r0);
0x000037ba mov r5, r0 | r5 = r0;
0x000037bc mov r0, sp | r0 = sp;
0x000037be bl 0x2e98 | fcn_00002e98 (r0);
0x000037c2 ldr r2, [sp] | r2 = *(sp);
0x000037c4 mov r1, r0 | r1 = r0;
0x000037c6 mov r3, r5 | r3 = r5;
0x000037c8 mov r0, r4 | r0 = r4;
0x000037ca blx 0x1798 | r0 = keyctl_instantiate ();
0x000037ce cmp r0, 0 |
| if (r0 >= 0) {
0x000037d0 blt 0x37d8 |
0x000037d2 movs r0, 0 | r0 = 0;
0x000037d4 blx 0x1780 | exit (r0);
| }
0x000037d8 ldr r0, [pc, 0xc] |
0x000037da add r0, pc | r0 = 0x6fc6;
0x000037dc bl 0x1dcc | fcn_00001dcc ();
0x000037e0 movs r7, 6 | r7 = 6;
0x000037e2 movs r1, r0 | r1 = r0;
0x000037e4 lsls r0, r0, 5 | r0 <<= 5;
0x000037e6 movs r0, r0 |
0x000037e8 asrs r2, r6, 0xa | r2 = r6 >> 0xa;
0x000037ea movs r0, r0 |
0x000037ec cmp r0, 4 |
0x000037ee push {r3, lr} |
| if (r0 != 4) {
0x000037f0 beq 0x37f6 |
0x000037f2 bl 0x1af0 | fcn_00001af0 ();
| }
0x000037f6 mov r4, r1 | r4 = r1;
0x000037f8 ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x000037fa bl 0x1c2c | r0 = fcn_00001c2c (r0);
0x000037fe mov r5, r0 | r5 = r0;
0x00003800 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x00003802 bl 0x1c2c | fcn_00001c2c (r0);
0x00003806 ldr r6, [r4, 8] | r6 = *((r4 + 8));
0x00003808 mov r4, r0 | r4 = r0;
0x0000380a mov r0, r6 | r0 = r6;
0x0000380c blx 0x17bc | strlen (r0);
0x00003810 mov r3, r4 | r3 = r4;
0x00003812 mov r2, r0 | r2 = r0;
0x00003814 mov r1, r6 | r1 = r6;
0x00003816 mov r0, r5 | r0 = r5;
0x00003818 blx 0x1798 | r0 = keyctl_instantiate ();
0x0000381c cmp r0, 0 |
| if (r0 >= 0) {
0x0000381e blt 0x3826 |
0x00003820 movs r0, 0 | r0 = 0;
0x00003822 blx 0x1780 | exit (r0);
| }
0x00003826 ldr r0, [pc, 8] |
0x00003828 add r0, pc | r0 = 0x705e;
0x0000382a bl 0x1dcc | fcn_00001dcc ();
0x0000382e nop |
0x00003830 asrs r4, r4, 9 | r4 >>= 9;
0x00003832 movs r0, r0 |
0x00003834 ldr r2, [pc, 0x54] |
0x00003836 cmp r0, 4 |
0x00003838 ldr r3, [pc, 0x54] | r3 = *(0x3890);
0x0000383a push {lr} |
0x0000383c sub sp, 0x14 |
0x0000383e add r2, pc | r2 = 0x70ce;
0x00003840 ldr r3, [r2, r3] |
0x00003842 ldr r3, [r3] | r3 = *(0x70ce);
0x00003844 str r3, [sp, 0xc] | var_ch_4 = r3;
0x00003846 mov.w r3, 0 | r3 = 0;
| if (r0 != 4) {
0x0000384a beq 0x3850 |
0x0000384c bl 0x1af0 | fcn_00001af0 ();
| }
0x00003850 ldr r0, [r1, 0xc] | r0 = *((r1 + 0xc));
0x00003852 mov r4, r1 | r4 = r1;
0x00003854 bl 0x1c2c | r0 = fcn_00001c2c (r0);
0x00003858 mov r5, r0 | r5 = r0;
0x0000385a add r0, sp, 8 | r0 += var_8h_4;
0x0000385c bl 0x2e98 | fcn_00002e98 (r0);
0x00003860 ldr r3, [sp, 8] | r3 = var_8h_4;
0x00003862 mov r2, r0 | r2 = r0;
0x00003864 ldrd r0, r1, [r4, 4] | __asm ("ldrd r0, r1, [r4, 4]");
0x00003868 str r5, [sp] | *(sp) = r5;
0x0000386a blx 0x1720 | r0 = add_key ();
0x0000386e subs r2, r0, 0 | r2 = r0 - 0;
| if (r2 >= r0) {
0x00003870 blt 0x3882 |
0x00003872 ldr r1, [pc, 0x20] |
0x00003874 movs r0, 1 | r0 = 1;
0x00003876 add r1, pc | r1 = 0x7110;
0x00003878 blx 0x1834 | printf_chk ();
0x0000387c movs r0, 0 | r0 = 0;
0x0000387e blx 0x1780 | exit (r0);
| }
0x00003882 ldr r0, [pc, 0x14] |
0x00003884 add r0, pc | r0 = 0x7122;
0x00003886 bl 0x1dcc | fcn_00001dcc ();
0x0000388a nop |
0x0000388c movs r6, 0x5e | r6 = 0x5e;
0x0000388e movs r1, r0 | r1 = r0;
0x00003890 lsls r0, r0, 5 | r0 <<= 5;
0x00003892 movs r0, r0 |
0x00003894 lsrs r6, r1, 0x1e | r6 = r1 >> 0x1e;
0x00003896 movs r0, r0 |
0x00003898 asrs r4, r3, 8 | r4 = r3 >> 8;
0x0000389a movs r0, r0 |
0x0000389c cmp r0, 3 |
0x0000389e push {lr} |
0x000038a0 sub sp, 0xc |
| if (r0 != 3) {
0x000038a2 beq 0x38a8 |
0x000038a4 bl 0x1af0 | fcn_00001af0 ();
| }
0x000038a8 ldr r0, [r1, 8] | r0 = *((r1 + 8));
0x000038aa mov r4, r1 | r4 = r1;
0x000038ac bl 0x1c2c | r0 = fcn_00001c2c (r0);
0x000038b0 mov r5, r0 | r5 = r0;
0x000038b2 ldr r0, [pc, 0x2c] |
0x000038b4 movs r3, 0 | r3 = 0;
0x000038b6 ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x000038b8 mov r2, r3 | r2 = r3;
0x000038ba str r5, [sp] | *(sp) = r5;
0x000038bc add r0, pc | r0 = 0x71a2;
0x000038be blx 0x1720 | r0 = add_key ();
0x000038c2 subs r2, r0, 0 | r2 = r0 - 0;
| if (r2 >= r0) {
0x000038c4 blt 0x38d6 |
0x000038c6 ldr r1, [pc, 0x1c] |
0x000038c8 movs r0, 1 | r0 = 1;
0x000038ca add r1, pc | r1 = 0x71b4;
0x000038cc blx 0x1834 | printf_chk ();
0x000038d0 movs r0, 0 | r0 = 0;
0x000038d2 blx 0x1780 | exit (r0);
| }
0x000038d6 ldr r0, [pc, 0x10] |
0x000038d8 add r0, pc | r0 = 0x71c6;
0x000038da bl 0x1dcc | fcn_00001dcc ();
0x000038de nop |
0x000038e0 lsrs r0, r5, 0x1c | r0 = r5 >> 0x1c;
0x000038e2 movs r0, r0 |
0x000038e4 lsrs r2, r7, 0x1c | r2 = r7 >> 0x1c;
0x000038e6 movs r0, r0 |
0x000038e8 asrs r0, r1, 7 | r0 = r1 >> 7;
0x000038ea movs r0, r0 |
0x000038ec cmp r0, 5 |
0x000038ee push {lr} |
0x000038f0 sub sp, 0xc |
| if (r0 != 5) {
0x000038f2 beq 0x38f8 |
0x000038f4 bl 0x1af0 | fcn_00001af0 ();
| }
0x000038f8 mov r4, r1 | r4 = r1;
0x000038fa ldr r0, [r1, 0x10] | r0 = *((r1 + 0x10));
0x000038fc bl 0x1c2c | fcn_00001c2c (r0);
0x00003900 ldr r6, [r4, 0xc] | r6 = *((r4 + 0xc));
0x00003902 mov r5, r0 | r5 = r0;
0x00003904 mov r0, r6 | r0 = r6;
0x00003906 blx 0x17bc | strlen (r0);
0x0000390a mov r2, r6 | r2 = r6;
0x0000390c mov r3, r0 | r3 = r0;
0x0000390e ldrd r0, r1, [r4, 4] | __asm ("ldrd r0, r1, [r4, 4]");
0x00003912 str r5, [sp] | *(sp) = r5;
0x00003914 blx 0x1720 | add_key ();
0x00003916 vceq.f32 d1, d4, d2 | __asm ("vceq.f32 d1, d4, d2");
| if (r0 >= 5) {
0x0000391a blt 0x392c |
0x0000391c ldr r1, [pc, 0x14] |
0x0000391e movs r0, 1 | r0 = 1;
0x00003920 add r1, pc | r1 = 0x7258;
0x00003922 blx 0x1834 | printf_chk ();
0x00003926 movs r0, 0 | r0 = 0;
0x00003928 blx 0x1780 | exit (r0);
| }
0x0000392c ldr r0, [pc, 8] |
0x0000392e add r0, pc | r0 = 0x726a;
0x00003930 bl 0x1dcc | fcn_00001dcc ();
0x00003934 lsrs r4, r4, 0x1b | r4 >>= 0x1b;
0x00003936 movs r0, r0 |
0x00003938 asrs r2, r6, 5 | r2 = r6 >> 5;
0x0000393a movs r0, r0 |
0x0000393c cmp r0, 1 |
0x0000393e push {r3, lr} |
| if (r0 != 1) {
0x00003940 beq 0x3946 |
0x00003942 bl 0x1af0 | r0 = fcn_00001af0 ();
| }
0x00003946 mov r4, r0 | r4 = r0;
0x00003948 movs r0, 0 | r0 = 0;
0x0000394a blx 0x18d0 | r0 = keyctl_join_session_keyring ();
0x0000394e cmp r0, 0 |
| if (r0 >= 0) {
0x00003950 blt 0x3980 |
0x00003952 blx 0x1930 | r0 = keyctl_session_to_parent ();
0x00003956 cmp r0, 0 |
| if (r0 >= 0) {
0x00003958 blt 0x3978 |
0x0000395a movs r1, 0 | r1 = 0;
0x0000395c mvn r0, 2 | r0 = ~2;
0x00003960 blx 0x187c | r0 = keyctl_get_keyring_ID ();
0x00003964 subs r2, r0, 0 | r2 = r0 - 0;
| if (r2 < r0) {
0x00003966 blt 0x3988 | goto label_20;
| }
0x00003968 ldr r1, [pc, 0x24] |
0x0000396a mov r0, r4 | r0 = r4;
0x0000396c add r1, pc | r1 = 0x7300;
0x0000396e blx 0x1834 | printf_chk ();
0x00003972 movs r0, 0 | r0 = 0;
0x00003974 blx 0x1780 | exit (r0);
| }
0x00003978 ldr r0, [pc, 0x18] |
0x0000397a add r0, pc | r0 = 0x7312;
0x0000397c bl 0x1dcc | fcn_00001dcc ();
| }
0x00003980 ldr r0, [pc, 0x14] |
0x00003982 add r0, pc | r0 = 0x731e;
0x00003984 bl 0x1dcc | fcn_00001dcc ();
| label_20:
0x00003988 ldr r0, [pc, 0x10] |
0x0000398a add r0, pc | r0 = 0x732a;
0x0000398c bl 0x1dcc | fcn_00001dcc ();
0x00003990 lsrs r0, r3, 0x1a | r0 = r3 >> 0x1a;
0x00003992 movs r0, r0 |
0x00003994 asrs r6, r5, 4 | r6 = r5 >> 4;
0x00003996 movs r0, r0 |
0x00003998 lsrs r6, r1, 0x19 | r6 = r1 >> 0x19;
0x0000399a movs r0, r0 |
0x0000399c asrs r2, r7, 4 | r2 = r7 >> 4;
0x0000399e movs r0, r0 |
0x000039a0 ldr r2, [pc, 0x78] |
0x000039a2 cmp r0, 4 |
0x000039a4 ldr r3, [pc, 0x78] | r3 = *(0x3a20);
0x000039a6 push {r7, lr} |
0x000039a8 sub sp, 8 |
0x000039aa add r2, pc | r2 = 0x73ca;
0x000039ac ldr r5, [pc, 0x74] |
0x000039ae ldr r3, [r2, r3] |
0x000039b0 add r5, pc | r5 = 0x73d8;
0x000039b2 ldr r3, [r3] | r3 = *(0x73ca);
0x000039b4 str r3, [sp, 4] | var_4h_5 = r3;
0x000039b6 mov.w r3, 0 | r3 = 0;
| if (r0 != 4) {
0x000039ba beq 0x39c0 |
0x000039bc bl 0x1af0 | fcn_00001af0 ();
| }
0x000039c0 mov r4, r1 | r4 = r1;
0x000039c2 ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x000039c4 bl 0x1c2c | fcn_00001c2c (r0);
0x000039c8 movs r2, 0xa | r2 = 0xa;
0x000039ca mov r1, sp | r1 = sp;
0x000039cc mov r6, r0 | r6 = r0;
0x000039ce ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x000039d0 blx 0x17b0 | strtoul (r0, r1, r2);
0x000039d4 ldr r3, [sp] | r3 = *(sp);
0x000039d6 mov r7, r0 | r7 = r0;
0x000039d8 ldrb.w r8, [r3] | r8 = *(r3);
0x000039dc cmp.w r8, 0 |
| if (r8 == 0) {
0x000039e0 bne 0x39fc |
0x000039e2 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x000039e4 bl 0x1c2c | fcn_00001c2c (r0);
0x000039e8 mov r1, r7 | r1 = r7;
0x000039ea mov r2, r0 | r2 = r0;
0x000039ec mov r0, r6 | r0 = r6;
0x000039ee blx 0x1630 | r0 = keyctl_negate ();
0x000039f2 cmp r0, 0 |
| if (r0 < 0) {
0x000039f4 blt 0x3a14 | goto label_21;
| }
0x000039f6 mov r0, r8 | r0 = r8;
0x000039f8 blx 0x1780 | exit (r0);
| }
0x000039fc ldr r0, [pc, 0x28] |
0x000039fe movs r1, 1 | r1 = 1;
0x00003a00 ldr r2, [pc, 0x28] |
0x00003a02 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x00003a04 ldr r0, [r5, r0] | r0 = *((r5 + r0));
0x00003a06 add r2, pc | r2 = 0x7436;
0x00003a08 ldr r0, [r0] | r0 = *(0x3a28);
0x00003a0a blx 0x1858 | fprintf_chk ()
0x00003a0e movs r0, 2 | r0 = 2;
0x00003a10 blx 0x1780 | exit (r0);
| label_21:
0x00003a14 ldr r0, [pc, 0x18] |
0x00003a16 add r0, pc | r0 = 0x744a;
0x00003a18 bl 0x1dcc | fcn_00001dcc ();
0x00003a1c movs r4, 0xf2 | r4 = 0xf2;
0x00003a1e movs r1, r0 | r1 = r0;
0x00003a20 lsls r0, r0, 5 | r0 <<= 5;
0x00003a22 movs r0, r0 |
0x00003a24 movs r4, 0xec | r4 = 0xec;
0x00003a26 movs r1, r0 | r1 = r0;
0x00003a28 lsls r4, r0, 5 | r4 = r0 << 5;
0x00003a2a movs r0, r0 |
0x00003a2c lsrs r2, r6, 0xb | r2 = r6 >> 0xb;
0x00003a2e movs r0, r0 |
0x00003a30 lsrs r6, r0, 0x1a | r6 = r0 >> 0x1a;
0x00003a32 movs r0, r0 |
0x00003a34 cmp r0, 4 |
0x00003a36 mov r4, r0 | r4 = r0;
0x00003a38 mov r5, r1 | r5 = r1;
0x00003a3a push {r7, lr} |
| if (r0 > 4) {
0x00003a3c ble 0x3a52 |
0x00003a3e ldr r0, [pc, 0x50] |
0x00003a40 ldr r1, [r1, 4] | r1 = *((r1 + 4));
0x00003a42 add r0, pc | r0 = 0x74d8;
0x00003a44 blx 0x1600 | r0 = strcmp (r0, r1);
| if (r0 != 0) {
0x00003a48 cbnz r0, 0x3a58 | goto label_22;
| }
0x00003a4a subs r4, 1 | r4--;
0x00003a4c adds r5, 4 | r5 += 4;
0x00003a4e mov r6, r0 | r6 = r0;
0x00003a50 b 0x3a54 |
| } else {
0x00003a52 movs r6, 1 | r6 = 1;
| }
0x00003a54 cmp r4, 4 |
| if (r4 != 4) {
0x00003a56 beq 0x3a5c |
| label_22:
0x00003a58 bl 0x1af0 | fcn_00001af0 ();
| }
0x00003a5c ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x00003a5e bl 0x1c2c | r0 = fcn_00001c2c (r0);
0x00003a62 mov r4, r0 | r4 = r0;
0x00003a64 ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x00003a66 bl 0x1c2c | r0 = fcn_00001c2c (r0);
0x00003a6a mov r7, r0 | r7 = r0;
0x00003a6c ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x00003a6e bl 0x1c2c | fcn_00001c2c (r0);
0x00003a72 mov r3, r6 | r3 = r6;
0x00003a74 mov r2, r0 | r2 = r0;
0x00003a76 mov r1, r7 | r1 = r7;
0x00003a78 mov r0, r4 | r0 = r4;
0x00003a7a blx 0x1924 | r0 = keyctl_move ();
0x00003a7e cmp r0, 0 |
| if (r0 >= 0) {
0x00003a80 blt 0x3a88 |
0x00003a82 movs r0, 0 | r0 = 0;
0x00003a84 blx 0x1780 | exit (r0);
| }
0x00003a88 ldr r0, [pc, 8] |
0x00003a8a add r0, pc | r0 = 0x7522;
0x00003a8c bl 0x1dcc | fcn_00001dcc ();
0x00003a90 asrs r2, r3, 2 | r2 = r3 >> 2;
0x00003a92 movs r0, r0 |
0x00003a94 asrs r6, r2, 1 | r6 = r2 >> 1;
0x00003a96 movs r0, r0 |
0x00003a98 cmp r0, 3 |
0x00003a9a push {r3, lr} |
| if (r0 != 3) {
0x00003a9c beq 0x3aa2 |
0x00003a9e bl 0x1af0 | fcn_00001af0 ();
| }
0x00003aa2 mov r4, r1 | r4 = r1;
0x00003aa4 ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x00003aa6 bl 0x1c2c | r0 = fcn_00001c2c (r0);
0x00003aaa mov r5, r0 | r5 = r0;
0x00003aac ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x00003aae bl 0x1c2c | r0 = fcn_00001c2c (r0);
0x00003ab2 mov r1, r0 | r1 = r0;
0x00003ab4 mov r0, r5 | r0 = r5;
0x00003ab6 blx 0x15d0 | r0 = keyctl_link ();
0x00003aba cmp r0, 0 |
| if (r0 >= 0) {
0x00003abc blt 0x3ac4 |
0x00003abe movs r0, 0 | r0 = 0;
0x00003ac0 blx 0x1780 | exit (r0);
| }
0x00003ac4 ldr r0, [pc, 4] |
0x00003ac6 add r0, pc | r0 = 0x7596;
0x00003ac8 bl 0x1dcc | fcn_00001dcc ();
0x00003acc asrs r6, r4, 0x20 | r6 = r4 >> 0x20;
0x00003ace movs r0, r0 |
0x00003ad0 subs r3, r0, 2 | r3 = r0 - 2;
0x00003ad2 mov r4, r0 | r4 = r0;
0x00003ad4 ldr r0, [pc, 0x7c] |
0x00003ad6 cmp r3, 1 |
0x00003ad8 ldr r2, [pc, 0x7c] | r2 = *(0x3b58);
0x00003ada push {r7, lr} |
0x00003adc sub sp, 8 |
0x00003ade add r0, pc | r0 = 0x7636;
0x00003ae0 ldr r6, [pc, 0x78] |
0x00003ae2 ldr r2, [r0, r2] |
0x00003ae4 add r6, pc | r6 = 0x7644;
0x00003ae6 ldr r2, [r2] | r2 = *(0x7636);
0x00003ae8 str r2, [sp, 4] | var_4h_6 = r2;
0x00003aea mov.w r2, 0 | r2 = 0;
| if (r3 >= 1) {
0x00003aee bls 0x3af4 |
0x00003af0 bl 0x1af0 | fcn_00001af0 ();
| }
0x00003af4 ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x00003af6 mov r5, r1 | r5 = r1;
0x00003af8 bl 0x1c2c | fcn_00001c2c (r0);
0x00003afc cmp r4, 3 |
0x00003afe mov r7, r0 | r7 = r0;
| if (r4 == 3) {
0x00003b00 beq 0x3b28 | goto label_23;
| }
0x00003b02 mov.w r0, -1 | r0 = -1;
| do {
0x00003b06 mov r1, r7 | r1 = r7;
0x00003b08 blx 0x1648 | r0 = keyctl_get_persistent ();
0x00003b0c subs r2, r0, 0 | r2 = r0 - 0;
| if (r2 >= r0) {
0x00003b0e blt 0x3b20 |
0x00003b10 ldr r1, [pc, 0x4c] |
0x00003b12 movs r0, 1 | r0 = 1;
0x00003b14 add r1, pc | r1 = 0x7678;
0x00003b16 blx 0x1834 | printf_chk ();
0x00003b1a movs r0, 0 | r0 = 0;
0x00003b1c blx 0x1780 | exit (r0);
| }
0x00003b20 ldr r0, [pc, 0x40] |
0x00003b22 add r0, pc | r0 = 0x768a;
0x00003b24 bl 0x1dcc | fcn_00001dcc ();
| label_23:
0x00003b28 ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x00003b2a movs r2, 0 | r2 = 0;
0x00003b2c mov r1, sp | r1 = sp;
0x00003b2e blx 0x17b0 | strtoul (r0, r1, r2);
0x00003b32 ldr r3, [sp] | r3 = *(sp);
0x00003b34 ldrb r3, [r3] | r3 = *(r3);
0x00003b36 cmp r3, 0 |
0x00003b38 beq 0x3b06 |
| } while (r3 == 0);
0x00003b3a ldr r0, [pc, 0x2c] |
0x00003b3c movs r1, 1 | r1 = 1;
0x00003b3e ldr r2, [pc, 0x2c] |
0x00003b40 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x00003b42 ldr r0, [r6, r0] | r0 = *((r6 + r0));
0x00003b44 add r2, pc | r2 = 0x76b6;
0x00003b46 ldr r0, [r0] | r0 = *(0x3b6a);
0x00003b48 blx 0x1858 | fprintf_chk ()
0x00003b4c movs r0, 2 | r0 = 2;
0x00003b4e blx 0x1780 | exit (r0);
0x00003b52 nop |
0x00003b54 movs r3, 0xbe | r3 = 0xbe;
0x00003b56 movs r1, r0 | r1 = r0;
0x00003b58 lsls r0, r0, 5 | r0 <<= 5;
0x00003b5a movs r0, r0 |
0x00003b5c movs r3, 0xb8 | r3 = 0xb8;
0x00003b5e movs r1, r0 | r1 = r0;
0x00003b60 lsrs r0, r6, 0x13 | r0 = r6 >> 0x13;
0x00003b62 movs r0, r0 |
0x00003b64 lsrs r6, r5, 0x1f | r6 = r5 >> 0x1f;
0x00003b66 movs r0, r0 |
0x00003b68 lsls r4, r0, 5 | r4 = r0 << 5;
0x00003b6a movs r0, r0 |
0x00003b6c lsrs r4, r6, 0x1e | r4 = r6 >> 0x1e;
0x00003b6e movs r0, r0 |
0x00003b70 cmp r0, 2 |
0x00003b72 push {r3, lr} |
| if (r0 != 2) {
0x00003b74 beq 0x3b7a |
0x00003b76 bl 0x1af0 | fcn_00001af0 ();
| }
0x00003b7a ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x00003b7c bl 0x1c2c | r0 = fcn_00001c2c (r0);
0x00003b80 blx 0x1708 | r0 = keyctl_invalidate ();
0x00003b84 cmp r0, 0 |
| if (r0 >= 0) {
0x00003b86 blt 0x3b8e |
0x00003b88 movs r0, 0 | r0 = 0;
0x00003b8a blx 0x1780 | exit (r0);
| }
0x00003b8e ldr r0, [pc, 8] |
0x00003b90 add r0, pc | r0 = 0x772e;
0x00003b92 bl 0x1dcc | fcn_00001dcc ();
0x00003b96 nop |
0x00003b98 lsrs r0, r3, 0x1e | r0 = r3 >> 0x1e;
0x00003b9a movs r0, r0 |
0x00003b9c ldr r2, [pc, 0xf4] |
0x00003b9e cmp r0, 6 |
0x00003ba0 ldr r3, [pc, 0xf4] | r3 = *(0x3c98);
0x00003ba2 push {r7, lr} |
0x00003ba4 sub sp, 0x18 |
0x00003ba6 add r2, pc | r2 = 0x783e;
0x00003ba8 ldr r6, [pc, 0xf0] |
0x00003baa ldr r3, [r2, r3] |
0x00003bac add r6, pc | r6 = 0x784c;
0x00003bae ldr r3, [r3] | r3 = *(0x783e);
0x00003bb0 str r3, [sp, 0x14] | var_14h = r3;
0x00003bb2 mov.w r3, 0 | r3 = 0;
| if (r0 != 6) {
0x00003bb6 beq 0x3bbc |
0x00003bb8 bl 0x1af0 | fcn_00001af0 ();
| }
0x00003bbc mov r4, r1 | r4 = r1;
0x00003bbe ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x00003bc0 bl 0x1c2c | r0 = fcn_00001c2c (r0);
0x00003bc4 mov r8, r0 | r8 = r0;
0x00003bc6 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x00003bc8 bl 0x1c2c | r0 = fcn_00001c2c (r0);
0x00003bcc mov sb, r0 | sb = r0;
0x00003bce ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x00003bd0 bl 0x1c2c | fcn_00001c2c (r0);
0x00003bd4 movs r1, 0 | r1 = 0;
0x00003bd6 mov sl, r0 | sl = r0;
0x00003bd8 movs r2, 0xa | r2 = 0xa;
0x00003bda ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x00003bdc blx 0x17b0 | r0 = strtoul (r0, r1, r2);
0x00003be0 adds r1, r0, 1 | r1 = r0 + 1;
0x00003be2 mov r5, r0 | r5 = r0;
| if (r1 == r0) {
0x00003be4 beq 0x3c84 | goto label_24;
| }
0x00003be6 blx 0x1738 | r0 = malloc (r0);
0x00003bea mov r7, r0 | r7 = r0;
0x00003bec cmp r0, 0 |
| if (r0 == 0) {
0x00003bee beq 0x3c8c | goto label_25;
| }
0x00003bf0 add r0, sp, 0x10 | r0 += var_10h;
0x00003bf2 bl 0x2e98 | fcn_00002e98 (r0);
0x00003bf6 str r5, [sp, 0xc] | var_ch_6 = r5;
0x00003bf8 mov r2, sl | r2 = sl;
0x00003bfa str r0, [sp] | *(sp) = r0;
0x00003bfc mov r1, sb | r1 = sb;
0x00003bfe ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00003c00 mov r0, r8 | r0 = r8;
0x00003c02 ldr r4, [sp, 0x10] | r4 = var_10h;
0x00003c04 str r7, [sp, 8] | var_8h_6 = r7;
0x00003c06 str r4, [sp, 4] | var_4h_10 = r4;
0x00003c08 blx 0x15e8 | r0 = keyctl_dh_compute_kdf ();
0x00003c0c subs r2, r0, 0 | r2 = r0 - 0;
| if (r2 < r0) {
0x00003c0e blt 0x3c5a | goto label_26;
| }
0x00003c10 ldr.w sb, [pc, 0x8c] |
0x00003c14 mov r4, r2 | r4 = r2;
0x00003c16 ldr r1, [pc, 0x8c] |
0x00003c18 subs r5, r7, 1 | r5 = r7 - 1;
0x00003c1a add.w sl, r4, 1 | sl = r4 + 1;
0x00003c1e mov.w r8, 0 | r8 = 0;
0x00003c22 add sb, pc | sb = 0x78c6;
0x00003c24 movs r0, 1 | r0 = 1;
0x00003c26 add r1, pc | r1 = 0x78d0;
0x00003c28 blx 0x1834 | printf_chk ();
| do {
| label_1:
0x00003c2c ldrb r2, [r5, 1]! | r2 = *((r5 += 1));
0x00003c30 mov r1, sb | r1 = sb;
0x00003c32 movs r0, 1 | r0 = 1;
0x00003c34 blx 0x1834 | printf_chk ();
0x00003c38 sub.w r3, sl, r4 | r3 = sl - r4;
0x00003c3c strb.w r8, [r5] | *(r5) = r8;
0x00003c40 lsls r2, r3, 0x1b | r2 = r3 << 0x1b;
0x00003c42 add.w r4, r4, -1 | r4 += -1;
| if (r2 != r3) {
0x00003c46 bne 0x3c62 | goto label_27;
| }
0x00003c48 cmp r4, 0 |
| if (r4 <= 0) {
0x00003c4a ble 0x3c72 | goto label_28;
| }
0x00003c4c movs r0, 0xa | r0 = 0xa;
| label_0:
0x00003c4e ldr r3, [pc, 0x58] | r3 = *(0x3caa);
0x00003c50 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x00003c52 ldr r1, [r3] | r1 = *(0x3caa);
0x00003c54 blx 0x18c4 | putc (r0, r1);
0x00003c58 b 0x3c2c |
| } while (1);
| label_26:
0x00003c5a ldr r0, [pc, 0x50] |
0x00003c5c add r0, pc | r0 = 0x790e;
0x00003c5e bl 0x1dcc | fcn_00001dcc ();
| label_27:
0x00003c62 lsls r3, r3, 0x1e | r3 <<= 0x1e;
| if (r3 == r3) {
0x00003c64 bne 0x3c6e |
0x00003c66 cmp r4, 0 |
| if (r4 <= 0) {
0x00003c68 ble 0x3c72 | goto label_28;
| }
0x00003c6a movs r0, 0x20 | r0 = 0x20;
0x00003c6c b 0x3c4e | goto label_0;
| }
0x00003c6e cmp r4, 0 |
| if (r4 > 0) {
0x00003c70 bgt 0x3c2c | goto label_1;
| }
| label_28:
0x00003c72 movs r0, 0xa | r0 = 0xa;
0x00003c74 blx 0x1828 | putchar (r0);
0x00003c78 mov r0, r7 | r0 = r7;
0x00003c7a blx 0x163c | free (r0);
0x00003c7e movs r0, 0 | r0 = 0;
0x00003c80 blx 0x1780 | exit (r0);
| label_24:
0x00003c84 ldr r0, [pc, 0x28] |
0x00003c86 add r0, pc | r0 = 0x793a;
0x00003c88 bl 0x1dcc | fcn_00001dcc ();
| label_25:
0x00003c8c ldr r0, [pc, 0x24] |
0x00003c8e add r0, pc | r0 = 0x7946;
0x00003c90 bl 0x1dcc | fcn_00001dcc ();
0x00003c94 movs r2, 0xf6 | r2 = 0xf6;
0x00003c96 movs r1, r0 | r1 = r0;
0x00003c98 lsls r0, r0, 5 | r0 <<= 5;
0x00003c9a movs r0, r0 |
0x00003c9c movs r2, 0xf0 | r2 = 0xf0;
0x00003c9e movs r1, r0 | r1 = r0;
0x00003ca0 lsrs r6, r6, 0x12 | r6 >>= 0x12;
0x00003ca2 movs r0, r0 |
0x00003ca4 lsrs r6, r0, 0x1e | r6 = r0 >> 0x1e;
0x00003ca6 movs r0, r0 |
0x00003ca8 lsls r0, r2, 5 | r0 = r2 << 5;
0x00003caa movs r0, r0 |
0x00003cac lsrs r0, r7, 0x1c | r0 = r7 >> 0x1c;
0x00003cae movs r0, r0 |
0x00003cb0 lsrs r6, r6, 0x1a | r6 >>= 0x1a;
0x00003cb2 movs r0, r0 |
0x00003cb4 lsrs r2, r4, 0x1b | r2 = r4 >> 0x1b;
0x00003cb6 movs r0, r0 |
0x00003cb8 ldr r6, [pc, 0xdc] |
0x00003cba cmp r0, 6 |
0x00003cbc push {r7, lr} |
0x00003cbe sub sp, 0x10 |
0x00003cc0 add r6, pc | r6 = 0x7a5c;
| if (r0 != 6) {
0x00003cc2 beq 0x3cc8 |
0x00003cc4 bl 0x1af0 | fcn_00001af0 ();
| }
0x00003cc8 mov r4, r1 | r4 = r1;
0x00003cca ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x00003ccc bl 0x1c2c | r0 = fcn_00001c2c (r0);
0x00003cd0 mov r7, r0 | r7 = r0;
0x00003cd2 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x00003cd4 bl 0x1c2c | r0 = fcn_00001c2c (r0);
0x00003cd8 mov sb, r0 | sb = r0;
0x00003cda ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x00003cdc bl 0x1c2c | fcn_00001c2c (r0);
0x00003ce0 movs r1, 0 | r1 = 0;
0x00003ce2 mov sl, r0 | sl = r0;
0x00003ce4 movs r2, 0xa | r2 = 0xa;
0x00003ce6 ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x00003ce8 blx 0x17b0 | r0 = strtoul (r0, r1, r2);
0x00003cec adds r1, r0, 1 | r1 = r0 + 1;
0x00003cee mov r5, r0 | r5 = r0;
| if (r1 == r0) {
0x00003cf0 beq 0x3d88 | goto label_29;
| }
0x00003cf2 blx 0x1738 | r0 = malloc (r0);
0x00003cf6 mov r8, r0 | r8 = r0;
0x00003cf8 cmp r0, 0 |
| if (r0 == 0) {
0x00003cfa beq 0x3d90 | goto label_30;
| }
0x00003cfc mov r0, r7 | r0 = r7;
0x00003cfe movs r7, 0 | r7 = 0;
0x00003d00 mov r2, sl | r2 = sl;
0x00003d02 str r5, [sp, 0xc] | var_ch_5 = r5;
0x00003d04 mov r1, sb | r1 = sb;
0x00003d06 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00003d08 str.w r8, [sp, 8] | __asm ("str.w r8, [var_8h_5]");
0x00003d0c strd r7, r7, [sp] | __asm ("strd r7, r7, [sp]");
0x00003d10 blx 0x15e8 | r0 = keyctl_dh_compute_kdf ();
0x00003d14 subs r2, r0, 0 | r2 = r0 - 0;
| if (r2 < r0) {
0x00003d16 blt 0x3d5e | goto label_31;
| }
0x00003d18 ldr.w sl, [pc, 0x80] |
0x00003d1c mov r4, r2 | r4 = r2;
0x00003d1e ldr r1, [pc, 0x80] |
0x00003d20 add.w r5, r8, -1 | r5 = r8 + -1;
0x00003d24 add.w sb, r4, 1 | sb = r4 + 1;
0x00003d28 movs r0, 1 | r0 = 1;
0x00003d2a add sl, pc | sl = 0x7aca;
0x00003d2c add r1, pc | r1 = 0x7ad2;
0x00003d2e blx 0x1834 | printf_chk ();
| do {
| label_3:
0x00003d32 ldrb r2, [r5, 1]! | r2 = *((r5 += 1));
0x00003d36 mov r1, sl | r1 = sl;
0x00003d38 movs r0, 1 | r0 = 1;
0x00003d3a blx 0x1834 | printf_chk ();
0x00003d3e sub.w r3, sb, r4 | r3 = sb - r4;
0x00003d42 strb r7, [r5] | *(r5) = r7;
0x00003d44 lsls r2, r3, 0x1b | r2 = r3 << 0x1b;
0x00003d46 add.w r4, r4, -1 | r4 += -1;
| if (r2 != r3) {
0x00003d4a bne 0x3d66 | goto label_32;
| }
0x00003d4c cmp r4, 0 |
| if (r4 <= 0) {
0x00003d4e ble 0x3d76 | goto label_33;
| }
0x00003d50 movs r0, 0xa | r0 = 0xa;
| label_2:
0x00003d52 ldr r3, [pc, 0x50] | r3 = *(0x3da6);
0x00003d54 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x00003d56 ldr r1, [r3] | r1 = *(0x3da6);
0x00003d58 blx 0x18c4 | putc (r0, r1);
0x00003d5c b 0x3d32 |
| } while (1);
| label_31:
0x00003d5e ldr r0, [pc, 0x48] |
0x00003d60 add r0, pc | r0 = 0x7b0e;
0x00003d62 bl 0x1dcc | fcn_00001dcc ();
| label_32:
0x00003d66 lsls r3, r3, 0x1e | r3 <<= 0x1e;
| if (r3 == r3) {
0x00003d68 bne 0x3d72 |
0x00003d6a cmp r4, 0 |
| if (r4 <= 0) {
0x00003d6c ble 0x3d76 | goto label_33;
| }
0x00003d6e movs r0, 0x20 | r0 = 0x20;
0x00003d70 b 0x3d52 | goto label_2;
| }
0x00003d72 cmp r4, 0 |
| if (r4 > 0) {
0x00003d74 bgt 0x3d32 | goto label_3;
| }
| label_33:
0x00003d76 movs r0, 0xa | r0 = 0xa;
0x00003d78 blx 0x1828 | putchar (r0);
0x00003d7c mov r0, r8 | r0 = r8;
0x00003d7e blx 0x163c | free (r0);
0x00003d82 movs r0, 0 | r0 = 0;
0x00003d84 blx 0x1780 | exit (r0);
| label_29:
0x00003d88 ldr r0, [pc, 0x20] |
0x00003d8a add r0, pc | r0 = 0x7b3a;
0x00003d8c bl 0x1dcc | fcn_00001dcc ();
| label_30:
0x00003d90 ldr r0, [pc, 0x1c] |
0x00003d92 add r0, pc | r0 = 0x7b46;
0x00003d94 bl 0x1dcc | fcn_00001dcc ();
0x00003d98 movs r1, 0xdc | r1 = 0xdc;
0x00003d9a movs r1, r0 | r1 = r0;
0x00003d9c lsrs r6, r5, 0xe | r6 = r5 >> 0xe;
0x00003d9e movs r0, r0 |
0x00003da0 lsrs r0, r0, 0x1a | r0 >>= 0x1a;
0x00003da2 movs r0, r0 |
0x00003da4 lsls r0, r2, 5 | r0 = r2 << 5;
0x00003da6 movs r0, r0 |
0x00003da8 lsrs r4, r6, 0x18 | r4 = r6 >> 0x18;
0x00003daa movs r0, r0 |
0x00003dac lsrs r2, r6, 0x16 | r2 = r6 >> 0x16;
0x00003dae movs r0, r0 |
0x00003db0 lsrs r6, r3, 0x17 | r6 = r3 >> 0x17;
0x00003db2 movs r0, r0 |
0x00003db4 ldr r2, [pc, 0xb8] |
0x00003db6 cmp r0, 4 |
0x00003db8 ldr r3, [pc, 0xb8] | r3 = *(0x3e74);
0x00003dba push {r7, lr} |
0x00003dbc sub sp, 8 |
0x00003dbe add r2, pc | r2 = 0x7c32;
0x00003dc0 ldr r6, [pc, 0xb4] |
0x00003dc2 ldr r3, [r2, r3] |
0x00003dc4 add r6, pc | r6 = 0x7c40;
0x00003dc6 ldr r3, [r3] | r3 = *(0x7c32);
0x00003dc8 str r3, [sp, 4] | var_4h_7 = r3;
0x00003dca mov.w r3, 0 | r3 = 0;
| if (r0 != 4) {
0x00003dce beq 0x3dd4 |
0x00003dd0 bl 0x1af0 | fcn_00001af0 ();
| }
0x00003dd4 mov r4, r1 | r4 = r1;
0x00003dd6 ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x00003dd8 bl 0x1c2c | r0 = fcn_00001c2c (r0);
0x00003ddc mov r5, r0 | r5 = r0;
0x00003dde ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x00003de0 bl 0x1c2c | r0 = fcn_00001c2c (r0);
0x00003de4 mov r1, r0 | r1 = r0;
0x00003de6 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x00003de8 mov r4, r1 | r4 = r1;
0x00003dea bl 0x1c2c | fcn_00001c2c (r0);
0x00003dee mov r1, r4 | r1 = r4;
0x00003df0 mov r2, r0 | r2 = r0;
0x00003df2 mov r3, sp | r3 = sp;
0x00003df4 mov r0, r5 | r0 = r5;
0x00003df6 blx 0x17ec | r0 = keyctl_dh_compute_alloc ();
0x00003dfa subs r2, r0, 0 | r2 = r0 - 0;
| if (r2 < r0) {
0x00003dfc blt 0x3e68 | goto label_34;
| }
0x00003dfe ldr r1, [pc, 0x7c] |
0x00003e00 movs r0, 1 | r0 = 1;
0x00003e02 mov r4, r2 | r4 = r2;
0x00003e04 ldr.w sb, [pc, 0x78] |
0x00003e08 add.w r8, r4, 1 | r8 = r4 + 1;
0x00003e0c movs r7, 0 | r7 = 0;
0x00003e0e add r1, pc | r1 = 0x7c90;
0x00003e10 blx 0x1834 | printf_chk ();
0x00003e14 ldr r5, [sp] | r5 = *(sp);
0x00003e16 add sb, pc | sb = 0x7c9a;
0x00003e18 subs r5, 1 | r5--;
| do {
| label_5:
0x00003e1a ldrb r2, [r5, 1]! | r2 = *((r5 += 1));
0x00003e1e mov r1, sb | r1 = sb;
0x00003e20 movs r0, 1 | r0 = 1;
0x00003e22 blx 0x1834 | printf_chk ();
0x00003e26 sub.w r3, r8, r4 | r3 = r8 - r4;
0x00003e2a strb r7, [r5] | *(r5) = r7;
0x00003e2c lsls r2, r3, 0x1b | r2 = r3 << 0x1b;
0x00003e2e add.w r4, r4, -1 | r4 += -1;
| if (r2 != r3) {
0x00003e32 bne 0x3e46 | goto label_35;
| }
0x00003e34 cmp r4, 0 |
| if (r4 <= 0) {
0x00003e36 ble 0x3e56 | goto label_36;
| }
0x00003e38 movs r0, 0xa | r0 = 0xa;
| label_4:
0x00003e3a ldr r3, [pc, 0x48] | r3 = *(0x3e86);
0x00003e3c ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x00003e3e ldr r1, [r3] | r1 = *(0x3e86);
0x00003e40 blx 0x18c4 | putc (r0, r1);
0x00003e44 b 0x3e1a |
| } while (1);
| label_35:
0x00003e46 lsls r3, r3, 0x1e | r3 <<= 0x1e;
| if (r3 == r3) {
0x00003e48 bne 0x3e52 |
0x00003e4a cmp r4, 0 |
| if (r4 <= 0) {
0x00003e4c ble 0x3e56 | goto label_36;
| }
0x00003e4e movs r0, 0x20 | r0 = 0x20;
0x00003e50 b 0x3e3a | goto label_4;
| }
0x00003e52 cmp r4, 0 |
| if (r4 > 0) {
0x00003e54 bgt 0x3e1a | goto label_5;
| }
| label_36:
0x00003e56 movs r0, 0xa | r0 = 0xa;
0x00003e58 blx 0x1828 | putchar (r0);
0x00003e5c ldr r0, [sp] | r0 = *(sp);
0x00003e5e blx 0x163c | free (r0);
0x00003e62 movs r0, 0 | r0 = 0;
0x00003e64 blx 0x1780 | exit (r0);
0x00003e66 invalid |
| label_34:
0x00003e68 ldr r0, [pc, 0x1c] |
0x00003e6a add r0, pc | r0 = 0x7cf6;
0x00003e6c bl 0x1dcc | fcn_00001dcc ();
0x00003e70 movs r0, 0xde | r0 = 0xde;
0x00003e72 movs r1, r0 | r1 = r0;
0x00003e74 lsls r0, r0, 5 | r0 <<= 5;
0x00003e76 movs r0, r0 |
0x00003e78 movs r0, 0xd8 | r0 = 0xd8;
0x00003e7a movs r1, r0 | r1 = r0;
0x00003e7c lsrs r6, r3, 0x16 | r6 = r3 >> 0x16;
0x00003e7e movs r0, r0 |
0x00003e80 lsrs r2, r0, 0xb | r2 = r0 >> 0xb;
0x00003e82 movs r0, r0 |
0x00003e84 lsls r0, r2, 5 | r0 = r2 << 5;
0x00003e86 movs r0, r0 |
0x00003e88 lsrs r2, r4, 0x15 | r2 = r4 >> 0x15;
0x00003e8a movs r0, r0 |
0x00003e8c cmp r0, 2 |
0x00003e8e push {r3, lr} |
| if (r0 != 2) {
0x00003e90 beq 0x3e96 |
0x00003e92 bl 0x1af0 | fcn_00001af0 ();
| }
0x00003e96 ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x00003e98 bl 0x1c2c | r0 = fcn_00001c2c (r0);
0x00003e9c blx 0x17d4 | r0 = keyctl_clear ();
0x00003ea0 cmp r0, 0 |
| if (r0 >= 0) {
0x00003ea2 blt 0x3eaa |
0x00003ea4 movs r0, 0 | r0 = 0;
0x00003ea6 blx 0x1780 | exit (r0);
| }
0x00003eaa ldr r0, [pc, 8] |
0x00003eac add r0, pc | r0 = 0x7d66;
0x00003eae bl 0x1dcc | fcn_00001dcc ();
0x00003eb2 nop |
0x00003eb4 lsrs r0, r7, 0x14 | r0 = r7 >> 0x14;
0x00003eb6 movs r0, r0 |
0x00003eb8 ldr r2, [pc, 0x6c] |
0x00003eba cmp r0, 3 |
0x00003ebc ldr r3, [pc, 0x6c] | r3 = *(0x3f2c);
0x00003ebe push {r7, lr} |
0x00003ec0 sub sp, 8 |
0x00003ec2 add r2, pc | r2 = 0x7dee;
0x00003ec4 ldr r5, [pc, 0x68] |
0x00003ec6 ldr r3, [r2, r3] |
0x00003ec8 add r5, pc | r5 = 0x7dfc;
0x00003eca ldr r3, [r3] | r3 = *(0x7dee);
0x00003ecc str r3, [sp, 4] | var_4h_8 = r3;
0x00003ece mov.w r3, 0 | r3 = 0;
| if (r0 != 3) {
0x00003ed2 beq 0x3ed8 |
0x00003ed4 bl 0x1af0 | fcn_00001af0 ();
| }
0x00003ed8 mov r4, r1 | r4 = r1;
0x00003eda ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x00003edc bl 0x1c2c | fcn_00001c2c (r0);
0x00003ee0 mov r1, sp | r1 = sp;
0x00003ee2 movs r2, 0 | r2 = 0;
0x00003ee4 mov r6, r0 | r6 = r0;
0x00003ee6 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x00003ee8 blx 0x17b0 | strtoul (r0, r1, r2);
0x00003eec ldr r3, [sp] | r3 = *(sp);
0x00003eee mov r1, r0 | r1 = r0;
0x00003ef0 ldrb r7, [r3] | r7 = *(r3);
| if (r7 == 0) {
0x00003ef2 cbnz r7, 0x3f08 |
0x00003ef4 mov.w r2, -1 | r2 = -1;
0x00003ef8 mov r0, r6 | r0 = r6;
0x00003efa blx 0x17a4 | r0 = keyctl_chown ();
0x00003efe cmp r0, 0 |
| if (r0 < 0) {
0x00003f00 blt 0x3f20 | goto label_37;
| }
0x00003f02 mov r0, r7 | r0 = r7;
0x00003f04 blx 0x1780 | exit (r0);
| }
0x00003f08 ldr r0, [pc, 0x28] |
0x00003f0a movs r1, 1 | r1 = 1;
0x00003f0c ldr r2, [pc, 0x28] |
0x00003f0e ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x00003f10 ldr r0, [r5, r0] | r0 = *((r5 + r0));
0x00003f12 add r2, pc | r2 = 0x7e4e;
0x00003f14 ldr r0, [r0] | r0 = *(0x3f34);
0x00003f16 blx 0x1858 | fprintf_chk ()
0x00003f1a movs r0, 2 | r0 = 2;
0x00003f1c blx 0x1780 | exit (r0);
| label_37:
0x00003f20 ldr r0, [pc, 0x18] |
0x00003f22 add r0, pc | r0 = 0x7e62;
0x00003f24 bl 0x1dcc | fcn_00001dcc ();
0x00003f28 subs r2, r3, 7 | r2 = r3 - 7;
0x00003f2a movs r1, r0 | r1 = r0;
0x00003f2c lsls r0, r0, 5 | r0 <<= 5;
0x00003f2e movs r0, r0 |
0x00003f30 subs r4, r2, 7 | r4 = r2 - 7;
0x00003f32 movs r1, r0 | r1 = r0;
0x00003f34 lsls r4, r0, 5 | r4 = r0 << 5;
0x00003f36 movs r0, r0 |
0x00003f38 lsrs r6, r4, 0xf | r6 = r4 >> 0xf;
0x00003f3a movs r0, r0 |
0x00003f3c lsrs r2, r2, 0x13 | r2 >>= 0x13;
0x00003f3e movs r0, r0 |
0x00003f40 ldr r2, [pc, 0x6c] |
0x00003f42 cmp r0, 3 |
0x00003f44 ldr r3, [pc, 0x6c] | r3 = *(0x3fb4);
0x00003f46 push {r7, lr} |
0x00003f48 sub sp, 8 |
0x00003f4a add r2, pc | r2 = 0x7efe;
0x00003f4c ldr r5, [pc, 0x68] |
0x00003f4e ldr r3, [r2, r3] |
0x00003f50 add r5, pc | r5 = 0x7f0c;
0x00003f52 ldr r3, [r3] | r3 = *(0x7efe);
0x00003f54 str r3, [sp, 4] | var_4h_9 = r3;
0x00003f56 mov.w r3, 0 | r3 = 0;
| if (r0 != 3) {
0x00003f5a beq 0x3f60 |
0x00003f5c bl 0x1af0 | fcn_00001af0 ();
| }
0x00003f60 mov r4, r1 | r4 = r1;
0x00003f62 ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x00003f64 bl 0x1c2c | fcn_00001c2c (r0);
0x00003f68 movs r2, 0 | r2 = 0;
0x00003f6a mov r1, sp | r1 = sp;
0x00003f6c mov r6, r0 | r6 = r0;
0x00003f6e ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x00003f70 blx 0x17b0 | strtoul (r0, r1, r2);
0x00003f74 ldr r3, [sp] | r3 = *(sp);
0x00003f76 mov r2, r0 | r2 = r0;
0x00003f78 ldrb r7, [r3] | r7 = *(r3);
| if (r7 == 0) {
0x00003f7a cbnz r7, 0x3f90 |
0x00003f7c mov.w r1, -1 | r1 = -1;
0x00003f80 mov r0, r6 | r0 = r6;
0x00003f82 blx 0x17a4 | r0 = keyctl_chown ();
0x00003f86 cmp r0, 0 |
| if (r0 < 0) {
0x00003f88 blt 0x3fa8 | goto label_38;
| }
0x00003f8a mov r0, r7 | r0 = r7;
0x00003f8c blx 0x1780 | exit (r0);
| }
0x00003f90 ldr r0, [pc, 0x28] |
0x00003f92 movs r1, 1 | r1 = 1;
0x00003f94 ldr r2, [pc, 0x28] |
0x00003f96 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x00003f98 ldr r0, [r5, r0] | r0 = *((r5 + r0));
0x00003f9a add r2, pc | r2 = 0x7f5e;
0x00003f9c ldr r0, [r0] | r0 = *(0x3fbc);
0x00003f9e blx 0x1858 | fprintf_chk ()
0x00003fa2 movs r0, 2 | r0 = 2;
0x00003fa4 blx 0x1780 | exit (r0);
| label_38:
0x00003fa8 ldr r0, [pc, 0x18] |
0x00003faa add r0, pc | r0 = 0x7f72;
0x00003fac bl 0x1dcc | fcn_00001dcc ();
0x00003fb0 subs r2, r2, 5 | r2 -= 5;
0x00003fb2 movs r1, r0 | r1 = r0;
0x00003fb4 lsls r0, r0, 5 | r0 <<= 5;
0x00003fb6 movs r0, r0 |
0x00003fb8 subs r4, r1, 5 | r4 = r1 - 5;
0x00003fba movs r1, r0 | r1 = r0;
0x00003fbc lsls r4, r0, 5 | r4 = r0 << 5;
0x00003fbe movs r0, r0 |
0x00003fc0 lsrs r2, r5, 0x11 | r2 = r5 >> 0x11;
0x00003fc2 movs r0, r0 |
0x00003fc4 lsrs r2, r1, 0x11 | r2 = r1 >> 0x11;
0x00003fc6 movs r0, r0 |
0x00003fc8 push {r3, lr} |
0x00003fca ldr r3, [sp, 8] | r3 = var_0h_9;
0x00003fcc ldr r3, [r3] | r3 = *(r3);
0x00003fce cmp r3, r1 |
0x00003fd0 it ne |
| if (r3 == r1) {
0x00003fd2 movne r0, 0 | r0 = 0;
| }
| if (r3 != r1) {
0x00003fd4 beq 0x3fd8 |
0x00003fd6 pop {r3, pc} |
| }
0x00003fd8 mov r1, r0 | r1 = r0;
0x00003fda mov r0, r3 | r0 = r3;
0x00003fdc blx 0x16fc | r0 = keyctl_unlink ();
0x00003fe0 mvns r0, r0 | r0 = ~r0;
0x00003fe2 lsrs r0, r0, 0x1f | r0 >>= 0x1f;
0x00003fe4 pop {r3, pc} |
| }
[*] Function fprintf used 10 times keyctl