[*] Binary protection state of keyctl
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function sprintf tear down of keyctl
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/keyctl @ 0x2f28 */
| #include <stdint.h>
|
; (fcn) fcn.00002f28 () | void fcn_00002f28 (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_16;
| int32_t var_ch_14;
| void * var_0h_10;
| int16_t var_4h_7;
| int32_t var_4h_24;
| int32_t var_8h_17;
| int32_t var_ch_15;
| int16_t var_10h_4;
| 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_15;
| int32_t var_ch_13;
| int16_t var_0h_4;
| int16_t var_0h_16;
| int16_t var_0h_3;
| char * s;
| 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_12;
| 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_12;
| 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;
| char * var_8h_13;
| int32_t var_ch_11;
| int16_t var_10h_3;
| 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_10;
| 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;
| char * var_8h_11;
| int32_t var_ch_10;
| 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;
| char * var_8h_9;
| int32_t var_ch_9;
| int16_t var_10h_2;
| 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;
| char * s1;
| int16_t var_ch_8;
| int16_t var_1000h;
| int16_t var_14h_2;
| void * buf;
| size_t size;
| int16_t var_5ch;
| r0 = arg1;
| r1 = arg2;
0x00002f28 blmi 0xad57d8 | __asm ("blmi aav.0x00003f6a");
0x00002f2c push.w {r4, r5, r6, r7, r8, sb, lr} |
0x00002f30 mov r6, r1 | r6 = r1;
0x00002f32 add r2, pc | r2 += pc;
0x00002f34 sub sp, 0x64 |
0x00002f36 movs r1, 0 | r1 = 0;
0x00002f38 mov r7, r0 | r7 = r0;
0x00002f3a ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00002f3c ldr.w r8, [pc, 0x9c] |
0x00002f40 ldr r3, [r3] | r3 = *(r3);
0x00002f42 str r3, [sp, 0x5c] | var_5ch = r3;
0x00002f44 mov.w r3, 0 | r3 = 0;
0x00002f48 blx 0x17d8 | r0 = open (r0, r1, r2);
0x00002f4c subs r5, r0, 0 | r5 = r0 - 0;
0x00002f4e add r8, pc | r8 = 0x5f2e;
| if (r5 >= r0) {
0x00002f50 blt 0x2fa8 |
0x00002f52 mov r1, sp | r1 = sp;
0x00002f54 blx 0x1994 | r0 = fstat (r0, r1);
0x00002f58 cmp r0, 0 |
| if (r0 < 0) {
0x00002f5a blt 0x2fa8 | goto label_6;
| }
0x00002f5c ldr.w sb, [sp, 0x2c] | sb = size;
0x00002f60 mov r0, sb | r0 = sb;
0x00002f62 blx 0x17c0 | r0 = malloc (r0);
0x00002f66 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x00002f68 cbz r0, 0x2fcc | goto label_7;
| }
0x00002f6a mov r1, r0 | r1 = r0;
0x00002f6c mov r2, sb | r2 = sb;
0x00002f6e mov r0, r5 | r0 = r5;
0x00002f70 blx 0x16ac | r0 = read (r0, r1, r2);
0x00002f74 adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 == r0) {
0x00002f76 beq 0x2fa8 | goto label_6;
| }
0x00002f78 ldr r3, [sp, 0x2c] | r3 = size;
0x00002f7a cmp r3, r0 |
| if (r3 != r0) {
0x00002f7c bne 0x2fb2 | goto label_8;
| }
0x00002f7e mov r0, r5 | r0 = r5;
0x00002f80 blx 0x19a0 | r0 = close (r0);
0x00002f84 cmp r0, 0 |
| if (r0 < 0) {
0x00002f86 blt 0x2fa8 | goto label_6;
| }
0x00002f88 ldr r3, [sp, 0x2c] | r3 = size;
0x00002f8a ldr r2, [pc, 0x54] |
0x00002f8c str r3, [r6] | *(r6) = r3;
0x00002f8e ldr r3, [pc, 0x48] | r3 = *(0x2fda);
0x00002f90 add r2, pc | r2 = 0x5f76;
0x00002f92 ldr r3, [r2, r3] | r3 = *(0x5f76);
0x00002f94 ldr r2, [r3] | r2 = *(0x5f76);
0x00002f96 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x00002f98 eors r2, r3 | r2 ^= r3;
0x00002f9a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00002f9e bne 0x2fae | goto label_9;
| }
0x00002fa0 mov r0, r4 | r0 = r4;
0x00002fa2 add sp, 0x64 |
0x00002fa4 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| }
| label_6:
0x00002fa8 mov r0, r7 | r0 = r7;
0x00002faa bl 0x1e40 | fcn_00001e40 ();
| label_9:
0x00002fae blx 0x1724 | stack_chk_fail ();
| label_8:
0x00002fb2 ldr r0, [pc, 0x30] |
0x00002fb4 mov r3, r7 | r3 = r7;
0x00002fb6 ldr r2, [pc, 0x30] |
0x00002fb8 movs r1, 1 | r1 = 1;
0x00002fba ldr.w r0, [r8, r0] | r0 = *((r8 + r0));
0x00002fbe add r2, pc | r2 = 0x5fac;
0x00002fc0 ldr r0, [r0] | r0 = *(0x2fe6);
0x00002fc2 blx 0x18e0 | fprintf_chk ();
0x00002fc6 movs r0, 1 | r0 = 1;
0x00002fc8 blx 0x1808 | exit (r0);
| label_7:
0x00002fcc ldr r0, [pc, 0x1c] |
0x00002fce add r0, pc | r0 = 0x5fbe;
0x00002fd0 bl 0x1e40 | fcn_00001e40 ();
0x00002fd4 subs r7, 0x6a | r7 -= 0x6a;
0x00002fd6 movs r0, r0 |
0x00002fd8 lsls r0, r0, 5 | r0 <<= 5;
0x00002fda movs r0, r0 |
0x00002fdc subs r7, 0x4e | r7 -= 0x4e;
0x00002fde movs r0, r0 |
0x00002fe0 subs r7, 0xc | r7 -= 0xc;
0x00002fe2 movs r0, r0 |
0x00002fe4 lsls r4, r0, 5 | r4 = r0 << 5;
0x00002fe6 movs r0, r0 |
0x00002fe8 adds r2, r5, r6 | r2 = r5 + r6;
0x00002fea movs r0, r0 |
0x00002fec adds r2, r2, r6 | r2 += r6;
0x00002fee movs r0, r0 |
0x00002ff0 ldr r2, [pc, 0xac] |
0x00002ff2 cmp r0, 4 |
0x00002ff4 ldr r3, [pc, 0xac] | r3 = *(0x30a4);
0x00002ff6 push {r7, lr} |
0x00002ff8 sub.w sp, sp, 0x1000 |
0x00002ffc add r2, pc | r2 = 0x60a0;
0x00002ffe ldr r6, [pc, 0xa8] |
0x00003000 sub sp, 0x18 |
0x00003002 ldr r3, [r2, r3] |
0x00003004 add.w r4, sp, 0x1000 | r4 += var_1000h;
0x00003008 add r6, pc | r6 = 0x60b6;
0x0000300a add.w r4, r4, 0x14 | r4 += var_14h_2;
0x0000300e ldr r3, [r3] | r3 = *(0x60a0);
0x00003010 str r3, [r4] | *(r4) = r3;
0x00003012 mov.w r3, 0 | r3 = 0;
| if (r0 <= 4) {
0x00003016 bgt 0x301c |
0x00003018 bl 0x1b70 | fcn_00001b70 ();
| }
0x0000301c add.w sb, sp, 0x18 | sb += var_18h;
0x00003020 mov r4, r1 | r4 = r1;
0x00003022 sub.w r8, sb, 4 | r8 -= var_4h_14;
0x00003026 add.w r0, r4, 0x14 | r0 = r4 + 0x14;
0x0000302a mov r1, r8 | r1 = r8;
0x0000302c bl 0x2e7c | fcn_00002e7c (r0, r1);
0x00003030 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x00003032 bl 0x1ca0 | fcn_00001ca0 (r0);
0x00003036 ldr r1, [pc, 0x74] |
0x00003038 mov r7, r0 | r7 = r0;
0x0000303a ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0000303c add r1, pc | r1 = 0x60ee;
0x0000303e blx 0x1688 | r0 = strcmp (r0, r1);
0x00003042 mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x00003044 cbz r0, 0x305e |
0x00003046 ldr r3, [pc, 0x68] |
0x00003048 movs r2, 0x26 | r2 = 0x26;
0x0000304a ldr r0, [pc, 0x68] |
0x0000304c movs r1, 1 | r1 = 1;
0x0000304e ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x00003050 add r0, pc | r0 = 0x610a;
0x00003052 ldr r3, [r3] | r3 = *(0x30b2);
0x00003054 blx 0x1760 | fwrite (r0, r1, r2, r3);
0x00003058 movs r0, 2 | r0 = 2;
0x0000305a blx 0x1808 | exit (r0);
| }
0x0000305e ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x00003060 sub.w r1, sb, 0xc | r1 -= var_ch_7;
0x00003064 bl 0x2f28 | fcn_00002f28 (r0, r1);
0x00003068 sub.w r1, sb, 8 | r1 -= var_8h_7;
0x0000306c mov r2, r0 | r2 = r0;
0x0000306e ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x00003070 mov r4, r2 | r4 = r2;
0x00003072 bl 0x2f28 | fcn_00002f28 (r0, r1);
0x00003076 str r0, [sp] | *(sp) = r0;
0x00003078 mov r2, r4 | r2 = r4;
0x0000307a ldr r3, [sb, -0x8] | r3 = *((sb - 0x8));
0x0000307e mov r1, r8 | r1 = r8;
0x00003080 mov r0, r7 | r0 = r7;
0x00003082 str r3, [sp, 4] | var_4h = r3;
0x00003084 ldr r3, [sb, -0xc] | r3 = var_ch_7;
0x00003088 blx 0x18d4 | r0 = keyctl_pkey_verify ();
0x0000308c cmp r0, 0 |
| if (r0 >= 0) {
0x0000308e blt 0x3096 |
0x00003090 mov r0, r5 | r0 = r5;
0x00003092 blx 0x1808 | exit (r0);
| }
0x00003096 ldr r0, [pc, 0x20] |
0x00003098 add r0, pc | r0 = 0x6156;
0x0000309a bl 0x1e40 | fcn_00001e40 ();
0x0000309e nop |
0x000030a0 subs r6, 0xa0 | r6 -= 0xa0;
0x000030a2 movs r0, r0 |
0x000030a4 lsls r0, r0, 5 | r0 <<= 5;
0x000030a6 movs r0, r0 |
0x000030a8 subs r6, 0x94 | r6 -= 0x94;
0x000030aa movs r0, r0 |
0x000030ac adds r4, r7, r4 | r4 = r7 + r4;
0x000030ae movs r0, r0 |
0x000030b0 lsls r4, r0, 5 | r4 = r0 << 5;
0x000030b2 movs r0, r0 |
0x000030b4 adds r4, r5, r4 | r4 = r5 + r4;
0x000030b6 movs r0, r0 |
0x000030b8 adds r4, r1, r4 | r4 = r1 + r4;
0x000030ba movs r0, r0 |
0x000030bc ldr r2, [pc, 0x128] |
0x000030be cmp r0, 2 |
0x000030c0 ldr r3, [pc, 0x128] | r3 = *(0x31ec);
0x000030c2 push {r7, lr} |
0x000030c4 sub.w sp, sp, 0x1040 |
0x000030c8 add r2, pc | r2 = 0x62b4;
0x000030ca ldr r6, [pc, 0x124] |
0x000030cc add.w r4, sp, 0x1020 | r4 += var_1020h;
0x000030d0 ldr r3, [r2, r3] |
0x000030d2 add.w r4, r4, 0x1c | r4 += var_1ch;
0x000030d6 add r6, pc | r6 = 0x62cc;
0x000030d8 ldr r3, [r3] | r3 = *(0x62b4);
0x000030da str r3, [r4] | *(r4) = r3;
0x000030dc mov.w r3, 0 | r3 = 0;
| if (r0 <= 2) {
0x000030e0 bgt 0x30e6 |
0x000030e2 bl 0x1b70 | fcn_00001b70 ();
| }
0x000030e6 add r5, sp, 0x40 | r5 += var_40h;
0x000030e8 mov r4, r1 | r4 = r1;
0x000030ea sub.w r8, r5, 4 | r8 -= var_4h_15;
0x000030ee add.w r0, r4, 0xc | r0 += var_ch_8;
0x000030f0 movs r4, r1 | r4 = r1;
0x000030f2 mov r1, r8 | r1 = r8;
0x000030f4 bl 0x2e7c | fcn_00002e7c (r0, r1);
0x000030f6 cdp2 p8, 0xc, c6, c2, c0, 3 | __asm ("cdp2 p8, 0xc, c6, c2, c0, 3");
0x000030fa bl 0x1ca0 | fcn_00001ca0 (r0);
0x000030fe ldr r1, [pc, 0xf4] |
0x00003100 mov r7, r0 | r7 = r0;
0x00003102 ldr r0, [r4, 8] | r0 = s1;
0x00003104 add r1, pc | r1 = 0x62fe;
0x00003106 blx 0x1688 | r0 = strcmp (r0, r1);
0x0000310a mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x0000310c cbz r0, 0x3126 |
0x0000310e ldr r3, [pc, 0xe8] |
0x00003110 movs r2, 0x26 | r2 = 0x26;
0x00003112 ldr r0, [pc, 0xe8] |
0x00003114 movs r1, 1 | r1 = 1;
0x00003116 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x00003118 add r0, pc | r0 = 0x631a;
0x0000311a ldr r3, [r3] | r3 = *(0x31fa);
0x0000311c blx 0x1760 | fwrite (r0, r1, r2, r3);
0x00003120 movs r0, 2 | r0 = 2;
0x00003122 blx 0x1808 | exit (r0);
| }
0x00003126 add r2, sp, 4 | r2 += var_4h_2;
0x00003128 mov r1, r8 | r1 = r8;
0x0000312a mov r0, r7 | r0 = r7;
0x0000312c blx 0x19c4 | r0 = keyctl_pkey_query ();
0x00003130 cmp r0, 0 |
| if (r0 >= 0) {
0x00003132 blt 0x31e0 |
0x00003134 ldr r1, [pc, 0xc8] |
0x00003136 movs r0, 1 | r0 = 1;
0x00003138 ldr r2, [r5, -0x38] | r2 = var_38h;
0x0000313c add r1, pc | r1 = 0x6340;
0x0000313e blx 0x18bc | printf_chk ();
0x00003142 ldr r1, [pc, 0xc0] |
0x00003144 movs r0, 1 | r0 = 1;
0x00003146 ldrh r2, [r5, -0x34] | r2 = var_34h;
0x0000314a add r1, pc | r1 = 0x6354;
0x0000314c blx 0x18bc | printf_chk ();
0x00003150 ldr r1, [pc, 0xb4] |
0x00003152 movs r0, 1 | r0 = 1;
0x00003154 ldrh r2, [r5, -0x32] | r2 = var_32h_2;
0x00003158 add r1, pc | r1 = 0x6364;
0x0000315a blx 0x18bc | printf_chk ();
0x0000315e ldr r1, [pc, 0xac] |
0x00003160 movs r0, 1 | r0 = 1;
0x00003162 ldrh r2, [r5, -0x30] | r2 = var_30h;
0x00003166 add r1, pc | r1 = 0x6378;
0x00003168 blx 0x18bc | printf_chk ();
0x0000316c ldr r1, [pc, 0xa0] |
0x0000316e movs r0, 1 | r0 = 1;
0x00003170 ldrh r2, [r5, -0x2e] | r2 = var_2eh_2;
0x00003174 add r1, pc | r1 = 0x6388;
0x00003176 blx 0x18bc | printf_chk ();
0x00003178 sub.w r8, r2, r5, lsr 29 | r8 = r2 - (r5 >> 29);
0x0000317c subs r4, 0x3c | r4 -= 0x3c;
0x0000317e movs r0, 1 | r0 = 1;
0x00003180 ldr r1, [pc, 0x90] |
0x00003182 tst.w r3, 1 |
0x00003186 ite eq |
| if ((r3 & 1) != 0) {
0x00003188 moveq r2, 0x6e | r2 = 0x6e;
| }
| if ((r3 & 1) == 0) {
0x0000318a movne r2, 0x79 | r2 = 0x79;
| }
0x0000318c add r1, pc | r1 = 0x63a4;
0x0000318e blx 0x18bc | printf_chk ();
0x00003192 ldr r3, [r5, -0x3c] | r3 = var_4h_2;
0x00003196 movs r0, 1 | r0 = 1;
0x00003198 ldr r1, [pc, 0x7c] |
0x0000319a tst.w r3, 2 |
0x0000319e ite eq |
| if ((r3 & 2) != 0) {
0x000031a0 moveq r2, 0x6e | r2 = 0x6e;
| }
| if ((r3 & 2) == 0) {
0x000031a2 movne r2, 0x79 | r2 = 0x79;
| }
0x000031a4 add r1, pc | r1 = 0x63c0;
0x000031a6 blx 0x18bc | printf_chk ();
0x000031aa ldr r3, [r5, -0x3c] | r3 = var_4h_2;
0x000031ae movs r0, 1 | r0 = 1;
0x000031b0 ldr r1, [pc, 0x68] |
0x000031b2 tst.w r3, 4 |
0x000031b6 ite eq |
| if ((r3 & 4) != 0) {
0x000031b8 moveq r2, 0x6e | r2 = 0x6e;
| }
| if ((r3 & 4) == 0) {
0x000031ba movne r2, 0x79 | r2 = 0x79;
| }
0x000031bc add r1, pc | r1 = 0x63dc;
0x000031be blx 0x18bc | printf_chk ();
0x000031c2 ldr r3, [r5, -0x3c] | r3 = var_4h_2;
0x000031c6 movs r0, 1 | r0 = 1;
0x000031c8 ldr r1, [pc, 0x54] |
0x000031ca tst.w r3, 8 |
0x000031ce add r1, pc | r1 = 0x63f2;
0x000031d0 ite eq |
| if ((r3 & 8) != 0) {
0x000031d2 moveq r2, 0x6e | r2 = 0x6e;
| }
| if ((r3 & 8) == 0) {
0x000031d4 movne r2, 0x79 | r2 = 0x79;
| }
0x000031d6 blx 0x18bc | printf_chk ();
0x000031da mov r0, r4 | r0 = r4;
0x000031dc blx 0x1808 | exit (r0);
| }
0x000031e0 ldr r0, [pc, 0x40] |
0x000031e2 add r0, pc | r0 = 0x640a;
0x000031e4 bl 0x1e40 | fcn_00001e40 ();
0x000031e8 subs r5, 0xd4 | r5 -= 0xd4;
0x000031ea movs r0, r0 |
0x000031ec lsls r0, r0, 5 | r0 <<= 5;
0x000031ee movs r0, r0 |
0x000031f0 subs r5, 0xc6 | r5 -= 0xc6;
0x000031f2 movs r0, r0 |
0x000031f4 adds r4, r6, r1 | r4 = r6 + r1;
0x000031f6 movs r0, r0 |
0x000031f8 lsls r4, r0, 5 | r4 = r0 << 5;
0x000031fa movs r0, r0 |
0x000031fc adds r4, r4, r1 | r4 += r1;
0x000031fe movs r0, r0 |
0x00003200 adds r0, r2, r2 | r0 = r2 + r2;
0x00003202 movs r0, r0 |
0x00003204 adds r2, r2, r2 | r2 += r2;
0x00003206 movs r0, r0 |
0x00003208 adds r0, r3, r2 | r0 = r3 + r2;
0x0000320a movs r0, r0 |
0x0000320c adds r6, r3, r2 | r6 = r3 + r2;
0x0000320e movs r0, r0 |
0x00003210 adds r4, r4, r2 | r4 += r2;
0x00003212 movs r0, r0 |
0x00003214 adds r0, r4, r2 | r0 = r4 + r2;
0x00003216 movs r0, r0 |
0x00003218 adds r4, r2, r2 | r4 = r2 + r2;
0x0000321a movs r0, r0 |
0x0000321c adds r0, r1, r2 | r0 = r1 + r2;
0x0000321e movs r0, r0 |
0x00003220 adds r2, r0, r2 | r2 = r0 + r2;
0x00003222 movs r0, r0 |
0x00003224 asrs r6, r2, 0x1f | r6 = r2 >> 0x1f;
0x00003226 movs r0, r0 |
0x00003228 ldr r2, [pc, 0xe4] |
0x0000322a cmp r0, 3 |
0x0000322c ldr r3, [pc, 0xe4] | r3 = *(0x3314);
0x0000322e push.w {r7, fp, lr} |
0x00003232 sub.w sp, sp, 0x1040 |
0x00003236 add r2, pc | r2 = 0x654a;
0x00003238 ldr r6, [pc, 0xdc] |
0x0000323a sub sp, 0xc |
0x0000323c ldr r3, [r2, r3] |
0x0000323e add.w r4, sp, 0x1040 | r4 += var_1040h;
0x00003242 add r6, pc | r6 = 0x655e;
0x00003244 add.w r4, r4, 4 | r4 += var_4h_16;
0x00003248 ldr r3, [r3] | r3 = *(0x654a);
0x0000324a str r3, [r4] | *(r4) = r3;
0x0000324c mov.w r3, 0 | r3 = 0;
| if (r0 <= 3) {
0x00003250 bgt 0x3256 |
0x00003252 bl 0x1b70 | fcn_00001b70 ();
| }
0x00003256 add.w sb, sp, 0x48 | sb += var_48h;
0x0000325a mov r4, r1 | r4 = r1;
0x0000325c sub.w r8, sb, 4 | r8 -= var_4h_17;
0x00003260 add.w r0, r4, 0x10 | r0 += var_10h_2;
0x00003264 mov r1, r8 | r1 = r8;
0x00003266 bl 0x2e7c | fcn_00002e7c (r0, r1);
0x0000326a ldr r0, [r4, 4] | r0 = var_40h;
0x0000326c bl 0x1ca0 | fcn_00001ca0 (r0);
0x00003270 ldr r1, [pc, 0xa8] |
0x00003272 mov r7, r0 | r7 = r0;
0x00003274 ldr r0, [r4, 8] | r0 = var_8h_9;
0x00003276 add r1, pc | r1 = 0x6596;
0x00003278 blx 0x1688 | r0 = strcmp (r0, r1);
0x0000327c mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x0000327e cbz r0, 0x3298 |
0x00003280 ldr r3, [pc, 0x9c] |
0x00003282 movs r2, 0x26 | r2 = 0x26;
0x00003284 ldr r0, [pc, 0x9c] |
0x00003286 movs r1, 1 | r1 = 1;
0x00003288 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x0000328a add r0, pc | r0 = 0x65b2;
0x0000328c ldr r3, [r3] | r3 = *(0x3320);
0x0000328e blx 0x1760 | fwrite (r0, r1, r2, r3);
0x00003292 movs r0, 2 | r0 = 2;
0x00003294 blx 0x1808 | exit (r0);
| }
0x00003298 add r1, sp, 8 | r1 += var_8h;
0x0000329a ldr r0, [r4, 0xc] | r0 = var_ch_9;
0x0000329c bl 0x2f28 | fcn_00002f28 (r0, r1);
0x000032a0 add r2, sp, 0xc | r2 += var_ch;
0x000032a2 mov sl, r0 | sl = r0;
0x000032a4 mov r1, r8 | r1 = r8;
0x000032a6 mov r0, r7 | r0 = r7;
0x000032a8 blx 0x19c4 | keyctl_pkey_query ();
0x000032aa invalid |
| if (r0 >= 2) {
0x000032ae blt 0x32f0 |
0x000032b0 ldrh fp, [sb, -0x32] | fp = var_32h;
0x000032b4 mov r0, fp | r0 = fp;
0x000032b6 blx 0x17c0 | r0 = malloc (r0);
0x000032ba mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x000032bc cbz r0, 0x3306 | goto label_10;
| }
0x000032be mov r1, r8 | r1 = r8;
0x000032c0 str.w fp, [sp, 4] | __asm ("str.w fp, [var_4h_13]");
0x000032c4 mov r2, sl | r2 = sl;
0x000032c6 ldr r3, [sb, -0x40] | r3 = var_8h_10;
0x000032ca mov r0, r7 | r0 = r7;
0x000032cc str r4, [sp] | *(sp) = r4;
0x000032ce blx 0x1664 | r0 = keyctl_pkey_sign ();
0x000032d2 subs r1, r0, 0 | r1 = r0 - 0;
| if (r1 < r0) {
0x000032d4 blt 0x32f8 | goto label_11;
| }
0x000032d6 ldr r3, [pc, 0x50] |
0x000032d8 mov r0, r4 | r0 = r4;
0x000032da movs r2, 1 | r2 = 1;
0x000032dc ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x000032de ldr r3, [r3] | r3 = *(0x332a);
0x000032e0 blx 0x1760 | r0 = fwrite (r0, r1, r2, r3);
0x000032e4 cmp r0, 1 |
| if (r0 == 1) {
0x000032e6 beq 0x3300 | goto label_12;
| }
0x000032e8 ldr r0, [pc, 0x40] |
0x000032ea add r0, pc | r0 = 0x661a;
0x000032ec bl 0x1e40 | fcn_00001e40 ();
| }
0x000032f0 ldr r0, [pc, 0x3c] |
0x000032f2 add r0, pc | r0 = 0x6626;
0x000032f4 bl 0x1e40 | fcn_00001e40 ();
| label_11:
0x000032f8 ldr r0, [pc, 0x38] |
0x000032fa add r0, pc | r0 = 0x6632;
0x000032fc bl 0x1e40 | fcn_00001e40 ();
| label_12:
0x00003300 mov r0, r5 | r0 = r5;
0x00003302 blx 0x1808 | exit (r0);
| label_10:
0x00003306 ldr r0, [pc, 0x30] |
0x00003308 add r0, pc | r0 = 0x6646;
0x0000330a bl 0x1e40 | fcn_00001e40 ();
0x0000330e nop |
0x00003310 subs r4, 0x66 | r4 -= 0x66;
0x00003312 movs r0, r0 |
0x00003314 lsls r0, r0, 5 | r0 <<= 5;
0x00003316 movs r0, r0 |
0x00003318 subs r4, 0x5a | r4 -= 0x5a;
0x0000331a movs r0, r0 |
0x0000331c asrs r2, r0, 0x1c | r2 = r0 >> 0x1c;
0x0000331e movs r0, r0 |
0x00003320 lsls r4, r0, 5 | r4 = r0 << 5;
0x00003322 movs r0, r0 |
0x00003324 asrs r2, r6, 0x1b | r2 = r6 >> 0x1b;
0x00003326 movs r0, r0 |
0x00003328 lsls r0, r2, 5 | r0 = r2 << 5;
0x0000332a movs r0, r0 |
0x0000332c asrs r6, r0, 0x1e | r6 = r0 >> 0x1e;
0x0000332e movs r0, r0 |
0x00003330 asrs r6, r0, 0x1b | r6 = r0 >> 0x1b;
0x00003332 movs r0, r0 |
0x00003334 asrs r2, r4, 0x1d | r2 = r4 >> 0x1d;
0x00003336 movs r0, r0 |
0x00003338 asrs r0, r3, 0x19 | r0 = r3 >> 0x19;
0x0000333a movs r0, r0 |
0x0000333c ldr r2, [pc, 0xe4] |
0x0000333e cmp r0, 3 |
0x00003340 ldr r3, [pc, 0xe4] | r3 = *(0x3428);
0x00003342 push.w {r7, fp, lr} |
0x00003346 sub.w sp, sp, 0x1040 |
0x0000334a add r2, pc | r2 = 0x6772;
0x0000334c ldr r6, [pc, 0xdc] |
0x0000334e sub sp, 0xc |
0x00003350 ldr r3, [r2, r3] |
0x00003352 add.w r4, sp, 0x1040 | r4 += var_1040h_2;
0x00003356 add r6, pc | r6 = 0x6786;
0x00003358 add.w r4, r4, 4 | r4 += var_4h_18;
0x0000335c ldr r3, [r3] | r3 = *(0x6772);
0x0000335e str r3, [r4] | *(r4) = r3;
0x00003360 mov.w r3, 0 | r3 = 0;
| if (r0 <= 3) {
0x00003364 bgt 0x336a |
0x00003366 bl 0x1b70 | fcn_00001b70 ();
| }
0x0000336a add.w sb, sp, 0x48 | sb += var_48h_2;
0x0000336e mov r4, r1 | r4 = r1;
0x00003370 sub.w r8, sb, 4 | r8 -= var_4h_19;
0x00003374 add.w r0, r4, 0x10 | r0 += var_48h;
0x00003378 mov r1, r8 | r1 = r8;
0x0000337a bl 0x2e7c | fcn_00002e7c (r0, r1);
0x0000337e ldr r0, [r4, 4] | r0 = var_48h_4;
0x00003380 bl 0x1ca0 | fcn_00001ca0 (r0);
0x00003384 ldr r1, [pc, 0xa8] |
0x00003386 mov r7, r0 | r7 = r0;
0x00003388 ldr r0, [r4, 8] | r0 = var_8h_11;
0x0000338a add r1, pc | r1 = 0x67be;
0x0000338c blx 0x1688 | r0 = strcmp (r0, r1);
0x00003390 mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x00003392 cbz r0, 0x33ac |
0x00003394 ldr r3, [pc, 0x9c] |
0x00003396 movs r2, 0x26 | r2 = 0x26;
0x00003398 ldr r0, [pc, 0x9c] |
0x0000339a movs r1, 1 | r1 = 1;
0x0000339c ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x0000339e add r0, pc | r0 = 0x67da;
0x000033a0 ldr r3, [r3] | r3 = *(0x3434);
0x000033a2 blx 0x1760 | fwrite (r0, r1, r2, r3);
0x000033a6 movs r0, 2 | r0 = 2;
0x000033a8 blx 0x1808 | exit (r0);
| }
0x000033ac add r1, sp, 8 | r1 += var_8h_2;
0x000033ae ldr r0, [r4, 0xc] | r0 = var_ch_10;
0x000033b0 bl 0x2f28 | fcn_00002f28 (r0, r1);
0x000033b4 add r2, sp, 0xc | r2 += var_ch_2;
0x000033b6 mov sl, r0 | sl = r0;
0x000033b8 mov r1, r8 | r1 = r8;
0x000033ba mov r0, r7 | r0 = r7;
0x000033bc blx 0x19c4 | r0 = keyctl_pkey_query ();
0x000033c0 cmp r0, 0 |
| if (r0 >= 0) {
0x000033c2 blt 0x3404 |
0x000033c4 ldrh fp, [sb, -0x30] | fp = var_0h_14;
0x000033c8 mov r0, fp | r0 = fp;
0x000033ca blx 0x17c0 | r0 = malloc (r0);
0x000033ce mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x000033d0 cbz r0, 0x341a | goto label_13;
| }
0x000033d2 mov r1, r8 | r1 = r8;
0x000033d4 str.w fp, [sp, 4] | __asm ("str.w fp, [var_4h_12]");
0x000033d8 mov r2, sl | r2 = sl;
0x000033da ldr r3, [sb, -0x40] | r3 = var_8h_12;
0x000033de mov r0, r7 | r0 = r7;
0x000033e0 str r4, [sp] | *(sp) = r4;
0x000033e2 blx 0x18f8 | r0 = keyctl_pkey_decrypt ();
0x000033e6 subs r1, r0, 0 | r1 = r0 - 0;
| if (r1 < r0) {
0x000033e8 blt 0x340c | goto label_14;
| }
0x000033ea ldr r3, [pc, 0x50] |
0x000033ec mov r0, r4 | r0 = r4;
0x000033ee movs r2, 1 | r2 = 1;
0x000033f0 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x000033f2 ldr r3, [r3] | r3 = *(0x343e);
0x000033f4 blx 0x1760 | r0 = fwrite (r0, r1, r2, r3);
0x000033f8 cmp r0, 1 |
| if (r0 == 1) {
0x000033fa beq 0x3414 | goto label_15;
| }
0x000033fc ldr r0, [pc, 0x40] |
0x000033fe add r0, pc | r0 = 0x6842;
0x00003400 bl 0x1e40 | fcn_00001e40 ();
| }
0x00003404 ldr r0, [pc, 0x3c] |
0x00003406 add r0, pc | r0 = 0x684e;
0x00003408 bl 0x1e40 | fcn_00001e40 ();
| label_14:
0x0000340c ldr r0, [pc, 0x38] |
0x0000340e add r0, pc | r0 = 0x685a;
0x00003410 bl 0x1e40 | fcn_00001e40 ();
| label_15:
0x00003414 mov r0, r5 | r0 = r5;
0x00003416 blx 0x1808 | exit (r0);
| label_13:
0x0000341a ldr r0, [pc, 0x30] |
0x0000341c add r0, pc | r0 = 0x686e;
0x0000341e bl 0x1e40 | fcn_00001e40 ();
0x00003422 nop |
0x00003424 subs r3, 0x52 | r3 -= 0x52;
0x00003426 movs r0, r0 |
0x00003428 lsls r0, r0, 5 | r0 <<= 5;
0x0000342a movs r0, r0 |
0x0000342c subs r3, 0x46 | r3 -= 0x46;
0x0000342e movs r0, r0 |
0x00003430 asrs r6, r5, 0x17 | r6 = r5 >> 0x17;
0x00003432 movs r0, r0 |
0x00003434 lsls r4, r0, 5 | r4 = r0 << 5;
0x00003436 movs r0, r0 |
0x00003438 asrs r6, r3, 0x17 | r6 = r3 >> 0x17;
0x0000343a movs r0, r0 |
0x0000343c lsls r0, r2, 5 | r0 = r2 << 5;
0x0000343e movs r0, r0 |
0x00003440 asrs r2, r6, 0x19 | r2 = r6 >> 0x19;
0x00003442 movs r0, r0 |
0x00003444 asrs r2, r6, 0x16 | r2 = r6 >> 0x16;
0x00003446 movs r0, r0 |
0x00003448 asrs r2, r5, 0x19 | r2 = r5 >> 0x19;
0x0000344a movs r0, r0 |
0x0000344c asrs r4, r0, 0x15 | r4 = r0 >> 0x15;
0x0000344e movs r0, r0 |
0x00003450 ldr r2, [pc, 0xe4] |
0x00003452 cmp r0, 3 |
0x00003454 ldr r3, [pc, 0xe4] | r3 = *(0x353c);
0x00003456 push.w {r7, fp, lr} |
0x0000345a sub.w sp, sp, 0x1040 |
0x0000345e add r2, pc | r2 = 0x699a;
0x00003460 ldr r6, [pc, 0xdc] |
0x00003462 sub sp, 0xc |
0x00003464 ldr r3, [r2, r3] |
0x00003466 add.w r4, sp, 0x1040 | r4 += var_1040h_3;
0x0000346a add r6, pc | r6 = 0x69ae;
0x0000346c add.w r4, r4, 4 | r4 += var_4h_20;
0x00003470 ldr r3, [r3] | r3 = *(0x699a);
0x00003472 str r3, [r4] | *(r4) = r3;
0x00003474 mov.w r3, 0 | r3 = 0;
| if (r0 <= 3) {
0x00003478 bgt 0x347e |
0x0000347a bl 0x1b70 | fcn_00001b70 ();
| }
0x0000347e add.w sb, sp, 0x48 | sb += var_48h_3;
0x00003482 mov r4, r1 | r4 = r1;
0x00003484 sub.w r8, sb, 4 | r8 -= var_4h_21;
0x00003488 add.w r0, r4, 0x10 | r0 += var_10h_3;
0x0000348c mov r1, r8 | r1 = r8;
0x0000348e bl 0x2e7c | fcn_00002e7c (r0, r1);
0x00003492 ldr r0, [r4, 4] | r0 = var_48h_5;
0x00003494 bl 0x1ca0 | fcn_00001ca0 (r0);
0x00003498 ldr r1, [pc, 0xa8] |
0x0000349a mov r7, r0 | r7 = r0;
0x0000349c ldr r0, [r4, 8] | r0 = var_8h_13;
0x0000349e add r1, pc | r1 = 0x69e6;
0x000034a0 blx 0x1688 | r0 = strcmp (r0, r1);
0x000034a4 mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x000034a6 cbz r0, 0x34c0 |
0x000034a8 ldr r3, [pc, 0x9c] |
0x000034aa movs r2, 0x26 | r2 = 0x26;
0x000034ac ldr r0, [pc, 0x9c] |
0x000034ae movs r1, 1 | r1 = 1;
0x000034b0 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x000034b2 add r0, pc | r0 = 0x6a02;
0x000034b4 ldr r3, [r3] | r3 = *(0x3548);
0x000034b6 blx 0x1760 | r0 = fwrite (r0, r1, r2, r3);
0x000034b8 ldrd r2, r0, [r4, -0x8] | __asm ("ldrd r2, r0, [r4, -0x8]");
0x000034bc blx 0x1808 | exit (r0);
0x000034be invalid |
| }
0x000034c0 add r1, sp, 8 | r1 += var_8h_3;
0x000034c2 ldr r0, [r4, 0xc] | r0 = var_ch_11;
0x000034c4 bl 0x2f28 | fcn_00002f28 (r0, r1);
0x000034c8 add r2, sp, 0xc | r2 += var_ch_3;
0x000034ca mov sl, r0 | sl = r0;
0x000034cc mov r1, r8 | r1 = r8;
0x000034ce mov r0, r7 | r0 = r7;
0x000034d0 blx 0x19c4 | r0 = keyctl_pkey_query ();
0x000034d4 cmp r0, 0 |
| if (r0 >= 0) {
0x000034d6 blt 0x3518 |
0x000034d8 ldrh fp, [sb, -0x2e] | fp = var_2eh;
0x000034dc mov r0, fp | r0 = fp;
0x000034de blx 0x17c0 | r0 = malloc (r0);
0x000034e2 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x000034e4 cbz r0, 0x352e | goto label_16;
| }
0x000034e6 mov r1, r8 | r1 = r8;
0x000034e8 str.w fp, [sp, 4] | __asm ("str.w fp, [var_0h_2]");
0x000034ec mov r2, sl | r2 = sl;
0x000034ee ldr r3, [sb, -0x40] | r3 = var_4h_4;
0x000034f2 mov r0, r7 | r0 = r7;
0x000034f4 str r4, [sp] | *(sp) = r4;
0x000034f6 blx 0x1730 | r0 = keyctl_pkey_encrypt ();
0x000034fa subs r1, r0, 0 | r1 = r0 - 0;
| if (r1 < r0) {
0x000034fc blt 0x3520 | goto label_17;
| }
0x000034fe ldr r3, [pc, 0x50] |
0x00003500 mov r0, r4 | r0 = r4;
0x00003502 movs r2, 1 | r2 = 1;
0x00003504 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x00003506 ldr r3, [r3] | r3 = *(0x3552);
0x00003508 blx 0x1760 | r0 = fwrite (r0, r1, r2, r3);
0x0000350c cmp r0, 1 |
| if (r0 == 1) {
0x0000350e beq 0x3528 | goto label_18;
| }
0x00003510 ldr r0, [pc, 0x40] |
0x00003512 add r0, pc | r0 = 0x6a6a;
0x00003514 bl 0x1e40 | fcn_00001e40 ();
0x00003516 invalid |
| }
0x00003518 ldr r0, [pc, 0x3c] |
0x0000351a add r0, pc | r0 = 0x6a76;
0x0000351c bl 0x1e40 | fcn_00001e40 ();
| label_17:
0x00003520 ldr r0, [pc, 0x38] |
0x00003522 add r0, pc | r0 = 0x6a82;
0x00003524 bl 0x1e40 | fcn_00001e40 ();
| label_18:
0x00003528 mov r0, r5 | r0 = r5;
0x0000352a blx 0x1808 | exit (r0);
| label_16:
0x0000352e ldr r0, [pc, 0x30] |
0x00003530 add r0, pc | r0 = 0x6a96;
0x00003532 bl 0x1e40 | fcn_00001e40 ();
0x00003536 nop |
0x00003538 subs r2, 0x3e | r2 -= 0x3e;
0x0000353a movs r0, r0 |
0x0000353c lsls r0, r0, 5 | r0 <<= 5;
0x0000353e movs r0, r0 |
0x00003540 subs r2, 0x32 | r2 -= 0x32;
0x00003542 movs r0, r0 |
0x00003544 asrs r2, r3, 0x13 | r2 = r3 >> 0x13;
0x00003546 movs r0, r0 |
0x00003548 lsls r4, r0, 5 | r4 = r0 << 5;
0x0000354a movs r0, r0 |
0x0000354c asrs r2, r1, 0x13 | r2 = r1 >> 0x13;
0x0000354e movs r0, r0 |
0x00003550 lsls r0, r2, 5 | r0 = r2 << 5;
0x00003552 movs r0, r0 |
0x00003554 asrs r6, r3, 0x15 | r6 = r3 >> 0x15;
0x00003556 movs r0, r0 |
0x00003558 asrs r6, r3, 0x12 | r6 = r3 >> 0x12;
0x0000355a movs r0, r0 |
0x0000355c asrs r2, r5, 0x15 | r2 = r5 >> 0x15;
0x0000355e movs r0, r0 |
0x00003560 asrs r0, r6, 0x10 | r0 = r6 >> 0x10;
0x00003562 movs r0, r0 |
0x00003564 ldr r2, [pc, 0x4c] |
0x00003566 cmp r0, 2 |
0x00003568 ldr r3, [pc, 0x4c] | r3 = *(0x35b8);
0x0000356a push {lr} |
0x0000356c sub sp, 0xc |
0x0000356e add r2, pc | r2 = 0x6b26;
0x00003570 ldr r3, [r2, r3] |
0x00003572 ldr r3, [r3] | r3 = *(0x6b26);
0x00003574 str r3, [sp, 4] | var_4h_3 = r3;
0x00003576 mov.w r3, 0 | r3 = 0;
| if (r0 != 2) {
0x0000357a beq 0x3580 |
0x0000357c bl 0x1b70 | fcn_00001b70 ();
| }
0x00003580 ldr r0, [r1, 4] | r0 = var_48h_6;
0x00003582 bl 0x1ca0 | fcn_00001ca0 (r0);
0x00003586 mov r1, sp | r1 = sp;
0x00003588 blx 0x1934 | r0 = keyctl_read_alloc ();
0x0000358c subs r2, r0, 0 | r2 = r0 - 0;
| if (r2 >= r0) {
0x0000358e blt 0x35a4 |
| if (r2 != r0) {
0x00003590 beq 0x359e |
0x00003592 ldr r1, [sp] | r1 = *(sp);
0x00003594 movs r0, 1 | r0 = 1;
0x00003596 blx 0x18c8 | r0 = write (r0, r1, r2);
0x0000359a cmp r0, 0 |
| if (r0 < 0) {
0x0000359c blt 0x35ac | goto label_19;
| }
| }
0x0000359e movs r0, 0 | r0 = 0;
0x000035a0 blx 0x1808 | exit (r0);
| }
0x000035a4 ldr r0, [pc, 0x14] |
0x000035a6 add r0, pc | r0 = 0x6b66;
0x000035a8 bl 0x1e40 | fcn_00001e40 ();
| label_19:
0x000035ac ldr r0, [pc, 0x10] |
0x000035ae add r0, pc | r0 = 0x6b72;
0x000035b0 bl 0x1e40 | fcn_00001e40 ();
0x000035b4 subs r1, 0x2e | r1 -= 0x2e;
0x000035b6 movs r0, r0 |
0x000035b8 lsls r0, r0, 5 | r0 <<= 5;
0x000035ba movs r0, r0 |
0x000035bc asrs r6, r1, 4 | r6 = r1 >> 4;
0x000035be movs r0, r0 |
0x000035c0 asrs r2, r6, 0x13 | r2 = r6 >> 0x13;
0x000035c2 movs r0, r0 |
0x000035c4 ldr r2, [pc, 0x50] |
0x000035c6 cmp r0, 3 |
0x000035c8 ldr r3, [pc, 0x50] | r3 = *(0x361c);
0x000035ca push {lr} |
0x000035cc sub sp, 0xc |
0x000035ce add r2, pc | r2 = 0x6bea;
0x000035d0 ldr r3, [r2, r3] |
0x000035d2 ldr r3, [r3] | r3 = *(0x6bea);
0x000035d4 str r3, [sp, 4] | var_4h_4 = r3;
0x000035d6 mov.w r3, 0 | r3 = 0;
| if (r0 != 3) {
0x000035da beq 0x35e0 |
0x000035dc bl 0x1b70 | fcn_00001b70 ();
| }
0x000035e0 mov r4, r1 | r4 = r1;
0x000035e2 ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x000035e4 bl 0x1ca0 | r0 = fcn_00001ca0 (r0);
0x000035e8 mov r3, r0 | r3 = r0;
0x000035ea ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x000035ec mov r4, r3 | r4 = r3;
0x000035ee bl 0x1ca0 | r0 = fcn_00001ca0 (r0);
0x000035f2 mov r5, r0 | r5 = r0;
0x000035f4 mov r0, sp | r0 = sp;
0x000035f6 bl 0x2ccc | fcn_00002ccc (r0);
0x000035fa ldr r2, [sp] | r2 = *(sp);
0x000035fc mov r1, r0 | r1 = r0;
0x000035fe mov r3, r5 | r3 = r5;
0x00003600 mov r0, r4 | r0 = r4;
0x00003602 blx 0x1820 | r0 = keyctl_instantiate ();
0x00003606 cmp r0, 0 |
| if (r0 >= 0) {
0x00003608 blt 0x3610 |
0x0000360a movs r0, 0 | r0 = 0;
0x0000360c blx 0x1808 | exit (r0);
| }
0x00003610 ldr r0, [pc, 0xc] |
0x00003612 add r0, pc | r0 = 0x6c36;
0x00003614 bl 0x1e40 | fcn_00001e40 ();
0x00003616 invalid |
0x0000361a movs r0, r0 |
0x0000361c lsls r0, r0, 5 | r0 <<= 5;
0x0000361e movs r0, r0 |
0x00003620 asrs r6, r2, 0x12 | r6 = r2 >> 0x12;
0x00003622 movs r0, r0 |
0x00003624 cmp r0, 4 |
0x00003626 push {r3, lr} |
| if (r0 != 4) {
0x00003628 beq 0x362e |
0x0000362a bl 0x1b70 | fcn_00001b70 ();
| }
0x0000362e mov r4, r1 | r4 = r1;
0x00003630 ldr r0, [r1, 4] | r0 = var_0h_3;
0x00003632 bl 0x1ca0 | r0 = fcn_00001ca0 (r0);
0x00003636 mov r5, r0 | r5 = r0;
0x00003638 ldr r0, [r4, 0xc] | r0 = var_8h_4;
0x0000363a bl 0x1ca0 | fcn_00001ca0 (r0);
0x0000363e ldr r6, [r4, 8] | r6 = s;
0x00003640 mov r4, r0 | r4 = r0;
0x00003642 mov r0, r6 | r0 = r6;
0x00003644 blx 0x1844 | strlen (r0);
0x00003648 mov r3, r4 | r3 = r4;
0x0000364a mov r2, r0 | r2 = r0;
0x0000364c mov r1, r6 | r1 = r6;
0x0000364e mov r0, r5 | r0 = r5;
0x00003650 blx 0x1820 | r0 = keyctl_instantiate ();
0x00003654 cmp r0, 0 |
| if (r0 >= 0) {
0x00003656 blt 0x365e |
0x00003658 movs r0, 0 | r0 = 0;
0x0000365a blx 0x1808 | exit (r0);
| }
0x0000365e ldr r0, [pc, 8] |
0x00003660 add r0, pc | r0 = 0x6cce;
0x00003662 bl 0x1e40 | fcn_00001e40 ();
0x00003666 nop |
0x00003668 asrs r0, r1, 0x11 | r0 = r1 >> 0x11;
0x0000366a movs r0, r0 |
0x0000366c ldr r2, [pc, 0x54] |
0x0000366e cmp r0, 4 |
0x00003670 ldr r3, [pc, 0x54] | r3 = *(0x36c8);
0x00003672 push {lr} |
0x00003674 sub sp, 0x14 |
0x00003676 add r2, pc | r2 = 0x6d3e;
0x00003678 ldr r3, [r2, r3] |
0x0000367a ldr r3, [r3] | r3 = *(0x6d3e);
0x0000367c str r3, [sp, 0xc] | var_ch_4 = r3;
0x0000367e mov.w r3, 0 | r3 = 0;
| if (r0 != 4) {
0x00003682 beq 0x3688 |
0x00003684 bl 0x1b70 | fcn_00001b70 ();
| }
0x00003688 ldr r0, [r1, 0xc] | r0 = *((r1 + 0xc));
0x0000368a mov r4, r1 | r4 = r1;
0x0000368c bl 0x1ca0 | r0 = fcn_00001ca0 (r0);
0x00003690 mov r5, r0 | r5 = r0;
0x00003692 add r0, sp, 8 | r0 += var_8h_4;
0x00003694 bl 0x2ccc | fcn_00002ccc (r0);
0x00003698 ldr r3, [sp, 8] | r3 = var_8h_4;
0x0000369a mov r2, r0 | r2 = r0;
0x0000369c ldrd r0, r1, [r4, 4] | __asm ("ldrd r0, r1, [r4, 4]");
0x000036a0 str r5, [sp] | *(sp) = r5;
0x000036a2 blx 0x17a8 | r0 = add_key ();
0x000036a6 subs r2, r0, 0 | r2 = r0 - 0;
| if (r2 >= r0) {
0x000036a8 blt 0x36ba |
0x000036aa ldr r1, [pc, 0x20] |
0x000036ac movs r0, 1 | r0 = 1;
0x000036ae add r1, pc | r1 = 0x6d80;
0x000036b0 blx 0x18bc | printf_chk ();
0x000036b4 movs r0, 0 | r0 = 0;
0x000036b6 blx 0x1808 | exit (r0);
| }
0x000036ba ldr r0, [pc, 0x14] |
0x000036bc add r0, pc | r0 = 0x6d92;
0x000036be bl 0x1e40 | fcn_00001e40 ();
0x000036c2 nop |
0x000036c4 subs r0, 0x26 | r0 -= 0x26;
0x000036c6 movs r0, r0 |
0x000036c8 lsls r0, r0, 5 | r0 <<= 5;
0x000036ca movs r0, r0 |
0x000036cc asrs r2, r3, 5 | r2 = r3 >> 5;
0x000036ce movs r0, r0 |
0x000036d0 asrs r0, r0, 0x10 | r0 >>= 0x10;
0x000036d2 movs r0, r0 |
0x000036d4 cmp r0, 3 |
0x000036d6 push {lr} |
0x000036d8 sub sp, 0xc |
| if (r0 != 3) {
0x000036da beq 0x36e0 |
0x000036dc bl 0x1b70 | fcn_00001b70 ();
| }
0x000036e0 ldr r0, [r1, 8] | r0 = *((r1 + 8));
0x000036e2 mov r4, r1 | r4 = r1;
0x000036e4 bl 0x1ca0 | r0 = fcn_00001ca0 (r0);
0x000036e8 mov r5, r0 | r5 = r0;
0x000036ea ldr r0, [pc, 0x2c] |
0x000036ec movs r3, 0 | r3 = 0;
0x000036ee ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x000036f0 mov r2, r3 | r2 = r3;
0x000036f2 str r5, [sp] | *(sp) = r5;
0x000036f4 add r0, pc | r0 = 0x6e12;
0x000036f6 blx 0x17a8 | r0 = add_key ();
0x000036fa subs r2, r0, 0 | r2 = r0 - 0;
| if (r2 >= r0) {
0x000036fc blt 0x370e |
0x000036fe ldr r1, [pc, 0x1c] |
0x00003700 movs r0, 1 | r0 = 1;
0x00003702 add r1, pc | r1 = 0x6e24;
0x00003704 blx 0x18bc | printf_chk ();
0x00003708 movs r0, 0 | r0 = 0;
0x0000370a blx 0x1808 | exit (r0);
| }
0x0000370e ldr r0, [pc, 0x10] |
0x00003710 add r0, pc | r0 = 0x6e36;
0x00003712 bl 0x1e40 | fcn_00001e40 ();
0x00003716 nop |
0x00003718 asrs r4, r6, 3 | r4 = r6 >> 3;
0x0000371a movs r0, r0 |
0x0000371c asrs r6, r0, 4 | r6 = r0 >> 4;
0x0000371e movs r0, r0 |
0x00003720 asrs r4, r5, 0xe | r4 = r5 >> 0xe;
0x00003722 movs r0, r0 |
0x00003724 cmp r0, 5 |
0x00003726 push {lr} |
0x00003728 sub sp, 0xc |
| if (r0 != 5) {
0x0000372a beq 0x3730 |
0x0000372c bl 0x1b70 | fcn_00001b70 ();
| }
0x00003730 mov r4, r1 | r4 = r1;
0x00003732 ldr r0, [r1, 0x10] | r0 = *((r1 + 0x10));
0x00003734 bl 0x1ca0 | fcn_00001ca0 (r0);
0x00003738 ldr r6, [r4, 0xc] | r6 = *((r4 + 0xc));
0x0000373a mov r5, r0 | r5 = r0;
0x0000373c mov r0, r6 | r0 = r6;
0x0000373e blx 0x1844 | strlen (r0);
0x00003742 mov r2, r6 | r2 = r6;
0x00003744 mov r3, r0 | r3 = r0;
0x00003746 ldrd r0, r1, [r4, 4] | __asm ("ldrd r0, r1, [r4, 4]");
0x0000374a str r5, [sp] | *(sp) = r5;
0x0000374c blx 0x17a8 | r0 = add_key ();
0x00003750 subs r2, r0, 0 | r2 = r0 - 0;
| if (r2 >= r0) {
0x00003752 blt 0x3764 |
0x00003754 ldr r1, [pc, 0x14] |
0x00003756 movs r0, 1 | r0 = 1;
0x00003758 add r1, pc | r1 = 0x6ec8;
0x0000375a blx 0x18bc | printf_chk ();
0x0000375e movs r0, 0 | r0 = 0;
0x00003760 blx 0x1808 | exit (r0);
| }
0x00003764 ldr r0, [pc, 8] |
0x00003766 add r0, pc | r0 = 0x6eda;
0x00003768 bl 0x1e40 | fcn_00001e40 ();
0x0000376c asrs r0, r6, 2 | r0 = r6 >> 2;
0x0000376e movs r0, r0 |
0x00003770 asrs r6, r2, 0xd | r6 = r2 >> 0xd;
0x00003772 movs r0, r0 |
0x00003774 cmp r0, 1 |
0x00003776 push {r3, lr} |
| if (r0 != 1) {
0x00003778 beq 0x377e |
0x0000377a bl 0x1b70 | r0 = fcn_00001b70 ();
| }
0x0000377e mov r4, r0 | r4 = r0;
0x00003780 movs r0, 0 | r0 = 0;
0x00003782 blx 0x1958 | r0 = keyctl_join_session_keyring ();
0x00003786 cmp r0, 0 |
| if (r0 >= 0) {
0x00003788 blt 0x37b8 |
0x0000378a blx 0x19b8 | r0 = keyctl_session_to_parent ();
0x0000378e cmp r0, 0 |
| if (r0 >= 0) {
0x00003790 blt 0x37b0 |
0x00003792 movs r1, 0 | r1 = 0;
0x00003794 mvn r0, 2 | r0 = ~2;
0x00003798 blx 0x1904 | r0 = keyctl_get_keyring_ID ();
0x0000379c subs r2, r0, 0 | r2 = r0 - 0;
| if (r2 < r0) {
0x0000379e blt 0x37c0 | goto label_20;
| }
0x000037a0 ldr r1, [pc, 0x24] |
0x000037a2 mov r0, r4 | r0 = r4;
0x000037a4 add r1, pc | r1 = 0x6f70;
0x000037a6 blx 0x18bc | printf_chk ();
0x000037aa movs r0, 0 | r0 = 0;
0x000037ac blx 0x1808 | exit (r0);
| }
0x000037b0 ldr r0, [pc, 0x18] |
0x000037b2 add r0, pc | r0 = 0x6f82;
0x000037b4 bl 0x1e40 | fcn_00001e40 ();
| }
0x000037b8 ldr r0, [pc, 0x14] |
0x000037ba add r0, pc | r0 = 0x6f8e;
0x000037bc bl 0x1e40 | fcn_00001e40 ();
| label_20:
0x000037c0 ldr r0, [pc, 0x10] |
0x000037c2 add r0, pc | r0 = 0x6f9a;
0x000037c4 bl 0x1e40 | fcn_00001e40 ();
0x000037c8 asrs r4, r4, 1 | r4 >>= 1;
0x000037ca movs r0, r0 |
0x000037cc asrs r2, r2, 0xc | r2 >>= 0xc;
0x000037ce movs r0, r0 |
0x000037d0 asrs r2, r3, 0x20 | r2 = r3 >> 0x20;
0x000037d2 movs r0, r0 |
0x000037d4 asrs r6, r3, 0xc | r6 = r3 >> 0xc;
0x000037d6 movs r0, r0 |
0x000037d8 ldr r2, [pc, 0x78] |
0x000037da cmp r0, 4 |
0x000037dc ldr r3, [pc, 0x78] | r3 = *(0x3858);
0x000037de push {r7, lr} |
0x000037e0 sub sp, 8 |
0x000037e2 add r2, pc | r2 = 0x703a;
0x000037e4 ldr r5, [pc, 0x74] |
0x000037e6 ldr r3, [r2, r3] |
0x000037e8 add r5, pc | r5 = 0x7048;
0x000037ea ldr r3, [r3] | r3 = imp.__aeabi_unwind_cpp_pr0;
0x000037ec str r3, [sp, 4] | var_4h_5 = r3;
0x000037ee mov.w r3, 0 | r3 = 0;
| if (r0 != 4) {
0x000037f2 beq 0x37f8 |
0x000037f4 bl 0x1b70 | fcn_00001b70 ();
| }
0x000037f8 mov r4, r1 | r4 = r1;
0x000037fa ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x000037fc bl 0x1ca0 | fcn_00001ca0 (r0);
0x00003800 movs r2, 0xa | r2 = 0xa;
0x00003802 mov r1, sp | r1 = sp;
0x00003804 mov r6, r0 | r6 = r0;
0x00003806 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x00003808 blx 0x1838 | strtoul (r0, r1, r2);
0x0000380c ldr r3, [sp] | r3 = *(sp);
0x0000380e mov r7, r0 | r7 = r0;
0x00003810 ldrb.w r8, [r3] | r8 = *(r3);
0x00003814 cmp.w r8, 0 |
0x00003816 lsrs r0, r0, 0x1c | r0 >>= 0x1c;
| if (r0 == r0) {
0x00003818 bne 0x3834 |
0x0000381a ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x0000381c bl 0x1ca0 | fcn_00001ca0 (r0);
0x00003820 mov r1, r7 | r1 = r7;
0x00003822 mov r2, r0 | r2 = r0;
0x00003824 mov r0, r6 | r0 = r6;
0x00003826 blx 0x16b8 | r0 = keyctl_negate ();
0x0000382a cmp r0, 0 |
| if (r0 < 0) {
0x0000382c blt 0x384c | goto label_21;
| }
0x0000382e mov r0, r8 | r0 = r8;
0x00003830 blx 0x1808 | exit (r0);
| }
0x00003834 ldr r0, [pc, 0x28] |
0x00003836 movs r1, 1 | r1 = 1;
0x00003838 ldr r2, [pc, 0x28] |
0x0000383a ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0000383c ldr r0, [r5, r0] | r0 = *((r5 + r0));
0x0000383e add r2, pc | r2 = 0x70a6;
0x00003840 ldr r0, [r0] | r0 = *(0x3860);
0x00003842 blx 0x18e0 | fprintf_chk ();
0x00003846 movs r0, 2 | r0 = 2;
0x00003848 blx 0x1808 | exit (r0);
| label_21:
0x0000384c ldr r0, [pc, 0x18] |
0x0000384e add r0, pc | r0 = 0x70ba;
0x00003850 bl 0x1e40 | fcn_00001e40 ();
0x00003854 adds r6, 0xba | r6 += 0xba;
0x00003856 movs r0, r0 |
0x00003858 lsls r0, r0, 5 | r0 <<= 5;
0x0000385a movs r0, r0 |
0x0000385c adds r6, 0xb4 | r6 += 0xb4;
0x0000385e movs r0, r0 |
0x00003860 lsls r4, r0, 5 | r4 = r0 << 5;
0x00003862 movs r0, r0 |
0x00003864 lsrs r2, r3, 0x15 | r2 = r3 >> 0x15;
0x00003866 movs r0, r0 |
0x00003868 asrs r2, r2, 1 | r2 >>= 1;
0x0000386a movs r0, r0 |
0x0000386c cmp r0, 4 |
0x0000386e mov r4, r0 | r4 = r0;
0x00003870 mov r5, r1 | r5 = r1;
0x00003872 push {r7, lr} |
| if (r0 > 4) {
0x00003874 ble 0x388a |
0x00003876 ldr r0, [pc, 0x50] |
0x00003878 ldr r1, [r1, 4] | r1 = *((r1 + 4));
0x0000387a add r0, pc | r0 = 0x7148;
0x0000387c blx 0x1688 | r0 = strcmp (r0, r1);
| if (r0 != 0) {
0x00003880 cbnz r0, 0x3890 | goto label_22;
| }
0x00003882 subs r4, 1 | r4--;
0x00003884 adds r5, 4 | r5 += 4;
0x00003886 mov r6, r0 | r6 = r0;
0x00003888 b 0x388c |
| } else {
0x0000388a movs r6, 1 | r6 = 1;
| }
0x0000388c cmp r4, 4 |
| if (r4 != 4) {
0x0000388e beq 0x3894 |
| label_22:
0x00003890 bl 0x1b70 | fcn_00001b70 ();
| }
0x00003894 ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x00003896 bl 0x1ca0 | r0 = fcn_00001ca0 (r0);
0x0000389a mov r4, r0 | r4 = r0;
0x0000389c ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x0000389e bl 0x1ca0 | r0 = fcn_00001ca0 (r0);
0x000038a2 mov r7, r0 | r7 = r0;
0x000038a4 ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x000038a6 bl 0x1ca0 | fcn_00001ca0 (r0);
0x000038aa mov r3, r6 | r3 = r6;
0x000038ac mov r2, r0 | r2 = r0;
0x000038ae mov r1, r7 | r1 = r7;
0x000038b0 mov r0, r4 | r0 = r4;
0x000038b2 blx 0x19ac | r0 = keyctl_move ();
0x000038b6 cmp r0, 0 |
| if (r0 >= 0) {
0x000038b8 blt 0x38c0 |
0x000038ba movs r0, 0 | r0 = 0;
0x000038bc blx 0x1808 | exit (r0);
| }
0x000038c0 ldr r0, [pc, 8] |
0x000038c2 add r0, pc | r0 = 0x7192;
0x000038c4 bl 0x1e40 | fcn_00001e40 ();
0x000038c8 asrs r6, r7, 9 | r6 = r7 >> 9;
0x000038ca movs r0, r0 |
0x000038cc asrs r2, r7, 8 | r2 = r7 >> 8;
0x000038ce movs r0, r0 |
0x000038d0 cmp r0, 3 |
0x000038d2 push {r3, lr} |
| if (r0 != 3) {
0x000038d4 beq 0x38da |
0x000038d6 bl 0x1b70 | fcn_00001b70 ();
| }
0x000038da mov r4, r1 | r4 = r1;
0x000038dc ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x000038de bl 0x1ca0 | r0 = fcn_00001ca0 (r0);
0x000038e2 mov r5, r0 | r5 = r0;
0x000038e4 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x000038e6 bl 0x1ca0 | r0 = fcn_00001ca0 (r0);
0x000038ea mov r1, r0 | r1 = r0;
0x000038ec mov r0, r5 | r0 = r5;
0x000038ee blx 0x1658 | r0 = keyctl_link ();
0x000038f2 cmp r0, 0 |
| if (r0 >= 0) {
0x000038f4 blt 0x38fc |
0x000038f6 movs r0, 0 | r0 = 0;
0x000038f8 blx 0x1808 | exit (r0);
| }
0x000038fc ldr r0, [pc, 4] |
0x000038fe add r0, pc | r0 = 0x7206;
0x00003900 bl 0x1e40 | fcn_00001e40 ();
0x00003904 asrs r2, r1, 8 | r2 = r1 >> 8;
0x00003906 movs r0, r0 |
0x00003908 subs r3, r0, 2 | r3 = r0 - 2;
0x0000390a mov r4, r0 | r4 = r0;
0x0000390c ldr r0, [pc, 0x7c] |
0x0000390e cmp r3, 1 |
0x00003910 ldr r2, [pc, 0x7c] | r2 = *(0x3990);
0x00003912 push {r7, lr} |
0x00003914 sub sp, 8 |
0x00003916 add r0, pc | r0 = 0x72a6;
0x00003918 ldr r6, [pc, 0x78] |
0x0000391a ldr r2, [r0, r2] |
0x0000391c add r6, pc | r6 = 0x72b4;
0x0000391e ldr r2, [r2] | r2 = imp.__aeabi_unwind_cpp_pr0;
0x00003920 str r2, [sp, 4] | var_4h_6 = r2;
0x00003922 mov.w r2, 0 | r2 = 0;
| if (r3 >= 1) {
0x00003926 bls 0x392c |
0x00003928 bl 0x1b70 | fcn_00001b70 ();
| }
0x0000392c ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x0000392e mov r5, r1 | r5 = r1;
0x00003930 bl 0x1ca0 | fcn_00001ca0 (r0);
0x00003934 cmp r4, 3 |
0x00003936 mov r7, r0 | r7 = r0;
| if (r4 == 3) {
0x00003938 beq 0x3960 | goto label_23;
| }
0x0000393a mov.w r0, -1 | r0 = -1;
| do {
0x0000393e mov r1, r7 | r1 = r7;
0x00003940 blx 0x16d0 | r0 = keyctl_get_persistent ();
0x00003944 subs r2, r0, 0 | r2 = r0 - 0;
| if (r2 >= r0) {
0x00003946 blt 0x3958 |
0x00003948 ldr r1, [pc, 0x4c] |
0x0000394a movs r0, 1 | r0 = 1;
0x0000394c add r1, pc | r1 = 0x72e8;
0x0000394e blx 0x18bc | printf_chk ();
0x00003952 movs r0, 0 | r0 = 0;
0x00003954 blx 0x1808 | exit (r0);
| }
0x00003958 ldr r0, [pc, 0x40] |
0x0000395a add r0, pc | r0 = 0x72fa;
0x0000395c bl 0x1e40 | fcn_00001e40 ();
| label_23:
0x00003960 ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x00003962 movs r2, 0 | r2 = 0;
0x00003964 mov r1, sp | r1 = sp;
0x00003966 blx 0x1838 | strtoul (r0, r1, r2);
0x0000396a ldr r3, [sp] | r3 = *(sp);
0x0000396c ldrb r3, [r3] | r3 = *(r3);
0x0000396e cmp r3, 0 |
0x00003970 beq 0x393e |
| } while (r3 == 0);
0x00003972 ldr r0, [pc, 0x2c] |
0x00003974 movs r1, 1 | r1 = 1;
0x00003976 ldr r2, [pc, 0x2c] |
0x00003978 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x0000397a ldr r0, [r6, r0] | r0 = *((r6 + r0));
0x0000397c add r2, pc | r2 = 0x7326;
0x0000397e ldr r0, [r0] | r0 = *(0x39a2);
0x00003980 blx 0x18e0 | fprintf_chk ();
0x00003984 movs r0, 2 | r0 = 2;
0x00003986 blx 0x1808 | exit (r0);
0x0000398a nop |
0x0000398c adds r5, 0x86 | r5 += 0x86;
0x0000398e movs r0, r0 |
0x00003990 lsls r0, r0, 5 | r0 <<= 5;
0x00003992 movs r0, r0 |
0x00003994 adds r5, 0x80 | r5 += 0x80;
0x00003996 movs r0, r0 |
0x00003998 lsrs r4, r7, 0x1a | r4 = r7 >> 0x1a;
0x0000399a movs r0, r0 |
0x0000399c asrs r2, r2, 7 | r2 >>= 7;
0x0000399e movs r0, r0 |
0x000039a0 lsls r4, r0, 5 | r4 = r0 << 5;
0x000039a2 movs r0, r0 |
0x000039a4 asrs r0, r3, 6 | r0 = r3 >> 6;
0x000039a6 movs r0, r0 |
0x000039a8 cmp r0, 2 |
0x000039aa push {r3, lr} |
| if (r0 != 2) {
0x000039ac beq 0x39b2 |
0x000039ae bl 0x1b70 | fcn_00001b70 ();
| }
0x000039b2 ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x000039b4 bl 0x1ca0 | r0 = fcn_00001ca0 (r0);
0x000039b8 blx 0x1790 | r0 = keyctl_invalidate ();
0x000039bc cmp r0, 0 |
| if (r0 >= 0) {
0x000039be blt 0x39c6 |
0x000039c0 movs r0, 0 | r0 = 0;
0x000039c2 blx 0x1808 | exit (r0);
| }
0x000039c6 ldr r0, [pc, 8] |
0x000039c8 add r0, pc | r0 = 0x739e;
0x000039ca bl 0x1e40 | fcn_00001e40 ();
0x000039ce nop |
0x000039d0 asrs r4, r7, 5 | r4 = r7 >> 5;
0x000039d2 movs r0, r0 |
0x000039d4 ldr r2, [pc, 0x100] |
0x000039d6 cmp r0, 6 |
0x000039d8 ldr r3, [pc, 0x100] | r3 = *(0x3adc);
0x000039da push {r7, lr} |
0x000039dc sub sp, 0x18 |
0x000039de add r2, pc | r2 = 0x74ba;
0x000039e0 ldr r6, [pc, 0xfc] |
0x000039e2 ldr r3, [r2, r3] |
0x000039e4 add r6, pc | r6 = 0x74c8;
0x000039e6 ldr r3, [r3] | r3 = imp.__aeabi_unwind_cpp_pr0;
0x000039e8 str r3, [sp, 0x14] | var_14h = r3;
0x000039ea mov.w r3, 0 | r3 = 0;
| if (r0 != 6) {
0x000039ee beq 0x39f4 |
0x000039f0 bl 0x1b70 | fcn_00001b70 ();
| }
0x000039f4 mov r4, r1 | r4 = r1;
0x000039f6 ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x000039f8 bl 0x1ca0 | r0 = fcn_00001ca0 (r0);
0x000039fc mov r8, r0 | r8 = r0;
0x000039fe ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x00003a00 bl 0x1ca0 | r0 = fcn_00001ca0 (r0);
0x00003a04 mov sb, r0 | sb = r0;
0x00003a06 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x00003a08 bl 0x1ca0 | fcn_00001ca0 (r0);
0x00003a0c movs r1, 0 | r1 = 0;
0x00003a0e mov sl, r0 | sl = r0;
0x00003a10 movs r2, 0xa | r2 = 0xa;
0x00003a12 ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x00003a14 blx 0x1838 | strtoul (r0, r1, r2);
0x00003a16 invalid |
0x00003a1a mov r5, r0 | r5 = r0;
| if (r2 == 0xa) {
0x00003a1c beq 0x3ac8 | goto label_24;
| }
0x00003a1e blx 0x17c0 | r0 = malloc (r0);
0x00003a22 mov r7, r0 | r7 = r0;
0x00003a24 cmp r0, 0 |
| if (r0 == 0) {
0x00003a26 beq 0x3ad0 | goto label_25;
| }
0x00003a28 add r0, sp, 0x10 | r0 += var_10h;
0x00003a2a bl 0x2ccc | fcn_00002ccc (r0);
0x00003a2e str r5, [sp, 0xc] | var_ch_6 = r5;
0x00003a30 mov r2, sl | r2 = sl;
0x00003a32 str r0, [sp] | *(sp) = r0;
0x00003a34 mov r1, sb | r1 = sb;
0x00003a36 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00003a38 mov r0, r8 | r0 = r8;
0x00003a3a ldr r4, [sp, 0x10] | r4 = var_10h;
0x00003a3c str r7, [sp, 8] | var_8h_6 = r7;
0x00003a3e str r4, [sp, 4] | var_4h_10 = r4;
0x00003a40 blx 0x1670 | r0 = keyctl_dh_compute_kdf ();
0x00003a44 subs r2, r0, 0 | r2 = r0 - 0;
| if (r2 < r0) {
0x00003a46 blt 0x3a90 | goto label_26;
| }
0x00003a48 ldr.w sb, [pc, 0x98] |
0x00003a4c mov r4, r2 | r4 = r2;
0x00003a4e ldr r1, [pc, 0x98] |
0x00003a50 mov r5, r7 | r5 = r7;
0x00003a52 add.w sl, r4, 1 | sl = r4 + 1;
0x00003a56 mov.w r8, 0 | r8 = 0;
0x00003a5a add sb, pc | sb = 0x7542;
0x00003a5c movs r0, 1 | r0 = 1;
0x00003a5e add r1, pc | r1 = 0x754c;
0x00003a60 blx 0x18bc | printf_chk ();
| do {
0x00003a64 ldrb r2, [r5] | r2 = *(r5);
0x00003a66 mov r1, sb | r1 = sb;
0x00003a68 movs r0, 1 | r0 = 1;
0x00003a6a blx 0x18bc | printf_chk ();
0x00003a6e sub.w r3, sl, r4 | r3 = sl - r4;
0x00003a72 strb.w r8, [r5] | *(r5) = r8;
0x00003a76 lsls r2, r3, 0x1b | r2 = r3 << 0x1b;
| if (r2 != r3) {
0x00003a78 bne 0x3a98 | goto label_27;
| }
0x00003a7a subs r4, 1 | r4--;
0x00003a7c cmp r4, 0 |
| if (r4 <= 0) {
0x00003a7e ble 0x3ab6 | goto label_28;
| }
0x00003a80 movs r0, 0xa | r0 = 0xa;
| label_1:
0x00003a82 ldr r3, [pc, 0x68] | r3 = *(0x3aee);
0x00003a84 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x00003a86 ldr r1, [r3] | r1 = *(0x3aee);
0x00003a88 blx 0x194c | putc (r0, r1);
| label_0:
0x00003a8c adds r5, 1 | r5++;
0x00003a8e b 0x3a64 |
| } while (1);
| label_26:
0x00003a90 ldr r0, [pc, 0x5c] |
0x00003a92 add r0, pc | r0 = 0x7586;
0x00003a94 bl 0x1e40 | fcn_00001e40 ();
| label_27:
0x00003a98 tst.w r3, 3 |
0x00003a9c add.w r4, r4, -1 | r4 += -1;
0x00003aa0 ite eq |
| if ((r3 & 3) != 0) {
0x00003aa2 moveq r3, 1 | r3 = 1;
| }
| if ((r3 & 3) == 0) {
0x00003aa4 movne r3, 0 | r3 = 0;
| }
0x00003aa6 cmp r4, 0 |
0x00003aa8 lsl.w r3, r3, 5 | r3 <<= 5;
| if (r4 <= 0) {
0x00003aac ble 0x3ab6 | goto label_28;
| }
0x00003aae cmp r3, 0 |
| if (r3 == 0) {
0x00003ab0 beq 0x3a8c | goto label_0;
| }
0x00003ab2 movs r0, 0x20 | r0 = 0x20;
0x00003ab4 b 0x3a82 | goto label_1;
| label_28:
0x00003ab6 movs r0, 0xa | r0 = 0xa;
0x00003ab8 blx 0x18b0 | putchar (r0);
0x00003abc mov r0, r7 | r0 = r7;
0x00003abe blx 0x16c4 | free (r0);
0x00003ac2 movs r0, 0 | r0 = 0;
0x00003ac4 blx 0x1808 | exit (r0);
| label_24:
0x00003ac8 ldr r0, [pc, 0x28] |
0x00003aca add r0, pc | r0 = 0x75c2;
0x00003acc bl 0x1e40 | fcn_00001e40 ();
| label_25:
0x00003ad0 ldr r0, [pc, 0x24] |
0x00003ad2 add r0, pc | r0 = 0x75ce;
0x00003ad4 bl 0x1e40 | fcn_00001e40 ();
0x00003ad8 adds r4, 0xbe | r4 += 0xbe;
0x00003ada movs r0, r0 |
0x00003adc lsls r0, r0, 5 | r0 <<= 5;
0x00003ade movs r0, r0 |
0x00003ae0 adds r4, 0xb8 | r4 += 0xb8;
0x00003ae2 movs r0, r0 |
0x00003ae4 lsrs r2, r3, 0x1a | r2 = r3 >> 0x1a;
0x00003ae6 movs r0, r0 |
0x00003ae8 asrs r2, r5, 5 | r2 = r5 >> 5;
0x00003aea movs r0, r0 |
0x00003aec lsls r0, r2, 5 | r0 = r2 << 5;
0x00003aee movs r0, r0 |
0x00003af0 asrs r6, r3, 4 | r6 = r3 >> 4;
0x00003af2 movs r0, r0 |
0x00003af4 asrs r6, r1, 2 | r6 = r1 >> 2;
0x00003af6 movs r0, r0 |
0x00003af8 asrs r2, r7, 2 | r2 = r7 >> 2;
0x00003afa movs r0, r0 |
0x00003afc ldr r6, [pc, 0xe8] |
0x00003afe cmp r0, 6 |
0x00003b00 push {r7, lr} |
0x00003b02 sub sp, 0x10 |
0x00003b04 add r6, pc | r6 = 0x76f0;
| if (r0 != 6) {
0x00003b06 beq 0x3b0c |
0x00003b08 bl 0x1b70 | fcn_00001b70 ();
| }
0x00003b0c mov r4, r1 | r4 = r1;
0x00003b0e ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x00003b10 bl 0x1ca0 | r0 = fcn_00001ca0 (r0);
0x00003b14 mov r7, r0 | r7 = r0;
0x00003b16 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x00003b18 bl 0x1ca0 | r0 = fcn_00001ca0 (r0);
0x00003b1c mov sb, r0 | sb = r0;
0x00003b1e ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x00003b20 bl 0x1ca0 | fcn_00001ca0 (r0);
0x00003b24 movs r1, 0 | r1 = 0;
0x00003b26 mov sl, r0 | sl = r0;
0x00003b28 movs r2, 0xa | r2 = 0xa;
0x00003b2a ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x00003b2c blx 0x1838 | r0 = strtoul (r0, r1, r2);
0x00003b30 adds r1, r0, 1 | r1 = r0 + 1;
0x00003b32 mov r5, r0 | r5 = r0;
| if (r1 == r0) {
0x00003b34 beq 0x3bd6 | goto label_29;
| }
0x00003b36 blx 0x17c0 | r0 = malloc (r0);
0x00003b3a mov r8, r0 | r8 = r0;
0x00003b3c cmp r0, 0 |
| if (r0 == 0) {
0x00003b3e beq 0x3bde | goto label_30;
| }
0x00003b40 mov r0, r7 | r0 = r7;
0x00003b42 movs r7, 0 | r7 = 0;
0x00003b44 mov r2, sl | r2 = sl;
0x00003b46 str r5, [sp, 0xc] | var_ch_5 = r5;
0x00003b48 mov r1, sb | r1 = sb;
0x00003b4a ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00003b4c str.w r8, [sp, 8] | __asm ("str.w r8, [var_8h_5]");
0x00003b50 strd r7, r7, [sp] | __asm ("strd r7, r7, [sp]");
0x00003b52 strb r0, [r0, 0x1c] | *((r0 + 0x1c)) = r0;
0x00003b54 blx 0x1670 | r0 = keyctl_dh_compute_kdf ();
0x00003b58 subs r2, r0, 0 | r2 = r0 - 0;
| if (r2 < r0) {
0x00003b5a blt 0x3b9e | goto label_31;
| }
0x00003b5c ldr.w sl, [pc, 0x8c] |
0x00003b60 mov r4, r2 | r4 = r2;
0x00003b62 ldr r1, [pc, 0x8c] |
0x00003b64 mov r5, r8 | r5 = r8;
0x00003b66 add.w sb, r4, 1 | sb = r4 + 1;
0x00003b68 lsrs r1, r0, 4 | r1 = r0 >> 4;
0x00003b6a movs r0, 1 | r0 = 1;
0x00003b6c add sl, pc | sl = 0x775c;
0x00003b6e add r1, pc | r1 = 0x7764;
0x00003b70 blx 0x18bc | printf_chk ();
| do {
0x00003b74 ldrb r2, [r5] | r2 = *(r5);
0x00003b76 mov r1, sl | r1 = sl;
0x00003b78 movs r0, 1 | r0 = 1;
0x00003b7a blx 0x18bc | printf_chk ();
0x00003b7e sub.w r3, sb, r4 | r3 = sb - r4;
0x00003b82 strb r7, [r5] | *(r5) = r7;
0x00003b84 lsls r2, r3, 0x1b | r2 = r3 << 0x1b;
| if (r2 != r3) {
0x00003b86 bne 0x3ba6 | goto label_32;
| }
0x00003b88 subs r4, 1 | r4--;
0x00003b8a cmp r4, 0 |
| if (r4 <= 0) {
0x00003b8c ble 0x3bc4 | goto label_33;
| }
0x00003b8e movs r0, 0xa | r0 = 0xa;
| label_3:
0x00003b90 ldr r3, [pc, 0x60] | r3 = *(0x3bf4);
0x00003b92 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x00003b94 ldr r1, [r3] | r1 = *(0x3bf4);
0x00003b96 blx 0x194c | putc (r0, r1);
| label_2:
0x00003b9a adds r5, 1 | r5++;
0x00003b9c b 0x3b74 |
| } while (1);
| label_31:
0x00003b9e ldr r0, [pc, 0x58] |
0x00003ba0 add r0, pc | r0 = 0x779e;
0x00003ba2 bl 0x1e40 | fcn_00001e40 ();
| label_32:
0x00003ba6 tst.w r3, 3 |
0x00003baa add.w r4, r4, -1 | r4 += -1;
0x00003bae ite eq |
| if ((r3 & 3) != 0) {
0x00003bb0 moveq r3, 1 | r3 = 1;
| }
| if ((r3 & 3) == 0) {
0x00003bb2 movne r3, 0 | r3 = 0;
| }
0x00003bb4 cmp r4, 0 |
0x00003bb6 lsl.w r3, r3, 5 | r3 <<= 5;
| if (r4 <= 0) {
0x00003bba ble 0x3bc4 | goto label_33;
| }
0x00003bbc cmp r3, 0 |
| if (r3 == 0) {
0x00003bbe beq 0x3b9a | goto label_2;
| }
0x00003bc0 movs r0, 0x20 | r0 = 0x20;
0x00003bc2 b 0x3b90 | goto label_3;
| label_33:
0x00003bc4 movs r0, 0xa | r0 = 0xa;
0x00003bc6 blx 0x18b0 | putchar (r0);
0x00003bca mov r0, r8 | r0 = r8;
0x00003bcc blx 0x16c4 | free (r0);
0x00003bd0 movs r0, 0 | r0 = 0;
0x00003bd2 blx 0x1808 | exit (r0);
| label_29:
0x00003bd6 ldr r0, [pc, 0x24] |
0x00003bd8 add r0, pc | r0 = 0x77da;
0x00003bda bl 0x1e40 | fcn_00001e40 ();
| label_30:
0x00003bde ldr r0, [pc, 0x20] |
0x00003be0 add r0, pc | r0 = 0x77e6;
0x00003be2 bl 0x1e40 | fcn_00001e40 ();
0x00003be6 nop |
0x00003be8 adds r3, 0x98 | r3 += 0x98;
0x00003bea movs r0, r0 |
0x00003bec lsrs r0, r1, 0x16 | r0 = r1 >> 0x16;
0x00003bee movs r0, r0 |
0x00003bf0 asrs r2, r3, 1 | r2 = r3 >> 1;
0x00003bf2 movs r0, r0 |
0x00003bf4 lsls r0, r2, 5 | r0 = r2 << 5;
0x00003bf6 movs r0, r0 |
0x00003bf8 asrs r0, r2, 0x20 | r0 = r2 >> 0x20;
0x00003bfa movs r0, r0 |
0x00003bfc lsrs r0, r0, 0x1e | r0 >>= 0x1e;
0x00003bfe movs r0, r0 |
0x00003c00 lsrs r4, r5, 0x1e | r4 = r5 >> 0x1e;
0x00003c02 movs r0, r0 |
0x00003c04 ldr r2, [pc, 0xc4] |
0x00003c06 cmp r0, 4 |
0x00003c08 ldr r3, [pc, 0xc4] | r3 = *(0x3cd0);
0x00003c0a push {r7, lr} |
0x00003c0c sub sp, 8 |
0x00003c0e add r2, pc | r2 = 0x78de;
0x00003c10 ldr r6, [pc, 0xc0] |
0x00003c12 ldr r3, [r2, r3] |
0x00003c14 add r6, pc | r6 = 0x78ec;
0x00003c16 ldr r3, [r3] | r3 = imp.__aeabi_unwind_cpp_pr0;
0x00003c18 str r3, [sp, 4] | var_4h_7 = r3;
0x00003c1a mov.w r3, 0 | r3 = 0;
| if (r0 != 4) {
0x00003c1e beq 0x3c24 |
0x00003c20 bl 0x1b70 | fcn_00001b70 ();
| }
0x00003c24 mov r4, r1 | r4 = r1;
0x00003c26 ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x00003c28 bl 0x1ca0 | r0 = fcn_00001ca0 (r0);
0x00003c2c mov r5, r0 | r5 = r0;
0x00003c2e ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x00003c30 bl 0x1ca0 | r0 = fcn_00001ca0 (r0);
0x00003c34 mov r1, r0 | r1 = r0;
0x00003c36 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x00003c38 mov r4, r1 | r4 = r1;
0x00003c3a bl 0x1ca0 | fcn_00001ca0 (r0);
0x00003c3e mov r1, r4 | r1 = r4;
0x00003c40 mov r2, r0 | r2 = r0;
0x00003c42 mov r3, sp | r3 = sp;
0x00003c44 mov r0, r5 | r0 = r5;
0x00003c46 blx 0x1874 | r0 = keyctl_dh_compute_alloc ();
0x00003c4a subs r2, r0, 0 | r2 = r0 - 0;
| if (r2 < r0) {
0x00003c4c blt 0x3cc2 | goto label_34;
| }
0x00003c4e ldr r1, [pc, 0x88] |
0x00003c50 movs r0, 1 | r0 = 1;
0x00003c52 ldr.w sb, [pc, 0x88] |
0x00003c56 mov r4, r2 | r4 = r2;
0x00003c58 add.w r8, r4, 1 | r8 = r4 + 1;
0x00003c5a lsrs r1, r0, 0x20 | r1 = r0 >> 0x20;
0x00003c5c movs r7, 0 | r7 = 0;
0x00003c5e add r1, pc | r1 = 0x793c;
0x00003c60 blx 0x18bc | printf_chk ();
0x00003c64 ldr r5, [sp] | r5 = *(sp);
0x00003c66 add sb, pc | sb = 0x7948;
| do {
0x00003c68 ldrb r2, [r5] | r2 = *(r5);
0x00003c6a mov r1, sb | r1 = sb;
0x00003c6c movs r0, 1 | r0 = 1;
0x00003c6e blx 0x18bc | printf_chk ();
0x00003c72 sub.w r3, r8, r4 | r3 = r8 - r4;
0x00003c76 strb r7, [r5] | *(r5) = r7;
0x00003c78 lsls r2, r3, 0x1b | r2 = r3 << 0x1b;
| if (r2 != r3) {
0x00003c7a bne 0x3c92 | goto label_35;
| }
0x00003c7c subs r4, 1 | r4--;
0x00003c7e cmp r4, 0 |
| if (r4 <= 0) {
0x00003c80 ble 0x3cb0 | goto label_36;
| }
0x00003c82 movs r0, 0xa | r0 = 0xa;
| label_5:
0x00003c84 ldr r3, [pc, 0x58] | r3 = *(0x3ce0);
0x00003c86 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x00003c88 ldr r1, [r3] | r1 = *(0x3ce0);
0x00003c8a blx 0x194c | putc (r0, r1);
| label_4:
0x00003c8e adds r5, 1 | r5++;
0x00003c90 b 0x3c68 |
| } while (1);
| label_35:
0x00003c92 tst.w r3, 3 |
0x00003c96 add.w r4, r4, -1 | r4 += -1;
0x00003c9a ite eq |
| if ((r3 & 3) != 0) {
0x00003c9c moveq r3, 1 | r3 = 1;
| }
| if ((r3 & 3) == 0) {
0x00003c9e movne r3, 0 | r3 = 0;
| }
0x00003ca0 cmp r4, 0 |
0x00003ca2 lsl.w r3, r3, 5 | r3 <<= 5;
| if (r4 <= 0) {
0x00003ca6 ble 0x3cb0 | goto label_36;
| }
0x00003ca8 movs r0, 0x20 | r0 = 0x20;
0x00003caa cmp r3, 0 |
| if (r3 == 0) {
0x00003cac beq 0x3c8e | goto label_4;
| }
0x00003cae b 0x3c84 | goto label_5;
| label_36:
0x00003cb0 movs r0, 0xa | r0 = 0xa;
0x00003cb2 blx 0x18b0 | putchar (r0);
0x00003cb6 ldr r0, [sp] | r0 = *(sp);
0x00003cb8 blx 0x16c4 | free (r0);
0x00003cbc movs r0, 0 | r0 = 0;
0x00003cbe blx 0x1808 | exit (r0);
| label_34:
0x00003cc2 ldr r0, [pc, 0x20] |
0x00003cc4 add r0, pc | r0 = 0x79ae;
0x00003cc6 bl 0x1e40 | fcn_00001e40 ();
0x00003cca nop |
0x00003ccc adds r2, 0x8e | r2 += 0x8e;
0x00003cce movs r0, r0 |
0x00003cd0 lsls r0, r0, 5 | r0 <<= 5;
0x00003cd2 movs r0, r0 |
0x00003cd4 adds r2, 0x88 | r2 += 0x88;
0x00003cd6 movs r0, r0 |
0x00003cd8 lsrs r2, r5, 0x1d | r2 = r5 >> 0x1d;
0x00003cda movs r0, r0 |
0x00003cdc lsrs r6, r1, 0x12 | r6 = r1 >> 0x12;
0x00003cde movs r0, r0 |
0x00003ce0 lsls r0, r2, 5 | r0 = r2 << 5;
0x00003ce2 movs r0, r0 |
0x00003ce4 lsrs r4, r4, 0x1c | r4 >>= 0x1c;
0x00003ce6 movs r0, r0 |
0x00003ce8 cmp r0, 2 |
0x00003cea push {r3, lr} |
| if (r0 != 2) {
0x00003cec beq 0x3cf2 |
0x00003cee bl 0x1b70 | fcn_00001b70 ();
| }
0x00003cf2 ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x00003cf4 bl 0x1ca0 | r0 = fcn_00001ca0 (r0);
0x00003cf8 blx 0x185c | r0 = keyctl_clear ();
0x00003cfc cmp r0, 0 |
| if (r0 >= 0) {
0x00003cfe blt 0x3d06 |
0x00003d00 movs r0, 0 | r0 = 0;
0x00003d02 blx 0x1808 | exit (r0);
| }
0x00003d06 ldr r0, [pc, 8] |
0x00003d08 add r0, pc | r0 = 0x7a1e;
0x00003d0a bl 0x1e40 | fcn_00001e40 ();
0x00003d0e nop |
0x00003d10 lsrs r0, r7, 0x1b | r0 = r7 >> 0x1b;
0x00003d12 movs r0, r0 |
0x00003d14 ldr r2, [pc, 0x6c] |
0x00003d16 cmp r0, 3 |
0x00003d18 ldr r3, [pc, 0x6c] | r3 = *(0x3d88);
0x00003d1a push {r7, lr} |
0x00003d1c sub sp, 8 |
0x00003d1e add r2, pc | r2 = 0x7aa6;
0x00003d20 ldr r5, [pc, 0x68] |
0x00003d22 ldr r3, [r2, r3] |
0x00003d24 add r5, pc | r5 = 0x7ab4;
0x00003d26 ldr r3, [r3] | r3 = imp.__aeabi_unwind_cpp_pr0;
0x00003d28 str r3, [sp, 4] | var_4h_8 = r3;
0x00003d2a mov.w r3, 0 | r3 = 0;
| if (r0 != 3) {
0x00003d2e beq 0x3d34 |
0x00003d30 bl 0x1b70 | fcn_00001b70 ();
| }
0x00003d34 mov r4, r1 | r4 = r1;
0x00003d36 ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x00003d38 bl 0x1ca0 | fcn_00001ca0 (r0);
0x00003d3c mov r1, sp | r1 = sp;
0x00003d3e movs r2, 0 | r2 = 0;
0x00003d40 mov r6, r0 | r6 = r0;
0x00003d42 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x00003d44 blx 0x1838 | strtoul (r0, r1, r2);
0x00003d48 ldr r3, [sp] | r3 = *(sp);
0x00003d4a mov r1, r0 | r1 = r0;
0x00003d4c ldrb r7, [r3] | r7 = *(r3);
| if (r7 == 0) {
0x00003d4e cbnz r7, 0x3d64 |
0x00003d50 mov.w r2, -1 | r2 = -1;
0x00003d54 mov r0, r6 | r0 = r6;
0x00003d56 blx 0x182c | r0 = keyctl_chown ();
0x00003d5a cmp r0, 0 |
| if (r0 < 0) {
0x00003d5c blt 0x3d7c | goto label_37;
| }
0x00003d5e mov r0, r7 | r0 = r7;
0x00003d60 blx 0x1808 | exit (r0);
| }
0x00003d64 ldr r0, [pc, 0x28] |
0x00003d66 movs r1, 1 | r1 = 1;
0x00003d68 ldr r2, [pc, 0x28] |
0x00003d6a ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x00003d6c ldr r0, [r5, r0] | r0 = *((r5 + r0));
0x00003d6e add r2, pc | r2 = 0x7b06;
0x00003d70 ldr r0, [r0] | r0 = *(0x3d90);
0x00003d72 blx 0x18e0 | fprintf_chk ();
0x00003d76 movs r0, 2 | r0 = 2;
0x00003d78 blx 0x1808 | exit (r0);
| label_37:
0x00003d7c ldr r0, [pc, 0x18] |
0x00003d7e add r0, pc | r0 = 0x7b1a;
0x00003d80 bl 0x1e40 | fcn_00001e40 ();
0x00003d84 adds r1, 0x7e | r1 += 0x7e;
0x00003d86 movs r0, r0 |
0x00003d88 lsls r0, r0, 5 | r0 <<= 5;
0x00003d8a movs r0, r0 |
0x00003d8c adds r1, 0x78 | r1 += 0x78;
0x00003d8e movs r0, r0 |
0x00003d90 lsls r4, r0, 5 | r4 = r0 << 5;
0x00003d92 movs r0, r0 |
0x00003d94 lsrs r6, r4, 0x16 | r6 = r4 >> 0x16;
0x00003d96 movs r0, r0 |
0x00003d98 lsrs r2, r2, 0x1a | r2 >>= 0x1a;
0x00003d9a movs r0, r0 |
0x00003d9c ldr r2, [pc, 0x6c] |
0x00003d9e cmp r0, 3 |
0x00003da0 ldr r3, [pc, 0x6c] | r3 = *(0x3e10);
0x00003da2 push {r7, lr} |
0x00003da4 sub sp, 8 |
0x00003da6 add r2, pc | r2 = 0x7bb6;
0x00003da8 ldr r5, [pc, 0x68] |
0x00003daa ldr r3, [r2, r3] |
0x00003dac add r5, pc | r5 = 0x7bc4;
0x00003dae ldr r3, [r3] | r3 = imp.__aeabi_unwind_cpp_pr0;
0x00003db0 str r3, [sp, 4] | var_4h_9 = r3;
0x00003db2 mov.w r3, 0 | r3 = 0;
| if (r0 != 3) {
0x00003db6 beq 0x3dbc |
0x00003db8 bl 0x1b70 | fcn_00001b70 ();
| }
0x00003dbc mov r4, r1 | r4 = r1;
0x00003dbe ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x00003dc0 bl 0x1ca0 | fcn_00001ca0 (r0);
0x00003dc4 movs r2, 0 | r2 = 0;
0x00003dc6 mov r1, sp | r1 = sp;
0x00003dc8 mov r6, r0 | r6 = r0;
0x00003dca ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x00003dcc blx 0x1838 | strtoul (r0, r1, r2);
0x00003dd0 ldr r3, [sp] | r3 = *(sp);
0x00003dd2 mov r2, r0 | r2 = r0;
0x00003dd4 ldrb r7, [r3] | r7 = *(r3);
| if (r7 == 0) {
0x00003dd6 cbnz r7, 0x3dec |
0x00003dd8 mov.w r1, -1 | r1 = -1;
0x00003ddc mov r0, r6 | r0 = r6;
0x00003dde blx 0x182c | r0 = keyctl_chown ();
0x00003de2 cmp r0, 0 |
| if (r0 < 0) {
0x00003de4 blt 0x3e04 | goto label_38;
| }
0x00003de6 mov r0, r7 | r0 = r7;
0x00003de8 blx 0x1808 | exit (r0);
| }
0x00003dec ldr r0, [pc, 0x28] |
0x00003dee movs r1, 1 | r1 = 1;
0x00003df0 ldr r2, [pc, 0x28] |
0x00003df2 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x00003df4 ldr r0, [r5, r0] | r0 = *((r5 + r0));
0x00003df6 add r2, pc | r2 = 0x7c16;
0x00003df8 ldr r0, [r0] | r0 = *(0x3e18);
0x00003dfa blx 0x18e0 | fprintf_chk ();
0x00003dfe movs r0, 2 | r0 = 2;
0x00003e00 blx 0x1808 | exit (r0);
| label_38:
0x00003e04 ldr r0, [pc, 0x18] |
0x00003e06 add r0, pc | r0 = 0x7c2a;
0x00003e08 bl 0x1e40 | fcn_00001e40 ();
0x00003e0c adds r0, 0xf6 | r0 += 0xf6;
0x00003e0e movs r0, r0 |
0x00003e10 lsls r0, r0, 5 | r0 <<= 5;
0x00003e12 movs r0, r0 |
0x00003e14 adds r0, 0xf0 | r0 += 0xf0;
0x00003e16 movs r0, r0 |
0x00003e18 lsls r4, r0, 5 | r4 = r0 << 5;
0x00003e1a movs r0, r0 |
0x00003e1c lsrs r2, r5, 0x18 | r2 = r5 >> 0x18;
0x00003e1e movs r0, r0 |
0x00003e20 lsrs r2, r1, 0x18 | r2 = r1 >> 0x18;
0x00003e22 movs r0, r0 |
0x00003e24 push {r3, lr} |
0x00003e26 ldr r3, [sp, 8] | r3 = var_0h_9;
0x00003e28 ldr r3, [r3] | r3 = *(r3);
0x00003e2a cmp r3, r1 |
0x00003e2c it ne |
| if (r3 == r1) {
0x00003e2e movne r0, 0 | r0 = 0;
| }
| if (r3 != r1) {
0x00003e30 beq 0x3e34 |
0x00003e32 pop {r3, pc} |
| }
0x00003e34 mov r1, r0 | r1 = r0;
0x00003e36 mov r0, r3 | r0 = r3;
0x00003e38 blx 0x1784 | r0 = keyctl_unlink ();
0x00003e3c mvns r0, r0 | r0 = ~r0;
0x00003e3e lsrs r0, r0, 0x1f | r0 >>= 0x1f;
0x00003e40 pop {r3, pc} |
| }
[*] Function sprintf used 1 times keyctl