[*] Binary protection state of eeprom_93cx6.ko

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


[*] Function system tear down of eeprom_93cx6.ko

    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/lib/modules/4.19.56-linux4sam-6.1/kernel/drivers/misc/eeprom/eeprom_93cx6.ko @ 0x80003e0 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.eeprom_93cx6_readb ()                            | void eeprom_93cx6_readb (int32_t arg1, int32_t arg2) {
                                                                 |     int32_t var_2h;
                                                                 |     int32_t var_4h_2;
                                                                 |     int32_t var_2h_2;
                                                                 |     int32_t var_4h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x080003e0 push {r4, r5, r6, r7, lr}                         |     
    0x080003e4 ldr r6, [pc, 0x84]                                |     r6 = *(0x800046c);
    0x080003e8 mov r4, r0                                        |     r4 = r0;
    0x080003ec ldr r3, [r6]                                      |     r3 = *(0x800046c);
    0x080003f0 sub sp, sp, 0xc                                   |     
    0x080003f4 mov r5, r1                                        |     r5 = r1;
    0x080003f8 mov r7, r2                                        |     r7 = r2;
    0x080003fc str r3, [sp, 4]                                   |     var_4h_2 = r3;
    0x08000400 bl 0x8000058                                      |     eeprom_93cx6_startup ();
    0x08000404 mov r3, 6                                         |     r3 = 6;
    0x08000408 ldr r2, [r4, 0xc]                                 |     r2 = *((r4 + 0xc));
    0x0800040c mov r0, r4                                        |     r0 = r4;
    0x08000410 add r1, r2, 1                                     |     r1 = r2 + 1;
    0x08000414 orr r1, r5, r3, lsl r1                            |     r1 = r5 | (r3 << r1);
    0x08000418 add r2, r2, 4                                     |     r2 += 4;
    0x0800041c lsl r2, r2, 0x10                                  |     r2 <<= 0x10;
    0x08000420 lsl r1, r1, 0x10                                  |     r1 <<= 0x10;
    0x08000424 lsr r2, r2, 0x10                                  |     r2 >>= 0x10;
    0x08000428 lsr r1, r1, 0x10                                  |     r1 >>= 0x10;
    0x0800042c bl 0x8000170                                      |     eeprom_93cx6_write_bits ();
    0x08000430 mov r2, 8                                         |     r2 = 8;
    0x08000434 mov r0, r4                                        |     r0 = r4;
    0x08000438 add r1, sp, 2                                     |     r1 += var_2h;
    0x0800043c bl 0x800023c                                      |     eeprom_93cx6_read_bits ();
    0x08000440 ldrh r3, [sp, 2]                                  |     r3 = var_2h;
    0x08000444 mov r0, r4                                        |     r0 = r4;
    0x08000448 strb r3, [r7]                                     |     *(r7) = r3;
    0x0800044c bl 0x80000e4                                      |     eeprom_93cx6_cleanup ();
    0x08000450 ldr r2, [sp, 4]                                   |     r2 = var_4h_2;
    0x08000454 ldr r3, [r6]                                      |     r3 = *(0x800046c);
    0x08000458 cmp r2, r3                                        |     
                                                                 |     if (r2 == r3) {
    0x0800045c bne 0x800046c                                     |         
    0x08000460 add sp, sp, 0xc                                   |         
    0x08000464 pop {r4, r5, r6, r7, lr}                          |         
    0x08000468 stmdaeq r0, {r1, r2, r3, r5, sb, sl, ip}          |         __asm ("stmdaeq r0, {r1, r2, r3, r5, sb, sl, ip}");
                                                                 |     }
    0x0800046c stmdaeq r0, {r1, r2, r5, sb, sl, ip}              |     __asm ("stmdaeq r0, {r1, r2, r5, sb, sl, ip}");
    0x08000470 stmdaeq r0, {r1, r3, r5, sb, sl, ip}              |     __asm ("stmdaeq r0, {r1, r3, r5, sb, sl, ip}");
                                                                 | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/lib/modules/4.19.56-linux4sam-6.1/kernel/drivers/misc/eeprom/eeprom_93cx6.ko @ 0x80004b8 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.eeprom_93cx6_wren ()         | void eeprom_93cx6_wren (int32_t arg1, int32_t arg2) {
                                             |     r0 = arg1;
                                             |     r1 = arg2;
    0x080004b8 push {r4, r5, r6, lr}         |     
    0x080004bc mov r5, r1                    |     r5 = r1;
    0x080004c0 mov r4, r0                    |     r4 = r0;
    0x080004c4 bl 0x8000058                  |     eeprom_93cx6_startup ();
    0x080004c8 cmp r5, 0                     |     
                                             |     if (r5 != 0) {
    0x080004cc moveq r1, 0x10                |         r1 = 0x10;
                                             |     }
                                             |     if (r5 == 0) {
    0x080004d0 movne r1, 0x13                |         r1 = 0x13;
                                             |     }
    0x080004d4 ldr r2, [r4, 0xc]             |     r2 = *((r4 + 0xc));
    0x080004d8 mov r0, r4                    |     r0 = r4;
    0x080004dc sub r3, r2, 2                 |     r3 = r2 - 2;
    0x080004e0 lsl r1, r1, r3                |     r1 <<= r3;
    0x080004e4 add r2, r2, 3                 |     r2 += 3;
    0x080004e8 lsl r1, r1, 0x10              |     r1 <<= 0x10;
    0x080004ec lsl r2, r2, 0x10              |     r2 <<= 0x10;
    0x080004f0 lsr r1, r1, 0x10              |     r1 >>= 0x10;
    0x080004f4 lsr r2, r2, 0x10              |     r2 >>= 0x10;
    0x080004f8 bl 0x8000170                  |     eeprom_93cx6_write_bits ();
    0x080004fc mov r0, r4                    |     r0 = r4;
    0x08000500 pop {r4, r5, r6, lr}          |     
    0x08000504 b 0x80000e4                   |     return void (*0x80000e4)() ();
                                             | }
    ; assembly                                                               | /* r2dec pseudo code output */
                                                                             | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/lib/modules/4.19.56-linux4sam-6.1/kernel/drivers/misc/eeprom/eeprom_93cx6.ko @ 0x8000170 */
                                                                             | #include <stdint.h>
                                                                             |  
    ; (fcn) sym.eeprom_93cx6_write_bits ()                                   | void eeprom_93cx6_write_bits (int32_t arg1, int32_t arg2) {
                                                                             |     r0 = arg1;
                                                                             |     r1 = arg2;
    0x08000170 push {r4, r5, r6, r7, r8, sb, sl, lr}                         |     
    0x08000174 mov r5, r2                                                    |     r5 = r2;
    0x08000178 mov r4, r0                                                    |     r4 = r0;
    0x0800017c mov sb, 1                                                     |     sb = 1;
    0x08000180 mov r8, 0                                                     |     r8 = 0;
    0x08000184 ldr r3, [r0, 4]                                               |     r3 = *((r0 + 4));
    0x08000188 mov sl, r1                                                    |     sl = r1;
    0x0800018c mov lr, pc                                                    |     lr = pc;
    0x08000190 stmdaeq r0, {r1, r3, r5, r6, r7, r8, sl, ip}                  |     __asm ("stmdaeq r0, {r1, r3, r5, r6, r7, r8, sl, ip}");
    0x08000194 cmp r5, 0                                                     |     
    0x08000198 strh sb, [r4, 0x10]                                           |     *((r4 + 0x10)) = sb;
    0x0800019c strb r8, [r4, 0x12]                                           |     *((r4 + 0x12)) = r8;
                                                                             |     if (r5 == 0) {
    0x080001a0 beq 0x800021c                                                 |         goto label_0;
                                                                             |     }
    0x080001a4 ldr r7, [pc, 0x88]                                            |     r7 = *(0x8000230);
    0x080001a8 ldr r6, [pc, 0x88]                                            |     r6 = *(0x8000234);
                                                                             |     do {
    0x080001ac sub r5, r5, 1                                                 |         r5--;
    0x080001b0 asr r3, sl, r5                                                |         r3 = sl >> r5;
    0x080001b4 and r3, r3, 1                                                 |         r3 &= 1;
    0x080001b8 strb r3, [r4, 0x11]                                           |         *((r4 + 0x11)) = r3;
    0x080001bc mov r0, r4                                                    |         r0 = r4;
    0x080001c0 ldr r3, [r4, 8]                                               |         r3 = *((r4 + 8));
    0x080001c4 mov lr, pc                                                    |         lr = pc;
    0x080001c8 stmdaeq r0, {r1, r2, r3, r5, r6, r7, r8, sl, ip}              |         __asm ("stmdaeq r0, {r1, r2, r3, r5, r6, r7, r8, sl, ip}");
    0x080001cc ldr r3, [r4, 8]                                               |         r3 = *((r4 + 8));
    0x080001d0 mov r0, r4                                                    |         r0 = r4;
    0x080001d4 strb sb, [r4, 0x13]                                           |         *((r4 + 0x13)) = sb;
    0x080001d8 mov lr, pc                                                    |         lr = pc;
    0x080001dc stmdaeq r0, {r1, r4, r5, r6, r7, r8, sl, ip}                  |         __asm ("stmdaeq r0, {r1, r4, r5, r6, r7, r8, sl, ip}");
    0x080001e0 ldr r3, [r7, 4]                                               |         r3 = *((r7 + 4));
    0x080001e4 mov r0, r6                                                    |         r0 = r6;
    0x080001e8 mov lr, pc                                                    |         lr = pc;
    0x080001ec stmdaeq r0, {r1, r2, r4, r5, r6, r7, r8, sl, ip}              |         __asm ("stmdaeq r0, {r1, r2, r4, r5, r6, r7, r8, sl, ip}");
    0x080001f0 ldr r3, [r4, 8]                                               |         r3 = *((r4 + 8));
    0x080001f4 mov r0, r4                                                    |         r0 = r4;
    0x080001f8 strb r8, [r4, 0x13]                                           |         *((r4 + 0x13)) = r8;
    0x080001fc mov lr, pc                                                    |         lr = pc;
    0x08000200 stmdaeq r0, {r1, r3, r4, r5, r6, r7, r8, sl, ip}              |         __asm ("stmdaeq r0, {r1, r3, r4, r5, r6, r7, r8, sl, ip}");
    0x08000204 ldr r3, [r7, 4]                                               |         r3 = *((r7 + 4));
    0x08000208 mov r0, r6                                                    |         r0 = r6;
    0x0800020c mov lr, pc                                                    |         lr = pc;
    0x08000210 stmdaeq r0, {r1, r2, r3, r4, r5, r6, r7, r8, sl, ip}          |         __asm ("stmdaeq r0, {r1, r2, r3, r4, r5, r6, r7, r8, sl, ip}");
    0x08000214 cmp r5, 0                                                     |         
    0x08000218 bne 0x80001ac                                                 |         
                                                                             |     } while (r5 != 0);
                                                                             | label_0:
    0x0800021c mov r2, 0                                                     |     r2 = 0;
    0x08000220 strb r2, [r4, 0x11]                                           |     *((r4 + 0x11)) = r2;
    0x08000224 ldr r3, [r4, 8]                                               |     r3 = *((r4 + 8));
    0x08000228 mov r0, r4                                                    |     r0 = r4;
    0x0800022c pop {r4, r5, r6, r7, r8, sb, sl, lr}                          |     
    0x08000230 stmdaeq r0, {r1, sb, sl, ip}                                  |     __asm ("stmdaeq r0, {r1, sb, sl, ip}");
    0x08000234 stmdaeq r0, {r1, r2, r3, r6, r7, r8, sl, ip}                  |     __asm ("stmdaeq r0, {r1, r2, r3, r6, r7, r8, sl, ip}");
    0x08000238 mlaeq r0, fp, r4, ip                                          |     __asm ("mlaeq r0, fp, r4, ip");
                                                                             | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/lib/modules/4.19.56-linux4sam-6.1/kernel/drivers/misc/eeprom/eeprom_93cx6.ko @ 0x8000508 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) sym.eeprom_93cx6_write ()                                | void eeprom_93cx6_write (int32_t arg1, int32_t arg2) {
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
    0x08000508 push {r4, r5, r6, lr}                                 |     
    0x0800050c mov r4, r0                                            |     r4 = r0;
    0x08000510 mov r5, r2                                            |     r5 = r2;
    0x08000514 mov r6, r1                                            |     r6 = r1;
    0x08000518 bl 0x8000058                                          |     eeprom_93cx6_startup ();
    0x0800051c mov r3, 0x50000                                       |     r3 = 0x50000;
    0x08000520 ldr r2, [r4, 0xc]                                     |     r2 = *((r4 + 0xc));
    0x08000524 mov r0, r4                                            |     r0 = r4;
    0x08000528 lsl r3, r3, r2                                        |     r3 <<= r2;
    0x0800052c add r2, r2, 3                                         |     r2 += 3;
    0x08000530 lsl r2, r2, 0x10                                      |     r2 <<= 0x10;
    0x08000534 orr r1, r6, r3, lsr 16                                |     r1 = r6 | (r3 >> 16);
    0x08000538 lsr r2, r2, 0x10                                      |     r2 >>= 0x10;
    0x0800053c bl 0x8000170                                          |     eeprom_93cx6_write_bits ();
    0x08000540 mov r1, r5                                            |     r1 = r5;
    0x08000544 mov r0, r4                                            |     r0 = r4;
    0x08000548 mov r2, 0x10                                          |     r2 = 0x10;
    0x0800054c bl 0x8000170                                          |     eeprom_93cx6_write_bits ();
    0x08000550 mov r2, 0                                             |     r2 = 0;
    0x08000554 mov r3, 1                                             |     r3 = 1;
    0x08000558 strb r2, [r4, 0x10]                                   |     *((r4 + 0x10)) = r2;
    0x0800055c strb r3, [r4, 0x14]                                   |     *((r4 + 0x14)) = r3;
    0x08000560 mov r0, r4                                            |     r0 = r4;
    0x08000564 ldr r3, [r4, 8]                                       |     r3 = *((r4 + 8));
    0x08000568 mov lr, pc                                            |     lr = pc;
    0x0800056c stmdaeq r0, {r1, r2, r4, r5, sb, sl, ip}              |     __asm ("stmdaeq r0, {r1, r2, r4, r5, sb, sl, ip}");
    0x08000570 mov r1, 0x7d0                                         |     r1 = 0x7d0;
    0x08000574 mov r0, 0x3e8                                         |     r0 = 0x3e8;
    0x08000578 stmdaeq r0, {r1, r3, r4, r5, sb, sl, ip}              |     __asm ("stmdaeq r0, {r1, r3, r4, r5, sb, sl, ip}");
    0x0800057c mov r5, 0x64                                          |     r5 = 0x64;
    0x08000580 b 0x8000598                                           |     
                                                                     |     while (r3 == 0) {
    0x08000584 mov r1, 0x7d0                                         |         r1 = 0x7d0;
    0x08000588 mov r0, 0x3e8                                         |         r0 = 0x3e8;
    0x0800058c stmdaeq r0, {r1, r3, r4, r5, sb, sl, ip}              |         __asm ("stmdaeq r0, {r1, r3, r4, r5, sb, sl, ip}");
    0x08000590 subs r5, r5, 1                                        |         r5--;
                                                                     |         if (r5 == r5) {
    0x08000594 beq 0x80005c0                                         |             goto label_0;
                                                                     |         }
    0x08000598 ldr r3, [r4, 4]                                       |         r3 = *((r4 + 4));
    0x0800059c mov r0, r4                                            |         r0 = r4;
    0x080005a0 mov lr, pc                                            |         lr = pc;
    0x080005a4 stmdaeq r0, {r1, r2, r3, r4, r5, sb, sl, ip}          |         __asm ("stmdaeq r0, {r1, r2, r3, r4, r5, sb, sl, ip}");
    0x080005a8 ldrb r3, [r4, 0x12]                                   |         r3 = *((r4 + 0x12));
    0x080005ac cmp r3, 0                                             |         
    0x080005b0 beq 0x8000584                                         |         
                                                                     |     }
    0x080005b4 mov r0, r4                                            |     r0 = r4;
    0x080005b8 pop {r4, r5, r6, lr}                                  |     
    0x080005bc b 0x80000e4                                           |     void (*0x80000e4)() ();
                                                                     | label_0:
    0x080005c0 ldr r1, [pc, 0x10]                                    |     r1 = *(0x80005d4);
    0x080005c4 ldr r0, [pc, 0x10]                                    |     r0 = "eeprom_93cx6_write";
    0x080005c8 stmdaeq r0, {r1, r6, sb, sl, ip}                      |     __asm ("stmdaeq r0, {r1, r6, sb, sl, ip}");
    0x080005cc mov r0, r4                                            |     r0 = r4;
    0x080005d0 pop {r4, r5, r6, lr}                                  |     
    0x080005d4 b 0x80000e4                                           |     return void (*0x80000e4)() ();
                                                                     | }

[*] Function system used 1 times eeprom_93cx6.ko