[*] Binary protection state of nf_log_ipv6.ko

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


[*] Function strcpy tear down of nf_log_ipv6.ko

    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/net/ipv6/netfilter/nf_log_ipv6.ko @ 0x800008c */
                                                                     | #include <stdint.h>
                                                                     |  
                                                                     | #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
                                                                     |                                ((n & 0x0000ff00) <<  8) | \
                                                                     |                                ((n & 0x00ff0000) >>  8) | \
                                                                     |                                ((n & 0xff000000) >> 24)))
                                                                     |  
    ; (fcn) sym.dump_ipv6_packet ()                                  | void dump_ipv6_packet (int32_t arg_80h, int32_t arg_84h, int32_t arg1, int32_t arg2) {
                                                                     |     int32_t var_0h;
                                                                     |     int32_t var_4h;
                                                                     |     int32_t var_ch;
                                                                     |     int32_t var_10h;
                                                                     |     int32_t var_14h;
                                                                     |     int32_t var_18h;
                                                                     |     int32_t var_1ch;
                                                                     |     int32_t var_22h;
                                                                     |     int32_t var_24h;
                                                                     |     int32_t var_30h;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
    0x0800008c push {r4, r5, r6, r7, r8, sb, sl, fp, lr}             |     
    0x08000090 mov r4, r3                                            |     r4 = r3;
    0x08000094 mov r8, r1                                            |     r8 = r1;
    0x08000098 ldrb r3, [r2]                                         |     r3 = *(r2);
    0x0800009c sub sp, sp, 0x5c                                      |     
    0x080000a0 ldr r5, [r4, 0xa8]                                    |     r5 = *((r4 + 0xa8));
    0x080000a4 cmp r3, 0                                             |     
    0x080000a8 str r2, [sp, 0x1c]                                    |     var_1ch = r2;
                                                                     |     if (r3 == 0) {
    0x080000ac movne r3, 0xf                                         |         r3 = 0xf;
                                                                     |     }
    0x080000b0 ldr r6, [sp, 0x80]                                    |     r6 = *(arg_80h);
                                                                     |     if (r3 != 0) {
    0x080000b4 ldrbeq r3, [r2, 5]                                    |         r3 = *((r2 + 5));
                                                                     |     }
    0x080000b8 str r3, [sp, 0xc]                                     |     var_ch = r3;
    0x080000bc ldr r2, [r4, 0x58]                                    |     r2 = *((r4 + 0x58));
    0x080000c0 ldr r3, [r4, 0x54]                                    |     r3 = *((r4 + 0x54));
    0x080000c4 str r0, [sp, 0x18]                                    |     var_18h = r0;
    0x080000c8 sub r3, r3, r2                                        |     r3 -= r2;
    0x080000cc sub r3, r3, r6                                        |     r3 -= r6;
    0x080000d0 cmp r3, 0x27                                          |     
                                                                     |     if (r3 > 0x27) {
    0x080000d4 bgt 0x8000208                                         |         goto label_15;
                                                                     |     }
    0x080000d8 cmp r4, 0                                             |     
                                                                     |     if (r4 == 0) {
    0x080000dc beq 0x8000210                                         |         goto label_0;
                                                                     |     }
    0x080000e0 mov r1, r6                                            |     r1 = r6;
    0x080000e4 add r2, sp, 0x30                                      |     r2 += var_30h;
    0x080000e8 mov r0, r4                                            |     r0 = r4;
    0x080000ec mov r3, 0x28                                          |     r3 = 0x28;
    0x080000f0 stmdaeq r0, {r1, r4, r5, r6, sb, sp}                  |     __asm ("stmdaeq r0, {r1, r4, r5, r6, sb, sp}");
    0x080000f4 cmp r0, 0                                             |     
                                                                     |     if (r0 < 0) {
    0x080000f8 blt 0x8000210                                         |         goto label_0;
                                                                     |     }
    0x080000fc add r5, sp, 0x30                                      |     r5 += var_30h;
                                                                     |     do {
    0x08000100 add r3, r5, 0x18                                      |         r3 = r5 + 0x18;
    0x08000104 add r2, r5, 8                                         |         r2 = r5 + 8;
    0x08000108 mov r0, r8                                            |         r0 = r8;
    0x0800010c stmdaeq r0, {r4, r6, r8, sb, fp}                      |         __asm ("stmdaeq r0, {r4, r6, r8, sb, fp}");
    0x08000110 stmdaeq r0, {r4, r6, r8, sb, fp}                      |         __asm ("stmdaeq r0, {r4, r6, r8, sb, fp}");
    0x08000114 add r6, r6, 0x28                                      |         r6 += 0x28;
    0x08000118 stmdaeq r0, {r1, r2, r4, r5, r6, sb, sp}              |         __asm ("stmdaeq r0, {r1, r2, r4, r5, r6, sb, sp}");
    0x0800011c ldr r3, [r5]                                          |         r3 = *(r5);
    0x08000120 ldrh r2, [r5, 4]                                      |         r2 = *((r5 + 4));
    0x08000124 mov r0, r8                                            |         r0 = r8;
    0x08000128 rev r3, r3                                            |         r3 = SWAP32 (r3);
    0x0800012c rev16 r2, r2                                          |         __asm ("rev16 r2, r2");
    0x08000130 ubfx r1, r3, 0, 0x14                                  |         r1 = (r3 >> 0) & ((1 << 0x14) - 1);
    0x08000134 str r1, [sp, 4]                                       |         var_4h = r1;
    0x08000138 uxth r2, r2                                           |         r2 = (int16_t) r2;
    0x0800013c ubfx r3, r3, 0x14, 8                                  |         r3 = (r3 >> 0x14) & ((1 << 8) - 1);
    0x08000140 ldrb ip, [r5, 7]                                      |         ip = *((r5 + 7));
    0x08000144 add r2, r2, 0x28                                      |         r2 += 0x28;
    0x08000148 stmdaeq r0, {r2, r5, r6, r8, sb, fp}                  |         __asm ("stmdaeq r0, {r2, r5, r6, r8, sb, fp}");
    0x0800014c stmdaeq r0, {r2, r5, r6, r8, sb, fp}                  |         __asm ("stmdaeq r0, {r2, r5, r6, r8, sb, fp}");
    0x08000150 str ip, [sp]                                          |         *(sp) = ip;
    0x08000154 stmdaeq r0, {r1, r2, r4, r5, r6, sb, sp}              |         __asm ("stmdaeq r0, {r1, r2, r4, r5, r6, sb, sp}");
    0x08000158 ldrb r5, [r5, 6]                                      |         r5 = *((r5 + 6));
    0x0800015c cmp r5, 0x3b                                          |         
                                                                     |         if (r5 == 0x3b) {
    0x08000160 beq 0x8000330                                         |             goto label_16;
                                                                     |         }
    0x08000164 movw sb, 0x183                                        |         
    0x08000168 movt sb, 2                                            |         sb = 0x20183;
    0x0800016c stmdaeq r0, {r2, r4, r7, r8, sb, fp}                  |         __asm ("stmdaeq r0, {r2, r4, r7, r8, sb, fp}");
    0x08000170 stmdaeq r0, {r2, r4, r7, r8, sb, fp}                  |         __asm ("stmdaeq r0, {r2, r4, r7, r8, sb, fp}");
    0x08000174 stmdaeq r0, {r3, r5, r7, r8, sb, fp}                  |         __asm ("stmdaeq r0, {r3, r5, r7, r8, sb, fp}");
    0x08000178 stmdaeq r0, {r3, r5, r7, r8, sb, fp}                  |         __asm ("stmdaeq r0, {r3, r5, r7, r8, sb, fp}");
    0x0800017c str r3, [sp, 0x14]                                    |         var_14h = r3;
    0x08000180 mov r3, 0                                             |         r3 = 0;
    0x08000184 str r3, [sp, 0x10]                                    |         var_10h = r3;
                                                                     | label_1:
    0x08000188 cmp r5, 0                                             |         
                                                                     |         if (r5 == 0) {
    0x0800018c beq 0x8000228                                         |             goto label_17;
                                                                     |         }
    0x08000190 sub r3, r5, 0x2b                                      |         r3 = r5 - 0x2b;
    0x08000194 uxtb r3, r3                                           |         r3 = (int8_t) r3;
    0x08000198 cmp r3, 0x11                                          |         
                                                                     |         if (r3 > 0x11) {
    0x0800019c bhi 0x80005fc                                         |             goto label_18;
                                                                     |         }
    0x080001a0 lsr r3, sb, r3                                        |         r3 = sb >> r3;
    0x080001a4 tst r3, 1                                             |         
                                                                     |         if ((r3 & 1) != 0) {
    0x080001a8 bne 0x8000228                                         |             goto label_17;
                                                                     |         }
                                                                     | label_9:
    0x080001ac cmp r5, 0x3a                                          |         
                                                                     |         if (r5 != 0x3a) {
    0x080001b0 bne 0x80005b4                                         |             goto label_19;
                                                                     |         }
    0x080001b4 mov r0, r8                                            |         r0 = r8;
    0x080001b8 stmdaeq r0, {r2, r3, r4, sl, fp}                      |         __asm ("stmdaeq r0, {r2, r3, r4, sl, fp}");
    0x080001bc stmdaeq r0, {r2, r3, r4, sl, fp}                      |         __asm ("stmdaeq r0, {r2, r3, r4, sl, fp}");
    0x080001c0 stmdaeq r0, {r1, r2, r4, r5, r6, sb, sp}              |         __asm ("stmdaeq r0, {r1, r2, r4, r5, r6, sb, sp}");
    0x080001c4 ldr r3, [sp, 0x10]                                    |         r3 = var_10h;
    0x080001c8 cmp r3, 0                                             |         
                                                                     |         if (r3 == 0) {
    0x080001cc beq 0x800068c                                         |             goto label_20;
                                                                     |         }
                                                                     | label_2:
    0x080001d0 ldr r3, [sp, 0xc]                                     |         r3 = var_ch;
    0x080001d4 tst r3, 8                                             |         
    0x080001d8 ldr r3, [sp, 0x84]                                    |         r3 = *(arg_84h);
                                                                     |         if ((r3 & 8) != 0) {
    0x080001dc bne 0x8000650                                         |             goto label_21;
                                                                     |         }
    0x080001e0 cmp r3, 0                                             |         
                                                                     |         if (r3 == 0) {
    0x080001e4 beq 0x8000220                                         |             goto label_7;
                                                                     |         }
                                                                     | label_10:
    0x080001e8 ldr r2, [r4, 0x88]                                    |         r2 = *((r4 + 0x88));
    0x080001ec cmp r2, 0                                             |         
                                                                     |         if (r2 == 0) {
    0x080001f0 beq 0x8000220                                         |             goto label_7;
                                                                     |         }
    0x080001f4 mov r0, r8                                            |         r0 = r8;
    0x080001f8 stmdaeq r0, {r2, r4, r7, sl, fp}                      |         __asm ("stmdaeq r0, {r2, r4, r7, sl, fp}");
    0x080001fc stmdaeq r0, {r2, r4, r7, sl, fp}                      |         __asm ("stmdaeq r0, {r2, r4, r7, sl, fp}");
    0x08000200 stmdaeq r0, {r1, r2, r4, r5, r6, sb, sp}              |         __asm ("stmdaeq r0, {r1, r2, r4, r5, r6, sb, sp}");
    0x08000204 b 0x8000220                                           |         goto label_7;
                                                                     | label_15:
    0x08000208 adds r5, r5, r6                                       |         r5 += r6;
    0x0800020c bne 0x8000100                                         |         
                                                                     |     } while (r5 != r5);
                                                                     |     do {
                                                                     | label_0:
    0x08000210 stmdaeq r0, {r2, r6, r8, sb, fp}                      |         __asm ("stmdaeq r0, {r2, r6, r8, sb, fp}");
    0x08000214 stmdaeq r0, {r2, r6, r8, sb, fp}                      |         __asm ("stmdaeq r0, {r2, r6, r8, sb, fp}");
    0x08000218 mov r0, r8                                            |         r0 = r8;
    0x0800021c stmdaeq r0, {r1, r2, r4, r5, r6, sb, sp}              |         __asm ("stmdaeq r0, {r1, r2, r4, r5, r6, sb, sp}");
                                                                     | label_7:
    0x08000220 add sp, sp, 0x5c                                      |         
    0x08000224 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}              |         
                                                                     | label_17:
    0x08000228 ldr r3, [r4, 0x54]                                    |         r3 = *((r4 + 0x54));
    0x0800022c ldr r2, [r4, 0x58]                                    |         r2 = *((r4 + 0x58));
    0x08000230 ldr r7, [r4, 0xa8]                                    |         r7 = *((r4 + 0xa8));
    0x08000234 sub r3, r3, r2                                        |         r3 -= r2;
    0x08000238 sub r3, r3, r6                                        |         r3 -= r6;
    0x0800023c cmp r3, 1                                             |         
                                                                     |         if (r3 > 1) {
    0x08000240 bgt 0x80004a4                                         |             goto label_22;
                                                                     |         }
    0x08000244 cmp r4, 0                                             |         
    0x08000248 beq 0x8000210                                         |         
                                                                     |     } while (r4 == 0);
    0x0800024c mov r1, r6                                            |     r1 = r6;
    0x08000250 add r2, sp, 0x22                                      |     r2 += var_22h;
    0x08000254 mov r0, r4                                            |     r0 = r4;
    0x08000258 mov r3, 2                                             |     r3 = 2;
    0x0800025c stmdaeq r0, {r1, r4, r5, r6, sb, sp}                  |     __asm ("stmdaeq r0, {r1, r4, r5, r6, sb, sp}");
    0x08000260 cmp r0, 0                                             |     
                                                                     |     if (r0 < 0) {
    0x08000264 blt 0x8000210                                         |         goto label_0;
                                                                     |     }
    0x08000268 ldr r3, [sp, 0xc]                                     |     r3 = var_ch;
    0x0800026c add r7, sp, 0x22                                      |     r7 += var_22h;
    0x08000270 ands sl, r3, 4                                        |     sl = r3 & 4;
                                                                     |     if (sl != r3) {
    0x08000274 bne 0x80004b8                                         |         goto label_23;
                                                                     |     }
                                                                     | label_4:
    0x08000278 cmp r5, 0                                             |     
                                                                     |     if (r5 != 0) {
    0x0800027c beq 0x8000300                                         |         
    0x08000280 sub r3, r5, 0x2b                                      |         r3 = r5 - 0x2b;
    0x08000284 uxtb r2, r3                                           |         r2 = (int8_t) r3;
    0x08000288 cmp r2, 0x11                                          |         
                                                                     |         if (r2 <= 0x11) {
    0x0800028c bhi 0x80002e4                                         |             
    0x08000290 cmp r3, 0x11                                          |             
                                                                     |             if (r3 > 0x11) {
                                                                     |                 /* switch table (18 cases) at 0x800029c */
    0x08000294 ldrls pc, [pc, r3, lsl 2]                             |                 offset_0 = r3 << 2;
                                                                     |                 pc = *((pc + offset_0));
                                                                     |             }
    0x08000298 b 0x80002e4                                           |             
                                                                     |         }
                                                                     | label_6:
    0x080002e4 mov r2, r5                                            |         r2 = r5;
    0x080002e8 mov r0, r8                                            |         r0 = r8;
    0x080002ec stmdaeq r0, {r2, sl, fp}                              |         __asm ("stmdaeq r0, {r2, sl, fp}");
    0x080002f0 stmdaeq r0, {r2, sl, fp}                              |         __asm ("stmdaeq r0, {r2, sl, fp}");
    0x080002f4 stmdaeq r0, {r1, r2, r4, r5, r6, sb, sp}              |         __asm ("stmdaeq r0, {r1, r2, r4, r5, r6, sb, sp}");
    0x080002f8 add sp, sp, 0x5c                                      |         
    0x080002fc pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}              |         
                                                                     |     }
                                                                     | label_5:
    0x08000300 ldr r3, [sp, 0x10]                                    |     r3 = var_10h;
    0x08000304 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x08000308 bne 0x8000738                                         |         goto label_24;
                                                                     |     }
    0x0800030c ldrb r5, [r7, 1]                                      |     r5 = *((r7 + 1));
    0x08000310 add r5, r5, 1                                         |     r5++;
    0x08000314 lsl r5, r5, 3                                         |     r5 <<= 3;
    0x08000318 cmp sl, 0                                             |     
                                                                     |     if (sl != 0) {
    0x0800031c bne 0x800040c                                         |         goto label_25;
                                                                     |     }
                                                                     | label_3:
    0x08000320 add r6, r6, r5                                        |     r6 += r5;
    0x08000324 ldrb r5, [r7]                                         |     r5 = *(r7);
    0x08000328 cmp r5, 0x3b                                          |     
                                                                     |     if (r5 != 0x3b) {
    0x0800032c bne 0x8000188                                         |         goto label_1;
                                                                     |     }
                                                                     | label_16:
    0x08000330 mov r2, 0x3b                                          |     r2 = 0x3b;
                                                                     | label_14:
    0x08000334 mov r0, r8                                            |     r0 = r8;
    0x08000338 stmdaeq r0, {r3, r7, sl, fp}                          |     __asm ("stmdaeq r0, {r3, r7, sl, fp}");
    0x0800033c stmdaeq r0, {r3, r7, sl, fp}                          |     __asm ("stmdaeq r0, {r3, r7, sl, fp}");
    0x08000340 stmdaeq r0, {r1, r2, r4, r5, r6, sb, sp}              |     __asm ("stmdaeq r0, {r1, r2, r4, r5, r6, sb, sp}");
    0x08000344 b 0x80001d0                                           |     goto label_2;
                                                                     | label_25:
    0x0800040c mov r0, r8                                            |     r0 = r8;
    0x08000410 stmdaeq r0, {r3, r4, sl, fp}                          |     __asm ("stmdaeq r0, {r3, r4, sl, fp}");
    0x08000414 stmdaeq r0, {r3, r4, sl, fp}                          |     __asm ("stmdaeq r0, {r3, r4, sl, fp}");
    0x08000418 stmdaeq r0, {r1, r2, r4, r5, r6, sb, sp}              |     __asm ("stmdaeq r0, {r1, r2, r4, r5, r6, sb, sp}");
    0x0800041c b 0x8000320                                           |     goto label_3;
                                                                     | label_22:
    0x080004a4 adds r7, r7, r6                                       |     r7 += r6;
                                                                     |     if (r7 == r7) {
    0x080004a8 beq 0x8000210                                         |         goto label_0;
                                                                     |     }
    0x080004ac ldr r3, [sp, 0xc]                                     |     r3 = var_ch;
    0x080004b0 ands sl, r3, 4                                        |     sl = r3 & 4;
                                                                     |     if (sl == r3) {
    0x080004b4 beq 0x8000278                                         |         goto label_4;
                                                                     |     }
                                                                     | label_23:
    0x080004b8 mov r0, r8                                            |     r0 = r8;
    0x080004bc stmdaeq r0, {r2, r3, r7, r8, sb, fp}                  |     __asm ("stmdaeq r0, {r2, r3, r7, r8, sb, fp}");
    0x080004c0 stmdaeq r0, {r2, r3, r7, r8, sb, fp}                  |     __asm ("stmdaeq r0, {r2, r3, r7, r8, sb, fp}");
    0x080004c4 stmdaeq r0, {r1, r2, r4, r5, r6, sb, sp}              |     __asm ("stmdaeq r0, {r1, r2, r4, r5, r6, sb, sp}");
    0x080004c8 cmp r5, 0                                             |     
                                                                     |     if (r5 == 0) {
    0x080004cc beq 0x8000300                                         |         goto label_5;
                                                                     |     }
    0x080004d0 sub r3, r5, 0x2b                                      |     r3 = r5 - 0x2b;
    0x080004d4 uxtb r2, r3                                           |     r2 = (int8_t) r3;
    0x080004d8 cmp r2, 0x11                                          |     
                                                                     |     if (r2 > 0x11) {
    0x080004dc bhi 0x80002e4                                         |         goto label_6;
                                                                     |     }
    0x080004e0 cmp r3, 0x11                                          |     
                                                                     |     if (r3 > 0x11) {
                                                                     |         /* switch table (18 cases) at 0x80004ec */
    0x080004e4 ldrls pc, [pc, r3, lsl 2]                             |         offset_1 = r3 << 2;
                                                                     |         pc = *((pc + offset_1));
                                                                     |     }
    0x080004e8 b 0x80002e4                                           |     goto label_6;
                                                                     | label_19:
    0x080005b4 cmp r5, 0x88                                          |     
                                                                     |     if (r5 != 0x88) {
    0x080005b8 bne 0x8000824                                         |         goto label_26;
                                                                     |     }
                                                                     | label_8:
    0x080005bc ldr r3, [sp, 0x10]                                    |     r3 = var_10h;
    0x080005c0 mov r2, r5                                            |     r2 = r5;
    0x080005c4 mov r1, r4                                            |     r1 = r4;
    0x080005c8 mov r0, r8                                            |     r0 = r8;
    0x080005cc str r6, [sp]                                          |     *(sp) = r6;
    0x080005d0 stmdaeq r0, {r1, r3, r4, r5, r6, sb, sp}              |     __asm ("stmdaeq r0, {r1, r3, r4, r5, r6, sb, sp}");
    0x080005d4 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x080005d8 beq 0x80001d0                                         |         goto label_2;
                                                                     |     }
    0x080005dc b 0x8000220                                           |     goto label_7;
                                                                     | label_18:
    0x080005fc cmp r5, 0x11                                          |     
                                                                     |     if (r5 == 0x11) {
    0x08000600 beq 0x80005bc                                         |         goto label_8;
                                                                     |     }
                                                                     |     if (r5 > 0x11) {
    0x08000604 bhi 0x80001ac                                         |         goto label_9;
                                                                     |     }
    0x08000608 cmp r5, 6                                             |     
                                                                     |     if (r5 != 6) {
    0x0800060c bne 0x8000824                                         |         goto label_26;
                                                                     |     }
    0x08000610 ldr r1, [sp, 0xc]                                     |     r1 = var_ch;
    0x08000614 mov r2, r5                                            |     r2 = r5;
    0x08000618 str r1, [sp, 4]                                       |     var_4h = r1;
    0x0800061c mov r0, r8                                            |     r0 = r8;
    0x08000620 ldr r3, [sp, 0x10]                                    |     r3 = var_10h;
    0x08000624 mov r1, r4                                            |     r1 = r4;
    0x08000628 str r6, [sp]                                          |     *(sp) = r6;
    0x0800062c stmdaeq r0, {r1, r2, r3, r4, r5, r6, sb, sp}          |     __asm ("stmdaeq r0, {r1, r2, r3, r4, r5, r6, sb, sp}");
    0x08000630 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x08000634 beq 0x80001d0                                         |         goto label_2;
                                                                     |     }
    0x08000638 b 0x8000220                                           |     goto label_7;
                                                                     | label_21:
    0x08000650 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x08000654 beq 0x8000220                                         |         goto label_7;
                                                                     |     }
    0x08000658 ldr r2, [r4, 0xc]                                     |     r2 = *((r4 + 0xc));
    0x0800065c mov r1, r8                                            |     r1 = r8;
    0x08000660 ldr r0, [sp, 0x18]                                    |     r0 = var_18h;
    0x08000664 stmdaeq r0, {r1, r7, sb, sp}                          |     __asm ("stmdaeq r0, {r1, r7, sb, sp}");
    0x08000668 b 0x80001e8                                           |     goto label_10;
                                                                     | label_20:
    0x0800068c ldrd r2, r3, [r4, 0x54]                               |     __asm ("ldrd r2, r3, [r4, 0x54]");
    0x08000690 ldr r5, [r4, 0xa8]                                    |     r5 = *((r4 + 0xa8));
    0x08000694 sub r3, r2, r3                                        |     r3 = r2 - r3;
    0x08000698 sub r3, r3, r6                                        |     r3 -= r6;
    0x0800069c cmp r3, 7                                             |     
                                                                     |     if (r3 > 7) {
    0x080006a0 bgt 0x80007a0                                         |         goto label_27;
                                                                     |     }
    0x080006a4 cmp r4, 0                                             |     
                                                                     |     if (r4 == 0) {
    0x080006a8 beq 0x80007a8                                         |         goto label_28;
                                                                     |     }
    0x080006ac add r2, sp, 0x24                                      |     r2 += var_24h;
    0x080006b0 mov r1, r6                                            |     r1 = r6;
    0x080006b4 mov r0, r4                                            |     r0 = r4;
    0x080006b8 mov r3, 8                                             |     r3 = 8;
    0x080006bc stmdaeq r0, {r1, r4, r5, r6, sb, sp}                  |     __asm ("stmdaeq r0, {r1, r4, r5, r6, sb, sp}");
    0x080006c0 cmp r0, 0                                             |     
                                                                     |     if (r0 >= 0) {
    0x080006c4 ldrlt r2, [r4, 0x54]                                  |         r2 = *((r4 + 0x54));
                                                                     |     }
                                                                     |     if (r0 < 0) {
    0x080006c8 blt 0x80007a8                                         |         goto label_28;
                                                                     |     }
    0x080006cc add r5, sp, 0x24                                      |     r5 += var_24h;
                                                                     | label_11:
    0x080006d0 ldrb r3, [r5, 1]                                      |     r3 = *((r5 + 1));
    0x080006d4 mov r0, r8                                            |     r0 = r8;
    0x080006d8 ldrb r2, [r5]                                         |     r2 = *(r5);
    0x080006dc stmdaeq r0, {r2, r6, sl, fp}                          |     __asm ("stmdaeq r0, {r2, r6, sl, fp}");
    0x080006e0 stmdaeq r0, {r2, r6, sl, fp}                          |     __asm ("stmdaeq r0, {r2, r6, sl, fp}");
    0x080006e4 stmdaeq r0, {r1, r2, r4, r5, r6, sb, sp}              |     __asm ("stmdaeq r0, {r1, r2, r4, r5, r6, sb, sp}");
    0x080006e8 ldrb r3, [r5]                                         |     r3 = *(r5);
    0x080006ec cmp r3, 4                                             |     
                                                                     |     if (r3 == 4) {
    0x080006f0 beq 0x80007c0                                         |         goto label_29;
                                                                     |     }
                                                                     |     if (r3 > 4) {
    0x080006f4 bhi 0x8000768                                         |         goto label_30;
                                                                     |     }
    0x080006f8 sub r3, r3, 1                                         |     r3--;
    0x080006fc cmp r3, 2                                             |     
                                                                     |     if (r3 > 2) {
    0x08000700 bhi 0x80001d0                                         |         goto label_2;
                                                                     |     }
                                                                     | label_12:
    0x08000704 ldr r3, [sp, 0x84]                                    |     r3 = *(arg_84h);
    0x08000708 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0800070c bne 0x80007dc                                         |         goto label_31;
                                                                     |     }
                                                                     | label_13:
    0x08000710 ldrb r3, [r5]                                         |     r3 = *(r5);
    0x08000714 cmp r3, 2                                             |     
                                                                     |     if (r3 != 2) {
    0x08000718 bne 0x80001d0                                         |         goto label_2;
                                                                     |     }
    0x0800071c ldr r2, [r5, 4]                                       |     r2 = *((r5 + 4));
    0x08000720 mov r0, r8                                            |     r0 = r8;
    0x08000724 stmdaeq r0, {r7, sl, fp}                              |     __asm ("stmdaeq r0, {r7, sl, fp}");
    0x08000728 stmdaeq r0, {r7, sl, fp}                              |     __asm ("stmdaeq r0, {r7, sl, fp}");
    0x0800072c rev r2, r2                                            |     r2 = SWAP32 (r2);
    0x08000730 stmdaeq r0, {r1, r2, r4, r5, r6, sb, sp}              |     __asm ("stmdaeq r0, {r1, r2, r4, r5, r6, sb, sp}");
    0x08000734 b 0x80001d0                                           |     goto label_2;
                                                                     | label_24:
    0x08000738 cmp sl, 0                                             |     
                                                                     |     if (sl == 0) {
    0x0800073c beq 0x8000220                                         |         goto label_7;
                                                                     |     }
    0x08000740 mov r0, r8                                            |     r0 = r8;
    0x08000744 stmdaeq r0, {r2, r6, r7, r8, sb, fp}                  |     __asm ("stmdaeq r0, {r2, r6, r7, r8, sb, fp}");
    0x08000748 stmdaeq r0, {r2, r6, r7, r8, sb, fp}                  |     __asm ("stmdaeq r0, {r2, r6, r7, r8, sb, fp}");
    0x0800074c stmdaeq r0, {r1, r2, r4, r5, r6, sb, sp}              |     __asm ("stmdaeq r0, {r1, r2, r4, r5, r6, sb, sp}");
    0x08000750 b 0x8000220                                           |     goto label_7;
                                                                     | label_30:
    0x08000768 eor r3, r3, 0x80                                      |     r3 ^= 0x80;
    0x0800076c cmp r3, 1                                             |     
                                                                     |     if (r3 > 1) {
    0x08000770 bhi 0x80001d0                                         |         goto label_2;
                                                                     |     }
    0x08000774 ldrh r2, [r5, 4]                                      |     r2 = *((r5 + 4));
    0x08000778 mov r0, r8                                            |     r0 = r8;
    0x0800077c ldrh r3, [r5, 6]                                      |     r3 = *((r5 + 6));
    0x08000780 stmdaeq r0, {r3, r4, r6, sl, fp}                      |     __asm ("stmdaeq r0, {r3, r4, r6, sl, fp}");
    0x08000784 stmdaeq r0, {r3, r4, r6, sl, fp}                      |     __asm ("stmdaeq r0, {r3, r4, r6, sl, fp}");
    0x08000788 rev16 r2, r2                                          |     __asm ("rev16 r2, r2");
    0x0800078c rev16 r3, r3                                          |     __asm ("rev16 r3, r3");
    0x08000790 uxth r2, r2                                           |     r2 = (int16_t) r2;
    0x08000794 uxth r3, r3                                           |     r3 = (int16_t) r3;
    0x08000798 stmdaeq r0, {r1, r2, r4, r5, r6, sb, sp}              |     __asm ("stmdaeq r0, {r1, r2, r4, r5, r6, sb, sp}");
    0x0800079c b 0x80001d0                                           |     goto label_2;
                                                                     | label_27:
    0x080007a0 adds r5, r5, r6                                       |     r5 += r6;
                                                                     |     if (r5 != r5) {
    0x080007a4 bne 0x80006d0                                         |         goto label_11;
                                                                     |     }
                                                                     | label_28:
    0x080007a8 sub r2, r2, r6                                        |     r2 -= r6;
    0x080007ac mov r0, r8                                            |     r0 = r8;
    0x080007b0 stmdaeq r0, {r2, r3, r5, sl, fp}                      |     __asm ("stmdaeq r0, {r2, r3, r5, sl, fp}");
    0x080007b4 stmdaeq r0, {r2, r3, r5, sl, fp}                      |     __asm ("stmdaeq r0, {r2, r3, r5, sl, fp}");
    0x080007b8 stmdaeq r0, {r1, r2, r4, r5, r6, sb, sp}              |     __asm ("stmdaeq r0, {r1, r2, r4, r5, r6, sb, sp}");
    0x080007bc b 0x8000220                                           |     goto label_7;
                                                                     | label_29:
    0x080007c0 ldr r2, [r5, 4]                                       |     r2 = *((r5 + 4));
    0x080007c4 mov r0, r8                                            |     r0 = r8;
    0x080007c8 stmdaeq r0, {r3, r5, r6, sl, fp}                      |     __asm ("stmdaeq r0, {r3, r5, r6, sl, fp}");
    0x080007cc stmdaeq r0, {r3, r5, r6, sl, fp}                      |     __asm ("stmdaeq r0, {r3, r5, r6, sl, fp}");
    0x080007d0 rev r2, r2                                            |     r2 = SWAP32 (r2);
    0x080007d4 stmdaeq r0, {r1, r2, r4, r5, r6, sb, sp}              |     __asm ("stmdaeq r0, {r1, r2, r4, r5, r6, sb, sp}");
    0x080007d8 b 0x8000704                                           |     goto label_12;
                                                                     | label_31:
    0x080007dc mov r0, r8                                            |     r0 = r8;
    0x080007e0 stmdaeq r0, {r3, r4, r5, r6, sl, fp}                  |     __asm ("stmdaeq r0, {r3, r4, r5, r6, sl, fp}");
    0x080007e4 stmdaeq r0, {r3, r4, r5, r6, sl, fp}                  |     __asm ("stmdaeq r0, {r3, r4, r5, r6, sl, fp}");
    0x080007e8 add r6, r6, 8                                         |     r6 += 8;
    0x080007ec stmdaeq r0, {r1, r2, r4, r5, r6, sb, sp}              |     __asm ("stmdaeq r0, {r1, r2, r4, r5, r6, sb, sp}");
    0x080007f0 mov r1, r8                                            |     r1 = r8;
    0x080007f4 mov ip, 0                                             |     
    0x080007f8 ldr r2, [sp, 0x1c]                                    |     r2 = var_1ch;
    0x080007fc ldr r0, [sp, 0x18]                                    |     r0 = var_18h;
    0x08000800 mov r3, r4                                            |     r3 = r4;
    0x08000804 str r6, [sp]                                          |     *(sp) = r6;
    0x08000808 str ip, [sp, 4]                                       |     var_4h = ip;
    0x0800080c bl 0x800008c                                          |     dump_ipv6_packet ();
    0x08000810 mov r0, r8                                            |     r0 = r8;
    0x08000814 stmdaeq r0, {r2, r3, r4, r5, r6, sl, fp}              |     __asm ("stmdaeq r0, {r2, r3, r4, r5, r6, sl, fp}");
    0x08000818 stmdaeq r0, {r2, r3, r4, r5, r6, sl, fp}              |     __asm ("stmdaeq r0, {r2, r3, r4, r5, r6, sl, fp}");
    0x0800081c stmdaeq r0, {r1, r2, r4, r5, r6, sb, sp}              |     __asm ("stmdaeq r0, {r1, r2, r4, r5, r6, sb, sp}");
    0x08000820 b 0x8000710                                           |     goto label_13;
                                                                     | label_26:
    0x08000824 mov r2, r5                                            |     r2 = r5;
    0x08000828 b 0x8000334                                           |     goto label_14;
                                                                     | }

[*] Function strcpy used 1 times nf_log_ipv6.ko