[*] Binary protection state of cifs.ko

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


[*] Function popen tear down of cifs.ko

    ; assembly                                                           | /* r2dec pseudo code output */
                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/fs/cifs/cifs.ko @ 0x802e070 */
                                                                         | #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;
    0x0802e070 push {r4, r5, r6, r7, r8, lr}                             |     
    0x0802e074 subs r5, r1, 0                                            |     r5 = r1 - 0;
    0x0802e078 sub sp, sp, 8                                             |     
                                                                         |     if (r5 == r1) {
    0x0802e07c beq 0x802e194                                             |         goto label_3;
                                                                         |     }
    0x0802e080 stmdaeq sb, {r2, r3, r4, r5, r7, sb, sl, sp, pc}          |     __asm ("stmdaeq sb, {r2, r3, r4, r5, r7, sb, sl, sp, pc}");
    0x0802e084 stmdaeq sb, {r2, r3, r4, r5, r7, sb, sl, sp, pc}          |     __asm ("stmdaeq sb, {r2, r3, r4, r5, r7, sb, sl, sp, pc}");
    0x0802e088 mov r8, r0                                                |     r8 = r0;
    0x0802e08c mov r1, 0xdc0                                             |     r1 = 0xdc0;
    0x0802e090 mov r7, r2                                                |     r7 = r2;
    0x0802e094 ldr r0, [r3, 0x18]                                        |     r0 = *((r3 + 0x18));
    0x0802e098 stmdaeq sb, {r2, r4, r5, r6, sb, sl, sp, pc}              |     __asm ("stmdaeq sb, {r2, r4, r5, r6, sb, sl, sp, pc}");
    0x0802e09c subs r4, r0, 0                                            |     r4 = r0 - 0;
                                                                         |     if (r4 == r0) {
    0x0802e0a0 beq 0x802e170                                             |         goto label_4;
                                                                         |     }
    0x0802e0a4 ldr r1, [r5, 0xc0]                                        |     r1 = *((r5 + 0xc0));
    0x0802e0a8 ldr r0, [r5, 0x20]                                        |     r0 = *((r5 + 0x20));
    0x0802e0ac stmdaeq r2, {r2, r7, r8, sb, sl, fp, ip, lr, pc}          |     __asm ("stmdaeq r2, {r2, r7, r8, sb, sl, fp, ip, lr, pc}");
    0x0802e0b0 subs r6, r0, 0                                            |     r6 = r0 - 0;
                                                                         |     if (r6 == r0) {
    0x0802e0b4 beq 0x802e178                                             |         goto label_5;
                                                                         |     }
    0x0802e0b8 sub r3, r6, 1                                             |     r3 = r6 - 1;
    0x0802e0bc cmp r3, 4                                                 |     
                                                                         |     if (r3 > 4) {
                                                                         |         /* switch table (5 cases) at 0x802e0c8 */
    0x0802e0c0 ldrls pc, [pc, r3, lsl 2]                                 |         offset_0 = r3 << 2;
                                                                         |         pc = *((pc + offset_0));
                                                                         |     }
    0x0802e0c4 b 0x802e1e0                                               |     goto label_6;
                                                                         |     do {
                                                                         | label_1:
    0x0802e118 mov r0, r4                                                |         r0 = r4;
    0x0802e11c stmdaeq sb, {r2, r6, r7, sb, sl, sp, pc}                  |         __asm ("stmdaeq sb, {r2, r6, r7, sb, sl, sp, pc}");
                                                                         | label_0:
    0x0802e120 mov r0, r5                                                |         r0 = r5;
    0x0802e124 add sp, sp, 8                                             |         
    0x0802e128 pop {r4, r5, r6, r7, r8, pc}                              |         
                                                                         | label_2:
    0x0802e168 mvn r5, 0x25                                              |         r5 = ~0x25;
    0x0802e16c b 0x802e118                                               |         
                                                                         |     } while (1);
                                                                         | label_4:
    0x0802e170 mvn r5, 0xb                                               |     r5 = ~0xb;
    0x0802e174 b 0x802e120                                               |     goto label_0;
                                                                         | label_5:
    0x0802e178 ldr r1, [pc, 0x88]                                        |     r1 = *(0x802e204);
    0x0802e17c ldr r0, [pc, 0x8c]                                        |     r0 = .data;
    0x0802e180 stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}                  |     __asm ("stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}");
    0x0802e184 cmp r0, 0                                                 |     
    0x0802e188 bne 0x802e1c0                                             |     
                                                                         |     while (1) {
    0x0802e18c mvn r5, 0x15                                              |         r5 = ~0x15;
    0x0802e190 b 0x802e118                                               |         goto label_1;
                                                                         | label_3:
    0x0802e194 ldr r2, [pc, 0x78]                                        |         r2 = .data;
    0x0802e198 stmdaeq r5, {r2, r4, fp, ip, pc}                          |         __asm ("stmdaeq r5, {r2, r4, fp, ip, pc}");
    0x0802e19c stmdaeq r5, {r2, r4, fp, ip, pc}                          |         __asm ("stmdaeq r5, {r2, r4, fp, ip, pc}");
    0x0802e1a0 str r2, [sp]                                              |         *(sp) = r2;
    0x0802e1a4 movw r1, 0x6c5                                            |         r1 = 0x6c5;
    0x0802e1a8 mov r2, 9                                                 |         r2 = 9;
    0x0802e1ac stmdaeq r5, {r8, sl, ip, pc}                              |         __asm ("stmdaeq r5, {r8, sl, ip, pc}");
    0x0802e1b0 stmdaeq r5, {r8, sl, ip, pc}                              |         __asm ("stmdaeq r5, {r8, sl, ip, pc}");
    0x0802e1b4 mvn r5, 0x15                                              |         r5 = ~0x15;
    0x0802e1b8 stmdaeq sb, {r2, r3, r6, r8, sb, sl, sp, pc}              |         __asm ("stmdaeq sb, {r2, r3, r6, r8, sb, sl, sp, pc}");
    0x0802e1bc b 0x802e120                                               |         goto label_0;
    0x0802e1c0 stmdaeq r5, {r3, r5, fp, ip, pc}                          |         __asm ("stmdaeq r5, {r3, r5, fp, ip, pc}");
    0x0802e1c4 stmdaeq r5, {r3, r5, fp, ip, pc}                          |         __asm ("stmdaeq r5, {r3, r5, fp, ip, pc}");
    0x0802e1c8 stmdaeq sb, {r4, r7, sb, sl, sp, pc}                      |         __asm ("stmdaeq sb, {r4, r7, sb, sl, sp, pc}");
    0x0802e1cc b 0x802e18c                                               |         
                                                                         |     }
                                                                         | label_6:
    0x0802e1e0 ldr r1, [pc, 0x20]                                        |     r1 = *(0x802e204);
    0x0802e1e4 ldr r0, [pc, 0x2c]                                        |     r0 = "cifs_remap_file_range";
    0x0802e1e8 stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}                  |     __asm ("stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}");
    0x0802e1ec cmp r0, 0                                                 |     
                                                                         |     if (r0 == 0) {
    0x0802e1f0 beq 0x802e168                                             |         goto label_2;
                                                                         |     }
    0x0802e1f4 mov r1, r6                                                |     r1 = r6;
    0x0802e1f8 stmdaeq r5, {r2, r3, r5, r7, fp, ip, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r7, fp, ip, pc}");
    0x0802e1fc stmdaeq r5, {r2, r3, r5, r7, fp, ip, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r7, fp, ip, pc}");
    0x0802e200 stmdaeq sb, {r4, r7, sb, sl, sp, pc}                      |     __asm ("stmdaeq sb, {r4, r7, sb, sl, sp, pc}");
    0x0802e204 b 0x802e168                                               |     goto label_2;
                                                                         | }
    ; assembly                                                               | /* r2dec pseudo code output */
                                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/fs/cifs/cifs.ko @ 0x8041b88 */
                                                                             | #include <stdint.h>
                                                                             |  
    ; (fcn) sym.SMB2_QFS_attr ()                                             | void SMB2_QFS_attr (int32_t arg_78h, int32_t arg_7ch, int32_t arg_80h, int32_t arg1, int32_t arg2) {
                                                                             |     int32_t var_0h;
                                                                             |     int32_t var_4h;
                                                                             |     int32_t var_8h;
                                                                             |     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;
                                                                             |     int32_t var_38h;
                                                                             |     int32_t var_3ch;
                                                                             |     int32_t var_40h;
                                                                             |     int32_t var_44h;
                                                                             |     int32_t var_48h;
                                                                             |     int32_t var_4ch;
                                                                             |     int32_t var_54h;
                                                                             |     r0 = arg1;
                                                                             |     r1 = arg2;
    0x08041b88 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                     |     
    0x08041b8c mov r5, r1                                                    |     r5 = r1;
    0x08041b90 sub sp, sp, 0x54                                              |     
    0x08041b94 ldr r8, [r5, 0x24]                                            |     r8 = *((r5 + 0x24));
    0x08041b98 ldr r6, [sp, 0x80]                                            |     r6 = *(arg_80h);
    0x08041b9c ldr r1, [sp, 0x78]                                            |     r1 = *(arg_78h);
    0x08041ba0 str r0, [sp, 0x10]                                            |     var_10h = r0;
    0x08041ba4 mov r0, r8                                                    |     r0 = r8;
    0x08041ba8 ldr r7, [sp, 0x7c]                                            |     r7 = *(arg_7ch);
    0x08041bac str r1, [sp, 0x1c]                                            |     var_1ch = r1;
    0x08041bb0 strd r2, r3, [sp, 0x14]                                       |     __asm ("strd r2, r3, [var_14h]");
    0x08041bb4 stmdaeq r2, {r2, r3, r4, r6, r7, r8, sb, fp, sp, lr}          |     __asm ("stmdaeq r2, {r2, r3, r4, r6, r7, r8, sb, fp, sp, lr}");
    0x08041bb8 cmp r6, 4                                                     |     
    0x08041bbc mov fp, r0                                                    |     
                                                                             |     if (r6 == 4) {
    0x08041bc0 beq 0x8041da8                                                 |         goto label_2;
                                                                             |     }
    0x08041bc4 cmp r6, 5                                                     |     
                                                                             |     if (r6 == 5) {
    0x08041bc8 beq 0x8041db4                                                 |         goto label_3;
                                                                             |     }
    0x08041bcc cmp r6, 0xb                                                   |     
                                                                             |     if (r6 == 0xb) {
    0x08041bd0 beq 0x8041bf4                                                 |         goto label_4;
                                                                             |     }
    0x08041bd4 cmp r6, 1                                                     |     
                                                                             |     if (r6 != 1) {
    0x08041bd8 moveq sb, 0x12                                                |         sb = 0x12;
                                                                             |     }
                                                                             |     if (r6 != 1) {
    0x08041bdc moveq sl, 0x32                                                |         sl = 0x32;
                                                                             |     }
                                                                             |     if (r6 == 1) {
    0x08041be0 beq 0x8041bfc                                                 |         goto label_1;
                                                                             |     }
    0x08041be4 mvn r4, 0x15                                                  |     r4 = ~0x15;
                                                                             |     do {
                                                                             | label_0:
    0x08041be8 mov r0, r4                                                    |         r0 = r4;
    0x08041bec add sp, sp, 0x54                                              |         
    0x08041bf0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                      |         
                                                                             | label_4:
    0x08041bf4 mov sb, 0x1c                                                  |         sb = 0x1c;
    0x08041bf8 mov sl, sb                                                    |         sl = sb;
                                                                             | label_1:
    0x08041bfc ldr r3, [r5, 0x24]                                            |         r3 = *((r5 + 0x24));
    0x08041c00 cmp r3, 0                                                     |         
                                                                             |         if (r3 == 0) {
    0x08041c04 beq 0x8041e30                                                 |             goto label_5;
                                                                             |         }
    0x08041c08 cmp fp, 0                                                     |         
                                                                             |         if (fp == 0) {
    0x08041c0c beq 0x8041e30                                                 |             goto label_5;
                                                                             |         }
    0x08041c10 mov r2, fp                                                    |         r2 = fp;
    0x08041c14 mov r1, r5                                                    |         r1 = r5;
    0x08041c18 mov r0, 0x10                                                  |         r0 = 0x10;
    0x08041c1c bl 0x803ae7c                                                  |         r0 = smb2_reconnect ();
    0x08041c20 subs r4, r0, 0                                                |         r4 = r0 - 0;
    0x08041c24 bne 0x8041be8                                                 |         
                                                                             |     } while (r4 != r0);
    0x08041c28 add r3, sp, 0x34                                              |     r3 += var_34h;
    0x08041c2c mov r2, fp                                                    |     r2 = fp;
    0x08041c30 str r3, [sp]                                                  |     *(sp) = r3;
    0x08041c34 mov r1, r5                                                    |     r1 = r5;
    0x08041c38 add r3, sp, 0x2c                                              |     r3 += var_2ch;
    0x08041c3c mov r0, 0x10                                                  |     r0 = 0x10;
    0x08041c40 bl 0x803b410                                                  |     r0 = smb2_plain_req_init ();
    0x08041c44 subs r4, r0, 0                                                |     r4 = r0 - 0;
                                                                             |     if (r4 != r0) {
    0x08041c48 bne 0x8041be8                                                 |         goto label_0;
                                                                             |     }
    0x08041c4c ldr r3, [sp, 0x2c]                                            |     r3 = var_2ch;
    0x08041c50 add r1, sl, 0x48                                              |     r1 = sl + 0x48;
    0x08041c54 ldr r2, [sp, 0x14]                                            |     r2 = var_14h;
    0x08041c58 mov r0, r5                                                    |     r0 = r5;
    0x08041c5c str r3, [sp, 0x24]                                            |     var_24h = r3;
    0x08041c60 str r2, [r3, 0x58]                                            |     *((r3 + 0x58)) = r2;
    0x08041c64 ldr r2, [sp, 0x18]                                            |     r2 = var_18h;
    0x08041c68 str r2, [r3, 0x5c]                                            |     *((r3 + 0x5c)) = r2;
    0x08041c6c ldr r2, [sp, 0x1c]                                            |     r2 = var_1ch;
    0x08041c70 str r2, [r3, 0x60]                                            |     *((r3 + 0x60)) = r2;
    0x08041c74 strb r4, [r3, 0x49]                                           |     *((r3 + 0x49)) = r4;
    0x08041c78 str r1, [r3, 0x44]                                            |     *((r3 + 0x44)) = r1;
    0x08041c7c mov r1, 2                                                     |     r1 = 2;
    0x08041c80 str r7, [r3, 0x64]                                            |     *((r3 + 0x64)) = r7;
    0x08041c84 strb r1, [r3, 0x42]                                           |     *((r3 + 0x42)) = r1;
    0x08041c88 mov r1, 0x68                                                  |     r1 = 0x68;
    0x08041c8c strb r6, [r3, 0x43]                                           |     *((r3 + 0x43)) = r6;
    0x08041c90 strb r1, [r3, 0x48]                                           |     *((r3 + 0x48)) = r1;
    0x08041c94 ldr r3, [sp, 0x34]                                            |     r3 = var_34h;
    0x08041c98 str r3, [sp, 0x28]                                            |     var_28h = r3;
    0x08041c9c stmdaeq r3, {r4, r5, r7, r8, sb, ip, sp, pc}                  |     __asm ("stmdaeq r3, {r4, r5, r7, r8, sb, ip, sp, pc}");
    0x08041ca0 subs ip, r0, 0                                                |     
    0x08041ca4 add r3, sp, 0x34                                              |     r3 += var_34h;
    0x08041ca8 mov r2, fp                                                    |     r2 = fp;
    0x08041cac mov r1, r8                                                    |     r1 = r8;
                                                                             |     if (ip == r0) {
    0x08041cb0 movne ip, 1                                                   |         
                                                                             |     }
    0x08041cb4 ldr r0, [sp, 0x10]                                            |     r0 = var_10h;
    0x08041cb8 lsl ip, ip, 0xb                                               |     
    0x08041cbc str ip, [sp, 4]                                               |     var_4h = ip;
    0x08041cc0 add ip, sp, 0x2c                                              |     
    0x08041cc4 str ip, [sp, 8]                                               |     var_8h = ip;
    0x08041cc8 add ip, sp, 0x20                                              |     
    0x08041ccc str ip, [sp]                                                  |     *(sp) = ip;
    0x08041cd0 str r4, [sp, 0x3c]                                            |     var_3ch = r4;
    0x08041cd4 add ip, sp, 0x24                                              |     
    0x08041cd8 str r4, [sp, 0x40]                                            |     var_40h = r4;
    0x08041cdc str r4, [sp, 0x44]                                            |     var_44h = r4;
    0x08041ce0 str r4, [sp, 0x48]                                            |     var_48h = r4;
    0x08041ce4 str r4, [sp, 0x4c]                                            |     var_4ch = r4;
    0x08041ce8 str ip, [sp, 0x34]                                            |     var_34h = ip;
    0x08041cec mov ip, 1                                                     |     
    0x08041cf0 str ip, [sp, 0x38]                                            |     var_38h = ip;
    0x08041cf4 stmdaeq r2, {r4, r5, r7, r8, sl, ip, sp, lr}                  |     __asm ("stmdaeq r2, {r4, r5, r7, r8, sl, ip, sp, lr}");
    0x08041cf8 mov r4, r0                                                    |     r4 = r0;
    0x08041cfc ldr r0, [sp, 0x24]                                            |     r0 = var_24h;
    0x08041d00 stmdaeq r2, {r3, r5, r8, sb, sl, fp, sp}                      |     __asm ("stmdaeq r2, {r3, r5, r8, sb, sl, fp, sp}");
    0x08041d04 cmp r4, 0                                                     |     
                                                                             |     if (r4 == 0) {
    0x08041d08 bne 0x8041d70                                                 |         
    0x08041d0c ldr r7, [sp, 0x2c]                                            |         r7 = var_2ch;
    0x08041d10 mov r3, sb                                                    |         r3 = sb;
    0x08041d14 add r2, sp, 0x2c                                              |         r2 += var_2ch;
    0x08041d18 ldr sb, [r7, 0x44]                                            |         sb = *((r7 + 0x44));
    0x08041d1c ldrh r8, [r7, 0x42]                                           |         r8 = *((r7 + 0x42));
    0x08041d20 mov r1, sb                                                    |         r1 = sb;
    0x08041d24 mov r0, r8                                                    |         r0 = r8;
    0x08041d28 stmdaeq r3, {r3, r5, r7, sb, ip, sp, lr, pc}                  |         __asm ("stmdaeq r3, {r3, r5, r7, sb, ip, sp, lr, pc}");
    0x08041d2c subs r4, r0, 0                                                |         r4 = r0 - 0;
                                                                             |         if (r4 != r0) {
    0x08041d30 bne 0x8041d90                                                 |             goto label_6;
                                                                             |         }
    0x08041d34 sub r6, r6, 1                                                 |         r6--;
    0x08041d38 cmp r6, 0xa                                                   |         
                                                                             |         if (r6 > 0xa) {
                                                                             |             /* switch table (11 cases) at 0x8041d44 */
    0x08041d3c ldrls pc, [pc, r6, lsl 2]                                     |             offset_0 = r6 << 2;
                                                                             |             pc = *((pc + offset_0));
                                                                             |         }
    0x08041d40 b 0x8041d90                                                   |         goto label_6;
                                                                             |     }
    0x08041d70 add r5, r5, 0x5d0                                             |     r5 += 0x5d0;
    0x08041d74 add r5, r5, 4                                                 |     r5 += 4;
    0x08041d78 pld [r5]                                                      |     __asm ("pld [r5]");
                                                                             |     do {
    0x08041d7c ldrex r3, [r5]                                                |         __asm ("ldrex r3, [r5]");
    0x08041d80 add r3, r3, 1                                                 |         r3++;
    0x08041d84 strex r2, r3, [r5]                                            |         __asm ("strex r2, r3, [r5]");
    0x08041d88 teq r2, 0                                                     |         __asm ("teq r2, 0");
    0x08041d8c bne 0x8041d7c                                                 |         
                                                                             |     } while (r6 != 0xa);
                                                                             | label_6:
    0x08041d90 ldr r1, [sp, 0x2c]                                            |     r1 = var_2ch;
    0x08041d94 ldr r0, [sp, 0x20]                                            |     r0 = var_20h;
    0x08041d98 stmdaeq r2, {r3, r5, r6, r8, sb, sl, fp, sp}                  |     __asm ("stmdaeq r2, {r3, r5, r6, r8, sb, sl, fp, sp}");
    0x08041d9c mov r0, r4                                                    |     r0 = r4;
    0x08041da0 add sp, sp, 0x54                                              |     
    0x08041da4 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                      |     
                                                                             | label_2:
    0x08041da8 mov sb, 8                                                     |     sb = 8;
    0x08041dac mov sl, sb                                                    |     sl = sb;
    0x08041db0 b 0x8041bfc                                                   |     goto label_1;
                                                                             | label_3:
    0x08041db4 mov sb, 0xc                                                   |     sb = 0xc;
    0x08041db8 mov sl, 0x40                                                  |     sl = 0x40;
    0x08041dbc b 0x8041bfc                                                   |     goto label_1;
                                                                             | label_5:
    0x08041e30 mvn r4, 4                                                     |     r4 = ~4;
    0x08041e34 b 0x8041be8                                                   |     goto label_0;
                                                                             | }
    ; assembly                                                           | /* r2dec pseudo code output */
                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/fs/cifs/cifs.ko @ 0x80289d4 */
                                                                         | #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;
    0x080289d4 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                 |     
    0x080289d8 mov fp, r3                                                |     
    0x080289dc stmdaeq sb, {r2, r3, r4, r5, r7, sb, sl, sp, pc}          |     __asm ("stmdaeq sb, {r2, r3, r4, r5, r7, sb, sl, sp, pc}");
    0x080289e0 stmdaeq sb, {r2, r3, r4, r5, r7, sb, sl, sp, pc}          |     __asm ("stmdaeq sb, {r2, r3, r4, r5, r7, sb, sl, sp, pc}");
    0x080289e4 sub sp, sp, 0x24                                          |     
    0x080289e8 mov r7, r2                                                |     r7 = r2;
    0x080289ec mov sl, r0                                                |     sl = r0;
    0x080289f0 mov r6, r1                                                |     r6 = r1;
    0x080289f4 mov r1, 0xdc0                                             |     r1 = 0xdc0;
    0x080289f8 ldr r0, [r3, 0x18]                                        |     r0 = *((r3 + 0x18));
    0x080289fc mov r5, 0                                                 |     r5 = 0;
    0x08028a00 ldr sb, [sp, 0x48]                                        |     sb = *(arg_48h);
    0x08028a04 stmdaeq sb, {r2, r4, r5, r6, sb, sl, sp, pc}              |     __asm ("stmdaeq sb, {r2, r4, r5, r6, sb, sl, sp, pc}");
    0x08028a08 cmp r7, 0                                                 |     
    0x08028a0c str r0, [sp, 0xc]                                         |     var_ch = r0;
                                                                         |     if (r7 <= 0) {
    0x08028a10 ble 0x8028c20                                             |         goto label_4;
                                                                         |     }
    0x08028a14 stmdaeq r5, {r2, r3, r5, r6, sb, ip, lr}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, sb, ip, lr}");
    0x08028a18 stmdaeq r5, {r2, r3, r5, r6, sb, ip, lr}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, sb, ip, lr}");
    0x08028a1c mov r4, r5                                                |     r4 = r5;
    0x08028a20 str r2, [sp, 0x10]                                        |     var_10h = r2;
    0x08028a24 b 0x8028aa4                                               |     
                                                                         |     while (sb != 2) {
    0x08028a28 cmp sb, 1                                                 |         
                                                                         |         if (sb == 1) {
    0x08028a2c beq 0x8028b48                                             |             goto label_5;
                                                                         |         }
                                                                         | label_0:
    0x08028a30 ldr r3, [fp, 0xc]                                         |         r3 = *(arg_ch);
    0x08028a34 add r2, sp, 0x1a                                          |         r2 += var_1ah;
    0x08028a38 sub r1, r7, r4                                            |         r1 = r7 - r4;
    0x08028a3c mov r0, r8                                                |         r0 = r8;
    0x08028a40 blx r3                                                    |         uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x08028a44 ldrh r3, [sp, 0x1a]                                       |         r3 = var_1ah;
    0x08028a48 cmp r0, 0                                                 |         
                                                                         |         if (r0 <= 0) {
    0x08028a4c bgt 0x8028a8c                                             |             
    0x08028a50 ldr r0, [fp]                                              |             r0 = *(fp);
    0x08028a54 ldr r1, [sp, 0x10]                                        |             r1 = var_10h;
    0x08028a58 stmdaeq sb, {r2, r3, r4, r5, fp, sp, pc}                  |             __asm ("stmdaeq sb, {r2, r3, r4, r5, fp, sp, pc}");
    0x08028a5c subs r0, r0, 0                                            |             
    0x08028a60 ldr r3, [sp, 0xc]                                         |             r3 = var_ch;
                                                                         |             if (r0 == r0) {
    0x08028a64 movne r0, 1                                               |                 r0 = 1;
                                                                         |             }
    0x08028a68 cmp r3, 0                                                 |             
                                                                         |             if (r3 != 0) {
    0x08028a6c orreq r0, r0, 1                                           |                 r0 |= 1;
                                                                         |             }
    0x08028a70 cmp r0, 0                                                 |             
                                                                         |             if (r0 == 0) {
    0x08028a74 bne 0x8028a84                                             |                 
    0x08028a78 ldrsb r3, [r8]                                            |                 r3 = *(r8);
    0x08028a7c cmp r3, 0                                                 |                 
                                                                         |                 if (r3 < 0) {
    0x08028a80 blt 0x8028c40                                             |                     goto label_6;
                                                                         |                 }
                                                                         |             }
                                                                         | label_2:
    0x08028a84 mov r3, 0x3f                                              |             r3 = 0x3f;
    0x08028a88 mov r0, 1                                                 |             r0 = 1;
                                                                         |         }
                                                                         | label_1:
    0x08028a8c lsl r2, r5, 1                                             |         r2 = r5 << 1;
    0x08028a90 add r4, r4, r0                                            |         r4 += r0;
    0x08028a94 strh r3, [sl, r2]                                         |         *((sl + r2)) = r3;
                                                                         | label_3:
    0x08028a98 add r5, r5, 1                                             |         r5++;
    0x08028a9c cmp r7, r4                                                |         
                                                                         |         if (r7 <= r4) {
    0x08028aa0 ble 0x8028c1c                                             |             goto label_7;
                                                                         |         }
    0x08028aa4 ldrb r3, [r6, r4]                                         |         r3 = *((r6 + r4));
    0x08028aa8 add r8, r6, r4                                            |         r8 = r6 + r4;
    0x08028aac cmp r3, 0                                                 |         
                                                                         |         if (r3 == 0) {
    0x08028ab0 beq 0x8028c1c                                             |             goto label_7;
                                                                         |         }
    0x08028ab4 cmp sb, 2                                                 |         
    0x08028ab8 bne 0x8028a28                                             |         
                                                                         |     }
    0x08028abc cmp r3, 0x3f                                              |     
                                                                         |     if (r3 > 0x3f) {
    0x08028ac0 bhi 0x8028b34                                             |         goto label_8;
                                                                         |     }
    0x08028ac4 cmp r3, 0x29                                              |     
                                                                         |     if (r3 < 0x29) {
    0x08028ac8 bls 0x8028a30                                             |         goto label_0;
                                                                         |     }
    0x08028acc sub r3, r3, 0x2a                                          |     r3 -= 0x2a;
    0x08028ad0 cmp r3, 0x15                                              |     
                                                                         |     if (r3 > 0x15) {
                                                                         |         /* switch table (22 cases) at 0x8028adc */
    0x08028ad4 ldrls pc, [pc, r3, lsl 2]                                 |         offset_0 = r3 << 2;
                                                                         |         pc = *((pc + offset_0));
                                                                         |     }
    0x08028ad8 b 0x8028a30                                               |     goto label_0;
                                                                         | label_8:
    0x08028b34 cmp r3, 0x7c                                              |     
    0x08028b38 movweq r3, 0xf07c                                         |     __asm ("movweq r3, 0xf07c");
                                                                         |     if (r3 == 0x7c) {
    0x08028b3c moveq r0, 1                                               |         r0 = 1;
                                                                         |         goto label_9;
                                                                         |     }
                                                                         |     if (r3 == 0x7c) {
                                                                         | label_9:
    0x08028b40 beq 0x8028a8c                                             |         goto label_1;
                                                                         |     }
    0x08028b44 b 0x8028a30                                               |     goto label_0;
                                                                         | label_5:
    0x08028b48 sub r2, r7, 1                                             |     r2 = r7 - 1;
    0x08028b4c sub r1, r3, 1                                             |     r1 = r3 - 1;
    0x08028b50 cmp r2, r4                                                |     
                                                                         |     if (r2 != r4) {
    0x08028b54 moveq r2, sb                                              |         r2 = sb;
                                                                         |     }
                                                                         |     if (r2 == r4) {
    0x08028b58 ldrbne r2, [r8, 1]                                        |         r2 = *((r8 + 1));
                                                                         |     }
                                                                         |     if (r2 == r4) {
    0x08028b5c subne r2, r2, 0x5c                                        |         r2 -= 0x5c;
                                                                         |     }
    0x08028b60 clzne r2, r2                                              |     __asm ("clzne r2, r2");
                                                                         |     if (r2 == r4) {
    0x08028b64 lsrne r2, r2, 5                                           |         r2 >>= 5;
                                                                         |     }
    0x08028b68 cmp r1, 0x1e                                              |     
                                                                         |     if (r1 < 0x1e) {
    0x08028b6c bls 0x8028cc8                                             |         goto label_10;
                                                                         |     }
    0x08028b70 cmp r3, 0x3f                                              |     
                                                                         |     if (r3 <= 0x3f) {
    0x08028b74 bhi 0x8028c08                                             |         
    0x08028b78 sub r3, r3, 0x20                                          |         r3 -= 0x20;
    0x08028b7c cmp r3, 0x1f                                              |         
                                                                         |         if (r3 > 0x1f) {
                                                                         |             /* switch table (32 cases) at 0x8028b88 */
    0x08028b80 ldrls pc, [pc, r3, lsl 2]                                 |             offset_1 = r3 << 2;
                                                                         |             pc = *((pc + offset_1));
                                                                         |         }
    0x08028b84 b 0x8028a30                                               |         goto label_0;
                                                                         |     }
    0x08028c08 cmp r3, 0x7c                                              |     
                                                                         |     if (r3 != 0x7c) {
    0x08028c0c moveq r0, 1                                               |         r0 = 1;
                                                                         |     }
    0x08028c10 movweq r3, 0xf027                                         |     __asm ("movweq r3, 0xf027");
                                                                         |     if (r3 == 0x7c) {
    0x08028c14 beq 0x8028a8c                                             |         goto label_1;
                                                                         |     }
    0x08028c18 b 0x8028a30                                               |     goto label_0;
                                                                         | label_7:
    0x08028c1c add sl, sl, r5, lsl 1                                     |     sl += (r5 << 1);
                                                                         | label_4:
    0x08028c20 mov r3, 0                                                 |     r3 = 0;
    0x08028c24 ldr r0, [sp, 0xc]                                         |     r0 = var_ch;
    0x08028c28 strb r3, [sl]                                             |     *(sl) = r3;
    0x08028c2c strb r3, [sl, 1]                                          |     *((sl + 1)) = r3;
    0x08028c30 stmdaeq sb, {r2, r6, r7, sb, sl, sp, pc}                  |     __asm ("stmdaeq sb, {r2, r6, r7, sb, sl, sp, pc}");
    0x08028c34 mov r0, r5                                                |     r0 = r5;
    0x08028c38 add sp, sp, 0x24                                          |     
    0x08028c3c pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                  |     
                                                                         | label_6:
    0x08028c40 mov r1, 6                                                 |     r1 = 6;
    0x08028c44 add r2, sp, 0x1c                                          |     r2 += var_1ch;
    0x08028c48 mov r0, r8                                                |     r0 = r8;
    0x08028c4c stmdaeq sb, {r3, r6, sb, fp, sp, pc}                      |     __asm ("stmdaeq sb, {r3, r6, sb, fp, sp, pc}");
    0x08028c50 subs r1, r0, 0                                            |     r1 = r0 - 0;
                                                                         |     if (r1 < r0) {
    0x08028c54 blt 0x8028a84                                             |         goto label_2;
                                                                         |     }
    0x08028c58 mov r0, r8                                                |     r0 = r8;
    0x08028c5c ldr r8, [sp, 0xc]                                         |     r8 = var_ch;
    0x08028c60 mov r2, 6                                                 |     r2 = 6;
    0x08028c64 str r2, [sp]                                              |     *(sp) = r2;
    0x08028c68 mov r3, r8                                                |     r3 = r8;
    0x08028c6c mov r2, 1                                                 |     r2 = 1;
    0x08028c70 str r1, [sp, 0x14]                                        |     var_14h = r1;
    0x08028c74 stmdaeq sb, {r2, r3, r6, sb, fp, sp, pc}                  |     __asm ("stmdaeq sb, {r2, r3, r6, sb, fp, sp, pc}");
    0x08028c78 cmp r0, 0                                                 |     
                                                                         |     if (r0 < 0) {
    0x08028c7c blt 0x8028a84                                             |         goto label_2;
                                                                         |     }
    0x08028c80 ldr r1, [sp, 0x14]                                        |     r1 = var_14h;
    0x08028c84 lsl r3, r5, 1                                             |     r3 = r5 << 1;
    0x08028c88 ldrh r2, [r8]                                             |     r2 = *(r8);
    0x08028c8c add r0, sl, r3                                            |     r0 = sl + r3;
    0x08028c90 add r4, r4, r1                                            |     r4 += r1;
    0x08028c94 cmp r1, 3                                                 |     
                                                                         |     if (r1 > 3) {
    0x08028c98 ble 0x8028d20                                             |         
    0x08028c9c cmp r1, 4                                                 |         
    0x08028ca0 add r3, r3, 2                                             |         r3 += 2;
    0x08028ca4 strh r2, [r0]                                             |         *(r0) = r2;
                                                                         |         if (r1 != 4) {
    0x08028ca8 beq 0x8028d14                                             |             
    0x08028cac ldr r1, [sp, 0xc]                                         |             r1 = var_ch;
    0x08028cb0 add r5, r5, 2                                             |             r5 += 2;
    0x08028cb4 ldrh r2, [r1, 2]                                          |             r2 = *((r1 + 2));
    0x08028cb8 strh r2, [sl, r3]                                         |             *((sl + r3)) = r2;
    0x08028cbc ldrh r3, [r1, 4]                                          |             r3 = *((r1 + 4));
    0x08028cc0 strh r3, [r0, 4]                                          |             *((r0 + 4)) = r3;
    0x08028cc4 b 0x8028a98                                               |             goto label_3;
                                                                         | label_10:
    0x08028cc8 sub r3, r3, 0x1000                                        |             r3 -= 0x1000;
    0x08028ccc mov r0, 1                                                 |             r0 = 1;
    0x08028cd0 uxth r3, r3                                               |             r3 = (int16_t) r3;
    0x08028cd4 b 0x8028a8c                                               |             goto label_1;
                                                                         |         }
    0x08028d14 ldr r2, [sp, 0xc]                                         |         r2 = var_ch;
    0x08028d18 add r5, r5, 1                                             |         r5++;
    0x08028d1c ldrh r2, [r2, 2]                                          |         r2 = *((r2 + 2));
                                                                         |     }
    0x08028d20 strh r2, [sl, r3]                                         |     *((sl + r3)) = r2;
    0x08028d24 b 0x8028a98                                               |     goto label_3;
                                                                         | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/fs/cifs/cifs.ko @ 0x801d658 */
                                                                     | #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;
    0x0801d658 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}             |     
    0x0801d65c mov r5, r1                                            |     r5 = r1;
    0x0801d660 mov r4, r0                                            |     r4 = r0;
    0x0801d664 ldr r7, [r2, 0x1f8]                                   |     r7 = *((r2 + 0x1f8));
    0x0801d668 sub sp, sp, 0x14                                      |     
    0x0801d66c mov fp, r3                                            |     
    0x0801d670 mov r0, r7                                            |     r0 = r7;
    0x0801d674 ldrb sl, [sp, 0x38]                                   |     sl = *(arg_38h);
    0x0801d678 ldr r8, [sp, 0x3c]                                    |     r8 = *(arg_3ch);
    0x0801d67c stmdaeq r1, {r3, r7, fp, sp}                          |     __asm ("stmdaeq r1, {r3, r7, fp, sp}");
    0x0801d680 mov r2, 0x78                                          |     r2 = 0x78;
    0x0801d684 mov r1, 0                                             |     r1 = 0;
    0x0801d688 mov sb, r0                                            |     sb = r0;
    0x0801d68c mov r0, r4                                            |     r0 = r4;
    0x0801d690 stmdaeq sb, {r2, r4, r5, r8, sb, sl, sp, pc}          |     __asm ("stmdaeq sb, {r2, r4, r5, r8, sb, sl, sp, pc}");
    0x0801d694 ldr r3, [r5, 0x20]                                    |     r3 = *((r5 + 0x20));
    0x0801d698 str r3, [r4, 4]                                       |     *((r4 + 4)) = r3;
    0x0801d69c mov r6, sp                                            |     r6 = sp;
    0x0801d6a0 ldrb r3, [r5, 0x3c]                                   |     r3 = *((r5 + 0x3c));
    0x0801d6a4 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0801d6a8 movne r3, 2                                           |         r3 = 2;
                                                                     |     }
                                                                     |     if (r3 == 0) {
    0x0801d6ac strne r3, [r4]                                        |         *(r4) = r3;
                                                                     |     }
    0x0801d6b0 ldr r2, [r5, 8]                                       |     r2 = *((r5 + 8));
    0x0801d6b4 ldr r3, [r5, 0xc]                                     |     r3 = *((r5 + 0xc));
    0x0801d6b8 orrs r1, r2, r3                                       |     r1 = r2 | r3;
                                                                     |     if (r1 == r2) {
    0x0801d6bc beq 0x801d7bc                                         |         goto label_2;
                                                                     |     }
    0x0801d6c0 mov r0, r6                                            |     r0 = r6;
    0x0801d6c4 stmdaeq r2, {r2, r4, fp, lr}                          |     __asm ("stmdaeq r2, {r2, r4, fp, lr}");
    0x0801d6c8 add ip, r4, 0x40                                      |     
    0x0801d6cc ldm r6, {r0, r1, r2, r3}                              |     r0 = *(r6);
                                                                     |     r1 = *((r6 + 4));
                                                                     |     r2 = *((r6 + 8));
                                                                     |     r3 = *((r6 + 12));
    0x0801d6d0 stm ip, {r0, r1, r2, r3}                              |     *(ip) = r0;
                                                                     |     *((ip + 4)) = r1;
                                                                     |     *((ip + 8)) = r2;
                                                                     |     *((ip + 12)) = r3;
                                                                     |     do {
    0x0801d6d4 ldr r2, [r5, 0x18]                                    |         r2 = *((r5 + 0x18));
    0x0801d6d8 ldr r3, [r5, 0x1c]                                    |         r3 = *((r5 + 0x1c));
    0x0801d6dc mov r0, r6                                            |         r0 = r6;
    0x0801d6e0 stmdaeq r2, {r2, r4, fp, lr}                          |         __asm ("stmdaeq r2, {r2, r4, fp, lr}");
    0x0801d6e4 add ip, r4, 0x60                                      |         
    0x0801d6e8 ldm r6, {r0, r1, r2, r3}                              |         r0 = *(r6);
                                                                     |         r1 = *((r6 + 4));
                                                                     |         r2 = *((r6 + 8));
                                                                     |         r3 = *((r6 + 12));
    0x0801d6ec stm ip, {r0, r1, r2, r3}                              |         *(ip) = r0;
                                                                     |         *((ip + 4)) = r1;
                                                                     |         *((ip + 8)) = r2;
                                                                     |         *((ip + 12)) = r3;
    0x0801d6f0 mov r0, r6                                            |         r0 = r6;
    0x0801d6f4 ldr r2, [r5, 0x10]                                    |         r2 = *((r5 + 0x10));
    0x0801d6f8 ldr r3, [r5, 0x14]                                    |         r3 = *((r5 + 0x14));
    0x0801d6fc stmdaeq r2, {r2, r4, fp, lr}                          |         __asm ("stmdaeq r2, {r2, r4, fp, lr}");
    0x0801d700 add ip, r4, 0x50                                      |         
    0x0801d704 ldm r6, {r0, r1, r2, r3}                              |         r0 = *(r6);
                                                                     |         r1 = *((r6 + 4));
                                                                     |         r2 = *((r6 + 8));
                                                                     |         r3 = *((r6 + 12));
    0x0801d708 cmp fp, 0                                             |         
    0x0801d70c stm ip, {r0, r1, r2, r3}                              |         *(ip) = r0;
                                                                     |         *((ip + 4)) = r1;
                                                                     |         *((ip + 8)) = r2;
                                                                     |         *((ip + 12)) = r3;
                                                                     |         if (fp != 0) {
    0x0801d710 beq 0x801d758                                         |             
    0x0801d714 ldr r3, [sb, 0x24]                                    |             r3 = *((sb + 0x24));
    0x0801d718 ldr r3, [r3, 0x20]                                    |             r3 = *((r3 + 0x20));
    0x0801d71c ldr r2, [r3, 0x1c4]                                   |             r2 = *((r3 + 0x1c4));
    0x0801d720 ldr r3, [r4, 0x60]                                    |             r3 = *((r4 + 0x60));
    0x0801d724 adds r3, r3, r2                                       |             r3 += r2;
    0x0801d728 str r3, [r4, 0x60]                                    |             *((r4 + 0x60)) = r3;
    0x0801d72c ldr r3, [r4, 0x64]                                    |             r3 = *((r4 + 0x64));
    0x0801d730 adc r3, r3, r2, asr 31                                |             __asm ("adc r3, r3, r2, asr 31");
    0x0801d734 str r3, [r4, 0x64]                                    |             *((r4 + 0x64)) = r3;
    0x0801d738 ldr r2, [r4, 0x54]                                    |             r2 = *((r4 + 0x54));
    0x0801d73c ldr r1, [sb, 0x24]                                    |             r1 = *((sb + 0x24));
    0x0801d740 ldr r1, [r1, 0x20]                                    |             r1 = *((r1 + 0x20));
    0x0801d744 ldr r1, [r1, 0x1c4]                                   |             r1 = *((r1 + 0x1c4));
    0x0801d748 adds r3, r0, r1                                       |             r3 = r0 + r1;
    0x0801d74c str r3, [r4, 0x50]                                    |             *((r4 + 0x50)) = r3;
    0x0801d750 adc r3, r2, r1, asr 31                                |             __asm ("adc r3, r2, r1, asr 31");
    0x0801d754 str r3, [r4, 0x54]                                    |             *((r4 + 0x54)) = r3;
                                                                     |         }
    0x0801d758 ldr r3, [r5, 0x30]                                    |         r3 = *((r5 + 0x30));
    0x0801d75c ldr r2, [r5, 0x34]                                    |         r2 = *((r5 + 0x34));
    0x0801d760 str r2, [r4, 0x14]                                    |         *((r4 + 0x14)) = r2;
    0x0801d764 str r3, [r4, 0x10]                                    |         *((r4 + 0x10)) = r3;
    0x0801d768 mov r3, 0x1d                                          |         
    0x0801d76c movt r3, 0xa000                                       |         r3 = 0x-5fffffe3;
    0x0801d770 ldr r2, [r5, 0x28]                                    |         r2 = *((r5 + 0x28));
    0x0801d774 cmp r8, r3                                            |         
    0x0801d778 ldr r3, [r5, 0x2c]                                    |         r3 = *((r5 + 0x2c));
    0x0801d77c strd r2, r3, [r4, 0x18]                               |         __asm ("strd r2, r3, [r4, 0x18]");
    0x0801d780 ldr r3, [r5]                                          |         r3 = *(r5);
    0x0801d784 ldr r2, [r5, 4]                                       |         r2 = *((r5 + 4));
    0x0801d788 str r2, [r4, 0x24]                                    |         *((r4 + 0x24)) = r2;
    0x0801d78c str r3, [r4, 0x20]                                    |         *((r4 + 0x20)) = r3;
    0x0801d790 ldr r3, [r5, 0x38]                                    |         r3 = *((r5 + 0x38));
    0x0801d794 str r3, [r4, 0x38]                                    |         *((r4 + 0x38)) = r3;
                                                                     |         if (r8 == r3) {
    0x0801d798 beq 0x801d7c8                                         |             goto label_3;
                                                                     |         }
    0x0801d79c sub r8, r8, 0x80000023                                |         r8 -= 0x80000023;
    0x0801d7a0 cmp r8, 3                                             |         
                                                                     |         if (r8 > 3) {
                                                                     |             /* switch table (4 cases) at 0x801d7ac */
    0x0801d7a4 ldrls pc, [pc, r8, lsl 2]                             |             offset_0 = r8 << 2;
                                                                     |             pc = *((pc + offset_0));
                                                                     |         }
    0x0801d7a8 b 0x801d880                                           |         goto label_4;
                                                                     | label_2:
    0x0801d7bc add r0, r4, 0x40                                      |         r0 = r4 + 0x40;
    0x0801d7c0 stmdaeq sb, {r2, r7, r8, fp, sp, pc}                  |         __asm ("stmdaeq sb, {r2, r7, r8, fp, sp, pc}");
    0x0801d7c4 b 0x801d6d4                                           |         
                                                                     |     } while (1);
                                                                     | label_3:
    0x0801d7c8 ldrh r2, [r7, 0x30]                                   |     r2 = *((r7 + 0x30));
    0x0801d7cc mov r1, 0xa                                           |     r1 = 0xa;
    0x0801d7d0 ldrh r3, [r4, 0x30]                                   |     r3 = *((r4 + 0x30));
    0x0801d7d4 str r1, [r4, 0x3c]                                    |     *((r4 + 0x3c)) = r1;
    0x0801d7d8 orr r3, r3, r2                                        |     r3 |= r2;
    0x0801d7dc orr r3, r3, 0xa000                                    |     r3 |= 0xa000;
    0x0801d7e0 strh r3, [r4, 0x30]                                   |     *((r4 + 0x30)) = r3;
                                                                     |     do {
                                                                     | label_0:
    0x0801d7e4 ldr r3, [r7, 0x20]                                    |         r3 = *((r7 + 0x20));
    0x0801d7e8 str r3, [r4, 0x28]                                    |         *((r4 + 0x28)) = r3;
    0x0801d7ec ldr r3, [r7, 0x24]                                    |         r3 = *((r7 + 0x24));
    0x0801d7f0 str r3, [r4, 0x2c]                                    |         *((r4 + 0x2c)) = r3;
    0x0801d7f4 add sp, sp, 0x14                                      |         
    0x0801d7f8 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}              |         
                                                                     | label_4:
    0x0801d880 cmp sl, 0                                             |         
                                                                     |         if (sl == 0) {
    0x0801d884 beq 0x801d89c                                         |             goto label_5;
                                                                     |         }
    0x0801d888 mov r2, 0xa000                                        |         r2 = 0xa000;
    0x0801d88c mov r3, 0xa                                           |         r3 = 0xa;
    0x0801d890 strh r2, [r4, 0x30]                                   |         *((r4 + 0x30)) = r2;
    0x0801d894 str r3, [r4, 0x3c]                                    |         *((r4 + 0x3c)) = r3;
    0x0801d898 b 0x801d7e4                                           |         
                                                                     |     } while (1);
                                                                     | label_5:
    0x0801d89c ldr r2, [r4, 4]                                       |     r2 = *((r4 + 4));
    0x0801d8a0 tst r2, 0x10                                          |     
                                                                     |     if ((r2 & 0x10) == 0) {
    0x0801d8a4 beq 0x801d8d8                                         |         goto label_6;
                                                                     |     }
    0x0801d8a8 ldrh r3, [r7, 0x32]                                   |     r3 = *((r7 + 0x32));
    0x0801d8ac mov r2, 4                                             |     r2 = 4;
    0x0801d8b0 str r2, [r4, 0x3c]                                    |     *((r4 + 0x3c)) = r2;
    0x0801d8b4 orr r3, r3, 0x4000                                    |     r3 |= 0x4000;
    0x0801d8b8 strh r3, [r4, 0x30]                                   |     *((r4 + 0x30)) = r3;
    0x0801d8bc ldrb r3, [sb, 0x645]                                  |     r3 = *((sb + 0x645));
    0x0801d8c0 tst r3, 1                                             |     
                                                                     |     if ((r3 & 1) != 0) {
    0x0801d8c4 bne 0x801d7e4                                         |         goto label_0;
                                                                     |     }
                                                                     | label_1:
    0x0801d8c8 ldr r3, [r4]                                          |     r3 = *(r4);
    0x0801d8cc orr r3, r3, 0x10                                      |     r3 |= 0x10;
    0x0801d8d0 str r3, [r4]                                          |     *(r4) = r3;
    0x0801d8d4 b 0x801d7e4                                           |     goto label_0;
                                                                     | label_6:
    0x0801d8d8 tst r2, 1                                             |     
    0x0801d8dc ldrh r2, [r7, 0x30]                                   |     r2 = *((r7 + 0x30));
    0x0801d8e0 mov r1, 0x8000                                        |     
    0x0801d8e4 movt r1, 0xffff                                       |     r1 = 0x-8000;
    0x0801d8e8 orr r0, r2, r1                                        |     r0 = r2 | r1;
    0x0801d8ec bicne r2, r2, 0x92                                    |     __asm ("bicne r2, r2, 0x92");
                                                                     |     if ((r2 & 1) == 0) {
    0x0801d8f0 orrne r2, r2, r1                                      |         r2 |= r1;
                                                                     |     }
    0x0801d8f4 strh r0, [r4, 0x30]                                   |     *((r4 + 0x30)) = r0;
    0x0801d8f8 mov r0, 8                                             |     r0 = 8;
    0x0801d8fc strhne r2, [r4, 0x30]                                 |     __asm ("strhne r2, [r4, 0x30]");
    0x0801d900 str r0, [r4, 0x3c]                                    |     *((r4 + 0x3c)) = r0;
    0x0801d904 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0801d908 bne 0x801d7e4                                         |         goto label_0;
                                                                     |     }
    0x0801d90c ldrb r3, [sb, 0x645]                                  |     r3 = *((sb + 0x645));
    0x0801d910 tst r3, 1                                             |     
                                                                     |     if ((r3 & 1) != 0) {
    0x0801d914 bne 0x801d7e4                                         |         goto label_0;
                                                                     |     }
    0x0801d918 ldrb r3, [r5, 0x3c]                                   |     r3 = *((r5 + 0x3c));
    0x0801d91c cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0801d920 bne 0x801d7e4                                         |         goto label_0;
                                                                     |     }
    0x0801d924 stmdaeq r4, {ip, sp, lr}                              |     __asm ("stmdaeq r4, {ip, sp, lr}");
    0x0801d928 stmdaeq r4, {ip, sp, lr}                              |     __asm ("stmdaeq r4, {ip, sp, lr}");
    0x0801d92c stmdaeq r6, {r3, r4, r5, r6, r8, fp, sp, pc}          |     __asm ("stmdaeq r6, {r3, r4, r5, r6, r8, fp, sp, pc}");
    0x0801d930 stmdaeq r6, {r3, r4, r5, r6, r8, fp, sp, pc}          |     __asm ("stmdaeq r6, {r3, r4, r5, r6, r8, fp, sp, pc}");
    0x0801d934 stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}              |     __asm ("stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}");
    0x0801d938 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0801d93c beq 0x801d8c8                                         |         goto label_1;
                                                                     |     }
    0x0801d940 ldr r1, [r4, 0x38]                                    |     r1 = *((r4 + 0x38));
    0x0801d944 stmdaeq r5, {r3, r4, r5, r7, r8, sb, sl, lr}          |     __asm ("stmdaeq r5, {r3, r4, r5, r7, r8, sb, sl, lr}");
    0x0801d948 stmdaeq r5, {r3, r4, r5, r7, r8, sb, sl, lr}          |     __asm ("stmdaeq r5, {r3, r4, r5, r7, r8, sb, sl, lr}");
    0x0801d94c stmdaeq sb, {r4, r7, sb, sl, sp, pc}                  |     __asm ("stmdaeq sb, {r4, r7, sb, sl, sp, pc}");
    0x0801d950 b 0x801d8c8                                           |     goto label_1;
                                                                     | }
    ; assembly                                                           | /* r2dec pseudo code output */
                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/fs/cifs/cifs.ko @ 0x80138b4 */
                                                                         | #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;
    0x080138b4 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                 |     
    0x080138b8 mov r8, r0                                                |     r8 = r0;
    0x080138bc mov r7, r1                                                |     r7 = r1;
    0x080138c0 sub sp, sp, 0x7c                                          |     
    0x080138c4 ldr r5, [r3, 0x1c]                                        |     r5 = *((r3 + 0x1c));
    0x080138c8 ldr r3, [r0, 0x1c]                                        |     r3 = *((r0 + 0x1c));
    0x080138cc str r2, [sp, 0x10]                                        |     var_10h = r2;
    0x080138d0 ldr sb, [r3, 0x1f8]                                       |     sb = *((r3 + 0x1f8));
    0x080138d4 ldr r2, [sp, 0xa8]                                        |     r2 = *(arg_a8h);
    0x080138d8 ldr r3, [r5, 0x24]                                        |     r3 = *((r5 + 0x24));
    0x080138dc ldr r4, [sp, 0xa0]                                        |     r4 = *(arg_a0h);
    0x080138e0 ldr sl, [r3, 0x20]                                        |     sl = *((r3 + 0x20));
    0x080138e4 mov r3, 0                                                 |     r3 = 0;
    0x080138e8 str r3, [r2]                                              |     *(r2) = r3;
    0x080138ec str r3, [sp, 0x24]                                        |     var_24h = r3;
    0x080138f0 ldrh r3, [sp, 0xa4]                                       |     r3 = *(arg_a4h);
    0x080138f4 str r3, [sp, 0x14]                                        |     var_14h = r3;
    0x080138f8 ldr r3, [r5, 0x24]                                        |     r3 = *((r5 + 0x24));
    0x080138fc ldr r3, [r3, 0x20]                                        |     r3 = *((r3 + 0x20));
    0x08013900 ldrb r3, [r3, 0x1b0]                                      |     r3 = *((r3 + 0x1b0));
    0x08013904 and r3, r3, 1                                             |     r3 &= 1;
    0x08013908 lsl r3, r3, 1                                             |     r3 <<= 1;
    0x0801390c str r3, [r2]                                              |     *(r2) = r3;
    0x08013910 ldr r3, [r1, 0x5c]                                        |     r3 = *((r1 + 0x5c));
    0x08013914 ldr r0, [r3, 0x1f8]                                       |     r0 = *((r3 + 0x1f8));
    0x08013918 stmdaeq r1, {r3, r7, fp, sp}                              |     __asm ("stmdaeq r1, {r3, r7, fp, sp}");
    0x0801391c movw r3, 0x53c                                            |     r3 = 0x53c;
    0x08013920 ldrh r1, [r0, r3]                                         |     r1 = *((r0 + r3));
    0x08013924 mov r0, r7                                                |     r0 = r7;
    0x08013928 ubfx r1, r1, 1, 1                                         |     r1 = (r1 >> 1) & ((1 << 1) - 1);
    0x0801392c stmdaeq r1, {r3, r4, r6, r8, sl, ip, sp}                  |     __asm ("stmdaeq r1, {r3, r4, r6, r8, sl, ip, sp}");
    0x08013930 subs r6, r0, 0                                            |     r6 = r0 - 0;
                                                                         |     if (r6 == r0) {
    0x08013934 beq 0x8013de0                                             |         goto label_5;
                                                                         |     }
    0x08013938 ldrb r3, [r5, 0x645]                                      |     r3 = *((r5 + 0x645));
    0x0801393c tst r3, 1                                                 |     
                                                                         |     if ((r3 & 1) != 0) {
    0x08013940 beq 0x8013970                                             |         
    0x08013944 ldr r3, [r5, 0x24]                                        |         r3 = *((r5 + 0x24));
    0x08013948 ldr r2, [r3, 0x20]                                        |         r2 = *((r3 + 0x20));
    0x0801394c ldr r3, [r3, 0x50]                                        |         r3 = *((r3 + 0x50));
    0x08013950 ldr r2, [r2, 0x28]                                        |         r2 = *((r2 + 0x28));
    0x08013954 ldr r2, [r2, 0x30]                                        |         r2 = *((r2 + 0x30));
    0x08013958 tst r2, r3                                                |         
                                                                         |         if ((r2 & r3) == 0) {
    0x0801395c beq 0x8013970                                             |             goto label_2;
                                                                         |         }
    0x08013960 ldrb r3, [r5, 0x648]                                      |         r3 = *((r5 + 0x648));
    0x08013964 str r3, [sp, 0x1c]                                        |         var_1ch = r3;
    0x08013968 cmp r3, 0                                                 |         
                                                                         |         if (r3 == 0) {
    0x0801396c beq 0x8013cb4                                             |             goto label_6;
                                                                         |         }
                                                                         |     }
                                                                         | label_2:
    0x08013970 add r3, r4, 1                                             |     r3 = r4 + 1;
    0x08013974 and r2, r4, 0xc0                                          |     r2 = r4 & 0xc0;
    0x08013978 tst r3, 2                                                 |     
    0x0801397c lsl r3, r3, 0x1f                                          |     r3 <<= 0x1f;
                                                                         |     if ((r3 & 2) == 0) {
    0x08013980 orrne r3, r3, 0x40000000                                  |         r3 |= 0x40000000;
                                                                         |     }
    0x08013984 cmp r2, 0xc0                                              |     
                                                                         |     if (r2 != 0xc0) {
    0x08013988 moveq fp, 2                                               |         
                                                                         |     }
                                                                         |     if (r2 != 0xc0) {
    0x0801398c beq 0x80139ac                                             |         
    0x08013990 and r2, r4, 0x240                                         |         r2 = r4 & 0x240;
    0x08013994 cmp r2, 0x240                                             |         
                                                                         |         if (r2 != 0x240) {
    0x08013998 moveq fp, 5                                               |             
                                                                         |         }
                                                                         |         if (r2 == 0x240) {
    0x0801399c beq 0x80139ac                                             |             goto label_7;
                                                                         |         }
    0x080139a0 tst r4, 0x40                                              |         
                                                                         |         if ((r4 & 0x40) != 0) {
    0x080139a4 moveq fp, 5                                               |             
                                                                         |         }
                                                                         |         if ((r4 & 0x40) != 0) {
    0x080139a8 movne fp, 3                                               |             goto label_7;
                                                                         |         }
                                                                         |     }
                                                                         | label_7:
    0x080139ac ldr r2, [sl, 0x24]                                        |     r2 = *((sl + 0x24));
    0x080139b0 str r3, [sp, 0x18]                                        |     var_18h = r3;
    0x080139b4 ldr r4, [r2, 0xd8]                                        |     r4 = *((r2 + 0xd8));
    0x080139b8 cmp r4, 0                                                 |     
                                                                         |     if (r4 != 0) {
    0x080139bc mvneq fp, 0x25                                            |         
                                                                         |     }
                                                                         |     if (r4 == 0) {
    0x080139c0 beq 0x8013ba4                                             |         goto label_0;
                                                                         |     }
    0x080139c4 stmdaeq sb, {r2, r3, r4, r5, r7, sb, sl, sp, pc}          |     __asm ("stmdaeq sb, {r2, r3, r4, r5, r7, sb, sl, sp, pc}");
    0x080139c8 stmdaeq sb, {r2, r3, r4, r5, r7, sb, sl, sp, pc}          |     __asm ("stmdaeq sb, {r2, r3, r4, r5, r7, sb, sl, sp, pc}");
    0x080139cc mov r1, 0xcc0                                             |     r1 = 0xcc0;
    0x080139d0 ldr r0, [r2, 0x1c]                                        |     r0 = *((r2 + 0x1c));
    0x080139d4 stmdaeq sb, {r2, r4, r5, r6, sb, sl, sp, pc}              |     __asm ("stmdaeq sb, {r2, r4, r5, r6, sb, sl, sp, pc}");
    0x080139d8 subs r4, r0, 0                                            |     r4 = r0 - 0;
                                                                         |     if (r4 == r0) {
    0x080139dc beq 0x8013e10                                             |         goto label_8;
                                                                         |     }
    0x080139e0 ldrb r2, [r5, 0x645]                                      |     r2 = *((r5 + 0x645));
    0x080139e4 ldr r3, [sp, 0x18]                                        |     r3 = var_18h;
    0x080139e8 tst r2, 1                                                 |     
                                                                         |     if ((r2 & 1) == 0) {
    0x080139ec movne r2, 0x40                                            |         r2 = 0x40;
                                                                         |     }
                                                                         |     if ((r2 & 1) == 0) {
    0x080139f0 bne 0x8013a08                                             |         
    0x080139f4 ldr r2, [sp, 0x14]                                        |         r2 = var_14h;
    0x080139f8 tst r2, 0x92                                              |         
    0x080139fc mov r2, 0x40                                              |         
    0x08013a00 movt r2, 0x1000                                           |         r2 = 0x10000040;
                                                                         |         if ((r2 & 0x92) != 0) {
    0x08013a04 movne r2, 0x40                                            |             r2 = 0x40;
                                                                         |             goto label_9;
                                                                         |         }
                                                                         |     }
                                                                         | label_9:
    0x08013a08 cmp sb, 0                                                 |     
    0x08013a0c str r3, [sp, 0x34]                                        |     var_34h = r3;
    0x08013a10 str r5, [sp, 0x28]                                        |     var_28h = r5;
    0x08013a14 str sb, [sp, 0x2c]                                        |     var_2ch = sb;
                                                                         |     if (sb != 0) {
    0x08013a18 beq 0x8013a34                                             |         
    0x08013a1c mov r0, sb                                                |         r0 = sb;
    0x08013a20 str r2, [sp, 0x18]                                        |         var_18h = r2;
    0x08013a24 stmdaeq r2, {r3, r4, r5, r8, fp, ip, sp}                  |         __asm ("stmdaeq r2, {r3, r4, r5, r8, fp, ip, sp}");
    0x08013a28 ldr r2, [sp, 0x18]                                        |         r2 = var_18h;
    0x08013a2c cmp r0, 0                                                 |         
                                                                         |         if (r0 != 0) {
    0x08013a30 orrne r2, r2, 0x4000                                      |             r2 |= 0x4000;
                                                                         |             goto label_10;
                                                                         |         }
                                                                         |     }
                                                                         | label_10:
    0x08013a34 ldr r3, [sp, 0xac]                                        |     r3 = *(arg_ach);
    0x08013a38 add r1, sp, 0x28                                          |     r1 += var_28h;
    0x08013a3c str r3, [sp, 0x40]                                        |     var_40h = r3;
    0x08013a40 ldr r3, [sp, 0x14]                                        |     r3 = var_14h;
    0x08013a44 strh r3, [sp, 0x44]                                       |     var_44h = r3;
    0x08013a48 ldrb r3, [sp, 0x46]                                       |     r3 = var_46h;
    0x08013a4c str r2, [sp, 0x38]                                        |     var_38h = r2;
    0x08013a50 str fp, [sp, 0x30]                                        |     var_30h = fp;
    0x08013a54 bfc r3, 0, 1                                              |     value_0 = BIT_MASK (1, );
                                                                         |     value_0 = ~value_0;
                                                                         |     r3 &= value_0;
    0x08013a58 strb r3, [sp, 0x46]                                       |     var_46h = r3;
    0x08013a5c ldr r3, [sl, 0x24]                                        |     r3 = *((sl + 0x24));
    0x08013a60 ldr r2, [sp, 0xa8]                                        |     r2 = *(arg_a8h);
    0x08013a64 ldr r0, [sp, 0x10]                                        |     r0 = var_10h;
    0x08013a68 ldr fp, [r3, 0xd8]                                        |     fp = *((r3 + 0xd8));
    0x08013a6c mov r3, r4                                                |     r3 = r4;
    0x08013a70 str r6, [sp, 0x3c]                                        |     var_3ch = r6;
    0x08013a74 blx fp                                                    |     r0 = fp (r0, r2, r3);
    0x08013a78 subs fp, r0, 0                                            |     
                                                                         |     if (fp != r0) {
    0x08013a7c bne 0x8013ba4                                             |         goto label_0;
                                                                         |     }
    0x08013a80 ldrb r2, [r5, 0x645]                                      |     r2 = *((r5 + 0x645));
    0x08013a84 tst r2, 1                                                 |     
                                                                         |     if ((r2 & 1) != 0) {
    0x08013a88 addeq r3, sp, 0x24                                        |         r3 += var_24h;
                                                                         |     }
                                                                         |     if ((r2 & 1) != 0) {
    0x08013a8c streq r3, [sp, 0x18]                                      |         var_18h = r3;
                                                                         |     }
                                                                         |     if ((r2 & 1) == 0) {
    0x08013a90 beq 0x8013bf8                                             |         goto label_11;
                                                                         |     }
    0x08013a94 ldr r3, [sp, 0xa8]                                        |     r3 = *(arg_a8h);
    0x08013a98 ldr r2, [r3]                                              |     r2 = *(r3);
    0x08013a9c tst r2, 0x20000                                           |     
                                                                         |     if ((r2 & 0x20000) != 0) {
    0x08013aa0 addeq r3, sp, 0x24                                        |         r3 += var_24h;
                                                                         |     }
                                                                         |     if ((r2 & 0x20000) != 0) {
    0x08013aa4 streq r3, [sp, 0x18]                                      |         var_18h = r3;
                                                                         |     }
                                                                         |     if ((r2 & 0x20000) != 0) {
    0x08013aa8 beq 0x8013b58                                             |         
    0x08013aac str fp, [sp, 0x70]                                        |         var_70h = fp;
    0x08013ab0 mvn r0, 0                                                 |         r0 = ~0;
    0x08013ab4 str fp, [sp, 0x74]                                        |         var_74h = fp;
    0x08013ab8 mvn r1, 0                                                 |         r1 = ~0;
    0x08013abc ldr r3, [sp, 0x14]                                        |         r3 = var_14h;
    0x08013ac0 str r3, [sp, 0x60]                                        |         var_60h = r3;
    0x08013ac4 ldr r3, [sb, 0x34]                                        |         r3 = *((sb + 0x34));
    0x08013ac8 str fp, [sp, 0x6c]                                        |         var_6ch = fp;
    0x08013acc tst r3, 2                                                 |         
    0x08013ad0 mov r3, sp                                                |         r3 = sp;
    0x08013ad4 bic r3, r3, 0x1fc0                                        |         r3 = BIT_MASK (r3, 0x1fc0);
    0x08013ad8 str fp, [sp, 0x68]                                        |         var_68h = fp;
    0x08013adc bic r3, r3, 0x3f                                          |         r3 = BIT_MASK (r3, 0x3f);
    0x08013ae0 str fp, [sp, 0x64]                                        |         var_64h = fp;
    0x08013ae4 strd r0, r1, [sp, 0x48]                                   |         __asm ("strd r0, r1, [var_48h]");
    0x08013ae8 strd r0, r1, [sp, 0x50]                                   |         __asm ("strd r0, r1, [var_50h]");
    0x08013aec strd r0, r1, [sp, 0x58]                                   |         __asm ("strd r0, r1, [var_58h]");
                                                                         |         if ((r3 & 2) == 0) {
    0x08013af0 beq 0x8013d70                                             |             goto label_12;
                                                                         |         }
    0x08013af4 ldr r2, [r3, 0xc]                                         |         r2 = *((r3 + 0xc));
    0x08013af8 ldr r2, [r2, 0x340]                                       |         r2 = *((r2 + 0x340));
    0x08013afc ldr r2, [r2, 0x1c]                                        |         r2 = *((r2 + 0x1c));
    0x08013b00 str r2, [sp, 0x68]                                        |         var_68h = r2;
    0x08013b04 ldrh r2, [r8]                                             |         r2 = *(r8);
    0x08013b08 tst r2, 0x400                                             |         
                                                                         |         if ((r2 & 0x400) != 0) {
    0x08013b0c ldreq r2, [r3, 0xc]                                       |             r2 = *((r3 + 0xc));
                                                                         |         }
                                                                         |         if ((r2 & 0x400) == 0) {
    0x08013b10 ldrne r2, [r8, 8]                                         |             r2 = *((r8 + 8));
                                                                         |         }
                                                                         |         if ((r2 & 0x400) != 0) {
    0x08013b14 ldreq r2, [r2, 0x340]                                     |             r2 = *((r2 + 0x340));
                                                                         |         }
                                                                         |         if ((r2 & 0x400) != 0) {
    0x08013b18 ldreq r2, [r2, 0x20]                                      |             r2 = *((r2 + 0x20));
                                                                         |         }
    0x08013b1c str r2, [sp, 0x6c]                                        |         var_6ch = r2;
                                                                         | label_3:
    0x08013b20 ldr r3, [r3, 0xc]                                         |         r3 = *((r3 + 0xc));
    0x08013b24 add r2, sp, 0x48                                          |         r2 += var_48h;
    0x08013b28 ldr r0, [sp, 0x10]                                        |         r0 = var_10h;
    0x08013b2c mov r1, r5                                                |         r1 = r5;
    0x08013b30 ldr r3, [r3, 0x244]                                       |         r3 = *((r3 + 0x244));
    0x08013b34 str r3, [sp]                                              |         *(sp) = r3;
    0x08013b38 add r3, sp, 0x24                                          |         r3 += var_24h;
    0x08013b3c str r3, [sp, 0x18]                                        |         var_18h = r3;
    0x08013b40 ldr r3, [sp, 0xac]                                        |         r3 = *(arg_ach);
    0x08013b44 ldrh r3, [r3]                                             |         r3 = *(r3);
    0x08013b48 stmdaeq r0, {r2, r5, r8, sb, sp, pc}                      |         __asm ("stmdaeq r0, {r2, r5, r8, sb, sp, pc}");
    0x08013b4c ldrb r3, [r5, 0x645]                                      |         r3 = *((r5 + 0x645));
    0x08013b50 tst r3, 1                                                 |         
                                                                         |         if ((r3 & 1) == 0) {
    0x08013b54 beq 0x8013bf8                                             |             goto label_11;
                                                                         |         }
                                                                         |     }
    0x08013b58 ldr r2, [r8, 0x1c]                                        |     r2 = *((r8 + 0x1c));
    0x08013b5c mov r1, r6                                                |     r1 = r6;
    0x08013b60 ldr r0, [sp, 0x18]                                        |     r0 = var_18h;
    0x08013b64 ldr r3, [sp, 0x10]                                        |     r3 = var_10h;
    0x08013b68 stmdaeq r1, {r3, r6, r7, r8, fp, sp, lr, pc}              |     __asm ("stmdaeq r1, {r3, r6, r7, r8, fp, sp, lr, pc}");
    0x08013b6c mov fp, r0                                                |     
                                                                         | label_1:
    0x08013b70 cmp fp, 0                                                 |     
                                                                         |     if (fp != 0) {
    0x08013b74 bne 0x8013bc4                                             |         goto label_13;
                                                                         |     }
    0x08013b78 ldr r3, [sp, 0x24]                                        |     r3 = var_24h;
    0x08013b7c ldrh r3, [r3]                                             |     r3 = *(r3);
    0x08013b80 and r3, r3, 0xf000                                        |     r3 &= 0xf000;
    0x08013b84 cmp r3, 0x4000                                            |     
                                                                         |     if (r3 == 0x4000) {
    0x08013b88 beq 0x8013bc0                                             |         goto label_14;
                                                                         |     }
    0x08013b8c mov r0, r7                                                |     r0 = r7;
    0x08013b90 mov fp, 0                                                 |     
    0x08013b94 stmdaeq sb, {r3, r6, r7, fp, sp, pc}                      |     __asm ("stmdaeq sb, {r3, r6, r7, fp, sp, pc}");
    0x08013b98 mov r0, r7                                                |     r0 = r7;
    0x08013b9c ldr r1, [sp, 0x24]                                        |     r1 = var_24h;
    0x08013ba0 stmdaeq sb, {r2, r3, r6, r7, fp, sp, pc}                  |     __asm ("stmdaeq sb, {r2, r3, r6, r7, fp, sp, pc}");
                                                                         |     do {
                                                                         | label_0:
    0x08013ba4 mov r0, r4                                                |         r0 = r4;
    0x08013ba8 stmdaeq sb, {r2, r6, r7, sb, sl, sp, pc}                  |         __asm ("stmdaeq sb, {r2, r6, r7, sb, sl, sp, pc}");
    0x08013bac mov r0, r6                                                |         r0 = r6;
    0x08013bb0 stmdaeq sb, {r2, r6, r7, sb, sl, sp, pc}                  |         __asm ("stmdaeq sb, {r2, r6, r7, sb, sl, sp, pc}");
                                                                         | label_4:
    0x08013bb4 mov r0, fp                                                |         r0 = fp;
    0x08013bb8 add sp, sp, 0x7c                                          |         
    0x08013bbc pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                  |         
                                                                         | label_14:
    0x08013bc0 mvn fp, 0x14                                              |         
                                                                         | label_13:
    0x08013bc4 ldr r2, [sl, 0x24]                                        |         r2 = *((sl + 0x24));
    0x08013bc8 ldr r7, [r2, 0xe0]                                        |         r7 = *((r2 + 0xe0));
    0x08013bcc cmp r7, 0                                                 |         
                                                                         |         if (r7 != 0) {
    0x08013bd0 beq 0x8013be4                                             |             
    0x08013bd4 ldr r2, [sp, 0xac]                                        |             r2 = *(arg_ach);
    0x08013bd8 mov r1, r5                                                |             r1 = r5;
    0x08013bdc ldr r0, [sp, 0x10]                                        |             r0 = var_10h;
    0x08013be0 blx r7                                                    |             uint32_t (*r7)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
                                                                         |         }
    0x08013be4 ldr r0, [sp, 0x24]                                        |         r0 = var_24h;
    0x08013be8 cmp r0, 0                                                 |         
    0x08013bec beq 0x8013ba4                                             |         
                                                                         |     } while (r0 == 0);
    0x08013bf0 stmdaeq sb, {r4, r6, r7, fp, sp, pc}                      |     __asm ("stmdaeq sb, {r4, r6, r7, fp, sp, pc}");
    0x08013bf4 b 0x8013ba4                                               |     goto label_0;
                                                                         | label_11:
    0x08013bf8 ldr r3, [sp, 0xac]                                        |     r3 = *(arg_ach);
    0x08013bfc mov r2, r4                                                |     r2 = r4;
    0x08013c00 str r3, [sp, 4]                                           |     var_4h = r3;
    0x08013c04 mov r1, r6                                                |     r1 = r6;
    0x08013c08 ldr r3, [sp, 0x10]                                        |     r3 = var_10h;
    0x08013c0c str r3, [sp]                                              |     *(sp) = r3;
    0x08013c10 ldr r0, [sp, 0x18]                                        |     r0 = var_18h;
    0x08013c14 ldr r3, [r8, 0x1c]                                        |     r3 = *((r8 + 0x1c));
    0x08013c18 stmdaeq r1, {r5, r6, r8, sb, fp, sp, lr, pc}              |     __asm ("stmdaeq r1, {r5, r6, r8, sb, fp, sp, lr, pc}");
    0x08013c1c mov fp, r0                                                |     
    0x08013c20 ldr r0, [sp, 0x24]                                        |     r0 = var_24h;
    0x08013c24 cmp r0, 0                                                 |     
                                                                         |     if (r0 == 0) {
    0x08013c28 beq 0x8013b70                                             |         goto label_1;
                                                                         |     }
    0x08013c2c ldr r2, [sl, 0x24]                                        |     r2 = *((sl + 0x24));
    0x08013c30 ldr r2, [r2, 0x12c]                                       |     r2 = *((r2 + 0x12c));
    0x08013c34 cmp r2, 0                                                 |     
                                                                         |     if (r2 != 0) {
    0x08013c38 beq 0x8013c44                                             |         
    0x08013c3c ldr r1, [sp, 0xac]                                        |         r1 = *(arg_ach);
    0x08013c40 blx r2                                                    |         uint32_t (*r2)(uint32_t) (r1);
                                                                         |     }
    0x08013c44 ldr r2, [sb, 0x34]                                        |     r2 = *((sb + 0x34));
    0x08013c48 tst r2, 0x1000                                            |     
                                                                         |     if ((r2 & 0x1000) == 0) {
    0x08013c4c ldrne r2, [sp, 0x24]                                      |         r2 = var_24h;
                                                                         |     }
                                                                         |     if ((r2 & 0x1000) == 0) {
    0x08013c50 ldrne r3, [sp, 0x14]                                      |         r3 = var_14h;
                                                                         |     }
    0x08013c54 strhne r3, [r2]                                           |     __asm ("strhne r3, [r2]");
    0x08013c58 ldr r3, [sp, 0xa8]                                        |     r3 = *(arg_a8h);
    0x08013c5c ldr r2, [r3]                                              |     r2 = *(r3);
    0x08013c60 tst r2, 0x20000                                           |     
                                                                         |     if ((r2 & 0x20000) == 0) {
    0x08013c64 beq 0x8013b70                                             |         goto label_1;
                                                                         |     }
    0x08013c68 ldr r2, [sb, 0x34]                                        |     r2 = *((sb + 0x34));
    0x08013c6c tst r2, 2                                                 |     
                                                                         |     if ((r2 & 2) == 0) {
    0x08013c70 beq 0x8013b70                                             |         goto label_1;
                                                                         |     }
    0x08013c74 mov r3, sp                                                |     r3 = sp;
    0x08013c78 ldr r1, [sp, 0x24]                                        |     r1 = var_24h;
    0x08013c7c bic r2, r3, 0x1fc0                                        |     r2 = BIT_MASK (r3, 0x1fc0);
    0x08013c80 bic r2, r2, 0x3f                                          |     r2 = BIT_MASK (r2, 0x3f);
    0x08013c84 ldr r0, [r2, 0xc]                                         |     r0 = *((r2 + 0xc));
    0x08013c88 ldr r0, [r0, 0x340]                                       |     r0 = *((r0 + 0x340));
    0x08013c8c ldr r0, [r0, 0x1c]                                        |     r0 = *((r0 + 0x1c));
    0x08013c90 str r0, [r1, 4]                                           |     *((r1 + 4)) = r0;
    0x08013c94 ldrh r0, [r8]                                             |     r0 = *(r8);
    0x08013c98 tst r0, 0x400                                             |     
                                                                         |     if ((r0 & 0x400) != 0) {
    0x08013c9c ldreq r2, [r2, 0xc]                                       |         r2 = *((r2 + 0xc));
                                                                         |     }
                                                                         |     if ((r0 & 0x400) == 0) {
    0x08013ca0 ldrne r2, [r8, 8]                                         |         r2 = *((r8 + 8));
                                                                         |     }
                                                                         |     if ((r0 & 0x400) != 0) {
    0x08013ca4 ldreq r2, [r2, 0x340]                                     |         r2 = *((r2 + 0x340));
                                                                         |     }
                                                                         |     if ((r0 & 0x400) != 0) {
    0x08013ca8 ldreq r2, [r2, 0x20]                                      |         r2 = *((r2 + 0x20));
                                                                         |     }
    0x08013cac str r2, [r1, 8]                                           |     *((r1 + 8)) = r2;
    0x08013cb0 b 0x8013b70                                               |     goto label_1;
                                                                         | label_6:
    0x08013cb4 ldr r3, [r5, 0x63c]                                       |     r3 = *((r5 + 0x63c));
    0x08013cb8 tst r3, 0x20                                              |     
                                                                         |     if ((r3 & 0x20) == 0) {
    0x08013cbc beq 0x8013970                                             |         goto label_2;
                                                                         |     }
    0x08013cc0 ldr r3, [sp, 0x10]                                        |     r3 = var_10h;
    0x08013cc4 str r3, [sp, 0xc]                                         |     var_ch = r3;
    0x08013cc8 ldr r3, [sp, 0xac]                                        |     r3 = *(arg_ach);
    0x08013ccc str r3, [sp, 8]                                           |     var_8h = r3;
    0x08013cd0 ldr r3, [sp, 0xa8]                                        |     r3 = *(arg_a8h);
    0x08013cd4 str r3, [sp, 4]                                           |     var_4h = r3;
    0x08013cd8 add r3, sp, 0x24                                          |     r3 += var_24h;
    0x08013cdc str r4, [sp]                                              |     *(sp) = r4;
    0x08013ce0 mov r1, r3                                                |     r1 = r3;
    0x08013ce4 str r3, [sp, 0x18]                                        |     var_18h = r3;
    0x08013ce8 ldr r2, [r8, 0x1c]                                        |     r2 = *((r8 + 0x1c));
    0x08013cec ldr r3, [sp, 0x14]                                        |     r3 = var_14h;
    0x08013cf0 stmdaeq r1, {r3, r5, r7, r8, sb, sl, ip, lr}              |     __asm ("stmdaeq r1, {r3, r5, r7, r8, sb, sl, ip, lr}");
    0x08013cf4 subs fp, r0, 0                                            |     
                                                                         |     if (fp > r0) {
    0x08013cf8 bgt 0x8013d88                                             |         goto label_15;
                                                                         |     }
    0x08013cfc cmn fp, 0x16                                              |     
                                                                         |     if (fp >= 0x16) {
    0x08013d00 blt 0x8013d78                                             |         
    0x08013d04 add r2, fp, 0x16                                          |         r2 += arg_16h;
    0x08013d08 cmp r2, 0x16                                              |         
                                                                         |         if (r2 > 0x16) {
                                                                         |             /* switch table (23 cases) at 0x8013d14 */
    0x08013d0c ldrls pc, [pc, r2, lsl 2]                                 |             offset_1 = r2 << 2;
                                                                         |             pc = *((pc + offset_1));
                                                                         |         }
    0x08013d10 b 0x8013d88                                               |         goto label_15;
                                                                         | label_12:
    0x08013d70 strd r0, r1, [sp, 0x68]                                   |         __asm ("strd r0, r1, [var_6ch]");
    0x08013d74 b 0x8013b20                                               |         goto label_3;
                                                                         |     }
    0x08013d78 cmn fp, 0x5f                                              |     
                                                                         |     if (fp == 0x5f) {
    0x08013d7c beq 0x8013970                                             |         goto label_2;
                                                                         |     }
    0x08013d80 cmn fp, 0x42                                              |     
                                                                         |     if (fp == 0x42) {
    0x08013d84 beq 0x8013970                                             |         goto label_2;
                                                                         |     }
                                                                         | label_15:
    0x08013d88 mov r4, 0                                                 |     r4 = 0;
    0x08013d8c b 0x8013ba4                                               |     goto label_0;
                                                                         | label_5:
    0x08013de0 mvn fp, 0xb                                               |     
    0x08013de4 b 0x8013bb4                                               |     goto label_4;
                                                                         | label_8:
    0x08013e10 mvn fp, 0xb                                               |     
    0x08013e14 b 0x8013ba4                                               |     goto label_0;
                                                                         | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/fs/cifs/cifs.ko @ 0x802a5f8 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.cifs_fill_common_info ()         | void cifs_fill_common_info (int32_t arg1, int32_t arg2) {
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x0802a5f8 ldr r3, [r1, 0x20]                |     r3 = *((r1 + 0x20));
    0x0802a5fc str r3, [r0, 0x28]                |     *((r0 + 0x28)) = r3;
    0x0802a600 ldr r2, [r0, 4]                   |     r2 = *((r0 + 4));
    0x0802a604 ldr r3, [r1, 0x24]                |     r3 = *((r1 + 0x24));
    0x0802a608 tst r2, 0x10                      |     
    0x0802a60c str lr, [sp, -4]!                 |     
    0x0802a610 str r3, [r0, 0x2c]                |     *((r0 + 0x2c)) = r3;
                                                 |     if ((r2 & 0x10) == 0) {
    0x0802a614 beq 0x802a6e8                     |         goto label_2;
                                                 |     }
    0x0802a618 ldrh r3, [r1, 0x32]               |     r3 = *((r1 + 0x32));
    0x0802a61c mov ip, 4                         |     
    0x0802a620 orr r3, r3, 0x4000                |     r3 |= 0x4000;
                                                 | label_1:
    0x0802a624 strh r3, [r0, 0x30]               |     *((r0 + 0x30)) = r3;
    0x0802a628 tst r2, 0x400                     |     
    0x0802a62c ldr r3, [r0]                      |     r3 = *(r0);
    0x0802a630 str ip, [r0, 0x3c]                |     *((r0 + 0x3c)) = ip;
                                                 |     if ((r2 & 0x400) == 0) {
    0x0802a634 beq 0x802a660                     |         goto label_0;
                                                 |     }
    0x0802a638 ldr ip, [r0, 0x70]                |     ip = *((r0 + 0x70));
    0x0802a63c cmp ip, 0x80000014                |     
                                                 |     if (ip > 0x80000014) {
    0x0802a640 bhi 0x802a6d8                     |         goto label_3;
                                                 |     }
    0x0802a644 cmp ip, 0x80000009                |     
                                                 |     if (ip < 0x80000009) {
    0x0802a648 bls 0x802a720                     |         goto label_4;
                                                 |     }
    0x0802a64c sub ip, ip, 0x8000000a            |     
    0x0802a650 movw lr, 0x501                    |     lr = 0x501;
    0x0802a654 lsr ip, lr, ip                    |     
    0x0802a658 tst ip, 1                         |     
                                                 |     if ((ip & 1) != 0) {
    0x0802a65c bne 0x802a6e0                     |         goto label_5;
                                                 |     }
                                                 |     do {
                                                 | label_0:
    0x0802a660 tst r2, 1                         |         
    0x0802a664 orr ip, r3, 0x10                  |         
    0x0802a668 str ip, [r0]                      |         *(r0) = ip;
    0x0802a66c mov lr, 0x200                     |         
    0x0802a670 movt lr, 0x1000                   |         lr = 0x10000200;
    0x0802a674 ldrhne ip, [r0, 0x30]             |         __asm ("ldrhne ip, [r0, 0x30]");
    0x0802a678 bicne ip, ip, 0x92                |         __asm ("bicne ip, ip, 0x92");
    0x0802a67c strhne ip, [r0, 0x30]             |         __asm ("strhne ip, [r0, 0x30]");
    0x0802a680 ldr ip, [r1, 0x34]                |         ip = *((r1 + 0x34));
    0x0802a684 tst ip, lr                        |         
                                                 |         if ((ip & lr) == 0) {
    0x0802a688 orrne r3, r3, 0x14                |             r3 |= 0x14;
                                                 |         }
                                                 |         if ((ip & lr) == 0) {
    0x0802a68c strne r3, [r0]                    |             *(r0) = r3;
                                                 |         }
                                                 |         if ((ip & lr) == 0) {
    0x0802a690 ldrne ip, [r1, 0x34]              |             ip = *((r1 + 0x34));
                                                 |         }
    0x0802a694 tst ip, 0x80                      |         
    0x0802a698 popeq {pc}                        |         
    0x0802a69c tst r2, 4                         |         
    0x0802a6a0 popeq {pc}                        |         
    0x0802a6a4 ldr r3, [r0, 0x10]                |         r3 = *((r0 + 0x10));
    0x0802a6a8 ldr r2, [r0, 0x14]                |         r2 = *((r0 + 0x14));
    0x0802a6ac orrs r3, r3, r2                   |         r3 |= r2;
                                                 |         if (r3 != r3) {
    0x0802a6b0 moveq r2, 1                       |             r2 = 1;
                                                 |         }
                                                 |         if (r3 != r3) {
    0x0802a6b4 streq r2, [r0, 0x3c]              |             *((r0 + 0x3c)) = r2;
                                                 |         }
    0x0802a6b8 ldrheq r3, [r0, 0x30]             |         __asm ("ldrheq r3, [r0, 0x30]");
                                                 |         if (r3 == r3) {
    0x0802a6bc ldrne r3, [r0]                    |             r3 = *(r0);
                                                 |         }
    0x0802a6c0 ubfxeq r3, r3, 0, 0xc             |         __asm ("ubfxeq r3, r3, 0, 0xc");
                                                 |         if (r3 == r3) {
    0x0802a6c4 orrne r3, r3, 4                   |             r3 |= 4;
                                                 |         }
                                                 |         if (r3 != r3) {
    0x0802a6c8 orreq r3, r3, 0x1000              |             r3 |= 0x1000;
                                                 |         }
                                                 |         if (r3 == r3) {
    0x0802a6cc strne r3, [r0]                    |             *(r0) = r3;
                                                 |         }
    0x0802a6d0 strheq r3, [r0, 0x30]             |         __asm ("strheq r3, [r0, 0x30]");
    0x0802a6d4 pop {pc}                          |         
                                                 | label_3:
    0x0802a6d8 cmp ip, 0xa000000c                |         
    0x0802a6dc bne 0x802a660                     |         
                                                 |     } while (ip != 0xa000000c);
                                                 | label_5:
    0x0802a6e0 orr r3, r3, 4                     |     r3 |= 4;
    0x0802a6e4 b 0x802a660                       |     goto label_0;
                                                 | label_2:
    0x0802a6e8 ldr ip, [r0, 0x70]                |     ip = *((r0 + 0x70));
    0x0802a6ec mov lr, 0x1d                      |     
    0x0802a6f0 movt lr, 0xa000                   |     lr = 0x-5fffffe3;
    0x0802a6f4 ldrh r3, [r1, 0x30]               |     r3 = *((r1 + 0x30));
    0x0802a6f8 cmp ip, lr                        |     
                                                 |     if (ip == lr) {
    0x0802a6fc beq 0x802a788                     |         goto label_6;
                                                 |     }
    0x0802a700 sub ip, ip, 0x80000023            |     
    0x0802a704 cmp ip, 3                         |     
                                                 |     if (ip > 3) {
                                                 |         /* switch table (4 cases) at 0x802a710 */
    0x0802a708 ldrls pc, [pc, ip, lsl 2]         |         offset_0 = ip << 2;
                                                 |         pc = *((pc + offset_0));
                                                 |     }
    0x0802a70c b 0x802a79c                       |     goto label_7;
                                                 | label_4:
    0x0802a720 cmp ip, 0                         |     
                                                 |     if (ip != 0) {
    0x0802a724 orreq r3, r3, 4                   |         r3 |= 4;
                                                 |     }
    0x0802a728 b 0x802a660                       |     goto label_0;
                                                 |     do {
    0x0802a73c strh r3, [r0, 0x30]               |         *((r0 + 0x30)) = r3;
    0x0802a740 str ip, [r0, 0x3c]                |         *((r0 + 0x3c)) = ip;
    0x0802a744 ldr r3, [r0]                      |         r3 = *(r0);
    0x0802a748 b 0x802a660                       |         goto label_0;
                                                 | label_6:
    0x0802a788 ldrh ip, [r0, 0x30]               |         ip = *((r0 + 0x30));
    0x0802a78c orr r3, r3, ip                    |         r3 |= ip;
    0x0802a790 mov ip, 0xa                       |         
    0x0802a794 orr r3, r3, 0xa000                |         r3 |= 0xa000;
    0x0802a798 b 0x802a73c                       |         
                                                 |     } while (1);
                                                 | label_7:
    0x0802a79c orr r3, r3, 0x8000                |     r3 |= 0x8000;
    0x0802a7a0 mov ip, 8                         |     
    0x0802a7a4 b 0x802a624                       |     goto label_1;
                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/fs/cifs/cifs.ko @ 0x802a95c */
                                                                 | #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;
    0x0802a95c push {r4, r5, lr}                                 |     
    0x0802a960 mov r4, r0                                        |     r4 = r0;
    0x0802a964 mov r5, r1                                        |     r5 = r1;
    0x0802a968 sub sp, sp, 0x9c                                  |     
    0x0802a96c mov r0, r1                                        |     r0 = r1;
    0x0802a970 mov r2, sp                                        |     r2 = sp;
    0x0802a974 mov r1, 0                                         |     r1 = 0;
    0x0802a978 stmdaeq r4, {r5, r7, r8, fp}                      |     __asm ("stmdaeq r4, {r5, r7, r8, fp}");
    0x0802a97c cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x0802a980 blt 0x802a9b0                                     |         goto label_1;
                                                                 |     }
    0x0802a984 ldr r2, [sp, 0x94]                                |     r2 = var_94h;
    0x0802a988 ldr r3, [sp, 0x90]                                |     r3 = var_90h;
    0x0802a98c strd r2, r3, [r4]                                 |     __asm ("strd r2, r3, [r4]");
    0x0802a990 ldr r3, [r5, 4]                                   |     r3 = *((r5 + 4));
    0x0802a994 str r3, [r4, 8]                                   |     *((r4 + 8)) = r3;
    0x0802a998 ldr r3, [r5, 0x3c]                                |     r3 = *((r5 + 0x3c));
    0x0802a99c ldr r2, [r5, 0x40]                                |     r2 = *((r5 + 0x40));
    0x0802a9a0 str r2, [r4, 0x14]                                |     *((r4 + 0x14)) = r2;
    0x0802a9a4 str r3, [r4, 0x10]                                |     *((r4 + 0x10)) = r3;
                                                                 |     do {
                                                                 | label_0:
    0x0802a9a8 add sp, sp, 0x9c                                  |         
    0x0802a9ac pop {r4, r5, pc}                                  |         
                                                                 | label_1:
    0x0802a9b0 ldr r1, [pc, 0x1c]                                |         r1 = *(0x802a9d0);
    0x0802a9b4 ldr r0, [pc, 0x1c]                                |         r0 = "cifs_remap_file_range";
    0x0802a9b8 stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}          |         __asm ("stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}");
    0x0802a9bc cmp r0, 0                                         |         
    0x0802a9c0 beq 0x802a9a8                                     |         
                                                                 |     } while (r0 == 0);
    0x0802a9c4 stmdaeq r5, {r2, r3, r5, r8, sb, ip, pc}          |     __asm ("stmdaeq r5, {r2, r3, r5, r8, sb, ip, pc}");
    0x0802a9c8 stmdaeq r5, {r2, r3, r5, r8, sb, ip, pc}          |     __asm ("stmdaeq r5, {r2, r3, r5, r8, sb, ip, pc}");
    0x0802a9cc stmdaeq sb, {r4, r7, sb, sl, sp, pc}              |     __asm ("stmdaeq sb, {r4, r7, sb, sl, sp, pc}");
    0x0802a9d0 b 0x802a9a8                                       |     goto label_0;
                                                                 | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/fs/cifs/cifs.ko @ 0x802a9dc */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) sym.cifs_fill_dirent ()                      | void cifs_fill_dirent (int32_t arg1, int32_t arg2) {
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
    0x0802a9dc push {r4, r5, r6, lr}                     |     
    0x0802a9e0 mov ip, 0                                 |     
    0x0802a9e4 movw lr, 0x105                            |     lr = 0x105;
    0x0802a9e8 mov r4, r0                                |     r4 = r0;
    0x0802a9ec mov r5, r1                                |     r5 = r1;
    0x0802a9f0 cmp r2, lr                                |     
    0x0802a9f4 str ip, [r0]                              |     *(r0) = ip;
    0x0802a9f8 str ip, [r0, 4]                           |     *((r0 + 4)) = ip;
    0x0802a9fc str ip, [r0, 8]                           |     *((r0 + 8)) = ip;
    0x0802aa00 str ip, [r0, 0xc]                         |     *((r0 + 0xc)) = ip;
    0x0802aa04 str ip, [r0, 0x10]                        |     *((r0 + 0x10)) = ip;
    0x0802aa08 str ip, [r0, 0x14]                        |     *((r0 + 0x14)) = ip;
                                                         |     if (r2 <= lr) {
    0x0802aa0c bhi 0x802aa40                             |         
    0x0802aa10 cmp r2, 0x100                             |         
                                                         |         if (r2 < 0x100) {
    0x0802aa14 bls 0x802aa88                             |             goto label_2;
                                                         |         }
    0x0802aa18 sub r2, r2, 0x100                         |         r2 -= 0x100;
    0x0802aa1c sub r2, r2, 1                             |         r2--;
    0x0802aa20 cmp r2, 4                                 |         
                                                         |         if (r2 > 4) {
                                                         |             /* switch table (5 cases) at 0x802aa2c */
    0x0802aa24 ldrls pc, [pc, r2, lsl 2]                 |             offset_0 = r2 << 2;
                                                         |             pc = *((pc + offset_0));
                                                         |         }
    0x0802aa28 b 0x802aaa4                               |         goto label_3;
                                                         |     }
    0x0802aa40 movw r1, 0x202                            |     r1 = 0x202;
    0x0802aa44 cmp r2, r1                                |     
                                                         |     if (r2 != r1) {
    0x0802aa48 bne 0x802aaa4                             |         goto label_3;
                                                         |     }
    0x0802aa4c add r0, r5, 0x6c                          |     r0 = r5 + 0x6c;
    0x0802aa50 cmp r3, 0                                 |     
    0x0802aa54 str r0, [r4]                              |     *(r4) = r0;
                                                         |     if (r3 == 0) {
    0x0802aa58 beq 0x802ab08                             |         goto label_4;
                                                         |     }
    0x0802aa5c add r3, r5, 0x6a                          |     r3 = r5 + 0x6a;
    0x0802aa60 movw r1, 0x1001                           |     r1 = 0x1001;
    0x0802aa64 b 0x802aa74                               |     
                                                         |     while (r2 != 0) {
    0x0802aa68 add ip, ip, 1                             |         
    0x0802aa6c cmp ip, r1                                |         
                                                         |         if (ip == r1) {
    0x0802aa70 beq 0x802ab4c                             |             goto label_5;
                                                         |         }
    0x0802aa74 ldrh r2, [r3, 2]!                         |         r2 = *((r3 += 2));
    0x0802aa78 cmp r2, 0                                 |         
    0x0802aa7c bne 0x802aa68                             |         
                                                         |     }
    0x0802aa80 lsl r0, ip, 1                             |     r0 = ip << 1;
    0x0802aa84 b 0x802ab10                               |     goto label_1;
                                                         | label_2:
    0x0802aa88 cmp r2, 1                                 |     
                                                         |     if (r2 == 1) {
    0x0802aa8c beq 0x802ab30                             |         goto label_6;
                                                         |     }
    0x0802aa90 cmp r2, 0x64                              |     
                                                         |     if (r2 != 0x64) {
    0x0802aa94 bne 0x802aaa4                             |         goto label_3;
                                                         |     }
    0x0802aa98 bl 0x802a95c                              |     cifs_fill_dirent_posix ();
                                                         |     do {
                                                         | label_0:
    0x0802aa9c mov r0, 0                                 |         r0 = 0;
    0x0802aaa0 pop {r4, r5, r6, pc}                      |         
                                                         | label_3:
    0x0802aaa4 mvn r0, 0x15                              |         r0 = ~0x15;
    0x0802aaa8 pop {r4, r5, r6, pc}                      |         
                                                         | label_4:
    0x0802ab08 mov r1, 0x1000                            |         r1 = 0x1000;
    0x0802ab0c stmdaeq sb, {r5, r6, fp, sp, pc}          |         __asm ("stmdaeq sb, {r5, r6, fp, sp, pc}");
                                                         | label_1:
    0x0802ab10 str r0, [r4, 4]                           |         *((r4 + 4)) = r0;
    0x0802ab14 ldr r3, [r5, 4]                           |         r3 = *((r5 + 4));
    0x0802ab18 str r3, [r4, 8]                           |         *((r4 + 8)) = r3;
    0x0802ab1c ldr r3, [r5, 0x54]                        |         r3 = *((r5 + 0x54));
    0x0802ab20 ldr r2, [r5, 0x58]                        |         r2 = *((r5 + 0x58));
    0x0802ab24 str r2, [r4, 0x14]                        |         *((r4 + 0x14)) = r2;
    0x0802ab28 str r3, [r4, 0x10]                        |         *((r4 + 0x10)) = r3;
    0x0802ab2c b 0x802aa9c                               |         
                                                         |     } while (1);
                                                         | label_6:
    0x0802ab30 add r3, r1, 0x1b                          |     r3 = r1 + 0x1b;
    0x0802ab34 str r3, [r0]                              |     *(r0) = r3;
    0x0802ab38 ldrb r3, [r1, 0x1a]                       |     r3 = *((r1 + 0x1a));
    0x0802ab3c str r3, [r0, 4]                           |     *((r0 + 4)) = r3;
    0x0802ab40 ldr r3, [r1]                              |     r3 = *(r1);
    0x0802ab44 str r3, [r0, 8]                           |     *((r0 + 8)) = r3;
    0x0802ab48 b 0x802aa9c                               |     goto label_0;
                                                         | label_5:
    0x0802ab4c movw r0, 0x2002                           |     r0 = 0x2002;
    0x0802ab50 b 0x802ab10                               |     goto label_1;
                                                         | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/fs/cifs/cifs.ko @ 0x8028818 */
                                                                 | #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;
    0x08028818 push {r4, r5, r6, lr}                             |     
    0x0802881c cmp r3, 1                                         |     
    0x08028820 mov r6, r0                                        |     r6 = r0;
    0x08028824 sub sp, sp, 8                                     |     
    0x08028828 ldrh r0, [r1]                                     |     r0 = *(r1);
    0x0802882c mov r4, r1                                        |     r4 = r1;
    0x08028830 mov r5, r2                                        |     r5 = r2;
                                                                 |     if (r3 == 1) {
    0x08028834 beq 0x8028888                                     |         goto label_5;
                                                                 |     }
    0x08028838 cmp r3, 2                                         |     
                                                                 |     if (r3 == 2) {
    0x0802883c beq 0x8028918                                     |         goto label_6;
                                                                 |     }
                                                                 | label_1:
    0x08028840 ldr r3, [r5, 8]                                   |     r3 = *((r5 + 8));
    0x08028844 mov r1, r6                                        |     r1 = r6;
    0x08028848 mov r2, 6                                         |     r2 = 6;
    0x0802884c blx r3                                            |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r1, r2, r3);
    0x08028850 cmp r0, 0                                         |     
    0x08028854 ble 0x8028860                                     |     
                                                                 |     while (1) {
                                                                 | label_2:
    0x08028858 add sp, sp, 8                                     |         
    0x0802885c pop {r4, r5, r6, pc}                              |         
    0x08028860 ldr r0, [r5]                                      |         r0 = *(r5);
    0x08028864 stmdaeq r5, {r2, r3, r5, r6, sb, ip, lr}          |         __asm ("stmdaeq r5, {r2, r3, r5, r6, sb, ip, lr}");
    0x08028868 stmdaeq r5, {r2, r3, r5, r6, sb, ip, lr}          |         __asm ("stmdaeq r5, {r2, r3, r5, r6, sb, ip, lr}");
    0x0802886c stmdaeq sb, {r2, r3, r4, r5, fp, sp, pc}          |         __asm ("stmdaeq sb, {r2, r3, r4, r5, fp, sp, pc}");
    0x08028870 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x08028874 beq 0x80288dc                                     |             goto label_7;
                                                                 |         }
                                                                 | label_3:
    0x08028878 mov r0, 0x3f                                      |         r0 = 0x3f;
                                                                 | label_0:
    0x0802887c strb r0, [r6]                                     |         *(r6) = r0;
    0x08028880 mov r0, 1                                         |         r0 = 1;
    0x08028884 b 0x8028858                                       |         
                                                                 |     }
                                                                 | label_5:
    0x08028888 sub r3, r0, 0xf000                                |     r3 = r0 - 0xf000;
    0x0802888c sub r3, r3, 1                                     |     r3--;
    0x08028890 uxth r3, r3                                       |     r3 = (int16_t) r3;
    0x08028894 cmp r3, 0x1e                                      |     
    0x08028898 uxtbls r0, r0                                     |     __asm ("uxtbls r0, r0");
                                                                 |     if (r3 < 0x1e) {
    0x0802889c bls 0x802887c                                     |         goto label_0;
                                                                 |     }
    0x080288a0 sub r3, r0, 0xf000                                |     r3 = r0 - 0xf000;
    0x080288a4 sub r3, r3, 0x20                                  |     r3 -= 0x20;
    0x080288a8 cmp r3, 9                                         |     
                                                                 |     if (r3 > 9) {
                                                                 |         /* switch table (10 cases) at 0x80288b4 */
    0x080288ac ldrls pc, [pc, r3, lsl 2]                         |         offset_0 = r3 << 2;
                                                                 |         pc = *((pc + offset_0));
                                                                 |     }
    0x080288b0 b 0x8028840                                       |     goto label_1;
                                                                 | label_7:
    0x080288dc mov r1, 6                                         |     r1 = 6;
    0x080288e0 mov r3, r6                                        |     r3 = r6;
    0x080288e4 str r1, [sp]                                      |     *(sp) = r1;
    0x080288e8 mov r0, r4                                        |     r0 = r4;
    0x080288ec mov r2, 1                                         |     r2 = 1;
    0x080288f0 mov r1, 3                                         |     r1 = 3;
    0x080288f4 stmdaeq sb, {r2, r6, sb, fp, sp, pc}              |     __asm ("stmdaeq sb, {r2, r6, sb, fp, sp, pc}");
    0x080288f8 cmp r0, 0                                         |     
                                                                 |     if (r0 > 0) {
    0x080288fc bgt 0x8028858                                     |         goto label_2;
                                                                 |     }
    0x08028900 b 0x8028878                                       |     goto label_3;
                                                                 | label_4:
    0x08028904 movw r3, 0xf07c                                   |     r3 = 0xf07c;
    0x08028908 cmp r0, r3                                        |     
                                                                 |     if (r0 != r3) {
    0x0802890c bne 0x8028840                                     |         goto label_1;
                                                                 |     }
    0x08028910 mov r0, 0x7c                                      |     r0 = 0x7c;
    0x08028914 b 0x802887c                                       |     goto label_0;
                                                                 | label_6:
    0x08028918 movw r3, 0xf03f                                   |     r3 = 0xf03f;
    0x0802891c cmp r0, r3                                        |     
                                                                 |     if (r0 > r3) {
    0x08028920 bhi 0x8028904                                     |         goto label_4;
                                                                 |     }
    0x08028924 movw r3, 0xf029                                   |     r3 = 0xf029;
    0x08028928 cmp r0, r3                                        |     
                                                                 |     if (r0 < r3) {
    0x0802892c bls 0x8028840                                     |         goto label_1;
                                                                 |     }
    0x08028930 sub r3, r0, 0xf000                                |     r3 = r0 - 0xf000;
    0x08028934 sub r3, r3, 0x2a                                  |     r3 -= 0x2a;
    0x08028938 cmp r3, 0x15                                      |     
                                                                 |     if (r3 > 0x15) {
                                                                 |         /* switch table (22 cases) at 0x8028944 */
    0x0802893c ldrls pc, [pc, r3, lsl 2]                         |         offset_1 = r3 << 2;
                                                                 |         pc = *((pc + offset_1));
                                                                 |     }
    0x08028940 b 0x8028840                                       |     goto label_1;
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/fs/cifs/cifs.ko @ 0x804586c */
                                                                 | #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;
    0x0804586c push {r4, r5, lr}                                 |     
    0x08045870 mov r4, r1                                        |     r4 = r1;
    0x08045874 ldr r1, [pc, 0xe4]                                |     r1 = *(0x804595c);
    0x08045878 sub sp, sp, 0x1c                                  |     
    0x0804587c mov r5, r0                                        |     r5 = r0;
    0x08045880 mov r2, sp                                        |     r2 = sp;
    0x08045884 stmdaeq sb, {r2, r4, r5, r6, fp, sp, pc}          |     __asm ("stmdaeq sb, {r2, r4, r5, r6, fp, sp, pc}");
    0x08045888 cmp r0, 4                                         |     
                                                                 |     if (r0 > 4) {
                                                                 |         /* switch table (5 cases) at 0x8045894 */
    0x0804588c ldrls pc, [pc, r0, lsl 2]                         |         offset_0 = r0 << 2;
                                                                 |         pc = *((pc + offset_0));
                                                                 |     }
    0x08045890 b 0x8045934                                       |     
                                                                 |     while (1) {
    0x080458dc add sp, sp, 0x1c                                  |         
    0x080458e0 pop {r4, r5, pc}                                  |         
    0x08045934 ldr r1, [pc, 0x28]                                |         r1 = "cifs_remap_file_range";
    0x08045938 ldr r0, [pc, 0x28]                                |         r0 = "cifs_remap_file_range";
    0x0804593c stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}          |         __asm ("stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}");
    0x08045940 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x08045944 beq 0x8045958                                     |             
    0x08045948 stmdaeq r6, {r2, r3, r7, r8, sl, ip, pc}          |             __asm ("stmdaeq r6, {r2, r3, r7, r8, sl, ip, pc}");
    0x0804594c stmdaeq r6, {r2, r3, r7, r8, sl, ip, pc}          |             __asm ("stmdaeq r6, {r2, r3, r7, r8, sl, ip, pc}");
    0x08045950 mov r1, r5                                        |             r1 = r5;
    0x08045954 stmdaeq sb, {r4, r7, sb, sl, sp, pc}              |             __asm ("stmdaeq sb, {r4, r7, sb, sl, sp, pc}");
                                                                 |         }
    0x08045958 mov r0, 1                                         |         r0 = 1;
    0x0804595c b 0x80458dc                                       |         
                                                                 |     }
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/fs/cifs/cifs.ko @ 0x8045740 */
                                                                 | #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;
    0x08045740 push {r4, r5, lr}                                 |     
    0x08045744 mov r3, 0                                         |     r3 = 0;
    0x08045748 mov r4, r1                                        |     r4 = r1;
    0x0804574c sub sp, sp, 0x1c                                  |     
    0x08045750 str r3, [r1, 0x4c]                                |     *((r1 + 0x4c)) = r3;
    0x08045754 strb r3, [r1, 0x50]                               |     *((r1 + 0x50)) = r3;
    0x08045758 mov r2, sp                                        |     r2 = sp;
    0x0804575c ldr r1, [pc, 0xf8]                                |     r1 = *(0x8045858);
    0x08045760 mov r5, r0                                        |     r5 = r0;
    0x08045764 stmdaeq sb, {r2, r4, r5, r6, fp, sp, pc}          |     __asm ("stmdaeq sb, {r2, r4, r5, r6, fp, sp, pc}");
    0x08045768 cmp r0, 0xa                                       |     
                                                                 |     if (r0 > 0xa) {
                                                                 |         /* switch table (11 cases) at 0x8045774 */
    0x0804576c ldrls pc, [pc, r0, lsl 2]                         |         offset_0 = r0 << 2;
                                                                 |         pc = *((pc + offset_0));
                                                                 |     }
    0x08045770 b 0x8045824                                       |     goto label_1;
                                                                 |     do {
    0x080457b4 add sp, sp, 0x1c                                  |         
    0x080457b8 pop {r4, r5, pc}                                  |         
                                                                 | label_0:
    0x0804581c mov r0, 1                                         |         r0 = 1;
    0x08045820 b 0x80457b4                                       |         
                                                                 |     } while (1);
                                                                 | label_1:
    0x08045824 ldr r1, [pc, 0x34]                                |     r1 = "cifs_remap_file_range";
    0x08045828 ldr r0, [pc, 0x38]                                |     r0 = .data;
    0x0804582c stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}          |     __asm ("stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}");
    0x08045830 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x08045834 beq 0x804581c                                     |         goto label_0;
                                                                 |     }
    0x08045838 mov r1, r5                                        |     r1 = r5;
    0x0804583c stmdaeq r6, {r2, r5, r6, r8, sl, ip, pc}          |     __asm ("stmdaeq r6, {r2, r5, r6, r8, sl, ip, pc}");
    0x08045840 stmdaeq r6, {r2, r5, r6, r8, sl, ip, pc}          |     __asm ("stmdaeq r6, {r2, r5, r6, r8, sl, ip, pc}");
    0x08045844 stmdaeq sb, {r4, r7, sb, sl, sp, pc}              |     __asm ("stmdaeq sb, {r4, r7, sb, sl, sp, pc}");
    0x08045848 b 0x804581c                                       |     goto label_0;
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/fs/cifs/cifs.ko @ 0x804551c */
                                                                 | #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_18h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x0804551c push {r4, r5, r6, lr}                             |     
    0x08045520 mov r5, r2                                        |     r5 = r2;
    0x08045524 mov r6, r1                                        |     r6 = r1;
    0x08045528 sub sp, sp, 0x18                                  |     
    0x0804552c stmdaeq r5, {r2, r7, sl, ip}                      |     __asm ("stmdaeq r5, {r2, r7, sl, ip}");
    0x08045530 stmdaeq r5, {r2, r7, sl, ip}                      |     __asm ("stmdaeq r5, {r2, r7, sl, ip}");
    0x08045534 mov r2, sp                                        |     r2 = sp;
    0x08045538 mov r4, r0                                        |     r4 = r0;
    0x0804553c stmdaeq sb, {r2, r4, r5, r6, fp, sp, pc}          |     __asm ("stmdaeq sb, {r2, r4, r5, r6, fp, sp, pc}");
    0x08045540 sub r3, r0, 1                                     |     r3 = r0 - 1;
    0x08045544 cmp r3, 7                                         |     
                                                                 |     if (r3 > 7) {
                                                                 |         /* switch table (8 cases) at 0x8045550 */
    0x08045548 ldrls pc, [pc, r3, lsl 2]                         |         offset_0 = r3 << 2;
                                                                 |         pc = *((pc + offset_0));
                                                                 |     }
    0x0804554c b 0x80456f0                                       |     goto label_1;
                                                                 |     do {
    0x08045588 add sp, sp, 0x18                                  |         
    0x0804558c pop {r4, r5, r6, pc}                              |         
                                                                 | label_0:
    0x08045678 mov r0, 1                                         |         r0 = 1;
    0x0804567c b 0x8045588                                       |         
                                                                 |     } while (1);
                                                                 | label_1:
    0x080456f0 ldr r1, [pc, 0x30]                                |     r1 = *(0x8045724);
    0x080456f4 ldr r0, [pc, 0x40]                                |     r0 = .data;
    0x080456f8 stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}          |     __asm ("stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}");
    0x080456fc cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x08045700 beq 0x8045678                                     |         goto label_0;
                                                                 |     }
    0x08045704 mov r1, r4                                        |     r1 = r4;
    0x08045708 stmdaeq r6, {r2, r8, sl, ip, pc}                  |     __asm ("stmdaeq r6, {r2, r8, sl, ip, pc}");
    0x0804570c stmdaeq r6, {r2, r8, sl, ip, pc}                  |     __asm ("stmdaeq r6, {r2, r8, sl, ip, pc}");
    0x08045710 stmdaeq sb, {r4, r7, sb, sl, sp, pc}              |     __asm ("stmdaeq sb, {r4, r7, sb, sl, sp, pc}");
    0x08045714 b 0x8045678                                       |     goto label_0;
                                                                 | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/fs/cifs/cifs.ko @ 0x8014ab4 */
                                                         | #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;
    0x08014ab4 push {r4, lr}                             |     
    0x08014ab8 ldr lr, [sp, 0xc]                         |     
    0x08014abc ldr ip, [r0, 0x28]                        |     ip = *(arg_8hx28);
    0x08014ac0 tst ip, 0x80                              |     
                                                         |     if ((ip & 0x80) == 0) {
    0x08014ac4 movne ip, 1                               |         
                                                         |     }
                                                         |     if ((ip & 0x80) == 0) {
    0x08014ac8 ldrne r4, [sp, 8]                         |         r4 = *(arg_8h);
                                                         |     }
                                                         |     if ((ip & 0x80) == 0) {
    0x08014acc strbne ip, [r4]                           |         *(r4) = ip;
                                                         |     }
    0x08014ad0 ldr ip, [lr, 0x28]                        |     ip = *((lr + 0x28));
    0x08014ad4 ldr ip, [ip, 0xc]                         |     ip = *((ip + 0xc));
    0x08014ad8 str ip, [r1]                              |     *(r1) = ip;
    0x08014adc ldrb r0, [r0, 0x2c]                       |     r0 = *((r0 + 0x2c));
    0x08014ae0 cmp r0, 1                                 |     
                                                         |     if (r0 != 1) {
    0x08014ae4 beq 0x8014b34                             |         
    0x08014ae8 cmp r0, 8                                 |         
                                                         |         if (r0 > 8) {
                                                         |             /* switch table (9 cases) at 0x8014af4 */
    0x08014aec ldrls pc, [pc, r0, lsl 2]                 |             offset_0 = r0 << 2;
                                                         |             pc = *((pc + offset_0));
                                                         |         }
    0x08014af0 b 0x8014b30                               |         
    0x08014b30 pop {r4, pc}                              |         
                                                         |     }
    0x08014b34 ldr r3, [lr, 0x28]                        |     r3 = *((lr + 0x28));
    0x08014b38 ldr r3, [r3, 0x10]                        |     r3 = *((r3 + 0x10));
    0x08014b3c orr r3, r3, ip                            |     r3 |= ip;
    0x08014b40 str r3, [r1]                              |     *(r1) = r3;
    0x08014b44 str r0, [r2]                              |     *(r2) = r0;
    0x08014b48 pop {r4, pc}                              |     
                                                         | }
    ; assembly                                                               | /* r2dec pseudo code output */
                                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/fs/cifs/cifs.ko @ 0x800fca4 */
                                                                             | #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_0h, 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_36h;
                                                                             |     int32_t var_38h;
                                                                             |     int32_t var_40h;
                                                                             |     int32_t var_5ch;
                                                                             |     r0 = arg1;
                                                                             |     r1 = arg2;
    0x0800fca4 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                     |     
    0x0800fca8 mov r4, r0                                                    |     r4 = r0;
    0x0800fcac mov r8, r2                                                    |     r8 = r2;
    0x0800fcb0 sub sp, sp, 0x5c                                              |     
    0x0800fcb4 mov r2, 0x1b0                                                 |     r2 = 0x1b0;
    0x0800fcb8 movw r6, 0xffed                                               |     
    0x0800fcbc movt r6, 0xffff                                               |     r6 = 0xffffffed;
    0x0800fcc0 add sb, r0, 0x13                                              |     sb += arg_0hx13;
    0x0800fcc4 sub r6, r6, r0                                                |     r6 -= r0;
    0x0800fcc8 str r3, [sp, 0x10]                                            |     var_10h = r3;
    0x0800fccc mov r3, sp                                                    |     r3 = sp;
    0x0800fcd0 bic sl, r3, 0x1fc0                                            |     sl = BIT_MASK (r3, 0x1fc0);
    0x0800fcd4 str r1, [sp, 4]                                               |     var_4h = r1;
    0x0800fcd8 bic sl, sl, 0x3f                                              |     sl = BIT_MASK (sl, 0x3f);
    0x0800fcdc mov r1, 0                                                     |     r1 = 0;
    0x0800fce0 str sb, [sp, 0xc]                                             |     var_ch = sb;
    0x0800fce4 stmdaeq sb, {r2, r3, r4, r6, fp, sp, pc}                      |     __asm ("stmdaeq sb, {r2, r3, r4, r6, fp, sp, pc}");
    0x0800fce8 stmdaeq sb, {r2, r3, r4, r6, fp, sp, pc}                      |     __asm ("stmdaeq sb, {r2, r3, r4, r6, fp, sp, pc}");
    0x0800fcec ldr ip, [sl, 0xc]                                             |     ip = *((sl + 0xc));
    0x0800fcf0 ldr ip, [ip, 0x37c]                                           |     ip = *((ip + 0x37c));
    0x0800fcf4 ldr r5, [ip, 4]                                               |     r5 = *((ip + 4));
    0x0800fcf8 mov ip, 0x2c                                                  |     
    0x0800fcfc strh ip, [sp, 0x36]                                           |     var_36h = ip;
    0x0800fd00 stmdaeq sb, {r2, r4, r5, r8, sb, sl, sp, pc}                  |     __asm ("stmdaeq sb, {r2, r4, r5, r8, sb, sl, sp, pc}");
    0x0800fd04 add r7, r5, 0x45                                              |     r7 = r5 + 0x45;
    0x0800fd08 add r3, r4, 0x14                                              |     r3 = r4 + 0x14;
    0x0800fd0c movw r2, 0x2020                                               |     
    0x0800fd10 movt r2, 0x2020                                               |     r2 = 0x20202020;
    0x0800fd14 add r5, r5, 0x44                                              |     r5 += 0x44;
    0x0800fd18 str r2, [r4, 0x1c]                                            |     *((r4 + 0x1c)) = r2;
    0x0800fd1c str r2, [r4, 0x14]                                            |     *((r4 + 0x14)) = r2;
    0x0800fd20 str r2, [r4, 0x18]                                            |     *((r4 + 0x18)) = r2;
    0x0800fd24 str r2, [r4, 0x1f]                                            |     *((r4 + 0x1f)) = r2;
    0x0800fd28 str r3, [sp, 8]                                               |     var_8h = r3;
    0x0800fd2c b 0x800fd48                                                   |     
                                                                             |     while (r0 > r3) {
    0x0800fd30 ldrb r3, [r5, 1]!                                             |         r3 = *((r5 += 1));
    0x0800fd34 sub r1, r3, 0x20                                              |         r1 = r3 - 0x20;
    0x0800fd38 ldrb r2, [fp, r3]                                             |         r2 = *((fp + r3));
    0x0800fd3c tst r2, 2                                                     |         
    0x0800fd40 uxtbne r3, r1                                                 |         __asm ("uxtbne r3, r1");
    0x0800fd44 strb r3, [sb, 1]!                                             |         *((sb += 1)) = r3;
    0x0800fd48 mov r0, r7                                                    |         r0 = r7;
    0x0800fd4c mov r1, 0xf                                                   |         r1 = 0xf;
    0x0800fd50 stmdaeq sb, {r5, r6, fp, sp, pc}                              |         __asm ("stmdaeq sb, {r5, r6, fp, sp, pc}");
    0x0800fd54 add r3, r6, sb                                                |         r3 = r6 + sb;
    0x0800fd58 cmp r0, r3                                                    |         
    0x0800fd5c bhi 0x800fd30                                                 |         
                                                                             |     }
    0x0800fd60 mov r2, 0                                                     |     r2 = 0;
    0x0800fd64 strb r2, [r4, 0x23]                                           |     *((r4 + 0x23)) = r2;
    0x0800fd68 ldrb r2, [r4, 0x55]                                           |     r2 = *((r4 + 0x55));
    0x0800fd6c ldr r1, [sl, 0xc]                                             |     r1 = *((sl + 0xc));
    0x0800fd70 ldr ip, [sp, 4]                                               |     ip = var_4h;
    0x0800fd74 bic r2, r2, 0x4a                                              |     r2 = BIT_MASK (r2, 0x4a);
    0x0800fd78 orr r2, r2, 0x4a                                              |     r2 |= 0x4a;
    0x0800fd7c ldr r1, [r1, 0x340]                                           |     r1 = *((r1 + 0x340));
    0x0800fd80 cmp ip, 0                                                     |     
    0x0800fd84 ldr r1, [r1, 4]                                               |     r1 = *((r1 + 4));
    0x0800fd88 str r1, [r4, 0x34]                                            |     *((r4 + 0x34)) = r1;
    0x0800fd8c ldrb r1, [r4, 0x56]                                           |     r1 = *((r4 + 0x56));
    0x0800fd90 ldr r0, [sl, 0xc]                                             |     r0 = *((sl + 0xc));
    0x0800fd94 orr r1, r1, 1                                                 |     r1 |= 1;
    0x0800fd98 ldr r0, [r0, 0x340]                                           |     r0 = *((r0 + 0x340));
    0x0800fd9c ldr r0, [r0, 4]                                               |     r0 = *((r0 + 4));
    0x0800fda0 str r0, [r4, 0x38]                                            |     *((r4 + 0x38)) = r0;
    0x0800fda4 ldr r3, [sl, 0xc]                                             |     r3 = *((sl + 0xc));
    0x0800fda8 ldr r3, [r3, 0x340]                                           |     r3 = *((r3 + 0x340));
    0x0800fdac ldr r3, [r3, 8]                                               |     r3 = *((r3 + 8));
    0x0800fdb0 str r3, [r4, 0x3c]                                            |     *((r4 + 0x3c)) = r3;
    0x0800fdb4 mov r3, 0x100000                                              |     r3 = 0x100000;
    0x0800fdb8 strb r2, [r4, 0x55]                                           |     *((r4 + 0x55)) = r2;
    0x0800fdbc str r3, [r4, 0x6c]                                            |     *((r4 + 0x6c)) = r3;
    0x0800fdc0 movw r3, 0x1ed                                                |     
    0x0800fdc4 movt r3, 0x1ed                                                |     r3 = 0x1ed01ed;
    0x0800fdc8 strb r1, [r4, 0x56]                                           |     *((r4 + 0x56)) = r1;
    0x0800fdcc str r3, [r4, 0x48]                                            |     *((r4 + 0x48)) = r3;
    0x0800fdd0 mov r3, 0x64                                                  |     r3 = 0x64;
    0x0800fdd4 str r3, [r4, 0x80]                                            |     *((r4 + 0x80)) = r3;
    0x0800fdd8 stmdaeq r6, {r4, r5, sb, lr, pc}                              |     __asm ("stmdaeq r6, {r4, r5, sb, lr, pc}");
    0x0800fddc stmdaeq r6, {r4, r5, sb, lr, pc}                              |     __asm ("stmdaeq r6, {r4, r5, sb, lr, pc}");
    0x0800fde0 str r3, [r4, 0x84]                                            |     *((r4 + 0x84)) = r3;
    0x0800fde4 stmdaeq r6, {r2, r5, r6, r8, sb, sl, fp, ip, sp, pc}          |     __asm ("stmdaeq r6, {r2, r5, r6, r8, sb, sl, fp, ip, sp, pc}");
    0x0800fde8 stmdaeq r6, {r2, r5, r6, r8, sb, sl, fp, ip, sp, pc}          |     __asm ("stmdaeq r6, {r2, r5, r6, r8, sb, sl, fp, ip, sp, pc}");
    0x0800fdec str r3, [r4, 0x88]                                            |     *((r4 + 0x88)) = r3;
    0x0800fdf0 mov r3, 0x3c                                                  |     r3 = 0x3c;
    0x0800fdf4 str r3, [r4, 0x194]                                           |     *((r4 + 0x194)) = r3;
    0x0800fdf8 mov r3, 1                                                     |     r3 = 1;
    0x0800fdfc str r3, [r4, 0x1a8]                                           |     *((r4 + 0x1a8)) = r3;
                                                                             |     if (ip == 0) {
    0x0800fe00 beq 0x801013c                                                 |         goto label_15;
                                                                             |     }
    0x0800fe04 mov r0, ip                                                    |     r0 = ip;
    0x0800fe08 mov r2, 0xcc0                                                 |     r2 = 0xcc0;
    0x0800fe0c mov r1, 0x1000                                                |     r1 = 0x1000;
    0x0800fe10 stmdaeq sb, {r6, r7, sb, sl, sp, pc}                          |     __asm ("stmdaeq sb, {r6, r7, sb, sl, sp, pc}");
    0x0800fe14 subs r5, r0, 0                                                |     r5 = r0 - 0;
                                                                             |     if (r5 == r0) {
    0x0800fe18 beq 0x801013c                                                 |         goto label_15;
                                                                             |     }
    0x0800fe1c str r5, [sp, 0x38]                                            |     var_38h = r5;
    0x0800fe20 stmdaeq sb, {r3, r4, r6, r7, r8, sb, sl, sp, pc}              |     __asm ("stmdaeq sb, {r3, r4, r6, r7, r8, sb, sl, sp, pc}");
    0x0800fe24 mov r2, 4                                                     |     r2 = 4;
    0x0800fe28 add r3, r5, r0                                                |     r3 = r5 + r0;
    0x0800fe2c stmdaeq r5, {r2, r5, r6, r7, r8, ip, sp}                      |     __asm ("stmdaeq r5, {r2, r5, r6, r7, r8, ip, sp}");
    0x0800fe30 stmdaeq r5, {r2, r5, r6, r7, r8, ip, sp}                      |     __asm ("stmdaeq r5, {r2, r5, r6, r7, r8, ip, sp}");
    0x0800fe34 mov r0, r5                                                    |     r0 = r5;
    0x0800fe38 mov sl, r3                                                    |     sl = r3;
    0x0800fe3c stmdaeq sb, {r2, r4, r5, r7, r8, sb, sl, sp, pc}              |     __asm ("stmdaeq sb, {r2, r4, r5, r7, r8, sb, sl, sp, pc}");
    0x0800fe40 cmp r0, 0                                                     |     
                                                                             |     if (r0 == 0) {
    0x0800fe44 beq 0x8010124                                                 |         goto label_16;
                                                                             |     }
                                                                             | label_0:
    0x0800fe48 mov r3, 0                                                     |     r3 = 0;
    0x0800fe4c cmp r8, 0                                                     |     
    0x0800fe50 strh r3, [r4, 0x53]                                           |     *((r4 + 0x53)) = r3;
                                                                             |     if (r8 == 0) {
    0x0800fe54 beq 0x8010160                                                 |         goto label_17;
                                                                             |     }
    0x0800fe58 ldrb r3, [r8]                                                 |     r3 = *(r8);
    0x0800fe5c cmp r3, 0                                                     |     
                                                                             |     if (r3 == 0) {
    0x0800fe60 beq 0x8010160                                                 |         goto label_17;
                                                                             |     }
    0x0800fe64 mov r0, r8                                                    |     r0 = r8;
    0x0800fe68 stmdaeq r5, {r2, r4, sb, ip, sp}                              |     __asm ("stmdaeq r5, {r2, r4, sb, ip, sp}");
    0x0800fe6c stmdaeq r5, {r2, r4, sb, ip, sp}                              |     __asm ("stmdaeq r5, {r2, r4, sb, ip, sp}");
    0x0800fe70 stmdaeq sb, {r2, r5, r6, fp, sp, pc}                          |     __asm ("stmdaeq sb, {r2, r5, r6, fp, sp, pc}");
    0x0800fe74 cmp r0, 2                                                     |     
                                                                             |     if (r0 != 2) {
    0x0800fe78 bne 0x8010174                                                 |         goto label_14;
                                                                             |     }
    0x0800fe7c add r0, r8, 2                                                 |     r0 = r8 + 2;
    0x0800fe80 stmdaeq r5, {r2, r4, sb, ip, sp}                              |     __asm ("stmdaeq r5, {r2, r4, sb, ip, sp}");
    0x0800fe84 stmdaeq r5, {r2, r4, sb, ip, sp}                              |     __asm ("stmdaeq r5, {r2, r4, sb, ip, sp}");
    0x0800fe88 stmdaeq sb, {r3, r5, r6, fp, sp, pc}                          |     __asm ("stmdaeq sb, {r3, r5, r6, fp, sp, pc}");
    0x0800fe8c cmp r0, 0                                                     |     
                                                                             |     if (r0 == 0) {
    0x0800fe90 beq 0x8010174                                                 |         goto label_14;
                                                                             |     }
    0x0800fe94 add r6, r0, 1                                                 |     r6 = r0 + 1;
    0x0800fe98 stmdaeq r5, {r2, r4, sb, ip, sp}                              |     __asm ("stmdaeq r5, {r2, r4, sb, ip, sp}");
    0x0800fe9c stmdaeq r5, {r2, r4, sb, ip, sp}                              |     __asm ("stmdaeq r5, {r2, r4, sb, ip, sp}");
    0x0800fea0 mov r0, r6                                                    |     r0 = r6;
    0x0800fea4 stmdaeq sb, {r2, r3, r5, r6, fp, sp, pc}                      |     __asm ("stmdaeq sb, {r2, r3, r5, r6, fp, sp, pc}");
    0x0800fea8 mov r7, r0                                                    |     r7 = r0;
    0x0800feac add fp, r6, r7                                                |     
    0x0800feb0 mov r0, r8                                                    |     r0 = r8;
    0x0800feb4 sub r1, fp, r8                                                |     r1 = fp - r8;
    0x0800feb8 mov r2, 0xcc0                                                 |     r2 = 0xcc0;
    0x0800febc stmdaeq sb, {r6, r7, sb, sl, sp, pc}                          |     __asm ("stmdaeq sb, {r6, r7, sb, sl, sp, pc}");
    0x0800fec0 cmp r0, 0                                                     |     
    0x0800fec4 str r0, [r4, 0xc]                                             |     *((r4 + 0xc)) = r0;
                                                                             |     if (r0 == 0) {
    0x0800fec8 beq 0x80101ac                                                 |         goto label_18;
                                                                             |     }
    0x0800fecc mov r8, 0x5c                                                  |     r8 = 0x5c;
    0x0800fed0 b 0x800fed8                                                   |     
                                                                             |     while (r0 != 0) {
    0x0800fed4 strb r8, [r0]                                                 |         *(r0) = r8;
    0x0800fed8 mov r1, 0x2f                                                  |         r1 = 0x2f;
    0x0800fedc stmdaeq sb, {r2, r3, r4, r6, r7, r8, sb, sl, sp, pc}          |         __asm ("stmdaeq sb, {r2, r3, r4, r6, r7, r8, sb, sl, sp, pc}");
    0x0800fee0 cmp r0, 0                                                     |         
    0x0800fee4 bne 0x800fed4                                                 |         
                                                                             |     }
    0x0800fee8 ldrb r3, [r6, r7]                                             |     r3 = *((r6 + r7));
    0x0800feec cmp r3, 0x5c                                                  |     
    0x0800fef0 cmpne r3, 0x2f                                                |     __asm ("cmpne r3, 0x2f");
                                                                             |     if (r3 != 0x5c) {
    0x0800fef4 ldrbeq r3, [fp, 1]                                            |         r3 = *(arg_1h);
                                                                             |     }
                                                                             |     if (r3 != 0x5c) {
    0x0800fef8 addeq fp, fp, 1                                               |         
                                                                             |     }
    0x0800fefc cmp r3, 0                                                     |     
                                                                             |     if (r3 != 0) {
    0x0800ff00 beq 0x800ff1c                                                 |         
    0x0800ff04 mov r0, fp                                                    |         r0 = fp;
    0x0800ff08 mov r1, 0xcc0                                                 |         r1 = 0xcc0;
    0x0800ff0c stmdaeq sb, {r3, r6, fp, sp, pc}                              |         __asm ("stmdaeq sb, {r3, r6, fp, sp, pc}");
    0x0800ff10 cmp r0, 0                                                     |         
    0x0800ff14 str r0, [r4, 0x8c]                                            |         *((r4 + 0x8c)) = r0;
                                                                             |         if (r0 == 0) {
    0x0800ff18 beq 0x80101ac                                                 |             goto label_18;
                                                                             |         }
                                                                             |     }
    0x0800ff1c ldr r7, [pc, 0xfe8]                                           |     r7 = *(0x8010f08);
    0x0800ff20 mov r6, 0                                                     |     r6 = 0;
    0x0800ff24 add r3, r4, 0x90                                              |     r3 = r4 + 0x90;
    0x0800ff28 mvn fp, 0                                                     |     
    0x0800ff2c str r3, [sp, 4]                                               |     var_4h = r3;
    0x0800ff30 str r6, [sp, 0x2c]                                            |     var_2ch = r6;
    0x0800ff34 str r6, [sp, 0x28]                                            |     var_28h = r6;
    0x0800ff38 str r6, [sp, 0x1c]                                            |     var_1ch = r6;
    0x0800ff3c str r6, [sp, 0x14]                                            |     var_14h = r6;
    0x0800ff40 str r6, [sp, 0x24]                                            |     var_24h = r6;
    0x0800ff44 str r6, [sp, 0x20]                                            |     var_20h = r6;
    0x0800ff48 str fp, [sp, 0x18]                                            |     var_18h = fp;
                                                                             |     do {
                                                                             | label_1:
    0x0800ff4c add r1, sp, 0x36                                              |         r1 += var_36h;
    0x0800ff50 add r0, sp, 0x38                                              |         r0 += var_38h;
    0x0800ff54 stmdaeq sb, {r4, r5, r6, fp, sp, pc}                          |         __asm ("stmdaeq sb, {r4, r5, r6, fp, sp, pc}");
    0x0800ff58 subs r8, r0, 0                                                |         r8 -= var_38h;
                                                                             |         if (r8 == var_38h) {
    0x0800ff5c beq 0x80101d0                                                 |             goto label_19;
                                                                             |         }
    0x0800ff60 ldrb r3, [r8]                                                 |         r3 = *(r8);
    0x0800ff64 cmp r3, 0                                                     |         
    0x0800ff68 beq 0x800ff4c                                                 |         
                                                                             |     } while (r3 == 0);
    0x0800ff6c add r2, sp, 0x40                                              |     r2 += var_40h;
    0x0800ff70 mov r1, r7                                                    |     r1 = r7;
    0x0800ff74 stmdaeq sb, {r2, r4, r5, r6, fp, sp, pc}                      |     __asm ("stmdaeq sb, {r2, r4, r5, r6, fp, sp, pc}");
    0x0800ff78 cmp r0, 0x67                                                  |     
                                                                             |     if (r0 > 0x67) {
                                                                             |         /* switch table (104 cases) at 0x800ff84 */
    0x0800ff7c ldrls pc, [pc, r0, lsl 2]                                     |         offset_0 = r0 << 2;
                                                                             |         pc = *((pc + offset_0));
                                                                             |     }
    0x0800ff80 b 0x80115e8                                                   |     goto label_20;
                                                                             | label_16:
    0x08010124 ldrb r3, [r5, 4]                                              |     r3 = *((r5 + 4));
    0x08010128 cmp r3, 0                                                     |     
                                                                             |     if (r3 == 0) {
    0x0801012c strbne r3, [sp, 0x36]                                         |         var_36h = r3;
                                                                             |     }
                                                                             |     if (r3 == 0) {
    0x08010130 addne r3, r5, 5                                               |         r3 = r5 + 5;
                                                                             |     }
                                                                             |     if (r3 == 0) {
    0x08010134 strne r3, [sp, 0x38]                                          |         var_38h = r3;
                                                                             |     }
    0x08010138 b 0x800fe48                                                   |     goto label_0;
                                                                             | label_15:
    0x0801013c mov r3, 0                                                     |     r3 = 0;
    0x08010140 mov r5, r3                                                    |     r5 = r3;
                                                                             |     do {
                                                                             | label_13:
    0x08010144 mov r0, r3                                                    |         r0 = r3;
    0x08010148 stmdaeq sb, {r2, r6, r7, sb, sl, sp, pc}                      |         __asm ("stmdaeq sb, {r2, r6, r7, sb, sl, sp, pc}");
    0x0801014c mov r0, r5                                                    |         r0 = r5;
    0x08010150 stmdaeq sb, {r2, r6, r7, sb, sl, sp, pc}                      |         __asm ("stmdaeq sb, {r2, r6, r7, sb, sl, sp, pc}");
                                                                             | label_7:
    0x08010154 mvn r0, 0x15                                                  |         r0 = ~0x15;
                                                                             | label_6:
    0x08010158 add sp, sp, 0x5c                                              |         
    0x0801015c pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                      |         
                                                                             | label_17:
    0x08010160 ldr r1, [pc, 0xda8]                                           |         r1 = "cifs_remap_file_range";
    0x08010164 ldr r0, [pc, 0xda8]                                           |         r0 = "cifs_remap_file_range";
    0x08010168 stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}                      |         __asm ("stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}");
    0x0801016c cmp r0, 0                                                     |         
    0x08010170 rscshs sp, sp, r0, lsl 8                                      |         __asm ("rscshs sp, sp, r0, lsl 8");
                                                                             | label_14:
    0x08010174 ldr r1, [pc, 0xe2c]                                           |         r1 = .data;
    0x08010178 ldr r0, [pc, 0xd98]                                           |         r0 = .data;
    0x0801017c stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}                      |         __asm ("stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}");
    0x08010180 cmp r0, 0                                                     |         
                                                                             |         if (r0 != 0) {
    0x08010184 bne 0x8011698                                                 |             goto label_21;
                                                                             |         }
                                                                             | label_2:
    0x08010188 mov r3, 0                                                     |         r3 = 0;
    0x0801018c b 0x8010144                                                   |         
                                                                             |     } while (1);
                                                                             | label_9:
    0x0801019c mov sb, 0                                                     |     sb = 0;
                                                                             | label_10:
    0x080101a0 mov r0, sb                                                    |     r0 = sb;
    0x080101a4 stmdaeq sb, {r2, r6, r7, sb, sl, sp, pc}                      |     __asm ("stmdaeq sb, {r2, r6, r7, sb, sl, sp, pc}");
    0x080101a8 b 0x800ff4c                                                   |     goto label_1;
                                                                             | label_18:
    0x080101ac ldr r1, [pc, 0xdf4]                                           |     r1 = .data;
    0x080101b0 ldr r0, [pc, 0xd64]                                           |     r0 = .data;
    0x080101b4 stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}                      |     __asm ("stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}");
    0x080101b8 cmp r0, 0                                                     |     
                                                                             |     if (r0 == 0) {
    0x080101bc beq 0x8010188                                                 |         goto label_2;
                                                                             |     }
    0x080101c0 stmdaeq r5, {r3, r4, sb, ip, sp}                              |     __asm ("stmdaeq r5, {r3, r4, sb, ip, sp}");
    0x080101c4 stmdaeq r5, {r3, r4, sb, ip, sp}                              |     __asm ("stmdaeq r5, {r3, r4, sb, ip, sp}");
    0x080101c8 stmdaeq sb, {r4, r7, sb, sl, sp, pc}                          |     __asm ("stmdaeq sb, {r4, r7, sb, sl, sp, pc}");
    0x080101cc b 0x8010188                                                   |     goto label_2;
                                                                             | label_19:
    0x080101d0 ldr r3, [sp, 0x14]                                            |     r3 = var_14h;
    0x080101d4 eor r3, r3, 1                                                 |     r3 ^= 1;
    0x080101d8 cmp r6, 0                                                     |     
                                                                             |     if (r6 != 0) {
    0x080101dc moveq r3, 0                                                   |         r3 = 0;
                                                                             |     }
                                                                             |     if (r6 == 0) {
    0x080101e0 andne r3, r3, 1                                               |         r3 &= 1;
                                                                             |     }
    0x080101e4 cmp r3, 0                                                     |     
                                                                             |     if (r3 != 0) {
    0x080101e8 bne 0x8011634                                                 |         goto label_22;
                                                                             |     }
    0x080101ec ldrb r3, [r4, 0x59]                                           |     r3 = *((r4 + 0x59));
    0x080101f0 tst r3, 2                                                     |     
                                                                             |     if ((r3 & 2) != 0) {
    0x080101f4 beq 0x8010208                                                 |         
    0x080101f8 ldr r3, [r4, 0x88]                                            |         r3 = *((r4 + 0x88));
    0x080101fc ldrh r3, [r3, 4]                                              |         r3 = *((r3 + 4));
    0x08010200 cmp r3, 0x300                                                 |         
                                                                             |         if (r3 <= 0x300) {
    0x08010204 blo 0x801114c                                                 |             goto label_23;
                                                                             |         }
                                                                             |     }
    0x08010208 ldr r6, [r4, 0xc]                                             |     r6 = *((r4 + 0xc));
    0x0801020c cmp r6, 0                                                     |     
                                                                             |     if (r6 == 0) {
    0x08010210 beq 0x80111c0                                                 |         goto label_24;
                                                                             |     }
    0x08010214 add r0, r6, 3                                                 |     r0 = r6 + 3;
    0x08010218 mov r1, 0x5c                                                  |     r1 = 0x5c;
    0x0801021c stmdaeq sb, {r2, r3, r4, r6, r7, r8, sb, sl, sp, pc}          |     __asm ("stmdaeq sb, {r2, r3, r4, r6, r7, r8, sb, sl, sp, pc}");
    0x08010220 cmp r0, 0                                                     |     
                                                                             |     if (r0 == 0) {
    0x08010224 beq 0x8011208                                                 |         goto label_25;
                                                                             |     }
    0x08010228 ldr r3, [sp, 0x1c]                                            |     r3 = var_1ch;
    0x0801022c cmp r3, 0                                                     |     
                                                                             |     if (r3 == 0) {
    0x08010230 bne 0x801025c                                                 |         
    0x08010234 add r6, r6, 2                                                 |         r6 += 2;
    0x08010238 mov r1, 0x5c                                                  |         r1 = 0x5c;
    0x0801023c mov r0, r6                                                    |         r0 = r6;
    0x08010240 stmdaeq sb, {r2, r3, r4, r6, r7, r8, sb, sl, sp, pc}          |         __asm ("stmdaeq sb, {r2, r3, r4, r6, r7, r8, sb, sl, sp, pc}");
    0x08010244 mov r1, r6                                                    |         r1 = r6;
    0x08010248 sub r2, r0, r6                                                |         r2 = r0 - r6;
    0x0801024c ldr r0, [sp, 4]                                               |         r0 = var_4h;
    0x08010250 stmdaeq r2, {r4, r5, sl, lr}                                  |         __asm ("stmdaeq r2, {r4, r5, sl, lr}");
    0x08010254 cmp r0, 0                                                     |         
                                                                             |         if (r0 == 0) {
    0x08010258 beq 0x8011648                                                 |             goto label_26;
                                                                             |         }
                                                                             |     }
    0x0801025c ldr r1, [sp, 0x2c]                                            |     r1 = var_2ch;
    0x08010260 ldr r0, [sp, 4]                                               |     r0 = var_4h;
    0x08010264 stmdaeq r2, {r2, r4, r6, r8, sl, lr}                          |     __asm ("stmdaeq r2, {r2, r4, r6, r8, sl, lr}");
    0x08010268 ldr r3, [sp, 0x20]                                            |     r3 = var_20h;
    0x0801026c cmp r3, 0                                                     |     
    0x08010270 ldr r3, [sp, 0x18]                                            |     r3 = var_18h;
                                                                             |     if (r3 != 0) {
    0x08010274 bne 0x8010318                                                 |         goto label_27;
                                                                             |     }
    0x08010278 cmp r3, 1                                                     |     
                                                                             |     if (r3 == 1) {
    0x0801027c beq 0x801160c                                                 |         goto label_28;
                                                                             |     }
                                                                             |     do {
                                                                             | label_11:
    0x08010280 ldr r3, [sp, 0x24]                                            |         r3 = var_24h;
    0x08010284 cmp r3, 0                                                     |         
                                                                             |         if (r3 == 0) {
    0x08010288 beq 0x8011198                                                 |             goto label_29;
                                                                             |         }
    0x0801028c ldrb r3, [r4, 0x51]                                           |         r3 = *((r4 + 0x51));
    0x08010290 subs r2, fp, 0                                                |         r2 -= arg_0h;
                                                                             |         if (r2 == arg_0h) {
    0x08010294 movne r2, 1                                                   |             r2 = 1;
                                                                             |         }
    0x08010298 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;
    0x0801029c strb r3, [r4, 0x51]                                           |         *((r4 + 0x51)) = r3;
                                                                             | label_5:
    0x080102a0 ldr r3, [sp, 0x28]                                            |         r3 = var_28h;
    0x080102a4 cmp r3, 0                                                     |         
                                                                             |         if (r3 == 0) {
    0x080102a8 bne 0x80102c0                                                 |             
    0x080102ac stmdaeq r6, {r1, r3, r4, r6, r7, r8, ip, lr, pc}              |             __asm ("stmdaeq r6, {r1, r3, r4, r6, r7, r8, ip, lr, pc}");
    0x080102b0 stmdaeq r6, {r1, r3, r4, r6, r7, r8, ip, lr, pc}              |             __asm ("stmdaeq r6, {r1, r3, r4, r6, r7, r8, ip, lr, pc}");
    0x080102b4 ldrb r2, [r3, 2]                                              |             r2 = *((r3 + 2));
    0x080102b8 cmp r2, 0                                                     |             
                                                                             |             if (r2 == 0) {
    0x080102bc beq 0x801161c                                                 |                 goto label_30;
                                                                             |             }
                                                                             |         }
                                                                             | label_12:
    0x080102c0 mov r0, r5                                                    |         r0 = r5;
    0x080102c4 stmdaeq sb, {r2, r6, r7, sb, sl, sp, pc}                      |         __asm ("stmdaeq sb, {r2, r6, r7, sb, sl, sp, pc}");
    0x080102c8 ldrb r3, [r4, 0x56]                                           |         r3 = *((r4 + 0x56));
    0x080102cc tst r3, 0x10                                                  |         
                                                                             |         if ((r3 & 0x10) != 0) {
    0x080102d0 bne 0x8011170                                                 |             goto label_31;
                                                                             |         }
    0x080102d4 ldr r3, [r4]                                                  |         r3 = *(r4);
    0x080102d8 cmp r3, 0                                                     |         
                                                                             |         if (r3 == 0) {
    0x080102dc beq 0x801126c                                                 |             goto label_32;
                                                                             |         }
    0x080102e0 ldr r0, [r4, 0x10]                                            |         r0 = *((r4 + 0x10));
    0x080102e4 cmp r0, 0                                                     |         
                                                                             |         if (r0 == 0) {
    0x080102e8 beq 0x801118c                                                 |             goto label_33;
                                                                             |         }
                                                                             | label_3:
    0x080102ec stmdaeq sb, {r3, r4, r5, r6, fp, sp, pc}                      |         __asm ("stmdaeq sb, {r3, r4, r5, r6, fp, sp, pc}");
    0x080102f0 cmp r0, 0                                                     |         
    0x080102f4 str r0, [r4, 0x190]                                           |         *((r4 + 0x190)) = r0;
                                                                             |         if (r0 == 0) {
    0x080102f8 beq 0x8011250                                                 |             goto label_34;
                                                                             |         }
                                                                             | label_4:
    0x080102fc mov r0, 0                                                     |         r0 = 0;
    0x08010300 add sp, sp, 0x5c                                              |         
    0x08010304 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                      |         
                                                                             | label_27:
    0x08010318 subs r2, r3, 0                                                |         r2 = r3 - 0;
    0x0801031c ldrb r3, [r4, 0x51]                                           |         r3 = *((r4 + 0x51));
                                                                             |         if (r2 == r3) {
    0x08010320 movne r2, 1                                                   |             r2 = 1;
                                                                             |         }
    0x08010324 bfi r3, r2, 5, 1                                              |         value_3 = BIT_MASK (5, 1);
                                                                             |         value_4 = r2 & value_3;
                                                                             |         value_3 = ~value_3;
                                                                             |         r3 &= value_3;
                                                                             |         r3 |= value_4;
    0x08010328 strb r3, [r4, 0x51]                                           |         *((r4 + 0x51)) = r3;
    0x0801032c b 0x8010280                                                   |         
                                                                             |     } while (1);
                                                                             | label_23:
    0x0801114c ldr r1, [pc, -0x1ac]                                          |     r1 = loc..LANCHOR1;
    0x08011150 ldr r0, [pc, -0x218]                                          |     r0 = loc..LANCHOR2;
    0x08011154 stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}                      |     __asm ("stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}");
    0x08011158 cmp r0, 0                                                     |     
                                                                             |     if (r0 == 0) {
    0x0801115c beq 0x8010188                                                 |         goto label_2;
                                                                             |     }
    0x08011160 stmdaeq r5, {r3, r6, r7, r8, fp, ip, sp}                      |     __asm ("stmdaeq r5, {r3, r6, r7, r8, fp, ip, sp}");
    0x08011164 stmdaeq r5, {r3, r6, r7, r8, fp, ip, sp}                      |     __asm ("stmdaeq r5, {r3, r6, r7, r8, fp, ip, sp}");
    0x08011168 stmdaeq sb, {r4, r7, sb, sl, sp, pc}                          |     __asm ("stmdaeq sb, {r4, r7, sb, sl, sp, pc}");
    0x0801116c b 0x8010188                                                   |     goto label_2;
                                                                             | label_31:
    0x08011170 ldr r0, [r4]                                                  |     r0 = *(r4);
    0x08011174 stmdaeq sb, {r2, r6, r7, sb, sl, sp, pc}                      |     __asm ("stmdaeq sb, {r2, r6, r7, sb, sl, sp, pc}");
    0x08011178 ldr r0, [r4, 0x10]                                            |     r0 = *((r4 + 0x10));
    0x0801117c mov r3, 0                                                     |     r3 = 0;
    0x08011180 str r3, [r4]                                                  |     *(r4) = r3;
    0x08011184 cmp r0, 0                                                     |     
                                                                             |     if (r0 != 0) {
    0x08011188 bne 0x80102ec                                                 |         goto label_3;
                                                                             |     }
                                                                             | label_33:
    0x0801118c stmdaeq sb, {r2, r3, r8, sb, sl, sp, pc}                      |     __asm ("stmdaeq sb, {r2, r3, r8, sb, sl, sp, pc}");
    0x08011190 str r0, [r4, 0x190]                                           |     *((r4 + 0x190)) = r0;
    0x08011194 b 0x80102fc                                                   |     goto label_4;
                                                                             | label_29:
    0x08011198 cmp fp, 1                                                     |     
                                                                             |     if (fp != 1) {
    0x0801119c bne 0x80102a0                                                 |         goto label_5;
                                                                             |     }
    0x080111a0 stmdaeq r5, {r2, r3, r4, r5, r6, r7, sb, fp, ip, sp}          |     __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, r7, sb, fp, ip, sp}");
    0x080111a4 stmdaeq r5, {r2, r3, r4, r5, r6, r7, sb, fp, ip, sp}          |     __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, r7, sb, fp, ip, sp}");
    0x080111a8 stmdaeq sb, {r4, r7, sb, sl, sp, pc}                          |     __asm ("stmdaeq sb, {r4, r7, sb, sl, sp, pc}");
    0x080111ac b 0x80102a0                                                   |     goto label_5;
                                                                             | label_24:
    0x080111c0 ldr r1, [pc, -0x220]                                          |     r1 = loc..LANCHOR1;
    0x080111c4 ldr r0, [pc, -0x288]                                          |     r0 = loc..LANCHOR2;
    0x080111c8 stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}                      |     __asm ("stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}");
    0x080111cc cmp r0, 0                                                     |     
                                                                             |     if (r0 == 0) {
    0x080111d0 beq 0x8010188                                                 |         goto label_2;
                                                                             |     }
    0x080111d4 stmdaeq r5, {r3, r4, r5, r6, r7, r8, fp, ip, sp}              |     __asm ("stmdaeq r5, {r3, r4, r5, r6, r7, r8, fp, ip, sp}");
    0x080111d8 stmdaeq r5, {r3, r4, r5, r6, r7, r8, fp, ip, sp}              |     __asm ("stmdaeq r5, {r3, r4, r5, r6, r7, r8, fp, ip, sp}");
    0x080111dc stmdaeq sb, {r4, r7, sb, sl, sp, pc}                          |     __asm ("stmdaeq sb, {r4, r7, sb, sl, sp, pc}");
    0x080111e0 b 0x8010188                                                   |     goto label_2;
                                                                             | label_25:
    0x08011208 ldr r1, [pc, -0x268]                                          |     r1 = loc..LANCHOR1;
    0x0801120c ldr r0, [pc, -0x2c8]                                          |     r0 = loc..LANCHOR2;
    0x08011210 stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}                      |     __asm ("stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}");
    0x08011214 cmp r0, 0                                                     |     
                                                                             |     if (r0 == 0) {
    0x08011218 beq 0x8010188                                                 |         goto label_2;
                                                                             |     }
    0x0801121c stmdaeq r5, {r3, r6, sb, fp, ip, sp}                          |     __asm ("stmdaeq r5, {r3, r6, sb, fp, ip, sp}");
    0x08011220 stmdaeq r5, {r3, r6, sb, fp, ip, sp}                          |     __asm ("stmdaeq r5, {r3, r6, sb, fp, ip, sp}");
    0x08011224 stmdaeq sb, {r4, r7, sb, sl, sp, pc}                          |     __asm ("stmdaeq sb, {r4, r7, sb, sl, sp, pc}");
    0x08011228 b 0x8010188                                                   |     goto label_2;
                                                                             | label_34:
    0x08011250 ldr r1, [pc, -0x300]                                          |     r1 = loc..LANCHOR1;
    0x08011254 ldr r0, [pc, -0x308]                                          |     r0 = loc..LANCHOR2;
    0x08011258 stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}                      |     __asm ("stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}");
    0x0801125c cmp r0, 0                                                     |     
                                                                             |     if (r0 != 0) {
    0x08011260 bne 0x80115a0                                                 |         goto label_35;
                                                                             |     }
                                                                             | label_8:
    0x08011264 mvn r0, 0x4e                                                  |     r0 = ~0x4e;
    0x08011268 b 0x8010158                                                   |     goto label_6;
                                                                             | label_32:
    0x0801126c ldr r1, [pc, -0x31c]                                          |     r1 = loc..LANCHOR1;
    0x08011270 ldr r0, [pc, -0x31c]                                          |     r0 = loc..LANCHOR2;
    0x08011274 stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}                      |     __asm ("stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}");
    0x08011278 cmp r0, 0                                                     |     
                                                                             |     if (r0 == 0) {
    0x0801127c beq 0x8010154                                                 |         goto label_7;
                                                                             |     }
    0x08011280 stmdaeq r5, {r2, r3, r4, r6, sl, fp, ip, sp}                  |     __asm ("stmdaeq r5, {r2, r3, r4, r6, sl, fp, ip, sp}");
    0x08011284 stmdaeq r5, {r2, r3, r4, r6, sl, fp, ip, sp}                  |     __asm ("stmdaeq r5, {r2, r3, r4, r6, sl, fp, ip, sp}");
    0x08011288 stmdaeq sb, {r4, r7, sb, sl, sp, pc}                          |     __asm ("stmdaeq sb, {r4, r7, sb, sl, sp, pc}");
    0x0801128c b 0x8010154                                                   |     goto label_7;
                                                                             | label_35:
    0x080115a0 ldr r1, [r4, 0x10]                                            |     r1 = *((r4 + 0x10));
    0x080115a4 stmdaeq r5, {r7, sl, fp, ip, sp}                              |     __asm ("stmdaeq r5, {r7, sl, fp, ip, sp}");
    0x080115a8 stmdaeq r5, {r7, sl, fp, ip, sp}                              |     __asm ("stmdaeq r5, {r7, sl, fp, ip, sp}");
    0x080115ac stmdaeq sb, {r4, r7, sb, sl, sp, pc}                          |     __asm ("stmdaeq sb, {r4, r7, sb, sl, sp, pc}");
    0x080115b0 b 0x8011264                                                   |     goto label_8;
                                                                             | label_20:
    0x080115e8 cmp r6, 0                                                     |     
                                                                             |     if (r6 != 0) {
    0x080115ec moveq sb, r6                                                  |         sb = r6;
                                                                             |     }
                                                                             |     if (r6 == 0) {
    0x080115f0 moveq r6, r8                                                  |         r6 = r8;
                                                                             |         goto label_36;
                                                                             |     }
                                                                             |     if (r6 != 0) {
                                                                             | label_36:
    0x080115f4 bne 0x801019c                                                 |         goto label_9;
                                                                             |     }
    0x080115f8 b 0x80101a0                                                   |     goto label_10;
                                                                             | label_28:
    0x0801160c stmdaeq r5, {r2, r4, r5, r7, sb, fp, ip, sp}                  |     __asm ("stmdaeq r5, {r2, r4, r5, r7, sb, fp, ip, sp}");
    0x08011610 stmdaeq r5, {r2, r4, r5, r7, sb, fp, ip, sp}                  |     __asm ("stmdaeq r5, {r2, r4, r5, r7, sb, fp, ip, sp}");
    0x08011614 stmdaeq sb, {r4, r7, sb, sl, sp, pc}                          |     __asm ("stmdaeq sb, {r4, r7, sb, sl, sp, pc}");
    0x08011618 b 0x8010280                                                   |     goto label_11;
                                                                             | label_30:
    0x0801161c stmdaeq r5, {r2, r6, r8, sb, fp, ip, sp}                      |     __asm ("stmdaeq r5, {r2, r6, r8, sb, fp, ip, sp}");
    0x08011620 stmdaeq r5, {r2, r6, r8, sb, fp, ip, sp}                      |     __asm ("stmdaeq r5, {r2, r6, r8, sb, fp, ip, sp}");
    0x08011624 mov r2, 1                                                     |     r2 = 1;
    0x08011628 strb r2, [r3, 2]                                              |     *((r3 + 2)) = r2;
    0x0801162c stmdaeq sb, {r4, r7, sb, sl, sp, pc}                          |     __asm ("stmdaeq sb, {r4, r7, sb, sl, sp, pc}");
    0x08011630 b 0x80102c0                                                   |     goto label_12;
                                                                             | label_22:
    0x08011634 mov r1, r6                                                    |     r1 = r6;
    0x08011638 stmdaeq r5, {r2, r5, r7, r8, fp, ip, sp}                      |     __asm ("stmdaeq r5, {r2, r5, r7, r8, fp, ip, sp}");
    0x0801163c stmdaeq r5, {r2, r5, r7, r8, fp, ip, sp}                      |     __asm ("stmdaeq r5, {r2, r5, r7, r8, fp, ip, sp}");
    0x08011640 stmdaeq sb, {r4, r7, sb, sl, sp, pc}                          |     __asm ("stmdaeq sb, {r4, r7, sb, sl, sp, pc}");
    0x08011644 b 0x8010188                                                   |     goto label_2;
                                                                             | label_26:
    0x08011648 stmdaeq r5, {r7, sb, fp, ip, sp}                              |     __asm ("stmdaeq r5, {r7, sb, fp, ip, sp}");
    0x0801164c stmdaeq r5, {r7, sb, fp, ip, sp}                              |     __asm ("stmdaeq r5, {r7, sb, fp, ip, sp}");
    0x08011650 stmdaeq sb, {r4, r7, sb, sl, sp, pc}                          |     __asm ("stmdaeq sb, {r4, r7, sb, sl, sp, pc}");
    0x08011654 b 0x8010188                                                   |     goto label_2;
                                                                             | label_21:
    0x08011698 stmdaeq r5, {r2, r3, r6, sb, ip, sp}                          |     __asm ("stmdaeq r5, {r2, r3, r6, sb, ip, sp}");
    0x0801169c stmdaeq r5, {r2, r3, r6, sb, ip, sp}                          |     __asm ("stmdaeq r5, {r2, r3, r6, sb, ip, sp}");
    0x080116a0 mov r3, 0                                                     |     r3 = 0;
    0x080116a4 str r3, [sp, 4]                                               |     var_4h = r3;
    0x080116a8 stmdaeq sb, {r4, r7, sb, sl, sp, pc}                          |     __asm ("stmdaeq sb, {r4, r7, sb, sl, sp, pc}");
    0x080116ac ldr r3, [sp, 4]                                               |     r3 = var_4h;
    0x080116b0 b 0x8010144                                                   |     goto label_13;
    0x080116b4 stmdaeq r5, {r2, r3, r5, r6, r7, r8, ip, sp}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, ip, sp}");
    0x080116b8 stmdaeq r5, {r2, r3, r5, r6, r7, r8, ip, sp}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, ip, sp}");
    0x080116bc stmdaeq sb, {r4, r7, sb, sl, sp, pc}                          |     __asm ("stmdaeq sb, {r4, r7, sb, sl, sp, pc}");
    0x080116c0 b 0x8010174                                                   |     goto label_14;
                                                                             | }
    ; assembly                                                           | /* r2dec pseudo code output */
                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/fs/cifs/cifs.ko @ 0x8025d20 */
                                                                         | #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;
    0x08025d20 push {r4, r5, r6, r7, lr}                                 |     
    0x08025d24 mov r4, r0                                                |     r4 = r0;
    0x08025d28 sub sp, sp, 0x14                                          |     
    0x08025d2c mov r3, sp                                                |     r3 = sp;
    0x08025d30 bic r3, r3, 0x1fc0                                        |     r3 = BIT_MASK (r3, 0x1fc0);
    0x08025d34 bic r3, r3, 0x3f                                          |     r3 = BIT_MASK (r3, 0x3f);
    0x08025d38 ldr r2, [r3, 4]                                           |     r2 = *((r3 + 4));
    0x08025d3c add r2, r2, 1                                             |     r2++;
    0x08025d40 str r2, [r3, 4]                                           |     *((r3 + 4)) = r2;
    0x08025d44 ldr r3, [r0, 0x44]                                        |     r3 = *((r0 + 0x44));
    0x08025d48 sub r3, r3, 4                                             |     r3 -= 4;
    0x08025d4c cmp r3, 0x1c                                              |     
                                                                         |     if (r3 > 0x1c) {
                                                                         |         /* switch table (29 cases) at 0x8025d58 */
    0x08025d50 ldrls pc, [pc, r3, lsl 2]                                 |         offset_0 = r3 << 2;
                                                                         |         pc = *((pc + offset_0));
                                                                         |     }
    0x08025d54 b 0x8025dcc                                               |     
    0x08025dcc ldr r3, [r0, 0x48]                                        |     r3 = *((r0 + 0x48));
    0x08025dd0 tst r3, 2                                                 |     
                                                                         |     if ((r3 & 2) == 0) {
    0x08025dd4 bne 0x8025df8                                             |         
    0x08025dd8 ldrd r2, r3, [r0]                                         |         __asm ("ldrd r2, r3, [r0]");
    0x08025ddc str r3, [r2, 4]                                           |         *((r2 + 4)) = r3;
    0x08025de0 str r2, [r3]                                              |         *(r3) = r2;
    0x08025de4 str r0, [r4]                                              |         *(r4) = r0;
    0x08025de8 str r0, [r4, 4]                                           |         *((r4 + 4)) = r0;
    0x08025dec ldr r3, [r0, 0x48]                                        |         r3 = *((r0 + 0x48));
    0x08025df0 orr r3, r3, 2                                             |         r3 |= 2;
    0x08025df4 str r3, [r0, 0x48]                                        |         *((r0 + 0x48)) = r3;
                                                                         |     }
    0x08025df8 cmp r1, 0                                                 |     
                                                                         |     if (r1 == 0) {
    0x08025dfc beq 0x8025ea4                                             |         goto label_2;
                                                                         |     }
    0x08025e00 ldr r5, [r1, 0x30]                                        |     r5 = *((r1 + 0x30));
    0x08025e04 stmdaeq r5, {r2, r3, r4, r5, r8, sb, sl, fp, lr}          |     __asm ("stmdaeq r5, {r2, r3, r4, r5, r8, sb, sl, fp, lr}");
    0x08025e08 stmdaeq r5, {r2, r3, r4, r5, r8, sb, sl, fp, lr}          |     __asm ("stmdaeq r5, {r2, r3, r4, r5, r8, sb, sl, fp, lr}");
    0x08025e0c cmp r5, 0                                                 |     
    0x08025e10 moveq r5, r3                                              |     r5 = r3;
                                                                         |     while (1) {
    0x08025e14 ldr r1, [pc, 0xd8]                                        |         r1 = *(0x8025ef0);
    0x08025e18 ldr r0, [pc, 0xd8]                                        |         r0 = "cifs_remap_file_range";
    0x08025e1c stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}                  |         __asm ("stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}");
    0x08025e20 cmp r0, 0                                                 |         
                                                                         |         if (r0 != 0) {
    0x08025e24 bne 0x8025ecc                                             |             goto label_3;
                                                                         |         }
                                                                         | label_1:
    0x08025e28 mvn r5, 4                                                 |         r5 = ~4;
    0x08025e2c b 0x8025e70                                               |         
    0x08025e70 mov r3, sp                                                |         r3 = sp;
    0x08025e74 bic r3, r3, 0x1fc0                                        |         r3 = BIT_MASK (r3, 0x1fc0);
    0x08025e78 bic r3, r3, 0x3f                                          |         r3 = BIT_MASK (r3, 0x3f);
    0x08025e7c ldr r2, [r3, 4]                                           |         r2 = *((r3 + 4));
    0x08025e80 sub r2, r2, 1                                             |         r2--;
    0x08025e84 str r2, [r3, 4]                                           |         *((r3 + 4)) = r2;
    0x08025e88 cmp r2, 0                                                 |         
                                                                         |         if (r2 == 0) {
    0x08025e8c beq 0x8025eb0                                             |             goto label_4;
                                                                         |         }
                                                                         | label_0:
    0x08025e90 mov r0, r4                                                |         r0 = r4;
    0x08025e94 stmdaeq r2, {r2, r3, r7, r8, sb, fp, ip, lr}              |         __asm ("stmdaeq r2, {r2, r3, r7, r8, sb, fp, ip, lr}");
    0x08025e98 mov r0, r5                                                |         r0 = r5;
    0x08025e9c add sp, sp, 0x14                                          |         
    0x08025ea0 pop {r4, r5, r6, r7, pc}                                  |         
                                                                         | label_2:
    0x08025ea4 stmdaeq r5, {r2, r3, r4, r5, r8, sb, sl, fp, lr}          |         __asm ("stmdaeq r5, {r2, r3, r4, r5, r8, sb, sl, fp, lr}");
    0x08025ea8 stmdaeq r5, {r2, r3, r4, r5, r8, sb, sl, fp, lr}          |         __asm ("stmdaeq r5, {r2, r3, r4, r5, r8, sb, sl, fp, lr}");
    0x08025eac b 0x8025e14                                               |         
                                                                         |     }
                                                                         | label_4:
    0x08025eb0 ldr r3, [r3]                                              |     r3 = *(r3);
    0x08025eb4 tst r3, 2                                                 |     
                                                                         |     if ((r3 & 2) == 0) {
    0x08025eb8 beq 0x8025e90                                             |         goto label_0;
                                                                         |     }
    0x08025ebc stmdaeq sb, {r5, r6, sb, sl, sp, pc}                      |     __asm ("stmdaeq sb, {r5, r6, sb, sl, sp, pc}");
    0x08025ec0 b 0x8025e90                                               |     goto label_0;
                                                                         | label_3:
    0x08025ecc ldr r3, [r4, 0x44]                                        |     r3 = *((r4 + 0x44));
    0x08025ed0 mov r1, r5                                                |     r1 = r5;
    0x08025ed4 ldrd r6, r7, [r4, 0x10]                                   |     __asm ("ldrd r6, r7, [r4, 0x10]");
    0x08025ed8 stmdaeq r5, {r2, ip, lr}                                  |     __asm ("stmdaeq r5, {r2, ip, lr}");
    0x08025edc stmdaeq r5, {r2, ip, lr}                                  |     __asm ("stmdaeq r5, {r2, ip, lr}");
    0x08025ee0 ldr r2, [pc, 0xc]                                         |     r2 = *(0x8025ef0);
    0x08025ee4 str r3, [sp, 8]                                           |     var_8h = r3;
    0x08025ee8 strd r6, r7, [sp]                                         |     __asm ("strd r6, r7, [sp]");
    0x08025eec stmdaeq sb, {r4, r7, sb, sl, sp, pc}                      |     __asm ("stmdaeq sb, {r4, r7, sb, sl, sp, pc}");
    0x08025ef0 b 0x8025e28                                               |     goto label_1;
                                                                         | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/fs/cifs/cifs.ko @ 0x801e56c */
                                                                     | #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;
    0x0801e56c push {r4, r5, r6, r7, lr}                             |     
    0x0801e570 mov r4, r1                                            |     r4 = r1;
    0x0801e574 mov r5, r0                                            |     r5 = r0;
    0x0801e578 mov r1, 0                                             |     r1 = 0;
    0x0801e57c sub sp, sp, 0x14                                      |     
    0x0801e580 mov r7, r2                                            |     r7 = r2;
    0x0801e584 mov r2, 0x78                                          |     r2 = 0x78;
    0x0801e588 stmdaeq sb, {r2, r4, r5, r8, sb, sl, sp, pc}          |     __asm ("stmdaeq sb, {r2, r4, r5, r8, sb, sl, sp, pc}");
    0x0801e58c ldr r2, [r4, 0x4c]                                    |     r2 = *((r4 + 0x4c));
    0x0801e590 ldr r3, [r4, 0x50]                                    |     r3 = *((r4 + 0x50));
    0x0801e594 mov r6, sp                                            |     r6 = sp;
    0x0801e598 strd r2, r3, [r5, 8]                                  |     __asm ("strd r2, r3, [r5, 8]");
    0x0801e59c mov r0, r6                                            |     r0 = r6;
    0x0801e5a0 ldr r3, [r4, 8]                                       |     r3 = *((r4 + 8));
    0x0801e5a4 ldr r2, [r4, 0xc]                                     |     r2 = *((r4 + 0xc));
    0x0801e5a8 str r2, [r5, 0x1c]                                    |     *((r5 + 0x1c)) = r2;
    0x0801e5ac str r3, [r5, 0x18]                                    |     *((r5 + 0x18)) = r3;
    0x0801e5b0 ldr r3, [r4]                                          |     r3 = *(r4);
    0x0801e5b4 ldr r2, [r4, 4]                                       |     r2 = *((r4 + 4));
    0x0801e5b8 str r2, [r5, 0x14]                                    |     *((r5 + 0x14)) = r2;
    0x0801e5bc str r3, [r5, 0x10]                                    |     *((r5 + 0x10)) = r3;
    0x0801e5c0 ldr r2, [r4, 0x18]                                    |     r2 = *((r4 + 0x18));
    0x0801e5c4 ldr r3, [r4, 0x1c]                                    |     r3 = *((r4 + 0x1c));
    0x0801e5c8 stmdaeq r2, {r2, r4, fp, lr}                          |     __asm ("stmdaeq r2, {r2, r4, fp, lr}");
    0x0801e5cc add ip, r5, 0x40                                      |     
    0x0801e5d0 ldm r6, {r0, r1, r2, r3}                              |     r0 = *(r6);
                                                                     |     r1 = *((r6 + 4));
                                                                     |     r2 = *((r6 + 8));
                                                                     |     r3 = *((r6 + 12));
    0x0801e5d4 stm ip, {r0, r1, r2, r3}                              |     *(ip) = r0;
                                                                     |     *((ip + 4)) = r1;
                                                                     |     *((ip + 8)) = r2;
                                                                     |     *((ip + 12)) = r3;
    0x0801e5d8 mov r0, r6                                            |     r0 = r6;
    0x0801e5dc ldr r2, [r4, 0x20]                                    |     r2 = *((r4 + 0x20));
    0x0801e5e0 ldr r3, [r4, 0x24]                                    |     r3 = *((r4 + 0x24));
    0x0801e5e4 stmdaeq r2, {r2, r4, fp, lr}                          |     __asm ("stmdaeq r2, {r2, r4, fp, lr}");
    0x0801e5e8 add ip, r5, 0x50                                      |     
    0x0801e5ec ldm r6, {r0, r1, r2, r3}                              |     r0 = *(r6);
                                                                     |     r1 = *((r6 + 4));
                                                                     |     r2 = *((r6 + 8));
                                                                     |     r3 = *((r6 + 12));
    0x0801e5f0 stm ip, {r0, r1, r2, r3}                              |     *(ip) = r0;
                                                                     |     *((ip + 4)) = r1;
                                                                     |     *((ip + 8)) = r2;
                                                                     |     *((ip + 12)) = r3;
    0x0801e5f4 mov r0, r6                                            |     r0 = r6;
    0x0801e5f8 ldr r2, [r4, 0x10]                                    |     r2 = *((r4 + 0x10));
    0x0801e5fc ldr r3, [r4, 0x14]                                    |     r3 = *((r4 + 0x14));
    0x0801e600 stmdaeq r2, {r2, r4, fp, lr}                          |     __asm ("stmdaeq r2, {r2, r4, fp, lr}");
    0x0801e604 add ip, r5, 0x60                                      |     
    0x0801e608 ldm r6, {r0, r1, r2, r3}                              |     r0 = *(r6);
                                                                     |     r1 = *((r6 + 4));
                                                                     |     r2 = *((r6 + 8));
                                                                     |     r3 = *((r6 + 12));
    0x0801e60c stm ip, {r0, r1, r2, r3}                              |     *(ip) = r0;
                                                                     |     *((ip + 4)) = r1;
                                                                     |     *((ip + 8)) = r2;
                                                                     |     *((ip + 12)) = r3;
    0x0801e610 ldr r3, [r4, 0x54]                                    |     r3 = *((r4 + 0x54));
    0x0801e614 ubfx r3, r3, 0, 0xc                                   |     r3 = (r3 >> 0) & ((1 << 0xc) - 1);
    0x0801e618 strh r3, [r5, 0x30]                                   |     *((r5 + 0x30)) = r3;
    0x0801e61c ldr r2, [r4, 0x38]                                    |     r2 = *((r4 + 0x38));
    0x0801e620 sub r2, r2, 1                                         |     r2--;
    0x0801e624 cmp r2, 5                                             |     
                                                                     |     if (r2 > 5) {
                                                                     |         /* switch table (6 cases) at 0x801e630 */
    0x0801e628 ldrls pc, [pc, r2, lsl 2]                             |         offset_0 = r2 << 2;
                                                                     |         pc = *((pc + offset_0));
                                                                     |     }
    0x0801e62c b 0x801e770                                           |     goto label_1;
                                                                     | label_0:
    0x0801e65c ldr r3, [r7, 0x20]                                    |     r3 = *((r7 + 0x20));
    0x0801e660 str r3, [r5, 0x28]                                    |     *((r5 + 0x28)) = r3;
    0x0801e664 ldr r3, [r7, 0x34]                                    |     r3 = *((r7 + 0x34));
    0x0801e668 ands r3, r3, 0x400                                    |     r3 &= 0x400;
                                                                     |     if (r3 != r3) {
    0x0801e66c bne 0x801e688                                         |         goto label_2;
                                                                     |     }
    0x0801e670 ldr r1, [r4, 0x28]                                    |     r1 = *((r4 + 0x28));
    0x0801e674 mvn r0, 1                                             |     r0 = ~1;
    0x0801e678 ldr r2, [r4, 0x2c]                                    |     r2 = *((r4 + 0x2c));
    0x0801e67c cmp r0, r1                                            |     
    0x0801e680 sbcs r3, r3, r2                                       |     __asm ("sbcs r3, r3, r2");
    0x0801e684 bhs 0x801e734                                         |     
                                                                     |     while (1) {
                                                                     | label_2:
    0x0801e688 ldr r3, [r7, 0x24]                                    |         r3 = *((r7 + 0x24));
    0x0801e68c str r3, [r5, 0x2c]                                    |         *((r5 + 0x2c)) = r3;
    0x0801e690 ldr r3, [r7, 0x34]                                    |         r3 = *((r7 + 0x34));
    0x0801e694 ands r3, r3, 0x800                                    |         r3 &= 0x800;
                                                                     |         if (r3 == r3) {
    0x0801e698 bne 0x801e6b4                                         |             
    0x0801e69c ldr r1, [r4, 0x30]                                    |             r1 = *((r4 + 0x30));
    0x0801e6a0 mvn r0, 1                                             |             r0 = ~1;
    0x0801e6a4 ldr r2, [r4, 0x34]                                    |             r2 = *((r4 + 0x34));
    0x0801e6a8 cmp r0, r1                                            |             
    0x0801e6ac sbcs r3, r3, r2                                       |             __asm ("sbcs r3, r3, r2");
                                                                     |             if (r0 >= r1) {
    0x0801e6b0 bhs 0x801e74c                                         |                 goto label_3;
                                                                     |             }
                                                                     |         }
    0x0801e6b4 ldr r3, [r4, 0x5c]                                    |         r3 = *((r4 + 0x5c));
    0x0801e6b8 str r3, [r5, 0x38]                                    |         *((r5 + 0x38)) = r3;
    0x0801e6bc add sp, sp, 0x14                                      |         
    0x0801e6c0 pop {r4, r5, r6, r7, pc}                              |         
    0x0801e734 stmdaeq sb, {r8, sb, sl, sp, pc}                      |         __asm ("stmdaeq sb, {r8, sb, sl, sp, pc}");
    0x0801e738 stmdaeq sb, {r8, sb, sl, sp, pc}                      |         __asm ("stmdaeq sb, {r8, sb, sl, sp, pc}");
    0x0801e73c stmdaeq sb, {r6, r7, r8, sb, sl, sp, pc}              |         __asm ("stmdaeq sb, {r6, r7, r8, sb, sl, sp, pc}");
    0x0801e740 cmn r0, 1                                             |         
                                                                     |         if (r0 == 1) {
    0x0801e744 strne r0, [r5, 0x28]                                  |             *((r5 + 0x28)) = r0;
                                                                     |         }
    0x0801e748 b 0x801e688                                           |         
                                                                     |     }
                                                                     | label_3:
    0x0801e74c stmdaeq sb, {r8, sb, sl, sp, pc}                      |     __asm ("stmdaeq sb, {r8, sb, sl, sp, pc}");
    0x0801e750 stmdaeq sb, {r8, sb, sl, sp, pc}                      |     __asm ("stmdaeq sb, {r8, sb, sl, sp, pc}");
    0x0801e754 stmdaeq sb, {r2, r6, r7, r8, sb, sl, sp, pc}          |     __asm ("stmdaeq sb, {r2, r6, r7, r8, sb, sl, sp, pc}");
    0x0801e758 cmn r0, 1                                             |     
                                                                     |     if (r0 == 1) {
    0x0801e75c strne r0, [r5, 0x2c]                                  |         *((r5 + 0x2c)) = r0;
                                                                     |     }
    0x0801e760 ldr r3, [r4, 0x5c]                                    |     r3 = *((r4 + 0x5c));
    0x0801e764 str r3, [r5, 0x38]                                    |     *((r5 + 0x38)) = r3;
    0x0801e768 add sp, sp, 0x14                                      |     
    0x0801e76c pop {r4, r5, r6, r7, pc}                              |     
                                                                     | label_1:
    0x0801e770 mvn r3, r3, lsl 17                                    |     r3 = ~r3;
    0x0801e774 mov r2, 8                                             |     r2 = 8;
    0x0801e778 str r2, [r5, 0x3c]                                    |     *((r5 + 0x3c)) = r2;
    0x0801e77c mvn r3, r3, lsr 17                                    |     r3 = ~r3;
    0x0801e780 strh r3, [r5, 0x30]                                   |     *((r5 + 0x30)) = r3;
    0x0801e784 b 0x801e65c                                           |     goto label_0;
                                                                     | }
    ; assembly                                                                   | /* r2dec pseudo code output */
                                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/fs/cifs/cifs.ko @ 0x8042188 */
                                                                                 | #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_e0h, int32_t arg_e4h, int32_t arg_e8h, int32_t arg_ech, int32_t arg_f4h, int32_t arg_f8h, int32_t arg1, int32_t arg2) {
                                                                                 |     int32_t var_2ch;
                                                                                 |     int32_t var_30h;
                                                                                 |     int32_t var_34h;
                                                                                 |     int32_t var_38h;
                                                                                 |     int32_t var_47h;
                                                                                 |     int32_t var_58h;
                                                                                 |     int32_t var_60h;
                                                                                 |     int32_t var_64h;
                                                                                 |     int32_t var_68h;
                                                                                 |     int32_t var_70h;
                                                                                 |     int32_t var_bch;
                                                                                 |     r0 = arg1;
                                                                                 |     r1 = arg2;
    0x08042188 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                         |     
    0x0804218c mov r7, r3                                                        |     r7 = r3;
    0x08042190 stmdaeq r5, {r2, r4, sb, ip}                                      |     __asm ("stmdaeq r5, {r2, r4, sb, ip}");
    0x08042194 stmdaeq r5, {r2, r4, sb, ip}                                      |     __asm ("stmdaeq r5, {r2, r4, sb, ip}");
    0x08042198 sub sp, sp, 0xbc                                                  |     
    0x0804219c mov r6, r1                                                        |     r6 = r1;
    0x080421a0 add sb, sp, 0x58                                                  |     sb += var_58h;
    0x080421a4 mov r5, r2                                                        |     r5 = r2;
    0x080421a8 stmdaeq sb, {r2, r3, r4, r5, r7, sb, sl, sp, pc}                  |     __asm ("stmdaeq sb, {r2, r3, r4, r5, r7, sb, sl, sp, pc}");
    0x080421ac stmdaeq sb, {r2, r3, r4, r5, r7, sb, sl, sp, pc}                  |     __asm ("stmdaeq sb, {r2, r3, r4, r5, r7, sb, sl, sp, pc}");
    0x080421b0 str r0, [sp, 0x34]                                                |     var_34h = r0;
    0x080421b4 ldm r3, {r0, r1}                                                  |     r0 = *(r3);
                                                                                 |     r1 = *((r3 + 4));
    0x080421b8 stm sb, {r0, r1}                                                  |     *(sb) = r0;
                                                                                 |     *((sb + 4)) = r1;
    0x080421bc ldr r8, [r6, 0x24]                                                |     r8 = *((r6 + 0x24));
    0x080421c0 mov r1, 0xb20                                                     |     r1 = 0xb20;
    0x080421c4 ldr r0, [r2, 0x24]                                                |     r0 = *((r2 + 0x24));
    0x080421c8 mov sl, 0                                                         |     sl = 0;
    0x080421cc ldrh fp, [sp, 0xec]                                               |     fp = *(arg_ech);
    0x080421d0 str r8, [sp, 0x30]                                                |     var_30h = r8;
    0x080421d4 strb sl, [sp, 0x47]                                               |     var_47h = sl;
    0x080421d8 stmdaeq sb, {r2, r4, r5, r6, sb, sl, sp, pc}                      |     __asm ("stmdaeq sb, {r2, r4, r5, r6, sb, sl, sp, pc}");
    0x080421dc subs r4, r0, 0                                                    |     r4 = r0 - 0;
                                                                                 |     if (r4 == r0) {
    0x080421e0 beq 0x8042db0                                                     |         goto label_5;
                                                                                 |     }
    0x080421e4 mov r0, r8                                                        |     r0 = r8;
    0x080421e8 stmdaeq r2, {r2, r3, r4, r6, r7, r8, sb, fp, sp, lr}              |     __asm ("stmdaeq r2, {r2, r3, r4, r6, r7, r8, sb, fp, sp, lr}");
    0x080421ec str r0, [sp, 0x2c]                                                |     var_2ch = r0;
    0x080421f0 mov r0, r6                                                        |     r0 = r6;
    0x080421f4 stmdaeq r3, {r4, r5, r7, r8, sb, ip, sp, pc}                      |     __asm ("stmdaeq r3, {r4, r5, r7, r8, sb, ip, sp, pc}");
    0x080421f8 subs r0, r0, sl                                                   |     r0 -= sl;
    0x080421fc ldr r3, [sp, 0xf8]                                                |     r3 = *(arg_f8h);
    0x08042200 mov r2, 0                                                         |     r2 = 0;
                                                                                 |     if (r0 == r0) {
    0x08042204 movne r0, 1                                                       |         r0 = 1;
                                                                                 |     }
    0x08042208 str sl, [sp, 0x68]                                                |     var_68h = sl;
    0x0804220c cmp r3, sl                                                        |     
    0x08042210 lsl r3, r0, 0xb                                                   |     r3 = r0 << 0xb;
    0x08042214 add sl, r4, 0x38                                                  |     sl = r4 + 0x38;
    0x08042218 str r3, [sp, 0x38]                                                |     var_38h = r3;
    0x0804221c mov r3, 0                                                         |     r3 = 0;
    0x08042220 strd r2, r3, [sp, 0x60]                                           |     __asm ("strd r2, r3, [var_60h]");
                                                                                 |     if (r3 != sl) {
    0x08042224 beq 0x8042264                                                     |         
    0x08042228 ldr r3, [sp, 0xf4]                                                |         r3 = *(arg_f4h);
    0x0804222c sub r7, r3, 2                                                     |         r7 = r3 - 2;
    0x08042230 cmp r7, 9                                                         |         
                                                                                 |         if (r7 > 9) {
                                                                                 |             /* switch table (10 cases) at 0x804223c */
    0x08042234 ldrls pc, [pc, r7, lsl 2]                                         |             offset_0 = r7 << 2;
                                                                                 |             pc = *((pc + offset_0));
                                                                                 |         }
    0x08042238 b 0x8042a94                                                       |         goto label_6;
                                                                                 |     }
    0x08042264 mov r0, r7                                                        |     r0 = r7;
    0x08042268 mov r1, r5                                                        |     r1 = r5;
    0x0804226c stmdaeq r3, {r2, r4, r5, r6, r7, sl, fp, ip, pc}                  |     __asm ("stmdaeq r3, {r2, r4, r5, r6, r7, sl, fp, ip, pc}");
    0x08042270 subs r7, r0, 0                                                    |     r7 = r0 - 0;
                                                                                 |     if (r7 == r0) {
    0x08042274 beq 0x80424f0                                                     |         goto label_7;
                                                                                 |     }
    0x08042278 ldr r3, [sp, 0xe0]                                                |     r3 = *(arg_e0h);
    0x0804227c cmp r5, 0                                                         |     
    0x08042280 str r3, [r4, 0xc]                                                 |     *((r4 + 0xc)) = r3;
    0x08042284 ldr r3, [sp, 0xe4]                                                |     r3 = *(arg_e4h);
    0x08042288 str r6, [r4]                                                      |     *(r4) = r6;
    0x0804228c str r3, [r4, 8]                                                   |     *((r4 + 8)) = r3;
                                                                                 |     if (r5 != 0) {
    0x08042290 beq 0x80422a4                                                     |         
    0x08042294 mov r0, r5                                                        |         r0 = r5;
    0x08042298 stmdaeq r2, {r3, r4, r5, r8, fp, ip, sp}                          |         __asm ("stmdaeq r2, {r3, r4, r5, r8, fp, ip, sp}");
    0x0804229c cmp r0, 0                                                         |         
                                                                                 |         if (r0 != 0) {
    0x080422a0 bne 0x8042b24                                                     |             goto label_8;
                                                                                 |         }
                                                                                 |     }
    0x080422a4 ldr r3, [sp, 0xe8]                                                |     r3 = *(arg_e8h);
                                                                                 | label_1:
    0x080422a8 str r3, [r4, 0x10]                                                |     *((r4 + 0x10)) = r3;
    0x080422ac add r0, sp, 0x70                                                  |     r0 += var_70h;
    0x080422b0 ldrb r3, [r4, 0x1e]                                               |     r3 = *((r4 + 0x1e));
    0x080422b4 mov ip, 8                                                         |     
    0x080422b8 str r5, [r4, 4]                                                   |     *((r4 + 4)) = r5;
    0x080422bc mov r2, sl                                                        |     r2 = sl;
    0x080422c0 str r0, [r4, 0x18]                                                |     *((r4 + 0x18)) = r0;
    0x080422c4 add r0, r4, 0x8c                                                  |     r0 = r4 + 0x8c;
    0x080422c8 str ip, [r4, 0x3c]                                                |     *((r4 + 0x3c)) = ip;
    0x080422cc bfc r3, 0, 1                                                      |     value_1 = BIT_MASK (1, );
                                                                                 |     value_1 = ~value_1;
                                                                                 |     r3 &= value_1;
    0x080422d0 str r0, [r4, 0x38]                                                |     *((r4 + 0x38)) = r0;
    0x080422d4 mov r0, r6                                                        |     r0 = r6;
    0x080422d8 strb r3, [r4, 0x1e]                                               |     *((r4 + 0x1e)) = r3;
    0x080422dc add r3, sp, 0x47                                                  |     r3 += var_47h;
    0x080422e0 ldr r1, [sp, 0x2c]                                                |     r1 = var_2ch;
    0x080422e4 strh fp, [r4, 0x1c]                                               |     *((r4 + 0x1c)) = fp;
    0x080422e8 stm sp, {r4, r7}                                                  |     *(sp) = r4;
                                                                                 |     *((sp + 4)) = r7;
    0x080422ec stmdaeq r3, {r2, r3, r5, r6, r7, r8, sl, ip, lr, pc}              |     __asm ("stmdaeq r3, {r2, r3, r5, r6, r7, r8, sl, ip, lr, pc}");
    0x080422f0 mov r5, r0                                                        |     r5 = r0;
    0x080422f4 mov r0, r7                                                        |     r0 = r7;
    0x080422f8 stmdaeq sb, {r2, r6, r7, sb, sl, sp, pc}                          |     __asm ("stmdaeq sb, {r2, r6, r7, sb, sl, sp, pc}");
    0x080422fc cmp r5, 0                                                         |     
                                                                                 |     if (r5 == 0) {
    0x08042300 beq 0x8042adc                                                     |         goto label_9;
                                                                                 |     }
    0x08042304 ldr r3, [sp, 0xf4]                                                |     r3 = *(arg_f4h);
    0x08042308 sub r7, r3, 2                                                     |     r7 = r3 - 2;
    0x0804230c mov r0, sl                                                        |     r0 = sl;
    0x08042310 stmdaeq r3, {r3, r5, r6, r7, r8, sb, sl, fp, ip, lr, pc}          |     __asm ("stmdaeq r3, {r3, r5, r6, r7, r8, sb, sl, fp, ip, lr, pc}");
    0x08042314 cmn r5, 0x4e                                                      |     
                                                                                 |     if (r5 == 0x4e) {
    0x08042318 beq 0x80424b0                                                     |         goto label_10;
                                                                                 |     }
    0x0804231c cmp r7, 9                                                         |     
                                                                                 |     if (r7 > 9) {
                                                                                 |         /* switch table (10 cases) at 0x8042328 */
    0x08042320 ldrls pc, [pc, r7, lsl 2]                                         |         offset_2 = r7 << 2;
                                                                                 |         pc = *((pc + offset_2));
                                                                                 |     }
    0x08042324 b 0x804241c                                                       |     
                                                                                 |     while (1) {
    0x0804241c ldr r1, [r4, 0x20]                                                |         r1 = *((r4 + 0x20));
    0x08042420 ldr r0, [sp, 0x60]                                                |         r0 = var_60h;
    0x08042424 stmdaeq r2, {r3, r5, r6, r8, sb, sl, fp, sp}                      |         __asm ("stmdaeq r2, {r3, r5, r6, r8, sb, sl, fp, sp}");
    0x08042428 ldr r1, [r4, 0x28]                                                |         r1 = *((r4 + 0x28));
    0x0804242c ldr r0, [sp, 0x64]                                                |         r0 = var_64h;
    0x08042430 stmdaeq r2, {r3, r5, r6, r8, sb, sl, fp, sp}                      |         __asm ("stmdaeq r2, {r3, r5, r6, r8, sb, sl, fp, sp}");
    0x08042434 ldr r1, [r4, 0x30]                                                |         r1 = *((r4 + 0x30));
    0x08042438 ldr r0, [sp, 0x68]                                                |         r0 = var_68h;
    0x0804243c stmdaeq r2, {r3, r5, r6, r8, sb, sl, fp, sp}                      |         __asm ("stmdaeq r2, {r3, r5, r6, r8, sb, sl, fp, sp}");
    0x08042440 mov r0, r4                                                        |         r0 = r4;
    0x08042444 stmdaeq sb, {r2, r6, r7, sb, sl, sp, pc}                          |         __asm ("stmdaeq sb, {r2, r6, r7, sb, sl, sp, pc}");
                                                                                 | label_2:
    0x08042448 mov r0, r5                                                        |         r0 = r5;
    0x0804244c add sp, sp, 0xbc                                                  |         
    0x08042450 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                          |         
                                                                                 | label_10:
    0x080424b0 stmdaeq r6, {r2, r3, r4, r5, r6, r7, r8, ip, lr, pc}              |         __asm ("stmdaeq r6, {r2, r3, r4, r5, r6, r7, r8, ip, lr, pc}");
    0x080424b4 stmdaeq r6, {r2, r3, r4, r5, r6, r7, r8, ip, lr, pc}              |         __asm ("stmdaeq r6, {r2, r3, r4, r5, r6, r7, r8, ip, lr, pc}");
    0x080424b8 ldrb r2, [r3]                                                     |         r2 = *(r3);
    0x080424bc cmp r2, 0                                                         |         
                                                                                 |         if (r2 == 0) {
    0x080424c0 beq 0x8042db8                                                     |             goto label_11;
                                                                                 |         }
                                                                                 | label_3:
    0x080424c4 ldrb r3, [r6, 0x64a]                                              |         r3 = *((r6 + 0x64a));
    0x080424c8 mvn r5, 0x4d                                                      |         r5 = ~0x4d;
    0x080424cc orr r3, r3, 1                                                     |         r3 |= 1;
    0x080424d0 strb r3, [r6, 0x64a]                                              |         *((r6 + 0x64a)) = r3;
    0x080424d4 b 0x8042504                                                       |         goto label_0;
                                                                                 | label_7:
    0x080424f0 ldr r3, [sp, 0xf4]                                                |         r3 = *(arg_f4h);
    0x080424f4 mov r0, sl                                                        |         r0 = sl;
    0x080424f8 mvn r5, 0xb                                                       |         r5 = ~0xb;
    0x080424fc sub r7, r3, 2                                                     |         r7 = r3 - 2;
    0x08042500 stmdaeq r3, {r3, r5, r6, r7, r8, sb, sl, fp, ip, lr, pc}          |         __asm ("stmdaeq r3, {r3, r5, r6, r7, r8, sb, sl, fp, ip, lr, pc}");
                                                                                 | label_0:
    0x08042504 cmp r7, 9                                                         |         
                                                                                 |         if (r7 > 9) {
                                                                                 |             /* switch table (10 cases) at 0x8042510 */
    0x08042508 ldrls pc, [pc, r7, lsl 2]                                         |             offset_3 = r7 << 2;
                                                                                 |             pc = *((pc + offset_3));
                                                                                 |         }
    0x0804250c b 0x804241c                                                       |         
                                                                                 |     }
                                                                                 | label_6:
    0x08042a94 ldr r1, [pc, 0x35c]                                               |     r1 = *(0x8042df4);
    0x08042a98 stmdaeq r6, {r2, r4, r6, r7, r8, sb, sl, fp, lr, pc}              |     __asm ("stmdaeq r6, {r2, r4, r6, r7, r8, sb, sl, fp, lr, pc}");
    0x08042a9c stmdaeq r6, {r2, r4, r6, r7, r8, sb, sl, fp, lr, pc}              |     __asm ("stmdaeq r6, {r2, r4, r6, r7, r8, sb, sl, fp, lr, pc}");
    0x08042aa0 stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}                          |     __asm ("stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}");
    0x08042aa4 cmp r0, 0                                                         |     
                                                                                 |     if (r0 != 0) {
    0x08042aa8 bne 0x8042dd4                                                     |         goto label_12;
                                                                                 |     }
    0x08042aac ldr r0, [sp, 0xf8]                                                |     r0 = *(arg_f8h);
    0x08042ab0 stmdaeq r1, {r2, r4, r8, sb, fp, pc}                              |     __asm ("stmdaeq r1, {r2, r4, r8, sb, fp, pc}");
    0x08042ab4 mov r0, sl                                                        |     r0 = sl;
    0x08042ab8 stmdaeq r3, {r3, r5, r6, r7, r8, sb, sl, fp, ip, lr, pc}          |     __asm ("stmdaeq r3, {r3, r5, r6, r7, r8, sb, sl, fp, ip, lr, pc}");
                                                                                 |     do {
    0x08042abc mvn r5, 0x15                                                      |         r5 = ~0x15;
    0x08042ac0 b 0x8042504                                                       |         goto label_0;
                                                                                 | label_9:
    0x08042adc mov r1, sl                                                        |         r1 = sl;
    0x08042ae0 mov r0, r6                                                        |         r0 = r6;
    0x08042ae4 stmdaeq r3, {r2, r4, r8, ip, lr}                                  |         __asm ("stmdaeq r3, {r2, r4, r8, ip, lr}");
    0x08042ae8 ldr r3, [sp, 0xf4]                                                |         r3 = *(arg_f4h);
    0x08042aec sub r7, r3, 2                                                     |         r7 = r3 - 2;
    0x08042af0 cmp r7, 9                                                         |         
                                                                                 |         if (r7 > 9) {
                                                                                 |             /* switch table (10 cases) at 0x8042afc */
    0x08042af4 ldrls pc, [pc, r7, lsl 2]                                         |             offset_4 = r7 << 2;
                                                                                 |             pc = *((pc + offset_4));
                                                                                 |         }
    0x08042af8 b 0x8042cc4                                                       |         goto label_13;
                                                                                 | label_8:
    0x08042b24 ldr r3, [sp, 0xe8]                                                |         r3 = *(arg_e8h);
    0x08042b28 orr r3, r3, 0x4000                                                |         r3 |= 0x4000;
    0x08042b2c b 0x80422a8                                                       |         goto label_1;
                                                                                 | label_13:
    0x08042cc4 ldr r1, [pc, 0x12c]                                               |         r1 = *(0x8042df4);
    0x08042cc8 stmdaeq r6, {r2, r4, r6, r7, r8, sb, sl, fp, lr, pc}              |         __asm ("stmdaeq r6, {r2, r4, r6, r7, r8, sb, sl, fp, lr, pc}");
    0x08042ccc stmdaeq r6, {r2, r4, r6, r7, r8, sb, sl, fp, lr, pc}              |         __asm ("stmdaeq r6, {r2, r4, r6, r7, r8, sb, sl, fp, lr, pc}");
    0x08042cd0 stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}                          |         __asm ("stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}");
    0x08042cd4 cmp r0, 0                                                         |         
                                                                                 |         if (r0 != 0) {
    0x08042cd8 bne 0x8042dd4                                                     |             goto label_12;
                                                                                 |         }
                                                                                 | label_4:
    0x08042cdc mov r0, sl                                                        |         r0 = sl;
    0x08042ce0 stmdaeq r3, {r3, r5, r6, r7, r8, sb, sl, fp, ip, lr, pc}          |         __asm ("stmdaeq r3, {r3, r5, r6, r7, r8, sb, sl, fp, ip, lr, pc}");
    0x08042ce4 b 0x8042abc                                                       |         
                                                                                 |     } while (1);
                                                                                 | label_5:
    0x08042db0 mvn r5, 0xb                                                       |     r5 = ~0xb;
    0x08042db4 b 0x8042448                                                       |     goto label_2;
                                                                                 | label_11:
    0x08042db8 add r1, r6, 0x28                                                  |     r1 = r6 + 0x28;
    0x08042dbc stmdaeq r6, {r5, sb, ip, pc}                                      |     __asm ("stmdaeq r6, {r5, sb, ip, pc}");
    0x08042dc0 stmdaeq r6, {r5, sb, ip, pc}                                      |     __asm ("stmdaeq r6, {r5, sb, ip, pc}");
    0x08042dc4 mov r2, 1                                                         |     r2 = 1;
    0x08042dc8 strb r2, [r3]                                                     |     *(r3) = r2;
    0x08042dcc stmdaeq sb, {r4, r7, sb, sl, sp, pc}                              |     __asm ("stmdaeq sb, {r4, r7, sb, sl, sp, pc}");
    0x08042dd0 b 0x80424c4                                                       |     goto label_3;
                                                                                 | label_12:
    0x08042dd4 stmdaeq r6, {sb, ip, pc}                                          |     __asm ("stmdaeq r6, {sb, ip, pc}");
    0x08042dd8 stmdaeq r6, {sb, ip, pc}                                          |     __asm ("stmdaeq r6, {sb, ip, pc}");
    0x08042ddc stmdaeq sb, {r4, r7, sb, sl, sp, pc}                              |     __asm ("stmdaeq sb, {r4, r7, sb, sl, sp, pc}");
    0x08042de0 ldr r3, [sp, 0xf8]                                                |     r3 = *(arg_f8h);
    0x08042de4 cmp r3, 0                                                         |     
                                                                                 |     if (r3 == 0) {
    0x08042de8 beq 0x8042cdc                                                     |         goto label_4;
                                                                                 |     }
    0x08042dec mov r0, r3                                                        |     r0 = r3;
    0x08042df0 stmdaeq r1, {r2, r4, r8, sb, fp, pc}                              |     __asm ("stmdaeq r1, {r2, r4, r8, sb, fp, pc}");
    0x08042df4 b 0x8042cdc                                                       |     goto label_4;
                                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/fs/cifs/cifs.ko @ 0x80394fc */
                                                                 | #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;
    0x080394fc push {r4, r5, r6, lr}                             |     
                                                                 |     if (? != ?) {
    0x08039500 andeq r0, r0, r0                                  |         r0 &= r0;
                                                                 |     }
                                                                 |     if (? != ?) {
    0x08039504 andeq r0, r0, r0                                  |         r0 &= r0;
                                                                 |     }
    0x08039508 str r3, [r0]                                      |     *(r0) = r3;
    0x0803950c mov r6, r1                                        |     r6 = r1;
                                                                 |     if (? != ?) {
    0x08039510 andeq r0, r0, r1                                  |         r0 &= r1;
                                                                 |     }
    0x08039514 mov r4, r2                                        |     r4 = r2;
    0x08039518 ldr r0, [r2]                                      |     r0 = *(r2);
    0x0803951c cmp r3, 0                                         |     
    0x08039520 cmpne r3, 0xc0000016                              |     __asm ("cmpne r3, 0xc0000016");
                                                                 |     if (r3 != 0) {
    0x08039524 beq 0x8039534                                     |         
    0x08039528 ldrh r3, [r2, 0x40]                               |         r3 = *((r2 + 0x40));
    0x0803952c cmp r3, 9                                         |         
                                                                 |         if (r3 == 9) {
    0x08039530 beq 0x80395fc                                     |             goto label_4;
                                                                 |         }
                                                                 |     }
    0x08039534 ldrh r3, [r4, 0xc]                                |     r3 = *((r4 + 0xc));
    0x08039538 cmp r3, 0x10                                      |     
                                                                 |     if (r3 > 0x10) {
                                                                 |         /* switch table (17 cases) at 0x8039544 */
    0x0803953c ldrls pc, [pc, r3, lsl 2]                         |         offset_0 = r3 << 2;
                                                                 |         pc = *((pc + offset_0));
                                                                 |     }
    0x08039540 b 0x803962c                                       |     
                                                                 |     while (r0 == 0) {
                                                                 | label_0:
    0x08039598 ldr r3, [r5]                                      |         r3 = *(r5);
    0x0803959c cmp r3, 0x1000                                    |         
                                                                 |         if (r3 <= 0x1000) {
    0x080395a0 bgt 0x8039604                                     |             
    0x080395a4 cmp r3, 0                                         |             
                                                                 |             if (r3 >= 0) {
    0x080395a8 blt 0x80395d8                                     |                 
    0x080395ac ldr r2, [r6]                                      |                 r2 = *(r6);
    0x080395b0 cmp r2, 0                                         |                 
                                                                 |                 if (r2 < 0) {
    0x080395b4 blt 0x80396b8                                     |                     goto label_5;
                                                                 |                 }
    0x080395b8 cmp r2, 0x20000                                   |                 
                                                                 |                 if (r2 > 0x20000) {
    0x080395bc bgt 0x80396e0                                     |                     goto label_6;
                                                                 |                 }
    0x080395c0 cmp r3, 0                                         |                 
                                                                 |                 if (r3 == 0) {
    0x080395c4 beq 0x80395fc                                     |                     goto label_4;
                                                                 |                 }
    0x080395c8 cmp r2, 0                                         |                 
                                                                 |                 if (r2 == 0) {
    0x080395cc beq 0x80395fc                                     |                     goto label_4;
                                                                 |                 }
    0x080395d0 add r0, r4, r3                                    |                 r0 = r4 + r3;
    0x080395d4 pop {r4, r5, r6, pc}                              |                 
                                                                 |             }
    0x080395d8 ldr r1, [pc, 0x150]                               |             r1 = *(0x803972c);
    0x080395dc ldr r0, [pc, 0x150]                               |             r0 = "cifs_remap_file_range";
    0x080395e0 stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}          |             __asm ("stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}");
    0x080395e4 cmp r0, 0                                         |             
                                                                 |             if (r0 != 0) {
    0x080395e8 bne 0x803971c                                     |                 goto label_7;
                                                                 |             }
                                                                 | label_3:
    0x080395ec mov r3, 0                                         |             r3 = 0;
    0x080395f0 str r3, [r5]                                      |             *(r5) = r3;
                                                                 | label_1:
    0x080395f4 mov r3, 0                                         |             r3 = 0;
    0x080395f8 str r3, [r6]                                      |             *(r6) = r3;
                                                                 | label_4:
    0x080395fc mov r0, 0                                         |             r0 = 0;
    0x08039600 pop {r4, r5, r6, pc}                              |             
                                                                 |         }
    0x08039604 ldr r1, [pc, 0x124]                               |         r1 = *(0x803972c);
    0x08039608 ldr r0, [pc, 0x128]                               |         r0 = .data;
    0x0803960c stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}          |         __asm ("stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}");
    0x08039610 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x08039614 bne 0x8039708                                     |             goto label_8;
                                                                 |         }
                                                                 | label_2:
    0x08039618 mov r3, 0                                         |         r3 = 0;
    0x0803961c mov r0, 0                                         |         r0 = 0;
    0x08039620 str r3, [r6]                                      |         *(r6) = r3;
    0x08039624 str r3, [r5]                                      |         *(r5) = r3;
    0x08039628 pop {r4, r5, r6, pc}                              |         
    0x0803962c ldr r1, [pc, 0xfc]                                |         r1 = *(0x803972c);
    0x08039630 ldr r0, [pc, 0x104]                               |         r0 = .data;
    0x08039634 stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}          |         __asm ("stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}");
    0x08039638 cmp r0, 0                                         |         
    0x0803963c beq 0x8039598                                     |         
                                                                 |     }
    0x08039640 ldrh r1, [r4, 0xc]                                |     r1 = *((r4 + 0xc));
    0x08039644 stmdaeq r6, {r3, r8, pc}                          |     __asm ("stmdaeq r6, {r3, r8, pc}");
    0x08039648 stmdaeq r6, {r3, r8, pc}                          |     __asm ("stmdaeq r6, {r3, r8, pc}");
    0x0803964c stmdaeq sb, {r4, r7, sb, sl, sp, pc}              |     __asm ("stmdaeq sb, {r4, r7, sb, sl, sp, pc}");
    0x08039650 b 0x8039598                                       |     goto label_0;
                                                                 | label_5:
    0x080396b8 ldr r1, [pc, 0x70]                                |     r1 = *(0x803972c);
    0x080396bc ldr r0, [pc, 0x7c]                                |     r0 = .data;
    0x080396c0 stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}          |     __asm ("stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}");
    0x080396c4 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x080396c8 beq 0x80395f4                                     |         goto label_1;
                                                                 |     }
    0x080396cc ldr r1, [r6]                                      |     r1 = *(r6);
    0x080396d0 stmdaeq r6, {r2, r4, r5, r7, r8, pc}              |     __asm ("stmdaeq r6, {r2, r4, r5, r7, r8, pc}");
    0x080396d4 stmdaeq r6, {r2, r4, r5, r7, r8, pc}              |     __asm ("stmdaeq r6, {r2, r4, r5, r7, r8, pc}");
    0x080396d8 stmdaeq sb, {r4, r7, sb, sl, sp, pc}              |     __asm ("stmdaeq sb, {r4, r7, sb, sl, sp, pc}");
    0x080396dc b 0x80395f4                                       |     goto label_1;
                                                                 | label_6:
    0x080396e0 ldr r1, [pc, 0x48]                                |     r1 = *(0x803972c);
    0x080396e4 ldr r0, [pc, 0x58]                                |     r0 = .data;
    0x080396e8 stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}          |     __asm ("stmdaeq sb, {r2, r3, r7, sb, sl, sp, pc}");
    0x080396ec cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x080396f0 beq 0x80395f4                                     |         goto label_1;
                                                                 |     }
    0x080396f4 ldr r1, [r6]                                      |     r1 = *(r6);
    0x080396f8 stmdaeq r6, {r3, r4, r5, r6, r7, r8, pc}          |     __asm ("stmdaeq r6, {r3, r4, r5, r6, r7, r8, pc}");
    0x080396fc stmdaeq r6, {r3, r4, r5, r6, r7, r8, pc}          |     __asm ("stmdaeq r6, {r3, r4, r5, r6, r7, r8, pc}");
    0x08039700 stmdaeq sb, {r4, r7, sb, sl, sp, pc}              |     __asm ("stmdaeq sb, {r4, r7, sb, sl, sp, pc}");
    0x08039704 b 0x80395f4                                       |     goto label_1;
                                                                 | label_8:
    0x08039708 ldr r1, [r5]                                      |     r1 = *(r5);
    0x0803970c stmdaeq r6, {r3, r4, r5, r8, pc}                  |     __asm ("stmdaeq r6, {r3, r4, r5, r8, pc}");
    0x08039710 stmdaeq r6, {r3, r4, r5, r8, pc}                  |     __asm ("stmdaeq r6, {r3, r4, r5, r8, pc}");
    0x08039714 stmdaeq sb, {r4, r7, sb, sl, sp, pc}              |     __asm ("stmdaeq sb, {r4, r7, sb, sl, sp, pc}");
    0x08039718 b 0x8039618                                       |     goto label_2;
                                                                 | label_7:
    0x0803971c ldr r1, [r5]                                      |     r1 = *(r5);
    0x08039720 stmdaeq r6, {r4, r5, r6, r8, pc}                  |     __asm ("stmdaeq r6, {r4, r5, r6, r8, pc}");
    0x08039724 stmdaeq r6, {r4, r5, r6, r8, pc}                  |     __asm ("stmdaeq r6, {r4, r5, r6, r8, pc}");
    0x08039728 stmdaeq sb, {r4, r7, sb, sl, sp, pc}              |     __asm ("stmdaeq sb, {r4, r7, sb, sl, sp, pc}");
    0x0803972c b 0x80395ec                                       |     goto label_3;
                                                                 | }
    ; assembly                                                           | /* r2dec pseudo code output */
                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/fs/cifs/cifs.ko @ 0x803abcc */
                                                                         | #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;
    0x0803abcc push {r4, r5, r6, r7, r8, sb, lr}                         |     
    0x0803abd0 mov r5, r0                                                |     r5 = r0;
    0x0803abd4 ldr r4, [r0, 0x34]                                        |     r4 = *((r0 + 0x34));
    0x0803abd8 sub sp, sp, 0x34                                          |     
    0x0803abdc ldr r2, [r0, 0xc]                                         |     r2 = *((r0 + 0xc));
    0x0803abe0 ldr r3, [r4, 0x18]                                        |     r3 = *((r4 + 0x18));
    0x0803abe4 ldr r7, [r4, 0x68]                                        |     r7 = *((r4 + 0x68));
    0x0803abe8 ldr r8, [r4, 0x58]                                        |     r8 = *((r4 + 0x58));
    0x0803abec ldr r3, [r3, 0x74]                                        |     r3 = *((r3 + 0x74));
    0x0803abf0 cmp r2, r7                                                |     
    0x0803abf4 ldr r6, [r3, 0x1c]                                        |     r6 = *((r3 + 0x1c));
    0x0803abf8 ldr r3, [r4, 0x84]                                        |     r3 = *((r4 + 0x84));
    0x0803abfc str r3, [sp, 0x1c]                                        |     var_1ch = r3;
    0x0803ac00 ldr r3, [r4, 0x6c]                                        |     r3 = *((r4 + 0x6c));
    0x0803ac04 str r3, [sp, 0x28]                                        |     var_28h = r3;
    0x0803ac08 ldr r3, [r4, 0x74]                                        |     r3 = *((r4 + 0x74));
    0x0803ac0c str r3, [sp, 0x2c]                                        |     var_2ch = r3;
    0x0803ac10 ldr r3, [r4, 0x80]                                        |     r3 = *((r4 + 0x80));
    0x0803ac14 str r3, [sp, 0x24]                                        |     var_24h = r3;
    0x0803ac18 ldr r3, [r4, 0x70]                                        |     r3 = *((r4 + 0x70));
    0x0803ac1c str r3, [sp, 0x20]                                        |     var_20h = r3;
    0x0803ac20 mov r3, 0                                                 |     r3 = 0;
    0x0803ac24 str r3, [sp, 0xc]                                         |     var_ch = r3;
    0x0803ac28 str r3, [sp, 0x10]                                        |     var_10h = r3;
    0x0803ac2c add r3, r4, 0x60                                          |     r3 = r4 + 0x60;
    0x0803ac30 str r3, [sp, 0x14]                                        |     var_14h = r3;
    0x0803ac34 mov r3, 1                                                 |     r3 = 1;
    0x0803ac38 str r3, [sp, 0x18]                                        |     var_18h = r3;
                                                                         |     if (r2 != r7) {
    0x0803ac3c bne 0x803add0                                             |         goto label_1;
                                                                         |     }
                                                                         | label_0:
    0x0803ac40 ldr r3, [r5, 0x44]                                        |     r3 = *((r5 + 0x44));
    0x0803ac44 sub r3, r3, 2                                             |     r3 -= 2;
    0x0803ac48 cmp r3, 0xe                                               |     
                                                                         |     if (r3 > 0xe) {
                                                                         |         /* switch table (15 cases) at 0x803ac54 */
    0x0803ac4c ldrls pc, [pc, r3, lsl 2]                                 |         offset_0 = r3 << 2;
                                                                         |         pc = *((pc + offset_0));
                                                                         |     }
    0x0803ac50 b 0x803aca0                                               |     
    0x0803aca0 mvn r3, 4                                                 |     r3 = ~4;
    0x0803aca4 str r3, [r4, 0x3c]                                        |     *((r4 + 0x3c)) = r3;
    0x0803aca8 add r3, r6, 0x5b0                                         |     r3 = r6 + 0x5b0;
    0x0803acac add r3, r3, 4                                             |     r3 += 4;
    0x0803acb0 pld [r3]                                                  |     __asm ("pld [r3]");
                                                                         |     do {
    0x0803acb4 ldrex r2, [r3]                                            |         __asm ("ldrex r2, [r3]");
    0x0803acb8 add r2, r2, 1                                             |         r2++;
    0x0803acbc strex r1, r2, [r3]                                        |         __asm ("strex r1, r2, [r3]");
    0x0803acc0 teq r1, 0                                                 |         __asm ("teq r1, 0");
    0x0803acc4 bne 0x803acb4                                             |         
                                                                         |     } while (r3 != 0xe);
    0x0803acc8 stmdaeq r6, {r2, r5, r6, r8, sb, fp, sp, lr, pc}          |     __asm ("stmdaeq r6, {r2, r5, r6, r8, sb, fp, sp, lr, pc}");
    0x0803accc stmdaeq r6, {r2, r5, r6, r8, sb, fp, sp, lr, pc}          |     __asm ("stmdaeq r6, {r2, r5, r6, r8, sb, fp, sp, lr, pc}");
    0x0803acd0 add r2, r4, 0x40                                          |     r2 = r4 + 0x40;
    0x0803acd4 mov r0, 1                                                 |     r0 = 1;
    0x0803acd8 ldr r1, [r3]                                              |     r1 = *(r3);
    0x0803acdc stmdaeq sb, {r3, r5, r8, sb, sl, sp, pc}                  |     __asm ("stmdaeq sb, {r3, r5, r8, sb, sl, sp, pc}");
    0x0803ace0 mov r0, r5                                                |     r0 = r5;
    0x0803ace4 stmdaeq r2, {r2, r8, sl, fp, ip, lr}                      |     __asm ("stmdaeq r2, {r2, r8, sl, fp, ip, lr}");
    0x0803ace8 ldr r3, [r7, 0x24]                                        |     r3 = *((r7 + 0x24));
    0x0803acec add r1, sp, 0xc                                           |     r1 += var_ch;
    0x0803acf0 mov r0, r7                                                |     r0 = r7;
    0x0803acf4 mov r2, 0                                                 |     r2 = 0;
    0x0803acf8 ldr r3, [r3, 0x14]                                        |     r3 = *((r3 + 0x14));
    0x0803acfc blx r3                                                    |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0803ad00 add sp, sp, 0x34                                          |     
    0x0803ad04 pop {r4, r5, r6, r7, r8, sb, pc}                          |     
                                                                         | label_1:
    0x0803add0 stmdaeq r6, {r2, r3, r5, r6, r7, r8, ip, lr, pc}          |     __asm ("stmdaeq r6, {r2, r3, r5, r6, r7, r8, ip, lr, pc}");
    0x0803add4 stmdaeq r6, {r2, r3, r5, r6, r7, r8, ip, lr, pc}          |     __asm ("stmdaeq r6, {r2, r3, r5, r6, r7, r8, ip, lr, pc}");
    0x0803add8 ldrb r0, [r1, 2]                                          |     r0 = *((r1 + 2));
    0x0803addc cmp r0, 0                                                 |     
                                                                         |     if (r0 != 0) {
    0x0803ade0 bne 0x803ac40                                             |         goto label_0;
                                                                         |     }
    0x0803ade4 strb r3, [r1, 2]                                          |     *((r1 + 2)) = r3;
    0x0803ade8 stmdaeq r6, {sb, sl, pc}                                  |     __asm ("stmdaeq r6, {sb, sl, pc}");
    0x0803adec stmdaeq r6, {sb, sl, pc}                                  |     __asm ("stmdaeq r6, {sb, sl, pc}");
    0x0803adf0 str r2, [sp, 4]                                           |     var_4h = r2;
    0x0803adf4 str r7, [sp]                                              |     *(sp) = r7;
    0x0803adf8 stmdaeq r6, {r2, r3, r4, r5, sb, sl, pc}                  |     __asm ("stmdaeq r6, {r2, r3, r4, r5, sb, sl, pc}");
    0x0803adfc stmdaeq r6, {r2, r3, r4, r5, sb, sl, pc}                  |     __asm ("stmdaeq r6, {r2, r3, r4, r5, sb, sl, pc}");
    0x0803ae00 mov r2, 9                                                 |     r2 = 9;
    0x0803ae04 movw r1, 0xf5d                                            |     r1 = 0xf5d;
    0x0803ae08 stmdaeq sb, {r2, r3, r6, r8, sb, sl, sp, pc}              |     __asm ("stmdaeq sb, {r2, r3, r6, r8, sb, sl, sp, pc}");
    0x0803ae0c b 0x803ac40                                               |     goto label_0;
                                                                         | }
    ; assembly                                                           | /* r2dec pseudo code output */
                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/fs/cifs/cifs.ko @ 0x803a9e8 */
                                                                         | #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_8h_2;
                                                                         |     int32_t var_10h;
                                                                         |     r0 = arg1;
    0x0803a9e8 push {r4, r5, r6, r7, r8, lr}                             |     
    0x0803a9ec mov r2, 0                                                 |     r2 = 0;
    0x0803a9f0 mov r3, 0                                                 |     r3 = 0;
    0x0803a9f4 ldr r5, [r0, 0x34]                                        |     r5 = *((r0 + 0x34));
    0x0803a9f8 sub sp, sp, 0x10                                          |     
    0x0803a9fc ldr r8, [r0, 0x3c]                                        |     r8 = *((r0 + 0x3c));
    0x0803aa00 mov r4, r0                                                |     r4 = r0;
    0x0803aa04 strd r2, r3, [sp, 8]                                      |     __asm ("strd r2, r3, [var_8h]");
    0x0803aa08 ldr r2, [r5, 0x2c]                                        |     r2 = *((r5 + 0x2c));
    0x0803aa0c ldr r3, [r0, 0xc]                                         |     r3 = *((r0 + 0xc));
    0x0803aa10 ldr r6, [r5, 0x4c]                                        |     r6 = *((r5 + 0x4c));
    0x0803aa14 ldr r2, [r2, 0x74]                                        |     r2 = *((r2 + 0x74));
    0x0803aa18 cmp r3, r6                                                |     
    0x0803aa1c ldr r7, [r2, 0x1c]                                        |     r7 = *((r2 + 0x1c));
                                                                         |     if (r3 != r6) {
    0x0803aa20 bne 0x803ab88                                             |         goto label_2;
                                                                         |     }
                                                                         | label_1:
    0x0803aa24 ldr r3, [r4, 0x44]                                        |     r3 = *((r4 + 0x44));
    0x0803aa28 sub r3, r3, 2                                             |     r3 -= 2;
    0x0803aa2c cmp r3, 0xe                                               |     
                                                                         |     if (r3 > 0xe) {
                                                                         |         /* switch table (15 cases) at 0x803aa38 */
    0x0803aa30 ldrls pc, [pc, r3, lsl 2]                                 |         offset_0 = r3 << 2;
                                                                         |         pc = *((pc + offset_0));
                                                                         |     }
    0x0803aa34 b 0x803aa84                                               |     
    0x0803aa84 mvn r3, 4                                                 |     r3 = ~4;
    0x0803aa88 str r3, [r5, 0x48]                                        |     *((r5 + 0x48)) = r3;
    0x0803aa8c add r3, r7, 0x5b0                                         |     r3 = r7 + 0x5b0;
    0x0803aa90 add r3, r3, 8                                             |     r3 += 8;
    0x0803aa94 pld [r3]                                                  |     __asm ("pld [r3]");
                                                                         |     do {
    0x0803aa98 ldrex r2, [r3]                                            |         __asm ("ldrex r2, [r3]");
    0x0803aa9c add r2, r2, 1                                             |         r2++;
    0x0803aaa0 strex r1, r2, [r3]                                        |         __asm ("strex r1, r2, [r3]");
    0x0803aaa4 teq r1, 0                                                 |         __asm ("teq r1, 0");
    0x0803aaa8 bne 0x803aa98                                             |         
                                                                         |     } while (r3 != 0xe);
    0x0803aaac ldr r3, [r5, 0x48]                                        |     r3 = *((r5 + 0x48));
    0x0803aab0 cmn r3, 0x1c                                              |     
    0x0803aab4 beq 0x803ab58                                             |     
                                                                         |     while (r2 != 0) {
                                                                         | label_0:
    0x0803aab8 stmdaeq r6, {r2, r5, r6, r8, sb, fp, sp, lr, pc}          |         __asm ("stmdaeq r6, {r2, r5, r6, r8, sb, fp, sp, lr, pc}");
    0x0803aabc stmdaeq r6, {r2, r5, r6, r8, sb, fp, sp, lr, pc}          |         __asm ("stmdaeq r6, {r2, r5, r6, r8, sb, fp, sp, lr, pc}");
    0x0803aac0 add r2, r5, 0x1c                                          |         r2 = r5 + 0x1c;
    0x0803aac4 mov r0, 1                                                 |         r0 = 1;
    0x0803aac8 ldr r1, [r3]                                              |         r1 = *(r3);
    0x0803aacc stmdaeq sb, {r3, r5, r8, sb, sl, sp, pc}                  |         __asm ("stmdaeq sb, {r3, r5, r8, sb, sl, sp, pc}");
    0x0803aad0 mov r0, r4                                                |         r0 = r4;
    0x0803aad4 stmdaeq r2, {r2, r8, sl, fp, ip, lr}                      |         __asm ("stmdaeq r2, {r2, r8, sl, fp, ip, lr}");
    0x0803aad8 ldr r3, [r6, 0x24]                                        |         r3 = *((r6 + 0x24));
    0x0803aadc add r1, sp, 8                                             |         r1 += var_8h;
    0x0803aae0 mov r0, r6                                                |         r0 = r6;
    0x0803aae4 mov r2, 0                                                 |         r2 = 0;
    0x0803aae8 ldr r3, [r3, 0x14]                                        |         r3 = *((r3 + 0x14));
    0x0803aaec blx r3                                                    |         uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0803aaf0 add sp, sp, 0x10                                          |         
    0x0803aaf4 pop {r4, r5, r6, r7, r8, pc}                              |         
    0x0803ab58 stmdaeq r6, {r2, r3, r5, r6, r7, r8, ip, lr, pc}          |         __asm ("stmdaeq r6, {r2, r3, r5, r6, r7, r8, ip, lr, pc}");
    0x0803ab5c stmdaeq r6, {r2, r3, r5, r6, r7, r8, ip, lr, pc}          |         __asm ("stmdaeq r6, {r2, r3, r5, r6, r7, r8, ip, lr, pc}");
    0x0803ab60 ldrb r2, [r3, 1]                                          |         r2 = *((r3 + 1));
    0x0803ab64 cmp r2, 0                                                 |         
    0x0803ab68 bne 0x803aab8                                             |         
                                                                         |     }
    0x0803ab6c add r1, r7, 0x28                                          |     r1 = r7 + 0x28;
    0x0803ab70 stmdaeq r6, {r2, r4, sb, sl, pc}                          |     __asm ("stmdaeq r6, {r2, r4, sb, sl, pc}");
    0x0803ab74 stmdaeq r6, {r2, r4, sb, sl, pc}                          |     __asm ("stmdaeq r6, {r2, r4, sb, sl, pc}");
    0x0803ab78 mov r2, 1                                                 |     r2 = 1;
    0x0803ab7c strb r2, [r3, 1]                                          |     *((r3 + 1)) = r2;
    0x0803ab80 stmdaeq sb, {r4, r7, sb, sl, sp, pc}                      |     __asm ("stmdaeq sb, {r4, r7, sb, sl, sp, pc}");
    0x0803ab84 b 0x803aab8                                               |     goto label_0;
                                                                         | label_2:
    0x0803ab88 stmdaeq r6, {r2, r3, r5, r6, r7, r8, ip, lr, pc}          |     __asm ("stmdaeq r6, {r2, r3, r5, r6, r7, r8, ip, lr, pc}");
    0x0803ab8c stmdaeq r6, {r2, r3, r5, r6, r7, r8, ip, lr, pc}          |     __asm ("stmdaeq r6, {r2, r3, r5, r6, r7, r8, ip, lr, pc}");
    0x0803ab90 ldrb r2, [ip]                                             |     r2 = *(ip);
    0x0803ab94 cmp r2, 0                                                 |     
                                                                         |     if (r2 != 0) {
    0x0803ab98 bne 0x803aa24                                             |         goto label_1;
                                                                         |     }
    0x0803ab9c str r3, [sp, 4]                                           |     var_4h = r3;
    0x0803aba0 mov lr, 1                                                 |     lr = 1;
    0x0803aba4 str r6, [sp]                                              |     *(sp) = r6;
    0x0803aba8 stmdaeq r6, {r2, r3, r4, r6, r7, r8, sl, pc}              |     __asm ("stmdaeq r6, {r2, r3, r4, r6, r7, r8, sl, pc}");
    0x0803abac stmdaeq r6, {r2, r3, r4, r6, r7, r8, sl, pc}              |     __asm ("stmdaeq r6, {r2, r3, r4, r6, r7, r8, sl, pc}");
    0x0803abb0 stmdaeq r6, {sb, sl, pc}                                  |     __asm ("stmdaeq r6, {sb, sl, pc}");
    0x0803abb4 stmdaeq r6, {sb, sl, pc}                                  |     __asm ("stmdaeq r6, {sb, sl, pc}");
    0x0803abb8 mov r2, 9                                                 |     r2 = 9;
    0x0803abbc movw r1, 0x1049                                           |     r1 = 0x1049;
    0x0803abc0 strb lr, [ip]                                             |     
    0x0803abc4 stmdaeq sb, {r2, r3, r6, r8, sb, sl, sp, pc}              |     __asm ("stmdaeq sb, {r2, r3, r6, r8, sb, sl, sp, pc}");
    0x0803abc8 b 0x803aa24                                               |     goto label_1;
                                                                         | }

[*] Function popen used 1 times cifs.ko