[*] Binary protection state of cifs.ko

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


[*] Function fprintf tear down of cifs.ko

    ; assembly                                                                   | /* r2dec pseudo code output */
                                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/cifs/cifs.ko @ 0x802e358 */
                                                                                 | #include <stdint.h>
                                                                                 |  
    ; (fcn) sym.CIFS_SessSetup ()                                                | void CIFS_SessSetup (int32_t arg1, int32_t arg2) {
                                                                                 |     int32_t var_0h;
                                                                                 |     int32_t var_8h;
                                                                                 |     r0 = arg1;
                                                                                 |     r1 = arg2;
    0x0802e358 push {r4, r5, r6, r7, r8, lr}                                     |     
    0x0802e35c subs r5, r1, 0                                                    |     r5 = r1 - 0;
    0x0802e360 sub sp, sp, 8                                                     |     
                                                                                 |     if (r5 == r1) {
    0x0802e364 beq 0x802e480                                                     |         goto label_3;
                                                                                 |     }
    0x0802e368 stmdaeq sb, {r0, r2, r3, r4, r5, r6, r7, sb, fp, sp, pc}          |     __asm ("stmdaeq sb, {r0, r2, r3, r4, r5, r6, r7, sb, fp, sp, pc}");
    0x0802e36c stmdaeq sb, {r0, r2, r3, r4, r5, r6, r7, sb, fp, sp, pc}          |     __asm ("stmdaeq sb, {r0, r2, r3, r4, r5, r6, r7, sb, fp, sp, pc}");
    0x0802e370 mov r8, r0                                                        |     r8 = r0;
    0x0802e374 mov r1, 0xdc0                                                     |     r1 = 0xdc0;
    0x0802e378 mov r7, r2                                                        |     r7 = r2;
    0x0802e37c ldr r0, [r3, 0x18]                                                |     r0 = *((r3 + 0x18));
    0x0802e380 stmdaeq sb, {r0, r2, r4, r5, r7, sb, fp, sp, pc}                  |     __asm ("stmdaeq sb, {r0, r2, r4, r5, r7, sb, fp, sp, pc}");
    0x0802e384 subs r4, r0, 0                                                    |     r4 = r0 - 0;
                                                                                 |     if (r4 == r0) {
    0x0802e388 beq 0x802e44c                                                     |         goto label_4;
                                                                                 |     }
    0x0802e38c ldr r1, [r5, 0xc0]                                                |     r1 = *((r5 + 0xc0));
    0x0802e390 ldr r0, [r5, 0x20]                                                |     r0 = *((r5 + 0x20));
    0x0802e394 stmdaeq r2, {r2, r3, r5, r6, sb, sp, lr, pc}                      |     __asm ("stmdaeq r2, {r2, r3, r5, r6, sb, sp, lr, pc}");
    0x0802e398 subs r6, r0, 0                                                    |     r6 = r0 - 0;
                                                                                 |     if (r6 == r0) {
    0x0802e39c beq 0x802e454                                                     |         goto label_5;
                                                                                 |     }
    0x0802e3a0 sub r3, r6, 1                                                     |     r3 = r6 - 1;
    0x0802e3a4 cmp r3, 4                                                         |     
                                                                                 |     if (r3 > 4) {
                                                                                 |         /* switch table (5 cases) at 0x802e3b0 */
    0x0802e3a8 ldrls pc, [pc, r3, lsl 2]                                         |         offset_0 = r3 << 2;
                                                                                 |         pc = *((pc + offset_0));
                                                                                 |     }
    0x0802e3ac b 0x802e4c0                                                       |     goto label_6;
                                                                                 |     do {
                                                                                 | label_1:
    0x0802e3fc mov r0, r4                                                        |         r0 = r4;
    0x0802e400 stmdaeq sb, {r0, r2, r8, sb, fp, sp, pc}                          |         __asm ("stmdaeq sb, {r0, r2, r8, sb, fp, sp, pc}");
                                                                                 | label_0:
    0x0802e404 mov r0, r5                                                        |         r0 = r5;
    0x0802e408 add sp, sp, 8                                                     |         
    0x0802e40c pop {r4, r5, r6, r7, r8, pc}                                      |         
                                                                                 | label_2:
    0x0802e444 mvn r5, 0x25                                                      |         r5 = ~0x25;
    0x0802e448 b 0x802e3fc                                                       |         
                                                                                 |     } while (1);
                                                                                 | label_4:
    0x0802e44c mvn r5, 0xb                                                       |     r5 = ~0xb;
    0x0802e450 b 0x802e404                                                       |     goto label_0;
                                                                                 | label_5:
    0x0802e454 ldr r1, [pc, 0x90]                                                |     r1 = *(0x802e4e8);
    0x0802e458 ldr r0, [pc, 0x94]                                                |     r0 = .data;
    0x0802e45c stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}                  |     __asm ("stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}");
    0x0802e460 cmp r0, 0                                                         |     
                                                                                 |     if (r0 == 0) {
    0x0802e464 mvneq r5, 0x15                                                    |         r5 = ~0x15;
                                                                                 |         goto label_7;
                                                                                 |     }
                                                                                 |     if (r0 == 0) {
                                                                                 | label_7:
    0x0802e468 beq 0x802e3fc                                                     |         goto label_1;
                                                                                 |     }
    0x0802e46c stmdaeq r5, {r2, r5, sp, pc}                                      |     __asm ("stmdaeq r5, {r2, r5, sp, pc}");
    0x0802e470 stmdaeq r5, {r2, r5, sp, pc}                                      |     __asm ("stmdaeq r5, {r2, r5, sp, pc}");
    0x0802e474 mvn r5, 0x15                                                      |     r5 = ~0x15;
    0x0802e478 stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}                      |     __asm ("stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}");
    0x0802e47c b 0x802e3fc                                                       |     goto label_1;
                                                                                 | label_3:
    0x0802e480 ldr r2, [pc, 0x70]                                                |     r2 = .data;
    0x0802e484 stmdaeq r5, {r4, sp, pc}                                          |     __asm ("stmdaeq r5, {r4, sp, pc}");
    0x0802e488 stmdaeq r5, {r4, sp, pc}                                          |     __asm ("stmdaeq r5, {r4, sp, pc}");
    0x0802e48c str r2, [sp]                                                      |     *(sp) = r2;
    0x0802e490 movw r1, 0x6ca                                                    |     r1 = 0x6ca;
    0x0802e494 mov r2, 9                                                         |     r2 = 9;
    0x0802e498 stmdaeq r5, {r2, r3, r4, r5, r6, r7, sl, fp, ip, pc}              |     __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, r7, sl, fp, ip, pc}");
    0x0802e49c stmdaeq r5, {r2, r3, r4, r5, r6, r7, sl, fp, ip, pc}              |     __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, r7, sl, fp, ip, pc}");
    0x0802e4a0 mvn r5, 0x15                                                      |     r5 = ~0x15;
    0x0802e4a4 stmdaeq sb, {r0, r2, r3, r7, r8, sb, fp, sp, pc}                  |     __asm ("stmdaeq sb, {r0, r2, r3, r7, r8, sb, fp, sp, pc}");
    0x0802e4a8 b 0x802e404                                                       |     goto label_0;
                                                                                 | label_6:
    0x0802e4c0 ldr r1, [pc, 0x24]                                                |     r1 = *(0x802e4e8);
    0x0802e4c4 ldr r0, [pc, 0x30]                                                |     r0 = "cifs_remap_file_range";
    0x0802e4c8 stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}                  |     __asm ("stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}");
    0x0802e4cc cmp r0, 0                                                         |     
                                                                                 |     if (r0 == 0) {
    0x0802e4d0 beq 0x802e444                                                     |         goto label_2;
                                                                                 |     }
    0x0802e4d4 mov r1, r6                                                        |     r1 = r6;
    0x0802e4d8 stmdaeq r5, {r3, r5, r7, sp, pc}                                  |     __asm ("stmdaeq r5, {r3, r5, r7, sp, pc}");
    0x0802e4dc stmdaeq r5, {r3, r5, r7, sp, pc}                                  |     __asm ("stmdaeq r5, {r3, r5, r7, sp, pc}");
    0x0802e4e0 mvn r5, 0x25                                                      |     r5 = ~0x25;
    0x0802e4e4 stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}                      |     __asm ("stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}");
    0x0802e4e8 b 0x802e3fc                                                       |     goto label_1;
                                                                                 | }
    ; assembly                                                                   | /* r2dec pseudo code output */
                                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/cifs/cifs.ko @ 0x8028b88 */
                                                                                 | #include <stdint.h>
                                                                                 |  
    ; (fcn) sym.cifsConvertToUTF16.part.0 ()                                     | void cifsConvertToUTF16_part_0 (int32_t arg_ch, int32_t arg_48h, int32_t arg1, int32_t arg2) {
                                                                                 |     int32_t var_0h;
                                                                                 |     int32_t var_ch;
                                                                                 |     int32_t var_10h;
                                                                                 |     int32_t var_14h;
                                                                                 |     int32_t var_1ah;
                                                                                 |     int32_t var_1ch;
                                                                                 |     int32_t var_24h;
                                                                                 |     r0 = arg1;
                                                                                 |     r1 = arg2;
    0x08028b88 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                         |     
    0x08028b8c mov fp, r3                                                        |     
    0x08028b90 stmdaeq sb, {r0, r2, r3, r4, r5, r6, r7, sb, fp, sp, pc}          |     __asm ("stmdaeq sb, {r0, r2, r3, r4, r5, r6, r7, sb, fp, sp, pc}");
    0x08028b94 stmdaeq sb, {r0, r2, r3, r4, r5, r6, r7, sb, fp, sp, pc}          |     __asm ("stmdaeq sb, {r0, r2, r3, r4, r5, r6, r7, sb, fp, sp, pc}");
    0x08028b98 sub sp, sp, 0x24                                                  |     
    0x08028b9c mov r7, r2                                                        |     r7 = r2;
    0x08028ba0 mov sl, r0                                                        |     sl = r0;
    0x08028ba4 mov r6, r1                                                        |     r6 = r1;
    0x08028ba8 mov r1, 0xdc0                                                     |     r1 = 0xdc0;
    0x08028bac ldr r0, [r3, 0x18]                                                |     r0 = *((r3 + 0x18));
    0x08028bb0 mov r5, 0                                                         |     r5 = 0;
    0x08028bb4 ldr sb, [sp, 0x48]                                                |     sb = *(arg_48h);
    0x08028bb8 stmdaeq sb, {r0, r2, r4, r5, r7, sb, fp, sp, pc}                  |     __asm ("stmdaeq sb, {r0, r2, r4, r5, r7, sb, fp, sp, pc}");
    0x08028bbc cmp r7, 0                                                         |     
    0x08028bc0 str r0, [sp, 0xc]                                                 |     var_ch = r0;
                                                                                 |     if (r7 <= 0) {
    0x08028bc4 ble 0x8028dd4                                                     |         goto label_4;
                                                                                 |     }
    0x08028bc8 stmdaeq r5, {r3, r5, r6, sb, fp, ip, lr}                          |     __asm ("stmdaeq r5, {r3, r5, r6, sb, fp, ip, lr}");
    0x08028bcc stmdaeq r5, {r3, r5, r6, sb, fp, ip, lr}                          |     __asm ("stmdaeq r5, {r3, r5, r6, sb, fp, ip, lr}");
    0x08028bd0 mov r4, r5                                                        |     r4 = r5;
    0x08028bd4 str r3, [sp, 0x10]                                                |     var_10h = r3;
    0x08028bd8 b 0x8028c58                                                       |     
                                                                                 |     while (sb != 2) {
    0x08028bdc cmp sb, 1                                                         |         
                                                                                 |         if (sb == 1) {
    0x08028be0 beq 0x8028cfc                                                     |             goto label_5;
                                                                                 |         }
                                                                                 | label_0:
    0x08028be4 ldr r3, [fp, 0xc]                                                 |         r3 = *(arg_ch);
    0x08028be8 add r2, sp, 0x1a                                                  |         r2 += var_1ah;
    0x08028bec sub r1, r7, r4                                                    |         r1 = r7 - r4;
    0x08028bf0 mov r0, r8                                                        |         r0 = r8;
    0x08028bf4 blx r3                                                            |         uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x08028bf8 ldrh r3, [sp, 0x1a]                                               |         r3 = var_1ah;
    0x08028bfc cmp r0, 0                                                         |         
                                                                                 |         if (r0 <= 0) {
    0x08028c00 bgt 0x8028c40                                                     |             
    0x08028c04 ldr r0, [fp]                                                      |             r0 = *(fp);
    0x08028c08 ldr r1, [sp, 0x10]                                                |             r1 = var_10h;
    0x08028c0c stmdaeq sb, {r0, r2, r3, r4, r5, r6, sl, fp, sp, pc}              |             __asm ("stmdaeq sb, {r0, r2, r3, r4, r5, r6, sl, fp, sp, pc}");
    0x08028c10 subs r0, r0, 0                                                    |             
    0x08028c14 ldr r3, [sp, 0xc]                                                 |             r3 = var_ch;
                                                                                 |             if (r0 == r0) {
    0x08028c18 movne r0, 1                                                       |                 r0 = 1;
                                                                                 |             }
    0x08028c1c cmp r3, 0                                                         |             
                                                                                 |             if (r3 != 0) {
    0x08028c20 orreq r0, r0, 1                                                   |                 r0 |= 1;
                                                                                 |             }
    0x08028c24 cmp r0, 0                                                         |             
                                                                                 |             if (r0 == 0) {
    0x08028c28 bne 0x8028c38                                                     |                 
    0x08028c2c ldrsb r3, [r8]                                                    |                 r3 = *(r8);
    0x08028c30 cmp r3, 0                                                         |                 
                                                                                 |                 if (r3 < 0) {
    0x08028c34 blt 0x8028df4                                                     |                     goto label_6;
                                                                                 |                 }
                                                                                 |             }
                                                                                 | label_2:
    0x08028c38 mov r3, 0x3f                                                      |             r3 = 0x3f;
    0x08028c3c mov r0, 1                                                         |             r0 = 1;
                                                                                 |         }
                                                                                 | label_1:
    0x08028c40 lsl r2, r5, 1                                                     |         r2 = r5 << 1;
    0x08028c44 add r4, r4, r0                                                    |         r4 += r0;
    0x08028c48 strh r3, [sl, r2]                                                 |         *((sl + r2)) = r3;
                                                                                 | label_3:
    0x08028c4c add r5, r5, 1                                                     |         r5++;
    0x08028c50 cmp r7, r4                                                        |         
                                                                                 |         if (r7 <= r4) {
    0x08028c54 ble 0x8028dd0                                                     |             goto label_7;
                                                                                 |         }
    0x08028c58 ldrb r3, [r6, r4]                                                 |         r3 = *((r6 + r4));
    0x08028c5c add r8, r6, r4                                                    |         r8 = r6 + r4;
    0x08028c60 cmp r3, 0                                                         |         
                                                                                 |         if (r3 == 0) {
    0x08028c64 beq 0x8028dd0                                                     |             goto label_7;
                                                                                 |         }
    0x08028c68 cmp sb, 2                                                         |         
    0x08028c6c bne 0x8028bdc                                                     |         
                                                                                 |     }
    0x08028c70 cmp r3, 0x3f                                                      |     
                                                                                 |     if (r3 > 0x3f) {
    0x08028c74 bhi 0x8028ce8                                                     |         goto label_8;
                                                                                 |     }
    0x08028c78 cmp r3, 0x29                                                      |     
                                                                                 |     if (r3 < 0x29) {
    0x08028c7c bls 0x8028be4                                                     |         goto label_0;
                                                                                 |     }
    0x08028c80 sub r3, r3, 0x2a                                                  |     r3 -= 0x2a;
    0x08028c84 cmp r3, 0x15                                                      |     
                                                                                 |     if (r3 > 0x15) {
                                                                                 |         /* switch table (22 cases) at 0x8028c90 */
    0x08028c88 ldrls pc, [pc, r3, lsl 2]                                         |         offset_0 = r3 << 2;
                                                                                 |         pc = *((pc + offset_0));
                                                                                 |     }
    0x08028c8c b 0x8028be4                                                       |     goto label_0;
                                                                                 | label_8:
    0x08028ce8 cmp r3, 0x7c                                                      |     
    0x08028cec movweq r3, 0xf07c                                                 |     __asm ("movweq r3, 0xf07c");
                                                                                 |     if (r3 == 0x7c) {
    0x08028cf0 moveq r0, 1                                                       |         r0 = 1;
                                                                                 |         goto label_9;
                                                                                 |     }
                                                                                 |     if (r3 == 0x7c) {
                                                                                 | label_9:
    0x08028cf4 beq 0x8028c40                                                     |         goto label_1;
                                                                                 |     }
    0x08028cf8 b 0x8028be4                                                       |     goto label_0;
                                                                                 | label_5:
    0x08028cfc sub r2, r7, 1                                                     |     r2 = r7 - 1;
    0x08028d00 cmp r2, r4                                                        |     
                                                                                 |     if (r2 != r4) {
    0x08028d04 moveq r2, sb                                                      |         r2 = sb;
                                                                                 |     }
                                                                                 |     if (r2 == r4) {
    0x08028d08 ldrbne r2, [r8, 1]                                                |         r2 = *((r8 + 1));
                                                                                 |     }
                                                                                 |     if (r2 == r4) {
    0x08028d0c subne r2, r2, 0x5c                                                |         r2 -= 0x5c;
                                                                                 |     }
    0x08028d10 clzne r2, r2                                                      |     __asm ("clzne r2, r2");
                                                                                 |     if (r2 == r4) {
    0x08028d14 lsrne r2, r2, 5                                                   |         r2 >>= 5;
                                                                                 |     }
    0x08028d18 sub r1, r3, 1                                                     |     r1 = r3 - 1;
    0x08028d1c cmp r1, 0x1e                                                      |     
                                                                                 |     if (r1 < 0x1e) {
    0x08028d20 bls 0x8028f34                                                     |         goto label_10;
                                                                                 |     }
    0x08028d24 cmp r3, 0x3f                                                      |     
                                                                                 |     if (r3 <= 0x3f) {
    0x08028d28 bhi 0x8028dbc                                                     |         
    0x08028d2c sub r3, r3, 0x20                                                  |         r3 -= 0x20;
    0x08028d30 cmp r3, 0x1f                                                      |         
                                                                                 |         if (r3 > 0x1f) {
                                                                                 |             /* switch table (32 cases) at 0x8028d3c */
    0x08028d34 ldrls pc, [pc, r3, lsl 2]                                         |             offset_1 = r3 << 2;
                                                                                 |             pc = *((pc + offset_1));
                                                                                 |         }
    0x08028d38 b 0x8028be4                                                       |         goto label_0;
                                                                                 |     }
    0x08028dbc cmp r3, 0x7c                                                      |     
                                                                                 |     if (r3 != 0x7c) {
    0x08028dc0 moveq r0, 1                                                       |         r0 = 1;
                                                                                 |     }
    0x08028dc4 movweq r3, 0xf027                                                 |     __asm ("movweq r3, 0xf027");
                                                                                 |     if (r3 == 0x7c) {
    0x08028dc8 beq 0x8028c40                                                     |         goto label_1;
                                                                                 |     }
    0x08028dcc b 0x8028be4                                                       |     goto label_0;
                                                                                 | label_7:
    0x08028dd0 add sl, sl, r5, lsl 1                                             |     sl += (r5 << 1);
                                                                                 | label_4:
    0x08028dd4 mov r3, 0                                                         |     r3 = 0;
    0x08028dd8 ldr r0, [sp, 0xc]                                                 |     r0 = var_ch;
    0x08028ddc strb r3, [sl]                                                     |     *(sl) = r3;
    0x08028de0 strb r3, [sl, 1]                                                  |     *((sl + 1)) = r3;
    0x08028de4 stmdaeq sb, {r0, r2, r8, sb, fp, sp, pc}                          |     __asm ("stmdaeq sb, {r0, r2, r8, sb, fp, sp, pc}");
    0x08028de8 mov r0, r5                                                        |     r0 = r5;
    0x08028dec add sp, sp, 0x24                                                  |     
    0x08028df0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                          |     
                                                                                 | label_6:
    0x08028df4 mov r1, 6                                                         |     r1 = 6;
    0x08028df8 add r2, sp, 0x1c                                                  |     r2 += var_1ch;
    0x08028dfc mov r0, r8                                                        |     r0 = r8;
    0x08028e00 stmdaeq sb, {r0, r3, r7, sb, sl, fp, sp, pc}                      |     __asm ("stmdaeq sb, {r0, r3, r7, sb, sl, fp, sp, pc}");
    0x08028e04 subs r1, r0, 0                                                    |     r1 = r0 - 0;
                                                                                 |     if (r1 < r0) {
    0x08028e08 blt 0x8028c38                                                     |         goto label_2;
                                                                                 |     }
    0x08028e0c mov r0, r8                                                        |     r0 = r8;
    0x08028e10 ldr r8, [sp, 0xc]                                                 |     r8 = var_ch;
    0x08028e14 mov r2, 6                                                         |     r2 = 6;
    0x08028e18 str r2, [sp]                                                      |     *(sp) = r2;
    0x08028e1c mov r3, r8                                                        |     r3 = r8;
    0x08028e20 mov r2, 1                                                         |     r2 = 1;
    0x08028e24 str r1, [sp, 0x14]                                                |     var_14h = r1;
    0x08028e28 stmdaeq sb, {r0, r2, r3, r7, sb, sl, fp, sp, pc}                  |     __asm ("stmdaeq sb, {r0, r2, r3, r7, sb, sl, fp, sp, pc}");
    0x08028e2c cmp r0, 0                                                         |     
                                                                                 |     if (r0 < 0) {
    0x08028e30 blt 0x8028c38                                                     |         goto label_2;
                                                                                 |     }
    0x08028e34 lsl r3, r5, 1                                                     |     r3 = r5 << 1;
    0x08028e38 ldr r1, [sp, 0x14]                                                |     r1 = var_14h;
    0x08028e3c ldrh r2, [r8]                                                     |     r2 = *(r8);
    0x08028e40 add r0, sl, r3                                                    |     r0 = sl + r3;
    0x08028e44 cmp r1, 3                                                         |     
    0x08028e48 add r4, r4, r1                                                    |     r4 += r1;
    0x08028e4c strhle r2, [sl, r3]                                               |     __asm ("strhle r2, [sl, r3]");
                                                                                 |     if (r1 <= 3) {
    0x08028e50 ble 0x8028c4c                                                     |         goto label_3;
                                                                                 |     }
    0x08028e54 cmp r1, 4                                                         |     
    0x08028e58 ldr r1, [sp, 0xc]                                                 |     r1 = var_ch;
    0x08028e5c add r3, r3, 2                                                     |     r3 += 2;
    0x08028e60 strh r2, [r0]                                                     |     *(r0) = r2;
    0x08028e64 add ip, r5, 1                                                     |     
                                                                                 |     if (r1 == 4) {
    0x08028e68 addne r5, r5, 2                                                   |         r5 += 2;
                                                                                 |     }
    0x08028e6c ldrh r1, [r1, 2]                                                  |     r1 = *((r1 + 2));
                                                                                 |     if (r1 != 4) {
    0x08028e70 moveq r5, ip                                                      |         r5 = ip;
                                                                                 |     }
    0x08028e74 strh r1, [sl, r3]                                                 |     *((sl + r3)) = r1;
                                                                                 |     if (r1 == 4) {
    0x08028e78 ldrne r3, [sp, 0xc]                                               |         r3 = var_ch;
                                                                                 |     }
    0x08028e7c ldrhne r3, [r3, 4]                                                |     __asm ("ldrhne r3, [r3, 4]");
    0x08028e80 strhne r3, [r0, 4]                                                |     __asm ("strhne r3, [r0, 4]");
    0x08028e84 b 0x8028c4c                                                       |     goto label_3;
                                                                                 | label_10:
    0x08028f34 sub r3, r3, 0x1000                                                |     r3 -= 0x1000;
    0x08028f38 mov r0, 1                                                         |     r0 = 1;
    0x08028f3c uxth r3, r3                                                       |     r3 = (int16_t) r3;
    0x08028f40 b 0x8028c40                                                       |     goto label_1;
                                                                                 | }
    ; assembly                                                               | /* r2dec pseudo code output */
                                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/cifs/cifs.ko @ 0x801d6c8 */
                                                                             | #include <stdint.h>
                                                                             |  
    ; (fcn) sym.cifs_all_info_to_fattr ()                                    | void cifs_all_info_to_fattr (int32_t arg_38h, int32_t arg_3ch, int32_t arg1, int32_t arg2) {
                                                                             |     int32_t var_0h;
                                                                             |     int32_t var_14h;
                                                                             |     r0 = arg1;
                                                                             |     r1 = arg2;
    0x0801d6c8 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                     |     
    0x0801d6cc mov r5, r1                                                    |     r5 = r1;
    0x0801d6d0 mov r4, r0                                                    |     r4 = r0;
    0x0801d6d4 ldr r7, [r2, 0x1f0]                                           |     r7 = *((r2 + 0x1f0));
    0x0801d6d8 sub sp, sp, 0x14                                              |     
    0x0801d6dc mov fp, r3                                                    |     
    0x0801d6e0 mov r0, r7                                                    |     r0 = r7;
    0x0801d6e4 ldrb sl, [sp, 0x38]                                           |     sl = *(arg_38h);
    0x0801d6e8 ldr r8, [sp, 0x3c]                                            |     r8 = *(arg_3ch);
    0x0801d6ec stmdaeq r1, {r7, fp, sp}                                      |     __asm ("stmdaeq r1, {r7, fp, sp}");
    0x0801d6f0 mov r2, 0x78                                                  |     r2 = 0x78;
    0x0801d6f4 mov r1, 0                                                     |     r1 = 0;
    0x0801d6f8 mov sb, r0                                                    |     sb = r0;
    0x0801d6fc mov r0, r4                                                    |     r0 = r4;
    0x0801d700 stmdaeq sb, {r0, r2, r4, r5, r6, r8, sb, fp, sp, pc}          |     __asm ("stmdaeq sb, {r0, r2, r4, r5, r6, r8, sb, fp, sp, pc}");
    0x0801d704 ldr r3, [r5, 0x20]                                            |     r3 = *((r5 + 0x20));
    0x0801d708 str r3, [r4, 4]                                               |     *((r4 + 4)) = r3;
    0x0801d70c mov r6, sp                                                    |     r6 = sp;
    0x0801d710 ldrb r3, [r5, 0x3c]                                           |     r3 = *((r5 + 0x3c));
    0x0801d714 cmp r3, 0                                                     |     
                                                                             |     if (r3 == 0) {
    0x0801d718 movne r3, 2                                                   |         r3 = 2;
                                                                             |     }
                                                                             |     if (r3 == 0) {
    0x0801d71c strne r3, [r4]                                                |         *(r4) = r3;
                                                                             |     }
    0x0801d720 ldr r2, [r5, 8]                                               |     r2 = *((r5 + 8));
    0x0801d724 ldr r3, [r5, 0xc]                                             |     r3 = *((r5 + 0xc));
    0x0801d728 orrs r1, r2, r3                                               |     r1 = r2 | r3;
                                                                             |     if (r1 == r2) {
    0x0801d72c beq 0x801d82c                                                 |         goto label_2;
                                                                             |     }
    0x0801d730 mov r0, r6                                                    |     r0 = r6;
    0x0801d734 stmdaeq r2, {r5, r6, r8, fp, lr}                              |     __asm ("stmdaeq r2, {r5, r6, r8, fp, lr}");
    0x0801d738 add ip, r4, 0x40                                              |     
    0x0801d73c ldm r6, {r0, r1, r2, r3}                                      |     r0 = *(r6);
                                                                             |     r1 = *((r6 + 4));
                                                                             |     r2 = *((r6 + 8));
                                                                             |     r3 = *((r6 + 12));
    0x0801d740 stm ip, {r0, r1, r2, r3}                                      |     *(ip) = r0;
                                                                             |     *((ip + 4)) = r1;
                                                                             |     *((ip + 8)) = r2;
                                                                             |     *((ip + 12)) = r3;
                                                                             |     do {
    0x0801d744 ldr r2, [r5, 0x18]                                            |         r2 = *((r5 + 0x18));
    0x0801d748 ldr r3, [r5, 0x1c]                                            |         r3 = *((r5 + 0x1c));
    0x0801d74c mov r0, r6                                                    |         r0 = r6;
    0x0801d750 stmdaeq r2, {r5, r6, r8, fp, lr}                              |         __asm ("stmdaeq r2, {r5, r6, r8, fp, lr}");
    0x0801d754 add ip, r4, 0x60                                              |         
    0x0801d758 ldm r6, {r0, r1, r2, r3}                                      |         r0 = *(r6);
                                                                             |         r1 = *((r6 + 4));
                                                                             |         r2 = *((r6 + 8));
                                                                             |         r3 = *((r6 + 12));
    0x0801d75c stm ip, {r0, r1, r2, r3}                                      |         *(ip) = r0;
                                                                             |         *((ip + 4)) = r1;
                                                                             |         *((ip + 8)) = r2;
                                                                             |         *((ip + 12)) = r3;
    0x0801d760 mov r0, r6                                                    |         r0 = r6;
    0x0801d764 ldr r2, [r5, 0x10]                                            |         r2 = *((r5 + 0x10));
    0x0801d768 ldr r3, [r5, 0x14]                                            |         r3 = *((r5 + 0x14));
    0x0801d76c stmdaeq r2, {r5, r6, r8, fp, lr}                              |         __asm ("stmdaeq r2, {r5, r6, r8, fp, lr}");
    0x0801d770 add ip, r4, 0x50                                              |         
    0x0801d774 ldm r6, {r0, r1, r2, r3}                                      |         r0 = *(r6);
                                                                             |         r1 = *((r6 + 4));
                                                                             |         r2 = *((r6 + 8));
                                                                             |         r3 = *((r6 + 12));
    0x0801d778 cmp fp, 0                                                     |         
    0x0801d77c stm ip, {r0, r1, r2, r3}                                      |         *(ip) = r0;
                                                                             |         *((ip + 4)) = r1;
                                                                             |         *((ip + 8)) = r2;
                                                                             |         *((ip + 12)) = r3;
                                                                             |         if (fp != 0) {
    0x0801d780 beq 0x801d7c8                                                 |             
    0x0801d784 ldr r3, [sb, 0x24]                                            |             r3 = *((sb + 0x24));
    0x0801d788 ldr r3, [r3, 0x20]                                            |             r3 = *((r3 + 0x20));
    0x0801d78c ldr r2, [r3, 0x1c0]                                           |             r2 = *((r3 + 0x1c0));
    0x0801d790 ldr r3, [r4, 0x60]                                            |             r3 = *((r4 + 0x60));
    0x0801d794 adds r3, r3, r2                                               |             r3 += r2;
    0x0801d798 str r3, [r4, 0x60]                                            |             *((r4 + 0x60)) = r3;
    0x0801d79c ldr r3, [r4, 0x64]                                            |             r3 = *((r4 + 0x64));
    0x0801d7a0 adc r3, r3, r2, asr 31                                        |             __asm ("adc r3, r3, r2, asr 31");
    0x0801d7a4 str r3, [r4, 0x64]                                            |             *((r4 + 0x64)) = r3;
    0x0801d7a8 ldr r2, [r4, 0x54]                                            |             r2 = *((r4 + 0x54));
    0x0801d7ac ldr r1, [sb, 0x24]                                            |             r1 = *((sb + 0x24));
    0x0801d7b0 ldr r1, [r1, 0x20]                                            |             r1 = *((r1 + 0x20));
    0x0801d7b4 ldr r1, [r1, 0x1c0]                                           |             r1 = *((r1 + 0x1c0));
    0x0801d7b8 adds r3, r0, r1                                               |             r3 = r0 + r1;
    0x0801d7bc str r3, [r4, 0x50]                                            |             *((r4 + 0x50)) = r3;
    0x0801d7c0 adc r3, r2, r1, asr 31                                        |             __asm ("adc r3, r2, r1, asr 31");
    0x0801d7c4 str r3, [r4, 0x54]                                            |             *((r4 + 0x54)) = r3;
                                                                             |         }
    0x0801d7c8 ldr r3, [r5, 0x30]                                            |         r3 = *((r5 + 0x30));
    0x0801d7cc ldr r2, [r5, 0x34]                                            |         r2 = *((r5 + 0x34));
    0x0801d7d0 str r2, [r4, 0x14]                                            |         *((r4 + 0x14)) = r2;
    0x0801d7d4 str r3, [r4, 0x10]                                            |         *((r4 + 0x10)) = r3;
    0x0801d7d8 mov r3, 0x1d                                                  |         
    0x0801d7dc movt r3, 0xa000                                               |         r3 = 0x-5fffffe3;
    0x0801d7e0 ldr r2, [r5, 0x28]                                            |         r2 = *((r5 + 0x28));
    0x0801d7e4 cmp r8, r3                                                    |         
    0x0801d7e8 ldr r3, [r5, 0x2c]                                            |         r3 = *((r5 + 0x2c));
    0x0801d7ec strd r2, r3, [r4, 0x18]                                       |         __asm ("strd r2, r3, [r4, 0x18]");
    0x0801d7f0 ldr r3, [r5]                                                  |         r3 = *(r5);
    0x0801d7f4 ldr r2, [r5, 4]                                               |         r2 = *((r5 + 4));
    0x0801d7f8 str r2, [r4, 0x24]                                            |         *((r4 + 0x24)) = r2;
    0x0801d7fc str r3, [r4, 0x20]                                            |         *((r4 + 0x20)) = r3;
    0x0801d800 ldr r3, [r5, 0x38]                                            |         r3 = *((r5 + 0x38));
    0x0801d804 str r3, [r4, 0x38]                                            |         *((r4 + 0x38)) = r3;
                                                                             |         if (r8 == r3) {
    0x0801d808 beq 0x801d838                                                 |             goto label_3;
                                                                             |         }
    0x0801d80c sub r8, r8, 0x80000023                                        |         r8 -= 0x80000023;
    0x0801d810 cmp r8, 3                                                     |         
                                                                             |         if (r8 > 3) {
                                                                             |             /* switch table (4 cases) at 0x801d81c */
    0x0801d814 ldrls pc, [pc, r8, lsl 2]                                     |             offset_0 = r8 << 2;
                                                                             |             pc = *((pc + offset_0));
                                                                             |         }
    0x0801d818 b 0x801d8f0                                                   |         goto label_4;
                                                                             | label_2:
    0x0801d82c add r0, r4, 0x40                                              |         r0 = r4 + 0x40;
    0x0801d830 stmdaeq sb, {r0, r2, r6, r7, r8, sl, fp, sp, pc}              |         __asm ("stmdaeq sb, {r0, r2, r6, r7, r8, sl, fp, sp, pc}");
    0x0801d834 b 0x801d744                                                   |         
                                                                             |     } while (1);
                                                                             | label_3:
    0x0801d838 ldrh r2, [r7, 0x30]                                           |     r2 = *((r7 + 0x30));
    0x0801d83c mov r1, 0xa                                                   |     r1 = 0xa;
    0x0801d840 ldrh r3, [r4, 0x30]                                           |     r3 = *((r4 + 0x30));
    0x0801d844 str r1, [r4, 0x3c]                                            |     *((r4 + 0x3c)) = r1;
    0x0801d848 orr r3, r3, r2                                                |     r3 |= r2;
    0x0801d84c orr r3, r3, 0xa000                                            |     r3 |= 0xa000;
    0x0801d850 strh r3, [r4, 0x30]                                           |     *((r4 + 0x30)) = r3;
                                                                             |     do {
                                                                             | label_0:
    0x0801d854 ldr r3, [r7, 0x20]                                            |         r3 = *((r7 + 0x20));
    0x0801d858 str r3, [r4, 0x28]                                            |         *((r4 + 0x28)) = r3;
    0x0801d85c ldr r3, [r7, 0x24]                                            |         r3 = *((r7 + 0x24));
    0x0801d860 str r3, [r4, 0x2c]                                            |         *((r4 + 0x2c)) = r3;
    0x0801d864 add sp, sp, 0x14                                              |         
    0x0801d868 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                      |         
                                                                             | label_4:
    0x0801d8f0 cmp sl, 0                                                     |         
                                                                             |         if (sl == 0) {
    0x0801d8f4 beq 0x801d90c                                                 |             goto label_5;
                                                                             |         }
    0x0801d8f8 mov r2, 0xa000                                                |         r2 = 0xa000;
    0x0801d8fc mov r3, 0xa                                                   |         r3 = 0xa;
    0x0801d900 strh r2, [r4, 0x30]                                           |         *((r4 + 0x30)) = r2;
    0x0801d904 str r3, [r4, 0x3c]                                            |         *((r4 + 0x3c)) = r3;
    0x0801d908 b 0x801d854                                                   |         
                                                                             |     } while (1);
                                                                             | label_5:
    0x0801d90c ldr r2, [r4, 4]                                               |     r2 = *((r4 + 4));
    0x0801d910 tst r2, 0x10                                                  |     
                                                                             |     if ((r2 & 0x10) == 0) {
    0x0801d914 beq 0x801d948                                                 |         goto label_6;
                                                                             |     }
    0x0801d918 ldrh r3, [r7, 0x32]                                           |     r3 = *((r7 + 0x32));
    0x0801d91c mov r2, 4                                                     |     r2 = 4;
    0x0801d920 str r2, [r4, 0x3c]                                            |     *((r4 + 0x3c)) = r2;
    0x0801d924 orr r3, r3, 0x4000                                            |     r3 |= 0x4000;
    0x0801d928 strh r3, [r4, 0x30]                                           |     *((r4 + 0x30)) = r3;
    0x0801d92c ldrb r3, [sb, 0x645]                                          |     r3 = *((sb + 0x645));
    0x0801d930 tst r3, 1                                                     |     
                                                                             |     if ((r3 & 1) != 0) {
    0x0801d934 bne 0x801d854                                                 |         goto label_0;
                                                                             |     }
                                                                             | label_1:
    0x0801d938 ldr r3, [r4]                                                  |     r3 = *(r4);
    0x0801d93c orr r3, r3, 0x10                                              |     r3 |= 0x10;
    0x0801d940 str r3, [r4]                                                  |     *(r4) = r3;
    0x0801d944 b 0x801d854                                                   |     goto label_0;
                                                                             | label_6:
    0x0801d948 tst r2, 1                                                     |     
    0x0801d94c ldrh r2, [r7, 0x30]                                           |     r2 = *((r7 + 0x30));
    0x0801d950 mov r1, 0x8000                                                |     
    0x0801d954 movt r1, 0xffff                                               |     r1 = 0x-8000;
    0x0801d958 orr r0, r2, r1                                                |     r0 = r2 | r1;
    0x0801d95c bicne r2, r2, 0x92                                            |     __asm ("bicne r2, r2, 0x92");
                                                                             |     if ((r2 & 1) == 0) {
    0x0801d960 orrne r2, r2, r1                                              |         r2 |= r1;
                                                                             |     }
    0x0801d964 strh r0, [r4, 0x30]                                           |     *((r4 + 0x30)) = r0;
    0x0801d968 mov r0, 8                                                     |     r0 = 8;
    0x0801d96c strhne r2, [r4, 0x30]                                         |     __asm ("strhne r2, [r4, 0x30]");
    0x0801d970 str r0, [r4, 0x3c]                                            |     *((r4 + 0x3c)) = r0;
    0x0801d974 cmp r3, 0                                                     |     
                                                                             |     if (r3 != 0) {
    0x0801d978 bne 0x801d854                                                 |         goto label_0;
                                                                             |     }
    0x0801d97c ldrb r3, [sb, 0x645]                                          |     r3 = *((sb + 0x645));
    0x0801d980 tst r3, 1                                                     |     
                                                                             |     if ((r3 & 1) != 0) {
    0x0801d984 bne 0x801d854                                                 |         goto label_0;
                                                                             |     }
    0x0801d988 ldrb r3, [r5, 0x3c]                                           |     r3 = *((r5 + 0x3c));
    0x0801d98c cmp r3, 0                                                     |     
                                                                             |     if (r3 != 0) {
    0x0801d990 bne 0x801d854                                                 |         goto label_0;
                                                                             |     }
    0x0801d994 stmdaeq r4, {fp, ip, sp, lr}                                  |     __asm ("stmdaeq r4, {fp, ip, sp, lr}");
    0x0801d998 stmdaeq r4, {fp, ip, sp, lr}                                  |     __asm ("stmdaeq r4, {fp, ip, sp, lr}");
    0x0801d99c stmdaeq r6, {r2, r4, r5, r6, r8, ip, sp, pc}                  |     __asm ("stmdaeq r6, {r2, r4, r5, r6, r8, ip, sp, pc}");
    0x0801d9a0 stmdaeq r6, {r2, r4, r5, r6, r8, ip, sp, pc}                  |     __asm ("stmdaeq r6, {r2, r4, r5, r6, r8, ip, sp, pc}");
    0x0801d9a4 stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}              |     __asm ("stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}");
    0x0801d9a8 cmp r0, 0                                                     |     
                                                                             |     if (r0 == 0) {
    0x0801d9ac beq 0x801d938                                                 |         goto label_1;
                                                                             |     }
    0x0801d9b0 ldr r1, [r4, 0x38]                                            |     r1 = *((r4 + 0x38));
    0x0801d9b4 stmdaeq r5, {r2, r4, r5, r7, r8, sb, sl, fp, lr}              |     __asm ("stmdaeq r5, {r2, r4, r5, r7, r8, sb, sl, fp, lr}");
    0x0801d9b8 stmdaeq r5, {r2, r4, r5, r7, r8, sb, sl, fp, lr}              |     __asm ("stmdaeq r5, {r2, r4, r5, r7, r8, sb, sl, fp, lr}");
    0x0801d9bc stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}                  |     __asm ("stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}");
    0x0801d9c0 b 0x801d938                                                   |     goto label_1;
                                                                             | }
    ; assembly                                                                   | /* r2dec pseudo code output */
                                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/cifs/cifs.ko @ 0x8013920 */
                                                                                 | #include <stdint.h>
                                                                                 |  
                                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                                 |  
    ; (fcn) sym.cifs_do_create ()                                                | void cifs_do_create (int32_t arg_16h, int32_t arg_a0h, int32_t arg_a4h, int32_t arg_a8h, int32_t arg_ach, int32_t arg1, int32_t arg2) {
                                                                                 |     int32_t var_0h;
                                                                                 |     int32_t var_4h;
                                                                                 |     int32_t var_8h;
                                                                                 |     int32_t var_ch;
                                                                                 |     int32_t var_10h;
                                                                                 |     int32_t var_14h;
                                                                                 |     int32_t var_18h;
                                                                                 |     int32_t var_1ch;
                                                                                 |     int32_t var_24h;
                                                                                 |     int32_t var_28h;
                                                                                 |     int32_t var_2ch;
                                                                                 |     int32_t var_30h;
                                                                                 |     int32_t var_34h;
                                                                                 |     int32_t var_38h;
                                                                                 |     int32_t var_3ch;
                                                                                 |     int32_t var_40h;
                                                                                 |     int32_t var_44h;
                                                                                 |     int32_t var_46h;
                                                                                 |     int32_t var_48h;
                                                                                 |     int32_t var_48h_2;
                                                                                 |     int32_t var_50h;
                                                                                 |     int32_t var_50h_2;
                                                                                 |     int32_t var_58h;
                                                                                 |     int32_t var_58h_2;
                                                                                 |     int32_t var_60h;
                                                                                 |     int32_t var_64h;
                                                                                 |     int32_t var_68h;
                                                                                 |     int32_t var_6ch;
                                                                                 |     int32_t var_70h;
                                                                                 |     int32_t var_74h;
                                                                                 |     int32_t var_7ch;
                                                                                 |     r0 = arg1;
                                                                                 |     r1 = arg2;
    0x08013920 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                         |     
    0x08013924 mov r8, r0                                                        |     r8 = r0;
    0x08013928 mov r7, r1                                                        |     r7 = r1;
    0x0801392c sub sp, sp, 0x7c                                                  |     
    0x08013930 ldr r5, [r3, 0x1c]                                                |     r5 = *((r3 + 0x1c));
    0x08013934 ldr r3, [r0, 0x14]                                                |     r3 = *((r0 + 0x14));
    0x08013938 str r2, [sp, 0x10]                                                |     var_10h = r2;
    0x0801393c ldr sb, [r3, 0x1f0]                                               |     sb = *((r3 + 0x1f0));
    0x08013940 ldr r2, [sp, 0xa8]                                                |     r2 = *(arg_a8h);
    0x08013944 ldr r3, [r5, 0x24]                                                |     r3 = *((r5 + 0x24));
    0x08013948 ldr r4, [sp, 0xa0]                                                |     r4 = *(arg_a0h);
    0x0801394c ldr sl, [r3, 0x20]                                                |     sl = *((r3 + 0x20));
    0x08013950 mov r3, 0                                                         |     r3 = 0;
    0x08013954 str r3, [r2]                                                      |     *(r2) = r3;
    0x08013958 str r3, [sp, 0x24]                                                |     var_24h = r3;
    0x0801395c ldrh r3, [sp, 0xa4]                                               |     r3 = *(arg_a4h);
    0x08013960 str r3, [sp, 0x14]                                                |     var_14h = r3;
    0x08013964 ldr r3, [r5, 0x24]                                                |     r3 = *((r5 + 0x24));
    0x08013968 ldr r3, [r3, 0x20]                                                |     r3 = *((r3 + 0x20));
    0x0801396c ldrb r3, [r3, 0x1ac]                                              |     r3 = *((r3 + 0x1ac));
    0x08013970 and r3, r3, 1                                                     |     r3 &= 1;
    0x08013974 lsl r3, r3, 1                                                     |     r3 <<= 1;
    0x08013978 str r3, [r2]                                                      |     *(r2) = r3;
    0x0801397c ldr r3, [r1, 0x5c]                                                |     r3 = *((r1 + 0x5c));
    0x08013980 ldr r0, [r3, 0x1f0]                                               |     r0 = *((r3 + 0x1f0));
    0x08013984 stmdaeq r1, {r7, fp, sp}                                          |     __asm ("stmdaeq r1, {r7, fp, sp}");
    0x08013988 movw r3, 0x53c                                                    |     r3 = 0x53c;
    0x0801398c ldrh r1, [r0, r3]                                                 |     r1 = *((r0 + r3));
    0x08013990 mov r0, r7                                                        |     r0 = r7;
    0x08013994 ubfx r1, r1, 1, 1                                                 |     r1 = (r1 >> 1) & ((1 << 1) - 1);
    0x08013998 stmdaeq r1, {r2, r4, r7, r8, sl, ip, sp}                          |     __asm ("stmdaeq r1, {r2, r4, r7, r8, sl, ip, sp}");
    0x0801399c subs r6, r0, 0                                                    |     r6 = r0 - 0;
                                                                                 |     if (r6 == r0) {
    0x080139a0 beq 0x8013e5c                                                     |         goto label_5;
                                                                                 |     }
    0x080139a4 ldrb r3, [r5, 0x645]                                              |     r3 = *((r5 + 0x645));
    0x080139a8 tst r3, 1                                                         |     
                                                                                 |     if ((r3 & 1) != 0) {
    0x080139ac beq 0x80139dc                                                     |         
    0x080139b0 ldr r3, [r5, 0x24]                                                |         r3 = *((r5 + 0x24));
    0x080139b4 ldr r2, [r3, 0x20]                                                |         r2 = *((r3 + 0x20));
    0x080139b8 ldr r3, [r3, 0x50]                                                |         r3 = *((r3 + 0x50));
    0x080139bc ldr r2, [r2, 0x28]                                                |         r2 = *((r2 + 0x28));
    0x080139c0 ldr r2, [r2, 0x30]                                                |         r2 = *((r2 + 0x30));
    0x080139c4 tst r2, r3                                                        |         
                                                                                 |         if ((r2 & r3) == 0) {
    0x080139c8 beq 0x80139dc                                                     |             goto label_2;
                                                                                 |         }
    0x080139cc ldrb r3, [r5, 0x648]                                              |         r3 = *((r5 + 0x648));
    0x080139d0 str r3, [sp, 0x1c]                                                |         var_1ch = r3;
    0x080139d4 cmp r3, 0                                                         |         
                                                                                 |         if (r3 == 0) {
    0x080139d8 beq 0x8013d20                                                     |             goto label_6;
                                                                                 |         }
                                                                                 |     }
                                                                                 | label_2:
    0x080139dc add r3, r4, 1                                                     |     r3 = r4 + 1;
    0x080139e0 and r2, r4, 0xc0                                                  |     r2 = r4 & 0xc0;
    0x080139e4 tst r3, 2                                                         |     
    0x080139e8 lsl r3, r3, 0x1f                                                  |     r3 <<= 0x1f;
                                                                                 |     if ((r3 & 2) == 0) {
    0x080139ec orrne r3, r3, 0x40000000                                          |         r3 |= 0x40000000;
                                                                                 |     }
    0x080139f0 cmp r2, 0xc0                                                      |     
                                                                                 |     if (r2 != 0xc0) {
    0x080139f4 moveq fp, 2                                                       |         
                                                                                 |     }
                                                                                 |     if (r2 != 0xc0) {
    0x080139f8 beq 0x8013a18                                                     |         
    0x080139fc and r2, r4, 0x240                                                 |         r2 = r4 & 0x240;
    0x08013a00 cmp r2, 0x240                                                     |         
                                                                                 |         if (r2 != 0x240) {
    0x08013a04 moveq fp, 5                                                       |             
                                                                                 |         }
                                                                                 |         if (r2 == 0x240) {
    0x08013a08 beq 0x8013a18                                                     |             goto label_7;
                                                                                 |         }
    0x08013a0c tst r4, 0x40                                                      |         
                                                                                 |         if ((r4 & 0x40) != 0) {
    0x08013a10 moveq fp, 5                                                       |             
                                                                                 |         }
                                                                                 |         if ((r4 & 0x40) != 0) {
    0x08013a14 movne fp, 3                                                       |             goto label_7;
                                                                                 |         }
                                                                                 |     }
                                                                                 | label_7:
    0x08013a18 ldr r2, [sl, 0x24]                                                |     r2 = *((sl + 0x24));
    0x08013a1c str r3, [sp, 0x18]                                                |     var_18h = r3;
    0x08013a20 ldr r4, [r2, 0xd8]                                                |     r4 = *((r2 + 0xd8));
    0x08013a24 cmp r4, 0                                                         |     
                                                                                 |     if (r4 != 0) {
    0x08013a28 mvneq fp, 0x25                                                    |         
                                                                                 |     }
                                                                                 |     if (r4 == 0) {
    0x08013a2c beq 0x8013c10                                                     |         goto label_0;
                                                                                 |     }
    0x08013a30 stmdaeq sb, {r0, r2, r3, r4, r5, r6, r7, sb, fp, sp, pc}          |     __asm ("stmdaeq sb, {r0, r2, r3, r4, r5, r6, r7, sb, fp, sp, pc}");
    0x08013a34 stmdaeq sb, {r0, r2, r3, r4, r5, r6, r7, sb, fp, sp, pc}          |     __asm ("stmdaeq sb, {r0, r2, r3, r4, r5, r6, r7, sb, fp, sp, pc}");
    0x08013a38 mov r1, 0xcc0                                                     |     r1 = 0xcc0;
    0x08013a3c ldr r0, [r2, 0x1c]                                                |     r0 = *((r2 + 0x1c));
    0x08013a40 stmdaeq sb, {r0, r2, r4, r5, r7, sb, fp, sp, pc}                  |     __asm ("stmdaeq sb, {r0, r2, r4, r5, r7, sb, fp, sp, pc}");
    0x08013a44 subs r4, r0, 0                                                    |     r4 = r0 - 0;
                                                                                 |     if (r4 == r0) {
    0x08013a48 beq 0x8013e8c                                                     |         goto label_8;
                                                                                 |     }
    0x08013a4c ldrb r2, [r5, 0x645]                                              |     r2 = *((r5 + 0x645));
    0x08013a50 ldr r3, [sp, 0x18]                                                |     r3 = var_18h;
    0x08013a54 tst r2, 1                                                         |     
                                                                                 |     if ((r2 & 1) == 0) {
    0x08013a58 movne r2, 0x40                                                    |         r2 = 0x40;
                                                                                 |     }
                                                                                 |     if ((r2 & 1) == 0) {
    0x08013a5c bne 0x8013a74                                                     |         
    0x08013a60 ldr r2, [sp, 0x14]                                                |         r2 = var_14h;
    0x08013a64 tst r2, 0x92                                                      |         
    0x08013a68 mov r2, 0x40                                                      |         
    0x08013a6c movt r2, 0x1000                                                   |         r2 = 0x10000040;
                                                                                 |         if ((r2 & 0x92) != 0) {
    0x08013a70 movne r2, 0x40                                                    |             r2 = 0x40;
                                                                                 |             goto label_9;
                                                                                 |         }
                                                                                 |     }
                                                                                 | label_9:
    0x08013a74 cmp sb, 0                                                         |     
    0x08013a78 str r3, [sp, 0x34]                                                |     var_34h = r3;
    0x08013a7c str r5, [sp, 0x28]                                                |     var_28h = r5;
    0x08013a80 str sb, [sp, 0x2c]                                                |     var_2ch = sb;
                                                                                 |     if (sb != 0) {
    0x08013a84 beq 0x8013aa0                                                     |         
    0x08013a88 mov r0, sb                                                        |         r0 = sb;
    0x08013a8c str r2, [sp, 0x18]                                                |         var_18h = r2;
    0x08013a90 stmdaeq r2, {r2, r5, sb, fp, ip, sp}                              |         __asm ("stmdaeq r2, {r2, r5, sb, fp, ip, sp}");
    0x08013a94 ldr r2, [sp, 0x18]                                                |         r2 = var_18h;
    0x08013a98 cmp r0, 0                                                         |         
                                                                                 |         if (r0 != 0) {
    0x08013a9c orrne r2, r2, 0x4000                                              |             r2 |= 0x4000;
                                                                                 |             goto label_10;
                                                                                 |         }
                                                                                 |     }
                                                                                 | label_10:
    0x08013aa0 ldr r3, [sp, 0xac]                                                |     r3 = *(arg_ach);
    0x08013aa4 add r1, sp, 0x28                                                  |     r1 += var_28h;
    0x08013aa8 str r3, [sp, 0x40]                                                |     var_40h = r3;
    0x08013aac ldr r3, [sp, 0x14]                                                |     r3 = var_14h;
    0x08013ab0 strh r3, [sp, 0x44]                                               |     var_44h = r3;
    0x08013ab4 ldrb r3, [sp, 0x46]                                               |     r3 = var_46h;
    0x08013ab8 str r2, [sp, 0x38]                                                |     var_38h = r2;
    0x08013abc str fp, [sp, 0x30]                                                |     var_30h = fp;
    0x08013ac0 bfc r3, 0, 1                                                      |     value_0 = BIT_MASK (1, );
                                                                                 |     value_0 = ~value_0;
                                                                                 |     r3 &= value_0;
    0x08013ac4 strb r3, [sp, 0x46]                                               |     var_46h = r3;
    0x08013ac8 ldr r3, [sl, 0x24]                                                |     r3 = *((sl + 0x24));
    0x08013acc ldr r2, [sp, 0xa8]                                                |     r2 = *(arg_a8h);
    0x08013ad0 ldr r0, [sp, 0x10]                                                |     r0 = var_10h;
    0x08013ad4 ldr fp, [r3, 0xd8]                                                |     fp = *((r3 + 0xd8));
    0x08013ad8 mov r3, r4                                                        |     r3 = r4;
    0x08013adc str r6, [sp, 0x3c]                                                |     var_3ch = r6;
    0x08013ae0 blx fp                                                            |     r0 = fp (r0, r2, r3);
    0x08013ae4 subs fp, r0, 0                                                    |     
                                                                                 |     if (fp != r0) {
    0x08013ae8 bne 0x8013c10                                                     |         goto label_0;
                                                                                 |     }
    0x08013aec ldrb r2, [r5, 0x645]                                              |     r2 = *((r5 + 0x645));
    0x08013af0 tst r2, 1                                                         |     
                                                                                 |     if ((r2 & 1) != 0) {
    0x08013af4 addeq r3, sp, 0x24                                                |         r3 += var_24h;
                                                                                 |     }
                                                                                 |     if ((r2 & 1) != 0) {
    0x08013af8 streq r3, [sp, 0x18]                                              |         var_18h = r3;
                                                                                 |     }
                                                                                 |     if ((r2 & 1) == 0) {
    0x08013afc beq 0x8013c64                                                     |         goto label_11;
                                                                                 |     }
    0x08013b00 ldr r3, [sp, 0xa8]                                                |     r3 = *(arg_a8h);
    0x08013b04 ldr r2, [r3]                                                      |     r2 = *(r3);
    0x08013b08 tst r2, 0x20000                                                   |     
                                                                                 |     if ((r2 & 0x20000) != 0) {
    0x08013b0c addeq r3, sp, 0x24                                                |         r3 += var_24h;
                                                                                 |     }
                                                                                 |     if ((r2 & 0x20000) != 0) {
    0x08013b10 streq r3, [sp, 0x18]                                              |         var_18h = r3;
                                                                                 |     }
                                                                                 |     if ((r2 & 0x20000) != 0) {
    0x08013b14 beq 0x8013bc4                                                     |         
    0x08013b18 str fp, [sp, 0x70]                                                |         var_70h = fp;
    0x08013b1c mvn r0, 0                                                         |         r0 = ~0;
    0x08013b20 str fp, [sp, 0x74]                                                |         var_74h = fp;
    0x08013b24 mvn r1, 0                                                         |         r1 = ~0;
    0x08013b28 ldr r3, [sp, 0x14]                                                |         r3 = var_14h;
    0x08013b2c str r3, [sp, 0x60]                                                |         var_60h = r3;
    0x08013b30 ldr r3, [sb, 0x34]                                                |         r3 = *((sb + 0x34));
    0x08013b34 str fp, [sp, 0x6c]                                                |         var_6ch = fp;
    0x08013b38 tst r3, 2                                                         |         
    0x08013b3c mov r3, sp                                                        |         r3 = sp;
    0x08013b40 bic r3, r3, 0x1fc0                                                |         r3 = BIT_MASK (r3, 0x1fc0);
    0x08013b44 str fp, [sp, 0x68]                                                |         var_68h = fp;
    0x08013b48 bic r3, r3, 0x3f                                                  |         r3 = BIT_MASK (r3, 0x3f);
    0x08013b4c str fp, [sp, 0x64]                                                |         var_64h = fp;
    0x08013b50 strd r0, r1, [sp, 0x48]                                           |         __asm ("strd r0, r1, [var_48h]");
    0x08013b54 strd r0, r1, [sp, 0x50]                                           |         __asm ("strd r0, r1, [var_50h]");
    0x08013b58 strd r0, r1, [sp, 0x58]                                           |         __asm ("strd r0, r1, [var_58h]");
                                                                                 |         if ((r3 & 2) == 0) {
    0x08013b5c beq 0x8013ddc                                                     |             goto label_12;
                                                                                 |         }
    0x08013b60 ldr r2, [r3, 0xc]                                                 |         r2 = *((r3 + 0xc));
    0x08013b64 ldr r2, [r2, 0x340]                                               |         r2 = *((r2 + 0x340));
    0x08013b68 ldr r2, [r2, 0x1c]                                                |         r2 = *((r2 + 0x1c));
    0x08013b6c str r2, [sp, 0x68]                                                |         var_68h = r2;
    0x08013b70 ldrh r2, [r8]                                                     |         r2 = *(r8);
    0x08013b74 tst r2, 0x400                                                     |         
                                                                                 |         if ((r2 & 0x400) != 0) {
    0x08013b78 ldreq r2, [r3, 0xc]                                               |             r2 = *((r3 + 0xc));
                                                                                 |         }
                                                                                 |         if ((r2 & 0x400) == 0) {
    0x08013b7c ldrne r2, [r8, 8]                                                 |             r2 = *((r8 + 8));
                                                                                 |         }
                                                                                 |         if ((r2 & 0x400) != 0) {
    0x08013b80 ldreq r2, [r2, 0x340]                                             |             r2 = *((r2 + 0x340));
                                                                                 |         }
                                                                                 |         if ((r2 & 0x400) != 0) {
    0x08013b84 ldreq r2, [r2, 0x20]                                              |             r2 = *((r2 + 0x20));
                                                                                 |         }
    0x08013b88 str r2, [sp, 0x6c]                                                |         var_6ch = r2;
                                                                                 | label_3:
    0x08013b8c ldr r3, [r3, 0xc]                                                 |         r3 = *((r3 + 0xc));
    0x08013b90 add r2, sp, 0x48                                                  |         r2 += var_48h;
    0x08013b94 ldr r0, [sp, 0x10]                                                |         r0 = var_10h;
    0x08013b98 mov r1, r5                                                        |         r1 = r5;
    0x08013b9c ldr r3, [r3, 0x244]                                               |         r3 = *((r3 + 0x244));
    0x08013ba0 str r3, [sp]                                                      |         *(sp) = r3;
    0x08013ba4 ldr r3, [sp, 0xac]                                                |         r3 = *(arg_ach);
    0x08013ba8 ldrh r3, [r3]                                                     |         r3 = *(r3);
    0x08013bac stmdaeq r0, {r2, r3, r4, r7, r8, sp, pc}                          |         __asm ("stmdaeq r0, {r2, r3, r4, r7, r8, sp, pc}");
    0x08013bb0 add r3, sp, 0x24                                                  |         r3 += var_24h;
    0x08013bb4 str r3, [sp, 0x18]                                                |         var_18h = r3;
    0x08013bb8 ldrb r3, [r5, 0x645]                                              |         r3 = *((r5 + 0x645));
    0x08013bbc tst r3, 1                                                         |         
                                                                                 |         if ((r3 & 1) == 0) {
    0x08013bc0 beq 0x8013c64                                                     |             goto label_11;
                                                                                 |         }
                                                                                 |     }
    0x08013bc4 ldr r2, [r8, 0x14]                                                |     r2 = *((r8 + 0x14));
    0x08013bc8 mov r1, r6                                                        |     r1 = r6;
    0x08013bcc ldr r0, [sp, 0x18]                                                |     r0 = var_18h;
    0x08013bd0 ldr r3, [sp, 0x10]                                                |     r3 = var_10h;
    0x08013bd4 stmdaeq r1, {r2, r3, r4, r6, sb, fp, sp, lr, pc}                  |     __asm ("stmdaeq r1, {r2, r3, r4, r6, sb, fp, sp, lr, pc}");
    0x08013bd8 mov fp, r0                                                        |     
                                                                                 | label_1:
    0x08013bdc cmp fp, 0                                                         |     
                                                                                 |     if (fp != 0) {
    0x08013be0 bne 0x8013c30                                                     |         goto label_13;
                                                                                 |     }
    0x08013be4 ldr r3, [sp, 0x24]                                                |     r3 = var_24h;
    0x08013be8 ldrh r3, [r3]                                                     |     r3 = *(r3);
    0x08013bec and r3, r3, 0xf000                                                |     r3 &= 0xf000;
    0x08013bf0 cmp r3, 0x4000                                                    |     
                                                                                 |     if (r3 == 0x4000) {
    0x08013bf4 beq 0x8013c2c                                                     |         goto label_14;
                                                                                 |     }
    0x08013bf8 mov r0, r7                                                        |     r0 = r7;
    0x08013bfc mov fp, 0                                                         |     
    0x08013c00 stmdaeq sb, {r0, r3, r8, sl, fp, sp, pc}                          |     __asm ("stmdaeq sb, {r0, r3, r8, sl, fp, sp, pc}");
    0x08013c04 mov r0, r7                                                        |     r0 = r7;
    0x08013c08 ldr r1, [sp, 0x24]                                                |     r1 = var_24h;
    0x08013c0c stmdaeq sb, {r0, r2, r3, r8, sl, fp, sp, pc}                      |     __asm ("stmdaeq sb, {r0, r2, r3, r8, sl, fp, sp, pc}");
                                                                                 |     do {
                                                                                 | label_0:
    0x08013c10 mov r0, r4                                                        |         r0 = r4;
    0x08013c14 stmdaeq sb, {r0, r2, r8, sb, fp, sp, pc}                          |         __asm ("stmdaeq sb, {r0, r2, r8, sb, fp, sp, pc}");
    0x08013c18 mov r0, r6                                                        |         r0 = r6;
    0x08013c1c stmdaeq sb, {r0, r2, r8, sb, fp, sp, pc}                          |         __asm ("stmdaeq sb, {r0, r2, r8, sb, fp, sp, pc}");
                                                                                 | label_4:
    0x08013c20 mov r0, fp                                                        |         r0 = fp;
    0x08013c24 add sp, sp, 0x7c                                                  |         
    0x08013c28 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                          |         
                                                                                 | label_14:
    0x08013c2c mvn fp, 0x14                                                      |         
                                                                                 | label_13:
    0x08013c30 ldr r2, [sl, 0x24]                                                |         r2 = *((sl + 0x24));
    0x08013c34 ldr r7, [r2, 0xe0]                                                |         r7 = *((r2 + 0xe0));
    0x08013c38 cmp r7, 0                                                         |         
                                                                                 |         if (r7 != 0) {
    0x08013c3c beq 0x8013c50                                                     |             
    0x08013c40 ldr r2, [sp, 0xac]                                                |             r2 = *(arg_ach);
    0x08013c44 mov r1, r5                                                        |             r1 = r5;
    0x08013c48 ldr r0, [sp, 0x10]                                                |             r0 = var_10h;
    0x08013c4c blx r7                                                            |             uint32_t (*r7)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
                                                                                 |         }
    0x08013c50 ldr r0, [sp, 0x24]                                                |         r0 = var_24h;
    0x08013c54 cmp r0, 0                                                         |         
    0x08013c58 beq 0x8013c10                                                     |         
                                                                                 |     } while (r0 == 0);
    0x08013c5c stmdaeq sb, {r0, r4, r8, sl, fp, sp, pc}                          |     __asm ("stmdaeq sb, {r0, r4, r8, sl, fp, sp, pc}");
    0x08013c60 b 0x8013c10                                                       |     goto label_0;
                                                                                 | label_11:
    0x08013c64 ldr r3, [sp, 0xac]                                                |     r3 = *(arg_ach);
    0x08013c68 mov r2, r4                                                        |     r2 = r4;
    0x08013c6c str r3, [sp, 4]                                                   |     var_4h = r3;
    0x08013c70 mov r1, r6                                                        |     r1 = r6;
    0x08013c74 ldr r3, [sp, 0x10]                                                |     r3 = var_10h;
    0x08013c78 str r3, [sp]                                                      |     *(sp) = r3;
    0x08013c7c ldr r0, [sp, 0x18]                                                |     r0 = var_18h;
    0x08013c80 ldr r3, [r8, 0x14]                                                |     r3 = *((r8 + 0x14));
    0x08013c84 stmdaeq r1, {r4, r5, r6, r7, r8, sb, fp, sp, lr, pc}              |     __asm ("stmdaeq r1, {r4, r5, r6, r7, r8, sb, fp, sp, lr, pc}");
    0x08013c88 mov fp, r0                                                        |     
    0x08013c8c ldr r0, [sp, 0x24]                                                |     r0 = var_24h;
    0x08013c90 cmp r0, 0                                                         |     
                                                                                 |     if (r0 == 0) {
    0x08013c94 beq 0x8013bdc                                                     |         goto label_1;
                                                                                 |     }
    0x08013c98 ldr r2, [sl, 0x24]                                                |     r2 = *((sl + 0x24));
    0x08013c9c ldr r2, [r2, 0x12c]                                               |     r2 = *((r2 + 0x12c));
    0x08013ca0 cmp r2, 0                                                         |     
                                                                                 |     if (r2 != 0) {
    0x08013ca4 beq 0x8013cb0                                                     |         
    0x08013ca8 ldr r1, [sp, 0xac]                                                |         r1 = *(arg_ach);
    0x08013cac blx r2                                                            |         uint32_t (*r2)(uint32_t) (r1);
                                                                                 |     }
    0x08013cb0 ldr r2, [sb, 0x34]                                                |     r2 = *((sb + 0x34));
    0x08013cb4 tst r2, 0x1000                                                    |     
                                                                                 |     if ((r2 & 0x1000) == 0) {
    0x08013cb8 ldrne r2, [sp, 0x24]                                              |         r2 = var_24h;
                                                                                 |     }
                                                                                 |     if ((r2 & 0x1000) == 0) {
    0x08013cbc ldrne r3, [sp, 0x14]                                              |         r3 = var_14h;
                                                                                 |     }
    0x08013cc0 strhne r3, [r2]                                                   |     __asm ("strhne r3, [r2]");
    0x08013cc4 ldr r3, [sp, 0xa8]                                                |     r3 = *(arg_a8h);
    0x08013cc8 ldr r2, [r3]                                                      |     r2 = *(r3);
    0x08013ccc tst r2, 0x20000                                                   |     
                                                                                 |     if ((r2 & 0x20000) == 0) {
    0x08013cd0 beq 0x8013bdc                                                     |         goto label_1;
                                                                                 |     }
    0x08013cd4 ldr r2, [sb, 0x34]                                                |     r2 = *((sb + 0x34));
    0x08013cd8 tst r2, 2                                                         |     
                                                                                 |     if ((r2 & 2) == 0) {
    0x08013cdc beq 0x8013bdc                                                     |         goto label_1;
                                                                                 |     }
    0x08013ce0 mov r3, sp                                                        |     r3 = sp;
    0x08013ce4 ldr r1, [sp, 0x24]                                                |     r1 = var_24h;
    0x08013ce8 bic r2, r3, 0x1fc0                                                |     r2 = BIT_MASK (r3, 0x1fc0);
    0x08013cec bic r2, r2, 0x3f                                                  |     r2 = BIT_MASK (r2, 0x3f);
    0x08013cf0 ldr r0, [r2, 0xc]                                                 |     r0 = *((r2 + 0xc));
    0x08013cf4 ldr r0, [r0, 0x340]                                               |     r0 = *((r0 + 0x340));
    0x08013cf8 ldr r0, [r0, 0x1c]                                                |     r0 = *((r0 + 0x1c));
    0x08013cfc str r0, [r1, 4]                                                   |     *((r1 + 4)) = r0;
    0x08013d00 ldrh r0, [r8]                                                     |     r0 = *(r8);
    0x08013d04 tst r0, 0x400                                                     |     
                                                                                 |     if ((r0 & 0x400) != 0) {
    0x08013d08 ldreq r2, [r2, 0xc]                                               |         r2 = *((r2 + 0xc));
                                                                                 |     }
                                                                                 |     if ((r0 & 0x400) == 0) {
    0x08013d0c ldrne r2, [r8, 8]                                                 |         r2 = *((r8 + 8));
                                                                                 |     }
                                                                                 |     if ((r0 & 0x400) != 0) {
    0x08013d10 ldreq r2, [r2, 0x340]                                             |         r2 = *((r2 + 0x340));
                                                                                 |     }
                                                                                 |     if ((r0 & 0x400) != 0) {
    0x08013d14 ldreq r2, [r2, 0x20]                                              |         r2 = *((r2 + 0x20));
                                                                                 |     }
    0x08013d18 str r2, [r1, 8]                                                   |     *((r1 + 8)) = r2;
    0x08013d1c b 0x8013bdc                                                       |     goto label_1;
                                                                                 | label_6:
    0x08013d20 ldr r3, [r5, 0x63c]                                               |     r3 = *((r5 + 0x63c));
    0x08013d24 tst r3, 0x20                                                      |     
                                                                                 |     if ((r3 & 0x20) == 0) {
    0x08013d28 beq 0x80139dc                                                     |         goto label_2;
                                                                                 |     }
    0x08013d2c ldr r3, [sp, 0x10]                                                |     r3 = var_10h;
    0x08013d30 str r3, [sp, 0xc]                                                 |     var_ch = r3;
    0x08013d34 ldr r3, [sp, 0xac]                                                |     r3 = *(arg_ach);
    0x08013d38 str r3, [sp, 8]                                                   |     var_8h = r3;
    0x08013d3c ldr r3, [sp, 0xa8]                                                |     r3 = *(arg_a8h);
    0x08013d40 str r3, [sp, 4]                                                   |     var_4h = r3;
    0x08013d44 add r3, sp, 0x24                                                  |     r3 += var_24h;
    0x08013d48 str r4, [sp]                                                      |     *(sp) = r4;
    0x08013d4c mov r1, r3                                                        |     r1 = r3;
    0x08013d50 str r3, [sp, 0x18]                                                |     var_18h = r3;
    0x08013d54 ldr r2, [r8, 0x14]                                                |     r2 = *((r8 + 0x14));
    0x08013d58 ldr r3, [sp, 0x14]                                                |     r3 = var_14h;
    0x08013d5c stmdaeq r1, {r2, r3, r7, fp, ip, lr}                              |     __asm ("stmdaeq r1, {r2, r3, r7, fp, ip, lr}");
    0x08013d60 subs fp, r0, 0                                                    |     
                                                                                 |     if (fp > r0) {
    0x08013d64 bgt 0x8013dfc                                                     |         goto label_15;
                                                                                 |     }
    0x08013d68 cmn fp, 0x16                                                      |     
                                                                                 |     if (fp >= 0x16) {
    0x08013d6c blt 0x8013dec                                                     |         
    0x08013d70 add r2, fp, 0x16                                                  |         r2 += arg_16h;
    0x08013d74 cmp r2, 0x16                                                      |         
                                                                                 |         if (r2 > 0x16) {
                                                                                 |             /* switch table (23 cases) at 0x8013d80 */
    0x08013d78 ldrls pc, [pc, r2, lsl 2]                                         |             offset_1 = r2 << 2;
                                                                                 |             pc = *((pc + offset_1));
                                                                                 |         }
    0x08013d7c b 0x8013dfc                                                       |         goto label_15;
                                                                                 | label_12:
    0x08013ddc mvn r2, 0                                                         |         r2 = ~0;
    0x08013de0 str r2, [sp, 0x68]                                                |         var_68h = r2;
    0x08013de4 str r2, [sp, 0x6c]                                                |         var_6ch = r2;
    0x08013de8 b 0x8013b8c                                                       |         goto label_3;
                                                                                 |     }
    0x08013dec cmn fp, 0x5f                                                      |     
                                                                                 |     if (fp == 0x5f) {
    0x08013df0 beq 0x80139dc                                                     |         goto label_2;
                                                                                 |     }
    0x08013df4 cmn fp, 0x42                                                      |     
                                                                                 |     if (fp == 0x42) {
    0x08013df8 beq 0x80139dc                                                     |         goto label_2;
                                                                                 |     }
                                                                                 | label_15:
    0x08013dfc mov r4, 0                                                         |     r4 = 0;
    0x08013e00 b 0x8013c10                                                       |     goto label_0;
                                                                                 | label_5:
    0x08013e5c mvn fp, 0xb                                                       |     
    0x08013e60 b 0x8013c20                                                       |     goto label_4;
                                                                                 | label_8:
    0x08013e8c mvn fp, 0xb                                                       |     
    0x08013e90 b 0x8013c10                                                       |     goto label_0;
                                                                                 | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/cifs/cifs.ko @ 0x802abd8 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.cifs_fill_common_info ()         | void cifs_fill_common_info (int32_t arg1, int32_t arg2) {
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x0802abd8 ldr r3, [r1, 0x20]                |     r3 = *((r1 + 0x20));
    0x0802abdc str r3, [r0, 0x28]                |     *((r0 + 0x28)) = r3;
    0x0802abe0 ldr r2, [r0, 4]                   |     r2 = *((r0 + 4));
    0x0802abe4 ldr r3, [r1, 0x24]                |     r3 = *((r1 + 0x24));
    0x0802abe8 tst r2, 0x10                      |     
    0x0802abec str lr, [sp, -4]!                 |     
    0x0802abf0 str r3, [r0, 0x2c]                |     *((r0 + 0x2c)) = r3;
                                                 |     if ((r2 & 0x10) == 0) {
    0x0802abf4 beq 0x802acc8                     |         goto label_2;
                                                 |     }
    0x0802abf8 ldrh r3, [r1, 0x32]               |     r3 = *((r1 + 0x32));
    0x0802abfc mov ip, 4                         |     
    0x0802ac00 orr r3, r3, 0x4000                |     r3 |= 0x4000;
                                                 | label_1:
    0x0802ac04 strh r3, [r0, 0x30]               |     *((r0 + 0x30)) = r3;
    0x0802ac08 tst r2, 0x400                     |     
    0x0802ac0c ldr r3, [r0]                      |     r3 = *(r0);
    0x0802ac10 str ip, [r0, 0x3c]                |     *((r0 + 0x3c)) = ip;
                                                 |     if ((r2 & 0x400) == 0) {
    0x0802ac14 beq 0x802ac40                     |         goto label_0;
                                                 |     }
    0x0802ac18 ldr ip, [r0, 0x70]                |     ip = *((r0 + 0x70));
    0x0802ac1c cmp ip, 0x80000014                |     
                                                 |     if (ip > 0x80000014) {
    0x0802ac20 bhi 0x802acb8                     |         goto label_3;
                                                 |     }
    0x0802ac24 cmp ip, 0x80000009                |     
                                                 |     if (ip < 0x80000009) {
    0x0802ac28 bls 0x802ad00                     |         goto label_4;
                                                 |     }
    0x0802ac2c sub ip, ip, 0x8000000a            |     
    0x0802ac30 movw lr, 0x501                    |     lr = 0x501;
    0x0802ac34 lsr ip, lr, ip                    |     
    0x0802ac38 tst ip, 1                         |     
                                                 |     if ((ip & 1) != 0) {
    0x0802ac3c bne 0x802acc0                     |         goto label_5;
                                                 |     }
                                                 |     do {
                                                 | label_0:
    0x0802ac40 tst r2, 1                         |         
    0x0802ac44 orr ip, r3, 0x10                  |         
    0x0802ac48 str ip, [r0]                      |         *(r0) = ip;
    0x0802ac4c mov lr, 0x200                     |         
    0x0802ac50 movt lr, 0x1000                   |         lr = 0x10000200;
    0x0802ac54 ldrhne ip, [r0, 0x30]             |         __asm ("ldrhne ip, [r0, 0x30]");
    0x0802ac58 bicne ip, ip, 0x92                |         __asm ("bicne ip, ip, 0x92");
    0x0802ac5c strhne ip, [r0, 0x30]             |         __asm ("strhne ip, [r0, 0x30]");
    0x0802ac60 ldr ip, [r1, 0x34]                |         ip = *((r1 + 0x34));
    0x0802ac64 tst ip, lr                        |         
                                                 |         if ((ip & lr) == 0) {
    0x0802ac68 orrne r3, r3, 0x14                |             r3 |= 0x14;
                                                 |         }
                                                 |         if ((ip & lr) == 0) {
    0x0802ac6c strne r3, [r0]                    |             *(r0) = r3;
                                                 |         }
                                                 |         if ((ip & lr) == 0) {
    0x0802ac70 ldrne ip, [r1, 0x34]              |             ip = *((r1 + 0x34));
                                                 |         }
    0x0802ac74 tst ip, 0x80                      |         
    0x0802ac78 popeq {pc}                        |         
    0x0802ac7c tst r2, 4                         |         
    0x0802ac80 popeq {pc}                        |         
    0x0802ac84 ldr r3, [r0, 0x10]                |         r3 = *((r0 + 0x10));
    0x0802ac88 ldr r2, [r0, 0x14]                |         r2 = *((r0 + 0x14));
    0x0802ac8c orrs r3, r3, r2                   |         r3 |= r2;
                                                 |         if (r3 != r3) {
    0x0802ac90 moveq r2, 1                       |             r2 = 1;
                                                 |         }
                                                 |         if (r3 != r3) {
    0x0802ac94 streq r2, [r0, 0x3c]              |             *((r0 + 0x3c)) = r2;
                                                 |         }
    0x0802ac98 ldrheq r3, [r0, 0x30]             |         __asm ("ldrheq r3, [r0, 0x30]");
                                                 |         if (r3 == r3) {
    0x0802ac9c ldrne r3, [r0]                    |             r3 = *(r0);
                                                 |         }
    0x0802aca0 ubfxeq r3, r3, 0, 0xc             |         __asm ("ubfxeq r3, r3, 0, 0xc");
                                                 |         if (r3 == r3) {
    0x0802aca4 orrne r3, r3, 4                   |             r3 |= 4;
                                                 |         }
                                                 |         if (r3 != r3) {
    0x0802aca8 orreq r3, r3, 0x1000              |             r3 |= 0x1000;
                                                 |         }
                                                 |         if (r3 == r3) {
    0x0802acac strne r3, [r0]                    |             *(r0) = r3;
                                                 |         }
    0x0802acb0 strheq r3, [r0, 0x30]             |         __asm ("strheq r3, [r0, 0x30]");
    0x0802acb4 pop {pc}                          |         
                                                 | label_3:
    0x0802acb8 cmp ip, 0xa000000c                |         
    0x0802acbc bne 0x802ac40                     |         
                                                 |     } while (ip != 0xa000000c);
                                                 | label_5:
    0x0802acc0 orr r3, r3, 4                     |     r3 |= 4;
    0x0802acc4 b 0x802ac40                       |     goto label_0;
                                                 | label_2:
    0x0802acc8 ldr ip, [r0, 0x70]                |     ip = *((r0 + 0x70));
    0x0802accc mov lr, 0x1d                      |     
    0x0802acd0 movt lr, 0xa000                   |     lr = 0x-5fffffe3;
    0x0802acd4 ldrh r3, [r1, 0x30]               |     r3 = *((r1 + 0x30));
    0x0802acd8 cmp ip, lr                        |     
                                                 |     if (ip == lr) {
    0x0802acdc beq 0x802ad68                     |         goto label_6;
                                                 |     }
    0x0802ace0 sub ip, ip, 0x80000023            |     
    0x0802ace4 cmp ip, 3                         |     
                                                 |     if (ip > 3) {
                                                 |         /* switch table (4 cases) at 0x802acf0 */
    0x0802ace8 ldrls pc, [pc, ip, lsl 2]         |         offset_0 = ip << 2;
                                                 |         pc = *((pc + offset_0));
                                                 |     }
    0x0802acec b 0x802ad7c                       |     goto label_7;
                                                 | label_4:
    0x0802ad00 cmp ip, 0                         |     
                                                 |     if (ip != 0) {
    0x0802ad04 orreq r3, r3, 4                   |         r3 |= 4;
                                                 |     }
    0x0802ad08 b 0x802ac40                       |     goto label_0;
                                                 |     do {
    0x0802ad1c strh r3, [r0, 0x30]               |         *((r0 + 0x30)) = r3;
    0x0802ad20 str ip, [r0, 0x3c]                |         *((r0 + 0x3c)) = ip;
    0x0802ad24 ldr r3, [r0]                      |         r3 = *(r0);
    0x0802ad28 b 0x802ac40                       |         goto label_0;
                                                 | label_6:
    0x0802ad68 ldrh ip, [r0, 0x30]               |         ip = *((r0 + 0x30));
    0x0802ad6c orr r3, r3, ip                    |         r3 |= ip;
    0x0802ad70 mov ip, 0xa                       |         
    0x0802ad74 orr r3, r3, 0xa000                |         r3 |= 0xa000;
    0x0802ad78 b 0x802ad1c                       |         
                                                 |     } while (1);
                                                 | label_7:
    0x0802ad7c orr r3, r3, 0x8000                |     r3 |= 0x8000;
    0x0802ad80 mov ip, 8                         |     
    0x0802ad84 b 0x802ac04                       |     goto label_1;
                                                 | }
    ; assembly                                                           | /* r2dec pseudo code output */
                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/cifs/cifs.ko @ 0x802a9d0 */
                                                                         | #include <stdint.h>
                                                                         |  
    ; (fcn) sym.cifs_fill_dirent_posix ()                                | void cifs_fill_dirent_posix (int32_t arg1, int32_t arg2) {
                                                                         |     int32_t var_0h;
                                                                         |     int32_t var_90h;
                                                                         |     int32_t var_94h;
                                                                         |     int32_t var_9ch;
                                                                         |     r0 = arg1;
                                                                         |     r1 = arg2;
    0x0802a9d0 push {r4, r5, lr}                                         |     
    0x0802a9d4 mov r4, r0                                                |     r4 = r0;
    0x0802a9d8 mov r5, r1                                                |     r5 = r1;
    0x0802a9dc sub sp, sp, 0x9c                                          |     
    0x0802a9e0 mov r0, r1                                                |     r0 = r1;
    0x0802a9e4 mov r2, sp                                                |     r2 = sp;
    0x0802a9e8 mov r1, 0                                                 |     r1 = 0;
    0x0802a9ec stmdaeq r4, {r2, r3, r6, r8, ip}                          |     __asm ("stmdaeq r4, {r2, r3, r6, r8, ip}");
    0x0802a9f0 cmp r0, 0                                                 |     
                                                                         |     if (r0 < 0) {
    0x0802a9f4 blt 0x802aa24                                             |         goto label_1;
                                                                         |     }
    0x0802a9f8 ldr r2, [sp, 0x94]                                        |     r2 = var_94h;
    0x0802a9fc ldr r3, [sp, 0x90]                                        |     r3 = var_90h;
    0x0802aa00 strd r2, r3, [r4]                                         |     __asm ("strd r2, r3, [r4]");
    0x0802aa04 ldr r3, [r5, 4]                                           |     r3 = *((r5 + 4));
    0x0802aa08 str r3, [r4, 8]                                           |     *((r4 + 8)) = r3;
    0x0802aa0c ldr r3, [r5, 0x3c]                                        |     r3 = *((r5 + 0x3c));
    0x0802aa10 ldr r2, [r5, 0x40]                                        |     r2 = *((r5 + 0x40));
    0x0802aa14 str r2, [r4, 0x14]                                        |     *((r4 + 0x14)) = r2;
    0x0802aa18 str r3, [r4, 0x10]                                        |     *((r4 + 0x10)) = r3;
                                                                         |     do {
                                                                         | label_0:
    0x0802aa1c add sp, sp, 0x9c                                          |         
    0x0802aa20 pop {r4, r5, pc}                                          |         
                                                                         | label_1:
    0x0802aa24 ldr r1, [pc, 0x1c]                                        |         r1 = *(0x802aa44);
    0x0802aa28 ldr r0, [pc, 0x1c]                                        |         r0 = "cifs_remap_file_range";
    0x0802aa2c stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}          |         __asm ("stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}");
    0x0802aa30 cmp r0, 0                                                 |         
    0x0802aa34 beq 0x802aa1c                                             |         
                                                                         |     } while (r0 == 0);
    0x0802aa38 stmdaeq r5, {r3, r5, r8, sb, fp, ip, pc}                  |     __asm ("stmdaeq r5, {r3, r5, r8, sb, fp, ip, pc}");
    0x0802aa3c stmdaeq r5, {r3, r5, r8, sb, fp, ip, pc}                  |     __asm ("stmdaeq r5, {r3, r5, r8, sb, fp, ip, pc}");
    0x0802aa40 stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}              |     __asm ("stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}");
    0x0802aa44 b 0x802aa1c                                               |     goto label_0;
                                                                         | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/cifs/cifs.ko @ 0x802aa50 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.cifs_fill_dirent ()                              | void cifs_fill_dirent (int32_t arg1, int32_t arg2) {
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x0802aa50 push {r4, r5, r6, lr}                             |     
    0x0802aa54 movw ip, 0x105                                    |     ip = 0x105;
    0x0802aa58 mov r4, 0                                         |     r4 = 0;
    0x0802aa5c mov r5, r0                                        |     r5 = r0;
    0x0802aa60 mov r6, r1                                        |     r6 = r1;
    0x0802aa64 cmp r2, ip                                        |     
    0x0802aa68 str r4, [r0]                                      |     *(r0) = r4;
    0x0802aa6c str r4, [r0, 4]                                   |     *((r0 + 4)) = r4;
    0x0802aa70 str r4, [r0, 8]                                   |     *((r0 + 8)) = r4;
    0x0802aa74 str r4, [r0, 0xc]                                 |     *((r0 + 0xc)) = r4;
    0x0802aa78 str r4, [r0, 0x10]                                |     *((r0 + 0x10)) = r4;
    0x0802aa7c str r4, [r0, 0x14]                                |     *((r0 + 0x14)) = r4;
                                                                 |     if (r2 <= ip) {
    0x0802aa80 bhi 0x802aab4                                     |         
    0x0802aa84 cmp r2, 0x100                                     |         
                                                                 |         if (r2 < 0x100) {
    0x0802aa88 bls 0x802aafc                                     |             goto label_0;
                                                                 |         }
    0x0802aa8c sub r2, r2, 0x100                                 |         r2 -= 0x100;
    0x0802aa90 sub r2, r2, 1                                     |         r2--;
    0x0802aa94 cmp r2, 4                                         |         
                                                                 |         if (r2 > 4) {
                                                                 |             /* switch table (5 cases) at 0x802aaa0 */
    0x0802aa98 ldrls pc, [pc, r2, lsl 2]                         |             offset_0 = r2 << 2;
                                                                 |             pc = *((pc + offset_0));
                                                                 |         }
    0x0802aa9c b 0x802ab18                                       |         goto label_1;
                                                                 |     }
    0x0802aab4 movw r1, 0x202                                    |     r1 = 0x202;
    0x0802aab8 cmp r2, r1                                        |     
                                                                 |     if (r2 != r1) {
    0x0802aabc bne 0x802ab18                                     |         goto label_1;
                                                                 |     }
    0x0802aac0 add r0, r6, 0x6c                                  |     r0 = r6 + 0x6c;
    0x0802aac4 cmp r3, 0                                         |     
    0x0802aac8 str r0, [r5]                                      |     *(r5) = r0;
                                                                 |     if (r3 == 0) {
    0x0802aacc beq 0x802ab80                                     |         goto label_2;
                                                                 |     }
    0x0802aad0 add r3, r6, 0x6a                                  |     r3 = r6 + 0x6a;
    0x0802aad4 movw r1, 0x1001                                   |     r1 = 0x1001;
    0x0802aad8 b 0x802aae8                                       |     
                                                                 |     while (r2 != 0) {
    0x0802aadc add r4, r4, 1                                     |         r4++;
    0x0802aae0 cmp r4, r1                                        |         
                                                                 |         if (r4 == r1) {
    0x0802aae4 beq 0x802abd0                                     |             goto label_3;
                                                                 |         }
    0x0802aae8 ldrh r2, [r3, 2]!                                 |         r2 = *((r3 += 2));
    0x0802aaec cmp r2, 0                                         |         
    0x0802aaf0 bne 0x802aadc                                     |         
                                                                 |     }
    0x0802aaf4 lsl r4, r4, 1                                     |     r4 <<= 1;
    0x0802aaf8 b 0x802ab8c                                       |     goto label_4;
                                                                 | label_0:
    0x0802aafc cmp r2, 1                                         |     
                                                                 |     if (r2 == 1) {
    0x0802ab00 beq 0x802abb0                                     |         goto label_5;
                                                                 |     }
    0x0802ab04 cmp r2, 0x64                                      |     
                                                                 |     if (r2 == 0x64) {
    0x0802ab08 bne 0x802ab18                                     |         
    0x0802ab0c bl 0x802a9d0                                      |         cifs_fill_dirent_posix ();
    0x0802ab10 mov r0, r4                                        |         r0 = r4;
    0x0802ab14 pop {r4, r5, r6, pc}                              |         
                                                                 |     }
                                                                 | label_1:
    0x0802ab18 mvn r0, 0x15                                      |     r0 = ~0x15;
    0x0802ab1c pop {r4, r5, r6, pc}                              |     
                                                                 | label_2:
    0x0802ab80 mov r1, 0x1000                                    |     r1 = 0x1000;
    0x0802ab84 stmdaeq sb, {r0, r5, r7, sl, fp, sp, pc}          |     __asm ("stmdaeq sb, {r0, r5, r7, sl, fp, sp, pc}");
    0x0802ab88 mov r4, r0                                        |     r4 = r0;
                                                                 |     do {
                                                                 | label_4:
    0x0802ab8c str r4, [r5, 4]                                   |         *((r5 + 4)) = r4;
    0x0802ab90 mov r0, 0                                         |         r0 = 0;
    0x0802ab94 ldr r3, [r6, 4]                                   |         r3 = *((r6 + 4));
    0x0802ab98 str r3, [r5, 8]                                   |         *((r5 + 8)) = r3;
    0x0802ab9c ldr r3, [r6, 0x54]                                |         r3 = *((r6 + 0x54));
    0x0802aba0 ldr r2, [r6, 0x58]                                |         r2 = *((r6 + 0x58));
    0x0802aba4 str r2, [r5, 0x14]                                |         *((r5 + 0x14)) = r2;
    0x0802aba8 str r3, [r5, 0x10]                                |         *((r5 + 0x10)) = r3;
    0x0802abac pop {r4, r5, r6, pc}                              |         
                                                                 | label_5:
    0x0802abb0 add r3, r1, 0x1b                                  |         r3 = r1 + 0x1b;
    0x0802abb4 str r3, [r0]                                      |         *(r0) = r3;
    0x0802abb8 mov r0, r4                                        |         r0 = r4;
    0x0802abbc ldrb r3, [r1, 0x1a]                               |         r3 = *((r1 + 0x1a));
    0x0802abc0 str r3, [r5, 4]                                   |         *((r5 + 4)) = r3;
    0x0802abc4 ldr r3, [r1]                                      |         r3 = *(r1);
    0x0802abc8 str r3, [r5, 8]                                   |         *((r5 + 8)) = r3;
    0x0802abcc pop {r4, r5, r6, pc}                              |         
                                                                 | label_3:
    0x0802abd0 movw r4, 0x2002                                   |         r4 = 0x2002;
    0x0802abd4 b 0x802ab8c                                       |         
                                                                 |     } while (1);
                                                                 | }
    ; assembly                                                               | /* r2dec pseudo code output */
                                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/cifs/cifs.ko @ 0x8028980 */
                                                                             | #include <stdint.h>
                                                                             |  
    ; (fcn) sym.cifs_mapchar ()                                              | void cifs_mapchar (int32_t arg1, int32_t arg2) {
                                                                             |     int32_t var_0h;
                                                                             |     int32_t var_8h;
                                                                             |     r0 = arg1;
                                                                             |     r1 = arg2;
    0x08028980 push {r4, r5, r6, lr}                                         |     
    0x08028984 cmp r3, 1                                                     |     
    0x08028988 mov r6, r2                                                    |     r6 = r2;
    0x0802898c sub sp, sp, 8                                                 |     
    0x08028990 ldrh r2, [r1]                                                 |     r2 = *(r1);
    0x08028994 mov r5, r1                                                    |     r5 = r1;
    0x08028998 mov r4, r0                                                    |     r4 = r0;
                                                                             |     if (r3 == 1) {
    0x0802899c beq 0x80289f8                                                 |         goto label_3;
                                                                             |     }
    0x080289a0 cmp r3, 2                                                     |     
                                                                             |     if (r3 == 2) {
    0x080289a4 beq 0x8028a78                                                 |         goto label_4;
                                                                             |     }
                                                                             | label_0:
    0x080289a8 mov r0, r2                                                    |     r0 = r2;
    0x080289ac ldr r3, [r6, 8]                                               |     r3 = *((r6 + 8));
    0x080289b0 mov r1, r4                                                    |     r1 = r4;
    0x080289b4 mov r2, 6                                                     |     r2 = 6;
    0x080289b8 blx r3                                                        |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x080289bc cmp r0, 0                                                     |     
    0x080289c0 ble 0x80289cc                                                 |     
                                                                             |     while (r1 < 0x1e) {
                                                                             | label_1:
    0x080289c4 add sp, sp, 8                                                 |         
    0x080289c8 pop {r4, r5, r6, pc}                                          |         
    0x080289cc ldr r0, [r6]                                                  |         r0 = *(r6);
    0x080289d0 stmdaeq r5, {r3, r5, r6, sb, fp, ip, lr}                      |         __asm ("stmdaeq r5, {r3, r5, r6, sb, fp, ip, lr}");
    0x080289d4 stmdaeq r5, {r3, r5, r6, sb, fp, ip, lr}                      |         __asm ("stmdaeq r5, {r3, r5, r6, sb, fp, ip, lr}");
    0x080289d8 stmdaeq sb, {r0, r2, r3, r4, r5, r6, sl, fp, sp, pc}          |         __asm ("stmdaeq sb, {r0, r2, r3, r4, r5, r6, sl, fp, sp, pc}");
    0x080289dc cmp r0, 0                                                     |         
                                                                             |         if (r0 == 0) {
    0x080289e0 beq 0x8028a50                                                 |             goto label_5;
                                                                             |         }
                                                                             | label_2:
    0x080289e4 mov r3, 0x3f                                                  |         r3 = 0x3f;
    0x080289e8 mov r0, 1                                                     |         r0 = 1;
    0x080289ec strb r3, [r4]                                                 |         *(r4) = r3;
    0x080289f0 add sp, sp, 8                                                 |         
    0x080289f4 pop {r4, r5, r6, pc}                                          |         
                                                                             | label_3:
    0x080289f8 sub r1, r2, 0xf000                                            |         r1 = r2 - 0xf000;
    0x080289fc sub r1, r1, 1                                                 |         r1--;
    0x08028a00 uxth r1, r1                                                   |         r1 = (int16_t) r1;
    0x08028a04 cmp r1, 0x1e                                                  |         
                                                                             |         if (r1 > 0x1e) {
    0x08028a08 strbls r2, [r4]                                               |             *(r4) = r2;
                                                                             |         }
                                                                             |         if (r1 > 0x1e) {
    0x08028a0c movls r0, r3                                                  |             r0 = r3;
                                                                             |         }
    0x08028a10 bls 0x80289c4                                                 |         
                                                                             |     }
    0x08028a14 sub r3, r2, 0xf000                                            |     r3 = r2 - 0xf000;
    0x08028a18 sub r3, r3, 0x20                                              |     r3 -= 0x20;
    0x08028a1c cmp r3, 9                                                     |     
                                                                             |     if (r3 > 9) {
                                                                             |         /* switch table (10 cases) at 0x8028a28 */
    0x08028a20 ldrls pc, [pc, r3, lsl 2]                                     |         offset_0 = r3 << 2;
                                                                             |         pc = *((pc + offset_0));
                                                                             |     }
    0x08028a24 b 0x80289a8                                                   |     goto label_0;
                                                                             | label_5:
    0x08028a50 mov r1, 6                                                     |     r1 = 6;
    0x08028a54 mov r3, r4                                                    |     r3 = r4;
    0x08028a58 str r1, [sp]                                                  |     *(sp) = r1;
    0x08028a5c mov r0, r5                                                    |     r0 = r5;
    0x08028a60 mov r2, 1                                                     |     r2 = 1;
    0x08028a64 mov r1, 3                                                     |     r1 = 3;
    0x08028a68 stmdaeq sb, {r0, r2, r7, sb, sl, fp, sp, pc}                  |     __asm ("stmdaeq sb, {r0, r2, r7, sb, sl, fp, sp, pc}");
    0x08028a6c cmp r0, 0                                                     |     
                                                                             |     if (r0 > 0) {
    0x08028a70 bgt 0x80289c4                                                 |         goto label_1;
                                                                             |     }
    0x08028a74 b 0x80289e4                                                   |     goto label_2;
                                                                             | label_4:
    0x08028a78 movw r3, 0xf03f                                               |     r3 = 0xf03f;
    0x08028a7c cmp r2, r3                                                    |     
                                                                             |     if (r2 > r3) {
    0x08028a80 bhi 0x8028afc                                                 |         goto label_6;
                                                                             |     }
    0x08028a84 movw r3, 0xf029                                               |     r3 = 0xf029;
    0x08028a88 cmp r2, r3                                                    |     
                                                                             |     if (r2 < r3) {
    0x08028a8c bls 0x80289a8                                                 |         goto label_0;
                                                                             |     }
    0x08028a90 sub r3, r2, 0xf000                                            |     r3 = r2 - 0xf000;
    0x08028a94 sub r3, r3, 0x2a                                              |     r3 -= 0x2a;
    0x08028a98 cmp r3, 0x15                                                  |     
                                                                             |     if (r3 > 0x15) {
                                                                             |         /* switch table (22 cases) at 0x8028aa4 */
    0x08028a9c ldrls pc, [pc, r3, lsl 2]                                     |         offset_1 = r3 << 2;
                                                                             |         pc = *((pc + offset_1));
                                                                             |     }
    0x08028aa0 b 0x80289a8                                                   |     goto label_0;
                                                                             | label_6:
    0x08028afc movw r3, 0xf07c                                               |     r3 = 0xf07c;
    0x08028b00 cmp r2, r3                                                    |     
                                                                             |     if (r2 != r3) {
    0x08028b04 bne 0x80289a8                                                 |         goto label_0;
                                                                             |     }
    0x08028b08 mov r3, 0x7c                                                  |     r3 = 0x7c;
    0x08028b0c mov r0, 1                                                     |     r0 = 1;
    0x08028b10 strb r3, [r4]                                                 |     *(r4) = r3;
    0x08028b14 b 0x80289c4                                                   |     goto label_1;
                                                                             | }
    ; assembly                                                           | /* r2dec pseudo code output */
                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/cifs/cifs.ko @ 0x8046070 */
                                                                         | #include <stdint.h>
                                                                         |  
    ; (fcn) sym.cifs_parse_cache_flavor ()                               | void cifs_parse_cache_flavor (int32_t arg1, int32_t arg2) {
                                                                         |     int32_t var_0h;
                                                                         |     int32_t var_1ch;
                                                                         |     r0 = arg1;
                                                                         |     r1 = arg2;
    0x08046070 push {r4, r5, lr}                                         |     
    0x08046074 mov r5, r1                                                |     r5 = r1;
    0x08046078 ldr r1, [pc, 0xe0]                                        |     r1 = *(0x804615c);
    0x0804607c sub sp, sp, 0x1c                                          |     
    0x08046080 mov r4, r0                                                |     r4 = r0;
    0x08046084 mov r2, sp                                                |     r2 = sp;
    0x08046088 stmdaeq sb, {r0, r2, r4, r5, r7, sl, fp, sp, pc}          |     __asm ("stmdaeq sb, {r0, r2, r4, r5, r7, sl, fp, sp, pc}");
    0x0804608c cmp r0, 4                                                 |     
                                                                         |     if (r0 > 4) {
                                                                         |         /* switch table (5 cases) at 0x8046098 */
    0x08046090 ldrls pc, [pc, r0, lsl 2]                                 |         offset_0 = r0 << 2;
                                                                         |         pc = *((pc + offset_0));
                                                                         |     }
    0x08046094 b 0x8046130                                               |     
                                                                         |     while (r0 == 0) {
                                                                         | label_0:
    0x080460c0 add sp, sp, 0x1c                                          |         
    0x080460c4 pop {r4, r5, pc}                                          |         
    0x08046130 ldr r1, [pc, 0x2c]                                        |         r1 = "cifs_remap_file_range";
    0x08046134 ldr r0, [pc, 0x2c]                                        |         r0 = "cifs_remap_file_range";
    0x08046138 stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}          |         __asm ("stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}");
    0x0804613c cmp r0, 0                                                 |         
                                                                         |         if (r0 != 0) {
    0x08046140 moveq r0, 1                                               |             r0 = 1;
                                                                         |         }
    0x08046144 beq 0x80460c0                                             |         
                                                                         |     }
    0x08046148 mov r1, r4                                                |     r1 = r4;
    0x0804614c stmdaeq r6, {r3, r7, r8, sl, fp, ip, pc}                  |     __asm ("stmdaeq r6, {r3, r7, r8, sl, fp, ip, pc}");
    0x08046150 stmdaeq r6, {r3, r7, r8, sl, fp, ip, pc}                  |     __asm ("stmdaeq r6, {r3, r7, r8, sl, fp, ip, pc}");
    0x08046154 stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}              |     __asm ("stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}");
    0x08046158 mov r0, 1                                                 |     r0 = 1;
    0x0804615c b 0x80460c0                                               |     goto label_0;
                                                                         | }
    ; assembly                                                           | /* r2dec pseudo code output */
                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/cifs/cifs.ko @ 0x8045f20 */
                                                                         | #include <stdint.h>
                                                                         |  
    ; (fcn) sym.cifs_parse_security_flavors ()                           | void cifs_parse_security_flavors (int32_t arg1, int32_t arg2) {
                                                                         |     int32_t var_0h;
                                                                         |     int32_t var_1ch;
                                                                         |     r0 = arg1;
                                                                         |     r1 = arg2;
    0x08045f20 push {r4, r5, lr}                                         |     
    0x08045f24 mov r3, 0                                                 |     r3 = 0;
    0x08045f28 mov r4, r1                                                |     r4 = r1;
    0x08045f2c sub sp, sp, 0x1c                                          |     
    0x08045f30 str r3, [r1, 0x4c]                                        |     *((r1 + 0x4c)) = r3;
    0x08045f34 strb r3, [r1, 0x50]                                       |     *((r1 + 0x50)) = r3;
    0x08045f38 mov r2, sp                                                |     r2 = sp;
    0x08045f3c ldr r1, [pc, 0x11c]                                       |     r1 = *(0x804605c);
    0x08045f40 mov r5, r0                                                |     r5 = r0;
    0x08045f44 stmdaeq sb, {r0, r2, r4, r5, r7, sl, fp, sp, pc}          |     __asm ("stmdaeq sb, {r0, r2, r4, r5, r7, sl, fp, sp, pc}");
    0x08045f48 cmp r0, 0xa                                               |     
                                                                         |     if (r0 > 0xa) {
                                                                         |         /* switch table (11 cases) at 0x8045f54 */
    0x08045f4c ldrls pc, [pc, r0, lsl 2]                                 |         offset_0 = r0 << 2;
                                                                         |         pc = *((pc + offset_0));
                                                                         |     }
    0x08045f50 b 0x8046024                                               |     
                                                                         |     while (r0 == 0) {
                                                                         | label_0:
    0x08046018 mov r0, 1                                                 |         r0 = 1;
    0x0804601c add sp, sp, 0x1c                                          |         
    0x08046020 pop {r4, r5, pc}                                          |         
    0x08046024 ldr r1, [pc, 0x38]                                        |         r1 = "cifs_remap_file_range";
    0x08046028 ldr r0, [pc, 0x3c]                                        |         r0 = .data;
    0x0804602c stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}          |         __asm ("stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}");
    0x08046030 cmp r0, 0                                                 |         
    0x08046034 beq 0x8046018                                             |         
                                                                         |     }
    0x08046038 mov r1, r5                                                |     r1 = r5;
    0x0804603c stmdaeq r6, {r5, r6, r8, sl, fp, ip, pc}                  |     __asm ("stmdaeq r6, {r5, r6, r8, sl, fp, ip, pc}");
    0x08046040 stmdaeq r6, {r5, r6, r8, sl, fp, ip, pc}                  |     __asm ("stmdaeq r6, {r5, r6, r8, sl, fp, ip, pc}");
    0x08046044 stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}              |     __asm ("stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}");
    0x08046048 b 0x8046018                                               |     goto label_0;
                                                                         | }
    ; assembly                                                           | /* r2dec pseudo code output */
                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/cifs/cifs.ko @ 0x8045c78 */
                                                                         | #include <stdint.h>
                                                                         |  
    ; (fcn) sym.cifs_parse_smb_version ()                                | void cifs_parse_smb_version (int32_t arg1, int32_t arg2) {
                                                                         |     int32_t var_0h;
                                                                         |     int32_t var_1ch;
                                                                         |     r0 = arg1;
                                                                         |     r1 = arg2;
    0x08045c78 push {r4, r5, r6, r7, lr}                                 |     
    0x08045c7c mov r6, r2                                                |     r6 = r2;
    0x08045c80 mov r5, r1                                                |     r5 = r1;
    0x08045c84 sub sp, sp, 0x1c                                          |     
    0x08045c88 stmdaeq r5, {r2, r7, sl, fp, ip}                          |     __asm ("stmdaeq r5, {r2, r7, sl, fp, ip}");
    0x08045c8c stmdaeq r5, {r2, r7, sl, fp, ip}                          |     __asm ("stmdaeq r5, {r2, r7, sl, fp, ip}");
    0x08045c90 mov r2, sp                                                |     r2 = sp;
    0x08045c94 mov r7, r0                                                |     r7 = r0;
    0x08045c98 stmdaeq sb, {r0, r2, r4, r5, r7, sl, fp, sp, pc}          |     __asm ("stmdaeq sb, {r0, r2, r4, r5, r7, sl, fp, sp, pc}");
    0x08045c9c sub r3, r0, 1                                             |     r3 = r0 - 1;
    0x08045ca0 cmp r3, 7                                                 |     
                                                                         |     if (r3 > 7) {
                                                                         |         /* switch table (8 cases) at 0x8045cac */
    0x08045ca4 ldrls pc, [pc, r3, lsl 2]                                 |         offset_0 = r3 << 2;
                                                                         |         pc = *((pc + offset_0));
                                                                         |     }
    0x08045ca8 b 0x8045edc                                               |     goto label_1;
                                                                         | label_0:
    0x08045ce4 mov r0, r4                                                |     r0 = r4;
    0x08045ce8 add sp, sp, 0x1c                                          |     
    0x08045cec pop {r4, r5, r6, r7, pc}                                  |     
                                                                         |     do {
    0x08045e40 mov r4, 1                                                 |         r4 = 1;
    0x08045e44 mov r0, r4                                                |         r0 = r4;
    0x08045e48 add sp, sp, 0x1c                                          |         
    0x08045e4c pop {r4, r5, r6, r7, pc}                                  |         
                                                                         | label_1:
    0x08045edc ldr r1, [pc, 0x24]                                        |         r1 = *(0x8045f04);
    0x08045ee0 ldr r0, [pc, 0x34]                                        |         r0 = .data;
    0x08045ee4 stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}          |         __asm ("stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}");
    0x08045ee8 cmp r0, 0                                                 |         
    0x08045eec beq 0x8045e40                                             |         
                                                                         |     } while (r0 == 0);
    0x08045ef0 mov r1, r7                                                |     r1 = r7;
    0x08045ef4 stmdaeq r6, {r8, sl, fp, ip, pc}                          |     __asm ("stmdaeq r6, {r8, sl, fp, ip, pc}");
    0x08045ef8 stmdaeq r6, {r8, sl, fp, ip, pc}                          |     __asm ("stmdaeq r6, {r8, sl, fp, ip, pc}");
    0x08045efc mov r4, 1                                                 |     r4 = 1;
    0x08045f00 stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}              |     __asm ("stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}");
    0x08045f04 b 0x8045ce4                                               |     goto label_0;
                                                                         | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/cifs/cifs.ko @ 0x8014b4c */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) sym.cifs_read_flock.constprop.0 ()           | void cifs_read_flock_constprop_0 (int32_t arg_8h, int32_t arg_ch, int32_t arg1, int32_t arg2) {
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
    0x08014b4c push {r4, lr}                             |     
    0x08014b50 ldr lr, [sp, 0xc]                         |     
    0x08014b54 ldr ip, [r0, 0x28]                        |     ip = *(arg_8hx28);
    0x08014b58 tst ip, 0x80                              |     
                                                         |     if ((ip & 0x80) == 0) {
    0x08014b5c movne ip, 1                               |         
                                                         |     }
                                                         |     if ((ip & 0x80) == 0) {
    0x08014b60 ldrne r4, [sp, 8]                         |         r4 = *(arg_8h);
                                                         |     }
                                                         |     if ((ip & 0x80) == 0) {
    0x08014b64 strbne ip, [r4]                           |         *(r4) = ip;
                                                         |     }
    0x08014b68 ldr ip, [lr, 0x28]                        |     ip = *((lr + 0x28));
    0x08014b6c ldr ip, [ip, 0xc]                         |     ip = *((ip + 0xc));
    0x08014b70 str ip, [r1]                              |     *(r1) = ip;
    0x08014b74 ldrb r0, [r0, 0x2c]                       |     r0 = *((r0 + 0x2c));
    0x08014b78 cmp r0, 1                                 |     
                                                         |     if (r0 != 1) {
    0x08014b7c beq 0x8014bcc                             |         
    0x08014b80 cmp r0, 8                                 |         
                                                         |         if (r0 > 8) {
                                                         |             /* switch table (9 cases) at 0x8014b8c */
    0x08014b84 ldrls pc, [pc, r0, lsl 2]                 |             offset_0 = r0 << 2;
                                                         |             pc = *((pc + offset_0));
                                                         |         }
    0x08014b88 b 0x8014bc8                               |         
    0x08014bc8 pop {r4, pc}                              |         
                                                         |     }
    0x08014bcc ldr r3, [lr, 0x28]                        |     r3 = *((lr + 0x28));
    0x08014bd0 ldr r3, [r3, 0x10]                        |     r3 = *((r3 + 0x10));
    0x08014bd4 orr r3, r3, ip                            |     r3 |= ip;
    0x08014bd8 str r3, [r1]                              |     *(r1) = r3;
    0x08014bdc str r0, [r2]                              |     *(r2) = r0;
    0x08014be0 pop {r4, pc}                              |     
                                                         | }
    ; assembly                                                                   | /* r2dec pseudo code output */
                                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/cifs/cifs.ko @ 0x800fb2c */
                                                                                 | #include <stdint.h>
                                                                                 |  
                                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                                 |  
    ; (fcn) sym.cifs_setup_volume_info ()                                        | void cifs_setup_volume_info (int32_t arg_1h, int32_t arg1, int32_t arg2) {
                                                                                 |     int32_t var_0h;
                                                                                 |     int32_t var_4h;
                                                                                 |     int32_t var_8h;
                                                                                 |     int32_t var_ch;
                                                                                 |     int32_t var_10h;
                                                                                 |     int32_t var_14h;
                                                                                 |     int32_t var_18h;
                                                                                 |     int32_t var_1ch;
                                                                                 |     int32_t var_20h;
                                                                                 |     int32_t var_24h;
                                                                                 |     int32_t var_28h;
                                                                                 |     int32_t var_2ch;
                                                                                 |     int32_t var_30h;
                                                                                 |     int32_t var_34h;
                                                                                 |     int32_t var_3eh;
                                                                                 |     int32_t var_3fh;
                                                                                 |     int32_t var_40h;
                                                                                 |     int32_t var_48h;
                                                                                 |     int32_t var_64h;
                                                                                 |     r0 = arg1;
                                                                                 |     r1 = arg2;
    0x0800fb2c push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                         |     
    0x0800fb30 mov r4, r0                                                        |     r4 = r0;
    0x0800fb34 mov fp, r1                                                        |     
    0x0800fb38 sub sp, sp, 0x64                                                  |     
    0x0800fb3c mov r1, 0                                                         |     r1 = 0;
    0x0800fb40 mov sb, r2                                                        |     sb = r2;
    0x0800fb44 movw r6, 0xffed                                                   |     
    0x0800fb48 movt r6, 0xffff                                                   |     r6 = 0xffffffed;
    0x0800fb4c mov r2, 0x1b0                                                     |     r2 = 0x1b0;
    0x0800fb50 str r3, [sp, 8]                                                   |     var_8h = r3;
    0x0800fb54 mov r3, sp                                                        |     r3 = sp;
    0x0800fb58 bic r3, r3, 0x1fc0                                                |     r3 = BIT_MASK (r3, 0x1fc0);
    0x0800fb5c add sl, r0, 0x13                                                  |     sl = r0 + 0x13;
    0x0800fb60 bic r3, r3, 0x3f                                                  |     r3 = BIT_MASK (r3, 0x3f);
    0x0800fb64 sub r6, r6, r0                                                    |     r6 -= r0;
    0x0800fb68 strb r1, [sp, 0x3f]                                               |     var_3fh = r1;
    0x0800fb6c stmdaeq sb, {r0, r2, r3, r4, r7, sl, fp, sp, pc}                  |     __asm ("stmdaeq sb, {r0, r2, r3, r4, r7, sl, fp, sp, pc}");
    0x0800fb70 stmdaeq sb, {r0, r2, r3, r4, r7, sl, fp, sp, pc}                  |     __asm ("stmdaeq sb, {r0, r2, r3, r4, r7, sl, fp, sp, pc}");
    0x0800fb74 str sl, [sp, 4]                                                   |     var_4h = sl;
    0x0800fb78 ldr r3, [r3, 0xc]                                                 |     r3 = *((r3 + 0xc));
    0x0800fb7c ldr r3, [r3, 0x37c]                                               |     r3 = *((r3 + 0x37c));
    0x0800fb80 ldr r5, [r3, 4]                                                   |     r5 = *((r3 + 4));
    0x0800fb84 mov r3, 0x2c                                                      |     r3 = 0x2c;
    0x0800fb88 strb r3, [sp, 0x3e]                                               |     var_3eh = r3;
    0x0800fb8c stmdaeq sb, {r0, r2, r4, r5, r6, r8, sb, fp, sp, pc}              |     __asm ("stmdaeq sb, {r0, r2, r4, r5, r6, r8, sb, fp, sp, pc}");
    0x0800fb90 add r8, r5, 0x45                                                  |     r8 = r5 + 0x45;
    0x0800fb94 movw r3, 0x2020                                                   |     
    0x0800fb98 movt r3, 0x2020                                                   |     r3 = 0x20202020;
    0x0800fb9c add r5, r5, 0x44                                                  |     r5 += 0x44;
    0x0800fba0 str r3, [r4, 0x1c]                                                |     *((r4 + 0x1c)) = r3;
    0x0800fba4 str r3, [r4, 0x14]                                                |     *((r4 + 0x14)) = r3;
    0x0800fba8 str r3, [r4, 0x18]                                                |     *((r4 + 0x18)) = r3;
    0x0800fbac str r3, [r4, 0x1f]                                                |     *((r4 + 0x1f)) = r3;
    0x0800fbb0 add r3, r4, 0x14                                                  |     r3 = r4 + 0x14;
    0x0800fbb4 str r3, [sp]                                                      |     *(sp) = r3;
    0x0800fbb8 b 0x800fbd4                                                       |     
                                                                                 |     while (r0 > r3) {
    0x0800fbbc ldrb r3, [r5, 1]!                                                 |         r3 = *((r5 += 1));
    0x0800fbc0 sub r1, r3, 0x20                                                  |         r1 = r3 - 0x20;
    0x0800fbc4 ldrb r2, [r7, r3]                                                 |         r2 = *((r7 + r3));
    0x0800fbc8 tst r2, 2                                                         |         
    0x0800fbcc uxtbne r3, r1                                                     |         __asm ("uxtbne r3, r1");
    0x0800fbd0 strb r3, [sl, 1]!                                                 |         *((sl += 1)) = r3;
    0x0800fbd4 mov r0, r8                                                        |         r0 = r8;
    0x0800fbd8 mov r1, 0xf                                                       |         r1 = 0xf;
    0x0800fbdc stmdaeq sb, {r0, r5, r7, sl, fp, sp, pc}                          |         __asm ("stmdaeq sb, {r0, r5, r7, sl, fp, sp, pc}");
    0x0800fbe0 add r3, r6, sl                                                    |         r3 = r6 + sl;
    0x0800fbe4 cmp r0, r3                                                        |         
    0x0800fbe8 bhi 0x800fbbc                                                     |         
                                                                                 |     }
    0x0800fbec mov r3, sp                                                        |     r3 = sp;
    0x0800fbf0 cmp fp, 0                                                         |     
    0x0800fbf4 bic r2, r3, 0x1fc0                                                |     r2 = BIT_MASK (r3, 0x1fc0);
    0x0800fbf8 mov r3, 0                                                         |     r3 = 0;
    0x0800fbfc bic r2, r2, 0x3f                                                  |     r2 = BIT_MASK (r2, 0x3f);
    0x0800fc00 strb r3, [r4, 0x23]                                               |     *((r4 + 0x23)) = r3;
    0x0800fc04 ldrb r3, [r4, 0x55]                                               |     r3 = *((r4 + 0x55));
    0x0800fc08 ldr r1, [r2, 0xc]                                                 |     r1 = *((r2 + 0xc));
    0x0800fc0c bic r3, r3, 0x4a                                                  |     r3 = BIT_MASK (r3, 0x4a);
    0x0800fc10 orr r3, r3, 0x4a                                                  |     r3 |= 0x4a;
    0x0800fc14 ldr r1, [r1, 0x340]                                               |     r1 = *((r1 + 0x340));
    0x0800fc18 ldr r1, [r1, 4]                                                   |     r1 = *((r1 + 4));
    0x0800fc1c str r1, [r4, 0x34]                                                |     *((r4 + 0x34)) = r1;
    0x0800fc20 ldrb r1, [r4, 0x56]                                               |     r1 = *((r4 + 0x56));
    0x0800fc24 ldr r0, [r2, 0xc]                                                 |     r0 = *((r2 + 0xc));
    0x0800fc28 orr r1, r1, 1                                                     |     r1 |= 1;
    0x0800fc2c ldr r0, [r0, 0x340]                                               |     r0 = *((r0 + 0x340));
    0x0800fc30 ldr r0, [r0, 4]                                                   |     r0 = *((r0 + 4));
    0x0800fc34 str r0, [r4, 0x38]                                                |     *((r4 + 0x38)) = r0;
    0x0800fc38 ldr r2, [r2, 0xc]                                                 |     r2 = *((r2 + 0xc));
    0x0800fc3c ldr r2, [r2, 0x340]                                               |     r2 = *((r2 + 0x340));
    0x0800fc40 ldr r2, [r2, 8]                                                   |     r2 = *((r2 + 8));
    0x0800fc44 str r2, [r4, 0x3c]                                                |     *((r4 + 0x3c)) = r2;
    0x0800fc48 strb r3, [r4, 0x55]                                               |     *((r4 + 0x55)) = r3;
    0x0800fc4c mov r3, 0x100000                                                  |     r3 = 0x100000;
    0x0800fc50 strb r1, [r4, 0x56]                                               |     *((r4 + 0x56)) = r1;
    0x0800fc54 str r3, [r4, 0x6c]                                                |     *((r4 + 0x6c)) = r3;
    0x0800fc58 movw r3, 0x1ed                                                    |     
    0x0800fc5c movt r3, 0x1ed                                                    |     r3 = 0x1ed01ed;
    0x0800fc60 str r3, [r4, 0x48]                                                |     *((r4 + 0x48)) = r3;
    0x0800fc64 mov r3, 0x64                                                      |     r3 = 0x64;
    0x0800fc68 str r3, [r4, 0x80]                                                |     *((r4 + 0x80)) = r3;
    0x0800fc6c stmdaeq r6, {r2, r3, r5, sb, fp, lr, pc}                          |     __asm ("stmdaeq r6, {r2, r3, r5, sb, fp, lr, pc}");
    0x0800fc70 stmdaeq r6, {r2, r3, r5, sb, fp, lr, pc}                          |     __asm ("stmdaeq r6, {r2, r3, r5, sb, fp, lr, pc}");
    0x0800fc74 str r3, [r4, 0x84]                                                |     *((r4 + 0x84)) = r3;
    0x0800fc78 stmdaeq r6, {r5, r6, r8, sb, sl, lr, pc}                          |     __asm ("stmdaeq r6, {r5, r6, r8, sb, sl, lr, pc}");
    0x0800fc7c stmdaeq r6, {r5, r6, r8, sb, sl, lr, pc}                          |     __asm ("stmdaeq r6, {r5, r6, r8, sb, sl, lr, pc}");
    0x0800fc80 str r3, [r4, 0x88]                                                |     *((r4 + 0x88)) = r3;
    0x0800fc84 mov r3, 0x3c                                                      |     r3 = 0x3c;
    0x0800fc88 str r3, [r4, 0x194]                                               |     *((r4 + 0x194)) = r3;
    0x0800fc8c mov r3, 1                                                         |     r3 = 1;
    0x0800fc90 str r3, [r4, 0x1a8]                                               |     *((r4 + 0x1a8)) = r3;
                                                                                 |     if (fp == 0) {
    0x0800fc94 beq 0x800fff0                                                     |         goto label_10;
                                                                                 |     }
    0x0800fc98 mov r0, fp                                                        |     r0 = fp;
    0x0800fc9c mov r2, 0xcc0                                                     |     r2 = 0xcc0;
    0x0800fca0 mov r1, 0x1000                                                    |     r1 = 0x1000;
    0x0800fca4 stmdaeq sb, {r0, r8, sb, fp, sp, pc}                              |     __asm ("stmdaeq sb, {r0, r8, sb, fp, sp, pc}");
    0x0800fca8 subs r7, r0, 0                                                    |     r7 = r0 - 0;
                                                                                 |     if (r7 == r0) {
    0x0800fcac beq 0x800fff0                                                     |         goto label_10;
                                                                                 |     }
    0x0800fcb0 str r7, [sp, 0x40]                                                |     var_40h = r7;
    0x0800fcb4 stmdaeq sb, {r0, r3, r4, sl, fp, sp, pc}                          |     __asm ("stmdaeq sb, {r0, r3, r4, sl, fp, sp, pc}");
    0x0800fcb8 mov r2, 4                                                         |     r2 = 4;
    0x0800fcbc add r3, r7, r0                                                    |     r3 = r7 + r0;
    0x0800fcc0 stmdaeq r5, {r5, r6, r7, r8, fp, ip, sp}                          |     __asm ("stmdaeq r5, {r5, r6, r7, r8, fp, ip, sp}");
    0x0800fcc4 stmdaeq r5, {r5, r6, r7, r8, fp, ip, sp}                          |     __asm ("stmdaeq r5, {r5, r6, r7, r8, fp, ip, sp}");
    0x0800fcc8 mov r0, r7                                                        |     r0 = r7;
    0x0800fccc str r3, [sp, 0xc]                                                 |     var_ch = r3;
    0x0800fcd0 stmdaeq sb, {r0, r2, r4, r5, r6, r7, r8, sb, fp, sp, pc}          |     __asm ("stmdaeq sb, {r0, r2, r4, r5, r6, r7, r8, sb, fp, sp, pc}");
    0x0800fcd4 cmp r0, 0                                                         |     
                                                                                 |     if (r0 == 0) {
    0x0800fcd8 beq 0x800ffd8                                                     |         goto label_11;
                                                                                 |     }
                                                                                 | label_0:
    0x0800fcdc mov r3, 0                                                         |     r3 = 0;
    0x0800fce0 cmp sb, 0                                                         |     
    0x0800fce4 strb r3, [r4, 0x53]                                               |     *((r4 + 0x53)) = r3;
    0x0800fce8 strb r3, [r4, 0x54]                                               |     *((r4 + 0x54)) = r3;
                                                                                 |     if (sb == 0) {
    0x0800fcec beq 0x8010014                                                     |         goto label_12;
                                                                                 |     }
    0x0800fcf0 ldrb r3, [sb]                                                     |     r3 = *(sb);
    0x0800fcf4 cmp r3, 0                                                         |     
                                                                                 |     if (r3 == 0) {
    0x0800fcf8 beq 0x8010014                                                     |         goto label_12;
                                                                                 |     }
    0x0800fcfc mov r0, sb                                                        |     r0 = sb;
    0x0800fd00 stmdaeq r5, {r4, sb, fp, ip, sp}                                  |     __asm ("stmdaeq r5, {r4, sb, fp, ip, sp}");
    0x0800fd04 stmdaeq r5, {r4, sb, fp, ip, sp}                                  |     __asm ("stmdaeq r5, {r4, sb, fp, ip, sp}");
    0x0800fd08 stmdaeq sb, {r0, r2, r5, r7, sl, fp, sp, pc}                      |     __asm ("stmdaeq sb, {r0, r2, r5, r7, sl, fp, sp, pc}");
    0x0800fd0c cmp r0, 2                                                         |     
                                                                                 |     if (r0 != 2) {
    0x0800fd10 bne 0x8010028                                                     |         goto label_6;
                                                                                 |     }
    0x0800fd14 add r0, sb, 2                                                     |     r0 = sb + 2;
    0x0800fd18 stmdaeq r5, {r4, sb, fp, ip, sp}                                  |     __asm ("stmdaeq r5, {r4, sb, fp, ip, sp}");
    0x0800fd1c stmdaeq r5, {r4, sb, fp, ip, sp}                                  |     __asm ("stmdaeq r5, {r4, sb, fp, ip, sp}");
    0x0800fd20 stmdaeq sb, {r0, r3, r5, r7, sl, fp, sp, pc}                      |     __asm ("stmdaeq sb, {r0, r3, r5, r7, sl, fp, sp, pc}");
    0x0800fd24 cmp r0, 0                                                         |     
                                                                                 |     if (r0 == 0) {
    0x0800fd28 beq 0x8010028                                                     |         goto label_6;
                                                                                 |     }
    0x0800fd2c add r6, r0, 1                                                     |     r6 = r0 + 1;
    0x0800fd30 stmdaeq r5, {r4, sb, fp, ip, sp}                                  |     __asm ("stmdaeq r5, {r4, sb, fp, ip, sp}");
    0x0800fd34 stmdaeq r5, {r4, sb, fp, ip, sp}                                  |     __asm ("stmdaeq r5, {r4, sb, fp, ip, sp}");
    0x0800fd38 mov r0, r6                                                        |     r0 = r6;
    0x0800fd3c stmdaeq sb, {r0, r2, r3, r5, r7, sl, fp, sp, pc}                  |     __asm ("stmdaeq sb, {r0, r2, r3, r5, r7, sl, fp, sp, pc}");
    0x0800fd40 mov r8, r0                                                        |     r8 = r0;
    0x0800fd44 add fp, r6, r8                                                    |     
    0x0800fd48 mov r0, sb                                                        |     r0 = sb;
    0x0800fd4c sub r1, fp, sb                                                    |     r1 = fp - sb;
    0x0800fd50 mov r2, 0xcc0                                                     |     r2 = 0xcc0;
    0x0800fd54 stmdaeq sb, {r0, r8, sb, fp, sp, pc}                              |     __asm ("stmdaeq sb, {r0, r8, sb, fp, sp, pc}");
    0x0800fd58 cmp r0, 0                                                         |     
    0x0800fd5c str r0, [r4, 0xc]                                                 |     *((r4 + 0xc)) = r0;
                                                                                 |     if (r0 == 0) {
    0x0800fd60 beq 0x8010050                                                     |         goto label_13;
                                                                                 |     }
    0x0800fd64 mov sb, 0x5c                                                      |     sb = 0x5c;
    0x0800fd68 b 0x800fd70                                                       |     
                                                                                 |     while (r0 != 0) {
    0x0800fd6c strb sb, [r0]                                                     |         *(r0) = sb;
    0x0800fd70 mov r1, 0x2f                                                      |         r1 = 0x2f;
    0x0800fd74 stmdaeq sb, {r0, r2, r3, r4, sl, fp, sp, pc}                      |         __asm ("stmdaeq sb, {r0, r2, r3, r4, sl, fp, sp, pc}");
    0x0800fd78 cmp r0, 0                                                         |         
    0x0800fd7c bne 0x800fd6c                                                     |         
                                                                                 |     }
    0x0800fd80 ldrb r3, [r6, r8]                                                 |     r3 = *((r6 + r8));
    0x0800fd84 mov r5, r0                                                        |     r5 = r0;
    0x0800fd88 cmp r3, 0x5c                                                      |     
    0x0800fd8c cmpne r3, 0x2f                                                    |     __asm ("cmpne r3, 0x2f");
                                                                                 |     if (r3 != 0x5c) {
    0x0800fd90 ldrbeq r3, [fp, 1]                                                |         r3 = *(arg_1h);
                                                                                 |     }
                                                                                 |     if (r3 != 0x5c) {
    0x0800fd94 addeq fp, fp, 1                                                   |         
                                                                                 |     }
    0x0800fd98 cmp r3, 0                                                         |     
                                                                                 |     if (r3 != 0) {
    0x0800fd9c beq 0x800fdb8                                                     |         
    0x0800fda0 mov r0, fp                                                        |         r0 = fp;
    0x0800fda4 mov r1, 0xcc0                                                     |         r1 = 0xcc0;
    0x0800fda8 stmdaeq sb, {r0, r3, r7, sl, fp, sp, pc}                          |         __asm ("stmdaeq sb, {r0, r3, r7, sl, fp, sp, pc}");
    0x0800fdac cmp r0, 0                                                         |         
    0x0800fdb0 str r0, [r4, 0x8c]                                                |         *((r4 + 0x8c)) = r0;
                                                                                 |         if (r0 == 0) {
    0x0800fdb4 beq 0x8010050                                                     |             goto label_13;
                                                                                 |         }
                                                                                 |     }
    0x0800fdb8 ldr sb, [pc, 0xfe4]                                               |     sb = loc..LANCHOR1;
    0x0800fdbc movw fp, 0x2020                                                   |     
    0x0800fdc0 movt fp, 0x2020                                                   |     fp = 0x20202020;
    0x0800fdc4 mov r8, 0                                                         |     r8 = 0;
    0x0800fdc8 mvn r3, 0                                                         |     r3 = ~0;
    0x0800fdcc stmdaeq r5, {r2, r4, r6, r7, lr}                                  |     __asm ("stmdaeq r5, {r2, r4, r6, r7, lr}");
    0x0800fdd0 stmdaeq r5, {r2, r4, r6, r7, lr}                                  |     __asm ("stmdaeq r5, {r2, r4, r6, r7, lr}");
    0x0800fdd4 str r3, [sp, 0x20]                                                |     var_20h = r3;
    0x0800fdd8 str r2, [sp, 0x34]                                                |     var_34h = r2;
    0x0800fddc add r2, r4, 0x90                                                  |     r2 = r4 + 0x90;
    0x0800fde0 str r8, [sp, 0x30]                                                |     var_30h = r8;
    0x0800fde4 str r2, [sp, 0x10]                                                |     var_10h = r2;
    0x0800fde8 str r8, [sp, 0x2c]                                                |     var_2ch = r8;
    0x0800fdec str r8, [sp, 0x18]                                                |     var_18h = r8;
    0x0800fdf0 str r8, [sp, 0x14]                                                |     var_14h = r8;
    0x0800fdf4 str r8, [sp, 0x28]                                                |     var_28h = r8;
    0x0800fdf8 str r8, [sp, 0x24]                                                |     var_24h = r8;
    0x0800fdfc str r3, [sp, 0x1c]                                                |     var_1ch = r3;
                                                                                 |     do {
    0x0800fe00 add r1, sp, 0x3e                                                  |         r1 += var_3eh;
    0x0800fe04 add r0, sp, 0x40                                                  |         r0 += var_40h;
    0x0800fe08 stmdaeq sb, {r0, r4, r5, r7, sl, fp, sp, pc}                      |         __asm ("stmdaeq sb, {r0, r4, r5, r7, sl, fp, sp, pc}");
    0x0800fe0c subs r6, r0, 0                                                    |         r6 -= var_40h;
                                                                                 |         if (r6 == var_40h) {
    0x0800fe10 beq 0x8010078                                                     |             goto label_14;
                                                                                 |         }
    0x0800fe14 ldrb r3, [r6]                                                     |         r3 = *(r6);
    0x0800fe18 cmp r3, 0                                                         |         
    0x0800fe1c beq 0x800fe00                                                     |         
                                                                                 |     } while (r3 == 0);
    0x0800fe20 mov r1, sb                                                        |     r1 = sb;
    0x0800fe24 add r2, sp, 0x48                                                  |     r2 += var_48h;
    0x0800fe28 stmdaeq sb, {r0, r2, r4, r5, r7, sl, fp, sp, pc}                  |     __asm ("stmdaeq sb, {r0, r2, r4, r5, r7, sl, fp, sp, pc}");
    0x0800fe2c cmp r0, 0x67                                                      |     
                                                                                 |     if (r0 > 0x67) {
                                                                                 |         /* switch table (104 cases) at 0x800fe38 */
    0x0800fe30 ldrls pc, [pc, r0, lsl 2]                                         |         offset_0 = r0 << 2;
                                                                                 |         pc = *((pc + offset_0));
                                                                                 |     }
    0x0800fe34 b 0x8011610                                                       |     goto label_15;
                                                                                 | label_11:
    0x0800ffd8 ldrb r3, [r7, 4]                                                  |     r3 = *((r7 + 4));
    0x0800ffdc cmp r3, 0                                                         |     
                                                                                 |     if (r3 == 0) {
    0x0800ffe0 strbne r3, [sp, 0x3e]                                             |         var_3eh = r3;
                                                                                 |     }
                                                                                 |     if (r3 == 0) {
    0x0800ffe4 addne r3, r7, 5                                                   |         r3 = r7 + 5;
                                                                                 |     }
                                                                                 |     if (r3 == 0) {
    0x0800ffe8 strne r3, [sp, 0x40]                                              |         var_40h = r3;
                                                                                 |     }
    0x0800ffec b 0x800fcdc                                                       |     goto label_0;
                                                                                 | label_10:
    0x0800fff0 mov r5, 0                                                         |     r5 = 0;
    0x0800fff4 mov r7, r5                                                        |     r7 = r5;
                                                                                 |     do {
                                                                                 | label_1:
    0x0800fff8 mov r0, r5                                                        |         r0 = r5;
    0x0800fffc stmdaeq sb, {r0, r2, r8, sb, fp, sp, pc}                          |         __asm ("stmdaeq sb, {r0, r2, r8, sb, fp, sp, pc}");
    0x08010000 mov r0, r7                                                        |         r0 = r7;
    0x08010004 stmdaeq sb, {r0, r2, r8, sb, fp, sp, pc}                          |         __asm ("stmdaeq sb, {r0, r2, r8, sb, fp, sp, pc}");
    0x08010008 mvn r0, 0x15                                                      |         r0 = ~0x15;
                                                                                 | label_2:
    0x0801000c add sp, sp, 0x64                                                  |         
    0x08010010 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                          |         
                                                                                 | label_12:
    0x08010014 ldr r1, [pc, 0xd8c]                                               |         r1 = "cifs_remap_file_range";
    0x08010018 ldr r0, [pc, 0xd8c]                                               |         r0 = "cifs_remap_file_range";
    0x0801001c stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}                  |         __asm ("stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}");
    0x08010020 cmp r0, 0                                                         |         
                                                                                 |         if (r0 != 0) {
    0x08010024 bne 0x8011600                                                     |             goto label_16;
                                                                                 |         }
                                                                                 | label_6:
    0x08010028 ldr r1, [pc, 0xe10]                                               |         r1 = .data;
    0x0801002c ldr r0, [pc, 0xd7c]                                               |         r0 = .data;
    0x08010030 stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}                  |         __asm ("stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}");
    0x08010034 subs r5, r0, 0                                                    |         r5 = r0 - 0;
    0x08010038 beq 0x800fff8                                                     |         
                                                                                 |     } while (r5 == r0);
    0x0801003c stmdaeq r5, {r3, r6, sb, fp, ip, sp}                              |     __asm ("stmdaeq r5, {r3, r6, sb, fp, ip, sp}");
    0x08010040 stmdaeq r5, {r3, r6, sb, fp, ip, sp}                              |     __asm ("stmdaeq r5, {r3, r6, sb, fp, ip, sp}");
    0x08010044 mov r5, 0                                                         |     r5 = 0;
    0x08010048 stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}                      |     __asm ("stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}");
    0x0801004c b 0x800fff8                                                       |     goto label_1;
                                                                                 | label_13:
    0x08010050 ldr r1, [pc, 0xde8]                                               |     r1 = .data;
    0x08010054 ldr r0, [pc, 0xd58]                                               |     r0 = .data;
    0x08010058 stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}                  |     __asm ("stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}");
    0x0801005c subs r5, r0, 0                                                    |     r5 = r0 - 0;
                                                                                 |     if (r5 == r0) {
    0x08010060 beq 0x800fff8                                                     |         goto label_1;
                                                                                 |     }
    0x08010064 stmdaeq r5, {r2, r4, sb, fp, ip, sp}                              |     __asm ("stmdaeq r5, {r2, r4, sb, fp, ip, sp}");
    0x08010068 stmdaeq r5, {r2, r4, sb, fp, ip, sp}                              |     __asm ("stmdaeq r5, {r2, r4, sb, fp, ip, sp}");
    0x0801006c mov r5, 0                                                         |     r5 = 0;
    0x08010070 stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}                      |     __asm ("stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}");
    0x08010074 b 0x800fff8                                                       |     goto label_1;
                                                                                 | label_14:
    0x08010078 ldr r3, [sp, 0x14]                                                |     r3 = var_14h;
    0x0801007c eor sb, r3, 1                                                     |     sb = r3 ^ 1;
    0x08010080 cmp r8, 0                                                         |     
                                                                                 |     if (r8 != 0) {
    0x08010084 moveq sb, 0                                                       |         sb = 0;
                                                                                 |     }
                                                                                 |     if (r8 == 0) {
    0x08010088 andne sb, sb, 1                                                   |         sb &= 1;
                                                                                 |     }
    0x0801008c cmp sb, 0                                                         |     
                                                                                 |     if (sb != 0) {
    0x08010090 bne 0x801164c                                                     |         goto label_17;
                                                                                 |     }
    0x08010094 ldrb r3, [r4, 0x59]                                               |     r3 = *((r4 + 0x59));
    0x08010098 tst r3, 2                                                         |     
                                                                                 |     if ((r3 & 2) != 0) {
    0x0801009c beq 0x80100b0                                                     |         
    0x080100a0 ldr r3, [r4, 0x88]                                                |         r3 = *((r4 + 0x88));
    0x080100a4 ldrh r3, [r3, 4]                                                  |         r3 = *((r3 + 4));
    0x080100a8 cmp r3, 0x300                                                     |         
                                                                                 |         if (r3 <= 0x300) {
    0x080100ac blo 0x8011138                                                     |             goto label_18;
                                                                                 |         }
                                                                                 |     }
    0x080100b0 ldr r5, [r4, 0xc]                                                 |     r5 = *((r4 + 0xc));
    0x080100b4 cmp r5, 0                                                         |     
                                                                                 |     if (r5 == 0) {
    0x080100b8 beq 0x80111b4                                                     |         goto label_19;
                                                                                 |     }
    0x080100bc add r0, r5, 3                                                     |     r0 = r5 + 3;
    0x080100c0 mov r1, 0x5c                                                      |     r1 = 0x5c;
    0x080100c4 stmdaeq sb, {r0, r2, r3, r4, sl, fp, sp, pc}                      |     __asm ("stmdaeq sb, {r0, r2, r3, r4, sl, fp, sp, pc}");
    0x080100c8 subs r6, r0, 0                                                    |     r6 = r0 - 0;
                                                                                 |     if (r6 == r0) {
    0x080100cc beq 0x80111d8                                                     |         goto label_20;
                                                                                 |     }
    0x080100d0 ldr r3, [sp, 0x18]                                                |     r3 = var_18h;
    0x080100d4 cmp r3, 0                                                         |     
                                                                                 |     if (r3 == 0) {
    0x080100d8 bne 0x8010104                                                     |         
    0x080100dc add r5, r5, 2                                                     |         r5 += 2;
    0x080100e0 mov r1, 0x5c                                                      |         r1 = 0x5c;
    0x080100e4 mov r0, r5                                                        |         r0 = r5;
    0x080100e8 stmdaeq sb, {r0, r2, r3, r4, sl, fp, sp, pc}                      |         __asm ("stmdaeq sb, {r0, r2, r3, r4, sl, fp, sp, pc}");
    0x080100ec mov r1, r5                                                        |         r1 = r5;
    0x080100f0 sub r2, r0, r5                                                    |         r2 = r0 - r5;
    0x080100f4 ldr r0, [sp, 0x10]                                                |         r0 = var_10h;
    0x080100f8 stmdaeq r2, {r7, r8, sl, lr}                                      |         __asm ("stmdaeq r2, {r7, r8, sl, lr}");
    0x080100fc cmp r0, 0                                                         |         
                                                                                 |         if (r0 == 0) {
    0x08010100 beq 0x8011678                                                     |             goto label_21;
                                                                                 |         }
                                                                                 |     }
    0x08010104 ldr r1, [sp, 0x30]                                                |     r1 = var_30h;
    0x08010108 ldr r0, [sp, 0x10]                                                |     r0 = var_10h;
    0x0801010c stmdaeq r2, {r2, r3, r4, r7, sb, sl, lr}                          |     __asm ("stmdaeq r2, {r2, r3, r4, r7, sb, sl, lr}");
    0x08010110 ldr r3, [sp, 0x24]                                                |     r3 = var_24h;
    0x08010114 cmp r3, 0                                                         |     
    0x08010118 ldr r3, [sp, 0x1c]                                                |     r3 = var_1ch;
                                                                                 |     if (r3 != 0) {
    0x0801011c bne 0x80101f0                                                     |         goto label_22;
                                                                                 |     }
    0x08010120 cmp r3, 1                                                         |     
                                                                                 |     if (r3 == 1) {
    0x08010124 beq 0x8011624                                                     |         goto label_23;
                                                                                 |     }
                                                                                 | label_8:
    0x08010128 ldr r3, [sp, 0x28]                                                |     r3 = var_28h;
    0x0801012c cmp r3, 0                                                         |     
                                                                                 |     if (r3 == 0) {
    0x08010130 beq 0x8011188                                                     |         goto label_24;
                                                                                 |     }
    0x08010134 ldr r2, [sp, 0x20]                                                |     r2 = var_20h;
    0x08010138 ldrb r3, [r4, 0x51]                                               |     r3 = *((r4 + 0x51));
    0x0801013c subs r2, r2, 0                                                    |     
                                                                                 |     if (r2 == r2) {
    0x08010140 movne r2, 1                                                       |         r2 = 1;
                                                                                 |     }
    0x08010144 bfi r3, r2, 6, 1                                                  |     value_1 = BIT_MASK (6, 1);
                                                                                 |     value_2 = r2 & value_1;
                                                                                 |     value_1 = ~value_1;
                                                                                 |     r3 &= value_1;
                                                                                 |     r3 |= value_2;
    0x08010148 strb r3, [r4, 0x51]                                               |     *((r4 + 0x51)) = r3;
                                                                                 | label_4:
    0x0801014c ldr r3, [sp, 0x2c]                                                |     r3 = var_2ch;
    0x08010150 cmp r3, 0                                                         |     
                                                                                 |     if (r3 == 0) {
    0x08010154 bne 0x801016c                                                     |         
    0x08010158 stmdaeq r6, {r1, r2, r4, r6, r7, r8, fp, ip, lr, pc}              |         __asm ("stmdaeq r6, {r1, r2, r4, r6, r7, r8, fp, ip, lr, pc}");
    0x0801015c stmdaeq r6, {r1, r2, r4, r6, r7, r8, fp, ip, lr, pc}              |         __asm ("stmdaeq r6, {r1, r2, r4, r6, r7, r8, fp, ip, lr, pc}");
    0x08010160 ldrb r2, [r3, 2]                                                  |         r2 = *((r3 + 2));
    0x08010164 cmp r2, 0                                                         |         
                                                                                 |         if (r2 == 0) {
    0x08010168 beq 0x8011634                                                     |             goto label_25;
                                                                                 |         }
                                                                                 |     }
                                                                                 | label_9:
    0x0801016c mov r0, r7                                                        |     r0 = r7;
    0x08010170 stmdaeq sb, {r0, r2, r8, sb, fp, sp, pc}                          |     __asm ("stmdaeq sb, {r0, r2, r8, sb, fp, sp, pc}");
    0x08010174 ldrb r3, [r4, 0x56]                                               |     r3 = *((r4 + 0x56));
    0x08010178 tst r3, 0x10                                                      |     
                                                                                 |     if ((r3 & 0x10) != 0) {
    0x0801017c bne 0x8011154                                                     |         goto label_26;
                                                                                 |     }
    0x08010180 ldr r3, [r4]                                                      |     r3 = *(r4);
    0x08010184 cmp r3, 0                                                         |     
                                                                                 |     if (r3 == 0) {
    0x08010188 beq 0x80112e0                                                     |         goto label_27;
                                                                                 |     }
    0x0801018c ldr r5, [r4, 0x10]                                                |     r5 = *((r4 + 0x10));
    0x08010190 cmp r5, 0                                                         |     
                                                                                 |     if (r5 == 0) {
    0x08010194 beq 0x8011170                                                     |         goto label_28;
                                                                                 |     }
                                                                                 | label_3:
    0x08010198 mov r0, r5                                                        |     r0 = r5;
    0x0801019c stmdaeq sb, {r0, r3, r4, r5, r7, sl, fp, sp, pc}                  |     __asm ("stmdaeq sb, {r0, r3, r4, r5, r7, sl, fp, sp, pc}");
    0x080101a0 cmp r0, 0                                                         |     
    0x080101a4 str r0, [r4, 0x190]                                               |     *((r4 + 0x190)) = r0;
                                                                                 |     if (r0 != 0) {
    0x080101a8 movne r0, 0                                                       |         r0 = 0;
                                                                                 |         goto label_29;
                                                                                 |     }
                                                                                 |     if (r0 != 0) {
                                                                                 | label_29:
    0x080101ac bne 0x801000c                                                     |         goto label_2;
                                                                                 |     }
    0x080101b0 ldr r1, [pc, 0xc40]                                               |     r1 = .data;
    0x080101b4 ldr r0, [pc, 0xbfc]                                               |     r0 = .data;
    0x080101b8 stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}                  |     __asm ("stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}");
                                                                                 |     if (r0 != 0) {
    0x080101bc andeq r0, r0, r0                                                  |         r0 &= r0;
                                                                                 |     }
                                                                                 |     if (r0 == 0) {
    0x080101c0 mvneq r0, 0x4d                                                    |         r0 = ~0x4d;
                                                                                 |         goto label_30;
                                                                                 |     }
                                                                                 |     if (r0 == 0) {
                                                                                 | label_30:
    0x080101c4 beq 0x801000c                                                     |         goto label_2;
                                                                                 |     }
    0x080101c8 ldr r1, [r4, 0x10]                                                |     r1 = *((r4 + 0x10));
    0x080101cc stmdaeq r5, {r2, r3, r4, r5, r6, sl, lr}                          |     __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, sl, lr}");
    0x080101d0 stmdaeq r5, {r2, r3, r4, r5, r6, sl, lr}                          |     __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, sl, lr}");
    0x080101d4 stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}                      |     __asm ("stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}");
    0x080101d8 andsne sp, pc, lr, asr 32                                         |     __asm ("andsne sp, pc, lr, asr 32");
    0x080101dc smlabbeq r1, r0, ip, pc                                           |     __asm ("smlabbeq r1, r0, ip, pc");
                                                                                 | label_7:
    0x080101e4 strbteq r4, [r6], -0                                              |     __asm ("strbteq r4, [r6], -0");
    0x080101e8 invalid                                                           |     
                                                                                 |     if (r0 != 0) {
    0x080101ec andeq r0, r0, sl, ror 1                                           |         r0 &= (sl >>> 1);
                                                                                 |     }
                                                                                 | label_22:
    0x080101f0 mrseq pc, apsr                                                    |     __asm ("mrseq pc, apsr");
                                                                                 |     if (r0 == 0) {
    0x080101f4 strne r0, [r0, r8]                                                |         *((r0 + r8)) = r0;
                                                                                 |     }
                                                                                 |     if (r0 == 0) {
    0x080101f8 ldrbne sp, [pc, -r0, lsl 24]!                                     |         offset_3 = -r0 << 24;
                                                                                 |         sp = *((pc += offset_3));
                                                                                 |     }
    0x080101fc movteq sb, 0x4000                                                 |     __asm ("movteq sb, 0x4000");
    0x08010200 strb r3, [r4, 8]                                                  |     *((r4 + 8)) = r3;
                                                                                 |     if (r0 != 0) {
    0x08010204 andeq r0, r0, r0, lsr 32                                          |         r0 &= (r0 >> 32);
                                                                                 |     }
                                                                                 | label_18:
    0x08011138 ldr r1, [pc, -0x300]                                              |     r1 = loc..LANCHOR1;
    0x0801113c ldr r0, [pc, -0x368]                                              |     r0 = loc..LANCHOR2;
    0x08011140 stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}                  |     __asm ("stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}");
    0x08011144 cmp r0, 0                                                         |     
                                                                                 |     if (r0 != 0) {
    0x08011148 bne 0x80115c8                                                     |         goto label_31;
                                                                                 |     }
                                                                                 | label_5:
    0x0801114c mov r5, r0                                                        |     r5 = r0;
    0x08011150 b 0x800fff8                                                       |     goto label_1;
                                                                                 | label_26:
    0x08011154 ldr r0, [r4]                                                      |     r0 = *(r4);
    0x08011158 stmdaeq sb, {r0, r2, r8, sb, fp, sp, pc}                          |     __asm ("stmdaeq sb, {r0, r2, r8, sb, fp, sp, pc}");
    0x0801115c ldr r5, [r4, 0x10]                                                |     r5 = *((r4 + 0x10));
    0x08011160 mov r3, 0                                                         |     r3 = 0;
    0x08011164 str r3, [r4]                                                      |     *(r4) = r3;
    0x08011168 cmp r5, 0                                                         |     
                                                                                 |     if (r5 != 0) {
    0x0801116c bne 0x8010198                                                     |         goto label_3;
                                                                                 |     }
                                                                                 | label_28:
    0x08011170 stmdaeq sb, {r0, r2, r3, r6, r8, sb, fp, sp, pc}                  |     __asm ("stmdaeq sb, {r0, r2, r3, r6, r8, sb, fp, sp, pc}");
    0x08011174 mov r3, r0                                                        |     r3 = r0;
    0x08011178 mov r0, r5                                                        |     r0 = r5;
    0x0801117c str r3, [r4, 0x190]                                               |     *((r4 + 0x190)) = r3;
    0x08011180 add sp, sp, 0x64                                                  |     
    0x08011184 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                          |     
                                                                                 | label_24:
    0x08011188 ldr r3, [sp, 0x20]                                                |     r3 = var_20h;
    0x0801118c cmp r3, 1                                                         |     
                                                                                 |     if (r3 != 1) {
    0x08011190 bne 0x801014c                                                     |         goto label_4;
                                                                                 |     }
    0x08011194 stmdaeq r5, {r3, r4, r5, r6, r7, sb, lr}                          |     __asm ("stmdaeq r5, {r3, r4, r5, r6, r7, sb, lr}");
    0x08011198 stmdaeq r5, {r3, r4, r5, r6, r7, sb, lr}                          |     __asm ("stmdaeq r5, {r3, r4, r5, r6, r7, sb, lr}");
    0x0801119c stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}                      |     __asm ("stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}");
    0x080111a0 b 0x801014c                                                       |     goto label_4;
                                                                                 | label_19:
    0x080111b4 ldr r1, [pc, -0x37c]                                              |     r1 = loc..LANCHOR1;
    0x080111b8 ldr r0, [pc, -0x3e0]                                              |     r0 = loc..LANCHOR2;
    0x080111bc stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}                  |     __asm ("stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}");
    0x080111c0 cmp r0, 0                                                         |     
                                                                                 |     if (r0 == 0) {
    0x080111c4 beq 0x800fff8                                                     |         goto label_1;
                                                                                 |     }
    0x080111c8 stmdaeq r5, {r2, r4, r5, r6, r7, r8, lr}                          |     __asm ("stmdaeq r5, {r2, r4, r5, r6, r7, r8, lr}");
    0x080111cc stmdaeq r5, {r2, r4, r5, r6, r7, r8, lr}                          |     __asm ("stmdaeq r5, {r2, r4, r5, r6, r7, r8, lr}");
    0x080111d0 stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}                      |     __asm ("stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}");
    0x080111d4 b 0x800fff8                                                       |     goto label_1;
                                                                                 | label_20:
    0x080111d8 ldr r1, [pc, -0x3a0]                                              |     r1 = loc..LANCHOR1;
    0x080111dc ldr r0, [pc, -0x400]                                              |     r0 = loc..LANCHOR2;
    0x080111e0 stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}                  |     __asm ("stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}");
    0x080111e4 cmp r0, 0                                                         |     
                                                                                 |     if (r0 == 0) {
    0x080111e8 beq 0x801114c                                                     |         goto label_5;
                                                                                 |     }
    0x080111ec stmdaeq r5, {r2, r6, sb, lr}                                      |     __asm ("stmdaeq r5, {r2, r6, sb, lr}");
    0x080111f0 stmdaeq r5, {r2, r6, sb, lr}                                      |     __asm ("stmdaeq r5, {r2, r6, sb, lr}");
    0x080111f4 mov r5, r6                                                        |     r5 = r6;
    0x080111f8 stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}                      |     __asm ("stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}");
    0x080111fc b 0x800fff8                                                       |     goto label_1;
                                                                                 | label_27:
    0x080112e0 ldr r1, [pc, -0x4f0]                                              |     r1 = loc..LANCHOR1;
    0x080112e4 ldr r0, [pc, -0x4f0]                                              |     r0 = loc..LANCHOR2;
    0x080112e8 stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}                  |     __asm ("stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}");
    0x080112ec cmp r0, 0                                                         |     
                                                                                 |     if (r0 == 0) {
    0x080112f0 mvneq r0, 0x15                                                    |         r0 = ~0x15;
                                                                                 |         goto label_32;
                                                                                 |     }
                                                                                 |     if (r0 == 0) {
                                                                                 | label_32:
    0x080112f4 beq 0x801000c                                                     |         goto label_2;
                                                                                 |     }
    0x080112f8 stmdaeq r5, {r3, r4, r6, sl, lr}                                  |     __asm ("stmdaeq r5, {r3, r4, r6, sl, lr}");
    0x080112fc stmdaeq r5, {r3, r4, r6, sl, lr}                                  |     __asm ("stmdaeq r5, {r3, r4, r6, sl, lr}");
    0x08011300 stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}                      |     __asm ("stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}");
    0x08011304 mvn r0, 0x15                                                      |     r0 = ~0x15;
    0x08011308 b 0x801000c                                                       |     goto label_2;
                                                                                 | label_31:
    0x080115c8 stmdaeq r5, {r2, r6, r7, r8, lr}                                  |     __asm ("stmdaeq r5, {r2, r6, r7, r8, lr}");
    0x080115cc stmdaeq r5, {r2, r6, r7, r8, lr}                                  |     __asm ("stmdaeq r5, {r2, r6, r7, r8, lr}");
    0x080115d0 mov r5, sb                                                        |     r5 = sb;
    0x080115d4 stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}                      |     __asm ("stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}");
    0x080115d8 b 0x800fff8                                                       |     goto label_1;
                                                                                 | label_16:
    0x08011600 stmdaeq r5, {r3, r5, r6, r7, r8, fp, ip, sp}                      |     __asm ("stmdaeq r5, {r3, r5, r6, r7, r8, fp, ip, sp}");
    0x08011604 stmdaeq r5, {r3, r5, r6, r7, r8, fp, ip, sp}                      |     __asm ("stmdaeq r5, {r3, r5, r6, r7, r8, fp, ip, sp}");
    0x08011608 stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}                      |     __asm ("stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}");
    0x0801160c b 0x8010028                                                       |     goto label_6;
                                                                                 | label_15:
    0x08011610 cmp r8, 0                                                         |     
                                                                                 |     if (r8 != 0) {
    0x08011614 moveq sl, r8                                                      |         sl = r8;
                                                                                 |     }
                                                                                 |     if (r8 != 0) {
    0x08011618 moveq r8, r6                                                      |         r8 = r6;
                                                                                 |     }
                                                                                 |     if (r8 == 0) {
    0x0801161c movne sl, 0                                                       |         sl = 0;
                                                                                 |     }
    0x08011620 b 0x80101e4                                                       |     goto label_7;
                                                                                 | label_23:
    0x08011624 stmdaeq r5, {r4, r5, r7, sb, lr}                                  |     __asm ("stmdaeq r5, {r4, r5, r7, sb, lr}");
    0x08011628 stmdaeq r5, {r4, r5, r7, sb, lr}                                  |     __asm ("stmdaeq r5, {r4, r5, r7, sb, lr}");
    0x0801162c stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}                      |     __asm ("stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}");
    0x08011630 b 0x8010128                                                       |     goto label_8;
                                                                                 | label_25:
    0x08011634 stmdaeq r5, {r6, r8, sb, lr}                                      |     __asm ("stmdaeq r5, {r6, r8, sb, lr}");
    0x08011638 stmdaeq r5, {r6, r8, sb, lr}                                      |     __asm ("stmdaeq r5, {r6, r8, sb, lr}");
    0x0801163c mov r2, 1                                                         |     r2 = 1;
    0x08011640 strb r2, [r3, 2]                                                  |     *((r3 + 2)) = r2;
    0x08011644 stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}                      |     __asm ("stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}");
    0x08011648 b 0x801016c                                                       |     goto label_9;
                                                                                 | label_17:
    0x0801164c mov r1, r8                                                        |     r1 = r8;
    0x08011650 stmdaeq r5, {r5, r7, r8, lr}                                      |     __asm ("stmdaeq r5, {r5, r7, r8, lr}");
    0x08011654 stmdaeq r5, {r5, r7, r8, lr}                                      |     __asm ("stmdaeq r5, {r5, r7, r8, lr}");
    0x08011658 mov r5, r6                                                        |     r5 = r6;
    0x0801165c stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}                      |     __asm ("stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}");
    0x08011660 b 0x800fff8                                                       |     goto label_1;
                                                                                 | label_21:
    0x08011678 stmdaeq r5, {r2, r3, r4, r5, r6, sb, lr}                          |     __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, sb, lr}");
    0x0801167c stmdaeq r5, {r2, r3, r4, r5, r6, sb, lr}                          |     __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, sb, lr}");
    0x08011680 ldr r5, [sp, 0x18]                                                |     r5 = var_18h;
    0x08011684 stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}                      |     __asm ("stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}");
    0x08011688 b 0x800fff8                                                       |     goto label_1;
                                                                                 | }
    ; assembly                                                           | /* r2dec pseudo code output */
                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/cifs/cifs.ko @ 0x8025e48 */
                                                                         | #include <stdint.h>
                                                                         |  
                                                                         | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                         |  
    ; (fcn) sym.cifs_sync_mid_result ()                                  | void cifs_sync_mid_result (int32_t arg1) {
                                                                         |     int32_t var_8h;
                                                                         |     r0 = arg1;
    0x08025e48 push {r4, r5, r6, r7, lr}                                 |     
    0x08025e4c mov r4, r0                                                |     r4 = r0;
    0x08025e50 sub sp, sp, 0x14                                          |     
    0x08025e54 mov r3, sp                                                |     r3 = sp;
    0x08025e58 bic r3, r3, 0x1fc0                                        |     r3 = BIT_MASK (r3, 0x1fc0);
    0x08025e5c bic r3, r3, 0x3f                                          |     r3 = BIT_MASK (r3, 0x3f);
    0x08025e60 ldr r2, [r3, 4]                                           |     r2 = *((r3 + 4));
    0x08025e64 add r2, r2, 1                                             |     r2++;
    0x08025e68 str r2, [r3, 4]                                           |     *((r3 + 4)) = r2;
    0x08025e6c ldr r3, [r0, 0x44]                                        |     r3 = *((r0 + 0x44));
    0x08025e70 sub r3, r3, 4                                             |     r3 -= 4;
    0x08025e74 cmp r3, 0x1c                                              |     
                                                                         |     if (r3 > 0x1c) {
                                                                         |         /* switch table (29 cases) at 0x8025e80 */
    0x08025e78 ldrls pc, [pc, r3, lsl 2]                                 |         offset_0 = r3 << 2;
                                                                         |         pc = *((pc + offset_0));
                                                                         |     }
    0x08025e7c b 0x8025ef4                                               |     
    0x08025ef4 ldr r3, [r0, 0x48]                                        |     r3 = *((r0 + 0x48));
    0x08025ef8 tst r3, 2                                                 |     
                                                                         |     if ((r3 & 2) == 0) {
    0x08025efc bne 0x8025f20                                             |         
    0x08025f00 ldrd r2, r3, [r0]                                         |         __asm ("ldrd r2, r3, [r0]");
    0x08025f04 str r3, [r2, 4]                                           |         *((r2 + 4)) = r3;
    0x08025f08 str r2, [r3]                                              |         *(r3) = r2;
    0x08025f0c str r0, [r4]                                              |         *(r4) = r0;
    0x08025f10 str r0, [r4, 4]                                           |         *((r4 + 4)) = r0;
    0x08025f14 ldr r3, [r0, 0x48]                                        |         r3 = *((r0 + 0x48));
    0x08025f18 orr r3, r3, 2                                             |         r3 |= 2;
    0x08025f1c str r3, [r0, 0x48]                                        |         *((r0 + 0x48)) = r3;
                                                                         |     }
    0x08025f20 cmp r1, 0                                                 |     
                                                                         |     if (r1 == 0) {
    0x08025f24 beq 0x8025fec                                             |         goto label_3;
                                                                         |     }
    0x08025f28 ldr r5, [r1, 0x30]                                        |     r5 = *((r1 + 0x30));
    0x08025f2c stmdaeq r5, {r3, r4, r5, r8, sb, sl, ip, lr}              |     __asm ("stmdaeq r5, {r3, r4, r5, r8, sb, sl, ip, lr}");
    0x08025f30 stmdaeq r5, {r3, r4, r5, r8, sb, sl, ip, lr}              |     __asm ("stmdaeq r5, {r3, r4, r5, r8, sb, sl, ip, lr}");
    0x08025f34 cmp r5, 0                                                 |     
                                                                         |     if (r5 != 0) {
    0x08025f38 moveq r5, r3                                              |         r5 = r3;
                                                                         |     }
                                                                         | label_1:
    0x08025f3c ldr r1, [pc, 0xe0]                                        |     r1 = *(0x8026020);
    0x08025f40 ldr r0, [pc, 0xe0]                                        |     r0 = "cifs_remap_file_range";
    0x08025f44 stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}          |     __asm ("stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}");
    0x08025f48 cmp r0, 0                                                 |     
                                                                         |     if (r0 != 0) {
    0x08025f4c bne 0x8025ff8                                             |         goto label_4;
                                                                         |     }
    0x08025f50 mvn r5, 4                                                 |     r5 = ~4;
                                                                         | label_2:
    0x08025f54 mov r3, sp                                                |     r3 = sp;
    0x08025f58 bic r3, r3, 0x1fc0                                        |     r3 = BIT_MASK (r3, 0x1fc0);
    0x08025f5c bic r3, r3, 0x3f                                          |     r3 = BIT_MASK (r3, 0x3f);
    0x08025f60 ldr r2, [r3, 4]                                           |     r2 = *((r3 + 4));
    0x08025f64 sub r2, r2, 1                                             |     r2--;
    0x08025f68 str r2, [r3, 4]                                           |     *((r3 + 4)) = r2;
    0x08025f6c cmp r2, 0                                                 |     
    0x08025f70 beq 0x8025fd0                                             |     
                                                                         |     while ((r3 & 2) == 0) {
                                                                         | label_0:
    0x08025f74 mov r0, r4                                                |         r0 = r4;
    0x08025f78 stmdaeq r2, {r2, r4, r5, r7, sl, fp, ip, lr}              |         __asm ("stmdaeq r2, {r2, r4, r5, r7, sl, fp, ip, lr}");
    0x08025f7c mov r0, r5                                                |         r0 = r5;
    0x08025f80 add sp, sp, 0x14                                          |         
    0x08025f84 pop {r4, r5, r6, r7, pc}                                  |         
    0x08025fd0 ldr r3, [r3]                                              |         r3 = *(r3);
    0x08025fd4 tst r3, 2                                                 |         
    0x08025fd8 beq 0x8025f74                                             |         
                                                                         |     }
    0x08025fdc stmdaeq sb, {r0, r5, r7, sb, fp, sp, pc}                  |     __asm ("stmdaeq sb, {r0, r5, r7, sb, fp, sp, pc}");
    0x08025fe0 b 0x8025f74                                               |     goto label_0;
                                                                         | label_3:
    0x08025fec stmdaeq r5, {r3, r4, r5, r8, sb, sl, ip, lr}              |     __asm ("stmdaeq r5, {r3, r4, r5, r8, sb, sl, ip, lr}");
    0x08025ff0 stmdaeq r5, {r3, r4, r5, r8, sb, sl, ip, lr}              |     __asm ("stmdaeq r5, {r3, r4, r5, r8, sb, sl, ip, lr}");
    0x08025ff4 b 0x8025f3c                                               |     goto label_1;
                                                                         | label_4:
    0x08025ff8 ldr r3, [r4, 0x44]                                        |     r3 = *((r4 + 0x44));
    0x08025ffc mov r1, r5                                                |     r1 = r5;
    0x08026000 ldrd r6, r7, [r4, 0x10]                                   |     __asm ("ldrd r6, r7, [r4, 0x10]");
    0x08026004 strd r6, r7, [sp]                                         |     __asm ("strd r6, r7, [sp]");
    0x08026008 ldr r2, [pc, 0x14]                                        |     r2 = *(0x8026020);
    0x0802600c stmdaeq r5, {fp, ip, lr}                                  |     __asm ("stmdaeq r5, {fp, ip, lr}");
    0x08026010 stmdaeq r5, {fp, ip, lr}                                  |     __asm ("stmdaeq r5, {fp, ip, lr}");
    0x08026014 str r3, [sp, 8]                                           |     var_8h = r3;
    0x08026018 mvn r5, 4                                                 |     r5 = ~4;
    0x0802601c stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}              |     __asm ("stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}");
    0x08026020 b 0x8025f54                                               |     goto label_2;
                                                                         | }
    ; assembly                                                               | /* r2dec pseudo code output */
                                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/cifs/cifs.ko @ 0x801e600 */
                                                                             | #include <stdint.h>
                                                                             |  
    ; (fcn) sym.cifs_unix_basic_to_fattr ()                                  | void cifs_unix_basic_to_fattr (int32_t arg1, int32_t arg2) {
                                                                             |     int32_t var_0h;
                                                                             |     int32_t var_14h;
                                                                             |     r0 = arg1;
                                                                             |     r1 = arg2;
    0x0801e600 push {r4, r5, r6, r7, lr}                                     |     
    0x0801e604 mov r4, r1                                                    |     r4 = r1;
    0x0801e608 mov r5, r0                                                    |     r5 = r0;
    0x0801e60c mov r1, 0                                                     |     r1 = 0;
    0x0801e610 sub sp, sp, 0x14                                              |     
    0x0801e614 mov r7, r2                                                    |     r7 = r2;
    0x0801e618 mov r2, 0x78                                                  |     r2 = 0x78;
    0x0801e61c stmdaeq sb, {r0, r2, r4, r5, r6, r8, sb, fp, sp, pc}          |     __asm ("stmdaeq sb, {r0, r2, r4, r5, r6, r8, sb, fp, sp, pc}");
    0x0801e620 ldr r2, [r4, 0x4c]                                            |     r2 = *((r4 + 0x4c));
    0x0801e624 ldr r3, [r4, 0x50]                                            |     r3 = *((r4 + 0x50));
    0x0801e628 mov r6, sp                                                    |     r6 = sp;
    0x0801e62c strd r2, r3, [r5, 8]                                          |     __asm ("strd r2, r3, [r5, 8]");
    0x0801e630 mov r0, r6                                                    |     r0 = r6;
    0x0801e634 ldr r3, [r4, 8]                                               |     r3 = *((r4 + 8));
    0x0801e638 ldr r2, [r4, 0xc]                                             |     r2 = *((r4 + 0xc));
    0x0801e63c str r2, [r5, 0x1c]                                            |     *((r5 + 0x1c)) = r2;
    0x0801e640 str r3, [r5, 0x18]                                            |     *((r5 + 0x18)) = r3;
    0x0801e644 ldr r3, [r4]                                                  |     r3 = *(r4);
    0x0801e648 ldr r2, [r4, 4]                                               |     r2 = *((r4 + 4));
    0x0801e64c str r2, [r5, 0x14]                                            |     *((r5 + 0x14)) = r2;
    0x0801e650 str r3, [r5, 0x10]                                            |     *((r5 + 0x10)) = r3;
    0x0801e654 ldr r2, [r4, 0x18]                                            |     r2 = *((r4 + 0x18));
    0x0801e658 ldr r3, [r4, 0x1c]                                            |     r3 = *((r4 + 0x1c));
    0x0801e65c stmdaeq r2, {r5, r6, r8, fp, lr}                              |     __asm ("stmdaeq r2, {r5, r6, r8, fp, lr}");
    0x0801e660 add ip, r5, 0x40                                              |     
    0x0801e664 ldm r6, {r0, r1, r2, r3}                                      |     r0 = *(r6);
                                                                             |     r1 = *((r6 + 4));
                                                                             |     r2 = *((r6 + 8));
                                                                             |     r3 = *((r6 + 12));
    0x0801e668 stm ip, {r0, r1, r2, r3}                                      |     *(ip) = r0;
                                                                             |     *((ip + 4)) = r1;
                                                                             |     *((ip + 8)) = r2;
                                                                             |     *((ip + 12)) = r3;
    0x0801e66c mov r0, r6                                                    |     r0 = r6;
    0x0801e670 ldr r2, [r4, 0x20]                                            |     r2 = *((r4 + 0x20));
    0x0801e674 ldr r3, [r4, 0x24]                                            |     r3 = *((r4 + 0x24));
    0x0801e678 stmdaeq r2, {r5, r6, r8, fp, lr}                              |     __asm ("stmdaeq r2, {r5, r6, r8, fp, lr}");
    0x0801e67c add ip, r5, 0x50                                              |     
    0x0801e680 ldm r6, {r0, r1, r2, r3}                                      |     r0 = *(r6);
                                                                             |     r1 = *((r6 + 4));
                                                                             |     r2 = *((r6 + 8));
                                                                             |     r3 = *((r6 + 12));
    0x0801e684 stm ip, {r0, r1, r2, r3}                                      |     *(ip) = r0;
                                                                             |     *((ip + 4)) = r1;
                                                                             |     *((ip + 8)) = r2;
                                                                             |     *((ip + 12)) = r3;
    0x0801e688 mov r0, r6                                                    |     r0 = r6;
    0x0801e68c ldr r2, [r4, 0x10]                                            |     r2 = *((r4 + 0x10));
    0x0801e690 ldr r3, [r4, 0x14]                                            |     r3 = *((r4 + 0x14));
    0x0801e694 stmdaeq r2, {r5, r6, r8, fp, lr}                              |     __asm ("stmdaeq r2, {r5, r6, r8, fp, lr}");
    0x0801e698 add ip, r5, 0x60                                              |     
    0x0801e69c ldm r6, {r0, r1, r2, r3}                                      |     r0 = *(r6);
                                                                             |     r1 = *((r6 + 4));
                                                                             |     r2 = *((r6 + 8));
                                                                             |     r3 = *((r6 + 12));
    0x0801e6a0 stm ip, {r0, r1, r2, r3}                                      |     *(ip) = r0;
                                                                             |     *((ip + 4)) = r1;
                                                                             |     *((ip + 8)) = r2;
                                                                             |     *((ip + 12)) = r3;
    0x0801e6a4 ldr r3, [r4, 0x54]                                            |     r3 = *((r4 + 0x54));
    0x0801e6a8 ubfx r3, r3, 0, 0xc                                           |     r3 = (r3 >> 0) & ((1 << 0xc) - 1);
    0x0801e6ac strh r3, [r5, 0x30]                                           |     *((r5 + 0x30)) = r3;
    0x0801e6b0 ldr r2, [r4, 0x38]                                            |     r2 = *((r4 + 0x38));
    0x0801e6b4 sub r2, r2, 1                                                 |     r2--;
    0x0801e6b8 cmp r2, 5                                                     |     
                                                                             |     if (r2 > 5) {
                                                                             |         /* switch table (6 cases) at 0x801e6c4 */
    0x0801e6bc ldrls pc, [pc, r2, lsl 2]                                     |         offset_0 = r2 << 2;
                                                                             |         pc = *((pc + offset_0));
                                                                             |     }
    0x0801e6c0 b 0x801e804                                                   |     goto label_1;
                                                                             | label_0:
    0x0801e6f0 ldr r3, [r7, 0x20]                                            |     r3 = *((r7 + 0x20));
    0x0801e6f4 str r3, [r5, 0x28]                                            |     *((r5 + 0x28)) = r3;
    0x0801e6f8 ldr r3, [r7, 0x34]                                            |     r3 = *((r7 + 0x34));
    0x0801e6fc ands r3, r3, 0x400                                            |     r3 &= 0x400;
                                                                             |     if (r3 != r3) {
    0x0801e700 bne 0x801e71c                                                 |         goto label_2;
                                                                             |     }
    0x0801e704 ldr r1, [r4, 0x28]                                            |     r1 = *((r4 + 0x28));
    0x0801e708 mvn r0, 1                                                     |     r0 = ~1;
    0x0801e70c ldr r2, [r4, 0x2c]                                            |     r2 = *((r4 + 0x2c));
    0x0801e710 cmp r0, r1                                                    |     
    0x0801e714 sbcs r3, r3, r2                                               |     __asm ("sbcs r3, r3, r2");
    0x0801e718 bhs 0x801e7c8                                                 |     
                                                                             |     while (1) {
                                                                             | label_2:
    0x0801e71c ldr r3, [r7, 0x24]                                            |         r3 = *((r7 + 0x24));
    0x0801e720 str r3, [r5, 0x2c]                                            |         *((r5 + 0x2c)) = r3;
    0x0801e724 ldr r3, [r7, 0x34]                                            |         r3 = *((r7 + 0x34));
    0x0801e728 ands r3, r3, 0x800                                            |         r3 &= 0x800;
                                                                             |         if (r3 == r3) {
    0x0801e72c bne 0x801e748                                                 |             
    0x0801e730 ldr r1, [r4, 0x30]                                            |             r1 = *((r4 + 0x30));
    0x0801e734 mvn r0, 1                                                     |             r0 = ~1;
    0x0801e738 ldr r2, [r4, 0x34]                                            |             r2 = *((r4 + 0x34));
    0x0801e73c cmp r0, r1                                                    |             
    0x0801e740 sbcs r3, r3, r2                                               |             __asm ("sbcs r3, r3, r2");
                                                                             |             if (r0 >= r1) {
    0x0801e744 bhs 0x801e7e0                                                 |                 goto label_3;
                                                                             |             }
                                                                             |         }
    0x0801e748 ldr r3, [r4, 0x5c]                                            |         r3 = *((r4 + 0x5c));
    0x0801e74c str r3, [r5, 0x38]                                            |         *((r5 + 0x38)) = r3;
    0x0801e750 add sp, sp, 0x14                                              |         
    0x0801e754 pop {r4, r5, r6, r7, pc}                                      |         
    0x0801e7c8 stmdaeq sb, {r0, r6, r8, sb, fp, sp, pc}                      |         __asm ("stmdaeq sb, {r0, r6, r8, sb, fp, sp, pc}");
    0x0801e7cc stmdaeq sb, {r0, r6, r8, sb, fp, sp, pc}                      |         __asm ("stmdaeq sb, {r0, r6, r8, sb, fp, sp, pc}");
    0x0801e7d0 stmdaeq sb, {r0, sl, fp, sp, pc}                              |         __asm ("stmdaeq sb, {r0, sl, fp, sp, pc}");
    0x0801e7d4 cmn r0, 1                                                     |         
                                                                             |         if (r0 == 1) {
    0x0801e7d8 strne r0, [r5, 0x28]                                          |             *((r5 + 0x28)) = r0;
                                                                             |         }
    0x0801e7dc b 0x801e71c                                                   |         
                                                                             |     }
                                                                             | label_3:
    0x0801e7e0 stmdaeq sb, {r0, r6, r8, sb, fp, sp, pc}                      |     __asm ("stmdaeq sb, {r0, r6, r8, sb, fp, sp, pc}");
    0x0801e7e4 stmdaeq sb, {r0, r6, r8, sb, fp, sp, pc}                      |     __asm ("stmdaeq sb, {r0, r6, r8, sb, fp, sp, pc}");
    0x0801e7e8 stmdaeq sb, {r0, r2, sl, fp, sp, pc}                          |     __asm ("stmdaeq sb, {r0, r2, sl, fp, sp, pc}");
    0x0801e7ec cmn r0, 1                                                     |     
                                                                             |     if (r0 == 1) {
    0x0801e7f0 strne r0, [r5, 0x2c]                                          |         *((r5 + 0x2c)) = r0;
                                                                             |     }
    0x0801e7f4 ldr r3, [r4, 0x5c]                                            |     r3 = *((r4 + 0x5c));
    0x0801e7f8 str r3, [r5, 0x38]                                            |     *((r5 + 0x38)) = r3;
    0x0801e7fc add sp, sp, 0x14                                              |     
    0x0801e800 pop {r4, r5, r6, r7, pc}                                      |     
                                                                             | label_1:
    0x0801e804 mvn r3, r3, lsl 17                                            |     r3 = ~r3;
    0x0801e808 mov r2, 8                                                     |     r2 = 8;
    0x0801e80c str r2, [r5, 0x3c]                                            |     *((r5 + 0x3c)) = r2;
    0x0801e810 mvn r3, r3, lsr 17                                            |     r3 = ~r3;
    0x0801e814 strh r3, [r5, 0x30]                                           |     *((r5 + 0x30)) = r3;
    0x0801e818 b 0x801e6f0                                                   |     goto label_0;
                                                                             | }
    ; assembly                                                                   | /* r2dec pseudo code output */
                                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/cifs/cifs.ko @ 0x8042a18 */
                                                                                 | #include <stdint.h>
                                                                                 |  
                                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                                 |  
    ; (fcn) sym.smb2_compound_op ()                                              | void smb2_compound_op (int32_t arg_d0h, int32_t arg_d4h, int32_t arg_d8h, int32_t arg_dch, int32_t arg_e4h, int32_t arg_e8h, int32_t arg1, int32_t arg2) {
                                                                                 |     int32_t var_28h;
                                                                                 |     int32_t var_2ch;
                                                                                 |     int32_t var_30h;
                                                                                 |     int32_t var_34h;
                                                                                 |     int32_t var_3bh;
                                                                                 |     int32_t var_4ch;
                                                                                 |     int32_t var_54h;
                                                                                 |     int32_t var_58h;
                                                                                 |     int32_t var_5ch;
                                                                                 |     int32_t var_60h;
                                                                                 |     int32_t var_ach;
                                                                                 |     r0 = arg1;
                                                                                 |     r1 = arg2;
    0x08042a18 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                         |     
    0x08042a1c mov r8, r3                                                        |     r8 = r3;
    0x08042a20 stmdaeq r5, {r2, r4, sb, fp, ip}                                  |     __asm ("stmdaeq r5, {r2, r4, sb, fp, ip}");
    0x08042a24 stmdaeq r5, {r2, r4, sb, fp, ip}                                  |     __asm ("stmdaeq r5, {r2, r4, sb, fp, ip}");
    0x08042a28 sub sp, sp, 0xac                                                  |     
    0x08042a2c mov r5, r1                                                        |     r5 = r1;
    0x08042a30 add sb, sp, 0x4c                                                  |     sb += var_4ch;
    0x08042a34 mov r7, r2                                                        |     r7 = r2;
    0x08042a38 stmdaeq sb, {r0, r2, r3, r4, r5, r6, r7, sb, fp, sp, pc}          |     __asm ("stmdaeq sb, {r0, r2, r3, r4, r5, r6, r7, sb, fp, sp, pc}");
    0x08042a3c stmdaeq sb, {r0, r2, r3, r4, r5, r6, r7, sb, fp, sp, pc}          |     __asm ("stmdaeq sb, {r0, r2, r3, r4, r5, r6, r7, sb, fp, sp, pc}");
    0x08042a40 ldrh r1, [sp, 0xdc]                                               |     r1 = *(arg_dch);
    0x08042a44 str r0, [sp, 0x30]                                                |     var_30h = r0;
    0x08042a48 mov sl, 0                                                         |     sl = 0;
    0x08042a4c mov r6, r1                                                        |     r6 = r1;
    0x08042a50 ldr fp, [r5, 0x24]                                                |     fp = *((r5 + 0x24));
    0x08042a54 ldm r3, {r0, r1}                                                  |     r0 = *(r3);
                                                                                 |     r1 = *((r3 + 4));
    0x08042a58 stm sb, {r0, r1}                                                  |     *(sb) = r0;
                                                                                 |     *((sb + 4)) = r1;
    0x08042a5c ldr r0, [r2, 0x24]                                                |     r0 = *((r2 + 0x24));
    0x08042a60 mov r1, 0xb20                                                     |     r1 = 0xb20;
    0x08042a64 strb sl, [sp, 0x3b]                                               |     var_3bh = sl;
    0x08042a68 stmdaeq sb, {r0, r2, r4, r5, r7, sb, fp, sp, pc}                  |     __asm ("stmdaeq sb, {r0, r2, r4, r5, r7, sb, fp, sp, pc}");
    0x08042a6c subs r4, r0, 0                                                    |     r4 = r0 - 0;
                                                                                 |     if (r4 == r0) {
    0x08042a70 beq 0x80434cc                                                     |         goto label_5;
                                                                                 |     }
    0x08042a74 mov r0, fp                                                        |     r0 = fp;
    0x08042a78 stmdaeq r2, {r2, r3, r4, r6, r8, sl, fp, sp, lr}                  |     __asm ("stmdaeq r2, {r2, r3, r4, r6, r8, sl, fp, sp, lr}");
    0x08042a7c str r0, [sp, 0x28]                                                |     var_28h = r0;
    0x08042a80 mov r0, r5                                                        |     r0 = r5;
    0x08042a84 stmdaeq r3, {r4, r7, fp, ip, sp, pc}                              |     __asm ("stmdaeq r3, {r4, r7, fp, ip, sp, pc}");
    0x08042a88 subs r0, r0, sl                                                   |     r0 -= sl;
    0x08042a8c ldr r3, [sp, 0xe8]                                                |     r3 = *(arg_e8h);
                                                                                 |     if (r0 == r0) {
    0x08042a90 movne r0, 1                                                       |         r0 = 1;
                                                                                 |     }
    0x08042a94 str sl, [sp, 0x5c]                                                |     var_5ch = sl;
    0x08042a98 cmp r3, sl                                                        |     
    0x08042a9c str sl, [sp, 0x58]                                                |     var_58h = sl;
    0x08042aa0 lsl r3, r0, 0xb                                                   |     r3 = r0 << 0xb;
    0x08042aa4 str sl, [sp, 0x54]                                                |     var_54h = sl;
    0x08042aa8 str r3, [sp, 0x2c]                                                |     var_2ch = r3;
    0x08042aac add sl, r4, 0x38                                                  |     sl = r4 + 0x38;
                                                                                 |     if (r3 != sl) {
    0x08042ab0 beq 0x8042af0                                                     |         
    0x08042ab4 ldr r3, [sp, 0xe4]                                                |         r3 = *(arg_e4h);
    0x08042ab8 sub r8, r3, 2                                                     |         r8 = r3 - 2;
    0x08042abc cmp r8, 9                                                         |         
                                                                                 |         if (r8 > 9) {
                                                                                 |             /* switch table (10 cases) at 0x8042ac8 */
    0x08042ac0 ldrls pc, [pc, r8, lsl 2]                                         |             offset_0 = r8 << 2;
                                                                                 |             pc = *((pc + offset_0));
                                                                                 |         }
    0x08042ac4 b 0x8043190                                                       |         goto label_6;
                                                                                 |     }
    0x08042af0 mov r0, r8                                                        |     r0 = r8;
    0x08042af4 mov r1, r7                                                        |     r1 = r7;
    0x08042af8 stmdaeq r3, {r4, r6, r7, r8, sp, pc}                              |     __asm ("stmdaeq r3, {r4, r6, r7, r8, sp, pc}");
    0x08042afc subs r8, r0, 0                                                    |     r8 = r0 - 0;
                                                                                 |     if (r8 == r0) {
    0x08042b00 beq 0x8042ce4                                                     |         goto label_7;
                                                                                 |     }
    0x08042b04 ldr r3, [sp, 0xd0]                                                |     r3 = *(arg_d0h);
    0x08042b08 cmp r7, 0                                                         |     
    0x08042b0c str r3, [r4, 0xc]                                                 |     *((r4 + 0xc)) = r3;
    0x08042b10 ldr r3, [sp, 0xd4]                                                |     r3 = *(arg_d4h);
    0x08042b14 str r3, [r4, 8]                                                   |     *((r4 + 8)) = r3;
    0x08042b18 str r5, [r4]                                                      |     *(r4) = r5;
    0x08042b1c ldr r3, [sp, 0xd8]                                                |     r3 = *(arg_d8h);
                                                                                 |     if (r7 != 0) {
    0x08042b20 beq 0x8042b3c                                                     |         
    0x08042b24 mov r0, r7                                                        |         r0 = r7;
    0x08042b28 str r3, [sp, 0x34]                                                |         var_34h = r3;
    0x08042b2c stmdaeq r2, {r2, r5, sb, fp, ip, sp}                              |         __asm ("stmdaeq r2, {r2, r5, sb, fp, ip, sp}");
    0x08042b30 ldr r3, [sp, 0x34]                                                |         r3 = var_34h;
    0x08042b34 cmp r0, 0                                                         |         
                                                                                 |         if (r0 != 0) {
    0x08042b38 orrne r3, r3, 0x4000                                              |             r3 |= 0x4000;
                                                                                 |             goto label_8;
                                                                                 |         }
                                                                                 |     }
                                                                                 | label_8:
    0x08042b3c str r3, [r4, 0x10]                                                |     *((r4 + 0x10)) = r3;
    0x08042b40 add r0, sp, 0x60                                                  |     r0 += var_60h;
    0x08042b44 ldrb r3, [r4, 0x1e]                                               |     r3 = *((r4 + 0x1e));
    0x08042b48 mov ip, 8                                                         |     
    0x08042b4c str r7, [r4, 4]                                                   |     *((r4 + 4)) = r7;
    0x08042b50 mov r2, sl                                                        |     r2 = sl;
    0x08042b54 str r0, [r4, 0x18]                                                |     *((r4 + 0x18)) = r0;
    0x08042b58 add r0, r4, 0x8c                                                  |     r0 = r4 + 0x8c;
    0x08042b5c str ip, [r4, 0x3c]                                                |     *((r4 + 0x3c)) = ip;
    0x08042b60 bfc r3, 0, 1                                                      |     value_1 = BIT_MASK (1, );
                                                                                 |     value_1 = ~value_1;
                                                                                 |     r3 &= value_1;
    0x08042b64 str r0, [r4, 0x38]                                                |     *((r4 + 0x38)) = r0;
    0x08042b68 mov r0, r5                                                        |     r0 = r5;
    0x08042b6c strb r3, [r4, 0x1e]                                               |     *((r4 + 0x1e)) = r3;
    0x08042b70 add r3, sp, 0x3b                                                  |     r3 += var_3bh;
    0x08042b74 ldr r1, [sp, 0x28]                                                |     r1 = var_28h;
    0x08042b78 strh r6, [r4, 0x1c]                                               |     *((r4 + 0x1c)) = r6;
    0x08042b7c stm sp, {r4, r8}                                                  |     *(sp) = r4;
                                                                                 |     *((sp + 4)) = r8;
    0x08042b80 stmdaeq r3, {r4, r5, r6, r8, sb, fp, ip, lr, pc}                  |     __asm ("stmdaeq r3, {r4, r5, r6, r8, sb, fp, ip, lr, pc}");
    0x08042b84 mov r7, r0                                                        |     r7 = r0;
    0x08042b88 mov r0, r8                                                        |     r0 = r8;
    0x08042b8c stmdaeq sb, {r0, r2, r8, sb, fp, sp, pc}                          |     __asm ("stmdaeq sb, {r0, r2, r8, sb, fp, sp, pc}");
    0x08042b90 cmp r7, 0                                                         |     
                                                                                 |     if (r7 == 0) {
    0x08042b94 beq 0x80431e4                                                     |         goto label_9;
                                                                                 |     }
    0x08042b98 ldr r3, [sp, 0xe4]                                                |     r3 = *(arg_e4h);
    0x08042b9c sub r8, r3, 2                                                     |     r8 = r3 - 2;
    0x08042ba0 mov r0, sl                                                        |     r0 = sl;
    0x08042ba4 stmdaeq r3, {r7, r8, sl, sp, lr, pc}                              |     __asm ("stmdaeq r3, {r7, r8, sl, sp, lr, pc}");
    0x08042ba8 cmn r7, 0x4e                                                      |     
                                                                                 |     if (r7 == 0x4e) {
    0x08042bac beq 0x8042ca8                                                     |         goto label_10;
                                                                                 |     }
                                                                                 | label_0:
    0x08042bb0 cmp r8, 9                                                         |     
                                                                                 |     if (r8 > 9) {
                                                                                 |         /* switch table (10 cases) at 0x8042bbc */
    0x08042bb4 ldrls pc, [pc, r8, lsl 2]                                         |         offset_2 = r8 << 2;
                                                                                 |         pc = *((pc + offset_2));
                                                                                 |     }
    0x08042bb8 b 0x8042c0c                                                       |     
                                                                                 |     while (1) {
    0x08042c0c ldr r1, [r4, 0x20]                                                |         r1 = *((r4 + 0x20));
    0x08042c10 ldr r0, [sp, 0x54]                                                |         r0 = var_54h;
    0x08042c14 stmdaeq r2, {r4, ip, sp}                                          |         __asm ("stmdaeq r2, {r4, ip, sp}");
    0x08042c18 ldr r1, [r4, 0x28]                                                |         r1 = *((r4 + 0x28));
    0x08042c1c ldr r0, [sp, 0x58]                                                |         r0 = var_58h;
    0x08042c20 stmdaeq r2, {r4, ip, sp}                                          |         __asm ("stmdaeq r2, {r4, ip, sp}");
    0x08042c24 ldr r1, [r4, 0x30]                                                |         r1 = *((r4 + 0x30));
    0x08042c28 ldr r0, [sp, 0x5c]                                                |         r0 = var_5ch;
    0x08042c2c stmdaeq r2, {r4, ip, sp}                                          |         __asm ("stmdaeq r2, {r4, ip, sp}");
    0x08042c30 mov r0, r4                                                        |         r0 = r4;
    0x08042c34 stmdaeq sb, {r0, r2, r8, sb, fp, sp, pc}                          |         __asm ("stmdaeq sb, {r0, r2, r8, sb, fp, sp, pc}");
                                                                                 | label_2:
    0x08042c38 mov r0, r7                                                        |         r0 = r7;
    0x08042c3c add sp, sp, 0xac                                                  |         
    0x08042c40 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                          |         
                                                                                 | label_10:
    0x08042ca8 stmdaeq r6, {r3, r4, r5, r6, r7, r8, fp, ip, lr, pc}              |         __asm ("stmdaeq r6, {r3, r4, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x08042cac stmdaeq r6, {r3, r4, r5, r6, r7, r8, fp, ip, lr, pc}              |         __asm ("stmdaeq r6, {r3, r4, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x08042cb0 ldrb r2, [r3]                                                     |         r2 = *(r3);
    0x08042cb4 cmp r2, 0                                                         |         
                                                                                 |         if (r2 == 0) {
    0x08042cb8 beq 0x80434d4                                                     |             goto label_11;
                                                                                 |         }
                                                                                 | label_3:
    0x08042cbc ldrb r3, [r5, 0x64a]                                              |         r3 = *((r5 + 0x64a));
    0x08042cc0 orr r3, r3, 1                                                     |         r3 |= 1;
    0x08042cc4 strb r3, [r5, 0x64a]                                              |         *((r5 + 0x64a)) = r3;
    0x08042cc8 b 0x8042cf8                                                       |         goto label_1;
                                                                                 | label_7:
    0x08042ce4 ldr r3, [sp, 0xe4]                                                |         r3 = *(arg_e4h);
    0x08042ce8 mov r0, sl                                                        |         r0 = sl;
    0x08042cec mvn r7, 0xb                                                       |         r7 = ~0xb;
    0x08042cf0 sub r8, r3, 2                                                     |         r8 = r3 - 2;
    0x08042cf4 stmdaeq r3, {r7, r8, sl, sp, lr, pc}                              |         __asm ("stmdaeq r3, {r7, r8, sl, sp, lr, pc}");
                                                                                 | label_1:
    0x08042cf8 cmp r8, 9                                                         |         
                                                                                 |         if (r8 > 9) {
                                                                                 |             /* switch table (10 cases) at 0x8042d04 */
    0x08042cfc ldrls pc, [pc, r8, lsl 2]                                         |             offset_3 = r8 << 2;
                                                                                 |             pc = *((pc + offset_3));
                                                                                 |         }
    0x08042d00 b 0x8042c0c                                                       |         
                                                                                 |     }
                                                                                 |     do {
                                                                                 | label_6:
    0x08043190 ldr r1, [pc, 0x368]                                               |         r1 = *(0x80434fc);
    0x08043194 stmdaeq r6, {r4, r6, r7, r8, sb, sl, ip, lr, pc}                  |         __asm ("stmdaeq r6, {r4, r6, r7, r8, sb, sl, ip, lr, pc}");
    0x08043198 stmdaeq r6, {r4, r6, r7, r8, sb, sl, ip, lr, pc}                  |         __asm ("stmdaeq r6, {r4, r6, r7, r8, sb, sl, ip, lr, pc}");
    0x0804319c stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}                  |         __asm ("stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}");
    0x080431a0 cmp r0, 0                                                         |         
                                                                                 |         if (r0 != 0) {
    0x080431a4 bne 0x80434f0                                                     |             goto label_12;
                                                                                 |         }
                                                                                 | label_4:
    0x080431a8 ldr r3, [sp, 0xe8]                                                |         r3 = *(arg_e8h);
    0x080431ac cmp r3, 0                                                         |         
                                                                                 |         if (r3 == 0) {
    0x080431b0 beq 0x80432cc                                                     |             goto label_13;
                                                                                 |         }
    0x080431b4 mov r0, r3                                                        |         r0 = r3;
    0x080431b8 mvn r7, 0x15                                                      |         r7 = ~0x15;
    0x080431bc stmdaeq r1, {r3, r5, r7, r8, sb, fp, pc}                          |         __asm ("stmdaeq r1, {r3, r5, r7, r8, sb, fp, pc}");
    0x080431c0 mov r0, sl                                                        |         r0 = sl;
    0x080431c4 stmdaeq r3, {r7, r8, sl, sp, lr, pc}                              |         __asm ("stmdaeq r3, {r7, r8, sl, sp, lr, pc}");
    0x080431c8 b 0x8042bb0                                                       |         goto label_0;
                                                                                 | label_9:
    0x080431e4 mov r1, sl                                                        |         r1 = sl;
    0x080431e8 mov r0, r5                                                        |         r0 = r5;
    0x080431ec stmdaeq r3, {r5, r6, r8, sl, ip, lr}                              |         __asm ("stmdaeq r3, {r5, r6, r8, sl, ip, lr}");
    0x080431f0 ldr r3, [sp, 0xe4]                                                |         r3 = *(arg_e4h);
    0x080431f4 sub r8, r3, 2                                                     |         r8 = r3 - 2;
    0x080431f8 cmp r8, 9                                                         |         
                                                                                 |         if (r8 > 9) {
                                                                                 |             /* switch table (10 cases) at 0x8043204 */
    0x080431fc ldrls pc, [pc, r8, lsl 2]                                         |             offset_4 = r8 << 2;
                                                                                 |             pc = *((pc + offset_4));
                                                                                 |         }
    0x08043200 b 0x8043190                                                       |         
                                                                                 |     } while (1);
                                                                                 | label_13:
    0x080432cc mov r0, sl                                                        |     r0 = sl;
    0x080432d0 mvn r7, 0x15                                                      |     r7 = ~0x15;
    0x080432d4 stmdaeq r3, {r7, r8, sl, sp, lr, pc}                              |     __asm ("stmdaeq r3, {r7, r8, sl, sp, lr, pc}");
    0x080432d8 b 0x8042cf8                                                       |     goto label_1;
                                                                                 | label_5:
    0x080434cc mvn r7, 0xb                                                       |     r7 = ~0xb;
    0x080434d0 b 0x8042c38                                                       |     goto label_2;
                                                                                 | label_11:
    0x080434d4 add r1, r5, 0x28                                                  |     r1 = r5 + 0x28;
    0x080434d8 stmdaeq r6, {r2, r3, r4, sb, fp, ip, pc}                          |     __asm ("stmdaeq r6, {r2, r3, r4, sb, fp, ip, pc}");
    0x080434dc stmdaeq r6, {r2, r3, r4, sb, fp, ip, pc}                          |     __asm ("stmdaeq r6, {r2, r3, r4, sb, fp, ip, pc}");
    0x080434e0 mov r2, 1                                                         |     r2 = 1;
    0x080434e4 strb r2, [r3]                                                     |     *(r3) = r2;
    0x080434e8 stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}                      |     __asm ("stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}");
    0x080434ec b 0x8042cbc                                                       |     goto label_3;
                                                                                 | label_12:
    0x080434f0 stmdaeq r6, {r2, r3, r4, r5, r6, r7, r8, fp, ip, pc}              |     __asm ("stmdaeq r6, {r2, r3, r4, r5, r6, r7, r8, fp, ip, pc}");
    0x080434f4 stmdaeq r6, {r2, r3, r4, r5, r6, r7, r8, fp, ip, pc}              |     __asm ("stmdaeq r6, {r2, r3, r4, r5, r6, r7, r8, fp, ip, pc}");
    0x080434f8 stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}                      |     __asm ("stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}");
    0x080434fc b 0x80431a8                                                       |     goto label_4;
                                                                                 | }
    ; assembly                                                           | /* r2dec pseudo code output */
                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/cifs/cifs.ko @ 0x80399a4 */
                                                                         | #include <stdint.h>
                                                                         |  
    ; (fcn) sym.smb2_get_data_area_len ()                                | void smb2_get_data_area_len (int32_t arg1, int32_t arg2) {
                                                                         |     r0 = arg1;
                                                                         |     r1 = arg2;
    0x080399a4 push {r4, r5, r6, lr}                                     |     
    0x080399a8 mov r3, 0                                                 |     r3 = 0;
    0x080399ac mov r5, r0                                                |     r5 = r0;
    0x080399b0 str r3, [r0]                                              |     *(r0) = r3;
    0x080399b4 mov r6, r1                                                |     r6 = r1;
    0x080399b8 str r3, [r1]                                              |     *(r1) = r3;
    0x080399bc mov r4, r2                                                |     r4 = r2;
    0x080399c0 ldr r3, [r2, 8]                                           |     r3 = *((r2 + 8));
    0x080399c4 cmp r3, 0                                                 |     
    0x080399c8 cmpne r3, 0xc0000016                                      |     __asm ("cmpne r3, 0xc0000016");
                                                                         |     if (r3 != 0) {
    0x080399cc beq 0x80399dc                                             |         
    0x080399d0 ldrh r3, [r2, 0x40]                                       |         r3 = *((r2 + 0x40));
    0x080399d4 cmp r3, 9                                                 |         
                                                                         |         if (r3 == 9) {
    0x080399d8 beq 0x8039bb0                                             |             goto label_4;
                                                                         |         }
                                                                         |     }
    0x080399dc ldrh r3, [r4, 0xc]                                        |     r3 = *((r4 + 0xc));
    0x080399e0 cmp r3, 0x10                                              |     
                                                                         |     if (r3 > 0x10) {
                                                                         |         /* switch table (17 cases) at 0x80399ec */
    0x080399e4 ldrls pc, [pc, r3, lsl 2]                                 |         offset_0 = r3 << 2;
                                                                         |         pc = *((pc + offset_0));
                                                                         |     }
    0x080399e8 b 0x8039aa8                                               |     
                                                                         |     while (r0 == 0) {
                                                                         | label_0:
    0x08039a40 ldr r3, [r5]                                              |         r3 = *(r5);
    0x08039a44 cmp r3, 0x1000                                            |         
                                                                         |         if (r3 <= 0x1000) {
    0x08039a48 bgt 0x8039a80                                             |             
    0x08039a4c cmp r3, 0                                                 |             
                                                                         |             if (r3 < 0) {
    0x08039a50 blt 0x8039b34                                             |                 goto label_5;
                                                                         |             }
    0x08039a54 ldr r2, [r6]                                              |             r2 = *(r6);
    0x08039a58 cmp r2, 0                                                 |             
                                                                         |             if (r2 < 0) {
    0x08039a5c blt 0x8039b60                                             |                 goto label_6;
                                                                         |             }
    0x08039a60 cmp r2, 0x20000                                           |             
                                                                         |             if (r2 > 0x20000) {
    0x08039a64 bgt 0x8039b88                                             |                 goto label_7;
                                                                         |             }
    0x08039a68 cmp r3, 0                                                 |             
                                                                         |             if (r3 == 0) {
    0x08039a6c beq 0x8039bb0                                             |                 goto label_4;
                                                                         |             }
    0x08039a70 cmp r2, 0                                                 |             
                                                                         |             if (r2 == 0) {
    0x08039a74 beq 0x8039bb0                                             |                 goto label_4;
                                                                         |             }
    0x08039a78 add r0, r4, r3                                            |             r0 = r4 + r3;
    0x08039a7c pop {r4, r5, r6, pc}                                      |             
                                                                         |         }
    0x08039a80 ldr r1, [pc, 0x158]                                       |         r1 = *(0x8039bdc);
    0x08039a84 ldr r0, [pc, 0x158]                                       |         r0 = "cifs_remap_file_range";
    0x08039a88 stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}          |         __asm ("stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}");
    0x08039a8c cmp r0, 0                                                 |         
                                                                         |         if (r0 != 0) {
    0x08039a90 bne 0x8039bb8                                             |             goto label_8;
                                                                         |         }
                                                                         | label_2:
    0x08039a94 mov r3, 0                                                 |         r3 = 0;
    0x08039a98 str r3, [r6]                                              |         *(r6) = r3;
    0x08039a9c mov r0, r3                                                |         r0 = r3;
    0x08039aa0 str r3, [r5]                                              |         *(r5) = r3;
    0x08039aa4 pop {r4, r5, r6, pc}                                      |         
    0x08039aa8 ldr r1, [pc, 0x130]                                       |         r1 = *(0x8039bdc);
    0x08039aac ldr r0, [pc, 0x134]                                       |         r0 = .data;
    0x08039ab0 stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}          |         __asm ("stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}");
    0x08039ab4 cmp r0, 0                                                 |         
    0x08039ab8 beq 0x8039a40                                             |         
                                                                         |     }
    0x08039abc ldrh r1, [r4, 0xc]                                        |     r1 = *((r4 + 0xc));
    0x08039ac0 stmdaeq r6, {r2, r8, fp, pc}                              |     __asm ("stmdaeq r6, {r2, r8, fp, pc}");
    0x08039ac4 stmdaeq r6, {r2, r8, fp, pc}                              |     __asm ("stmdaeq r6, {r2, r8, fp, pc}");
    0x08039ac8 stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}              |     __asm ("stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}");
    0x08039acc b 0x8039a40                                               |     goto label_0;
                                                                         | label_5:
    0x08039b34 ldr r1, [pc, 0xa4]                                        |     r1 = *(0x8039bdc);
    0x08039b38 ldr r0, [pc, 0xac]                                        |     r0 = .data;
    0x08039b3c stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}          |     __asm ("stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}");
    0x08039b40 cmp r0, 0                                                 |     
                                                                         |     if (r0 != 0) {
    0x08039b44 bne 0x8039bcc                                             |         goto label_9;
                                                                         |     }
                                                                         | label_3:
    0x08039b48 mov r3, 0                                                 |     r3 = 0;
    0x08039b4c str r3, [r5]                                              |     *(r5) = r3;
                                                                         |     do {
                                                                         | label_1:
    0x08039b50 mov r3, 0                                                 |         r3 = 0;
    0x08039b54 mov r0, r3                                                |         r0 = r3;
    0x08039b58 str r3, [r6]                                              |         *(r6) = r3;
    0x08039b5c pop {r4, r5, r6, pc}                                      |         
                                                                         | label_6:
    0x08039b60 ldr r1, [pc, 0x78]                                        |         r1 = *(0x8039bdc);
    0x08039b64 ldr r0, [pc, 0x84]                                        |         r0 = .data;
    0x08039b68 stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}          |         __asm ("stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}");
    0x08039b6c cmp r0, 0                                                 |         
    0x08039b70 beq 0x8039b50                                             |         
                                                                         |     } while (r0 == 0);
    0x08039b74 ldr r1, [r6]                                              |     r1 = *(r6);
    0x08039b78 stmdaeq r6, {r4, r5, r7, r8, fp, pc}                      |     __asm ("stmdaeq r6, {r4, r5, r7, r8, fp, pc}");
    0x08039b7c stmdaeq r6, {r4, r5, r7, r8, fp, pc}                      |     __asm ("stmdaeq r6, {r4, r5, r7, r8, fp, pc}");
    0x08039b80 stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}              |     __asm ("stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}");
    0x08039b84 b 0x8039b50                                               |     goto label_1;
                                                                         | label_7:
    0x08039b88 ldr r1, [pc, 0x50]                                        |     r1 = *(0x8039bdc);
    0x08039b8c ldr r0, [pc, 0x60]                                        |     r0 = .data;
    0x08039b90 stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}          |     __asm ("stmdaeq sb, {r0, r2, r3, r6, r7, sb, fp, sp, pc}");
    0x08039b94 cmp r0, 0                                                 |     
                                                                         |     if (r0 == 0) {
    0x08039b98 beq 0x8039b50                                             |         goto label_1;
                                                                         |     }
    0x08039b9c ldr r1, [r6]                                              |     r1 = *(r6);
    0x08039ba0 stmdaeq r6, {r2, r4, r5, r6, r7, r8, fp, pc}              |     __asm ("stmdaeq r6, {r2, r4, r5, r6, r7, r8, fp, pc}");
    0x08039ba4 stmdaeq r6, {r2, r4, r5, r6, r7, r8, fp, pc}              |     __asm ("stmdaeq r6, {r2, r4, r5, r6, r7, r8, fp, pc}");
    0x08039ba8 stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}              |     __asm ("stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}");
    0x08039bac b 0x8039b50                                               |     goto label_1;
                                                                         | label_4:
    0x08039bb0 mov r0, 0                                                 |     r0 = 0;
    0x08039bb4 pop {r4, r5, r6, pc}                                      |     
                                                                         | label_8:
    0x08039bb8 ldr r1, [r5]                                              |     r1 = *(r5);
    0x08039bbc stmdaeq r6, {r2, r4, r5, r8, fp, pc}                      |     __asm ("stmdaeq r6, {r2, r4, r5, r8, fp, pc}");
    0x08039bc0 stmdaeq r6, {r2, r4, r5, r8, fp, pc}                      |     __asm ("stmdaeq r6, {r2, r4, r5, r8, fp, pc}");
    0x08039bc4 stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}              |     __asm ("stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}");
    0x08039bc8 b 0x8039a94                                               |     goto label_2;
                                                                         | label_9:
    0x08039bcc ldr r1, [r5]                                              |     r1 = *(r5);
    0x08039bd0 stmdaeq r6, {r2, r3, r5, r6, r8, fp, pc}                  |     __asm ("stmdaeq r6, {r2, r3, r5, r6, r8, fp, pc}");
    0x08039bd4 stmdaeq r6, {r2, r3, r5, r6, r8, fp, pc}                  |     __asm ("stmdaeq r6, {r2, r3, r5, r6, r8, fp, pc}");
    0x08039bd8 stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}              |     __asm ("stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}");
    0x08039bdc b 0x8039b48                                               |     goto label_3;
                                                                         | }
    ; assembly                                                               | /* r2dec pseudo code output */
                                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/cifs/cifs.ko @ 0x803b09c */
                                                                             | #include <stdint.h>
                                                                             |  
    ; (fcn) sym.smb2_readv_callback ()                                       | void smb2_readv_callback (int32_t arg1, int32_t arg2) {
                                                                             |     int32_t var_0h;
                                                                             |     int32_t var_4h;
                                                                             |     int32_t var_ch;
                                                                             |     int32_t var_10h;
                                                                             |     int32_t var_14h;
                                                                             |     int32_t var_18h;
                                                                             |     int32_t var_1ch;
                                                                             |     int32_t var_20h;
                                                                             |     int32_t var_24h;
                                                                             |     int32_t var_28h;
                                                                             |     int32_t var_2ch;
                                                                             |     int32_t var_34h;
                                                                             |     r0 = arg1;
                                                                             |     r1 = arg2;
    0x0803b09c push {r4, r5, r6, r7, r8, sb, lr}                             |     
    0x0803b0a0 mov r5, r0                                                    |     r5 = r0;
    0x0803b0a4 ldr r4, [r0, 0x34]                                            |     r4 = *((r0 + 0x34));
    0x0803b0a8 sub sp, sp, 0x34                                              |     
    0x0803b0ac ldr r2, [r0, 0xc]                                             |     r2 = *((r0 + 0xc));
    0x0803b0b0 ldr r3, [r4, 0x18]                                            |     r3 = *((r4 + 0x18));
    0x0803b0b4 ldr r7, [r4, 0x68]                                            |     r7 = *((r4 + 0x68));
    0x0803b0b8 ldr r8, [r4, 0x58]                                            |     r8 = *((r4 + 0x58));
    0x0803b0bc ldr r3, [r3, 0x74]                                            |     r3 = *((r3 + 0x74));
    0x0803b0c0 cmp r2, r7                                                    |     
    0x0803b0c4 ldr r6, [r3, 0x1c]                                            |     r6 = *((r3 + 0x1c));
    0x0803b0c8 ldr r3, [r4, 0x84]                                            |     r3 = *((r4 + 0x84));
    0x0803b0cc str r3, [sp, 0x1c]                                            |     var_1ch = r3;
    0x0803b0d0 ldr r3, [r4, 0x70]                                            |     r3 = *((r4 + 0x70));
    0x0803b0d4 str r3, [sp, 0x20]                                            |     var_20h = r3;
    0x0803b0d8 ldr r3, [r4, 0x80]                                            |     r3 = *((r4 + 0x80));
    0x0803b0dc str r3, [sp, 0x24]                                            |     var_24h = r3;
    0x0803b0e0 ldr r3, [r4, 0x6c]                                            |     r3 = *((r4 + 0x6c));
    0x0803b0e4 str r3, [sp, 0x28]                                            |     var_28h = r3;
    0x0803b0e8 ldr r3, [r4, 0x74]                                            |     r3 = *((r4 + 0x74));
    0x0803b0ec str r3, [sp, 0x2c]                                            |     var_2ch = r3;
    0x0803b0f0 mov r3, 0                                                     |     r3 = 0;
    0x0803b0f4 str r3, [sp, 0xc]                                             |     var_ch = r3;
    0x0803b0f8 str r3, [sp, 0x10]                                            |     var_10h = r3;
    0x0803b0fc add r3, r4, 0x60                                              |     r3 = r4 + 0x60;
    0x0803b100 str r3, [sp, 0x14]                                            |     var_14h = r3;
    0x0803b104 mov r3, 1                                                     |     r3 = 1;
    0x0803b108 str r3, [sp, 0x18]                                            |     var_18h = r3;
                                                                             |     if (r2 != r7) {
    0x0803b10c bne 0x803b29c                                                 |         goto label_1;
                                                                             |     }
                                                                             | label_0:
    0x0803b110 ldr r3, [r5, 0x44]                                            |     r3 = *((r5 + 0x44));
    0x0803b114 sub r3, r3, 2                                                 |     r3 -= 2;
    0x0803b118 cmp r3, 0xe                                                   |     
                                                                             |     if (r3 > 0xe) {
                                                                             |         /* switch table (15 cases) at 0x803b124 */
    0x0803b11c ldrls pc, [pc, r3, lsl 2]                                     |         offset_0 = r3 << 2;
                                                                             |         pc = *((pc + offset_0));
                                                                             |     }
    0x0803b120 b 0x803b170                                                   |     
    0x0803b170 mvn r3, 4                                                     |     r3 = ~4;
    0x0803b174 str r3, [r4, 0x3c]                                            |     *((r4 + 0x3c)) = r3;
    0x0803b178 add r3, r6, 0x5b0                                             |     r3 = r6 + 0x5b0;
    0x0803b17c add r3, r3, 4                                                 |     r3 += 4;
    0x0803b180 pld [r3]                                                      |     __asm ("pld [r3]");
                                                                             |     do {
    0x0803b184 ldrex r2, [r3]                                                |         __asm ("ldrex r2, [r3]");
    0x0803b188 add r2, r2, 1                                                 |         r2++;
    0x0803b18c strex r1, r2, [r3]                                            |         __asm ("strex r1, r2, [r3]");
    0x0803b190 teq r1, 0                                                     |         __asm ("teq r1, 0");
    0x0803b194 bne 0x803b184                                                 |         
                                                                             |     } while (r3 != 0xe);
    0x0803b198 stmdaeq r6, {r2, r3, r5, r6, r8, sb, ip, sp, lr, pc}          |     __asm ("stmdaeq r6, {r2, r3, r5, r6, r8, sb, ip, sp, lr, pc}");
    0x0803b19c stmdaeq r6, {r2, r3, r5, r6, r8, sb, ip, sp, lr, pc}          |     __asm ("stmdaeq r6, {r2, r3, r5, r6, r8, sb, ip, sp, lr, pc}");
    0x0803b1a0 add r2, r4, 0x40                                              |     r2 = r4 + 0x40;
    0x0803b1a4 mov r0, 1                                                     |     r0 = 1;
    0x0803b1a8 ldr r1, [r3]                                                  |     r1 = *(r3);
    0x0803b1ac stmdaeq sb, {r0, r3, r5, r6, r8, sb, fp, sp, pc}              |     __asm ("stmdaeq sb, {r0, r3, r5, r6, r8, sb, fp, sp, pc}");
    0x0803b1b0 mov r0, r5                                                    |     r0 = r5;
    0x0803b1b4 stmdaeq r2, {r2, r3, r5, sb, sl, fp, ip, lr}                  |     __asm ("stmdaeq r2, {r2, r3, r5, sb, sl, fp, ip, lr}");
    0x0803b1b8 ldr r3, [r7, 0x24]                                            |     r3 = *((r7 + 0x24));
    0x0803b1bc add r1, sp, 0xc                                               |     r1 += var_ch;
    0x0803b1c0 mov r0, r7                                                    |     r0 = r7;
    0x0803b1c4 mov r2, 0                                                     |     r2 = 0;
    0x0803b1c8 ldr r3, [r3, 0x14]                                            |     r3 = *((r3 + 0x14));
    0x0803b1cc blx r3                                                        |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0803b1d0 add sp, sp, 0x34                                              |     
    0x0803b1d4 pop {r4, r5, r6, r7, r8, sb, pc}                              |     
                                                                             | label_1:
    0x0803b29c stmdaeq r6, {r3, r5, r6, r7, r8, fp, ip, lr, pc}              |     __asm ("stmdaeq r6, {r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0803b2a0 stmdaeq r6, {r3, r5, r6, r7, r8, fp, ip, lr, pc}              |     __asm ("stmdaeq r6, {r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0803b2a4 ldrb r0, [r1, 2]                                              |     r0 = *((r1 + 2));
    0x0803b2a8 cmp r0, 0                                                     |     
                                                                             |     if (r0 != 0) {
    0x0803b2ac bne 0x803b110                                                 |         goto label_0;
                                                                             |     }
    0x0803b2b0 strb r3, [r1, 2]                                              |     *((r1 + 2)) = r3;
    0x0803b2b4 stmdaeq r6, {r2, r3, r4, r5, r6, r7, r8, sl, fp, pc}          |     __asm ("stmdaeq r6, {r2, r3, r4, r5, r6, r7, r8, sl, fp, pc}");
    0x0803b2b8 stmdaeq r6, {r2, r3, r4, r5, r6, r7, r8, sl, fp, pc}          |     __asm ("stmdaeq r6, {r2, r3, r4, r5, r6, r7, r8, sl, fp, pc}");
    0x0803b2bc str r2, [sp, 4]                                               |     var_4h = r2;
    0x0803b2c0 str r7, [sp]                                                  |     *(sp) = r7;
    0x0803b2c4 stmdaeq r6, {r3, r4, r5, sb, sl, fp, pc}                      |     __asm ("stmdaeq r6, {r3, r4, r5, sb, sl, fp, pc}");
    0x0803b2c8 stmdaeq r6, {r3, r4, r5, sb, sl, fp, pc}                      |     __asm ("stmdaeq r6, {r3, r4, r5, sb, sl, fp, pc}");
    0x0803b2cc mov r2, 9                                                     |     r2 = 9;
    0x0803b2d0 movw r1, 0xf61                                                |     r1 = 0xf61;
    0x0803b2d4 stmdaeq sb, {r0, r2, r3, r7, r8, sb, fp, sp, pc}              |     __asm ("stmdaeq sb, {r0, r2, r3, r7, r8, sb, fp, sp, pc}");
    0x0803b2d8 b 0x803b110                                                   |     goto label_0;
                                                                             | }
    ; assembly                                                               | /* r2dec pseudo code output */
                                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/cifs/cifs.ko @ 0x803aeb8 */
                                                                             | #include <stdint.h>
                                                                             |  
    ; (fcn) sym.smb2_writev_callback ()                                      | void smb2_writev_callback (int32_t arg1) {
                                                                             |     int32_t var_0h;
                                                                             |     int32_t var_4h;
                                                                             |     int32_t var_8h;
                                                                             |     int32_t var_ch;
                                                                             |     int32_t var_10h;
                                                                             |     r0 = arg1;
    0x0803aeb8 push {r4, r5, r6, r7, r8, lr}                                 |     
    0x0803aebc mov r3, 0                                                     |     r3 = 0;
    0x0803aec0 mov r4, r0                                                    |     r4 = r0;
    0x0803aec4 ldr r5, [r0, 0x34]                                            |     r5 = *((r0 + 0x34));
    0x0803aec8 sub sp, sp, 0x10                                              |     
    0x0803aecc ldr r2, [r0, 0xc]                                             |     r2 = *((r0 + 0xc));
    0x0803aed0 ldr r7, [r0, 0x3c]                                            |     r7 = *((r0 + 0x3c));
    0x0803aed4 str r3, [sp, 8]                                               |     var_8h = r3;
    0x0803aed8 str r3, [sp, 0xc]                                             |     var_ch = r3;
    0x0803aedc ldr r3, [r5, 0x2c]                                            |     r3 = *((r5 + 0x2c));
    0x0803aee0 ldr r6, [r5, 0x4c]                                            |     r6 = *((r5 + 0x4c));
    0x0803aee4 ldr r3, [r3, 0x74]                                            |     r3 = *((r3 + 0x74));
    0x0803aee8 cmp r2, r6                                                    |     
    0x0803aeec ldr r8, [r3, 0x1c]                                            |     r8 = *((r3 + 0x1c));
                                                                             |     if (r2 != r6) {
    0x0803aef0 bne 0x803b058                                                 |         goto label_2;
                                                                             |     }
                                                                             | label_1:
    0x0803aef4 ldr r3, [r4, 0x44]                                            |     r3 = *((r4 + 0x44));
    0x0803aef8 sub r3, r3, 2                                                 |     r3 -= 2;
    0x0803aefc cmp r3, 0xe                                                   |     
                                                                             |     if (r3 > 0xe) {
                                                                             |         /* switch table (15 cases) at 0x803af08 */
    0x0803af00 ldrls pc, [pc, r3, lsl 2]                                     |         offset_0 = r3 << 2;
                                                                             |         pc = *((pc + offset_0));
                                                                             |     }
    0x0803af04 b 0x803af54                                                   |     
    0x0803af54 mvn r3, 4                                                     |     r3 = ~4;
    0x0803af58 str r3, [r5, 0x48]                                            |     *((r5 + 0x48)) = r3;
    0x0803af5c add r3, r8, 0x5b0                                             |     r3 = r8 + 0x5b0;
    0x0803af60 add r3, r3, 8                                                 |     r3 += 8;
    0x0803af64 pld [r3]                                                      |     __asm ("pld [r3]");
                                                                             |     do {
    0x0803af68 ldrex r2, [r3]                                                |         __asm ("ldrex r2, [r3]");
    0x0803af6c add r2, r2, 1                                                 |         r2++;
    0x0803af70 strex r1, r2, [r3]                                            |         __asm ("strex r1, r2, [r3]");
    0x0803af74 teq r1, 0                                                     |         __asm ("teq r1, 0");
    0x0803af78 bne 0x803af68                                                 |         
                                                                             |     } while (r3 != 0xe);
    0x0803af7c ldr r3, [r5, 0x48]                                            |     r3 = *((r5 + 0x48));
    0x0803af80 cmn r3, 0x1c                                                  |     
    0x0803af84 beq 0x803b028                                                 |     
                                                                             |     while (r2 != 0) {
                                                                             | label_0:
    0x0803af88 stmdaeq r6, {r2, r3, r5, r6, r8, sb, ip, sp, lr, pc}          |         __asm ("stmdaeq r6, {r2, r3, r5, r6, r8, sb, ip, sp, lr, pc}");
    0x0803af8c stmdaeq r6, {r2, r3, r5, r6, r8, sb, ip, sp, lr, pc}          |         __asm ("stmdaeq r6, {r2, r3, r5, r6, r8, sb, ip, sp, lr, pc}");
    0x0803af90 add r2, r5, 0x1c                                              |         r2 = r5 + 0x1c;
    0x0803af94 mov r0, 1                                                     |         r0 = 1;
    0x0803af98 ldr r1, [r3]                                                  |         r1 = *(r3);
    0x0803af9c stmdaeq sb, {r0, r3, r5, r6, r8, sb, fp, sp, pc}              |         __asm ("stmdaeq sb, {r0, r3, r5, r6, r8, sb, fp, sp, pc}");
    0x0803afa0 mov r0, r4                                                    |         r0 = r4;
    0x0803afa4 stmdaeq r2, {r2, r3, r5, sb, sl, fp, ip, lr}                  |         __asm ("stmdaeq r2, {r2, r3, r5, sb, sl, fp, ip, lr}");
    0x0803afa8 ldr r3, [r6, 0x24]                                            |         r3 = *((r6 + 0x24));
    0x0803afac add r1, sp, 8                                                 |         r1 += var_8h;
    0x0803afb0 mov r0, r6                                                    |         r0 = r6;
    0x0803afb4 mov r2, 0                                                     |         r2 = 0;
    0x0803afb8 ldr r3, [r3, 0x14]                                            |         r3 = *((r3 + 0x14));
    0x0803afbc blx r3                                                        |         uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0803afc0 add sp, sp, 0x10                                              |         
    0x0803afc4 pop {r4, r5, r6, r7, r8, pc}                                  |         
    0x0803b028 stmdaeq r6, {r3, r5, r6, r7, r8, fp, ip, lr, pc}              |         __asm ("stmdaeq r6, {r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0803b02c stmdaeq r6, {r3, r5, r6, r7, r8, fp, ip, lr, pc}              |         __asm ("stmdaeq r6, {r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0803b030 ldrb r2, [r3, 1]                                              |         r2 = *((r3 + 1));
    0x0803b034 cmp r2, 0                                                     |         
    0x0803b038 bne 0x803af88                                                 |         
                                                                             |     }
    0x0803b03c add r1, r8, 0x28                                              |     r1 = r8 + 0x28;
    0x0803b040 stmdaeq r6, {r4, sb, sl, fp, pc}                              |     __asm ("stmdaeq r6, {r4, sb, sl, fp, pc}");
    0x0803b044 stmdaeq r6, {r4, sb, sl, fp, pc}                              |     __asm ("stmdaeq r6, {r4, sb, sl, fp, pc}");
    0x0803b048 mov r2, 1                                                     |     r2 = 1;
    0x0803b04c strb r2, [r3, 1]                                              |     *((r3 + 1)) = r2;
    0x0803b050 stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}                  |     __asm ("stmdaeq sb, {r0, r4, r6, r7, sb, fp, sp, pc}");
    0x0803b054 b 0x803af88                                                   |     goto label_0;
                                                                             | label_2:
    0x0803b058 stmdaeq r6, {r3, r5, r6, r7, r8, fp, ip, lr, pc}              |     __asm ("stmdaeq r6, {r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0803b05c stmdaeq r6, {r3, r5, r6, r7, r8, fp, ip, lr, pc}              |     __asm ("stmdaeq r6, {r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0803b060 ldrb r3, [ip]                                                 |     r3 = *(ip);
    0x0803b064 cmp r3, 0                                                     |     
                                                                             |     if (r3 != 0) {
    0x0803b068 bne 0x803aef4                                                 |         goto label_1;
                                                                             |     }
    0x0803b06c str r2, [sp, 4]                                               |     var_4h = r2;
    0x0803b070 mov lr, 1                                                     |     lr = 1;
    0x0803b074 str r6, [sp]                                                  |     *(sp) = r6;
    0x0803b078 stmdaeq r6, {r3, r4, r6, r7, r8, sl, fp, pc}                  |     __asm ("stmdaeq r6, {r3, r4, r6, r7, r8, sl, fp, pc}");
    0x0803b07c stmdaeq r6, {r3, r4, r6, r7, r8, sl, fp, pc}                  |     __asm ("stmdaeq r6, {r3, r4, r6, r7, r8, sl, fp, pc}");
    0x0803b080 stmdaeq r6, {r2, r3, r4, r5, r6, r7, r8, sl, fp, pc}          |     __asm ("stmdaeq r6, {r2, r3, r4, r5, r6, r7, r8, sl, fp, pc}");
    0x0803b084 stmdaeq r6, {r2, r3, r4, r5, r6, r7, r8, sl, fp, pc}          |     __asm ("stmdaeq r6, {r2, r3, r4, r5, r6, r7, r8, sl, fp, pc}");
    0x0803b088 mov r2, 9                                                     |     r2 = 9;
    0x0803b08c movw r1, 0x104d                                               |     r1 = 0x104d;
    0x0803b090 strb lr, [ip]                                                 |     
    0x0803b094 stmdaeq sb, {r0, r2, r3, r7, r8, sb, fp, sp, pc}              |     __asm ("stmdaeq sb, {r0, r2, r3, r7, r8, sb, fp, sp, pc}");
    0x0803b098 b 0x803aef4                                                   |     goto label_1;
                                                                             | }

[*] Function fprintf used 1 times cifs.ko