[*] Binary protection state of gcm.ko

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


[*] Function fprintf tear down of gcm.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/crypto/gcm.ko @ 0x8000fe8 */
                                                                             | #include <stdint.h>
                                                                             |  
    ; (fcn) sym.crypto_gcm_create_common ()                                  | void crypto_gcm_create_common (int32_t arg_1ch, int32_t arg_20h, int32_t arg_28h, int32_t arg_a8h, int32_t arg1, int32_t arg2) {
                                                                             |     int32_t var_40h;
                                                                             |     int32_t var_0h;
                                                                             |     int32_t var_ch;
                                                                             |     r0 = arg1;
                                                                             |     r1 = arg2;
    0x08000fe8 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                     |     
    0x08000fec mov r6, r0                                                    |     r6 = r0;
    0x08000ff0 mov r7, r2                                                    |     r7 = r2;
    0x08000ff4 sub sp, sp, 0x14                                              |     
    0x08000ff8 mov r0, r1                                                    |     r0 = r1;
    0x08000ffc add r2, sp, 0xc                                               |     r2 += var_ch;
    0x08001000 mov r1, 3                                                     |     r1 = 3;
    0x08001004 mov r5, r3                                                    |     r5 = r3;
    0x08001008 stmdaeq r0, {r1, r3, r4, r7, sb, sl, fp, ip, sp}              |     __asm ("stmdaeq r0, {r1, r3, r4, r7, sb, sl, fp, ip, sp}");
    0x0800100c subs r4, r0, 0                                                |     r4 = r0 - 0;
                                                                             |     if (r4 != r0) {
    0x08001010 beq 0x8001020                                                 |         
                                                                             | label_1:
    0x08001014 mov r0, r4                                                    |         r0 = r4;
    0x08001018 add sp, sp, 0x14                                              |         
    0x0800101c pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                      |         
                                                                             |     }
    0x08001020 stmdaeq r0, {r1, r2, r3, r4, r7, sb, sl, fp, ip, sp}          |     __asm ("stmdaeq r0, {r1, r2, r3, r4, r7, sb, sl, fp, ip, sp}");
    0x08001024 stmdaeq r0, {r1, r2, r3, r4, r7, sb, sl, fp, ip, sp}          |     __asm ("stmdaeq r0, {r1, r2, r3, r4, r7, sb, sl, fp, ip, sp}");
    0x08001028 mov r1, 0xdc0                                                 |     r1 = 0xdc0;
    0x0800102c ldr r0, [r3, 0x28]                                            |     r0 = *((r3 + 0x28));
    0x08001030 stmdaeq r0, {r1, r5, r7, sb, sl, fp, ip, sp}                  |     __asm ("stmdaeq r0, {r1, r5, r7, sb, sl, fp, ip, sp}");
    0x08001034 subs r8, r0, 0                                                |     r8 = r0 - 0;
                                                                             |     if (r8 == r0) {
    0x08001038 beq 0x8001218                                                 |         goto label_3;
                                                                             |     }
    0x0800103c ldr r1, [sp, 0xc]                                             |     r1 = var_ch;
    0x08001040 mov r2, r5                                                    |     r2 = r5;
    0x08001044 add sb, r8, 0x80                                              |     sb = r8 + 0x80;
    0x08001048 add r5, r8, 0x25c                                             |     r5 = r8 + 0x25c;
    0x0800104c mov r3, r4                                                    |     r3 = r4;
    0x08001050 str r1, [sp]                                                  |     *(sp) = r1;
    0x08001054 mov r0, r5                                                    |     r0 = r5;
    0x08001058 mov r1, sb                                                    |     r1 = sb;
    0x0800105c stmdaeq r0, {r1, r2, r6, r7, sb, sl, fp, ip, sp}              |     __asm ("stmdaeq r0, {r1, r2, r6, r7, sb, sl, fp, ip, sp}");
    0x08001060 add sl, r8, 0x240                                             |     sl = r8 + 0x240;
    0x08001064 subs r4, r0, 0                                                |     r4 = r0 - 0;
                                                                             |     if (r4 != r0) {
    0x08001068 bne 0x8001098                                                 |         goto label_2;
                                                                             |     }
    0x0800106c ldr fp, [r8, 0x264]                                           |     fp = *((r8 + 0x264));
    0x08001070 stmdaeq r0, {r2, r6, r7, r8, sb, fp, ip}                      |     __asm ("stmdaeq r0, {r2, r6, r7, r8, sb, fp, ip}");
    0x08001074 stmdaeq r0, {r2, r6, r7, r8, sb, fp, ip}                      |     __asm ("stmdaeq r0, {r2, r6, r7, r8, sb, fp, ip}");
    0x08001078 add r0, fp, 0x28                                              |     r0 += arg_28h;
    0x0800107c stmdaeq r0, {r1, r3, r6, r7, sb, sl, fp, ip, sp}              |     __asm ("stmdaeq r0, {r1, r3, r6, r7, sb, sl, fp, ip, sp}");
    0x08001080 subs r3, r0, 0                                                |     r3 = r0 - 0;
                                                                             |     if (r3 == r0) {
    0x08001084 bne 0x8001094                                                 |         
    0x08001088 ldr r2, [fp, -0x40]                                           |         r2 = var_40h;
    0x0800108c cmp r2, 0x10                                                  |         
                                                                             |         if (r2 == 0x10) {
    0x08001090 beq 0x80010bc                                                 |             goto label_4;
                                                                             |         }
                                                                             |     }
                                                                             | label_0:
    0x08001094 mvn r4, 0x15                                                  |     r4 = ~0x15;
                                                                             |     do {
                                                                             | label_2:
    0x08001098 mov r0, sl                                                    |         r0 = sl;
    0x0800109c stmdaeq r0, {r1, r2, r5, r6, sb, sl, fp, ip, sp}              |         __asm ("stmdaeq r0, {r1, r2, r5, r6, sb, sl, fp, ip, sp}");
    0x080010a0 mov r0, r5                                                    |         r0 = r5;
    0x080010a4 stmdaeq r0, {r1, r2, r5, r6, sb, sl, fp, ip, sp}              |         __asm ("stmdaeq r0, {r1, r2, r5, r6, sb, sl, fp, ip, sp}");
    0x080010a8 mov r0, r8                                                    |         r0 = r8;
    0x080010ac stmdaeq r0, {r1, r3, r5, r6, sb, sl, fp, ip, sp}              |         __asm ("stmdaeq r0, {r1, r3, r5, r6, sb, sl, fp, ip, sp}");
    0x080010b0 mov r0, r4                                                    |         r0 = r4;
    0x080010b4 add sp, sp, 0x14                                              |         
    0x080010b8 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                      |         
                                                                             | label_4:
    0x080010bc ldr r0, [sp, 0xc]                                             |         r0 = var_ch;
    0x080010c0 mov r2, r7                                                    |         r2 = r7;
    0x080010c4 str r0, [sp]                                                  |         *(sp) = r0;
    0x080010c8 mov r1, sb                                                    |         r1 = sb;
    0x080010cc mov r0, sl                                                    |         r0 = sl;
    0x080010d0 stmdaeq r0, {r1, r2, r3, r6, r7, sb, sl, fp, ip, sp}          |         __asm ("stmdaeq r0, {r1, r2, r3, r6, r7, sb, sl, fp, ip, sp}");
    0x080010d4 subs r4, r0, 0                                                |         r4 = r0 - 0;
    0x080010d8 bne 0x8001098                                                 |         
                                                                             |     } while (r4 != r0);
    0x080010dc ldr r4, [r8, 0x248]                                           |     r4 = *((r8 + 0x248));
    0x080010e0 mov r2, 4                                                     |     r2 = 4;
    0x080010e4 stmdaeq r0, {r2, r3, r6, r7, r8, sb, fp, ip}                  |     __asm ("stmdaeq r0, {r2, r3, r6, r7, r8, sb, fp, ip}");
    0x080010e8 stmdaeq r0, {r2, r3, r6, r7, r8, sb, fp, ip}                  |     __asm ("stmdaeq r0, {r2, r3, r6, r7, r8, sb, fp, ip}");
    0x080010ec add r0, r4, 0x28                                              |     r0 = r4 + 0x28;
    0x080010f0 stmdaeq r0, {r1, r4, r6, r7, sb, sl, fp, ip, sp}              |     __asm ("stmdaeq r0, {r1, r4, r6, r7, sb, sl, fp, ip, sp}");
    0x080010f4 cmp r0, 0                                                     |     
                                                                             |     if (r0 != 0) {
    0x080010f8 bne 0x8001094                                                 |         goto label_0;
                                                                             |     }
    0x080010fc ldr r3, [r4, -0x24]                                           |     r3 = *((r4 - 0x24));
    0x08001100 cmp r3, 0x10                                                  |     
                                                                             |     if (r3 != 0x10) {
    0x08001104 bne 0x8001094                                                 |         goto label_0;
                                                                             |     }
    0x08001108 ldr r3, [r4, 0x14]                                            |     r3 = *((r4 + 0x14));
    0x0800110c cmp r3, 1                                                     |     
                                                                             |     if (r3 != 1) {
    0x08001110 bne 0x8001094                                                 |         goto label_0;
                                                                             |     }
    0x08001114 add r3, r4, 0x2c                                              |     r3 = r4 + 0x2c;
    0x08001118 add r0, r8, 0xa8                                              |     r0 = r8 + 0xa8;
    0x0800111c stmdaeq r0, {r2, r4, r6, r7, r8, sb, fp, ip}                  |     __asm ("stmdaeq r0, {r2, r4, r6, r7, r8, sb, fp, ip}");
    0x08001120 stmdaeq r0, {r2, r4, r6, r7, r8, sb, fp, ip}                  |     __asm ("stmdaeq r0, {r2, r4, r6, r7, r8, sb, fp, ip}");
    0x08001124 mov r1, 0x80                                                  |     r1 = 0x80;
    0x08001128 stmdaeq r0, {r1, r2, r3, r5, r7, sb, sl, fp, ip, sp}          |     __asm ("stmdaeq r0, {r1, r2, r3, r5, r7, sb, sl, fp, ip, sp}");
    0x0800112c cmp r0, 0x7f                                                  |     
                                                                             |     if (r0 > 0x7f) {
    0x08001130 bgt 0x8001220                                                 |         goto label_5;
                                                                             |     }
    0x08001134 add r3, fp, 0xa8                                              |     r3 += arg_a8h;
    0x08001138 add r0, r8, 0x128                                             |     r0 = r8 + 0x128;
    0x0800113c str r3, [sp]                                                  |     *(sp) = r3;
    0x08001140 stmdaeq r0, {r2, r3, r4, r6, r7, r8, sb, fp, ip}              |     __asm ("stmdaeq r0, {r2, r3, r4, r6, r7, r8, sb, fp, ip}");
    0x08001144 stmdaeq r0, {r2, r3, r4, r6, r7, r8, sb, fp, ip}              |     __asm ("stmdaeq r0, {r2, r3, r4, r6, r7, r8, sb, fp, ip}");
    0x08001148 add r3, r4, 0xa8                                              |     r3 = r4 + 0xa8;
    0x0800114c mov r1, 0x80                                                  |     r1 = 0x80;
    0x08001150 stmdaeq r0, {r1, r2, r3, r5, r7, sb, sl, fp, ip, sp}          |     __asm ("stmdaeq r0, {r1, r2, r3, r5, r7, sb, sl, fp, ip, sp}");
    0x08001154 cmp r0, 0x7f                                                  |     
                                                                             |     if (r0 > 0x7f) {
    0x08001158 bgt 0x8001220                                                 |         goto label_5;
                                                                             |     }
    0x0800115c ldr r2, [r4, 0x20]                                            |     r2 = *((r4 + 0x20));
    0x08001160 mov r0, r6                                                    |     r0 = r6;
    0x08001164 ldr r3, [fp, 0x20]                                            |     r3 = *(arg_20h);
    0x08001168 mov r1, r8                                                    |     r1 = r8;
    0x0800116c add r3, r3, r2                                                |     r3 += r2;
    0x08001170 add r3, r3, r3, lsr 31                                        |     r3 += (r3 >> 31);
    0x08001174 asr r3, r3, 1                                                 |     r3 >>= 1;
    0x08001178 str r3, [r8, 0xa0]                                            |     *((r8 + 0xa0)) = r3;
    0x0800117c mov r3, 1                                                     |     r3 = 1;
    0x08001180 str r3, [r8, 0x94]                                            |     *((r8 + 0x94)) = r3;
    0x08001184 ldr r3, [fp, 0x1c]                                            |     r3 = *(arg_1ch);
    0x08001188 ldr r2, [r4, 0x1c]                                            |     r2 = *((r4 + 0x1c));
    0x0800118c orr r3, r3, r2                                                |     r3 |= r2;
    0x08001190 str r3, [r8, 0x9c]                                            |     *((r8 + 0x9c)) = r3;
    0x08001194 mov r3, 8                                                     |     r3 = 8;
    0x08001198 str r3, [r8, 0x98]                                            |     *((r8 + 0x98)) = r3;
    0x0800119c mov r3, 0xc                                                   |     r3 = 0xc;
    0x080011a0 str r3, [r8, 0x58]                                            |     *((r8 + 0x58)) = r3;
    0x080011a4 ldr r3, [r4, -0x20]                                           |     r3 = *((r4 - 0x20));
    0x080011a8 str r3, [r8, 0x60]                                            |     *((r8 + 0x60)) = r3;
    0x080011ac mov r3, 0x10                                                  |     r3 = 0x10;
    0x080011b0 str r3, [r8, 0x5c]                                            |     *((r8 + 0x5c)) = r3;
    0x080011b4 stmdaeq r0, {r5, r6, sl}                                      |     __asm ("stmdaeq r0, {r5, r6, sl}");
    0x080011b8 stmdaeq r0, {r5, r6, sl}                                      |     __asm ("stmdaeq r0, {r5, r6, sl}");
    0x080011bc str r3, [r8, 0x50]                                            |     *((r8 + 0x50)) = r3;
    0x080011c0 stmdaeq r0, {r2, r3, r5, r6, r8, sb}                          |     __asm ("stmdaeq r0, {r2, r3, r5, r6, r8, sb}");
    0x080011c4 stmdaeq r0, {r2, r3, r5, r6, r8, sb}                          |     __asm ("stmdaeq r0, {r2, r3, r5, r6, r8, sb}");
    0x080011c8 str r3, [r8, 0x54]                                            |     *((r8 + 0x54)) = r3;
    0x080011cc stmdaeq r0, {r3, r6, r8, sb, sl}                              |     __asm ("stmdaeq r0, {r3, r6, r8, sb, sl}");
    0x080011d0 stmdaeq r0, {r3, r6, r8, sb, sl}                              |     __asm ("stmdaeq r0, {r3, r6, r8, sb, sl}");
    0x080011d4 str r3, [r8, 0x40]                                            |     *((r8 + 0x40)) = r3;
    0x080011d8 stmdaeq r0, {r4, r5, r6}                                      |     __asm ("stmdaeq r0, {r4, r5, r6}");
    0x080011dc stmdaeq r0, {r4, r5, r6}                                      |     __asm ("stmdaeq r0, {r4, r5, r6}");
    0x080011e0 str r3, [r8, 0x44]                                            |     *((r8 + 0x44)) = r3;
    0x080011e4 stmdaeq r0, {r3, r4, r6, fp, ip}                              |     __asm ("stmdaeq r0, {r3, r4, r6, fp, ip}");
    0x080011e8 stmdaeq r0, {r3, r4, r6, fp, ip}                              |     __asm ("stmdaeq r0, {r3, r4, r6, fp, ip}");
    0x080011ec str r3, [r8, 0x48]                                            |     *((r8 + 0x48)) = r3;
    0x080011f0 stmdaeq r0, {r4, r7, r8, sb, sl, ip}                          |     __asm ("stmdaeq r0, {r4, r7, r8, sb, sl, ip}");
    0x080011f4 stmdaeq r0, {r4, r7, r8, sb, sl, ip}                          |     __asm ("stmdaeq r0, {r4, r7, r8, sb, sl, ip}");
    0x080011f8 str r3, [r8, 0x4c]                                            |     *((r8 + 0x4c)) = r3;
    0x080011fc stmdaeq r0, {r3, r8, sl}                                      |     __asm ("stmdaeq r0, {r3, r8, sl}");
    0x08001200 stmdaeq r0, {r3, r8, sl}                                      |     __asm ("stmdaeq r0, {r3, r8, sl}");
    0x08001204 str r3, [r8]                                                  |     *(r8) = r3;
    0x08001208 stmdaeq r0, {r1, r4, r5, r7, sb, sl, fp, ip, sp}              |     __asm ("stmdaeq r0, {r1, r4, r5, r7, sb, sl, fp, ip, sp}");
    0x0800120c subs r4, r0, 0                                                |     r4 = r0 - 0;
                                                                             |     if (r4 == r0) {
    0x08001210 beq 0x8001014                                                 |         goto label_1;
                                                                             |     }
    0x08001214 b 0x8001098                                                   |     goto label_2;
                                                                             | label_3:
    0x08001218 mvn r4, 0xb                                                   |     r4 = ~0xb;
    0x0800121c b 0x8001014                                                   |     goto label_1;
                                                                             | label_5:
    0x08001220 mvn r4, 0x23                                                  |     r4 = ~0x23;
    0x08001224 b 0x8001098                                                   |     goto label_2;
                                                                             | }

[*] Function fprintf used 1 times gcm.ko