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

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


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

    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/xtables-legacy-multi @ 0x47f4 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.000047f4 ()                                      | void fcn_000047f4 (int16_t arg_200h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_ch_2;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_sp_0h;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_2ch;
                                                                 |     int16_t var_30h;
                                                                 |     int16_t var_34h;
                                                                 |     int16_t var_38h;
                                                                 |     int16_t var_3ch;
                                                                 |     char * s1;
                                                                 |     int16_t var_44h;
                                                                 |     int16_t var_48h;
                                                                 |     int16_t var_4ch;
                                                                 |     int16_t var_50h;
                                                                 |     int16_t var_54h;
                                                                 |     int16_t var_58h;
                                                                 |     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_80h;
                                                                 |     int16_t var_84h;
                                                                 |     int16_t var_88h;
                                                                 |     int16_t var_8ch;
                                                                 |     int16_t var_90h;
                                                                 |     int16_t var_94h;
                                                                 |     int16_t var_98h;
                                                                 |     int16_t var_9ch;
                                                                 |     int16_t var_a0h;
                                                                 |     int16_t var_a4h;
                                                                 |     int16_t var_ach;
                                                                 |     size_t n;
                                                                 |     int16_t var_b8h;
                                                                 |     int16_t var_bch;
                                                                 |     int16_t var_c0h;
                                                                 |     int32_t var_c0h_3;
                                                                 |     int16_t var_c8h;
                                                                 |     int32_t var_c8h_2;
                                                                 |     int16_t var_d0h;
                                                                 |     int32_t var_8h;
                                                                 |     int16_t var_e0h;
                                                                 |     int16_t var_e8h;
                                                                 |     int16_t var_f0h;
                                                                 |     int32_t var_24h;
                                                                 |     int32_t var_28h_2;
                                                                 |     int16_t var_100h;
                                                                 |     int16_t var_110h;
                                                                 |     int8_t var_52h;
                                                                 |     int16_t var_123h;
                                                                 |     int32_t var_54h_2;
                                                                 |     int32_t var_58h_2;
                                                                 |     int16_t var_130h;
                                                                 |     int32_t var_70h_2;
                                                                 |     int32_t var_c0h_2;
                                                                 |     int32_t var_c4h;
                                                                 |     int16_t var_198h;
                                                                 |     int16_t var_19ch;
                                                                 |     int32_t var_d4h;
                                                                 |     int32_t var_f0h_2;
                                                                 |     int32_t var_f4h;
                                                                 |     int16_t var_1d4h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x000047f4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x000047f8 sub sp, 0x1dc                                     |     
    0x000047fa str r2, [sp, 0x50]                                |     var_50h = r2;
    0x000047fc mov r4, r1                                        |     r4 = r1;
    0x000047fe add r5, sp, 0xd0                                  |     r5 += var_d0h;
    0x00004800 mov r7, r0                                        |     r7 = r0;
    0x00004802 ldr.w r2, [pc, 0xad8]                             |     r2 = *(0x000052dc);
    0x00004806 mov r0, r5                                        |     r0 = r5;
    0x00004808 str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x0000480a add.w fp, sp, 0xa8                                |     
    0x0000480e ldrb.w r1, [sp, 0x200]                            |     r1 = *(arg_200h);
    0x00004812 ldr.w r3, [pc, 0xacc]                             |     
    0x00004816 add r2, pc                                        |     r2 += pc;
    0x00004818 ldr.w r6, [pc, 0xac8]                             |     r6 = *(0x000052e4);
    0x0000481c str r1, [sp, 0x30]                                |     var_30h = r1;
    0x0000481e movs r1, 0                                        |     r1 = 0;
    0x00004820 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00004822 mov.w r2, 0x100                                   |     r2 = 0x100;
    0x00004826 add r6, pc                                        |     r6 += pc;
    0x00004828 ldr r3, [r3]                                      |     r3 = *(0x52e2);
    0x0000482a str r3, [sp, 0x1d4]                               |     var_1d4h = r3;
    0x0000482c mov.w r3, 0                                       |     r3 = 0;
    0x00004830 blx 0x24b8                                        |     iptc_next_chain ();
    0x00004834 add r1, sp, 0x90                                  |     r1 += var_90h;
    0x00004836 ldr.w r3, [pc, 0xab0]                             |     
    0x0000483a str r1, [sp, 0x5c]                                |     var_5ch = r1;
    0x0000483c add r1, sp, 0x94                                  |     r1 += var_94h;
    0x0000483e str r1, [sp, 0x60]                                |     var_60h = r1;
    0x00004840 add r1, sp, 0x98                                  |     r1 += var_98h;
    0x00004842 str r1, [sp, 0x64]                                |     var_64h = r1;
    0x00004844 add r3, pc                                        |     r3 = 0x9b32;
    0x00004846 add r1, sp, 0x9c                                  |     r1 += var_9ch;
    0x00004848 str.w r3, [r5, 0xf0]                              |     __asm ("str.w r3, [var_f0h_2]");
    0x0000484c str r1, [sp, 0x68]                                |     var_68h = r1;
    0x0000484e add r1, sp, 0xa0                                  |     r1 += var_a0h;
    0x00004850 ldr.w r3, [pc, 0xa98]                             |     r3 = *(0x52ec);
    0x00004854 movs r2, 0                                        |     r2 = 0;
    0x00004856 str r1, [sp, 0x6c]                                |     var_6ch = r1;
    0x00004858 add r1, sp, 0xa4                                  |     r1 += var_a4h;
    0x0000485a str r1, [sp, 0x70]                                |     var_70h = r1;
    0x0000485c add r0, sp, 0xb8                                  |     r0 += var_b8h;
    0x0000485e movs r1, 1                                        |     r1 = 1;
    0x00004860 str.w r4, [r5, 0xf4]                              |     __asm ("str.w r4, [var_f4h]");
    0x00004864 str r0, [sp, 0x74]                                |     var_74h = r0;
    0x00004866 str r2, [sp, 0xbc]                                |     var_bch = r2;
    0x00004868 str r2, [sp, 0x90]                                |     var_90h = r2;
    0x0000486a str r2, [sp, 0x94]                                |     var_94h = r2;
    0x0000486c str r2, [sp, 0x98]                                |     var_98h = r2;
    0x0000486e str r2, [sp, 0x9c]                                |     var_9ch = r2;
    0x00004870 str r2, [sp, 0xa0]                                |     var_a0h = r2;
    0x00004872 str r2, [sp, 0xa4]                                |     var_a4h = r2;
    0x00004874 str r1, [sp, 0xb8]                                |     var_b8h = r1;
    0x00004876 str.w r2, [fp]                                    |     __asm ("str.w r2, [fp]");
    0x0000487a ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x0000487c str r2, [r3]                                      |     *(r3) = r2;
    0x0000487e str r3, [sp, 0x28]                                |     var_28h = r3;
    0x00004880 ldr.w r3, [pc, 0xa6c]                             |     
    0x00004884 ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x00004886 ldr r3, [r3]                                      |     r3 = *(0x52f0);
                                                                 |     if (r3 == 0) {
    0x00004888 cbz r3, 0x4892                                    |         goto label_55;
                                                                 |     }
                                                                 |     do {
    0x0000488a str r2, [r3, 0x5c]                                |         *((r3 + 0x5c)) = r2;
    0x0000488c ldr r3, [r3, 4]                                   |         r3 = *((r3 + 4));
    0x0000488e cmp r3, 0                                         |         
    0x00004890 bne 0x488a                                        |         
                                                                 |     } while (r3 != 0);
                                                                 | label_55:
    0x00004892 ldr.w r3, [pc, 0xa60]                             |     
    0x00004896 ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x00004898 str r3, [sp, 0x84]                                |     var_84h = r3;
    0x0000489a ldr r3, [r3]                                      |     r3 = *(0x52f6);
                                                                 |     if (r3 == 0) {
    0x0000489c cbz r3, 0x48aa                                    |         goto label_56;
                                                                 |     }
    0x0000489e movs r2, 0                                        |     r2 = 0;
                                                                 |     do {
    0x000048a0 strd r2, r2, [r3, 0x5c]                           |         __asm ("strd r2, r2, [r3, 0x5c]");
    0x000048a4 ldr r3, [r3, 4]                                   |         r3 = *((r3 + 4));
    0x000048a6 cmp r3, 0                                         |         
    0x000048a8 bne 0x48a0                                        |         
                                                                 |     } while (r3 != 0);
                                                                 | label_56:
    0x000048aa ldr.w r3, [pc, 0xa4c]                             |     r3 = *(0x52fa);
    0x000048ae movs r2, 0                                        |     r2 = 0;
    0x000048b0 mov sb, r2                                        |     sb = r2;
    0x000048b2 ldr.w r8, [pc, 0xa48]                             |     
    0x000048b6 ldr r1, [r6, r3]                                  |     r1 = *((r6 + r3));
    0x000048b8 ldr.w r3, [pc, 0xa44]                             |     
    0x000048bc add r8, pc                                        |     r8 = 0x9bbe;
    0x000048be str r2, [r1]                                      |     *(r1) = r2;
    0x000048c0 ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x000048c2 ldr.w r2, [pc, 0xa40]                             |     r2 = *(0x00005304);
    0x000048c6 ldr.w r1, [pc, 0xa40]                             |     r1 = *(0x00005308);
    0x000048ca str r3, [sp, 0x78]                                |     var_78h = r3;
    0x000048cc ldr r3, [r3]                                      |     
    0x000048ce add r2, pc                                        |     r2 += pc;
    0x000048d0 add r1, pc                                        |     r1 += pc;
    0x000048d2 str.w sb, [sp, 0x34]                              |     __asm ("str.w sb, [var_34h]");
    0x000048d6 str r1, [sp, 0x80]                                |     var_80h = r1;
    0x000048d8 ldr r3, [r3, 0xc]                                 |     r3 = *(0x530c);
    0x000048da str.w sb, [sp, 0x7c]                              |     __asm ("str.w sb, [var_7ch]");
    0x000048de str.w sb, [sp, 0x58]                              |     __asm ("str.w sb, [var_58h]");
    0x000048e2 str r3, [r2, 0x10]                                |     *((r2 + 0x10)) = r3;
    0x000048e4 ldr.w r2, [pc, 0xa24]                             |     
    0x000048e8 str.w sb, [sp, 0x4c]                              |     __asm ("str.w sb, [var_4ch]");
    0x000048ec str.w sb, [sp, 0x38]                              |     __asm ("str.w sb, [var_38h]");
    0x000048f0 add r2, pc                                        |     r2 = 0x9c00;
    0x000048f2 str.w sb, [sp, 0x48]                              |     __asm ("str.w sb, [var_48h]");
    0x000048f6 str r2, [sp, 0x40]                                |     s1 = r2;
    0x000048f8 str.w sb, [sp, 0x2c]                              |     __asm ("str.w sb, [var_2ch]");
    0x000048fc str.w sb, [sp, 0x54]                              |     __asm ("str.w sb, [var_54h]");
    0x00004900 str.w sb, [sp, 0x44]                              |     __asm ("str.w sb, [var_44h]");
                                                                 |     do {
    0x00004904 movs r2, 0                                        |         r2 = 0;
    0x00004906 mov r1, r4                                        |         r1 = r4;
    0x00004908 str r2, [sp]                                      |         *(sp) = r2;
    0x0000490a mov r0, r7                                        |         r0 = r7;
    0x0000490c mov r2, r8                                        |         r2 = r8;
    0x0000490e blx 0x23c8                                        |         r0 = ctype_b_loc ();
    0x00004912 adds r1, r0, 1                                    |         r1 = r0 + 1;
    0x00004914 str.w r0, [r5, 0xc4]                              |         __asm ("str.w r0, [var_c4h]");
    0x00004916 lsls r4, r0, 3                                    |         r4 = r0 << 3;
                                                                 |         if (r4 == r0) {
    0x00004918 beq.w 0x4fbe                                      |             goto label_57;
                                                                 |         }
    0x0000491c subs r0, 1                                        |         r0--;
    0x0000491e cmp r0, 0x77                                      |         
                                                                 |         if (r0 > 0x77) {
    0x00004920 bhi.w 0x4a42                                      |             goto label_58;
                                                                 |         }
                                                                 |         /* switch table (121 cases) at 0x4928 */
    0x00004924 tbh [pc, r0, lsl 1]                               |         __asm ("tbh [pc, r0, lsl 1]");
    0x00004a18 ldr.w r3, [r5, 0xc0]                              |         r3 = *((r5 + 0xc0));
    0x00004a1c movs r2, 0                                        |         r2 = 0;
    0x00004a1e mov.w r1, 0x4000                                  |         r1 = 0x4000;
                                                                 | label_5:
    0x00004a22 mov r0, fp                                        |         r0 = fp;
    0x00004a24 bl 0x9a10                                         |         fcn_00009a10 (r0, r1);
    0x00004a28 ldr.w r3, [pc, 0x8e4]                             |         r3 = *(0x5310);
    0x00004a2c ldr r3, [r6, r3]                                  |         r3 = *((r6 + r3));
    0x00004a2e ldr.w sb, [r3]                                    |         sb = *(0x5310);
                                                                 | label_0:
    0x00004a32 movs r3, 0                                        |         r3 = 0;
    0x00004a34 str.w r3, [r5, 0xc0]                              |         __asm ("str.w r3, [var_c0h_2]");
                                                                 | label_1:
    0x00004a38 ldr.w r3, [pc, 0x8d8]                             |         r3 = *(0x00005314);
    0x00004a3c add r3, pc                                        |         r3 += pc;
    0x00004a3e ldr r3, [r3, 0x10]                                |         r3 = *((r3 + 0x10));
    0x00004a40 b 0x4904                                          |         
                                                                 |     } while (1);
                                                                 | label_58:
    0x00004a42 ldr r1, [sp, 0x80]                                |     r1 = var_80h;
    0x00004a44 mov r0, r5                                        |     r0 = r5;
    0x00004a46 bl 0x8cf0                                         |     r0 = fcn_00008cf0 (r0, r1);
    0x00004a4a cmp r0, 1                                         |     
                                                                 |     if (r0 != 1) {
    0x00004a4c bne 0x4a32                                        |         goto label_0;
                                                                 |     }
    0x00004a4e b 0x4a38                                          |     goto label_1;
    0x00004a50 ldr.w r3, [r5, 0xc0]                              |     r3 = *((r5 + 0xc0));
    0x00004a54 addw r2, sp, 0x123                                |     __asm ("addw r2, var_123h");
    0x00004a58 movs r1, 0x40                                     |     r1 = 0x40;
    0x00004a5a add r0, sp, 0x198                                 |     r0 += var_198h;
    0x00004a5c bl 0x410c                                         |     fcn_0000410c (r0, r1, r2, r3);
    0x00004a60 b 0x4a32                                          |     goto label_0;
    0x00004a62 ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x00004a64 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00004a66 bne.w 0x6064                                      |         goto label_59;
                                                                 |     }
    0x00004a6a mov r1, r4                                        |     r1 = r4;
    0x00004a6c mov r0, r7                                        |     r0 = r7;
    0x00004a6e bl 0x9074                                         |     fcn_00009074 (r0, r1);
    0x00004a72 str r0, [sp, 0x48]                                |     var_48h = r0;
    0x00004a74 b 0x4a32                                          |     goto label_0;
    0x00004a76 ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x00004a78 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00004a7a beq.w 0x558e                                      |         goto label_60;
                                                                 |     }
                                                                 | label_14:
    0x00004a7e ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x00004a80 adds r3, 1                                        |     r3++;
    0x00004a82 str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x00004a84 b 0x4a32                                          |     goto label_0;
    0x00004a86 ldr.w r3, [r5, 0xc0]                              |     r3 = *((r5 + 0xc0));
    0x00004a8a cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00004a8c bne.w 0x6016                                      |         goto label_61;
                                                                 |     }
    0x00004a90 ldr r3, [sp, 0x44]                                |     r3 = var_44h;
    0x00004a92 ldr r2, [sp, 0x30]                                |     r2 = var_30h;
    0x00004a94 tst r3, r2                                        |     
                                                                 |     if ((r3 & r2) != 0) {
    0x00004a96 bne.w 0x6024                                      |         goto label_62;
                                                                 |     }
    0x00004a9a ldr.w r3, [pc, 0x874]                             |     
    0x00004a9e ldr r2, [sp, 0x50]                                |     r2 = var_50h;
    0x00004aa0 ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x00004aa2 ldr r3, [r3]                                      |     r3 = *(0x5312);
    0x00004aa4 str r3, [r2]                                      |     *(r2) = r3;
    0x00004aa6 movs r3, 1                                        |     r3 = 1;
    0x00004aa8 str r3, [sp, 0x44]                                |     var_44h = r3;
    0x00004aaa b 0x4a32                                          |     goto label_0;
    0x00004aac ldr.w r3, [r5, 0xc0]                              |     r3 = *((r5 + 0xc0));
    0x00004ab0 addw r2, sp, 0x123                                |     __asm ("addw r2, var_123h");
    0x00004ab4 movs r1, 2                                        |     r1 = 2;
    0x00004ab6 add r0, sp, 0x198                                 |     r0 += var_198h;
    0x00004ab8 bl 0x410c                                         |     fcn_0000410c (r0, r1, r2, r3);
    0x00004abc ldr.w r3, [pc, 0x850]                             |     
    0x00004ac0 ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x00004ac2 ldr r3, [r3]                                      |     r3 = *(0x5310);
    0x00004ac4 str r3, [sp, 0x38]                                |     var_38h = r3;
    0x00004ac6 b 0x4a32                                          |     goto label_0;
    0x00004ac8 ldr.w r3, [r5, 0xc0]                              |     r3 = *((r5 + 0xc0));
    0x00004acc addw r2, sp, 0x123                                |     __asm ("addw r2, var_123h");
    0x00004ad0 movs r1, 8                                        |     r1 = 8;
    0x00004ad2 add r0, sp, 0x198                                 |     r0 += var_198h;
    0x00004ad4 bl 0x410c                                         |     fcn_0000410c (r0, r1, r2, r3);
    0x00004ad8 ldr.w r3, [pc, 0x834]                             |     r3 = *(0x5310);
    0x00004adc ldr.w sl, [r6, r3]                                |     sl = *((r6 + r3));
    0x00004ae0 ldr.w r3, [sl]                                    |     r3 = *(sl);
    0x00004ae4 str.w r3, [r5, 0xe8]                              |     __asm ("str.w r3, [r5, 0xe8]");
    0x00004ae6 adds r0, 0xe8                                     |     r0 += 0xe8;
    0x00004ae8 ldrb r2, [r3]                                     |     r2 = *(r3);
    0x00004aea str r2, [sp, 0x88]                                |     var_88h = r2;
                                                                 |     if (r2 == 0) {
    0x00004aec cbz r2, 0x4b14                                    |         goto label_63;
                                                                 |     }
    0x00004aee str r3, [sp, 0x8c]                                |     var_8ch = r3;
    0x00004af0 blx 0x23b0                                        |     loc_imp_gmon_start_ ();
    0x00004af4 ldrd r2, r3, [sp, 0x88]                           |     __asm ("ldrd r2, r3, [var_88h]");
                                                                 |     do {
    0x00004af8 ldr r1, [r0]                                      |         r1 = *(r0);
    0x00004afa ldr.w r2, [r1, r2, lsl 2]                         |         offset_0 = r2 << 2;
                                                                 |         r2 = *((r1 + offset_0));
    0x00004afe strb r2, [r3]                                     |         *(r3) = r2;
    0x00004b00 ldr.w r2, [r5, 0xe8]                              |         r2 = *((r5 + 0xe8));
    0x00004b04 adds r3, r2, 1                                    |         r3 = r2 + 1;
    0x00004b06 str.w r3, [r5, 0xe8]                              |         __asm ("str.w r3, [r5, 0xe8]");
    0x00004b0a ldrb r2, [r2, 1]                                  |         r2 = *((r2 + 1));
    0x00004b0c cmp r2, 0                                         |         
    0x00004b0e bne 0x4af8                                        |         
                                                                 |     } while (r2 != 0);
    0x00004b10 ldr.w r3, [sl]                                    |     r3 = *(sl);
                                                                 | label_63:
    0x00004b14 mov r0, r3                                        |     r0 = r3;
    0x00004b16 str.w r3, [r5, 0xe8]                              |     __asm ("str.w r3, [r5, 0xe8]");
    0x00004b1a blx 0x20d4                                        |     xtables_parse_protocol ();
    0x00004b1e strh.w r0, [r5, 0x50]                             |     *((r5 + 0x50)) = r0;
    0x00004b22 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00004b24 bne 0x4a32                                        |         goto label_0;
                                                                 |     }
    0x00004b26 ldrb.w r3, [r5, 0x53]                             |     r3 = *((r5 + 0x53));
    0x00004b2a lsls r0, r3, 0x19                                 |     r0 = r3 << 0x19;
                                                                 |     if (r0 >= r3) {
    0x00004b2c bpl 0x4a32                                        |         goto label_0;
                                                                 |     }
    0x00004b2e ldr r3, [sp, 0x78]                                |     r3 = var_78h;
    0x00004b30 movs r0, 2                                        |     r0 = 2;
    0x00004b32 ldr.w r1, [pc, 0x7e4]                             |     
    0x00004b36 ldr r3, [r3]                                      |     r3 = *(r3);
    0x00004b38 add r1, pc                                        |     r1 = 0x9e56;
    0x00004b3a ldr r3, [r3, 0x14]                                |     r3 = *((r3 + 0x14));
    0x00004b3c blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x00004b3e ldr.w r3, [pc, 0x7d0]                             |     r3 = *(0x5312);
    0x00004b42 ldr.w sl, [r6, r3]                                |     sl = *((r6 + r3));
    0x00004b46 ldr.w r3, [sl]                                    |     r3 = *(sl);
    0x00004b48 adds r0, 0                                        |     r0 += 0;
    0x00004b4a ldrb r3, [r3]                                     |     r3 = *(r3);
    0x00004b4c cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00004b4e beq.w 0x6080                                      |         goto label_64;
                                                                 |     }
    0x00004b52 addw r2, sp, 0x123                                |     __asm ("addw r2, var_123h");
    0x00004b56 add r0, sp, 0x198                                 |     r0 += var_198h;
    0x00004b58 ldr.w r3, [r5, 0xc0]                              |     r3 = *((r5 + 0xc0));
    0x00004b5c mov.w r1, 0x100                                   |     r1 = 0x100;
    0x00004b60 bl 0x410c                                         |     fcn_0000410c (r0, r1, r2, r3);
    0x00004b64 ldr.w r0, [sl]                                    |     r0 = *(sl);
    0x00004b68 add r2, sp, 0x110                                 |     r2 += var_110h;
    0x00004b6a add r1, sp, 0xf0                                  |     r1 += var_f0h;
    0x00004b6c blx 0x211c                                        |     xtables_parse_interface ();
    0x00004b70 b 0x4a32                                          |     goto label_0;
    0x00004b72 ldr.w r3, [r5, 0xc0]                              |     r3 = *((r5 + 0xc0));
    0x00004b76 addw r2, sp, 0x123                                |     __asm ("addw r2, var_123h");
    0x00004b78 asrs r3, r4, 8                                    |     r3 = r4 >> 8;
    0x00004b7a movs r1, 1                                        |     r1 = 1;
    0x00004b7c add r0, sp, 0x198                                 |     r0 += var_198h;
    0x00004b7e bl 0x410c                                         |     fcn_0000410c (r0, r1, r2, r3);
    0x00004b82 b 0x4a32                                          |     goto label_0;
    0x00004b84 mov r0, r5                                        |     r0 = r5;
    0x00004b86 bl 0x9770                                         |     fcn_00009770 (r0);
    0x00004b8a b 0x4a32                                          |     goto label_0;
    0x00004b8c ldr.w r3, [r5, 0xc0]                              |     r3 = *((r5 + 0xc0));
    0x00004b90 add r0, sp, 0x198                                 |     r0 += var_198h;
    0x00004b92 addw r2, sp, 0x123                                |     __asm ("addw r2, var_123h");
    0x00004b96 movs r1, 0x10                                     |     r1 = 0x10;
    0x00004b98 bl 0x410c                                         |     fcn_0000410c (r0, r1, r2, r3);
    0x00004b9c ldr.w r3, [pc, 0x770]                             |     r3 = *(0x5310);
    0x00004ba0 mov r0, r5                                        |     r0 = r5;
    0x00004ba2 ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x00004ba4 ldr r1, [r3]                                      |     r1 = *(0x5310);
    0x00004ba6 bl 0x98e0                                         |     fcn_000098e0 (r0, r1);
    0x00004baa b 0x4a32                                          |     goto label_0;
    0x00004bac ldr.w r3, [pc, 0x760]                             |     r3 = *(0x5310);
    0x00004bb0 ldr.w sl, [r6, r3]                                |     sl = *((r6 + r3));
    0x00004bb4 ldr.w r3, [sl]                                    |     r3 = *(sl);
    0x00004bb8 ldrb r3, [r3]                                     |     r3 = *(r3);
    0x00004bba cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00004bbc beq.w 0x5f66                                      |         goto label_65;
                                                                 |     }
    0x00004bc0 addw r2, sp, 0x123                                |     __asm ("addw r2, var_123h");
    0x00004bc4 add r0, sp, 0x198                                 |     r0 += var_198h;
    0x00004bc6 ldr.w r3, [r5, 0xc0]                              |     r3 = *((r5 + 0xc0));
    0x00004bca movs r1, 0x80                                     |     r1 = 0x80;
    0x00004bcc bl 0x410c                                         |     fcn_0000410c (r0, r1, r2, r3);
    0x00004bd0 ldr.w r0, [sl]                                    |     r0 = *(sl);
    0x00004bd4 add r2, sp, 0x100                                 |     r2 += var_100h;
    0x00004bd6 add r1, sp, 0xe0                                  |     r1 += var_e0h;
    0x00004bd8 blx 0x211c                                        |     xtables_parse_interface ();
    0x00004bdc b 0x4a32                                          |     goto label_0;
    0x00004bde ldr.w r3, [r5, 0xc0]                              |     r3 = *((r5 + 0xc0));
    0x00004be2 addw r2, sp, 0x123                                |     __asm ("addw r2, var_123h");
    0x00004be4 asrs r3, r4, 8                                    |     r3 = r4 >> 8;
    0x00004be6 movs r1, 0x10                                     |     r1 = 0x10;
    0x00004be8 add r0, sp, 0x198                                 |     r0 += var_198h;
    0x00004bea bl 0x410c                                         |     fcn_0000410c (r0, r1, r2, r3);
    0x00004bec qdadd r8, r5, pc                                  |     __asm ("qdadd r8, r5, pc");
    0x00004bee ldrb.w r3, [r5, 0x52]                             |     r3 = *((r5 + 0x52));
    0x00004bf2 orr r3, r3, 2                                     |     r3 |= 2;
    0x00004bf6 strb.w r3, [r5, 0x52]                             |     *((r5 + 0x52)) = r3;
    0x00004bfa ldr.w r3, [pc, 0x714]                             |     r3 = *(0x5312);
    0x00004bfe ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x00004c00 ldr r0, [r3]                                      |     r0 = *(0x5312);
    0x00004c02 bl 0x9864                                         |     fcn_00009864 (r0);
    0x00004c06 str.w r0, [r5, 0xf0]                              |     __asm ("str.w r0, [r5, 0xf0]");
    0x00004c0a b 0x4a32                                          |     goto label_0;
    0x00004c0c ldr.w r3, [r5, 0xc0]                              |     r3 = *((r5 + 0xc0));
    0x00004c10 addw r2, sp, 0x123                                |     __asm ("addw r2, var_123h");
    0x00004c14 mov.w r1, 0x800                                   |     r1 = 0x800;
    0x00004c16 str r0, [r0, 0x10]                                |     *((r0 + 0x10)) = r0;
    0x00004c18 add r0, sp, 0x198                                 |     r0 += var_198h;
    0x00004c1a bl 0x410c                                         |     fcn_0000410c (r0, r1, r2, r3);
    0x00004c1e ldrb.w r3, [r5, 0x52]                             |     r3 = *((r5 + 0x52));
    0x00004c22 orr r3, r3, 1                                     |     r3 |= 1;
    0x00004c26 strb.w r3, [r5, 0x52]                             |     *((r5 + 0x52)) = r3;
    0x00004c2a b 0x4a32                                          |     goto label_0;
    0x00004c2c ldr.w r3, [r5, 0xc0]                              |     r3 = *((r5 + 0xc0));
    0x00004c30 addw r2, sp, 0x123                                |     __asm ("addw r2, var_123h");
    0x00004c34 movs r1, 4                                        |     r1 = 4;
    0x00004c36 add r0, sp, 0x198                                 |     r0 += var_198h;
    0x00004c38 bl 0x410c                                         |     fcn_0000410c (r0, r1, r2, r3);
    0x00004c3c ldr.w r3, [pc, 0x6d0]                             |     
    0x00004c40 ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x00004c42 ldr r3, [r3]                                      |     r3 = *(0x5310);
    0x00004c44 str r3, [sp, 0x4c]                                |     var_4ch = r3;
    0x00004c46 b 0x4a32                                          |     goto label_0;
    0x00004c48 ldr.w r3, [r5, 0xc0]                              |     r3 = *((r5 + 0xc0));
    0x00004c4c addw r2, sp, 0x123                                |     __asm ("addw r2, var_123h");
    0x00004c50 mov.w r1, 0x400                                   |     r1 = 0x400;
    0x00004c54 add r0, sp, 0x198                                 |     r0 += var_198h;
    0x00004c56 bl 0x410c                                         |     fcn_0000410c (r0, r1, r2, r3);
    0x00004c5a ldr.w r3, [pc, 0x6b4]                             |     
    0x00004c5e movs r1, 0x2c                                     |     r1 = 0x2c;
    0x00004c60 ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x00004c62 ldr r3, [r3]                                      |     r3 = *(0x5312);
    0x00004c64 adds r0, r3, 1                                    |     r0 = r3 + 1;
    0x00004c66 str r3, [sp, 0x88]                                |     var_88h = r3;
    0x00004c68 blx 0x241c                                        |     iptc_is_chain ();
    0x00004c6c ldr r3, [sp, 0x88]                                |     r3 = var_88h;
    0x00004c6e add.w sl, r0, 1                                   |     sl = r0 + 1;
    0x00004c72 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00004c74 beq.w 0x5688                                      |         goto label_66;
                                                                 |     }
                                                                 | label_21:
    0x00004c78 add r2, sp, 0xb0                                  |     r2 += n;
    0x00004c7a ldr r1, [sp, 0x40]                                |     r1 = s1;
    0x00004c7c mov r0, r3                                        |     r0 = r3;
    0x00004c7e str r2, [sp, 0x88]                                |     var_88h = r2;
    0x00004c80 blx 0x24ac                                        |     r0 = memset (r0, r1, r2);
    0x00004c84 cmp r0, 1                                         |     
    0x00004c86 ldr r2, [sp, 0x88]                                |     r2 = var_88h;
                                                                 |     if (r0 != 1) {
    0x00004c88 bne.w 0x5f36                                      |         goto label_67;
                                                                 |     }
    0x00004c8c vldr d16, [sp, 0xb0]                              |     __asm ("vldr d16, [sp, 0xb0]");
    0x00004c90 mov r0, sl                                        |     r0 = sl;
    0x00004c92 ldr r1, [sp, 0x40]                                |     r1 = s1;
    0x00004c94 vstr d16, [r5, 0x60]                              |     __asm ("vstr d16, [r5, 0x60]");
    0x00004c98 blx 0x24ac                                        |     r0 = memset (r0, r1, r2);
    0x00004c9c cmp r0, 1                                         |     
                                                                 |     if (r0 != 1) {
    0x00004c9e bne.w 0x5f4e                                      |         goto label_68;
                                                                 |     }
    0x00004ca0 strh r6, [r2, 0xa]                                |     *((r2 + 0xa)) = r6;
    0x00004ca2 ldrd r2, r3, [sp, 0xb0]                           |     __asm ("ldrd r2, r3, [n]");
    0x00004ca6 strd r2, r3, [r5, 0x68]                           |     __asm ("strd r2, r3, [r5, 0x68]");
    0x00004caa b 0x4a32                                          |     goto label_0;
    0x00004cac ldr.w r3, [r5, 0xc0]                              |     r3 = *((r5 + 0xc0));
    0x00004cb0 mov.w r2, 0x1020                                  |     r2 = 0x1020;
    0x00004cb4 movs r1, 0x80                                     |     r1 = 0x80;
    0x00004cb6 mov r0, fp                                        |     r0 = fp;
    0x00004cb8 bl 0x9a10                                         |     fcn_00009a10 (r0, r1);
    0x00004cbc ldr.w r3, [pc, 0x650]                             |     
    0x00004cc0 ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x00004cc2 ldr r3, [r3]                                      |     r3 = *(0x5310);
    0x00004cc4 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00004cc6 beq.w 0x566a                                      |         goto label_69;
                                                                 |     }
    0x00004cca mov sb, r3                                        |     sb = r3;
                                                                 | label_20:
    0x00004ccc mov r1, r4                                        |     r1 = r4;
    0x00004cce mov r0, r7                                        |     r0 = r7;
    0x00004cd0 bl 0x92d4                                         |     r0 = fcn_000092d4 (r0, r1);
    0x00004cd4 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00004cd6 beq.w 0x4a32                                      |         goto label_0;
                                                                 |     }
    0x00004cda ldr r1, [sp, 0x28]                                |     r1 = var_28h;
    0x00004cdc ldr r3, [r1]                                      |     r3 = *(r1);
    0x00004cde adds r2, r3, 1                                    |     r2 = r3 + 1;
    0x00004ce0 ldr.w r0, [r4, r3, lsl 2]                         |     offset_1 = r3 << 2;
                                                                 |     r0 = *((r4 + offset_1));
    0x00004ce4 str r2, [r1]                                      |     *(r1) = r2;
    0x00004ce6 bl 0x9a74                                         |     fcn_00009a74 (r0, r1);
    0x00004cea mov.w r3, 0x2000                                  |     r3 = 0x2000;
    0x00004cee str r0, [sp, 0x34]                                |     var_34h = r0;
    0x00004cf0 str.w r3, [fp]                                    |     __asm ("str.w r3, [fp]");
    0x00004cf4 b 0x4a32                                          |     goto label_0;
    0x00004cf6 ldr.w r3, [r5, 0xc0]                              |     r3 = *((r5 + 0xc0));
    0x00004cfa movs r2, 0                                        |     r2 = 0;
    0x00004cfc mov.w r1, 0x200                                   |     r1 = 0x200;
                                                                 | label_4:
    0x00004d00 mov r0, fp                                        |     r0 = fp;
    0x00004d02 bl 0x9a10                                         |     fcn_00009a10 (r0, r1);
    0x00004d06 ldr.w r3, [pc, 0x608]                             |     
    0x00004d0a ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x00004d0c ldr r3, [r3]                                      |     r3 = *(0x5312);
    0x00004d0e cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00004d10 beq.w 0x5552                                      |         goto label_70;
                                                                 |     }
    0x00004d14 mov sb, r3                                        |     sb = r3;
    0x00004d16 b 0x4a32                                          |     goto label_0;
    0x00004d18 ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x00004d1a cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00004d1c bne.w 0x5f28                                      |         goto label_71;
                                                                 |     }
    0x00004d20 ldr r2, [sp, 0x74]                                |     r2 = var_74h;
    0x00004d22 mov r1, r4                                        |     r1 = r4;
    0x00004d24 mov r0, r7                                        |     r0 = r7;
    0x00004d26 bl 0x9140                                         |     fcn_00009140 (r0, r1, r2);
    0x00004d2a movs r3, 1                                        |     r3 = 1;
    0x00004d2c str r3, [sp, 0x54]                                |     var_54h = r3;
    0x00004d2e b 0x4a32                                          |     goto label_0;
    0x00004d30 ldr.w r2, [pc, 0x5e8]                             |     r2 = *(0x0000531c);
    0x00004d34 ldr.w r1, [r5, 0xc0]                              |     r1 = *((r5 + 0xc0));
    0x00004d38 add r2, pc                                        |     r2 += pc;
    0x00004d3a ldr r3, [r2, 8]                                   |     r3 = *((r2 + 8));
    0x00004d3c cmp r1, 0                                         |     
                                                                 |     if (r1 != 0) {
    0x00004d3e bne.w 0x5232                                      |         goto label_72;
                                                                 |     }
    0x00004d42 ldr.w r1, [pc, 0x5dc]                             |     
    0x00004d46 movs r0, 1                                        |     r0 = 1;
    0x00004d48 ldr r2, [r2, 4]                                   |     r2 = *((r2 + 4));
    0x00004d4a add r1, pc                                        |     r1 = 0xa070;
    0x00004d4c blx 0x2530                                        |     ip6tc_flush_entries ();
                                                                 | label_6:
    0x00004d50 movs r0, 0                                        |     r0 = 0;
    0x00004d52 blx 0x23e0                                        |     xtables_ipaddr_to_anyname ();
    0x00004d56 ldr.w r3, [r5, 0xc0]                              |     r3 = *((r5 + 0xc0));
    0x00004d5a mov.w r2, 0x2080                                  |     r2 = 0x2080;
    0x00004d5e mov.w r1, 0x1000                                  |     r1 = 0x1000;
                                                                 | label_2:
    0x00004d62 mov r0, fp                                        |     r0 = fp;
    0x00004d64 bl 0x9a10                                         |     fcn_00009a10 (r0, r1);
    0x00004d68 ldr.w r3, [pc, 0x5a4]                             |     
    0x00004d6c ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x00004d6e ldr r3, [r3]                                      |     r3 = *(0x5310);
    0x00004d70 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00004d72 beq.w 0x5570                                      |         goto label_73;
                                                                 |     }
    0x00004d76 mov sb, r3                                        |     sb = r3;
                                                                 | label_13:
    0x00004d78 mov r1, r4                                        |     r1 = r4;
    0x00004d7a mov r0, r7                                        |     r0 = r7;
    0x00004d7c bl 0x92d4                                         |     r0 = fcn_000092d4 (r0, r1);
    0x00004d80 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00004d82 beq.w 0x4a32                                      |         goto label_0;
                                                                 |     }
                                                                 |     do {
                                                                 | label_3:
    0x00004d86 ldr r1, [sp, 0x28]                                |         r1 = var_28h;
    0x00004d88 ldr r3, [r1]                                      |         r3 = *(r1);
    0x00004d8a adds r2, r3, 1                                    |         r2 = r3 + 1;
    0x00004d8c ldr.w r0, [r4, r3, lsl 2]                         |         offset_2 = r3 << 2;
                                                                 |         r0 = *((r4 + offset_2));
    0x00004d90 str r2, [r1]                                      |         *(r1) = r2;
    0x00004d92 bl 0x9a74                                         |         fcn_00009a74 (r0, r1);
    0x00004d96 str r0, [sp, 0x34]                                |         var_34h = r0;
    0x00004d98 b 0x4a32                                          |         goto label_0;
    0x00004d9a ldr.w r3, [r5, 0xc0]                              |         r3 = *((r5 + 0xc0));
    0x00004d9e movs r1, 8                                        |         r1 = 8;
    0x00004da0 mov r0, fp                                        |         r0 = fp;
    0x00004da2 movs r2, 0                                        |         r2 = 0;
    0x00004da4 bl 0x9a10                                         |         fcn_00009a10 (r0, r1);
    0x00004da8 ldr.w r3, [pc, 0x564]                             |         r3 = *(0x5310);
    0x00004dac mov r1, r4                                        |         r1 = r4;
    0x00004dae mov r0, r7                                        |         r0 = r7;
    0x00004db0 ldr r3, [r6, r3]                                  |         r3 = *((r6 + r3));
    0x00004db2 ldr.w sb, [r3]                                    |         sb = *(0x5310);
    0x00004db6 bl 0x92d4                                         |         r0 = fcn_000092d4 (r0, r1);
    0x00004dba cmp r0, 0                                         |         
    0x00004dbc bne 0x4d86                                        |         
                                                                 |     } while (r0 != 0);
    0x00004dbe ldr r3, [sp, 0x78]                                |     r3 = var_78h;
    0x00004dc0 movs r0, 8                                        |     r0 = 8;
    0x00004dc2 ldr r3, [r3]                                      |     r3 = *(r3);
    0x00004dc4 ldr r4, [r3, 0x14]                                |     r4 = *((r3 + 0x14));
    0x00004dc6 bl 0x99c4                                         |     fcn_000099c4 (r0);
    0x00004dca ldr.w r1, [pc, 0x558]                             |     
    0x00004dce mov r2, r0                                        |     r2 = r0;
    0x00004dd0 movs r0, 2                                        |     r0 = 2;
    0x00004dd2 add r1, pc                                        |     r1 = 0xa0fc;
    0x00004dd4 blx r4                                            |     uint32_t (*r4)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
    0x00004dd6 ldr.w r3, [r5, 0xc0]                              |     r3 = *((r5 + 0xc0));
    0x00004dda mov.w r1, 0x400                                   |     r1 = 0x400;
    0x00004dde mov r0, fp                                        |     r0 = fp;
    0x00004de0 movs r2, 0                                        |     r2 = 0;
    0x00004de2 bl 0x9a10                                         |     fcn_00009a10 (r0, r1);
    0x00004de6 ldr.w r3, [pc, 0x528]                             |     r3 = *(0x5312);
    0x00004dea mov r1, r4                                        |     r1 = r4;
    0x00004dec mov r0, r7                                        |     r0 = r7;
    0x00004dee ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x00004df0 ldr.w sb, [r3]                                    |     sb = *(0x5312);
    0x00004df4 bl 0x92d4                                         |     r0 = fcn_000092d4 (r0, r1);
    0x00004df8 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00004dfa beq.w 0x603a                                      |         goto label_74;
                                                                 |     }
    0x00004dfe ldr r1, [sp, 0x28]                                |     r1 = var_28h;
    0x00004e00 ldr r3, [r1]                                      |     r3 = *(r1);
    0x00004e02 adds r2, r3, 1                                    |     r2 = r3 + 1;
    0x00004e04 ldr.w r3, [r4, r3, lsl 2]                         |     offset_3 = r3 << 2;
                                                                 |     r3 = *((r4 + offset_3));
    0x00004e08 str r2, [r1]                                      |     *(r1) = r2;
    0x00004e0a str r3, [sp, 0x58]                                |     var_58h = r3;
    0x00004e0c b 0x4a32                                          |     goto label_0;
    0x00004e0e ldr.w r3, [pc, 0x500]                             |     r3 = *(0x5312);
    0x00004e12 ldr.w sl, [r6, r3]                                |     sl = *((r6 + r3));
    0x00004e16 ldr.w sb, [sl]                                    |     sb = *(sl);
    0x00004e1a mov r0, sb                                        |     r0 = sb;
    0x00004e1c blx 0x2404                                        |     r0 = iptc_free ();
    0x00004e20 cmp r0, 0x1c                                      |     
                                                                 |     if (r0 > 0x1c) {
    0x00004e22 bhi.w 0x6052                                      |         goto label_75;
                                                                 |     }
    0x00004e26 ldrb.w r3, [sb]                                   |     r3 = *(sb);
    0x00004e2a cmp r3, 0x21                                      |     
    0x00004e2c it ne                                             |     
                                                                 |     if (r3 != 0x21) {
    0x00004e2e cmpne r3, 0x2d                                    |         __asm ("cmpne r3, 0x2d");
                                                                 |     }
                                                                 |     if (r3 == 0x21) {
    0x00004e30 beq.w 0x60aa                                      |         goto label_76;
                                                                 |     }
    0x00004e34 movs r1, 2                                        |     r1 = 2;
    0x00004e36 mov r0, sb                                        |     r0 = sb;
    0x00004e38 blx 0x25b0                                        |     r0 = fcn_000025b0 ();
    0x00004e3c cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00004e3e bne.w 0x60ba                                      |         goto label_77;
                                                                 |     }
    0x00004e42 ldrb.w r3, [sb]                                   |     r3 = *(sb);
                                                                 |     if (r3 == 0) {
    0x00004e46 cbz r3, 0x4e66                                    |         goto label_78;
                                                                 |     }
    0x00004e48 str r3, [sp, 0x88]                                |     var_88h = r3;
    0x00004e4a blx 0x23d4                                        |     exit (r0);
    0x00004e4e ldr r3, [sp, 0x88]                                |     r3 = var_88h;
    0x00004e50 mov r1, sb                                        |     r1 = sb;
    0x00004e52 ldr r0, [r0]                                      |     r0 = *(r0);
                                                                 |     do {
    0x00004e54 ldrh.w r3, [r0, r3, lsl 1]                        |         offset_4 = r3 << 1;
                                                                 |         r3 = *((r0 + offset_4));
    0x00004e58 lsls r3, r3, 0x12                                 |         r3 <<= 0x12;
                                                                 |         if (r3 < r3) {
    0x00004e5a bmi.w 0x5eda                                      |             goto label_79;
                                                                 |         }
    0x00004e5e ldrb r3, [r1, 1]!                                 |         r3 = *((r1 += 1));
    0x00004e62 cmp r3, 0                                         |         
    0x00004e64 bne 0x4e54                                        |         
                                                                 |     } while (r3 != 0);
                                                                 | label_78:
    0x00004e66 ldr.w r3, [r5, 0xc0]                              |     r3 = *((r5 + 0xc0));
    0x00004e6a movs r2, 0                                        |     r2 = 0;
    0x00004e6c mov.w r1, 0x100                                   |     r1 = 0x100;
    0x00004e70 mov r0, fp                                        |     r0 = fp;
    0x00004e72 bl 0x9a10                                         |     fcn_00009a10 (r0, r1);
    0x00004e76 ldr.w sb, [sl]                                    |     sb = *(sl);
    0x00004e7a b 0x4a32                                          |     goto label_0;
    0x00004e7c ldr.w r3, [pc, 0x490]                             |     r3 = *(0x5310);
    0x00004e80 ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x00004e82 ldr r2, [r3]                                      |     r2 = *(0x5310);
    0x00004e84 ldr.w r3, [pc, 0x4a0]                             |     r3 = *(0x5328);
    0x00004e88 ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x00004e8a str r2, [r3]                                      |     *(r3) = r2;
    0x00004e8c b 0x4a32                                          |     goto label_0;
    0x00004e8e ldr.w r3, [r5, 0xc0]                              |     r3 = *((r5 + 0xc0));
    0x00004e92 mov.w r2, 0x2080                                  |     r2 = 0x2080;
    0x00004e96 movs r1, 0x20                                     |     r1 = 0x20;
    0x00004e98 b 0x4d62                                          |     goto label_2;
    0x00004e9a ldr.w r3, [r5, 0xc0]                              |     r3 = *((r5 + 0xc0));
    0x00004e9e movs r1, 1                                        |     r1 = 1;
    0x00004ea0 mov r0, fp                                        |     r0 = fp;
    0x00004ea2 movs r2, 0                                        |     r2 = 0;
    0x00004ea4 bl 0x9a10                                         |     fcn_00009a10 (r0, r1);
    0x00004ea8 ldr.w r3, [pc, 0x464]                             |     r3 = *(0x5310);
    0x00004eac mov r1, r4                                        |     r1 = r4;
    0x00004eae mov r0, r7                                        |     r0 = r7;
    0x00004eb0 ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x00004eb2 ldr.w sb, [r3]                                    |     sb = *(0x5310);
    0x00004eb6 bl 0x92d4                                         |     r0 = fcn_000092d4 (r0, r1);
    0x00004eba cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00004ebc bne.w 0x4d86                                      |         goto label_3;
                                                                 |     }
    0x00004ec0 movs r3, 1                                        |     r3 = 1;
    0x00004ec2 str r3, [sp, 0x34]                                |     var_34h = r3;
    0x00004ec4 b 0x4a32                                          |     goto label_0;
    0x00004ec6 ldr.w r3, [r5, 0xc0]                              |     r3 = *((r5 + 0xc0));
    0x00004eca movs r2, 0                                        |     r2 = 0;
    0x00004ecc movs r1, 0x40                                     |     r1 = 0x40;
    0x00004ece b 0x4d00                                          |     goto label_4;
    0x00004ed0 ldr.w r3, [r5, 0xc0]                              |     r3 = *((r5 + 0xc0));
    0x00004ed4 mov.w r1, 0x800                                   |     r1 = 0x800;
    0x00004ed8 mov r0, fp                                        |     r0 = fp;
    0x00004eda movs r2, 0                                        |     r2 = 0;
    0x00004edc bl 0x9a10                                         |     fcn_00009a10 (r0, r1);
    0x00004ee0 ldr.w r3, [pc, 0x42c]                             |     r3 = *(0x5310);
    0x00004ee4 mov r1, r4                                        |     r1 = r4;
    0x00004ee6 mov r0, r7                                        |     r0 = r7;
    0x00004ee8 ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x00004eea ldr.w sb, [r3]                                    |     sb = *(0x5310);
    0x00004eee bl 0x92d4                                         |     r0 = fcn_000092d4 (r0, r1);
    0x00004ef2 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00004ef4 beq.w 0x60c8                                      |         goto label_80;
                                                                 |     }
    0x00004ef8 ldr r1, [sp, 0x28]                                |     r1 = var_28h;
    0x00004efa ldr r3, [r1]                                      |     r3 = *(r1);
    0x00004efc adds r2, r3, 1                                    |     r2 = r3 + 1;
    0x00004efe ldr.w r3, [r4, r3, lsl 2]                         |     offset_5 = r3 << 2;
                                                                 |     r3 = *((r4 + offset_5));
    0x00004f02 str r2, [r1]                                      |     *(r1) = r2;
    0x00004f04 str r3, [sp, 0x7c]                                |     var_7ch = r3;
    0x00004f06 b 0x4a32                                          |     goto label_0;
    0x00004f08 ldr.w r3, [r5, 0xc0]                              |     r3 = *((r5 + 0xc0));
    0x00004f0c movs r1, 2                                        |     r1 = 2;
    0x00004f0e mov r0, fp                                        |     r0 = fp;
    0x00004f10 movs r2, 0                                        |     r2 = 0;
    0x00004f12 bl 0x9a10                                         |     fcn_00009a10 (r0, r1);
    0x00004f16 ldr r3, [pc, 0x3f8]                               |     r3 = *(0x5312);
    0x00004f18 mov r1, r4                                        |     r1 = r4;
    0x00004f1a mov r0, r7                                        |     r0 = r7;
    0x00004f1c ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x00004f1e ldr.w sb, [r3]                                    |     sb = *(0x5312);
    0x00004f22 bl 0x92d4                                         |     r0 = fcn_000092d4 (r0, r1);
    0x00004f26 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00004f28 beq.w 0x4a32                                      |         goto label_0;
                                                                 |     }
    0x00004f2c ldr r1, [sp, 0x28]                                |     r1 = var_28h;
    0x00004f2e ldr r3, [r1]                                      |     r3 = *(r1);
    0x00004f30 adds r2, r3, 1                                    |     r2 = r3 + 1;
    0x00004f32 ldr.w r0, [r4, r3, lsl 2]                         |     offset_6 = r3 << 2;
                                                                 |     r0 = *((r4 + offset_6));
    0x00004f36 str r2, [r1]                                      |     *(r1) = r2;
    0x00004f38 bl 0x9a74                                         |     fcn_00009a74 (r0, r1);
    0x00004f3c movs r3, 4                                        |     r3 = 4;
    0x00004f3e str r0, [sp, 0x34]                                |     var_34h = r0;
    0x00004f40 str.w r3, [fp]                                    |     __asm ("str.w r3, [fp]");
    0x00004f44 b 0x4a32                                          |     goto label_0;
    0x00004f46 ldr.w r3, [r5, 0xc0]                              |     r3 = *((r5 + 0xc0));
    0x00004f4a movs r2, 0                                        |     r2 = 0;
    0x00004f4c movs r1, 0x10                                     |     r1 = 0x10;
    0x00004f4e b 0x4a22                                          |     goto label_5;
    0x00004f50 ldr r3, [pc, 0x3d8]                               |     
    0x00004f52 ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x00004f54 ldr r3, [r3]                                      |     r3 = *(0x532c);
    0x00004f56 adds r3, 1                                        |     r3++;
    0x00004f58 it ne                                             |     
                                                                 |     if (r3 == 1) {
    0x00004f5a movne sb, 1                                       |         sb = 1;
                                                                 |     }
                                                                 |     if (r3 == 1) {
    0x00004f5e beq.w 0x5f74                                      |         goto label_81;
                                                                 |     }
                                                                 | label_9:
    0x00004f62 ldr r2, [pc, 0x3cc]                               |     
    0x00004f64 ldr r3, [pc, 0x378]                               |     r3 = *(0x52e0);
    0x00004f66 add r2, pc                                        |     r2 = 0xa29c;
    0x00004f68 ldr r3, [r2, r3]                                  |     r3 = *(0xa29c);
    0x00004f6a ldr r2, [r3]                                      |     r2 = *(0xa29c);
    0x00004f6c ldr r3, [sp, 0x1d4]                               |     r3 = var_1d4h;
    0x00004f6e eors r2, r3                                       |     r2 ^= r3;
    0x00004f70 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x00004f74 bne.w 0x5f8a                                      |         goto label_82;
                                                                 |     }
    0x00004f78 mov r0, sb                                        |     r0 = sb;
    0x00004f7a add sp, 0x1dc                                     |     
    0x00004f7c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
    0x00004f80 ldr.w r3, [r5, 0xc0]                              |     r3 = *((r5 + 0xc0));
    0x00004f84 addw r2, sp, 0x123                                |     __asm ("addw r2, var_123h");
    0x00004f88 mov.w r1, 0x200                                   |     r1 = 0x200;
    0x00004f8c add r0, sp, 0x198                                 |     r0 += var_198h;
    0x00004f8e bl 0x410c                                         |     fcn_0000410c (r0, r1, r2, r3);
    0x00004f92 b 0x4a32                                          |     goto label_0;
    0x00004f94 ldr r3, [pc, 0x378]                               |     
    0x00004f96 ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x00004f98 ldr r3, [r3]                                      |     r3 = *(0x5310);
    0x00004f9a ldrb r2, [r3]                                     |     r2 = *(r3);
    0x00004f9c cmp r2, 0x21                                      |     
                                                                 |     if (r2 != 0x21) {
    0x00004f9e bne.w 0x5f14                                      |         goto label_83;
                                                                 |     }
    0x00004fa2 ldrb r2, [r3, 1]                                  |     r2 = *((r3 + 1));
    0x00004fa4 cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x00004fa6 bne.w 0x5f14                                      |         goto label_83;
                                                                 |     }
    0x00004faa ldr.w r2, [r5, 0xc0]                              |     r2 = var_c0h_2;
    0x00004fae cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x00004fb0 bne.w 0x6072                                      |         goto label_84;
                                                                 |     }
    0x00004fb4 movs r1, 1                                        |     r1 = 1;
    0x00004fb6 str.w r1, [r5, 0xc0]                              |     __asm ("str.w r1, [var_c0h_2]");
    0x00004fba strb r2, [r3]                                     |     *(r3) = r2;
    0x00004fbc b 0x4a38                                          |     goto label_1;
                                                                 | label_57:
    0x00004fbe ldr r3, [sp, 0x54]                                |     r3 = var_54h;
    0x00004fc0 ldr r2, [sp, 0x48]                                |     r2 = var_48h;
    0x00004fc2 str.w sb, [sp, 0x40]                              |     __asm ("str.w sb, [s1]");
    0x00004fc6 cmp r2, 0                                         |     
    0x00004fc8 ite ne                                            |     
                                                                 |     if (r2 == 0) {
    0x00004fca movne r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r2 != 0) {
    0x00004fcc andeq r3, r3, 1                                   |         r3 &= 1;
                                                                 |     }
    0x00004fd0 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00004fd2 bne.w 0x608e                                      |         goto label_85;
                                                                 |     }
    0x00004fd6 ldr r1, [pc, 0x35c]                               |     
    0x00004fd8 ldr r3, [sp, 0x50]                                |     r3 = var_50h;
    0x00004fda add r1, pc                                        |     r1 = 0xa314;
    0x00004fdc ldr r0, [r3]                                      |     r0 = *(r3);
    0x00004fde blx 0x2110                                        |     r0 = strcmp (r0, r1);
                                                                 |     if (r0 == 0) {
    0x00004fe2 cbnz r0, 0x500c                                   |         
    0x00004fe4 ldr r3, [sp, 0x58]                                |         r3 = var_58h;
                                                                 |         if (r3 != 0) {
    0x00004fe6 cbz r3, 0x4ff8                                    |             
    0x00004fe8 ldr r1, [pc, 0x34c]                               |             
    0x00004fea mov r0, r3                                        |             r0 = r3;
    0x00004fec add r1, pc                                        |             r1 = 0xa328;
    0x00004fee blx 0x2110                                        |             r0 = strcmp (r0, r1);
    0x00004ff2 cmp r0, 0                                         |             
                                                                 |             if (r0 == 0) {
    0x00004ff4 beq.w 0x5fde                                      |                 goto label_86;
                                                                 |             }
                                                                 |         }
    0x00004ff8 ldr.w r0, [r5, 0xf0]                              |         r0 = var_f0h_2;
                                                                 |         if (r0 == 0) {
    0x00004ffc cbz r0, 0x500c                                    |             goto label_87;
                                                                 |         }
    0x00004ffe ldr r1, [pc, 0x33c]                               |         
    0x00005000 add r1, pc                                        |         r1 = 0xa342;
    0x00005002 blx 0x2110                                        |         r0 = strcmp (r0, r1);
    0x00005006 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00005008 beq.w 0x5fde                                      |             goto label_86;
                                                                 |         }
                                                                 |     }
                                                                 | label_87:
    0x0000500c ldr.w r4, [r5, 0xcc]                              |     r4 = var_19ch;
                                                                 |     if (r4 == 0) {
    0x00005010 cbz r4, 0x501e                                    |         goto label_88;
                                                                 |     }
                                                                 |     do {
    0x00005012 ldr r0, [r4, 4]                                   |         r0 = *((r4 + 4));
    0x00005014 blx 0x222c                                        |         fcn_0000222c ();
    0x00005016 invalid                                           |         
    0x0000501a cmp r4, 0                                         |         
    0x0000501c bne 0x5012                                        |         
                                                                 |     } while (r4 != 0);
                                                                 | label_88:
    0x0000501e ldr.w r0, [r5, 0xd4]                              |     r0 = var_d4h;
                                                                 |     if (r0 != 0) {
    0x00005022 cbz r0, 0x5028                                    |         
    0x00005024 blx 0x21ec                                        |         fcn_000021ec ();
                                                                 |     }
    0x00005028 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x0000502a ldr r3, [r3]                                      |     r3 = *(r3);
    0x0000502c cmp r3, r7                                        |     
                                                                 |     if (r3 < r7) {
    0x0000502e blt.w 0x609c                                      |         goto label_89;
                                                                 |     }
    0x00005032 ldr.w r3, [fp]                                    |     r3 = *(fp);
    0x00005036 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00005038 beq.w 0x5ffa                                      |         goto label_90;
                                                                 |     }
    0x0000503c ldr.w sb, [r5, 0xc0]                              |     sb = var_c0h_2;
    0x00005040 cmp.w sb, 0                                       |     
                                                                 |     if (sb != 0) {
    0x00005044 bne.w 0x6008                                      |         goto label_91;
                                                                 |     }
    0x00005048 movw r2, 0x401b                                   |     r2 = 0x401b;
    0x0000504c tst r3, r2                                        |     
                                                                 |     if ((r3 & r2) != 0) {
    0x0000504e bne.w 0x5240                                      |         goto label_92;
                                                                 |     }
    0x00005050 strh r7, [r6, 6]                                  |     *((r6 + 6)) = r7;
                                                                 | label_7:
    0x00005052 ldr r3, [sp, 0x38]                                |     r3 = var_38h;
    0x00005054 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00005056 bne.w 0x525a                                      |         goto label_93;
                                                                 |     }
                                                                 | label_8:
    0x0000505a ldr r3, [sp, 0x4c]                                |     r3 = var_4ch;
                                                                 |     if (r3 != 0) {
    0x0000505c cbz r3, 0x506a                                    |         
    0x0000505e mov r0, r3                                        |         r0 = r3;
    0x00005060 ldrd r1, r2, [sp, 0x6c]                           |         __asm ("ldrd r1, r2, [var_6ch]");
    0x00005064 ldr r3, [sp, 0x60]                                |         r3 = var_60h;
    0x00005066 blx 0x2494                                        |         iptc_init ();
                                                                 |     }
    0x0000506a ldr r3, [sp, 0x5c]                                |     r3 = var_5ch;
    0x0000506c ldr r2, [r3]                                      |     r2 = *(r3);
    0x0000506e ldr r3, [sp, 0x60]                                |     r3 = var_60h;
    0x00005070 ldr r3, [r3]                                      |     r3 = *(r3);
    0x00005072 orr.w r1, r2, r3                                  |     r1 = r2 | r3;
    0x00005076 cmp r1, 1                                         |     
                                                                 |     if (r1 >= 1) {
    0x00005078 bls 0x5086                                        |         
    0x0000507a ldrb.w r1, [r5, 0x53]                             |         r1 = var_123h;
    0x0000507e tst.w r1, 0x18                                    |         
                                                                 |         if ((r1 & 0x18) != 0) {
    0x00005082 bne.w 0x5fec                                      |             goto label_94;
                                                                 |         }
                                                                 |     }
    0x00005086 ldr.w r0, [fp]                                    |     r0 = *(fp);
    0x0000508a cmp r0, 8                                         |     
                                                                 |     if (r0 == 8) {
    0x0000508c bne 0x509a                                        |         
    0x0000508e cmp r2, 1                                         |         
                                                                 |         if (r2 != 1) {
    0x00005090 bne.w 0x5f8e                                      |             goto label_95;
                                                                 |         }
    0x00005094 cmp r3, 1                                         |         
                                                                 |         if (r3 != 1) {
    0x00005096 bne.w 0x5f8e                                      |             goto label_95;
                                                                 |         }
                                                                 |     }
    0x0000509a ldr.w r1, [r5, 0xc8]                              |     r1 = var_198h;
    0x0000509e bl 0x9ae8                                         |     fcn_00009ae8 (r0, r1);
    0x000050a2 ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x000050a4 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000050a6 beq.w 0x55ac                                      |         goto label_96;
                                                                 |     }
                                                                 | label_16:
    0x000050aa ldr r3, [sp, 0x3c]                                |     r3 = var_3ch;
    0x000050ac ldr r7, [r3]                                      |     r7 = *(r3);
    0x000050ae cmp r7, 0                                         |     
                                                                 |     if (r7 == 0) {
    0x000050b0 beq.w 0x5c30                                      |         goto label_97;
                                                                 |     }
                                                                 | label_41:
    0x000050b4 ldr.w r3, [fp]                                    |     r3 = *(fp);
    0x000050b8 subs r4, r3, 1                                    |     r4 = r3 - 1;
    0x000050ba sub.w r2, r3, 8                                   |     r2 = r3 - 8;
    0x000050be cmp.w r3, 0x4000                                  |     
    0x000050c2 it ne                                             |     
                                                                 |     if (r3 != 0x4000) {
    0x000050c4 cmpne r4, 1                                       |         __asm ("cmpne r4, 1");
                                                                 |     }
    0x000050c6 ite ls                                            |     
                                                                 |     if (r3 > 0x4000) {
    0x000050c8 movls r4, 1                                       |         r4 = 1;
                                                                 |     }
                                                                 |     if (r3 <= 0x4000) {
    0x000050ca movhi r4, 0                                       |         r4 = 0;
                                                                 |     }
    0x000050cc bics r2, r2, 8                                    |     __asm ("bics r2, r2, 8");
    0x000050d0 it eq                                             |     
                                                                 |     if (r3 != 0x4000) {
    0x000050d2 orreq r4, r4, 1                                   |         r4 |= 1;
                                                                 |     }
    0x000050d6 cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x000050d8 beq 0x51d2                                        |         goto label_18;
                                                                 |     }
    0x000050da ldr r1, [pc, 0x264]                               |     
    0x000050dc ldr r4, [sp, 0x40]                                |     r4 = s1;
    0x000050de add r1, pc                                        |     r1 = 0xa424;
    0x000050e0 mov r0, r4                                        |     r0 = r4;
    0x000050e2 blx 0x2110                                        |     r0 = strcmp (r0, r1);
                                                                 |     if (r0 != 0) {
    0x000050e6 cbz r0, 0x50f4                                    |         
    0x000050e8 ldr r1, [pc, 0x258]                               |         
    0x000050ea mov r0, r4                                        |         r0 = r4;
    0x000050ec add r1, pc                                        |         r1 = 0xa434;
    0x000050ee blx 0x2110                                        |         r0 = strcmp (r0, r1);
                                                                 |         if (r0 != 0) {
    0x000050f2 cbnz r0, 0x50fe                                   |             goto label_98;
                                                                 |         }
                                                                 |     }
    0x000050f4 ldr.w r3, [r5, 0xc8]                              |     r3 = var_198h;
    0x000050f8 lsls r0, r3, 0x17                                 |     r0 = r3 << 0x17;
                                                                 |     if (r0 < r3) {
    0x000050fa bmi.w 0x5fb4                                      |         goto label_99;
                                                                 |     }
                                                                 | label_98:
    0x000050fe ldr r1, [pc, 0x248]                               |     
    0x00005100 ldr r4, [sp, 0x40]                                |     r4 = s1;
    0x00005102 add r1, pc                                        |     r1 = 0xa450;
    0x00005104 mov r0, r4                                        |     r0 = r4;
    0x00005106 blx 0x2110                                        |     r0 = strcmp (r0, r1);
                                                                 |     if (r0 != 0) {
    0x0000510a cbz r0, 0x5118                                    |         
    0x0000510c ldr r1, [pc, 0x23c]                               |         
    0x0000510e mov r0, r4                                        |         r0 = r4;
    0x00005110 add r1, pc                                        |         r1 = 0xa460;
    0x00005112 blx 0x2110                                        |         r0 = strcmp (r0, r1);
                                                                 |         if (r0 != 0) {
    0x00005116 cbnz r0, 0x5122                                   |             goto label_100;
                                                                 |         }
                                                                 |     }
    0x00005118 ldr.w r3, [r5, 0xc8]                              |     r3 = var_198h;
    0x0000511c lsls r1, r3, 0x18                                 |     r1 = r3 << 0x18;
                                                                 |     if (r1 < r3) {
    0x0000511e bmi.w 0x5f9c                                      |         goto label_101;
                                                                 |     }
                                                                 | label_100:
    0x00005122 ldr.w r3, [r5, 0xd4]                              |     r3 = var_d4h;
    0x00005126 ldr.w r0, [r5, 0xf0]                              |     r0 = var_f0h_2;
    0x0000512a cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0000512c beq.w 0x55e0                                      |         goto label_102;
                                                                 |     }
    0x00005130 mov r1, r7                                        |     r1 = r7;
    0x00005132 blx 0x2428                                        |     r0 = ip6tc_is_chain ();
    0x00005136 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00005138 bne.w 0x55b6                                      |         goto label_103;
                                                                 |     }
    0x0000513c ldr.w r4, [r5, 0xd4]                              |     r4 = var_d4h;
    0x00005140 cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x00005142 beq.w 0x55e0                                      |         goto label_102;
                                                                 |     }
                                                                 | label_17:
    0x00005146 ldr r3, [r4, 0x58]                                |     r3 = *((r4 + 0x58));
    0x00005148 ldr.w sl, [r5, 0xcc]                              |     sl = var_19ch;
    0x0000514c ldrh r0, [r3]                                     |     r0 = *(r3);
    0x0000514e str r3, [sp, 0x28]                                |     var_28h = r3;
    0x00005150 cmp.w sl, 0                                       |     
                                                                 |     if (sl == 0) {
    0x00005154 beq.w 0x5dd4                                      |         goto label_104;
                                                                 |     }
    0x00005158 mov r7, sl                                        |     r7 = sl;
    0x0000515a mov.w r8, 0x70                                    |     r8 = 0x70;
                                                                 |     do {
    0x0000515e ldrd r7, r3, [r7]                                 |         __asm ("ldrd r7, r3, [r7]");
    0x00005162 ldr r3, [r3, 0x58]                                |         r3 = *((r3 + 0x58));
    0x00005164 ldrh r3, [r3]                                     |         r3 = *(r3);
    0x00005166 add r8, r3                                        |         r8 += r3;
    0x00005168 cmp r7, 0                                         |         
    0x0000516a bne 0x515e                                        |         
                                                                 |     } while (r7 != 0);
    0x0000516c add r0, r8                                        |     r0 += r8;
    0x0000516e uxth.w r8, r8                                     |     r8 = (int16_t) r8;
    0x00005172 blx 0x235c                                        |     xtables_ip6addr_to_anyname ();
    0x00005176 movs r2, 0x70                                     |     r2 = 0x70;
    0x00005178 mov r1, r5                                        |     r1 = r5;
    0x0000517a mov r4, r0                                        |     r4 = r0;
    0x0000517c blx 0x21b0                                        |     fcn_000021b0 ();
    0x00005180 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x00005182 strh.w r8, [r4, 0x58]                             |     *((r4 + 0x58)) = r8;
    0x00005186 ldrh r3, [r3]                                     |     r3 = *(r3);
    0x00005188 add r8, r3                                        |     r8 += r3;
    0x0000518a mov r3, sl                                        |     r3 = sl;
    0x0000518c strh.w r8, [r4, 0x5a]                             |     *((r4 + 0x5a)) = r8;
    0x00005190 mov sl, r4                                        |     sl = r4;
    0x00005192 add.w r8, r4, 0x70                                |     r8 = r4 + 0x70;
    0x00005196 mov r4, r3                                        |     r4 = r3;
                                                                 |     do {
    0x00005198 ldr r3, [r4, 4]                                   |         r3 = *((r4 + 4));
    0x0000519a add.w r0, r8, r7                                  |         r0 = r8 + r7;
    0x0000519e ldr r1, [r3, 0x58]                                |         r1 = *((r3 + 0x58));
    0x000051a0 ldrh r2, [r1]                                     |         r2 = *(r1);
    0x000051a2 blx 0x21b0                                        |         fcn_000021b0 ();
    0x000051a6 ldrd r4, r3, [r4]                                 |         __asm ("ldrd r4, r3, [r4]");
    0x000051aa ldr r3, [r3, 0x58]                                |         r3 = *((r3 + 0x58));
    0x000051ac ldrh r3, [r3]                                     |         r3 = *(r3);
    0x000051ae add r7, r3                                        |         r7 += r3;
    0x000051b0 cmp r4, 0                                         |         
    0x000051b2 bne 0x5198                                        |         
                                                                 |     } while (r4 != 0);
    0x000051b4 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x000051b6 mov r4, sl                                        |     r4 = sl;
    0x000051b8 add.w r0, r8, r7                                  |     r0 = r8 + r7;
    0x000051bc ldrh r2, [r3]                                     |     r2 = *(r3);
                                                                 | label_45:
    0x000051be ldr r1, [sp, 0x28]                                |     r1 = var_28h;
    0x000051c0 blx 0x21b0                                        |     fcn_000021b0 ();
    0x000051c4 ldr.w r3, [r5, 0xd4]                              |     r3 = var_d4h;
    0x000051c8 ldr r0, [r3, 0x58]                                |     r0 = *((r3 + 0x58));
    0x000051ca blx 0x218c                                        |     fcn_0000218c ();
    0x000051ce ldr.w r3, [fp]                                    |     r3 = *(fp);
                                                                 | label_18:
    0x000051d2 cmp r3, 0xa0                                      |     
                                                                 |     if (r3 == 0xa0) {
    0x000051d4 beq.w 0x59c4                                      |         goto label_105;
                                                                 |     }
                                                                 |     if (r3 > 0xa0) {
    0x000051d8 bhi.w 0x535c                                      |         goto label_106;
                                                                 |     }
    0x000051dc cmp r3, 0x20                                      |     
                                                                 |     if (r3 > 0x20) {
    0x000051de bhi 0x5268                                        |         goto label_107;
                                                                 |     }
    0x000051e0 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000051e2 beq.w 0x54a6                                      |         goto label_108;
                                                                 |     }
    0x000051e6 subs r3, 1                                        |     r3--;
    0x000051e8 cmp r3, 0x1f                                      |     
                                                                 |     if (r3 > 0x1f) {
    0x000051ea bhi.w 0x54a6                                      |         goto label_108;
                                                                 |     }
                                                                 |     /* switch table (33 cases) at 0x51f2 */
    0x000051ee tbh [pc, r3, lsl 1]                               |     __asm ("tbh [pc, r3, lsl 1]");
                                                                 | label_72:
    0x00005232 ldr r1, [pc, 0x11c]                               |     
    0x00005234 mov r2, r3                                        |     r2 = r3;
    0x00005236 movs r0, 1                                        |     r0 = 1;
    0x00005238 add r1, pc                                        |     r1 = 0xa58e;
    0x0000523a blx 0x2530                                        |     ip6tc_flush_entries ();
    0x0000523e b 0x4d50                                          |     goto label_6;
                                                                 | label_92:
    0x00005240 ldr.w r3, [r5, 0xc8]                              |     r3 = var_198h;
    0x00005244 lsls r2, r3, 0x1d                                 |     r2 = r3 << 0x1d;
                                                                 |     if (r2 >= r3) {
    0x00005246 bmi 0x524e                                        |         
    0x00005248 ldr r2, [pc, 0x108]                               |         
    0x0000524a add r2, pc                                        |         r2 = 0xa5a2;
    0x0000524c str r2, [sp, 0x4c]                                |         var_4ch = r2;
                                                                 |     }
    0x0000524e lsls r3, r3, 0x1e                                 |     r3 <<= 0x1e;
                                                                 |     if (r3 < r3) {
    0x00005250 bmi.w 0x5052                                      |         goto label_7;
                                                                 |     }
    0x00005254 ldr r3, [pc, 0x100]                               |     
    0x00005256 add r3, pc                                        |     r3 = 0xa5b2;
    0x00005258 str r3, [sp, 0x38]                                |     var_38h = r3;
                                                                 | label_93:
    0x0000525a ldr r0, [sp, 0x38]                                |     r0 = var_38h;
    0x0000525c ldr r3, [sp, 0x5c]                                |     r3 = var_5ch;
    0x0000525e ldrd r1, r2, [sp, 0x64]                           |     __asm ("ldrd r1, r2, [var_64h]");
    0x00005262 blx 0x2494                                        |     iptc_init ();
    0x00005266 b 0x505a                                          |     goto label_8;
                                                                 | label_107:
    0x00005268 cmp r3, 0x40                                      |     
                                                                 |     if (r3 != 0x40) {
    0x0000526a bne 0x52be                                        |         goto label_109;
                                                                 |     }
    0x0000526c ldr.w r1, [r5, 0xc8]                              |     r1 = var_198h;
    0x00005270 ldr r3, [sp, 0x3c]                                |     r3 = var_3ch;
    0x00005272 ldr r0, [sp, 0x40]                                |     r0 = s1;
    0x00005274 and r1, r1, 0x20                                  |     r1 &= 0x20;
    0x00005278 ldr r2, [r3]                                      |     r2 = *(r3);
    0x0000527a bl 0x4338                                         |     r0 = fcn_00004338 (r0, r1, r2);
    0x0000527e mov sb, r0                                        |     sb = r0;
                                                                 |     do {
                                                                 | label_11:
    0x00005280 ldr r3, [sp, 0x2c]                                |         r3 = var_2ch;
    0x00005282 cmp r3, 1                                         |         
                                                                 |         if (r3 > 1) {
    0x00005284 bgt.w 0x55a2                                      |             goto label_24;
                                                                 |         }
                                                                 | label_15:
    0x00005288 add r0, sp, 0x19c                                 |         r0 += var_19ch;
    0x0000528a blx 0x2668                                        |         ip6tc_builtin ();
                                                                 |         if (r4 != 0) {
    0x0000528e cbz r4, 0x5296                                    |             
                                                                 | label_25:
    0x00005290 mov r0, r4                                        |             r0 = r4;
    0x00005292 blx 0x218c                                        |             fcn_0000218c ();
                                                                 |         }
    0x00005296 ldr r3, [sp, 0x64]                                |         r3 = var_64h;
    0x00005298 ldr r0, [r3]                                      |         r0 = *(r3);
    0x0000529a blx 0x218c                                        |         fcn_0000218c ();
    0x0000529e ldr r3, [sp, 0x68]                                |         r3 = var_68h;
    0x000052a0 ldr r0, [r3]                                      |         r0 = *(r3);
    0x000052a2 blx 0x218c                                        |         fcn_0000218c ();
    0x000052a6 ldr r3, [sp, 0x6c]                                |         r3 = var_6ch;
    0x000052a8 ldr r0, [r3]                                      |         r0 = *(r3);
    0x000052aa blx 0x218c                                        |         fcn_0000218c ();
    0x000052ae ldr r3, [sp, 0x70]                                |         r3 = var_70h;
    0x000052b0 ldr r0, [r3]                                      |         r0 = *(r3);
    0x000052b2 blx 0x218c                                        |         fcn_0000218c ();
    0x000052b6 movs r0, 1                                        |         r0 = 1;
    0x000052b8 blx 0x2214                                        |         fcn_00002214 ();
    0x000052bc b 0x4f62                                          |         goto label_9;
                                                                 | label_109:
    0x000052be cmp r3, 0x80                                      |         
                                                                 |         if (r3 != 0x80) {
    0x000052c0 bne.w 0x54a6                                      |             goto label_108;
                                                                 |         }
    0x000052c4 ldr.w r1, [r5, 0xc8]                              |         r1 = var_198h;
    0x000052c8 ldr r3, [sp, 0x3c]                                |         r3 = var_3ch;
    0x000052ca ldr r0, [sp, 0x40]                                |         r0 = s1;
    0x000052cc and r1, r1, 0x20                                  |         r1 &= 0x20;
    0x000052d0 ldr r2, [r3]                                      |         r2 = *(r3);
    0x000052d2 bl 0x43f0                                         |         r0 = fcn_000043f0 (r0, r1, r2);
    0x000052d6 mov sb, r0                                        |         sb = r0;
    0x000052d8 b 0x5280                                          |         
                                                                 |     } while (1);
                                                                 | label_106:
    0x0000535c cmp.w r3, 0x800                                   |     
                                                                 |     if (r3 == 0x800) {
    0x00005360 beq.w 0x5dc2                                      |         goto label_110;
                                                                 |     }
                                                                 |     if (r3 < 0x800) {
    0x00005364 bls 0x544c                                        |         goto label_111;
                                                                 |     }
    0x00005366 movw r2, 0x2020                                   |     r2 = 0x2020;
    0x0000536a cmp r3, r2                                        |     
                                                                 |     if (r3 == r2) {
    0x0000536c beq.w 0x59c4                                      |         goto label_105;
                                                                 |     }
                                                                 |     if (r3 < r2) {
    0x00005370 bls.w 0x547a                                      |         goto label_112;
                                                                 |     }
    0x00005374 cmp.w r3, 0x3000                                  |     
                                                                 |     if (r3 == 0x3000) {
    0x00005378 beq.w 0x54b4                                      |         goto label_113;
                                                                 |     }
    0x0000537c cmp.w r3, 0x4000                                  |     
                                                                 |     if (r3 != 0x4000) {
    0x00005380 bne.w 0x54a6                                      |         goto label_108;
                                                                 |     }
    0x00005384 ldr r3, [sp, 0x5c]                                |     r3 = var_5ch;
    0x00005386 ldr.w r1, [r5, 0xd4]                              |     r1 = var_d4h;
    0x0000538a ldr.w r0, [r5, 0xcc]                              |     r0 = var_19ch;
    0x0000538e ldr r7, [r3]                                      |     r7 = *(r3);
    0x00005390 ldr r3, [sp, 0x60]                                |     r3 = var_60h;
    0x00005392 str r7, [sp, 0x48]                                |     var_48h = r7;
    0x00005394 ldr.w fp, [r3]                                    |     fp = *(r3);
    0x00005398 ldr.w r3, [r5, 0xc8]                              |     r3 = var_198h;
    0x0000539c and r3, r3, 0x20                                  |     r3 &= 0x20;
    0x000053a0 str r3, [sp, 0x30]                                |     var_30h = r3;
    0x000053a2 ldr r3, [sp, 0x64]                                |     r3 = var_64h;
    0x000053a4 ldr r6, [r3]                                      |     r6 = *(r3);
    0x000053a6 ldr r3, [sp, 0x68]                                |     r3 = var_68h;
    0x000053a8 ldr r5, [r3]                                      |     r5 = *(r3);
    0x000053aa ldr r3, [sp, 0x6c]                                |     r3 = var_6ch;
    0x000053ac ldr r3, [r3]                                      |     r3 = *(r3);
    0x000053ae str r3, [sp, 0x4c]                                |     var_4ch = r3;
    0x000053b0 ldr r3, [sp, 0x70]                                |     r3 = var_70h;
    0x000053b2 ldr r3, [r3]                                      |     r3 = *(r3);
    0x000053b4 str r3, [sp, 0x50]                                |     var_50h = r3;
    0x000053b6 ldr r3, [sp, 0x3c]                                |     r3 = var_3ch;
    0x000053b8 ldr.w r8, [r3]                                    |     r8 = *(r3);
    0x000053bc bl 0x402c                                         |     r0 = fcn_0000402c (r0, r1, r2);
    0x000053c0 mov sl, r0                                        |     sl = r0;
    0x000053c2 cmp r7, 0                                         |     
                                                                 |     if (r7 == 0) {
    0x000053c4 beq.w 0x5b2c                                      |         goto label_114;
                                                                 |     }
    0x000053c8 str.w fp, [sp, 0x28]                              |     __asm ("str.w fp, [var_28h]");
    0x000053cc subs r3, r6, 4                                    |     r3 = r6 - 4;
    0x000053ce ldr.w fp, [sp, 0x40]                              |     fp = s1;
    0x000053d2 mov.w sb, 1                                       |     sb = 1;
    0x000053d6 str r3, [sp, 0x38]                                |     var_38h = r3;
    0x000053d8 subs r3, r5, 4                                    |     r3 = r5 - 4;
    0x000053da str r3, [sp, 0x34]                                |     var_34h = r3;
    0x000053dc movs r3, 0                                        |     r3 = 0;
    0x000053de str r3, [sp, 0x44]                                |     var_44h = r3;
                                                                 | label_32:
    0x000053e0 ldr r2, [sp, 0x38]                                |     r2 = var_38h;
    0x000053e2 ldr r3, [r2, 4]!                                  |     r3 = *((r2 += 4));
    0x000053e6 str r2, [sp, 0x38]                                |     var_38h = r2;
    0x000053e8 ldr r2, [sp, 0x34]                                |     r2 = var_34h;
    0x000053ea str r3, [r4]                                      |     *(r4) = r3;
    0x000053ec ldr r3, [r2, 4]!                                  |     r3 = *((r2 += 4));
    0x000053f0 str r3, [r4, 8]                                   |     *((r4 + 8)) = r3;
    0x000053f2 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x000053f4 str r2, [sp, 0x34]                                |     var_34h = r2;
    0x000053f6 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000053f8 beq.w 0x5b4a                                      |         goto label_115;
                                                                 |     }
    0x000053fc ldr r3, [sp, 0x4c]                                |     r3 = var_4ch;
    0x000053fe movs r5, 0                                        |     r5 = 0;
    0x00005400 subs r7, r3, 4                                    |     r7 = r3 - 4;
    0x00005402 ldr r3, [sp, 0x50]                                |     r3 = var_50h;
    0x00005404 subs r6, r3, 4                                    |     r6 = r3 - 4;
    0x00005406 b 0x5422                                          |     
                                                                 |     while (r3 == 0) {
                                                                 | label_10:
    0x00005408 mov r3, r8                                        |         r3 = r8;
    0x0000540a mov r2, sl                                        |         r2 = sl;
    0x0000540c mov r1, r4                                        |         r1 = r4;
    0x0000540e mov r0, fp                                        |         r0 = fp;
    0x00005410 blx 0x26cc                                        |         fcn_000026cc ();
    0x00005414 ldr r3, [sp, 0x28]                                |         r3 = var_28h;
    0x00005416 adds r5, 1                                        |         r5++;
    0x00005418 and.w sb, sb, r0                                  |         sb &= r0;
    0x0000541c cmp r3, r5                                        |         
                                                                 |         if (r3 == r5) {
    0x0000541e beq.w 0x5b4a                                      |             goto label_115;
                                                                 |         }
    0x00005422 ldr r3, [r7, 4]!                                  |         r3 = *((r7 += 4));
    0x00005426 str r3, [r4, 4]                                   |         *((r4 + 4)) = r3;
    0x00005428 ldr r3, [r6, 4]!                                  |         r3 = *((r6 += 4));
    0x0000542c str r3, [r4, 0xc]                                 |         *((r4 + 0xc)) = r3;
    0x0000542e ldr r3, [sp, 0x30]                                |         r3 = var_30h;
    0x00005430 cmp r3, 0                                         |         
    0x00005432 beq 0x5408                                        |         
                                                                 |     }
    0x00005434 ldrh.w r1, [r4, 0x58]                             |     r1 = *((r4 + 0x58));
    0x00005438 movs r3, 0x5b                                     |     r3 = 0x5b;
    0x0000543a movs r2, 0                                        |     r2 = 0;
    0x0000543c mov r0, r4                                        |     r0 = r4;
    0x0000543e str.w r8, [sp]                                    |     __asm ("str.w r8, [sp]");
    0x00005442 add r1, r4                                        |     r1 += r4;
    0x00005444 adds r1, 2                                        |     r1 += 2;
    0x00005446 bl 0x3d40                                         |     fcn_00003d40 (r0, r1, r2, r3, r4);
    0x0000544a b 0x5408                                          |     goto label_10;
                                                                 | label_111:
    0x0000544c cmp.w r3, 0x200                                   |     
                                                                 |     if (r3 == fcn.00000004) {
    0x00005450 beq.w 0x5daa                                      |         goto label_116;
                                                                 |     }
    0x00005454 cmp.w r3, 0x400                                   |     
                                                                 |     if (r3 == 0x400) {
    0x00005458 bne 0x5490                                        |         
    0x0000545a ldr.w r3, [r5, 0xc8]                              |         r3 = var_198h;
    0x0000545e ldr r1, [sp, 0x58]                                |         r1 = var_58h;
    0x00005460 ands r3, r3, 0x400                                |         r3 &= 0x400;
    0x00005464 it eq                                             |         
                                                                 |         if (r3 != r3) {
    0x00005466 moveq r2, r3                                      |             r2 = r3;
                                                                 |         }
    0x00005468 ldrd r3, r0, [sp, 0x3c]                           |         __asm ("ldrd r3, r0, [var_3ch]");
    0x0000546c it ne                                             |         
                                                                 |         if (r3 == r3) {
    0x0000546e addne r2, sp, 0x130                               |             r2 += var_130h;
                                                                 |         }
    0x00005470 ldr r3, [r3]                                      |         r3 = *(r3);
    0x00005472 blx 0x2638                                        |         r0 = ip6tc_zero_counter ();
    0x00005476 mov sb, r0                                        |         sb = r0;
    0x00005478 b 0x5280                                          |         goto label_11;
                                                                 | label_112:
    0x0000547a cmp.w r3, 0x2000                                  |         
                                                                 |         if (r3 != 0x2000) {
    0x0000547e bne 0x54a4                                        |             goto label_117;
                                                                 |         }
                                                                 | label_12:
    0x00005480 ldrd r3, r0, [sp, 0x3c]                           |         __asm ("ldrd r3, r0, [var_3ch]");
    0x00005484 ldr r1, [sp, 0x34]                                |         r1 = var_34h;
    0x00005486 ldr r2, [r3]                                      |         r2 = *(r3);
    0x00005488 blx 0x25bc                                        |         r0 = fcn_000025bc ();
    0x0000548c mov sb, r0                                        |         sb = r0;
    0x0000548e b 0x5280                                          |         goto label_11;
                                                                 |     }
    0x00005490 cmp.w r3, 0x100                                   |     
                                                                 |     if (r3 != 0x100) {
    0x00005494 bne 0x54a6                                        |         goto label_108;
                                                                 |     }
    0x00005496 ldrd r3, r0, [sp, 0x3c]                           |     __asm ("ldrd r3, r0, [var_3ch]");
    0x0000549a ldr r1, [r3]                                      |     r1 = *(r3);
    0x0000549c blx 0x2298                                        |     r0 = fcn_00002298 ();
    0x000054a0 mov sb, r0                                        |     sb = r0;
    0x000054a2 b 0x5280                                          |     goto label_11;
                                                                 | label_117:
    0x000054a4 bls 0x54aa                                        |     
                                                                 |     while (r3 != 0x1000) {
                                                                 | label_108:
    0x000054a6 bl 0x4190                                         |         fcn_00004190 ();
    0x000054aa bic r3, r3, 0x80                                  |         r3 = BIT_MASK (r3, 0x80);
    0x000054ae cmp.w r3, 0x1000                                  |         
    0x000054b2 bne 0x54a6                                        |         
                                                                 |     }
                                                                 | label_113:
    0x000054b4 ldr.w r3, [r5, 0xc8]                              |     r3 = var_198h;
    0x000054b8 ldr r2, [sp, 0x3c]                                |     r2 = var_3ch;
    0x000054ba ldr r7, [r2]                                      |     r7 = *(r2);
    0x000054bc and r2, r3, 0x20                                  |     r2 = r3 & 0x20;
    0x000054c0 sbfx r3, r3, 5, 1                                 |     __asm ("sbfx r3, r3, 5, 1");
    0x000054c4 str r2, [sp, 0x30]                                |     var_30h = r2;
    0x000054c6 str r3, [sp, 0x28]                                |     var_28h = r3;
    0x000054c8 ldr r3, [sp, 0x34]                                |     r3 = var_34h;
    0x000054ca cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000054cc beq.w 0x5ab2                                      |         goto label_118;
                                                                 |     }
                                                                 | label_29:
    0x000054d0 mov r0, r7                                        |     r0 = r7;
    0x000054d2 blx 0x2238                                        |     r0 = fcn_00002238 ();
    0x000054d6 mov r8, r0                                        |     r8 = r0;
    0x000054d8 blx 0x247c                                        |     ip6tc_free ();
    0x000054dc str r0, [sp, 0x30]                                |     var_30h = r0;
    0x000054de cmp.w r8, 0                                       |     
                                                                 |     if (r8 == 0) {
    0x000054e2 beq.w 0x5ec8                                      |         goto label_119;
                                                                 |     }
    0x000054e6 str.w sb, [sp, 0x44]                              |     __asm ("str.w sb, [var_44h]");
    0x000054ea movs r6, 0                                        |     r6 = 0;
    0x000054ec str.w fp, [sp, 0x48]                              |     __asm ("str.w fp, [var_48h]");
    0x000054f0 mov fp, r5                                        |     
    0x000054f2 ldr.w sl, [sp, 0x28]                              |     sl = var_28h;
    0x000054f6 mov r5, r8                                        |     r5 = r8;
    0x000054f8 ldr.w sb, [sp, 0x40]                              |     sb = s1;
    0x000054fc ldr.w r8, [sp, 0x34]                              |     r8 = var_34h;
    0x00005500 str r4, [sp, 0x38]                                |     var_38h = r4;
                                                                 |     do {
    0x00005502 cmp.w sb, 0                                       |         
                                                                 |         if (sb == 0) {
    0x00005506 beq.w 0x5be2                                      |             goto label_120;
                                                                 |         }
    0x0000550a mov r1, sb                                        |         r1 = sb;
    0x0000550c mov r0, r5                                        |         r0 = r5;
    0x0000550e blx 0x2110                                        |         r0 = strcmp (r0, r1);
    0x00005512 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00005514 beq.w 0x5be2                                      |             goto label_120;
                                                                 |         }
    0x00005516 strh r5, [r4, 0x1a]                               |         *((r4 + 0x1a)) = r5;
                                                                 | label_40:
    0x00005518 mov r0, r7                                        |         r0 = r7;
    0x0000551a blx 0x24c4                                        |         r0 = putchar (r0);
    0x0000551e mov r5, r0                                        |         r5 = r0;
    0x00005520 cmp r0, 0                                         |         
    0x00005522 bne 0x5502                                        |         
                                                                 |     } while (r0 != 0);
    0x00005524 ldr r2, [sp, 0x30]                                |     r2 = var_30h;
    0x00005526 movs r3, 2                                        |     r3 = 2;
    0x00005528 mov r5, fp                                        |     r5 = fp;
    0x0000552a ldr r4, [sp, 0x38]                                |     r4 = var_38h;
    0x0000552c ldr.w sb, [sp, 0x44]                              |     sb = var_44h;
    0x00005530 ldr.w fp, [sp, 0x48]                              |     fp = var_48h;
    0x00005534 str r3, [r2]                                      |     *(r2) = r3;
    0x00005536 cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x00005538 beq.w 0x5280                                      |         goto label_11;
                                                                 |     }
    0x0000553c ldr.w r2, [fp]                                    |     r2 = *(fp);
    0x00005540 lsls r1, r2, 0x18                                 |     r1 = r2 << 0x18;
    0x00005542 it pl                                             |     
                                                                 |     if (r1 < r2) {
    0x00005544 movpl sb, r6                                      |         sb = r6;
                                                                 |     }
                                                                 |     if (r1 < r2) {
    0x00005546 bmi.w 0x5a92                                      |         goto label_121;
                                                                 |     }
                                                                 | label_28:
    0x0000554a lsls r3, r2, 0x12                                 |     r3 = r2 << 0x12;
                                                                 |     if (r3 >= r2) {
    0x0000554c bpl.w 0x5280                                      |         goto label_11;
                                                                 |     }
    0x00005550 b 0x5480                                          |     goto label_12;
                                                                 | label_70:
    0x00005552 mov r1, r4                                        |     r1 = r4;
    0x00005554 mov r0, r7                                        |     r0 = r7;
    0x00005556 bl 0x92d4                                         |     r0 = fcn_000092d4 (r0, r1);
    0x0000555a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000555c beq.w 0x4a32                                      |         goto label_0;
                                                                 |     }
    0x00005560 ldr r1, [sp, 0x28]                                |     r1 = var_28h;
    0x00005562 ldr r3, [r1]                                      |     r3 = *(r1);
    0x00005564 adds r2, r3, 1                                    |     r2 = r3 + 1;
    0x00005566 ldr.w sb, [r4, r3, lsl 2]                         |     offset_7 = r3 << 2;
                                                                 |     sb = *((r4 + offset_7));
    0x0000556a str r2, [r1]                                      |     *(r1) = r2;
    0x0000556c b.w 0x4a32                                        |     goto label_0;
                                                                 | label_73:
    0x00005570 mov r1, r4                                        |     r1 = r4;
    0x00005572 mov r0, r7                                        |     r0 = r7;
    0x00005574 bl 0x92d4                                         |     r0 = fcn_000092d4 (r0, r1);
    0x00005578 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000557a beq.w 0x4d78                                      |         goto label_13;
                                                                 |     }
    0x0000557e ldr r1, [sp, 0x28]                                |     r1 = var_28h;
    0x00005580 ldr r3, [r1]                                      |     r3 = *(r1);
    0x00005582 adds r2, r3, 1                                    |     r2 = r3 + 1;
    0x00005584 ldr.w sb, [r4, r3, lsl 2]                         |     offset_8 = r3 << 2;
                                                                 |     sb = *((r4 + offset_8));
    0x00005588 str r2, [r1]                                      |     *(r1) = r2;
    0x0000558a b.w 0x4d78                                        |     goto label_13;
                                                                 | label_60:
    0x0000558e ldr.w r3, [r5, 0xc0]                              |     r3 = *((r5 + 0xc0));
    0x00005592 addw r2, sp, 0x123                                |     __asm ("addw r2, var_123h");
    0x00005596 movs r1, 0x20                                     |     r1 = 0x20;
    0x00005598 add r0, sp, 0x198                                 |     r0 += var_198h;
    0x0000559a bl 0x410c                                         |     fcn_0000410c (r0, r1, r2, r3);
    0x0000559e b.w 0x4a7e                                        |     goto label_14;
                                                                 | label_24:
    0x000055a2 ldr r3, [sp, 0x3c]                                |     r3 = var_3ch;
    0x000055a4 ldr r0, [r3]                                      |     r0 = *(r3);
    0x000055a6 blx 0x257c                                        |     fcn_0000257c ();
    0x000055aa b 0x5288                                          |     goto label_15;
                                                                 | label_96:
    0x000055ac ldr r1, [sp, 0x74]                                |     r1 = var_74h;
    0x000055ae ldr r0, [sp, 0x48]                                |     r0 = var_48h;
    0x000055b0 bl 0x8e7c                                         |     fcn_00008e7c (r0, r1, r2);
    0x000055b4 b 0x50aa                                          |     goto label_16;
                                                                 | label_103:
    0x000055b6 ldr.w r3, [pc, 0xb28]                             |     r3 = *(0x60e2);
    0x000055ba movs r1, 1                                        |     r1 = 1;
    0x000055bc ldr.w r2, [pc, 0xb24]                             |     
    0x000055c0 ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x000055c2 add r2, pc                                        |     r2 = 0xb6aa;
    0x000055c4 ldr r0, [r3]                                      |     r0 = *(0x60e2);
    0x000055c6 ldr.w r3, [r5, 0xf0]                              |     r3 = var_f0h_2;
    0x000055ca blx 0x2570                                        |     fcn_00002570 ();
    0x000055ce ldr.w r3, [r5, 0xd4]                              |     r3 = var_d4h;
    0x000055d2 ldr r0, [r3, 0x58]                                |     r0 = *(0x613a);
                                                                 |     if (r0 != 0) {
    0x000055d4 cbz r0, 0x55da                                    |         
    0x000055d6 blx 0x218c                                        |         fcn_0000218c ();
                                                                 |     }
    0x000055da movs r3, 0                                        |     r3 = 0;
    0x000055dc str.w r3, [r5, 0xd4]                              |     __asm ("str.w r3, [var_d4h]");
                                                                 | label_102:
    0x000055e0 ldr.w r0, [r5, 0xf0]                              |     r0 = var_f0h_2;
    0x000055e4 ldrb r3, [r0]                                     |     r3 = *(r0);
                                                                 |     if (r3 == 0) {
    0x000055e6 cbz r3, 0x5616                                    |         goto label_122;
                                                                 |     }
    0x000055e8 ldr r3, [sp, 0x3c]                                |     r3 = var_3ch;
    0x000055ea ldr r1, [r3]                                      |     r1 = *(r3);
    0x000055ec blx 0x2428                                        |     r0 = ip6tc_is_chain ();
                                                                 |     if (r0 != 0) {
    0x000055f0 cbnz r0, 0x5616                                   |         goto label_122;
                                                                 |     }
                                                                 | label_19:
    0x000055f2 ldr.w r4, [r5, 0xd4]                              |     r4 = var_d4h;
    0x000055f6 cmp r4, 0                                         |     
                                                                 |     if (r4 != 0) {
    0x000055f8 bne.w 0x5146                                      |         goto label_17;
                                                                 |     }
    0x000055fc ldrb.w r3, [r5, 0x52]                             |     r3 = var_52h;
    0x00005600 ldr.w r0, [r5, 0xf0]                              |     r0 = var_f0h_2;
    0x00005604 lsls r2, r3, 0x1e                                 |     r2 = r3 << 0x1e;
                                                                 |     if (r2 < r3) {
    0x00005606 bmi.w 0x5fce                                      |         goto label_123;
                                                                 |     }
    0x0000560a movs r1, 3                                        |     r1 = 3;
    0x0000560c blx 0x25b0                                        |     fcn_000025b0 ();
    0x00005610 ldr.w r3, [fp]                                    |     r3 = *(fp);
    0x00005614 b 0x51d2                                          |     goto label_18;
                                                                 | label_122:
    0x00005616 ldr.w r0, [pc, 0xad0]                             |     
    0x0000561a movs r1, 3                                        |     r1 = 3;
    0x0000561c add r0, pc                                        |     r0 = 0xb70a;
    0x0000561e blx 0x25b0                                        |     fcn_000025b0 ();
    0x00005622 ldr r7, [r0, 0x14]                                |     r7 = *(0xb71e);
    0x00005624 mov r4, r0                                        |     r4 = r0;
    0x00005626 str.w r0, [r5, 0xd4]                              |     __asm ("str.w r0, [var_d4h]");
    0x0000562a movs r0, 1                                        |     r0 = 1;
    0x0000562c adds r7, 0x20                                     |     r7 += 0x20;
    0x0000562e mov r1, r7                                        |     r1 = r7;
    0x00005630 blx 0x2564                                        |     fcn_00002564 ();
    0x00005634 ldr.w r3, [r5, 0xd4]                              |     r3 = var_d4h;
    0x00005638 movs r2, 0x1d                                     |     r2 = 0x1d;
    0x0000563a str r0, [r4, 0x58]                                |     *((r4 + 0x58)) = r0;
    0x0000563c ldr.w r1, [r5, 0xf0]                              |     r1 = var_f0h_2;
    0x00005640 ldr r0, [r3, 0x58]                                |     r0 = *((r3 + 0x58));
    0x00005642 strh r7, [r0], 2                                  |     *(r0) = r7;
                                                                 |     r0 += 2;
    0x00005646 blx 0x22f8                                        |     fcn_000022f8 ();
    0x0000564a ldr r3, [sp, 0x3c]                                |     r3 = var_3ch;
    0x0000564c ldr.w r0, [r5, 0xf0]                              |     r0 = var_f0h_2;
    0x00005650 ldr r1, [r3]                                      |     r1 = *(r3);
    0x00005652 blx 0x2428                                        |     r0 = ip6tc_is_chain ();
    0x00005656 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00005658 bne 0x5720                                        |         goto label_124;
                                                                 |     }
    0x0000565a ldr.w r0, [r5, 0xd4]                              |     r0 = var_d4h;
    0x0000565e ldr r3, [r0, 0x58]                                |     r3 = *((r0 + 0x58));
    0x00005660 ldrb r2, [r0, 0x10]                               |     r2 = *((r0 + 0x10));
    0x00005662 strb r2, [r3, 0x1f]                               |     *((r3 + 0x1f)) = r2;
                                                                 | label_22:
    0x00005664 bl 0x8c58                                         |     fcn_00008c58 (r0);
    0x00005668 b 0x55f2                                          |     goto label_19;
                                                                 | label_69:
    0x0000566a mov r1, r4                                        |     r1 = r4;
    0x0000566c mov r0, r7                                        |     r0 = r7;
    0x0000566e bl 0x92d4                                         |     r0 = fcn_000092d4 (r0, r1);
    0x00005672 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00005674 beq.w 0x4ccc                                      |         goto label_20;
                                                                 |     }
    0x00005678 ldr r1, [sp, 0x28]                                |     r1 = var_28h;
    0x0000567a ldr r3, [r1]                                      |     r3 = *(r1);
    0x0000567c adds r2, r3, 1                                    |     r2 = r3 + 1;
    0x0000567e ldr.w sb, [r4, r3, lsl 2]                         |     offset_9 = r3 << 2;
                                                                 |     sb = *((r4 + offset_9));
    0x00005682 str r2, [r1]                                      |     *(r1) = r2;
    0x00005684 b.w 0x4ccc                                        |     goto label_20;
                                                                 | label_66:
    0x00005688 mov r1, r4                                        |     r1 = r4;
    0x0000568a mov r0, r7                                        |     r0 = r7;
    0x0000568c str r3, [sp, 0x88]                                |     var_88h = r3;
    0x0000568e bl 0x92d4                                         |     fcn_000092d4 (r0, r1);
    0x00005692 ldr r3, [sp, 0x88]                                |     r3 = var_88h;
                                                                 |     if (r0 == 0) {
    0x00005694 cbz r0, 0x56aa                                    |         goto label_125;
                                                                 |     }
    0x00005696 ldr r1, [sp, 0x28]                                |     r1 = var_28h;
    0x00005698 ldr r2, [r1]                                      |     r2 = *(r1);
    0x0000569a ldr.w sl, [r4, r2, lsl 2]                         |     offset_10 = r2 << 2;
                                                                 |     sl = *((r4 + offset_10));
    0x0000569e adds r2, 1                                        |     r2++;
    0x000056a0 str r2, [r1]                                      |     *(r1) = r2;
    0x000056a2 cmp.w sl, 0                                       |     
                                                                 |     if (sl != 0) {
    0x000056a6 bne.w 0x4c78                                      |         goto label_21;
                                                                 |     }
                                                                 | label_125:
    0x000056aa ldr r3, [sp, 0x78]                                |     r3 = var_78h;
    0x000056ac mov.w r0, 0x400                                   |     r0 = 0x400;
    0x000056b0 ldr r3, [r3]                                      |     r3 = *(r3);
    0x000056b2 ldr r4, [r3, 0x14]                                |     r4 = *((r3 + 0x14));
    0x000056b4 bl 0x9b94                                         |     fcn_00009b94 (r0);
    0x000056b8 ldr.w r1, [pc, 0xa30]                             |     
    0x000056bc mov r2, r0                                        |     r2 = r0;
    0x000056be movs r0, 2                                        |     r0 = 2;
    0x000056c0 add r1, pc                                        |     r1 = 0xb7b0;
    0x000056c2 blx r4                                            |     uint32_t (*r4)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
    0x000056c4 ldr.w r3, [pc, 0xa28]                             |     r3 = *(0x60f0);
    0x000056c8 ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x000056ca ldr r2, [r3]                                      |     r2 = *(0x60f0);
    0x000056cc cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x000056ce beq.w 0x5f06                                      |         goto label_126;
                                                                 |     }
                                                                 | label_52:
    0x000056d2 ldr.w r4, [r5, 0xcc]                              |     r4 = *((r5 + 0xcc));
    0x000056d6 cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x000056d8 beq.w 0x5eea                                      |         goto label_127;
                                                                 |     }
                                                                 | label_51:
    0x000056dc ldr.w r3, [pc, 0xa14]                             |     r3 = *(0x000060f4);
    0x000056e0 movs r0, 1                                        |     r0 = 1;
    0x000056e2 ldr.w r1, [pc, 0xa14]                             |     
    0x000056e6 add r3, pc                                        |     r3 += pc;
    0x000056e8 ldrd r2, r3, [r3, 4]                              |     __asm ("ldrd r2, r3, [r3, 4]");
    0x000056ec add r1, pc                                        |     r1 = 0xb7ea;
    0x000056ee strd r2, r2, [sp, 0x20]                           |     __asm ("strd r2, r2, [sp, 0x20]");
    0x000056f2 strd r2, r2, [sp, 0x18]                           |     __asm ("strd r2, r2, [sp, 0x18]");
    0x000056f4 movs r2, 6                                        |     r2 = 6;
    0x000056f6 strd r2, r2, [sp, 0x10]                           |     __asm ("strd r2, r2, [sp, 0x10]");
    0x000056fa strd r2, r2, [sp, 8]                              |     __asm ("strd r2, r2, [sp, 8]");
    0x000056fe strd r2, r2, [sp]                                 |     __asm ("strd r2, r2, [sp]");
    0x00005702 blx 0x2530                                        |     ip6tc_flush_entries ();
    0x00005706 ldr.w r0, [pc, 0x9f4]                             |     
    0x0000570a add r0, pc                                        |     r0 = 0xb80c;
    0x0000570c blx 0x2344                                        |     ip6tc_next_rule ();
    0x00005710 ldr r3, [sp, 0x84]                                |     r3 = var_84h;
    0x00005712 mov r1, r4                                        |     r1 = r4;
    0x00005714 ldr r0, [r3]                                      |     r0 = *(r3);
    0x00005716 bl 0x8a20                                         |     fcn_00008a20 (r0, r1);
    0x0000571a movs r0, 0                                        |     r0 = 0;
    0x0000571c blx 0x23e0                                        |     xtables_ipaddr_to_anyname ();
                                                                 | label_124:
    0x00005720 ldr.w r0, [r5, 0xd4]                              |     r0 = var_d4h;
    0x00005724 b 0x5664                                          |     goto label_22;
    0x00005726 ldr r0, [sp, 0x6c]                                |     r0 = var_6ch;
    0x00005728 ldr r3, [sp, 0x5c]                                |     r3 = var_5ch;
    0x0000572a ldr r2, [sp, 0x60]                                |     r2 = var_60h;
    0x0000572c ldr r0, [r0]                                      |     r0 = *(r0);
    0x0000572e ldr r1, [r3]                                      |     r1 = *(r3);
    0x00005730 ldr.w r3, [r5, 0xc8]                              |     r3 = *((r5 + 0xc8));
    0x00005734 str r0, [sp, 0x48]                                |     var_48h = r0;
    0x00005736 ldr r0, [sp, 0x70]                                |     r0 = var_70h;
    0x00005738 and sl, r3, 0x20                                  |     sl = r3 & 0x20;
    0x0000573c ldr r3, [sp, 0x64]                                |     r3 = var_64h;
    0x0000573e ldr.w fp, [r2]                                    |     fp = *(r2);
    0x00005742 ldr r0, [r0]                                      |     r0 = *(r0);
    0x00005744 ldr r2, [r3]                                      |     r2 = *(r3);
    0x00005746 ldr r3, [sp, 0x68]                                |     r3 = var_68h;
    0x00005748 str r0, [sp, 0x4c]                                |     var_4ch = r0;
    0x0000574a ldr r0, [sp, 0x3c]                                |     r0 = var_3ch;
    0x0000574c ldr r3, [r3]                                      |     r3 = *(r3);
    0x0000574e str r1, [sp, 0x44]                                |     var_44h = r1;
    0x00005750 ldr.w r8, [r0]                                    |     r8 = *(r0);
    0x00005754 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x00005756 beq.w 0x5ed2                                      |         goto label_128;
                                                                 |     }
    0x0000575a str.w sl, [sp, 0x28]                              |     __asm ("str.w sl, [var_28h]");
    0x0000575e subs r3, 4                                        |     r3 -= 4;
    0x00005760 ldr.w sl, [sp, 0x40]                              |     sl = s1;
    0x00005764 mov.w sb, 1                                       |     sb = 1;
    0x00005768 subs r2, 4                                        |     r2 -= 4;
    0x0000576a str r3, [sp, 0x30]                                |     var_30h = r3;
    0x0000576c movs r3, 0                                        |     r3 = 0;
    0x0000576e str r2, [sp, 0x34]                                |     var_34h = r2;
    0x00005770 str r3, [sp, 0x38]                                |     var_38h = r3;
                                                                 | label_30:
    0x00005772 ldr r2, [sp, 0x34]                                |     r2 = var_34h;
    0x00005774 ldr r3, [r2, 4]!                                  |     r3 = *((r2 += 4));
    0x00005778 str r2, [sp, 0x34]                                |     var_34h = r2;
    0x0000577a ldr r2, [sp, 0x30]                                |     r2 = var_30h;
    0x0000577c str r3, [r4]                                      |     *(r4) = r3;
    0x0000577e ldr r3, [r2, 4]!                                  |     r3 = *((r2 += 4));
    0x00005782 str r2, [sp, 0x30]                                |     var_30h = r2;
    0x00005784 str r3, [r4, 8]                                   |     *((r4 + 8)) = r3;
    0x00005786 cmp.w fp, 0                                       |     
                                                                 |     if (fp == 0) {
    0x0000578a beq.w 0x5b3a                                      |         goto label_129;
                                                                 |     }
    0x0000578e ldr r3, [sp, 0x48]                                |     r3 = var_48h;
    0x00005790 movs r5, 0                                        |     r5 = 0;
    0x00005792 subs r7, r3, 4                                    |     r7 = r3 - 4;
    0x00005794 ldr r3, [sp, 0x4c]                                |     r3 = var_4ch;
    0x00005796 subs r6, r3, 4                                    |     r6 = r3 - 4;
    0x00005798 b 0x57b0                                          |     
                                                                 |     while (r3 == 0) {
                                                                 | label_23:
    0x0000579a adds r5, 1                                        |         r5++;
    0x0000579c mov r2, r8                                        |         r2 = r8;
    0x0000579e mov r1, r4                                        |         r1 = r4;
    0x000057a0 mov r0, sl                                        |         r0 = sl;
    0x000057a2 blx 0x25f8                                        |         fcn_000025f8 ();
    0x000057a6 cmp fp, r5                                        |         
    0x000057a8 and.w sb, sb, r0                                  |         sb &= r0;
                                                                 |         if (fp == r5) {
    0x000057ac beq.w 0x5b3a                                      |             goto label_129;
                                                                 |         }
    0x000057b0 ldr r3, [r7, 4]!                                  |         r3 = *((r7 += 4));
    0x000057b4 str r3, [r4, 4]                                   |         *((r4 + 4)) = r3;
    0x000057b6 ldr r3, [r6, 4]!                                  |         r3 = *((r6 += 4));
    0x000057ba str r3, [r4, 0xc]                                 |         *((r4 + 0xc)) = r3;
    0x000057bc ldr r3, [sp, 0x28]                                |         r3 = var_28h;
    0x000057be cmp r3, 0                                         |         
    0x000057c0 beq 0x579a                                        |         
                                                                 |     }
    0x000057c2 ldrh.w r1, [r4, 0x58]                             |     r1 = *((r4 + 0x58));
    0x000057c6 movs r3, 0x5b                                     |     r3 = 0x5b;
    0x000057c8 movs r2, 0                                        |     r2 = 0;
    0x000057ca mov r0, r4                                        |     r0 = r4;
    0x000057cc str.w r8, [sp]                                    |     __asm ("str.w r8, [sp]");
    0x000057d0 add r1, r4                                        |     r1 += r4;
    0x000057d2 adds r1, 2                                        |     r1 += 2;
    0x000057d4 bl 0x3d40                                         |     fcn_00003d40 (r0, r1, r2, r3, r4);
    0x000057d8 b 0x579a                                          |     goto label_23;
    0x000057da ldr r2, [sp, 0x34]                                |     r2 = var_34h;
    0x000057dc ldr.w r3, [r5, 0xc8]                              |     r3 = *((r5 + 0xc8));
    0x000057e0 subs r6, r2, 1                                    |     r6 = r2 - 1;
    0x000057e2 ldr r2, [sp, 0x64]                                |     r2 = var_64h;
    0x000057e4 lsls r3, r3, 0x1a                                 |     r3 <<= 0x1a;
    0x000057e6 ldr r2, [r2]                                      |     r2 = *(r2);
    0x000057e8 ldr r7, [r2]                                      |     r7 = *(r2);
    0x000057ea ldr r2, [sp, 0x6c]                                |     r2 = var_6ch;
    0x000057ec ldr r0, [r2]                                      |     r0 = *(r2);
    0x000057ee ldr r2, [sp, 0x3c]                                |     r2 = var_3ch;
    0x000057f0 ldr r5, [r2]                                      |     r5 = *(r2);
    0x000057f2 ldr r2, [sp, 0x68]                                |     r2 = var_68h;
    0x000057f4 ldr r1, [r2]                                      |     r1 = *(r2);
    0x000057f6 ldr r2, [sp, 0x70]                                |     r2 = var_70h;
    0x000057f8 ldr r2, [r2]                                      |     r2 = *(r2);
    0x000057fa str r7, [r4]                                      |     *(r4) = r7;
    0x000057fc ldr r0, [r0]                                      |     r0 = *(r0);
    0x000057fe str r0, [r4, 4]                                   |     *((r4 + 4)) = r0;
    0x00005800 ldr r1, [r1]                                      |     r1 = *(r1);
    0x00005802 str r1, [r4, 8]                                   |     *((r4 + 8)) = r1;
    0x00005804 ldr r2, [r2]                                      |     r2 = *(r2);
    0x00005806 str r2, [r4, 0xc]                                 |     *((r4 + 0xc)) = r2;
                                                                 |     if (r3 < r3) {
    0x00005808 bmi.w 0x5e9c                                      |         goto label_130;
                                                                 |     }
                                                                 | label_49:
    0x0000580c ldr r0, [sp, 0x40]                                |     r0 = s1;
    0x0000580e mov r3, r5                                        |     r3 = r5;
    0x00005810 mov r2, r6                                        |     r2 = r6;
    0x00005812 mov r1, r4                                        |     r1 = r4;
    0x00005814 blx 0x22e0                                        |     fcn_000022e0 (r0);
    0x00005816 stcl p6, c4, [r4, -0x204]!                        |     __asm ("stcl p6, c4, [r4, -0x204]!");
                                                                 | label_31:
    0x0000581a ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x0000581c cmp r3, 1                                         |     
                                                                 |     if (r3 > 1) {
    0x0000581e bgt.w 0x55a2                                      |         goto label_24;
                                                                 |     }
    0x00005822 add r0, sp, 0x19c                                 |     r0 += var_19ch;
    0x00005824 blx 0x2668                                        |     ip6tc_builtin ();
    0x00005828 b 0x5290                                          |     goto label_25;
    0x0000582a ldr r3, [sp, 0x34]                                |     r3 = var_34h;
    0x0000582c subs r1, r3, 1                                    |     r1 = r3 - 1;
    0x0000582e ldrd r3, r0, [sp, 0x3c]                           |     __asm ("ldrd r3, r0, [var_3ch]");
    0x00005832 ldr r2, [r3]                                      |     r2 = *(r3);
    0x00005834 blx 0x2280                                        |     r0 = fcn_00002280 ();
    0x00005838 mov sb, r0                                        |     sb = r0;
    0x0000583a b 0x5280                                          |     goto label_11;
    0x0000583c ldr r3, [sp, 0x5c]                                |     r3 = var_5ch;
    0x0000583e ldr.w r1, [r5, 0xd4]                              |     r1 = var_d4h;
    0x00005842 ldr.w r0, [r5, 0xcc]                              |     r0 = var_19ch;
    0x00005846 ldr r7, [r3]                                      |     r7 = *(r3);
    0x00005848 ldr r3, [sp, 0x60]                                |     r3 = var_60h;
    0x0000584a str r7, [sp, 0x48]                                |     var_48h = r7;
    0x0000584c ldr.w fp, [r3]                                    |     fp = *(r3);
    0x00005850 ldr.w r3, [r5, 0xc8]                              |     r3 = var_198h;
    0x00005854 and r3, r3, 0x20                                  |     r3 &= 0x20;
    0x00005858 str r3, [sp, 0x30]                                |     var_30h = r3;
    0x0000585a ldr r3, [sp, 0x64]                                |     r3 = var_64h;
    0x0000585c ldr r6, [r3]                                      |     r6 = *(r3);
    0x0000585e ldr r3, [sp, 0x68]                                |     r3 = var_68h;
    0x00005860 ldr r5, [r3]                                      |     r5 = *(r3);
    0x00005862 ldr r3, [sp, 0x6c]                                |     r3 = var_6ch;
    0x00005864 ldr r3, [r3]                                      |     r3 = *(r3);
    0x00005866 str r3, [sp, 0x4c]                                |     var_4ch = r3;
    0x00005868 ldr r3, [sp, 0x70]                                |     r3 = var_70h;
    0x0000586a ldr r3, [r3]                                      |     r3 = *(r3);
    0x0000586c str r3, [sp, 0x50]                                |     var_50h = r3;
    0x0000586e ldr r3, [sp, 0x3c]                                |     r3 = var_3ch;
    0x00005870 ldr.w r8, [r3]                                    |     r8 = *(r3);
    0x00005874 bl 0x402c                                         |     r0 = fcn_0000402c (r0, r1, r2);
    0x00005878 mov sl, r0                                        |     sl = r0;
    0x0000587a cmp r7, 0                                         |     
                                                                 |     if (r7 == 0) {
    0x0000587c beq.w 0x5b2c                                      |         goto label_114;
                                                                 |     }
    0x00005880 str.w fp, [sp, 0x28]                              |     __asm ("str.w fp, [var_28h]");
    0x00005884 subs r3, r6, 4                                    |     r3 = r6 - 4;
    0x00005886 ldr.w fp, [sp, 0x40]                              |     fp = s1;
    0x0000588a mov.w sb, 1                                       |     sb = 1;
    0x0000588e str r3, [sp, 0x44]                                |     var_44h = r3;
    0x00005890 subs r3, r5, 4                                    |     r3 = r5 - 4;
    0x00005892 str r3, [sp, 0x38]                                |     var_38h = r3;
    0x00005894 movs r3, 0                                        |     r3 = 0;
    0x00005896 str r3, [sp, 0x34]                                |     var_34h = r3;
                                                                 | label_35:
    0x00005898 ldr r2, [sp, 0x44]                                |     r2 = var_44h;
    0x0000589a ldr r3, [r2, 4]!                                  |     r3 = *((r2 += 4));
    0x0000589e str r2, [sp, 0x44]                                |     var_44h = r2;
    0x000058a0 ldr r2, [sp, 0x38]                                |     r2 = var_38h;
    0x000058a2 str r3, [r4]                                      |     *(r4) = r3;
    0x000058a4 ldr r3, [r2, 4]!                                  |     r3 = *((r2 += 4));
    0x000058a8 str r3, [r4, 8]                                   |     *((r4 + 8)) = r3;
    0x000058aa ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x000058ac str r2, [sp, 0x38]                                |     var_38h = r2;
    0x000058ae cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000058b0 beq.w 0x5b6a                                      |         goto label_131;
                                                                 |     }
    0x000058b4 ldr r3, [sp, 0x4c]                                |     r3 = var_4ch;
    0x000058b6 movs r5, 0                                        |     r5 = 0;
    0x000058b8 subs r7, r3, 4                                    |     r7 = r3 - 4;
    0x000058ba ldr r3, [sp, 0x50]                                |     r3 = var_50h;
    0x000058bc subs r6, r3, 4                                    |     r6 = r3 - 4;
    0x000058be b 0x58da                                          |     
                                                                 |     while (r3 == 0) {
                                                                 | label_26:
    0x000058c0 mov r3, r8                                        |         r3 = r8;
    0x000058c2 mov r2, sl                                        |         r2 = sl;
    0x000058c4 mov r1, r4                                        |         r1 = r4;
    0x000058c6 mov r0, fp                                        |         r0 = fp;
    0x000058c8 blx 0x26f0                                        |         fcn_000026f0 ();
    0x000058cc ldr r3, [sp, 0x28]                                |         r3 = var_28h;
    0x000058ce adds r5, 1                                        |         r5++;
    0x000058d0 and.w sb, sb, r0                                  |         sb &= r0;
    0x000058d4 cmp r3, r5                                        |         
                                                                 |         if (r3 == r5) {
    0x000058d6 beq.w 0x5b6a                                      |             goto label_131;
                                                                 |         }
    0x000058da ldr r3, [r7, 4]!                                  |         r3 = *((r7 += 4));
    0x000058de str r3, [r4, 4]                                   |         *((r4 + 4)) = r3;
    0x000058e0 ldr r3, [r6, 4]!                                  |         r3 = *((r6 += 4));
    0x000058e4 str r3, [r4, 0xc]                                 |         *((r4 + 0xc)) = r3;
    0x000058e6 ldr r3, [sp, 0x30]                                |         r3 = var_30h;
    0x000058e8 cmp r3, 0                                         |         
    0x000058ea beq 0x58c0                                        |         
                                                                 |     }
    0x000058ec ldrh.w r1, [r4, 0x58]                             |     r1 = *((r4 + 0x58));
    0x000058f0 movs r3, 0x5b                                     |     r3 = 0x5b;
    0x000058f2 movs r2, 0                                        |     r2 = 0;
    0x000058f4 mov r0, r4                                        |     r0 = r4;
    0x000058f6 str.w r8, [sp]                                    |     __asm ("str.w r8, [sp]");
    0x000058fa add r1, r4                                        |     r1 += r4;
    0x000058fc adds r1, 2                                        |     r1 += 2;
    0x000058fe bl 0x3d40                                         |     fcn_00003d40 (r0, r1, r2, r3, r4);
    0x00005902 b 0x58c0                                          |     goto label_26;
    0x00005904 ldr r0, [sp, 0x6c]                                |     r0 = var_6ch;
    0x00005906 ldr r3, [sp, 0x5c]                                |     r3 = var_5ch;
    0x00005908 ldr r2, [sp, 0x60]                                |     r2 = var_60h;
    0x0000590a ldr r0, [r0]                                      |     r0 = *(r0);
    0x0000590c ldr r1, [r3]                                      |     r1 = *(r3);
    0x0000590e ldr.w r3, [r5, 0xc8]                              |     r3 = var_198h;
    0x00005912 str r0, [sp, 0x4c]                                |     var_4ch = r0;
    0x00005914 ldr r0, [sp, 0x70]                                |     r0 = var_70h;
    0x00005916 and r3, r3, 0x20                                  |     r3 &= 0x20;
    0x0000591a ldr.w sl, [r2]                                    |     sl = *(r2);
    0x0000591e str r3, [sp, 0x30]                                |     var_30h = r3;
    0x00005920 ldr r2, [sp, 0x34]                                |     r2 = var_34h;
    0x00005922 ldr r3, [sp, 0x64]                                |     r3 = var_64h;
    0x00005924 ldr r0, [r0]                                      |     r0 = *(r0);
    0x00005926 add.w fp, r2, -1                                  |     
    0x0000592a str r1, [sp, 0x48]                                |     var_48h = r1;
    0x0000592c ldr r2, [r3]                                      |     r2 = *(r3);
    0x0000592e str r0, [sp, 0x50]                                |     var_50h = r0;
    0x00005930 ldr r3, [sp, 0x68]                                |     r3 = var_68h;
    0x00005932 ldr r0, [sp, 0x3c]                                |     r0 = var_3ch;
    0x00005934 ldr r3, [r3]                                      |     r3 = *(r3);
    0x00005936 ldr.w r8, [r0]                                    |     r8 = *(r0);
    0x0000593a cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x0000593c beq.w 0x5ed2                                      |         goto label_128;
                                                                 |     }
    0x00005940 str.w sl, [sp, 0x28]                              |     __asm ("str.w sl, [var_28h]");
    0x00005944 subs r3, 4                                        |     r3 -= 4;
    0x00005946 ldr.w sl, [sp, 0x40]                              |     sl = s1;
    0x0000594a mov.w sb, 1                                       |     sb = 1;
    0x0000594e subs r2, 4                                        |     r2 -= 4;
    0x00005950 str r3, [sp, 0x38]                                |     var_38h = r3;
    0x00005952 movs r3, 0                                        |     r3 = 0;
    0x00005954 str r2, [sp, 0x44]                                |     var_44h = r2;
    0x00005956 str r3, [sp, 0x34]                                |     var_34h = r3;
                                                                 | label_34:
    0x00005958 ldr r2, [sp, 0x44]                                |     r2 = var_44h;
    0x0000595a ldr r3, [r2, 4]!                                  |     r3 = *((r2 += 4));
    0x0000595e str r2, [sp, 0x44]                                |     var_44h = r2;
    0x00005960 ldr r2, [sp, 0x38]                                |     r2 = var_38h;
    0x00005962 str r3, [r4]                                      |     *(r4) = r3;
    0x00005964 ldr r3, [r2, 4]!                                  |     r3 = *((r2 += 4));
    0x00005968 str r3, [r4, 8]                                   |     *((r4 + 8)) = r3;
    0x0000596a ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x0000596c str r2, [sp, 0x38]                                |     var_38h = r2;
    0x0000596e cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00005970 beq.w 0x5b5a                                      |         goto label_132;
                                                                 |     }
    0x00005974 ldr r3, [sp, 0x4c]                                |     r3 = var_4ch;
    0x00005976 movs r5, 0                                        |     r5 = 0;
    0x00005978 subs r7, r3, 4                                    |     r7 = r3 - 4;
    0x0000597a ldr r3, [sp, 0x50]                                |     r3 = var_50h;
    0x0000597c subs r6, r3, 4                                    |     r6 = r3 - 4;
    0x0000597e b 0x599a                                          |     
                                                                 |     while (r3 == 0) {
                                                                 | label_27:
    0x00005980 mov r3, r8                                        |         r3 = r8;
    0x00005982 mov r2, fp                                        |         r2 = fp;
    0x00005984 mov r1, r4                                        |         r1 = r4;
    0x00005986 mov r0, sl                                        |         r0 = sl;
    0x00005988 blx 0x2680                                        |         iptc_commit ();
    0x0000598c ldr r3, [sp, 0x28]                                |         r3 = var_28h;
    0x0000598e adds r5, 1                                        |         r5++;
    0x00005990 and.w sb, sb, r0                                  |         sb &= r0;
    0x00005994 cmp r3, r5                                        |         
                                                                 |         if (r3 == r5) {
    0x00005996 beq.w 0x5b5a                                      |             goto label_132;
                                                                 |         }
    0x0000599a ldr r3, [r7, 4]!                                  |         r3 = *((r7 += 4));
    0x0000599e str r3, [r4, 4]                                   |         *((r4 + 4)) = r3;
    0x000059a0 ldr r3, [r6, 4]!                                  |         r3 = *((r6 += 4));
    0x000059a4 str r3, [r4, 0xc]                                 |         *((r4 + 0xc)) = r3;
    0x000059a6 ldr r3, [sp, 0x30]                                |         r3 = var_30h;
    0x000059a8 cmp r3, 0                                         |         
    0x000059aa beq 0x5980                                        |         
                                                                 |     }
    0x000059ac ldrh.w r1, [r4, 0x58]                             |     r1 = *((r4 + 0x58));
    0x000059b0 movs r3, 0x5b                                     |     r3 = 0x5b;
    0x000059b2 movs r2, 0                                        |     r2 = 0;
    0x000059b4 mov r0, r4                                        |     r0 = r4;
    0x000059b6 str.w r8, [sp]                                    |     __asm ("str.w r8, [sp]");
    0x000059ba add r1, r4                                        |     r1 += r4;
    0x000059bc adds r1, 2                                        |     r1 += 2;
    0x000059be bl 0x3d40                                         |     fcn_00003d40 (r0, r1, r2, r3, r4);
    0x000059c2 b 0x5980                                          |     goto label_27;
                                                                 | label_105:
    0x000059c4 ldr.w r3, [r5, 0xc8]                              |     r3 = var_198h;
    0x000059c8 ldr r2, [sp, 0x3c]                                |     r2 = var_3ch;
    0x000059ca tst.w r3, 0x20                                    |     
    0x000059ce and r1, r3, 0x40                                  |     r1 = r3 & 0x40;
    0x000059d2 ite eq                                            |     
                                                                 |     if ((r3 & 0x20) != 0) {
    0x000059d4 moveq r0, 0xa                                     |         r0 = 0xa;
                                                                 |     }
                                                                 |     if ((r3 & 0x20) == 0) {
    0x000059d6 movne r0, 0x48                                    |         r0 = 0x48;
                                                                 |     }
    0x000059d8 lsls r7, r3, 0x1f                                 |     r7 = r3 << 0x1f;
    0x000059da ldr.w sl, [r2]                                    |     sl = *(r2);
    0x000059de and r2, r3, 0x200                                 |     r2 = r3 & 0x200;
    0x000059e2 it mi                                             |     
                                                                 |     if (r7 >= r3) {
    0x000059e4 orrmi r3, r0, 1                                   |         r3 = r0 | 1;
                                                                 |     }
    0x000059e8 str r0, [sp, 0x28]                                |     var_28h = r0;
    0x000059ea it mi                                             |     
                                                                 |     if (r7 >= r3) {
    0x000059ec strmi r3, [sp, 0x28]                              |         var_28h = r3;
                                                                 |     }
                                                                 |     if (r1 == 0) {
    0x000059ee cbnz r1, 0x59f8                                   |         
    0x000059f0 ldr r3, [sp, 0x28]                                |         r3 = var_28h;
    0x000059f2 orr r3, r3, 4                                     |         r3 |= 4;
    0x000059f6 str r3, [sp, 0x28]                                |         var_28h = r3;
                                                                 |     }
                                                                 |     if (r2 != 0) {
    0x000059f8 cbz r2, 0x5a02                                    |         
    0x000059fa ldr r3, [sp, 0x28]                                |         r3 = var_28h;
    0x000059fc orr r3, r3, 0x100                                 |         r3 |= 0x100;
    0x00005a00 str r3, [sp, 0x28]                                |         var_28h = r3;
                                                                 |     }
    0x00005a02 mov r0, sl                                        |     r0 = sl;
    0x00005a04 blx 0x2238                                        |     r0 = fcn_00002238 ();
    0x00005a08 mov r8, r0                                        |     r8 = r0;
    0x00005a0a blx 0x247c                                        |     ip6tc_free ();
    0x00005a0e str r0, [sp, 0x30]                                |     var_30h = r0;
    0x00005a10 cmp.w r8, 0                                       |     
                                                                 |     if (r8 == 0) {
    0x00005a14 beq.w 0x5ec8                                      |         goto label_119;
                                                                 |     }
    0x00005a16 strh r0, [r3, 0x12]                               |     *((r3 + 0x12)) = r0;
    0x00005a18 ldr.w r3, [pc, 0x6e4]                             |     
    0x00005a1c movs r7, 0                                        |     r7 = 0;
    0x00005a1e str.w sb, [sp, 0x54]                              |     __asm ("str.w sb, [var_54h]");
    0x00005a22 mov sb, r7                                        |     sb = r7;
    0x00005a24 str.w fp, [sp, 0x58]                              |     __asm ("str.w fp, [var_58h]");
    0x00005a28 mov fp, r6                                        |     
    0x00005a2a add r3, pc                                        |     r3 = 0xbb2e;
    0x00005a2c str r5, [sp, 0x5c]                                |     var_5ch = r5;
    0x00005a2e str r3, [sp, 0x44]                                |     var_44h = r3;
    0x00005a30 mov r5, r8                                        |     r5 = r8;
    0x00005a32 ldr.w r3, [pc, 0x6d0]                             |     
    0x00005a36 ldr r7, [sp, 0x40]                                |     r7 = s1;
    0x00005a38 ldr r6, [sp, 0x34]                                |     r6 = var_34h;
    0x00005a3a add r3, pc                                        |     r3 = 0xbb44;
    0x00005a3c ldr.w r8, [sp, 0x28]                              |     r8 = var_28h;
    0x00005a40 str r3, [sp, 0x48]                                |     var_48h = r3;
    0x00005a42 ldr.w r3, [pc, 0x6c4]                             |     
    0x00005a46 str r4, [sp, 0x50]                                |     var_50h = r4;
    0x00005a48 mov r4, sl                                        |     r4 = sl;
    0x00005a4a add r3, pc                                        |     r3 = 0xbb58;
    0x00005a4c str r3, [sp, 0x4c]                                |     var_4ch = r3;
                                                                 |     do {
    0x00005a4e cmp r7, 0                                         |         
                                                                 |         if (r7 == 0) {
    0x00005a50 beq.w 0x5b7a                                      |             goto label_133;
                                                                 |         }
    0x00005a54 mov r1, r5                                        |         r1 = r5;
    0x00005a56 mov r0, r7                                        |         r0 = r7;
    0x00005a58 blx 0x2110                                        |         r0 = strcmp (r0, r1);
    0x00005a5c cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00005a5e beq.w 0x5b7a                                      |             goto label_133;
                                                                 |         }
                                                                 | label_38:
    0x00005a62 mov r0, r4                                        |         r0 = r4;
    0x00005a64 blx 0x24c4                                        |         r0 = putchar (r0);
    0x00005a68 mov r5, r0                                        |         r5 = r0;
    0x00005a6a cmp r0, 0                                         |         
    0x00005a6c bne 0x5a4e                                        |         
                                                                 |     } while (r0 != 0);
    0x00005a6e ldr r2, [sp, 0x30]                                |     r2 = var_30h;
    0x00005a70 mov r7, sb                                        |     r7 = sb;
    0x00005a72 movs r3, 2                                        |     r3 = 2;
    0x00005a74 ldr r4, [sp, 0x50]                                |     r4 = var_50h;
    0x00005a76 ldrd sb, fp, [sp, 0x54]                           |     __asm ("ldrd sb, fp, [var_58h]");
    0x00005a7a ldr r5, [sp, 0x5c]                                |     r5 = var_5ch;
    0x00005a7c str r3, [r2]                                      |     *(r2) = r3;
    0x00005a7e cmp r7, 0                                         |     
                                                                 |     if (r7 == 0) {
    0x00005a80 beq.w 0x5280                                      |         goto label_11;
                                                                 |     }
    0x00005a84 ldr.w r2, [fp]                                    |     r2 = *(fp);
    0x00005a88 lsls r0, r2, 0x18                                 |     r0 = r2 << 0x18;
    0x00005a8a it pl                                             |     
                                                                 |     if (r0 >= r2) {
    0x00005a8c movpl sb, r7                                      |         sb = r7;
                                                                 |         goto label_134;
                                                                 |     }
                                                                 |     if (r0 >= r2) {
                                                                 | label_134:
    0x00005a8e bpl.w 0x554a                                      |         goto label_28;
                                                                 |     }
                                                                 | label_121:
    0x00005a92 ldr.w r1, [r5, 0xc8]                              |     r1 = *((r5 + 0xc8));
    0x00005a96 ldr r3, [sp, 0x3c]                                |     r3 = var_3ch;
    0x00005a98 ldr r0, [sp, 0x40]                                |     r0 = s1;
    0x00005a9a and r1, r1, 0x20                                  |     r1 &= 0x20;
    0x00005a9e ldr r2, [r3]                                      |     r2 = *(r3);
    0x00005aa0 bl 0x43f0                                         |     r0 = fcn_000043f0 (r0, r1, r2);
    0x00005aa4 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00005aa6 beq.w 0x5280                                      |         goto label_11;
                                                                 |     }
    0x00005aaa ldr.w r2, [fp]                                    |     r2 = *(fp);
    0x00005aae mov sb, r0                                        |     sb = r0;
    0x00005ab0 b 0x554a                                          |     goto label_28;
                                                                 | label_118:
    0x00005ab2 mov r0, r7                                        |     r0 = r7;
    0x00005ab4 blx 0x2238                                        |     r0 = fcn_00002238 ();
    0x00005ab8 mov r6, r0                                        |     r6 = r0;
    0x00005aba cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00005abc beq.w 0x54d0                                      |         goto label_29;
                                                                 |     }
    0x00005ac0 ldr.w r3, [pc, 0x648]                             |     
    0x00005ac4 ldr.w sl, [pc, 0x648]                             |     
    0x00005ac8 add r3, pc                                        |     r3 = 0xbbd8;
    0x00005aca str r3, [sp, 0x38]                                |     var_38h = r3;
    0x00005acc add sl, pc                                        |     sl = 0xbbe0;
    0x00005ace ldr.w r3, [pc, 0x644]                             |     
    0x00005ad2 add r3, pc                                        |     r3 = 0xbbec;
    0x00005ad4 strd r3, r4, [sp, 0x44]                           |     __asm ("strd r3, r4, [var_48h]");
    0x00005ad8 ldr r4, [sp, 0x40]                                |     r4 = s1;
                                                                 |     do {
                                                                 |         if (r4 != 0) {
    0x00005ada cbz r4, 0x5ae6                                    |             
    0x00005adc mov r1, r4                                        |             r1 = r4;
    0x00005ade mov r0, r6                                        |             r0 = r6;
    0x00005ae0 blx 0x2110                                        |             r0 = strcmp (r0, r1);
                                                                 |             if (r0 != 0) {
    0x00005ae4 cbnz r0, 0x5b1c                                   |                 goto label_44;
                                                                 |             }
                                                                 |         }
    0x00005ae6 mov r1, r7                                        |         r1 = r7;
    0x00005ae8 mov r0, r6                                        |         r0 = r6;
    0x00005aea blx 0x2380                                        |         r0 = vfprintf_chk ()
    0x00005aee cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00005af0 beq.w 0x5d9e                                      |             goto label_135;
                                                                 |         }
    0x00005af4 add.w r8, sp, 0xc0                                |         r8 += var_c0h;
    0x00005af8 mov r2, r7                                        |         r2 = r7;
    0x00005afa mov r1, r8                                        |         r1 = r8;
    0x00005afc mov r0, r6                                        |         r0 = r6;
    0x00005afe blx 0x25c8                                        |         fcn_000025c8 ();
    0x00005b02 ldr r1, [sp, 0x38]                                |         r1 = var_38h;
    0x00005b04 mov r3, r0                                        |         r3 = r0;
    0x00005b06 mov r2, r6                                        |         r2 = r6;
    0x00005b08 movs r0, 1                                        |         r0 = 1;
    0x00005b0a blx 0x2530                                        |         ip6tc_flush_entries ();
    0x00005b0e ldr r3, [sp, 0x30]                                |         r3 = var_30h;
    0x00005b10 cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x00005b12 bne.w 0x5e1c                                      |             goto label_136;
                                                                 |         }
                                                                 | label_46:
    0x00005b16 movs r0, 0xa                                      |         r0 = 0xa;
    0x00005b18 blx 0x24d4                                        |         fcn_000024d4 ();
                                                                 | label_44:
    0x00005b1c mov r0, r7                                        |         r0 = r7;
    0x00005b1e blx 0x24c4                                        |         r0 = putchar (r0);
    0x00005b22 mov r6, r0                                        |         r6 = r0;
    0x00005b24 cmp r0, 0                                         |         
    0x00005b26 bne 0x5ada                                        |         
                                                                 |     } while (r0 != 0);
    0x00005b28 ldr r4, [sp, 0x48]                                |     r4 = var_48h;
    0x00005b2a b 0x54d0                                          |     goto label_29;
                                                                 | label_114:
    0x00005b2c mov.w sb, 1                                       |     sb = 1;
                                                                 | label_33:
    0x00005b30 mov r0, sl                                        |     r0 = sl;
    0x00005b32 blx 0x218c                                        |     fcn_0000218c ();
    0x00005b36 b.w 0x5280                                        |     goto label_11;
                                                                 | label_129:
    0x00005b3a ldr r3, [sp, 0x38]                                |     r3 = var_38h;
    0x00005b3c ldr r2, [sp, 0x44]                                |     r2 = var_44h;
    0x00005b3e adds r3, 1                                        |     r3++;
    0x00005b40 cmp r2, r3                                        |     
    0x00005b42 str r3, [sp, 0x38]                                |     var_38h = r3;
                                                                 |     if (r2 != r3) {
    0x00005b44 bne.w 0x5772                                      |         goto label_30;
                                                                 |     }
    0x00005b48 b 0x581a                                          |     goto label_31;
                                                                 | label_115:
    0x00005b4a ldr r3, [sp, 0x44]                                |     r3 = var_44h;
    0x00005b4c ldr r2, [sp, 0x48]                                |     r2 = var_48h;
    0x00005b4e adds r3, 1                                        |     r3++;
    0x00005b50 cmp r2, r3                                        |     
    0x00005b52 str r3, [sp, 0x44]                                |     var_44h = r3;
                                                                 |     if (r2 != r3) {
    0x00005b54 bne.w 0x53e0                                      |         goto label_32;
                                                                 |     }
    0x00005b58 b 0x5b30                                          |     goto label_33;
                                                                 | label_132:
    0x00005b5a ldr r3, [sp, 0x34]                                |     r3 = var_34h;
    0x00005b5c ldr r2, [sp, 0x48]                                |     r2 = var_48h;
    0x00005b5e adds r3, 1                                        |     r3++;
    0x00005b60 cmp r2, r3                                        |     
    0x00005b62 str r3, [sp, 0x34]                                |     var_34h = r3;
                                                                 |     if (r2 != r3) {
    0x00005b64 bne.w 0x5958                                      |         goto label_34;
                                                                 |     }
    0x00005b68 b 0x581a                                          |     goto label_31;
                                                                 | label_131:
    0x00005b6a ldr r3, [sp, 0x34]                                |     r3 = var_34h;
    0x00005b6c ldr r2, [sp, 0x48]                                |     r2 = var_48h;
    0x00005b6e adds r3, 1                                        |     r3++;
    0x00005b70 cmp r2, r3                                        |     
    0x00005b72 str r3, [sp, 0x34]                                |     var_34h = r3;
                                                                 |     if (r2 != r3) {
    0x00005b74 bne.w 0x5898                                      |         goto label_35;
                                                                 |     }
    0x00005b78 b 0x5b30                                          |     goto label_33;
                                                                 | label_133:
    0x00005b7a cmp.w sb, 0                                       |     
                                                                 |     if (sb != 0) {
    0x00005b7e bne 0x5bd4                                        |         goto label_137;
                                                                 |     }
                                                                 | label_37:
    0x00005b80 cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x00005b82 beq 0x5c82                                        |         goto label_138;
                                                                 |     }
                                                                 | label_42:
    0x00005b84 mov r0, r5                                        |     r0 = r5;
    0x00005b86 mov r1, r4                                        |     r1 = r4;
    0x00005b88 clz sb, r6                                        |     sb &= r6;
    0x00005b8c mov.w sl, 0                                       |     sl = 0;
    0x00005b90 blx 0x262c                                        |     putc (r0, r1);
    0x00005b94 lsr.w sb, sb, 5                                   |     sb >>= 5;
    0x00005b98 mov r5, r0                                        |     r5 = r0;
                                                                 |     if (r0 != 0) {
    0x00005b9a cbnz r0, 0x5baa                                   |         goto label_139;
                                                                 |     }
    0x00005b9c b 0x5bdc                                          |     goto label_140;
                                                                 |     do {
                                                                 | label_36:
    0x00005b9e mov r0, r5                                        |         r0 = r5;
    0x00005ba0 mov r1, r4                                        |         r1 = r4;
    0x00005ba2 blx 0x26e4                                        |         r0 = fcn_000026e4 ();
    0x00005ba6 mov r5, r0                                        |         r5 = r0;
                                                                 |         if (r0 == 0) {
    0x00005ba8 cbz r0, 0x5bdc                                    |             goto label_140;
                                                                 |         }
                                                                 | label_139:
    0x00005baa add.w sl, sl, 1                                   |         sl++;
    0x00005bae cmp r6, sl                                        |         
    0x00005bb0 ite ne                                            |         
                                                                 |         if (r6 == sl) {
    0x00005bb2 movne r3, sb                                      |             r3 = sb;
                                                                 |         }
                                                                 |         if (r6 != sl) {
    0x00005bb4 orreq r3, sb, 1                                   |             r3 = sb | 1;
                                                                 |         }
    0x00005bb8 cmp r3, 0                                         |         
    0x00005bba beq 0x5b9e                                        |         
                                                                 |     } while (r3 == 0);
    0x00005bbc mov r1, r4                                        |     r1 = r4;
    0x00005bbe mov r0, r5                                        |     r0 = r5;
    0x00005bc0 blx 0x2520                                        |     fcn_00002520 ();
    0x00005bc4 mov r3, r8                                        |     r3 = r8;
    0x00005bc6 mov r1, r0                                        |     r1 = r0;
    0x00005bc8 mov r2, sl                                        |     r2 = sl;
    0x00005bca mov r0, r5                                        |     r0 = r5;
    0x00005bcc str r4, [sp]                                      |     *(sp) = r4;
    0x00005bce bl 0x3d40                                         |     fcn_00003d40 (r0, r1, r2, r3, r4);
    0x00005bd2 b 0x5b9e                                          |     goto label_36;
                                                                 | label_137:
    0x00005bd4 movs r0, 0xa                                      |     r0 = 0xa;
    0x00005bd6 blx 0x24d4                                        |     fcn_000024d4 ();
    0x00005bda b 0x5b80                                          |     goto label_37;
                                                                 | label_140:
    0x00005bdc mov.w sb, 1                                       |     sb = 1;
    0x00005be0 b 0x5a62                                          |     goto label_38;
                                                                 | label_120:
    0x00005be2 mov r1, r7                                        |     r1 = r7;
    0x00005be4 mov r0, r5                                        |     r0 = r5;
    0x00005be6 blx 0x262c                                        |     r0 = putc (r0, r1);
                                                                 |     if (r0 == 0) {
    0x00005bea cbz r0, 0x5c2c                                    |         goto label_141;
                                                                 |     }
    0x00005bec movs r4, 0                                        |     r4 = 0;
    0x00005bee mov r3, r5                                        |     r3 = r5;
    0x00005bf0 clz r6, r8                                        |     r6 &= r8;
    0x00005bf4 mov r5, r4                                        |     r5 = r4;
    0x00005bf6 lsrs r6, r6, 5                                    |     r6 >>= 5;
    0x00005bf8 mov r4, sb                                        |     r4 = sb;
    0x00005bfa mov sb, r7                                        |     sb = r7;
    0x00005bfc mov r7, r3                                        |     r7 = r3;
    0x00005bfe b 0x5c08                                          |     
                                                                 |     while (r3 == 0) {
                                                                 | label_39:
    0x00005c00 mov r1, sb                                        |         r1 = sb;
    0x00005c02 blx 0x26e4                                        |         r0 = fcn_000026e4 ();
                                                                 |         if (r0 == 0) {
    0x00005c06 cbz r0, 0x5c28                                    |             goto label_142;
                                                                 |         }
    0x00005c08 adds r5, 1                                        |         r5++;
    0x00005c0a cmp r8, r5                                        |         
    0x00005c0c ite ne                                            |         
                                                                 |         if (r8 == r5) {
    0x00005c0e movne r3, r6                                      |             r3 = r6;
                                                                 |         }
                                                                 |         if (r8 != r5) {
    0x00005c10 orreq r3, r6, 1                                   |             r3 = r6 | 1;
                                                                 |         }
    0x00005c14 cmp r3, 0                                         |         
    0x00005c16 beq 0x5c00                                        |         
                                                                 |     }
    0x00005c18 mov r3, sl                                        |     r3 = sl;
    0x00005c1a mov r2, r7                                        |     r2 = r7;
    0x00005c1c mov r1, sb                                        |     r1 = sb;
    0x00005c1e str r0, [sp, 0x28]                                |     var_28h = r0;
    0x00005c20 bl 0x444c                                         |     fcn_0000444c (r0, r1, r2, r3);
    0x00005c24 ldr r0, [sp, 0x28]                                |     r0 = var_28h;
    0x00005c26 b 0x5c00                                          |     goto label_39;
                                                                 | label_142:
    0x00005c28 mov r7, sb                                        |     r7 = sb;
    0x00005c2a mov sb, r4                                        |     sb = r4;
                                                                 | label_141:
    0x00005c2c movs r6, 1                                        |     r6 = 1;
    0x00005c2e b 0x5518                                          |     goto label_40;
                                                                 | label_97:
    0x00005c30 ldr r3, [sp, 0x50]                                |     r3 = var_50h;
    0x00005c32 ldr r0, [r3]                                      |     r0 = *(r3);
    0x00005c34 blx 0x24a0                                        |     isoc99_sscanf ();
    0x00005c38 ldr r4, [sp, 0x3c]                                |     r4 = var_3ch;
    0x00005c3a mov r7, r0                                        |     r7 = r0;
    0x00005c3c str r0, [r4]                                      |     *(r4) = r0;
    0x00005c3e cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00005c40 bne.w 0x50b4                                      |         goto label_41;
                                                                 |     }
    0x00005c44 ldr.w r3, [pc, 0x4d0]                             |     r3 = *(0x6118);
    0x00005c48 mov r1, r0                                        |     r1 = r0;
    0x00005c4a ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x00005c4c ldr r0, [r3]                                      |     r0 = *(0x6118);
    0x00005c4e blx 0x2598                                        |     r0 = fcn_00002598 ();
    0x00005c52 adds r7, r0, 1                                    |     r7 = r0 + 1;
                                                                 |     if (r7 != r0) {
    0x00005c54 bne.w 0x5d8e                                      |         goto label_143;
                                                                 |     }
    0x00005c58 ldr r7, [r4]                                      |     r7 = *(r4);
                                                                 | label_43:
    0x00005c5a cmp r7, 0                                         |     
                                                                 |     if (r7 != 0) {
    0x00005c5c bne.w 0x50b4                                      |         goto label_41;
                                                                 |     }
    0x00005c60 ldr r3, [sp, 0x78]                                |     r3 = var_78h;
    0x00005c62 ldr r2, [sp, 0x50]                                |     r2 = var_50h;
    0x00005c64 ldr r3, [r3]                                      |     r3 = *(r3);
    0x00005c66 ldr r5, [r2]                                      |     r5 = *(r2);
    0x00005c68 ldr r4, [r3, 0x14]                                |     r4 = *((r3 + 0x14));
    0x00005c6a blx 0x247c                                        |     r0 = ip6tc_free ();
    0x00005c6e ldr r0, [r0]                                      |     r0 = *(r0);
    0x00005c70 blx 0x22b0                                        |     fcn_000022b0 ();
    0x00005c74 ldr.w r1, [pc, 0x4a4]                             |     
    0x00005c78 mov r3, r0                                        |     r3 = r0;
    0x00005c7a mov r2, r5                                        |     r2 = r5;
    0x00005c7c movs r0, 3                                        |     r0 = 3;
    0x00005c7e add r1, pc                                        |     r1 = 0xbd9e;
    0x00005c80 blx r4                                            |     uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
                                                                 | label_138:
    0x00005c82 add r3, sp, 0xc0                                  |     r3 += var_c0h;
    0x00005c84 mov r2, r4                                        |     r2 = r4;
    0x00005c86 mov r1, r3                                        |     r1 = r3;
    0x00005c88 mov r0, r5                                        |     r0 = r5;
    0x00005c8a str r3, [sp, 0x38]                                |     var_38h = r3;
    0x00005c8c blx 0x25c8                                        |     fcn_000025c8 ();
    0x00005c90 ldr r1, [sp, 0x44]                                |     r1 = var_44h;
    0x00005c92 mov sb, r0                                        |     sb = r0;
    0x00005c94 mov r2, r5                                        |     r2 = r5;
    0x00005c96 movs r0, 1                                        |     r0 = 1;
    0x00005c98 blx 0x2530                                        |     ip6tc_flush_entries ();
    0x00005c9c and r3, r8, 2                                     |     r3 = r8 & 2;
    0x00005ca0 str r3, [sp, 0x28]                                |     var_28h = r3;
    0x00005ca2 cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x00005ca6 beq.w 0x5dfa                                      |         goto label_144;
                                                                 |     }
    0x00005caa ldr.w r1, [pc, 0x474]                             |     
    0x00005cae mov r2, sb                                        |     r2 = sb;
    0x00005cb0 movs r0, 1                                        |     r0 = 1;
    0x00005cb2 add r1, pc                                        |     r1 = 0xbdd8;
    0x00005cb4 blx 0x2530                                        |     ip6tc_flush_entries ();
    0x00005cb8 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x00005cba cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00005cbc beq.w 0x5e32                                      |         goto label_145;
                                                                 |     }
    0x00005cc0 ldr.w r3, [pc, 0x460]                             |     r3 = *(0x6124);
    0x00005cc4 ldr.w sb, [fp, r3]                                |     sb = *((fp + r3));
                                                                 | label_47:
    0x00005cc8 ldr.w r0, [pc, 0x45c]                             |     
    0x00005ccc add r0, pc                                        |     r0 = 0xbdf8;
    0x00005cce blx 0x2344                                        |     ip6tc_next_rule ();
                                                                 |     do {
                                                                 | label_50:
    0x00005cd2 tst.w r8, 0x100                                   |         
                                                                 |         if ((r8 & 0x100) != 0) {
    0x00005cd6 beq 0x5cea                                        |             
    0x00005cd8 ldr.w r2, [pc, 0x450]                             |             
    0x00005cdc movs r0, 1                                        |             r0 = 1;
    0x00005cde ldr.w r1, [pc, 0x450]                             |             
    0x00005ce2 add r2, pc                                        |             r2 = 0xbe12;
    0x00005ce4 add r1, pc                                        |             r1 = 0xbe1a;
    0x00005ce6 blx 0x2530                                        |             ip6tc_flush_entries ();
                                                                 |         }
    0x00005cea ldr r3, [sp, 0x28]                                |         r3 = var_28h;
                                                                 |         if (r3 == 0) {
    0x00005cec cbnz r3, 0x5d18                                   |             
    0x00005cee tst.w r8, 4                                       |             
                                                                 |             if ((r8 & 4) == 0) {
    0x00005cf2 beq.w 0x5e7e                                      |                 goto label_146;
                                                                 |             }
    0x00005cf6 ldr.w sl, [pc, 0x43c]                             |             
    0x00005cfa movs r0, 1                                        |             r0 = 1;
    0x00005cfc ldr.w r2, [pc, 0x438]                             |             
    0x00005d00 add sl, pc                                        |             sl = 0xbe3a;
    0x00005d02 add r2, pc                                        |             r2 = 0xbe3e;
    0x00005d04 mov r1, sl                                        |             r1 = sl;
    0x00005d06 blx 0x2530                                        |             ip6tc_flush_entries ();
    0x00005d0a ldr.w r2, [pc, 0x430]                             |             
    0x00005d0e mov r1, sl                                        |             r1 = sl;
    0x00005d10 movs r0, 1                                        |             r0 = 1;
    0x00005d12 add r2, pc                                        |             r2 = 0xbe54;
    0x00005d14 blx 0x2530                                        |             ip6tc_flush_entries ();
    0x00005d16 invalid                                           |             
                                                                 |         }
                                                                 | label_48:
    0x00005d18 ldrd r2, r1, [sp, 0x48]                           |         __asm ("ldrd r2, r1, [var_4ch]");
    0x00005d1c movs r0, 1                                        |         r0 = 1;
    0x00005d1e blx 0x2530                                        |         ip6tc_flush_entries ();
    0x00005d22 ldr.w r0, [pc, 0x41c]                             |         
    0x00005d26 movs r2, 6                                        |         r2 = 6;
    0x00005d28 ldr.w r3, [sb]                                    |         r3 = *(sb);
    0x00005d2c movs r1, 1                                        |         r1 = 1;
    0x00005d2e add r0, pc                                        |         r0 = 0xbe74;
    0x00005d30 blx 0x22d4                                        |         fcn_000022d4 ();
    0x00005d34 ldr.w r0, [pc, 0x40c]                             |         
    0x00005d38 movs r2, 3                                        |         r2 = 3;
    0x00005d3a ldr.w r3, [sb]                                    |         r3 = *(sb);
    0x00005d3e movs r1, 1                                        |         r1 = 1;
    0x00005d40 add r0, pc                                        |         r0 = 0xbe88;
    0x00005d42 blx 0x22d4                                        |         fcn_000022d4 ();
    0x00005d46 tst.w r8, 0x40                                    |         
                                                                 |         if ((r8 & 0x40) != 0) {
    0x00005d4a beq 0x5d68                                        |             
    0x00005d4c ldr r2, [pc, 0x3f8]                               |             
    0x00005d4e movs r0, 1                                        |             r0 = 1;
    0x00005d50 ldr r1, [pc, 0x3f8]                               |             
    0x00005d52 add r2, pc                                        |             r2 = 0xbe9e;
    0x00005d54 add r1, pc                                        |             r1 = 0xbea4;
    0x00005d56 blx 0x2530                                        |             ip6tc_flush_entries ();
    0x00005d5a ldr r2, [pc, 0x3f4]                               |             
    0x00005d5c movs r0, 1                                        |             r0 = 1;
    0x00005d5e ldr r1, [pc, 0x3f4]                               |             
    0x00005d60 add r2, pc                                        |             r2 = 0xbeb6;
    0x00005d62 add r1, pc                                        |             r1 = 0xbebc;
    0x00005d64 blx 0x2530                                        |             ip6tc_flush_entries ();
                                                                 |         }
    0x00005d68 ldr.w sb, [pc, 0x3ec]                             |         
    0x00005d6c movs r0, 1                                        |         r0 = 1;
    0x00005d6e ldr r2, [pc, 0x3ec]                               |         
    0x00005d70 add sb, pc                                        |         sb = 0xbecc;
    0x00005d72 mov r1, sb                                        |         r1 = sb;
    0x00005d74 add r2, pc                                        |         r2 = 0xbed6;
    0x00005d76 blx 0x2530                                        |         ip6tc_flush_entries ();
    0x00005d7a ldr r2, [pc, 0x3e4]                               |         
    0x00005d7c mov r1, sb                                        |         r1 = sb;
    0x00005d7e movs r0, 1                                        |         r0 = 1;
    0x00005d80 add r2, pc                                        |         r2 = 0xbee6;
    0x00005d82 blx 0x2530                                        |         ip6tc_flush_entries ();
    0x00005d86 movs r0, 0xa                                      |         r0 = 0xa;
    0x00005d88 blx 0x24d4                                        |         fcn_000024d4 ();
    0x00005d8c b 0x5b84                                          |         goto label_42;
                                                                 | label_143:
    0x00005d8e ldr r3, [sp, 0x50]                                |         r3 = var_50h;
    0x00005d90 ldr r0, [r3]                                      |         r0 = *(r3);
    0x00005d92 blx 0x24a0                                        |         isoc99_sscanf ();
    0x00005d96 ldr r3, [sp, 0x3c]                                |         r3 = var_3ch;
    0x00005d98 mov r7, r0                                        |         r7 = r0;
    0x00005d9a str r0, [r3]                                      |         *(r3) = r0;
    0x00005d9c b 0x5c5a                                          |         goto label_43;
                                                                 | label_135:
    0x00005d9e mov r2, r6                                        |         r2 = r6;
    0x00005da0 mov r1, sl                                        |         r1 = sl;
    0x00005da2 movs r0, 1                                        |         r0 = 1;
    0x00005da4 blx 0x2530                                        |         ip6tc_flush_entries ();
    0x00005da8 b 0x5b1c                                          |         goto label_44;
                                                                 | label_116:
    0x00005daa ldr.w r1, [r5, 0xc8]                              |         r1 = var_198h;
    0x00005dae ldr r3, [sp, 0x3c]                                |         r3 = var_3ch;
    0x00005db0 ldr r0, [sp, 0x40]                                |         r0 = s1;
    0x00005db2 and r1, r1, 0x20                                  |         r1 &= 0x20;
    0x00005db6 ldr r2, [r3]                                      |         r2 = *(r3);
    0x00005db8 bl 0x4394                                         |         r0 = fcn_00004394 (r0, r1, r2);
    0x00005dbc mov sb, r0                                        |         sb = r0;
    0x00005dbe b.w 0x5280                                        |         goto label_11;
                                                                 | label_110:
    0x00005dc2 ldrd r3, r0, [sp, 0x3c]                           |         __asm ("ldrd r3, r0, [var_3ch]");
    0x00005dc6 ldr r1, [sp, 0x7c]                                |         r1 = var_7ch;
    0x00005dc8 ldr r2, [r3]                                      |         r2 = *(r3);
    0x00005dca blx 0x20ec                                        |         r0 = iptc_rename_chain ();
    0x00005dce mov sb, r0                                        |         sb = r0;
    0x00005dd0 b.w 0x5280                                        |         goto label_11;
                                                                 | label_104:
    0x00005dd4 movs r7, 0x70                                     |         r7 = 0x70;
    0x00005dd6 adds r0, 0x70                                     |         r0 += 0x70;
    0x00005dd8 blx 0x235c                                        |         xtables_ip6addr_to_anyname ();
    0x00005ddc mov r2, r7                                        |         r2 = r7;
    0x00005dde mov r1, r5                                        |         r1 = r5;
    0x00005de0 mov r4, r0                                        |         r4 = r0;
    0x00005de2 blx 0x21b0                                        |         fcn_000021b0 ();
    0x00005de6 ldr r3, [sp, 0x28]                                |         r3 = var_28h;
    0x00005de8 adds r0, r4, r7                                   |         r0 = r4 + r7;
    0x00005dea strh.w r7, [r4, 0x58]                             |         *((r4 + 0x58)) = r7;
    0x00005dee ldrh r2, [r3]                                     |         r2 = *(r3);
    0x00005df0 adds r3, r2, r7                                   |         r3 = r2 + r7;
    0x00005df2 strh.w r3, [r4, 0x5a]                             |         *((r4 + 0x5a)) = r3;
    0x00005df6 b.w 0x51be                                        |         goto label_45;
                                                                 | label_144:
    0x00005dfa add.w sb, sp, 0xac                                |         sb += var_ach;
    0x00005dfe mov r2, r4                                        |         r2 = r4;
    0x00005e00 mov r1, r5                                        |         r1 = r5;
    0x00005e02 mov r0, sb                                        |         r0 = sb;
    0x00005e04 blx 0x23a4                                        |         r0 = ctype_tolower_loc ();
    0x00005e08 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00005e0a bne 0x5eb2                                        |             goto label_147;
                                                                 |         }
    0x00005e0c ldr r0, [pc, 0x354]                               |         
    0x00005e0e add r0, pc                                        |         r0 = 0xbf76;
    0x00005e10 blx 0x2344                                        |         ip6tc_next_rule ();
    0x00005e14 ldr r3, [pc, 0x30c]                               |         r3 = *(0x6124);
    0x00005e16 ldr.w sb, [fp, r3]                                |         sb = *((fp + r3));
    0x00005e1a b 0x5cd2                                          |         
                                                                 |     } while (1);
                                                                 | label_136:
    0x00005e1c ldrd r2, r3, [sp, 0xc8]                           |     __asm ("ldrd r2, r3, [var_c8h]");
    0x00005e20 movs r0, 1                                        |     r0 = 1;
    0x00005e22 ldr r1, [sp, 0x44]                                |     r1 = var_44h;
    0x00005e24 strd r2, r3, [sp]                                 |     __asm ("strd r2, r3, [sp]");
    0x00005e28 ldrd r2, r3, [sp, 0xc0]                           |     __asm ("ldrd r2, r3, [var_c0h]");
    0x00005e2c blx 0x2530                                        |     ip6tc_flush_entries ();
    0x00005e30 b 0x5b16                                          |     goto label_46;
                                                                 | label_145:
    0x00005e32 ldr r3, [pc, 0x2f0]                               |     r3 = *(0x6126);
    0x00005e34 orr sl, r8, 0x10                                  |     sl = r8 | 0x10;
    0x00005e38 movs r0, 0x20                                     |     r0 = 0x20;
    0x00005e3a ldr.w sb, [fp, r3]                                |     sb = *((fp + r3));
    0x00005e3e ldr.w r1, [sb]                                    |     r1 = *(sb);
    0x00005e42 blx 0x2620                                        |     ip6tc_init ();
    0x00005e46 ldrd r0, r1, [sp, 0xc0]                           |     __asm ("ldrd r0, r1, [var_c0h]");
    0x00005e4a mov r2, sl                                        |     r2 = sl;
    0x00005e4c blx 0x26d8                                        |     fcn_000026d8 ();
    0x00005e50 ldr r0, [pc, 0x314]                               |     
    0x00005e52 movs r1, 1                                        |     r1 = 1;
    0x00005e54 ldr.w r3, [sb]                                    |     r3 = *(sb);
    0x00005e58 movs r2, 9                                        |     r2 = 9;
    0x00005e5a add r0, pc                                        |     r0 = 0xbfc6;
    0x00005e5c blx 0x22d4                                        |     fcn_000022d4 ();
    0x00005e60 ldr r3, [sp, 0x38]                                |     r3 = var_38h;
    0x00005e62 mov r2, sl                                        |     r2 = sl;
    0x00005e64 ldrd r0, r1, [r3, 8]                              |     __asm ("ldrd r0, r1, [r3, 8]");
    0x00005e68 blx 0x26d8                                        |     fcn_000026d8 ();
    0x00005e6c ldr r0, [pc, 0x2fc]                               |     
    0x00005e6e movs r2, 5                                        |     r2 = 5;
    0x00005e70 ldr.w r3, [sb]                                    |     r3 = *(sb);
    0x00005e74 movs r1, 1                                        |     r1 = 1;
    0x00005e76 add r0, pc                                        |     r0 = 0xbfe6;
    0x00005e78 blx 0x22d4                                        |     fcn_000022d4 ();
    0x00005e7c b 0x5cc8                                          |     goto label_47;
                                                                 | label_146:
    0x00005e7e ldr r2, [pc, 0x2f0]                               |     
    0x00005e80 movs r0, 1                                        |     r0 = 1;
    0x00005e82 ldr r1, [pc, 0x2f0]                               |     
    0x00005e84 add r2, pc                                        |     r2 = 0xbffa;
    0x00005e86 add r1, pc                                        |     r1 = 0xc000;
    0x00005e88 blx 0x2530                                        |     ip6tc_flush_entries ();
    0x00005e8c ldr r2, [pc, 0x2e8]                               |     
    0x00005e8e movs r0, 1                                        |     r0 = 1;
    0x00005e90 ldr r1, [pc, 0x2e8]                               |     
    0x00005e92 add r2, pc                                        |     r2 = 0xc00e;
    0x00005e94 add r1, pc                                        |     r1 = 0xc014;
    0x00005e96 blx 0x2530                                        |     ip6tc_flush_entries ();
    0x00005e9a b 0x5d18                                          |     goto label_48;
                                                                 | label_130:
    0x00005e9c ldrh.w r1, [r4, 0x58]                             |     r1 = *((r4 + 0x58));
    0x00005ea0 movs r3, 0x5b                                     |     r3 = 0x5b;
    0x00005ea2 movs r2, 0                                        |     r2 = 0;
    0x00005ea4 mov r0, r4                                        |     r0 = r4;
    0x00005ea6 str r5, [sp]                                      |     *(sp) = r5;
    0x00005ea8 add r1, r4                                        |     r1 += r4;
    0x00005eaa adds r1, 2                                        |     r1 += 2;
    0x00005eac bl 0x3d40                                         |     fcn_00003d40 (r0, r1, r2, r3, r4);
    0x00005eb0 b 0x580c                                          |     goto label_49;
                                                                 | label_147:
    0x00005eb2 ldr r1, [pc, 0x2cc]                               |     
    0x00005eb4 movs r0, 1                                        |     r0 = 1;
    0x00005eb6 ldr.w r2, [sb]                                    |     r2 = *(sb);
    0x00005eba add r1, pc                                        |     r1 = 0xc040;
    0x00005ebc blx 0x2530                                        |     ip6tc_flush_entries ();
    0x00005ec0 ldr r3, [pc, 0x260]                               |     r3 = *(0x6124);
    0x00005ec2 ldr.w sb, [fp, r3]                                |     sb = *((fp + r3));
    0x00005ec6 b 0x5cd2                                          |     goto label_50;
                                                                 | label_119:
    0x00005ec8 ldr r2, [sp, 0x30]                                |     r2 = var_30h;
    0x00005eca movs r3, 2                                        |     r3 = 2;
    0x00005ecc str r3, [r2]                                      |     *(r2) = r3;
    0x00005ece b.w 0x5280                                        |     goto label_11;
                                                                 | label_128:
    0x00005ed2 mov.w sb, 1                                       |     sb = 1;
    0x00005ed6 b.w 0x5280                                        |     goto label_11;
                                                                 | label_79:
    0x00005eda ldr r3, [sp, 0x78]                                |     r3 = var_78h;
    0x00005edc mov r2, sb                                        |     r2 = sb;
    0x00005ede ldr r1, [pc, 0x2a4]                               |     
    0x00005ee0 movs r0, 2                                        |     r0 = 2;
    0x00005ee2 ldr r3, [r3]                                      |     r3 = *(r3);
    0x00005ee4 add r1, pc                                        |     r1 = 0xc06e;
    0x00005ee6 ldr r3, [r3, 0x14]                                |     r3 = *((r3 + 0x14));
    0x00005ee8 blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
                                                                 | label_127:
    0x00005eea ldr.w r4, [r5, 0xe8]                              |     r4 = *((r5 + 0xe8));
    0x00005eee cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x00005ef0 beq.w 0x56dc                                      |         goto label_51;
                                                                 |     }
    0x00005ef4 mov r0, r4                                        |     r0 = r4;
    0x00005ef6 add r2, sp, 0x19c                                 |     r2 += var_19ch;
    0x00005ef8 movs r1, 2                                        |     r1 = 2;
    0x00005efa blx 0x25ec                                        |     fcn_000025ec ();
    0x00005efe ldr.w r4, [r5, 0xcc]                              |     r4 = *((r5 + 0xcc));
    0x00005f02 b.w 0x56dc                                        |     goto label_51;
                                                                 | label_126:
    0x00005f06 ldr r2, [sp, 0x28]                                |     r2 = var_28h;
    0x00005f08 ldr r2, [r2]                                      |     r2 = *(r2);
    0x00005f0a ldr.w r2, [r4, r2, lsl 2]                         |     offset_11 = r2 << 2;
                                                                 |     r2 = *((r4 + offset_11));
    0x00005f0e str r2, [r3]                                      |     *(r3) = r2;
    0x00005f10 b.w 0x56d2                                        |     goto label_52;
                                                                 | label_83:
    0x00005f14 ldr r0, [pc, 0x1c8]                               |     
    0x00005f16 movs r1, 1                                        |     r1 = 1;
    0x00005f18 ldr r2, [pc, 0x26c]                               |     
    0x00005f1a ldr r0, [r6, r0]                                  |     r0 = *((r6 + r0));
    0x00005f1c add r2, pc                                        |     r2 = 0xc0a8;
    0x00005f1e ldr r0, [r0]                                      |     r0 = *(0x60e0);
    0x00005f20 blx 0x2570                                        |     fcn_00002570 ();
    0x00005f24 bl 0x4190                                         |     fcn_00004190 ();
                                                                 | label_71:
    0x00005f28 ldr r3, [sp, 0x78]                                |     r3 = var_78h;
    0x00005f2a movs r0, 2                                        |     r0 = 2;
    0x00005f2c ldr r1, [pc, 0x25c]                               |     
    0x00005f2e ldr r3, [r3]                                      |     r3 = *(r3);
    0x00005f30 add r1, pc                                        |     r1 = 0xc0c0;
    0x00005f32 ldr r3, [r3, 0x14]                                |     r3 = *((r3 + 0x14));
    0x00005f34 blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
                                                                 | label_67:
    0x00005f36 ldr r3, [sp, 0x78]                                |     r3 = var_78h;
    0x00005f38 mov.w r0, 0x400                                   |     r0 = 0x400;
    0x00005f3c ldr r3, [r3]                                      |     r3 = *(r3);
    0x00005f3e ldr r4, [r3, 0x14]                                |     r4 = *((r3 + 0x14));
    0x00005f40 bl 0x9b94                                         |     fcn_00009b94 (r0);
    0x00005f44 ldr r1, [pc, 0x248]                               |     
    0x00005f46 mov r2, r0                                        |     r2 = r0;
    0x00005f48 movs r0, 2                                        |     r0 = 2;
    0x00005f4a add r1, pc                                        |     r1 = 0xc0de;
    0x00005f4c blx r4                                            |     uint32_t (*r4)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
                                                                 | label_68:
    0x00005f4e ldr r3, [sp, 0x78]                                |     r3 = var_78h;
    0x00005f50 mov.w r0, 0x400                                   |     r0 = 0x400;
    0x00005f54 ldr r3, [r3]                                      |     r3 = *(r3);
    0x00005f56 ldr r4, [r3, 0x14]                                |     r4 = *((r3 + 0x14));
    0x00005f58 bl 0x9b94                                         |     fcn_00009b94 (r0);
    0x00005f5c ldr r1, [pc, 0x234]                               |     
    0x00005f5e mov r2, r0                                        |     r2 = r0;
    0x00005f60 movs r0, 2                                        |     r0 = 2;
    0x00005f62 add r1, pc                                        |     r1 = 0xc0fa;
    0x00005f64 blx r4                                            |     uint32_t (*r4)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
                                                                 | label_65:
    0x00005f66 ldr r3, [sp, 0x78]                                |     r3 = var_78h;
    0x00005f68 movs r0, 2                                        |     r0 = 2;
    0x00005f6a ldr r1, [pc, 0x22c]                               |     
    0x00005f6c ldr r3, [r3]                                      |     r3 = *(r3);
    0x00005f6e add r1, pc                                        |     r1 = 0xc10c;
    0x00005f70 ldr r3, [r3, 0x14]                                |     r3 = *((r3 + 0x14));
    0x00005f72 blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
                                                                 | label_81:
    0x00005f74 ldr r3, [pc, 0x168]                               |     
    0x00005f76 movs r2, 0x26                                     |     r2 = 0x26;
    0x00005f78 ldr r0, [pc, 0x220]                               |     
    0x00005f7a movs r1, 1                                        |     r1 = 1;
    0x00005f7c ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x00005f7e add r0, pc                                        |     r0 = 0xc11e;
    0x00005f80 ldr r3, [r3]                                      |     r3 = *(0x60e0);
    0x00005f82 blx 0x22d4                                        |     fcn_000022d4 ();
    0x00005f86 bl 0x4190                                         |     fcn_00004190 ();
                                                                 | label_82:
    0x00005f8a blx 0x2250                                        |     fcn_00002250 ();
                                                                 | label_95:
    0x00005f8e ldr r3, [sp, 0x78]                                |     r3 = var_78h;
    0x00005f90 movs r0, 2                                        |     r0 = 2;
    0x00005f92 ldr r1, [pc, 0x20c]                               |     
    0x00005f94 ldr r3, [r3]                                      |     r3 = *(r3);
    0x00005f96 add r1, pc                                        |     r1 = 0xc13c;
    0x00005f98 ldr r3, [r3, 0x14]                                |     r3 = *((r3 + 0x14));
    0x00005f9a blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
                                                                 | label_101:
    0x00005f9c ldr r3, [sp, 0x78]                                |     r3 = var_78h;
    0x00005f9e movs r0, 0x80                                     |     r0 = 0x80;
    0x00005fa0 ldr r3, [r3]                                      |     r3 = *(r3);
    0x00005fa2 ldr r4, [r3, 0x14]                                |     r4 = *((r3 + 0x14));
    0x00005fa4 bl 0x9b94                                         |     fcn_00009b94 (r0);
    0x00005fa8 ldr r1, [pc, 0x1f8]                               |     
    0x00005faa mov r2, r0                                        |     r2 = r0;
    0x00005fac ldr r3, [sp, 0x40]                                |     r3 = s1;
    0x00005fae movs r0, 2                                        |     r0 = 2;
    0x00005fb0 add r1, pc                                        |     r1 = 0xc158;
    0x00005fb2 blx r4                                            |     uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
                                                                 | label_99:
    0x00005fb4 ldr r3, [sp, 0x78]                                |     r3 = var_78h;
    0x00005fb6 mov.w r0, 0x100                                   |     r0 = 0x100;
    0x00005fba ldr r3, [r3]                                      |     r3 = *(r3);
    0x00005fbc ldr r4, [r3, 0x14]                                |     r4 = *((r3 + 0x14));
    0x00005fbe bl 0x9b94                                         |     fcn_00009b94 (r0);
    0x00005fc2 ldr r1, [pc, 0x1e4]                               |     
    0x00005fc4 mov r2, r0                                        |     r2 = r0;
    0x00005fc6 ldr r3, [sp, 0x40]                                |     r3 = s1;
    0x00005fc8 movs r0, 2                                        |     r0 = 2;
    0x00005fca add r1, pc                                        |     r1 = 0xc178;
    0x00005fcc blx r4                                            |     uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
                                                                 | label_123:
    0x00005fce ldr r3, [sp, 0x78]                                |     r3 = var_78h;
    0x00005fd0 mov r2, r0                                        |     r2 = r0;
    0x00005fd2 ldr r1, [pc, 0x1d8]                               |     
    0x00005fd4 movs r0, 2                                        |     r0 = 2;
    0x00005fd6 ldr r3, [r3]                                      |     r3 = *(r3);
    0x00005fd8 add r1, pc                                        |     r1 = 0xc18a;
    0x00005fda ldr r3, [r3, 0x14]                                |     r3 = *((r3 + 0x14));
    0x00005fdc blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
                                                                 | label_86:
    0x00005fde ldr r3, [sp, 0x78]                                |     r3 = var_78h;
    0x00005fe0 movs r0, 2                                        |     r0 = 2;
    0x00005fe2 ldr r1, [pc, 0x1cc]                               |     
    0x00005fe4 ldr r3, [r3]                                      |     r3 = *(r3);
    0x00005fe6 add r1, pc                                        |     r1 = 0xc19c;
    0x00005fe8 ldr r3, [r3, 0x14]                                |     r3 = *((r3 + 0x14));
    0x00005fea blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
                                                                 | label_94:
    0x00005fec ldr r3, [sp, 0x78]                                |     r3 = var_78h;
    0x00005fee movs r0, 2                                        |     r0 = 2;
    0x00005ff0 ldr r1, [pc, 0x1c0]                               |     
    0x00005ff2 ldr r3, [r3]                                      |     r3 = *(r3);
    0x00005ff4 add r1, pc                                        |     r1 = 0xc1ac;
    0x00005ff6 ldr r3, [r3, 0x14]                                |     r3 = *((r3 + 0x14));
    0x00005ff8 blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
                                                                 | label_90:
    0x00005ffa ldr r3, [sp, 0x78]                                |     r3 = var_78h;
    0x00005ffc movs r0, 2                                        |     r0 = 2;
    0x00005ffe ldr r1, [pc, 0x1b8]                               |     
    0x00006000 ldr r3, [r3]                                      |     r3 = *(r3);
    0x00006002 add r1, pc                                        |     r1 = 0xc1c0;
    0x00006004 ldr r3, [r3, 0x14]                                |     r3 = *((r3 + 0x14));
    0x00006006 blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
                                                                 | label_91:
    0x00006008 ldr r3, [sp, 0x78]                                |     r3 = var_78h;
    0x0000600a movs r0, 2                                        |     r0 = 2;
    0x0000600c ldr r1, [pc, 0x1ac]                               |     
    0x0000600e ldr r3, [r3]                                      |     r3 = *(r3);
    0x00006010 add r1, pc                                        |     r1 = 0xc1d0;
    0x00006012 ldr r3, [r3, 0x14]                                |     r3 = *((r3 + 0x14));
    0x00006014 blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
                                                                 | label_61:
    0x00006016 ldr r3, [sp, 0x78]                                |     r3 = var_78h;
    0x00006018 movs r0, 2                                        |     r0 = 2;
    0x0000601a ldr r1, [pc, 0x1a4]                               |     
    0x0000601c ldr r3, [r3]                                      |     r3 = *(r3);
    0x0000601e add r1, pc                                        |     r1 = "\nThe \"nat\" table is not intended for filtering, the use of DROP is therefore inhibited.\n\n";
    0x00006020 ldr r3, [r3, 0x14]                                |     r3 = *((r3 + 0x14));
    0x00006022 blx r3                                            |     uint32_t (*r3)(uint32_t, char*, uint32_t) (r0, "\nThe \"nat\" table is not intended for filtering, the use of DROP is therefore inhibited.\n\n", r3);
                                                                 | label_62:
    0x00006024 ldr r3, [pc, 0x19c]                               |     r3 = *(0x61c4);
    0x00006026 movs r0, 2                                        |     r0 = 2;
    0x00006028 ldr r2, [sp, 0x78]                                |     r2 = var_78h;
    0x0000602a ldr r1, [pc, 0x19c]                               |     
    0x0000602c ldr r5, [r6, r3]                                  |     r5 = *((r6 + r3));
    0x0000602e ldr r2, [r2]                                      |     r2 = *(r2);
    0x00006030 add r1, pc                                        |     r1 = 0xc1fe;
    0x00006032 ldr r4, [r2, 0x14]                                |     r4 = *((r2 + 0x14));
    0x00006034 ldr r3, [r2, 4]                                   |     r3 = *((r2 + 4));
    0x00006036 ldr r2, [r5]                                      |     r2 = *(r5);
    0x00006038 blx r4                                            |     uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
                                                                 | label_74:
    0x0000603a ldr r3, [sp, 0x78]                                |     r3 = var_78h;
    0x0000603c mov.w r0, 0x400                                   |     r0 = 0x400;
    0x00006040 ldr r3, [r3]                                      |     r3 = *(r3);
    0x00006042 ldr r4, [r3, 0x14]                                |     r4 = *((r3 + 0x14));
    0x00006044 bl 0x99c4                                         |     fcn_000099c4 (r0);
    0x00006048 ldr r1, [pc, 0x180]                               |     
    0x0000604a mov r2, r0                                        |     r2 = r0;
    0x0000604c movs r0, 2                                        |     r0 = 2;
    0x0000604e add r1, pc                                        |     r1 = 0xc21e;
    0x00006050 blx r4                                            |     uint32_t (*r4)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
                                                                 | label_75:
    0x00006052 ldr r3, [sp, 0x78]                                |     r3 = var_78h;
    0x00006054 mov r2, sb                                        |     r2 = sb;
    0x00006056 ldr r1, [pc, 0x178]                               |     
    0x00006058 movs r0, 2                                        |     r0 = 2;
    0x0000605a ldr r4, [r3]                                      |     r4 = *(r3);
    0x0000605c movs r3, 0x1d                                     |     r3 = 0x1d;
    0x0000605e add r1, pc                                        |     r1 = 0xc234;
    0x00006060 ldr r4, [r4, 0x14]                                |     r4 = *((r4 + 0x14));
    0x00006062 blx r4                                            |     uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
                                                                 | label_59:
    0x00006064 ldr r3, [sp, 0x78]                                |     r3 = var_78h;
    0x00006066 movs r0, 2                                        |     r0 = 2;
    0x00006068 ldr r1, [pc, 0x168]                               |     
    0x0000606a ldr r3, [r3]                                      |     r3 = *(r3);
    0x0000606c add r1, pc                                        |     r1 = 0xc244;
    0x0000606e ldr r3, [r3, 0x14]                                |     r3 = *((r3 + 0x14));
    0x00006070 blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
                                                                 | label_84:
    0x00006072 ldr r3, [sp, 0x78]                                |     r3 = var_78h;
    0x00006074 movs r0, 2                                        |     r0 = 2;
    0x00006076 ldr r1, [pc, 0x160]                               |     
    0x00006078 ldr r3, [r3]                                      |     r3 = *(r3);
    0x0000607a add r1, pc                                        |     r1 = 0xc258;
    0x0000607c ldr r3, [r3, 0x14]                                |     r3 = *((r3 + 0x14));
    0x0000607e blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
                                                                 | label_64:
    0x00006080 ldr r3, [sp, 0x78]                                |     r3 = var_78h;
    0x00006082 movs r0, 2                                        |     r0 = 2;
    0x00006084 ldr r1, [pc, 0x154]                               |     
    0x00006086 ldr r3, [r3]                                      |     r3 = *(r3);
    0x00006088 add r1, pc                                        |     r1 = "no command specified";
    0x0000608a ldr r3, [r3, 0x14]                                |     r3 = *((r3 + 0x14));
    0x0000608c blx r3                                            |     uint32_t (*r3)(uint32_t, char*, uint32_t) (r0, "no command specified", r3);
                                                                 | label_85:
    0x0000608e ldr r3, [sp, 0x78]                                |     r3 = var_78h;
    0x00006090 movs r0, 2                                        |     r0 = 2;
    0x00006092 ldr r1, [pc, 0x14c]                               |     
    0x00006094 ldr r3, [r3]                                      |     r3 = *(r3);
    0x00006096 add r1, pc                                        |     r1 = 0xc27c;
    0x00006098 ldr r3, [r3, 0x14]                                |     r3 = *((r3 + 0x14));
    0x0000609a blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
                                                                 | label_89:
    0x0000609c ldr r3, [sp, 0x78]                                |     r3 = var_78h;
    0x0000609e movs r0, 2                                        |     r0 = 2;
    0x000060a0 ldr r1, [pc, 0x140]                               |     
    0x000060a2 ldr r3, [r3]                                      |     r3 = *(r3);
    0x000060a4 add r1, pc                                        |     r1 = 0xc28c;
    0x000060a6 ldr r3, [r3, 0x14]                                |     r3 = *((r3 + 0x14));
    0x000060a8 blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
                                                                 | label_76:
    0x000060aa ldr r2, [sp, 0x78]                                |     r2 = var_78h;
    0x000060ac movs r0, 2                                        |     r0 = 2;
    0x000060ae ldr r1, [pc, 0x138]                               |     
    0x000060b0 ldr r4, [r2]                                      |     r4 = *(r2);
    0x000060b2 mov r2, r3                                        |     r2 = r3;
    0x000060b4 add r1, pc                                        |     r1 = 0xc2a2;
    0x000060b6 ldr r3, [r4, 0x14]                                |     r3 = *((r4 + 0x14));
    0x000060b8 blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
                                                                 | label_77:
    0x000060ba ldr r3, [sp, 0x78]                                |     r3 = var_78h;
    0x000060bc movs r0, 2                                        |     r0 = 2;
    0x000060be ldr r1, [pc, 0x12c]                               |     
    0x000060c0 ldr r3, [r3]                                      |     r3 = *(r3);
    0x000060c2 add r1, pc                                        |     r1 = 0xc2b4;
    0x000060c4 ldr r3, [r3, 0x14]                                |     r3 = *((r3 + 0x14));
    0x000060c6 blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
                                                                 | label_80:
    0x000060c8 ldr r3, [sp, 0x78]                                |     r3 = var_78h;
    0x000060ca mov.w r0, 0x800                                   |     r0 = 0x800;
    0x000060ce ldr r3, [r3]                                      |     r3 = *(r3);
    0x000060d0 ldr r4, [r3, 0x14]                                |     r4 = *((r3 + 0x14));
    0x000060d2 bl 0x99c4                                         |     fcn_000099c4 (r0);
    0x000060d6 ldr r1, [pc, 0x118]                               |     
    0x000060d8 mov r2, r0                                        |     r2 = r0;
    0x000060da movs r0, 2                                        |     r0 = 2;
    0x000060dc add r1, pc                                        |     r1 = 0xc2d2;
    0x000060de blx r4                                            |     uint32_t (*r4)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
    0x000060e0 lsls r0, r2, 9                                    |     r0 = r2 << 9;
    0x000060e2 movs r0, r0                                       |     
    0x000060e4 ldr r2, [r7, 0x58]                                |     r2 = *((r7 + 0x58));
    0x000060e6 movs r0, r0                                       |     
    0x000060e8 strh r4, [r4, 0x20]                               |     *((r4 + 0x20)) = r4;
    0x000060ea movs r0, r0                                       |     
    0x000060ec ldr r0, [r2, 0x1c]                                |     r0 = *((r2 + 0x1c));
    0x000060ee movs r0, r0                                       |     
    0x000060f0 lsls r4, r7, 9                                    |     r4 = r7 << 9;
    0x000060f2 movs r0, r0                                       |     
    0x000060f4 ldr r1, [sp, 0xe8]                                |     r1 = var_e8h;
    0x000060f6 movs r1, r0                                       |     r1 = r0;
    0x000060f8 ldrb r4, [r3, r6]                                 |     r4 = *((r3 + r6));
    0x000060fa movs r0, r0                                       |     
    0x000060fc ldrsh r2, [r6, r4]                                |     r2 = *((r6 + r4));
    0x000060fe movs r0, r0                                       |     
    0x00006100 ldr r6, [r2, 0x18]                                |     r6 = *((r2 + 0x18));
    0x00006102 movs r0, r0                                       |     
    0x00006104 ldr r2, [r1, 0x20]                                |     r2 = *(0xc2f2);
    0x00006106 movs r0, r0                                       |     
    0x00006108 ldrsb r2, [r5, r2]                                |     r2 = *((r5 + r2));
    0x0000610a movs r0, r0                                       |     
    0x0000610c ldr r4, [r0, 0x1c]                                |     r4 = *((r0 + 0x1c));
    0x0000610e movs r0, r0                                       |     
    0x00006110 ldr r4, [r1, 0x1c]                                |     r4 = *(0xc2ee);
    0x00006112 movs r0, r0                                       |     
    0x00006114 ldr r2, [r4, r0]                                  |     r2 = *(0xc2ee);
    0x00006116 movs r0, r0                                       |     
    0x00006118 lsls r0, r0, 0xa                                  |     r0 <<= 0xa;
    0x0000611a movs r0, r0                                       |     
    0x0000611c str r2, [r2, 0x68]                                |     *((r2 + 0x68)) = r2;
    0x0000611e movs r0, r0                                       |     
    0x00006120 str r2, [r3, 0x70]                                |     *((r3 + 0x70)) = r2;
    0x00006122 movs r0, r0                                       |     
    0x00006124 lsls r0, r4, 9                                    |     r0 = r4 << 9;
    0x00006126 movs r0, r0                                       |     
    0x00006128 ldrsb r4, [r6, r3]                                |     r4 = *((r6 + r3));
    0x0000612a movs r0, r0                                       |     
    0x0000612c str r6, [r6, 0x70]                                |     *((r6 + 0x70)) = r6;
    0x0000612e movs r0, r0                                       |     
    0x00006130 str r0, [r7, 0x70]                                |     *((r7 + 0x70)) = r0;
    0x00006132 movs r0, r0                                       |     
    0x00006134 str r4, [r5, 0x70]                                |     var_70h_2 = r4;
    0x00006136 movs r0, r0                                       |     
    0x00006138 str r2, [r4, 0x70]                                |     *((r4 + 0x70)) = r2;
    0x0000613a movs r0, r0                                       |     
    0x0000613c str r2, [r2, 0x6c]                                |     *((r2 + 0x6c)) = r2;
    0x0000613e movs r0, r0                                       |     
    0x00006140 str r6, [r3, 0x70]                                |     *((r3 + 0x70)) = r6;
    0x00006142 movs r0, r0                                       |     
    0x00006144 str r4, [r2, 0x70]                                |     *((r2 + 0x70)) = r4;
    0x00006146 movs r0, r0                                       |     
    0x00006148 str r6, [r0, 0x70]                                |     *((r0 + 0x70)) = r6;
    0x0000614a movs r0, r0                                       |     
    0x0000614c str r0, [r1, 0x70]                                |     *((r1 + 0x70)) = r0;
    0x0000614e movs r0, r0                                       |     
    0x00006150 str r4, [r0, 0x70]                                |     *((r0 + 0x70)) = r4;
    0x00006152 movs r0, r0                                       |     
    0x00006154 str r6, [r0, 0x70]                                |     *((r0 + 0x70)) = r6;
    0x00006156 movs r0, r0                                       |     
    0x00006158 str r0, [r1, 0x70]                                |     *((r1 + 0x70)) = r0;
    0x0000615a movs r0, r0                                       |     
    0x0000615c str r4, [r7, 0x6c]                                |     *((r7 + 0x6c)) = r4;
    0x0000615e movs r0, r0                                       |     
    0x00006160 str r0, [r0, 0x70]                                |     *((r0 + 0x70)) = r0;
    0x00006162 movs r0, r0                                       |     
    0x00006164 str r6, [r3, 0x5c]                                |     *((r3 + 0x5c)) = r6;
    0x00006166 movs r0, r0                                       |     
    0x00006168 str r6, [r7, 0x54]                                |     *((r7 + 0x54)) = r6;
    0x0000616a movs r0, r0                                       |     
    0x0000616c str r6, [r5, 0x54]                                |     var_54h_2 = r6;
    0x0000616e movs r0, r0                                       |     
    0x00006170 str r0, [r4, 0x58]                                |     *((r4 + 0x58)) = r0;
    0x00006172 movs r0, r0                                       |     
    0x00006174 str r6, [r5, 0x58]                                |     var_58h_2 = r6;
    0x00006176 movs r0, r0                                       |     
    0x00006178 str r2, [r2, 0x54]                                |     *((r2 + 0x54)) = r2;
    0x0000617a movs r0, r0                                       |     
    0x0000617c str r0, [r5, 0x58]                                |     var_58h_2 = r0;
    0x0000617e movs r0, r0                                       |     
    0x00006180 str r2, [r1, 0x54]                                |     *((r1 + 0x54)) = r2;
    0x00006182 movs r0, r0                                       |     
    0x00006184 strb r0, [r7, r4]                                 |     *((r7 + r4)) = r0;
    0x00006186 movs r0, r0                                       |     
    0x00006188 str r0, [r6, 0x20]                                |     *((r6 + 0x20)) = r0;
    0x0000618a movs r0, r0                                       |     
    0x0000618c str r0, [r7, 8]                                   |     *((r7 + 8)) = r0;
    0x0000618e movs r0, r0                                       |     
    0x00006190 str r6, [r6, 0x14]                                |     *((r6 + 0x14)) = r6;
    0x00006192 movs r0, r0                                       |     
    0x00006194 str r6, [r7, 0x14]                                |     *((r7 + 0x14)) = r6;
    0x00006196 movs r0, r0                                       |     
    0x00006198 str r2, [r4]                                      |     *(r4) = r2;
    0x0000619a movs r0, r0                                       |     
    0x0000619c str r2, [r0, 0x18]                                |     *((r0 + 0x18)) = r2;
    0x0000619e movs r0, r0                                       |     
    0x000061a0 str r6, [r0, 0x34]                                |     *((r0 + 0x34)) = r6;
    0x000061a2 movs r0, r0                                       |     
    0x000061a4 str r0, [r4, 0x38]                                |     *((r4 + 0x38)) = r0;
    0x000061a6 movs r0, r0                                       |     
    0x000061a8 str r6, [r0, 0x38]                                |     *((r0 + 0x38)) = r6;
    0x000061aa movs r0, r0                                       |     
    0x000061ac str r4, [r1, 0x3c]                                |     *((r1 + 0x3c)) = r4;
    0x000061ae movs r0, r0                                       |     
    0x000061b0 str r2, [r7, 0x1c]                                |     *((r7 + 0x1c)) = r2;
    0x000061b2 movs r0, r0                                       |     
    0x000061b4 str r0, [r5, 0x28]                                |     var_28h_2 = r0;
    0x000061b6 movs r0, r0                                       |     
    0x000061b8 str r2, [r4, 0x24]                                |     *((r4 + 0x24)) = r2;
    0x000061ba movs r0, r0                                       |     
    0x000061bc str r4, [r5, 0x24]                                |     var_24h = r4;
    0x000061be movs r0, r0                                       |     
    0x000061c0 ldrsh r6, [r6, r7]                                |     r6 = *((r6 + r7));
    0x000061c2 movs r0, r0                                       |     
    0x000061c4 lsls r0, r5, 9                                    |     r0 = r5 << 9;
    0x000061c6 movs r0, r0                                       |     
    0x000061c8 str r0, [r1]                                      |     *(r1) = r0;
    0x000061ca movs r0, r0                                       |     
    0x000061cc strb r6, [r2, r0]                                 |     *((r2 + r0)) = r6;
    0x000061ce movs r0, r0                                       |     
    0x000061d0 strh r2, [r6, r4]                                 |     *((r6 + r4)) = r2;
    0x000061d2 movs r0, r0                                       |     
    0x000061d4 ldrsh r0, [r2, r5]                                |     r0 = *((r2 + r5));
    0x000061d6 movs r0, r0                                       |     
    0x000061d8 str r6, [r5, 8]                                   |     var_8h = r6;
    0x000061da movs r0, r0                                       |     
    0x000061dc ldrsh r0, [r1, r4]                                |     r0 = *((r1 + r4));
    0x000061de movs r0, r0                                       |     
    0x000061e0 str r6, [r2, 0x10]                                |     *((r2 + 0x10)) = r6;
    0x000061e2 movs r0, r0                                       |     
    0x000061e4 str r0, [r3, 0x18]                                |     *((r3 + 0x18)) = r0;
    0x000061e6 movs r0, r0                                       |     
    0x000061e8 strh r0, [r2, r4]                                 |     *((r2 + r4)) = r0;
    0x000061ea movs r0, r0                                       |     
    0x000061ec strh r6, [r5, r4]                                 |     *((r5 + r4)) = r6;
    0x000061ee movs r0, r0                                       |     
    0x000061f0 strh r0, [r3, r5]                                 |     *((r3 + r5)) = r0;
    0x000061f2 movs r0, r0                                       |     
    0x000061f4 push.w {r4, r5, r6, r7, r8, lr}                   |     
    0x000061f8 sub sp, 0x18                                      |     
    0x000061fa ldr r6, [pc, 0xd0]                                |     
    0x000061fc movs r7, 0                                        |     r7 = 0;
    0x000061fe mov r8, r1                                        |     r8 = r1;
    0x00006200 movs r1, 0xa                                      |     r1 = 0xa;
    0x00006202 ldr r4, [pc, 0xcc]                                |     r4 = *(0x62d2);
    0x00006204 add r6, pc                                        |     r6 = 0xc4d6;
    0x00006206 ldr r5, [pc, 0xcc]                                |     
    0x00006208 ldr r2, [pc, 0xcc]                                |     
    0x0000620a ldr r4, [r6, r4]                                  |     
    0x0000620c mov r6, r0                                        |     r6 = r0;
    0x0000620e ldr r3, [pc, 0xcc]                                |     r3 = *(0x62de);
    0x00006210 add r5, pc                                        |     r5 = 0xc4ea;
    0x00006212 add r2, pc                                        |     r2 = 0xc4ee;
    0x00006214 ldr r4, [r4]                                      |     r4 = *(0xc4d6);
    0x00006216 str r4, [sp, 0x14]                                |     var_14h = r4;
    0x00006218 mov.w r4, 0                                       |     r4 = 0;
    0x0000621c strd r2, r7, [sp, 0xc]                            |     __asm ("strd r2, r7, [var_10h]");
    0x00006220 ldr r4, [r5, r3]                                  |     r4 = *(0xc4ea);
    0x00006222 ldr r3, [pc, 0xbc]                                |     
    0x00006224 mov r0, r4                                        |     r0 = r4;
    0x00006226 add r3, pc                                        |     r3 = "rename-chain";
    0x00006228 str r3, [r4, 4]                                   |     *((r4 + 4)) = r3;
    0x0000622a blx 0x2748                                        |     r0 = fcn_00002748 ();
    0x0000622e cmp r0, r7                                        |     
                                                                 |     if (r0 < r7) {
    0x00006230 blt 0x627c                                        |         goto label_148;
                                                                 |     }
    0x00006232 add r3, sp, 0x10                                  |     r3 += var_10h;
    0x00006234 mov r1, r8                                        |     r1 = r8;
    0x00006236 mov r0, r6                                        |     r0 = r6;
    0x00006238 add r2, sp, 0xc                                   |     r2 += var_ch_2;
    0x0000623a str r7, [sp]                                      |     *(sp) = r7;
    0x0000623c bl 0x6e5c                                         |     r0 = fcn_00006e5c (r0, r1, r2, r3, r4);
                                                                 |     if (r0 != 0) {
    0x00006240 cbnz r0, 0x6298                                   |         goto label_149;
                                                                 |     }
    0x00006242 blx 0x2458                                        |     xtables_merge_options ();
                                                                 | label_53:
    0x00006246 blx 0x247c                                        |     ip6tc_free ();
    0x0000624a ldr r3, [pc, 0x98]                                |     r3 = *(0x62e6);
    0x0000624c mov r4, r0                                        |     r4 = r0;
    0x0000624e ldr r0, [r0]                                      |     r0 = *(r0);
    0x00006250 ldr r3, [r5, r3]                                  |     r3 = *((r5 + r3));
    0x00006252 cmp r0, 0x16                                      |     
    0x00006254 ldr r5, [r3]                                      |     r5 = *(0x62e6);
                                                                 |     if (r0 == 0x16) {
    0x00006256 beq 0x62b0                                        |         goto label_150;
                                                                 |     }
    0x00006258 blx 0x2610                                        |     fcn_00002610 ();
    0x0000625c ldr r2, [pc, 0x88]                                |     
    0x0000625e mov r3, r0                                        |     r3 = r0;
    0x00006260 movs r1, 1                                        |     r1 = 1;
    0x00006262 mov r0, r5                                        |     r0 = r5;
    0x00006264 add r2, pc                                        |     r2 = "numeric";
    0x00006266 blx 0x2570                                        |     fcn_00002570 ();
                                                                 | label_54:
    0x0000626a ldr r3, [r4]                                      |     r3 = *(r4);
    0x0000626c cmp r3, 0xb                                       |     
                                                                 |     if (r3 == 0xb) {
    0x0000626e beq 0x62c4                                        |         goto label_151;
                                                                 |     }
    0x00006270 movs r4, 0                                        |     r4 = 0;
                                                                 |     do {
    0x00006272 clz r0, r4                                        |         r0 &= r4;
    0x00006276 lsrs r0, r0, 5                                    |         r0 >>= 5;
    0x00006278 blx 0x23e0                                        |         xtables_ipaddr_to_anyname ();
                                                                 | label_148:
    0x0000627c ldr r1, [pc, 0x64]                                |         r1 = *(0x62e4);
    0x0000627e ldrd r3, r6, [r4, 4]                              |         __asm ("ldrd r3, r6, [r4, 4]");
    0x00006282 ldr r2, [pc, 0x68]                                |         
    0x00006284 ldr r0, [r5, r1]                                  |         r0 = *((r5 + r1));
    0x00006286 movs r1, 1                                        |         r1 = 1;
    0x00006288 str r6, [sp]                                      |         *(sp) = r6;
    0x0000628a add r2, pc                                        |         r2 = 0xc57c;
    0x0000628c ldr r0, [r0]                                      |         r0 = *(r0);
    0x0000628e blx 0x2570                                        |         fcn_00002570 ();
    0x00006292 movs r0, 1                                        |         r0 = 1;
    0x00006294 blx 0x23e0                                        |         xtables_ipaddr_to_anyname ();
                                                                 | label_149:
    0x00006298 ldr r0, [sp, 0x10]                                |         r0 = var_10h;
    0x0000629a blx 0x25e0                                        |         r0 = fcn_000025e0 ();
    0x0000629e mov r4, r0                                        |         r4 = r0;
    0x000062a0 ldr r0, [sp, 0x10]                                |         r0 = var_10h;
    0x000062a2 blx 0x2488                                        |         xtables_ipparse_multiple ();
    0x000062a6 blx 0x2458                                        |         xtables_merge_options ();
    0x000062a8 invalid                                           |         
    0x000062ac bne 0x6272                                        |         
                                                                 |     } while (r0 != 1);
    0x000062ae b 0x6246                                          |     goto label_53;
                                                                 | label_150:
    0x000062b0 blx 0x2610                                        |     fcn_00002610 ();
    0x000062b4 ldr r2, [pc, 0x38]                                |     
    0x000062b6 mov r3, r0                                        |     r3 = r0;
    0x000062b8 movs r1, 1                                        |     r1 = 1;
    0x000062ba mov r0, r5                                        |     r0 = r5;
    0x000062bc add r2, pc                                        |     r2 = 0xc5b0;
    0x000062be blx 0x2570                                        |     fcn_00002570 ();
    0x000062c2 b 0x626a                                          |     goto label_54;
                                                                 | label_151:
    0x000062c4 movs r0, 4                                        |     r0 = 4;
    0x000062c6 blx 0x23e0                                        |     xtables_ipaddr_to_anyname ();
    0x000062ca nop                                               |     
    0x000062cc ldrh r4, [r6, 0x1a]                               |     r4 = *((r6 + 0x1a));
    0x000062ce movs r1, r0                                       |     r1 = r0;
    0x000062d0 lsls r0, r0, 9                                    |     r0 <<= 9;
    0x000062d2 movs r0, r0                                       |     
    0x000062d4 ldrh r0, [r5, 0x1a]                               |     r0 = *((r5 + 0x1a));
    0x000062d6 movs r1, r0                                       |     r1 = r0;
    0x000062d8 ldr r6, [pc, 0xd8]                                |     r6 = *(0x63b4);
    0x000062da movs r0, r0                                       |     
    0x000062dc lsls r4, r6, 8                                    |     r4 = r6 << 8;
    0x000062de movs r0, r0                                       |     
    0x000062e0 ldr r1, [pc, 0x3a8]                               |     r1 = *(0x668c);
    0x000062e2 movs r0, r0                                       |     
    0x000062e4 lsls r0, r2, 9                                    |     r0 = r2 << 9;
    0x000062e6 movs r0, r0                                       |     
    0x000062e8 str r4, [r0, 0x40]                                |     *((r0 + 0x40)) = r4;
    0x000062ea movs r0, r0                                       |     
    0x000062ec ldr r5, [pc, 0x318]                               |     r5 = *(0x6608);
    0x000062ee movs r0, r0                                       |     
    0x000062f0 str r0, [r7, 0x34]                                |     *((r7 + 0x34)) = r0;
    0x000062f2 movs r0, r0                                       |     
                                                                 | }

[*] Function printf used 2 times xtables-legacy-multi