[*] Binary protection state of libmbedx509.so.2.2.1

  
  	Partial RELRO  No Canary found   NX disabled  DSO          No RPATH     No RUNPATH   Symbols


[*] Function popen 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 popen used 1 times libmbedx509.so.2.2.1