[*] Binary protection state of custfwcerts.cgi
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function system tear down of custfwcerts.cgi
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/html/axis-cgi/secure_boot/custfwcerts.cgi @ 0x202c */
| #include <stdint.h>
|
; (fcn) fcn.0000202c () | void fcn_0000202c (int16_t arg_10000h, int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h_2;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_40h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0000202c mov r5, r2 | r5 = r2;
0x0000202e ldr r2, [pc, 0x248] |
0x00002030 ldr r3, [pc, 0x248] | r3 = *(0x227c);
0x00002032 mov r6, r1 | r6 = r1;
0x00002034 push {r7, lr} |
0x00002036 sub.w sp, sp, 0x10000 |
0x0000203a add r2, pc | r2 = 0x42b8;
0x0000203c sub sp, 0x40 |
0x0000203e add.w r1, sp, 0x10000 | r1 += arg_10000h;
0x00002042 add r4, sp, 0x40 | r4 += var_40h;
0x00002044 ldr r3, [r2, r3] |
0x00002046 mov r7, r0 | r7 = r0;
0x00002048 sub.w r0, r4, 0xc | r0 = r4 - 0xc;
0x0000204c adds r1, 0x3c | r1 += 0x3c;
0x0000204e ldr r3, [r3] | r3 = *(0x42b8);
0x00002050 str r3, [r1] | *(r1) = r3;
0x00002052 mov.w r3, 0 | r3 = 0;
0x00002056 blx 0x1224 | r0 = pipe ();
0x0000205a cmp r0, 0 |
| if (r0 < 0) {
0x0000205c blt 0x2126 | goto label_6;
| }
0x0000205e mov.w r8, 0 | r8 = 0;
0x00002062 mov r0, r4 | r0 = r4;
0x00002064 str r8, [r0, -0x1c]! | *((r0 -= 0x1c)) = r8;
0x00002066 ldrh r4, [r3, 0x28] | r4 = *((r3 + 0x28));
0x00002068 blx 0x10d4 | r0 = sd_bus_open_system ()
0x0000206c cmp r0, r8 |
| if (r0 < r8) {
0x0000206e blt 0x211a | goto label_7;
| }
0x00002070 ldr r3, [pc, 0x20c] |
0x00002072 mov r1, r4 | r1 = r4;
0x00002074 ldr r2, [pc, 0x20c] |
0x00002076 add r3, pc | r3 = 0x42fa;
0x00002078 str r3, [sp, 4] | var_4h = r3;
0x0000207a add r2, pc | r2 = 0x4302;
0x0000207c ldr r3, [pc, 0x208] |
0x0000207e str r2, [sp] | *(sp) = r2;
0x00002080 str r8, [r1, -0x18]! | *((r1 -= 0x18)) = r8;
0x00002084 ldr r0, [r4, -0x1c] | r0 = *((r4 - 0x1c));
0x00002088 add r3, pc | r3 = 0x4314;
0x0000208a blx 0x11dc | r0 = sd_bus_message_new_method_call ();
0x0000208e cmp r0, 0 |
| if (r0 < 0) {
0x00002090 blt 0x2150 | goto label_8;
| }
0x00002092 ldr r3, [pc, 0x1f8] |
0x00002094 ldr r0, [r4, -0x18] | r0 = *((r4 - 0x18));
0x00002098 ldr ip, [r4, -0xc] | ip = *((r4 - 0xc));
0x0000209c add r3, pc | r3 = 0x432e;
0x0000209e ldr r2, [r3, 0x10] | r2 = *(0x433e);
0x000020a0 cmp r2, 0 |
| if (r2 == 0) {
0x000020a2 beq 0x214a | goto label_9;
| }
| label_1:
0x000020a4 ldr r3, [pc, 0x1e8] |
0x000020a6 add r3, pc | r3 = 0x433a;
0x000020a8 ldr r1, [r3, 0x14] | r1 = *(0x434e);
0x000020aa cmp r1, 0 |
| if (r1 == 0) {
0x000020ac beq 0x2144 | goto label_10;
| }
| label_0:
0x000020ae ldr r3, [pc, 0x1e4] |
0x000020b0 add r3, pc |
0x000020b2 ldr r3, [r3, 0x18] | r3 = *(0x4362);
0x000020b4 cmp r3, 0 |
0x000020b6 beq 0x213e |
| while (1) {
0x000020b8 str r2, [sp, 8] | var_8h = r2;
0x000020ba ldr r2, [pc, 0x1dc] |
0x000020bc str r1, [sp, 0x10] | var_10h = r1;
0x000020be ldr r1, [pc, 0x1dc] |
0x000020c0 add r2, pc | r2 = 0x435e;
0x000020c2 str r3, [sp, 0x18] | var_18h = r3;
0x000020c4 str r2, [sp, 0x14] | var_14h = r2;
0x000020c6 mov r3, ip | r3 = ip;
0x000020c8 ldr r2, [pc, 0x1d4] |
0x000020ca add r1, pc | r1 = 0x436c;
0x000020cc add r2, pc | r2 = 0x4370;
0x000020ce str r2, [sp, 0xc] | var_ch = r2;
0x000020d0 ldr r2, [pc, 0x1d0] |
0x000020d2 add r2, pc | r2 = 0x437a;
0x000020d4 str r2, [sp, 4] | var_4h = r2;
0x000020d6 movs r2, 3 | r2 = 3;
0x000020d8 str r2, [sp] | *(sp) = r2;
0x000020da mov r2, r7 | r2 = r7;
0x000020dc blx 0xff0 | r0 = sd_bus_message_append ();
0x000020e0 cmp r0, 0 |
| if (r0 >= 0) {
0x000020e2 blt 0x2132 |
0x000020e4 adr r3, 0x188 | r3 = 0x188;
0x000020e6 ldrd r2, r3, [r3] | __asm ("ldrd r2, r3, [r3]");
0x000020ea movs r1, 0 | r1 = 0;
0x000020ec str r1, [sp] | *(sp) = r1;
0x000020ee strd r2, r3, [sp, 8] | __asm ("strd r2, r3, [sp, 8]");
0x000020f2 ldr r3, [pc, 0x1b4] |
0x000020f4 ldrd r0, r2, [r4, -0x1c] | __asm ("ldrd r0, r2, [r4, -0x1c]");
0x000020f8 add r3, pc | r3 = 0x43a6;
0x000020fa blx 0x1290 | r0 = sd_bus_call_async ();
0x000020fe cmp r0, 0 |
| if (r0 >= 0) {
0x00002100 blt 0x210e |
0x00002102 ldr r0, [r4, -0x1c] | r0 = *((r4 - 0x1c));
0x00002106 blx 0x105c | r0 = sd_bus_flush ();
0x0000210a cmp r0, 0 |
| if (r0 >= 0) {
0x0000210c bge 0x215c | goto label_11;
| }
| }
0x0000210e ldr r1, [pc, 0x19c] |
0x00002110 mov.w r0, 0x1f4 | r0 = 0x1f4;
0x00002114 add r1, pc | r1 = 0x43c6;
0x00002116 bl 0x1ff8 | fcn_00001ff8 (r0, r1);
| label_7:
0x0000211a ldr r1, [pc, 0x194] |
0x0000211c mov.w r0, 0x1f4 | r0 = 0x1f4;
0x00002120 add r1, pc | r1 = 0x43d6;
0x00002122 bl 0x1ff8 | fcn_00001ff8 (r0, r1);
| label_6:
0x00002126 ldr r1, [pc, 0x18c] |
0x00002128 mov.w r0, 0x1f4 | r0 = 0x1f4;
0x0000212c add r1, pc | r1 = 0x43e6;
0x0000212e bl 0x1ff8 | fcn_00001ff8 (r0, r1);
| }
0x00002132 ldr r1, [pc, 0x184] |
0x00002134 mov.w r0, 0x1f4 | r0 = 0x1f4;
0x00002138 add r1, pc | r1 = 0x43f6;
0x0000213a bl 0x1ff8 | fcn_00001ff8 (r0, r1);
0x0000213e ldr r3, [pc, 0x17c] |
0x00002140 add r3, pc | r3 = 0x4402;
0x00002142 b 0x20b8 |
| }
| label_10:
0x00002144 ldr r1, [pc, 0x178] |
0x00002146 add r1, pc | r1 = 0x440a;
0x00002148 b 0x20ae | goto label_0;
| label_9:
0x0000214a ldr r2, [pc, 0x178] |
0x0000214c add r2, pc | r2 = 0x4416;
0x0000214e b 0x20a4 | goto label_1;
| label_8:
0x00002150 ldr r1, [pc, 0x174] |
0x00002152 mov.w r0, 0x1f4 | r0 = 0x1f4;
0x00002156 add r1, pc | r1 = 0x4422;
0x00002158 bl 0x1ff8 | fcn_00001ff8 (r0, r1);
| label_11:
0x0000215c ldr r0, [r4, -0xc] | r0 = *((r4 - 0xc));
0x00002160 blx 0x1134 | close (r0);
0x00002164 cmp r5, 0 |
| if (r5 != 0) {
0x00002166 bne 0x2238 | goto label_12;
| }
| label_5:
0x00002168 ldr.w sb, [pc, 0x160] | sb = *(0x000022cc);
0x0000216c sub.w r8, r4, 4 | r8 = r4 - 4;
0x00002170 add sb, pc | sb += pc;
| if (r7 == 0) {
| do {
| label_2:
0x00002172 cbz r7, 0x21d6 | goto label_13;
| }
0x00002174 mov.w r3, 0x10000 | r3 = 0x10000;
0x00002178 mov r2, r7 | r2 = r7;
0x0000217a cmp r7, r3 |
0x0000217c mov r1, r8 | r1 = r8;
0x0000217e it hs |
| if (r7 < r3) {
0x00002180 movhs r2, r3 | r2 = r3;
| }
0x00002182 movs r0, 0 | r0 = 0;
0x00002184 blx 0x108c | r0 = read_chk ();
0x00002188 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 >= r0) {
0x0000218a bge 0x21a2 | goto label_14;
| }
0x0000218c blx 0x126c | r0 = errno_location ();
0x00002190 ldr r3, [r0] | r3 = *(r0);
0x00002192 cmp r3, 4 |
0x00002194 beq 0x2172 |
| } while (r3 == 4);
0x00002196 ldr r1, [pc, 0x138] |
0x00002198 mov.w r0, 0x1f4 | r0 = 0x1f4;
0x0000219a strb r2, [r7, 3] | *((r7 + 3)) = r2;
0x0000219c add r1, pc | r1 = 0x4472;
0x0000219e bl 0x1ff8 | fcn_00001ff8 (r0, r1);
| if (r3 == 4) {
| label_14:
0x000021a2 beq 0x2264 | goto label_15;
| }
0x000021a4 ldr.w r3, [sb] | r3 = *(sb);
0x000021a8 movs r6, 0 | r6 = 0;
0x000021aa subs r3, r3, r5 | r3 -= r5;
0x000021ac str.w r3, [sb] | __asm ("str.w r3, [sb]");
| do {
0x000021b0 ldr r0, [r4, -0x8] | r0 = *((r4 - 0x8));
0x000021b4 subs r2, r5, r6 | r2 = r5 - r6;
0x000021b6 add.w r1, r8, r6 | r1 = r8 + r6;
0x000021ba blx 0x1044 | r0 = write (r0, r1, r2);
0x000021be cmp r0, 0 |
| if (r0 < 0) {
0x000021c0 blt 0x21cc | goto label_16;
| }
0x000021c2 add r6, r0 | r6 += r0;
| label_3:
0x000021c4 cmp r5, r6 |
0x000021c6 bgt 0x21b0 |
| } while (r5 > r6);
0x000021c8 subs r7, r7, r5 | r7 -= r5;
0x000021ca b 0x2172 | goto label_2;
| label_16:
0x000021cc blx 0x126c | r0 = errno_location ();
0x000021d0 ldr r3, [r0] | r3 = *(r0);
0x000021d2 cmp r3, 4 |
| if (r3 == 4) {
0x000021d4 beq 0x21c4 | goto label_3;
| }
| label_13:
0x000021d6 ldr r0, [r4, -0x8] | r0 = *((r4 - 0x8));
0x000021da sub.w r6, r4, 0x14 | r6 = r4 - 0x14;
0x000021de blx 0x1134 | close (r0);
0x000021e2 mov r1, r6 | r1 = r6;
0x000021e4 movs r0, 1 | r0 = 1;
0x000021e6 blx 0xf84 | clock_gettime ();
0x000021ea ldr r5, [r4, -0x14] | r5 = *((r4 - 0x14));
0x000021ee movw r7, 0x4240 |
0x000021f2 movt r7, 0xf | r7 = 0xf4240;
0x000021f6 adds r5, 0x5a | r5 += 0x5a;
| do {
| label_4:
0x000021f8 ldr r0, [r4, -0x1c] | r0 = *((r4 - 0x1c));
0x000021fc movs r1, 0 | r1 = 0;
0x000021fe blx 0x1230 | r0 = sd_bus_process ();
0x00002202 cmp r0, 0 |
| if (r0 < 0) {
0x00002204 blt 0x222c | goto label_17;
| }
0x00002206 bne 0x21f8 |
| } while (r0 != 0);
0x00002208 mov r1, r6 | r1 = r6;
0x0000220a movs r0, 1 | r0 = 1;
0x0000220c blx 0xf84 | clock_gettime ();
0x00002210 ldr r2, [r4, -0x14] | r2 = *((r4 - 0x14));
0x00002214 cmp r2, r5 |
| if (r2 >= r5) {
0x00002216 bge 0x2258 | goto label_18;
| }
0x00002218 subs r2, r5, r2 | r2 = r5 - r2;
0x0000221a ldr r0, [r4, -0x1c] | r0 = *((r4 - 0x1c));
0x0000221e mul r2, r7, r2 | r2 = r7 * r2;
0x00002222 asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x00002224 blx 0x1248 | r0 = sd_bus_wait ();
0x00002228 cmp r0, 0 |
| if (r0 >= 0) {
0x0000222a bge 0x21f8 | goto label_4;
| }
| label_17:
0x0000222c ldr r1, [pc, 0xa4] |
0x0000222e mov.w r0, 0x1f4 | r0 = 0x1f4;
0x00002232 add r1, pc | r1 = 0x450a;
0x00002234 bl 0x1ff8 | fcn_00001ff8 (r0, r1);
| label_12:
0x00002238 ldr r0, [r4, -0x8] | r0 = *((r4 - 0x8));
0x0000223c mov r2, r5 | r2 = r5;
0x0000223e mov r1, r6 | r1 = r6;
0x00002240 blx 0x1044 | r0 = write (r0, r1, r2);
0x00002244 cmp r0, r5 |
| if (r0 != r5) {
0x00002246 beq 0x2254 |
0x00002248 ldr r1, [pc, 0x8c] |
0x0000224a mov.w r0, 0x1f4 | r0 = 0x1f4;
0x0000224e add r1, pc | r1 = 0x452a;
0x00002250 bl 0x1ff8 | fcn_00001ff8 (r0, r1);
| }
0x00002254 subs r7, r7, r5 | r7 -= r5;
0x00002256 b 0x2168 | goto label_5;
| label_18:
0x00002258 ldr r1, [pc, 0x80] |
0x0000225a mov.w r0, 0x1f4 | r0 = 0x1f4;
0x0000225e add r1, pc | r1 = 0x453e;
0x00002260 bl 0x1ff8 | fcn_00001ff8 (r0, r1);
| label_15:
0x00002264 ldr r1, [pc, 0x78] |
0x00002266 mov.w r0, 0x190 | r0 = 0x190;
0x0000226a add r1, pc | r1 = 0x454e;
0x0000226c bl 0x1ff8 | fcn_00001ff8 (r0, r1);
| if (r7 < r7) {
0x00002270 bhs 0x2274 |
0x00002272 ldr r1, [r1, 0x34] | r1 = *((r1 + 0x34));
| }
0x00002274 movs r0, r0 |
0x00002276 movs r0, r0 |
0x00002278 cmp r6, 0x7e |
0x0000227a movs r1, r0 | r1 = r0;
0x0000227c lsls r4, r6, 4 | r4 = r6 << 4;
0x0000227e movs r0, r0 |
0x00002280 asrs r2, r4, 1 | r2 = r4 >> 1;
0x00002282 movs r0, r0 |
0x00002284 asrs r2, r0, 1 | r2 = r0 >> 1;
0x00002286 movs r0, r0 |
0x00002288 asrs r0, r3, 0x20 | r0 = r3 >> 0x20;
0x0000228a movs r0, r0 |
0x0000228c cmp r7, 0x6c |
0x0000228e movs r1, r0 | r1 = r0;
0x00002290 cmp r7, 0x62 |
0x00002292 movs r1, r0 | r1 = r0;
0x00002294 cmp r7, 0x58 |
0x00002296 movs r1, r0 | r1 = r0;
0x00002298 asrs r0, r1, 1 | r0 = r1 >> 1;
0x0000229a movs r0, r0 |
0x0000229c asrs r6, r6, 0x20 | r6 >>= 0x20;
0x0000229e movs r0, r0 |
0x000022a0 asrs r4, r1, 1 | r4 = r1 >> 1;
0x000022a2 movs r0, r0 |
0x000022a4 asrs r2, r2, 1 | r2 >>= 1;
0x000022a6 movs r0, r0 |
0x000022a8 lsls r5, r3, 0xe | r5 = r3 << 0xe;
0x000022aa movs r0, r0 |
0x000022ac asrs r4, r1, 1 | r4 = r1 >> 1;
0x000022ae movs r0, r0 |
0x000022b0 lsrs r0, r4, 0x1d | r0 = r4 >> 0x1d;
0x000022b2 movs r0, r0 |
0x000022b4 lsrs r0, r6, 0x1c | r0 = r6 >> 0x1c;
0x000022b6 movs r0, r0 |
0x000022b8 asrs r0, r0, 0x20 | r0 >>= 0x20;
0x000022ba movs r0, r0 |
0x000022bc lsrs r4, r2, 0x1c | r4 = r2 >> 0x1c;
0x000022be movs r0, r0 |
0x000022c0 lsrs r6, r1, 0x1c | r6 = r1 >> 0x1c;
0x000022c2 movs r0, r0 |
0x000022c4 lsrs r0, r1, 0x1c | r0 = r1 >> 0x1c;
0x000022c6 movs r0, r0 |
0x000022c8 lsrs r2, r1, 0x1e | r2 = r1 >> 0x1e;
0x000022ca movs r0, r0 |
0x000022cc cmp r6, 0x98 |
0x000022ce movs r1, r0 | r1 = r0;
0x000022d0 asrs r4, r0, 0x20 | r4 = r0 >> 0x20;
0x000022d2 movs r0, r0 |
0x000022d4 lsrs r2, r6, 0x1e | r2 = r6 >> 0x1e;
0x000022d6 movs r0, r0 |
0x000022d8 lsrs r6, r5, 0x1c | r6 = r5 >> 0x1c;
0x000022da movs r0, r0 |
0x000022dc lsrs r6, r3, 0x1e | r6 = r3 >> 0x1e;
0x000022de movs r0, r0 |
0x000022e0 lsrs r2, r3, 0x1d | r2 = r3 >> 0x1d;
0x000022e2 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/html/axis-cgi/secure_boot/custfwcerts.cgi @ 0x250c */
| #include <stdint.h>
|
; (fcn) fcn.0000250c () | void fcn_0000250c (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_14h;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h_2;
| int16_t var_18h;
| int32_t var_18h_2;
| int16_t var_20h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0000250c mov r5, r2 | r5 = r2;
0x0000250e ldr r2, [pc, 0x11c] |
0x00002510 ldr r3, [pc, 0x11c] | r3 = *(0x2630);
0x00002512 push {r7, lr} |
0x00002514 sub sp, 0x28 |
0x00002516 add r2, pc | r2 = 0x4b48;
0x00002518 ldr r3, [r2, r3] |
0x0000251a ldr r3, [r3] | r3 = *(0x4b48);
0x0000251c str r3, [sp, 0x24] | var_24h = r3;
0x0000251e mov.w r3, 0 | r3 = 0;
| if (r0 == 0) {
0x00002522 cbz r0, 0x254c | goto label_0;
| }
0x00002524 ldr r3, [pc, 0x10c] |
0x00002526 add r3, pc |
0x00002528 ldr r3, [r3, 0x1c] | r3 = *(0x4b7a);
0x0000252a cmp r3, 0 |
| if (r3 != 0) {
0x0000252c bne 0x25e8 | goto label_1;
| }
0x0000252e mov r6, r1 | r6 = r1;
0x00002530 mov r4, r0 | r4 = r0;
0x00002532 blx 0x1188 | r0 = malloc (r0);
0x00002536 mov r7, r0 | r7 = r0;
0x00002538 cmp r5, 0 |
0x0000253a bne 0x260c |
| while (1) {
0x0000253c subs r1, r4, r5 | r1 = r4 - r5;
0x0000253e adds r0, r7, r5 | r0 = r7 + r5;
0x00002540 bl 0x1ee0 | fcn_00001ee0 (r0, r1);
0x00002544 ldr r3, [pc, 0xf0] |
0x00002546 add r3, pc | r3 = 0x4b82;
0x00002548 strd r4, r7, [r3, 0x1c] | __asm ("strd r4, r7, [r3, 0x1c]");
| label_0:
0x0000254c movs r4, 0 | r4 = 0;
0x0000254e add r0, sp, 8 | r0 += var_8h;
0x00002550 str r4, [sp, 8] | var_8h = r4;
0x00002552 blx 0x10d4 | r0 = sd_bus_open_system ()
0x00002556 cmp r0, r4 |
| if (r0 >= r4) {
0x00002558 blt 0x25f4 |
0x0000255a ldr r2, [pc, 0xe0] |
0x0000255c ldr r1, [pc, 0xe0] |
0x0000255e ldr r3, [pc, 0xe4] |
0x00002560 add r2, pc | r2 = 0x4ba2;
0x00002562 ldr r0, [sp, 8] | r0 = var_8h;
0x00002564 add r1, pc | r1 = 0x4ba8;
0x00002566 str r4, [sp, 0xc] | var_ch = r4;
0x00002568 strd r2, r1, [sp] | __asm ("strd r2, r1, [sp]");
0x0000256c add r3, pc | r3 = 0x4bb6;
0x0000256e add r1, sp, 0xc | r1 += var_ch;
0x00002570 blx 0x11dc | r0 = sd_bus_message_new_method_call ();
0x00002574 cmp r0, 0 |
| if (r0 < 0) {
0x00002576 blt 0x2600 | goto label_2;
| }
0x00002578 ldr r2, [pc, 0xcc] |
0x0000257a movs r1, 0x79 | r1 = 0x79;
0x0000257c ldr r0, [sp, 0xc] | r0 = var_ch;
0x0000257e add r2, pc | r2 = 0x4bca;
0x00002580 ldrd r3, r2, [r2, 0x1c] | __asm ("ldrd r3, r2, [r2, 0x1c]");
0x00002584 blx 0x10c8 | r0 = sd_bus_message_append_array ();
0x00002588 cmp r0, 0 |
| if (r0 < 0) {
0x0000258a blt 0x2600 | goto label_2;
| }
0x0000258c add r5, sp, 0x10 | r5 += var_10h;
0x0000258e ldrd r0, r1, [sp, 8] | __asm ("ldrd r0, r1, [var_8h]");
0x00002592 str r5, [sp, 4] | var_4h = r5;
0x00002594 add r5, sp, 0x18 | r5 += var_18h;
0x00002596 movs r2, 0 | r2 = 0;
0x00002598 movs r3, 0 | r3 = 0;
0x0000259a str r5, [sp] | *(sp) = r5;
0x0000259c strd r4, r4, [sp, 0x18] | __asm ("strd r4, r4, [var_18h]");
0x000025a0 str r4, [sp, 0x20] | var_20h = r4;
0x000025a2 str r4, [sp, 0x10] | var_10h = r4;
0x000025a4 blx 0x1020 | r0 = sd_bus_call ();
0x000025a8 cmp r0, 0 |
| if (r0 < 0) {
0x000025aa blt 0x2616 | goto label_3;
| }
0x000025ac ldr r1, [pc, 0x9c] |
0x000025ae add r2, sp, 0x14 | r2 += var_14h_2;
0x000025b0 ldr r0, [sp, 0x10] | r0 = var_10h;
0x000025b2 add r1, pc | r1 = 0x4c02;
0x000025b4 blx 0x111c | r0 = sd_bus_message_read ();
0x000025b8 cmp r0, 0 |
| if (r0 < 0) {
0x000025ba blt 0x261e | goto label_4;
| }
0x000025bc ldr r1, [pc, 0x90] |
0x000025be ldr r0, [pc, 0x94] |
0x000025c0 ldr r2, [sp, 0x14] | r2 = var_14h_2;
0x000025c2 add r1, pc | r1 = 0x4c16;
0x000025c4 add r0, pc | r0 = 0x4c1e;
0x000025c6 blx 0x1200 | r0 = json_pack ();
0x000025ca mov r4, r0 | r4 = r0;
0x000025cc ldr r0, [sp, 0xc] | r0 = var_ch;
0x000025ce blx 0x1080 | sd_bus_message_unref ();
0x000025d2 ldr r0, [sp, 0x10] | r0 = var_10h;
0x000025d4 blx 0x1080 | sd_bus_message_unref ();
0x000025d8 ldr r0, [sp, 8] | r0 = var_8h;
0x000025da blx 0x1110 | sd_bus_unref ();
0x000025de ldr r0, [pc, 0x78] |
0x000025e0 mov r1, r4 | r1 = r4;
0x000025e2 add r0, pc | r0 = 0x4c40;
0x000025e4 bl 0x1f30 | fcn_00001f30 (r0, r1);
| label_1:
0x000025e8 ldr r1, [pc, 0x70] |
0x000025ea mov.w r0, 0x3e8 | r0 = 0x3e8;
0x000025ee add r1, pc | r1 = 0x4c4e;
0x000025f0 bl 0x1ff8 | fcn_00001ff8 (r0, r1);
| }
0x000025f4 ldr r1, [pc, 0x68] |
0x000025f6 movw r0, 0x3eb | r0 = 0x3eb;
0x000025fa add r1, pc | r1 = 0x4c5e;
0x000025fc bl 0x1ff8 | fcn_00001ff8 (r0, r1);
| label_2:
0x00002600 ldr r1, [pc, 0x60] |
0x00002602 movw r0, 0x3eb | r0 = 0x3eb;
0x00002606 add r1, pc | r1 = 0x4c6e;
0x00002608 bl 0x1ff8 | fcn_00001ff8 (r0, r1);
0x0000260c mov r1, r6 | r1 = r6;
0x0000260e mov r2, r5 | r2 = r5;
0x00002610 blx 0x10bc | memcpy (r0, r1, r2);
0x00002614 b 0x253c |
| }
| label_3:
0x00002616 ldrd r0, r1, [sp, 0x18] | __asm ("ldrd r0, r1, [var_18h]");
0x0000261a bl 0x2304 | fcn_00002304 (r0, r1);
| label_4:
0x0000261e ldr r1, [pc, 0x48] |
0x00002620 movw r0, 0x3eb | r0 = 0x3eb;
0x00002624 add r1, pc | r1 = 0x4c92;
0x00002626 bl 0x1ff8 | fcn_00001ff8 (r0, r1);
0x0000262a nop |
0x0000262c cmp r1, 0xa2 |
0x0000262e movs r1, r0 | r1 = r0;
0x00002630 lsls r4, r6, 4 | r4 = r6 << 4;
0x00002632 movs r0, r0 |
0x00002634 cmp r2, 0xe2 |
0x00002636 movs r1, r0 | r1 = r0;
0x00002638 cmp r2, 0xc2 |
0x0000263a movs r1, r0 | r1 = r0;
0x0000263c asrs r4, r1, 1 | r4 = r1 >> 1;
0x0000263e movs r0, r0 |
0x00002640 asrs r0, r6, 1 | r0 = r6 >> 1;
0x00002642 movs r0, r0 |
0x00002644 asrs r0, r3, 0x20 | r0 = r3 >> 0x20;
0x00002646 movs r0, r0 |
0x00002648 cmp r2, 0x8a |
0x0000264a movs r1, r0 | r1 = r0;
0x0000264c asrs r6, r0, 0x1c | r6 = r0 >> 0x1c;
0x0000264e movs r0, r0 |
0x00002650 asrs r2, r1, 1 | r2 = r1 >> 1;
0x00002652 movs r0, r0 |
0x00002654 lsrs r0, r3, 8 | r0 = r3 >> 8;
0x00002656 movs r0, r0 |
0x00002658 lsrs r2, r6, 0x1d | r2 = r6 >> 0x1d;
0x0000265a movs r0, r0 |
0x0000265c lsrs r6, r5, 0x1d | r6 = r5 >> 0x1d;
0x0000265e movs r0, r0 |
0x00002660 lsrs r6, r0, 0xa | r6 = r0 >> 0xa;
0x00002662 movs r0, r0 |
0x00002664 asrs r6, r1, 0x20 | r6 = r1 >> 0x20;
0x00002666 movs r0, r0 |
0x00002668 lsrs r0, r7, 0x1e | r0 = r7 >> 0x1e;
0x0000266a movs r0, r0 |
| }
[*] Function system used 3 times custfwcerts.cgi