[*] Binary protection state of libhttp_auth.so

  
  	Full RELRO     Canary found      NX enabled   DSO          No RPATH     No RUNPATH   No Symbols


[*] Function system tear down of libhttp_auth.so

    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libhttp_auth.so @ 0x4bec */
                                                                     | #include <stdint.h>
                                                                     |  
                                                                     | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                     |  
    ; (fcn) fcn.00004bec ()                                          | void fcn_00004bec (int16_t arg_148h, int16_t arg_14ch, int16_t arg1) {
                                                                     |     int16_t var_0h;
                                                                     |     int16_t var_4h;
                                                                     |     int16_t var_ch;
                                                                     |     char * dest;
                                                                     |     int16_t var_74h;
                                                                     |     char * var_75h;
                                                                     |     int16_t var_adh;
                                                                     |     int16_t var_b0h;
                                                                     |     int16_t var_10ch;
                                                                     |     r0 = arg1;
    0x00004bec blmi 0xfe197608                                       |     __asm ("blmi 0xfe197608");
    0x00004bf0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x00004bf4 sub sp, 0x114                                         |     
    0x00004bf6 add r2, pc                                            |     r2 += pc;
    0x00004bf8 ldr r4, [pc, 0x210]                                   |     
    0x00004bfa mov r5, r0                                            |     r5 = r0;
    0x00004bfc ldr r3, [r2, r3]                                      |     r3 = *((r2 + r3));
    0x00004bfe add r4, pc                                            |     r4 = 0x9a0e;
    0x00004c00 ldr r3, [r3]                                          |     r3 = *(r3);
    0x00004c02 str r3, [sp, 0x10c]                                   |     var_10ch = r3;
    0x00004c04 mov.w r3, 0                                           |     r3 = 0;
    0x00004c08 blx 0x1730                                            |     fcn_00001730 ();
    0x00004c0c ldr r2, [pc, 0x200]                                   |     r2 = *(0x4e10);
    0x00004c0e mov r6, r0                                            |     r6 = r0;
    0x00004c10 ldr.w sl, [r0]                                        |     sl = *(r0);
    0x00004c14 mov r3, r4                                            |     r3 = r4;
    0x00004c16 ldr r7, [r4, r2]                                      |     r7 = *(0x9a0e);
    0x00004c18 mov r0, r7                                            |     r0 = r7;
    0x00004c1a blx 0x154c                                            |     fcn_0000154c ();
    0x00004c1e ldrb r3, [r5, 0x10]                                   |     r3 = *((r5 + 0x10));
    0x00004c20 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x00004c22 beq.w 0x4dbc                                          |         goto label_2;
                                                                     |     }
    0x00004c26 ldrb.w r3, [r5, 0x69]                                 |     r3 = *((r5 + 0x69));
    0x00004c2a cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x00004c2c beq.w 0x4dbc                                          |         goto label_2;
                                                                     |     }
    0x00004c30 add.w sb, r5, 0x10                                    |     sb = r5 + 0x10;
    0x00004c34 add.w r8, r5, 0x69                                    |     r8 = r5 + 0x69;
    0x00004c36 lsrs r1, r5, 1                                        |     r1 = r5 >> 1;
    0x00004c38 mov r1, r8                                            |     r1 = r8;
    0x00004c3a mov r0, sb                                            |     r0 = sb;
    0x00004c3c bl 0x4b14                                             |     r0 = fcn_00004b14 (r0, r1);
    0x00004c40 cmp r0, 0                                             |     
    0x00004c42 mov r0, r7                                            |     r0 = r7;
                                                                     |     if (r0 >= 0) {
    0x00004c44 bge.w 0x4dc8                                          |         goto label_3;
                                                                     |     }
    0x00004c48 blx 0x154c                                            |     fcn_0000154c ();
    0x00004c4c ldr r3, [pc, 0x1c4]                                   |     
    0x00004c4e add r3, pc                                            |     r3 = 0x9a66;
    0x00004c50 ldr.w r0, [r3, 0x14c]                                 |     r0 = *(0x9bb2);
    0x00004c54 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x00004c56 beq 0x4d34                                            |         goto label_4;
                                                                     |     }
    0x00004c58 ldr.w r1, [r3, 0x148]                                 |     r1 = *((r3 + 0x148));
    0x00004c5c movs r4, 0                                            |     r4 = 0;
    0x00004c5e mov r3, r4                                            |     r3 = r4;
    0x00004c60 adds r1, 0x10                                         |     r1 += 0x10;
    0x00004c62 b 0x4c6c                                              |     
                                                                     |     while (r2 != 0) {
    0x00004c64 adds r3, 1                                            |         r3++;
    0x00004c66 adds r4, 0xa2                                         |         r4 += 0xa2;
    0x00004c68 cmp r3, r0                                            |         
                                                                     |         if (r3 == r0) {
    0x00004c6a beq 0x4d34                                            |             goto label_4;
                                                                     |         }
    0x00004c6c ldrb r2, [r1, r4]                                     |         r2 = *((r1 + r4));
    0x00004c6e cmp r2, 0                                             |         
    0x00004c70 bne 0x4c64                                            |         
                                                                     |     }
                                                                     | label_0:
    0x00004c72 mov r0, r7                                            |     r0 = r7;
    0x00004c74 blx 0x1524                                            |     fcn_00001524 ();
    0x00004c78 ldr r1, [pc, 0x19c]                                   |     
    0x00004c7a mov r0, r8                                            |     r0 = r8;
    0x00004c7c add r1, pc                                            |     r1 = 0x9a98;
    0x00004c7e blx 0x161c                                            |     r0 = fcn_0000161c ();
    0x00004c82 mov fp, r0                                            |     
    0x00004c84 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x00004c86 beq 0x4d18                                            |         goto label_5;
                                                                     |     }
    0x00004c88 mov r0, sb                                            |     r0 = sb;
    0x00004c8a blx 0x1558                                            |     strtoul (r0, r1, r2);
    0x00004c8e mov r2, sb                                            |     r2 = sb;
    0x00004c90 add.w sb, sp, 0xb0                                    |     sb += var_b0h;
    0x00004c94 mov r3, r0                                            |     r3 = r0;
    0x00004c96 movs r1, 0x59                                         |     r1 = 0x59;
    0x00004c98 mov r0, sb                                            |     r0 = sb;
    0x00004c9a bl 0x3a68                                             |     r0 = fcn_00003a68 (r0, r1, r2, r3);
    0x00004c9e bic.w r3, r0, r0, asr 31                              |     r3 = BIT_MASK (r0, r0);
    0x00004ca2 mov r1, sb                                            |     r1 = sb;
    0x00004ca4 mov.w sb, 0                                           |     sb = 0;
    0x00004ca8 add.w r3, r3, 0x110                                   |     r3 += 0x110;
    0x00004cac movs r2, 0x58                                         |     r2 = 0x58;
    0x00004cae add r3, sp, r3                                        |     r3 = sp + r3;
    0x00004cb0 add r0, sp, 0x1c                                      |     r0 += dest;
    0x00004cb2 strb sb, [r3, -0x60]                                  |     *((r3 - 0x60)) = sb;
    0x00004cb6 blx 0x1408                                            |     strncpy (r0, r1, r2);
    0x00004cba mov r1, r8                                            |     r1 = r8;
    0x00004cbc movs r2, 0x38                                         |     r2 = 0x38;
    0x00004cbe add.w r0, sp, 0x75                                    |     r0 += var_75h;
    0x00004cc2 strb.w sb, [sp, 0x74]                                 |     var_74h = sb;
    0x00004cc6 blx 0x1408                                            |     strncpy (r0, r1, r2);
    0x00004cca ldr r3, [pc, 0x150]                                   |     
    0x00004ccc add.w ip, sp, 0xc                                     |     
    0x00004cd0 ldr r0, [r5]                                          |     r0 = *(r5);
    0x00004cd2 ldr r1, [r5, 4]                                       |     r1 = *((r5 + 4));
    0x00004cd4 add r3, pc                                            |     r3 = 0x9af6;
    0x00004cd6 ldr r2, [r5, 8]                                       |     r2 = *((r5 + 8));
    0x00004cd8 ldr.w lr, [r3, 0x148]                                 |     lr = *(0x9c3e);
    0x00004cdc ldr r3, [r5, 0xc]                                     |     r3 = *((r5 + 0xc));
    0x00004cde mov r5, ip                                            |     r5 = ip;
    0x00004ce0 strb.w sb, [sp, 0xad]                                 |     var_adh = sb;
    0x00004ce4 stm r5!, {r0, r1, r2, r3}                             |     *(r5!) = r0;
                                                                     |     *((r5! + 4)) = r1;
                                                                     |     *((r5! + 8)) = r2;
                                                                     |     *((r5! + 12)) = r3;
    0x00004ce6 add.w r0, lr, r4                                      |     r0 = lr + r4;
    0x00004cea mov r1, ip                                            |     r1 = ip;
    0x00004cec movs r2, 0xa2                                         |     r2 = 0xa2;
    0x00004cee blx 0x158c                                            |     fcn_0000158c ();
    0x00004cf2 mov r0, r7                                            |     r0 = r7;
    0x00004cf4 blx 0x1524                                            |     fcn_00001524 ();
    0x00004cf8 mov r0, sb                                            |     r0 = sb;
                                                                     |     do {
                                                                     | label_1:
    0x00004cfa ldr r2, [pc, 0x124]                                   |         
    0x00004cfc ldr r3, [pc, 0x108]                                   |         r3 = *(0x4e08);
    0x00004cfe str.w sl, [r6]                                        |         __asm ("str.w sl, [r6]");
    0x00004d02 add r2, pc                                            |         r2 = 0x9b28;
    0x00004d04 ldr r3, [r2, r3]                                      |         r3 = *(0x9b28);
    0x00004d06 ldr r2, [r3]                                          |         r2 = *(0x9b28);
    0x00004d08 ldr r3, [sp, 0x10c]                                   |         r3 = var_10ch;
    0x00004d0a eors r2, r3                                           |         r2 ^= r3;
    0x00004d0c mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 != r3) {
    0x00004d10 bne 0x4df0                                            |             goto label_6;
                                                                     |         }
    0x00004d12 add sp, 0x114                                         |         
    0x00004d14 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
    0x00004d16 ldrh r0, [r6, 0x3e]                                   |         r0 = *((r6 + 0x3e));
                                                                     | label_5:
    0x00004d18 ldr r3, [pc, 0x108]                                   |         
    0x00004d1a mov r1, r5                                            |         r1 = r5;
    0x00004d1c movs r2, 0xa2                                         |         r2 = 0xa2;
    0x00004d1e add r3, pc                                            |         r3 = 0x9b46;
    0x00004d20 ldr.w r0, [r3, 0x148]                                 |         r0 = *(0x9c8e);
    0x00004d24 add r0, r4                                            |         r0 += r4;
    0x00004d26 blx 0x158c                                            |         fcn_0000158c ();
    0x00004d2a mov r0, r7                                            |         r0 = r7;
    0x00004d2c blx 0x1524                                            |         fcn_00001524 ();
    0x00004d30 mov r0, fp                                            |         r0 = fp;
    0x00004d32 b 0x4cfa                                              |         
                                                                     |     } while (1);
                                                                     | label_4:
    0x00004d34 ldr.w fp, [pc, 0xf0]                                  |     fp = *(0x00004e28);
    0x00004d38 movs r4, 0                                            |     r4 = 0;
    0x00004d3a mov r0, r7                                            |     r0 = r7;
    0x00004d3c blx 0x1524                                            |     fcn_00001524 ();
    0x00004d40 add fp, pc                                            |     
    0x00004d42 mov r0, r7                                            |     r0 = r7;
    0x00004d44 str r4, [r6]                                          |     *(r6) = r4;
    0x00004d46 blx 0x154c                                            |     fcn_0000154c ();
    0x00004d4a ldr.w r3, [fp, 0x14c]                                 |     r3 = *(arg_14ch);
    0x00004d4e mov r0, r3                                            |     r0 = r3;
    0x00004d50 str r3, [sp, 4]                                       |     var_4h = r3;
    0x00004d52 bl 0x3e18                                             |     fcn_00003e18 ();
    0x00004d56 movs r2, 0xa2                                         |     r2 = 0xa2;
    0x00004d58 str r0, [sp]                                          |     *(sp) = r0;
    0x00004d5a mul r1, r2, r0                                        |     r1 = r2 * r0;
    0x00004d5e str r4, [r6]                                          |     *(r6) = r4;
    0x00004d60 ldr.w r0, [fp, 0x148]                                 |     r0 = *(arg_148h);
    0x00004d64 blx 0x16f4                                            |     fcn_000016f4 ();
    0x00004d68 ldr r3, [sp, 4]                                       |     r3 = var_4h;
    0x00004d6a movs r2, 0xa2                                         |     r2 = 0xa2;
    0x00004d6c str.w r0, [fp, 0x148]                                 |     __asm ("str.w r0, [arg_148h]");
                                                                     |     if (r0 == 0) {
    0x00004d70 cbz r0, 0x4dd2                                        |         goto label_7;
                                                                     |     }
    0x00004d72 ldr r1, [sp]                                          |     r1 = *(sp);
    0x00004d74 mla r0, r2, r3, r0                                    |     __asm ("mla r0, r2, r3, r0");
    0x00004d78 subs r3, r1, r3                                       |     r3 = r1 - r3;
    0x00004d7a str.w r1, [fp, 0x14c]                                 |     __asm ("str.w r1, [arg_14ch]");
    0x00004d7e mul r2, r3, r2                                        |     r2 = r3 * r2;
    0x00004d82 mov r1, r4                                            |     r1 = r4;
    0x00004d84 blx 0x1498                                            |     policykit_system_auth_user_basic ()
    0x00004d88 mov r0, r7                                            |     r0 = r7;
    0x00004d8a blx 0x1524                                            |     fcn_00001524 ();
    0x00004d8e mov r0, r7                                            |     r0 = r7;
    0x00004d90 str r4, [r6]                                          |     *(r6) = r4;
    0x00004d92 blx 0x154c                                            |     fcn_0000154c ();
    0x00004d96 ldr.w r0, [fp, 0x14c]                                 |     r0 = *(arg_14ch);
                                                                     |     if (r0 == 0) {
    0x00004d9a cbz r0, 0x4db6                                        |         goto label_8;
                                                                     |     }
    0x00004d9c ldr.w r1, [fp, 0x148]                                 |     r1 = *(arg_148h);
    0x00004da0 mov r3, r4                                            |     r3 = r4;
    0x00004da2 adds r1, 0x10                                         |     r1 += 0x10;
    0x00004da4 b 0x4dae                                              |     
                                                                     |     while (r2 != 0) {
    0x00004da6 adds r3, 1                                            |         r3++;
    0x00004da8 adds r4, 0xa2                                         |         r4 += 0xa2;
    0x00004daa cmp r3, r0                                            |         
                                                                     |         if (r3 == r0) {
    0x00004dac beq 0x4db6                                            |             goto label_8;
                                                                     |         }
    0x00004dae ldrb r2, [r1, r4]                                     |         r2 = *((r1 + r4));
    0x00004db0 cmp r2, 0                                             |         
    0x00004db2 bne 0x4da6                                            |         
                                                                     |     }
    0x00004db4 b 0x4c72                                              |     goto label_0;
                                                                     | label_8:
    0x00004db6 mvn r4, 0xa1                                          |     r4 = ~0xa1;
    0x00004dba b 0x4c72                                              |     goto label_0;
                                                                     | label_2:
    0x00004dbc mov r0, r7                                            |     r0 = r7;
    0x00004dbe blx 0x1524                                            |     fcn_00001524 ();
    0x00004dc2 mvn r0, 0xbd                                          |     r0 = ~0xbd;
    0x00004dc6 b 0x4cfa                                              |     goto label_1;
                                                                     | label_3:
    0x00004dc8 blx 0x1524                                            |     fcn_00001524 ();
    0x00004dcc mvn r0, 0xc1                                          |     r0 = ~0xc1;
    0x00004dd0 b 0x4cfa                                              |     goto label_1;
                                                                     | label_7:
    0x00004dd2 ldr r4, [r6]                                          |     r4 = *(r6);
    0x00004dd4 str.w r0, [fp, 0x14c]                                 |     __asm ("str.w r0, [arg_14ch]");
    0x00004dd8 mov r0, r7                                            |     r0 = r7;
    0x00004dda blx 0x1524                                            |     fcn_00001524 ();
                                                                     |     if (r4 != 0) {
    0x00004dde cbz r4, 0x4df4                                        |         
    0x00004de0 mov r0, r7                                            |         r0 = r7;
    0x00004de2 str r4, [r6]                                          |         *(r6) = r4;
    0x00004de4 blx 0x1524                                            |         fcn_00001524 ();
    0x00004de8 mov sl, r4                                            |         sl = r4;
    0x00004dea mvn r0, 0xb7                                          |         r0 = ~0xb7;
    0x00004dee b 0x4cfa                                              |         goto label_1;
                                                                     | label_6:
    0x00004df0 blx 0x1658                                            |         fcn_00001658 ();
                                                                     |     }
    0x00004df4 mov r0, r7                                            |     r0 = r7;
    0x00004df6 str r4, [r6]                                          |     *(r6) = r4;
    0x00004df8 blx 0x1524                                            |     fcn_00001524 ();
    0x00004dfc mvn r0, 0xb7                                          |     r0 = ~0xb7;
    0x00004e00 b 0x4cfa                                              |     goto label_1;
                                                                     | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libhttp_auth.so @ 0x4e2c */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.00004e2c ()                  | void fcn_00004e2c () {
    0x00004e2c ldr r3, [pc, 0xbc]            |     
    0x00004e2e ldr r2, [pc, 0xc0]            |     r2 = *(0x4ef2);
    0x00004e30 push {r4, r5, r6, lr}         |     
    0x00004e32 add r3, pc                    |     r3 = 0x9d22;
    0x00004e34 ldr r6, [pc, 0xbc]            |     
    0x00004e36 ldr r5, [r3, r2]              |     r5 = *(0x9d22);
    0x00004e38 add r6, pc                    |     r6 = 0x9d30;
    0x00004e3a mov r0, r5                    |     r0 = r5;
    0x00004e3c blx 0x154c                    |     fcn_0000154c ();
    0x00004e40 ldr r1, [pc, 0xb4]            |     
    0x00004e42 mov r0, r6                    |     r0 = r6;
    0x00004e44 add r1, pc                    |     r1 = 0x9d40;
    0x00004e46 bl 0x42d4                     |     r0 = fcn_000042d4 (r0, r1);
    0x00004e4a cmp r0, 0                     |     
                                             |     if (r0 == 0) {
    0x00004e4c beq 0x4ed8                    |         goto label_2;
                                             |     }
    0x00004e4e mov r4, r0                    |     r4 = r0;
    0x00004e50 blx 0x139c                    |     fileno (r0);
    0x00004e54 movs r1, 2                    |     r1 = 2;
    0x00004e56 mov r6, r0                    |     r6 = r0;
    0x00004e58 bl 0x43e8                     |     r0 = fcn_000043e8 (r0, r1);
    0x00004e5c cmp r0, 0                     |     
                                             |     if (r0 < 0) {
    0x00004e5e bge 0x4e74                    |         
                                             | label_0:
    0x00004e60 mov r0, r4                    |         r0 = r4;
    0x00004e62 bl 0x4318                     |         r0 = fcn_00004318 (r0);
    0x00004e66 mov r4, r0                    |         r4 = r0;
                                             |         if (r0 != 0) {
    0x00004e68 cbnz r0, 0x4ec2               |             goto label_3;
                                             |         }
                                             | label_1:
    0x00004e6a mov r0, r5                    |         r0 = r5;
    0x00004e6c blx 0x1524                    |         fcn_00001524 ();
    0x00004e70 mov r0, r4                    |         r0 = r4;
    0x00004e72 pop {r4, r5, r6, pc}          |         
                                             |     }
    0x00004e74 mov r0, r5                    |     r0 = r5;
    0x00004e76 blx 0x154c                    |     fcn_0000154c ();
    0x00004e7a ldr r3, [pc, 0x80]            |     
    0x00004e7c movs r1, 0                    |     r1 = 0;
    0x00004e7e add r3, pc                    |     r3 = 0x9d80;
    0x00004e80 ldrd r0, r2, [r3, 0x148]      |     __asm ("ldrd r0, r2, [r3, 0x148]");
    0x00004e84 movs r3, 0xa2                 |     r3 = 0xa2;
    0x00004e86 mul r2, r3, r2                |     r2 = r3 * r2;
    0x00004e8a blx 0x1498                    |     policykit_system_auth_user_basic ()
    0x00004e8e mov r0, r5                    |     r0 = r5;
    0x00004e90 blx 0x1524                    |     fcn_00001524 ();
    0x00004e94 b 0x4e9a                      |     
                                             |     while (r0 != 0) {
    0x00004e96 bl 0x4bec                     |         fcn_00004bec (r0, r1, r2);
    0x00004e9a mov r0, r4                    |         r0 = r4;
    0x00004e9c bl 0x491c                     |         r0 = fcn_0000491c (r0);
    0x00004ea0 cmp r0, 0                     |         
    0x00004ea2 bne 0x4e96                    |         
                                             |     }
    0x00004ea4 movs r1, 8                    |     r1 = 8;
    0x00004ea6 mov r0, r6                    |     r0 = r6;
    0x00004ea8 bl 0x43e8                     |     r0 = fcn_000043e8 (r0, r1);
    0x00004eac cmp r0, 0                     |     
                                             |     if (r0 >= 0) {
    0x00004eae bge 0x4e60                    |         goto label_0;
                                             |     }
    0x00004eb0 ldr r3, [pc, 0x4c]            |     
    0x00004eb2 movs r1, 1                    |     r1 = 1;
    0x00004eb4 ldr r2, [pc, 0x4c]            |     
    0x00004eb6 movs r0, 3                    |     r0 = 3;
    0x00004eb8 add r3, pc                    |     r3 = 0x9dbc;
    0x00004eba add r2, pc                    |     r2 = 0x9dc2;
    0x00004ebc blx 0x1610                    |     fcn_00001610 ();
    0x00004ec0 b 0x4e60                      |     goto label_0;
                                             | label_3:
    0x00004ec2 ldr r3, [pc, 0x44]            |     
    0x00004ec4 movs r1, 1                    |     r1 = 1;
    0x00004ec6 ldr r2, [pc, 0x44]            |     
    0x00004ec8 movs r0, 3                    |     r0 = 3;
    0x00004eca mov.w r4, -1                  |     r4 = -1;
    0x00004ece add r3, pc                    |     r3 = 0x9ddc;
    0x00004ed0 add r2, pc                    |     r2 = 0x9de2;
    0x00004ed2 blx 0x1610                    |     fcn_00001610 ();
    0x00004ed6 b 0x4e6a                      |     goto label_1;
                                             | label_2:
    0x00004ed8 ldr r2, [pc, 0x34]            |     
    0x00004eda mov r3, r6                    |     r3 = r6;
    0x00004edc movs r1, 1                    |     r1 = 1;
    0x00004ede movs r0, 3                    |     r0 = 3;
    0x00004ee0 mov.w r4, -1                  |     r4 = -1;
    0x00004ee4 add r2, pc                    |     r2 = 0x9df8;
    0x00004ee6 blx 0x1610                    |     fcn_00001610 ();
    0x00004eea b 0x4e6a                      |     goto label_1;
                                             | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libhttp_auth.so @ 0x5010 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.00005010 ()              | void fcn_00005010 (int16_t arg1, int16_t arg2) {
                                         |     r0 = arg1;
                                         |     r1 = arg2;
    0x00005010 ldr r3, [pc, 0x40]        |     
    0x00005012 ldr r2, [pc, 0x44]        |     r2 = *(0x505a);
    0x00005014 push {r4, r5, r6, lr}     |     
    0x00005016 mov r5, r1                |     r5 = r1;
    0x00005018 add r3, pc                |     r3 = 0xa070;
    0x0000501a mov r4, r0                |     r4 = r0;
    0x0000501c ldr r6, [r3, r2]          |     r6 = *(0xa070);
    0x0000501e mov r0, r6                |     r0 = r6;
    0x00005020 blx 0x154c                |     fcn_0000154c ();
    0x00005024 mov r0, r5                |     r0 = r5;
    0x00005026 bl 0x28b8                 |     r0 = fcn_000028b8 (r0);
    0x0000502a mov r1, r0                |     r1 = r0;
    0x0000502c mov r0, r4                |     r0 = r4;
    0x0000502e bl 0x4b14                 |     r0 = fcn_00004b14 (r0, r1);
    0x00005032 cmp r0, 0                 |     
                                         |     if (r0 >= 0) {
    0x00005034 blt 0x504a                |         
    0x00005036 ldr r3, [pc, 0x24]        |         
    0x00005038 movs r2, 0xa2             |         r2 = 0xa2;
    0x0000503a movs r1, 0                |         r1 = 0;
    0x0000503c add r3, pc                |         
    0x0000503e ldr.w r3, [r3, 0x148]     |         r3 = *(0xa1e6);
    0x00005042 mla r0, r2, r0, r3        |         __asm ("mla r0, r2, r0, r3");
    0x00005046 blx 0x1498                |         policykit_system_auth_user_basic ()
                                         |     }
    0x0000504a mov r0, r6                |     r0 = r6;
    0x0000504c blx 0x1524                |     fcn_00001524 ();
    0x00005050 movs r0, 0                |     r0 = 0;
    0x00005052 pop {r4, r5, r6, pc}      |     
                                         | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libhttp_auth.so @ 0x5660 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00005660 ()                                  | void fcn_00005660 (int16_t arg_0h, char * arg1) {
                                                             |     int16_t var_0h;
                                                             |     int32_t var_4h_2;
                                                             |     int32_t var_4h_3;
                                                             |     int16_t var_ch;
                                                             |     char * dest;
                                                             |     int16_t var_14h;
                                                             |     int16_t var_18h;
                                                             |     int32_t var_4h;
                                                             |     int16_t var_20h;
                                                             |     int16_t var_78h;
                                                             |     char * src;
                                                             |     int16_t var_2f4h;
                                                             |     int16_t var_304h;
                                                             |     int16_t var_308h;
                                                             |     int16_t var_314h;
                                                             |     int16_t var_318h;
                                                             |     int16_t var_33ch;
                                                             |     int16_t var_344h;
                                                             |     r0 = arg1;
    0x00005660 svcmi 0xf0e92d                                |     __asm ("svcmi 0xf0e92d");
    0x00005664 sub.w sp, sp, 0x344                           |     
    0x00005668 ldr r4, [pc, 0x2ac]                           |     
    0x0000566a ldr r1, [pc, 0x2b0]                           |     r1 = *(0x591e);
    0x0000566c add r4, pc                                    |     r4 = 0xaf88;
    0x0000566e ldr r3, [pc, 0x2b0]                           |     
    0x00005670 ldr r2, [pc, 0x2b0]                           |     r2 = *(0x5924);
    0x00005672 ldr r1, [r4, r1]                              |     
    0x00005674 add r3, pc                                    |     r3 = 0xaf9a;
    0x00005676 ldr r4, [pc, 0x2b0]                           |     
    0x00005678 ldr r1, [r1]                                  |     r1 = *(0xaf88);
    0x0000567a str r1, [sp, 0x33c]                           |     var_33ch = r1;
    0x0000567c mov.w r1, 0                                   |     r1 = 0;
    0x00005680 ldr.w sb, [r3, r2]                            |     sb = *(0xaf9a);
    0x00005684 add r4, pc                                    |     r4 = 0xafb2;
    0x00005686 str r0, [sp, 0x10]                            |     dest = r0;
    0x00005688 mov r0, sb                                    |     r0 = sb;
    0x0000568a blx 0x154c                                    |     fcn_0000154c ();
    0x0000568e ldr r3, [r4, 0x18]                            |     r3 = *(0xafca);
    0x00005690 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00005692 beq.w 0x5868                                  |         goto label_5;
                                                             |     }
                                                             | label_3:
    0x00005696 add r7, sp, 0x78                              |     r7 += var_78h;
    0x00005698 mov.w r2, 0x27c                               |     r2 = 0x27c;
    0x0000569c movs r1, 0                                    |     r1 = 0;
    0x0000569e mov r0, r7                                    |     r0 = r7;
    0x000056a0 add.w sl, sp, 0x18                            |     sl += var_18h;
    0x000056a4 blx 0x1498                                    |     policykit_system_auth_user_basic ()
    0x000056a8 bl 0x55e4                                     |     fcn_000055e4 ();
    0x000056ac movs r1, 0                                    |     r1 = 0;
    0x000056ae mov r5, r0                                    |     r5 = r0;
    0x000056b0 mov r0, sl                                    |     r0 = sl;
    0x000056b2 blx 0x1514                                    |     fcn_00001514 ();
    0x000056b6 bl 0x562c                                     |     r0 = fcn_0000562c ();
    0x000056ba cmp r5, r0                                    |     
    0x000056bc mov r6, r0                                    |     r6 = r0;
                                                             |     if (r5 <= r0) {
    0x000056be blo 0x5708                                    |         goto label_1;
                                                             |     }
    0x000056c0 ldr r4, [pc, 0x268]                           |     
    0x000056c2 mov.w r8, 0x27c                               |     r8 = 0x27c;
    0x000056c6 add r4, pc                                    |     r4 = 0xaff6;
    0x000056c8 ldr.w fp, [r4, 0x10]                          |     fp = *(0xb006);
                                                             |     do {
    0x000056cc ldr r3, [r4, 8]                               |         r3 = *((r4 + 8));
                                                             |         if (r3 == 0) {
    0x000056ce cbz r3, 0x56fe                                |             goto label_6;
                                                             |         }
                                                             | label_0:
    0x000056d0 ldr r3, [r4]                                  |         r3 = *(r4);
    0x000056d2 mul r3, r8, r3                                |         r3 = r8 * r3;
    0x000056d6 ldr.w r3, [fp, r3]                            |         r3 = *((fp + r3));
    0x000056da subs r3, r5, r3                               |         r3 = r5 - r3;
    0x000056dc cmp r6, r3                                    |         
                                                             |         if (r6 >= r3) {
    0x000056de bhs 0x56fe                                    |             goto label_6;
                                                             |         }
    0x000056e0 ldr r3, [r4, 8]                               |         r3 = *((r4 + 8));
    0x000056e2 cmp r3, 0                                     |         
    0x000056e4 beq 0x56cc                                    |         
                                                             |     } while (r3 == 0);
    0x000056e6 ldr r0, [r4]                                  |     r0 = *(r4);
    0x000056e8 ldr r1, [r4, 0xc]                             |     r1 = *((r4 + 0xc));
    0x000056ea adds r0, 1                                    |     r0++;
    0x000056ec bl 0x6414                                     |     fcn_00006414 (r0);
    0x000056f0 str r1, [r4]                                  |     *(r4) = r1;
    0x000056f2 ldr r3, [r4, 8]                               |     r3 = *((r4 + 8));
    0x000056f4 subs r3, 1                                    |     r3--;
    0x000056f6 str r3, [r4, 8]                               |     *((r4 + 8)) = r3;
    0x000056f8 ldr r3, [r4, 8]                               |     r3 = *((r4 + 8));
    0x000056fa cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x000056fc bne 0x56d0                                    |         goto label_0;
                                                             |     }
                                                             | label_6:
    0x000056fe ldr r4, [pc, 0x230]                           |     
    0x00005700 add r4, pc                                    |     r4 = 0xb036;
    0x00005702 ldr r3, [r4, 0xc]                             |     r3 = *(0xb042);
    0x00005704 cmp r3, 0x32                                  |     
    0x00005706 bhi 0x57c8                                    |     
                                                             |     while (r3 < r2) {
                                                             | label_1:
    0x00005708 ldr r4, [pc, 0x228]                           |         
    0x0000570a blx 0x13a8                                    |         random ();
    0x0000570e str r5, [sp, 0x304]                           |         var_304h = r5;
    0x00005710 mov r6, r0                                    |         r6 = r0;
    0x00005712 add r4, pc                                    |         r4 = 0xb04a;
    0x00005714 add r3, sp, 0x308                             |         r3 += var_308h;
    0x00005716 ldr r2, [r4, 0x18]                            |         
    0x00005718 ldr r0, [r2]                                  |         r0 = *(0xb062);
    0x0000571a ldr r1, [r2, 4]                               |         r1 = *(0xb066);
    0x0000571c ldr r2, [r2, 8]                               |         r2 = *(0xb06a);
    0x0000571e stm r3!, {r0, r1, r2}                         |         *(r3!) = r0;
                                                             |         *((r3! + 4)) = r1;
                                                             |         *((r3! + 8)) = r2;
    0x00005720 str r6, [sp, 0x314]                           |         var_314h = r6;
    0x00005722 add r6, sp, 0x20                              |         r6 += var_20h;
    0x00005724 mov r0, r6                                    |         r0 = r6;
    0x00005726 bl 0x5cd0                                     |         fcn_00005cd0 (r0);
    0x0000572a movs r2, 0x14                                 |         r2 = 0x14;
    0x0000572c mov r0, r6                                    |         r0 = r6;
    0x0000572e add r1, sp, 0x304                             |         r1 += var_304h;
    0x00005730 bl 0x5d04                                     |         fcn_00005d04 (r0, r1, r2);
    0x00005734 mov r1, r6                                    |         r1 = r6;
    0x00005736 add r6, sp, 0x2f4                             |         r6 += var_2f4h;
    0x00005738 mov r0, r6                                    |         r0 = r6;
    0x0000573a bl 0x5d08                                     |         fcn_00005d08 (r0, r1);
    0x0000573e mov r0, r6                                    |         r0 = r6;
    0x00005740 add r6, sp, 0x318                             |         r6 += var_318h;
    0x00005742 mov r1, r6                                    |         r1 = r6;
    0x00005744 bl 0x5da4                                     |         fcn_00005da4 (r0);
    0x00005748 str r6, [sp, 0xc]                             |         var_ch = r6;
    0x0000574a add r6, sp, 0x280                             |         r6 += src;
    0x0000574c ldr.w r3, [sl, 4]                             |         r3 = var_4h;
    0x00005750 movs r2, 1                                    |         r2 = 1;
    0x00005752 mov r0, r6                                    |         r0 = r6;
    0x00005754 strd r5, r3, [sp, 4]                          |         __asm ("strd r5, r3, [var_4h_2]");
    0x00005758 ldr r3, [pc, 0x1dc]                           |         
    0x0000575a add r3, pc                                    |         r3 = 0xb096;
    0x0000575c str r3, [sp]                                  |         *(sp) = r3;
    0x0000575e movs r3, 0x30                                 |         r3 = 0x30;
    0x00005760 mov r1, r3                                    |         r1 = r3;
    0x00005762 blx 0x15ec                                    |         fcn_000015ec ();
    0x00005766 movs r2, 0x30                                 |         r2 = 0x30;
    0x00005768 ldr r0, [sp, 0x10]                            |         r0 = dest;
    0x0000576a mov r1, r6                                    |         r1 = r6;
    0x0000576c blx 0x1408                                    |         strncpy (r0, r1, r2);
    0x00005770 ldr r3, [r4, 8]                               |         r3 = *(0xb052);
    0x00005772 ldr r2, [r4, 0xc]                             |         r2 = *(0xb056);
    0x00005774 str r5, [r7]                                  |         *(r7) = r5;
    0x00005776 adds r3, 1                                    |         r3++;
    0x00005778 cmp r3, r2                                    |         
                                                             |         if (r3 >= r2) {
    0x0000577a bhs 0x5808                                    |             goto label_7;
                                                             |         }
                                                             | label_2:
    0x0000577c ldr r4, [pc, 0x1bc]                           |         
    0x0000577e mov.w r2, 0x27c                               |         r2 = 0x27c;
    0x00005782 mov r1, r7                                    |         r1 = r7;
    0x00005784 add r4, pc                                    |         r4 = 0xb0c4;
    0x00005786 ldr r3, [r4, 0x10]                            |         r3 = *(0xb0d4);
    0x00005788 ldr r0, [r4, 4]                               |         r0 = *(0xb0c8);
    0x0000578a mla r0, r2, r0, r3                            |         __asm ("mla r0, r2, r0, r3");
    0x0000578e blx 0x158c                                    |         fcn_0000158c ();
    0x00005792 ldr r0, [r4, 4]                               |         r0 = *(0xb0c8);
    0x00005794 ldr r1, [r4, 0xc]                             |         r1 = *(0xb0d0);
    0x00005796 adds r0, 1                                    |         r0++;
    0x00005798 bl 0x6414                                     |         fcn_00006414 (r0);
    0x0000579c str r1, [r4, 4]                               |         *((r4 + 4)) = r1;
    0x0000579e mov r0, sb                                    |         r0 = sb;
    0x000057a0 ldr r3, [r4, 8]                               |         r3 = *(0xb0cc);
    0x000057a2 adds r3, 1                                    |         r3++;
    0x000057a4 str r3, [r4, 8]                               |         *((r4 + 8)) = r3;
    0x000057a6 blx 0x1524                                    |         fcn_00001524 ();
    0x000057aa ldr r2, [pc, 0x194]                           |         
    0x000057ac ldr r3, [pc, 0x16c]                           |         r3 = *(0x591c);
    0x000057ae add r2, pc                                    |         r2 = 0xb0f4;
    0x000057b0 ldr r3, [r2, r3]                              |         r3 = *(0xb0f4);
    0x000057b2 ldr r2, [r3]                                  |         r2 = *(0xb0f4);
    0x000057b4 ldr r3, [sp, 0x33c]                           |         r3 = var_33ch;
    0x000057b6 eors r2, r3                                   |         r2 ^= r3;
    0x000057b8 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x000057bc bne.w 0x5904                                  |             goto label_8;
                                                             |         }
    0x000057c0 add.w sp, sp, 0x344                           |         
    0x000057c4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |         
    0x000057c8 ldr r2, [r4, 8]                               |         r2 = *((r4 + 8));
    0x000057ca ldr r3, [r4, 0xc]                             |         r3 = *((r4 + 0xc));
    0x000057cc cmp.w r3, r2, lsl 2                           |         
    0x000057d0 bls 0x5708                                    |         
                                                             |     }
    0x000057d2 ldr r2, [r4]                                  |     r2 = *(r4);
    0x000057d4 ldr r3, [r4, 4]                               |     r3 = *((r4 + 4));
    0x000057d6 cmp r2, r3                                    |     
                                                             |     if (r2 > r3) {
    0x000057d8 bhi 0x5708                                    |         goto label_1;
                                                             |     }
    0x000057da ldr r3, [r4, 8]                               |     r3 = *((r4 + 8));
    0x000057dc cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x000057de beq 0x58a6                                    |         goto label_9;
                                                             |     }
    0x000057e0 ldr r3, [r4]                                  |     r3 = *(r4);
    0x000057e2 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x000057e4 bne 0x58e0                                    |         goto label_10;
                                                             |     }
                                                             | label_4:
    0x000057e6 ldr r6, [pc, 0x15c]                           |     
    0x000057e8 mov.w r1, 0x27c                               |     r1 = 0x27c;
    0x000057ec mov r0, fp                                    |     r0 = fp;
    0x000057ee add r6, pc                                    |     r6 = 0xb138;
    0x000057f0 ldr r4, [r6, 4]                               |     r4 = *(0xb13c);
    0x000057f2 adds r4, 0xa                                  |     r4 += 0xa;
    0x000057f4 mul r1, r4, r1                                |     r1 = r4 * r1;
    0x000057f8 blx 0x16f4                                    |     r0 = fcn_000016f4 ();
    0x000057fc cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000057fe beq.w 0x5908                                  |         goto label_11;
                                                             |     }
    0x00005802 str r0, [r6, 0x10]                            |     *((r6 + 0x10)) = r0;
    0x00005804 str r4, [r6, 0xc]                             |     *((r6 + 0xc)) = r4;
    0x00005806 b 0x5708                                      |     goto label_1;
                                                             | label_7:
    0x00005808 mov r0, sb                                    |     r0 = sb;
    0x0000580a mov.w r8, 0x27c                               |     r8 = 0x27c;
    0x0000580e blx 0x154c                                    |     fcn_0000154c ();
    0x00005812 ldr r6, [r4, 0xc]                             |     r6 = *((r4 + 0xc));
    0x00005814 ldr r0, [r4, 0xc]                             |     r0 = *((r4 + 0xc));
    0x00005816 bl 0x3e18                                     |     r0 = fcn_00003e18 ();
    0x0000581a mul r1, r8, r0                                |     r1 = r8 * r0;
    0x0000581e mov r5, r0                                    |     r5 = r0;
    0x00005820 ldr r0, [r4, 0x10]                            |     r0 = *((r4 + 0x10));
    0x00005822 blx 0x16f4                                    |     r0 = fcn_000016f4 ();
    0x00005826 mov r1, r0                                    |     r1 = r0;
                                                             |     if (r0 != 0) {
    0x00005828 cbz r0, 0x5878                                |         
    0x0000582a str r5, [r4, 0xc]                             |         *((r4 + 0xc)) = r5;
    0x0000582c ldr r2, [r4]                                  |         r2 = *(r4);
    0x0000582e ldr r3, [r4, 4]                               |         r3 = *((r4 + 4));
    0x00005830 str r0, [r4, 0x10]                            |         *((r4 + 0x10)) = r0;
    0x00005832 cmp r2, r3                                    |         
                                                             |         if (r2 >= r3) {
    0x00005834 bls 0x5860                                    |             
    0x00005836 ldr r0, [r4]                                  |             r0 = *(r4);
    0x00005838 subs r5, r5, r6                               |             r5 -= r6;
    0x0000583a ldr r3, [r4]                                  |             r3 = *(r4);
    0x0000583c add r0, r5                                    |             r0 += r5;
    0x0000583e mla r0, r8, r0, r1                            |             __asm ("mla r0, r8, r0, r1");
    0x00005842 mla r1, r8, r3, r1                            |             __asm ("mla r1, r8, r3, r1");
    0x00005846 ldr r3, [r4]                                  |             r3 = *(r4);
    0x00005848 subs r6, r6, r3                               |             r6 -= r3;
    0x0000584a mul r2, r8, r6                                |             r2 = r8 * r6;
    0x0000584e blx 0x1694                                    |             fcn_00001694 ();
    0x00005852 ldr r3, [r4]                                  |             r3 = *(r4);
    0x00005854 mov r0, sb                                    |             r0 = sb;
    0x00005856 add r5, r3                                    |             r5 += r3;
    0x00005858 str r5, [r4]                                  |             *(r4) = r5;
    0x0000585a blx 0x1524                                    |             fcn_00001524 ();
    0x0000585e b 0x577c                                      |             goto label_2;
                                                             |         }
    0x00005860 mov r0, sb                                    |         r0 = sb;
    0x00005862 blx 0x1524                                    |         fcn_00001524 ();
    0x00005866 b 0x577c                                      |         goto label_2;
                                                             | label_5:
    0x00005868 bl 0x288c                                     |         fcn_0000288c ();
    0x0000586c str r0, [r4, 0x18]                            |         *((r4 + 0x18)) = r0;
    0x0000586e bl 0x4338                                     |         fcn_00004338 ();
    0x00005872 blx 0x1604                                    |         fcn_00001604 ();
    0x00005876 b 0x5696                                      |         goto label_3;
                                                             |     }
    0x00005878 ldr r2, [pc, 0xcc]                            |     
    0x0000587a movs r1, 1                                    |     r1 = 1;
    0x0000587c movs r0, 3                                    |     r0 = 3;
    0x0000587e add r2, pc                                    |     r2 = 0xb1ca;
    0x00005880 blx 0x1610                                    |     fcn_00001610 ();
    0x00005884 mov r0, sb                                    |     r0 = sb;
    0x00005886 blx 0x1524                                    |     fcn_00001524 ();
    0x0000588a ldr r3, [r4, 8]                               |     r3 = *((r4 + 8));
    0x0000588c cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x0000588e beq.w 0x577c                                  |         goto label_2;
                                                             |     }
    0x00005892 ldr r0, [r4]                                  |     r0 = *(r4);
    0x00005894 ldr r1, [r4, 0xc]                             |     r1 = *((r4 + 0xc));
    0x00005896 adds r0, 1                                    |     r0++;
    0x00005898 bl 0x6414                                     |     fcn_00006414 (r0);
    0x0000589c str r1, [r4]                                  |     *(r4) = r1;
    0x0000589e ldr r3, [r4, 8]                               |     r3 = *((r4 + 8));
    0x000058a0 subs r3, 1                                    |     r3--;
    0x000058a2 str r3, [r4, 8]                               |     *((r4 + 8)) = r3;
    0x000058a4 b 0x577c                                      |     goto label_2;
                                                             | label_9:
    0x000058a6 mov r0, sb                                    |     r0 = sb;
    0x000058a8 str r3, [sp, 0x14]                            |     var_14h = r3;
    0x000058aa blx 0x154c                                    |     fcn_0000154c ();
    0x000058ae mov r0, sb                                    |     r0 = sb;
    0x000058b0 ldrb r6, [r4, 0x14]                           |     r6 = *((r4 + 0x14));
    0x000058b2 blx 0x154c                                    |     fcn_0000154c ();
    0x000058b6 ldr r0, [r4, 0x10]                            |     r0 = *((r4 + 0x10));
    0x000058b8 uxtb r6, r6                                   |     r6 = (int8_t) r6;
                                                             |     if (r0 != 0) {
    0x000058ba cbz r0, 0x58c4                                |         
    0x000058bc blx 0x14f0                                    |         fcn_000014f0 ();
    0x000058c0 ldr r3, [sp, 0x14]                            |         r3 = var_14h;
    0x000058c2 str r3, [r4, 0x10]                            |         *((r4 + 0x10)) = r3;
                                                             |     }
    0x000058c4 ldr r4, [pc, 0x84]                            |     
    0x000058c6 movs r3, 0                                    |     r3 = 0;
    0x000058c8 mov r0, sb                                    |     r0 = sb;
    0x000058ca add r4, pc                                    |     r4 = 0xb21a;
    0x000058cc strb r3, [r4, 0x14]                           |     *((r4 + 0x14)) = r3;
    0x000058ce blx 0x1524                                    |     fcn_00001524 ();
    0x000058d2 bl 0x5504                                     |     fcn_00005504 ();
    0x000058d6 mov r0, sb                                    |     r0 = sb;
    0x000058d8 strb r6, [r4, 0x14]                           |     *((r4 + 0x14)) = r6;
    0x000058da blx 0x1524                                    |     fcn_00001524 ();
    0x000058de b 0x5708                                      |     goto label_1;
                                                             | label_10:
    0x000058e0 ldr r1, [r4]                                  |     r1 = *(r4);
    0x000058e2 mov r0, fp                                    |     r0 = fp;
    0x000058e4 ldr r2, [r4, 4]                               |     r2 = *((r4 + 4));
    0x000058e6 ldr r3, [r4]                                  |     r3 = *(r4);
    0x000058e8 subs r2, r2, r3                               |     r2 -= r3;
    0x000058ea mov.w r3, 0x27c                               |     r3 = 0x27c;
    0x000058ee mul r2, r3, r2                                |     r2 = r3 * r2;
    0x000058f2 mla r1, r3, r1, fp                            |     __asm ("mla r1, r3, r1, fp");
    0x000058f6 blx 0x1694                                    |     fcn_00001694 ();
    0x000058fa movs r3, 0                                    |     r3 = 0;
    0x000058fc str r3, [r4]                                  |     *(r4) = r3;
    0x000058fe ldr r3, [r4, 8]                               |     r3 = *((r4 + 8));
    0x00005900 str r3, [r4, 4]                               |     *((r4 + 4)) = r3;
    0x00005902 b 0x57e6                                      |     goto label_4;
                                                             | label_8:
    0x00005904 blx 0x1658                                    |     fcn_00001658 ();
                                                             | label_11:
    0x00005908 ldr r2, [pc, 0x44]                            |     
    0x0000590a movs r1, 1                                    |     r1 = 1;
    0x0000590c movs r0, 3                                    |     r0 = 3;
    0x0000590e add r2, pc                                    |     r2 = 0xb262;
    0x00005910 blx 0x1610                                    |     fcn_00001610 ();
    0x00005914 b 0x5708                                      |     goto label_1;
                                                             | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libhttp_auth.so @ 0x5d08 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.00005d08 ()                  | void fcn_00005d08 (int16_t arg1, int16_t arg2) {
                                             |     int16_t var_4h;
                                             |     int16_t var_ch;
                                             |     int16_t var_4ch;
                                             |     r0 = arg1;
                                             |     r1 = arg2;
                                             |     do {
    0x00001494 bx pc                         |         return void (*pc)() ();
    0x00005d08 push {r4, r5, r6, r7, lr}     |         
    0x00005d0a mov r5, r0                    |         r5 = r0;
    0x00005d0c ldr r0, [pc, 0x88]            |         
    0x00005d0e sub sp, 0x54                  |         
    0x00005d10 add r7, sp, 0xc               |         r7 += var_ch;
    0x00005d12 mov r4, r1                    |         r4 = r1;
    0x00005d14 ldr r3, [pc, 0x84]            |         r3 = *(0x5d9c);
    0x00005d16 movs r1, 0                    |         r1 = 0;
    0x00005d18 add r0, pc                    |         r0 = 0xbab4;
    0x00005d1a movs r2, 0x40                 |         r2 = 0x40;
    0x00005d1c add r6, sp, 4                 |         r6 += var_4h;
    0x00005d1e ldr r3, [r0, r3]              |         
    0x00005d20 mov r0, r7                    |         r0 = r7;
    0x00005d22 ldr r3, [r3]                  |         r3 = *(0xbab4);
    0x00005d24 str r3, [sp, 0x4c]            |         var_4ch = r3;
    0x00005d26 mov.w r3, 0                   |         r3 = 0;
    0x00005d2a blx 0x1498                    |         policykit_system_auth_user_basic ()
    0x00005d2e ldr r2, [r4, 0x10]            |         r2 = *((r4 + 0x10));
    0x00005d30 movs r3, 0x80                 |         r3 = 0x80;
    0x00005d32 ldr r0, [r4, 0x10]            |         r0 = *((r4 + 0x10));
    0x00005d34 ldr r1, [r4, 0x14]            |         r1 = *((r4 + 0x14));
    0x00005d36 ubfx r2, r2, 3, 6             |         r2 = (r2 >> 3) & ((1 << 6) - 1);
    0x00005d3a strb.w r3, [sp, 0xc]          |         var_ch = r3;
    0x00005d3e cmp r2, 0x37                  |         
    0x00005d40 mov r3, r6                    |         r3 = r6;
    0x00005d42 stm r3!, {r0, r1}             |         *(r3!) = r0;
                                             |         *((r3! + 4)) = r1;
    0x00005d44 ite ls                        |         
                                             |         if (r2 <= 0x37) {
    0x00005d46 rsbls r2, r2, 0x38            |             __asm ("rsbls r2, r2, 0x38");
                                             |         }
                                             |         if (r2 > 0x37) {
    0x00005d4a rsb.w r2, r2, 0x78            |             r2 = 0x78 - r2;
                                             |         }
    0x00005d4e mov r1, r7                    |         r1 = r7;
    0x00005d50 mov r0, r4                    |         r0 = r4;
    0x00005d52 bl 0x5c48                     |         fcn_00005c48 (r0, r1, r2);
    0x00005d56 movs r2, 8                    |         r2 = 8;
    0x00005d58 mov r1, r6                    |         r1 = r6;
    0x00005d5a mov r0, r4                    |         r0 = r4;
    0x00005d5c bl 0x5c48                     |         fcn_00005c48 (r0, r1, r2);
    0x00005d60 ldr r2, [r4, 8]               |         r2 = *((r4 + 8));
    0x00005d62 ldr r3, [r4, 0xc]             |         r3 = *((r4 + 0xc));
    0x00005d64 ldr r0, [r4]                  |         r0 = *(r4);
    0x00005d66 ldr r1, [r4, 4]               |         r1 = *((r4 + 4));
    0x00005d68 str r2, [r5, 8]               |         *((r5 + 8)) = r2;
    0x00005d6a ldr r2, [pc, 0x34]            |         
    0x00005d6c str r3, [r5, 0xc]             |         *((r5 + 0xc)) = r3;
    0x00005d6e ldr r3, [pc, 0x2c]            |         r3 = *(0x5d9e);
    0x00005d70 add r2, pc                    |         r2 = 0xbb16;
    0x00005d72 str r0, [r5]                  |         *(r5) = r0;
    0x00005d74 str r1, [r5, 4]               |         *((r5 + 4)) = r1;
    0x00005d76 ldr r3, [r2, r3]              |         r3 = *(0xbb16);
    0x00005d78 ldr r2, [r3]                  |         r2 = *(0xbb16);
    0x00005d7a ldr r3, [sp, 0x4c]            |         r3 = var_4ch;
    0x00005d7c eors r2, r3                   |         r2 ^= r3;
    0x00005d7e mov.w r3, 0                   |         r3 = 0;
                                             |         if (r2 != r3) {
    0x00005d82 bne 0x5d94                    |             goto label_0;
                                             |         }
    0x00005d84 movs r2, 0x58                 |         r2 = 0x58;
    0x00005d86 movs r1, 0                    |         r1 = 0;
    0x00005d88 mov r0, r4                    |         r0 = r4;
    0x00005d8a add sp, 0x54                  |         
    0x00005d8c pop.w {r4, r5, r6, r7, lr}    |         
    0x00005d90 b.w 0x1494                    |         
                                             |     } while (1);
                                             | label_0:
    0x00005d94 blx 0x1658                    |     fcn_00001658 ();
    0x00005d98 movs r1, 0x78                 |     r1 = 0x78;
    0x00005d9a movs r1, r0                   |     r1 = r0;
    0x00005d9c lsls r4, r3, 5                |     r4 = r3 << 5;
    0x00005d9e movs r0, r0                   |     
    0x00005da0 movs r1, 0x20                 |     r1 = 0x20;
    0x00005da2 movs r1, r0                   |     r1 = r0;
                                             | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libhttp_auth.so @ 0x2630 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.http_auth_server_auth_user ()                | void http_auth_server_auth_user (int16_t arg_38h, int16_t arg_44h, int16_t arg_48h, int16_t arg_4ch, int16_t arg_50h, int16_t arg_54h, int16_t arg_58h, int16_t arg_5ch, int16_t arg_64h, int16_t arg_66h, int16_t arg_68h, int16_t arg_6ch, int16_t arg_70h, int16_t arg_74h, int16_t arg_78h, int16_t arg_7ch, int16_t arg_80h, int16_t arg_84h, int16_t arg_88h, int16_t arg_94h, int16_t arg_a0h, int16_t arg_ach, int16_t arg_b8h, int16_t arg_c4h, int16_t arg_d4h, int16_t arg_ech, int16_t arg_110h, int16_t arg_134h, int16_t arg_138h, int16_t arg_158h, int16_t arg_15ch, int16_t arg_17ch, int16_t arg_1ach, int16_t arg_218h, int16_t arg_25ch, int16_t arg_260h, int16_t arg_65ch, int16_t arg1, uint32_t arg2, int16_t arg3, uint32_t arg4) {
                                                             |     char * var_0h;
                                                             |     int16_t var_4h_2;
                                                             |     int16_t var_8h;
                                                             |     int16_t var_4h;
                                                             |     int16_t var_10h_2;
                                                             |     int16_t var_ch;
                                                             |     int16_t var_10h;
                                                             |     char * var_14h;
                                                             |     char * str;
                                                             |     int16_t var_24h;
                                                             |     char * var_28h;
                                                             |     int16_t var_2ch;
                                                             |     char * var_30h;
                                                             |     int16_t var_34h;
                                                             |     int16_t var_38h;
                                                             |     int16_t var_3ch;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
                                                             | label_11:
    0x00001e14 svcmi 0xf0e92d                                |     __asm ("svcmi 0xf0e92d");
    0x00001e18 subw sp, sp, 0x664                            |     __asm ("subw sp, sp, 0x664");
    0x00001e1c strd r2, r1, [sp, 0x3c]                       |     __asm ("strd r2, r1, [sp, 0x3c]");
    0x00001e20 add r6, sp, 0x25c                             |     r6 += arg_25ch;
    0x00001e22 movs r5, 0                                    |     r5 = 0;
    0x00001e24 mov r4, r0                                    |     r4 = r0;
    0x00001e26 ldr.w r2, [pc, 0x624]                         |     r2 = *(0x0000244c);
    0x00001e2a mov r1, r5                                    |     r1 = r5;
    0x00001e2c str r3, [sp, 0x48]                            |     *(arg_48h) = r3;
    0x00001e2e add r0, sp, 0x260                             |     r0 += arg_260h;
    0x00001e30 ldr.w r3, [pc, 0x61c]                         |     
    0x00001e34 add r2, pc                                    |     r2 += pc;
    0x00001e36 str r6, [sp, 0x28]                            |     var_28h = r6;
    0x00001e38 ldr r3, [r2, r3]                              |     r3 = *((r2 + r3));
    0x00001e3a mov.w r2, 0x3fc                               |     r2 = 0x3fc;
    0x00001e3e ldr r3, [r3]                                  |     r3 = *(0x2450);
    0x00001e40 str.w r3, [sp, 0x65c]                         |     __asm ("str.w r3, [arg_65ch]");
    0x00001e44 mov.w r3, 0                                   |     r3 = 0;
    0x00001e48 str r5, [sp, 0x25c]                           |     *(arg_25ch) = r5;
    0x00001e4a blx 0x1498                                    |     policykit_system_auth_user_basic ()
    0x00001e4e movw r3, 0x444d                               |     
    0x00001e52 add r0, sp, 0x70                              |     r0 += arg_70h;
    0x00001e54 movt r3, 0x35                                 |     r3 = 0x35444d;
    0x00001e58 str r0, [sp, 0x30]                            |     var_30h = r0;
    0x00001e5a str r3, [sp, 0xb8]                            |     *(arg_b8h) = r3;
    0x00001e5c add r0, sp, 0xb8                              |     r0 += arg_b8h;
    0x00001e5e add r3, sp, 0x7c                              |     r3 += arg_7ch;
    0x00001e60 mov r1, r5                                    |     r1 = r5;
    0x00001e62 str r0, [sp, 0x38]                            |     var_38h = r0;
    0x00001e64 movs r2, 0x1d                                 |     r2 = 0x1d;
    0x00001e66 str r3, [sp, 0x20]                            |     str = r3;
    0x00001e68 add r0, sp, 0x138                             |     r0 += arg_138h;
    0x00001e6a add r3, sp, 0x134                             |     r3 += arg_134h;
    0x00001e6c str r5, [sp, 0x74]                            |     *(arg_74h) = r5;
    0x00001e6e strb.w r5, [sp, 0x78]                         |     *(arg_78h) = r5;
    0x00001e72 strd r5, r5, [sp, 0xbc]                       |     __asm ("strd r5, r5, [sp, 0xbc]");
    0x00001e76 str r5, [sp, 0x80]                            |     *(arg_80h) = r5;
    0x00001e78 strb.w r5, [sp, 0x84]                         |     *(arg_84h) = r5;
    0x00001e7c str r5, [sp, 0x70]                            |     *(arg_70h) = r5;
    0x00001e7e str r5, [sp, 0x7c]                            |     *(arg_7ch) = r5;
    0x00001e80 str r3, [sp, 0x2c]                            |     var_2ch = r3;
    0x00001e82 str r5, [sp, 0x134]                           |     *(arg_134h) = r5;
    0x00001e84 blx 0x1498                                    |     policykit_system_auth_user_basic ()
    0x00001e88 ldr.w r1, [pc, 0x5c8]                         |     
    0x00001e8c mov r0, r4                                    |     r0 = r4;
    0x00001e8e add r1, pc                                    |     r1 = 0x42e6;
    0x00001e90 blx 0x1540                                    |     r0 = strlen (r0);
    0x00001e94 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00001e96 beq.w 0x2328                                  |         goto label_20;
                                                             |     }
    0x00001e9a ldr.w r1, [pc, 0x5bc]                         |     
    0x00001e9e add.w sb, sp, 0x218                           |     sb += arg_218h;
    0x00001ea2 movs r3, 0x41                                 |     r3 = 0x41;
    0x00001ea4 mov r2, sb                                    |     r2 = sb;
    0x00001ea6 mov r6, r0                                    |     r6 = r0;
    0x00001ea8 add r1, pc                                    |     r1 = 0x4306;
    0x00001eaa blx 0x1564                                    |     r0 = g_variant_lookup ();
    0x00001eae cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00001eb0 bne.w 0x2328                                  |         goto label_20;
                                                             |     }
    0x00001eb4 ldr.w r1, [pc, 0x5a4]                         |     
    0x00001eb8 add.w fp, sp, 0x1dc                           |     
    0x00001ebc movs r3, 0x39                                 |     r3 = 0x39;
    0x00001ebe mov r2, fp                                    |     r2 = fp;
    0x00001ec0 mov r0, r6                                    |     r0 = r6;
    0x00001ec2 add r1, pc                                    |     r1 = 0x4322;
    0x00001ec4 blx 0x1564                                    |     r0 = g_variant_lookup ();
    0x00001ec8 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00001eca bne.w 0x2328                                  |         goto label_20;
                                                             |     }
    0x00001ece ldr.w r1, [pc, 0x590]                         |     
    0x00001ed2 add.w sl, sp, 0xec                            |     sl += arg_ech;
    0x00001ed6 movs r3, 0x21                                 |     r3 = 0x21;
    0x00001ed8 mov r2, sl                                    |     r2 = sl;
    0x00001eda mov r0, r6                                    |     r0 = r6;
    0x00001edc add r1, pc                                    |     r1 = 0x4342;
    0x00001ede blx 0x1564                                    |     r0 = g_variant_lookup ();
    0x00001ee2 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00001ee4 bne.w 0x2328                                  |         goto label_20;
                                                             |     }
    0x00001ee8 mov r1, fp                                    |     r1 = fp;
    0x00001eea mov r0, sb                                    |     r0 = sb;
    0x00001eec bl 0x4b14                                     |     r0 = fcn_00004b14 (r0, r1);
    0x00001ef0 cmp r0, 0                                     |     
                                                             |     if (r0 < 0) {
    0x00001ef2 blt.w 0x2328                                  |         goto label_20;
                                                             |     }
    0x00001ef6 ldr.w r4, [pc, 0x56c]                         |     
    0x00001efa mov r0, r6                                    |     r0 = r6;
    0x00001efc add r4, pc                                    |     r4 = 0x4366;
    0x00001efe mov r1, r4                                    |     r1 = r4;
    0x00001f00 blx 0x1540                                    |     r0 = strlen (r0);
                                                             |     if (r0 != 0) {
    0x00001f04 cbz r0, 0x1f26                                |         
    0x00001f06 ldr.w r3, [pc, 0x560]                         |         r3 = *(0x00002468);
    0x00001f0a add r3, pc                                    |         r3 += pc;
    0x00001f0c ldrb r3, [r3]                                 |         r3 = *(r3);
    0x00001f0e cmp r3, 0                                     |         
                                                             |         if (r3 == 0) {
    0x00001f10 beq.w 0x2328                                  |             goto label_20;
                                                             |         }
    0x00001f14 mov r1, r4                                    |         r1 = r4;
    0x00001f16 ldr r4, [sp, 0x20]                            |         r4 = str;
    0x00001f18 movs r3, 9                                    |         r3 = 9;
    0x00001f1a mov r2, r4                                    |         r2 = r4;
    0x00001f1c blx 0x14d8                                    |         r0 = fcn_000014d8 ();
    0x00001f20 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00001f22 beq.w 0x21d6                                  |             goto label_21;
                                                             |         }
                                                             |     }
    0x00001f26 movs r3, 0                                    |     r3 = 0;
    0x00001f28 str r3, [sp, 0x1c]                            |     var_14h = r3;
                                                             | label_3:
    0x00001f2a mov.w r0, 0x3e8                               |     r0 = 0x3e8;
    0x00001f2e blx 0x164c                                    |     r0 = fcn_0000164c ();
    0x00001f32 mov r4, r0                                    |     r4 = r0;
    0x00001f34 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00001f36 beq.w 0x2440                                  |         goto label_22;
                                                             |     }
    0x00001f3a ldr.w r1, [pc, 0x530]                         |     
    0x00001f3e add r3, sp, 0x17c                             |     r3 += arg_17ch;
    0x00001f40 mov r2, r3                                    |     r2 = r3;
    0x00001f42 str r3, [sp, 0x24]                            |     var_24h = r3;
    0x00001f44 mov r0, r6                                    |     r0 = r6;
    0x00001f46 movs r3, 0x30                                 |     r3 = 0x30;
    0x00001f48 add r1, pc                                    |     r1 = 0x43ba;
    0x00001f4a blx 0x1564                                    |     r0 = g_variant_lookup ();
    0x00001f4e mov r5, r0                                    |     r5 = r0;
    0x00001f50 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00001f52 bne.w 0x21cc                                  |         goto label_23;
                                                             |     }
    0x00001f56 ldr r3, [sp, 0x1c]                            |     r3 = var_14h;
    0x00001f58 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00001f5a bne.w 0x21a4                                  |         goto label_24;
                                                             |     }
                                                             | label_0:
    0x00001f5e ldr.w r1, [pc, 0x510]                         |     
    0x00001f62 movs r3, 0x21                                 |     r3 = 0x21;
    0x00001f64 mov r2, sl                                    |     r2 = sl;
    0x00001f66 mov r0, r6                                    |     r0 = r6;
    0x00001f68 add r1, pc                                    |     r1 = 0x43de;
    0x00001f6a blx 0x1564                                    |     r0 = g_variant_lookup ();
    0x00001f6e mov r7, r0                                    |     r7 = r0;
    0x00001f70 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00001f72 bne.w 0x21cc                                  |         goto label_23;
                                                             |     }
    0x00001f76 ldr.w r1, [pc, 0x4fc]                         |     
    0x00001f7a mov.w r3, 0x3e8                               |     r3 = 0x3e8;
    0x00001f7e mov r2, r4                                    |     r2 = r4;
    0x00001f80 mov r0, r6                                    |     r0 = r6;
    0x00001f82 add r1, pc                                    |     r1 = 0x43fc;
    0x00001f84 blx 0x1564                                    |     r0 = g_variant_lookup ();
    0x00001f88 mov r5, r0                                    |     r5 = r0;
    0x00001f8a cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00001f8c beq.w 0x21f0                                  |         goto label_25;
                                                             |     }
    0x00001f90 cmp r0, 1                                     |     
                                                             |     if (r0 <= 1) {
    0x00001f92 ble.w 0x240a                                  |         goto label_26;
                                                             |     }
    0x00001f96 ldr.w r7, [pc, 0x4e0]                         |     
    0x00001f9a add r7, pc                                    |     r7 = 0x4418;
    0x00001f9c b 0x1fa0                                      |     
                                                             |     while (r0 > 1) {
    0x00001f9e mov r5, r0                                    |         r5 = r0;
    0x00001fa0 mov r0, r4                                    |         r0 = r4;
    0x00001fa2 mov r1, r5                                    |         r1 = r5;
    0x00001fa4 mov r8, r4                                    |         r8 = r4;
    0x00001fa6 blx 0x16f4                                    |         r0 = fcn_000016f4 ();
    0x00001faa mov r4, r0                                    |         r4 = r0;
    0x00001fac cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00001fae beq.w 0x241a                                  |             goto label_27;
                                                             |         }
    0x00001fb2 mov r2, r0                                    |         r2 = r0;
    0x00001fb4 mov r3, r5                                    |         r3 = r5;
    0x00001fb6 mov r1, r7                                    |         r1 = r7;
    0x00001fb8 mov r0, r6                                    |         r0 = r6;
    0x00001fba blx 0x1564                                    |         r0 = g_variant_lookup ();
    0x00001fbe cmp r0, 1                                     |         
    0x00001fc0 bgt 0x1f9e                                    |         
                                                             |     }
    0x00001fc2 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00001fc4 bne.w 0x21cc                                  |         goto label_23;
                                                             |     }
                                                             | label_5:
    0x00001fc8 ldr.w r1, [pc, 0x4b0]                         |     
    0x00001fcc mov.w r3, 0x400                               |     r3 = 0x400;
    0x00001fd0 ldr r2, [sp, 0x28]                            |     r2 = var_28h;
    0x00001fd2 mov r0, r6                                    |     r0 = r6;
    0x00001fd4 add r1, pc                                    |     r1 = 0x4454;
    0x00001fd6 blx 0x1564                                    |     r0 = g_variant_lookup ();
    0x00001fda mov r7, r0                                    |     r7 = r0;
    0x00001fdc cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00001fde bne.w 0x21c4                                  |         goto label_28;
                                                             |     }
    0x00001fe2 ldr.w r3, [pc, 0x49c]                         |     r3 = *(0x00002480);
    0x00001fe6 add r3, pc                                    |     r3 += pc;
    0x00001fe8 ldrb r3, [r3]                                 |     r3 = *(r3);
    0x00001fea and r2, r3, 0xff                              |     r2 = r3 & 0xff;
    0x00001fee cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00001ff0 beq.w 0x2412                                  |         goto label_29;
                                                             |     }
    0x00001ff4 mov r0, r6                                    |     r0 = r6;
    0x00001ff6 ldr.w r6, [pc, 0x48c]                         |     
    0x00001ffa add r6, pc                                    |     r6 = 0x4484;
    0x00001ffc mov r1, r6                                    |     r1 = r6;
    0x00001ffe blx 0x1540                                    |     r0 = strlen (r0);
                                                             |     if (r0 != 0) {
    0x00002002 cbz r0, 0x202c                                |         
    0x00002004 ldr.w r8, [sp, 0x38]                          |         r8 = var_38h;
    0x00002008 mov r1, r6                                    |         r1 = r6;
    0x0000200a movs r3, 0xc                                  |         r3 = 0xc;
    0x0000200c mov r2, r8                                    |         r2 = r8;
    0x0000200e blx 0x14d8                                    |         r0 = fcn_000014d8 ();
    0x00002012 mov r6, r0                                    |         r6 = r0;
    0x00002014 cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x00002016 bne.w 0x240a                                  |             goto label_26;
                                                             |         }
    0x0000201a ldr.w r1, [pc, 0x46c]                         |         
    0x0000201e mov r0, r8                                    |         r0 = r8;
    0x00002020 add r1, pc                                    |         r1 = 0x44ae;
    0x00002022 blx 0x1450                                    |         r0 = strcasecmp (r0, r1);
    0x00002026 cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x00002028 bne.w 0x2424                                  |             goto label_30;
                                                             |         }
                                                             |     }
                                                             | label_2:
    0x0000202c add r7, sp, 0xc4                              |     r7 += arg_c4h;
    0x0000202e mov r1, fp                                    |     r1 = fp;
    0x00002030 mov r2, r7                                    |     r2 = r7;
    0x00002032 mov r0, sb                                    |     r0 = sb;
    0x00002034 bl 0x5060                                     |     r0 = fcn_00005060 (r0, r1, r2);
    0x00002038 mov r6, r0                                    |     r6 = r0;
    0x0000203a cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x0000203c bne.w 0x21cc                                  |         goto label_23;
                                                             |     }
    0x00002040 ldr.w fp, [sp, 0x28]                          |     fp = var_28h;
    0x00002044 add r3, sp, 0x110                             |     r3 += arg_110h;
    0x00002046 ldr.w r8, [sp, 0x24]                          |     r8 = var_24h;
    0x0000204a ldr r0, [sp, 0x38]                            |     r0 = var_38h;
    0x0000204c mov r2, fp                                    |     r2 = fp;
    0x0000204e str r3, [sp, 0x44]                            |     *(arg_44h) = r3;
    0x00002050 mov r1, r8                                    |     r1 = r8;
    0x00002052 str r3, [sp]                                  |     *(sp) = r3;
    0x00002054 mov r3, r7                                    |     r3 = r7;
    0x00002056 bl 0x6010                                     |     fcn_00006010 (r0, r1, r2, r3);
    0x0000205a ldr r2, [sp, 0x2c]                            |     r2 = var_2ch;
    0x0000205c mov r1, r8                                    |     r1 = r8;
    0x0000205e ldr r0, [sp, 0x44]                            |     r0 = *(arg_44h);
    0x00002060 mov r3, fp                                    |     r3 = fp;
    0x00002062 str r4, [sp, 8]                               |     var_8h = r4;
    0x00002064 strd r6, r2, [sp, 0xc]                        |     __asm ("strd r6, r2, [sp, 0xc]");
    0x00002068 ldr r2, [sp, 0x40]                            |     r2 = *(arg_38h);
    0x0000206a str r2, [sp, 4]                               |     var_4h_2 = r2;
    0x0000206c ldr r2, [sp, 0x20]                            |     r2 = str;
    0x0000206e str r2, [sp]                                  |     *(sp) = r2;
    0x00002070 ldr r2, [sp, 0x30]                            |     r2 = var_30h;
    0x00002072 bl 0x6030                                     |     fcn_00006030 (r0, r1, r2, r3, r4, r5, r6);
    0x00002076 ldr r0, [sp, 0x2c]                            |     r0 = var_2ch;
    0x00002078 mov r1, sl                                    |     r1 = sl;
    0x0000207a blx 0x1718                                    |     r0 = fcn_00001718 ();
    0x0000207e cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00002080 bne.w 0x21f6                                  |         goto label_31;
                                                             |     }
    0x00002084 str r0, [sp, 0x34]                            |     var_34h = r0;
                                                             | label_6:
    0x00002086 ldr r3, [sp, 0x1c]                            |     r3 = var_14h;
    0x00002088 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x0000208a beq.w 0x21ec                                  |         goto label_32;
                                                             |     }
    0x0000208e ldr r2, [sp, 0x58]                            |     r2 = *(arg_58h);
                                                             | label_4:
    0x00002090 ldr r1, [sp, 0x24]                            |     r1 = var_24h;
    0x00002092 mov r0, sb                                    |     r0 = sb;
    0x00002094 bl 0x5954                                     |     r0 = fcn_00005954 (r0, r1, r2, r3, r4, r5, r6);
    0x00002098 mov r5, r0                                    |     r5 = r0;
    0x0000209a cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0000209c bne 0x2176                                    |         
    0x0000209e ldr r3, [pc, 0x3ec]                           |         
    0x000020a0 add r2, sp, 0xac                              |         r2 += arg_ach;
    0x000020a2 ldr r7, [pc, 0x3ec]                           |         
    0x000020a4 mov ip, r2                                    |         
    0x000020a6 str r2, [sp, 0x50]                            |         *(arg_50h) = r2;
    0x000020a8 add r2, sp, 0x88                              |         r2 += arg_88h;
    0x000020aa add r3, pc                                    |         
    0x000020ac mov sl, r2                                    |         sl = r2;
    0x000020ae ldr r3, [r3]                                  |         r3 = *(0x453c);
    0x000020b0 add r0, sp, 0x94                              |         r0 += arg_94h;
    0x000020b2 str r2, [sp, 0x40]                            |         *(arg_38h) = r2;
    0x000020b4 add r2, sp, 0x64                              |         r2 += arg_64h;
    0x000020b6 str r2, [sp, 0x38]                            |         var_38h = r2;
    0x000020b8 add r7, pc                                    |         r7 = 0x454e;
    0x000020ba strh.w r3, [sp, 0x64]                         |         *(arg_64h) = r3;
    0x000020be add r2, sp, 0x158                             |         r2 += arg_158h;
    0x000020c0 lsrs r3, r3, 0x10                             |         r3 >>= 0x10;
    0x000020c2 mov sb, r0                                    |         sb = r0;
    0x000020c4 str r0, [sp, 0x4c]                            |         *(arg_4ch) = r0;
    0x000020c6 add.w r8, sp, 0xd4                            |         r8 += arg_d4h;
    0x000020ca strb.w r3, [sp, 0x66]                         |         *(arg_66h) = r3;
    0x000020ce add r3, sp, 0xa0                              |         r3 += arg_a0h;
    0x000020d0 mov lr, r3                                    |         lr = r3;
    0x000020d2 str r3, [sp, 0x54]                            |         *(arg_54h) = r3;
    0x000020d4 add r3, sp, 0x68                              |         r3 += arg_68h;
    0x000020d6 str r2, [sp, 0x1c]                            |         var_14h = r2;
    0x000020d8 str r3, [sp, 0x2c]                            |         var_2ch = r3;
    0x000020da mov r6, r8                                    |         r6 = r8;
    0x000020dc ldm r7!, {r0, r1, r2, r3}                     |         r0 = *(r7!);
                                                             |         r1 = *((r7! + 4));
                                                             |         r2 = *((r7! + 8));
                                                             |         r3 = *((r7! + 12));
    0x000020de ldr.w fp, [pc, 0x3b4]                         |         
    0x000020e2 stm r6!, {r0, r1, r2, r3}                     |         *(r6!) = r0;
                                                             |         *((r6! + 4)) = r1;
                                                             |         *((r6! + 8)) = r2;
                                                             |         *((r6! + 12)) = r3;
    0x000020e4 ldm.w r7, {r0, r1}                            |         r0 = *(r7);
                                                             |         r1 = *((r7 + 4));
    0x000020e8 add fp, pc                                    |         fp = 0x4582;
    0x000020ea ldr r3, [pc, 0x3ac]                           |         
    0x000020ec str r0, [r6], 4                               |         *(r6) = r0;
                                                             |         r6 += 4;
    0x000020f0 strh r1, [r6]                                 |         *(r6) = r1;
    0x000020f2 ldm.w fp, {r0, r1, r2}                        |         r0 = *(fp);
                                                             |         r1 = *((fp + 4));
                                                             |         r2 = *((fp + 8));
    0x000020f6 add r3, pc                                    |         r3 = 0x4594;
    0x000020f8 stm.w ip!, {r0, r1}                           |         *(ip!) = r0;
                                                             |         *((ip! + 4)) = r1;
    0x000020fc strh r2, [ip], 2                              |         *(ip) = r2;
                                                             |         ip += 2;
    0x00002100 lsrs r2, r2, 0x10                             |         r2 >>= 0x10;
    0x00002102 strb.w r2, [ip]                               |         *(ip) = r2;
    0x00002106 ldm.w r3, {r0, r1, r2}                        |         r0 = *(r3);
                                                             |         r1 = *((r3 + 4));
                                                             |         r2 = *((r3 + 8));
    0x0000210a ldr r3, [pc, 0x390]                           |         
    0x0000210c stm.w sl!, {r0, r1}                           |         *(sl!) = r0;
                                                             |         *((sl! + 4)) = r1;
    0x00002110 add r3, pc                                    |         r3 = 0x45b2;
    0x00002112 strb.w r2, [sl]                               |         *(sl) = r2;
    0x00002116 ldm.w r3, {r0, r1, r2}                        |         r0 = *(r3);
                                                             |         r1 = *((r3 + 4));
                                                             |         r2 = *((r3 + 8));
    0x0000211a ldr r3, [pc, 0x384]                           |         
    0x0000211c stm.w sb!, {r0, r1}                           |         *(sb!) = r0;
                                                             |         *((sb! + 4)) = r1;
    0x00002120 strb.w r2, [sb]                               |         *(sb) = r2;
    0x00002124 add r3, pc                                    |         r3 = 0x45ca;
    0x00002126 ldr r2, [sp, 0x1c]                            |         r2 = var_14h;
    0x00002128 str r5, [r2]                                  |         *(r2) = r5;
    0x0000212a ldm.w r3, {r0, r1, r2}                        |         r0 = *(r3);
                                                             |         r1 = *((r3 + 4));
                                                             |         r2 = *((r3 + 8));
    0x0000212e ldr r3, [pc, 0x374]                           |         
    0x00002130 stm.w lr!, {r0, r1}                           |         *(lr!) = r0;
                                                             |         *((lr! + 4)) = r1;
    0x00002134 add r3, pc                                    |         r3 = 0x45de;
    0x00002136 strh.w r2, [lr]                               |         *(lr) = r2;
    0x0000213a ldm.w r3, {r0, r1}                            |         r0 = *(r3);
                                                             |         r1 = *((r3 + 4));
    0x0000213e movs r2, 0x1d                                 |         r2 = 0x1d;
    0x00002140 ldr r3, [sp, 0x2c]                            |         r3 = var_2ch;
    0x00002142 strh.w r1, [sp, 0x6c]                         |         *(arg_6ch) = r1;
    0x00002146 mov r1, r5                                    |         r1 = r5;
    0x00002148 str r0, [r3]                                  |         *(r3) = r0;
    0x0000214a add r0, sp, 0x15c                             |         r0 += arg_15ch;
    0x0000214c blx 0x1498                                    |         policykit_system_auth_user_basic ()
    0x00002150 ldr r0, [sp, 0x20]                            |         r0 = str;
    0x00002152 blx 0x1558                                    |         strtoul (r0, r1, r2);
    0x00002156 ldr r6, [sp, 0x3c]                            |         r6 = var_3ch;
    0x00002158 mov r2, r8                                    |         r2 = r8;
    0x0000215a ldr r1, [sp, 0x48]                            |         r1 = *(arg_48h);
    0x0000215c mov r7, r0                                    |         r7 = r0;
    0x0000215e movs r3, 0x16                                 |         r3 = 0x16;
    0x00002160 strb r5, [r6]                                 |         *(r6) = r5;
    0x00002162 mov r0, r6                                    |         r0 = r6;
    0x00002164 bl 0x3ed0                                     |         fcn_00003ed0 (r0, r1, r2, r3);
    0x00002166 cdp2 p6, 0xb, c4, c4, c5, 0                   |         __asm ("cdp2 p6, 0xb, c4, c4, c5, 0");
    0x0000216a cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x0000216c beq.w 0x229e                                  |             goto label_33;
                                                             |         }
                                                             | label_7:
    0x00002170 ldr r2, [sp, 0x3c]                            |         r2 = var_3ch;
    0x00002172 movs r3, 0                                    |         r3 = 0;
    0x00002174 strb r3, [r2]                                 |         *(r2) = r3;
                                                             |     }
                                                             | label_1:
    0x00002176 mov r0, r4                                    |     r0 = r4;
    0x00002178 blx 0x14f0                                    |     fcn_000014f0 ();
    0x0000217c ldr r0, [sp, 0x34]                            |     r0 = var_34h;
    0x0000217e blx 0x14f0                                    |     fcn_000014f0 ();
    0x00002182 ldr r2, [pc, 0x324]                           |     
    0x00002184 ldr r3, [pc, 0x2c8]                           |     r3 = *(0x2450);
    0x00002186 add r2, pc                                    |     r2 = 0x4634;
    0x00002188 ldr r3, [r2, r3]                              |     r3 = *(0x4634);
    0x0000218a ldr r2, [r3]                                  |     r2 = *(0x4634);
    0x0000218c ldr.w r3, [sp, 0x65c]                         |     r3 = *(arg_65ch);
    0x00002190 eors r2, r3                                   |     r2 ^= r3;
    0x00002192 mov.w r3, 0                                   |     r3 = 0;
                                                             |     if (r2 != r3) {
    0x00002196 bne.w 0x2448                                  |         goto label_34;
                                                             |     }
    0x0000219a mov r0, r5                                    |     r0 = r5;
    0x0000219c addw sp, sp, 0x664                            |     __asm ("addw sp, sp, 0x664");
    0x000021a0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |     
                                                             | label_24:
    0x000021a4 ldr r1, [pc, 0x304]                           |     
    0x000021a6 add r3, sp, 0x58                              |     r3 += arg_58h;
    0x000021a8 str r3, [sp]                                  |     *(sp) = r3;
    0x000021aa mov r0, r6                                    |     r0 = r6;
    0x000021ac ldr r2, [sp, 0x30]                            |     r2 = var_30h;
    0x000021ae movs r3, 9                                    |     r3 = 9;
    0x000021b0 add r1, pc                                    |     r1 = 0x4660;
    0x000021b2 bl 0x4274                                     |     r0 = fcn_00004274 (r0, r1, r2, r3, r4);
    0x000021b6 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000021b8 beq.w 0x1f5e                                  |         goto label_0;
                                                             |     }
    0x000021bc str r5, [sp, 0x34]                            |     var_34h = r5;
    0x000021be mvn r5, 0xbe                                  |     r5 = ~0xbe;
    0x000021c2 b 0x2176                                      |     goto label_1;
                                                             | label_28:
    0x000021c4 ldr r3, [sp, 0x1c]                            |     r3 = var_14h;
    0x000021c6 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x000021c8 beq.w 0x202c                                  |         goto label_2;
                                                             |     }
                                                             | label_23:
    0x000021cc movs r3, 0                                    |     r3 = 0;
    0x000021ce mvn r5, 0xbe                                  |     r5 = ~0xbe;
    0x000021d0 lsls r6, r7, 0x16                             |     r6 = r7 << 0x16;
    0x000021d2 str r3, [sp, 0x34]                            |     var_34h = r3;
    0x000021d4 b 0x2176                                      |     goto label_1;
                                                             | label_21:
    0x000021d6 ldr r1, [pc, 0x2d8]                           |     
    0x000021d8 mov r0, r4                                    |     r0 = r4;
    0x000021da add r1, pc                                    |     r1 = 0x4690;
    0x000021dc blx 0x1450                                    |     r0 = strcasecmp (r0, r1);
    0x000021e0 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000021e2 bne.w 0x2328                                  |         goto label_20;
                                                             |     }
    0x000021e6 movs r3, 1                                    |     r3 = 1;
    0x000021e8 str r3, [sp, 0x1c]                            |     var_14h = r3;
    0x000021ea b 0x1f2a                                      |     goto label_3;
                                                             | label_32:
    0x000021ec ldr r2, [sp, 0x1c]                            |     r2 = var_14h;
    0x000021ee b 0x2090                                      |     goto label_4;
                                                             | label_25:
    0x000021f0 mov.w r5, 0x3e8                               |     r5 = 0x3e8;
    0x000021f4 b 0x1fc8                                      |     goto label_5;
                                                             | label_31:
    0x000021f6 mov r0, r5                                    |     r0 = r5;
    0x000021f8 blx 0x164c                                    |     fcn_0000164c ();
    0x000021fc str r0, [sp, 0x34]                            |     var_34h = r0;
    0x000021fe cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00002200 beq.w 0x243a                                  |         goto label_35;
                                                             |     }
    0x00002204 ldr.w r8, [pc, 0x2ac]                         |     
    0x00002208 mov fp, r0                                    |     
    0x0000220a mov r1, r4                                    |     r1 = r4;
    0x0000220c blx 0x15bc                                    |     fcn_000015bc ();
    0x00002210 add r8, pc                                    |     r8 = 0x46c8;
    0x00002212 mov r0, fp                                    |     r0 = fp;
    0x00002214 mov r1, r8                                    |     r1 = r8;
    0x00002216 blx 0x161c                                    |     r0 = fcn_0000161c ();
    0x0000221a mov r5, r0                                    |     r5 = r0;
                                                             |     if (r0 == 0) {
    0x0000221c cbz r0, 0x2240                                |         goto label_36;
                                                             |     }
                                                             |     do {
    0x0000221e add.w fp, r0, 1                               |         
    0x00002222 movs r6, 1                                    |         r6 = 1;
    0x00002224 blx 0x1558                                    |         strtoul (r0, r1, r2);
    0x00002228 mov r1, fp                                    |         r1 = fp;
    0x0000222a mov r2, r0                                    |         r2 = r0;
    0x0000222c mov r0, r5                                    |         r0 = r5;
    0x0000222e blx 0x1694                                    |         fcn_00001694 ();
    0x00002230 bics.w r6, r2, r8, lsr 17                     |         __asm ("bics.w r6, r2, r8, lsr 17");
    0x00002234 mov r1, r8                                    |         r1 = r8;
    0x00002236 blx 0x161c                                    |         r0 = fcn_0000161c ();
    0x0000223a mov r5, r0                                    |         r5 = r0;
    0x0000223c cmp r0, 0                                     |         
    0x0000223e bne 0x221e                                    |         
                                                             |     } while (r0 != 0);
                                                             |     if (r6 == 0) {
                                                             | label_36:
    0x00002240 cbz r6, 0x2284                                |         goto label_37;
                                                             |     }
    0x00002242 ldr r6, [sp, 0x44]                            |     r6 = *(arg_44h);
    0x00002244 mov r3, r7                                    |     r3 = r7;
    0x00002246 ldr.w r8, [sp, 0x28]                          |     r8 = var_28h;
    0x0000224a ldr r7, [sp, 0x24]                            |     r7 = var_24h;
    0x0000224c ldr r0, [sp, 0x38]                            |     r0 = var_38h;
    0x0000224e mov r2, r8                                    |     r2 = r8;
    0x00002250 str r6, [sp]                                  |     *(sp) = r6;
    0x00002252 mov r1, r7                                    |     r1 = r7;
    0x00002254 bl 0x6010                                     |     fcn_00006010 (r0, r1, r2, r3);
    0x00002258 ldr r0, [sp, 0x40]                            |     r0 = *(arg_38h);
    0x0000225a mov r1, r7                                    |     r1 = r7;
    0x0000225c str r5, [sp, 0xc]                             |     var_4h = r5;
    0x0000225e mov r3, r8                                    |     r3 = r8;
    0x00002260 ldr r5, [sp, 0x2c]                            |     r5 = var_2ch;
    0x00002262 str r0, [sp, 4]                               |     var_4h_2 = r0;
    0x00002264 ldr r0, [sp, 0x34]                            |     r0 = var_34h;
    0x00002266 ldr r2, [sp, 0x30]                            |     r2 = var_30h;
    0x00002268 str r5, [sp, 0x10]                            |     var_10h_2 = r5;
    0x0000226a str r0, [sp, 8]                               |     var_8h = r0;
    0x0000226c ldr r0, [sp, 0x20]                            |     r0 = str;
    0x0000226e str r0, [sp]                                  |     *(sp) = r0;
    0x00002270 mov r0, r6                                    |     r0 = r6;
    0x00002272 bl 0x6030                                     |     fcn_00006030 (r0, r1, r2, r3, r4, r5, r6);
    0x00002276 mov r1, sl                                    |     r1 = sl;
    0x00002278 mov r0, r5                                    |     r0 = r5;
    0x0000227a blx 0x1718                                    |     r0 = fcn_00001718 ();
    0x0000227e cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00002280 beq.w 0x2086                                  |         goto label_6;
                                                             |     }
                                                             | label_37:
    0x00002284 mov.w r3, 0x2d00                              |     r3 = 0x2d00;
    0x00002288 add r0, sp, 0x5c                              |     r0 += arg_5ch;
    0x0000228a movs r1, 0                                    |     r1 = 0;
    0x0000228c movt r3, 0x131                                |     r3 = (r3 & 0xFFFF) | 0x1310000;
    0x00002290 str r1, [r0]                                  |     *(r0) = r1;
    0x00002292 mvn r5, 0xbe                                  |     r5 = ~0xbe;
    0x00002296 str r3, [r0, 4]                               |     *((r0 + 4)) = r3;
    0x00002298 blx 0x16e8                                    |     fcn_000016e8 ();
    0x0000229c b 0x2176                                      |     goto label_1;
                                                             | label_33:
    0x0000229e mov r1, r0                                    |     r1 = r0;
    0x000022a0 movs r2, 0x10                                 |     r2 = 0x10;
    0x000022a2 ldr r0, [sp, 0x24]                            |     r0 = var_24h;
    0x000022a4 blx 0x15b0                                    |     r0 = fcn_000015b0 ();
    0x000022a8 mov r5, r0                                    |     r5 = r0;
    0x000022aa bl 0x55e4                                     |     r0 = fcn_000055e4 ();
    0x000022ae subs r5, r0, r5                               |     r5 = r0 - r5;
    0x000022b0 bl 0x562c                                     |     r0 = fcn_0000562c ();
    0x000022b4 add.w r0, r0, r0, lsl 1                       |     r0 += (r0 << 1);
    0x000022b8 cmp.w r5, r0, lsr 2                           |     
                                                             |     if (r5 > r0) {
    0x000022bc bgt 0x2334                                    |         goto label_38;
                                                             |     }
    0x000022be cmp r7, 0                                     |     
                                                             |     if (r7 != 0) {
    0x000022c0 bne 0x2380                                    |         goto label_39;
                                                             |     }
    0x000022c2 mov r6, r7                                    |     r6 = r7;
                                                             | label_8:
    0x000022c4 ldr r3, [sp, 0x20]                            |     r3 = str;
    0x000022c6 ldr r1, [sp, 0x24]                            |     r1 = var_24h;
    0x000022c8 ldr r0, [sp, 0x44]                            |     r0 = *(arg_44h);
    0x000022ca str r3, [sp]                                  |     *(sp) = r3;
    0x000022cc ldr r3, [sp, 0x1c]                            |     r3 = var_14h;
    0x000022ce ldr r2, [sp, 0x30]                            |     r2 = var_30h;
    0x000022d0 str r4, [sp, 8]                               |     var_8h = r4;
    0x000022d2 str r3, [sp, 0x10]                            |     var_10h_2 = r3;
    0x000022d4 ldr r3, [pc, 0x1e0]                           |     
    0x000022d6 add r3, pc                                    |     r3 = 0x4792;
    0x000022d8 str r3, [sp, 4]                               |     var_4h_2 = r3;
    0x000022da movs r3, 0                                    |     r3 = 0;
    0x000022dc str r3, [sp, 0xc]                             |     var_4h = r3;
    0x000022de ldr r3, [sp, 0x28]                            |     r3 = var_28h;
    0x000022e0 bl 0x6030                                     |     fcn_00006030 (r0, r1, r2, r3, r4, r5, r6);
    0x000022e4 ldr.w sb, [sp, 0x48]                          |     sb = *(arg_48h);
    0x000022e8 movs r3, 9                                    |     r3 = 9;
    0x000022ea ldr.w r8, [sp, 0x3c]                          |     r8 = var_3ch;
    0x000022ee ldr r2, [sp, 0x4c]                            |     r2 = *(arg_4ch);
    0x000022f0 mov r1, sb                                    |     r1 = sb;
    0x000022f2 mov r0, r8                                    |     r0 = r8;
    0x000022f4 bl 0x3ed0                                     |     r0 = fcn_00003ed0 (r0, r1, r2, r3);
    0x000022f8 mov r5, r0                                    |     r5 = r0;
    0x000022fa cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000022fc bne.w 0x2170                                  |         goto label_7;
                                                             |     }
    0x00002300 ldr r5, [sp, 0x1c]                            |     r5 = var_14h;
    0x00002302 mov r0, r5                                    |     r0 = r5;
    0x00002304 blx 0x1558                                    |     strtoul (r0, r1, r2);
    0x00002308 mov r2, r5                                    |     r2 = r5;
    0x0000230a mov r3, r0                                    |     r3 = r0;
    0x0000230c mov r1, sb                                    |     r1 = sb;
    0x0000230e mov r0, r8                                    |     r0 = r8;
    0x00002310 bl 0x3ef8                                     |     r0 = fcn_00003ef8 (r0, r1, r2, r3);
    0x00002314 mov r5, r0                                    |     r5 = r0;
    0x00002316 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00002318 bne.w 0x2170                                  |         goto label_7;
                                                             |     }
    0x0000231c cmp r7, 0                                     |     
                                                             |     if (r7 != 0) {
    0x0000231e bne 0x23aa                                    |         goto label_40;
                                                             |     }
                                                             | label_9:
    0x00002320 cmp r6, 0                                     |     
                                                             |     if (r6 == 0) {
    0x00002322 beq.w 0x2170                                  |         goto label_7;
                                                             |     }
    0x00002326 b 0x2176                                      |     goto label_1;
                                                             | label_20:
    0x00002328 movs r3, 0                                    |     r3 = 0;
    0x0000232a mvn r5, 0xbe                                  |     r5 = ~0xbe;
    0x0000232e mov r4, r3                                    |     r4 = r3;
    0x00002330 str r3, [sp, 0x34]                            |     var_34h = r3;
    0x00002332 b 0x2176                                      |     goto label_1;
                                                             | label_38:
    0x00002334 ldr.w r8, [sp, 0x48]                          |     r8 = *(arg_48h);
    0x00002338 movs r3, 0xb                                  |     r3 = 0xb;
    0x0000233a ldr r6, [sp, 0x3c]                            |     r6 = var_3ch;
    0x0000233c ldr r2, [sp, 0x50]                            |     r2 = *(arg_50h);
    0x0000233e mov r1, r8                                    |     r1 = r8;
    0x00002340 mov r0, r6                                    |     r0 = r6;
    0x00002342 bl 0x3ed0                                     |     r0 = fcn_00003ed0 (r0, r1, r2, r3);
    0x00002346 mov r5, r0                                    |     r5 = r0;
    0x00002348 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x0000234a bne.w 0x2170                                  |         goto label_7;
                                                             |     }
    0x0000234e add r5, sp, 0x1ac                             |     r5 += arg_1ach;
    0x00002350 mov r0, r5                                    |     r0 = r5;
    0x00002352 bl 0x5660                                     |     fcn_00005660 (r0, r1);
    0x00002356 mov r2, r5                                    |     r2 = r5;
    0x00002358 movs r3, 0x30                                 |     r3 = 0x30;
    0x0000235a mov r1, r8                                    |     r1 = r8;
    0x0000235c mov r0, r6                                    |     r0 = r6;
    0x0000235e bl 0x3ef8                                     |     r0 = fcn_00003ef8 (r0, r1, r2, r3);
    0x00002362 mov r5, r0                                    |     r5 = r0;
    0x00002364 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00002366 bne.w 0x2170                                  |         goto label_7;
                                                             |     }
                                                             |     if (r7 == 0) {
    0x0000236a cbz r7, 0x2394                                |         goto label_41;
                                                             |     }
    0x0000236c ldr r2, [sp, 0x38]                            |     r2 = var_38h;
    0x0000236e movs r3, 3                                    |     r3 = 3;
    0x00002370 ldr r1, [sp, 0x48]                            |     r1 = *(arg_48h);
    0x00002372 ldr r0, [sp, 0x3c]                            |     r0 = var_3ch;
    0x00002374 bl 0x3ed0                                     |     r0 = fcn_00003ed0 (r0, r1, r2, r3);
    0x00002378 mov r5, r0                                    |     r5 = r0;
    0x0000237a cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x0000237c bne.w 0x2170                                  |         goto label_7;
                                                             |     }
                                                             | label_39:
    0x00002380 ldr r2, [sp, 0x40]                            |     r2 = *(arg_38h);
    0x00002382 movs r3, 9                                    |     r3 = 9;
    0x00002384 ldr r1, [sp, 0x48]                            |     r1 = *(arg_48h);
    0x00002386 ldr r0, [sp, 0x3c]                            |     r0 = var_3ch;
    0x00002388 bl 0x3ed0                                     |     r0 = fcn_00003ed0 (r0, r1, r2, r3);
    0x0000238c mov r5, r0                                    |     r5 = r0;
    0x0000238e cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00002390 bne.w 0x2170                                  |         goto label_7;
                                                             |     }
                                                             | label_41:
    0x00002394 ldr r2, [sp, 0x38]                            |     r2 = var_38h;
    0x00002396 movs r3, 3                                    |     r3 = 3;
    0x00002398 ldr r1, [sp, 0x48]                            |     r1 = *(arg_48h);
    0x0000239a movs r6, 1                                    |     r6 = 1;
    0x0000239c ldr r0, [sp, 0x3c]                            |     r0 = var_3ch;
    0x0000239e bl 0x3ed0                                     |     r0 = fcn_00003ed0 (r0, r1, r2, r3);
    0x000023a2 mov r5, r0                                    |     r5 = r0;
    0x000023a4 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000023a6 beq 0x22c4                                    |         goto label_8;
                                                             |     }
    0x000023a8 b 0x2170                                      |     goto label_7;
                                                             | label_40:
    0x000023aa ldr.w r8, [sp, 0x48]                          |     r8 = *(arg_48h);
    0x000023ae movs r3, 0xa                                  |     r3 = 0xa;
    0x000023b0 ldr r7, [sp, 0x3c]                            |     r7 = var_3ch;
    0x000023b2 ldr r2, [sp, 0x54]                            |     r2 = *(arg_54h);
    0x000023b4 mov r1, r8                                    |     r1 = r8;
    0x000023b6 mov r0, r7                                    |     r0 = r7;
    0x000023b8 bl 0x3ed0                                     |     r0 = fcn_00003ed0 (r0, r1, r2, r3);
    0x000023bc mov r3, r0                                    |     r3 = r0;
                                                             |     if (r0 != 0) {
    0x000023be cbnz r0, 0x2406                               |         goto label_42;
                                                             |     }
    0x000023c0 ldr.w sb, [sp, 0x28]                          |     sb = var_28h;
    0x000023c4 mov r0, sb                                    |     r0 = sb;
    0x000023c6 blx 0x1558                                    |     strtoul (r0, r1, r2);
    0x000023ca mov r2, sb                                    |     r2 = sb;
    0x000023cc mov r3, r0                                    |     r3 = r0;
    0x000023ce mov r1, r8                                    |     r1 = r8;
    0x000023d0 mov r0, r7                                    |     r0 = r7;
    0x000023d2 bl 0x3ef8                                     |     r0 = fcn_00003ef8 (r0, r1, r2, r3);
    0x000023d6 mov r3, r0                                    |     r3 = r0;
                                                             |     if (r0 != 0) {
    0x000023d8 cbnz r0, 0x2406                               |         goto label_42;
                                                             |     }
    0x000023da movs r3, 6                                    |     r3 = 6;
    0x000023dc ldr r2, [sp, 0x2c]                            |     r2 = var_2ch;
    0x000023de mov r1, r8                                    |     r1 = r8;
    0x000023e0 mov r0, r7                                    |     r0 = r7;
    0x000023e2 bl 0x3ed0                                     |     r0 = fcn_00003ed0 (r0, r1, r2, r3);
    0x000023e6 mov r3, r0                                    |     r3 = r0;
                                                             |     if (r0 != 0) {
    0x000023e8 cbnz r0, 0x2406                               |         goto label_42;
                                                             |     }
    0x000023ea ldr.w sb, [sp, 0x30]                          |     sb = var_30h;
    0x000023ee mov r0, sb                                    |     r0 = sb;
    0x000023f0 blx 0x1558                                    |     strtoul (r0, r1, r2);
    0x000023f4 mov r2, sb                                    |     r2 = sb;
    0x000023f6 mov r3, r0                                    |     r3 = r0;
    0x000023f8 mov r1, r8                                    |     r1 = r8;
    0x000023fa mov r0, r7                                    |     r0 = r7;
    0x000023fc bl 0x3ed0                                     |     r0 = fcn_00003ed0 (r0, r1, r2, r3);
    0x00002400 mov r3, r0                                    |     r3 = r0;
    0x00002402 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00002404 beq 0x2320                                    |         goto label_9;
                                                             |     }
                                                             | label_42:
    0x00002406 mov r5, r3                                    |     r5 = r3;
    0x00002408 b 0x2170                                      |     goto label_7;
                                                             | label_26:
    0x0000240a mvn r5, 0xbe                                  |     r5 = ~0xbe;
    0x0000240e str r7, [sp, 0x34]                            |     var_34h = r7;
    0x00002410 b 0x2176                                      |     goto label_1;
                                                             | label_29:
    0x00002412 mvn r5, 0xbe                                  |     r5 = ~0xbe;
    0x00002416 str r2, [sp, 0x34]                            |     var_34h = r2;
    0x00002418 b 0x2176                                      |     goto label_1;
                                                             | label_27:
    0x0000241a mvn r5, 0xb7                                  |     r5 = ~0xb7;
    0x0000241e mov r4, r8                                    |     r4 = r8;
    0x00002420 str r0, [sp, 0x34]                            |     var_34h = r0;
    0x00002422 b 0x2176                                      |     goto label_1;
                                                             | label_30:
    0x00002424 ldr r2, [pc, 0x94]                            |     
    0x00002426 movs r1, 1                                    |     r1 = 1;
    0x00002428 ldr r3, [sp, 0x38]                            |     r3 = var_38h;
    0x0000242a movs r0, 3                                    |     r0 = 3;
    0x0000242c str r6, [sp, 0x34]                            |     var_34h = r6;
    0x0000242e mvn r5, 0xbe                                  |     r5 = ~0xbe;
    0x00002432 add r2, pc                                    |     r2 = 0x48f2;
    0x00002434 blx 0x1610                                    |     fcn_00001610 ();
    0x00002438 b 0x2176                                      |     goto label_1;
                                                             | label_35:
    0x0000243a mvn r5, 0xb7                                  |     r5 = ~0xb7;
    0x0000243e b 0x2176                                      |     goto label_1;
                                                             | label_22:
    0x00002440 mvn r5, 0xb7                                  |     r5 = ~0xb7;
    0x00002444 str r0, [sp, 0x34]                            |     var_34h = r0;
    0x00002446 b 0x2176                                      |     goto label_1;
                                                             | label_34:
    0x00002448 blx 0x1658                                    |     fcn_00001658 ();
    0x0000244c str r4, [r3, 4]                               |     *((r3 + 4)) = r4;
    0x0000244e movs r1, r0                                   |     r1 = r0;
    0x00002450 lsls r4, r3, 5                                |     r4 = r3 << 5;
    0x00002452 movs r0, r0                                   |     
    0x00002454 ldr r0, [pc, 8]                               |     r0 = *(0x2460);
    0x00002456 movs r0, r0                                   |     
    0x00002458 blx lr                                        |     r0 = lr (r0, r1);
    0x0000245a movs r0, r0                                   |     
    0x0000245c invalid                                       |     
    0x00002630 push.w {r4, r5, r6, r7, r8, sb, lr}           |     
    0x00002634 sub sp, 0x1c                                  |     
    0x00002636 ldr r5, [pc, 0x224]                           |     
    0x00002638 ldr r4, [pc, 0x224]                           |     r4 = *(0x2860);
    0x0000263a add r5, pc                                    |     r5 = 0x4e9c;
    0x0000263c ldr.w ip, [pc, 0x224]                         |     ip = *(0x00002864);
    0x00002640 ldr.w r8, [sp, 0x38]                          |     r8 = *(arg_38h);
    0x00002644 ldr r4, [r5, r4]                              |     
    0x00002646 add ip, pc                                    |     
    0x00002648 ldr r5, [pc, 0x21c]                           |     
    0x0000264a ldr r4, [r4]                                  |     r4 = *(0x4e9c);
    0x0000264c str r4, [sp, 0x14]                            |     var_14h = r4;
    0x0000264e mov.w r4, 0                                   |     r4 = 0;
    0x00002652 mov r4, r0                                    |     r4 = r0;
    0x00002654 movs r0, 0                                    |     r0 = 0;
    0x00002656 add r5, pc                                    |     r5 = 0x4ec2;
    0x00002658 strd r0, r0, [sp, 8]                          |     __asm ("strd r0, r0, [var_10h_2]");
    0x0000265c ldrb.w r0, [ip, 2]                            |     r0 = *((ip + 2));
                                                             |     if (r0 == 0) {
    0x00002660 cbz r0, 0x2672                                |         goto label_43;
                                                             |     }
    0x00002662 cmp r4, 0                                     |     
    0x00002664 it ne                                         |     
                                                             |     if (r4 != 0) {
    0x00002666 cmpne r3, 0                                   |         __asm ("cmpne r3, 0");
                                                             |     }
    0x00002668 mov r6, r3                                    |     r6 = r3;
    0x0000266a bne 0x2694                                    |     
                                                             |     while (r1 == 0) {
    0x0000266c mvn r5, 0xc4                                  |         r5 = ~0xc4;
    0x00002670 b 0x2676                                      |         goto label_10;
                                                             | label_43:
    0x00002672 mvn r5, 0xc5                                  |         r5 = ~0xc5;
                                                             | label_10:
    0x00002676 ldr r2, [pc, 0x1f4]                           |         
    0x00002678 ldr r3, [pc, 0x1e4]                           |         r3 = *(0x2860);
    0x0000267a add r2, pc                                    |         r2 = 0x4eec;
    0x0000267c ldr r3, [r2, r3]                              |         r3 = *(0x4eec);
    0x0000267e ldr r2, [r3]                                  |         r2 = *(0x4eec);
    0x00002680 ldr r3, [sp, 0x14]                            |         r3 = var_14h;
    0x00002682 eors r2, r3                                   |         r2 ^= r3;
    0x00002684 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x00002688 bne.w 0x2830                                  |             goto label_44;
                                                             |         }
    0x0000268c mov r0, r5                                    |         r0 = r5;
    0x0000268e add sp, 0x1c                                  |         
    0x00002690 pop.w {r4, r5, r6, r7, r8, sb, pc}            |         
    0x00002694 ldrb r3, [r4]                                 |         r3 = *(r4);
    0x00002696 mov r7, r1                                    |         r7 = r1;
    0x00002698 cmp r1, 0                                     |         
    0x0000269a it ne                                         |         
                                                             |         if (r1 != 0) {
    0x0000269c cmpne r3, 0                                   |             __asm ("cmpne r3, 0");
                                                             |         }
    0x0000269e ite eq                                        |         
                                                             |         if (r1 != 0) {
    0x000026a0 moveq r3, 1                                   |             r3 = 1;
                                                             |         }
                                                             |         if (r1 == 0) {
    0x000026a2 movne r3, 0                                   |             r3 = 0;
                                                             |         }
    0x000026a4 beq 0x266c                                    |         
                                                             |     }
    0x000026a6 ldrb.w r1, [ip, 4]                            |     r1 = *((ip + 4));
                                                             |     if (r1 != 0) {
    0x000026aa cbnz r1, 0x2706                               |         goto label_45;
                                                             |     }
                                                             | label_16:
    0x000026ac ldr.w sb, [pc, 0x1c0]                         |     sb = *(0x00002870);
    0x000026b0 add sb, pc                                    |     sb += pc;
    0x000026b2 ldrb.w r3, [sb, 5]                            |     r3 = *((sb + 5));
    0x000026b6 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x000026b8 bne 0x272e                                    |         goto label_46;
                                                             |     }
                                                             | label_12:
    0x000026ba ldr r3, [pc, 0x1b8]                           |     
    0x000026bc mov.w sb, 0                                   |     sb = 0;
    0x000026c0 strb.w sb, [r6]                               |     *(r6) = sb;
    0x000026c4 add r3, pc                                    |     r3 = 0x4f3e;
    0x000026c6 ldrb r3, [r3]                                 |     r3 = *(r3);
    0x000026c8 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x000026ca bne 0x2768                                    |         goto label_47;
                                                             |     }
    0x000026cc cmp r2, 1                                     |     
    0x000026ce it ne                                         |     
                                                             |     if (r2 == 1) {
    0x000026d0 movne r5, 1                                   |         r5 = 1;
                                                             |     }
                                                             |     if (r2 == 1) {
    0x000026d2 beq 0x26de                                    |         goto label_13;
                                                             |     }
                                                             | label_14:
    0x000026d4 ldr r3, [pc, 0x1a0]                           |     
    0x000026d6 add r3, pc                                    |     r3 = 0x4f52;
    0x000026d8 ldrb r3, [r3, 1]                              |     r3 = *((r3 + 1));
    0x000026da cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x000026dc beq 0x2676                                    |         goto label_10;
                                                             |     }
                                                             | label_13:
    0x000026de ldr r2, [pc, 0x19c]                           |     
    0x000026e0 ldr r3, [pc, 0x17c]                           |     r3 = *(0x2860);
    0x000026e2 add r2, pc                                    |     r2 = 0x4f64;
    0x000026e4 ldr r3, [r2, r3]                              |     r3 = *(0x4f64);
    0x000026e6 ldr r2, [r3]                                  |     r2 = *(0x4f64);
    0x000026e8 ldr r3, [sp, 0x14]                            |     r3 = var_14h;
    0x000026ea eors r2, r3                                   |     r2 ^= r3;
    0x000026ec mov.w r3, 0                                   |     r3 = 0;
                                                             |     if (r2 != r3) {
    0x000026f0 bne.w 0x2830                                  |         goto label_44;
                                                             |     }
    0x000026f4 mov r3, r8                                    |     r3 = r8;
    0x000026f6 mov r2, r6                                    |     r2 = r6;
    0x000026f8 mov r1, r7                                    |     r1 = r7;
    0x000026fa mov r0, r4                                    |     r0 = r4;
    0x000026fc add sp, 0x1c                                  |     
    0x000026fe pop.w {r4, r5, r6, r7, r8, sb, lr}            |     
    0x00002702 b.w 0x1e14                                    |     goto label_11;
                                                             | label_45:
    0x00002706 str r2, [sp, 4]                               |     var_4h = r2;
    0x00002708 strb.w r3, [ip, 4]                            |     *((ip + 4)) = r3;
    0x0000270c bl 0x44cc                                     |     fcn_000044cc ();
    0x00002710 blx 0x14e4                                    |     fcn_000014e4 ();
    0x00002714 ldr r2, [sp, 4]                               |     r2 = var_4h;
    0x00002716 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00002718 bne 0x278c                                    |         goto label_48;
                                                             |     }
    0x0000271a bl 0x45c8                                     |     fcn_000045c8 ();
    0x0000271e ldr r2, [sp, 4]                               |     r2 = var_4h;
                                                             | label_15:
    0x00002720 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00002722 beq 0x2796                                    |         goto label_49;
                                                             |     }
                                                             | label_17:
    0x00002724 mvn r5, 0xc6                                  |     r5 = ~0xc6;
    0x00002728 blx 0x1470                                    |     fcn_00001470 ();
    0x0000272c b 0x2676                                      |     goto label_10;
                                                             | label_46:
    0x0000272e movs r3, 0                                    |     r3 = 0;
    0x00002730 str r2, [sp, 4]                               |     var_4h = r2;
    0x00002732 strb.w r3, [sb, 5]                            |     *((sb + 5)) = r3;
    0x00002736 bl 0x1900                                     |     fcn_00001900 ();
    0x0000273a ldrb.w r3, [sb, 3]                            |     r3 = *((sb + 3));
    0x0000273e mov sb, r0                                    |     sb = r0;
    0x00002740 ldr r2, [sp, 4]                               |     r2 = var_4h;
                                                             |     if (r3 != 0) {
    0x00002742 cbnz r3, 0x27a4                               |         goto label_50;
                                                             |     }
    0x00002744 ldr r3, [pc, 0x138]                           |     
    0x00002746 movs r1, 1                                    |     r1 = 1;
    0x00002748 add r3, pc                                    |     r3 = 0x4fcc;
    0x0000274a strb r1, [r3]                                 |     *(r3) = r1;
                                                             | label_18:
    0x0000274c cmp.w sb, 0                                   |     
                                                             |     if (sb == 0) {
    0x00002750 beq 0x26ba                                    |         goto label_12;
                                                             |     }
    0x00002752 blx 0x1470                                    |     fcn_00001470 ();
    0x00002756 ldr r2, [pc, 0x12c]                           |     
    0x00002758 movs r1, 1                                    |     r1 = 1;
    0x0000275a movs r0, 3                                    |     r0 = 3;
    0x0000275c mvn r5, 0xc6                                  |     r5 = ~0xc6;
    0x00002760 add r2, pc                                    |     r2 = 0x4fea;
    0x00002762 blx 0x1610                                    |     fcn_00001610 ();
    0x00002766 b 0x2676                                      |     goto label_10;
                                                             | label_47:
    0x00002768 cmp r2, 1                                     |     
                                                             |     if (r2 == 1) {
    0x0000276a beq 0x26de                                    |         goto label_13;
                                                             |     }
    0x0000276c add r2, sp, 8                                 |     r2 += var_10h_2;
    0x0000276e add r1, sp, 0xc                               |     r1 += var_ch;
    0x00002770 mov r0, r4                                    |     r0 = r4;
    0x00002772 bl 0x1cfc                                     |     r0 = fcn_00001cfc (r0, r1, r2);
    0x00002776 cmp r0, 0                                     |     
                                                             |     if (r0 >= 0) {
    0x00002778 bge 0x27ae                                    |         goto label_51;
                                                             |     }
    0x0000277a ldr r0, [sp, 8]                               |     r0 = var_10h_2;
    0x0000277c mvn r5, 0xbe                                  |     r5 = ~0xbe;
    0x00002780 blx 0x14f0                                    |     fcn_000014f0 ();
    0x00002782 cdp p8, 0xb, c9, c6, c3, 0                    |     __asm ("cdp p8, 0xb, c9, c6, c3, 0");
    0x00002784 ldr r0, [sp, 0xc]                             |     r0 = var_ch;
    0x00002786 blx 0x14f0                                    |     fcn_000014f0 ();
    0x0000278a b 0x26d4                                      |     goto label_14;
                                                             | label_48:
    0x0000278c str r2, [sp, 4]                               |     var_4h = r2;
    0x0000278e bl 0x4810                                     |     fcn_00004810 ();
    0x00002792 ldr r2, [sp, 4]                               |     r2 = var_4h;
    0x00002794 b 0x2720                                      |     goto label_15;
                                                             | label_49:
    0x00002796 str r2, [sp, 4]                               |     var_4h = r2;
    0x00002798 bl 0x50c0                                     |     r0 = fcn_000050c0 ();
    0x0000279c cmp r0, 0                                     |     
    0x0000279e ldr r2, [sp, 4]                               |     r2 = var_4h;
                                                             |     if (r0 >= 0) {
    0x000027a0 bge 0x26ac                                    |         goto label_16;
                                                             |     }
    0x000027a2 b 0x2724                                      |     goto label_17;
                                                             | label_50:
    0x000027a4 str r2, [sp, 4]                               |     var_4h = r2;
    0x000027a6 bl 0x1b98                                     |     fcn_00001b98 ();
    0x000027aa ldr r2, [sp, 4]                               |     r2 = var_4h;
    0x000027ac b 0x274c                                      |     goto label_18;
                                                             | label_51:
    0x000027ae ldrd r7, r6, [sp, 8]                          |     __asm ("ldrd r7, r6, [var_10h_2]");
    0x000027b2 str.w sb, [sp, 0x10]                          |     __asm ("str.w sb, [var_10h]");
    0x000027b6 mov r0, r6                                    |     r0 = r6;
    0x000027b8 bl 0x4584                                     |     r0 = fcn_00004584 (r0);
    0x000027bc mov r4, r0                                    |     r4 = r0;
                                                             |     if (r0 == 0) {
    0x000027be cbz r0, 0x2822                                |         goto label_52;
                                                             |     }
    0x000027c0 blx 0x14e4                                    |     fcn_000014e4 ();
    0x000027c4 invalid                                       |     
    0x000027c6 invalid                                       |     
    0x000027ca invalid                                       |     
    0x000027ce ldrb r1, [r3, 1]                              |     r1 = *((r3 + 1));
    0x000027d0 cbnz r1, 0x27ee                               |     
                                                             |     while (r3 == 0) {
    0x000027d2 ldr r0, [r4]                                  |         r0 = *(r4);
    0x000027d4 add r2, sp, 0x10                              |         r2 += var_10h;
    0x000027d6 mov r1, r7                                    |         r1 = r7;
    0x000027d8 movs r5, 0                                    |         r5 = 0;
    0x000027da blx 0x14a4                                    |         r0 = g_dbus_connection_call_sync ();
                                                             |         if (r0 == 0) {
    0x000027de cbz r0, 0x2834                                |             goto label_53;
                                                             |         }
                                                             | label_19:
    0x000027e0 mov r0, r7                                    |         r0 = r7;
    0x000027e2 blx 0x14f0                                    |         fcn_000014f0 ();
    0x000027e6 mov r0, r6                                    |         r0 = r6;
    0x000027e8 blx 0x14f0                                    |         fcn_000014f0 ();
    0x000027ec b 0x2676                                      |         goto label_10;
    0x000027ee cmp r2, 0x21                                  |         
                                                             |         if (r2 != 0x21) {
    0x000027f0 bne 0x27f8                                    |             goto label_54;
                                                             |         }
    0x000027f2 ldrb r3, [r3, 1]                              |         r3 = *((r3 + 1));
    0x000027f4 cmp r3, 0                                     |         
    0x000027f6 beq 0x27d2                                    |         
                                                             |     }
                                                             | label_54:
    0x000027f8 ldr r3, [pc, 0x8c]                            |     r3 = *(0x2888);
    0x000027fa ldr.w r8, [r5, r3]                            |     r8 = *((r5 + r3));
    0x000027fe mov r0, r8                                    |     r0 = r8;
    0x00002800 blx 0x154c                                    |     fcn_0000154c ();
    0x00002804 ldr r1, [r4, 4]                               |     r1 = *((r4 + 4));
    0x00002806 mov r0, r7                                    |     r0 = r7;
    0x00002808 blx 0x14fc                                    |     fcn_000014fc ();
    0x0000280c ldr r1, [r4, 4]                               |     r1 = *((r4 + 4));
    0x0000280e blx 0x1718                                    |     r0 = fcn_00001718 ();
    0x00002812 mov r5, r0                                    |     r5 = r0;
                                                             |     if (r0 != 0) {
    0x00002814 cbz r0, 0x2828                                |         
    0x00002816 mov r0, r8                                    |         r0 = r8;
    0x00002818 mvn r5, 0xbd                                  |         r5 = ~0xbd;
    0x0000281c blx 0x1524                                    |         fcn_00001524 ();
    0x00002820 b 0x27e0                                      |         goto label_19;
                                                             | label_52:
    0x00002822 mvn r5, 0xbd                                  |         r5 = ~0xbd;
    0x00002826 b 0x27e0                                      |         goto label_19;
                                                             |     }
    0x00002828 mov r0, r8                                    |     r0 = r8;
    0x0000282a blx 0x1524                                    |     fcn_00001524 ();
    0x0000282e b 0x27e0                                      |     goto label_19;
                                                             | label_44:
    0x00002830 blx 0x1658                                    |     fcn_00001658 ();
                                                             | label_53:
    0x00002834 ldr r3, [sp, 0x10]                            |     r3 = var_10h;
    0x00002836 ldr r4, [r3]                                  |     r4 = *(r3);
    0x00002838 blx 0x167c                                    |     r0 = fcn_0000167c ();
    0x0000283c cmp r4, r0                                    |     
    0x0000283e ldr r0, [sp, 0x10]                            |     r0 = var_10h;
    0x00002840 beq 0x284c                                    |     
                                                             |     while (r3 != 0x20) {
    0x00002842 mvn r5, 0xbd                                  |         r5 = ~0xbd;
    0x00002846 blx 0x16c4                                    |         fcn_000016c4 ();
    0x00002848 invalid                                       |         
    0x0000284c ldr r3, [r0, 4]                               |         r3 = *((r0 + 4));
    0x0000284e cmp r3, 0x20                                  |         
    0x00002850 bne 0x2842                                    |         
                                                             |     }
    0x00002852 mvn r5, 0xb8                                  |     r5 = ~0xb8;
    0x00002856 blx 0x16c4                                    |     fcn_000016c4 ();
    0x0000285a b 0x27e0                                      |     goto label_19;
                                                             | }

[*] Function system used 9 times libhttp_auth.so