[*] Binary protection state of imx-sdma.ko

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


[*] Function fprintf tear down of imx-sdma.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/drivers/dma/imx-sdma.ko @ 0x8001e80 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.sdma_config_write ()                         | void sdma_config_write (int32_t arg1, int32_t arg2) {
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
    0x08001e80 push {r4, r5, r6, r7, r8, sb, sl, lr}         |     
    0x08001e84 mov r3, 0                                     |     r3 = 0;
    0x08001e88 mov r4, r0                                    |     r4 = r0;
    0x08001e8c ldr r8, [r0, 0xcc]                            |     r8 = *((r0 + 0xcc));
    0x08001e90 mov r7, r2                                    |     r7 = r2;
    0x08001e94 cmp r2, 2                                     |     
    0x08001e98 str r3, [r0, 0x100]                           |     *((r0 + 0x100)) = r3;
    0x08001e9c strb r3, [r0, 0x138]                          |     *((r0 + 0x138)) = r3;
                                                             |     if (r2 == 2) {
    0x08001ea0 beq 0x8002038                                 |         goto label_3;
                                                             |     }
    0x08001ea4 cmp r2, 3                                     |     
                                                             |     if (r2 == 3) {
    0x08001ea8 beq 0x8002000                                 |         goto label_4;
                                                             |     }
    0x08001eac ldr r3, [r1, 8]                               |     r3 = *((r1 + 8));
    0x08001eb0 cmp r8, 0x1a                                  |     
    0x08001eb4 str r3, [r0, 0xf0]                            |     *((r0 + 0xf0)) = r3;
                                                             |     if (r8 == 0x1a) {
    0x08001eb8 ldrne r3, [r1, 0x18]                          |         r3 = *((r1 + 0x18));
                                                             |     }
                                                             |     if (r8 == 0x1a) {
    0x08001ebc ldrne r2, [r1, 0x10]                          |         r2 = *((r1 + 0x10));
                                                             |     }
                                                             |     if (r8 != 0x1a) {
    0x08001ec0 ldreq r3, [r1, 4]                             |         r3 = *((r1 + 4));
                                                             |     }
                                                             |     if (r8 != 0x1a) {
    0x08001ec4 streq r3, [r0, 0xf4]                          |         *((r0 + 0xf4)) = r3;
                                                             |     }
                                                             |     if (r8 == 0x1a) {
    0x08001ec8 mulne r3, r2, r3                              |         r3 = r2 * r3;
                                                             |     }
                                                             |     if (r8 == 0x1a) {
    0x08001ecc strne r3, [r0, 0x100]                         |         *((r0 + 0x100)) = r3;
                                                             |     }
                                                             |     if (r8 == 0x1a) {
    0x08001ed0 ldrne r3, [r1, 0x10]                          |         r3 = *((r1 + 0x10));
                                                             |     }
    0x08001ed4 strne r3, [r0, 0xd8]                          |     *((r0 + 0xd8)) = r3;
                                                             |     while (1) {
                                                             | label_0:
    0x08001ed8 ldr r6, [r4, 0x88]                            |         r6 = *((r4 + 0x88));
    0x08001edc mov r1, 1                                     |         r1 = 1;
    0x08001ee0 ldr r5, [r4, 0x8c]                            |         r5 = *((r4 + 0x8c));
    0x08001ee4 add r6, r6, 0x2000                            |         r6 += 0x2000;
    0x08001ee8 str r7, [r4, 0x90]                            |         *((r4 + 0x90)) = r7;
    0x08001eec lsl r2, r1, r5                                |         r2 = r1 << r5;
    0x08001ef0 ldr r3, [r6, 0xa4c]                           |         r3 = *((r6 + 0xa4c));
    0x08001ef4 str r2, [r3, 8]                               |         *((r3 + 8)) = r2;
    0x08001ef8 mov r3, 0                                     |         r3 = 0;
    0x08001efc mov r2, 3                                     |         r2 = 3;
    0x08001f00 cmp r8, 0xf                                   |         
    0x08001f04 str r3, [r4, 0xf8]                            |         *((r4 + 0xf8)) = r3;
    0x08001f08 str r3, [r4, 0xfc]                            |         *((r4 + 0xfc)) = r3;
    0x08001f0c str r3, [r4, 0x104]                           |         *((r4 + 0x104)) = r3;
    0x08001f10 str r3, [r4, 0x108]                           |         *((r4 + 0x108)) = r3;
    0x08001f14 str r2, [r4, 0x10c]                           |         *((r4 + 0x10c)) = r2;
                                                             |         if (r8 == 0xf) {
    0x08001f18 beq 0x8002070                                 |             goto label_5;
                                                             |         }
    0x08001f1c cmp r8, 0x10                                  |         
                                                             |         if (r8 == 0x10) {
    0x08001f20 beq 0x800205c                                 |             goto label_6;
                                                             |         }
    0x08001f24 mov r2, r3                                    |         r2 = r3;
    0x08001f28 mov r0, r4                                    |         r0 = r4;
    0x08001f2c bl 0x80012c0                                  |         sdma_config_ownership_constprop_0 ();
                                                             | label_1:
    0x08001f30 ldr r2, [r4, 0x13c]                           |         r2 = *((r4 + 0x13c));
    0x08001f34 sub r3, r2, 1                                 |         r3 = r2 - 1;
    0x08001f38 cmp r3, 6                                     |         
                                                             |         if (r3 <= 6) {
    0x08001f3c bhi 0x8001f54                                 |             
    0x08001f40 ldr r3, [r6, 0xa4c]                           |             r3 = *((r6 + 0xa4c));
    0x08001f44 lsl r5, r5, 2                                 |             r5 <<= 2;
    0x08001f48 add r5, r5, 0x100                             |             r5 += 0x100;
    0x08001f4c add r3, r3, r5                                |             r3 += r5;
    0x08001f50 str r2, [r3]                                  |             *(r3) = r2;
                                                             |         }
    0x08001f54 ldr r5, [r4, 0xd0]                            |         r5 = *((r4 + 0xd0));
    0x08001f58 mov r0, r4                                    |         r0 = r4;
    0x08001f5c mov r1, r5                                    |         r1 = r5;
    0x08001f60 bl 0x8001200                                  |         sdma_event_enable_constprop_0 ();
    0x08001f64 ldr sb, [r4, 0xd4]                            |         sb = *((r4 + 0xd4));
    0x08001f68 cmp sb, 0                                     |         
                                                             |         if (sb != 0) {
    0x08001f6c bne 0x8002084                                 |             goto label_7;
                                                             |         }
                                                             | label_2:
    0x08001f70 mov r3, 0                                     |         r3 = 0;
    0x08001f74 str r3, [r4, 0xdc]                            |         *((r4 + 0xdc)) = r3;
    0x08001f78 str r3, [r4, 0xe0]                            |         *((r4 + 0xe0)) = r3;
    0x08001f7c str r3, [r4, 0xe4]                            |         *((r4 + 0xe4)) = r3;
    0x08001f80 str r3, [r4, 0xe8]                            |         *((r4 + 0xe8)) = r3;
    0x08001f84 cmp r8, 0x1b                                  |         
                                                             |         if (r8 > 0x1b) {
                                                             |             /* switch table (28 cases) at 0x8001f90 */
    0x08001f88 ldrls pc, [pc, r8, lsl 2]                     |             offset_0 = r8 << 2;
                                                             |             pc = *((pc + offset_0));
                                                             |         }
    0x08001f8c b 0x8002094                                   |         goto label_8;
                                                             | label_4:
    0x08002000 ldr r3, [r1, 4]                               |         r3 = *((r1 + 4));
    0x08002004 str r3, [r0, 0xf4]                            |         *((r0 + 0xf4)) = r3;
    0x08002008 ldr r3, [r1, 8]                               |         r3 = *((r1 + 8));
    0x0800200c str r3, [r0, 0xf0]                            |         *((r0 + 0xf0)) = r3;
    0x08002010 ldrb r2, [r1, 0x14]                           |         r2 = *((r1 + 0x14));
    0x08002014 str r2, [r0, 0x100]                           |         *((r0 + 0x100)) = r2;
    0x08002018 ldr r3, [r1, 0x18]                            |         r3 = *((r1 + 0x18));
    0x0800201c lsl r3, r3, 0x10                              |         r3 <<= 0x10;
    0x08002020 and r3, r3, 0xff0000                          |         r3 &= 0xff0000;
    0x08002024 orr r3, r3, r2                                |         r3 |= r2;
    0x08002028 str r3, [r0, 0x100]                           |         *((r0 + 0x100)) = r3;
    0x0800202c ldr r3, [r1, 0x10]                            |         r3 = *((r1 + 0x10));
    0x08002030 str r3, [r0, 0xd8]                            |         *((r0 + 0xd8)) = r3;
    0x08002034 b 0x8001ed8                                   |         
                                                             |     }
                                                             | label_3:
    0x08002038 ldr r3, [r1, 4]                               |     r3 = *((r1 + 4));
    0x0800203c str r3, [r0, 0xf0]                            |     *((r0 + 0xf0)) = r3;
    0x08002040 ldr r3, [r1, 0x14]                            |     r3 = *((r1 + 0x14));
    0x08002044 ldr r2, [r1, 0xc]                             |     r2 = *((r1 + 0xc));
    0x08002048 mul r3, r2, r3                                |     r3 = r2 * r3;
    0x0800204c str r3, [r0, 0x100]                           |     *((r0 + 0x100)) = r3;
    0x08002050 ldr r3, [r1, 0xc]                             |     r3 = *((r1 + 0xc));
    0x08002054 str r3, [r0, 0xd8]                            |     *((r0 + 0xd8)) = r3;
    0x08002058 b 0x8001ed8                                   |     goto label_0;
                                                             | label_6:
    0x0800205c mov r2, r3                                    |     r2 = r3;
    0x08002060 mov r1, r3                                    |     r1 = r3;
    0x08002064 mov r0, r4                                    |     r0 = r4;
    0x08002068 bl 0x80012c0                                  |     sdma_config_ownership_constprop_0 ();
    0x0800206c b 0x8001f30                                   |     goto label_1;
                                                             | label_5:
    0x08002070 mov r2, r1                                    |     r2 = r1;
    0x08002074 mov r0, r4                                    |     r0 = r4;
    0x08002078 mov r1, r3                                    |     r1 = r3;
    0x0800207c bl 0x80012c0                                  |     sdma_config_ownership_constprop_0 ();
    0x08002080 b 0x8001f30                                   |     goto label_1;
                                                             | label_7:
    0x08002084 mov r1, sb                                    |     r1 = sb;
    0x08002088 mov r0, r4                                    |     r0 = r4;
    0x0800208c bl 0x8001200                                  |     sdma_event_enable_constprop_0 ();
    0x08002090 b 0x8001f70                                   |     goto label_2;
                                                             | label_8:
    0x08002094 mov r3, 0                                     |     r3 = 0;
    0x08002098 cmp sb, r3                                    |     
    0x0800209c str r3, [r4, 0xdc]                            |     *((r4 + 0xdc)) = r3;
    0x080020a0 str r3, [r4, 0xe0]                            |     *((r4 + 0xe0)) = r3;
    0x080020a4 beq 0x8002160                                 |     
                                                             |     while (1) {
    0x080020a8 ldrd r2, r3, [r4, 0xf0]                       |         __asm ("ldrd r2, r3, [r4, 0xf0]");
    0x080020ac str r2, [r4, 0x104]                           |         *((r4 + 0x104)) = r2;
    0x080020b0 str r3, [r4, 0x108]                           |         *((r4 + 0x108)) = r3;
    0x080020b4 mov r0, 0                                     |         r0 = 0;
    0x080020b8 pop {r4, r5, r6, r7, r8, sb, sl, pc}          |         
    0x08002160 cmp r5, 0                                     |         
    0x08002164 add r3, r5, 0x1f                              |         r3 = r5 + 0x1f;
                                                             |         if (r5 < 0) {
    0x08002168 movge r3, r5                                  |             r3 = r5;
                                                             |         }
    0x0800216c add r1, r4, 0xf8                              |         r1 = r4 + 0xf8;
    0x08002170 and r5, r5, 0x1f                              |         r5 &= 0x1f;
    0x08002174 mov r0, 1                                     |         r0 = 1;
    0x08002178 asr r3, r3, 5                                 |         r3 >>= 5;
    0x0800217c ldr r2, [r1, r3, lsl 2]                       |         offset_1 = r3 << 2;
                                                             |         r2 = *((r1 + offset_1));
    0x08002180 orr r2, r2, r0, lsl r5                        |         r2 |= (r0 << r5);
    0x08002184 str r2, [r1, r3, lsl 2]                       |         offset_2 = r3 << 2;
                                                             |         *((r1 + offset_2)) = r2;
    0x08002188 b 0x80020a8                                   |         
                                                             |     }
                                                             | }
    ; 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/drivers/dma/imx-sdma.ko @ 0x8000b60 */
                                                                                 | #include <stdint.h>
                                                                                 |  
                                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                                 |  
    ; (fcn) sym.sdma_free_chan_resources ()                                      | void sdma_free_chan_resources (int32_t arg1) {
                                                                                 |     int32_t var_0h;
                                                                                 |     int32_t var_4h;
                                                                                 |     int32_t var_ch;
                                                                                 |     r0 = arg1;
    0x08000b60 ldr r2, [r0, 0x88]                                                |     r2 = *((r0 + 0x88));
    0x08000b64 add r3, r2, 0x2000                                                |     r3 = r2 + 0x2000;
    0x08000b68 ldr r1, [r3, 0xb78]                                               |     r1 = *((r3 + 0xb78));
    0x08000b6c cmp r1, 0                                                         |     
                                                                                 |     if (r1 != 0) {
    0x08000b70 bxeq lr                                                           |         return;
                                                                                 |     }
    0x08000b74 push {r4, r5, lr}                                                 |     
    0x08000b78 mov r4, r0                                                        |     r4 = r0;
    0x08000b7c ldr r3, [r3, 0xb50]                                               |     r3 = *((r3 + 0xb50));
    0x08000b80 sub sp, sp, 0xc                                                   |     
    0x08000b84 ldrb r3, [r3, 0xf]                                                |     r3 = *((r3 + 0xf));
    0x08000b88 cmp r3, 0                                                         |     
    0x08000b8c bne 0x8000c84                                                     |     
                                                                                 |     while (1) {
    0x08000b90 mov r0, r4                                                        |         r0 = r4;
    0x08000b94 bl 0x8000900                                                      |         sdma_terminate_all ();
    0x08000b98 add r0, r4, 0x3c                                                  |         r0 = r4 + 0x3c;
    0x08000b9c str sp, [sp]                                                      |         *(sp) = sp;
    0x08000ba0 str sp, [sp, 4]                                                   |         var_4h = sp;
    0x08000ba4 stmdaeq r0, {r0, r2, r3, r6, r7, r8, sl, fp, ip, sp, lr}          |         __asm ("stmdaeq r0, {r0, r2, r3, r6, r7, r8, sl, fp, ip, sp, lr}");
    0x08000ba8 mrs ip, apsr                                                      |         ip = apsr;
    0x08000bac cpsid i                                                           |         __asm ("cpsid i");
    0x08000bb0 mov r3, sp                                                        |         r3 = sp;
    0x08000bb4 bic r3, r3, 0x1fc0                                                |         r3 = BIT_MASK (r3, 0x1fc0);
    0x08000bb8 bic r3, r3, 0x3f                                                  |         r3 = BIT_MASK (r3, 0x3f);
    0x08000bbc ldr r2, [r3, 4]                                                   |         r2 = *((r3 + 4));
    0x08000bc0 add r2, r2, 1                                                     |         r2++;
    0x08000bc4 str r2, [r3, 4]                                                   |         *((r3 + 4)) = r2;
    0x08000bc8 ldr r2, [r4, 0x78]                                                |         r2 = *((r4 + 0x78));
    0x08000bcc add r3, r4, 0x78                                                  |         r3 = r4 + 0x78;
    0x08000bd0 cmp r3, r2                                                        |         
                                                                                 |         if (r3 != r2) {
    0x08000bd4 beq 0x8000bfc                                                     |             
    0x08000bd8 ldr r2, [r4, 0x7c]                                                |             r2 = *((r4 + 0x7c));
    0x08000bdc ldr r1, [sp, 4]                                                   |             r1 = var_4h;
    0x08000be0 ldr r0, [r4, 0x78]                                                |             r0 = *((r4 + 0x78));
    0x08000be4 str r1, [r0, 4]                                                   |             *((r0 + 4)) = r1;
    0x08000be8 str r0, [r1]                                                      |             *(r1) = r0;
    0x08000bec str sp, [r2]                                                      |             *(r2) = sp;
    0x08000bf0 str r2, [sp, 4]                                                   |             var_4h = r2;
    0x08000bf4 str r3, [r4, 0x78]                                                |             *((r4 + 0x78)) = r3;
    0x08000bf8 str r3, [r4, 0x7c]                                                |             *((r4 + 0x7c)) = r3;
                                                                                 |         }
    0x08000bfc msr cpsr_c, ip                                                    |         cpsr_c = ip;
    0x08000c00 mov r3, sp                                                        |         r3 = sp;
    0x08000c04 bic r3, r3, 0x1fc0                                                |         r3 = BIT_MASK (r3, 0x1fc0);
    0x08000c08 bic r3, r3, 0x3f                                                  |         r3 = BIT_MASK (r3, 0x3f);
    0x08000c0c ldr r2, [r3, 4]                                                   |         r2 = *((r3 + 4));
    0x08000c10 sub r2, r2, 1                                                     |         r2--;
    0x08000c14 str r2, [r3, 4]                                                   |         *((r3 + 4)) = r2;
    0x08000c18 cmp r2, 0                                                         |         
                                                                                 |         if (r2 == 0) {
    0x08000c1c beq 0x8000cd0                                                     |             goto label_2;
                                                                                 |         }
                                                                                 | label_1:
    0x08000c20 mov r1, sp                                                        |         r1 = sp;
    0x08000c24 mov r0, r4                                                        |         r0 = r4;
    0x08000c28 stmdaeq r0, {r0, r4, r6, r7, r8, sl, fp, ip, sp, lr}              |         __asm ("stmdaeq r0, {r0, r4, r6, r7, r8, sl, fp, ip, sp, lr}");
    0x08000c2c add r0, r4, 0x120                                                 |         r0 = r4 + 0x120;
    0x08000c30 stmdaeq r0, {r0, r2, r4, r6, r7, r8, sl, fp, ip, sp, lr}          |         __asm ("stmdaeq r0, {r0, r2, r4, r6, r7, r8, sl, fp, ip, sp, lr}");
    0x08000c34 ldr r1, [r4, 0xd0]                                                |         r1 = *((r4 + 0xd0));
    0x08000c38 mov r0, r4                                                        |         r0 = r4;
    0x08000c3c bl 0x8000070                                                      |         sdma_event_disable ();
    0x08000c40 ldr r1, [r4, 0xd4]                                                |         r1 = *((r4 + 0xd4));
    0x08000c44 cmp r1, 0                                                         |         
                                                                                 |         if (r1 != 0) {
    0x08000c48 bne 0x8000cc4                                                     |             goto label_3;
                                                                                 |         }
                                                                                 | label_0:
    0x08000c4c mov r5, 0                                                         |         r5 = 0;
    0x08000c50 ldr r0, [r4, 0xc8]                                                |         r0 = *((r4 + 0xc8));
    0x08000c54 str r5, [r4, 0xd0]                                                |         *((r4 + 0xd0)) = r5;
    0x08000c58 str r5, [r4, 0xd4]                                                |         *((r4 + 0xd4)) = r5;
    0x08000c5c stmdaeq r0, {r0, r2, r4, r5, r7, r8, sl, fp, ip, sp, lr}          |         __asm ("stmdaeq r0, {r0, r2, r4, r5, r7, r8, sl, fp, ip, sp, lr}");
    0x08000c60 ldr r3, [r4, 0x88]                                                |         r3 = *((r4 + 0x88));
    0x08000c64 str r5, [r4, 0xc8]                                                |         *((r4 + 0xc8)) = r5;
    0x08000c68 add r2, r3, 0x2000                                                |         r2 = r3 + 0x2000;
    0x08000c6c ldr r2, [r2, 0xb50]                                               |         r2 = *((r2 + 0xb50));
    0x08000c70 ldrb r2, [r2, 0xf]                                                |         r2 = *((r2 + 0xf));
    0x08000c74 cmp r2, r5                                                        |         
                                                                                 |         if (r2 != r5) {
    0x08000c78 bne 0x8000c94                                                     |             goto label_4;
                                                                                 |         }
    0x08000c7c add sp, sp, 0xc                                                   |         
    0x08000c80 pop {r4, r5, pc}                                                  |         
    0x08000c84 ldr r0, [r2]                                                      |         r0 = *(r2);
    0x08000c88 mov r1, 4                                                         |         r1 = 4;
    0x08000c8c stmdaeq r0, {r0, r6, r7, r8, sl, fp, ip, sp, lr}                  |         __asm ("stmdaeq r0, {r0, r6, r7, r8, sl, fp, ip, sp, lr}");
    0x08000c90 b 0x8000b90                                                       |         
                                                                                 |     }
                                                                                 | label_4:
    0x08000c94 ldr r5, [r3]                                                      |     r5 = *(r3);
    0x08000c98 stmdaeq r0, {r0, r2, r6, r7, r8, sl, fp, ip, sp, lr}              |     __asm ("stmdaeq r0, {r0, r2, r6, r7, r8, sl, fp, ip, sp, lr}");
    0x08000c9c mov r2, r0                                                        |     r2 = r0;
    0x08000ca0 mov r3, r1                                                        |     r3 = r1;
    0x08000ca4 add r5, r5, 0x120                                                 |     r5 += 0x120;
    0x08000ca8 mov r1, 0xd                                                       |     r1 = 0xd;
    0x08000cac strd r2, r3, [r5, -8]                                             |     __asm ("strd r2, r3, [r5, -8]");
    0x08000cb0 ldr r3, [r4, 0x88]                                                |     r3 = *((r4 + 0x88));
    0x08000cb4 ldr r0, [r3]                                                      |     r0 = *(r3);
    0x08000cb8 add sp, sp, 0xc                                                   |     
    0x08000cbc pop {r4, r5, lr}                                                  |     
    0x08000cc0 stmdaeq r0, {r0, r3, r6, r7, r8, sl, fp, ip, sp, lr}              |     __asm ("stmdaeq r0, {r0, r3, r6, r7, r8, sl, fp, ip, sp, lr}");
                                                                                 | label_3:
    0x08000cc4 mov r0, r4                                                        |     r0 = r4;
    0x08000cc8 bl 0x8000070                                                      |     sdma_event_disable ();
    0x08000ccc b 0x8000c4c                                                       |     goto label_0;
                                                                                 | label_2:
    0x08000cd0 ldr r3, [r3]                                                      |     r3 = *(r3);
    0x08000cd4 tst r3, 2                                                         |     
                                                                                 |     if ((r3 & 2) == 0) {
    0x08000cd8 beq 0x8000c20                                                     |         goto label_1;
                                                                                 |     }
    0x08000cdc stmdaeq r0, {r0, r2, r4, r7, r8, sl, fp, ip, sp, lr}              |     __asm ("stmdaeq r0, {r0, r2, r4, r7, r8, sl, fp, ip, sp, lr}");
    0x08000ce0 b 0x8000c20                                                       |     goto label_1;
                                                                                 | }
    ; assembly                                                                   | /* r2dec pseudo code output */
                                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/drivers/dma/imx-sdma.ko @ 0x80015c8 */
                                                                                 | #include <stdint.h>
                                                                                 |  
    ; (fcn) sym.sdma_load_firmware ()                                            | void sdma_load_firmware (int32_t arg1, int32_t arg2) {
                                                                                 |     int32_t var_0h;
                                                                                 |     int32_t var_4h;
                                                                                 |     int32_t var_8h;
                                                                                 |     int32_t var_10h;
                                                                                 |     r0 = arg1;
                                                                                 |     r1 = arg2;
    0x080015c8 push {r4, r5, r6, lr}                                             |     
    0x080015cc mov r5, r1                                                        |     r5 = r1;
    0x080015d0 subs r4, r0, 0                                                    |     r4 = r0 - 0;
    0x080015d4 sub sp, sp, 0x10                                                  |     
                                                                                 |     if (r4 == r0) {
    0x080015d8 beq 0x800165c                                                     |         goto label_1;
                                                                                 |     }
    0x080015dc ldr r3, [r4]                                                      |     r3 = *(r4);
    0x080015e0 cmp r3, 0x1b                                                      |     
                                                                                 |     if (r3 < 0x1b) {
    0x080015e4 bls 0x8001610                                                     |         goto label_0;
                                                                                 |     }
    0x080015e8 add r6, r1, 0x2000                                                |     r6 = r1 + 0x2000;
    0x080015ec ldrb r2, [r6, 0xb70]                                              |     r2 = *((r6 + 0xb70));
    0x080015f0 cmp r2, 0                                                         |     
                                                                                 |     if (r2 != 0) {
    0x080015f4 bne 0x8001610                                                     |         goto label_0;
                                                                                 |     }
    0x080015f8 ldr r1, [r4, 4]                                                   |     r1 = *((r4 + 4));
    0x080015fc movw r2, 0x4453                                                   |     
    0x08001600 movt r2, 0x414d                                                   |     r2 = 0x414d4453;
    0x08001604 ldr r0, [r1]                                                      |     r0 = *(r1);
    0x08001608 cmp r0, r2                                                        |     
    0x0800160c beq 0x8001620                                                     |     
                                                                                 |     while (r3 <= r2) {
                                                                                 | label_0:
    0x08001610 mov r0, r4                                                        |         r0 = r4;
    0x08001614 add sp, sp, 0x10                                                  |         
    0x08001618 pop {r4, r5, r6, lr}                                              |         
    0x0800161c stmdaeq r0, {r0, r3, sb, sl, fp, ip, sp, lr}                      |         __asm ("stmdaeq r0, {r0, r3, sb, sl, fp, ip, sp, lr}");
    0x08001620 ldr r2, [r1, 0x14]                                                |         r2 = *((r1 + 0x14));
    0x08001624 ldr r0, [r1, 0x18]                                                |         r0 = *((r1 + 0x18));
    0x08001628 add r2, r2, r0                                                    |         r2 += r0;
    0x0800162c cmp r3, r2                                                        |         
    0x08001630 blo 0x8001610                                                     |         
                                                                                 |     }
    0x08001634 ldr r3, [r1, 4]                                                   |     r3 = *((r1 + 4));
    0x08001638 ldr r0, [r5]                                                      |     r0 = *(r5);
    0x0800163c sub r3, r3, 1                                                     |     r3--;
    0x08001640 cmp r3, 3                                                         |     
                                                                                 |     if (r3 > 3) {
                                                                                 |         /* switch table (4 cases) at 0x800164c */
    0x08001644 ldrls pc, [pc, r3, lsl 2]                                         |         offset_0 = r3 << 2;
                                                                                 |         pc = *((pc + offset_0));
                                                                                 |     }
    0x08001648 b 0x8001738                                                       |     goto label_2;
                                                                                 | label_1:
    0x0800165c add r4, r1, 0x2000                                                |     r4 = r1 + 0x2000;
    0x08001660 ldr r3, [r1]                                                      |     r3 = *(r1);
    0x08001664 ldr r2, [r4, 0xb74]                                               |     r2 = *((r4 + 0xb74));
    0x08001668 cmp r2, 0                                                         |     
                                                                                 |     if (r2 == 0) {
    0x0800166c bne 0x80016b0                                                     |         
    0x08001670 ldr r2, [r4, 0xa48]                                               |         r2 = *((r4 + 0xa48));
    0x08001674 mov r0, 0xcc0                                                     |         r0 = 0xcc0;
    0x08001678 str r5, [sp, 4]                                                   |         var_4h = r5;
    0x0800167c stmdaeq r0, {r3, r6, r7, r8, sl, ip}                              |         __asm ("stmdaeq r0, {r3, r6, r7, r8, sl, ip}");
    0x08001680 stmdaeq r0, {r3, r6, r7, r8, sl, ip}                              |         __asm ("stmdaeq r0, {r3, r6, r7, r8, sl, ip}");
    0x08001684 str r0, [sp]                                                      |         *(sp) = r0;
    0x08001688 str r1, [sp, 8]                                                   |         var_8h = r1;
    0x0800168c stmdaeq r0, {r6, r7, sb, sl, fp, lr}                              |         __asm ("stmdaeq r0, {r6, r7, sb, sl, fp, lr}");
    0x08001690 stmdaeq r0, {r6, r7, sb, sl, fp, lr}                              |         __asm ("stmdaeq r0, {r6, r7, sb, sl, fp, lr}");
    0x08001694 mov r1, 1                                                         |         r1 = 1;
    0x08001698 stmdaeq r0, {r0, r2, r3, sb, sl, fp, ip, sp, lr}                  |         __asm ("stmdaeq r0, {r0, r2, r3, sb, sl, fp, ip, sp, lr}");
    0x0800169c ldr r3, [r4, 0xb74]                                               |         r3 = *((r4 + 0xb74));
    0x080016a0 add r3, r3, 1                                                     |         r3++;
    0x080016a4 str r3, [r4, 0xb74]                                               |         *((r4 + 0xb74)) = r3;
    0x080016a8 add sp, sp, 0x10                                                  |         
    0x080016ac pop {r4, r5, r6, pc}                                              |         
                                                                                 |     }
    0x080016b0 mov r0, r3                                                        |     r0 = r3;
    0x080016b4 stmdaeq r0, {r4, r6, r8, sb, sl, ip, sp}                          |     __asm ("stmdaeq r0, {r4, r6, r8, sb, sl, ip, sp}");
    0x080016b8 stmdaeq r0, {r4, r6, r8, sb, sl, ip, sp}                          |     __asm ("stmdaeq r0, {r4, r6, r8, sb, sl, ip, sp}");
    0x080016bc add sp, sp, 0x10                                                  |     
    0x080016c0 pop {r4, r5, r6, lr}                                              |     
    0x080016c4 stmdaeq r0, {r0, r2, r5, r7, r8, sl, fp, ip, sp, lr}              |     __asm ("stmdaeq r0, {r0, r2, r5, r7, r8, sl, fp, ip, sp, lr}");
    0x080016c8 mov r3, 0x30                                                      |     r3 = 0x30;
    0x080016cc str r3, [r6, 0xb48]                                               |     *((r6 + 0xb48)) = r3;
    0x080016d0 stmdaeq r0, {r5, r7, r8, sb, sl, ip, sp}                          |     __asm ("stmdaeq r0, {r5, r7, r8, sb, sl, ip, sp}");
    0x080016d4 stmdaeq r0, {r5, r7, r8, sb, sl, ip, sp}                          |     __asm ("stmdaeq r0, {r5, r7, r8, sb, sl, ip, sp}");
    0x080016d8 stmdaeq r0, {r0, r2, r5, r7, r8, sl, fp, ip, sp, lr}              |     __asm ("stmdaeq r0, {r0, r2, r5, r7, r8, sl, fp, ip, sp, lr}");
    0x080016dc ldr r3, [r6, 0xb78]                                               |     r3 = *((r6 + 0xb78));
    0x080016e0 cmp r3, 0                                                         |     
                                                                                 |     if (r3 != 0) {
    0x080016e4 bne 0x8001610                                                     |         goto label_0;
                                                                                 |     }
    0x080016e8 ldr r0, [r4]                                                      |     r0 = *(r4);
    0x080016ec mov r1, 0xcc0                                                     |     r1 = 0xcc0;
    0x080016f0 stmdaeq r0, {r0, r4, sb, sl, fp, ip, sp, lr}                      |     __asm ("stmdaeq r0, {r0, r4, sb, sl, fp, ip, sp, lr}");
    0x080016f4 cmp r0, 0                                                         |     
    0x080016f8 str r0, [r6, 0xb78]                                               |     *((r6 + 0xb78)) = r0;
                                                                                 |     if (r0 == 0) {
    0x080016fc beq 0x8001610                                                     |         goto label_0;
                                                                                 |     }
    0x08001700 ldr r2, [r4]                                                      |     r2 = *(r4);
    0x08001704 ldr r1, [r4, 4]                                                   |     r1 = *((r4 + 4));
    0x08001708 stmdaeq r0, {r0, r2, r3, r4, r7, r8, sl, fp, ip, sp, lr}          |     __asm ("stmdaeq r0, {r0, r2, r3, r4, r7, r8, sl, fp, ip, sp, lr}");
    0x0800170c ldr r3, [r6, 0xb50]                                               |     r3 = *((r6 + 0xb50));
    0x08001710 ldrb r3, [r3, 0xf]                                                |     r3 = *((r3 + 0xf));
    0x08001714 cmp r3, 0                                                         |     
                                                                                 |     if (r3 != 0) {
    0x08001718 bne 0x8001610                                                     |         goto label_0;
                                                                                 |     }
    0x0800171c ldr r0, [r5]                                                      |     r0 = *(r5);
    0x08001720 bl 0x80013a0                                                      |     sdma_runtime_resume ();
    0x08001724 b 0x8001610                                                       |     goto label_0;
                                                                                 | label_2:
    0x08001738 stmdaeq r0, {r2, r7, r8, sb, sl, ip, sp}                          |     __asm ("stmdaeq r0, {r2, r7, r8, sb, sl, ip, sp}");
    0x0800173c stmdaeq r0, {r2, r7, r8, sb, sl, ip, sp}                          |     __asm ("stmdaeq r0, {r2, r7, r8, sb, sl, ip, sp}");
    0x08001740 stmdaeq r0, {r0, r2, r7, r8, sl, fp, ip, sp, lr}                  |     __asm ("stmdaeq r0, {r0, r2, r7, r8, sl, fp, ip, sp, lr}");
    0x08001744 b 0x8001610                                                       |     goto label_0;
                                                                                 | }
    ; 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/drivers/dma/imx-sdma.ko @ 0x8002550 */
                                                                                 | #include <stdint.h>
                                                                                 |  
                                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                                 |  
    ; (fcn) sym.sdma_prep_slave_sg ()                                            | void sdma_prep_slave_sg (int32_t arg_38h, int32_t arg1, int32_t arg2) {
                                                                                 |     int32_t var_0h;
                                                                                 |     int32_t var_ch;
                                                                                 |     int32_t var_14h;
                                                                                 |     r0 = arg1;
                                                                                 |     r1 = arg2;
    0x08002550 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                         |     
    0x08002554 mov r5, r3                                                        |     r5 = r3;
    0x08002558 mov r6, r0                                                        |     r6 = r0;
    0x0800255c ldr sl, [r0, 0x88]                                                |     sl = *(arg_38hx88);
    0x08002560 sub sp, sp, 0x14                                                  |     
    0x08002564 ldr r3, [r0, 0x8c]                                                |     r3 = *(arg_38hx8c);
    0x08002568 mov r4, r1                                                        |     r4 = r1;
    0x0800256c add sb, sl, 0x2000                                                |     sb = sl + 0x2000;
    0x08002570 mov r7, r2                                                        |     r7 = r2;
    0x08002574 str r3, [sp, 0xc]                                                 |     var_ch = r3;
    0x08002578 ldr r3, [sb, 0xb50]                                               |     r3 = *((sb + 0xb50));
    0x0800257c ldrb r3, [r3, 0xf]                                                |     r3 = *((r3 + 0xf));
    0x08002580 cmp r3, 0                                                         |     
    0x08002584 bne 0x800278c                                                     |     
                                                                                 |     while (1) {
    0x08002588 mov r2, r5                                                        |         r2 = r5;
    0x0800258c add r1, r6, 0x94                                                  |         r1 = r6 + 0x94;
    0x08002590 mov r0, r6                                                        |         r0 = r6;
    0x08002594 bl 0x8001e80                                                      |         sdma_config_write ();
    0x08002598 mov r1, r5                                                        |         r1 = r5;
    0x0800259c mov r2, r7                                                        |         r2 = r7;
    0x080025a0 mov r0, r6                                                        |         r0 = r6;
    0x080025a4 bl 0x8001750                                                      |         r0 = sdma_transfer_init ();
    0x080025a8 subs r5, r0, 0                                                    |         r5 = r0 - 0;
                                                                                 |         if (r5 != r0) {
    0x080025ac beq 0x800275c                                                     |             
    0x080025b0 cmp r7, 0                                                         |             
                                                                                 |             if (r7 == 0) {
    0x080025b4 movne fp, 0                                                       |                 
                                                                                 |             }
                                                                                 |             if (r7 == 0) {
    0x080025b8 movne r8, 0xc                                                     |                 r8 = 0xc;
                                                                                 |             }
                                                                                 |             if (r7 != 0) {
    0x080025bc beq 0x8002660                                                     |                 
    0x080025c0 ldr r0, [r5, 0x60]                                                |                 r0 = *((r5 + 0x60));
    0x080025c4 mul r1, r8, fp                                                    |                 r1 = r8 * fp;
    0x080025c8 ldr r3, [r4, 0xc]                                                 |                 r3 = *((r4 + 0xc));
    0x080025cc add ip, r0, r1                                                    |                 
    0x080025d0 str r3, [ip, 4]                                                   |                 *((ip + 4)) = r3;
    0x080025d4 ldr r3, [r4, 8]                                                   |                 r3 = *((r4 + 8));
    0x080025d8 cmp r3, 0x10000                                                   |                 
                                                                                 |                 if (r3 >= 0x10000) {
    0x080025dc bge 0x80027d4                                                     |                     goto label_3;
                                                                                 |                 }
    0x080025e0 strh r3, [r0, r1]                                                 |                 *((r0 + r1)) = r3;
    0x080025e4 ldr r1, [r5, 0x58]                                                |                 r1 = *((r5 + 0x58));
    0x080025e8 add r1, r1, r3                                                    |                 r1 += r3;
    0x080025ec str r1, [r5, 0x58]                                                |                 *((r5 + 0x58)) = r1;
    0x080025f0 ldr r1, [r6, 0xd8]                                                |                 r1 = *((r6 + 0xd8));
    0x080025f4 sub r0, r1, 1                                                     |                 r0 = r1 - 1;
    0x080025f8 cmp r1, 4                                                         |                 
                                                                                 |                 if (r1 > 4) {
    0x080025fc bhi 0x800274c                                                     |                     goto label_2;
                                                                                 |                 }
    0x08002600 cmp r0, 3                                                         |                 
                                                                                 |                 if (r0 > 3) {
                                                                                 |                     /* switch table (4 cases) at 0x800260c */
    0x08002604 ldrls pc, [pc, r0, lsl 2]                                         |                     offset_0 = r0 << 2;
                                                                                 |                     pc = *((pc + offset_0));
                                                                                 |                 }
    0x08002608 b 0x800274c                                                       |                 
                                                                                 |             } else {
    0x08002660 ldr r3, [r6, 0x88]                                                |                 r3 = *((r6 + 0x88));
    0x08002664 add r2, r3, 0x2000                                                |                 r2 = r3 + 0x2000;
    0x08002668 ldr r2, [r2, 0xb50]                                               |                 r2 = *((r2 + 0xb50));
    0x0800266c ldrb r2, [r2, 0xf]                                                |                 r2 = *((r2 + 0xf));
    0x08002670 cmp r2, 0                                                         |                 
                                                                                 |                 if (r2 != 0) {
    0x08002674 bne 0x80027b0                                                     |                     goto label_4;
                                                                                 |                 }
                                                                                 | label_1:
    0x08002678 mov r0, r5                                                        |                 r0 = r5;
    0x0800267c mov r1, r6                                                        |                 r1 = r6;
    0x08002680 str r5, [sp, 0xc]                                                 |                 var_ch = r5;
    0x08002684 stmdaeq r0, {r0, r4, r5, sb, sl, fp, ip, sp, lr}                  |                 __asm ("stmdaeq r0, {r0, r4, r5, sb, sl, fp, ip, sp, lr}");
    0x08002688 ldr r0, [sp, 0xc]                                                 |                 r0 = var_ch;
    0x0800268c mov r1, 0                                                         |                 r1 = 0;
    0x08002690 ldr r3, [sp, 0x38]                                                |                 r3 = *(arg_38h);
    0x08002694 stmdaeq r0, {r0, r2, r4, r5, sb, sl, fp, ip, sp, lr}              |                 __asm ("stmdaeq r0, {r0, r2, r4, r5, sb, sl, fp, ip, sp, lr}");
    0x08002698 stmdaeq r0, {r0, r2, r4, r5, sb, sl, fp, ip, sp, lr}              |                 __asm ("stmdaeq r0, {r0, r2, r4, r5, sb, sl, fp, ip, sp, lr}");
    0x0800269c str r3, [r0, 4]                                                   |                 *((r0 + 4)) = r3;
    0x080026a0 stmdaeq r0, {r0, r3, r4, r5, sb, sl, fp, ip, sp, lr}              |                 __asm ("stmdaeq r0, {r0, r3, r4, r5, sb, sl, fp, ip, sp, lr}");
    0x080026a4 stmdaeq r0, {r0, r3, r4, r5, sb, sl, fp, ip, sp, lr}              |                 __asm ("stmdaeq r0, {r0, r3, r4, r5, sb, sl, fp, ip, sp, lr}");
    0x080026a8 str r1, [r0, 0x30]                                                |                 *((r0 + 0x30)) = r1;
    0x080026ac strd r2, r3, [r0, 0x10]                                           |                 __asm ("strd r2, r3, [r0, 0x10]");
    0x080026b0 str r1, [r0, 0x34]                                                |                 *((r0 + 0x34)) = r1;
    0x080026b4 mrs ip, apsr                                                      |                 ip = apsr;
    0x080026b8 cpsid i                                                           |                 __asm ("cpsid i");
    0x080026bc mov r3, sp                                                        |                 r3 = sp;
    0x080026c0 bic r3, r3, 0x1fc0                                                |                 r3 = BIT_MASK (r3, 0x1fc0);
    0x080026c4 bic r3, r3, 0x3f                                                  |                 r3 = BIT_MASK (r3, 0x3f);
    0x080026c8 ldr r2, [r3, 4]                                                   |                 r2 = *((r3 + 4));
    0x080026cc add r2, r2, 1                                                     |                 r2++;
    0x080026d0 str r2, [r3, 4]                                                   |                 *((r3 + 4)) = r2;
    0x080026d4 ldr r2, [r6, 0x5c]                                                |                 r2 = *((r6 + 0x5c));
    0x080026d8 add r1, r0, 0x38                                                  |                 r1 = r0 + 0x38;
    0x080026dc add r6, r6, 0x58                                                  |                 r6 += 0x58;
    0x080026e0 str r1, [r6, 4]                                                   |                 *((r6 + 4)) = r1;
    0x080026e4 str r6, [r0, 0x38]                                                |                 *((r0 + 0x38)) = r6;
    0x080026e8 str r2, [r0, 0x3c]                                                |                 *((r0 + 0x3c)) = r2;
    0x080026ec str r1, [r2]                                                      |                 *(r2) = r1;
    0x080026f0 msr cpsr_c, ip                                                    |                 cpsr_c = ip;
    0x080026f4 ldr r2, [r3, 4]                                                   |                 r2 = *((r3 + 4));
    0x080026f8 sub r2, r2, 1                                                     |                 r2--;
    0x080026fc str r2, [r3, 4]                                                   |                 *((r3 + 4)) = r2;
    0x08002700 cmp r2, 0                                                         |                 
                                                                                 |                 if (r2 != 0) {
    0x08002704 bne 0x8002778                                                     |                     goto label_5;
                                                                                 |                 }
    0x08002708 ldr r3, [r3]                                                      |                 r3 = *(r3);
    0x0800270c tst r3, 2                                                         |                 
                                                                                 |                 if ((r3 & 2) == 0) {
    0x08002710 beq 0x8002778                                                     |                     goto label_5;
                                                                                 |                 }
    0x08002714 str r0, [sp, 0xc]                                                 |                 var_ch = r0;
    0x08002718 stmdaeq r0, {r0, r2, r4, r7, r8, sl, fp, ip, sp, lr}              |                 __asm ("stmdaeq r0, {r0, r2, r4, r7, r8, sl, fp, ip, sp, lr}");
    0x0800271c ldr r0, [sp, 0xc]                                                 |                 r0 = var_ch;
    0x08002720 b 0x8002778                                                       |                 goto label_5;
                                                                                 |             }
                                                                                 | label_2:
    0x0800274c mov r0, r5                                                        |             r0 = r5;
    0x08002750 bl 0x800087c                                                      |             sdma_free_bd ();
    0x08002754 mov r0, r5                                                        |             r0 = r5;
    0x08002758 stmdaeq r0, {r0, r2, r4, r5, r7, r8, sl, fp, ip, sp, lr}          |             __asm ("stmdaeq r0, {r0, r2, r4, r5, r7, r8, sl, fp, ip, sp, lr}");
                                                                                 |         }
    0x0800275c mov r3, 3                                                         |         r3 = 3;
    0x08002760 str r3, [r6, 0x10c]                                               |         *((r6 + 0x10c)) = r3;
    0x08002764 ldr r3, [sb, 0xb50]                                               |         r3 = *((sb + 0xb50));
    0x08002768 ldrb r3, [r3, 0xf]                                                |         r3 = *((r3 + 0xf));
    0x0800276c cmp r3, 0                                                         |         
                                                                                 |         if (r3 != 0) {
    0x08002770 bne 0x800279c                                                     |             goto label_6;
                                                                                 |         }
                                                                                 | label_0:
    0x08002774 mov r0, 0                                                         |         r0 = 0;
                                                                                 | label_5:
    0x08002778 add sp, sp, 0x14                                                  |         
    0x0800277c pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                          |         
    0x0800278c ldr r0, [sl]                                                      |         r0 = *(sl);
    0x08002790 mov r1, 4                                                         |         r1 = 4;
    0x08002794 stmdaeq r0, {r0, r6, r7, r8, sl, fp, ip, sp, lr}                  |         __asm ("stmdaeq r0, {r0, r6, r7, r8, sl, fp, ip, sp, lr}");
    0x08002798 b 0x8002588                                                       |         
                                                                                 |     }
                                                                                 | label_6:
    0x0800279c ldr r3, [r6, 0x88]                                                |     r3 = *((r6 + 0x88));
    0x080027a0 mov r1, 4                                                         |     r1 = 4;
    0x080027a4 ldr r0, [r3]                                                      |     r0 = *(r3);
    0x080027a8 stmdaeq r0, {r0, r3, r6, r7, r8, sl, fp, ip, sp, lr}              |     __asm ("stmdaeq r0, {r0, r3, r6, r7, r8, sl, fp, ip, sp, lr}");
    0x080027ac b 0x8002774                                                       |     goto label_0;
                                                                                 | label_4:
    0x080027b0 ldr r4, [r3]                                                      |     r4 = *(r3);
    0x080027b4 stmdaeq r0, {r0, r2, r6, r7, r8, sl, fp, ip, sp, lr}              |     __asm ("stmdaeq r0, {r0, r2, r6, r7, r8, sl, fp, ip, sp, lr}");
    0x080027b8 add r4, r4, 0x120                                                 |     r4 += 0x120;
    0x080027bc strd r0, r1, [r4, -8]                                             |     __asm ("strd r0, r1, [r4, -8]");
    0x080027c0 mov r1, 0xd                                                       |     r1 = 0xd;
    0x080027c4 ldr r3, [r6, 0x88]                                                |     r3 = *((r6 + 0x88));
    0x080027c8 ldr r0, [r3]                                                      |     r0 = *(r3);
    0x080027cc stmdaeq r0, {r0, r3, r6, r7, r8, sl, fp, ip, sp, lr}              |     __asm ("stmdaeq r0, {r0, r3, r6, r7, r8, sl, fp, ip, sp, lr}");
    0x080027d0 b 0x8002678                                                       |     goto label_1;
                                                                                 | label_3:
    0x080027d4 movw r1, 0xffff                                                   |     r1 = 0xffff;
    0x080027d8 str r1, [sp]                                                      |     *(sp) = r1;
    0x080027dc ldr r2, [sp, 0xc]                                                 |     r2 = var_ch;
    0x080027e0 stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, sp}                  |     __asm ("stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, sp}");
    0x080027e4 stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, sp}                  |     __asm ("stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, sp}");
    0x080027e8 ldr r0, [sl]                                                      |     r0 = *(sl);
    0x080027ec stmdaeq r0, {r0, r2, r7, r8, sl, fp, ip, sp, lr}                  |     __asm ("stmdaeq r0, {r0, r2, r7, r8, sl, fp, ip, sp, lr}");
    0x080027f0 b 0x800274c                                                       |     goto label_2;
                                                                                 | }

[*] Function fprintf used 1 times imx-sdma.ko