[*] Binary protection state of nf_conntrack.ko

  
  	No RELRO       No Canary found   NX disabled  REL          No RPATH     No RUNPATH   Symbols


[*] Function strcat tear down of nf_conntrack.ko

    ; assembly                                                               | /* r2dec pseudo code output */
                                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/netfilter/nf_conntrack.ko @ 0x80027f8 */
                                                                             | #include <stdint.h>
                                                                             |  
                                                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                             |  
    ; (fcn) sym.__nf_conntrack_confirm ()                                    | void nf_conntrack_confirm (int32_t arg1) {
                                                                             |     int32_t var_0h;
                                                                             |     r0 = arg1;
    0x080027f8 push {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}                 |     
    0x080027fc ldr r3, [r0, 0x50]                                            |     r3 = *((r0 + 0x50));
    0x08002800 bic r4, r3, 7                                                 |     r4 = BIT_MASK (r3, 7);
    0x08002804 and r3, r3, 7                                                 |     r3 &= 7;
    0x08002808 cmp r3, 2                                                     |     
    0x0800280c ldr r7, [r4, 0x74]                                            |     r7 = *((r4 + 0x74));
                                                                             |     if (r3 > 2) {
    0x08002810 bhi 0x8002c14                                                 |         goto label_8;
                                                                             |     }
    0x08002814 mov r3, sp                                                    |     r3 = sp;
    0x08002818 mov r8, r0                                                    |     r8 = r0;
    0x0800281c bic r3, r3, 0x1fc0                                            |     r3 = BIT_MASK (r3, 0x1fc0);
    0x08002820 bic r3, r3, 0x3f                                              |     r3 = BIT_MASK (r3, 0x3f);
    0x08002824 ldr r2, [r3, 4]                                               |     r2 = *((r3 + 4));
    0x08002828 add r2, r2, 0x200                                             |     r2 += 0x200;
    0x0800282c str r2, [r3, 4]                                               |     *((r3 + 4)) = r2;
    0x08002830 stmdaeq r0, {r4, r5, r6, r8, sb, sl, fp, sp, lr, pc}          |     __asm ("stmdaeq r0, {r4, r5, r6, r8, sb, sl, fp, sp, lr, pc}");
    0x08002834 stmdaeq r0, {r4, r5, r6, r8, sb, sl, fp, sp, lr, pc}          |     __asm ("stmdaeq r0, {r4, r5, r6, r8, sb, sl, fp, sp, lr, pc}");
    0x08002838 add sb, r4, 0x44                                              |     sb = r4 + 0x44;
                                                                             |     do {
                                                                             | label_3:
    0x0800283c ldr fp, [r5, 0x10]                                            |         fp = *((r5 + 0x10));
    0x08002840 tst fp, 1                                                     |         
                                                                             |         if ((fp & 1) != 0) {
    0x08002844 bne 0x8002bd4                                                 |             goto label_9;
                                                                             |         }
    0x08002848 ldr r3, [r4, 0x40]                                            |         r3 = *((r4 + 0x40));
    0x0800284c mov r1, r7                                                    |         r1 = r7;
    0x08002850 ldr r6, [r5, 0x18]                                            |         r6 = *((r5 + 0x18));
    0x08002854 mov r0, sb                                                    |         r0 = sb;
    0x08002858 umull r3, r6, r6, r3                                          |         r3:r6 = r6 * r3;
    0x0800285c bl 0x800086c                                                  |         hash_conntrack_raw ();
    0x08002860 ldr sl, [r5, 0x18]                                            |         sl = *((r5 + 0x18));
    0x08002864 mov r3, r0                                                    |         r3 = r0;
    0x08002868 mov r2, fp                                                    |         r2 = fp;
    0x0800286c mov r0, r6                                                    |         r0 = r6;
    0x08002870 umull r3, sl, sl, r3                                          |         r3:sl = sl * r3;
    0x08002874 mov r1, sl                                                    |         r1 = sl;
    0x08002878 bl 0x80007f0                                                  |         r0 = nf_conntrack_double_lock_constprop_0 ();
    0x0800287c cmp r0, 0                                                     |         
    0x08002880 bne 0x800283c                                                 |         
                                                                             |     } while (r0 != 0);
    0x08002884 ldr sb, [r4, 0x6c]                                            |     sb = *((r4 + 0x6c));
    0x08002888 ubfx sb, sb, 3, 1                                             |     sb = (sb >> 3) & ((1 << 1) - 1);
    0x0800288c cmp sb, 0                                                     |     
                                                                             |     if (sb != 0) {
    0x08002890 bne 0x8002c58                                                 |         goto label_10;
                                                                             |     }
    0x08002894 mov r0, r4                                                    |     r0 = r4;
    0x08002898 bl 0x8000258                                                  |     nf_ct_del_from_dying_or_unconfirmed_list ();
    0x0800289c ldr r3, [r4, 0x6c]                                            |     r3 = *((r4 + 0x6c));
    0x080028a0 tst r3, 0x200                                                 |     
                                                                             |     if ((r3 & 0x200) != 0) {
    0x080028a4 bne 0x8002c8c                                                 |         goto label_11;
                                                                             |     }
    0x080028a8 ldr lr, [r5]                                                  |     
    0x080028ac ldr r3, [lr, r6, lsl 2]                                       |     offset_0 = r6 << 2;
                                                                             |     r3 = *((lr + offset_0));
    0x080028b0 tst r3, 1                                                     |     
                                                                             |     if ((r3 & 1) != 0) {
    0x080028b4 bne 0x80029cc                                                 |         goto label_12;
                                                                             |     }
    0x080028b8 ldr r1, [r4, 0x14]                                            |     r1 = *((r4 + 0x14));
    0x080028bc mvn ip, 0xb                                                   |     
    0x080028c0 mov r0, 1                                                     |     r0 = 1;
    0x080028c4 b 0x80028d4                                                   |     
                                                                             |     while (r1 != r2) {
                                                                             | label_0:
    0x080028c8 ldr r3, [r3]                                                  |         r3 = *(r3);
    0x080028cc tst r3, 1                                                     |         
                                                                             |         if ((r3 & 1) != 0) {
    0x080028d0 bne 0x80029cc                                                 |             goto label_12;
                                                                             |         }
                                                                             | label_1:
    0x080028d4 ldr r2, [r3, 8]                                               |         r2 = *((r3 + 8));
    0x080028d8 cmp r1, r2                                                    |         
    0x080028dc bne 0x80028c8                                                 |         
                                                                             |     }
    0x080028e0 ldr r5, [r4, 0x18]                                            |     r5 = *((r4 + 0x18));
    0x080028e4 ldr r2, [r3, 0xc]                                             |     r2 = *((r3 + 0xc));
    0x080028e8 cmp r5, r2                                                    |     
                                                                             |     if (r5 != r2) {
    0x080028ec bne 0x80028c8                                                 |         goto label_0;
                                                                             |     }
    0x080028f0 ldr r5, [r4, 0x1c]                                            |     r5 = *((r4 + 0x1c));
    0x080028f4 ldr r2, [r3, 0x10]                                            |     r2 = *((r3 + 0x10));
    0x080028f8 cmp r5, r2                                                    |     
                                                                             |     if (r5 != r2) {
    0x080028fc bne 0x80028c8                                                 |         goto label_0;
                                                                             |     }
    0x08002900 ldr r5, [r4, 0x20]                                            |     r5 = *((r4 + 0x20));
    0x08002904 ldr r2, [r3, 0x14]                                            |     r2 = *((r3 + 0x14));
    0x08002908 cmp r5, r2                                                    |     
                                                                             |     if (r5 != r2) {
    0x0800290c bne 0x80028c8                                                 |         goto label_0;
                                                                             |     }
    0x08002910 ldr r5, [r4, 0x24]                                            |     r5 = *((r4 + 0x24));
    0x08002914 ldr r2, [r3, 0x18]                                            |     r2 = *((r3 + 0x18));
    0x08002918 cmp r5, r2                                                    |     
                                                                             |     if (r5 != r2) {
    0x0800291c bne 0x80028c8                                                 |         goto label_0;
                                                                             |     }
    0x08002920 ldr r5, [r4, 0x28]                                            |     r5 = *((r4 + 0x28));
    0x08002924 ldr r2, [r3, 0x1c]                                            |     r2 = *((r3 + 0x1c));
    0x08002928 cmp r5, r2                                                    |     
                                                                             |     if (r5 != r2) {
    0x0800292c bne 0x80028c8                                                 |         goto label_0;
                                                                             |     }
    0x08002930 ldr r5, [r4, 0x2c]                                            |     r5 = *((r4 + 0x2c));
    0x08002934 ldr r2, [r3, 0x20]                                            |     r2 = *((r3 + 0x20));
    0x08002938 cmp r5, r2                                                    |     
                                                                             |     if (r5 != r2) {
    0x0800293c bne 0x80028c8                                                 |         goto label_0;
                                                                             |     }
    0x08002940 ldr r5, [r4, 0x30]                                            |     r5 = *((r4 + 0x30));
    0x08002944 ldr r2, [r3, 0x24]                                            |     r2 = *((r3 + 0x24));
    0x08002948 cmp r5, r2                                                    |     
                                                                             |     if (r5 != r2) {
    0x0800294c bne 0x80028c8                                                 |         goto label_0;
                                                                             |     }
    0x08002950 ldr r5, [r4, 0x34]                                            |     r5 = *((r4 + 0x34));
    0x08002954 ldr r2, [r3, 0x28]                                            |     r2 = *((r3 + 0x28));
    0x08002958 cmp r5, r2                                                    |     
                                                                             |     if (r5 != r2) {
    0x0800295c bne 0x80028c8                                                 |         goto label_0;
                                                                             |     }
    0x08002960 ldr r2, [r4, 0x38]                                            |     r2 = *((r4 + 0x38));
    0x08002964 ldr r5, [r3, 0x2c]                                            |     r5 = *((r3 + 0x2c));
    0x08002968 eor r2, r2, r5                                                |     r2 ^= r5;
    0x0800296c bics r2, r2, 0xff000000                                       |     __asm ("bics r2, r2, 0xff000000");
                                                                             |     if (r5 != r2) {
    0x08002970 bne 0x80028c8                                                 |         goto label_0;
                                                                             |     }
    0x08002974 ldrb r2, [r3, 0x2f]                                           |     r2 = *((r3 + 0x2f));
    0x08002978 ldrb r5, [r3, 0x2f]                                           |     r5 = *((r3 + 0x2f));
    0x0800297c ldrb sb, [r4, 0xb]                                            |     sb = *((r4 + 0xb));
    0x08002980 add r2, r2, r2, lsl 1                                         |     r2 += (r2 << 1);
    0x08002984 lsl r5, r0, r5                                                |     r5 = r0 << r5;
    0x08002988 sub r2, ip, r2, lsl 4                                         |     r2 = ip - (r2 << 4);
    0x0800298c and sb, sb, r5                                                |     sb &= r5;
    0x08002990 add r2, r3, r2                                                |     r2 = r3 + r2;
    0x08002994 ldrb fp, [r2, 0xb]                                            |     fp = *((r2 + 0xb));
    0x08002998 ands fp, fp, r5                                               |     
                                                                             |     if (fp != fp) {
    0x0800299c bne 0x8002c3c                                                 |         goto label_13;
                                                                             |     }
    0x080029a0 cmp sb, 0                                                     |     
                                                                             |     if (sb != 0) {
    0x080029a4 bne 0x8002c48                                                 |         goto label_14;
                                                                             |     }
                                                                             | label_5:
    0x080029a8 ldr r5, [r2, 0x6c]                                            |     r5 = *((r2 + 0x6c));
    0x080029ac tst r5, 8                                                     |     
                                                                             |     if ((r5 & 8) == 0) {
    0x080029b0 beq 0x80028c8                                                 |         goto label_0;
                                                                             |     }
    0x080029b4 ldr r2, [r2, 0x74]                                            |     r2 = *((r2 + 0x74));
    0x080029b8 cmp r7, r2                                                    |     
                                                                             |     if (r7 == r2) {
    0x080029bc beq 0x8002ae0                                                 |         goto label_15;
                                                                             |     }
    0x080029c0 ldr r3, [r3]                                                  |     r3 = *(r3);
    0x080029c4 tst r3, 1                                                     |     
                                                                             |     if ((r3 & 1) == 0) {
    0x080029c8 beq 0x80028d4                                                 |         goto label_1;
                                                                             |     }
                                                                             | label_12:
    0x080029cc ldr r3, [lr, sl, lsl 2]                                       |     offset_1 = sl << 2;
                                                                             |     r3 = *((lr + offset_1));
    0x080029d0 tst r3, 1                                                     |     
                                                                             |     if ((r3 & 1) != 0) {
    0x080029d4 bne 0x8002af8                                                 |         goto label_16;
                                                                             |     }
    0x080029d8 ldr r0, [r4, 0x44]                                            |     r0 = *((r4 + 0x44));
    0x080029dc mvn lr, 0xb                                                   |     lr = ~0xb;
    0x080029e0 mov ip, 1                                                     |     
    0x080029e4 b 0x80029f4                                                   |     
                                                                             |     while (r0 != r2) {
                                                                             | label_2:
    0x080029e8 ldr r3, [r3]                                                  |         r3 = *(r3);
    0x080029ec tst r3, 1                                                     |         
                                                                             |         if ((r3 & 1) != 0) {
    0x080029f0 bne 0x8002af8                                                 |             goto label_16;
                                                                             |         }
    0x080029f4 ldr r2, [r3, 8]                                               |         r2 = *((r3 + 8));
    0x080029f8 cmp r0, r2                                                    |         
    0x080029fc bne 0x80029e8                                                 |         
                                                                             |     }
    0x08002a00 ldr r1, [r4, 0x48]                                            |     r1 = *((r4 + 0x48));
    0x08002a04 ldr r2, [r3, 0xc]                                             |     r2 = *((r3 + 0xc));
    0x08002a08 cmp r1, r2                                                    |     
                                                                             |     if (r1 != r2) {
    0x08002a0c bne 0x80029e8                                                 |         goto label_2;
                                                                             |     }
    0x08002a10 ldr r1, [r4, 0x4c]                                            |     r1 = *((r4 + 0x4c));
    0x08002a14 ldr r2, [r3, 0x10]                                            |     r2 = *((r3 + 0x10));
    0x08002a18 cmp r1, r2                                                    |     
                                                                             |     if (r1 != r2) {
    0x08002a1c bne 0x80029e8                                                 |         goto label_2;
                                                                             |     }
    0x08002a20 ldr r1, [r4, 0x50]                                            |     r1 = *((r4 + 0x50));
    0x08002a24 ldr r2, [r3, 0x14]                                            |     r2 = *((r3 + 0x14));
    0x08002a28 cmp r1, r2                                                    |     
                                                                             |     if (r1 != r2) {
    0x08002a2c bne 0x80029e8                                                 |         goto label_2;
                                                                             |     }
    0x08002a30 ldr r1, [r4, 0x54]                                            |     r1 = *((r4 + 0x54));
    0x08002a34 ldr r2, [r3, 0x18]                                            |     r2 = *((r3 + 0x18));
    0x08002a38 cmp r1, r2                                                    |     
                                                                             |     if (r1 != r2) {
    0x08002a3c bne 0x80029e8                                                 |         goto label_2;
                                                                             |     }
    0x08002a40 ldr r1, [r4, 0x58]                                            |     r1 = *((r4 + 0x58));
    0x08002a44 ldr r2, [r3, 0x1c]                                            |     r2 = *((r3 + 0x1c));
    0x08002a48 cmp r1, r2                                                    |     
                                                                             |     if (r1 != r2) {
    0x08002a4c bne 0x80029e8                                                 |         goto label_2;
                                                                             |     }
    0x08002a50 ldr r1, [r4, 0x5c]                                            |     r1 = *((r4 + 0x5c));
    0x08002a54 ldr r2, [r3, 0x20]                                            |     r2 = *((r3 + 0x20));
    0x08002a58 cmp r1, r2                                                    |     
                                                                             |     if (r1 != r2) {
    0x08002a5c bne 0x80029e8                                                 |         goto label_2;
                                                                             |     }
    0x08002a60 ldr r1, [r4, 0x60]                                            |     r1 = *((r4 + 0x60));
    0x08002a64 ldr r2, [r3, 0x24]                                            |     r2 = *((r3 + 0x24));
    0x08002a68 cmp r1, r2                                                    |     
                                                                             |     if (r1 != r2) {
    0x08002a6c bne 0x80029e8                                                 |         goto label_2;
                                                                             |     }
    0x08002a70 ldr r1, [r4, 0x64]                                            |     r1 = *((r4 + 0x64));
    0x08002a74 ldr r2, [r3, 0x28]                                            |     r2 = *((r3 + 0x28));
    0x08002a78 cmp r1, r2                                                    |     
                                                                             |     if (r1 != r2) {
    0x08002a7c bne 0x80029e8                                                 |         goto label_2;
                                                                             |     }
    0x08002a80 ldr r2, [r4, 0x68]                                            |     r2 = *((r4 + 0x68));
    0x08002a84 ldr r1, [r3, 0x2c]                                            |     r1 = *((r3 + 0x2c));
    0x08002a88 eor r2, r2, r1                                                |     r2 ^= r1;
    0x08002a8c bics r2, r2, 0xff000000                                       |     __asm ("bics r2, r2, 0xff000000");
                                                                             |     if (r1 != r2) {
    0x08002a90 bne 0x80029e8                                                 |         goto label_2;
                                                                             |     }
    0x08002a94 ldrb r2, [r3, 0x2f]                                           |     r2 = *((r3 + 0x2f));
    0x08002a98 ldrb r1, [r3, 0x2f]                                           |     r1 = *((r3 + 0x2f));
    0x08002a9c ldrb r5, [r4, 0xb]                                            |     r5 = *((r4 + 0xb));
    0x08002aa0 add r2, r2, r2, lsl 1                                         |     r2 += (r2 << 1);
    0x08002aa4 lsl r1, ip, r1                                                |     r1 = ip << r1;
    0x08002aa8 sub r2, lr, r2, lsl 4                                         |     r2 = lr - (r2 << 4);
    0x08002aac and r5, r5, r1                                                |     r5 &= r1;
    0x08002ab0 add r2, r3, r2                                                |     r2 = r3 + r2;
    0x08002ab4 ldrb sb, [r2, 0xb]                                            |     sb = *((r2 + 0xb));
    0x08002ab8 ands sb, sb, r1                                               |     sb &= r1;
                                                                             |     if (sb != sb) {
    0x08002abc bne 0x8002c20                                                 |         goto label_17;
                                                                             |     }
    0x08002ac0 cmp r5, 0                                                     |     
                                                                             |     if (r5 != 0) {
    0x08002ac4 bne 0x8002c2c                                                 |         goto label_18;
                                                                             |     }
                                                                             | label_4:
    0x08002ac8 ldr r1, [r2, 0x6c]                                            |     r1 = *((r2 + 0x6c));
    0x08002acc tst r1, 8                                                     |     
                                                                             |     if ((r1 & 8) == 0) {
    0x08002ad0 beq 0x80029e8                                                 |         goto label_2;
                                                                             |     }
    0x08002ad4 ldr r2, [r2, 0x74]                                            |     r2 = *((r2 + 0x74));
    0x08002ad8 cmp r7, r2                                                    |     
                                                                             |     if (r7 != r2) {
    0x08002adc bne 0x80029e8                                                 |         goto label_2;
                                                                             |     }
                                                                             | label_15:
    0x08002ae0 mov r2, sl                                                    |     r2 = sl;
    0x08002ae4 mov r1, r3                                                    |     r1 = r3;
    0x08002ae8 mov r0, r8                                                    |     r0 = r8;
    0x08002aec stmdaeq r0, {r2, r5, r6, r7, lr, pc}                          |     __asm ("stmdaeq r0, {r2, r5, r6, r7, lr, pc}");
    0x08002af0 mov sb, r0                                                    |     sb = r0;
    0x08002af4 b 0x8002ca4                                                   |     goto label_19;
                                                                             | label_16:
    0x08002af8 stmdaeq r1, {r0, r1, r2, r5, r7, sb, sl, fp, lr, pc}          |     __asm ("stmdaeq r1, {r0, r1, r2, r5, r7, sb, sl, fp, lr, pc}");
    0x08002afc stmdaeq r1, {r0, r1, r2, r5, r7, sb, sl, fp, lr, pc}          |     __asm ("stmdaeq r1, {r0, r1, r2, r5, r7, sb, sl, fp, lr, pc}");
    0x08002b00 ldr r3, [r4, 4]                                               |     r3 = *((r4 + 4));
    0x08002b04 mov r0, r4                                                    |     r0 = r4;
    0x08002b08 ldr r2, [r2]                                                  |     r2 = *(r2);
    0x08002b0c add r3, r3, r2                                                |     r3 += r2;
    0x08002b10 str r3, [r4, 4]                                               |     *((r4 + 4)) = r3;
    0x08002b14 bl 0x8000fcc                                                  |     nf_conntrack_insert_prepare ();
    0x08002b18 mov r2, sl                                                    |     r2 = sl;
    0x08002b1c mov r1, r6                                                    |     r1 = r6;
    0x08002b20 mov r0, r4                                                    |     r0 = r4;
    0x08002b24 bl 0x8000070                                                  |     nf_conntrack_hash_insert ();
    0x08002b28 mov r1, sl                                                    |     r1 = sl;
    0x08002b2c mov r0, r6                                                    |     r0 = r6;
    0x08002b30 bl 0x800060c                                                  |     nf_conntrack_double_unlock ();
    0x08002b34 ldr r0, [pc, 0x1c0]                                           |     r0 = *(0x8002cf8);
    0x08002b38 mov r1, 0x200                                                 |     r1 = 0x200;
    0x08002b3c stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}              |     __asm ("stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}");
    0x08002b40 ldr r3, [r4, 0x8c]                                            |     r3 = *((r4 + 0x8c));
    0x08002b44 cmp r3, 0                                                     |     
                                                                             |     if (r3 != 0) {
    0x08002b48 beq 0x8002c0c                                                 |         
    0x08002b4c ldrb r2, [r3]                                                 |         r2 = *(r3);
    0x08002b50 ldr r1, [r4, 0x74]                                            |         r1 = *((r4 + 0x74));
    0x08002b54 cmp r2, 0                                                     |         
                                                                             |         if (r2 != 0) {
    0x08002b58 beq 0x8002bd8                                                 |             
    0x08002b5c cmn r3, r2                                                    |             
                                                                             |             if (r3 == r2) {
    0x08002b60 beq 0x8002bd8                                                 |                 goto label_20;
                                                                             |             }
    0x08002b64 ldr r2, [r3, r2]                                              |             r2 = *((r3 + r2));
    0x08002b68 cmp r2, 0                                                     |             
                                                                             |             if (r2 == 0) {
    0x08002b6c beq 0x8002bd8                                                 |                 goto label_20;
                                                                             |             }
    0x08002b70 ldr r2, [r1, 0x660]                                           |             r2 = *((r1 + 0x660));
    0x08002b74 cmp r2, 0                                                     |             
                                                                             |             if (r2 == 0) {
    0x08002b78 beq 0x8002bd8                                                 |                 goto label_20;
                                                                             |             }
    0x08002b7c ldrb r2, [r3, 4]                                              |             r2 = *((r3 + 4));
    0x08002b80 cmp r2, 0                                                     |             
                                                                             |             if (r2 == 0) {
    0x08002b84 beq 0x8002bd8                                                 |                 goto label_20;
                                                                             |             }
    0x08002b88 cmn r3, r2                                                    |             
                                                                             |             if (r3 == r2) {
    0x08002b8c beq 0x8002ce0                                                 |                 goto label_21;
                                                                             |             }
    0x08002b90 mrs r0, apsr                                                  |             r0 = apsr;
    0x08002b94 cpsid i                                                       |             __asm ("cpsid i");
    0x08002b98 ldr r1, [r3, r2]                                              |             r1 = *((r3 + r2));
    0x08002b9c orr r1, r1, 0x40                                              |             r1 |= 0x40;
    0x08002ba0 str r1, [r3, r2]                                              |             *((r3 + r2)) = r1;
    0x08002ba4 msr cpsr_c, r0                                                |             cpsr_c = r0;
    0x08002ba8 ldr r3, [r4, 0x74]                                            |             r3 = *((r4 + 0x74));
    0x08002bac ldr r0, [r4, 0x80]                                            |             r0 = *((r4 + 0x80));
    0x08002bb0 ldr r3, [r3, 0x660]                                           |             r3 = *((r3 + 0x660));
    0x08002bb4 cmp r3, 0                                                     |             
                                                                             |             if (r3 == 0) {
    0x08002bb8 beq 0x8002c14                                                 |                 goto label_8;
                                                                             |             }
    0x08002bbc ldr r3, [r4, 0x8c]                                            |             r3 = *((r4 + 0x8c));
    0x08002bc0 cmp r3, 0                                                     |             
                                                                             |             if (r3 == 0) {
    0x08002bc4 beq 0x8002c14                                                 |                 goto label_8;
                                                                             |             }
    0x08002bc8 subs r0, r0, 0                                                |             
                                                                             |             if (r0 == r0) {
    0x08002bcc movne r0, 1                                                   |                 r0 = 1;
                                                                             |             }
    0x08002bd0 b 0x8002bf0                                                   |             goto label_22;
                                                                             | label_9:
    0x08002bd4 b 0x800283c                                                   |             goto label_3;
                                                                             |         }
                                                                             | label_20:
    0x08002bd8 ldr r0, [r4, 0x80]                                            |         r0 = *((r4 + 0x80));
    0x08002bdc ldr r2, [r1, 0x660]                                           |         r2 = *((r1 + 0x660));
    0x08002be0 subs r0, r0, 0                                                |         
                                                                             |         if (r0 == r0) {
    0x08002be4 movne r0, 1                                                   |             r0 = 1;
                                                                             |         }
    0x08002be8 cmp r2, 0                                                     |         
                                                                             |         if (r2 == 0) {
    0x08002bec beq 0x8002c14                                                 |             goto label_8;
                                                                             |         }
                                                                             | label_22:
    0x08002bf0 ldrb r2, [r3, 4]                                              |         r2 = *((r3 + 4));
    0x08002bf4 cmp r2, 0                                                     |         
                                                                             |         if (r2 == 0) {
    0x08002bf8 beq 0x8002c14                                                 |             goto label_8;
                                                                             |         }
                                                                             | label_7:
    0x08002bfc adds r1, r3, r2                                               |         r1 = r3 + r2;
                                                                             |         if (r1 == r3) {
    0x08002c00 beq 0x8002c14                                                 |             goto label_8;
                                                                             |         }
    0x08002c04 stmdaeq r1, {r0, r1, r2, r4, r8, sb, sl, fp, lr, pc}          |         __asm ("stmdaeq r1, {r0, r1, r2, r4, r8, sb, sl, fp, lr, pc}");
    0x08002c08 b 0x8002c14                                                   |         
                                                                             |     } else {
    0x08002c0c ldr r3, [r4, 0x74]                                            |         r3 = *((r4 + 0x74));
    0x08002c10 ldr r3, [r3, 0x660]                                           |         r3 = *((r3 + 0x660));
                                                                             |     }
                                                                             | label_8:
    0x08002c14 mov sb, 1                                                     |     sb = 1;
                                                                             | label_6:
    0x08002c18 mov r0, sb                                                    |     r0 = sb;
    0x08002c1c pop {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}                  |     
                                                                             | label_17:
    0x08002c20 ldrh sb, [r2, 8]                                              |     sb = *((r2 + 8));
    0x08002c24 cmp r5, 0                                                     |     
                                                                             |     if (r5 != 0) {
    0x08002c28 beq 0x8002c30                                                 |         
                                                                             | label_18:
    0x08002c2c ldrh r5, [r4, 8]                                              |         r5 = *((r4 + 8));
                                                                             |     }
    0x08002c30 cmp sb, r5                                                    |     
                                                                             |     if (sb != r5) {
    0x08002c34 bne 0x80029e8                                                 |         goto label_2;
                                                                             |     }
    0x08002c38 b 0x8002ac8                                                   |     goto label_4;
                                                                             | label_13:
    0x08002c3c ldrh fp, [r2, 8]                                              |     fp = *((r2 + 8));
    0x08002c40 cmp sb, 0                                                     |     
                                                                             |     if (sb != 0) {
    0x08002c44 beq 0x8002c4c                                                 |         
                                                                             | label_14:
    0x08002c48 ldrh sb, [r4, 8]                                              |         sb = *((r4 + 8));
                                                                             |     }
    0x08002c4c cmp fp, sb                                                    |     
                                                                             |     if (fp != sb) {
    0x08002c50 bne 0x80028c8                                                 |         goto label_0;
                                                                             |     }
    0x08002c54 b 0x80029a8                                                   |     goto label_5;
                                                                             | label_10:
    0x08002c58 stmdaeq r0, {r4, ip, sp, lr, pc}                              |     __asm ("stmdaeq r0, {r4, ip, sp, lr, pc}");
    0x08002c5c stmdaeq r0, {r4, ip, sp, lr, pc}                              |     __asm ("stmdaeq r0, {r4, ip, sp, lr, pc}");
    0x08002c60 ldrb r3, [r2]                                                 |     r3 = *(r2);
    0x08002c64 cmp r3, 0                                                     |     
    0x08002c68 beq 0x8002cc0                                                 |     
                                                                             |     while (1) {
    0x08002c6c mov r1, sl                                                    |         r1 = sl;
    0x08002c70 mov r0, r6                                                    |         r0 = r6;
    0x08002c74 bl 0x800060c                                                  |         nf_conntrack_double_unlock ();
    0x08002c78 ldr r0, [pc, 0x80]                                            |         r0 = .text;
    0x08002c7c mov r1, 0x200                                                 |         r1 = 0x200;
    0x08002c80 mov sb, 0                                                     |         sb = 0;
    0x08002c84 stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}              |         __asm ("stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}");
    0x08002c88 b 0x8002c18                                                   |         goto label_6;
                                                                             | label_11:
    0x08002c8c mov r0, r4                                                    |         r0 = r4;
    0x08002c90 bl 0x8000124                                                  |         nf_ct_add_to_dying_list ();
    0x08002c94 ldr r2, [r7, 0x65c]                                           |         r2 = *((r7 + 0x65c));
    0x08002c98 ldr r3, [r2, 0xc]                                             |         r3 = *((r2 + 0xc));
    0x08002c9c add r3, r3, 1                                                 |         r3++;
    0x08002ca0 str r3, [r2, 0xc]                                             |         *((r2 + 0xc)) = r3;
                                                                             | label_19:
    0x08002ca4 mov r1, sl                                                    |         r1 = sl;
    0x08002ca8 mov r0, r6                                                    |         r0 = r6;
    0x08002cac bl 0x800060c                                                  |         nf_conntrack_double_unlock ();
    0x08002cb0 ldr r0, [pc, 0x4c]                                            |         r0 = .text;
    0x08002cb4 mov r1, 0x200                                                 |         r1 = 0x200;
    0x08002cb8 stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}              |         __asm ("stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}");
    0x08002cbc b 0x8002c18                                                   |         goto label_6;
    0x08002cc0 mov r1, 1                                                     |         r1 = 1;
    0x08002cc4 stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, lr, pc}          |         __asm ("stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, lr, pc}");
    0x08002cc8 stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, lr, pc}          |         __asm ("stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, lr, pc}");
    0x08002ccc strb r1, [r2]                                                 |         *(r2) = r1;
    0x08002cd0 mov r2, 9                                                     |         r2 = 9;
    0x08002cd4 mov r1, 0x460                                                 |         r1 = 0x460;
    0x08002cd8 stmdaeq r1, {r0, r1, r2, r3, r7, sb, sl, fp, lr, pc}          |         __asm ("stmdaeq r1, {r0, r1, r2, r3, r7, sb, sl, fp, lr, pc}");
    0x08002cdc b 0x8002c6c                                                   |         
                                                                             |     }
                                                                             | label_21:
    0x08002ce0 ldr r0, [r4, 0x80]                                            |     r0 = *((r4 + 0x80));
    0x08002ce4 ldr r1, [r1, 0x660]                                           |     r1 = *((r1 + 0x660));
    0x08002ce8 subs r0, r0, 0                                                |     
                                                                             |     if (r0 == r0) {
    0x08002cec movne r0, 1                                                   |         r0 = 1;
                                                                             |     }
    0x08002cf0 cmp r1, 0                                                     |     
                                                                             |     if (r1 != 0) {
    0x08002cf4 bne 0x8002bfc                                                 |         goto label_7;
                                                                             |     }
    0x08002cf8 b 0x8002c14                                                   |     goto label_8;
                                                                             | }
    ; assembly                                                                   | /* r2dec pseudo code output */
                                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/netfilter/nf_conntrack.ko @ 0x800106c */
                                                                                 | #include <stdint.h>
                                                                                 |  
                                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                                 |  
    ; (fcn) sym.destroy_conntrack ()                                             | void destroy_conntrack (int32_t arg1) {
                                                                                 |     int32_t var_0h;
                                                                                 |     r0 = arg1;
    0x0800106c push {r4, lr}                                                     |     
    0x08001070 mov r4, r0                                                        |     r4 = r0;
    0x08001074 ldr r3, [r0]                                                      |     r3 = *(r0);
    0x08001078 cmp r3, 0                                                         |     
                                                                                 |     if (r3 != 0) {
    0x0800107c bne 0x8001100                                                     |         goto label_1;
                                                                                 |     }
    0x08001080 ldr r3, [r4, 0x6c]                                                |     r3 = *((r4 + 0x6c));
    0x08001084 tst r3, 0x800                                                     |     
                                                                                 |     if ((r3 & 0x800) != 0) {
    0x08001088 bne 0x8001124                                                     |         goto label_2;
                                                                                 |     }
                                                                                 | label_0:
    0x0800108c mov r3, sp                                                        |     r3 = sp;
    0x08001090 bic r3, r3, 0x1fc0                                                |     r3 = BIT_MASK (r3, 0x1fc0);
    0x08001094 bic r3, r3, 0x3f                                                  |     r3 = BIT_MASK (r3, 0x3f);
    0x08001098 ldr r2, [r3, 4]                                                   |     r2 = *((r3 + 4));
    0x0800109c add r2, r2, 0x200                                                 |     r2 += 0x200;
    0x080010a0 str r2, [r3, 4]                                                   |     *((r3 + 4)) = r2;
    0x080010a4 mov r0, r4                                                        |     r0 = r4;
    0x080010a8 stmdaeq r0, {r3, r4, r5, r6, r7, sb, fp, ip, lr}                  |     __asm ("stmdaeq r0, {r3, r4, r5, r6, r7, sb, fp, ip, lr}");
    0x080010ac mov r0, r4                                                        |     r0 = r4;
    0x080010b0 bl 0x8000258                                                      |     nf_ct_del_from_dying_or_unconfirmed_list ();
    0x080010b4 ldr r0, [pc, 0x7c]                                                |     r0 = *(0x8001134);
    0x080010b8 mov r1, 0x200                                                     |     r1 = 0x200;
    0x080010bc stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}                  |     __asm ("stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}");
    0x080010c0 ldr r0, [r4, 0x80]                                                |     r0 = *((r4 + 0x80));
    0x080010c4 cmp r0, 0                                                         |     
                                                                                 |     if (r0 == 0) {
    0x080010c8 beq 0x80010ec                                                     |         goto label_3;
                                                                                 |     }
    0x080010cc pld [r0]                                                          |     __asm ("pld [r0]");
                                                                                 |     do {
    0x080010d0 ldrex r3, [r0]                                                    |         __asm ("ldrex r3, [r0]");
    0x080010d4 sub r3, r3, 1                                                     |         r3--;
    0x080010d8 strex r2, r3, [r0]                                                |         __asm ("strex r2, r3, [r0]");
    0x080010dc teq r2, 0                                                         |         __asm ("teq r2, 0");
    0x080010e0 bne 0x80010d0                                                     |         
                                                                                 |     } while (r0 != 0);
    0x080010e4 cmp r3, 0                                                         |     
    0x080010e8 beq 0x80010f8                                                     |     
                                                                                 |     while (1) {
                                                                                 | label_3:
    0x080010ec mov r0, r4                                                        |         r0 = r4;
    0x080010f0 pop {r4, lr}                                                      |         
    0x080010f4 stmdaeq r0, {r4, r6, r7, r8, sb}                                  |         __asm ("stmdaeq r0, {r4, r6, r7, r8, sb}");
    0x080010f8 stmdaeq r1, {r0, r1, r3, r4, r6, r7, sb, sl, fp, lr, pc}          |         __asm ("stmdaeq r1, {r0, r1, r3, r4, r6, r7, sb, sl, fp, lr, pc}");
    0x080010fc b 0x80010ec                                                       |         
                                                                                 |     }
                                                                                 | label_1:
    0x08001100 mov r3, 0                                                         |     r3 = 0;
    0x08001104 stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, lr, pc}              |     __asm ("stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, lr, pc}");
    0x08001108 stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, lr, pc}              |     __asm ("stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, lr, pc}");
    0x0800110c mov r2, 9                                                         |     r2 = 9;
    0x08001110 movw r1, 0x25a                                                    |     r1 = 0x25a;
    0x08001114 stmdaeq r1, {r0, r1, r2, r3, r7, sb, sl, fp, lr, pc}              |     __asm ("stmdaeq r1, {r0, r1, r2, r3, r7, sb, sl, fp, lr, pc}");
    0x08001118 ldr r3, [r4, 0x6c]                                                |     r3 = *((r4 + 0x6c));
    0x0800111c tst r3, 0x800                                                     |     
                                                                                 |     if ((r3 & 0x800) == 0) {
    0x08001120 beq 0x800108c                                                     |         goto label_0;
                                                                                 |     }
                                                                                 | label_2:
    0x08001124 mov r0, r4                                                        |     r0 = r4;
    0x08001128 stmdaeq r0, {r2, r3, r4, r6, sb, fp, sp, pc}                      |     __asm ("stmdaeq r0, {r2, r3, r4, r6, sb, fp, sp, pc}");
    0x0800112c mov r0, r4                                                        |     r0 = r4;
    0x08001130 pop {r4, lr}                                                      |     
    0x08001134 stmdaeq r1, {r0, r1, r7, sb, sl, fp, lr, pc}                      |     __asm ("stmdaeq r1, {r0, r1, r7, sb, sl, fp, lr, pc}");
    0x08001138 stmdaeq r0, {r4, r5, r6}                                          |     __asm ("stmdaeq r0, {r4, r5, r6}");
                                                                                 | }
    ; assembly                                                                   | /* r2dec pseudo code output */
                                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/netfilter/nf_conntrack.ko @ 0x800bb84 */
                                                                                 | #include <stdint.h>
                                                                                 |  
                                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                                 |  
    ; (fcn) sym.ecache_work_evict_list ()                                        | void ecache_work_evict_list (int32_t arg1) {
                                                                                 |     int32_t var_0h;
                                                                                 |     int32_t var_100h;
                                                                                 |     r0 = arg1;
    0x0800bb84 push {r4, r5, r6, r7, r8, lr}                                     |     
    0x0800bb88 sub sp, sp, 0x100                                                 |     
    0x0800bb8c mov r3, sp                                                        |     r3 = sp;
    0x0800bb90 bic r3, r3, 0x1fc0                                                |     r3 = BIT_MASK (r3, 0x1fc0);
    0x0800bb94 bic r3, r3, 0x3f                                                  |     r3 = BIT_MASK (r3, 0x3f);
    0x0800bb98 ldr r2, [r3, 4]                                                   |     r2 = *((r3 + 4));
    0x0800bb9c add r2, r2, 1                                                     |     r2++;
    0x0800bba0 str r2, [r3, 4]                                                   |     *((r3 + 4)) = r2;
    0x0800bba4 ldr r5, [r0, 4]                                                   |     r5 = *((r0 + 4));
    0x0800bba8 ands r6, r5, 1                                                    |     r6 = r5 & 1;
                                                                                 |     if (r6 == r5) {
    0x0800bbac movne r6, 0                                                       |         r6 = 0;
                                                                                 |     }
                                                                                 |     if (r6 == r5) {
    0x0800bbb0 movne r5, 2                                                       |         r5 = 2;
                                                                                 |     }
                                                                                 |     if (r6 != r5) {
    0x0800bbb4 bne 0x800bc64                                                     |         goto label_3;
                                                                                 |     }
    0x0800bbb8 mvn r7, 0xb                                                       |     r7 = ~0xb;
    0x0800bbbc b 0x800bbcc                                                       |     
                                                                                 |     while ((r3 & 8) == 0) {
                                                                                 | label_0:
    0x0800bbc0 ldr r5, [r5]                                                      |         r5 = *(r5);
    0x0800bbc4 tst r5, 1                                                         |         
                                                                                 |         if ((r5 & 1) != 0) {
    0x0800bbc8 bne 0x800bce4                                                     |             goto label_5;
                                                                                 |         }
    0x0800bbcc ldrb r3, [r5, 0x2f]                                               |         r3 = *((r5 + 0x2f));
    0x0800bbd0 add r3, r3, r3, lsl 1                                             |         r3 += (r3 << 1);
    0x0800bbd4 sub r4, r7, r3, lsl 4                                             |         r4 = r7 - (r3 << 4);
    0x0800bbd8 add r4, r5, r4                                                    |         r4 = r5 + r4;
    0x0800bbdc ldr r3, [r4, 0x6c]                                                |         r3 = *((r4 + 0x6c));
    0x0800bbe0 tst r3, 8                                                         |         
    0x0800bbe4 beq 0x800bbc0                                                     |         
                                                                                 |     }
    0x0800bbe8 ldr r3, [r4, 0x8c]                                                |     r3 = *((r4 + 0x8c));
    0x0800bbec cmp r3, 0                                                         |     
                                                                                 |     if (r3 == 0) {
    0x0800bbf0 beq 0x800bbc0                                                     |         goto label_0;
                                                                                 |     }
    0x0800bbf4 ldrb r2, [r3, 4]                                                  |     r2 = *((r3 + 4));
    0x0800bbf8 cmp r2, 0                                                         |     
                                                                                 |     if (r2 == 0) {
    0x0800bbfc beq 0x800bbc0                                                     |         goto label_0;
                                                                                 |     }
    0x0800bc00 adds r8, r3, r2                                                   |     r8 = r3 + r2;
                                                                                 |     if (r8 == r3) {
    0x0800bc04 beq 0x800bbc0                                                     |         goto label_0;
                                                                                 |     }
    0x0800bc08 ldrb r3, [r8, 0xa]                                                |     r3 = *((r8 + 0xa));
    0x0800bc0c cmp r3, 1                                                         |     
                                                                                 |     if (r3 != 1) {
    0x0800bc10 bne 0x800bbc0                                                     |         goto label_0;
                                                                                 |     }
    0x0800bc14 ldr r0, [r4, 0x74]                                                |     r0 = *((r4 + 0x74));
    0x0800bc18 mov r3, 0                                                         |     r3 = 0;
    0x0800bc1c mov r1, r4                                                        |     r1 = r4;
    0x0800bc20 mov r2, r3                                                        |     r2 = r3;
    0x0800bc24 ldr r0, [r0, 0x660]                                               |     r0 = *((r0 + 0x660));
    0x0800bc28 cmp r0, r3                                                        |     
                                                                                 |     if (r0 != r3) {
    0x0800bc2c beq 0x800bc40                                                     |         
    0x0800bc30 mov r0, 4                                                         |         r0 = 4;
    0x0800bc34 stmdaeq r0, {r4, r5, r6, fp, ip, sp, pc}                          |         __asm ("stmdaeq r0, {r4, r5, r6, fp, ip, sp, pc}");
    0x0800bc38 cmp r0, 0                                                         |         
                                                                                 |         if (r0 != 0) {
    0x0800bc3c bne 0x800bd1c                                                     |             goto label_6;
                                                                                 |         }
                                                                                 |     }
    0x0800bc40 add r3, sp, 0x100                                                 |     r3 += var_100h;
    0x0800bc44 mov r2, 2                                                         |     r2 = 2;
    0x0800bc48 add r3, r3, r6, lsl 2                                             |     r3 += (r6 << 2);
    0x0800bc4c add r6, r6, 1                                                     |     r6++;
    0x0800bc50 cmp r6, 0x3f                                                      |     
    0x0800bc54 strb r2, [r8, 0xa]                                                |     *((r8 + 0xa)) = r2;
    0x0800bc58 str r4, [r3, -0x100]                                              |     var_0h = r4;
                                                                                 |     if (r6 < 0x3f) {
    0x0800bc5c bls 0x800bbc0                                                     |         goto label_0;
                                                                                 |     }
    0x0800bc60 mov r5, 1                                                         |     r5 = 1;
                                                                                 | label_3:
    0x0800bc64 mov r3, sp                                                        |     r3 = sp;
    0x0800bc68 bic r3, r3, 0x1fc0                                                |     r3 = BIT_MASK (r3, 0x1fc0);
    0x0800bc6c bic r3, r3, 0x3f                                                  |     r3 = BIT_MASK (r3, 0x3f);
    0x0800bc70 ldr r2, [r3, 4]                                                   |     r2 = *((r3 + 4));
    0x0800bc74 sub r2, r2, 1                                                     |     r2--;
    0x0800bc78 str r2, [r3, 4]                                                   |     *((r3 + 4)) = r2;
    0x0800bc7c cmp r2, 0                                                         |     
                                                                                 |     if (r2 == 0) {
    0x0800bc80 beq 0x800bd08                                                     |         goto label_7;
                                                                                 |     }
                                                                                 | label_4:
    0x0800bc84 cmp r6, 0                                                         |     
                                                                                 |     if (r6 == 0) {
    0x0800bc88 beq 0x800bcd8                                                     |         goto label_8;
                                                                                 |     }
    0x0800bc8c add r4, sp, r6, lsl 2                                             |     r4 = sp + (r6 << 2);
    0x0800bc90 b 0x800bc9c                                                       |     goto label_2;
                                                                                 | label_1:
    0x0800bc94 cmp r6, 0                                                         |     
                                                                                 |     if (r6 == 0) {
    0x0800bc98 beq 0x800bcd8                                                     |         goto label_8;
                                                                                 |     }
                                                                                 | label_2:
    0x0800bc9c ldr r0, [r4, -4]!                                                 |     r0 = *((r4 -= 4));
    0x0800bca0 sub r6, r6, 1                                                     |     r6--;
    0x0800bca4 cmp r0, 0                                                         |     
                                                                                 |     if (r0 == 0) {
    0x0800bca8 beq 0x800bcec                                                     |         goto label_9;
                                                                                 |     }
    0x0800bcac pld [r0]                                                          |     __asm ("pld [r0]");
                                                                                 |     do {
    0x0800bcb0 ldrex r3, [r0]                                                    |         __asm ("ldrex r3, [r0]");
    0x0800bcb4 sub r3, r3, 1                                                     |         r3--;
    0x0800bcb8 strex r2, r3, [r0]                                                |         __asm ("strex r2, r3, [r0]");
    0x0800bcbc teq r2, 0                                                         |         __asm ("teq r2, 0");
    0x0800bcc0 bne 0x800bcb0                                                     |         
                                                                                 |     } while (r0 != 0);
    0x0800bcc4 cmp r3, 0                                                         |     
                                                                                 |     if (r3 != 0) {
    0x0800bcc8 bne 0x800bc94                                                     |         goto label_1;
                                                                                 |     }
    0x0800bccc stmdaeq r1, {r0, r1, r3, r4, r6, r7, sb, sl, fp, lr, pc}          |     __asm ("stmdaeq r1, {r0, r1, r3, r4, r6, r7, sb, sl, fp, lr, pc}");
    0x0800bcd0 cmp r6, 0                                                         |     
                                                                                 |     if (r6 != 0) {
    0x0800bcd4 bne 0x800bc9c                                                     |         goto label_2;
                                                                                 |     }
                                                                                 | label_8:
    0x0800bcd8 mov r0, r5                                                        |     r0 = r5;
    0x0800bcdc add sp, sp, 0x100                                                 |     
    0x0800bce0 pop {r4, r5, r6, r7, r8, pc}                                      |     
                                                                                 | label_5:
    0x0800bce4 mov r5, 2                                                         |     r5 = 2;
    0x0800bce8 b 0x800bc64                                                       |     goto label_3;
                                                                                 | label_9:
    0x0800bcec mov r3, r0                                                        |     r3 = r0;
    0x0800bcf0 mov r2, 9                                                         |     r2 = 9;
    0x0800bcf4 mov r1, 0xa1                                                      |     r1 = 0xa1;
    0x0800bcf8 stmdaeq r0, {r4, r7, sb, sl, sp, lr, pc}                          |     __asm ("stmdaeq r0, {r4, r7, sb, sl, sp, lr, pc}");
    0x0800bcfc stmdaeq r0, {r4, r7, sb, sl, sp, lr, pc}                          |     __asm ("stmdaeq r0, {r4, r7, sb, sl, sp, lr, pc}");
    0x0800bd00 stmdaeq r1, {r0, r1, r2, r3, r7, sb, sl, fp, lr, pc}              |     __asm ("stmdaeq r1, {r0, r1, r2, r3, r7, sb, sl, fp, lr, pc}");
    0x0800bd04 b 0x800bc94                                                       |     goto label_1;
                                                                                 | label_7:
    0x0800bd08 ldr r3, [r3]                                                      |     r3 = *(r3);
    0x0800bd0c tst r3, 2                                                         |     
                                                                                 |     if ((r3 & 2) == 0) {
    0x0800bd10 beq 0x800bc84                                                     |         goto label_4;
                                                                                 |     }
    0x0800bd14 stmdaeq r1, {r0, r1, r3, r4, r5, r6, sb, sl, fp, lr, pc}          |     __asm ("stmdaeq r1, {r0, r1, r3, r4, r5, r6, sb, sl, fp, lr, pc}");
    0x0800bd18 b 0x800bc84                                                       |     goto label_4;
                                                                                 | label_6:
    0x0800bd1c mov r5, 0                                                         |     r5 = 0;
    0x0800bd20 b 0x800bc64                                                       |     goto label_3;
                                                                                 | }
    ; assembly                                                                       | /* r2dec pseudo code output */
                                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/netfilter/nf_conntrack.ko @ 0x800bd24 */
                                                                                     | #include <stdint.h>
                                                                                     |  
                                                                                     | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                                     |  
    ; (fcn) sym.ecache_work ()                                                       | void ecache_work (int32_t arg1) {
                                                                                     |     int32_t var_0h;
                                                                                     |     r0 = arg1;
    0x0800bd24 push {r4, lr}                                                         |     
    0x0800bd28 mov r4, r0                                                            |     r4 = r0;
    0x0800bd2c mov r3, sp                                                            |     r3 = sp;
    0x0800bd30 bic r3, r3, 0x1fc0                                                    |     r3 = BIT_MASK (r3, 0x1fc0);
    0x0800bd34 bic r3, r3, 0x3f                                                      |     r3 = BIT_MASK (r3, 0x3f);
    0x0800bd38 ldr r2, [r3, 4]                                                       |     r2 = *((r3 + 4));
    0x0800bd3c add r2, r2, 0x200                                                     |     r2 += 0x200;
    0x0800bd40 str r2, [r3, 4]                                                       |     *((r3 + 4)) = r2;
    0x0800bd44 ldr r0, [r0, 0x4c]                                                    |     r0 = *((r0 + 0x4c));
    0x0800bd48 bl 0x800bb84                                                          |     r0 = ecache_work_evict_list ();
    0x0800bd4c mov r3, r0                                                            |     r3 = r0;
    0x0800bd50 cmp r3, 0                                                             |     
    0x0800bd54 ldr r0, [pc, 0x60]                                                    |     r0 = *(0x800bdb8);
                                                                                     |     if (r3 == 0) {
    0x0800bd58 beq 0x800bda8                                                         |         goto label_0;
                                                                                     |     }
    0x0800bd5c cmp r3, 1                                                             |     
                                                                                     |     if (r3 != 1) {
    0x0800bd60 beq 0x800bd78                                                         |         
    0x0800bd64 mov r1, 0x200                                                         |         r1 = 0x200;
    0x0800bd68 stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}                      |         __asm ("stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}");
    0x0800bd6c mov r3, 0                                                             |         r3 = 0;
    0x0800bd70 strb r3, [r4, 0x2c]                                                   |         *((r4 + 0x2c)) = r3;
    0x0800bd74 pop {r4, pc}                                                          |         
                                                                                     |     }
    0x0800bd78 mov r1, 0x200                                                         |     r1 = 0x200;
    0x0800bd7c stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}                      |     __asm ("stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}");
    0x0800bd80 mov r1, 0                                                             |     r1 = 0;
    0x0800bd84 mov r3, r1                                                            |     r3 = r1;
                                                                                     |     do {
    0x0800bd88 stmdaeq r1, {r0, r1, r2, r3, r4, r6, r7, sb, sl, fp, lr, pc}          |         __asm ("stmdaeq r1, {r0, r1, r2, r3, r4, r6, r7, sb, sl, fp, lr, pc}");
    0x0800bd8c stmdaeq r1, {r0, r1, r2, r3, r4, r6, r7, sb, sl, fp, lr, pc}          |         __asm ("stmdaeq r1, {r0, r1, r2, r3, r4, r6, r7, sb, sl, fp, lr, pc}");
    0x0800bd90 strb r1, [r4, 0x2c]                                                   |         *((r4 + 0x2c)) = r1;
    0x0800bd94 mov r2, r4                                                            |         r2 = r4;
    0x0800bd98 ldr r1, [r0]                                                          |         r1 = *(r0);
    0x0800bd9c mov r0, 1                                                             |         r0 = 1;
    0x0800bda0 pop {r4, lr}                                                          |         
    0x0800bda4 stmdaeq r1, {r0, r1, r5, r6, r7, sb, sl, fp, lr, pc}                  |         __asm ("stmdaeq r1, {r0, r1, r5, r6, r7, sb, sl, fp, lr, pc}");
                                                                                     | label_0:
    0x0800bda8 mov r1, 0x200                                                         |         r1 = 0x200;
    0x0800bdac stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}                      |         __asm ("stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}");
    0x0800bdb0 mov r1, 1                                                             |         r1 = 1;
    0x0800bdb4 mov r3, 0xa                                                           |         r3 = 0xa;
    0x0800bdb8 b 0x800bd88                                                           |         
                                                                                     |     } while (1);
                                                                                     | }
    ; assembly                                                               | /* r2dec pseudo code output */
                                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/netfilter/nf_conntrack.ko @ 0x8001e80 */
                                                                             | #include <stdint.h>
                                                                             |  
                                                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                             |  
    ; (fcn) sym.nf_conntrack_hash_check_insert ()                            | void nf_conntrack_hash_check_insert (int32_t arg1) {
                                                                             |     int32_t var_0h;
                                                                             |     r0 = arg1;
    0x08001e80 push {r4, r5, r6, r7, r8, sb, sl, lr}                         |     
    0x08001e84 mov r4, r0                                                    |     r4 = r0;
    0x08001e88 mov r3, sp                                                    |     r3 = sp;
    0x08001e8c ldr r6, [r0, 0x74]                                            |     r6 = *((r0 + 0x74));
    0x08001e90 bic r3, r3, 0x1fc0                                            |     r3 = BIT_MASK (r3, 0x1fc0);
    0x08001e94 bic r3, r3, 0x3f                                              |     r3 = BIT_MASK (r3, 0x3f);
    0x08001e98 ldr r2, [r3, 4]                                               |     r2 = *((r3 + 4));
    0x08001e9c add r2, r2, 0x200                                             |     r2 += 0x200;
    0x08001ea0 str r2, [r3, 4]                                               |     *((r3 + 4)) = r2;
    0x08001ea4 stmdaeq r0, {r4, r5, r6, r8, sb, sl, fp, sp, lr, pc}          |     __asm ("stmdaeq r0, {r4, r5, r6, r8, sb, sl, fp, sp, lr, pc}");
    0x08001ea8 stmdaeq r0, {r4, r5, r6, r8, sb, sl, fp, sp, lr, pc}          |     __asm ("stmdaeq r0, {r4, r5, r6, r8, sb, sl, fp, sp, lr, pc}");
    0x08001eac add r8, r0, 0x14                                              |     r8 = r0 + 0x14;
    0x08001eb0 add r7, r0, 0x44                                              |     r7 = r0 + 0x44;
                                                                             |     do {
                                                                             | label_1:
    0x08001eb4 ldr sl, [sb, 0x10]                                            |         sl = *((sb + 0x10));
    0x08001eb8 tst sl, 1                                                     |         
                                                                             |         if ((sl & 1) != 0) {
    0x08001ebc bne 0x8002040                                                 |             goto label_7;
                                                                             |         }
    0x08001ec0 mov r1, r6                                                    |         r1 = r6;
    0x08001ec4 mov r0, r8                                                    |         r0 = r8;
    0x08001ec8 bl 0x800086c                                                  |         hash_conntrack_raw ();
    0x08001ecc ldr r5, [sb, 0x18]                                            |         r5 = *((sb + 0x18));
    0x08001ed0 mov r3, r0                                                    |         r3 = r0;
    0x08001ed4 mov r1, r6                                                    |         r1 = r6;
    0x08001ed8 mov r0, r7                                                    |         r0 = r7;
    0x08001edc umull r3, r5, r5, r3                                          |         r3:r5 = r5 * r3;
    0x08001ee0 bl 0x800086c                                                  |         hash_conntrack_raw ();
    0x08001ee4 ldr r1, [sb, 0x18]                                            |         r1 = *((sb + 0x18));
    0x08001ee8 mov r3, r0                                                    |         r3 = r0;
    0x08001eec mov r2, sl                                                    |         r2 = sl;
    0x08001ef0 mov r0, r5                                                    |         r0 = r5;
    0x08001ef4 umull r3, sl, r1, r3                                          |         r3:sl = r1 * r3;
    0x08001ef8 mov r1, sl                                                    |         r1 = sl;
    0x08001efc bl 0x80007f0                                                  |         r0 = nf_conntrack_double_lock_constprop_0 ();
    0x08001f00 cmp r0, 0                                                     |         
    0x08001f04 bne 0x8001eb4                                                 |         
                                                                             |     } while (r0 != 0);
    0x08001f08 ldr r7, [sb]                                                  |     r7 = *(sb);
    0x08001f0c ldr r3, [r7, r5, lsl 2]                                       |     offset_0 = r5 << 2;
                                                                             |     r3 = *((r7 + offset_0));
    0x08001f10 tst r3, 1                                                     |     
                                                                             |     if ((r3 & 1) != 0) {
    0x08001f14 bne 0x8002044                                                 |         goto label_8;
                                                                             |     }
    0x08001f18 ldr r0, [r4, 0x14]                                            |     r0 = *((r4 + 0x14));
    0x08001f1c mvn lr, 0xb                                                   |     lr = ~0xb;
    0x08001f20 mov ip, 1                                                     |     
    0x08001f24 b 0x8001f34                                                   |     
                                                                             |     while (r0 != r2) {
                                                                             | label_0:
    0x08001f28 ldr r3, [r3]                                                  |         r3 = *(r3);
    0x08001f2c tst r3, 1                                                     |         
                                                                             |         if ((r3 & 1) != 0) {
    0x08001f30 bne 0x8002044                                                 |             goto label_8;
                                                                             |         }
    0x08001f34 ldr r2, [r3, 8]                                               |         r2 = *((r3 + 8));
    0x08001f38 cmp r0, r2                                                    |         
    0x08001f3c bne 0x8001f28                                                 |         
                                                                             |     }
    0x08001f40 ldr r1, [r4, 0x18]                                            |     r1 = *((r4 + 0x18));
    0x08001f44 ldr r2, [r3, 0xc]                                             |     r2 = *((r3 + 0xc));
    0x08001f48 cmp r1, r2                                                    |     
                                                                             |     if (r1 != r2) {
    0x08001f4c bne 0x8001f28                                                 |         goto label_0;
                                                                             |     }
    0x08001f50 ldr r1, [r4, 0x1c]                                            |     r1 = *((r4 + 0x1c));
    0x08001f54 ldr r2, [r3, 0x10]                                            |     r2 = *((r3 + 0x10));
    0x08001f58 cmp r1, r2                                                    |     
                                                                             |     if (r1 != r2) {
    0x08001f5c bne 0x8001f28                                                 |         goto label_0;
                                                                             |     }
    0x08001f60 ldr r1, [r4, 0x20]                                            |     r1 = *((r4 + 0x20));
    0x08001f64 ldr r2, [r3, 0x14]                                            |     r2 = *((r3 + 0x14));
    0x08001f68 cmp r1, r2                                                    |     
                                                                             |     if (r1 != r2) {
    0x08001f6c bne 0x8001f28                                                 |         goto label_0;
                                                                             |     }
    0x08001f70 ldr r1, [r4, 0x24]                                            |     r1 = *((r4 + 0x24));
    0x08001f74 ldr r2, [r3, 0x18]                                            |     r2 = *((r3 + 0x18));
    0x08001f78 cmp r1, r2                                                    |     
                                                                             |     if (r1 != r2) {
    0x08001f7c bne 0x8001f28                                                 |         goto label_0;
                                                                             |     }
    0x08001f80 ldr r1, [r4, 0x28]                                            |     r1 = *((r4 + 0x28));
    0x08001f84 ldr r2, [r3, 0x1c]                                            |     r2 = *((r3 + 0x1c));
    0x08001f88 cmp r1, r2                                                    |     
                                                                             |     if (r1 != r2) {
    0x08001f8c bne 0x8001f28                                                 |         goto label_0;
                                                                             |     }
    0x08001f90 ldr r1, [r4, 0x2c]                                            |     r1 = *((r4 + 0x2c));
    0x08001f94 ldr r2, [r3, 0x20]                                            |     r2 = *((r3 + 0x20));
    0x08001f98 cmp r1, r2                                                    |     
                                                                             |     if (r1 != r2) {
    0x08001f9c bne 0x8001f28                                                 |         goto label_0;
                                                                             |     }
    0x08001fa0 ldr r1, [r4, 0x30]                                            |     r1 = *((r4 + 0x30));
    0x08001fa4 ldr r2, [r3, 0x24]                                            |     r2 = *((r3 + 0x24));
    0x08001fa8 cmp r1, r2                                                    |     
                                                                             |     if (r1 != r2) {
    0x08001fac bne 0x8001f28                                                 |         goto label_0;
                                                                             |     }
    0x08001fb0 ldr r1, [r4, 0x34]                                            |     r1 = *((r4 + 0x34));
    0x08001fb4 ldr r2, [r3, 0x28]                                            |     r2 = *((r3 + 0x28));
    0x08001fb8 cmp r1, r2                                                    |     
                                                                             |     if (r1 != r2) {
    0x08001fbc bne 0x8001f28                                                 |         goto label_0;
                                                                             |     }
    0x08001fc0 ldr r2, [r4, 0x38]                                            |     r2 = *((r4 + 0x38));
    0x08001fc4 ldr r1, [r3, 0x2c]                                            |     r1 = *((r3 + 0x2c));
    0x08001fc8 eor r2, r2, r1                                                |     r2 ^= r1;
    0x08001fcc bics r2, r2, 0xff000000                                       |     __asm ("bics r2, r2, 0xff000000");
                                                                             |     if (r1 != r2) {
    0x08001fd0 bne 0x8001f28                                                 |         goto label_0;
                                                                             |     }
    0x08001fd4 ldrb r2, [r3, 0x2f]                                           |     r2 = *((r3 + 0x2f));
    0x08001fd8 ldrb r8, [r4, 0xb]                                            |     r8 = *((r4 + 0xb));
    0x08001fdc mov r1, r2                                                    |     r1 = r2;
    0x08001fe0 add r2, r2, r2, lsl 1                                         |     r2 += (r2 << 1);
    0x08001fe4 lsl r1, ip, r1                                                |     r1 = ip << r1;
    0x08001fe8 sub r2, lr, r2, lsl 4                                         |     r2 = lr - (r2 << 4);
    0x08001fec and r8, r8, r1                                                |     r8 &= r1;
    0x08001ff0 add r2, r3, r2                                                |     r2 = r3 + r2;
    0x08001ff4 ldrb sb, [r2, 0xb]                                            |     sb = *((r2 + 0xb));
    0x08001ff8 ands sb, sb, r1                                               |     sb &= r1;
                                                                             |     if (sb != sb) {
    0x08001ffc bne 0x80021ac                                                 |         goto label_9;
                                                                             |     }
    0x08002000 cmp r8, 0                                                     |     
                                                                             |     if (r8 != 0) {
    0x08002004 bne 0x80021b8                                                 |         goto label_10;
                                                                             |     }
                                                                             | label_5:
    0x08002008 ldr r1, [r2, 0x6c]                                            |     r1 = *((r2 + 0x6c));
    0x0800200c tst r1, 8                                                     |     
                                                                             |     if ((r1 & 8) == 0) {
    0x08002010 beq 0x8001f28                                                 |         goto label_0;
                                                                             |     }
    0x08002014 ldr r2, [r2, 0x74]                                            |     r2 = *((r2 + 0x74));
    0x08002018 cmp r6, r2                                                    |     
                                                                             |     if (r6 != r2) {
    0x0800201c bne 0x8001f28                                                 |         goto label_0;
                                                                             |     }
                                                                             | label_3:
    0x08002020 mov r1, sl                                                    |     r1 = sl;
    0x08002024 mov r0, r5                                                    |     r0 = r5;
    0x08002028 bl 0x800060c                                                  |     nf_conntrack_double_unlock ();
    0x0800202c ldr r0, [pc, 0x1b0]                                           |     r0 = *(0x80021e0);
    0x08002030 mov r1, 0x200                                                 |     r1 = 0x200;
    0x08002034 stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}              |     __asm ("stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}");
    0x08002038 mvn r0, 0x10                                                  |     r0 = ~0x10;
    0x0800203c pop {r4, r5, r6, r7, r8, sb, sl, pc}                          |     
                                                                             | label_7:
    0x08002040 b 0x8001eb4                                                   |     goto label_1;
                                                                             | label_8:
    0x08002044 ldr r3, [r7, sl, lsl 2]                                       |     offset_1 = sl << 2;
                                                                             |     r3 = *((r7 + offset_1));
    0x08002048 tst r3, 1                                                     |     
                                                                             |     if ((r3 & 1) != 0) {
    0x0800204c bne 0x8002164                                                 |         goto label_11;
                                                                             |     }
    0x08002050 ldr ip, [r4, 0x44]                                            |     ip = *((r4 + 0x44));
    0x08002054 mvn r7, 0xb                                                   |     r7 = ~0xb;
    0x08002058 mov lr, 1                                                     |     lr = 1;
    0x0800205c b 0x800206c                                                   |     
                                                                             |     while (ip != r2) {
                                                                             | label_2:
    0x08002060 ldr r3, [r3]                                                  |         r3 = *(r3);
    0x08002064 tst r3, 1                                                     |         
                                                                             |         if ((r3 & 1) != 0) {
    0x08002068 bne 0x8002164                                                 |             goto label_11;
                                                                             |         }
                                                                             | label_4:
    0x0800206c ldr r2, [r3, 8]                                               |         r2 = *((r3 + 8));
    0x08002070 cmp ip, r2                                                    |         
    0x08002074 bne 0x8002060                                                 |         
                                                                             |     }
    0x08002078 ldr r1, [r4, 0x48]                                            |     r1 = *((r4 + 0x48));
    0x0800207c ldr r2, [r3, 0xc]                                             |     r2 = *((r3 + 0xc));
    0x08002080 cmp r1, r2                                                    |     
                                                                             |     if (r1 != r2) {
    0x08002084 bne 0x8002060                                                 |         goto label_2;
                                                                             |     }
    0x08002088 ldr r1, [r4, 0x4c]                                            |     r1 = *((r4 + 0x4c));
    0x0800208c ldr r2, [r3, 0x10]                                            |     r2 = *((r3 + 0x10));
    0x08002090 cmp r1, r2                                                    |     
                                                                             |     if (r1 != r2) {
    0x08002094 bne 0x8002060                                                 |         goto label_2;
                                                                             |     }
    0x08002098 ldr r1, [r4, 0x50]                                            |     r1 = *((r4 + 0x50));
    0x0800209c ldr r2, [r3, 0x14]                                            |     r2 = *((r3 + 0x14));
    0x080020a0 cmp r1, r2                                                    |     
                                                                             |     if (r1 != r2) {
    0x080020a4 bne 0x8002060                                                 |         goto label_2;
                                                                             |     }
    0x080020a8 ldr r1, [r4, 0x54]                                            |     r1 = *((r4 + 0x54));
    0x080020ac ldr r2, [r3, 0x18]                                            |     r2 = *((r3 + 0x18));
    0x080020b0 cmp r1, r2                                                    |     
                                                                             |     if (r1 != r2) {
    0x080020b4 bne 0x8002060                                                 |         goto label_2;
                                                                             |     }
    0x080020b8 ldr r1, [r4, 0x58]                                            |     r1 = *((r4 + 0x58));
    0x080020bc ldr r2, [r3, 0x1c]                                            |     r2 = *((r3 + 0x1c));
    0x080020c0 cmp r1, r2                                                    |     
                                                                             |     if (r1 != r2) {
    0x080020c4 bne 0x8002060                                                 |         goto label_2;
                                                                             |     }
    0x080020c8 ldr r1, [r4, 0x5c]                                            |     r1 = *((r4 + 0x5c));
    0x080020cc ldr r2, [r3, 0x20]                                            |     r2 = *((r3 + 0x20));
    0x080020d0 cmp r1, r2                                                    |     
                                                                             |     if (r1 != r2) {
    0x080020d4 bne 0x8002060                                                 |         goto label_2;
                                                                             |     }
    0x080020d8 ldr r1, [r4, 0x60]                                            |     r1 = *((r4 + 0x60));
    0x080020dc ldr r2, [r3, 0x24]                                            |     r2 = *((r3 + 0x24));
    0x080020e0 cmp r1, r2                                                    |     
                                                                             |     if (r1 != r2) {
    0x080020e4 bne 0x8002060                                                 |         goto label_2;
                                                                             |     }
    0x080020e8 ldr r1, [r4, 0x64]                                            |     r1 = *((r4 + 0x64));
    0x080020ec ldr r2, [r3, 0x28]                                            |     r2 = *((r3 + 0x28));
    0x080020f0 cmp r1, r2                                                    |     
                                                                             |     if (r1 != r2) {
    0x080020f4 bne 0x8002060                                                 |         goto label_2;
                                                                             |     }
    0x080020f8 ldr r2, [r4, 0x68]                                            |     r2 = *((r4 + 0x68));
    0x080020fc ldr r1, [r3, 0x2c]                                            |     r1 = *((r3 + 0x2c));
    0x08002100 eor r2, r2, r1                                                |     r2 ^= r1;
    0x08002104 bics r2, r2, 0xff000000                                       |     __asm ("bics r2, r2, 0xff000000");
                                                                             |     if (r1 != r2) {
    0x08002108 bne 0x8002060                                                 |         goto label_2;
                                                                             |     }
    0x0800210c ldrb r2, [r3, 0x2f]                                           |     r2 = *((r3 + 0x2f));
    0x08002110 ldrb r8, [r4, 0xb]                                            |     r8 = *((r4 + 0xb));
    0x08002114 mov r1, r2                                                    |     r1 = r2;
    0x08002118 add r2, r2, r2, lsl 1                                         |     r2 += (r2 << 1);
    0x0800211c lsl r1, lr, r1                                                |     r1 = lr << r1;
    0x08002120 sub r2, r7, r2, lsl 4                                         |     r2 = r7 - (r2 << 4);
    0x08002124 and r8, r8, r1                                                |     r8 &= r1;
    0x08002128 add r2, r3, r2                                                |     r2 = r3 + r2;
    0x0800212c ldrb r0, [r2, 0xb]                                            |     r0 = *((r2 + 0xb));
    0x08002130 ands r0, r0, r1                                               |     r0 &= r1;
                                                                             |     if (r0 != r0) {
    0x08002134 bne 0x80021c8                                                 |         goto label_12;
                                                                             |     }
    0x08002138 cmp r8, 0                                                     |     
                                                                             |     if (r8 != 0) {
    0x0800213c bne 0x80021d4                                                 |         goto label_13;
                                                                             |     }
                                                                             | label_6:
    0x08002140 ldr r1, [r2, 0x6c]                                            |     r1 = *((r2 + 0x6c));
    0x08002144 tst r1, 8                                                     |     
                                                                             |     if ((r1 & 8) == 0) {
    0x08002148 beq 0x8002060                                                 |         goto label_2;
                                                                             |     }
    0x0800214c ldr r2, [r2, 0x74]                                            |     r2 = *((r2 + 0x74));
    0x08002150 cmp r6, r2                                                    |     
                                                                             |     if (r6 == r2) {
    0x08002154 beq 0x8002020                                                 |         goto label_3;
                                                                             |     }
    0x08002158 ldr r3, [r3]                                                  |     r3 = *(r3);
    0x0800215c tst r3, 1                                                     |     
                                                                             |     if ((r3 & 1) == 0) {
    0x08002160 beq 0x800206c                                                 |         goto label_4;
                                                                             |     }
                                                                             | label_11:
    0x08002164 mov r3, 2                                                     |     r3 = 2;
    0x08002168 mov r2, sl                                                    |     r2 = sl;
    0x0800216c str r3, [r4]                                                  |     *(r4) = r3;
    0x08002170 mov r0, r4                                                    |     r0 = r4;
    0x08002174 mov r1, r5                                                    |     r1 = r5;
    0x08002178 bl 0x8000070                                                  |     nf_conntrack_hash_insert ();
    0x0800217c mov r1, sl                                                    |     r1 = sl;
    0x08002180 mov r0, r5                                                    |     r0 = r5;
    0x08002184 bl 0x800060c                                                  |     nf_conntrack_double_unlock ();
    0x08002188 ldr r2, [r6, 0x65c]                                           |     r2 = *((r6 + 0x65c));
    0x0800218c ldr r0, [pc, 0x54]                                            |     r0 = .text;
    0x08002190 mov r1, 0x200                                                 |     r1 = 0x200;
    0x08002194 ldr r3, [r2, 8]                                               |     r3 = *((r2 + 8));
    0x08002198 add r3, r3, 1                                                 |     r3++;
    0x0800219c str r3, [r2, 8]                                               |     *((r2 + 8)) = r3;
    0x080021a0 stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}              |     __asm ("stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}");
    0x080021a4 mov r0, 0                                                     |     r0 = 0;
    0x080021a8 pop {r4, r5, r6, r7, r8, sb, sl, pc}                          |     
                                                                             | label_9:
    0x080021ac ldrh sb, [r2, 8]                                              |     sb = *((r2 + 8));
    0x080021b0 cmp r8, 0                                                     |     
                                                                             |     if (r8 != 0) {
    0x080021b4 beq 0x80021bc                                                 |         
                                                                             | label_10:
    0x080021b8 ldrh r8, [r4, 8]                                              |         r8 = *((r4 + 8));
                                                                             |     }
    0x080021bc cmp r8, sb                                                    |     
                                                                             |     if (r8 != sb) {
    0x080021c0 bne 0x8001f28                                                 |         goto label_0;
                                                                             |     }
    0x080021c4 b 0x8002008                                                   |     goto label_5;
                                                                             | label_12:
    0x080021c8 ldrh r0, [r2, 8]                                              |     r0 = *((r2 + 8));
    0x080021cc cmp r8, 0                                                     |     
                                                                             |     if (r8 != 0) {
    0x080021d0 beq 0x80021d8                                                 |         
                                                                             | label_13:
    0x080021d4 ldrh r8, [r4, 8]                                              |         r8 = *((r4 + 8));
                                                                             |     }
    0x080021d8 cmp r8, r0                                                    |     
                                                                             |     if (r8 != r0) {
    0x080021dc bne 0x8002060                                                 |         goto label_2;
                                                                             |     }
    0x080021e0 b 0x8002140                                                   |     goto label_6;
                                                                             | }
    ; assembly                                                                   | /* r2dec pseudo code output */
                                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/netfilter/nf_conntrack.ko @ 0x80089c0 */
                                                                                 | #include <stdint.h>
                                                                                 |  
                                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                                 | #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
                                                                                 |                                ((n & 0x0000ff00) <<  8) | \
                                                                                 |                                ((n & 0x00ff0000) >>  8) | \
                                                                                 |                                ((n & 0xff000000) >> 24)))
                                                                                 |  
    ; (fcn) sym.nf_conntrack_tcp_packet ()                                       | void nf_conntrack_tcp_packet (int32_t arg_b8h, int32_t arg1, int32_t arg2) {
                                                                                 |     int32_t var_0h;
                                                                                 |     int32_t var_ch;
                                                                                 |     int32_t var_10h;
                                                                                 |     int32_t var_14h;
                                                                                 |     int32_t var_18h;
                                                                                 |     int32_t var_1ch;
                                                                                 |     int32_t var_20h;
                                                                                 |     int32_t var_24h;
                                                                                 |     int32_t var_28h;
                                                                                 |     int32_t var_2ch;
                                                                                 |     int32_t var_30h;
                                                                                 |     int32_t var_34h;
                                                                                 |     int32_t var_38h;
                                                                                 |     int32_t var_3ch;
                                                                                 |     int32_t var_40h;
                                                                                 |     int32_t var_44h;
                                                                                 |     int32_t var_48h;
                                                                                 |     int32_t var_4eh;
                                                                                 |     int32_t var_54h;
                                                                                 |     int32_t var_68h;
                                                                                 |     int32_t var_94h;
                                                                                 |     r0 = arg1;
                                                                                 |     r1 = arg2;
    0x080089c0 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                         |     
    0x080089c4 mov r7, r2                                                        |     r7 = r2;
    0x080089c8 mov r6, r1                                                        |     r6 = r1;
    0x080089cc sub sp, sp, 0x94                                                  |     
    0x080089d0 ldr r5, [r1, 0xa8]                                                |     r5 = *((r1 + 0xa8));
    0x080089d4 mov r4, r0                                                        |     r4 = r0;
    0x080089d8 str r3, [sp, 0xc]                                                 |     var_ch = r3;
    0x080089dc ldrd r2, r3, [r1, 0x54]                                           |     __asm ("ldrd r2, r3, [r1, 0x54]");
    0x080089e0 ldr r8, [sp, 0xb8]                                                |     r8 = *(arg_b8h);
    0x080089e4 sub r3, r2, r3                                                    |     r3 = r2 - r3;
    0x080089e8 sub r3, r3, r7                                                    |     r3 -= r7;
    0x080089ec cmp r3, 0x13                                                      |     
    0x080089f0 ldr r3, [r0, 0x74]                                                |     r3 = *((r0 + 0x74));
    0x080089f4 str r3, [sp, 0x24]                                                |     var_24h = r3;
                                                                                 |     if (r3 > 0x13) {
    0x080089f8 bgt 0x8008b60                                                     |         goto label_26;
                                                                                 |     }
    0x080089fc cmp r1, 0                                                         |     
                                                                                 |     if (r1 == 0) {
    0x08008a00 beq 0x80092bc                                                     |         goto label_4;
                                                                                 |     }
    0x08008a04 mov r1, r7                                                        |     r1 = r7;
    0x08008a08 add r2, sp, 0x54                                                  |     r2 += var_54h;
    0x08008a0c mov r0, r6                                                        |     r0 = r6;
    0x08008a10 mov r3, 0x14                                                      |     r3 = 0x14;
    0x08008a14 stmdaeq r1, {r0, r1, r2, r3, r6, r7, sb, sl, fp, lr, pc}          |     __asm ("stmdaeq r1, {r0, r1, r2, r3, r6, r7, sb, sl, fp, lr, pc}");
    0x08008a18 cmp r0, 0                                                         |     
                                                                                 |     if (r0 < 0) {
    0x08008a1c blt 0x80092bc                                                     |         goto label_4;
                                                                                 |     }
    0x08008a20 ldr r2, [r6, 0x54]                                                |     r2 = *((r6 + 0x54));
    0x08008a24 add r5, sp, 0x54                                                  |     r5 += var_54h;
                                                                                 |     do {
    0x08008a28 ldrb r3, [r5, 0xc]                                                |         r3 = *((r5 + 0xc));
    0x08008a2c sub r2, r2, r7                                                    |         r2 -= r7;
    0x08008a30 ldr r1, [r8, 0x14]                                                |         r1 = *((r8 + 0x14));
    0x08008a34 lsr r3, r3, 4                                                     |         r3 >>= 4;
    0x08008a38 lsl r3, r3, 2                                                     |         r3 <<= 2;
    0x08008a3c cmp r3, 0x13                                                      |         
                                                                                 |         if (r3 <= 0x13) {
    0x08008a40 movgt r0, 0                                                       |             r0 = 0;
                                                                                 |         }
                                                                                 |         if (r3 > 0x13) {
    0x08008a44 movle r0, 1                                                       |             r0 = 1;
                                                                                 |         }
    0x08008a48 cmp r2, r3                                                        |         
                                                                                 |         if (r2 >= r3) {
    0x08008a4c orrlo r0, r0, 1                                                   |             r0 |= 1;
                                                                                 |         }
    0x08008a50 cmp r0, 0                                                         |         
                                                                                 |         if (r0 != 0) {
    0x08008a54 bne 0x8009da4                                                     |             goto label_27;
                                                                                 |         }
    0x08008a58 ldr r3, [r1, 0x654]                                               |         r3 = *((r1 + 0x654));
    0x08008a5c cmp r3, 0                                                         |         
                                                                                 |         if (r3 != 0) {
    0x08008a60 beq 0x8008a70                                                     |             
    0x08008a64 ldr r1, [r8]                                                      |             r1 = *(r8);
    0x08008a68 cmp r1, 0                                                         |             
                                                                                 |             if (r1 == 0) {
    0x08008a6c beq 0x8009560                                                     |                 goto label_28;
                                                                                 |             }
                                                                                 |         }
                                                                                 | label_14:
    0x08008a70 ldrb r3, [r5, 0xd]                                                |         r3 = *((r5 + 0xd));
    0x08008a74 stmdaeq r0, {r6, r8, sb, fp, lr, pc}                              |         __asm ("stmdaeq r0, {r6, r8, sb, fp, lr, pc}");
    0x08008a78 stmdaeq r0, {r6, r8, sb, fp, lr, pc}                              |         __asm ("stmdaeq r0, {r6, r8, sb, fp, lr, pc}");
    0x08008a7c and r3, r3, 0x37                                                  |         r3 &= 0x37;
    0x08008a80 add r3, sl, r3                                                    |         r3 = sl + r3;
    0x08008a84 ldrb r3, [r3, 0xd0]                                               |         r3 = *((r3 + 0xd0));
    0x08008a88 cmp r3, 0                                                         |         
                                                                                 |         if (r3 == 0) {
    0x08008a8c beq 0x8009d78                                                     |             goto label_29;
                                                                                 |         }
    0x08008a90 ldr r3, [r4, 0x6c]                                                |         r3 = *((r4 + 0x6c));
    0x08008a94 tst r3, 8                                                         |         
                                                                                 |         if ((r3 & 8) == 0) {
    0x08008a98 beq 0x8008b6c                                                     |             goto label_30;
                                                                                 |         }
                                                                                 | label_0:
    0x08008a9c mov r3, sp                                                        |         r3 = sp;
    0x08008aa0 bic r2, r3, 0x1fc0                                                |         r2 = BIT_MASK (r3, 0x1fc0);
    0x08008aa4 bic r2, r2, 0x3f                                                  |         r2 = BIT_MASK (r2, 0x3f);
    0x08008aa8 ldr r3, [r2, 4]                                                   |         r3 = *((r2 + 4));
    0x08008aac add r3, r3, 0x200                                                 |         r3 += 0x200;
    0x08008ab0 add r3, r3, 1                                                     |         r3++;
    0x08008ab4 str r3, [r2, 4]                                                   |         *((r2 + 4)) = r3;
    0x08008ab8 ldr r3, [sp, 0xc]                                                 |         r3 = var_ch;
    0x08008abc ldrb r2, [r5, 0xd]                                                |         r2 = *((r5 + 0xd));
    0x08008ac0 cmp r3, 2                                                         |         
    0x08008ac4 ldrb sb, [r4, 0xb8]                                               |         sb = *((r4 + 0xb8));
    0x08008ac8 str sb, [sp, 0x18]                                                |         var_18h = sb;
                                                                                 |         if (r3 > 2) {
    0x08008acc movls fp, 0                                                       |             
                                                                                 |         }
                                                                                 |         if (r3 <= 2) {
    0x08008ad0 movhi fp, 1                                                       |             
                                                                                 |         }
    0x08008ad4 tst r2, 4                                                         |         
                                                                                 |         if ((r2 & 4) != 0) {
    0x08008ad8 bne 0x8008b8c                                                     |             goto label_31;
                                                                                 |         }
    0x08008adc tst r2, 2                                                         |         
    0x08008ae0 ubfxne r3, r2, 4, 1                                               |         __asm ("ubfxne r3, r2, 4, 1");
                                                                                 |         if ((r2 & 2) == 0) {
    0x08008ae4 strne r3, [sp, 0x10]                                              |             var_10h = r3;
                                                                                 |         }
                                                                                 |         if ((r2 & 2) == 0) {
    0x08008ae8 bne 0x8008b04                                                     |             
    0x08008aec tst r2, 1                                                         |             
                                                                                 |             if ((r2 & 1) != 0) {
    0x08008af0 bne 0x80096cc                                                     |                 goto label_32;
                                                                                 |             }
    0x08008af4 tst r2, 0x10                                                      |             
                                                                                 |             if ((r2 & 0x10) != 0) {
    0x08008af8 moveq r3, 5                                                       |                 r3 = 5;
                                                                                 |             }
                                                                                 |             if ((r2 & 0x10) == 0) {
    0x08008afc movne r3, 3                                                       |                 r3 = 3;
                                                                                 |             }
    0x08008b00 str r3, [sp, 0x10]                                                |             var_10h = r3;
                                                                                 |         }
                                                                                 | label_1:
    0x08008b04 ldr r0, [sp, 0x10]                                                |         r0 = var_10h;
    0x08008b08 mov r3, 0x3c                                                      |         r3 = 0x3c;
    0x08008b0c mov r1, 0xa                                                       |         r1 = 0xa;
    0x08008b10 mul r3, r3, fp                                                    |         r3 *= fp;
    0x08008b14 mla r3, r1, r0, r3                                                |         __asm ("mla r3, r1, r0, r3");
    0x08008b18 add r3, sl, r3                                                    |         r3 = sl + r3;
    0x08008b1c add r3, r3, sb                                                    |         r3 += sb;
    0x08008b20 ldrb r8, [r3, 0x58]                                               |         r8 = *((r3 + 0x58));
    0x08008b24 sub r3, r8, 1                                                     |         r3 = r8 - 1;
    0x08008b28 cmp r3, r1                                                        |         
                                                                                 |         if (r3 > r1) {
    0x08008b2c ldrls pc, [pc, r3, lsl 2]                                         |             offset_0 = r3 << 2;
                                                                                 |             pc = *((pc + offset_0));
                                                                                 |         }
    0x08008b30 b 0x8008b98                                                       |         goto label_33;
    0x08008b34 stmdaeq r0, {r4, r5, r6}                                          |         __asm ("stmdaeq r0, {r4, r5, r6}");
    0x08008b38 stmdaeq r0, {r4, r5, r6}                                          |         __asm ("stmdaeq r0, {r4, r5, r6}");
    0x08008b3c stmdaeq r0, {r4, r5, r6}                                          |         __asm ("stmdaeq r0, {r4, r5, r6}");
    0x08008b40 stmdaeq r0, {r4, r5, r6}                                          |         __asm ("stmdaeq r0, {r4, r5, r6}");
    0x08008b44 stmdaeq r0, {r4, r5, r6}                                          |         __asm ("stmdaeq r0, {r4, r5, r6}");
    0x08008b48 stmdaeq r0, {r4, r5, r6}                                          |         __asm ("stmdaeq r0, {r4, r5, r6}");
    0x08008b4c stmdaeq r0, {r4, r5, r6}                                          |         __asm ("stmdaeq r0, {r4, r5, r6}");
    0x08008b50 stmdaeq r0, {r4, r5, r6}                                          |         __asm ("stmdaeq r0, {r4, r5, r6}");
    0x08008b54 stmdaeq r0, {r4, r5, r6}                                          |         __asm ("stmdaeq r0, {r4, r5, r6}");
    0x08008b58 stmdaeq r0, {r4, r5, r6}                                          |         __asm ("stmdaeq r0, {r4, r5, r6}");
    0x08008b5c stmdaeq r0, {r4, r5, r6}                                          |         __asm ("stmdaeq r0, {r4, r5, r6}");
                                                                                 | label_26:
    0x08008b60 adds r5, r5, r7                                                   |         r5 += r7;
    0x08008b64 bne 0x8008a28                                                     |         
                                                                                 |     } while (r5 != r5);
    0x08008b68 b 0x80092bc                                                       |     goto label_4;
                                                                                 | label_30:
    0x08008b6c mov r3, r5                                                        |     r3 = r5;
    0x08008b70 mov r2, r7                                                        |     r2 = r7;
    0x08008b74 mov r1, r6                                                        |     r1 = r6;
    0x08008b78 mov r0, r4                                                        |     r0 = r4;
    0x08008b7c bl 0x8008840                                                      |     r0 = tcp_new ();
    0x08008b80 cmp r0, 0                                                         |     
                                                                                 |     if (r0 != 0) {
    0x08008b84 bne 0x8008a9c                                                     |         goto label_0;
                                                                                 |     }
    0x08008b88 b 0x80092bc                                                       |     goto label_4;
                                                                                 | label_31:
    0x08008b8c mov r3, 4                                                         |     r3 = 4;
    0x08008b90 str r3, [sp, 0x10]                                                |     var_10h = r3;
    0x08008b94 b 0x8008b04                                                       |     goto label_1;
                                                                                 | label_33:
    0x08008b98 ldr r3, [sp, 0xc]                                                 |     r3 = var_ch;
    0x08008b9c ldr r0, [r5, 4]                                                   |     r0 = *((r5 + 4));
    0x08008ba0 cmp r3, 2                                                         |     
    0x08008ba4 str r0, [sp, 0x30]                                                |     var_30h = r0;
    0x08008ba8 rev r0, r0                                                        |     r0 = SWAP32 (r0);
    0x08008bac str r0, [sp, 0x20]                                                |     var_20h = r0;
                                                                                 |     if (r3 > 2) {
    0x08008bb0 movls r3, 1                                                       |         r3 = 1;
                                                                                 |     }
                                                                                 |     if (r3 <= 2) {
    0x08008bb4 movhi r3, 0                                                       |         r3 = 0;
                                                                                 |     }
    0x08008bb8 mov r1, r3                                                        |     r1 = r3;
    0x08008bbc str r3, [sp, 0x14]                                                |     var_14h = r3;
    0x08008bc0 mov r3, 0x14                                                      |     r3 = 0x14;
    0x08008bc4 mla r3, r3, r1, r4                                                |     __asm ("mla r3, r3, r1, r4");
    0x08008bc8 ldrb r1, [r3, 0xa1]                                               |     r1 = *((r3 + 0xa1));
    0x08008bcc ldr r3, [r5, 8]                                                   |     r3 = *((r5 + 8));
    0x08008bd0 rev r3, r3                                                        |     r3 = SWAP32 (r3);
    0x08008bd4 str r3, [sp, 0x1c]                                                |     var_1ch = r3;
                                                                                 |     if (r3 <= 2) {
    0x08008bd8 movhi r3, 0x14                                                    |         r3 = 0x14;
                                                                                 |     }
                                                                                 |     if (r3 > 2) {
    0x08008bdc movls r3, 0                                                       |         r3 = 0;
                                                                                 |     }
    0x08008be0 str r3, [sp, 0x34]                                                |     var_34h = r3;
    0x08008be4 add r3, r3, 0x90                                                  |     r3 += 0x90;
    0x08008be8 ldrb sb, [r5, 0xc]                                                |     sb = *((r5 + 0xc));
    0x08008bec add r3, r4, r3                                                    |     r3 = r4 + r3;
    0x08008bf0 tst r1, 2                                                         |     
    0x08008bf4 str r3, [sp, 0x44]                                                |     var_44h = r3;
    0x08008bf8 ldr r1, [r6, 0x54]                                                |     r1 = *((r6 + 0x54));
    0x08008bfc ldrh r3, [r5, 0xe]                                                |     r3 = *((r5 + 0xe));
    0x08008c00 lsr sb, sb, 4                                                     |     sb >>= 4;
    0x08008c04 ldr r0, [sp, 0x20]                                                |     r0 = var_20h;
    0x08008c08 rev16 ip, r3                                                      |     __asm ("rev16 ip, r3");
    0x08008c0c lsl sb, sb, 2                                                     |     sb <<= 2;
    0x08008c10 sub r3, r1, r7                                                    |     r3 = r1 - r7;
    0x08008c14 strh ip, [sp, 0x4e]                                               |     var_4eh = ip;
    0x08008c18 sub r3, r3, sb                                                    |     r3 -= sb;
    0x08008c1c add r3, r3, r0                                                    |     r3 += r0;
    0x08008c20 and r0, r2, 1                                                     |     r0 = r2 & 1;
    0x08008c24 add r3, r3, r0                                                    |     r3 += r0;
    0x08008c28 ubfx r2, r2, 1, 1                                                 |     r2 = (r2 >> 1) & ((1 << 1) - 1);
    0x08008c2c add r3, r3, r2                                                    |     r3 += r2;
    0x08008c30 ldr r2, [r4, 0x74]                                                |     r2 = *((r4 + 0x74));
    0x08008c34 str r3, [sp, 0x28]                                                |     var_28h = r3;
    0x08008c38 uxth r3, ip                                                       |     r3 = (int16_t) ip;
    0x08008c3c str r2, [sp, 0x40]                                                |     var_40h = r2;
    0x08008c40 str r3, [sp, 0x38]                                                |     var_38h = r3;
    0x08008c44 str r3, [sp, 0x48]                                                |     var_48h = r3;
                                                                                 |     if ((r1 & 2) != 0) {
    0x08008c48 bne 0x800944c                                                     |         goto label_34;
                                                                                 |     }
                                                                                 | label_10:
    0x08008c4c ldr sl, [sp, 0x1c]                                                |     sl = var_1ch;
                                                                                 | label_12:
    0x08008c50 ldr r3, [sp, 0x1c]                                                |     r3 = var_1ch;
    0x08008c54 mov sb, 0x14                                                      |     sb = 0x14;
    0x08008c58 ldr r1, [sp, 0x14]                                                |     r1 = var_14h;
    0x08008c5c mov r0, r4                                                        |     r0 = r4;
    0x08008c60 sub r2, r3, 1                                                     |     r2 = r3 - 1;
    0x08008c64 stmdaeq r0, {r5, r6, r8, sb, fp, sp, pc}                          |     __asm ("stmdaeq r0, {r5, r6, r8, sb, fp, sp, pc}");
    0x08008c68 sub r3, sl, r0                                                    |     r3 = sl - r0;
    0x08008c6c mla sl, sb, fp, r4                                                |     __asm ("mla sl, sb, fp, r4");
    0x08008c70 str r3, [sp, 0x2c]                                                |     var_2ch = r3;
    0x08008c74 str r0, [sp, 0x3c]                                                |     var_3ch = r0;
    0x08008c78 ldr r3, [sl, 0x98]                                                |     r3 = *((sl + 0x98));
    0x08008c7c cmp r3, 0                                                         |     
                                                                                 |     if (r3 != 0) {
    0x08008c80 bne 0x8009338                                                     |         goto label_35;
                                                                                 |     }
    0x08008c84 ldrb r3, [r5, 0xd]                                                |     r3 = *((r5 + 0xd));
    0x08008c88 tst r3, 2                                                         |     
                                                                                 |     if ((r3 & 2) != 0) {
    0x08008c8c bne 0x8009630                                                     |         goto label_36;
                                                                                 |     }
    0x08008c90 ldr r3, [sp, 0x14]                                                |     r3 = var_14h;
    0x08008c94 ldr r1, [sp, 0x28]                                                |     r1 = var_28h;
    0x08008c98 ldr r0, [sp, 0x38]                                                |     r0 = var_38h;
    0x08008c9c mla sb, sb, r3, r4                                                |     __asm ("mla sb, sb, r3, r4");
    0x08008ca0 ldr r3, [sp, 0x34]                                                |     r3 = var_34h;
    0x08008ca4 add r2, r4, r3                                                    |     r2 = r4 + r3;
    0x08008ca8 str r1, [r2, 0x90]                                                |     *((r2 + 0x90)) = r1;
    0x08008cac ldrb r3, [sl, 0xa0]                                               |     r3 = *((sl + 0xa0));
    0x08008cb0 lsl r3, r0, r3                                                    |     r3 = r0 << r3;
    0x08008cb4 cmp r3, 1                                                         |     
                                                                                 |     if (r3 >= 1) {
    0x08008cb8 movlo r3, 1                                                       |         r3 = 1;
                                                                                 |     }
    0x08008cbc str r3, [sl, 0x98]                                                |     *((sl + 0x98)) = r3;
    0x08008cc0 add r3, r1, r3                                                    |     r3 = r1 + r3;
    0x08008cc4 str r3, [r2, 0x94]                                                |     *((r2 + 0x94)) = r3;
    0x08008cc8 ldr ip, [sb, 0x98]                                                |     ip = *((sb + 0x98));
    0x08008ccc cmp ip, 0                                                         |     
                                                                                 |     if (ip != 0) {
    0x08008cd0 bne 0x8009614                                                     |         goto label_37;
                                                                                 |     }
    0x08008cd4 ldr r3, [sp, 0x2c]                                                |     r3 = var_2ch;
    0x08008cd8 str r3, [sb, 0x94]                                                |     *((sb + 0x94)) = r3;
    0x08008cdc str r3, [sb, 0x90]                                                |     *((sb + 0x90)) = r3;
    0x08008ce0 ldr r3, [r2, 0x94]                                                |     r3 = *((r2 + 0x94));
                                                                                 | label_17:
    0x08008ce4 ldrb r2, [r5, 0xd]                                                |     r2 = *((r5 + 0xd));
    0x08008ce8 tst r2, 0x10                                                      |     
                                                                                 |     if ((r2 & 0x10) != 0) {
    0x08008cec bne 0x8009374                                                     |         goto label_18;
                                                                                 |     }
                                                                                 | label_5:
    0x08008cf0 ldr r0, [sp, 0x14]                                                |     r0 = var_14h;
    0x08008cf4 mov r1, 0x14                                                      |     r1 = 0x14;
    0x08008cf8 mla r1, r1, r0, r4                                                |     __asm ("mla r1, r1, r0, r4");
    0x08008cfc ldr r1, [r1, 0x90]                                                |     r1 = *((r1 + 0x90));
    0x08008d00 str r1, [sp, 0x2c]                                                |     var_2ch = r1;
    0x08008d04 mov sb, r1                                                        |     sb = r1;
                                                                                 | label_6:
    0x08008d08 ldr r1, [sp, 0x30]                                                |     r1 = var_30h;
    0x08008d0c clz r1, r1                                                        |     r1 &= r1;
    0x08008d10 lsr r1, r1, 5                                                     |     r1 >>= 5;
    0x08008d14 ands r1, r1, r2, lsr 2                                            |     r1 &= (r2 >> 2);
                                                                                 |     if (r1 != r1) {
    0x08008d18 bne 0x8009538                                                     |         goto label_38;
                                                                                 |     }
                                                                                 | label_13:
    0x08008d1c ldr r1, [sp, 0x20]                                                |     r1 = var_20h;
    0x08008d20 cmp ip, 0                                                         |     
    0x08008d24 sub r0, r1, r3                                                    |     r0 = r1 - r3;
    0x08008d28 sub r0, r0, 1                                                     |     r0--;
                                                                                 |     if (ip == 0) {
    0x08008d2c beq 0x80092c4                                                     |         goto label_39;
                                                                                 |     }
    0x08008d30 mov lr, 0x14                                                      |     lr = 0x14;
    0x08008d34 mla lr, lr, fp, r4                                                |     __asm ("mla lr, lr, fp, r4");
    0x08008d38 ldr r1, [lr, 0x90]                                                |     r1 = *((lr + 0x90));
    0x08008d3c sub r1, r1, 1                                                     |     r1--;
    0x08008d40 sub r1, r1, ip                                                    |     r1 -= ip;
    0x08008d44 ldr ip, [sp, 0x28]                                                |     ip = var_28h;
    0x08008d48 sub r1, r1, ip                                                    |     r1 -= ip;
    0x08008d4c cmp r1, 0                                                         |     
                                                                                 |     if (r1 < 0) {
    0x08008d50 blt 0x80092c4                                                     |         goto label_39;
                                                                                 |     }
    0x08008d54 cmp r0, 0                                                         |     
                                                                                 |     if (r0 < 0) {
    0x08008d58 blt 0x80095ac                                                     |         goto label_40;
                                                                                 |     }
                                                                                 | label_2:
    0x08008d5c mov r3, 0x14                                                      |     r3 = 0x14;
    0x08008d60 mla r3, r3, fp, r4                                                |     __asm ("mla r3, r3, fp, r4");
    0x08008d64 ldrb r3, [r3, 0xa1]                                               |     r3 = *((r3 + 0xa1));
    0x08008d68 tst r3, 8                                                         |     
                                                                                 |     if ((r3 & 8) == 0) {
    0x08008d6c bne 0x8008d80                                                     |         
    0x08008d70 ldr r3, [sp, 0x40]                                                |         r3 = var_40h;
    0x08008d74 ldr r3, [r3, 0x6a8]                                               |         r3 = *((r3 + 0x6a8));
    0x08008d78 cmp r3, 0                                                         |         
                                                                                 |         if (r3 == 0) {
    0x08008d7c beq 0x8009d6c                                                     |             goto label_41;
                                                                                 |         }
                                                                                 |     }
                                                                                 | label_3:
    0x08008d80 ldr r2, [sp, 0x18]                                                |     r2 = var_18h;
    0x08008d84 sub r3, r8, 4                                                     |     r3 = r8 - 4;
    0x08008d88 clz r3, r3                                                        |     r3 &= r3;
    0x08008d8c ldrb r1, [r4, 0xba]                                               |     r1 = *((r4 + 0xba));
    0x08008d90 cmp r8, r2                                                        |     
    0x08008d94 lsr r3, r3, 5                                                     |     r3 >>= 5;
                                                                                 |     if (r8 != r2) {
    0x08008d98 moveq r3, 0                                                       |         r3 = 0;
                                                                                 |     }
                                                                                 | label_21:
    0x08008d9c cmp r3, 0                                                         |     
    0x08008da0 ldr r3, [sp, 0x10]                                                |     r3 = var_10h;
    0x08008da4 strb r3, [r4, 0xbb]                                               |     *((r4 + 0xbb)) = r3;
                                                                                 |     if (r3 == 0) {
    0x08008da8 movne r3, 0x14                                                    |         r3 = 0x14;
                                                                                 |     }
    0x08008dac strb fp, [r4, 0xb9]                                               |     *((r4 + 0xb9)) = fp;
    0x08008db0 strb r8, [r4, 0xb8]                                               |     *((r4 + 0xb8)) = r8;
    0x08008db4 mlane r3, r3, fp, r4                                              |     __asm ("mlane r3, r3, fp, r4");
                                                                                 |     if (r3 == 0) {
    0x08008db8 ldrbne r2, [r3, 0xa1]                                             |         r2 = *((r3 + 0xa1));
                                                                                 |     }
                                                                                 |     if (r3 == 0) {
    0x08008dbc orrne r2, r2, 4                                                   |         r2 |= 4;
                                                                                 |     }
                                                                                 |     if (r3 == 0) {
    0x08008dc0 strbne r2, [r3, 0xa1]                                             |         *((r3 + 0xa1)) = r2;
                                                                                 |     }
    0x08008dc4 ldr r3, [r4, 0x8c]                                                |     r3 = *((r4 + 0x8c));
    0x08008dc8 cmp r3, 0                                                         |     
                                                                                 |     if (r3 != 0) {
    0x08008dcc beq 0x8008ddc                                                     |         
    0x08008dd0 ldrb r2, [r3, 6]                                                  |         r2 = *((r3 + 6));
    0x08008dd4 cmp r2, 0                                                         |         
                                                                                 |         if (r2 != 0) {
    0x08008dd8 bne 0x800942c                                                     |             goto label_42;
                                                                                 |         }
                                                                                 |     }
                                                                                 | label_8:
    0x08008ddc ldr r3, [sp, 0x24]                                                |     r3 = var_24h;
    0x08008de0 add r7, r3, 0x660                                                 |     r7 = r3 + 0x660;
    0x08008de4 add r7, r7, 0xc                                                   |     r7 += 0xc;
                                                                                 | label_9:
    0x08008de8 ldr r3, [sp, 0x24]                                                |     r3 = var_24h;
    0x08008dec ldr r3, [r3, 0x6ac]                                               |     r3 = *((r3 + 0x6ac));
    0x08008df0 cmp r3, r1                                                        |     
                                                                                 |     if (r3 <= r1) {
    0x08008df4 bgt 0x8008e08                                                     |         
    0x08008df8 ldr sb, [r7, 0x30]                                                |         sb = *((r7 + 0x30));
    0x08008dfc ldr r3, [r7, r8, lsl 2]                                           |         offset_1 = r8 << 2;
                                                                                 |         r3 = *((r7 + offset_1));
    0x08008e00 cmp r3, sb                                                        |         
                                                                                 |         if (r3 > sb) {
    0x08008e04 bhi 0x8008e58                                                     |             goto label_43;
                                                                                 |         }
                                                                                 |     }
    0x08008e08 ldr r3, [sp, 0x10]                                                |     r3 = var_10h;
    0x08008e0c cmp r3, 4                                                         |     
                                                                                 |     if (r3 != 4) {
    0x08008e10 ldreq sb, [r7, 0x20]                                              |         sb = *((r7 + 0x20));
                                                                                 |     }
                                                                                 |     if (r3 != 4) {
    0x08008e14 beq 0x8008e58                                                     |         
    0x08008e18 ldrb r3, [r4, 0xa1]                                               |         r3 = *((r4 + 0xa1));
    0x08008e1c ldrb r2, [r4, 0xb5]                                               |         r2 = *((r4 + 0xb5));
    0x08008e20 ldr sb, [r7, r8, lsl 2]                                           |         offset_2 = r8 << 2;
                                                                                 |         sb = *((r7 + offset_2));
    0x08008e24 orr r3, r3, r2                                                    |         r3 |= r2;
    0x08008e28 tst r3, 0x10                                                      |         
                                                                                 |         if ((r3 & 0x10) != 0) {
    0x08008e2c beq 0x8008e40                                                     |             
    0x08008e30 ldr r3, [r7, 0x34]                                                |             r3 = *((r7 + 0x34));
    0x08008e34 cmp r3, sb                                                        |             
                                                                                 |             if (r3 >= sb) {
    0x08008e38 movlo sb, r3                                                      |                 sb = r3;
                                                                                 |             }
                                                                                 |             if (r3 <= sb) {
    0x08008e3c blo 0x8008e58                                                     |                 goto label_43;
                                                                                 |             }
                                                                                 |         }
    0x08008e40 ldrh r3, [r4, 0xc8]                                               |         r3 = *((r4 + 0xc8));
    0x08008e44 cmp r3, 0                                                         |         
                                                                                 |         if (r3 != 0) {
    0x08008e48 bne 0x8008e58                                                     |             goto label_43;
                                                                                 |         }
    0x08008e4c ldr r3, [r7, 0x30]                                                |         r3 = *((r7 + 0x30));
    0x08008e50 cmp sb, r3                                                        |         
                                                                                 |         if (sb >= r3) {
    0x08008e54 movhs sb, r3                                                      |             sb = r3;
                                                                                 |             goto label_43;
                                                                                 |         }
                                                                                 |     }
                                                                                 | label_43:
    0x08008e58 ldr r0, [pc, 0xf58]                                               |     r0 = *(0x8009db4);
    0x08008e5c movw r1, 0x201                                                    |     r1 = 0x201;
    0x08008e60 stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}                  |     __asm ("stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}");
    0x08008e64 ldr r3, [sp, 0x18]                                                |     r3 = var_18h;
    0x08008e68 cmp r3, r8                                                        |     
                                                                                 |     if (r3 != r8) {
    0x08008e6c beq 0x8008eb8                                                     |         
    0x08008e70 ldr r3, [r4, 0x74]                                                |         r3 = *((r4 + 0x74));
    0x08008e74 ldr r3, [r3, 0x660]                                               |         r3 = *((r3 + 0x660));
    0x08008e78 cmp r3, 0                                                         |         
                                                                                 |         if (r3 == 0) {
    0x08008e7c beq 0x8008eb8                                                     |             goto label_44;
                                                                                 |         }
    0x08008e80 ldr r3, [r4, 0x8c]                                                |         r3 = *((r4 + 0x8c));
    0x08008e84 cmp r3, 0                                                         |         
                                                                                 |         if (r3 == 0) {
    0x08008e88 beq 0x8008eb8                                                     |             goto label_44;
                                                                                 |         }
    0x08008e8c ldrb r2, [r3, 4]                                                  |         r2 = *((r3 + 4));
    0x08008e90 cmp r2, 0                                                         |         
                                                                                 |         if (r2 == 0) {
    0x08008e94 beq 0x8008eb8                                                     |             goto label_44;
                                                                                 |         }
    0x08008e98 cmn r3, r2                                                        |         
                                                                                 |         if (r3 == r2) {
    0x08008e9c beq 0x8008eb8                                                     |             goto label_44;
                                                                                 |         }
    0x08008ea0 mrs r0, apsr                                                      |         r0 = apsr;
    0x08008ea4 cpsid i                                                           |         __asm ("cpsid i");
    0x08008ea8 ldr r1, [r3, r2]                                                  |         r1 = *((r3 + r2));
    0x08008eac orr r1, r1, 0x20                                                  |         r1 |= 0x20;
    0x08008eb0 str r1, [r3, r2]                                                  |         *((r3 + r2)) = r1;
    0x08008eb4 msr cpsr_c, r0                                                    |         cpsr_c = r0;
                                                                                 |     }
                                                                                 | label_44:
    0x08008eb8 ldr r3, [r4, 0x6c]                                                |     r3 = *((r4 + 0x6c));
    0x08008ebc tst r3, 2                                                         |     
                                                                                 |     if ((r3 & 2) != 0) {
    0x08008ec0 bne 0x80093a8                                                     |         goto label_45;
                                                                                 |     }
    0x08008ec4 ldrb r3, [r5, 0xd]                                                |     r3 = *((r5 + 0xd));
    0x08008ec8 tst r3, 4                                                         |     
                                                                                 |     if ((r3 & 4) != 0) {
    0x08008ecc bne 0x80096d8                                                     |         goto label_46;
                                                                                 |     }
    0x08008ed0 cmp r8, 3                                                         |     
                                                                                 |     if (r8 == 3) {
    0x08008ed4 bne 0x8008ee4                                                     |         
    0x08008ed8 ldr r3, [r7, 0x34]                                                |         r3 = *((r7 + 0x34));
    0x08008edc cmp sb, r3                                                        |         
                                                                                 |         if (sb >= r3) {
    0x08008ee0 movhs sb, r3                                                      |             sb = r3;
                                                                                 |             goto label_7;
                                                                                 |         }
                                                                                 |     }
                                                                                 | label_7:
    0x08008ee4 mov ip, 1                                                         |     
    0x08008ee8 ldr r1, [sp, 0xc]                                                 |     r1 = var_ch;
    0x08008eec mov r3, sb                                                        |     r3 = sb;
    0x08008ef0 mov r2, r6                                                        |     r2 = r6;
    0x08008ef4 mov r0, r4                                                        |     r0 = r4;
    0x08008ef8 str ip, [sp]                                                      |     *(sp) = ip;
    0x08008efc stmdaeq r0, {r2, r3, r5, r6, r8, sb, sl}                          |     __asm ("stmdaeq r0, {r2, r3, r5, r6, r8, sb, sl}");
                                                                                 | label_20:
    0x08008f00 mov r0, 1                                                         |     r0 = 1;
                                                                                 |     do {
    0x08008f04 add sp, sp, 0x94                                                  |         
    0x08008f08 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                          |         
                                                                                 | label_4:
    0x080092bc mvn r0, 0                                                         |         r0 = ~0;
    0x080092c0 b 0x8008f04                                                       |         
                                                                                 |     } while (1);
                                                                                 | label_39:
    0x080092c4 cmp r0, 0                                                         |     
                                                                                 |     if (r0 >= 0) {
    0x080092c8 bge 0x8008d5c                                                     |         goto label_2;
                                                                                 |     }
    0x080092cc ldr r0, [sp, 0x14]                                                |     r0 = var_14h;
    0x080092d0 mov r1, 0x14                                                      |     r1 = 0x14;
    0x080092d4 ldr r7, [sp, 0x2c]                                                |     r7 = var_2ch;
    0x080092d8 mla sl, r1, r0, r4                                                |     __asm ("mla sl, r1, r0, r4");
    0x080092dc mla r1, r1, fp, r4                                                |     __asm ("mla r1, r1, fp, r4");
    0x080092e0 ldr r0, [sl, 0x90]                                                |     r0 = *((sl + 0x90));
    0x080092e4 sub ip, r7, r0                                                    |     
    0x080092e8 cmp ip, 1                                                         |     
                                                                                 |     if (ip < 1) {
    0x080092ec bmi 0x80096ec                                                     |         goto label_47;
                                                                                 |     }
    0x080092f0 ldrb r3, [r1, 0xa1]                                               |     r3 = *((r1 + 0xa1));
    0x080092f4 tst r3, 8                                                         |     
                                                                                 |     if ((r3 & 8) != 0) {
    0x080092f8 bne 0x8008d80                                                     |         goto label_3;
                                                                                 |     }
    0x080092fc ldr r3, [sp, 0x40]                                                |     r3 = var_40h;
    0x08009300 ldr r3, [r3, 0x6a8]                                               |     r3 = *((r3 + 0x6a8));
    0x08009304 cmp r3, 0                                                         |     
                                                                                 |     if (r3 != 0) {
    0x08009308 bne 0x8008d80                                                     |         goto label_3;
                                                                                 |     }
    0x0800930c stmdaeq r0, {r3, r4, r5, sb, sp, lr, pc}                          |     __asm ("stmdaeq r0, {r3, r4, r5, sb, sp, lr, pc}");
    0x08009310 stmdaeq r0, {r3, r4, r5, sb, sp, lr, pc}                          |     __asm ("stmdaeq r0, {r3, r4, r5, sb, sp, lr, pc}");
                                                                                 | label_15:
    0x08009314 mov r1, r4                                                        |     r1 = r4;
    0x08009318 mov r0, r6                                                        |     r0 = r6;
    0x0800931c stmdaeq r0, {r6, r7, sb, sp, lr, pc}                              |     __asm ("stmdaeq r0, {r6, r7, sb, sp, lr, pc}");
    0x08009320 stmdaeq r0, {r6, r7, sb, sp, lr, pc}                              |     __asm ("stmdaeq r0, {r6, r7, sb, sp, lr, pc}");
    0x08009324 stmdaeq r0, {r6, r7, r8, sb, lr, pc}                              |     __asm ("stmdaeq r0, {r6, r7, r8, sb, lr, pc}");
    0x08009328 ldr r0, [pc, 0xa94]                                               |     r0 = .text;
    0x0800932c movw r1, 0x201                                                    |     r1 = 0x201;
    0x08009330 stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}                  |     __asm ("stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}");
    0x08009334 b 0x80092bc                                                       |     goto label_4;
                                                                                 | label_35:
    0x08009338 ldrb r3, [r4, 0xb8]                                               |     r3 = *((r4 + 0xb8));
    0x0800933c cmp r3, 1                                                         |     
                                                                                 |     if (r3 == 1) {
    0x08009340 beq 0x80095d4                                                     |         goto label_48;
                                                                                 |     }
    0x08009344 cmp r3, 2                                                         |     
                                                                                 |     if (r3 == 2) {
    0x08009348 movne r2, 0                                                       |         r2 = 0;
                                                                                 |     }
                                                                                 |     if (r3 != 2) {
    0x0800934c andeq r2, fp, 1                                                   |         r2 = fp & 1;
                                                                                 |     }
    0x08009350 cmp r2, 0                                                         |     
                                                                                 |     if (r2 != 0) {
    0x08009354 bne 0x80095e0                                                     |         goto label_49;
                                                                                 |     }
                                                                                 | label_16:
    0x08009358 ldr r3, [sp, 0x14]                                                |     r3 = var_14h;
    0x0800935c ldrb r2, [r5, 0xd]                                                |     r2 = *((r5 + 0xd));
    0x08009360 tst r2, 0x10                                                      |     
    0x08009364 mla sb, sb, r3, r4                                                |     __asm ("mla sb, sb, r3, r4");
    0x08009368 ldr r3, [sl, 0x94]                                                |     r3 = *((sl + 0x94));
    0x0800936c ldr ip, [sb, 0x98]                                                |     ip = *((sb + 0x98));
                                                                                 |     if ((r2 & 0x10) == 0) {
    0x08009370 beq 0x8008cf0                                                     |         goto label_5;
                                                                                 |     }
                                                                                 | label_18:
    0x08009374 ldr r1, [sp, 0x1c]                                                |     r1 = var_1ch;
    0x08009378 ldr r0, [sp, 0x3c]                                                |     r0 = var_3ch;
    0x0800937c subs sb, r1, r0                                                   |     sb = r1 - r0;
    0x08009380 ldr r0, [r5, 0xc]                                                 |     r0 = *((r5 + 0xc));
    0x08009384 and r0, r0, 0x1400                                                |     r0 &= 0x1400;
                                                                                 |     if (sb != r1) {
    0x08009388 moveq r1, 1                                                       |         r1 = 1;
                                                                                 |     }
                                                                                 |     if (sb == r1) {
    0x0800938c movne r1, 0                                                       |         r1 = 0;
                                                                                 |     }
    0x08009390 cmp r0, 0x1400                                                    |     
                                                                                 |     if (r0 == 0x1400) {
    0x08009394 movne r1, 0                                                       |         r1 = 0;
                                                                                 |     }
                                                                                 |     if (r0 != 0x1400) {
    0x08009398 andeq r1, r1, 1                                                   |         r1 &= 1;
                                                                                 |     }
    0x0800939c cmp r1, 0                                                         |     
                                                                                 |     if (r1 == 0) {
    0x080093a0 beq 0x8008d08                                                     |         goto label_6;
                                                                                 |     }
    0x080093a4 b 0x8008cf0                                                       |     goto label_5;
                                                                                 | label_45:
    0x080093a8 ldr r3, [r4, 0x6c]                                                |     r3 = *((r4 + 0x6c));
    0x080093ac tst r3, 4                                                         |     
                                                                                 |     if ((r3 & 4) != 0) {
    0x080093b0 bne 0x8008ee4                                                     |         goto label_7;
                                                                                 |     }
    0x080093b4 ldr r3, [sp, 0x18]                                                |     r3 = var_18h;
    0x080093b8 sub r3, r3, 2                                                     |     r3 -= 2;
    0x080093bc cmp r3, 1                                                         |     
    0x080093c0 cmpls r8, 3                                                       |     __asm ("cmpls r8, 3");
                                                                                 |     if (r3 != 1) {
    0x080093c4 bne 0x8008ee4                                                     |         goto label_7;
                                                                                 |     }
    0x080093c8 mrs r2, apsr                                                      |     r2 = apsr;
    0x080093cc cpsid i                                                           |     __asm ("cpsid i");
    0x080093d0 ldr r3, [r4, 0x6c]                                                |     r3 = *((r4 + 0x6c));
    0x080093d4 orr r3, r3, 4                                                     |     r3 |= 4;
    0x080093d8 str r3, [r4, 0x6c]                                                |     *((r4 + 0x6c)) = r3;
    0x080093dc msr cpsr_c, r2                                                    |     cpsr_c = r2;
    0x080093e0 ldr r3, [r4, 0x74]                                                |     r3 = *((r4 + 0x74));
    0x080093e4 ldr r3, [r3, 0x660]                                               |     r3 = *((r3 + 0x660));
    0x080093e8 cmp r3, 0                                                         |     
                                                                                 |     if (r3 == 0) {
    0x080093ec beq 0x8008ee4                                                     |         goto label_7;
                                                                                 |     }
    0x080093f0 ldr r3, [r4, 0x8c]                                                |     r3 = *((r4 + 0x8c));
    0x080093f4 cmp r3, 0                                                         |     
                                                                                 |     if (r3 == 0) {
    0x080093f8 beq 0x8008ee4                                                     |         goto label_7;
                                                                                 |     }
    0x080093fc ldrb r2, [r3, 4]                                                  |     r2 = *((r3 + 4));
    0x08009400 cmp r2, 0                                                         |     
                                                                                 |     if (r2 == 0) {
    0x08009404 beq 0x8008ee4                                                     |         goto label_7;
                                                                                 |     }
    0x08009408 cmn r3, r2                                                        |     
                                                                                 |     if (r3 == r2) {
    0x0800940c beq 0x8008ee4                                                     |         goto label_7;
                                                                                 |     }
    0x08009410 mrs r0, apsr                                                      |     r0 = apsr;
    0x08009414 cpsid i                                                           |     __asm ("cpsid i");
    0x08009418 ldr r1, [r3, r2]                                                  |     r1 = *((r3 + r2));
    0x0800941c orr r1, r1, 0x10                                                  |     r1 |= 0x10;
    0x08009420 str r1, [r3, r2]                                                  |     *((r3 + r2)) = r1;
    0x08009424 msr cpsr_c, r0                                                    |     cpsr_c = r0;
    0x08009428 b 0x8008ee4                                                       |     goto label_7;
                                                                                 | label_42:
    0x0800942c cmn r3, r2                                                        |     
                                                                                 |     if (r3 == r2) {
    0x08009430 beq 0x8008ddc                                                     |         goto label_8;
                                                                                 |     }
    0x08009434 ldr r7, [r3, r2]                                                  |     r7 = *((r3 + r2));
    0x08009438 cmp r7, 0                                                         |     
                                                                                 |     if (r7 == 0) {
    0x0800943c beq 0x8008ddc                                                     |         goto label_8;
                                                                                 |     }
    0x08009440 adds r7, r7, 8                                                    |     r7 += 8;
                                                                                 |     if (r7 != r7) {
    0x08009444 bne 0x8008de8                                                     |         goto label_9;
                                                                                 |     }
    0x08009448 b 0x8008ddc                                                       |     goto label_8;
                                                                                 | label_34:
    0x0800944c subs sb, sb, 0x14                                                 |     sb -= 0x14;
                                                                                 |     if (sb == sb) {
    0x08009450 beq 0x8008c4c                                                     |         goto label_10;
                                                                                 |     }
    0x08009454 ldr r3, [r6, 0x58]                                                |     r3 = *((r6 + 0x58));
    0x08009458 sub r3, r1, r3                                                    |     r3 = r1 - r3;
    0x0800945c add r1, r7, 0x14                                                  |     r1 = r7 + 0x14;
    0x08009460 sub r3, r3, r1                                                    |     r3 -= r1;
    0x08009464 cmp sb, r3                                                        |     
    0x08009468 ldr r3, [r6, 0xa8]                                                |     r3 = *((r6 + 0xa8));
                                                                                 |     if (sb <= r3) {
    0x0800946c ble 0x8009978                                                     |         goto label_50;
                                                                                 |     }
    0x08009470 cmp r6, 0                                                         |     
                                                                                 |     if (r6 == 0) {
    0x08009474 beq 0x8009980                                                     |         goto label_51;
                                                                                 |     }
    0x08009478 mov r3, sb                                                        |     r3 = sb;
    0x0800947c add r2, sp, 0x68                                                  |     r2 += var_68h;
    0x08009480 mov r0, r6                                                        |     r0 = r6;
    0x08009484 stmdaeq r1, {r0, r1, r2, r3, r6, r7, sb, sl, fp, lr, pc}          |     __asm ("stmdaeq r1, {r0, r1, r2, r3, r6, r7, sb, sl, fp, lr, pc}");
    0x08009488 cmp r0, 0                                                         |     
                                                                                 |     if (r0 < 0) {
    0x0800948c blt 0x8009980                                                     |         goto label_51;
                                                                                 |     }
    0x08009490 add r3, sp, 0x68                                                  |     r3 += var_68h;
                                                                                 | label_22:
    0x08009494 cmp sb, 0xc                                                       |     
                                                                                 |     if (sb == 0xc) {
    0x08009498 beq 0x80099e0                                                     |         goto label_52;
                                                                                 |     }
                                                                                 | label_11:
    0x0800949c cmp sb, 0                                                         |     
                                                                                 |     if (sb <= 0) {
    0x080094a0 ble 0x8008c4c                                                     |         goto label_10;
                                                                                 |     }
                                                                                 | label_23:
    0x080094a4 ldrb r2, [r3]                                                     |     r2 = *(r3);
    0x080094a8 cmp r2, 0                                                         |     
                                                                                 |     if (r2 == 0) {
    0x080094ac beq 0x8008c4c                                                     |         goto label_10;
                                                                                 |     }
    0x080094b0 cmp r2, 1                                                         |     
                                                                                 |     if (r2 != 1) {
    0x080094b4 addeq r3, r3, 1                                                   |         r3++;
                                                                                 |     }
                                                                                 |     if (r2 == 1) {
    0x080094b8 subeq sb, sb, 1                                                   |         sb--;
                                                                                 |         goto label_53;
                                                                                 |     }
                                                                                 |     if (r2 == 1) {
                                                                                 | label_53:
    0x080094bc beq 0x800949c                                                     |         goto label_11;
                                                                                 |     }
    0x080094c0 cmp sb, 1                                                         |     
                                                                                 |     if (sb == 1) {
    0x080094c4 beq 0x8008c4c                                                     |         goto label_10;
                                                                                 |     }
    0x080094c8 ldrb r1, [r3, 1]                                                  |     r1 = *((r3 + 1));
    0x080094cc cmp sb, r1                                                        |     
    0x080094d0 cmpge r1, 1                                                       |     __asm ("cmpge r1, 1");
                                                                                 |     if (sb <= r1) {
    0x080094d4 ble 0x8008c4c                                                     |         goto label_10;
                                                                                 |     }
    0x080094d8 sub r2, r2, 5                                                     |     r2 -= 5;
    0x080094dc cmp r1, 9                                                         |     
    0x080094e0 clz r2, r2                                                        |     r2 &= r2;
    0x080094e4 lsr r2, r2, 5                                                     |     r2 >>= 5;
                                                                                 |     if (r1 > 9) {
    0x080094e8 movle r2, 0                                                       |         r2 = 0;
                                                                                 |     }
    0x080094ec cmp r2, 0                                                         |     
                                                                                 |     if (r2 == 0) {
    0x080094f0 beq 0x800952c                                                     |         goto label_54;
                                                                                 |     }
    0x080094f4 sub r2, r1, 2                                                     |     r2 = r1 - 2;
    0x080094f8 ands r0, r2, 7                                                    |     r0 = r2 & 7;
                                                                                 |     if (r0 != r2) {
    0x080094fc bne 0x800952c                                                     |         goto label_54;
                                                                                 |     }
    0x08009500 ldr sl, [sp, 0x1c]                                                |     sl = var_1ch;
                                                                                 |     do {
    0x08009504 add r1, r3, r0                                                    |         r1 = r3 + r0;
    0x08009508 add r0, r0, 8                                                     |         r0 += 8;
    0x0800950c ldr r1, [r1, 6]                                                   |         r1 = *((r1 + 6));
    0x08009510 rev r1, r1                                                        |         r1 = SWAP32 (r1);
    0x08009514 sub ip, sl, r1                                                    |         
    0x08009518 cmp ip, 0                                                         |         
                                                                                 |         if (ip >= 0) {
    0x0800951c movlt sl, r1                                                      |             sl = r1;
                                                                                 |         }
    0x08009520 cmp r0, r2                                                        |         
    0x08009524 blt 0x8009504                                                     |         
                                                                                 |     } while (r0 < r2);
    0x08009528 b 0x8008c50                                                       |     goto label_12;
                                                                                 | label_54:
    0x0800952c add r3, r3, r1                                                    |     r3 += r1;
    0x08009530 sub sb, sb, r1                                                    |     sb -= r1;
    0x08009534 b 0x800949c                                                       |     goto label_11;
                                                                                 | label_38:
    0x08009538 ldrb r1, [r4, 0xb8]                                               |     r1 = *((r4 + 0xb8));
    0x0800953c cmp r1, 1                                                         |     
                                                                                 |     if (r1 != 1) {
    0x08009540 moveq r1, 0x14                                                    |         r1 = 0x14;
                                                                                 |     }
                                                                                 |     if (r1 == 1) {
    0x08009544 movne r1, 0                                                       |         r1 = 0;
                                                                                 |     }
                                                                                 |     if (r1 == 1) {
    0x08009548 strne r1, [sp, 0x20]                                              |         var_20h = r1;
                                                                                 |     }
    0x0800954c mlaeq r1, r1, fp, r4                                              |     __asm ("mlaeq r1, r1, fp, r4");
                                                                                 |     if (r1 != 1) {
    0x08009550 ldreq r1, [r1, 0x90]                                              |         r1 = *((r1 + 0x90));
                                                                                 |     }
                                                                                 |     if (r1 != 1) {
    0x08009554 streq r1, [sp, 0x20]                                              |         var_20h = r1;
                                                                                 |     }
                                                                                 |     if (r1 != 1) {
    0x08009558 streq r1, [sp, 0x28]                                              |         var_28h = r1;
                                                                                 |     }
    0x0800955c b 0x8008d1c                                                       |     goto label_13;
                                                                                 | label_28:
    0x08009560 ldrb r3, [r8, 4]                                                  |     r3 = *((r8 + 4));
    0x08009564 mov r2, r7                                                        |     r2 = r7;
    0x08009568 str r3, [sp]                                                      |     *(sp) = r3;
    0x0800956c mov r0, r6                                                        |     r0 = r6;
    0x08009570 mov r3, 6                                                         |     r3 = 6;
    0x08009574 stmdaeq r1, {r0, r1, ip, lr, pc}                                  |     __asm ("stmdaeq r1, {r0, r1, ip, lr, pc}");
    0x08009578 cmp r0, 0                                                         |     
                                                                                 |     if (r0 == 0) {
    0x0800957c beq 0x8008a70                                                     |         goto label_14;
                                                                                 |     }
    0x08009580 ldrb r2, [r8, 4]                                                  |     r2 = *((r8 + 4));
    0x08009584 mov r0, r6                                                        |     r0 = r6;
    0x08009588 ldr r1, [r8, 0x14]                                                |     r1 = *((r8 + 0x14));
    0x0800958c stmdaeq r0, {r2, r6, r7, sb, sp, lr, pc}                          |     __asm ("stmdaeq r0, {r2, r6, r7, sb, sp, lr, pc}");
    0x08009590 stmdaeq r0, {r2, r6, r7, sb, sp, lr, pc}                          |     __asm ("stmdaeq r0, {r2, r6, r7, sb, sp, lr, pc}");
    0x08009594 stmdaeq r0, {r6, r7, sb, sp, lr, pc}                              |     __asm ("stmdaeq r0, {r6, r7, sb, sp, lr, pc}");
    0x08009598 stmdaeq r0, {r6, r7, sb, sp, lr, pc}                              |     __asm ("stmdaeq r0, {r6, r7, sb, sp, lr, pc}");
    0x0800959c stm sp, {r3, ip}                                                  |     *(sp) = r3;
                                                                                 |     *((sp + 4)) = ip;
    0x080095a0 mov r3, 6                                                         |     r3 = 6;
    0x080095a4 stmdaeq r0, {r6, r8, sb, lr, pc}                                  |     __asm ("stmdaeq r0, {r6, r8, sb, lr, pc}");
    0x080095a8 b 0x80092bc                                                       |     goto label_4;
                                                                                 | label_40:
    0x080095ac ldrb r3, [lr, 0xa1]                                               |     r3 = *((lr + 0xa1));
    0x080095b0 tst r3, 8                                                         |     
                                                                                 |     if ((r3 & 8) != 0) {
    0x080095b4 bne 0x8008d80                                                     |         goto label_3;
                                                                                 |     }
    0x080095b8 ldr r3, [sp, 0x40]                                                |     r3 = var_40h;
    0x080095bc ldr r3, [r3, 0x6a8]                                               |     r3 = *((r3 + 0x6a8));
    0x080095c0 cmp r3, 0                                                         |     
                                                                                 |     if (r3 != 0) {
    0x080095c4 bne 0x8008d80                                                     |         goto label_3;
                                                                                 |     }
    0x080095c8 stmdaeq r0, {r3, r4, r5, r6, r7, r8, sp, lr, pc}                  |     __asm ("stmdaeq r0, {r3, r4, r5, r6, r7, r8, sp, lr, pc}");
    0x080095cc stmdaeq r0, {r3, r4, r5, r6, r7, r8, sp, lr, pc}                  |     __asm ("stmdaeq r0, {r3, r4, r5, r6, r7, r8, sp, lr, pc}");
    0x080095d0 b 0x8009314                                                       |     goto label_15;
                                                                                 | label_48:
    0x080095d4 ldr r3, [sp, 0xc]                                                 |     r3 = var_ch;
    0x080095d8 cmp r3, 2                                                         |     
                                                                                 |     if (r3 > 2) {
    0x080095dc bhi 0x8009358                                                     |         goto label_16;
                                                                                 |     }
                                                                                 | label_49:
    0x080095e0 ldr r3, [sp, 0x34]                                                |     r3 = var_34h;
    0x080095e4 ldr r2, [sp, 0x28]                                                |     r2 = var_28h;
    0x080095e8 add sb, r4, r3                                                    |     sb = r4 + r3;
    0x080095ec ldr r3, [sb, 0x90]                                                |     r3 = *((sb + 0x90));
    0x080095f0 sub r3, r3, r2                                                    |     r3 -= r2;
    0x080095f4 cmp r3, 0                                                         |     
                                                                                 |     if (r3 < 0) {
    0x080095f8 blt 0x80099f8                                                     |         goto label_55;
                                                                                 |     }
    0x080095fc ldr r1, [sp, 0x14]                                                |     r1 = var_14h;
    0x08009600 mov r2, 0x14                                                      |     r2 = 0x14;
    0x08009604 ldr r3, [sb, 0x94]                                                |     r3 = *((sb + 0x94));
    0x08009608 mla r2, r2, r1, r4                                                |     __asm ("mla r2, r2, r1, r4");
    0x0800960c ldr ip, [r2, 0x98]                                                |     ip = *((r2 + 0x98));
    0x08009610 b 0x8008ce4                                                       |     goto label_17;
                                                                                 | label_37:
    0x08009614 ldr r1, [sb, 0x90]                                                |     r1 = *((sb + 0x90));
    0x08009618 ldr r0, [sp, 0x2c]                                                |     r0 = var_2ch;
    0x0800961c add r1, r1, 1                                                     |     r1++;
    0x08009620 cmp r0, r1                                                        |     
                                                                                 |     if (r0 != r1) {
    0x08009624 streq r0, [sb, 0x90]                                              |         *((sb + 0x90)) = r0;
                                                                                 |     }
                                                                                 |     if (r0 != r1) {
    0x08009628 ldreq r3, [r2, 0x94]                                              |         r3 = *((r2 + 0x94));
                                                                                 |     }
    0x0800962c b 0x8008ce4                                                       |     goto label_17;
                                                                                 | label_36:
    0x08009630 ldr r0, [sp, 0x34]                                                |     r0 = var_34h;
    0x08009634 mov r1, r7                                                        |     r1 = r7;
    0x08009638 ldr r2, [sp, 0x38]                                                |     r2 = var_38h;
    0x0800963c add r7, r4, r0                                                    |     r7 = r4 + r0;
    0x08009640 ldr r0, [sp, 0x28]                                                |     r0 = var_28h;
    0x08009644 cmp r2, 1                                                         |     
    0x08009648 ldr r3, [sp, 0x44]                                                |     r3 = var_44h;
                                                                                 |     if (r2 >= 1) {
    0x0800964c movlo r2, 1                                                       |         r2 = 1;
                                                                                 |     }
    0x08009650 str r0, [r7, 0x94]                                                |     *((r7 + 0x94)) = r0;
    0x08009654 str r0, [r7, 0x90]                                                |     *((r7 + 0x90)) = r0;
    0x08009658 mov r0, r6                                                        |     r0 = r6;
    0x0800965c str r2, [sl, 0x98]                                                |     *((sl + 0x98)) = r2;
    0x08009660 mov r2, r5                                                        |     r2 = r5;
    0x08009664 bl 0x8008720                                                      |     tcp_options ();
    0x08009668 ldrb r3, [sl, 0xa1]                                               |     r3 = *((sl + 0xa1));
    0x0800966c tst r3, 1                                                         |     
                                                                                 |     if ((r3 & 1) == 0) {
    0x08009670 beq 0x80096ac                                                     |         goto label_56;
                                                                                 |     }
    0x08009674 ldr r3, [sp, 0x14]                                                |     r3 = var_14h;
    0x08009678 mla sb, sb, r3, r4                                                |     __asm ("mla sb, sb, r3, r4");
    0x0800967c ldrb r3, [sb, 0xa1]                                               |     r3 = *((sb + 0xa1));
    0x08009680 tst r3, 1                                                         |     
                                                                                 |     if ((r3 & 1) == 0) {
    0x08009684 beq 0x80096ac                                                     |         goto label_56;
                                                                                 |     }
                                                                                 | label_19:
    0x08009688 ldrb r2, [r5, 0xd]                                                |     r2 = *((r5 + 0xd));
    0x0800968c tst r2, 0x10                                                      |     
                                                                                 |     if ((r2 & 0x10) == 0) {
    0x08009690 beq 0x8008d80                                                     |         goto label_3;
                                                                                 |     }
    0x08009694 ldr r0, [sp, 0x14]                                                |     r0 = var_14h;
    0x08009698 mov r1, 0x14                                                      |     r1 = 0x14;
    0x0800969c ldr r3, [r7, 0x94]                                                |     r3 = *((r7 + 0x94));
    0x080096a0 mla r1, r1, r0, r4                                                |     __asm ("mla r1, r1, r0, r4");
    0x080096a4 ldr ip, [r1, 0x98]                                                |     ip = *((r1 + 0x98));
    0x080096a8 b 0x8009374                                                       |     goto label_18;
                                                                                 | label_56:
    0x080096ac ldr r1, [sp, 0x14]                                                |     r1 = var_14h;
    0x080096b0 mov r3, 0x14                                                      |     r3 = 0x14;
    0x080096b4 mov r2, 0                                                         |     r2 = 0;
    0x080096b8 mla r1, r3, r1, r4                                                |     __asm ("mla r1, r3, r1, r4");
    0x080096bc mla r3, r3, fp, r4                                                |     __asm ("mla r3, r3, fp, r4");
    0x080096c0 strb r2, [r1, 0xa0]                                               |     *((r1 + 0xa0)) = r2;
    0x080096c4 strb r2, [r3, 0xa0]                                               |     *((r3 + 0xa0)) = r2;
    0x080096c8 b 0x8009688                                                       |     goto label_19;
                                                                                 | label_32:
    0x080096cc mov r3, 2                                                         |     r3 = 2;
    0x080096d0 str r3, [sp, 0x10]                                                |     var_10h = r3;
    0x080096d4 b 0x8008b04                                                       |     goto label_1;
                                                                                 | label_46:
    0x080096d8 ldr r1, [sp, 0xc]                                                 |     r1 = var_ch;
    0x080096dc mov r2, r6                                                        |     r2 = r6;
    0x080096e0 mov r0, r4                                                        |     r0 = r4;
    0x080096e4 stmdaeq r0, {r5, r6, r7, r8, sl, fp, ip}                          |     __asm ("stmdaeq r0, {r5, r6, r7, r8, sl, fp, ip}");
    0x080096e8 b 0x8008f00                                                       |     goto label_20;
                                                                                 | label_47:
    0x080096ec mvn ip, r7                                                        |     
    0x080096f0 ldr r7, [r1, 0x98]                                                |     r7 = *((r1 + 0x98));
    0x080096f4 mov lr, 0x1d0                                                     |     
    0x080096f8 movt lr, 1                                                        |     lr = 0x101d0;
    0x080096fc cmp r7, lr                                                        |     
                                                                                 |     if (r7 < lr) {
    0x08009700 subhs r0, r0, r7                                                  |         r0 -= r7;
                                                                                 |     }
                                                                                 |     if (r7 >= lr) {
    0x08009704 sublo r0, r0, lr                                                  |         r0 -= lr;
                                                                                 |     }
    0x08009708 cmn ip, r0                                                        |     
                                                                                 |     if (ip < r0) {
    0x0800970c bmi 0x800983c                                                     |         goto label_57;
                                                                                 |     }
    0x08009710 ldrb r3, [r1, 0xa1]                                               |     r3 = *((r1 + 0xa1));
    0x08009714 tst r3, 8                                                         |     
                                                                                 |     if ((r3 & 8) != 0) {
    0x08009718 bne 0x8008d80                                                     |         goto label_3;
                                                                                 |     }
    0x0800971c ldr r3, [sp, 0x40]                                                |     r3 = var_40h;
    0x08009720 ldr r3, [r3, 0x6a8]                                               |     r3 = *((r3 + 0x6a8));
    0x08009724 cmp r3, 0                                                         |     
                                                                                 |     if (r3 != 0) {
    0x08009728 bne 0x8008d80                                                     |         goto label_3;
                                                                                 |     }
    0x0800972c stmdaeq r0, {r4, r5, r6, sb, sp, lr, pc}                          |     __asm ("stmdaeq r0, {r4, r5, r6, sb, sp, lr, pc}");
    0x08009730 stmdaeq r0, {r4, r5, r6, sb, sp, lr, pc}                          |     __asm ("stmdaeq r0, {r4, r5, r6, sb, sp, lr, pc}");
    0x08009734 b 0x8009314                                                       |     goto label_15;
                                                                                 | label_57:
    0x0800983c tst r2, 2                                                         |     
    0x08009840 ldr r0, [sp, 0x28]                                                |     r0 = var_28h;
                                                                                 |     if ((r2 & 2) != 0) {
    0x08009844 ldrbeq r2, [r1, 0xa0]                                             |         r2 = *((r1 + 0xa0));
                                                                                 |     }
                                                                                 |     if ((r2 & 2) != 0) {
    0x08009848 ldreq r1, [sp, 0x38]                                              |         r1 = var_38h;
                                                                                 |     }
                                                                                 |     if ((r2 & 2) != 0) {
    0x0800984c lsleq r2, r1, r2                                                  |         r2 = r1 << r2;
                                                                                 |     }
                                                                                 |     if ((r2 & 2) != 0) {
    0x08009850 streq r2, [sp, 0x48]                                              |         var_48h = r2;
                                                                                 |     }
    0x08009854 ldr r2, [sp, 0x2c]                                                |     r2 = var_2ch;
    0x08009858 ldr r1, [sp, 0x48]                                                |     r1 = var_48h;
    0x0800985c sub r2, r2, sb                                                    |     r2 -= sb;
    0x08009860 add r2, r2, r1                                                    |     r2 += r1;
    0x08009864 cmp r7, r2                                                        |     
                                                                                 |     if (r7 >= r2) {
    0x08009868 movlo r1, 0x14                                                    |         r1 = 0x14;
                                                                                 |     }
    0x0800986c mlalo r1, r1, fp, r4                                              |     __asm ("mlalo r1, r1, fp, r4");
                                                                                 |     if (r7 >= r2) {
    0x08009870 strlo r2, [r1, 0x98]                                              |         *((r1 + 0x98)) = r2;
                                                                                 |     }
    0x08009874 ldr r2, [sp, 0x34]                                                |     r2 = var_34h;
    0x08009878 add r1, r4, r2                                                    |     r1 = r4 + r2;
    0x0800987c ldr r2, [r1, 0x90]                                                |     r2 = *((r1 + 0x90));
    0x08009880 sub r2, r2, r0                                                    |     r2 -= r0;
    0x08009884 cmp r2, 0                                                         |     
                                                                                 |     if (r2 < 0) {
    0x08009888 bge 0x80098a4                                                     |         
    0x0800988c mov r2, 0x14                                                      |         r2 = 0x14;
    0x08009890 str r0, [r1, 0x90]                                                |         *((r1 + 0x90)) = r0;
    0x08009894 mla r2, r2, fp, r4                                                |         __asm ("mla r2, r2, fp, r4");
    0x08009898 ldrb r1, [r2, 0xa1]                                               |         r1 = *((r2 + 0xa1));
    0x0800989c orr r1, r1, 0x10                                                  |         r1 |= 0x10;
    0x080098a0 strb r1, [r2, 0xa1]                                               |         *((r2 + 0xa1)) = r1;
                                                                                 |     }
    0x080098a4 ldrb r2, [r5, 0xd]                                                |     r2 = *((r5 + 0xd));
    0x080098a8 tst r2, 0x10                                                      |     
                                                                                 |     if ((r2 & 0x10) != 0) {
    0x080098ac beq 0x80098d0                                                     |         
    0x080098b0 mov r2, 0x14                                                      |         r2 = 0x14;
    0x080098b4 mla r2, r2, fp, r4                                                |         __asm ("mla r2, r2, fp, r4");
    0x080098b8 ldrb r1, [r2, 0xa1]                                               |         r1 = *((r2 + 0xa1));
    0x080098bc tst r1, 0x20                                                      |         
                                                                                 |         if ((r1 & 0x20) != 0) {
    0x080098c0 bne 0x8009bac                                                     |             goto label_58;
                                                                                 |         }
    0x080098c4 orr r1, r1, 0x20                                                  |         r1 |= 0x20;
    0x080098c8 str sb, [r2, 0x9c]                                                |         *((r2 + 0x9c)) = sb;
    0x080098cc strb r1, [r2, 0xa1]                                               |         *((r2 + 0xa1)) = r1;
                                                                                 |     }
                                                                                 | label_24:
    0x080098d0 ldr r1, [sp, 0x14]                                                |     r1 = var_14h;
    0x080098d4 mov r2, 0x14                                                      |     r2 = 0x14;
    0x080098d8 mla r2, r2, r1, r4                                                |     __asm ("mla r2, r2, r1, r4");
    0x080098dc ldr r1, [r2, 0x98]                                                |     r1 = *((r2 + 0x98));
    0x080098e0 cmp r1, 0                                                         |     
                                                                                 |     if (r1 != 0) {
    0x080098e4 beq 0x8009900                                                     |         
    0x080098e8 ldr ip, [sp, 0x28]                                                |         ip = var_28h;
    0x080098ec sub r0, r3, ip                                                    |         r0 = r3 - ip;
    0x080098f0 cmp r0, 0                                                         |         
                                                                                 |         if (r0 >= 0) {
    0x080098f4 sublt r3, r1, r3                                                  |             r3 = r1 - r3;
                                                                                 |         }
                                                                                 |         if (r0 >= 0) {
    0x080098f8 addlt r3, r3, ip                                                  |             r3 += ip;
                                                                                 |         }
                                                                                 |         if (r0 < 0) {
    0x080098fc strlt r3, [r2, 0x98]                                              |             *((r2 + 0x98)) = r3;
                                                                                 |             goto label_59;
                                                                                 |         }
                                                                                 |     }
                                                                                 | label_59:
    0x08009900 ldr r0, [sp, 0x48]                                                |     r0 = var_48h;
    0x08009904 ldr r3, [sp, 0x2c]                                                |     r3 = var_2ch;
    0x08009908 ldr r2, [sl, 0x94]                                                |     r2 = *((sl + 0x94));
    0x0800990c add r3, r0, r3                                                    |     r3 = r0 + r3;
    0x08009910 mvn r1, r3                                                        |     r1 = ~r3;
    0x08009914 cmn r1, r2                                                        |     
                                                                                 |     if (r1 < r2) {
    0x08009918 bpl 0x800992c                                                     |         
    0x0800991c cmp r0, 0                                                         |         
                                                                                 |         if (r0 != 0) {
    0x08009920 ldreq r3, [sp, 0x2c]                                              |             r3 = var_2ch;
                                                                                 |         }
                                                                                 |         if (r0 != 0) {
    0x08009924 addeq r3, r3, 1                                                   |             r3++;
                                                                                 |         }
    0x08009928 str r3, [sl, 0x94]                                                |         *((sl + 0x94)) = r3;
                                                                                 |     }
    0x0800992c ldr r3, [sl, 0x90]                                                |     r3 = *((sl + 0x90));
    0x08009930 cmp sb, r3                                                        |     
                                                                                 |     if (sb == r3) {
    0x08009934 bne 0x8009950                                                     |         
    0x08009938 ldr r2, [sp, 0x14]                                                |         r2 = var_14h;
    0x0800993c mov r3, 0x14                                                      |         r3 = 0x14;
    0x08009940 mla r3, r3, r2, r4                                                |         __asm ("mla r3, r3, r2, r4");
    0x08009944 ldrb r2, [r3, 0xa1]                                               |         r2 = *((r3 + 0xa1));
    0x08009948 bic r2, r2, 0x10                                                  |         r2 = BIT_MASK (r2, 0x10);
    0x0800994c strb r2, [r3, 0xa1]                                               |         *((r3 + 0xa1)) = r2;
                                                                                 |     }
    0x08009950 ldr r3, [sp, 0x18]                                                |     r3 = var_18h;
    0x08009954 ldr r2, [sp, 0x10]                                                |     r2 = var_10h;
    0x08009958 subs r3, r8, r3                                                   |     r3 = r8 - r3;
                                                                                 |     if (r3 == r8) {
    0x0800995c movne r3, 1                                                       |         r3 = 1;
                                                                                 |     }
    0x08009960 cmp r8, 4                                                         |     
                                                                                 |     if (r8 == 4) {
    0x08009964 movne r3, 0                                                       |         r3 = 0;
                                                                                 |     }
    0x08009968 cmp r2, 3                                                         |     
                                                                                 |     if (r2 == 3) {
    0x0800996c beq 0x8009afc                                                     |         goto label_60;
                                                                                 |     }
    0x08009970 ldrb r1, [r4, 0xba]                                               |     r1 = *((r4 + 0xba));
    0x08009974 b 0x8008d9c                                                       |     goto label_21;
                                                                                 | label_50:
    0x08009978 adds r3, r3, r1                                                   |     r3 += r1;
                                                                                 |     if (r3 != r3) {
    0x0800997c bne 0x8009494                                                     |         goto label_22;
                                                                                 |     }
                                                                                 | label_51:
    0x08009980 udf 0x12                                                          |     __asm ("udf 0x12");
                                                                                 | label_52:
    0x080099e0 ldr r1, [r3]                                                      |     r1 = *(r3);
    0x080099e4 movw r2, 0x101                                                    |     
    0x080099e8 movt r2, 0xa08                                                    |     r2 = 0xa080101;
    0x080099ec cmp r1, r2                                                        |     
                                                                                 |     if (r1 != r2) {
    0x080099f0 bne 0x80094a4                                                     |         goto label_23;
                                                                                 |     }
    0x080099f4 b 0x8008c4c                                                       |     goto label_10;
                                                                                 | label_55:
    0x080099f8 mov r1, r7                                                        |     r1 = r7;
    0x080099fc mov r7, 0x14                                                      |     r7 = 0x14;
    0x08009a00 ldr r2, [sp, 0x38]                                                |     r2 = var_38h;
    0x08009a04 mla r0, r7, fp, r4                                                |     __asm ("mla r0, r7, fp, r4");
    0x08009a08 ldr r3, [sp, 0x28]                                                |     r3 = var_28h;
    0x08009a0c cmp r2, 1                                                         |     
    0x08009a10 str r3, [sb, 0x94]                                                |     *((sb + 0x94)) = r3;
                                                                                 |     if (r2 < 1) {
    0x08009a14 movhs ip, r2                                                      |         
                                                                                 |     }
    0x08009a18 str r3, [sb, 0x90]                                                |     *((sb + 0x90)) = r3;
                                                                                 |     if (r2 >= 1) {
    0x08009a1c movlo ip, 1                                                       |         
                                                                                 |     }
    0x08009a20 ldr r3, [sp, 0x44]                                                |     r3 = var_44h;
    0x08009a24 str ip, [r0, 0x98]                                                |     *((r0 + 0x98)) = ip;
    0x08009a28 mov r2, r5                                                        |     r2 = r5;
    0x08009a2c mov r0, r6                                                        |     r0 = r6;
    0x08009a30 bl 0x8008720                                                      |     tcp_options ();
    0x08009a34 ldr r3, [sp, 0x14]                                                |     r3 = var_14h;
    0x08009a38 mla r7, r7, r3, r4                                                |     __asm ("mla r7, r7, r3, r4");
    0x08009a3c ldr r3, [sb, 0x94]                                                |     r3 = *((sb + 0x94));
    0x08009a40 ldr ip, [r7, 0x98]                                                |     ip = *((r7 + 0x98));
    0x08009a44 b 0x8008ce4                                                       |     goto label_17;
                                                                                 | label_60:
    0x08009afc ldrb r2, [r4, 0xb9]                                               |     r2 = *((r4 + 0xb9));
    0x08009b00 cmp fp, r2                                                        |     
    0x08009b04 beq 0x8009bc0                                                     |     
                                                                                 |     while (r1 != r2) {
                                                                                 | label_25:
    0x08009b08 ldr r2, [sp, 0x20]                                                |         r2 = var_20h;
    0x08009b0c mov r1, 0                                                         |         r1 = 0;
    0x08009b10 str r2, [r4, 0xbc]                                                |         *((r4 + 0xbc)) = r2;
    0x08009b14 ldr r2, [sp, 0x28]                                                |         r2 = var_28h;
    0x08009b18 str r2, [r4, 0xc4]                                                |         *((r4 + 0xc4)) = r2;
    0x08009b1c ldrh r2, [sp, 0x4e]                                               |         r2 = var_4eh;
    0x08009b20 str sb, [r4, 0xc0]                                                |         *((r4 + 0xc0)) = sb;
    0x08009b24 strh r2, [r4, 0xc8]                                               |         *((r4 + 0xc8)) = r2;
    0x08009b28 strb r1, [r4, 0xba]                                               |         *((r4 + 0xba)) = r1;
    0x08009b2c b 0x8008d9c                                                       |         goto label_21;
                                                                                 | label_58:
    0x08009bac ldr r1, [r2, 0x9c]                                                |         r1 = *((r2 + 0x9c));
    0x08009bb0 sub r1, r1, sb                                                    |         r1 -= sb;
    0x08009bb4 cmp r1, 0                                                         |         
                                                                                 |         if (r1 >= 0) {
    0x08009bb8 strlt sb, [r2, 0x9c]                                              |             *((r2 + 0x9c)) = sb;
                                                                                 |         }
    0x08009bbc b 0x80098d0                                                       |         goto label_24;
    0x08009bc0 ldr r2, [r4, 0xbc]                                                |         r2 = *((r4 + 0xbc));
    0x08009bc4 ldr r1, [sp, 0x20]                                                |         r1 = var_20h;
    0x08009bc8 cmp r1, r2                                                        |         
    0x08009bcc bne 0x8009b08                                                     |         
                                                                                 |     }
    0x08009bd0 ldr r2, [r4, 0xc0]                                                |     r2 = *((r4 + 0xc0));
    0x08009bd4 cmp sb, r2                                                        |     
                                                                                 |     if (sb != r2) {
    0x08009bd8 bne 0x8009b08                                                     |         goto label_25;
                                                                                 |     }
    0x08009bdc ldr r2, [r4, 0xc4]                                                |     r2 = *((r4 + 0xc4));
    0x08009be0 ldr r1, [sp, 0x28]                                                |     r1 = var_28h;
    0x08009be4 cmp r1, r2                                                        |     
                                                                                 |     if (r1 != r2) {
    0x08009be8 bne 0x8009b08                                                     |         goto label_25;
                                                                                 |     }
    0x08009bec ldrh r2, [r4, 0xc8]                                               |     r2 = *((r4 + 0xc8));
    0x08009bf0 ldr r1, [sp, 0x38]                                                |     r1 = var_38h;
    0x08009bf4 cmp r2, r1                                                        |     
                                                                                 |     if (r2 != r1) {
    0x08009bf8 bne 0x8009b08                                                     |         goto label_25;
                                                                                 |     }
    0x08009bfc ldrb r1, [r4, 0xba]                                               |     r1 = *((r4 + 0xba));
    0x08009c00 add r1, r1, 1                                                     |     r1++;
    0x08009c04 uxtb r1, r1                                                       |     r1 = (int8_t) r1;
    0x08009c08 strb r1, [r4, 0xba]                                               |     *((r4 + 0xba)) = r1;
    0x08009c0c b 0x8008d9c                                                       |     goto label_21;
                                                                                 | label_41:
    0x08009d6c stmdaeq r0, {r3, r4, r5, r7, r8, sp, lr, pc}                      |     __asm ("stmdaeq r0, {r3, r4, r5, r7, r8, sp, lr, pc}");
    0x08009d70 stmdaeq r0, {r3, r4, r5, r7, r8, sp, lr, pc}                      |     __asm ("stmdaeq r0, {r3, r4, r5, r7, r8, sp, lr, pc}");
    0x08009d74 b 0x8009314                                                       |     goto label_15;
                                                                                 | label_29:
    0x08009d78 ldrb r2, [r8, 4]                                                  |     r2 = *((r8 + 4));
    0x08009d7c stmdaeq r0, {r2, r4, r6, r7, sb, sp, lr, pc}                      |     __asm ("stmdaeq r0, {r2, r4, r6, r7, sb, sp, lr, pc}");
    0x08009d80 stmdaeq r0, {r2, r4, r6, r7, sb, sp, lr, pc}                      |     __asm ("stmdaeq r0, {r2, r4, r6, r7, sb, sp, lr, pc}");
    0x08009d84 ldr r1, [r8, 0x14]                                                |     r1 = *((r8 + 0x14));
    0x08009d88 mov r0, r6                                                        |     r0 = r6;
                                                                                 |     do {
    0x08009d8c stmdaeq r0, {r6, r7, sb, sp, lr, pc}                              |         __asm ("stmdaeq r0, {r6, r7, sb, sp, lr, pc}");
    0x08009d90 stmdaeq r0, {r6, r7, sb, sp, lr, pc}                              |         __asm ("stmdaeq r0, {r6, r7, sb, sp, lr, pc}");
    0x08009d94 stm sp, {r3, ip}                                                  |         *(sp) = r3;
                                                                                 |         *((sp + 4)) = ip;
    0x08009d98 mov r3, 6                                                         |         r3 = 6;
    0x08009d9c stmdaeq r0, {r6, r8, sb, lr, pc}                                  |         __asm ("stmdaeq r0, {r6, r8, sb, lr, pc}");
    0x08009da0 b 0x80092bc                                                       |         goto label_4;
                                                                                 | label_27:
    0x08009da4 stmdaeq r0, {r2, r3, r5, r7, sb, sp, lr, pc}                      |         __asm ("stmdaeq r0, {r2, r3, r5, r7, sb, sp, lr, pc}");
    0x08009da8 stmdaeq r0, {r2, r3, r5, r7, sb, sp, lr, pc}                      |         __asm ("stmdaeq r0, {r2, r3, r5, r7, sb, sp, lr, pc}");
    0x08009dac ldrb r2, [r8, 4]                                                  |         r2 = *((r8 + 4));
    0x08009db0 mov r0, r6                                                        |         r0 = r6;
    0x08009db4 b 0x8009d8c                                                       |         
                                                                                 |     } while (1);
                                                                                 | }
    ; assembly                                                           | /* r2dec pseudo code output */
                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/netfilter/nf_conntrack.ko @ 0x8005610 */
                                                                         | #include <stdint.h>
                                                                         |  
                                                                         | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                         |  
    ; (fcn) sym.nf_ct_expectation_timed_out ()                           | void nf_ct_expectation_timed_out (int32_t arg1) {
                                                                         |     int32_t var_0h;
                                                                         |     r0 = arg1;
    0x08005610 push {r4, r5, r6, lr}                                     |     
    0x08005614 movw r5, 0x201                                            |     r5 = 0x201;
    0x08005618 sub r4, r0, 0x58                                          |     r4 = r0 - 0x58;
    0x0800561c mov r3, sp                                                |     r3 = sp;
    0x08005620 bic r3, r3, 0x1fc0                                        |     r3 = BIT_MASK (r3, 0x1fc0);
    0x08005624 bic r3, r3, 0x3f                                          |     r3 = BIT_MASK (r3, 0x3f);
    0x08005628 ldr r2, [r3, 4]                                           |     r2 = *((r3 + 4));
    0x0800562c add r2, r2, r5                                            |     r2 += r5;
    0x08005630 str r2, [r3, 4]                                           |     *((r3 + 4)) = r2;
    0x08005634 mov r2, 0                                                 |     r2 = 0;
    0x08005638 mov r0, r4                                                |     r0 = r4;
    0x0800563c mov r1, r2                                                |     r1 = r2;
    0x08005640 stmdaeq r0, {r3, r6, r7, sl, ip, lr}                      |     __asm ("stmdaeq r0, {r3, r6, r7, sl, ip, lr}");
    0x08005644 ldr r0, [pc, 0x10]                                        |     r0 = *(0x8005658);
    0x08005648 mov r1, r5                                                |     r1 = r5;
    0x0800564c stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}          |     __asm ("stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}");
    0x08005650 mov r0, r4                                                |     r0 = r4;
    0x08005654 pop {r4, r5, r6, lr}                                      |     
    0x08005658 stmdaeq r0, {r7, sl, ip, lr}                              |     __asm ("stmdaeq r0, {r7, sl, ip, lr}");
    0x0800565c stmdaeq r0, {r4, r5, r6}                                  |     __asm ("stmdaeq r0, {r4, r5, r6}");
                                                                         | }
    ; assembly                                                               | /* r2dec pseudo code output */
                                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/netfilter/nf_conntrack.ko @ 0x80066cc */
                                                                             | #include <stdint.h>
                                                                             |  
                                                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                             |  
    ; (fcn) sym.nf_ct_helper_expectfn_register ()                            | void nf_ct_helper_expectfn_register (int32_t arg_34h, int32_t arg1) {
                                                                             |     int32_t var_1ch;
                                                                             |     int32_t var_20h;
                                                                             |     int32_t var_24h;
                                                                             |     int32_t var_30h;
                                                                             |     r0 = arg1;
    0x080066cc mov r3, sp                                                    |     r3 = sp;
    0x080066d0 movw r1, 0x201                                                |     r1 = 0x201;
    0x080066d4 bic r2, r3, 0x1fc0                                            |     r2 = BIT_MASK (r3, 0x1fc0);
    0x080066d8 mov r3, r0                                                    |     r3 = r0;
    0x080066dc bic r2, r2, 0x3f                                              |     r2 = BIT_MASK (r2, 0x3f);
    0x080066e0 ldr r0, [r2, 4]                                               |     r0 = *((r2 + 4));
    0x080066e4 add r0, r0, r1                                                |     r0 += r1;
    0x080066e8 str r0, [r2, 4]                                               |     *((r2 + 4)) = r0;
    0x080066ec stmdaeq r0, {r3, r4, r5, r6, sb, sl, fp, sp, lr, pc}          |     __asm ("stmdaeq r0, {r3, r4, r5, r6, sb, sl, fp, sp, lr, pc}");
    0x080066f0 stmdaeq r0, {r3, r4, r5, r6, sb, sl, fp, sp, lr, pc}          |     __asm ("stmdaeq r0, {r3, r4, r5, r6, sb, sl, fp, sp, lr, pc}");
    0x080066f4 str r2, [r3, 4]                                               |     *((r3 + 4)) = r2;
    0x080066f8 ldr ip, [r2]                                                  |     ip = *(r2);
    0x080066fc str ip, [r3]                                                  |     *(r3) = ip;
    0x08006700 ldr r0, [pc, 8]                                               |     r0 = sym.__nf_conntrack_hash_insert;
    0x08006704 str r3, [ip, 4]                                               |     *((ip + 4)) = r3;
    0x08006708 str r3, [r2]                                                  |     *(r2) = r3;
    0x0800670c stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}              |     __asm ("stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}");
    0x08006710 stmdaeq r0, {r4, r5, r6}                                      |     __asm ("stmdaeq r0, {r4, r5, r6}");
                                                                             | }
    ; assembly                                                           | /* r2dec pseudo code output */
                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/netfilter/nf_conntrack.ko @ 0x8006714 */
                                                                         | #include <stdint.h>
                                                                         |  
                                                                         | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                         |  
    ; (fcn) sym.nf_ct_helper_expectfn_unregister ()                      | void nf_ct_helper_expectfn_unregister (int32_t arg1) {
                                                                         |     r0 = arg1;
    0x08006714 mov r3, sp                                                |     r3 = sp;
    0x08006718 movw r1, 0x201                                            |     r1 = 0x201;
    0x0800671c bic r2, r3, 0x1fc0                                        |     r2 = BIT_MASK (r3, 0x1fc0);
    0x08006720 mov r3, r0                                                |     r3 = r0;
    0x08006724 bic r2, r2, 0x3f                                          |     r2 = BIT_MASK (r2, 0x3f);
    0x08006728 ldr r0, [r2, 4]                                           |     r0 = *((r2 + 4));
    0x0800672c add r0, r0, r1                                            |     r0 += r1;
    0x08006730 str r0, [r2, 4]                                           |     *((r2 + 4)) = r0;
    0x08006734 ldm r3, {r0, r2}                                          |     r0 = *(r3);
                                                                         |     r2 = *((r3 + 4));
    0x08006738 str r2, [r0, 4]                                           |     *((r0 + 4)) = r2;
    0x0800673c movw ip, 0x122                                            |     ip = 0x122;
    0x08006740 str r0, [r2]                                              |     *(r2) = r0;
    0x08006744 ldr r0, [pc, 4]                                           |     r0 = sym.__nf_conntrack_hash_insert;
    0x08006748 str ip, [r3, 4]                                           |     *((r3 + 4)) = ip;
    0x0800674c stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}          |     __asm ("stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}");
    0x08006750 stmdaeq r0, {r4, r5, r6}                                  |     __asm ("stmdaeq r0, {r4, r5, r6}");
                                                                         | }
    ; assembly                                                               | /* r2dec pseudo code output */
                                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/netfilter/nf_conntrack.ko @ 0x8005af8 */
                                                                             | #include <stdint.h>
                                                                             |  
                                                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                             |  
    ; (fcn) sym.nf_ct_remove_expectations ()                                 | void nf_ct_remove_expectations (int32_t arg1) {
                                                                             |     int32_t var_0h;
                                                                             |     r0 = arg1;
    0x08005af8 ldr r3, [r0, 0x8c]                                            |     r3 = *((r0 + 0x8c));
    0x08005afc cmp r3, 0                                                     |     
                                                                             |     if (r3 != 0) {
    0x08005b00 bxeq lr                                                       |         return;
                                                                             |     }
    0x08005b04 ldrb r2, [r3]                                                 |     r2 = *(r3);
    0x08005b08 cmp r2, 0                                                     |     
                                                                             |     if (r2 != 0) {
    0x08005b0c bxeq lr                                                       |         return;
                                                                             |     }
    0x08005b10 adds r3, r3, r2                                               |     r3 += r2;
                                                                             |     if (r3 != r3) {
    0x08005b14 bxeq lr                                                       |         return;
                                                                             |     }
    0x08005b18 push {r4, r5, r6, lr}                                         |     
    0x08005b1c mov r2, sp                                                    |     r2 = sp;
    0x08005b20 bic r1, r2, 0x1fc0                                            |     r1 = BIT_MASK (r2, 0x1fc0);
    0x08005b24 bic r1, r1, 0x3f                                              |     r1 = BIT_MASK (r1, 0x3f);
    0x08005b28 ldr r2, [r1, 4]                                               |     r2 = *((r1 + 4));
    0x08005b2c add r2, r2, 0x200                                             |     r2 += 0x200;
    0x08005b30 add r2, r2, 1                                                 |     r2++;
    0x08005b34 str r2, [r1, 4]                                               |     *((r1 + 4)) = r2;
    0x08005b38 ldr r4, [r3, 4]                                               |     r4 = *((r3 + 4));
    0x08005b3c cmp r4, 0                                                     |     
                                                                             |     if (r4 != 0) {
    0x08005b40 bne 0x8005b50                                                 |         goto label_0;
                                                                             |     }
    0x08005b44 b 0x8005b88                                                   |     goto label_1;
                                                                             |     do {
    0x08005b48 cmp r4, 0                                                     |         
                                                                             |         if (r4 == 0) {
    0x08005b4c beq 0x8005b88                                                 |             goto label_1;
                                                                             |         }
                                                                             | label_0:
    0x08005b50 mov r5, r4                                                    |         r5 = r4;
    0x08005b54 ldr r4, [r4]                                                  |         r4 = *(r4);
    0x08005b58 add r0, r5, 0x58                                              |         r0 = r5 + 0x58;
    0x08005b5c stmdaeq r1, {r0, r1, r5, r7, r8, sb, sl, fp, lr, pc}          |         __asm ("stmdaeq r1, {r0, r1, r5, r7, r8, sb, sl, fp, lr, pc}");
    0x08005b60 cmp r0, 0                                                     |         
    0x08005b64 beq 0x8005b48                                                 |         
                                                                             |     } while (r0 == 0);
    0x08005b68 mov r2, 0                                                     |     r2 = 0;
    0x08005b6c mov r0, r5                                                    |     r0 = r5;
    0x08005b70 mov r1, r2                                                    |     r1 = r2;
    0x08005b74 stmdaeq r0, {r3, r6, r7, sl, ip, lr}                          |     __asm ("stmdaeq r0, {r3, r6, r7, sl, ip, lr}");
    0x08005b78 mov r0, r5                                                    |     r0 = r5;
    0x08005b7c stmdaeq r0, {r7, sl, ip, lr}                                  |     __asm ("stmdaeq r0, {r7, sl, ip, lr}");
    0x08005b80 cmp r4, 0                                                     |     
                                                                             |     if (r4 != 0) {
    0x08005b84 bne 0x8005b50                                                 |         goto label_0;
                                                                             |     }
                                                                             | label_1:
    0x08005b88 pop {r4, r5, r6, lr}                                          |     
    0x08005b8c movw r1, 0x201                                                |     r1 = 0x201;
    0x08005b90 ldr r0, [pc]                                                  |     r0 = *(0x8005b90);
    0x08005b94 stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}              |     __asm ("stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}");
    0x08005b98 stmdaeq r0, {r4, r5, r6}                                      |     __asm ("stmdaeq r0, {r4, r5, r6}");
                                                                             | }
    ; assembly                                                               | /* r2dec pseudo code output */
                                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/netfilter/nf_conntrack.ko @ 0x8005b9c */
                                                                             | #include <stdint.h>
                                                                             |  
                                                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                             |  
    ; (fcn) sym.nf_ct_unexpect_related ()                                    | void nf_ct_unexpect_related (int32_t arg_8ch, uint32_t arg1) {
                                                                             |     int32_t var_14h;
                                                                             |     int32_t var_18h;
                                                                             |     int32_t var_14h_2;
                                                                             |     int32_t var_18h_2;
                                                                             |     int32_t var_0h;
                                                                             |     r0 = arg1;
    0x08005b9c push {r4, lr}                                                 |     
    0x08005ba0 mov r4, r0                                                    |     r4 = r0;
    0x08005ba4 mov r3, sp                                                    |     r3 = sp;
    0x08005ba8 bic r2, r3, 0x1fc0                                            |     r2 = BIT_MASK (r3, 0x1fc0);
    0x08005bac bic r2, r2, 0x3f                                              |     r2 = BIT_MASK (r2, 0x3f);
    0x08005bb0 ldr r3, [r2, 4]                                               |     r3 = *((r2 + 4));
    0x08005bb4 add r3, r3, 0x200                                             |     r3 += 0x200;
    0x08005bb8 add r3, r3, 1                                                 |     r3++;
    0x08005bbc str r3, [r2, 4]                                               |     *((r2 + 4)) = r3;
    0x08005bc0 add r0, r0, 0x58                                              |     r0 += 0x58;
    0x08005bc4 stmdaeq r1, {r0, r1, r5, r7, r8, sb, sl, fp, lr, pc}          |     __asm ("stmdaeq r1, {r0, r1, r5, r7, r8, sb, sl, fp, lr, pc}");
    0x08005bc8 cmp r0, 0                                                     |     
                                                                             |     if (r0 == 0) {
    0x08005bcc bne 0x8005be0                                                 |         
    0x08005bd0 pop {r4, lr}                                                  |         
    0x08005bd4 movw r1, 0x201                                                |         r1 = 0x201;
    0x08005bd8 ldr r0, [pc, 0x28]                                            |         r0 = *(0x8005c04);
    0x08005bdc stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}              |         __asm ("stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}");
                                                                             |     }
    0x08005be0 mov r0, r4                                                    |     r0 = r4;
    0x08005be4 mov r2, 0                                                     |     r2 = 0;
    0x08005be8 mov r1, r2                                                    |     r1 = r2;
    0x08005bec stmdaeq r0, {r3, r6, r7, sl, ip, lr}                          |     __asm ("stmdaeq r0, {r3, r6, r7, sl, ip, lr}");
    0x08005bf0 mov r0, r4                                                    |     r0 = r4;
    0x08005bf4 stmdaeq r0, {r7, sl, ip, lr}                                  |     __asm ("stmdaeq r0, {r7, sl, ip, lr}");
    0x08005bf8 ldr r0, [pc, 8]                                               |     r0 = sym.__nf_conntrack_hash_insert;
    0x08005bfc pop {r4, lr}                                                  |     
    0x08005c00 movw r1, 0x201                                                |     r1 = 0x201;
    0x08005c04 stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}              |     __asm ("stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}");
    0x08005c08 stmdaeq r0, {r4, r5, r6}                                      |     __asm ("stmdaeq r0, {r4, r5, r6}");
                                                                             | }

[*] Function strcat used 1 times nf_conntrack.ko