[*] Binary protection state of libip6tc.so.0.1.0

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


[*] Function fprintf tear down of libip6tc.so.0.1.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/libip6tc.so.0.1.0 @ 0x1cbc */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.00001cbc ()                      | uint32_t fcn_00001cbc (int32_t arg1) {
                                                 |     r0 = arg1;
    0x00001cbc ldr r3, [pc, 0x78]                |     r3 = *(0x1d38);
    0x00001cc0 add r2, r0, 5                     |     r2 = r0 + 5;
    0x00001cc4 add r3, pc, r3                    |     r3 = pc + r3;
    0x00001cc8 cmp r2, 4                         |     
                                                 |     if (r2 > 4) {
                                                 |         /* switch table (5 cases) at 0x1cd4 */
    0x00001ccc addls pc, pc, r2, lsl 2           |         pc += (r2 << 2);
                                                 |     }
    0x00001cd0 b 0x1d00                          |     goto label_0;
    0x00001cd4 b 0x1d24                          |     goto label_1;
    0x00001cd8 b 0x1cf4                          |     goto label_2;
    0x00001cdc b 0x1d00                          |     goto label_0;
    0x00001ce0 b 0x1ce8                          |     goto label_3;
    0x00001ce4 b 0x1d30                          |     goto label_4;
                                                 | label_3:
    0x00001ce8 ldr r0, [pc, 0x50]                |     r0 = *(0x1d3c);
    0x00001cec add r0, pc, r0                    |     r0 = pc + r0;
    0x00001cf0 bx lr                             |     return r0;
                                                 | label_2:
    0x00001cf4 ldr r0, [pc, 0x48]                |     r0 = *(0x1d40);
    0x00001cf8 add r0, pc, r0                    |     r0 = pc + r0;
    0x00001cfc bx lr                             |     return r0;
                                                 | label_0:
    0x00001d00 ldr r1, [pc, 0x40]                |     r1 = *(0x1d44);
    0x00001d04 push {r4, lr}                     |     
    0x00001d08 ldr r3, [r3, r1]                  |     r3 = *((r3 + r1));
    0x00001d0c ldr r1, [pc, 0x38]                |     r1 = *(0x1d48);
    0x00001d10 mov r2, r0                        |     r2 = r0;
    0x00001d14 add r1, pc, r1                    |     r1 = pc + r1;
    0x00001d18 ldr r0, [r3]                      |     r0 = *(r3);
    0x00001d1c bl 0xf7c                          |     r0 = fprintf (r0, r1, r2, r3, r4)
    0x00001d20 bl 0xf64                          |     abort ();
                                                 | label_1:
    0x00001d24 ldr r0, [pc, 0x24]                |     r0 = *(0x1d4c);
    0x00001d28 add r0, pc, r0                    |     r0 = pc + r0;
    0x00001d2c bx lr                             |     return r0;
                                                 | label_4:
    0x00001d30 ldr r0, [pc, 0x1c]                |     r0 = *(0x1d50);
    0x00001d34 add r0, pc, r0                    |     r0 = pc + r0;
    0x00001d38 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/libip6tc.so.0.1.0 @ 0x3410 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00003410 ()                                  | void fcn_00003410 (int32_t arg_68h, int32_t arg2) {
                                                             |     int32_t var_4h;
                                                             |     int32_t var_8h;
                                                             |     int32_t var_ch;
                                                             |     int32_t var_10h;
                                                             |     int32_t var_14h;
                                                             |     int32_t var_18h;
                                                             |     int32_t var_1ch;
                                                             |     void * s1;
                                                             |     void * var_24h;
                                                             |     void * var_28h;
                                                             |     int32_t var_2ch;
                                                             |     int32_t var_30h;
                                                             |     int32_t var_34h;
                                                             |     int32_t var_38h;
                                                             |     int32_t var_3ch;
                                                             |     int32_t var_44h;
                                                             |     r1 = arg2;
    0x00003410 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}     |     
    0x00003414 sub sp, sp, 0x44                              |     
    0x00003418 mov r7, r3                                    |     r7 = r3;
    0x0000341c ldrb r3, [sp, 0x68]                           |     r3 = *(arg_68h);
    0x00003420 mov r6, r2                                    |     r6 = r2;
    0x00003424 str r3, [sp, 0x18]                            |     var_18h = r3;
    0x00003428 ldr r3, [pc, 0x420]                           |     r3 = *(0x384c);
    0x0000342c mov r5, r1                                    |     r5 = r1;
    0x00003430 add r3, pc, r3                                |     r3 = pc + r3;
    0x00003434 str r3, [sp, 0xc]                             |     var_ch = r3;
    0x00003438 ldr r2, [sp, 0xc]                             |     r2 = var_ch;
    0x0000343c ldr r3, [pc, 0x410]                           |     r3 = *(0x3850);
    0x00003440 mov r1, r7                                    |     r1 = r7;
    0x00003444 ldr r2, [r2, r3]                              |     r2 = *((r2 + r3));
    0x00003448 ldr r3, [pc, 0x408]                           |     r3 = *(0x3854);
    0x0000344c add r3, pc, r3                                |     r3 = pc + r3;
    0x00003450 str r2, [r3]                                  |     *(r3) = r2;
    0x00003454 bl 0x2680                                     |     r0 = fcn_00002680 (r0, r1);
    0x00003458 subs r3, r0, 0                                |     r3 = r0 - 0;
    0x0000345c str r3, [sp, 8]                               |     var_8h = r3;
    0x00003460 bne 0x3470                                    |     
                                                             |     while (1) {
    0x00003464 bl 0xff4                                      |         errno_location ();
    0x00003468 mov r3, 2                                     |         r3 = 2;
    0x0000346c b 0x3488                                      |         goto label_7;
    0x00003470 ldrh r1, [r5, 0x8e]                           |         r1 = *((r5 + 0x8e));
    0x00003474 bl 0x137c                                     |         r0 = fcn_0000137c (r0, r1);
    0x00003478 subs r4, r0, 0                                |         r4 = r0 - 0;
                                                             |         if (r4 == r0) {
    0x0000347c bne 0x3494                                    |             
    0x00003480 bl 0xff4                                      |             errno_location ();
    0x00003484 mov r3, 0xc                                   |             r3 = 0xc;
                                                             | label_7:
    0x00003488 str r3, [r0]                                  |             *(r0) = r3;
    0x0000348c mov r5, 0                                     |             r5 = 0;
    0x00003490 b 0x3780                                      |             goto label_8;
                                                             |         }
    0x00003494 add fp, r4, 0x28                              |         
    0x00003498 ldrh r2, [r5, 0x8e]                           |         r2 = *((r5 + 0x8e));
    0x0000349c mov r1, r5                                    |         r1 = r5;
    0x000034a0 mov r0, fp                                    |         r0 = fp;
    0x000034a4 bl 0xf28                                      |         memcpy (r0, r1, r2);
    0x000034a8 mov r3, 0                                     |         r3 = 0;
    0x000034ac str r3, [r4, 0xc]                             |         *((r4 + 0xc)) = r3;
    0x000034b0 ldr r2, [sp, 0x18]                            |         r2 = var_18h;
    0x000034b4 mov r1, r4                                    |         r1 = r4;
    0x000034b8 mov r0, r7                                    |         r0 = r7;
    0x000034bc bl 0x2c60                                     |         r0 = fcn_00002c60 (r0, r1);
    0x000034c0 subs r5, r0, 0                                |         r5 = r0 - 0;
                                                             |         if (r5 == r0) {
    0x000034c4 bne 0x34d4                                    |             
                                                             | label_6:
    0x000034c8 mov r0, r4                                    |             r0 = r4;
    0x000034cc bl 0x103c                                     |             free (r0);
    0x000034d0 b 0x3780                                      |             goto label_8;
                                                             |         }
    0x000034d4 ldr r3, [r4, 0x1c]                            |         r3 = *((r4 + 0x1c));
    0x000034d8 cmp r3, 3                                     |         
    0x000034dc str r3, [sp, 4]                               |         var_4h = r3;
                                                             |         if (r3 == 3) {
    0x000034e0 bne 0x34f8                                    |             
    0x000034e4 ldr r3, [r4, 0x20]                            |             r3 = *((r4 + 0x20));
    0x000034e8 cmp r3, 0                                     |             
                                                             |             if (r3 == 0) {
    0x000034ec ldrne r2, [r3, 0x2c]                          |                 r2 = *((r3 + 0x2c));
                                                             |             }
                                                             |             if (r3 == 0) {
    0x000034f0 subne r2, r2, 1                               |                 r2--;
                                                             |             }
                                                             |             if (r3 != 0) {
    0x000034f4 strne r2, [r3, 0x2c]                          |                 *((r3 + 0x2c)) = r2;
                                                             |                 goto label_9;
                                                             |             }
                                                             |         }
                                                             | label_9:
    0x000034f8 ldr r3, [sp, 8]                               |         r3 = var_8h;
    0x000034fc ldr r5, [r3, 0x54]!                           |         r5 = *((r3 += 0x54));
    0x00003500 str r3, [sp, 0x10]                            |         var_10h = r3;
    0x00003504 add r3, r4, 0x38                              |         r3 = r4 + 0x38;
    0x00003508 str r3, [sp, 0x20]                            |         s1 = r3;
    0x0000350c add r3, r4, 0x48                              |         r3 = r4 + 0x48;
    0x00003510 str r3, [sp, 0x24]                            |         var_24h = r3;
    0x00003514 add r3, r4, 0x58                              |         r3 = r4 + 0x58;
    0x00003518 str r3, [sp, 0x28]                            |         var_28h = r3;
    0x0000351c add r3, r4, 0x78                              |         r3 = r4 + 0x78;
    0x00003520 str r3, [sp, 0x2c]                            |         var_2ch = r3;
    0x00003524 add r3, r6, 0xa8                              |         r3 = r6 + 0xa8;
    0x00003528 str r3, [sp, 0x30]                            |         var_30h = r3;
    0x0000352c add r3, r4, 0xd0                              |         r3 = r4 + 0xd0;
    0x00003530 str r3, [sp, 0x34]                            |         var_34h = r3;
                                                             | label_1:
    0x00003534 ldr r3, [sp, 0x10]                            |         r3 = var_10h;
    0x00003538 cmp r5, r3                                    |         
                                                             |         if (r5 != r3) {
    0x0000353c bne 0x354c                                    |             goto label_10;
                                                             |         }
    0x00003540 mov r0, r4                                    |         r0 = r4;
    0x00003544 bl 0x103c                                     |         free (r0);
    0x00003548 b 0x3464                                      |         
                                                             |     }
                                                             | label_10:
    0x0000354c add r3, r5, 0x28                              |     r3 = r5 + 0x28;
    0x00003550 mov r2, 0x10                                  |     r2 = 0x10;
    0x00003554 mov r1, r3                                    |     r1 = r3;
    0x00003558 mov r0, fp                                    |     r0 = fp;
    0x0000355c str r3, [sp, 0x14]                            |     var_14h = r3;
    0x00003560 bl 0xfac                                      |     r0 = memcmp (r0, r1, r2);
    0x00003564 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00003568 bne 0x3744                                    |         goto label_3;
                                                             |     }
    0x0000356c mov r2, 0x10                                  |     r2 = 0x10;
    0x00003570 add r1, r5, 0x38                              |     r1 = r5 + 0x38;
    0x00003574 ldr r0, [sp, 0x20]                            |     r0 = s1;
    0x00003578 bl 0xfac                                      |     r0 = memcmp (r0, r1, r2);
    0x0000357c cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00003580 bne 0x3744                                    |         goto label_3;
                                                             |     }
    0x00003584 mov r2, 0x10                                  |     r2 = 0x10;
    0x00003588 add r1, r5, 0x48                              |     r1 = r5 + 0x48;
    0x0000358c ldr r0, [sp, 0x24]                            |     r0 = var_24h;
    0x00003590 bl 0xfac                                      |     r0 = memcmp (r0, r1, r2);
    0x00003594 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00003598 bne 0x3744                                    |         goto label_3;
                                                             |     }
    0x0000359c mov r2, 0x10                                  |     r2 = 0x10;
    0x000035a0 add r1, r5, 0x58                              |     r1 = r5 + 0x58;
    0x000035a4 ldr r0, [sp, 0x28]                            |     r0 = var_28h;
    0x000035a8 bl 0xfac                                      |     r0 = memcmp (r0, r1, r2);
    0x000035ac cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000035b0 bne 0x3744                                    |         goto label_3;
                                                             |     }
    0x000035b4 ldr r2, [r4, 0xa8]                            |     r2 = *((r4 + 0xa8));
    0x000035b8 ldr r3, [r5, 0xa8]                            |     r3 = *((r5 + 0xa8));
    0x000035bc cmp r2, r3                                    |     
                                                             |     if (r2 != r3) {
    0x000035c0 bne 0x3744                                    |         goto label_3;
                                                             |     }
    0x000035c4 ldrb r2, [r4, 0xac]                           |     r2 = *((r4 + 0xac));
    0x000035c8 ldrb r3, [r5, 0xac]                           |     r3 = *((r5 + 0xac));
    0x000035cc cmp r2, r3                                    |     
                                                             |     if (r2 != r3) {
    0x000035d0 bne 0x3744                                    |         goto label_3;
                                                             |     }
    0x000035d4 add r3, r4, 0x68                              |     r3 = r4 + 0x68;
    0x000035d8 add r2, r5, 0x68                              |     r2 = r5 + 0x68;
                                                             |     do {
    0x000035dc ldrb r1, [r3, 0x20]                           |         r1 = *((r3 + 0x20));
    0x000035e0 ldrb lr, [r2, 0x20]                           |         
    0x000035e4 mov ip, r3                                    |         
    0x000035e8 cmp r1, lr                                    |         
    0x000035ec mov r0, r2                                    |         r0 = r2;
                                                             |         if (r1 != lr) {
    0x000035f0 bne 0x3744                                    |             goto label_3;
                                                             |         }
    0x000035f4 ldrb ip, [ip]                                 |         ip = *(ip);
    0x000035f8 ldrb r0, [r0]                                 |         r0 = *(r0);
    0x000035fc and ip, ip, r1                                |         
    0x00003600 and r1, r1, r0                                |         r1 &= r0;
    0x00003604 cmp ip, r1                                    |         
    0x00003608 add r3, r3, 1                                 |         r3++;
    0x0000360c add r2, r2, 1                                 |         r2++;
                                                             |         if (ip != r1) {
    0x00003610 bne 0x3744                                    |             goto label_3;
                                                             |         }
    0x00003614 ldrb r1, [r3, 0x2f]                           |         r1 = *((r3 + 0x2f));
    0x00003618 ldrb r0, [r2, 0x2f]                           |         r0 = *((r2 + 0x2f));
    0x0000361c cmp r1, r0                                    |         
                                                             |         if (r1 != r0) {
    0x00003620 bne 0x3744                                    |             goto label_3;
                                                             |         }
    0x00003624 ldrb r0, [r3, 0xf]                            |         r0 = *((r3 + 0xf));
    0x00003628 ldrb ip, [r2, 0xf]                            |         ip = *((r2 + 0xf));
    0x0000362c and r0, r0, r1                                |         r0 &= r1;
    0x00003630 and r1, r1, ip                                |         r1 &= ip;
    0x00003634 cmp r0, r1                                    |         
                                                             |         if (r0 != r1) {
    0x00003638 bne 0x3744                                    |             goto label_3;
                                                             |         }
    0x0000363c ldr r1, [sp, 0x2c]                            |         r1 = var_2ch;
    0x00003640 cmp r3, r1                                    |         
    0x00003644 bne 0x35dc                                    |         
                                                             |     } while (r3 != r1);
    0x00003648 ldr r2, [r4, 0xb4]                            |     r2 = *((r4 + 0xb4));
    0x0000364c ldr r3, [r5, 0xb4]                            |     r3 = *((r5 + 0xb4));
    0x00003650 cmp r2, r3                                    |     
                                                             |     if (r2 != r3) {
    0x00003654 bne 0x3744                                    |         goto label_3;
                                                             |     }
    0x00003658 ldr r6, [sp, 0x30]                            |     r6 = var_30h;
    0x0000365c ldrh sb, [r4, 0xb4]                           |     sb = *((r4 + 0xb4));
    0x00003660 add r3, r5, 0xd0                              |     r3 = r5 + 0xd0;
    0x00003664 mov r8, 0xa8                                  |     r8 = 0xa8;
    0x00003668 str r3, [sp, 0x1c]                            |     var_1ch = r3;
                                                             |     do {
    0x0000366c cmp r8, sb                                    |         
                                                             |         if (r8 > sb) {
    0x00003670 blo 0x36bc                                    |             
    0x00003674 cmn r6, 0x20                                  |             
                                                             |             if (r6 == 0x20) {
    0x00003678 beq 0x3744                                    |                 goto label_3;
                                                             |             }
    0x0000367c ldr r3, [r5, 0x1c]                            |             r3 = *((r5 + 0x1c));
    0x00003680 ldr r2, [sp, 4]                               |             r2 = var_4h;
    0x00003684 cmp r2, r3                                    |             
                                                             |             if (r2 != r3) {
    0x00003688 bne 0x3744                                    |                 goto label_3;
                                                             |             }
    0x0000368c ldr r2, [sp, 0x14]                            |             r2 = var_14h;
    0x00003690 ldrh r3, [r5, 0xb4]                           |             r3 = *((r5 + 0xb4));
    0x00003694 add r8, fp, sb                                |             r8 = fp + sb;
    0x00003698 add sl, r2, r3                                |             sl = r2 + r3;
    0x0000369c ldr r2, [sp, 4]                               |             r2 = var_4h;
    0x000036a0 cmp r2, 3                                     |             
                                                             |             if (r2 > 3) {
                                                             |                 /* switch table (4 cases) at 0x36ac */
    0x000036a4 addls pc, pc, r2, lsl 2                       |                 pc += (r2 << 2);
                                                             |             }
    0x000036a8 b 0x37f4                                      |             goto label_11;
    0x000036ac b 0x378c                                      |             goto label_12;
    0x000036b0 b 0x3798                                      |             goto label_13;
    0x000036b4 b 0x3768                                      |             goto label_4;
    0x000036b8 b 0x374c                                      |             goto label_14;
                                                             |         }
    0x000036bc ldr r3, [sp, 0x34]                            |         r3 = var_34h;
    0x000036c0 ldr ip, [sp, 0x1c]                            |         ip = var_1ch;
    0x000036c4 add r2, fp, r8                                |         r2 = fp + r8;
    0x000036c8 sub r1, r2, r3                                |         r1 = r2 - r3;
    0x000036cc ldrh r0, [fp, r8]                             |         r0 = *((fp + r8));
    0x000036d0 ldrh sl, [ip, r1]                             |         sl = *((ip + r1));
    0x000036d4 ldr r3, [sp, 0x1c]                            |         r3 = var_1ch;
    0x000036d8 cmp sl, r0                                    |         
    0x000036dc add r3, r3, r1                                |         r3 += r1;
                                                             |         if (sl != r0) {
    0x000036e0 bne 0x3744                                    |             goto label_3;
                                                             |         }
    0x000036e4 add r1, r3, 2                                 |         r1 = r3 + 2;
    0x000036e8 add r0, r2, 2                                 |         r0 = r2 + 2;
    0x000036ec str r3, [sp, 0x3c]                            |         var_3ch = r3;
    0x000036f0 str r2, [sp, 0x38]                            |         var_38h = r2;
    0x000036f4 bl 0xfc4                                      |         r0 = strcmp (r0, r1);
    0x000036f8 cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x000036fc bne 0x3744                                    |             goto label_3;
                                                             |         }
    0x00003700 ldr r2, [sp, 0x38]                            |         r2 = var_38h;
    0x00003704 ldr r3, [sp, 0x3c]                            |         r3 = var_3ch;
    0x00003708 add r0, r2, 0x20                              |         r0 = r2 + 0x20;
    0x0000370c add r3, r3, 0x20                              |         r3 += 0x20;
    0x00003710 add r2, r6, 0x20                              |         r2 = r6 + 0x20;
    0x00003714 add ip, r6, sl                                |         
                                                             | label_0:
    0x00003718 cmp ip, r2                                    |         
    0x0000371c mov r6, r2                                    |         r6 = r2;
                                                             |         if (ip != r2) {
    0x00003720 addeq r8, r8, sl                              |             r8 += sl;
                                                             |         }
    0x00003724 beq 0x366c                                    |         
                                                             |     } while (ip == r2);
    0x00003728 ldrb lr, [r0], 1                              |     
    0x0000372c ldrb r1, [r3], 1                              |     r1 = *(r3);
                                                             |     r3++;
    0x00003730 add r2, r2, 1                                 |     r2++;
    0x00003734 eor r1, r1, lr                                |     r1 ^= lr;
    0x00003738 ldrb lr, [r6]                                 |     
    0x0000373c tst r1, lr                                    |     
                                                             |     if ((r1 & lr) == 0) {
    0x00003740 beq 0x3718                                    |         goto label_0;
                                                             |     }
                                                             |     do {
                                                             | label_3:
    0x00003744 ldr r5, [r5]                                  |         r5 = *(r5);
    0x00003748 b 0x3534                                      |         goto label_1;
                                                             | label_14:
    0x0000374c ldr r3, [r4, 0x20]                            |         r3 = *((r4 + 0x20));
    0x00003750 ldr r2, [r5, 0x20]                            |         r2 = *((r5 + 0x20));
                                                             | label_2:
    0x00003754 sub r3, r3, r2                                |         r3 -= r2;
    0x00003758 clz r3, r3                                    |         r3 &= r3;
    0x0000375c lsr r3, r3, 5                                 |         r3 >>= 5;
    0x00003760 cmp r3, 0                                     |         
    0x00003764 beq 0x3744                                    |         
                                                             |     } while (r3 == 0);
                                                             | label_4:
    0x00003768 ldr r3, [sp, 0x18]                            |     r3 = var_18h;
    0x0000376c cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00003770 beq 0x3818                                    |         goto label_15;
                                                             |     }
    0x00003774 mov r0, r4                                    |     r0 = r4;
    0x00003778 bl 0x103c                                     |     free (r0);
    0x0000377c mov r5, 1                                     |     r5 = 1;
                                                             | label_8:
    0x00003780 mov r0, r5                                    |     r0 = r5;
    0x00003784 add sp, sp, 0x44                              |     
    0x00003788 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}      |     
                                                             | label_12:
    0x0000378c ldr r3, [r8, 0x20]                            |     r3 = *((r8 + 0x20));
    0x00003790 ldr r2, [sl, 0x20]                            |     r2 = *((sl + 0x20));
    0x00003794 b 0x3754                                      |     goto label_2;
                                                             | label_13:
    0x00003798 ldr r1, [sp, 0x14]                            |     r1 = var_14h;
    0x0000379c ldrh r2, [fp, sb]                             |     r2 = *((fp + sb));
    0x000037a0 ldrh sb, [r1, r3]                             |     sb = *((r1 + r3));
    0x000037a4 cmp sb, r2                                    |     
                                                             |     if (sb != r2) {
    0x000037a8 bne 0x3744                                    |         goto label_3;
                                                             |     }
    0x000037ac add r1, sl, 2                                 |     r1 = sl + 2;
    0x000037b0 add r0, r8, 2                                 |     r0 = r8 + 2;
    0x000037b4 bl 0xfc4                                      |     r0 = strcmp (r0, r1);
    0x000037b8 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000037bc moveq r3, 0x20                                |         r3 = 0x20;
                                                             |     }
                                                             |     if (r0 == 0) {
    0x000037c0 subeq sb, sb, 0x20                            |         sb -= 0x20;
                                                             |         goto label_16;
                                                             |     }
                                                             |     if (r0 != 0) {
                                                             | label_16:
    0x000037c4 bne 0x3744                                    |         goto label_3;
                                                             |     }
                                                             | label_5:
    0x000037c8 sub r2, r3, 0x20                              |     r2 = r3 - 0x20;
    0x000037cc cmp r2, sb                                    |     
                                                             |     if (r2 >= sb) {
    0x000037d0 bhs 0x3768                                    |         goto label_4;
                                                             |     }
    0x000037d4 ldrb r1, [sl, r3]                             |     r1 = *((sl + r3));
    0x000037d8 ldrb r2, [r8, r3]                             |     r2 = *((r8 + r3));
    0x000037dc eor r2, r2, r1                                |     r2 ^= r1;
    0x000037e0 ldrb r1, [r6, r3]                             |     r1 = *((r6 + r3));
    0x000037e4 add r3, r3, 1                                 |     r3++;
    0x000037e8 tst r2, r1                                    |     
                                                             |     if ((r2 & r1) == 0) {
    0x000037ec beq 0x37c8                                    |         goto label_5;
                                                             |     }
    0x000037f0 b 0x3744                                      |     goto label_3;
                                                             | label_11:
    0x000037f4 ldr r2, [sp, 0xc]                             |     r2 = var_ch;
    0x000037f8 ldr r3, [pc, 0x5c]                            |     r3 = *(0x3858);
    0x000037fc ldr r1, [pc, 0x5c]                            |     r1 = *(0x385c);
    0x00003800 ldr r3, [r2, r3]                              |     r3 = *((r2 + r3));
    0x00003804 add r1, pc, r1                                |     r1 = pc + r1;
    0x00003808 ldr r2, [sp, 4]                               |     r2 = var_4h;
    0x0000380c ldr r0, [r3]                                  |     r0 = *(0x3858);
    0x00003810 bl 0xf7c                                      |     r0 = fprintf (r0, r1, r2, r3)
    0x00003814 bl 0xf64                                      |     abort ();
                                                             | label_15:
    0x00003818 ldr r3, [r7, 0x14]                            |     r3 = *((r7 + 0x14));
    0x0000381c ldr r2, [sp, 8]                               |     r2 = var_8h;
    0x00003820 cmp r3, r5                                    |     
                                                             |     if (r3 != r5) {
    0x00003824 ldreq r3, [r5, 4]                             |         r3 = *((r5 + 4));
                                                             |     }
    0x00003828 mov r0, r5                                    |     r0 = r5;
                                                             |     if (r3 != r5) {
    0x0000382c streq r3, [r7, 0x14]                          |         *((r7 + 0x14)) = r3;
                                                             |     }
    0x00003830 ldr r3, [sp, 8]                               |     r3 = var_8h;
    0x00003834 mov r5, 1                                     |     r5 = 1;
    0x00003838 ldr r3, [r3, 0x50]                            |     r3 = *((r3 + 0x50));
    0x0000383c sub r3, r3, 1                                 |     r3--;
    0x00003840 str r3, [r2, 0x50]                            |     *((r2 + 0x50)) = r3;
    0x00003844 bl 0x1de4                                     |     fcn_00001de4 (r0);
    0x00003848 str r5, [r7, 4]                               |     *((r7 + 4)) = r5;
    0x0000384c b 0x34c8                                      |     goto label_6;
                                                             | }
    ; 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/libip6tc.so.0.1.0 @ 0x1734 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.dump_entries6 ()                             | void dump_entries6 (int32_t arg1) {
                                                             |     int32_t var_0h;
                                                             |     int32_t var_4h;
                                                             |     int32_t var_ch;
                                                             |     char * s;
                                                             |     int32_t var_3ch;
                                                             |     r0 = arg1;
    0x00001734 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}     |     
    0x00001738 ldr r8, [pc, 0x4f4]                           |     r8 = *(0x1c30);
    0x0000173c ldr r3, [pc, 0x4f4]                           |     r3 = *(0x1c34);
    0x00001740 add r8, pc, r8                                |     r8 = pc + r8;
    0x00001744 ldr r2, [r8, r3]                              |     r2 = *(0x1c30);
    0x00001748 ldr r3, [pc, 0x4ec]                           |     r3 = *(0x1c38);
    0x0000174c mov r5, r0                                    |     r5 = r0;
    0x00001750 add r3, pc, r3                                |     r3 = pc + r3;
    0x00001754 str r2, [r3]                                  |     *(r3) = r2;
    0x00001758 ldr r1, [pc, 0x4e0]                           |     r1 = *(0x1c3c);
    0x0000175c ldr r3, [r0, 0x7c]                            |     r3 = *((r0 + 0x7c));
    0x00001760 ldr r0, [pc, 0x4dc]                           |     r0 = *(0x1c40);
    0x00001764 sub sp, sp, 0x3c                              |     
    0x00001768 ldr r2, [r3, 0x20]                            |     r2 = *(0x1c58);
    0x0000176c add r1, pc, r1                                |     r1 = pc + r1;
    0x00001770 add r0, pc, r0                                |     r0 = pc + r0;
    0x00001774 bl 0xef8                                      |     printf (r0, r1, r2, r3, r4, r5);
    0x00001778 ldr r0, [pc, 0x4c8]                           |     r0 = *(0x1c44);
    0x0000177c add r1, r5, 0x28                              |     r1 = r5 + 0x28;
    0x00001780 add r0, pc, r0                                |     r0 = pc + r0;
    0x00001784 bl 0xef8                                      |     printf (r0, r1);
    0x00001788 ldr r3, [r5, 0x5c]                            |     r3 = *((r5 + 0x5c));
    0x0000178c ldr r0, [pc, 0x4b8]                           |     r0 = *(0x1c48);
    0x00001790 str r3, [sp, 4]                               |     var_4h = r3;
    0x00001794 ldr r3, [r5, 0x58]                            |     r3 = *((r5 + 0x58));
    0x00001798 add r1, r5, 0x4c                              |     r1 = r5 + 0x4c;
    0x0000179c str r3, [sp]                                  |     *(sp) = r3;
    0x000017a0 add r0, pc, r0                                |     r0 = pc + r0;
    0x000017a4 ldm r1, {r1, r2, r3}                          |     r1 = *(r1);
                                                             |     r2 = *((r1 + 4));
                                                             |     r3 = *((r1 + 8));
    0x000017a8 bl 0xef8                                      |     printf (r0, r1, r2, r3);
    0x000017ac ldr r3, [r5, 0x70]                            |     r3 = *((r5 + 0x70));
    0x000017b0 ldr r0, [pc, 0x498]                           |     r0 = *(0x1c4c);
    0x000017b4 str r3, [sp, 4]                               |     var_4h = r3;
    0x000017b8 ldr r3, [r5, 0x6c]                            |     r3 = *((r5 + 0x6c));
    0x000017bc add r1, r5, 0x60                              |     r1 = r5 + 0x60;
    0x000017c0 str r3, [sp]                                  |     *(sp) = r3;
    0x000017c4 add r0, pc, r0                                |     r0 = pc + r0;
    0x000017c8 ldm r1, {r1, r2, r3}                          |     r1 = *(r1);
                                                             |     r2 = *((r1 + 4));
                                                             |     r3 = *((r1 + 8));
    0x000017cc bl 0xef8                                      |     printf (r0, r1, r2, r3);
    0x000017d0 ldr sl, [pc, 0x47c]                           |     sl = *(0x00001c54);
    0x000017d4 ldr fp, [pc, 0x47c]                           |     fp = *(0x00001c58);
    0x000017d8 mov r7, 0                                     |     r7 = 0;
    0x000017dc add sl, pc, sl                                |     sl = pc + sl;
    0x000017e0 add fp, pc, fp                                |     
                                                             | label_0:
    0x000017e4 ldr r3, [r5, 0x7c]                            |     r3 = *((r5 + 0x7c));
    0x000017e8 ldr r0, [r3, 0x20]                            |     r0 = *((r3 + 0x20));
    0x000017ec cmp r0, r7                                    |     
                                                             |     if (r0 <= r7) {
    0x000017f0 bhi 0x17fc                                    |         
    0x000017f4 add sp, sp, 0x3c                              |         
    0x000017f8 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}      |         
                                                             |     }
    0x000017fc add r3, r3, 0x28                              |     r3 += 0x28;
    0x00001800 mov r1, 0                                     |     r1 = 0;
    0x00001804 add r4, r3, r7                                |     r4 = r3 + r7;
    0x00001808 mov r2, r1                                    |     r2 = r1;
                                                             |     do {
    0x0000180c cmp r0, r2                                    |         
                                                             |         if (r0 <= r2) {
    0x00001810 bhi 0x1834                                    |             
    0x00001814 ldr r3, [pc, 0x440]                           |             r3 = *(0x1c58);
    0x00001818 ldr r1, [pc, 0x440]                           |             r1 = *(0x1c5c);
    0x0000181c ldr r3, [r8, r3]                              |             r3 = *((r8 + r3));
    0x00001820 mov r2, r7                                    |             r2 = r7;
    0x00001824 add r1, pc, r1                                |             r1 = pc + r1;
    0x00001828 ldr r0, [r3]                                  |             r0 = *(0x1c58);
    0x0000182c bl 0xf7c                                      |             r0 = fprintf (r0, r1, r2, r3)
    0x00001830 bl 0xf64                                      |             abort ();
                                                             |         }
    0x00001834 add ip, r3, r2                                |         
    0x00001838 cmp r4, ip                                    |         
                                                             |         if (r4 == ip) {
    0x0000183c beq 0x1bdc                                    |             goto label_11;
                                                             |         }
    0x00001840 ldrh ip, [ip, 0x8e]                           |         ip = *((ip + 0x8e));
    0x00001844 add r1, r1, 1                                 |         r1++;
    0x00001848 add r2, r2, ip                                |         r2 += ip;
    0x0000184c b 0x180c                                      |         
                                                             |     } while (1);
                                                             | label_10:
    0x00001850 ldr r3, [r1, 0x10]                            |     r3 = *((r1 + 0x10));
    0x00001854 ldr r2, [r1, 0x1c]                            |     r2 = *((r1 + 0x1c));
    0x00001858 cmp r3, r2                                    |     
                                                             |     if (r3 >= r2) {
    0x0000185c bhs 0x1adc                                    |         goto label_12;
                                                             |     }
    0x00001860 add r2, r3, 1                                 |     r2 = r3 + 1;
    0x00001864 str r2, [r1, 0x10]                            |     *((r1 + 0x10)) = r2;
    0x00001868 mov r2, 0x2f                                  |     r2 = 0x2f;
    0x0000186c strb r2, [r3]                                 |     *(r3) = r2;
                                                             | label_1:
    0x00001870 add r1, r4, 0x20                              |     r1 = r4 + 0x20;
    0x00001874 mov r0, r1                                    |     r0 = r1;
    0x00001878 str r1, [sp, 0xc]                             |     var_ch = r1;
    0x0000187c bl 0x16b8                                     |     fcn_000016b8 (r0);
    0x00001880 ldr r1, [sp, 0xc]                             |     r1 = var_ch;
    0x00001884 cmn r0, 1                                     |     
                                                             |     if (r0 == 1) {
    0x00001888 beq 0x1ae8                                    |         goto label_13;
                                                             |     }
    0x0000188c mov r1, r0                                    |     r1 = r0;
    0x00001890 ldr r0, [pc, 0x3cc]                           |     r0 = *(0x1c60);
    0x00001894 add r0, pc, r0                                |     r0 = pc + r0;
    0x00001898 bl 0xef8                                      |     printf (r0, r1);
                                                             | label_2:
    0x0000189c ldr r1, [sb]                                  |     r1 = *(sb);
    0x000018a0 ldr r3, [r1, 0x34]                            |     r3 = *((r1 + 0x34));
    0x000018a4 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x000018a8 beq 0x1b10                                    |         goto label_14;
                                                             |     }
    0x000018ac ldr r3, [r1, 0x10]                            |     r3 = *((r1 + 0x10));
    0x000018b0 ldr r2, [r1, 0x1c]                            |     r2 = *((r1 + 0x1c));
    0x000018b4 cmp r3, r2                                    |     
                                                             |     if (r3 >= r2) {
    0x000018b8 bhs 0x1b04                                    |         goto label_15;
                                                             |     }
    0x000018bc add r2, r3, 1                                 |     r2 = r3 + 1;
    0x000018c0 str r2, [r1, 0x10]                            |     *((r1 + 0x10)) = r2;
    0x000018c4 mov r2, 0xa                                   |     r2 = 0xa;
    0x000018c8 strb r2, [r3]                                 |     *(r3) = r2;
                                                             | label_3:
    0x000018cc ldr r0, [pc, 0x394]                           |     r0 = *(0x1c64);
    0x000018d0 add r0, pc, r0                                |     r0 = pc + r0;
    0x000018d4 bl 0xf34                                      |     puts (r0);
    0x000018d8 mov r3, 0x28                                  |     r3 = 0x28;
    0x000018dc add r1, r4, 0x10                              |     r1 = r4 + 0x10;
    0x000018e0 mov r2, r6                                    |     r2 = r6;
    0x000018e4 mov r0, 0xa                                   |     r0 = 0xa;
    0x000018e8 bl 0x1000                                     |     inet_ntop ();
    0x000018ec mov r0, r6                                    |     r0 = r6;
    0x000018f0 bl 0xf34                                      |     puts (r0);
    0x000018f4 ldr r1, [sb]                                  |     r1 = *(sb);
    0x000018f8 ldr r3, [r1, 0x34]                            |     r3 = *((r1 + 0x34));
    0x000018fc cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00001900 beq 0x1b28                                    |         goto label_16;
                                                             |     }
    0x00001904 ldr r3, [r1, 0x10]                            |     r3 = *((r1 + 0x10));
    0x00001908 ldr r2, [r1, 0x1c]                            |     r2 = *((r1 + 0x1c));
    0x0000190c cmp r3, r2                                    |     
                                                             |     if (r3 >= r2) {
    0x00001910 bhs 0x1b1c                                    |         goto label_17;
                                                             |     }
    0x00001914 add r2, r3, 1                                 |     r2 = r3 + 1;
    0x00001918 str r2, [r1, 0x10]                            |     *((r1 + 0x10)) = r2;
    0x0000191c mov r2, 0x2f                                  |     r2 = 0x2f;
    0x00001920 strb r2, [r3]                                 |     *(r3) = r2;
                                                             | label_4:
    0x00001924 add r1, r4, 0x30                              |     r1 = r4 + 0x30;
    0x00001928 mov r0, r1                                    |     r0 = r1;
    0x0000192c str r1, [sp, 0xc]                             |     var_ch = r1;
    0x00001930 bl 0x16b8                                     |     fcn_000016b8 (r0);
    0x00001934 ldr r1, [sp, 0xc]                             |     r1 = var_ch;
    0x00001938 cmn r0, 1                                     |     
                                                             |     if (r0 == 1) {
    0x0000193c beq 0x1b34                                    |         goto label_18;
                                                             |     }
    0x00001940 mov r1, r0                                    |     r1 = r0;
    0x00001944 ldr r0, [pc, 0x320]                           |     r0 = *(0x1c68);
    0x00001948 add r0, pc, r0                                |     r0 = pc + r0;
    0x0000194c bl 0xef8                                      |     printf (r0, r1);
                                                             | label_5:
    0x00001950 ldr r1, [sb]                                  |     r1 = *(sb);
    0x00001954 ldr r3, [r1, 0x34]                            |     r3 = *((r1 + 0x34));
    0x00001958 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x0000195c beq 0x1b5c                                    |         goto label_19;
                                                             |     }
    0x00001960 ldr r3, [r1, 0x10]                            |     r3 = *((r1 + 0x10));
    0x00001964 ldr r2, [r1, 0x1c]                            |     r2 = *((r1 + 0x1c));
    0x00001968 cmp r3, r2                                    |     
                                                             |     if (r3 >= r2) {
    0x0000196c bhs 0x1b50                                    |         goto label_20;
                                                             |     }
    0x00001970 add r2, r3, 1                                 |     r2 = r3 + 1;
    0x00001974 str r2, [r1, 0x10]                            |     *((r1 + 0x10)) = r2;
    0x00001978 mov r2, 0xa                                   |     r2 = 0xa;
    0x0000197c strb r2, [r3]                                 |     *(r3) = r2;
                                                             | label_6:
    0x00001980 ldr r0, [pc, 0x2e8]                           |     r0 = *(0x1c6c);
    0x00001984 add r1, r4, 0x40                              |     r1 = r4 + 0x40;
    0x00001988 add r0, pc, r0                                |     r0 = pc + r0;
    0x0000198c bl 0xef8                                      |     printf (r0, r1, r2);
    0x00001990 add sb, r4, 0x60                              |     sb = r4 + 0x60;
    0x00001994 add r6, r4, 0x70                              |     r6 = r4 + 0x70;
                                                             |     do {
    0x00001998 ldrb r3, [sb], 1                              |         r3 = *(sb);
                                                             |         sb++;
    0x0000199c cmp r3, 0                                     |         
                                                             |         if (r3 != 0) {
    0x000019a0 moveq r0, 0x2e                                |             r0 = 0x2e;
                                                             |         }
                                                             |         if (r3 == 0) {
    0x000019a4 movne r0, 0x58                                |             r0 = 0x58;
                                                             |         }
    0x000019a8 bl 0xee0                                      |         putchar (r0);
    0x000019ac cmp r6, sb                                    |         
    0x000019b0 bne 0x1998                                    |         
                                                             |     } while (r6 != sb);
    0x000019b4 ldr r0, [pc, 0x2b8]                           |     r0 = *(0x1c70);
    0x000019b8 add r1, r4, 0x50                              |     r1 = r4 + 0x50;
    0x000019bc add r0, pc, r0                                |     r0 = pc + r0;
    0x000019c0 bl 0xef8                                      |     printf (r0, r1);
    0x000019c4 add sb, r4, 0x80                              |     sb = r4 + 0x80;
                                                             |     do {
    0x000019c8 ldrb r3, [r6], 1                              |         r3 = *(r6);
                                                             |         r6++;
    0x000019cc cmp r3, 0                                     |         
                                                             |         if (r3 != 0) {
    0x000019d0 moveq r0, 0x2e                                |             r0 = 0x2e;
                                                             |         }
                                                             |         if (r3 == 0) {
    0x000019d4 movne r0, 0x58                                |             r0 = 0x58;
                                                             |         }
    0x000019d8 bl 0xee0                                      |         putchar (r0);
    0x000019dc cmp sb, r6                                    |         
    0x000019e0 bne 0x19c8                                    |         
                                                             |     } while (sb != r6);
    0x000019e4 ldr r0, [pc, 0x28c]                           |     r0 = *(0x1c74);
    0x000019e8 ldrh r1, [r4, 0x80]                           |     r1 = *((r4 + 0x80));
    0x000019ec add r0, pc, r0                                |     r0 = pc + r0;
    0x000019f0 bl 0xef8                                      |     printf (r0, r1);
    0x000019f4 ldrb r3, [r4, 0x83]                           |     r3 = *((r4 + 0x83));
    0x000019f8 tst r3, 2                                     |     
                                                             |     if ((r3 & 2) != 0) {
    0x000019fc beq 0x1a10                                    |         
    0x00001a00 ldr r0, [pc, 0x274]                           |         r0 = *(0x1c78);
    0x00001a04 ldrb r1, [r4, 0x82]                           |         r1 = *((r4 + 0x82));
    0x00001a08 add r0, pc, r0                                |         r0 = pc + r0;
    0x00001a0c bl 0xef8                                      |         printf (r0, r1);
                                                             |     }
    0x00001a10 ldr r0, [pc, 0x268]                           |     r0 = *(0x1c7c);
    0x00001a14 ldrb r1, [r4, 0x83]                           |     r1 = *((r4 + 0x83));
    0x00001a18 add r0, pc, r0                                |     r0 = pc + r0;
    0x00001a1c bl 0xef8                                      |     printf (r0, r1);
    0x00001a20 ldr r0, [pc, 0x25c]                           |     r0 = *(0x1c80);
    0x00001a24 ldrb r1, [r4, 0x84]                           |     r1 = *((r4 + 0x84));
    0x00001a28 add r0, pc, r0                                |     r0 = pc + r0;
    0x00001a2c bl 0xef8                                      |     printf (r0, r1);
    0x00001a30 ldrd r0, r1, [r4, 0xa0]                       |     __asm ("ldrd r0, r1, [r4, 0xa0]");
    0x00001a34 ldrd r2, r3, [r4, 0x98]                       |     __asm ("ldrd r2, r3, [r4, 0x98]");
    0x00001a38 strd r0, r1, [sp]                             |     __asm ("strd r0, r1, [sp]");
    0x00001a3c ldr r0, [pc, 0x244]                           |     r0 = *(0x1c84);
    0x00001a40 mov r6, 0xa8                                  |     r6 = 0xa8;
    0x00001a44 add r0, pc, r0                                |     r0 = pc + r0;
    0x00001a48 bl 0xef8                                      |     printf (r0, r1, r2, r3, r4, r5, r6);
    0x00001a4c ldr r0, [pc, 0x238]                           |     r0 = *(0x1c88);
    0x00001a50 ldr r1, [r4, 0x88]                            |     r1 = *((r4 + 0x88));
    0x00001a54 add r0, pc, r0                                |     r0 = pc + r0;
    0x00001a58 bl 0xef8                                      |     printf (r0, r1);
                                                             |     do {
    0x00001a5c ldrh r3, [r4, 0x8c]                           |         r3 = *((r4 + 0x8c));
    0x00001a60 cmp r6, r3                                    |         
                                                             |         if (r6 > r3) {
    0x00001a64 blo 0x1b68                                    |             
    0x00001a68 ldr r0, [pc, 0x220]                           |             r0 = *(0x1c8c);
    0x00001a6c add r6, r4, r3                                |             r6 = r4 + r3;
    0x00001a70 add sb, r6, 2                                 |             sb = r6 + 2;
    0x00001a74 ldrh r2, [r4, r3]                             |             r2 = *((r4 + r3));
    0x00001a78 mov r1, sb                                    |             r1 = sb;
    0x00001a7c add r0, pc, r0                                |             r0 = pc + r0;
    0x00001a80 bl 0xef8                                      |             printf (r0, r1, r2, r3, r4, r5, r6);
    0x00001a84 ldrb r3, [r6, 2]                              |             r3 = *((r6 + 2));
    0x00001a88 cmp r3, 0                                     |             
                                                             |             if (r3 != 0) {
    0x00001a8c bne 0x1bb4                                    |                 goto label_21;
                                                             |             }
    0x00001a90 ldr r1, [r6, 0x20]                            |             r1 = *((r6 + 0x20));
    0x00001a94 cmp r1, 0                                     |             
                                                             |             if (r1 >= 0) {
    0x00001a98 bge 0x1ba8                                    |                 goto label_22;
                                                             |             }
    0x00001a9c cmn r1, 2                                     |             
                                                             |             if (r1 == 2) {
    0x00001aa0 beq 0x1b84                                    |                 goto label_23;
                                                             |             }
    0x00001aa4 cmn r1, 1                                     |             
                                                             |             if (r1 == 1) {
    0x00001aa8 beq 0x1b90                                    |                 goto label_24;
                                                             |             }
    0x00001aac cmn r1, 5                                     |             
                                                             |             if (r1 != 5) {
    0x00001ab0 bne 0x1b9c                                    |                 goto label_25;
                                                             |             }
    0x00001ab4 ldr r1, [pc, 0x1d8]                           |             r1 = *(0x1c90);
    0x00001ab8 add r1, pc, r1                                |             r1 = pc + r1;
                                                             | label_7:
    0x00001abc ldr r0, [pc, 0x1d4]                           |             r0 = *(0x1c94);
    0x00001ac0 add r0, pc, r0                                |             r0 = pc + r0;
                                                             | label_8:
    0x00001ac4 bl 0xef8                                      |             printf (r0, r1);
                                                             | label_9:
    0x00001ac8 mov r0, 0xa                                   |             r0 = 0xa;
    0x00001acc bl 0xee0                                      |             putchar (r0);
    0x00001ad0 ldrh r3, [r4, 0x8e]                           |             r3 = *((r4 + 0x8e));
    0x00001ad4 add r7, r7, r3                                |             r7 += r3;
    0x00001ad8 b 0x17e4                                      |             goto label_0;
                                                             | label_12:
    0x00001adc mov r0, 0x2f                                  |             r0 = 0x2f;
    0x00001ae0 bl 0x1048                                     |             fputc_unlocked ();
    0x00001ae4 b 0x1870                                      |             goto label_1;
                                                             | label_13:
    0x00001ae8 mov r3, 0x28                                  |             r3 = 0x28;
    0x00001aec mov r2, r6                                    |             r2 = r6;
    0x00001af0 mov r0, 0xa                                   |             r0 = 0xa;
    0x00001af4 bl 0x1000                                     |             inet_ntop ();
    0x00001af8 mov r0, r6                                    |             r0 = r6;
    0x00001afc bl 0xf34                                      |             puts (r0);
    0x00001b00 b 0x189c                                      |             goto label_2;
                                                             | label_15:
    0x00001b04 mov r0, 0xa                                   |             r0 = 0xa;
    0x00001b08 bl 0x1048                                     |             fputc_unlocked ();
    0x00001b0c b 0x18cc                                      |             goto label_3;
                                                             | label_14:
    0x00001b10 mov r0, 0xa                                   |             r0 = 0xa;
    0x00001b14 bl 0xfdc                                      |             fputc (r0, r1);
    0x00001b18 b 0x18cc                                      |             goto label_3;
                                                             | label_17:
    0x00001b1c mov r0, 0x2f                                  |             r0 = 0x2f;
    0x00001b20 bl 0x1048                                     |             fputc_unlocked ();
    0x00001b24 b 0x1924                                      |             goto label_4;
                                                             | label_16:
    0x00001b28 mov r0, 0x2f                                  |             r0 = 0x2f;
    0x00001b2c bl 0xfdc                                      |             fputc (r0, r1);
    0x00001b30 b 0x1924                                      |             goto label_4;
                                                             | label_18:
    0x00001b34 mov r3, 0x28                                  |             r3 = 0x28;
    0x00001b38 mov r2, r6                                    |             r2 = r6;
    0x00001b3c mov r0, 0xa                                   |             r0 = 0xa;
    0x00001b40 bl 0x1000                                     |             inet_ntop ();
    0x00001b44 mov r0, r6                                    |             r0 = r6;
    0x00001b48 bl 0xf34                                      |             puts (r0);
    0x00001b4c b 0x1950                                      |             goto label_5;
                                                             | label_20:
    0x00001b50 mov r0, 0xa                                   |             r0 = 0xa;
    0x00001b54 bl 0x1048                                     |             fputc_unlocked ();
    0x00001b58 b 0x1980                                      |             goto label_6;
                                                             | label_19:
    0x00001b5c mov r0, 0xa                                   |             r0 = 0xa;
    0x00001b60 bl 0xfdc                                      |             fputc (r0, r1);
    0x00001b64 b 0x1980                                      |             goto label_6;
                                                             |         }
    0x00001b68 add r1, r4, r6                                |         r1 = r4 + r6;
    0x00001b6c add r1, r1, 2                                 |         r1 += 2;
    0x00001b70 mov r0, fp                                    |         r0 = fp;
    0x00001b74 bl 0xef8                                      |         printf (r0, r1);
    0x00001b78 ldrh r3, [r4, r6]                             |         r3 = *((r4 + r6));
    0x00001b7c add r6, r6, r3                                |         r6 += r3;
    0x00001b80 b 0x1a5c                                      |         
                                                             |     } while (1);
                                                             | label_23:
    0x00001b84 ldr r1, [pc, 0x110]                           |     r1 = *(0x1c98);
    0x00001b88 add r1, pc, r1                                |     r1 = pc + r1;
    0x00001b8c b 0x1abc                                      |     goto label_7;
                                                             | label_24:
    0x00001b90 ldr r1, [pc, 0x108]                           |     r1 = *(0x1c9c);
    0x00001b94 add r1, pc, r1                                |     r1 = pc + r1;
    0x00001b98 b 0x1abc                                      |     goto label_7;
                                                             | label_25:
    0x00001b9c ldr r1, [pc, 0x100]                           |     r1 = *(0x1ca0);
    0x00001ba0 add r1, pc, r1                                |     r1 = pc + r1;
    0x00001ba4 b 0x1abc                                      |     goto label_7;
                                                             | label_22:
    0x00001ba8 ldr r0, [pc, 0xf8]                            |     r0 = *(0x1ca4);
    0x00001bac add r0, pc, r0                                |     r0 = pc + r0;
    0x00001bb0 b 0x1ac4                                      |     goto label_8;
                                                             | label_21:
    0x00001bb4 ldr r1, [pc, 0xf0]                            |     r1 = *(0x1ca8);
    0x00001bb8 mov r0, sb                                    |     r0 = sb;
    0x00001bbc add r1, pc, r1                                |     r1 = pc + r1;
    0x00001bc0 bl 0xfc4                                      |     r0 = strcmp (r0, r1);
    0x00001bc4 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00001bc8 bne 0x1ac8                                    |         goto label_9;
                                                             |     }
    0x00001bcc ldr r0, [pc, 0xdc]                            |     r0 = *(0x1cac);
    0x00001bd0 add r1, r6, 0x20                              |     r1 = r6 + 0x20;
    0x00001bd4 add r0, pc, r0                                |     r0 = pc + r0;
    0x00001bd8 b 0x1ac4                                      |     goto label_8;
                                                             | label_11:
    0x00001bdc mov r0, sl                                    |     r0 = sl;
    0x00001be0 bl 0xef8                                      |     printf (r0);
    0x00001be4 ldr r0, [pc, 0xc8]                            |     r0 = *(0x1cb0);
    0x00001be8 add r6, sp, 0x10                              |     r6 += s;
    0x00001bec add r0, pc, r0                                |     r0 = pc + r0;
    0x00001bf0 bl 0xf34                                      |     puts (r0);
    0x00001bf4 mov r3, 0x28                                  |     r3 = 0x28;
    0x00001bf8 mov r1, r4                                    |     r1 = r4;
    0x00001bfc mov r2, r6                                    |     r2 = r6;
    0x00001c00 mov r0, 0xa                                   |     r0 = 0xa;
    0x00001c04 bl 0x1000                                     |     inet_ntop ();
    0x00001c08 mov r0, r6                                    |     r0 = r6;
    0x00001c0c bl 0xf34                                      |     puts (r0);
    0x00001c10 ldr r3, [pc, 0xa0]                            |     r3 = *(0x1cb4);
    0x00001c14 ldr sb, [r8, r3]                              |     sb = *((r8 + r3));
    0x00001c18 ldr r1, [sb]                                  |     r1 = *(sb);
    0x00001c1c ldr r3, [r1, 0x34]                            |     r3 = *((r1 + 0x34));
    0x00001c20 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00001c24 bne 0x1850                                    |         goto label_10;
                                                             |     }
    0x00001c28 mov r0, 0x2f                                  |     r0 = 0x2f;
    0x00001c2c bl 0xfdc                                      |     fputc (r0, r1);
    0x00001c30 b 0x1870                                      |     goto label_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/libip6tc.so.0.1.0 @ 0x21a8 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.ip6tc_init ()                                | void ip6tc_init (char * arg1) {
                                                             |     int32_t var_0h;
                                                             |     char * src;
                                                             |     int32_t var_ch;
                                                             |     int32_t var_10h;
                                                             |     char * s2;
                                                             |     int32_t var_64h;
                                                             |     int32_t var_20h;
                                                             |     int32_t var_24h;
                                                             |     int32_t var_28h;
                                                             |     char * dest;
                                                             |     size_t size;
                                                             |     int32_t var_80h;
                                                             |     int32_t var_84h;
                                                             |     r0 = arg1;
    0x000021a8 ldr r3, [pc, 0x4b4]                           |     r3 = *(0x2660);
    0x000021ac push {r4, r5, r6, r7, r8, sb, sl, fp, lr}     |     
    0x000021b0 ldr r7, [pc, 0x4b0]                           |     r7 = *(0x2664);
    0x000021b4 sub sp, sp, 0x84                              |     
    0x000021b8 add r3, pc, r3                                |     r3 = pc + r3;
    0x000021bc str r3, [sp, 0xc]                             |     var_ch = r3;
    0x000021c0 ldr r3, [pc, 0x4a4]                           |     r3 = *(0x2668);
    0x000021c4 add r7, pc, r7                                |     r7 = pc + r7;
    0x000021c8 str r0, [sp, 8]                               |     src = r0;
    0x000021cc ldr r3, [r7, r3]                              |     r3 = *(0x2664);
    0x000021d0 str r3, [sp, 0x10]                            |     var_10h = r3;
    0x000021d4 ldr r3, [pc, 0x494]                           |     r3 = *(0x266c);
    0x000021d8 add r3, pc, r3                                |     r3 = pc + r3;
    0x000021dc str r3, [sp, 0x14]                            |     s2 = r3;
                                                             | label_1:
    0x000021e0 ldr r3, [sp, 0xc]                             |     r3 = var_ch;
    0x000021e4 ldr r2, [sp, 0x10]                            |     r2 = var_10h;
    0x000021e8 ldr r0, [sp, 8]                               |     r0 = src;
    0x000021ec str r2, [r3]                                  |     *(r3) = r2;
    0x000021f0 bl 0x100c                                     |     r0 = strlen (r0);
    0x000021f4 cmp r0, 0x1f                                  |     
                                                             |     if (r0 < 0x1f) {
    0x000021f8 bls 0x2210                                    |         goto label_12;
                                                             |     }
    0x000021fc bl 0xff4                                      |     errno_location ();
    0x00002200 mov r3, 0x16                                  |     r3 = 0x16;
    0x00002204 str r3, [r0]                                  |     *(r0) = r3;
                                                             |     do {
                                                             | label_0:
    0x00002208 mov r4, 0                                     |         r4 = 0;
    0x0000220c b 0x2468                                      |         goto label_13;
                                                             | label_12:
    0x00002210 mov r2, 0xff                                  |         r2 = 0xff;
    0x00002214 mov r1, 3                                     |         r1 = 3;
    0x00002218 mov r0, 0xa                                   |         r0 = 0xa;
    0x0000221c bl 0xf58                                      |         r0 = socket (r0, r1, r2);
    0x00002220 subs r5, r0, 0                                |         r5 = r0 - 0;
    0x00002224 blt 0x2208                                    |         
                                                             |     } while (r5 < r0);
    0x00002228 mov r2, 1                                     |     r2 = 1;
    0x0000222c mov r1, 2                                     |     r1 = 2;
    0x00002230 bl 0xf1c                                      |     r0 = fcntl64 ();
    0x00002234 cmn r0, 1                                     |     
                                                             |     if (r0 == 1) {
    0x00002238 bne 0x226c                                    |         
    0x0000223c ldr r3, [pc, 0x430]                           |         r3 = *(0x2670);
    0x00002240 ldr r3, [r7, r3]                              |         r3 = *((r7 + r3));
    0x00002244 ldr r4, [r3]                                  |         r4 = *(0x2670);
    0x00002248 bl 0xff4                                      |         r0 = errno_location ();
    0x0000224c ldr r0, [r0]                                  |         r0 = *(r0);
    0x00002250 bl 0xf04                                      |         strerror (r0);
    0x00002254 ldr r1, [pc, 0x41c]                           |         r1 = *(0x2674);
    0x00002258 add r1, pc, r1                                |         r1 = pc + r1;
    0x0000225c mov r2, r0                                    |         r2 = r0;
    0x00002260 mov r0, r4                                    |         r0 = r4;
    0x00002264 bl 0xf7c                                      |         r0 = fprintf (r0, r1, r2)
    0x00002268 bl 0xf64                                      |         abort ();
                                                             |     }
    0x0000226c add r6, sp, 0x2c                              |     r6 += dest;
    0x00002270 ldr r1, [sp, 8]                               |     r1 = src;
    0x00002274 mov sb, 0x54                                  |     sb = 0x54;
    0x00002278 mov r0, r6                                    |     r0 = r6;
    0x0000227c str sb, [sp, 0x20]                            |     var_20h = sb;
    0x00002280 bl 0xeec                                      |     strcpy (r0, r1);
    0x00002284 add r3, sp, 0x20                              |     r3 += var_20h;
    0x00002288 str r3, [sp]                                  |     *(sp) = r3;
    0x0000228c mov r2, 0x40                                  |     r2 = 0x40;
    0x00002290 mov r3, r6                                    |     r3 = r6;
    0x00002294 mov r1, 0x29                                  |     r1 = 0x29;
    0x00002298 mov r0, r5                                    |     r0 = r5;
    0x0000229c bl 0xfe8                                      |     r0 = getsockopt ();
    0x000022a0 cmp r0, 0                                     |     
    0x000022a4 bge 0x22b4                                    |     
                                                             |     while (1) {
                                                             | label_2:
    0x000022a8 mov r0, r5                                    |         r0 = r5;
    0x000022ac bl 0x1024                                     |         close (r0);
    0x000022b0 b 0x2208                                      |         goto label_0;
    0x000022b4 mov r0, 0x80                                  |         r0 = 0x80;
    0x000022b8 bl 0xf4c                                      |         r0 = malloc (r0);
    0x000022bc subs r4, r0, 0                                |         r4 = r0 - 0;
                                                             |         if (r4 != r0) {
    0x000022c0 bne 0x22d4                                    |             goto label_14;
                                                             |         }
    0x000022c4 bl 0xff4                                      |         errno_location ();
    0x000022c8 mov r3, 0xc                                   |         r3 = 0xc;
    0x000022cc str r3, [r0]                                  |         *(r0) = r3;
    0x000022d0 b 0x22a8                                      |         
                                                             |     }
                                                             | label_14:
    0x000022d4 mov r2, 0x7c                                  |     r2 = 0x7c;
    0x000022d8 mov r1, 0                                     |     r1 = 0;
    0x000022dc add fp, r4, 8                                 |     
    0x000022e0 add r8, r4, 0x28                              |     r8 = r4 + 0x28;
    0x000022e4 bl 0xfb8                                      |     memset (r0, r1, r2);
    0x000022e8 mov r1, r6                                    |     r1 = r6;
    0x000022ec str fp, [r4, 8]                               |     *((r4 + 8)) = fp;
    0x000022f0 str fp, [r4, 0xc]                             |     *((r4 + 0xc)) = fp;
    0x000022f4 mov r0, r8                                    |     r0 = r8;
    0x000022f8 bl 0xeec                                      |     strcpy (r0, r1);
    0x000022fc ldr r0, [sp, 0x7c]                            |     r0 = size;
    0x00002300 add r0, r0, 0x28                              |     r0 += 0x28;
    0x00002304 bl 0xf4c                                      |     r0 = malloc (r0);
    0x00002308 cmp r0, 0                                     |     
    0x0000230c mov sl, r0                                    |     sl = r0;
    0x00002310 str r0, [r4, 0x7c]                            |     *((r4 + 0x7c)) = r0;
                                                             |     if (r0 == 0) {
    0x00002314 beq 0x2384                                    |         goto label_15;
                                                             |     }
    0x00002318 mov r1, r6                                    |     r1 = r6;
    0x0000231c bl 0xeec                                      |     strcpy (r0, r1);
    0x00002320 mov r2, sb                                    |     r2 = sb;
    0x00002324 mov r1, r6                                    |     r1 = r6;
    0x00002328 str r5, [r4]                                  |     *(r4) = r5;
    0x0000232c mov r0, r8                                    |     r0 = r8;
    0x00002330 bl 0xf28                                      |     memcpy (r0, r1, r2);
    0x00002334 ldr r3, [r4, 0x78]                            |     r3 = *((r4 + 0x78));
    0x00002338 add r2, sp, 0x80                              |     r2 += var_80h;
    0x0000233c str r3, [sl, 0x20]                            |     *((sl + 0x20)) = r3;
    0x00002340 add r3, r3, 0x28                              |     r3 += 0x28;
    0x00002344 str r3, [r2, -0x64]!                          |     *((r2 -= 0x64)) = r3;
    0x00002348 mov r1, 0x29                                  |     r1 = 0x29;
    0x0000234c str r2, [sp]                                  |     *(sp) = r2;
    0x00002350 mov r3, sl                                    |     r3 = sl;
    0x00002354 mov r2, 0x41                                  |     r2 = 0x41;
    0x00002358 mov r0, r5                                    |     r0 = r5;
    0x0000235c bl 0xfe8                                      |     r0 = getsockopt ();
    0x00002360 cmp r0, 0                                     |     
                                                             |     if (r0 >= 0) {
    0x00002364 bge 0x2390                                    |         goto label_16;
                                                             |     }
                                                             | label_3:
    0x00002368 mov r0, r4                                    |     r0 = r4;
    0x0000236c bl 0xf10                                      |     fcn_00000f10 ();
    0x00002370 bl 0xff4                                      |     r0 = errno_location ();
    0x00002374 ldr r3, [r0]                                  |     r3 = *(r0);
    0x00002378 cmp r3, 0xb                                   |     
                                                             |     if (r3 == 0xb) {
    0x0000237c beq 0x21e0                                    |         goto label_1;
                                                             |     }
    0x00002380 b 0x2208                                      |     goto label_0;
                                                             | label_15:
    0x00002384 mov r0, r4                                    |     r0 = r4;
    0x00002388 bl 0x103c                                     |     free (r0);
    0x0000238c b 0x22a8                                      |     goto label_2;
                                                             | label_16:
    0x00002390 ldr sb, [pc, 0x2e4]                           |     sb = *(0x0000267c);
    0x00002394 mov r6, 0                                     |     r6 = 0;
    0x00002398 mov r3, 1                                     |     r3 = 1;
    0x0000239c add sb, pc, sb                                |     sb = pc + sb;
    0x000023a0 str r6, [sp, 0x24]                            |     var_24h = r6;
    0x000023a4 str r3, [r4, 0x24]                            |     *((r4 + 0x24)) = r3;
                                                             |     do {
    0x000023a8 ldr r5, [r4, 0x7c]                            |         r5 = *((r4 + 0x7c));
    0x000023ac ldr r2, [r5, 0x20]                            |         r2 = *((r5 + 0x20));
    0x000023b0 cmp r6, r2                                    |         
                                                             |         if (r6 >= r2) {
    0x000023b4 bhs 0x2440                                    |             goto label_8;
                                                             |         }
    0x000023b8 add r5, r5, 0x28                              |         r5 += 0x28;
    0x000023bc add r8, r5, r6                                |         r8 = r5 + r6;
    0x000023c0 ldrh r3, [r8, 0x8e]                           |         r3 = *((r8 + 0x8e));
    0x000023c4 add r3, r3, r6                                |         r3 += r6;
    0x000023c8 cmp r2, r3                                    |         
                                                             |         if (r2 != r3) {
    0x000023cc bne 0x23fc                                    |             goto label_17;
                                                             |         }
    0x000023d0 ldr r1, [sp, 0x24]                            |         r1 = var_24h;
    0x000023d4 add r0, r4, 0x10                              |         r0 = r4 + 0x10;
    0x000023d8 bl 0x1e14                                     |         fcn_00001e14 (r0, r1);
    0x000023dc mov r3, 0                                     |         r3 = 0;
    0x000023e0 str r3, [r4, 0x10]                            |         *((r4 + 0x10)) = r3;
                                                             | label_4:
    0x000023e4 ldr r3, [sp, 0x24]                            |         r3 = var_24h;
    0x000023e8 add r3, r3, 1                                 |         r3++;
    0x000023ec str r3, [sp, 0x24]                            |         var_24h = r3;
    0x000023f0 ldrh r3, [r8, 0x8e]                           |         r3 = *((r8 + 0x8e));
    0x000023f4 add r6, r6, r3                                |         r6 += r3;
    0x000023f8 b 0x23a8                                      |         
                                                             |     } while (1);
                                                             | label_17:
    0x000023fc ldrh sl, [r8, 0x8c]                           |     sl = *((r8 + 0x8c));
    0x00002400 ldr r1, [sp, 0x14]                            |     r1 = s2;
    0x00002404 add sl, r8, sl                                |     sl = r8 + sl;
    0x00002408 add r0, sl, 2                                 |     r0 = sl + 2;
    0x0000240c bl 0xfc4                                      |     r0 = strcmp (r0, r1);
    0x00002410 subs r1, r0, 0                                |     r1 = r0 - 0;
                                                             |     if (r1 == r0) {
    0x00002414 ldrne r1, [r4, 0x48]                          |         r1 = *((r4 + 0x48));
                                                             |     }
                                                             |     if (r1 == r0) {
    0x00002418 movne r3, 0                                   |         r3 = 0;
                                                             |     }
                                                             |     if (r1 == r0) {
    0x0000241c movne r0, 1                                   |         r0 = 1;
                                                             |     }
                                                             |     if (r1 != r0) {
    0x00002420 bne 0x2494                                    |         goto label_6;
                                                             |     }
    0x00002424 add r0, sl, 0x20                              |     r0 = sl + 0x20;
    0x00002428 bl 0x1668                                     |     r0 = fcn_00001668 (r0, r1);
    0x0000242c subs r1, r0, 0                                |     r1 = r0 - 0;
                                                             |     if (r1 != r0) {
    0x00002430 bne 0x2474                                    |         goto label_18;
                                                             |     }
                                                             | label_5:
    0x00002434 bl 0xff4                                      |     errno_location ();
    0x00002438 mvn r3, 0xb                                   |     r3 = ~0xb;
                                                             | label_7:
    0x0000243c str r3, [r0]                                  |     *(r0) = r3;
                                                             | label_8:
    0x00002440 mov r0, r4                                    |     r0 = r4;
    0x00002444 bl 0x13b4                                     |     r0 = fcn_000013b4 (r0);
    0x00002448 cmp r0, 0                                     |     
                                                             |     if (r0 < 0) {
    0x0000244c blt 0x2368                                    |         goto label_3;
                                                             |     }
    0x00002450 mov r0, r4                                    |     r0 = r4;
    0x00002454 bl 0x11e4                                     |     fcn_000011e4 (r0);
    0x00002458 ldr r6, [r4, 8]                               |     r6 = *((r4 + 8));
    0x0000245c add sl, sp, 0x28                              |     sl += var_28h;
                                                             | label_9:
    0x00002460 cmp fp, r6                                    |     
                                                             |     if (fp != r6) {
    0x00002464 bne 0x25bc                                    |         goto label_19;
                                                             |     }
                                                             | label_13:
    0x00002468 mov r0, r4                                    |     r0 = r4;
    0x0000246c add sp, sp, 0x84                              |     
    0x00002470 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}      |     
                                                             | label_18:
    0x00002474 ldr r3, [r4, 0x18]                            |     r3 = *((r4 + 0x18));
    0x00002478 mov r2, r6                                    |     r2 = r6;
    0x0000247c add r3, r3, 1                                 |     r3++;
    0x00002480 str r3, [r4, 0x18]                            |     *((r4 + 0x18)) = r3;
    0x00002484 mov r0, r4                                    |     r0 = r4;
    0x00002488 add r3, sp, 0x24                              |     r3 += var_24h;
    0x0000248c bl 0x211c                                     |     fcn_0000211c (r0, r1);
    0x00002490 b 0x23e4                                      |     goto label_4;
                                                             | label_6:
    0x00002494 ands r2, r1, r0, lsl r3                       |     r2 = r1 & (r0 << r3);
    0x00002498 add sl, r3, 1                                 |     sl = r3 + 1;
                                                             |     if (r2 == r1) {
    0x0000249c beq 0x24e0                                    |         goto label_20;
                                                             |     }
    0x000024a0 add r2, r4, r3, lsl 2                         |     r2 = r4 + (r3 << 2);
    0x000024a4 ldr r2, [r2, 0x4c]                            |     r2 = *((r2 + 0x4c));
    0x000024a8 add r2, r5, r2                                |     r2 = r5 + r2;
    0x000024ac cmp r8, r2                                    |     
                                                             |     if (r8 != r2) {
    0x000024b0 bne 0x24e0                                    |         goto label_20;
                                                             |     }
    0x000024b4 mov r1, sl                                    |     r1 = sl;
    0x000024b8 ldr r0, [sb, r3, lsl 2]                       |     offset_0 = r3 << 2;
                                                             |     r0 = *((sb + offset_0));
    0x000024bc bl 0x1668                                     |     r0 = fcn_00001668 (r0, r1);
    0x000024c0 subs r1, r0, 0                                |     r1 = r0 - 0;
                                                             |     if (r1 == r0) {
    0x000024c4 beq 0x2434                                    |         goto label_5;
                                                             |     }
    0x000024c8 str sl, [r1, 0x28]                            |     *((r1 + 0x28)) = sl;
    0x000024cc add r3, sp, 0x24                              |     r3 += var_24h;
    0x000024d0 mov r2, r6                                    |     r2 = r6;
    0x000024d4 mov r0, r4                                    |     r0 = r4;
    0x000024d8 bl 0x211c                                     |     fcn_0000211c (r0, r1);
    0x000024dc b 0x24ec                                      |     goto label_21;
                                                             | label_20:
    0x000024e0 cmp sl, 5                                     |     
    0x000024e4 mov r3, sl                                    |     r3 = sl;
                                                             |     if (sl != 5) {
    0x000024e8 bne 0x2494                                    |         goto label_6;
                                                             |     }
                                                             | label_21:
    0x000024ec ldrh r1, [r8, 0x8e]                           |     r1 = *((r8 + 0x8e));
    0x000024f0 ldr r0, [r4, 0x10]                            |     r0 = *((r4 + 0x10));
    0x000024f4 bl 0x137c                                     |     r0 = fcn_0000137c (r0, r1);
    0x000024f8 subs r5, r0, 0                                |     r5 = r0 - 0;
                                                             |     if (r5 == r0) {
    0x000024fc bne 0x250c                                    |         
    0x00002500 bl 0xff4                                      |         errno_location ();
    0x00002504 mov r3, 0xc                                   |         r3 = 0xc;
    0x00002508 b 0x243c                                      |         goto label_7;
                                                             |     }
    0x0000250c ldr sl, [sp, 0x24]                            |     sl = var_24h;
    0x00002510 ldrh r2, [r8, 0x8e]                           |     r2 = *((r8 + 0x8e));
    0x00002514 mov r1, r8                                    |     r1 = r8;
    0x00002518 str sl, [r5, 0x14]                            |     *((r5 + 0x14)) = sl;
    0x0000251c str r6, [r5, 0x18]                            |     *((r5 + 0x18)) = r6;
    0x00002520 add r0, r5, 0x28                              |     r0 = r5 + 0x28;
    0x00002524 bl 0xf28                                      |     memcpy (r0, r1, r2);
    0x00002528 ldrh r0, [r8, 0x8c]                           |     r0 = *((r8 + 0x8c));
    0x0000252c mov r3, 1                                     |     r3 = 1;
    0x00002530 add r2, r8, r0                                |     r2 = r8 + r0;
    0x00002534 str r3, [r5, 0xc]                             |     *((r5 + 0xc)) = r3;
    0x00002538 str sl, [r5, 0x10]                            |     *((r5 + 0x10)) = sl;
    0x0000253c ldrb r1, [r2, 2]                              |     r1 = *((r2 + 2));
    0x00002540 cmp r1, 0                                     |     
                                                             |     if (r1 == 0) {
    0x00002544 bne 0x2590                                    |         
    0x00002548 ldrh r3, [r8, r0]                             |         r3 = *((r8 + r0));
    0x0000254c cmp r3, 0x28                                  |         
                                                             |         if (r3 != 0x28) {
    0x00002550 beq 0x256c                                    |             
    0x00002554 bl 0xff4                                      |             errno_location ();
    0x00002558 mov r3, 0x16                                  |             r3 = 0x16;
    0x0000255c str r3, [r0]                                  |             *(r0) = r3;
    0x00002560 mov r0, r5                                    |             r0 = r5;
    0x00002564 bl 0x103c                                     |             free (r0);
    0x00002568 b 0x2440                                      |             goto label_8;
                                                             |         }
    0x0000256c ldr r2, [r2, 0x20]                            |         r2 = *((r2 + 0x20));
    0x00002570 cmp r2, 0                                     |         
                                                             |         if (r2 >= 0) {
    0x00002574 strlt r1, [r5, 0x1c]                          |             *((r5 + 0x1c)) = r1;
                                                             |         }
                                                             |         if (r2 < 0) {
    0x00002578 blt 0x2594                                    |             goto label_22;
                                                             |         }
    0x0000257c ldrh r3, [r8, 0x8e]                           |         r3 = *((r8 + 0x8e));
    0x00002580 add r3, r3, r6                                |         r3 += r6;
    0x00002584 cmp r2, r3                                    |         
                                                             |         if (r2 != r3) {
    0x00002588 moveq r3, 2                                   |             r3 = 2;
                                                             |         }
                                                             |         if (r2 != r3) {
    0x0000258c movne r3, 3                                   |             r3 = 3;
                                                             |             goto label_23;
                                                             |         }
                                                             |     }
                                                             | label_23:
    0x00002590 str r3, [r5, 0x1c]                            |     *((r5 + 0x1c)) = r3;
                                                             | label_22:
    0x00002594 ldr r3, [r4, 0x10]                            |     r3 = *((r4 + 0x10));
    0x00002598 ldr r2, [r3, 0x58]                            |     r2 = *((r3 + 0x58));
    0x0000259c add r1, r3, 0x54                              |     r1 = r3 + 0x54;
    0x000025a0 str r5, [r3, 0x58]                            |     *((r3 + 0x58)) = r5;
    0x000025a4 stm r5, {r1, r2}                              |     *(r5) = r1;
                                                             |     *((r5 + 4)) = r2;
    0x000025a8 str r5, [r2]                                  |     *(r2) = r5;
    0x000025ac ldr r2, [r3, 0x50]                            |     r2 = *((r3 + 0x50));
    0x000025b0 add r2, r2, 1                                 |     r2++;
    0x000025b4 str r2, [r3, 0x50]                            |     *((r3 + 0x50)) = r2;
    0x000025b8 b 0x23e4                                      |     goto label_4;
                                                             | label_19:
    0x000025bc mov r8, r6                                    |     r8 = r6;
    0x000025c0 ldr r5, [r8, 0x54]!                           |     r5 = *((r8 += 0x54));
                                                             | label_11:
    0x000025c4 cmp r5, r8                                    |     
                                                             |     if (r5 == r8) {
    0x000025c8 ldreq r6, [r6]                                |         r6 = *(r6);
                                                             |         goto label_24;
                                                             |     }
                                                             |     if (r5 == r8) {
                                                             | label_24:
    0x000025cc beq 0x2460                                    |         goto label_9;
                                                             |     }
    0x000025d0 ldr r3, [r5, 0x1c]                            |     r3 = *((r5 + 0x1c));
    0x000025d4 cmp r3, 3                                     |     
                                                             |     if (r3 != 3) {
    0x000025d8 bne 0x265c                                    |         goto label_25;
                                                             |     }
    0x000025dc ldrh r3, [r5, 0xb4]                           |     r3 = *((r5 + 0xb4));
    0x000025e0 ldr r0, [r4, 8]                               |     r0 = *((r4 + 8));
    0x000025e4 add r3, r5, r3                                |     r3 = r5 + r3;
    0x000025e8 cmp fp, r0                                    |     
    0x000025ec ldr sb, [r3, 0x48]                            |     sb = *((r3 + 0x48));
                                                             |     if (fp == r0) {
    0x000025f0 beq 0x2368                                    |         goto label_3;
                                                             |     }
    0x000025f4 ldr r3, [r4, 0x24]                            |     r3 = *((r4 + 0x24));
    0x000025f8 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x000025fc beq 0x261c                                    |         
    0x00002600 mov r3, 1                                     |         r3 = 1;
    0x00002604 str r3, [sp]                                  |         *(sp) = r3;
    0x00002608 mov r2, sl                                    |         r2 = sl;
    0x0000260c mov r3, r4                                    |         r3 = r4;
    0x00002610 mov r1, sb                                    |         r1 = sb;
    0x00002614 mov r0, 0                                     |         r0 = 0;
    0x00002618 bl 0x1544                                     |         fcn_00001544 (r0, r1, r2);
                                                             |     }
    0x0000261c ldr r2, [r0, 4]                               |     r2 = *((r0 + 4));
    0x00002620 ldr r3, [r2]                                  |     r3 = *(r2);
                                                             | label_10:
    0x00002624 cmp r2, r3                                    |     
                                                             |     if (r2 == r3) {
    0x00002628 beq 0x2368                                    |         goto label_3;
                                                             |     }
    0x0000262c ldr r1, [r3, 0x60]                            |     r1 = *((r3 + 0x60));
    0x00002630 cmp sb, r1                                    |     
                                                             |     if (sb > r1) {
    0x00002634 blo 0x2644                                    |         
    0x00002638 ldr r1, [r3, 0x68]                            |         r1 = *((r3 + 0x68));
    0x0000263c cmp sb, r1                                    |         
                                                             |         if (sb < r1) {
    0x00002640 bls 0x264c                                    |             goto label_26;
                                                             |         }
                                                             |     }
    0x00002644 ldr r3, [r3]                                  |     r3 = *(r3);
    0x00002648 b 0x2624                                      |     goto label_10;
                                                             | label_26:
    0x0000264c ldr r2, [r3, 0x2c]                            |     r2 = *((r3 + 0x2c));
    0x00002650 str r3, [r5, 0x20]                            |     *((r5 + 0x20)) = r3;
    0x00002654 add r2, r2, 1                                 |     r2++;
    0x00002658 str r2, [r3, 0x2c]                            |     *((r3 + 0x2c)) = r2;
                                                             | label_25:
    0x0000265c ldr r5, [r5]                                  |     r5 = *(r5);
    0x00002660 b 0x25c4                                      |     goto label_11;
                                                             | }

[*] Function fprintf used 5 times libip6tc.so.0.1.0