[*] Binary protection state of nf_log_ipv6.ko

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


[*] Function fprintf tear down of nf_log_ipv6.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/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_78h, int32_t arg_7ch, 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_1ah;
                                                                     |     int32_t var_1ch;
                                                                     |     int32_t var_28h;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
    0x0800008c push {r4, r5, r6, r7, r8, sb, sl, fp, lr}             |     
    0x08000090 mov r4, r3                                            |     r4 = r3;
    0x08000094 mov r8, r2                                            |     r8 = r2;
    0x08000098 ldrb r3, [r2]                                         |     r3 = *(r2);
    0x0800009c sub sp, sp, 0x54                                      |     
    0x080000a0 ldr r5, [r4, 0xa8]                                    |     r5 = *((r4 + 0xa8));
    0x080000a4 mov fp, r0                                            |     
    0x080000a8 cmp r3, 0                                             |     
    0x080000ac ldr r3, [r4, 0x54]                                    |     r3 = *((r4 + 0x54));
    0x080000b0 ldr r6, [sp, 0x78]                                    |     r6 = *(arg_78h);
    0x080000b4 mov r7, r1                                            |     r7 = r1;
                                                                     |     if (r3 == 0) {
    0x080000b8 movne sb, 0xf                                         |         sb = 0xf;
                                                                     |     }
                                                                     |     if (r3 != 0) {
    0x080000bc ldrbeq sb, [r2, 5]                                    |         sb = *((r2 + 5));
                                                                     |     }
    0x080000c0 ldr r2, [r4, 0x58]                                    |     r2 = *((r4 + 0x58));
    0x080000c4 sub r3, r3, r2                                        |     r3 -= r2;
    0x080000c8 sub r3, r3, r6                                        |     r3 -= r6;
    0x080000cc cmp r3, 0x27                                          |     
                                                                     |     if (r3 > 0x27) {
    0x080000d0 bgt 0x8000204                                         |         goto label_16;
                                                                     |     }
    0x080000d4 cmp r4, 0                                             |     
                                                                     |     if (r4 == 0) {
    0x080000d8 beq 0x800020c                                         |         goto label_0;
                                                                     |     }
    0x080000dc mov r1, r6                                            |     r1 = r6;
    0x080000e0 add r2, sp, 0x28                                      |     r2 += var_28h;
    0x080000e4 mov r0, r4                                            |     r0 = r4;
    0x080000e8 mov r3, 0x28                                          |     r3 = 0x28;
    0x080000ec stmdaeq r0, {r0, r4, r6, r7, sb, sp}                  |     __asm ("stmdaeq r0, {r0, r4, r6, r7, sb, sp}");
    0x080000f0 cmp r0, 0                                             |     
                                                                     |     if (r0 < 0) {
    0x080000f4 blt 0x800020c                                         |         goto label_0;
                                                                     |     }
    0x080000f8 add r5, sp, 0x28                                      |     r5 += var_28h;
                                                                     |     do {
    0x080000fc add r3, r5, 0x18                                      |         r3 = r5 + 0x18;
    0x08000100 add r2, r5, 8                                         |         r2 = r5 + 8;
    0x08000104 mov r0, r7                                            |         r0 = r7;
    0x08000108 stmdaeq r0, {r7, r8, sb, fp}                          |         __asm ("stmdaeq r0, {r7, r8, sb, fp}");
    0x0800010c stmdaeq r0, {r7, r8, sb, fp}                          |         __asm ("stmdaeq r0, {r7, r8, sb, fp}");
    0x08000110 add r6, r6, 0x28                                      |         r6 += 0x28;
    0x08000114 stmdaeq r0, {r0, r2, r4, r6, r7, sb, sp}              |         __asm ("stmdaeq r0, {r0, r2, r4, r6, r7, sb, sp}");
    0x08000118 ldr r3, [r5]                                          |         r3 = *(r5);
    0x0800011c ldrh r2, [r5, 4]                                      |         r2 = *((r5 + 4));
    0x08000120 mov r0, r7                                            |         r0 = r7;
    0x08000124 rev r3, r3                                            |         r3 = SWAP32 (r3);
    0x08000128 rev16 r2, r2                                          |         __asm ("rev16 r2, r2");
    0x0800012c ubfx r1, r3, 0, 0x14                                  |         r1 = (r3 >> 0) & ((1 << 0x14) - 1);
    0x08000130 str r1, [sp, 4]                                       |         var_4h = r1;
    0x08000134 uxth r2, r2                                           |         r2 = (int16_t) r2;
    0x08000138 ubfx r3, r3, 0x14, 8                                  |         r3 = (r3 >> 0x14) & ((1 << 8) - 1);
    0x0800013c ldrb ip, [r5, 7]                                      |         ip = *((r5 + 7));
    0x08000140 add r2, r2, 0x28                                      |         r2 += 0x28;
    0x08000144 stmdaeq r0, {r2, r4, r7, r8, sb, fp}                  |         __asm ("stmdaeq r0, {r2, r4, r7, r8, sb, fp}");
    0x08000148 stmdaeq r0, {r2, r4, r7, r8, sb, fp}                  |         __asm ("stmdaeq r0, {r2, r4, r7, r8, sb, fp}");
    0x0800014c str ip, [sp]                                          |         *(sp) = ip;
    0x08000150 stmdaeq r0, {r0, r2, r4, r6, r7, sb, sp}              |         __asm ("stmdaeq r0, {r0, r2, r4, r6, r7, sb, sp}");
    0x08000154 ldrb r5, [r5, 6]                                      |         r5 = *((r5 + 6));
    0x08000158 cmp r5, 0x3b                                          |         
                                                                     |         if (r5 == 0x3b) {
    0x0800015c beq 0x8000324                                         |             goto label_17;
                                                                     |         }
    0x08000160 movw sl, 0x183                                        |         
    0x08000164 movt sl, 2                                            |         sl = 0x20183;
    0x08000168 str r8, [sp, 0x14]                                    |         var_14h = r8;
    0x0800016c mov r8, sl                                            |         r8 = sl;
    0x08000170 mov r3, 0                                             |         r3 = 0;
    0x08000174 str r3, [sp, 0x10]                                    |         var_10h = r3;
                                                                     | label_2:
    0x08000178 cmp r5, 0                                             |         
                                                                     |         if (r5 == 0) {
    0x0800017c beq 0x8000224                                         |             goto label_18;
                                                                     |         }
    0x08000180 sub r3, r5, 0x2b                                      |         r3 = r5 - 0x2b;
    0x08000184 uxtb r3, r3                                           |         r3 = (int8_t) r3;
    0x08000188 cmp r3, 0x11                                          |         
                                                                     |         if (r3 > 0x11) {
    0x0800018c bhi 0x80004a8                                         |             goto label_19;
                                                                     |         }
    0x08000190 lsr r3, r8, r3                                        |         r3 = r8 >> r3;
    0x08000194 tst r3, 1                                             |         
                                                                     |         if ((r3 & 1) != 0) {
    0x08000198 bne 0x8000224                                         |             goto label_18;
                                                                     |         }
    0x0800019c cmp r5, 0x3a                                          |         
    0x080001a0 ldr r8, [sp, 0x14]                                    |         r8 = var_14h;
                                                                     |         if (r5 == 0x3a) {
    0x080001a4 movne r2, r5                                          |             r2 = r5;
                                                                     |         }
                                                                     |         if (r5 == 0x3a) {
    0x080001a8 beq 0x80006b0                                         |             goto label_20;
                                                                     |         }
                                                                     | label_3:
    0x080001ac stmdaeq r0, {r3, r4, r5, r7, sl, fp}                  |         __asm ("stmdaeq r0, {r3, r4, r5, r7, sl, fp}");
    0x080001b0 stmdaeq r0, {r3, r4, r5, r7, sl, fp}                  |         __asm ("stmdaeq r0, {r3, r4, r5, r7, sl, fp}");
    0x080001b4 mov r0, r7                                            |         r0 = r7;
    0x080001b8 and sb, sb, 8                                         |         sb &= 8;
    0x080001bc stmdaeq r0, {r0, r2, r4, r6, r7, sb, sp}              |         __asm ("stmdaeq r0, {r0, r2, r4, r6, r7, sb, sp}");
                                                                     | label_7:
    0x080001c0 ldr r3, [sp, 0x7c]                                    |         r3 = *(arg_7ch);
    0x080001c4 cmp sb, 0                                             |         
                                                                     |         if (sb == 0) {
    0x080001c8 beq 0x800062c                                         |             goto label_21;
                                                                     |         }
    0x080001cc cmp r3, 0                                             |         
                                                                     |         if (r3 == 0) {
    0x080001d0 beq 0x800021c                                         |             goto label_1;
                                                                     |         }
                                                                     | label_15:
    0x080001d4 ldr r2, [r4, 0xc]                                     |         r2 = *((r4 + 0xc));
    0x080001d8 mov r1, r7                                            |         r1 = r7;
    0x080001dc mov r0, fp                                            |         r0 = fp;
    0x080001e0 stmdaeq r0, {r0, r3, r4, r6, r7, sb, sp}              |         __asm ("stmdaeq r0, {r0, r3, r4, r6, r7, sb, sp}");
                                                                     | label_9:
    0x080001e4 ldr r2, [r4, 0x88]                                    |         r2 = *((r4 + 0x88));
    0x080001e8 cmp r2, 0                                             |         
                                                                     |         if (r2 == 0) {
    0x080001ec beq 0x800021c                                         |             goto label_1;
                                                                     |         }
    0x080001f0 mov r0, r7                                            |         r0 = r7;
    0x080001f4 stmdaeq r0, {r2, r6, r7, sl, fp}                      |         __asm ("stmdaeq r0, {r2, r6, r7, sl, fp}");
    0x080001f8 stmdaeq r0, {r2, r6, r7, sl, fp}                      |         __asm ("stmdaeq r0, {r2, r6, r7, sl, fp}");
    0x080001fc stmdaeq r0, {r0, r2, r4, r6, r7, sb, sp}              |         __asm ("stmdaeq r0, {r0, r2, r4, r6, r7, sb, sp}");
    0x08000200 b 0x800021c                                           |         goto label_1;
                                                                     | label_16:
    0x08000204 adds r5, r5, r6                                       |         r5 += r6;
    0x08000208 bne 0x80000fc                                         |         
                                                                     |     } while (r5 != r5);
                                                                     |     do {
                                                                     | label_0:
    0x0800020c stmdaeq r0, {r2, r4, r5, r6, r8, sb, fp}              |         __asm ("stmdaeq r0, {r2, r4, r5, r6, r8, sb, fp}");
    0x08000210 stmdaeq r0, {r2, r4, r5, r6, r8, sb, fp}              |         __asm ("stmdaeq r0, {r2, r4, r5, r6, r8, sb, fp}");
    0x08000214 mov r0, r7                                            |         r0 = r7;
    0x08000218 stmdaeq r0, {r0, r2, r4, r6, r7, sb, sp}              |         __asm ("stmdaeq r0, {r0, r2, r4, r6, r7, sb, sp}");
                                                                     | label_1:
    0x0800021c add sp, sp, 0x54                                      |         
    0x08000220 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}              |         
                                                                     | label_18:
    0x08000224 ldr r3, [r4, 0x54]                                    |         r3 = *((r4 + 0x54));
    0x08000228 ldr r2, [r4, 0x58]                                    |         r2 = *((r4 + 0x58));
    0x0800022c ldr sl, [r4, 0xa8]                                    |         sl = *((r4 + 0xa8));
    0x08000230 sub r3, r3, r2                                        |         r3 -= r2;
    0x08000234 sub r3, r3, r6                                        |         r3 -= r6;
    0x08000238 cmp r3, 1                                             |         
                                                                     |         if (r3 > 1) {
    0x0800023c bgt 0x8000418                                         |             goto label_22;
                                                                     |         }
    0x08000240 cmp r4, 0                                             |         
    0x08000244 beq 0x800020c                                         |         
                                                                     |     } while (r4 == 0);
    0x08000248 add r2, sp, 0x1a                                      |     r2 += var_1ah;
    0x0800024c mov r1, r6                                            |     r1 = r6;
    0x08000250 mov r0, r4                                            |     r0 = r4;
    0x08000254 mov r3, 2                                             |     r3 = 2;
    0x08000258 stmdaeq r0, {r0, r4, r6, r7, sb, sp}                  |     __asm ("stmdaeq r0, {r0, r4, r6, r7, sb, sp}");
    0x0800025c cmp r0, 0                                             |     
                                                                     |     if (r0 < 0) {
    0x08000260 blt 0x800020c                                         |         goto label_0;
                                                                     |     }
    0x08000264 ands r3, sb, 4                                        |     r3 = sb & 4;
    0x08000268 add sl, sp, 0x1a                                      |     sl += var_1ah;
    0x0800026c str r3, [sp, 0xc]                                     |     var_ch = r3;
                                                                     |     if (r3 != sb) {
    0x08000270 bne 0x800042c                                         |         goto label_23;
                                                                     |     }
                                                                     | label_5:
    0x08000274 cmp r5, 0                                             |     
                                                                     |     if (r5 != 0) {
    0x08000278 beq 0x80002fc                                         |         
    0x0800027c sub r3, r5, 0x2b                                      |         r3 = r5 - 0x2b;
    0x08000280 uxtb r2, r3                                           |         r2 = (int8_t) r3;
    0x08000284 cmp r2, 0x11                                          |         
                                                                     |         if (r2 <= 0x11) {
    0x08000288 bhi 0x80002e0                                         |             
    0x0800028c cmp r3, 0x11                                          |             
                                                                     |             if (r3 > 0x11) {
                                                                     |                 /* switch table (18 cases) at 0x8000298 */
    0x08000290 ldrls pc, [pc, r3, lsl 2]                             |                 offset_0 = r3 << 2;
                                                                     |                 pc = *((pc + offset_0));
                                                                     |             }
    0x08000294 b 0x80002e0                                           |             
                                                                     |         }
                                                                     | label_6:
    0x080002e0 mov r2, r5                                            |         r2 = r5;
    0x080002e4 mov r0, r7                                            |         r0 = r7;
    0x080002e8 stmdaeq r0, {r2, r4, r5, sl, fp}                      |         __asm ("stmdaeq r0, {r2, r4, r5, sl, fp}");
    0x080002ec stmdaeq r0, {r2, r4, r5, sl, fp}                      |         __asm ("stmdaeq r0, {r2, r4, r5, sl, fp}");
    0x080002f0 stmdaeq r0, {r0, r2, r4, r6, r7, sb, sp}              |         __asm ("stmdaeq r0, {r0, r2, r4, r6, r7, sb, sp}");
    0x080002f4 add sp, sp, 0x54                                      |         
    0x080002f8 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}              |         
                                                                     |     }
    0x080002fc ldr r3, [sp, 0x10]                                    |     r3 = var_10h;
    0x08000300 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x08000304 bne 0x800021c                                         |         goto label_1;
                                                                     |     }
    0x08000308 ldrb r5, [sl, 1]                                      |     r5 = *((sl + 1));
    0x0800030c add r5, r5, 1                                         |     r5++;
    0x08000310 lsl r5, r5, 3                                         |     r5 <<= 3;
                                                                     | label_4:
    0x08000314 add r6, r6, r5                                        |     r6 += r5;
    0x08000318 ldrb r5, [sl]                                         |     r5 = *(sl);
    0x0800031c cmp r5, 0x3b                                          |     
                                                                     |     if (r5 != 0x3b) {
    0x08000320 bne 0x8000178                                         |         goto label_2;
                                                                     |     }
                                                                     | label_17:
    0x08000324 mov r2, 0x3b                                          |     r2 = 0x3b;
    0x08000328 b 0x80001ac                                           |     goto label_3;
                                                                     | label_8:
    0x080003f4 mov r0, r7                                            |     r0 = r7;
    0x080003f8 stmdaeq r0, {r3, r6, sl, fp}                          |     __asm ("stmdaeq r0, {r3, r6, sl, fp}");
    0x080003fc stmdaeq r0, {r3, r6, sl, fp}                          |     __asm ("stmdaeq r0, {r3, r6, sl, fp}");
    0x08000400 stmdaeq r0, {r0, r2, r4, r6, r7, sb, sp}              |     __asm ("stmdaeq r0, {r0, r2, r4, r6, r7, sb, sp}");
    0x08000404 b 0x8000314                                           |     goto label_4;
                                                                     | label_22:
    0x08000418 adds sl, sl, r6                                       |     sl += r6;
                                                                     |     if (sl == sl) {
    0x0800041c beq 0x800020c                                         |         goto label_0;
                                                                     |     }
    0x08000420 ands r3, sb, 4                                        |     r3 = sb & 4;
    0x08000424 str r3, [sp, 0xc]                                     |     var_ch = r3;
                                                                     |     if (r3 == sb) {
    0x08000428 beq 0x8000274                                         |         goto label_5;
                                                                     |     }
                                                                     | label_23:
    0x0800042c mov r0, r7                                            |     r0 = r7;
    0x08000430 stmdaeq r0, {r2, r3, r4, r5, r7, r8, sb, fp}          |     __asm ("stmdaeq r0, {r2, r3, r4, r5, r7, r8, sb, fp}");
    0x08000434 stmdaeq r0, {r2, r3, r4, r5, r7, r8, sb, fp}          |     __asm ("stmdaeq r0, {r2, r3, r4, r5, r7, r8, sb, fp}");
    0x08000438 stmdaeq r0, {r0, r2, r4, r6, r7, sb, sp}              |     __asm ("stmdaeq r0, {r0, r2, r4, r6, r7, sb, sp}");
    0x0800043c cmp r5, 0                                             |     
                                                                     |     if (r5 == 0) {
    0x08000440 beq 0x80004e4                                         |         goto label_24;
                                                                     |     }
    0x08000444 sub r3, r5, 0x2b                                      |     r3 = r5 - 0x2b;
    0x08000448 uxtb r2, r3                                           |     r2 = (int8_t) r3;
    0x0800044c cmp r2, 0x11                                          |     
                                                                     |     if (r2 > 0x11) {
    0x08000450 bhi 0x80002e0                                         |         goto label_6;
                                                                     |     }
    0x08000454 cmp r3, 0x11                                          |     
                                                                     |     if (r3 > 0x11) {
                                                                     |         /* switch table (18 cases) at 0x8000460 */
    0x08000458 ldrls pc, [pc, r3, lsl 2]                             |         offset_1 = r3 << 2;
                                                                     |         pc = *((pc + offset_1));
                                                                     |     }
    0x0800045c b 0x80002e0                                           |     goto label_6;
                                                                     | label_19:
    0x080004a8 cmp r5, 0x3a                                          |     
    0x080004ac mov r2, r5                                            |     r2 = r5;
                                                                     |     if (r5 > 0x3a) {
    0x080004b0 bhi 0x8000698                                         |         goto label_25;
                                                                     |     }
    0x080004b4 cmp r5, 6                                             |     
                                                                     |     if (r5 != 6) {
    0x080004b8 bne 0x8000658                                         |         goto label_26;
                                                                     |     }
    0x080004bc ldr r3, [sp, 0x10]                                    |     r3 = var_10h;
    0x080004c0 mov r1, r4                                            |     r1 = r4;
    0x080004c4 mov r0, r7                                            |     r0 = r7;
    0x080004c8 str r6, [sp]                                          |     *(sp) = r6;
    0x080004cc str sb, [sp, 4]                                       |     var_4h = sb;
    0x080004d0 stmdaeq r0, {r0, r2, r3, r4, r6, r7, sb, sp}          |     __asm ("stmdaeq r0, {r0, r2, r3, r4, r6, r7, sb, sp}");
    0x080004d4 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x080004d8 bne 0x800021c                                         |         goto label_1;
                                                                     |     }
                                                                     | label_10:
    0x080004dc and sb, sb, 8                                         |     sb &= 8;
    0x080004e0 b 0x80001c0                                           |     goto label_7;
                                                                     | label_24:
    0x080004e4 ldr r3, [sp, 0x10]                                    |     r3 = var_10h;
    0x080004e8 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x080004ec bne 0x8000684                                         |         goto label_27;
                                                                     |     }
    0x080004f0 ldrb r5, [sl, 1]                                      |     r5 = *((sl + 1));
    0x080004f4 add r5, r5, 1                                         |     r5++;
    0x080004f8 lsl r5, r5, 3                                         |     r5 <<= 3;
    0x080004fc b 0x80003f4                                           |     goto label_8;
                                                                     | label_21:
    0x0800062c cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x08000630 beq 0x800021c                                         |         goto label_1;
                                                                     |     }
    0x08000634 b 0x80001e4                                           |     goto label_9;
                                                                     | label_26:
    0x08000658 cmp r5, 0x11                                          |     
                                                                     |     if (r5 != 0x11) {
    0x0800065c bne 0x80001ac                                         |         goto label_3;
                                                                     |     }
                                                                     | label_11:
    0x08000660 ldr r3, [sp, 0x10]                                    |     r3 = var_10h;
    0x08000664 mov r2, r5                                            |     r2 = r5;
    0x08000668 mov r1, r4                                            |     r1 = r4;
    0x0800066c mov r0, r7                                            |     r0 = r7;
    0x08000670 str r6, [sp]                                          |     *(sp) = r6;
    0x08000674 stmdaeq r0, {r0, r5, r6, r7, sb, sp}                  |     __asm ("stmdaeq r0, {r0, r5, r6, r7, sb, sp}");
    0x08000678 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0800067c beq 0x80004dc                                         |         goto label_10;
                                                                     |     }
    0x08000680 b 0x800021c                                           |     goto label_1;
                                                                     | label_27:
    0x08000684 mov r0, r7                                            |     r0 = r7;
    0x08000688 stmdaeq r0, {r2, r4, r5, r6, r7, r8, sb, fp}          |     __asm ("stmdaeq r0, {r2, r4, r5, r6, r7, r8, sb, fp}");
    0x0800068c stmdaeq r0, {r2, r4, r5, r6, r7, r8, sb, fp}          |     __asm ("stmdaeq r0, {r2, r4, r5, r6, r7, r8, sb, fp}");
    0x08000690 stmdaeq r0, {r0, r2, r4, r6, r7, sb, sp}              |     __asm ("stmdaeq r0, {r0, r2, r4, r6, r7, sb, sp}");
    0x08000694 b 0x800021c                                           |     goto label_1;
                                                                     | label_25:
    0x08000698 cmp r5, 0x88                                          |     
                                                                     |     if (r5 == 0x88) {
    0x0800069c beq 0x8000660                                         |         goto label_11;
                                                                     |     }
    0x080006a0 b 0x80001ac                                           |     goto label_3;
                                                                     | label_20:
    0x080006b0 mov r0, r7                                            |     r0 = r7;
    0x080006b4 stmdaeq r0, {r2, r3, r6, sl, fp}                      |     __asm ("stmdaeq r0, {r2, r3, r6, sl, fp}");
    0x080006b8 stmdaeq r0, {r2, r3, r6, sl, fp}                      |     __asm ("stmdaeq r0, {r2, r3, r6, sl, fp}");
    0x080006bc stmdaeq r0, {r0, r2, r4, r6, r7, sb, sp}              |     __asm ("stmdaeq r0, {r0, r2, r4, r6, r7, sb, sp}");
    0x080006c0 ldr r3, [sp, 0x10]                                    |     r3 = var_10h;
    0x080006c4 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x080006c8 bne 0x80004dc                                         |         goto label_10;
                                                                     |     }
    0x080006cc ldrd r2, r3, [r4, 0x54]                               |     __asm ("ldrd r2, r3, [r4, 0x54]");
    0x080006d0 ldr r5, [r4, 0xa8]                                    |     r5 = *((r4 + 0xa8));
    0x080006d4 sub r3, r2, r3                                        |     r3 = r2 - r3;
    0x080006d8 sub r3, r3, r6                                        |     r3 -= r6;
    0x080006dc cmp r3, 7                                             |     
                                                                     |     if (r3 > 7) {
    0x080006e0 bgt 0x80007c0                                         |         goto label_28;
                                                                     |     }
    0x080006e4 cmp r4, 0                                             |     
                                                                     |     if (r4 == 0) {
    0x080006e8 beq 0x80007c8                                         |         goto label_29;
                                                                     |     }
    0x080006ec add r2, sp, 0x1c                                      |     r2 += var_1ch;
    0x080006f0 mov r1, r6                                            |     r1 = r6;
    0x080006f4 mov r0, r4                                            |     r0 = r4;
    0x080006f8 mov r3, 8                                             |     r3 = 8;
    0x080006fc stmdaeq r0, {r0, r4, r6, r7, sb, sp}                  |     __asm ("stmdaeq r0, {r0, r4, r6, r7, sb, sp}");
    0x08000700 cmp r0, 0                                             |     
                                                                     |     if (r0 >= 0) {
    0x08000704 ldrlt r2, [r4, 0x54]                                  |         r2 = *((r4 + 0x54));
                                                                     |     }
                                                                     |     if (r0 < 0) {
    0x08000708 blt 0x80007c8                                         |         goto label_29;
                                                                     |     }
    0x0800070c add r5, sp, 0x1c                                      |     r5 += var_1ch;
                                                                     | label_12:
    0x08000710 ldrb r3, [r5, 1]                                      |     r3 = *((r5 + 1));
    0x08000714 mov r0, r7                                            |     r0 = r7;
    0x08000718 ldrb r2, [r5]                                         |     r2 = *(r5);
    0x0800071c stmdaeq r0, {r2, r4, r5, r6, sl, fp}                  |     __asm ("stmdaeq r0, {r2, r4, r5, r6, sl, fp}");
    0x08000720 stmdaeq r0, {r2, r4, r5, r6, sl, fp}                  |     __asm ("stmdaeq r0, {r2, r4, r5, r6, sl, fp}");
    0x08000724 stmdaeq r0, {r0, r2, r4, r6, r7, sb, sp}              |     __asm ("stmdaeq r0, {r0, r2, r4, r6, r7, sb, sp}");
    0x08000728 ldrb r3, [r5]                                         |     r3 = *(r5);
    0x0800072c cmp r3, 4                                             |     
                                                                     |     if (r3 == 4) {
    0x08000730 beq 0x80007e0                                         |         goto label_30;
                                                                     |     }
                                                                     |     if (r3 > 4) {
    0x08000734 bhi 0x8000784                                         |         goto label_31;
                                                                     |     }
    0x08000738 sub r3, r3, 1                                         |     r3--;
    0x0800073c cmp r3, 2                                             |     
                                                                     |     if (r3 > 2) {
    0x08000740 bhi 0x80004dc                                         |         goto label_10;
                                                                     |     }
                                                                     | label_13:
    0x08000744 ldr r3, [sp, 0x7c]                                    |     r3 = *(arg_7ch);
    0x08000748 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0800074c bne 0x80007fc                                         |         goto label_32;
                                                                     |     }
    0x08000750 ldrb r3, [r5]                                         |     r3 = *(r5);
    0x08000754 cmp r3, 2                                             |     
                                                                     |     if (r3 != 2) {
    0x08000758 bne 0x800021c                                         |         goto label_1;
                                                                     |     }
    0x0800075c and sb, sb, 8                                         |     sb &= 8;
                                                                     | label_14:
    0x08000760 ldr r2, [r5, 4]                                       |     r2 = *((r5 + 4));
    0x08000764 mov r0, r7                                            |     r0 = r7;
    0x08000768 stmdaeq r0, {r4, r5, r7, sl, fp}                      |     __asm ("stmdaeq r0, {r4, r5, r7, sl, fp}");
    0x0800076c stmdaeq r0, {r4, r5, r7, sl, fp}                      |     __asm ("stmdaeq r0, {r4, r5, r7, sl, fp}");
    0x08000770 rev r2, r2                                            |     r2 = SWAP32 (r2);
    0x08000774 stmdaeq r0, {r0, r2, r4, r6, r7, sb, sp}              |     __asm ("stmdaeq r0, {r0, r2, r4, r6, r7, sb, sp}");
    0x08000778 b 0x80001c0                                           |     goto label_7;
                                                                     | label_31:
    0x08000784 eor r3, r3, 0x80                                      |     r3 ^= 0x80;
    0x08000788 and sb, sb, 8                                         |     sb &= 8;
    0x0800078c cmp r3, 1                                             |     
                                                                     |     if (r3 > 1) {
    0x08000790 bhi 0x80001c0                                         |         goto label_7;
                                                                     |     }
    0x08000794 ldrh r2, [r5, 4]                                      |     r2 = *((r5 + 4));
    0x08000798 mov r0, r7                                            |     r0 = r7;
    0x0800079c ldrh r3, [r5, 6]                                      |     r3 = *((r5 + 6));
    0x080007a0 stmdaeq r0, {r3, r7, sl, fp}                          |     __asm ("stmdaeq r0, {r3, r7, sl, fp}");
    0x080007a4 stmdaeq r0, {r3, r7, sl, fp}                          |     __asm ("stmdaeq r0, {r3, r7, sl, fp}");
    0x080007a8 rev16 r2, r2                                          |     __asm ("rev16 r2, r2");
    0x080007ac rev16 r3, r3                                          |     __asm ("rev16 r3, r3");
    0x080007b0 uxth r2, r2                                           |     r2 = (int16_t) r2;
    0x080007b4 uxth r3, r3                                           |     r3 = (int16_t) r3;
    0x080007b8 stmdaeq r0, {r0, r2, r4, r6, r7, sb, sp}              |     __asm ("stmdaeq r0, {r0, r2, r4, r6, r7, sb, sp}");
    0x080007bc b 0x80001c0                                           |     goto label_7;
                                                                     | label_28:
    0x080007c0 adds r5, r5, r6                                       |     r5 += r6;
                                                                     |     if (r5 != r5) {
    0x080007c4 bne 0x8000710                                         |         goto label_12;
                                                                     |     }
                                                                     | label_29:
    0x080007c8 sub r2, r2, r6                                        |     r2 -= r6;
    0x080007cc mov r0, r7                                            |     r0 = r7;
    0x080007d0 stmdaeq r0, {r2, r3, r4, r6, sl, fp}                  |     __asm ("stmdaeq r0, {r2, r3, r4, r6, sl, fp}");
    0x080007d4 stmdaeq r0, {r2, r3, r4, r6, sl, fp}                  |     __asm ("stmdaeq r0, {r2, r3, r4, r6, sl, fp}");
    0x080007d8 stmdaeq r0, {r0, r2, r4, r6, r7, sb, sp}              |     __asm ("stmdaeq r0, {r0, r2, r4, r6, r7, sb, sp}");
    0x080007dc b 0x800021c                                           |     goto label_1;
                                                                     | label_30:
    0x080007e0 ldr r2, [r5, 4]                                       |     r2 = *((r5 + 4));
    0x080007e4 mov r0, r7                                            |     r0 = r7;
    0x080007e8 stmdaeq r0, {r3, r4, r7, sl, fp}                      |     __asm ("stmdaeq r0, {r3, r4, r7, sl, fp}");
    0x080007ec stmdaeq r0, {r3, r4, r7, sl, fp}                      |     __asm ("stmdaeq r0, {r3, r4, r7, sl, fp}");
    0x080007f0 rev r2, r2                                            |     r2 = SWAP32 (r2);
    0x080007f4 stmdaeq r0, {r0, r2, r4, r6, r7, sb, sp}              |     __asm ("stmdaeq r0, {r0, r2, r4, r6, r7, sb, sp}");
    0x080007f8 b 0x8000744                                           |     goto label_13;
                                                                     | label_32:
    0x080007fc mov r0, r7                                            |     r0 = r7;
    0x08000800 stmdaeq r0, {r3, r5, r7, sl, fp}                      |     __asm ("stmdaeq r0, {r3, r5, r7, sl, fp}");
    0x08000804 stmdaeq r0, {r3, r5, r7, sl, fp}                      |     __asm ("stmdaeq r0, {r3, r5, r7, sl, fp}");
    0x08000808 add r6, r6, 8                                         |     r6 += 8;
    0x0800080c stmdaeq r0, {r0, r2, r4, r6, r7, sb, sp}              |     __asm ("stmdaeq r0, {r0, r2, r4, r6, r7, sb, sp}");
    0x08000810 mov r3, r4                                            |     r3 = r4;
    0x08000814 mov ip, 0                                             |     
    0x08000818 mov r2, r8                                            |     r2 = r8;
    0x0800081c mov r1, r7                                            |     r1 = r7;
    0x08000820 mov r0, fp                                            |     r0 = fp;
    0x08000824 str ip, [sp, 4]                                       |     var_4h = ip;
    0x08000828 and sb, sb, 8                                         |     sb &= 8;
    0x0800082c str r6, [sp]                                          |     *(sp) = r6;
    0x08000830 bl 0x800008c                                          |     dump_ipv6_packet ();
    0x08000834 mov r0, r7                                            |     r0 = r7;
    0x08000838 stmdaeq r0, {r2, r3, r5, r7, sl, fp}                  |     __asm ("stmdaeq r0, {r2, r3, r5, r7, sl, fp}");
    0x0800083c stmdaeq r0, {r2, r3, r5, r7, sl, fp}                  |     __asm ("stmdaeq r0, {r2, r3, r5, r7, sl, fp}");
    0x08000840 stmdaeq r0, {r0, r2, r4, r6, r7, sb, sp}              |     __asm ("stmdaeq r0, {r0, r2, r4, r6, r7, sb, sp}");
    0x08000844 ldrb r3, [r5]                                         |     r3 = *(r5);
    0x08000848 cmp r3, 2                                             |     
                                                                     |     if (r3 == 2) {
    0x0800084c beq 0x8000760                                         |         goto label_14;
                                                                     |     }
    0x08000850 cmp sb, 0                                             |     
                                                                     |     if (sb == 0) {
    0x08000854 beq 0x80001e4                                         |         goto label_9;
                                                                     |     }
    0x08000858 b 0x80001d4                                           |     goto label_15;
                                                                     | }

[*] Function fprintf used 1 times nf_log_ipv6.ko