[*] Binary protection state of libmbedx509.so.2.2.1
Partial RELRO No Canary found NX disabled DSO No RPATH No RUNPATH Symbols
[*] Function strcat tear down of libmbedx509.so.2.2.1
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedx509.so.2.2.1 @ 0x7e64 */
| #include <stdint.h>
|
; (fcn) sym.mbedtls_x509_crt_parse_der () | void mbedtls_x509_crt_parse_der (uint32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_24h;
| int32_t var_28h;
| int32_t var_1h;
| int32_t var_2ch;
| int32_t var_30h;
| int32_t var_34h;
| int32_t var_38h;
| int32_t var_3ch;
| int32_t var_40h;
| void * s1;
| int32_t var_48h;
| int32_t var_4ch;
| void * var_50h;
| int32_t var_54h;
| int32_t var_58h;
| void * s2;
| int32_t var_60h;
| int32_t var_64h;
| int32_t var_68h;
| int32_t var_6ch;
| int32_t var_70h;
| int32_t var_74h;
| int32_t var_78h;
| int32_t var_7ch;
| r0 = arg1;
| r1 = arg2;
0x00007e64 cmp r0, 0 |
0x00007e68 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00007e6c clz r5, r1 | r5 &= r1;
0x00007e70 lsr r5, r5, 5 | r5 >>= 5;
| if (r0 != 0) {
0x00007e74 moveq r5, 1 | r5 = 1;
| }
0x00007e78 cmp r5, 0 |
0x00007e7c sub sp, sp, 0x7c |
| if (r5 != 0) {
0x00007e80 bne 0x8304 | goto label_16;
| }
0x00007e84 mov r7, r1 | r7 = r1;
0x00007e88 mov r6, r0 | r6 = r0;
0x00007e8c mov sb, r2 | sb = r2;
0x00007e90 mov r4, r0 | r4 = r0;
0x00007e94 b 0x7eac |
| while (r3 != 0) {
0x00007e98 ldr r8, [r4, 0x134] | r8 = *((r4 + 0x134));
0x00007e9c mov r5, r4 | r5 = r4;
0x00007ea0 cmp r8, 0 |
| if (r8 == 0) {
0x00007ea4 beq 0x8000 | goto label_17;
| }
0x00007ea8 mov r4, r8 | r4 = r8;
0x00007eac ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x00007eb0 cmp r3, 0 |
0x00007eb4 bne 0x7e98 |
| }
0x00007eb8 add sl, sp, 0x3c | sl += var_3ch;
0x00007ebc add r2, sp, 0x48 | r2 += var_48h;
0x00007ec0 add r1, sp, 0x54 | r1 += var_54h;
0x00007ec4 str r3, [sp, 0x3c] | var_3ch = r3;
0x00007ec8 str r2, [sp, 0x14] | var_14h = r2;
0x00007ecc str r1, [sp, 0x18] | var_18h = r1;
0x00007ed0 str r3, [sp, 0x48] | var_48h = r3;
0x00007ed4 str r3, [sp, 0x54] | var_54h = r3;
0x00007ed8 str r3, [sl, 4] | var_40h = r3;
0x00007edc str r3, [sl, 8] | s1 = r3;
0x00007ee0 str r3, [sp, 0x4c] | var_4ch = r3;
0x00007ee4 str r3, [sp, 0x50] | var_50h = r3;
0x00007ee8 str r3, [sp, 0x58] | var_58h = r3;
0x00007eec str r3, [sp, 0x5c] | s2 = r3;
| label_0:
0x00007ef0 mov r1, sb | r1 = sb;
0x00007ef4 mov r0, 1 | r0 = 1;
0x00007ef8 str sb, [sp, 0x24] | var_24h = sb;
0x00007efc bl 0x342c | r0 = calloc (r0, r1);
0x00007f00 cmp r0, 0 |
0x00007f04 str r0, [sp, 0x28] | var_28h = r0;
| if (r0 == 0) {
0x00007f08 beq 0x830c | goto label_18;
| }
0x00007f0c mov r1, r7 | r1 = r7;
0x00007f10 mov r2, sb | r2 = sb;
0x00007f14 add fp, r0, sb |
0x00007f18 str r0, [sp, 8] | var_8h = r0;
0x00007f1c bl 0x3318 | memcpy (r0, r1, r2);
0x00007f20 ldr r3, [sp, 8] | r3 = var_8h;
0x00007f24 add r8, sp, 0x24 | r8 += var_24h;
0x00007f28 add r7, sp, 0x28 | r7 += var_28h;
0x00007f2c str r3, [r4, 8] | *((r4 + 8)) = r3;
0x00007f30 str sb, [r4, 4] | *((r4 + 4)) = sb;
0x00007f34 mov r1, fp | r1 = fp;
0x00007f38 mov r2, r8 | r2 = r8;
0x00007f3c mov r0, r7 | r0 = r7;
0x00007f40 mov r3, 0x30 | r3 = 0x30;
0x00007f44 bl 0x32b8 | r0 = mbedtls_asn1_get_tag ();
0x00007f48 cmp r0, 0 |
| if (r0 != 0) {
0x00007f4c bne 0x832c | goto label_19;
| }
0x00007f50 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00007f54 ldr sb, [sp, 0x28] | sb = var_28h;
0x00007f58 mov r2, r3 | r2 = r3;
0x00007f5c str r3, [sp, 0x10] | var_10h = r3;
0x00007f60 sub r3, fp, sb | r3 = fp - sb;
0x00007f64 cmp r3, r2 |
| if (r3 <= r2) {
0x00007f68 blo 0x82dc | goto label_20;
| }
0x00007f6c mov r3, 0x30 | r3 = 0x30;
0x00007f70 str sb, [r4, 0x14] | *((r4 + 0x14)) = sb;
0x00007f74 mov r1, fp | r1 = fp;
0x00007f78 mov r2, r8 | r2 = r8;
0x00007f7c mov r0, r7 | r0 = r7;
0x00007f80 bl 0x32b8 | mbedtls_asn1_get_tag ();
0x00007f84 subs r3, r0, 0 | r3 -= var_28h;
0x00007f88 str r3, [sp, 8] | var_8h = r3;
| if (r3 != var_28h) {
0x00007f8c bne 0x8074 | goto label_21;
| }
0x00007f90 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00007f94 ldr r1, [sp, 0x28] | r1 = var_28h;
0x00007f98 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00007f9c add r1, r1, r2 | r1 += r2;
0x00007fa0 sub r3, r1, r3 | r3 = r1 - r3;
0x00007fa4 add r2, sp, 0x6c | r2 += var_6ch;
0x00007fa8 str r3, [r4, 0x10] | *((r4 + 0x10)) = r3;
0x00007fac mov r0, r7 | r0 = r7;
0x00007fb0 mov r3, 0xa0 | r3 = 0xa0;
0x00007fb4 str r1, [sp, 0xc] | var_ch = r1;
0x00007fb8 str r2, [sp, 0x1c] | var_1ch = r2;
0x00007fbc bl 0x32b8 | mbedtls_asn1_get_tag ();
0x00007fc0 subs fp, r0, 0 |
| if (fp == var_28h) {
0x00007fc4 beq 0x8094 | goto label_22;
| }
0x00007fc8 cmn fp, 0x62 |
| if (fp == 0x62) {
0x00007fcc beq 0x82ec | goto label_23;
| }
| label_2:
0x00007fd0 mov r0, r4 | r0 = r4;
0x00007fd4 bl 0x34bc | fcn_000034bc ();
| do {
| label_1:
0x00007fd8 cmp r5, 0 |
| if (r5 == 0) {
0x00007fdc movne r2, 0 | r2 = 0;
| }
| if (r5 == 0) {
0x00007fe0 strne r2, [r5, 0x134] | *((r5 + 0x134)) = r2;
| }
0x00007fe4 cmp r6, r4 |
| if (r6 != r4) {
0x00007fe8 beq 0x7ff4 |
0x00007fec mov r0, r4 | r0 = r4;
0x00007ff0 bl 0x372c | free (r0);
| }
| label_3:
0x00007ff4 mov r0, fp | r0 = fp;
0x00007ff8 add sp, sp, 0x7c |
0x00007ffc pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_17:
0x00008000 mov r1, 0x138 | r1 = 0x138;
0x00008004 mov r0, 1 | r0 = 1;
0x00008008 bl 0x342c | r0 = calloc (r0, r1);
0x0000800c cmp r0, 0 |
0x00008010 str r0, [r4, 0x134] | *((r4 + 0x134)) = r0;
| if (r0 == 0) {
0x00008014 beq 0x8324 | goto label_24;
| }
0x00008018 bl 0x3648 | fcn_00003648 ();
0x0000801c ldr r2, [r4, 0x134] | r2 = *((r4 + 0x134));
0x00008020 add sl, sp, 0x3c | sl += var_3ch;
0x00008024 cmp r2, 0 |
0x00008028 add r3, sp, 0x48 | r3 += var_48h;
0x0000802c add r1, sp, 0x54 | r1 += var_54h;
0x00008030 str r8, [sp, 0x3c] | var_3ch = r8;
0x00008034 mov r5, r4 | r5 = r4;
0x00008038 str r3, [sp, 0x14] | var_14h = r3;
0x0000803c str r1, [sp, 0x18] | var_18h = r1;
0x00008040 str r8, [sp, 0x48] | var_48h = r8;
0x00008044 str r8, [sp, 0x54] | var_54h = r8;
0x00008048 str r8, [sl, 4] | var_40h = r8;
0x0000804c str r8, [sl, 8] | s1 = r8;
0x00008050 str r8, [sp, 0x4c] | var_4ch = r8;
0x00008054 str r8, [sp, 0x50] | var_50h = r8;
0x00008058 str r8, [sp, 0x58] | var_58h = r8;
0x0000805c str r8, [sp, 0x5c] | s2 = r8;
| if (r2 != 0) {
0x00008060 ldreq fp, [pc, 0x848] | fp = *(0x000088b0);
| }
| if (r2 != 0) {
0x00008064 moveq r4, r2 | r4 = r2;
| }
0x00008068 beq 0x7fd8 |
| } while (r2 == 0);
0x0000806c mov r4, r2 | r4 = r2;
0x00008070 b 0x7ef0 | goto label_0;
| label_21:
0x00008074 mov r0, r4 | r0 = r4;
0x00008078 sub fp, r3, 0x2180 |
0x0000807c bl 0x34bc | fcn_000034bc ();
| label_5:
0x00008080 cmp fp, 0 |
| if (fp != 0) {
0x00008084 bne 0x7fd8 | goto label_1;
| }
0x00008088 mov r0, fp | r0 = fp;
0x0000808c add sp, sp, 0x7c |
0x00008090 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_22:
0x00008094 ldr fp, [sp, 0x28] | fp = var_28h;
0x00008098 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x0000809c add r2, r4, 0x18 | r2 = r4 + 0x18;
0x000080a0 add fp, fp, r3 |
0x000080a4 mov r1, fp | r1 = fp;
0x000080a8 mov r0, r7 | r0 = r7;
0x000080ac bl 0x3300 | r0 = mbedtls_asn1_get_int ();
0x000080b0 cmp r0, 0 |
| if (r0 != 0) {
0x000080b4 bne 0x82f8 | goto label_25;
| }
0x000080b8 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000080bc cmp fp, r3 |
| if (fp != r3) {
0x000080c0 bne 0x833c | goto label_26;
| }
| label_4:
0x000080c4 add r2, r4, 0x1c | r2 = r4 + 0x1c;
0x000080c8 ldr r1, [sp, 0xc] | r1 = var_ch;
0x000080cc mov r0, r7 | r0 = r7;
0x000080d0 bl 0x330c | fcn_0000330c ();
0x000080d4 subs fp, r0, 0 |
| if (fp != var_28h) {
0x000080d8 bne 0x7fd0 | goto label_2;
| }
0x000080dc add r3, r4, 0x28 | r3 = r4 + 0x28;
0x000080e0 str r3, [sp, 8] | var_8h = r3;
0x000080e4 mov r2, r3 | r2 = r3;
0x000080e8 ldr r1, [sp, 0xc] | r1 = var_ch;
0x000080ec mov r3, sl | r3 = sl;
0x000080f0 mov r0, r7 | r0 = r7;
0x000080f4 bl 0x3678 | fcn_00003678 ();
0x000080f8 subs fp, r0, 0 |
| if (fp != var_28h) {
0x000080fc bne 0x7fd0 | goto label_2;
| }
0x00008100 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x00008104 add r3, r3, 1 | r3++;
0x00008108 cmp r3, 3 |
0x0000810c str r3, [r4, 0x18] | *((r4 + 0x18)) = r3;
| if (r3 > 3) {
0x00008110 bgt 0x83a4 | goto label_27;
| }
0x00008114 add r3, r4, 0x130 | r3 = r4 + 0x130;
0x00008118 str r3, [sp] | *(sp) = r3;
0x0000811c mov r1, sl | r1 = sl;
0x00008120 ldr r0, [sp, 8] | r0 = var_8h;
0x00008124 add r3, r4, 0x12c | r3 = r4 + 0x12c;
0x00008128 add r2, r4, 0x128 | r2 = r4 + 0x128;
0x0000812c bl 0x3690 | r0 = fcn_00003690 ();
0x00008130 subs fp, r0, 0 |
| if (fp != r0) {
0x00008134 bne 0x7fd0 | goto label_2;
| }
0x00008138 ldr r2, [sp, 0x28] | r2 = var_28h;
0x0000813c mov r3, 0x30 | r3 = 0x30;
0x00008140 str r2, [r4, 0x3c] | *((r4 + 0x3c)) = r2;
0x00008144 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00008148 mov r2, r8 | r2 = r8;
0x0000814c mov r0, r7 | r0 = r7;
0x00008150 bl 0x32b8 | mbedtls_asn1_get_tag ();
0x00008154 subs fp, r0, 0 |
| if (fp != var_28h) {
0x00008158 bne 0x8314 | goto label_28;
| }
0x0000815c ldr r1, [sp, 0x28] | r1 = var_28h;
0x00008160 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00008164 add r2, r4, 0x4c | r2 = r4 + 0x4c;
0x00008168 add r1, r1, r3 | r1 += r3;
0x0000816c mov r0, r7 | r0 = r7;
0x00008170 bl 0x35d0 | fcn_000035d0 ();
0x00008174 subs fp, r0, 0 |
| if (fp != var_28h) {
0x00008178 bne 0x7fd0 | goto label_2;
| }
0x0000817c ldr r1, [r4, 0x3c] | r1 = *((r4 + 0x3c));
0x00008180 ldr r2, [sp, 0x28] | r2 = var_28h;
0x00008184 mov r3, 0x30 | r3 = 0x30;
0x00008188 sub r2, r2, r1 | r2 -= r1;
0x0000818c str r2, [r4, 0x38] | *((r4 + 0x38)) = r2;
0x00008190 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00008194 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00008198 mov r0, r7 | r0 = r7;
0x0000819c bl 0x32b8 | r0 = mbedtls_asn1_get_tag ();
0x000081a0 cmp r0, 0 |
| if (r0 == 0) {
0x000081a4 beq 0x834c | goto label_29;
| }
0x000081a8 subs fp, r0, 0x2400 |
| if (fp != r0) {
0x000081ac bne 0x7fd0 | goto label_2;
| }
0x000081b0 ldr r3, [sp, 0x28] | r3 = var_28h;
| label_6:
0x000081b4 str r3, [r4, 0x48] | *((r4 + 0x48)) = r3;
0x000081b8 mov r2, r8 | r2 = r8;
0x000081bc mov r3, 0x30 | r3 = 0x30;
0x000081c0 ldr r1, [sp, 0xc] | r1 = var_ch;
0x000081c4 mov r0, r7 | r0 = r7;
0x000081c8 bl 0x32b8 | mbedtls_asn1_get_tag ();
0x000081cc subs fp, r0, 0 |
| if (fp != var_28h) {
0x000081d0 bne 0x8314 | goto label_28;
| }
0x000081d4 ldr r1, [sp, 0x24] | r1 = var_24h;
0x000081d8 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000081dc cmp r1, 0 |
| if (r1 == 0) {
0x000081e0 beq 0x8200 | goto label_30;
| }
0x000081e4 add r1, r3, r1 | r1 = r3 + r1;
0x000081e8 add r2, r4, 0x6c | r2 = r4 + 0x6c;
0x000081ec mov r0, r7 | r0 = r7;
0x000081f0 bl 0x35d0 | fcn_000035d0 ();
0x000081f4 subs fp, r0, 0 |
| if (fp != var_28h) {
0x000081f8 bne 0x7fd0 | goto label_2;
| }
0x000081fc ldr r3, [sp, 0x28] | r3 = var_28h;
| label_30:
0x00008200 ldr r1, [r4, 0x48] | r1 = *((r4 + 0x48));
0x00008204 add r2, r4, 0xbc | r2 = r4 + 0xbc;
0x00008208 sub r3, r3, r1 | r3 -= r1;
0x0000820c str r3, [r4, 0x44] | *((r4 + 0x44)) = r3;
0x00008210 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00008214 mov r0, r7 | r0 = r7;
0x00008218 bl 0x3570 | mbedtls_pk_parse_subpubkey ();
0x0000821c subs fp, r0, 0 |
| if (fp != var_28h) {
0x00008220 bne 0x7fd0 | goto label_2;
| }
0x00008224 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x00008228 sub r3, r3, 2 | r3 -= 2;
0x0000822c cmp r3, 1 |
| if (r3 < 1) {
0x00008230 bls 0x83b4 | goto label_31;
| }
| label_7:
0x00008234 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00008238 ldr r2, [sp, 0xc] | r2 = var_ch;
0x0000823c cmp r2, r3 |
| if (r2 != r3) {
0x00008240 bne 0x82dc | goto label_20;
| }
| label_8:
0x00008244 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00008248 ldr r2, [sp, 0x18] | r2 = var_18h;
0x0000824c add sb, sb, r3 | sb += r3;
0x00008250 mov r1, sb | r1 = sb;
0x00008254 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00008258 mov r0, r7 | r0 = r7;
0x0000825c bl 0x3678 | fcn_00003678 ();
0x00008260 subs fp, r0, 0 |
| if (fp != var_28h) {
0x00008264 bne 0x7fd0 | goto label_2;
| }
0x00008268 ldr r2, [r4, 0x2c] | r2 = *((r4 + 0x2c));
0x0000826c ldr r3, [sp, 0x58] | r3 = var_58h;
0x00008270 cmp r2, r3 |
| if (r2 != r3) {
0x00008274 bne 0x8434 | goto label_32;
| }
0x00008278 ldr r1, [sp, 0x5c] | r1 = s2;
0x0000827c ldr r0, [r4, 0x30] | r0 = *((r4 + 0x30));
0x00008280 bl 0x3528 | r0 = memcmp (r0, r1, r2);
0x00008284 cmp r0, 0 |
| if (r0 != 0) {
0x00008288 bne 0x8434 | goto label_32;
| }
0x0000828c ldr r2, [sp, 0x40] | r2 = var_40h;
0x00008290 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00008294 cmp r2, r3 |
| if (r2 != r3) {
0x00008298 bne 0x8434 | goto label_32;
| }
0x0000829c cmp r2, 0 |
| if (r2 != 0) {
0x000082a0 beq 0x82b8 |
0x000082a4 ldr r1, [sp, 0x50] | r1 = var_50h;
0x000082a8 ldr r0, [sp, 0x44] | r0 = s1;
0x000082ac bl 0x3528 | r0 = memcmp (r0, r1, r2);
0x000082b0 cmp r0, 0 |
| if (r0 != 0) {
0x000082b4 bne 0x8434 | goto label_32;
| }
| }
0x000082b8 mov r0, r7 | r0 = r7;
0x000082bc add r2, r4, 0x11c | r2 = r4 + 0x11c;
0x000082c0 mov r1, sb | r1 = sb;
0x000082c4 bl 0x36fc | fcn_000036fc ();
0x000082c8 subs fp, r0, 0 |
| if (fp != var_28h) {
0x000082cc bne 0x7fd0 | goto label_2;
| }
0x000082d0 ldr r2, [sp, 0x28] | r2 = var_28h;
0x000082d4 cmp sb, r2 |
| if (sb == r2) {
0x000082d8 beq 0x7ff4 | goto label_3;
| }
| label_20:
0x000082dc mov r0, r4 | r0 = r4;
0x000082e0 bl 0x34bc | fcn_000034bc ();
0x000082e4 ldr fp, [pc, 0x5c8] | fp = *(0x000088b4);
0x000082e8 b 0x7fd8 | goto label_1;
| label_23:
0x000082ec ldr r3, [sp, 8] | r3 = var_8h;
0x000082f0 str r3, [r4, 0x18] | *((r4 + 0x18)) = r3;
0x000082f4 b 0x80c4 | goto label_4;
| label_25:
0x000082f8 subs fp, r0, 0x2200 |
| if (fp == r0) {
0x000082fc beq 0x80c4 | goto label_4;
| }
0x00008300 b 0x7fd0 | goto label_2;
| label_16:
0x00008304 ldr fp, [pc, 0x5a4] | fp = *(0x000088b0);
0x00008308 b 0x7ff4 | goto label_3;
| label_18:
0x0000830c ldr fp, [pc, 0x5a4] | fp = *(0x000088b8);
0x00008310 b 0x7fd8 | goto label_1;
| label_28:
0x00008314 mov r0, r4 | r0 = r4;
0x00008318 sub fp, fp, 0x2180 |
0x0000831c bl 0x34bc | fcn_000034bc ();
0x00008320 b 0x8080 | goto label_5;
| label_24:
0x00008324 ldr fp, [pc, 0x58c] | fp = *(0x000088b8);
0x00008328 b 0x7ff4 | goto label_3;
| label_19:
0x0000832c mov r0, r4 | r0 = r4;
0x00008330 bl 0x34bc | fcn_000034bc ();
0x00008334 ldr fp, [pc, 0x580] | fp = *(0x000088bc);
0x00008338 b 0x7fd8 | goto label_1;
| label_26:
0x0000833c mov r0, r4 | r0 = r4;
0x00008340 bl 0x34bc | fcn_000034bc ();
0x00008344 ldr fp, [pc, 0x574] | fp = *(0x000088c0);
0x00008348 b 0x7fd8 | goto label_1;
| label_29:
0x0000834c ldr sl, [sp, 0x28] | sl = var_28h;
0x00008350 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x00008354 add r2, r4, 0x8c | r2 = r4 + 0x8c;
0x00008358 add sl, sl, r3 | sl += r3;
0x0000835c mov r1, sl | r1 = sl;
0x00008360 mov r0, r7 | r0 = r7;
0x00008364 bl 0x336c | fcn_0000336c ();
0x00008368 subs fp, r0, 0 |
| if (fp != var_28h) {
0x0000836c bne 0x7fd0 | goto label_2;
| }
0x00008370 add r2, r4, 0xa4 | r2 = r4 + 0xa4;
0x00008374 mov r1, sl | r1 = sl;
0x00008378 mov r0, r7 | r0 = r7;
0x0000837c bl 0x336c | fcn_0000336c ();
0x00008380 subs fp, r0, 0 |
| if (fp != var_28h) {
0x00008384 bne 0x7fd0 | goto label_2;
| }
0x00008388 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0000838c cmp sl, r3 |
| if (sl == r3) {
0x00008390 beq 0x81b4 | goto label_6;
| }
0x00008394 mov r0, r4 | r0 = r4;
0x00008398 bl 0x34bc | fcn_000034bc ();
0x0000839c ldr fp, [pc, 0x520] | fp = *(0x000088c4);
0x000083a0 b 0x7fd8 | goto label_1;
| label_27:
0x000083a4 mov r0, r4 | r0 = r4;
0x000083a8 bl 0x34bc | fcn_000034bc ();
0x000083ac ldr fp, [pc, 0x514] | fp = *(0x000088c8);
0x000083b0 b 0x7fd8 | goto label_1;
| label_31:
0x000083b4 mov r3, 1 | r3 = 1;
0x000083b8 add r2, r4, 0xc4 | r2 = r4 + 0xc4;
0x000083bc ldr r1, [sp, 0xc] | r1 = var_ch;
0x000083c0 mov r0, r7 | r0 = r7;
0x000083c4 bl 0x3738 | entry0 (r0, r1);
0x000083c8 subs fp, r0, 0 |
| if (fp != var_28h) {
0x000083cc bne 0x7fd0 | goto label_2;
| }
0x000083d0 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x000083d4 sub r3, r3, 2 | r3 -= 2;
0x000083d8 cmp r3, 1 |
| if (r3 > 1) {
0x000083dc bhi 0x8234 | goto label_7;
| }
0x000083e0 mov r3, 2 | r3 = 2;
0x000083e4 add r2, r4, 0xd0 | r2 = r4 + 0xd0;
0x000083e8 ldr r1, [sp, 0xc] | r1 = var_ch;
0x000083ec mov r0, r7 | r0 = r7;
0x000083f0 bl 0x3738 | entry0 (r0, r1);
0x000083f4 subs fp, r0, 0 |
| if (fp != var_28h) {
0x000083f8 bne 0x7fd0 | goto label_2;
| }
0x000083fc ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x00008400 cmp r3, 3 |
| if (r3 != 3) {
0x00008404 bne 0x8234 | goto label_7;
| }
0x00008408 add r2, r4, 0xdc | r2 = r4 + 0xdc;
0x0000840c ldr r1, [sp, 0xc] | r1 = var_ch;
0x00008410 mov r0, r7 | r0 = r7;
0x00008414 bl 0x35c4 | fcn_000035c4 ();
0x00008418 subs fp, r0, 0 |
| if (fp != var_28h) {
0x0000841c streq fp, [sp, 8] | var_8h = fp;
| }
| if (fp != var_28h) {
0x00008420 ldreq r3, [sp, 0x28] | r3 = var_28h;
| }
| if (fp == var_28h) {
0x00008424 beq 0x8504 | goto label_9;
| }
0x00008428 cmn fp, 0x62 |
| if (fp != 0x62) {
0x0000842c bne 0x7fd0 | goto label_2;
| }
0x00008430 b 0x8234 | goto label_7;
| label_32:
0x00008434 mov r0, r4 | r0 = r4;
0x00008438 bl 0x34bc | fcn_000034bc ();
0x0000843c ldr fp, [pc, 0x488] | fp = *(0x000088cc);
0x00008440 b 0x7fd8 | goto label_1;
| label_10:
0x00008444 ldr r3, [sp, 8] | r3 = var_8h;
0x00008448 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0000844c str r3, [r4, 0xfc] | *((r4 + 0xfc)) = r3;
0x00008450 str r3, [r4, 0x100] | *((r4 + 0x100)) = r3;
0x00008454 mov r1, r8 | r1 = r8;
0x00008458 mov r3, 0x30 | r3 = 0x30;
0x0000845c mov r0, r7 | r0 = r7;
0x00008460 bl 0x32b8 | mbedtls_asn1_get_tag ();
0x00008464 add fp, r4, 0xfc |
0x00008468 add sl, r4, 0x100 | sl = r4 + 0x100;
0x0000846c cmp r0, 0 |
| if (r0 != 0) {
0x00008470 bne 0x8760 | goto label_33;
| }
0x00008474 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00008478 cmp r8, r3 |
| if (r8 != r3) {
0x0000847c beq 0x8504 |
0x00008480 mov r2, fp | r2 = fp;
0x00008484 mov r1, r8 | r1 = r8;
0x00008488 mov r0, r7 | r0 = r7;
0x0000848c bl 0x324c | r0 = mbedtls_asn1_get_bool ();
0x00008490 cmp r0, 0 |
| if (r0 != 0) {
0x00008494 beq 0x84c8 |
0x00008498 cmn r0, 0x62 |
| if (r0 != 0x62) {
0x0000849c bne 0x8760 | goto label_33;
| }
0x000084a0 mov r2, fp | r2 = fp;
0x000084a4 mov r1, r8 | r1 = r8;
0x000084a8 mov r0, r7 | r0 = r7;
0x000084ac bl 0x3300 | r0 = mbedtls_asn1_get_int ();
0x000084b0 cmp r0, 0 |
| if (r0 != 0) {
0x000084b4 bne 0x8760 | goto label_33;
| }
0x000084b8 ldr r3, [r4, 0xfc] | r3 = *((r4 + 0xfc));
0x000084bc cmp r3, 0 |
| if (r3 == 0) {
0x000084c0 movne r3, 1 | r3 = 1;
| }
| if (r3 != 0) {
0x000084c4 strne r3, [r4, 0xfc] | *((r4 + 0xfc)) = r3;
| goto label_34;
| }
| }
| label_34:
0x000084c8 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000084cc cmp r8, r3 |
| if (r8 == r3) {
0x000084d0 beq 0x8504 | goto label_9;
| }
0x000084d4 mov r2, sl | r2 = sl;
0x000084d8 mov r1, r8 | r1 = r8;
0x000084dc mov r0, r7 | r0 = r7;
0x000084e0 bl 0x3300 | r0 = mbedtls_asn1_get_int ();
0x000084e4 cmp r0, 0 |
| if (r0 != 0) {
0x000084e8 bne 0x8760 | goto label_33;
| }
0x000084ec ldr r3, [sp, 0x28] | r3 = var_28h;
0x000084f0 cmp r8, r3 |
| if (r8 != r3) {
0x000084f4 bne 0x86fc | goto label_35;
| }
0x000084f8 ldr r2, [r4, 0x100] | r2 = *((r4 + 0x100));
0x000084fc add r2, r2, 1 | r2++;
0x00008500 str r2, [r4, 0x100] | *((r4 + 0x100)) = r2;
| }
| label_9:
0x00008504 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00008508 cmp r2, r3 |
| if (r2 < r3) {
0x0000850c bls 0x8614 | goto label_36;
| }
0x00008510 ldr ip, [sp, 8] | ip = var_8h;
0x00008514 add fp, sp, 0x2c |
0x00008518 mov r2, fp | r2 = fp;
0x0000851c mov r3, 0x30 | r3 = 0x30;
0x00008520 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00008524 mov r0, r7 | r0 = r7;
0x00008528 str ip, [sp, 0x60] | var_60h = ip;
0x0000852c str ip, [sp, 0x64] | var_64h = ip;
0x00008530 str ip, [sp, 0x68] | var_68h = ip;
0x00008534 str ip, [sp, 0x30] | var_30h = ip;
0x00008538 str ip, [sp, 0x34] | var_34h = ip;
0x0000853c bl 0x32b8 | r0 = mbedtls_asn1_get_tag ();
0x00008540 cmp r0, 0 |
| if (r0 != 0) {
0x00008544 bne 0x88a0 | goto label_37;
| }
0x00008548 ldr r8, [sp, 0x28] | r8 = var_28h;
0x0000854c ldr ip, [sp, 0x2c] | ip = var_2ch;
0x00008550 ldrb r0, [r8] | r0 = *(r8);
0x00008554 add sl, sp, 0x78 | sl += var_78h;
0x00008558 str r0, [sl, -0x18]! | *((sl -= 0x18)) = r0;
0x0000855c mov r3, 6 | r3 = 6;
0x00008560 add r2, sp, 0x64 | r2 += var_64h;
0x00008564 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00008568 mov r0, r7 | r0 = r7;
0x0000856c add r8, r8, ip | r8 += ip;
0x00008570 bl 0x32b8 | r0 = mbedtls_asn1_get_tag ();
0x00008574 cmp r0, 0 |
| if (r0 != 0) {
0x00008578 bne 0x88a0 | goto label_37;
| }
0x0000857c ldr r3, [sp, 0x28] | r3 = var_28h;
0x00008580 ldr r2, [sp, 0x64] | r2 = var_64h;
0x00008584 str r3, [sp, 0x68] | var_68h = r3;
0x00008588 add r3, r3, r2 | r3 += r2;
0x0000858c ldr r2, [sp, 0xc] | r2 = var_ch;
0x00008590 str r3, [sp, 0x28] | var_28h = r3;
0x00008594 sub r2, r2, r3 | r2 -= r3;
0x00008598 cmp r2, 0 |
| if (r2 <= 0) {
0x0000859c ble 0x8898 | goto label_38;
| }
0x000085a0 add r2, sp, 0x30 | r2 += var_30h;
0x000085a4 mov r1, r8 | r1 = r8;
0x000085a8 mov r0, r7 | r0 = r7;
0x000085ac bl 0x324c | r0 = mbedtls_asn1_get_bool ();
0x000085b0 cmp r0, 0 |
0x000085b4 cmnne r0, 0x62 | __asm ("cmnne r0, 0x62");
| if (r0 != 0) {
0x000085b8 bne 0x88a0 | goto label_37;
| }
0x000085bc mov r2, fp | r2 = fp;
0x000085c0 mov r3, 4 | r3 = 4;
0x000085c4 mov r1, r8 | r1 = r8;
0x000085c8 mov r0, r7 | r0 = r7;
0x000085cc bl 0x32b8 | r0 = mbedtls_asn1_get_tag ();
0x000085d0 cmp r0, 0 |
| if (r0 != 0) {
0x000085d4 bne 0x88a0 | goto label_37;
| }
0x000085d8 ldrd r2, r3, [sp, 0x28] | __asm ("ldrd r2, r3, [var_28h]");
0x000085dc add r3, r3, r2 | r3 += r2;
0x000085e0 cmp r8, r3 |
| if (r8 != r3) {
0x000085e4 bne 0x86fc | goto label_35;
| }
0x000085e8 mov r0, sl | r0 = sl;
0x000085ec add r1, sp, 0x34 | r1 += var_34h;
0x000085f0 bl 0x3420 | r0 = mbedtls_oid_get_x509_ext_type ();
0x000085f4 cmp r0, 0 |
| if (r0 == 0) {
0x000085f8 beq 0x8630 | goto label_39;
| }
0x000085fc ldr r3, [sp, 0x30] | r3 = var_30h;
0x00008600 str r8, [sp, 0x28] | var_28h = r8;
0x00008604 cmp r3, 0 |
| if (r3 == 0) {
0x00008608 beq 0x8628 | goto label_40;
| }
| label_11:
0x0000860c ldr fp, [pc, 0x2bc] | fp = *(0x000088d0);
0x00008610 b 0x7fd0 | goto label_2;
| if (r3 == 0) {
| label_36:
0x00008614 beq 0x8244 | goto label_8;
| }
0x00008618 mov r0, r4 | r0 = r4;
0x0000861c bl 0x34bc | fcn_000034bc ();
0x00008620 ldr fp, [pc, 0x2ac] | fp = *(0x000088d4);
0x00008624 b 0x7fd8 | goto label_1;
| label_40:
0x00008628 mov r3, r8 | r3 = r8;
0x0000862c b 0x8504 | goto label_9;
| label_39:
0x00008630 ldr r2, [r4, 0xf8] | r2 = *((r4 + 0xf8));
0x00008634 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00008638 tst r2, r3 |
| if ((r2 & r3) != 0) {
0x0000863c bne 0x8890 | goto label_41;
| }
0x00008640 orr r2, r2, r3 | r2 |= r3;
0x00008644 cmp r3, 0x100 |
0x00008648 str r2, [r4, 0xf8] | *((r4 + 0xf8)) = r2;
| if (r3 == 0x100) {
0x0000864c beq 0x8444 | goto label_10;
| }
| if (r3 > 0x100) {
0x00008650 bgt 0x87f0 | goto label_42;
| }
0x00008654 cmp r3, 4 |
| if (r3 == 4) {
0x00008658 beq 0x877c | goto label_43;
| }
0x0000865c cmp r3, 0x20 |
| if (r3 != 0x20) {
0x00008660 bne 0x8774 | goto label_14;
| }
0x00008664 mov r3, 0x30 | r3 = 0x30;
0x00008668 add r2, sp, 0x38 | r2 += var_38h;
0x0000866c mov r1, r8 | r1 = r8;
0x00008670 mov r0, r7 | r0 = r7;
0x00008674 bl 0x32b8 | mbedtls_asn1_get_tag ();
0x00008678 add sl, r4, 0xe8 | sl = r4 + 0xe8;
0x0000867c cmp r0, 0 |
| if (r0 != 0) {
0x00008680 bne 0x8760 | goto label_33;
| }
0x00008684 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00008688 ldr r2, [sp, 0x38] | r2 = var_38h;
0x0000868c add r2, r3, r2 | r2 = r3 + r2;
0x00008690 cmp r8, r2 |
| if (r8 != r2) {
0x00008694 bne 0x86fc | goto label_35;
| }
| label_12:
0x00008698 cmp r8, r3 |
| if (r8 < r3) {
0x0000869c bls 0x86f0 | goto label_44;
| }
0x000086a0 sub r2, r8, r3 | r2 = r8 - r3;
0x000086a4 cmp r2, 0 |
| if (r2 <= 0) {
0x000086a8 ble 0x8898 | goto label_38;
| }
0x000086ac ldrb fp, [r3], 1 | fp = *(r3);
| r3++;
0x000086b0 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x000086b4 mov r1, r8 | r1 = r8;
0x000086b8 mov r0, r7 | r0 = r7;
0x000086bc str r3, [sp, 0x28] | var_28h = r3;
0x000086c0 bl 0x321c | r0 = mbedtls_asn1_get_len ();
0x000086c4 cmp r0, 0 |
| if (r0 != 0) {
0x000086c8 bne 0x8760 | goto label_33;
| }
0x000086cc tst fp, 0x80 |
| if ((fp & 0x80) == 0) {
0x000086d0 beq 0x860c | goto label_11;
| }
0x000086d4 cmp fp, 0x82 |
| if (fp == 0x82) {
0x000086d8 beq 0x8704 | goto label_45;
| }
0x000086dc ldr r3, [sp, 0x28] | r3 = var_28h;
0x000086e0 ldr r2, [sp, 0x6c] | r2 = var_6ch;
0x000086e4 add r3, r3, r2 | r3 += r2;
0x000086e8 str r3, [sp, 0x28] | var_28h = r3;
0x000086ec b 0x8698 | goto label_12;
| label_44:
0x000086f0 ldr r2, [sp, 8] | r2 = var_8h;
0x000086f4 str r2, [sl, 0xc] | *((sl + 0xc)) = r2;
| if (fp == 0x82) {
0x000086f8 beq 0x8504 | goto label_9;
| }
| label_35:
0x000086fc ldr fp, [pc, 0x1d0] | fp = *(0x000088d4);
0x00008700 b 0x7fd0 | goto label_2;
| label_45:
0x00008704 ldr r3, [sl, 8] | r3 = *((sl + 8));
0x00008708 cmp r3, 0 |
| if (r3 != 0) {
0x0000870c beq 0x8738 |
0x00008710 ldr r3, [sl, 0xc] | r3 = *((sl + 0xc));
0x00008714 cmp r3, 0 |
| if (r3 != 0) {
0x00008718 bne 0x8890 | goto label_41;
| }
0x0000871c mov r1, 0x10 | r1 = 0x10;
0x00008720 mov r0, 1 | r0 = 1;
0x00008724 bl 0x342c | r0 = calloc (r0, r1);
0x00008728 cmp r0, 0 |
0x0000872c str r0, [sl, 0xc] | *((sl + 0xc)) = r0;
| if (r0 == 0) {
0x00008730 beq 0x8758 | goto label_46;
| }
0x00008734 mov sl, r0 | sl = r0;
| }
0x00008738 mov r3, 0x82 | r3 = 0x82;
0x0000873c str r3, [sl] | *(sl) = r3;
0x00008740 ldr r2, [sp, 0x6c] | r2 = var_6ch;
0x00008744 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00008748 stmib sl, {r2, r3} | __asm ("stmib sl, {r2, r3}");
0x0000874c add r3, r3, r2 | r3 += r2;
0x00008750 str r3, [sp, 0x28] | var_28h = r3;
0x00008754 b 0x8698 | goto label_12;
| label_46:
0x00008758 ldr fp, [pc, 0x178] | fp = *(0x000088d8);
0x0000875c b 0x7fd0 | goto label_2;
| label_33:
0x00008760 sub fp, r0, 0x2500 |
0x00008764 cmp fp, 0 |
| if (fp != 0) {
0x00008768 bne 0x7fd0 | goto label_2;
| }
| do {
| label_15:
0x0000876c ldr r3, [sp, 0x28] | r3 = var_28h;
0x00008770 b 0x8504 | goto label_9;
| label_14:
0x00008774 ldr fp, [pc, 0x160] | fp = *(0x000088dc);
0x00008778 b 0x7fd0 | goto label_2;
| label_43:
0x0000877c ldr r3, [sp, 8] | r3 = var_8h;
0x00008780 mov r1, r8 | r1 = r8;
0x00008784 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00008788 mov r0, r7 | r0 = r7;
0x0000878c str r3, [sp, 0x6c] | var_6ch = r3;
0x00008790 strb r3, [sp, 0x70] | var_70h = r3;
0x00008794 str r3, [sp, 0x74] | var_74h = r3;
0x00008798 bl 0x33fc | mbedtls_asn1_get_bitstring ();
0x0000879c subs r3, r0, 0 | r3 -= var_28h;
| if (r3 != var_28h) {
0x000087a0 bne 0x8878 | goto label_47;
| }
0x000087a4 ldr ip, [sp, 0x6c] | ip = var_6ch;
0x000087a8 cmp ip, 0 |
| if (ip == 0) {
0x000087ac beq 0x8870 | goto label_48;
| }
0x000087b0 ldr lr, [sp, 0x74] | lr = var_74h;
0x000087b4 str r3, [r4, 0x104] | *((r4 + 0x104)) = r3;
| label_13:
0x000087b8 cmp r3, 3 |
| if (r3 > 3) {
0x000087bc movls r2, 1 | r2 = 1;
| }
| if (r3 <= 3) {
0x000087c0 movhi r2, 0 | r2 = 0;
| }
0x000087c4 cmp ip, r3 |
| if (ip > r3) {
0x000087c8 movls r2, 0 | r2 = 0;
| }
0x000087cc cmp r2, 0 |
0x000087d0 lsl r1, r3, 3 | r1 = r3 << 3;
0x000087d4 beq 0x876c |
| } while (r2 == 0);
0x000087d8 ldrb r0, [lr, r3] | r0 = *((lr + r3));
0x000087dc ldr r2, [r4, 0x104] | r2 = *((r4 + 0x104));
0x000087e0 add r3, r3, 1 | r3 += var_1h;
0x000087e4 orr r2, r2, r0, lsl r1 | r2 |= (r0 << r1);
0x000087e8 str r2, [r4, 0x104] | *((r4 + 0x104)) = r2;
0x000087ec b 0x87b8 | goto label_13;
| label_42:
0x000087f0 cmp r3, 0x800 |
| if (r3 == 0x800) {
0x000087f4 beq 0x8848 | goto label_49;
| }
0x000087f8 cmp r3, 0x10000 |
| if (r3 != 0x10000) {
0x000087fc bne 0x8774 | goto label_14;
| }
0x00008800 ldr r3, [sp, 8] | r3 = var_8h;
0x00008804 mov r1, r8 | r1 = r8;
0x00008808 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0000880c mov r0, r7 | r0 = r7;
0x00008810 str r3, [sp, 0x6c] | var_6ch = r3;
0x00008814 strb r3, [sp, 0x70] | var_70h = r3;
0x00008818 str r3, [sp, 0x74] | var_74h = r3;
0x0000881c bl 0x33fc | r0 = mbedtls_asn1_get_bitstring ();
0x00008820 cmp r0, 0 |
| if (r0 != 0) {
0x00008824 bne 0x8884 | goto label_50;
| }
0x00008828 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x0000882c cmp r3, 1 |
| if (r3 != 1) {
0x00008830 bne 0x8870 | goto label_48;
| }
0x00008834 ldr r2, [sp, 0x74] | r2 = var_74h;
0x00008838 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0000883c ldrb r2, [r2] | r2 = *(r2);
0x00008840 strb r2, [r4, 0x118] | *((r4 + 0x118)) = r2;
0x00008844 b 0x8504 | goto label_9;
| label_49:
0x00008848 mov r1, r8 | r1 = r8;
0x0000884c mov r3, 6 | r3 = 6;
0x00008850 add r2, r4, 0x108 | r2 = r4 + 0x108;
0x00008854 mov r0, r7 | r0 = r7;
0x00008858 bl 0x3660 | r0 = mbedtls_asn1_get_sequence_of ();
0x0000885c cmp r0, 0 |
| if (r0 != 0) {
0x00008860 bne 0x8884 | goto label_50;
| }
0x00008864 ldr r3, [r4, 0x110] | r3 = *((r4 + 0x110));
0x00008868 cmp r3, 0 |
| if (r3 != 0) {
0x0000886c bne 0x876c | goto label_15;
| }
| label_48:
0x00008870 ldr fp, [pc, 0x68] | fp = *(0x000088e0);
0x00008874 b 0x7fd0 | goto label_2;
| label_47:
0x00008878 subs fp, r3, 0x2500 |
| if (fp == r3) {
0x0000887c beq 0x876c | goto label_15;
| }
0x00008880 b 0x7fd0 | goto label_2;
| label_50:
0x00008884 subs fp, r0, 0x2500 |
| if (fp == r0) {
0x00008888 beq 0x876c | goto label_15;
| }
0x0000888c b 0x7fd0 | goto label_2;
| label_41:
0x00008890 ldr fp, [pc, 0x4c] | fp = *(0x000088e4);
0x00008894 b 0x7fd0 | goto label_2;
| label_38:
0x00008898 ldr fp, [pc, 0x48] | fp = *(0x000088e8);
0x0000889c b 0x7fd0 | goto label_2;
| label_37:
0x000088a0 sub fp, r0, 0x2500 |
0x000088a4 cmp fp, 0 |
| if (fp == 0) {
0x000088a8 beq 0x8234 | goto label_7;
| }
0x000088ac b 0x7fd0 | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedx509.so.2.2.1 @ 0x4638 */
| #include <stdint.h>
|
; (fcn) sym.mbedtls_x509_get_ext () | uint32_t mbedtls_x509_get_ext (int32_t arg1, uint32_t arg2) {
| int32_t var_4h;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x00004638 ldr ip, [r0] | ip = *(r0);
0x0000463c cmp ip, r1 |
| if (ip == r1) {
0x00004640 beq 0x46c8 | goto label_0;
| }
0x00004644 push {r4, r5, lr} |
0x00004648 ldrb ip, [ip] | ip = *(ip);
0x0000464c mov r5, r2 | r5 = r2;
0x00004650 sub sp, sp, 0xc |
0x00004654 orr r3, r3, 0xa0 | r3 |= 0xa0;
0x00004658 str ip, [r2], 4 | *(r2) = ip;
| r2 += 4;
0x0000465c mov r4, r0 | r4 = r0;
0x00004660 bl 0x32b8 | r0 = mbedtls_asn1_get_tag ();
0x00004664 cmp r0, 0 |
0x00004668 beq 0x4674 |
| while (r0 != 0) {
0x0000466c add sp, sp, 0xc |
0x00004670 pop {r4, r5, pc} |
0x00004674 ldr r3, [r4] | r3 = *(r4);
0x00004678 ldr r2, [r5, 4] | r2 = *((r5 + 4));
0x0000467c str r3, [r5, 8] | *((r5 + 8)) = r3;
0x00004680 ldr r5, [r4] | r5 = *(r4);
0x00004684 mov r3, 0x30 | r3 = 0x30;
0x00004688 add r5, r5, r2 | r5 += r2;
0x0000468c mov r1, r5 | r1 = r5;
0x00004690 add r2, sp, 4 | r2 += var_4h;
0x00004694 mov r0, r4 | r0 = r4;
0x00004698 bl 0x32b8 | r0 = mbedtls_asn1_get_tag ();
0x0000469c cmp r0, 0 |
| if (r0 == 0) {
0x000046a0 subne r0, r0, 0x2500 | r0 -= 0x2500;
| }
0x000046a4 bne 0x466c |
| }
0x000046a8 ldr r3, [r4] | r3 = *(r4);
0x000046ac ldr r2, [sp, 4] | r2 = var_4h;
0x000046b0 add r3, r3, r2 | r3 += r2;
0x000046b4 cmp r5, r3 |
| if (r5 == r3) {
0x000046b8 ldrne r0, [pc, 0x10] | r0 = *(0x000046d0);
| }
| if (r5 != r3) {
0x000046bc moveq r0, 0 | r0 = 0;
| }
0x000046c0 add sp, sp, 0xc |
0x000046c4 pop {r4, r5, pc} |
| label_0:
0x000046c8 mov r0, 0 | r0 = 0;
0x000046cc bx lr | return r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedx509.so.2.2.1 @ 0x3e3c */
| #include <stdint.h>
|
; (fcn) sym.mbedtls_x509_get_name () | void mbedtls_x509_get_name (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| r0 = arg1;
| r1 = arg2;
0x00003e3c push {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00003e40 sub sp, sp, 8 |
0x00003e44 mov r4, r0 | r4 = r0;
0x00003e48 mov sb, r1 | sb = r1;
0x00003e4c mov r5, r2 | r5 = r2;
0x00003e50 mov sl, sp | sl = sp;
0x00003e54 mov r8, 1 | r8 = 1;
| label_1:
0x00003e58 mov r3, 0x31 | r3 = 0x31;
0x00003e5c mov r2, sl | r2 = sl;
0x00003e60 mov r1, sb | r1 = sb;
0x00003e64 mov r0, r4 | r0 = r4;
0x00003e68 bl 0x32b8 | r0 = mbedtls_asn1_get_tag ();
0x00003e6c cmp r0, 0 |
| if (r0 != 0) {
0x00003e70 bne 0x3ff4 | goto label_3;
| }
0x00003e74 ldr r6, [r4] | r6 = *(r4);
0x00003e78 ldr r3, [sp] | r3 = *(sp);
0x00003e7c add r7, sp, 4 | r7 += var_4h;
0x00003e80 add r6, r6, r3 | r6 += r3;
0x00003e84 b 0x3f88 |
| while (r0 == 0) {
0x00003e88 ldr r3, [r4] | r3 = *(r4);
0x00003e8c sub r2, r6, r3 | r2 = r6 - r3;
0x00003e90 cmp r2, 0 |
| if (r2 <= 0) {
0x00003e94 ble 0x3fe8 | goto label_4;
| }
0x00003e98 ldrb r3, [r3] | r3 = *(r3);
0x00003e9c mov r2, r5 | r2 = r5;
0x00003ea0 str r3, [r2], 4 | *(r2) = r3;
| r2 += 4;
0x00003ea4 mov r1, r6 | r1 = r6;
0x00003ea8 mov r3, 6 | r3 = 6;
0x00003eac mov r0, r4 | r0 = r4;
0x00003eb0 bl 0x32b8 | r0 = mbedtls_asn1_get_tag ();
0x00003eb4 cmp r0, 0 |
| if (r0 != 0) {
0x00003eb8 bne 0x3fa4 | goto label_5;
| }
0x00003ebc ldr r3, [r4] | r3 = *(r4);
0x00003ec0 ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x00003ec4 str r3, [r5, 8] | *((r5 + 8)) = r3;
0x00003ec8 ldr r0, [r4] | r0 = *(r4);
0x00003ecc add r2, r0, r1 | r2 = r0 + r1;
0x00003ed0 sub r3, r6, r2 | r3 = r6 - r2;
0x00003ed4 cmp r3, 0 |
0x00003ed8 str r2, [r4] | *(r4) = r2;
| if (r3 <= 0) {
0x00003edc ble 0x3fe8 | goto label_4;
| }
0x00003ee0 ldrb ip, [r0, r1] | ip = *((r0 + r1));
0x00003ee4 sub r3, ip, 0x13 | r3 = ip - 0x13;
0x00003ee8 and lr, ip, 0xef | lr = ip & 0xef;
0x00003eec cmp lr, 0xc |
0x00003ef0 cmpne r3, 1 | __asm ("cmpne r3, 1");
| if (lr <= 0xc) {
0x00003ef4 movhi r3, 1 | r3 = 1;
| }
| if (lr > 0xc) {
0x00003ef8 movls r3, 0 | r3 = 0;
| }
0x00003efc cmp ip, 3 |
| if (ip != 3) {
0x00003f00 moveq r3, 0 | r3 = 0;
| }
| if (ip == 3) {
0x00003f04 andne r3, r3, 1 | r3 &= 1;
| }
0x00003f08 and ip, ip, 0xf7 |
0x00003f0c cmp ip, 0x16 |
| if (ip != 0x16) {
0x00003f10 moveq r3, 0 | r3 = 0;
| }
| if (ip == 0x16) {
0x00003f14 andne r3, r3, 1 | r3 &= 1;
| }
0x00003f18 cmp r3, 0 |
| if (r3 != 0) {
0x00003f1c bne 0x3ffc | goto label_6;
| }
0x00003f20 add r2, r2, 1 | r2++;
0x00003f24 str r2, [r4] | *(r4) = r2;
0x00003f28 ldrb r3, [r0, r1] | r3 = *((r0 + r1));
0x00003f2c add r2, r5, 0x10 | r2 = r5 + 0x10;
0x00003f30 str r3, [r5, 0xc] | *((r5 + 0xc)) = r3;
0x00003f34 mov r1, r6 | r1 = r6;
0x00003f38 mov r0, r4 | r0 = r4;
0x00003f3c bl 0x321c | r0 = mbedtls_asn1_get_len ();
0x00003f40 cmp r0, 0 |
| if (r0 != 0) {
0x00003f44 bne 0x3fa4 | goto label_5;
| }
0x00003f48 ldr r3, [r4] | r3 = *(r4);
0x00003f4c ldr r2, [r5, 0x10] | r2 = *((r5 + 0x10));
0x00003f50 str r3, [r5, 0x14] | *((r5 + 0x14)) = r3;
0x00003f54 ldr r3, [r4] | r3 = *(r4);
0x00003f58 add r3, r3, r2 | r3 += r2;
0x00003f5c cmp r6, r3 |
0x00003f60 str r3, [r4] | *(r4) = r3;
0x00003f64 str r0, [r5, 0x18] | *((r5 + 0x18)) = r0;
| if (r6 == r3) {
0x00003f68 beq 0x3fbc | goto label_7;
| }
| label_0:
0x00003f6c strb r8, [r5, 0x1c] | *((r5 + 0x1c)) = r8;
0x00003f70 mov r1, 0x20 | r1 = 0x20;
0x00003f74 mov r0, 1 | r0 = 1;
0x00003f78 bl 0x342c | calloc (r0, r1);
0x00003f7c str r0, [r5, 0x18] | *((r5 + 0x18)) = r0;
0x00003f80 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 == r0) {
0x00003f84 beq 0x3fdc | goto label_8;
| }
0x00003f88 mov r3, 0x30 | r3 = 0x30;
0x00003f8c mov r2, r7 | r2 = r7;
0x00003f90 mov r1, r6 | r1 = r6;
0x00003f94 mov r0, r4 | r0 = r4;
0x00003f98 bl 0x32b8 | r0 = mbedtls_asn1_get_tag ();
0x00003f9c cmp r0, 0 |
0x00003fa0 beq 0x3e88 |
| }
| label_5:
0x00003fa4 sub r0, r0, 0x2380 | r0 -= 0x2380;
0x00003fa8 cmp r0, 0 |
| if (r0 != 0) {
0x00003fac bne 0x3fe0 | goto label_2;
| }
0x00003fb0 ldr r3, [r4] | r3 = *(r4);
0x00003fb4 cmp r6, r3 |
| if (r6 != r3) {
0x00003fb8 bne 0x3f6c | goto label_0;
| }
| label_7:
0x00003fbc cmp sb, r6 |
| if (sb == r6) {
0x00003fc0 beq 0x4004 | goto label_9;
| }
0x00003fc4 mov r1, 0x20 | r1 = 0x20;
0x00003fc8 mov r0, 1 | r0 = 1;
0x00003fcc bl 0x342c | calloc (r0, r1);
0x00003fd0 str r0, [r5, 0x18] | *((r5 + 0x18)) = r0;
0x00003fd4 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x00003fd8 bne 0x3e58 | goto label_1;
| }
| label_8:
0x00003fdc ldr r0, [pc, 0x28] | r0 = *(0x4008);
| do {
| label_2:
0x00003fe0 add sp, sp, 8 |
0x00003fe4 pop {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_4:
0x00003fe8 ldr r0, [pc, 0x20] | r0 = *(0x400c);
0x00003fec add sp, sp, 8 |
0x00003ff0 pop {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_3:
0x00003ff4 sub r0, r0, 0x2380 | r0 -= 0x2380;
0x00003ff8 b 0x3fe0 |
| } while (1);
| label_6:
0x00003ffc ldr r0, [pc, 0x10] | r0 = *(0x4010);
0x00004000 b 0x3fe0 | goto label_2;
| label_9:
0x00004004 mov r0, 0 | r0 = 0;
0x00004008 b 0x3fe0 | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedx509.so.2.2.1 @ 0x3a4c */
| #include <stdint.h>
|
; (fcn) sym.mbedtls_x509_get_serial () | uint32_t mbedtls_x509_get_serial (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00003a4c ldr r3, [r0] | r3 = *(r0);
0x00003a50 sub ip, r1, r3 |
0x00003a54 cmp ip, 0 |
| if (ip > 0) {
0x00003a58 ble 0x3abc |
0x00003a5c ldrb ip, [r3] | ip = *(r3);
0x00003a60 and ip, ip, 0x7f |
0x00003a64 cmp ip, 2 |
| if (ip == 2) {
0x00003a68 bne 0x3ab4 |
0x00003a6c push {r4, r5, r6, lr} |
0x00003a70 mov r5, r2 | r5 = r2;
0x00003a74 add r2, r3, 1 | r2 = r3 + 1;
0x00003a78 str r2, [r0] | *(r0) = r2;
0x00003a7c ldrb r3, [r3] | r3 = *(r3);
0x00003a80 mov r2, r5 | r2 = r5;
0x00003a84 str r3, [r2], 4 | *(r2) = r3;
| r2 += 4;
0x00003a88 mov r4, r0 | r4 = r0;
0x00003a8c bl 0x321c | r0 = mbedtls_asn1_get_len ();
0x00003a90 cmp r0, 0 |
| if (r0 != 0) {
0x00003a94 ldreq r3, [r4] | r3 = *(r4);
| }
| if (r0 != 0) {
0x00003a98 ldreq r2, [r5, 4] | r2 = *((r5 + 4));
| }
| if (r0 != 0) {
0x00003a9c streq r3, [r5, 8] | *((r5 + 8)) = r3;
| }
| if (r0 != 0) {
0x00003aa0 ldreq r3, [r4] | r3 = *(r4);
| }
| if (r0 == 0) {
0x00003aa4 subne r0, r0, 0x2280 | r0 -= 0x2280;
| }
| if (r0 != 0) {
0x00003aa8 addeq r3, r3, r2 | r3 += r2;
| }
| if (r0 != 0) {
0x00003aac streq r3, [r4] | *(r4) = r3;
| }
0x00003ab0 pop {r4, r5, r6, pc} |
| }
0x00003ab4 ldr r0, [pc, 8] | r0 = *(0x00003ac4);
0x00003ab8 bx lr | return r0;
| }
0x00003abc ldr r0, [pc, 4] | r0 = *(0x00003ac8);
0x00003ac0 bx lr | return r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedx509.so.2.2.1 @ 0x4500 */
| #include <stdint.h>
|
; (fcn) sym.mbedtls_x509_get_sig () | void mbedtls_x509_get_sig (int32_t arg1, int32_t arg2) {
| int32_t var_4h;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x00004500 ldr ip, [r0] | ip = *(r0);
0x00004504 push {r4, r5, lr} |
0x00004508 sub lr, r1, ip | lr = r1 - ip;
0x0000450c cmp lr, 0 |
0x00004510 sub sp, sp, 0xc |
| if (lr <= 0) {
0x00004514 ble 0x455c | goto label_0;
| }
0x00004518 ldrb r3, [ip] | r3 = *(ip);
0x0000451c mov r5, r2 | r5 = r2;
0x00004520 str r3, [r5] | *(r5) = r3;
0x00004524 add r2, sp, 4 | r2 += var_4h;
0x00004528 mov r4, r0 | r4 = r0;
0x0000452c bl 0x31f8 | r0 = mbedtls_asn1_get_bitstring_null ();
0x00004530 cmp r0, 0 |
| if (r0 != 0) {
0x00004534 ldreq r3, [r4] | r3 = *(r4);
| }
| if (r0 != 0) {
0x00004538 ldreq r2, [sp, 4] | r2 = var_4h;
| }
| if (r0 != 0) {
0x0000453c streq r3, [r5, 8] | *((r5 + 8)) = r3;
| }
| if (r0 != 0) {
0x00004540 ldreq r3, [r4] | r3 = *(r4);
| }
| if (r0 == 0) {
0x00004544 subne r0, r0, 0x2480 | r0 -= 0x2480;
| }
| if (r0 != 0) {
0x00004548 addeq r3, r3, r2 | r3 += r2;
| }
| if (r0 != 0) {
0x0000454c streq r2, [r5, 4] | *((r5 + 4)) = r2;
| }
0x00004550 streq r3, [r4] | *(r4) = r3;
| while (1) {
0x00004554 add sp, sp, 0xc |
0x00004558 pop {r4, r5, pc} |
| label_0:
0x0000455c ldr r0, [pc] | r0 = *(0x455c);
0x00004560 b 0x4554 |
| }
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedx509.so.2.2.1 @ 0x4568 */
| #include <stdint.h>
|
; (fcn) sym.mbedtls_x509_get_sig_alg () | void mbedtls_x509_get_sig_alg (int32_t arg_18h, int32_t arg2) {
| r1 = arg2;
0x00004568 push {r4, r5, r6, r7, r8, lr} |
0x0000456c ldr r8, [sp, 0x18] | r8 = *(arg_18h);
0x00004570 ldr ip, [r8] | ip = *(r8);
0x00004574 cmp ip, 0 |
| if (ip != 0) {
0x00004578 bne 0x4614 | goto label_1;
| }
0x0000457c mov r5, r2 | r5 = r2;
0x00004580 mov r7, r1 | r7 = r1;
0x00004584 mov r2, r3 | r2 = r3;
0x00004588 mov r1, r5 | r1 = r5;
0x0000458c mov r4, r3 | r4 = r3;
0x00004590 bl 0x3540 | r0 = mbedtls_oid_get_sig_alg ();
0x00004594 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 == r0) {
0x00004598 subne r6, r6, 0x2600 | r6 -= 0x2600;
| }
| if (r6 != r0) {
0x0000459c bne 0x45cc | goto label_0;
| }
0x000045a0 ldr r3, [r4] | r3 = *(r4);
0x000045a4 cmp r3, 6 |
| if (r3 == 6) {
0x000045a8 beq 0x45d4 | goto label_2;
| }
0x000045ac ldr r3, [r7] | r3 = *(r7);
0x000045b0 cmp r3, 5 |
0x000045b4 cmpne r3, 0 | __asm ("cmpne r3, 0");
| if (r3 != 5) {
0x000045b8 bne 0x461c | goto label_3;
| }
0x000045bc ldr r2, [r7, 4] | r2 = *((r7 + 4));
0x000045c0 ldr r3, [pc, 0x64] | r3 = *(0x4628);
0x000045c4 cmp r2, 0 |
0x000045c8 movne r6, r3 | r6 = r3;
| while (r6 == r0) {
| label_0:
0x000045cc mov r0, r6 | r0 = r6;
0x000045d0 pop {r4, r5, r6, r7, r8, pc} |
| label_2:
0x000045d4 mov r1, 8 | r1 = 8;
0x000045d8 mov r0, 1 | r0 = 1;
0x000045dc bl 0x342c | r0 = calloc (r0, r1);
0x000045e0 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x000045e4 beq 0x4624 | goto label_4;
| }
0x000045e8 mov r1, r5 | r1 = r5;
0x000045ec mov r0, r7 | r0 = r7;
0x000045f0 add r3, r4, 4 | r3 = r4 + 4;
0x000045f4 mov r2, r4 | r2 = r4;
0x000045f8 bl 0x35dc | r0 = fcn_000035dc ();
0x000045fc subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x00004600 streq r4, [r8] | *(r8) = r4;
| }
0x00004604 beq 0x45cc |
| }
0x00004608 mov r0, r4 | r0 = r4;
0x0000460c bl 0x372c | free (r0);
0x00004610 b 0x45cc | goto label_0;
| label_1:
0x00004614 ldr r6, [pc, 0x14] | r6 = *(0x462c);
0x00004618 b 0x45cc | goto label_0;
| label_3:
0x0000461c ldr r6, [pc, 8] | r6 = *(0x0000462c);
0x00004620 b 0x45cc | goto label_0;
| label_4:
0x00004624 ldr r6, [pc, 8] | r6 = *(0x00004634);
0x00004628 b 0x45cc | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedx509.so.2.2.1 @ 0x4018 */
| #include <stdint.h>
|
; (fcn) sym.mbedtls_x509_get_time () | uint32_t mbedtls_x509_get_time (int32_t arg1, int32_t arg2) {
| int32_t var_4h;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x00004018 ldr r3, [r0] | r3 = *(r0);
0x0000401c sub ip, r1, r3 |
0x00004020 cmp ip, 0 |
| if (ip <= 0) {
0x00004024 ble 0x44e4 | goto label_12;
| }
0x00004028 push {r4, r5, r6, r7, lr} |
0x0000402c mov r4, r2 | r4 = r2;
0x00004030 ldrb r2, [r3] | r2 = *(r3);
0x00004034 sub sp, sp, 0xc |
0x00004038 cmp r2, 0x17 |
0x0000403c mov r5, r0 | r5 = r0;
| if (r2 == 0x17) {
0x00004040 beq 0x40b8 | goto label_13;
| }
0x00004044 cmp r2, 0x18 |
| if (r2 != 0x18) {
0x00004048 bne 0x44b4 | goto label_14;
| }
0x0000404c add r3, r3, 1 | r3++;
0x00004050 str r3, [r0] | *(r0) = r3;
0x00004054 add r2, sp, 4 | r2 += var_4h;
0x00004058 bl 0x321c | r0 = mbedtls_asn1_get_len ();
0x0000405c cmp r0, 0 |
| if (r0 != 0) {
0x00004060 bne 0x40d0 | goto label_15;
| }
0x00004064 ldr ip, [r5] | ip = *(r5);
0x00004068 str r0, [r4] | *(r4) = r0;
0x0000406c add lr, ip, 4 | lr = ip + 4;
| do {
0x00004070 ldrb r3, [ip] | r3 = *(ip);
0x00004074 add r2, ip, 1 | r2 = ip + 1;
0x00004078 sub r3, r3, 0x30 | r3 -= 0x30;
0x0000407c cmp r3, 9 |
| if (r3 > 9) {
0x00004080 bhi 0x4284 | goto label_2;
| }
0x00004084 ldr r3, [r4] | r3 = *(r4);
0x00004088 cmp r2, lr |
0x0000408c add r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x00004090 lsl r3, r3, 1 | r3 <<= 1;
0x00004094 str r3, [r4] | *(r4) = r3;
0x00004098 str r2, [r5] | *(r5) = r2;
0x0000409c ldrb r1, [r2, -1] | r1 = *((r2 - 1));
0x000040a0 sub r1, r1, 0x30 | r1 -= 0x30;
0x000040a4 add r3, r1, r3 | r3 = r1 + r3;
0x000040a8 str r3, [r4] | *(r4) = r3;
| if (r2 == lr) {
0x000040ac beq 0x40dc | goto label_16;
| }
0x000040b0 mov ip, r2 |
0x000040b4 b 0x4070 |
| } while (1);
| label_13:
0x000040b8 add r3, r3, 1 | r3++;
0x000040bc str r3, [r0] | *(r0) = r3;
0x000040c0 add r2, sp, 4 | r2 += var_4h;
0x000040c4 bl 0x321c | r0 = mbedtls_asn1_get_len ();
0x000040c8 cmp r0, 0 |
| if (r0 == 0) {
0x000040cc beq 0x4298 | goto label_17;
| }
| label_15:
0x000040d0 sub r0, r0, 0x2400 | r0 -= 0x2400;
| do {
| label_0:
0x000040d4 add sp, sp, 0xc |
0x000040d8 pop {r4, r5, r6, r7, pc} |
| label_16:
0x000040dc mov r3, 0 | r3 = 0;
0x000040e0 add ip, ip, 3 |
0x000040e4 str r3, [r4, 4] | *((r4 + 4)) = r3;
| label_1:
0x000040e8 ldrb r3, [r2] | r3 = *(r2);
0x000040ec add r1, r2, 1 | r1 = r2 + 1;
0x000040f0 sub r3, r3, 0x30 | r3 -= 0x30;
0x000040f4 cmp r3, 9 |
| if (r3 > 9) {
0x000040f8 bhi 0x4284 | goto label_2;
| }
0x000040fc ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00004100 cmp ip, r1 |
0x00004104 add r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x00004108 lsl r3, r3, 1 | r3 <<= 1;
0x0000410c str r3, [r4, 4] | *((r4 + 4)) = r3;
0x00004110 str r1, [r5] | *(r5) = r1;
0x00004114 ldrb lr, [r1, -1] |
0x00004118 sub lr, lr, 0x30 | lr -= 0x30;
0x0000411c add r3, lr, r3 | r3 = lr + r3;
0x00004120 str r3, [r4, 4] | *((r4 + 4)) = r3;
| if (ip != r1) {
0x00004124 bne 0x4290 | goto label_18;
| }
0x00004128 mov r3, 0 | r3 = 0;
0x0000412c add r2, r2, 3 | r2 += 3;
0x00004130 str r3, [r4, 8] | *((r4 + 8)) = r3;
| label_4:
0x00004134 ldrb r3, [r1] | r3 = *(r1);
0x00004138 add ip, r1, 1 |
0x0000413c sub r3, r3, 0x30 | r3 -= 0x30;
0x00004140 cmp r3, 9 |
| if (r3 > 9) {
0x00004144 bhi 0x4284 | goto label_2;
| }
0x00004148 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0000414c cmp ip, r2 |
0x00004150 add r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x00004154 lsl r3, r3, 1 | r3 <<= 1;
0x00004158 str r3, [r4, 8] | *((r4 + 8)) = r3;
0x0000415c str ip, [r5] | *(r5) = ip;
0x00004160 ldrb lr, [ip, -1] |
0x00004164 sub lr, lr, 0x30 | lr -= 0x30;
0x00004168 add r3, lr, r3 | r3 = lr + r3;
0x0000416c str r3, [r4, 8] | *((r4 + 8)) = r3;
| if (ip != r2) {
0x00004170 bne 0x44a4 | goto label_19;
| }
0x00004174 mov r3, 0 | r3 = 0;
0x00004178 add r1, r1, 3 | r1 += 3;
0x0000417c str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
| label_8:
0x00004180 ldrb r3, [ip] | r3 = *(ip);
0x00004184 add r2, ip, 1 | r2 = ip + 1;
0x00004188 sub r3, r3, 0x30 | r3 -= 0x30;
0x0000418c cmp r3, 9 |
| if (r3 > 9) {
0x00004190 bhi 0x4284 | goto label_2;
| }
0x00004194 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00004198 cmp r2, r1 |
0x0000419c add r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x000041a0 lsl r3, r3, 1 | r3 <<= 1;
0x000041a4 str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
0x000041a8 str r2, [r5] | *(r5) = r2;
0x000041ac ldrb lr, [r2, -1] |
0x000041b0 sub lr, lr, 0x30 | lr -= 0x30;
0x000041b4 add r3, lr, r3 | r3 = lr + r3;
0x000041b8 str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
| if (r2 != r1) {
0x000041bc bne 0x44cc | goto label_20;
| }
0x000041c0 mov r3, 0 | r3 = 0;
0x000041c4 add ip, ip, 3 |
0x000041c8 str r3, [r4, 0x10] | *((r4 + 0x10)) = r3;
| label_6:
0x000041cc ldrb r3, [r2] | r3 = *(r2);
0x000041d0 add r1, r2, 1 | r1 = r2 + 1;
0x000041d4 sub r3, r3, 0x30 | r3 -= 0x30;
0x000041d8 cmp r3, 9 |
| if (r3 > 9) {
0x000041dc bhi 0x4284 | goto label_2;
| }
0x000041e0 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x000041e4 cmp ip, r1 |
0x000041e8 add r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x000041ec lsl r3, r3, 1 | r3 <<= 1;
0x000041f0 str r3, [r4, 0x10] | *((r4 + 0x10)) = r3;
0x000041f4 str r1, [r5] | *(r5) = r1;
0x000041f8 ldrb lr, [r1, -1] |
0x000041fc sub lr, lr, 0x30 | lr -= 0x30;
0x00004200 add r3, lr, r3 | r3 = lr + r3;
0x00004204 str r3, [r4, 0x10] | *((r4 + 0x10)) = r3;
| if (ip != r1) {
0x00004208 bne 0x44bc | goto label_21;
| }
0x0000420c ldr lr, [sp, 4] | lr = var_4h;
0x00004210 cmp lr, 0xc |
0x00004214 bls 0x40d4 |
| } while (lr < 0xc);
0x00004218 mov r3, 0 | r3 = 0;
0x0000421c add r2, r2, 3 | r2 += 3;
0x00004220 str r3, [r4, 0x14] | *((r4 + 0x14)) = r3;
| do {
0x00004224 ldrb r3, [r1] | r3 = *(r1);
0x00004228 mov r6, r1 | r6 = r1;
0x0000422c sub r3, r3, 0x30 | r3 -= 0x30;
0x00004230 cmp r3, 9 |
0x00004234 add r1, r1, 1 | r1++;
| if (r3 > 9) {
0x00004238 bhi 0x4284 | goto label_2;
| }
0x0000423c ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00004240 cmp r2, r1 |
0x00004244 add r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x00004248 lsl r3, r3, 1 | r3 <<= 1;
0x0000424c str r3, [r4, 0x14] | *((r4 + 0x14)) = r3;
0x00004250 str r1, [r5] | *(r5) = r1;
0x00004254 ldrb ip, [r1, -1] | ip = *((r1 - 1));
0x00004258 sub ip, ip, 0x30 |
0x0000425c add r3, ip, r3 | r3 = ip + r3;
0x00004260 str r3, [r4, 0x14] | *((r4 + 0x14)) = r3;
0x00004264 bne 0x4224 |
| } while (r2 != r1);
0x00004268 cmp lr, 0xe |
| if (lr < 0xe) {
0x0000426c bls 0x40d4 | goto label_0;
| }
0x00004270 add r3, r6, 2 | r3 = r6 + 2;
0x00004274 str r3, [r5] | *(r5) = r3;
0x00004278 ldrb r3, [r6, 1] | r3 = *((r6 + 1));
0x0000427c cmp r3, 0x5a |
| if (r3 == 0x5a) {
0x00004280 beq 0x40d4 | goto label_0;
| }
| do {
| label_2:
0x00004284 ldr r0, [pc, 0x268] | r0 = *(0x44f0);
0x00004288 add sp, sp, 0xc |
0x0000428c pop {r4, r5, r6, r7, pc} |
| label_18:
0x00004290 mov r2, r1 | r2 = r1;
0x00004294 b 0x40e8 | goto label_1;
| label_17:
0x00004298 ldr r1, [r5] | r1 = *(r5);
0x0000429c str r0, [r4] | *(r4) = r0;
0x000042a0 add lr, r1, 2 | lr = r1 + 2;
| label_5:
0x000042a4 ldrb r3, [r1] | r3 = *(r1);
0x000042a8 add r2, r1, 1 | r2 = r1 + 1;
0x000042ac sub r3, r3, 0x30 | r3 -= 0x30;
0x000042b0 cmp r3, 9 |
0x000042b4 bhi 0x4284 |
| } while (r3 > 9);
0x000042b8 ldr r3, [r4] | r3 = *(r4);
0x000042bc cmp lr, r2 |
0x000042c0 add r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x000042c4 lsl r3, r3, 1 | r3 <<= 1;
0x000042c8 str r3, [r4] | *(r4) = r3;
0x000042cc str r2, [r5] | *(r5) = r2;
0x000042d0 ldrb ip, [r2, -1] | ip = *((r2 - 1));
0x000042d4 sub ip, ip, 0x30 |
0x000042d8 add r3, ip, r3 | r3 = ip + r3;
0x000042dc str r3, [r4] | *(r4) = r3;
| if (lr != r2) {
0x000042e0 bne 0x44ac | goto label_22;
| }
0x000042e4 mov ip, 0 |
0x000042e8 add r1, r1, 3 | r1 += 3;
0x000042ec str ip, [r4, 4] | *((r4 + 4)) = ip;
| label_9:
0x000042f0 ldrb ip, [r2] | ip = *(r2);
0x000042f4 add lr, r2, 1 | lr = r2 + 1;
0x000042f8 sub ip, ip, 0x30 |
0x000042fc cmp ip, 9 |
| if (ip > 9) {
0x00004300 bhi 0x4284 | goto label_2;
| }
0x00004304 ldr ip, [r4, 4] | ip = *((r4 + 4));
0x00004308 cmp r1, lr |
0x0000430c add ip, ip, ip, lsl 2 |
0x00004310 lsl ip, ip, 1 |
0x00004314 str ip, [r4, 4] | *((r4 + 4)) = ip;
0x00004318 str lr, [r5] |
0x0000431c ldrb r6, [lr, -1] | r6 = *((lr - 1));
0x00004320 sub r6, r6, 0x30 | r6 -= 0x30;
0x00004324 add ip, r6, ip |
0x00004328 str ip, [r4, 4] | *((r4 + 4)) = ip;
| if (r1 != lr) {
0x0000432c bne 0x44d4 | goto label_23;
| }
0x00004330 mov r1, 0 | r1 = 0;
0x00004334 add r2, r2, 3 | r2 += 3;
0x00004338 str r1, [r4, 8] | *((r4 + 8)) = r1;
| label_7:
0x0000433c ldrb r1, [lr] | r1 = *(lr);
0x00004340 add ip, lr, 1 |
0x00004344 sub r1, r1, 0x30 | r1 -= 0x30;
0x00004348 cmp r1, 9 |
| if (r1 > 9) {
0x0000434c bhi 0x4284 | goto label_2;
| }
0x00004350 ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x00004354 cmp r2, ip |
0x00004358 add r1, r1, r1, lsl 2 | r1 += (r1 << 2);
0x0000435c lsl r1, r1, 1 | r1 <<= 1;
0x00004360 str r1, [r4, 8] | *((r4 + 8)) = r1;
0x00004364 str ip, [r5] | *(r5) = ip;
0x00004368 ldrb r6, [ip, -1] | r6 = *((ip - 1));
0x0000436c sub r6, r6, 0x30 | r6 -= 0x30;
0x00004370 add r1, r6, r1 | r1 = r6 + r1;
0x00004374 str r1, [r4, 8] | *((r4 + 8)) = r1;
| if (r2 != ip) {
0x00004378 bne 0x44c4 | goto label_24;
| }
0x0000437c mov r2, 0 | r2 = 0;
0x00004380 add lr, lr, 3 | lr += 3;
0x00004384 str r2, [r4, 0xc] | *((r4 + 0xc)) = r2;
| label_10:
0x00004388 ldrb r2, [ip] | r2 = *(ip);
0x0000438c add r1, ip, 1 | r1 = ip + 1;
0x00004390 sub r2, r2, 0x30 | r2 -= 0x30;
0x00004394 cmp r2, 9 |
| if (r2 > 9) {
0x00004398 bhi 0x4284 | goto label_2;
| }
0x0000439c ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x000043a0 cmp lr, r1 |
0x000043a4 add r2, r2, r2, lsl 2 | r2 += (r2 << 2);
0x000043a8 lsl r2, r2, 1 | r2 <<= 1;
0x000043ac str r2, [r4, 0xc] | *((r4 + 0xc)) = r2;
0x000043b0 str r1, [r5] | *(r5) = r1;
0x000043b4 ldrb r6, [r1, -1] | r6 = *((r1 - 1));
0x000043b8 sub r6, r6, 0x30 | r6 -= 0x30;
0x000043bc add r2, r6, r2 | r2 = r6 + r2;
0x000043c0 str r2, [r4, 0xc] | *((r4 + 0xc)) = r2;
| if (lr != r1) {
0x000043c4 bne 0x44dc | goto label_25;
| }
0x000043c8 mov r2, 0 | r2 = 0;
0x000043cc add ip, ip, 3 |
0x000043d0 str r2, [r4, 0x10] | *((r4 + 0x10)) = r2;
| label_11:
0x000043d4 ldrb r2, [r1] | r2 = *(r1);
0x000043d8 add r6, r1, 1 | r6 = r1 + 1;
0x000043dc sub r2, r2, 0x30 | r2 -= 0x30;
0x000043e0 cmp r2, 9 |
| if (r2 > 9) {
0x000043e4 bhi 0x4284 | goto label_2;
| }
0x000043e8 ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x000043ec cmp ip, r6 |
0x000043f0 add r2, r2, r2, lsl 2 | r2 += (r2 << 2);
0x000043f4 lsl r2, r2, 1 | r2 <<= 1;
0x000043f8 str r2, [r4, 0x10] | *((r4 + 0x10)) = r2;
0x000043fc str r6, [r5] | *(r5) = r6;
0x00004400 ldrb lr, [r6, -1] |
0x00004404 sub lr, lr, 0x30 | lr -= 0x30;
0x00004408 add r2, lr, r2 | r2 = lr + r2;
0x0000440c str r2, [r4, 0x10] | *((r4 + 0x10)) = r2;
| if (ip != r6) {
0x00004410 bne 0x44ec | goto label_26;
| }
0x00004414 ldr lr, [sp, 4] | lr = var_4h;
0x00004418 cmp lr, 0xa |
| if (lr < 0xa) {
0x0000441c bls 0x448c | goto label_27;
| }
0x00004420 mov r2, 0 | r2 = 0;
0x00004424 add r1, r1, 3 | r1 += 3;
0x00004428 str r2, [r4, 0x14] | *((r4 + 0x14)) = r2;
| label_3:
0x0000442c ldrb r2, [r6] | r2 = *(r6);
0x00004430 mov r7, r6 | r7 = r6;
0x00004434 sub r2, r2, 0x30 | r2 -= 0x30;
0x00004438 cmp r2, 9 |
0x0000443c add r6, r6, 1 | r6++;
| if (r2 > 9) {
0x00004440 bhi 0x4284 | goto label_2;
| }
0x00004444 ldr r2, [r4, 0x14] | r2 = *((r4 + 0x14));
0x00004448 cmp r6, r1 |
0x0000444c add r2, r2, r2, lsl 2 | r2 += (r2 << 2);
0x00004450 lsl r2, r2, 1 | r2 <<= 1;
0x00004454 str r2, [r4, 0x14] | *((r4 + 0x14)) = r2;
0x00004458 str r6, [r5] | *(r5) = r6;
0x0000445c ldrb ip, [r6, -1] | ip = *((r6 - 1));
0x00004460 sub ip, ip, 0x30 |
0x00004464 add r2, ip, r2 | r2 = ip + r2;
0x00004468 str r2, [r4, 0x14] | *((r4 + 0x14)) = r2;
| if (r6 != r1) {
0x0000446c bne 0x442c | goto label_3;
| }
0x00004470 cmp lr, 0xc |
| if (lr < 0xc) {
0x00004474 bls 0x448c | goto label_27;
| }
0x00004478 add r2, r7, 2 | r2 = r7 + 2;
0x0000447c str r2, [r5] | *(r5) = r2;
0x00004480 ldrb r2, [r7, 1] | r2 = *((r7 + 1));
0x00004484 cmp r2, 0x5a |
| if (r2 != 0x5a) {
0x00004488 bne 0x4284 | goto label_2;
| }
| label_27:
0x0000448c cmp r3, 0x31 |
| if (r3 > 0x31) {
0x00004490 addle r3, r3, 0x64 | r3 += 0x64;
| }
0x00004494 add r3, r3, 0x760 | r3 += 0x760;
0x00004498 add r3, r3, 0xc | r3 += 0xc;
0x0000449c str r3, [r4] | *(r4) = r3;
0x000044a0 b 0x40d4 | goto label_0;
| label_19:
0x000044a4 mov r1, ip | r1 = ip;
0x000044a8 b 0x4134 | goto label_4;
| label_22:
0x000044ac mov r1, r2 | r1 = r2;
0x000044b0 b 0x42a4 | goto label_5;
| label_14:
0x000044b4 ldr r0, [pc, 0x3c] | r0 = *(0x44f4);
0x000044b8 b 0x40d4 | goto label_0;
| label_21:
0x000044bc mov r2, r1 | r2 = r1;
0x000044c0 b 0x41cc | goto label_6;
| label_24:
0x000044c4 mov lr, ip | lr = ip;
0x000044c8 b 0x433c | goto label_7;
| label_20:
0x000044cc mov ip, r2 |
0x000044d0 b 0x4180 | goto label_8;
| label_23:
0x000044d4 mov r2, lr | r2 = lr;
0x000044d8 b 0x42f0 | goto label_9;
| label_25:
0x000044dc mov ip, r1 |
0x000044e0 b 0x4388 | goto label_10;
| label_12:
0x000044e4 ldr r0, [pc, 0x10] | r0 = *(0x44f8);
0x000044e8 bx lr | return r0;
| label_26:
0x000044ec mov r1, r6 | r1 = r6;
0x000044f0 b 0x43d4 | goto label_11;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedx509.so.2.2.1 @ 0x60d4 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.x509_name_cmp () | void x509_name_cmp (int32_t arg1, uint32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x000060d4 push {r4, r5, r6, r7, r8, lr} |
0x000060d8 adds r6, r0, 0 | r6 = r0 + 0;
| if (r6 == r0) {
0x000060dc movne r6, 1 | r6 = 1;
| }
0x000060e0 cmp r1, 0 |
| if (r1 == 0) {
0x000060e4 movne r6, 1 | r6 = 1;
| }
0x000060e8 cmp r6, 0 |
| if (r6 == 0) {
0x000060ec beq 0x61c0 | goto label_2;
| }
0x000060f0 cmp r1, 0 |
0x000060f4 cmpne r0, 0 | __asm ("cmpne r0, 0");
0x000060f8 mov r4, r1 | r4 = r1;
0x000060fc mov r5, r0 | r5 = r0;
| if (r1 == 0) {
0x00006100 beq 0x61bc | goto label_1;
| }
0x00006104 ldr r2, [r1] | r2 = *(r1);
0x00006108 ldr r3, [r0] | r3 = *(r0);
0x0000610c cmp r2, r3 |
| if (r2 != r3) {
0x00006110 bne 0x61bc | goto label_1;
| }
| label_3:
0x00006114 ldr r2, [r5, 4] | r2 = *((r5 + 4));
0x00006118 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0000611c cmp r2, r3 |
| if (r2 != r3) {
0x00006120 bne 0x61bc | goto label_1;
| }
0x00006124 ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x00006128 ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x0000612c bl 0x3528 | r0 = memcmp (r0, r1, r2);
0x00006130 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x00006134 bne 0x61bc | goto label_1;
| }
0x00006138 ldr r7, [r5, 0xc] | r7 = *((r5 + 0xc));
0x0000613c ldr r8, [r4, 0xc] | r8 = *((r4 + 0xc));
0x00006140 cmp r7, r8 |
0x00006144 beq 0x61c8 |
| while (r2 != r3) {
| label_0:
0x00006148 cmp r7, 0x13 |
0x0000614c cmpne r7, 0xc | __asm ("cmpne r7, 0xc");
| if (r7 == 0x13) {
0x00006150 bne 0x61bc |
0x00006154 cmp r8, 0x13 |
0x00006158 cmpne r8, 0xc | __asm ("cmpne r8, 0xc");
| if (r8 != 0x13) {
0x0000615c bne 0x61bc | goto label_1;
| }
0x00006160 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x00006164 ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x00006168 cmp r3, r2 |
| if (r3 != r2) {
0x0000616c bne 0x61bc | goto label_1;
| }
0x00006170 cmp r3, 0 |
0x00006174 ldr r2, [r5, 0x14] | r2 = *((r5 + 0x14));
0x00006178 ldr ip, [r4, 0x14] | ip = *((r4 + 0x14));
| if (r3 == 0) {
0x0000617c beq 0x61ec | goto label_5;
| }
0x00006180 sub r3, r3, 1 | r3--;
0x00006184 add r1, r2, r3 | r1 = r2 + r3;
0x00006188 sub ip, ip, 1 |
0x0000618c sub r2, r2, 1 | r2--;
| label_4:
0x00006190 ldrb r3, [r2, 1]! | r3 = *((r2 += 1));
0x00006194 ldrb lr, [ip, 1]! |
0x00006198 bic r0, r3, 0x20 | r0 = BIT_MASK (r3, 0x20);
0x0000619c cmp r3, lr |
0x000061a0 sub r0, r0, 0x41 | r0 -= 0x41;
0x000061a4 eor r3, r3, lr | r3 ^= lr;
| if (r3 == lr) {
0x000061a8 beq 0x6230 | goto label_6;
| }
0x000061ac cmp r3, 0x20 |
| if (r3 != 0x20) {
0x000061b0 bne 0x61bc | goto label_1;
| }
0x000061b4 cmp r0, 0x19 |
| if (r0 < 0x19) {
0x000061b8 bls 0x6230 | goto label_6;
| }
| }
| label_1:
0x000061bc mvn r6, 0 | r6 = ~0;
| label_2:
0x000061c0 mov r0, r6 | r0 = r6;
0x000061c4 pop {r4, r5, r6, r7, r8, pc} |
0x000061c8 ldr r2, [r5, 0x10] | r2 = *((r5 + 0x10));
0x000061cc ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x000061d0 cmp r2, r3 |
0x000061d4 bne 0x6148 |
| }
0x000061d8 ldr r1, [r4, 0x14] | r1 = *((r4 + 0x14));
0x000061dc ldr r0, [r5, 0x14] | r0 = *((r5 + 0x14));
0x000061e0 bl 0x3528 | r0 = memcmp (r0, r1, r2);
0x000061e4 cmp r0, 0 |
| if (r0 != 0) {
0x000061e8 bne 0x6148 | goto label_0;
| }
| label_5:
0x000061ec ldrb r2, [r5, 0x1c] | r2 = *((r5 + 0x1c));
0x000061f0 ldrb r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x000061f4 cmp r2, r3 |
| if (r2 != r3) {
0x000061f8 bne 0x61bc | goto label_1;
| }
0x000061fc ldr r5, [r5, 0x18] | r5 = *((r5 + 0x18));
0x00006200 ldr r4, [r4, 0x18] | r4 = *((r4 + 0x18));
0x00006204 cmp r4, 0 |
0x00006208 cmpeq r5, 0 | __asm ("cmpeq r5, 0");
| if (r4 == 0) {
0x0000620c beq 0x61c0 | goto label_2;
| }
0x00006210 cmp r4, 0 |
0x00006214 cmpne r5, 0 | __asm ("cmpne r5, 0");
| if (r4 == 0) {
0x00006218 beq 0x61bc | goto label_1;
| }
0x0000621c ldr r2, [r5] | r2 = *(r5);
0x00006220 ldr r3, [r4] | r3 = *(r4);
0x00006224 cmp r2, r3 |
| if (r2 == r3) {
0x00006228 beq 0x6114 | goto label_3;
| }
0x0000622c b 0x61bc | goto label_1;
| label_6:
0x00006230 cmp r1, r2 |
| if (r1 != r2) {
0x00006234 bne 0x6190 | goto label_4;
| }
0x00006238 b 0x61ec | goto label_5;
| }
[*] Function strcat used 1 times libmbedx509.so.2.2.1