[*] Binary protection state of xtables-legacy-multi

  
  	Full RELRO     Canary found      NX enabled   PIE enabled  No RPATH     No RUNPATH   No Symbols


[*] Function sprintf tear down of xtables-legacy-multi

    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/xtables-legacy-multi @ 0x4434 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.00004434 ()                                      | void fcn_00004434 (int16_t arg_260h, int16_t arg_2c0h_2, int16_t arg_2c0h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h_2;
                                                                 |     int16_t var_ch_2;
                                                                 |     int16_t var_10h_2;
                                                                 |     int16_t var_14h_2;
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h_2;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_24h;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_2ch;
                                                                 |     int16_t var_30h;
                                                                 |     int16_t var_34h;
                                                                 |     int16_t var_38h;
                                                                 |     int16_t var_3ch;
                                                                 |     int16_t var_40h;
                                                                 |     int16_t var_48h;
                                                                 |     int32_t var_48h_2;
                                                                 |     int16_t var_50h;
                                                                 |     int32_t var_50h_2;
                                                                 |     int16_t var_5ch;
                                                                 |     int16_t var_60h;
                                                                 |     int16_t var_64h;
                                                                 |     int16_t var_68h;
                                                                 |     int16_t var_6ch;
                                                                 |     int16_t var_70h;
                                                                 |     int16_t var_74h;
                                                                 |     int16_t var_78h;
                                                                 |     int16_t var_7ch;
                                                                 |     int16_t var_84h;
                                                                 |     int16_t var_88h;
                                                                 |     int16_t var_8ch;
                                                                 |     int16_t var_e4h;
                                                                 |     int16_t var_e8h;
                                                                 |     int16_t var_ech;
                                                                 |     int16_t var_f0h;
                                                                 |     int16_t var_f4h;
                                                                 |     int16_t var_f8h;
                                                                 |     int16_t var_128h;
                                                                 |     int16_t var_130h;
                                                                 |     int8_t var_52h;
                                                                 |     int16_t var_190h;
                                                                 |     int32_t var_c4h;
                                                                 |     int16_t var_1f8h;
                                                                 |     int32_t var_d0h;
                                                                 |     int32_t var_f0h_2;
                                                                 |     int32_t var_f4h_2;
                                                                 |     int16_t var_234h;
                                                                 |     int16_t var_23ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x00004434 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00004438 mov r5, r2                                        |     r5 = r2;
    0x0000443a sub.w sp, sp, 0x23c                               |     
    0x0000443e ldr.w r2, [pc, 0xb2c]                             |     
    0x00004440 cmp r3, 0x2c                                      |     
    0x00004442 mov r7, r1                                        |     r7 = r1;
    0x00004444 mov fp, r0                                        |     
    0x00004446 str r3, [sp, 0x18]                                |     var_18h = r3;
    0x00004448 add r6, sp, 0x5c                                  |     r6 += var_5ch;
    0x0000444a ldr.w r3, [pc, 0xb24]                             |     r3 = *(0x4f72);
    0x0000444e add r2, pc                                        |     r2 = 0x93c0;
    0x00004450 add r4, sp, 0x40                                  |     r4 += var_40h;
    0x00004452 ldrb.w sl, [sp, 0x260]                            |     sl = *(arg_260h);
    0x00004456 ldr.w sb, [pc, 0xb1c]                             |     
    0x0000445a add.w r8, sp, 0x130                               |     r8 += var_130h;
    0x0000445e ldr r3, [r2, r3]                                  |     
    0x00004460 movs r2, 0x28                                     |     r2 = 0x28;
    0x00004462 add sb, pc                                        |     sb = 0x93dc;
    0x00004464 ldr r3, [r3]                                      |     r3 = *(0x93c0);
    0x00004466 str r3, [sp, 0x234]                               |     var_234h = r3;
    0x00004468 mov.w r3, 0                                       |     r3 = 0;
    0x0000446c ldr.w r3, [pc, 0xb08]                             |     
    0x00004470 add r3, pc                                        |     r3 = 0x93ec;
    0x00004472 ldm.w r3, {r0, r1}                                |     r0 = *(r3);
                                                                 |     r1 = *((r3 + 4));
    0x00004476 stm.w r4, {r0, r1}                                |     *(r4) = r0;
                                                                 |     *((r4 + 4)) = r1;
    0x0000447a movs r1, 0                                        |     r1 = 0;
    0x0000447c mov r0, r6                                        |     r0 = r6;
    0x0000447e blx 0x25fc                                        |     iptc_next_chain ();
    0x00004482 ldr r3, [r5]                                      |     r3 = *(r5);
    0x00004484 mov.w r2, 0x100                                   |     r2 = 0x100;
    0x00004488 strb.w sl, [sp, 0x74]                             |     var_74h = sl;
    0x0000448c movs r1, 0                                        |     r1 = 0;
    0x0000448e mov r0, r8                                        |     r0 = r8;
    0x00004490 str r3, [sp, 0x64]                                |     var_64h = r3;
    0x00004492 ldr.w r3, [pc, 0xae8]                             |     r3 = *(0x4f7e);
    0x00004496 ldr.w r3, [sb, r3]                                |     
    0x0000449a str r4, [sp, 0x84]                                |     var_84h = r4;
    0x0000449c add r4, sp, 0x88                                  |     r4 += var_88h;
    0x0000449e str r3, [sp, 0x34]                                |     var_34h = r3;
    0x000044a0 ldr r3, [r3]                                      |     r3 = *(0x93dc);
    0x000044a2 str r3, [sp, 0x78]                                |     var_78h = r3;
    0x000044a4 blx 0x25fc                                        |     iptc_next_chain ();
    0x000044a8 ldr.w r3, [pc, 0xad4]                             |     
    0x000044ac movs r2, 0xa4                                     |     r2 = 0xa4;
    0x000044ae movs r1, 0                                        |     r1 = 0;
    0x000044b0 add r0, sp, 0x8c                                  |     r0 += var_8ch;
    0x000044b2 str.w r7, [r8, 0xf4]                              |     __asm ("str.w r7, [var_f4h_2]");
    0x000044b4 strb r4, [r6, 3]                                  |     *((r6 + 3)) = r4;
    0x000044b6 add r3, pc                                        |     r3 = 0x943a;
    0x000044b8 str.w r3, [r8, 0xf0]                              |     __asm ("str.w r3, [var_f0h_2]");
    0x000044ba adds r0, 0xf0                                     |     r0 += 0xf0;
    0x000044bc blx 0x25fc                                        |     iptc_next_chain ();
    0x000044c0 movs r3, 2                                        |     r3 = 2;
    0x000044c2 mov r1, r7                                        |     r1 = r7;
    0x000044c4 mov r2, r6                                        |     r2 = r6;
    0x000044c6 str r3, [sp, 0x88]                                |     var_88h = r3;
    0x000044c8 mov r0, fp                                        |     r0 = fp;
    0x000044ca mov r3, r8                                        |     r3 = r8;
    0x000044cc str r4, [sp]                                      |     *(sp) = r4;
    0x000044ce bl 0x7fdc                                         |     fcn_00007fdc (r0, r1, r2, r3, r4);
    0x000044d2 ldr r3, [sp, 0x64]                                |     r3 = var_64h;
    0x000044d4 ldr r7, [sp, 0x5c]                                |     r7 = var_5ch;
    0x000044d6 ldr r6, [sp, 0xf4]                                |     r6 = var_f4h;
    0x000044d8 str r3, [r5]                                      |     *(r5) = r3;
    0x000044da ldr r3, [sp, 0x68]                                |     r3 = var_68h;
    0x000044dc str r3, [sp, 8]                                   |     var_8h = r3;
    0x000044de ldr r3, [sp, 0x60]                                |     r3 = var_60h;
    0x000044e0 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x000044e2 ldr r3, [sp, 0x70]                                |     r3 = var_70h;
    0x000044e4 str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x000044e6 ldr r3, [sp, 0x6c]                                |     r3 = var_6ch;
    0x000044e8 str r3, [sp, 0x30]                                |     var_30h = r3;
    0x000044ea ldr r3, [sp, 0x7c]                                |     r3 = var_7ch;
    0x000044ec str r3, [sp, 0x28]                                |     var_28h = r3;
    0x000044ee ldr r3, [sp, 0xe8]                                |     r3 = var_e8h;
    0x000044f0 str r3, [sp, 0x1c]                                |     var_1ch = r3;
    0x000044f2 ldr r3, [sp, 0xe4]                                |     r3 = var_e4h;
    0x000044f4 str r3, [sp, 0x20]                                |     var_20h = r3;
    0x000044f6 ldr r3, [sp, 0xf0]                                |     r3 = var_f0h;
    0x000044f8 str r3, [sp, 0x10]                                |     var_10h = r3;
    0x000044fa ldr r3, [sp, 0xec]                                |     r3 = var_ech;
    0x000044fc str r3, [sp, 0x24]                                |     var_24h = r3;
    0x000044fe ldr r3, [sp, 0xf8]                                |     r3 = var_f8h;
    0x00004500 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x00004502 cmp.w sl, 0                                       |     
                                                                 |     if (sl == 0) {
    0x00004506 beq.w 0x489a                                      |         goto label_36;
                                                                 |     }
    0x0000450a ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x0000450c ldr r1, [r3]                                      |     r1 = *(r3);
    0x0000450e cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x00004510 beq.w 0x48aa                                      |         goto label_37;
                                                                 |     }
                                                                 | label_7:
    0x00004514 cmp r7, 0x10                                      |     
                                                                 |     if (r7 > 0x10) {
    0x00004516 bhi 0x4604                                        |         goto label_38;
                                                                 |     }
    0x00004518 cmp r7, 0                                         |     
                                                                 |     if (r7 == 0) {
    0x0000451a beq.w 0x4e3e                                      |         goto label_39;
                                                                 |     }
    0x0000451e mov.w r4, 0x106                                   |     
    0x00004522 movt r4, 1                                        |     r4 = 0x10106;
    0x00004526 lsrs r4, r7                                       |     r4 >>= r7;
    0x00004528 ands r4, r4, 1                                    |     r4 &= 1;
                                                                 |     if (r4 != r4) {
    0x0000452c bne.w 0x47e8                                      |         goto label_40;
                                                                 |     }
                                                                 | label_1:
    0x00004530 cmp r7, 0x80                                      |     
                                                                 |     if (r7 < 0x80) {
    0x00004532 bls.w 0x471c                                      |         goto label_41;
                                                                 |     }
    0x00004536 cmp.w r7, 0x800                                   |     
                                                                 |     if (r7 == 0x800) {
    0x0000453a beq.w 0x4d76                                      |         goto label_42;
                                                                 |     }
                                                                 |     if (r7 < 0x800) {
    0x0000453e bls.w 0x46d6                                      |         goto label_43;
                                                                 |     }
    0x00004542 movw r3, 0x2020                                   |     r3 = 0x2020;
    0x00004546 cmp r7, r3                                        |     
                                                                 |     if (r7 == r3) {
    0x00004548 beq.w 0x4bd6                                      |         goto label_44;
                                                                 |     }
                                                                 |     if (r7 < r3) {
    0x0000454c bls.w 0x467c                                      |         goto label_45;
                                                                 |     }
    0x00004550 cmp.w r7, 0x3000                                  |     
                                                                 |     if (r7 == 0x3000) {
    0x00004554 beq.w 0x4d86                                      |         goto label_46;
                                                                 |     }
    0x00004558 cmp.w r7, 0x4000                                  |     
                                                                 |     if (r7 != 0x4000) {
    0x0000455c bne.w 0x46cc                                      |         goto label_4;
                                                                 |     }
    0x00004560 ldr.w r3, [r8, 0xc4]                              |     r3 = var_c4h;
    0x00004564 ldr.w r1, [r8, 0xd0]                              |     r1 = var_d0h;
    0x00004568 ldr.w r0, [r8, 0xc8]                              |     r0 = var_1f8h;
    0x0000456c and r3, r3, 0x20                                  |     r3 &= 0x20;
    0x00004570 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x00004572 ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x00004574 ldr.w sl, [r3]                                    |     sl = *(r3);
    0x00004578 bl 0x3ffc                                         |     fcn_00003ffc (r0, r1, r2);
    0x0000457a stc2l p11, c9, [r0, -0x1c]                        |     __asm ("stc2l p11, c9, [r0, -0x1c]");
    0x0000457e mov fp, r0                                        |     
    0x00004580 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00004582 beq.w 0x4ee0                                      |         goto label_47;
                                                                 |     }
    0x00004586 ldr r3, [sp, 0x20]                                |     r3 = var_20h;
    0x00004588 movs r5, 1                                        |     r5 = 1;
    0x0000458a movs r2, 0                                        |     r2 = 0;
    0x0000458c sub.w ip, r3, 4                                   |     
    0x00004590 ldr r3, [sp, 0x24]                                |     r3 = var_24h;
    0x00004592 subs r0, r3, 4                                    |     r0 = r3 - 4;
    0x00004594 mov r3, r6                                        |     r3 = r6;
    0x00004596 mov r6, sl                                        |     r6 = sl;
    0x00004598 mov sl, r3                                        |     sl = r3;
                                                                 | label_13:
    0x0000459a ldr r3, [ip, 4]!                                  |     r3 = *((ip += 4));
    0x0000459e str r3, [r4]                                      |     *(r4) = r3;
    0x000045a0 ldr r3, [r0, 4]!                                  |     r3 = *((r0 += 4));
    0x000045a4 str r3, [r4, 8]                                   |     *((r4 + 8)) = r3;
    0x000045a6 cmp.w sl, 0                                       |     
    0x000045a8 lsrs r0, r0, 0x1c                                 |     r0 >>= 0x1c;
                                                                 |     if (r0 == r0) {
    0x000045aa beq.w 0x4ca0                                      |         goto label_48;
                                                                 |     }
    0x000045ae ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x000045b0 movs r7, 0                                        |     r7 = 0;
    0x000045b2 strd r2, ip, [sp, 0x2c]                           |     __asm ("strd r2, ip, [var_2ch]");
    0x000045b6 str r0, [sp, 0x34]                                |     var_34h = r0;
    0x000045b8 sub.w sb, r3, 4                                   |     sb = r3 - 4;
    0x000045bc ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x000045be sub.w r8, r3, 4                                   |     r8 = r3 - 4;
    0x000045c2 b 0x45dc                                          |     
                                                                 |     while (r3 == 0) {
                                                                 | label_0:
    0x000045c4 ldr r0, [sp, 8]                                   |         r0 = var_8h;
    0x000045c6 adds r7, 1                                        |         r7++;
    0x000045c8 mov r3, r6                                        |         r3 = r6;
    0x000045ca mov r2, fp                                        |         r2 = fp;
    0x000045cc mov r1, r4                                        |         r1 = r4;
    0x000045ce blx 0x282c                                        |         fcn_0000282c ();
    0x000045d2 cmp sl, r7                                        |         
    0x000045d4 and.w r5, r5, r0                                  |         r5 &= r0;
                                                                 |         if (sl == r7) {
    0x000045d8 beq.w 0x4c9a                                      |             goto label_49;
                                                                 |         }
    0x000045dc ldr r3, [sb, 4]!                                  |         r3 = *((sb += 4));
    0x000045e0 str r3, [r4, 4]                                   |         *((r4 + 4)) = r3;
    0x000045e2 ldr r3, [r8, 4]!                                  |         r3 = *((r8 += 4));
    0x000045e6 str r3, [r4, 0xc]                                 |         *((r4 + 0xc)) = r3;
    0x000045e8 ldr r3, [sp, 0xc]                                 |         r3 = var_ch;
    0x000045ea cmp r3, 0                                         |         
    0x000045ec beq 0x45c4                                        |         
                                                                 |     }
    0x000045ee ldrh.w r1, [r4, 0x58]                             |     r1 = *((r4 + 0x58));
    0x000045f2 movs r3, 0x5b                                     |     r3 = 0x5b;
    0x000045f4 movs r2, 0                                        |     r2 = 0;
    0x000045f6 mov r0, r4                                        |     r0 = r4;
    0x000045f8 str r6, [sp]                                      |     *(sp) = r6;
    0x000045fa add r1, r4                                        |     r1 += r4;
    0x000045fc adds r1, 2                                        |     r1 += 2;
    0x000045fe bl 0x3df8                                         |     fcn_00003df8 (r0, r1, r2, r3, r4);
    0x00004602 b 0x45c4                                          |     goto label_0;
                                                                 | label_38:
    0x00004604 cmp.w r7, 0x4000                                  |     
                                                                 |     if (r7 == 0x4000) {
    0x00004608 beq.w 0x47e8                                      |         goto label_40;
                                                                 |     }
                                                                 | label_9:
    0x0000460c cmp r7, 0x80                                      |     
    0x0000460e mov.w r4, 0                                       |     r4 = 0;
                                                                 |     if (r7 != 0x80) {
    0x00004612 bne 0x4530                                        |         goto label_1;
                                                                 |     }
                                                                 | label_6:
    0x00004614 ldr.w r1, [r8, 0xc4]                              |     r1 = var_c4h;
    0x00004618 ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x0000461a ldr r0, [sp, 8]                                   |     r0 = var_8h;
    0x0000461c and r1, r1, 0x20                                  |     r1 &= 0x20;
    0x00004620 ldr r2, [r3]                                      |     r2 = *(r3);
    0x00004622 bl 0x41dc                                         |     r0 = fcn_000041dc (r0, r1, r2);
    0x00004626 mov r5, r0                                        |     r5 = r0;
                                                                 |     do {
                                                                 | label_3:
    0x00004628 ldr r3, [sp, 0x28]                                |         r3 = var_28h;
    0x0000462a cmp r3, 1                                         |         
                                                                 |         if (r3 > 1) {
    0x0000462c bgt.w 0x47d2                                      |             goto label_12;
                                                                 |         }
                                                                 | label_11:
    0x00004630 add r0, sp, 0x1f8                                 |         r0 += var_1f8h;
    0x00004632 blx 0x27c8                                        |         fcn_000027c8 ();
    0x00004636 cmp r4, 0                                         |         
                                                                 |         if (r4 != 0) {
    0x00004638 bne 0x46b6                                        |             goto label_5;
                                                                 |         }
                                                                 | label_2:
    0x0000463a ldr r0, [sp, 0x20]                                |         r0 = var_20h;
    0x0000463c blx 0x22c4                                        |         fcn_000022c4 ();
    0x00004640 ldr r0, [sp, 0x24]                                |         r0 = var_24h;
    0x00004642 blx 0x22c4                                        |         fcn_000022c4 ();
    0x00004646 ldr r0, [sp, 0x10]                                |         r0 = var_10h;
    0x00004648 blx 0x22c4                                        |         fcn_000022c4 ();
    0x0000464c ldr r0, [sp, 0x14]                                |         r0 = var_14h;
    0x0000464e blx 0x22c4                                        |         fcn_000022c4 ();
    0x00004652 movs r0, 1                                        |         r0 = 1;
    0x00004654 blx 0x2340                                        |         fcn_00002340 ();
    0x00004658 ldr.w r2, [pc, 0x928]                             |         
    0x0000465c ldr.w r3, [pc, 0x910]                             |         r3 = *(0x4f70);
    0x00004660 add r2, pc                                        |         r2 = 0x95e8;
    0x00004662 ldr r3, [r2, r3]                                  |         r3 = *(0x95e8);
    0x00004664 ldr r2, [r3]                                      |         r2 = *(0x95e8);
    0x00004666 ldr r3, [sp, 0x234]                               |         r3 = var_234h;
    0x00004668 eors r2, r3                                       |         r2 ^= r3;
    0x0000466a mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0000466e bne.w 0x4f52                                      |             goto label_50;
                                                                 |         }
    0x00004672 mov r0, r5                                        |         r0 = r5;
    0x00004674 add.w sp, sp, 0x23c                               |         
    0x00004678 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_45:
    0x0000467c cmp.w r7, 0x2000                                  |         
                                                                 |         if (r7 != 0x2000) {
    0x00004680 bne 0x46be                                        |             goto label_51;
                                                                 |         }
                                                                 | label_10:
    0x00004682 ldr r3, [sp, 0x18]                                |         r3 = var_18h;
    0x00004684 ldrd r0, r1, [sp, 8]                              |         __asm ("ldrd r0, r1, [var_8h]");
    0x00004688 ldr r2, [r3]                                      |         r2 = *(r3);
    0x0000468a blx 0x2704                                        |         r0 = ip6tc_commit ();
    0x0000468e mov r5, r0                                        |         r5 = r0;
    0x00004690 b 0x4628                                          |         
                                                                 |     } while (1);
                                                                 | label_5:
    0x000046b6 mov r0, r4                                        |     r0 = r4;
    0x000046b8 blx 0x22c4                                        |     fcn_000022c4 ();
    0x000046bc b 0x463a                                          |     goto label_2;
                                                                 |     if (r7 > 0x2000) {
                                                                 | label_51:
    0x000046be bhi 0x46cc                                        |         goto label_4;
                                                                 |     }
    0x000046c0 bic r3, r7, 0x80                                  |     r3 = BIT_MASK (r7, 0x80);
    0x000046c4 cmp.w r3, 0x1000                                  |     
                                                                 |     if (r3 == 0x1000) {
    0x000046c8 beq.w 0x4d86                                      |         goto label_46;
                                                                 |     }
                                                                 |     do {
                                                                 | label_4:
    0x000046cc invalid                                           |         
    0x000046ce movs r0, 2                                        |         r0 = 2;
    0x000046d0 ldr r1, [r3]                                      |         r1 = *(r3);
    0x000046d2 bl 0x7f80                                         |         fcn_00007f80 (r0, r1);
                                                                 | label_43:
    0x000046d6 cmp.w r7, 0x200                                   |         
                                                                 |         if (r7 == 0x200) {
    0x000046da beq.w 0x4e20                                      |             goto label_52;
                                                                 |         }
                                                                 |         if (r7 < 0x200) {
    0x000046de bls 0x4702                                        |             goto label_53;
                                                                 |         }
    0x000046e0 cmp.w r7, 0x400                                   |         
    0x000046e4 bne 0x46cc                                        |         
                                                                 |     } while (r7 != 0x400);
    0x000046e6 ldr.w r2, [r8, 0xc4]                              |     r2 = var_c4h;
    0x000046ea ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x000046ec ldr r1, [sp, 0x2c]                                |     r1 = var_2ch;
    0x000046ee ands r2, r2, 0x400                                |     r2 &= 0x400;
    0x000046f2 ldr r0, [sp, 8]                                   |     r0 = var_8h;
    0x000046f4 ldr r3, [r3]                                      |     r3 = *(r3);
    0x000046f6 it ne                                             |     
                                                                 |     if (r2 == r2) {
    0x000046f8 addne r2, sp, 0x190                               |         r2 += var_190h;
                                                                 |     }
    0x000046fa blx 0x278c                                        |     r0 = fcn_0000278c ();
    0x000046fe mov r5, r0                                        |     r5 = r0;
    0x00004700 b 0x4628                                          |     goto label_3;
                                                                 | label_53:
    0x00004702 cmp r7, 0xa0                                      |     
                                                                 |     if (r7 == 0xa0) {
    0x00004704 beq.w 0x4bd6                                      |         goto label_44;
                                                                 |     }
    0x00004708 cmp.w r7, 0x100                                   |     
                                                                 |     if (r7 != 0x100) {
    0x0000470c bne 0x46cc                                        |         goto label_4;
                                                                 |     }
    0x0000470e ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x00004710 ldr r0, [sp, 8]                                   |     r0 = var_8h;
    0x00004712 ldr r1, [r3]                                      |     r1 = *(r3);
    0x00004714 blx 0x23c4                                        |     fcn_000023c4 ();
    0x00004716 cdp p6, 5, c4, c6, c5, 0                          |     __asm ("cdp p6, 5, c4, c6, c5, 0");
    0x0000471a b 0x4628                                          |     goto label_3;
                                                                 | label_41:
    0x0000471c cmp r7, 0x20                                      |     
                                                                 |     if (r7 > 0x20) {
    0x0000471e bhi 0x47b4                                        |         goto label_54;
                                                                 |     }
    0x00004720 cmp r7, 0x20                                      |     
                                                                 |     if (r7 > 0x20) {
    0x00004722 bhi 0x46cc                                        |         goto label_4;
                                                                 |     }
    0x00004724 adr r3, 8                                         |     r3 = 8;
    0x00004726 ldr.w r2, [r3, r7, lsl 2]                         |     offset_0 = r7 << 2;
                                                                 |     r2 = *((r3 + offset_0));
    0x0000472a add r3, r2                                        |     r3 += r2;
                                                                 |     /* switch table (33 cases) at 0x4730 */
    0x0000472c bx r3                                             |     return uint32_t (*r3)() ();
                                                                 | label_54:
    0x000047b4 cmp r7, 0x40                                      |     
                                                                 |     if (r7 != 0x40) {
    0x000047b6 bne 0x46cc                                        |         goto label_4;
                                                                 |     }
    0x000047b8 ldr.w r1, [r8, 0xc4]                              |     r1 = var_c4h;
    0x000047bc ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x000047be ldr r0, [sp, 8]                                   |     r0 = var_8h;
    0x000047c0 and r1, r1, 0x20                                  |     r1 &= 0x20;
    0x000047c4 ldr r2, [r3]                                      |     r2 = *(r3);
    0x000047c6 bl 0x4124                                         |     r0 = fcn_00004124 (r0, r1, r2);
    0x000047ca mov r5, r0                                        |     r5 = r0;
    0x000047cc b 0x4628                                          |     goto label_3;
                                                                 | label_25:
    0x000047ce mov r4, r7                                        |     r4 = r7;
    0x000047d0 movs r5, 1                                        |     r5 = 1;
                                                                 | label_12:
    0x000047d2 ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x000047d4 ldr r0, [r3]                                      |     r0 = *(r3);
    0x000047d6 blx 0x26c4                                        |     fcn_000026c4 ();
    0x000047da add r0, sp, 0x1f8                                 |     r0 += var_1f8h;
    0x000047dc blx 0x27c8                                        |     fcn_000027c8 ();
    0x000047de invalid                                           |     
                                                                 |     if (r5 == 1) {
    0x000047e2 beq.w 0x463a                                      |         goto label_2;
                                                                 |     }
    0x000047e6 b 0x46b6                                          |     goto label_5;
                                                                 | label_40:
    0x000047e8 ldr.w r3, [r8, 0xd0]                              |     r3 = var_d0h;
    0x000047ec ldr.w r0, [r8, 0xf0]                              |     r0 = var_f0h_2;
    0x000047f0 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000047f2 beq.w 0x492a                                      |         goto label_55;
                                                                 |     }
    0x000047f6 blx 0x2560                                        |     r0 = ip6tc_is_chain ();
    0x000047fa cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000047fc bne 0x48fe                                        |         goto label_56;
                                                                 |     }
    0x000047fe ldr.w r3, [r8, 0xd0]                              |     r3 = var_d0h;
    0x00004802 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00004804 beq.w 0x492a                                      |         goto label_55;
                                                                 |     }
                                                                 | label_8:
    0x00004808 ldr.w fp, [r3, 0x58]                              |     fp = *((r3 + 0x58));
    0x0000480c ldr.w sb, [r8, 0xc8]                              |     sb = var_1f8h;
    0x00004810 ldrh.w r0, [fp]                                   |     r0 = *(fp);
    0x00004814 cmp.w sb, 0                                       |     
    0x00004816 lsrs r0, r0, 0x1c                                 |     r0 >>= 0x1c;
                                                                 |     if (r0 == r0) {
    0x00004818 beq.w 0x4ef0                                      |         goto label_57;
                                                                 |     }
    0x0000481c mov r5, sb                                        |     r5 = sb;
    0x0000481e mov.w sl, 0x70                                    |     sl = 0x70;
                                                                 |     do {
    0x00004822 ldrd r5, r3, [r5]                                 |         __asm ("ldrd r5, r3, [r5]");
    0x00004826 ldr r3, [r3, 0x58]                                |         r3 = *((r3 + 0x58));
    0x00004828 ldrh r3, [r3]                                     |         r3 = *(r3);
    0x0000482a add sl, r3                                        |         sl += r3;
    0x0000482c cmp r5, 0                                         |         
    0x0000482e bne 0x4822                                        |         
                                                                 |     } while (r5 != 0);
    0x00004830 add r0, sl                                        |     r0 += sl;
    0x00004832 uxth.w sl, sl                                     |     sl = (int16_t) sl;
    0x00004836 blx 0x2494                                        |     xtables_ip6addr_to_anyname ();
    0x0000483a movs r2, 0x70                                     |     r2 = 0x70;
    0x0000483c mov r1, r8                                        |     r1 = r8;
    0x0000483e mov r4, r0                                        |     r4 = r0;
    0x00004840 blx 0x22e8                                        |     fcn_000022e8 ();
    0x00004844 ldrh.w r3, [fp]                                   |     r3 = *(fp);
    0x00004848 strh.w sl, [r4, 0x58]                             |     *((r4 + 0x58)) = sl;
    0x0000484c add sl, r3                                        |     sl += r3;
    0x0000484e mov r3, r4                                        |     r3 = r4;
    0x00004850 strh.w sl, [r4, 0x5a]                             |     *((r4 + 0x5a)) = sl;
    0x00004854 add.w sl, r4, 0x70                                |     sl = r4 + 0x70;
    0x00004858 mov r4, sb                                        |     r4 = sb;
    0x0000485a mov sb, r3                                        |     sb = r3;
                                                                 |     do {
    0x0000485c ldr r3, [r4, 4]                                   |         r3 = *((r4 + 4));
    0x0000485e add.w r0, sl, r5                                  |         r0 = sl + r5;
    0x00004862 ldr r1, [r3, 0x58]                                |         r1 = *((r3 + 0x58));
    0x00004864 ldrh r2, [r1]                                     |         r2 = *(r1);
    0x00004866 blx 0x22e8                                        |         fcn_000022e8 ();
    0x0000486a ldrd r4, r3, [r4]                                 |         __asm ("ldrd r4, r3, [r4]");
    0x0000486e ldr r3, [r3, 0x58]                                |         r3 = *((r3 + 0x58));
    0x00004870 ldrh r3, [r3]                                     |         r3 = *(r3);
    0x00004872 add r5, r3                                        |         r5 += r3;
    0x00004874 cmp r4, 0                                         |         
    0x00004876 bne 0x485c                                        |         
                                                                 |     } while (r4 != 0);
    0x00004878 ldrh.w r2, [fp]                                   |     r2 = *(fp);
    0x0000487c mov r4, sb                                        |     r4 = sb;
    0x0000487e add.w r0, sl, r5                                  |     r0 = sl + r5;
                                                                 | label_29:
    0x00004882 mov r1, fp                                        |     r1 = fp;
    0x00004884 blx 0x22e8                                        |     fcn_000022e8 ();
    0x00004888 ldr.w r3, [r8, 0xd0]                              |     r3 = var_d0h;
    0x0000488a adds r0, 0xd0                                     |     r0 += 0xd0;
    0x0000488c ldr r0, [r3, 0x58]                                |     r0 = *((r3 + 0x58));
    0x0000488e blx 0x22c4                                        |     fcn_000022c4 ();
    0x00004892 cmp r7, 0x80                                      |     
                                                                 |     if (r7 != 0x80) {
    0x00004894 bne.w 0x4530                                      |         goto label_1;
                                                                 |     }
    0x00004898 b 0x4614                                          |     goto label_6;
                                                                 | label_36:
    0x0000489a ldr r0, [sp, 0x128]                               |     r0 = var_128h;
    0x0000489c bl 0x68f0                                         |     fcn_000068f0 (r0);
    0x000048a0 ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x000048a2 ldr r1, [r3]                                      |     r1 = *(r3);
    0x000048a4 cmp r1, 0                                         |     
                                                                 |     if (r1 != 0) {
    0x000048a6 bne.w 0x4514                                      |         goto label_7;
                                                                 |     }
                                                                 | label_37:
    0x000048aa ldr r0, [r5]                                      |     r0 = *(r5);
    0x000048ac blx 0x25d8                                        |     sprintf_chk ()
    0x000048b0 ldr r4, [sp, 0x18]                                |     r4 = var_18h;
    0x000048b2 mov r1, r0                                        |     r1 = r0;
    0x000048b4 str r0, [r4]                                      |     *(r4) = r0;
    0x000048b6 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000048b8 bne.w 0x4514                                      |         goto label_7;
                                                                 |     }
    0x000048bc ldr.w r3, [pc, 0x6c8]                             |     r3 = *(0x4f88);
    0x000048c0 ldr.w r3, [sb, r3]                                |     r3 = *((sb + r3));
    0x000048c4 ldr r0, [r3]                                      |     r0 = *(0x4f88);
    0x000048c6 blx 0x26e0                                        |     iptc_zero_counter ();
    0x000048ca adds r0, 1                                        |     r0++;
                                                                 |     if (r0 != 1) {
    0x000048cc bne.w 0x4d1a                                      |         goto label_58;
                                                                 |     }
    0x000048d0 ldr r1, [r4]                                      |     r1 = *(r4);
    0x000048d2 cmp r1, 0                                         |     
                                                                 |     if (r1 != 0) {
    0x000048d4 bne.w 0x4514                                      |         goto label_7;
                                                                 |     }
                                                                 | label_18:
    0x000048d8 ldr.w r3, [pc, 0x6b0]                             |     
    0x000048dc ldr r5, [r5]                                      |     r5 = *(r5);
    0x000048de ldr.w r3, [sb, r3]                                |     r3 = *((sb + r3));
    0x000048e2 ldr r3, [r3]                                      |     r3 = *(0x4f8c);
    0x000048e4 ldr r4, [r3, 0x14]                                |     r4 = *(0x4fa0);
    0x000048e6 blx 0x25b4                                        |     r0 = ip6tc_free ();
    0x000048ea ldr r0, [r0]                                      |     r0 = *(r0);
    0x000048ec blx 0x23dc                                        |     fcn_000023dc ();
    0x000048f0 ldr.w r1, [pc, 0x69c]                             |     
    0x000048f4 mov r3, r0                                        |     r3 = r0;
    0x000048f6 mov r2, r5                                        |     r2 = r5;
    0x000048f8 movs r0, 3                                        |     r0 = 3;
    0x000048fa add r1, pc                                        |     r1 = 0x988e;
    0x000048fc blx r4                                            |     uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
                                                                 | label_56:
    0x000048fe ldr.w r3, [pc, 0x694]                             |     r3 = *(0x4f96);
    0x00004902 movs r1, 1                                        |     r1 = 1;
    0x00004904 ldr.w r2, [pc, 0x690]                             |     
    0x00004908 ldr.w r3, [sb, r3]                                |     r3 = *((sb + r3));
    0x0000490c add r2, pc                                        |     r2 = 0x98a8;
    0x0000490e ldr r0, [r3]                                      |     r0 = *(0x4f96);
    0x00004910 ldr.w r3, [r8, 0xf0]                              |     r3 = var_f0h_2;
    0x00004914 blx 0x26b8                                        |     fcn_000026b8 ();
    0x00004916 mrc p8, 6, apsr_nzcv, c0, c8, 6                   |     __asm ("mrc p8, 6, apsr_nzcv, c0, c8, 6");
    0x0000491a adds r0, 0xd0                                     |     r0 += 0xd0;
    0x0000491c ldr r0, [r3, 0x58]                                |     r0 = *(0x4fee);
                                                                 |     if (r0 != 0) {
    0x0000491e cbz r0, 0x4924                                    |         
    0x00004920 blx 0x22c4                                        |         fcn_000022c4 ();
                                                                 |     }
    0x00004924 movs r3, 0                                        |     r3 = 0;
    0x00004926 str.w r3, [r8, 0xd0]                              |     __asm ("str.w r3, [var_d0h]");
                                                                 | label_55:
    0x0000492a ldr.w r0, [r8, 0xf0]                              |     r0 = var_f0h_2;
    0x0000492e ldrb r3, [r0]                                     |     r3 = *(r0);
                                                                 |     if (r3 != 0) {
    0x00004930 cbz r3, 0x493c                                    |         
    0x00004932 ldr r3, [sp, 0x18]                                |         r3 = var_18h;
    0x00004934 ldr r1, [r3]                                      |         r1 = *(r3);
    0x00004936 blx 0x2560                                        |         r0 = ip6tc_is_chain ();
                                                                 |         if (r0 == 0) {
    0x0000493a cbz r0, 0x4990                                    |             goto label_59;
                                                                 |         }
                                                                 |     }
    0x0000493c ldr.w r0, [pc, 0x65c]                             |     
    0x00004940 movs r1, 3                                        |     r1 = 3;
    0x00004942 add r0, pc                                        |     r0 = 0x98e2;
    0x00004944 blx 0x26f8                                        |     strtok (r0, r1);
    0x00004948 ldr r5, [r0, 0x14]                                |     r5 = *(0x98f6);
    0x0000494a mov r4, r0                                        |     r4 = r0;
    0x0000494c str.w r0, [r8, 0xd0]                              |     __asm ("str.w r0, [var_d0h]");
    0x00004950 movs r0, 1                                        |     r0 = 1;
    0x00004952 adds r5, 0x20                                     |     r5 += 0x20;
    0x00004954 mov r1, r5                                        |     r1 = r5;
    0x00004956 blx 0x26a8                                        |     fcn_000026a8 ();
    0x0000495a ldr.w r3, [r8, 0xd0]                              |     r3 = var_d0h;
    0x0000495e movs r2, 0x1d                                     |     r2 = 0x1d;
    0x00004960 str r0, [r4, 0x58]                                |     *((r4 + 0x58)) = r0;
    0x00004962 ldr.w r1, [r8, 0xf0]                              |     r1 = var_f0h_2;
    0x00004966 ldr r0, [r3, 0x58]                                |     r0 = *((r3 + 0x58));
    0x00004968 strh r5, [r0], 2                                  |     *(r0) = r5;
                                                                 |     r0 += 2;
    0x0000496c blx 0x2430                                        |     fcn_00002430 ();
    0x00004970 ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x00004972 ldr.w r0, [r8, 0xf0]                              |     r0 = var_f0h_2;
    0x00004976 ldr r1, [r3]                                      |     r1 = *(r3);
    0x00004978 blx 0x2560                                        |     r0 = ip6tc_is_chain ();
    0x0000497c cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000497e bne.w 0x4e38                                      |         goto label_60;
                                                                 |     }
    0x00004982 ldr.w r0, [r8, 0xd0]                              |     r0 = var_d0h;
    0x00004986 ldr r3, [r0, 0x58]                                |     r3 = *((r0 + 0x58));
    0x00004988 ldrb r2, [r0, 0x10]                               |     r2 = *((r0 + 0x10));
    0x0000498a strb r2, [r3, 0x1f]                               |     *((r3 + 0x1f)) = r2;
                                                                 | label_24:
    0x0000498c bl 0x66dc                                         |     fcn_000066dc (r0);
                                                                 | label_59:
    0x00004990 ldr.w r3, [r8, 0xd0]                              |     r3 = var_d0h;
    0x00004994 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00004996 bne.w 0x4808                                      |         goto label_8;
                                                                 |     }
    0x0000499a ldrb.w r3, [r8, 0x52]                             |     r3 = var_52h;
    0x0000499e ldr.w r0, [r8, 0xf0]                              |     r0 = var_f0h_2;
    0x000049a2 lsls r3, r3, 0x1e                                 |     r3 <<= 0x1e;
                                                                 |     if (r3 < r3) {
    0x000049a4 bmi.w 0x4f56                                      |         goto label_61;
                                                                 |     }
    0x000049a8 movs r1, 3                                        |     r1 = 3;
    0x000049aa blx 0x26f8                                        |     strtok (r0, r1);
    0x000049ae b 0x460c                                          |     goto label_9;
                                                                 | label_44:
    0x00004bd6 ldr.w r2, [r8, 0xc4]                              |     r2 = var_c4h;
    0x00004bda ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x00004bdc tst.w r2, 0x20                                    |     
    0x00004be0 and r0, r2, 0x40                                  |     r0 = r2 & 0x40;
    0x00004be4 ite ne                                            |     
                                                                 |     if ((r2 & 0x20) == 0) {
    0x00004be6 movne fp, 0x48                                    |         
                                                                 |     }
                                                                 |     if ((r2 & 0x20) == 0) {
    0x00004bea mov.w fp, 0xa                                     |         
                                                                 |     }
    0x00004bee lsls r5, r2, 0x1f                                 |     r5 = r2 << 0x1f;
    0x00004bf0 ldr r6, [r3]                                      |     r6 = *(r3);
    0x00004bf2 and r1, r2, 0x200                                 |     r1 = r2 & 0x200;
    0x00004bf6 it mi                                             |     
                                                                 |     if (r5 >= r2) {
    0x00004bf8 orrmi fp, fp, 1                                   |         
                                                                 |     }
                                                                 |     if (r0 == 0) {
    0x00004bfc cbnz r0, 0x4c02                                   |         
    0x00004bfe orr fp, fp, 4                                     |         
                                                                 |     }
    0x00004c02 cmp r1, 0                                         |     
                                                                 |     if (r1 != 0) {
    0x00004c04 bne.w 0x4e52                                      |         goto label_62;
                                                                 |     }
                                                                 | label_26:
    0x00004c08 mov r0, r6                                        |     r0 = r6;
    0x00004c0a blx 0x2364                                        |     r0 = fcn_00002364 ();
    0x00004c0e mov sb, r0                                        |     sb = r0;
    0x00004c10 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00004c12 beq.w 0x4f48                                      |         goto label_63;
                                                                 |     }
    0x00004c16 mov sl, r4                                        |     sl = r4;
    0x00004c18 str r7, [sp, 0x2c]                                |     var_2ch = r7;
    0x00004c1a ldr r4, [sp, 8]                                   |     r4 = var_8h;
    0x00004c1c movs r5, 0                                        |     r5 = 0;
    0x00004c1e ldr r7, [sp, 0xc]                                 |     r7 = var_ch;
    0x00004c20 add r3, sp, 0x48                                  |     r3 += var_48h;
    0x00004c22 str r3, [sp, 0x1c]                                |     var_1ch = r3;
    0x00004c24 str.w r8, [sp, 0x30]                              |     __asm ("str.w r8, [var_30h]");
                                                                 |     do {
    0x00004c28 cmp r4, 0                                         |         
                                                                 |         if (r4 == 0) {
    0x00004c2a beq 0x4cac                                        |             goto label_64;
                                                                 |         }
    0x00004c2c mov r1, sb                                        |         r1 = sb;
    0x00004c2e mov r0, r4                                        |         r0 = r4;
    0x00004c30 blx 0x2248                                        |         r0 = strcmp (r0, r1);
    0x00004c34 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00004c36 beq 0x4cac                                        |             goto label_64;
                                                                 |         }
                                                                 | label_16:
    0x00004c38 mov r0, r6                                        |         r0 = r6;
    0x00004c3a blx 0x2608                                        |         r0 = putchar (r0);
    0x00004c3e mov sb, r0                                        |         sb = r0;
    0x00004c40 cmp r0, 0                                         |         
    0x00004c42 bne 0x4c28                                        |         
                                                                 |     } while (r0 != 0);
    0x00004c44 ldr r7, [sp, 0x2c]                                |     r7 = var_2ch;
    0x00004c46 mov r4, sl                                        |     r4 = sl;
                                                                 | label_21:
    0x00004c48 blx 0x25b4                                        |     ip6tc_free ();
    0x00004c4c movs r3, 2                                        |     r3 = 2;
    0x00004c4e ldr.w r8, [sp, 0x30]                              |     r8 = var_30h;
    0x00004c52 str r3, [r0]                                      |     *(r0) = r3;
    0x00004c54 cmp r5, 0                                         |     
                                                                 |     if (r5 == 0) {
    0x00004c56 beq.w 0x4d72                                      |         goto label_33;
                                                                 |     }
    0x00004c5a lsls r2, r7, 0x18                                 |     r2 = r7 << 0x18;
                                                                 |     if (r2 < r7) {
    0x00004c5c bmi 0x4d58                                        |         goto label_65;
                                                                 |     }
                                                                 | label_20:
    0x00004c5e lsls r3, r7, 0x12                                 |     r3 = r7 << 0x12;
                                                                 |     if (r3 >= r7) {
    0x00004c60 bpl.w 0x4628                                      |         goto label_3;
                                                                 |     }
    0x00004c64 b 0x4682                                          |     goto label_10;
                                                                 | label_14:
    0x00004c76 mov r0, fp                                        |     r0 = fp;
    0x00004c78 blx 0x22c4                                        |     fcn_000022c4 ();
    0x00004c7c ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x00004c7e cmp r3, 1                                         |     
                                                                 |     if (r3 <= 1) {
    0x00004c80 ble.w 0x4630                                      |         goto label_11;
                                                                 |     }
    0x00004c84 b 0x47d2                                          |     goto label_12;
                                                                 | label_49:
    0x00004c9a ldrd r2, ip, [sp, 0x2c]                           |     __asm ("ldrd r2, ip, [var_2ch]");
    0x00004c9e ldr r0, [sp, 0x34]                                |     r0 = var_34h;
                                                                 | label_48:
    0x00004ca0 ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x00004ca2 adds r2, 1                                        |     r2++;
    0x00004ca4 cmp r3, r2                                        |     
                                                                 |     if (r3 != r2) {
    0x00004ca6 bne.w 0x459a                                      |         goto label_13;
                                                                 |     }
    0x00004caa b 0x4c76                                          |     goto label_14;
                                                                 |     if (r5 != 0) {
                                                                 | label_64:
    0x00004cac cbnz r5, 0x4d12                                   |         goto label_66;
                                                                 |     }
                                                                 | label_17:
    0x00004cae cmp r7, 0                                         |     
                                                                 |     if (r7 == 0) {
    0x00004cb0 beq 0x4d2e                                        |         goto label_67;
                                                                 |     }
                                                                 | label_19:
    0x00004cb2 mov r0, sb                                        |     r0 = sb;
    0x00004cb4 mov r1, r6                                        |     r1 = r6;
    0x00004cb6 clz r8, r7                                        |     r8 &= r7;
    0x00004cba mov.w sb, 0                                       |     sb = 0;
    0x00004cbe blx 0x2780                                        |     fcn_00002780 ();
    0x00004cc2 lsr.w r8, r8, 5                                   |     r8 >>= 5;
    0x00004cc6 mov r5, r0                                        |     r5 = r0;
                                                                 |     if (r0 != 0) {
    0x00004cc8 cbnz r0, 0x4cd8                                   |         goto label_15;
                                                                 |     }
    0x00004cca b 0x4d0e                                          |     goto label_68;
                                                                 |     do {
    0x00004ccc mov r0, r5                                        |         r0 = r5;
    0x00004cce mov r1, r6                                        |         r1 = r6;
    0x00004cd0 blx 0x2844                                        |         r0 = fcn_00002844 ();
    0x00004cd4 mov r5, r0                                        |         r5 = r0;
                                                                 |         if (r0 == 0) {
    0x00004cd6 cbz r0, 0x4d0e                                    |             goto label_68;
                                                                 |         }
                                                                 | label_15:
    0x00004cd8 add.w sb, sb, 1                                   |         sb++;
    0x00004cdc cmp r7, sb                                        |         
    0x00004cde ite ne                                            |         
                                                                 |         if (r7 == sb) {
    0x00004ce0 movne r3, r8                                      |             r3 = r8;
                                                                 |         }
                                                                 |         if (r7 != sb) {
    0x00004ce2 orreq r3, r8, 1                                   |             r3 = r8 | 1;
                                                                 |         }
    0x00004ce6 cmp r3, 0                                         |         
    0x00004ce8 beq 0x4ccc                                        |         
                                                                 |     } while (r3 == 0);
    0x00004cea mov r1, r6                                        |     r1 = r6;
    0x00004cec mov r0, r5                                        |     r0 = r5;
    0x00004cee blx 0x2664                                        |     fcn_00002664 ();
    0x00004cf2 mov r3, fp                                        |     r3 = fp;
    0x00004cf4 mov r1, r0                                        |     r1 = r0;
    0x00004cf6 mov r2, sb                                        |     r2 = sb;
    0x00004cf8 mov r0, r5                                        |     r0 = r5;
    0x00004cfa str r6, [sp]                                      |     *(sp) = r6;
    0x00004cfc bl 0x3df8                                         |     fcn_00003df8 (r0, r1, r2, r3, r4);
    0x00004d00 mov r0, r5                                        |     r0 = r5;
    0x00004d02 mov r1, r6                                        |     r1 = r6;
    0x00004d04 blx 0x2844                                        |     r0 = fcn_00002844 ();
    0x00004d08 mov r5, r0                                        |     r5 = r0;
    0x00004d0a cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00004d0c bne 0x4cd8                                        |         goto label_15;
                                                                 |     }
                                                                 | label_68:
    0x00004d0e movs r5, 1                                        |     r5 = 1;
    0x00004d10 b 0x4c38                                          |     goto label_16;
                                                                 | label_66:
    0x00004d12 movs r0, 0xa                                      |     r0 = 0xa;
    0x00004d14 blx 0x2618                                        |     r0 = fcn_00002618 ();
    0x00004d16 stc p7, c14, [r0], {0xc9}                         |     __asm ("stc p7, c14, [r0], {0xc9}");
    0x00004d18 b 0x4cae                                          |     goto label_17;
                                                                 | label_58:
    0x00004d1a ldr r0, [r5]                                      |     r0 = *(r5);
    0x00004d1c blx 0x25d8                                        |     sprintf_chk ()
    0x00004d20 ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x00004d22 mov r1, r0                                        |     r1 = r0;
    0x00004d24 str r0, [r3]                                      |     *(r3) = r0;
    0x00004d26 cmp r1, 0                                         |     
                                                                 |     if (r1 != 0) {
    0x00004d28 bne.w 0x4514                                      |         goto label_7;
                                                                 |     }
    0x00004d2c b 0x48d8                                          |     goto label_18;
                                                                 | label_67:
    0x00004d2e ldr r1, [sp, 0x1c]                                |     r1 = var_1ch;
    0x00004d30 mov r2, r6                                        |     r2 = r6;
    0x00004d32 mov r0, sb                                        |     r0 = sb;
    0x00004d34 blx 0x2710                                        |     r0 = xtables_find_match ();
    0x00004d38 mov r5, r0                                        |     r5 = r0;
    0x00004d3a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00004d3c beq.w 0x4f2a                                      |         goto label_69;
                                                                 |     }
                                                                 | label_31:
    0x00004d40 mov.w r3, -1                                      |     r3 = -1;
                                                                 | label_32:
    0x00004d44 str r3, [sp]                                      |     *(sp) = r3;
    0x00004d46 movs r3, 0                                        |     r3 = 0;
    0x00004d48 str r3, [sp, 4]                                   |     var_4h_2 = r3;
    0x00004d4a mov r2, r5                                        |     r2 = r5;
    0x00004d4c ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x00004d4e mov r1, sb                                        |     r1 = sb;
    0x00004d50 mov r0, fp                                        |     r0 = fp;
    0x00004d52 bl 0x6ecc                                         |     fcn_00006ecc (r0, r1, r2, r3);
    0x00004d56 b 0x4cb2                                          |     goto label_19;
                                                                 | label_65:
    0x00004d58 ldr.w r1, [r8, 0xc4]                              |     r1 = *((r8 + 0xc4));
    0x00004d5c ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x00004d5e ldr r0, [sp, 8]                                   |     r0 = var_8h;
    0x00004d60 and r1, r1, 0x20                                  |     r1 &= 0x20;
    0x00004d64 ldr r2, [r3]                                      |     r2 = *(r3);
    0x00004d66 bl 0x41dc                                         |     r0 = fcn_000041dc (r0, r1, r2);
    0x00004d6a mov r5, r0                                        |     r5 = r0;
    0x00004d6c cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00004d6e bne.w 0x4c5e                                      |         goto label_20;
                                                                 |     }
                                                                 | label_33:
    0x00004d72 movs r5, 0                                        |     r5 = 0;
    0x00004d74 b 0x4628                                          |     goto label_3;
                                                                 | label_42:
    0x00004d76 ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x00004d78 ldr r1, [sp, 0x30]                                |     r1 = var_30h;
    0x00004d7a ldr r0, [sp, 8]                                   |     r0 = var_8h;
    0x00004d7c ldr r2, [r3]                                      |     r2 = *(r3);
    0x00004d7e blx 0x2224                                        |     r0 = iptc_rename_chain ();
    0x00004d82 mov r5, r0                                        |     r5 = r0;
    0x00004d84 b 0x4628                                          |     goto label_3;
                                                                 | label_46:
    0x00004d86 ldr.w r3, [r8, 0xc4]                              |     r3 = var_c4h;
    0x00004d8a ldr r2, [sp, 0x18]                                |     r2 = var_18h;
    0x00004d8c and fp, r3, 0x20                                  |     
    0x00004d90 sbfx sl, r3, 5, 1                                 |     __asm ("sbfx sl, r3, 5, 1");
    0x00004d94 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x00004d96 ldr r6, [r2]                                      |     r6 = *(r2);
    0x00004d98 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00004d9a beq 0x4e58                                        |         goto label_70;
                                                                 |     }
                                                                 | label_27:
    0x00004d9c mov r0, r6                                        |     r0 = r6;
    0x00004d9e blx 0x2364                                        |     r0 = fcn_00002364 ();
    0x00004da2 mov sb, r0                                        |     sb = r0;
    0x00004da4 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00004da6 beq.w 0x4f48                                      |         goto label_63;
                                                                 |     }
    0x00004daa mov fp, r4                                        |     
    0x00004dac str r7, [sp, 0x2c]                                |     var_2ch = r7;
    0x00004dae ldr r4, [sp, 8]                                   |     r4 = var_8h;
    0x00004db0 movs r5, 0                                        |     r5 = 0;
    0x00004db2 ldr r7, [sp, 0xc]                                 |     r7 = var_ch;
    0x00004db4 str.w r8, [sp, 0x30]                              |     __asm ("str.w r8, [var_30h]");
                                                                 |     do {
                                                                 |         if (r4 == 0) {
    0x00004db8 cbz r4, 0x4dd6                                    |             goto label_71;
                                                                 |         }
    0x00004dba mov r1, r4                                        |         r1 = r4;
    0x00004dbc mov r0, sb                                        |         r0 = sb;
    0x00004dbe blx 0x2248                                        |         r0 = strcmp (r0, r1);
                                                                 |         if (r0 == 0) {
    0x00004dc2 cbz r0, 0x4dd6                                    |             goto label_71;
                                                                 |         }
                                                                 | label_23:
    0x00004dc4 mov r0, r6                                        |         r0 = r6;
    0x00004dc6 blx 0x2608                                        |         r0 = putchar (r0);
    0x00004dca mov sb, r0                                        |         sb = r0;
    0x00004dcc cmp r0, 0                                         |         
    0x00004dce bne 0x4db8                                        |         
                                                                 |     } while (r0 != 0);
    0x00004dd0 ldr r7, [sp, 0x2c]                                |     r7 = var_2ch;
    0x00004dd2 mov r4, fp                                        |     r4 = fp;
    0x00004dd4 b 0x4c48                                          |     goto label_21;
                                                                 | label_71:
    0x00004dd6 mov r1, r6                                        |     r1 = r6;
    0x00004dd8 mov r0, sb                                        |     r0 = sb;
    0x00004dda clz r8, r7                                        |     r8 &= r7;
    0x00004dde movs r5, 0                                        |     r5 = 0;
    0x00004de0 lsr.w r8, r8, 5                                   |     r8 >>= 5;
    0x00004de4 blx 0x2780                                        |     r0 = fcn_00002780 ();
                                                                 |     if (r0 != 0) {
    0x00004de8 cbnz r0, 0x4df4                                   |         goto label_22;
                                                                 |     }
    0x00004dea b 0x4e1c                                          |     goto label_72;
                                                                 |     do {
    0x00004dec mov r1, r6                                        |         r1 = r6;
    0x00004dee blx 0x2844                                        |         r0 = fcn_00002844 ();
                                                                 |         if (r0 == 0) {
    0x00004df2 cbz r0, 0x4e1c                                    |             goto label_72;
                                                                 |         }
                                                                 | label_22:
    0x00004df4 adds r5, 1                                        |         r5++;
    0x00004df6 cmp r7, r5                                        |         
    0x00004df8 ite ne                                            |         
                                                                 |         if (r7 == r5) {
    0x00004dfa movne r3, r8                                      |             r3 = r8;
                                                                 |         }
                                                                 |         if (r7 != r5) {
    0x00004dfc orreq r3, r8, 1                                   |             r3 = r8 | 1;
                                                                 |         }
    0x00004e00 cmp r3, 0                                         |         
    0x00004e02 beq 0x4dec                                        |         
                                                                 |     } while (r3 == 0);
    0x00004e04 mov r1, r6                                        |     r1 = r6;
    0x00004e06 mov r3, sl                                        |     r3 = sl;
    0x00004e08 mov r2, sb                                        |     r2 = sb;
    0x00004e0a str r0, [sp, 0x1c]                                |     var_1ch = r0;
    0x00004e0c bl 0x4238                                         |     fcn_00004238 (r0, r1, r2, r3, r4);
    0x00004e10 ldr r0, [sp, 0x1c]                                |     r0 = var_1ch;
    0x00004e12 mov r1, r6                                        |     r1 = r6;
    0x00004e14 blx 0x2844                                        |     fcn_00002844 ();
    0x00004e16 ldc p8, c2, [r6, -0]                              |     __asm ("ldc p8, c2, [r6, -0]");
                                                                 |     if (r3 != 0) {
    0x00004e1a bne 0x4df4                                        |         goto label_22;
                                                                 |     }
                                                                 | label_72:
    0x00004e1c movs r5, 1                                        |     r5 = 1;
    0x00004e1e b 0x4dc4                                          |     goto label_23;
                                                                 | label_52:
    0x00004e20 ldr.w r1, [r8, 0xc4]                              |     r1 = var_c4h;
    0x00004e24 ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x00004e26 ldr r0, [sp, 8]                                   |     r0 = var_8h;
    0x00004e28 and r1, r1, 0x20                                  |     r1 &= 0x20;
    0x00004e2c ldr r2, [r3]                                      |     r2 = *(r3);
    0x00004e2e bl 0x4180                                         |     r0 = fcn_00004180 (r0, r1, r2);
    0x00004e32 mov r5, r0                                        |     r5 = r0;
    0x00004e34 b.w 0x4628                                        |     goto label_3;
                                                                 | label_60:
    0x00004e38 ldr.w r0, [r8, 0xd0]                              |     r0 = var_d0h;
    0x00004e3c b 0x498c                                          |     goto label_24;
                                                                 | label_39:
    0x00004e3e ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x00004e40 cmp r3, 1                                         |     
                                                                 |     if (r3 > 1) {
    0x00004e42 bgt.w 0x47ce                                      |         goto label_25;
                                                                 |     }
    0x00004e46 add r0, sp, 0x1f8                                 |     r0 += var_1f8h;
    0x00004e48 movs r5, 1                                        |     r5 = 1;
    0x00004e4a blx 0x27c8                                        |     fcn_000027c8 ();
    0x00004e4e b.w 0x463a                                        |     goto label_2;
                                                                 | label_62:
    0x00004e52 orr fp, fp, 0x100                                 |     
    0x00004e56 b 0x4c08                                          |     goto label_26;
                                                                 | label_70:
    0x00004e58 mov r0, r6                                        |     r0 = r6;
    0x00004e5a blx 0x2364                                        |     r0 = fcn_00002364 ();
    0x00004e5e mov r5, r0                                        |     r5 = r0;
    0x00004e60 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00004e62 beq 0x4d9c                                        |         goto label_27;
                                                                 |     }
    0x00004e64 ldr r3, [pc, 0x138]                               |     
    0x00004e66 add r3, pc                                        |     r3 = 0x9e0a;
    0x00004e68 str r3, [sp, 0x1c]                                |     var_1ch = r3;
    0x00004e6a ldr r3, [pc, 0x138]                               |     
    0x00004e6c add r3, pc                                        |     r3 = 0x9e16;
    0x00004e6e str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x00004e70 ldr r3, [pc, 0x134]                               |     
    0x00004e72 add r3, pc                                        |     r3 = 0x9e1e;
    0x00004e74 strd r3, r7, [sp, 0x30]                           |     __asm ("strd r3, r7, [var_34h]");
    0x00004e78 mov r3, r4                                        |     r3 = r4;
    0x00004e7a ldr r7, [sp, 8]                                   |     r7 = var_8h;
    0x00004e7c mov r4, fp                                        |     r4 = fp;
    0x00004e7e mov fp, r3                                        |     
                                                                 |     do {
                                                                 |         if (r7 != 0) {
    0x00004e80 cbz r7, 0x4e8c                                    |             
    0x00004e82 mov r1, r7                                        |             r1 = r7;
    0x00004e84 mov r0, r5                                        |             r0 = r5;
    0x00004e86 blx 0x2248                                        |             r0 = strcmp (r0, r1);
                                                                 |             if (r0 != 0) {
    0x00004e8a cbnz r0, 0x4eb8                                   |                 goto label_28;
                                                                 |             }
                                                                 |         }
    0x00004e8c mov r1, r6                                        |         r1 = r6;
    0x00004e8e mov r0, r5                                        |         r0 = r5;
    0x00004e90 blx 0x24b8                                        |         r0 = ip6tc_rename_chain ();
                                                                 |         if (r0 == 0) {
    0x00004e94 cbz r0, 0x4ee4                                    |             goto label_73;
                                                                 |         }
    0x00004e96 add.w sb, sp, 0x48                                |         sb += var_48h;
    0x00004e9a mov r2, r6                                        |         r2 = r6;
    0x00004e9c mov r1, sb                                        |         r1 = sb;
    0x00004e9e mov r0, r5                                        |         r0 = r5;
    0x00004ea0 blx 0x2710                                        |         xtables_find_match ();
    0x00004ea4 ldr r1, [sp, 0x2c]                                |         r1 = var_2ch;
    0x00004ea6 mov r3, r0                                        |         r3 = r0;
    0x00004ea8 mov r2, r5                                        |         r2 = r5;
    0x00004eaa movs r0, 1                                        |         r0 = 1;
    0x00004eac blx 0x2674                                        |         ip6tc_flush_entries ();
                                                                 |         if (r4 != 0) {
    0x00004eb0 cbnz r4, 0x4f14                                   |             goto label_74;
                                                                 |         }
                                                                 | label_30:
    0x00004eb2 movs r0, 0xa                                      |         r0 = 0xa;
    0x00004eb4 blx 0x2618                                        |         fcn_00002618 ();
                                                                 | label_28:
    0x00004eb8 mov r0, r6                                        |         r0 = r6;
    0x00004eba blx 0x2608                                        |         r0 = putchar (r0);
    0x00004ebe mov r5, r0                                        |         r5 = r0;
    0x00004ec0 cmp r0, 0                                         |         
    0x00004ec2 bne 0x4e80                                        |         
                                                                 |     } while (r0 != 0);
    0x00004ec4 ldr r7, [sp, 0x34]                                |     r7 = var_34h;
    0x00004ec6 mov r4, fp                                        |     r4 = fp;
    0x00004ec8 b 0x4d9c                                          |     goto label_27;
                                                                 | label_47:
    0x00004ee0 movs r5, 1                                        |     r5 = 1;
    0x00004ee2 b 0x4c76                                          |     goto label_14;
                                                                 | label_73:
    0x00004ee4 ldr r1, [sp, 0x1c]                                |     r1 = var_1ch;
    0x00004ee6 mov r2, r5                                        |     r2 = r5;
    0x00004ee8 movs r0, 1                                        |     r0 = 1;
    0x00004eea blx 0x2674                                        |     ip6tc_flush_entries ();
    0x00004eee b 0x4eb8                                          |     goto label_28;
                                                                 | label_57:
    0x00004ef0 movs r5, 0x70                                     |     r5 = 0x70;
    0x00004ef2 adds r0, 0x70                                     |     r0 += 0x70;
    0x00004ef4 blx 0x2494                                        |     xtables_ip6addr_to_anyname ();
    0x00004ef8 mov r2, r5                                        |     r2 = r5;
    0x00004efa mov r1, r8                                        |     r1 = r8;
    0x00004efc mov r4, r0                                        |     r4 = r0;
    0x00004efe blx 0x22e8                                        |     fcn_000022e8 ();
    0x00004f02 ldrh.w r2, [fp]                                   |     r2 = *(fp);
    0x00004f06 adds r0, r4, r5                                   |     r0 = r4 + r5;
    0x00004f08 strh.w r5, [r4, 0x58]                             |     *((r4 + 0x58)) = r5;
    0x00004f0c adds r3, r2, r5                                   |     r3 = r2 + r5;
    0x00004f0e strh.w r3, [r4, 0x5a]                             |     *((r4 + 0x5a)) = r3;
    0x00004f12 b 0x4882                                          |     goto label_29;
                                                                 | label_74:
    0x00004f14 ldrd r2, r3, [sp, 0x50]                           |     __asm ("ldrd r2, r3, [var_50h]");
    0x00004f18 movs r0, 1                                        |     r0 = 1;
    0x00004f1a ldr r1, [sp, 0x30]                                |     r1 = var_30h;
    0x00004f1c strd r2, r3, [sp]                                 |     __asm ("strd r2, r3, [sp]");
    0x00004f20 ldrd r2, r3, [sp, 0x48]                           |     __asm ("ldrd r2, r3, [var_48h]");
    0x00004f24 blx 0x2674                                        |     ip6tc_flush_entries ();
    0x00004f28 b 0x4eb2                                          |     goto label_30;
                                                                 | label_69:
    0x00004f2a add.w r8, sp, 0x3c                                |     r8 += var_3ch;
    0x00004f2e mov r2, r6                                        |     r2 = r6;
    0x00004f30 mov r1, sb                                        |     r1 = sb;
    0x00004f32 mov r0, r8                                        |     r0 = r8;
    0x00004f34 blx 0x24d0                                        |     r0 = ctype_tolower_loc ();
    0x00004f38 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00004f3a beq.w 0x4d40                                      |         goto label_31;
                                                                 |     }
    0x00004f3e ldr r3, [sp, 0x3c]                                |     r3 = var_3ch;
    0x00004f40 b 0x4d44                                          |     goto label_32;
                                                                 | label_63:
    0x00004f48 blx 0x25b4                                        |     ip6tc_free ();
    0x00004f4c movs r3, 2                                        |     r3 = 2;
    0x00004f4e str r3, [r0]                                      |     *(r0) = r3;
    0x00004f50 b 0x4d72                                          |     goto label_33;
                                                                 | label_50:
    0x00004f52 blx 0x2370                                        |     fcn_00002370 ();
                                                                 | label_61:
    0x00004f56 ldr r3, [pc, 0x34]                                |     
    0x00004f58 mov r2, r0                                        |     r2 = r0;
    0x00004f5a ldr r1, [pc, 0x50]                                |     
    0x00004f5c movs r0, 2                                        |     r0 = 2;
    0x00004f5e ldr.w r3, [sb, r3]                                |     r3 = *((sb + r3));
    0x00004f62 add r1, pc                                        |     r1 = 0x9f14;
    0x00004f64 ldr r3, [r3]                                      |     
    0x00004f66 ldr r3, [r3, 0x14]                                |     r3 = *(0x4fa2);
    0x00004f68 blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x00004f6a nop                                               |     
    0x00004f6c add r1, sp, 0x88                                  |     r1 += var_88h;
    0x00004f6e movs r0, r0                                       |     
    0x00004f70 lsls r0, r1, 9                                    |     r0 = r1 << 9;
    0x00004f72 movs r0, r0                                       |     
    0x00004f74 add r1, sp, 0x38                                  |     r1 += var_38h;
    0x00004f76 movs r0, r0                                       |     
    0x00004f78 add r3, sp, 0x2c0                                 |     r3 += arg_2c0h;
    0x00004f7a movs r0, r0                                       |     
    0x00004f7c lsls r0, r6, 9                                    |     r0 = r6 << 9;
    0x00004f7e movs r0, r0                                       |     
    0x00004f80 strh r2, [r2, 0x30]                               |     *((r2 + 0x30)) = r2;
    0x00004f82 movs r0, r0                                       |     
    0x00004f84 adr r7, 0x40                                      |     r7 = 0x40;
    0x00004f86 movs r0, r0                                       |     
    0x00004f88 lsls r0, r1, 0xa                                  |     r0 = r1 << 0xa;
    0x00004f8a movs r0, r0                                       |     
    0x00004f8c lsls r0, r7, 8                                    |     r0 = r7 << 8;
    0x00004f8e movs r0, r0                                       |     
    0x00004f90 str r2, [r4, 0xc]                                 |     *((r4 + 0xc)) = r2;
    0x00004f92 movs r0, r0                                       |     
    0x00004f94 lsls r0, r3, 9                                    |     r0 = r3 << 9;
    0x00004f96 movs r0, r0                                       |     
    0x00004f98 str r4, [r7, 0xc]                                 |     *((r7 + 0xc)) = r4;
    0x00004f9a movs r0, r0                                       |     
    0x00004f9c strh r6, [r0, 0xc]                                |     *((r0 + 0xc)) = r6;
    0x00004f9e movs r0, r0                                       |     
    0x00004fa0 ldrh r2, [r6, r7]                                 |     r2 = *((r6 + r7));
    0x00004fa2 movs r0, r0                                       |     
    0x00004fa4 ldrh r0, [r4, r7]                                 |     r0 = *((r4 + r7));
    0x00004fa6 movs r0, r0                                       |     
    0x00004fa8 ldrh r6, [r7, r3]                                 |     r6 = *((r7 + r3));
    0x00004faa movs r0, r0                                       |     
    0x00004fac ldrh r6, [r1, r3]                                 |     r6 = *((r1 + r3));
    0x00004fae movs r0, r0                                       |     
    0x00004fb0 push.w {r4, r5, r6, r7, r8, lr}                   |     
    0x00004fb2 rors r0, r6                                       |     __asm ("rors r0, r6");
    0x00004fb4 sub sp, 0x18                                      |     
    0x00004fb6 ldr r6, [pc, 0xd0]                                |     
    0x00004fb8 movs r7, 0                                        |     r7 = 0;
    0x00004fba mov r8, r1                                        |     r8 = r1;
    0x00004fbc movs r1, 0xa                                      |     r1 = 0xa;
    0x00004fbe ldr r5, [pc, 0xcc]                                |     r5 = *(0x508e);
    0x00004fc0 add r6, pc                                        |     r6 = 0xa04e;
    0x00004fc2 ldr r4, [pc, 0xcc]                                |     
    0x00004fc4 ldr r2, [pc, 0xcc]                                |     
    0x00004fc6 ldr r5, [r6, r5]                                  |     
    0x00004fc8 mov r6, r0                                        |     r6 = r0;
    0x00004fca ldr r3, [pc, 0xcc]                                |     r3 = *(0x509a);
    0x00004fcc add r4, pc                                        |     r4 = 0xa062;
    0x00004fce add r2, pc                                        |     r2 = 0xa066;
    0x00004fd0 ldr r5, [r5]                                      |     r5 = *(0xa04e);
    0x00004fd2 str r5, [sp, 0x14]                                |     var_14h_2 = r5;
    0x00004fd4 lsls r1, r6, 1                                    |     r1 = r6 << 1;
    0x00004fd6 movs r0, r0                                       |     
    0x00004fd8 strd r2, r7, [sp, 0xc]                            |     __asm ("strd r2, r7, [var_10h_2]");
    0x00004fdc ldr r5, [r4, r3]                                  |     r5 = *(0xa062);
    0x00004fde ldr r3, [pc, 0xbc]                                |     
    0x00004fe0 mov r0, r5                                        |     r0 = r5;
    0x00004fe2 add r3, pc                                        |     r3 = 0xa084;
    0x00004fe4 str r3, [r5, 4]                                   |     *((r5 + 4)) = r3;
    0x00004fe6 blx 0x28a8                                        |     r0 = fcn_000028a8 ();
    0x00004fea cmp r0, r7                                        |     
                                                                 |     if (r0 < r7) {
    0x00004fec blt 0x5050                                        |         goto label_75;
                                                                 |     }
    0x00004fee add r3, sp, 0x10                                  |     r3 += var_10h_2;
    0x00004ff0 mov r1, r8                                        |     r1 = r8;
    0x00004ff2 mov r0, r6                                        |     r0 = r6;
    0x00004ff4 add r2, sp, 0xc                                   |     r2 += var_ch_2;
    0x00004ff6 str r7, [sp]                                      |     *(sp) = r7;
    0x00004ff8 bl 0x571c                                         |     r0 = fcn_0000571c (r0, r1, r2, r3, r4);
                                                                 |     if (r0 != 0) {
    0x00004ffc cbnz r0, 0x5038                                   |         goto label_76;
                                                                 |     }
    0x00004ffe blx 0x2590                                        |     xtables_merge_options ();
                                                                 | label_34:
    0x00005002 blx 0x25b4                                        |     ip6tc_free ();
    0x00005006 ldr r3, [pc, 0x98]                                |     r3 = *(0x50a2);
    0x00005008 mov r5, r0                                        |     r5 = r0;
    0x0000500a ldr r0, [r0]                                      |     r0 = *(r0);
    0x0000500c ldr r3, [r4, r3]                                  |     r3 = *((r4 + r3));
    0x0000500e cmp r0, 0x16                                      |     
    0x00005010 ldr r4, [r3]                                      |     r4 = *(0x50a2);
                                                                 |     if (r0 == 0x16) {
    0x00005012 beq 0x506c                                        |         goto label_77;
                                                                 |     }
    0x00005014 blx 0x2764                                        |     iptc_set_policy ();
    0x00005018 ldr r2, [pc, 0x88]                                |     
    0x0000501a mov r3, r0                                        |     r3 = r0;
    0x0000501c movs r1, 1                                        |     r1 = 1;
    0x0000501e mov r0, r4                                        |     r0 = r4;
    0x00005020 add r2, pc                                        |     r2 = 0xa0c8;
    0x00005022 blx 0x26b8                                        |     fcn_000026b8 ();
                                                                 | label_35:
    0x00005026 ldr r3, [r5]                                      |     r3 = *(r5);
    0x00005028 cmp r3, 0xb                                       |     
                                                                 |     if (r3 == 0xb) {
    0x0000502a beq 0x5080                                        |         goto label_78;
                                                                 |     }
    0x0000502c movs r5, 0                                        |     r5 = 0;
                                                                 |     do {
    0x0000502e clz r0, r5                                        |         r0 &= r5;
    0x00005032 lsrs r0, r0, 5                                    |         r0 >>= 5;
    0x00005034 blx 0x2518                                        |         xtables_ipaddr_to_anyname ();
                                                                 | label_76:
    0x00005038 ldr r0, [sp, 0x10]                                |         r0 = var_10h_2;
    0x0000503a blx 0x2728                                        |         r0 = iptc_append_entry ();
    0x0000503e mov r5, r0                                        |         r5 = r0;
    0x00005040 ldr r0, [sp, 0x10]                                |         r0 = var_10h_2;
    0x00005042 blx 0x25c0                                        |         xtables_ipparse_multiple ();
    0x00005046 blx 0x2590                                        |         xtables_merge_options ();
    0x0000504a cmp r5, 0                                         |         
    0x0000504c bne 0x502e                                        |         
                                                                 |     } while (r5 != 0);
    0x0000504e b 0x5002                                          |     goto label_34;
                                                                 | label_75:
    0x00005050 ldr r1, [pc, 0x4c]                                |     r1 = *(0x50a0);
    0x00005052 ldrd r3, r6, [r5, 4]                              |     __asm ("ldrd r3, r6, [r5, 4]");
    0x00005056 ldr r2, [pc, 0x50]                                |     
    0x00005058 ldr r0, [r4, r1]                                  |     r0 = *((r4 + r1));
    0x0000505a movs r1, 1                                        |     r1 = 1;
    0x0000505c str r6, [sp]                                      |     *(sp) = r6;
    0x0000505e add r2, pc                                        |     r2 = 0xa10c;
    0x00005060 ldr r0, [r0]                                      |     r0 = *(r0);
    0x00005062 blx 0x26b8                                        |     fcn_000026b8 ();
    0x00005066 movs r0, 1                                        |     r0 = 1;
    0x00005068 blx 0x2518                                        |     xtables_ipaddr_to_anyname ();
                                                                 | label_77:
    0x0000506c blx 0x2764                                        |     iptc_set_policy ();
    0x00005070 ldr r2, [pc, 0x38]                                |     
    0x00005072 mov r3, r0                                        |     r3 = r0;
    0x00005074 movs r1, 1                                        |     r1 = 1;
    0x00005076 mov r0, r4                                        |     r0 = r4;
    0x00005078 add r2, pc                                        |     r2 = 0xa128;
    0x0000507a blx 0x26b8                                        |     fcn_000026b8 ();
    0x0000507e b 0x5026                                          |     goto label_35;
                                                                 | label_78:
    0x00005080 movs r0, 4                                        |     r0 = 4;
    0x00005082 blx 0x2518                                        |     xtables_ipaddr_to_anyname ();
    0x00005086 nop                                               |     
    0x00005088 ldr r5, [sp, 0x2c0]                               |     r5 = *(arg_2c0h_2);
    0x0000508a movs r0, r0                                       |     
    0x0000508c lsls r0, r1, 9                                    |     r0 = r1 << 9;
    0x0000508e movs r0, r0                                       |     
    0x00005090 ldr r5, [sp, 0x290]                               |     r5 = *(arg_260h);
    0x00005092 movs r0, r0                                       |     
    0x00005094 ldr r6, [r0, r2]                                  |     r6 = *((r0 + r2));
    0x00005096 movs r0, r0                                       |     
    0x00005098 lsls r4, r7, 8                                    |     r4 = r7 << 8;
    0x0000509a movs r0, r0                                       |     
    0x0000509c strb r6, [r6, r0]                                 |     *((r6 + r0)) = r6;
    0x0000509e movs r0, r0                                       |     
    0x000050a0 lsls r0, r3, 9                                    |     r0 = r3 << 9;
    0x000050a2 movs r0, r0                                       |     
    0x000050a4 ldrh r0, [r5, r7]                                 |     r0 = *((r5 + r7));
    0x000050a6 movs r0, r0                                       |     
    0x000050a8 ldrsb r6, [r7, r7]                                |     r6 = *((r7 + r7));
    0x000050aa movs r0, r0                                       |     
    0x000050ac ldrh r4, [r3, r5]                                 |     r4 = *((r3 + r5));
    0x000050ae movs r0, r0                                       |     
                                                                 | }

[*] Function sprintf used 3 times xtables-legacy-multi