[*] Binary protection state of libsoap.so

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


[*] Function printf tear down of libsoap.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/libsoap.so @ 0x139d8 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) sym.soap_begin_recv ()                               | void soap_begin_recv (int16_t arg_fb4h, int16_t arg_fb8h, int16_t arg_ff8h, int16_t arg1) {
                                                                 |     int16_t var_4h;
                                                                 |     r0 = arg1;
    0x000139d8 svcmi 0xf0e92d                                    |     __asm ("svcmi aav.0x000000ff");
    0x000139dc add.w r6, r0, 0x16000                             |     r6 = r0 + 0x16000;
    0x000139e0 movs r4, 0                                        |     r4 = 0;
    0x000139e2 mov r5, r0                                        |     r5 = r0;
    0x000139e4 sub sp, 0xc                                       |     
    0x000139e6 add.w r7, r5, 0x3000                              |     r7 = r5 + 0x3000;
    0x000139ea str.w r4, [r6, 0x184]                             |     __asm ("str.w r4, aav.0x000000ff");
    0x000139ee blx 0x5d68                                        |     fcn_00005d68 ();
    0x000139f2 mov r0, r5                                        |     r0 = r5;
    0x000139f4 blx 0x672c                                        |     fcn_0000672c ();
    0x000139f8 mov r0, r5                                        |     r0 = r5;
    0x000139fa strh r4, [r5, 2]                                  |     *((r5 + 2)) = r4;
    0x000139fc bl 0x69e0                                         |     fcn_000069e0 (r0);
    0x00013a00 ldr r2, [r5, 8]                                   |     r2 = *((r5 + 8));
    0x00013a02 ldrsh.w r1, [r6, 0x154]                           |     r1 = *((r6 + 0x154));
    0x00013a06 and r3, r2, 3                                     |     r3 = r2 & 3;
    0x00013a0a cmp r3, 3                                         |     
    0x00013a0c ittt eq                                           |     
                                                                 |     if (r3 != 3) {
    0x00013a0e ldreq r3, [r5, 0xc]                               |         r3 = *((r5 + 0xc));
                                                                 |     }
                                                                 |     if (r3 != 3) {
    0x00013a10 orreq r3, r3, 3                                   |         r3 |= 3;
                                                                 |     }
                                                                 |     if (r3 == 3) {
    0x00013a14 str r3, [r5, 0xc]                                 |         *((r5 + 0xc)) = r3;
                                                                 |     }
    0x00013a16 bic r3, r2, 0x102                                 |     r3 = BIT_MASK (r2, 0x102);
    0x00013a1a bic r3, r3, 1                                     |     r3 = BIT_MASK (r3, 1);
    0x00013a1e strd r3, r3, [r5, 4]                              |     __asm ("strd r3, r3, [r5, 4]");
                                                                 |     if (r1 == 0) {
    0x00013a22 cbnz r1, 0x13a28                                  |         
    0x00013a24 strd r1, r1, [r7, 0xb0]                           |         __asm ("strd r1, r1, [r7, 0xb0]");
                                                                 |     }
    0x00013a28 ands r3, r2, 0x10                                 |     r3 = r2 & 0x10;
    0x00013a2c add.w r8, r5, 0x17000                             |     r8 = r5 + 0x17000;
    0x00013a30 it eq                                             |     
                                                                 |     if (r3 == r2) {
    0x00013a32 strheq r3, [r6, 0x154]                            |         __asm ("strheq r3, aav.0x000000ff");
                                                                 |     }
    0x00013a36 add.w sl, r5, 0x15000                             |     sl = r5 + 0x15000;
    0x00013a3a movs r3, 0                                        |     r3 = 0;
    0x00013a3c bic r2, r2, 0x500                                 |     r2 = BIT_MASK (r2, 0x500);
    0x00013a40 str.w r3, [r7, 0xb8]                              |     __asm ("str.w r3, [r7, 0xb8]");
    0x00013a44 add.w fp, r5, 0x2000                              |     
    0x00013a48 str.w r3, [r7, 0xc0]                              |     __asm ("str.w r3, [r7, 0xc0]");
    0x00013a4c bic r2, r2, 3                                     |     r2 = BIT_MASK (r2, 3);
    0x00013a50 str.w r3, [sl, 0x52c]                             |     __asm ("str.w r3, aav.0x000000ff");
    0x00013a54 add.w sb, r5, 0x30c0                              |     sb = r5 + 0x30c0;
    0x00013a58 strh.w r3, [sl, 0x530]                            |     *((sl + 0x530)) = r3;
    0x00013a5c add.w sb, sb, 0x18                                |     sb += 0x18;
    0x00013a60 strd r3, r3, [r7, 0xc4]                           |     __asm ("strd r3, r3, [r7, 0xc4]");
    0x00013a64 mov.w r0, 0x3f800000                              |     r0 = 0x3f800000;
    0x00013a68 strh.w r3, [r7, 0xbc]                             |     *((r7 + 0xbc)) = r3;
    0x00013a6c strb.w r3, [sl, 0x53c]                            |     *((sl + 0x53c)) = r3;
    0x00013a70 ldr.w r1, [r8, 0x6dc]                             |     r1 = *((r8 + 0x6dc));
    0x00013a74 str.w r3, [r6, 0x13c]                             |     __asm ("str.w r3, aav.0x000000ff");
    0x00013a78 str.w r3, [fp, 0xfb4]                             |     __asm ("str.w r3, [arg_fb4h]");
    0x00013a7c str.w r3, [fp, 0xfb8]                             |     __asm ("str.w r3, [arg_fb8h]");
    0x00013a80 str.w r3, [r6, 0x180]                             |     __asm ("str.w r3, aav.0x000000ff");
    0x00013a84 str.w r3, [r6, 0x190]                             |     __asm ("str.w r3, aav.0x000000ff");
    0x00013a88 strd r3, r3, [r6, 0x19c]                          |     __asm ("strd r3, r3, aav.0x000000ff");
    0x00013a8c strd r3, r3, [r6, 0x1b8]                          |     __asm ("strd r3, r3, aav.0x000000ff");
    0x00013a90 str.w r3, [r6, 0x1c0]                             |     __asm ("str.w r3, aav.0x000000ff");
    0x00013a94 strd r3, r3, [r6, 0x1cc]                          |     __asm ("strd r3, r3, aav.0x000000ff");
    0x00013a98 str.w r3, [r6, 0x1d4]                             |     __asm ("str.w r3, aav.0x000000ff");
    0x00013a9c strd r3, r3, [r6, 0x1c4]                          |     __asm ("strd r3, r3, aav.0x000000ff");
    0x00013aa0 str r2, [r5, 4]                                   |     *((r5 + 4)) = r2;
    0x00013aa2 strh.w r3, [r8, 0x6ee]                            |     *((r8 + 0x6ee)) = r3;
    0x00013aa6 strh.w r3, [r8, 0x6f0]                            |     *((r8 + 0x6f0)) = r3;
    0x00013aaa strd r3, r3, [r1]                                 |     __asm ("strd r3, r3, [r1]");
    0x00013aae mov.w r3, 0x10000                                 |     r3 = 0x10000;
    0x00013ab2 str r3, [r1, 0x10]                                |     *((r1 + 0x10)) = r3;
    0x00013ab4 add.w r3, r8, 0x700                               |     r3 = r8 + 0x700;
    0x00013ab8 str.w sb, [r1, 0xc]                               |     __asm ("str.w sb, [r1, 0xc]");
    0x00013abc str r0, [r3]                                      |     *(r3) = r0;
    0x00013abe ldr.w r3, [r8, 0x2a8]                             |     r3 = *((r8 + 0x2a8));
                                                                 |     if (r3 != 0) {
    0x00013ac2 cbz r3, 0x13ac8                                   |         
    0x00013ac4 blx 0x5b30                                        |         fcn_00005b30 ();
                                                                 |     }
    0x00013ac8 ldr r3, [r7, 0x54]                                |     r3 = *((r7 + 0x54));
                                                                 |     if (r3 != 0) {
    0x00013aca cbz r3, 0x13ada                                   |         
    0x00013acc mov r0, r5                                        |         r0 = r5;
    0x00013ace blx r3                                            |         uint32_t (*r3)(uint32_t) (r0);
    0x00013ad0 str.w r0, [r6, 0x184]                             |         __asm ("str.w r0, aav.0x000000ff");
    0x00013ad4 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00013ad6 bne.w 0x13c56                                     |             goto label_15;
                                                                 |         }
                                                                 |     }
    0x00013ada mov r0, r5                                        |     r0 = r5;
    0x00013adc blx 0x61b8                                        |     r0 = snprintf_chk ()
    0x00013ae0 cmp r0, 0x1f                                      |     
    0x00013ae2 mov r4, r0                                        |     r4 = r0;
                                                                 |     if (r0 != 0x1f) {
    0x00013ae4 bne 0x13af0                                       |         goto label_25;
                                                                 |     }
    0x00013ae6 b 0x13dc0                                         |     goto label_26;
                                                                 |     do {
                                                                 | label_11:
    0x00013ae8 mov r0, r5                                        |         r0 = r5;
    0x00013aea blx 0x61b8                                        |         r0 = snprintf_chk ()
    0x00013aee mov r4, r0                                        |         r4 = r0;
                                                                 | label_25:
    0x00013af0 cmp r4, 0x20                                      |         
    0x00013af2 bls 0x13ae8                                       |         
                                                                 |     } while (r4 < 0x20);
    0x00013af4 cmp r4, 0x2d                                      |     
                                                                 |     if (r4 == 0x2d) {
    0x00013af6 beq.w 0x13c5c                                     |         goto label_27;
                                                                 |     }
    0x00013afa movw r3, 0xfffc                                   |     r3 = 0xfffc;
    0x00013afe ands r3, r4                                       |     r3 &= r4;
    0x00013b00 cmp r3, 0xc                                       |     
                                                                 |     if (r3 == 0xc) {
    0x00013b02 beq.w 0x13d9c                                     |         goto label_28;
                                                                 |     }
                                                                 | label_8:
    0x00013b06 cmp r4, 0xef                                      |     
                                                                 |     if (r4 != 0xef) {
    0x00013b08 bne 0x13b14                                       |         goto label_12;
                                                                 |     }
    0x00013b0a b 0x13e76                                         |     goto label_29;
                                                                 |     do {
                                                                 | label_13:
    0x00013b0c mov r0, r5                                        |         r0 = r5;
    0x00013b0e blx 0x61b8                                        |         r0 = snprintf_chk ()
    0x00013b12 mov r4, r0                                        |         r4 = r0;
                                                                 | label_12:
    0x00013b14 cmp r4, 0x20                                      |         
    0x00013b16 bls 0x13b0c                                       |         
                                                                 |     } while (r4 < 0x20);
    0x00013b18 adds r1, r4, 1                                    |     r1 = r4 + 1;
                                                                 |     if (r1 == r4) {
    0x00013b1a beq.w 0x13ca6                                     |         goto label_3;
                                                                 |     }
                                                                 |     do {
                                                                 | label_4:
    0x00013b1e ldr r3, [r5, 4]                                   |         r3 = *((r5 + 4));
                                                                 | label_9:
    0x00013b20 cmp r4, 0x3c                                      |         
    0x00013b22 str.w r4, [r7, 0xb8]                              |         __asm ("str.w r4, [r7, 0xb8]");
                                                                 |         if (r4 == 0x3c) {
    0x00013b26 beq.w 0x13c8e                                     |             goto label_30;
                                                                 |         }
                                                                 | label_0:
    0x00013b2a ands r4, r3, 0x580                                |         r4 = r3 & 0x580;
                                                                 |         if (r4 != r3) {
    0x00013b2e bne.w 0x13c8e                                     |             goto label_30;
                                                                 |         }
    0x00013b32 ldr r2, [r5, 8]                                   |         r2 = *((r5 + 8));
    0x00013b34 bic r3, r3, 3                                     |         r3 = BIT_MASK (r3, 3);
    0x00013b38 str r3, [r5, 4]                                   |         *((r5 + 4)) = r3;
    0x00013b3a mov r0, r5                                        |         r0 = r5;
    0x00013b3c ldr r3, [r7, 4]                                   |         r3 = *((r7 + 4));
    0x00013b3e str r2, [sp, 4]                                   |         var_4h = r2;
    0x00013b40 blx r3                                            |         r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
    0x00013b42 cmp r0, 0                                         |         
    0x00013b44 it ne                                             |         
                                                                 |         if (r0 != 0) {
    0x00013b46 cmpne r0, 0x3e8                                   |             __asm ("cmpne r0, 0x3e8");
                                                                 |         }
    0x00013b4a str.w r0, [r6, 0x184]                             |         __asm ("str.w r0, aav.0x000000ff");
    0x00013b4e itet lt                                           |         
                                                                 |         if (r0 >= 0) {
    0x00013b50 movlt r1, 1                                       |             r1 = 1;
                                                                 |         }
                                                                 |         if (r0 < 0) {
    0x00013b52 movge r1, 0                                       |             r1 = 0;
                                                                 |         }
                                                                 |         if (r0 < 0) {
    0x00013b54 strhlt r4, [r6, 0x154]                            |             __asm ("strhlt r4, aav.0x000000ff");
                                                                 |         }
                                                                 |         if (r0 >= 0) {
    0x00013b58 blt 0x13c56                                       |             
    0x00013b5a cmp.w r0, 0x3e8                                   |             
                                                                 |             if (r0 == 0x3e8) {
    0x00013b5e beq 0x13c56                                       |                 goto label_15;
                                                                 |             }
    0x00013b60 ldr r3, [r5, 8]                                   |             r3 = *((r5 + 8));
    0x00013b62 ldr r2, [sp, 4]                                   |             r2 = var_4h;
    0x00013b64 bic r4, r3, 0x400                                 |             r4 = BIT_MASK (r3, 0x400);
    0x00013b68 and r3, r3, 3                                     |             r3 &= 3;
    0x00013b6c str r2, [r5, 8]                                   |             *((r5 + 8)) = r2;
    0x00013b6e cmp r3, 3                                         |             
    0x00013b70 ldrd r2, r0, [r7, 0xb0]                           |             __asm ("ldrd r2, r0, [r7, 0xb0]");
    0x00013b74 str r4, [r5, 4]                                   |             *((r5 + 4)) = r4;
    0x00013b76 ittt eq                                           |             
                                                                 |             if (r3 != 3) {
    0x00013b78 streq r0, [sl, 0x538]                             |                 *((sl + 0x538)) = r0;
                                                                 |             }
                                                                 |             if (r3 != 3) {
    0x00013b7c streq r2, [r7, 0xb4]                              |                 *((r7 + 0xb4)) = r2;
                                                                 |             }
                                                                 |             if (r3 == 3) {
    0x00013b80 str.w r1, [sl, 0x534]                             |                 __asm ("str.w r1, aav.0x000000ff");
                                                                 |             }
                                                                 |             if (r3 == 3) {
    0x00013b84 beq.w 0x13ed0                                     |                 goto label_31;
                                                                 |             }
    0x00013b88 cmp r0, r2                                        |             
                                                                 |             if (r0 < r2) {
    0x00013b8a bls.w 0x13ed0                                     |                 goto label_31;
                                                                 |             }
                                                                 | label_17:
    0x00013b8e ldrsh.w r3, [r8, 0x6ee]                           |             r3 = *((r8 + 0x6ee));
    0x00013b92 cmp r3, 0                                         |             
                                                                 |             if (r3 != 0) {
    0x00013b94 beq 0x13c32                                       |                 
    0x00013b96 cmp r3, 1                                         |                 
                                                                 |                 if (r3 == 1) {
    0x00013b98 beq.w 0x13ef2                                     |                     goto label_32;
                                                                 |                 }
    0x00013b9c ldrd r2, r3, [r7, 0xb0]                           |                 __asm ("ldrd r2, r3, [r7, 0xb0]");
    0x00013ba0 cmp r2, r3                                        |                 
                                                                 |                 if (r2 >= r3) {
    0x00013ba2 bhs.w 0x13f16                                     |                     goto label_33;
                                                                 |                 }
                                                                 | label_19:
    0x00013ba6 adds r3, r2, 1                                    |                 r3 = r2 + 1;
    0x00013ba8 adds r0, r5, r2                                   |                 r0 = r5 + r2;
    0x00013baa movw r1, 0x30d8                                   |                 r1 = 0x30d8;
    0x00013bae str.w r3, [r7, 0xb0]                              |                 __asm ("str.w r3, [r7, 0xb0]");
    0x00013bb2 ldrb r1, [r0, r1]                                 |                 r1 = *((r0 + r1));
    0x00013bb4 cmp r1, 0x1f                                      |                 
                                                                 |                 if (r1 == 0x1f) {
    0x00013bb6 beq.w 0x13f38                                     |                     goto label_34;
                                                                 |                 }
                                                                 | label_20:
    0x00013bba ldr r1, [pc, 0x3d8]                               |                 
    0x00013bbc str.w r2, [r7, 0xb0]                              |                 __asm ("str.w r2, [r7, 0xb0]");
    0x00013bc0 movs r2, 0x38                                     |                 r2 = 0x38;
    0x00013bc2 ldr.w r0, [r8, 0x6dc]                             |                 r0 = *((r8 + 0x6dc));
    0x00013bc6 add r1, pc                                        |                 r1 = 0x27b60;
    0x00013bc8 blx 0x64c8                                        |                 r0 = fcn_000064c8 ();
    0x00013bcc cmp r0, 0                                         |                 
                                                                 |                 if (r0 != 0) {
    0x00013bce bne.w 0x13f06                                     |                     goto label_23;
                                                                 |                 }
    0x00013bd2 movs r3, 1                                        |                 r3 = 1;
    0x00013bd4 strh.w r3, [r8, 0x6ee]                            |                 *((r8 + 0x6ee)) = r3;
                                                                 | label_18:
    0x00013bd8 ldr.w r1, [r8, 0x6e4]                             |                 r1 = *((r8 + 0x6e4));
                                                                 |                 if (r1 != 0) {
    0x00013bdc cbz r1, 0x13bf0                                   |                     
    0x00013bde ldr.w r2, [r8, 0x6e8]                             |                     r2 = *((r8 + 0x6e8));
    0x00013be2 ldr.w r0, [r8, 0x6dc]                             |                     r0 = *((r8 + 0x6dc));
    0x00013be6 blx 0x61a0                                        |                     r0 = fcn_000061a0 ();
    0x00013bea cmp r0, 0                                         |                     
                                                                 |                     if (r0 != 0) {
    0x00013bec bne.w 0x13f06                                     |                         goto label_23;
                                                                 |                     }
                                                                 |                 }
    0x00013bf0 ldr r3, [r5, 4]                                   |                 r3 = *((r5 + 4));
    0x00013bf2 movs r2, 2                                        |                 r2 = 2;
    0x00013bf4 ldr.w r0, [r8, 0x6f4]                             |                 r0 = *((r8 + 0x6f4));
    0x00013bf8 strh.w r2, [r8, 0x6ec]                            |                 *((r8 + 0x6ec)) = r2;
    0x00013bfc orr r3, r3, 0x400                                 |                 r3 |= 0x400;
    0x00013c00 str r3, [r5, 4]                                   |                 *((r5 + 4)) = r3;
    0x00013c02 cmp r0, 0                                         |                 
                                                                 |                 if (r0 == 0) {
    0x00013c04 beq.w 0x13f86                                     |                     goto label_35;
                                                                 |                 }
                                                                 | label_24:
    0x00013c08 mov.w r2, 0x10000                                 |                 r2 = 0x10000;
    0x00013c0c mov r1, sb                                        |                 r1 = sb;
    0x00013c0e blx 0x6064                                        |                 fcn_00006064 ();
    0x00013c12 ldr.w r3, [r7, 0xb0]                              |                 r3 = *((r7 + 0xb0));
    0x00013c16 ldr.w r2, [r8, 0x6f4]                             |                 r2 = *((r8 + 0x6f4));
    0x00013c1a ldr.w r1, [r7, 0xb4]                              |                 r1 = *((r7 + 0xb4));
    0x00013c1e ldr.w r0, [r8, 0x6dc]                             |                 r0 = *((r8 + 0x6dc));
    0x00013c22 add r2, r3                                        |                 r2 += r3;
    0x00013c24 str r2, [r0]                                      |                 *(r0) = r2;
    0x00013c26 subs r2, r1, r3                                   |                 r2 = r1 - r3;
    0x00013c28 str r2, [r0, 4]                                   |                 *((r0 + 4)) = r2;
    0x00013c2a str.w r1, [r8, 0x6f8]                             |                 __asm ("str.w r1, aav.0x000000ff");
    0x00013c2e str.w r3, [r7, 0xb4]                              |                 __asm ("str.w r3, [r7, 0xb4]");
                                                                 |             }
    0x00013c32 ldr r4, [r7, 0x5c]                                |             r4 = *((r7 + 0x5c));
                                                                 |             if (r4 == 0) {
    0x00013c34 cbz r4, 0x13c82                                   |                 goto label_36;
                                                                 |             }
    0x00013c36 ldr r3, [r5, 4]                                   |             r3 = *((r5 + 4));
    0x00013c38 and r3, r3, 3                                     |             r3 &= 3;
    0x00013c3c cmp r3, 3                                         |             
                                                                 |             if (r3 == 3) {
    0x00013c3e beq 0x13c82                                       |                 goto label_36;
                                                                 |             }
    0x00013c40 ldrd r1, r2, [r7, 0xb0]                           |             __asm ("ldrd r1, r2, [r7, 0xb0]");
    0x00013c44 cmp r2, r1                                        |             
                                                                 |             if (r2 < r1) {
    0x00013c46 bls 0x13c82                                       |                 goto label_36;
                                                                 |             }
    0x00013c48 subs r2, r2, r1                                   |             r2 -= r1;
    0x00013c4a mov r0, r5                                        |             r0 = r5;
    0x00013c4c add r1, sb                                        |             r1 += sb;
    0x00013c4e blx r4                                            |             r0 = uint32_t (*r4)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
                                                                 |             if (r0 == 0) {
    0x00013c50 cbz r0, 0x13c82                                   |                 goto label_36;
                                                                 |             }
                                                                 | label_16:
    0x00013c52 str.w r0, [r6, 0x184]                             |             __asm ("str.w r0, aav.0x000000ff");
                                                                 |         }
                                                                 | label_15:
    0x00013c56 add sp, 0xc                                       |         
    0x00013c58 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_27:
    0x00013c5c ldrd r3, r2, [r7, 0xb0]                           |         __asm ("ldrd r3, r2, [r7, 0xb0]");
    0x00013c60 cmp r3, r2                                        |         
                                                                 |         if (r3 >= r2) {
    0x00013c62 bhs.w 0x13d7a                                     |             goto label_37;
                                                                 |         }
                                                                 | label_5:
    0x00013c66 add r3, r5                                        |         r3 += r5;
    0x00013c68 movw r2, 0x30d8                                   |         r2 = 0x30d8;
    0x00013c6c ldrb r2, [r3, r2]                                 |         r2 = *((r3 + r2));
    0x00013c6e cmp r2, 0x2d                                      |         
    0x00013c70 bne.w 0x13b1e                                     |         
                                                                 |     } while (r2 != 0x2d);
    0x00013c74 ldr r3, [r5, 4]                                   |     r3 = *((r5 + 4));
    0x00013c76 orr r3, r3, 0x100                                 |     r3 |= 0x100;
    0x00013c7a str r3, [r5, 4]                                   |     *((r5 + 4)) = r3;
    0x00013c7c str.w r2, [r7, 0xb8]                              |     __asm ("str.w r2, [r7, 0xb8]");
    0x00013c80 b 0x13b2a                                         |     goto label_0;
                                                                 | label_36:
    0x00013c82 ldr.w r0, [r6, 0x184]                             |     r0 = *((r6 + 0x184));
    0x00013c86 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00013c88 bne.w 0x13ea6                                     |         goto label_38;
                                                                 |     }
    0x00013c8c ldr r3, [r5, 4]                                   |     r3 = *((r5 + 4));
                                                                 | label_30:
    0x00013c8e lsls r2, r3, 0x17                                 |     r2 = r3 << 0x17;
                                                                 |     if (r2 >= r3) {
    0x00013c90 bpl 0x13cb8                                       |         goto label_39;
                                                                 |     }
    0x00013c92 movw r4, 0x30d8                                   |     r4 = 0x30d8;
    0x00013c96 b 0x13c9c                                         |     
                                                                 |     while (r3 != r0) {
    0x00013c98 cmp r0, 0x2d                                      |         
                                                                 |         if (r0 == 0x2d) {
    0x00013c9a beq 0x13cc8                                       |             goto label_40;
                                                                 |         }
                                                                 | label_6:
    0x00013c9c mov r0, r5                                        |         r0 = r5;
    0x00013c9e blx 0x61b8                                        |         r0 = snprintf_chk ()
    0x00013ca2 adds r3, r0, 1                                    |         r3 = r0 + 1;
    0x00013ca4 bne 0x13c98                                       |         
                                                                 |     }
                                                                 | label_3:
    0x00013ca6 mov.w r3, -1                                      |     r3 = -1;
    0x00013caa mov r0, r3                                        |     r0 = r3;
    0x00013cac str.w r3, [r6, 0x184]                             |     __asm ("str.w r3, aav.0x000000ff");
    0x00013cb0 add sp, 0xc                                       |     
    0x00013cb2 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_1:
    0x00013cb6 ldr r3, [r5, 4]                                   |     r3 = *((r5 + 4));
                                                                 | label_39:
    0x00013cb8 and r3, r3, 0x80                                  |     r3 &= 0x80;
    0x00013cbc cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00013cbe bne 0x13d2e                                       |         goto label_41;
                                                                 |     }
                                                                 | label_2:
    0x00013cc0 movs r0, 0                                        |     r0 = 0;
    0x00013cc2 add sp, 0xc                                       |     
    0x00013cc4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_40:
    0x00013cc8 ldrd r3, r2, [r7, 0xb0]                           |     __asm ("ldrd r3, r2, [r7, 0xb0]");
    0x00013ccc cmp r3, r2                                        |     
                                                                 |     if (r3 >= r2) {
    0x00013cce bhs 0x13d8c                                       |         goto label_42;
                                                                 |     }
                                                                 | label_7:
    0x00013cd0 add r3, r5                                        |     r3 += r5;
    0x00013cd2 ldrb r3, [r3, r4]                                 |     r3 = *((r3 + r4));
    0x00013cd4 cmp r3, 0x2d                                      |     
    0x00013cd6 lsls r1, r4, 3                                    |     r1 = r4 << 3;
    0x00013cd8 mov r0, r5                                        |     r0 = r5;
    0x00013cda str.w r3, [r7, 0xb8]                              |     __asm ("str.w r3, [r7, 0xb8]");
    0x00013cde blx 0xfff37a74                                    |     r0 = void (*0xfff37a74)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x00013ce2 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00013ce4 bne.w 0x13f10                                     |         goto label_43;
                                                                 |     }
    0x00013ce8 ldr.w r3, [r6, 0x1c8]                             |     r3 = *((r6 + 0x1c8));
                                                                 |     if (r3 != 0) {
    0x00013cec cbnz r3, 0x13d06                                  |         goto label_44;
                                                                 |     }
    0x00013cee b 0x13d12                                         |     goto label_45;
                                                                 |     do {
    0x00013cf0 ldr.w r1, [r6, 0x1c8]                             |         r1 = *((r6 + 0x1c8));
    0x00013cf4 blx 0x67f4                                        |         r0 = fcn_000067f4 ();
    0x00013cf8 mov r3, r0                                        |         r3 = r0;
    0x00013cfa movs r1, 0                                        |         r1 = 0;
    0x00013cfc mov r0, r5                                        |         r0 = r5;
                                                                 |         if (r3 == 0) {
    0x00013cfe cbz r3, 0x13d12                                   |             goto label_45;
                                                                 |         }
    0x00013d00 blx 0x60c8                                        |         r0 = loc_imp_soap_putelement ();
                                                                 |         if (r0 == 0) {
    0x00013d04 cbz r0, 0x13d12                                   |             goto label_45;
                                                                 |         }
                                                                 | label_44:
    0x00013d06 ldr.w r3, [r6, 0x1d4]                             |         r3 = *((r6 + 0x1d4));
    0x00013d0a mov r0, r5                                        |         r0 = r5;
    0x00013d0c ldr r2, [r3, 0xc]                                 |         r2 = *((r3 + 0xc));
    0x00013d0e cmp r2, 0                                         |         
    0x00013d10 bne 0x13cf0                                       |         
                                                                 |     } while (r2 != 0);
                                                                 | label_45:
    0x00013d12 ldr.w r3, [r6, 0x1d0]                             |     r3 = *((r6 + 0x1d0));
    0x00013d16 mov r0, r5                                        |     r0 = r5;
    0x00013d18 ldr r2, [pc, 0x27c]                               |     
    0x00013d1a ldr r1, [r3, 0x10]                                |     r1 = *((r3 + 0x10));
    0x00013d1c add r2, pc                                        |     r2 = 0x27cb8;
    0x00013d1e blx 0x6634                                        |     r0 = fcn_00006634 ();
    0x00013d22 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00013d24 beq 0x13cb6                                       |         goto label_1;
                                                                 |     }
    0x00013d26 ldr r3, [r5, 4]                                   |     r3 = *((r5 + 4));
    0x00013d28 orr r3, r3, 0x80                                  |     r3 |= 0x80;
    0x00013d2c str r3, [r5, 4]                                   |     *((r5 + 4)) = r3;
                                                                 | label_41:
    0x00013d2e mov r0, r5                                        |     r0 = r5;
    0x00013d30 blx 0x6220                                        |     r0 = fcn_00006220 ();
    0x00013d34 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00013d36 bne.w 0x13f10                                     |         goto label_43;
                                                                 |     }
    0x00013d3a ldrb.w r0, [r6, 0x1a4]                            |     r0 = *((r6 + 0x1a4));
    0x00013d3e ldrd r3, r1, [r7, 0xb0]                           |     __asm ("ldrd r3, r1, [r7, 0xb0]");
    0x00013d42 lsls r0, r0, 0x1f                                 |     r0 <<= 0x1f;
    0x00013d44 sub.w r2, r1, r3                                  |     r2 = r1 - r3;
                                                                 |     if (r0 < r0) {
    0x00013d48 bpl 0x13d6a                                       |         
    0x00013d4a ldr.w r0, [r6, 0x198]                             |         r0 = *((r6 + 0x198));
    0x00013d4e cmp r0, r2                                        |         
    0x00013d50 add r3, r0                                        |         r3 += r0;
    0x00013d52 ite ls                                            |         
                                                                 |         if (r0 > r2) {
    0x00013d54 movls r2, r0                                      |             r2 = r0;
                                                                 |         }
                                                                 |         if (r0 <= r2) {
    0x00013d56 subhi r3, r3, r1                                  |             r3 -= r1;
                                                                 |         }
    0x00013d58 str.w r0, [r6, 0x19c]                             |         __asm ("str.w r0, aav.0x000000ff");
    0x00013d5c itet ls                                           |         
                                                                 |         if (r0 > r2) {
    0x00013d5e strls r1, [r6, 0x1a0]                             |             *((r6 + 0x1a0)) = r1;
                                                                 |         }
                                                                 |         if (r0 > r2) {
    0x00013d62 strls r3, [r6, 0x19c]                             |             *((r6 + 0x19c)) = r3;
                                                                 |         }
                                                                 |         if (r0 > r2) {
    0x00013d66 str.w r3, [r7, 0xb4]                              |             __asm ("str.w r3, [r7, 0xb4]");
                                                                 |             goto label_46;
                                                                 |         }
                                                                 |     }
                                                                 | label_46:
    0x00013d6a ldr r3, [r5, 0x30]                                |     r3 = *((r5 + 0x30));
    0x00013d6c str.w r2, [r7, 0xc4]                              |     __asm ("str.w r2, [r7, 0xc4]");
    0x00013d70 cmp r3, 0                                         |     
    0x00013d72 it ne                                             |     
                                                                 |     if (r3 == 0) {
    0x00013d74 cmpne r3, r2                                      |         __asm ("cmpne r3, r2");
                                                                 |         goto label_47;
                                                                 |     }
                                                                 |     if (r3 >= 0) {
                                                                 | label_47:
    0x00013d76 bhs 0x13cc0                                       |         goto label_2;
                                                                 |     }
    0x00013d78 b 0x13ca6                                         |     goto label_3;
                                                                 | label_37:
    0x00013d7a mov r0, r5                                        |     r0 = r5;
    0x00013d7c blx 0x5ebc                                        |     r0 = fcn_00005ebc ();
    0x00013d80 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00013d82 bne.w 0x13b1e                                     |         goto label_4;
                                                                 |     }
    0x00013d86 ldr.w r3, [r7, 0xb0]                              |     r3 = *((r7 + 0xb0));
    0x00013d8a b 0x13c66                                         |     goto label_5;
                                                                 | label_42:
    0x00013d8c mov r0, r5                                        |     r0 = r5;
    0x00013d8e blx 0x5ebc                                        |     r0 = fcn_00005ebc ();
    0x00013d92 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00013d94 bne 0x13c9c                                       |         goto label_6;
                                                                 |     }
    0x00013d96 ldr.w r3, [r7, 0xb0]                              |     r3 = *((r7 + 0xb0));
    0x00013d9a b 0x13cd0                                         |     goto label_7;
                                                                 | label_28:
    0x00013d9c ldrd r3, r2, [r7, 0xb0]                           |     __asm ("ldrd r3, r2, [r7, 0xb0]");
    0x00013da0 cmp r3, r2                                        |     
                                                                 |     if (r3 >= r2) {
    0x00013da2 bhs 0x13e94                                       |         goto label_48;
                                                                 |     }
                                                                 | label_14:
    0x00013da4 add r3, r5                                        |     r3 += r5;
    0x00013da6 movw r2, 0x30d8                                   |     r2 = 0x30d8;
    0x00013daa ldrb r3, [r3, r2]                                 |     r3 = *((r3 + r2));
    0x00013dac and r3, r3, 0xf0                                  |     r3 &= 0xf0;
    0x00013db0 cmp r3, 0x20                                      |     
                                                                 |     if (r3 != 0x20) {
    0x00013db2 bne.w 0x13b06                                     |         goto label_8;
                                                                 |     }
    0x00013db6 ldr r3, [r5, 4]                                   |     r3 = *((r5 + 4));
    0x00013db8 orr r3, r3, 0x80                                  |     r3 |= 0x80;
    0x00013dbc str r3, [r5, 4]                                   |     *((r5 + 4)) = r3;
    0x00013dbe b 0x13b20                                         |     goto label_9;
                                                                 | label_26:
    0x00013dc0 ldr.w r3, [r7, 0xb0]                              |     r3 = *((r7 + 0xb0));
    0x00013dc4 movs r4, 9                                        |     r4 = 9;
    0x00013dc6 b 0x13dd4                                         |     
                                                                 |     while (r2 > r3) {
    0x00013dc8 subs r4, 1                                        |         r4--;
    0x00013dca add.w r3, r3, 1                                   |         r3++;
    0x00013dce str.w r3, [r7, 0xb0]                              |         __asm ("str.w r3, [r7, 0xb0]");
                                                                 |         if (r4 == 1) {
    0x00013dd2 beq 0x13df8                                       |             goto label_49;
                                                                 |         }
                                                                 | label_10:
    0x00013dd4 ldr.w r2, [r7, 0xb4]                              |         r2 = *((r7 + 0xb4));
    0x00013dd8 cmp r2, r3                                        |         
    0x00013dda bhi 0x13dc8                                       |         
                                                                 |     }
    0x00013ddc mov r0, r5                                        |     r0 = r5;
    0x00013dde blx 0x5ebc                                        |     r0 = fcn_00005ebc ();
    0x00013de2 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00013de4 bne.w 0x13ca6                                     |         goto label_3;
                                                                 |     }
    0x00013de8 ldr.w r3, [r7, 0xb0]                              |     r3 = *((r7 + 0xb0));
    0x00013dec subs r4, 1                                        |     r4--;
    0x00013dee add.w r3, r3, 1                                   |     r3++;
    0x00013df2 str.w r3, [r7, 0xb0]                              |     __asm ("str.w r3, [r7, 0xb0]");
                                                                 |     if (r4 != 1) {
    0x00013df6 bne 0x13dd4                                       |         goto label_10;
                                                                 |     }
                                                                 | label_49:
    0x00013df8 ldr r2, [pc, 0x1a0]                               |     
    0x00013dfa movs r3, 0x38                                     |     r3 = 0x38;
    0x00013dfc ldr.w r0, [r8, 0x6dc]                             |     r0 = *((r8 + 0x6dc));
    0x00013e00 mvn r1, 0xe                                       |     r1 = ~0xe;
    0x00013e04 add r2, pc                                        |     r2 = 0x27da4;
    0x00013e06 blx 0x5db0                                        |     r0 = fcn_00005db0 ();
    0x00013e0a cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00013e0c bne 0x13f06                                       |         goto label_23;
                                                                 |     }
    0x00013e0e ldr.w r1, [r8, 0x6e4]                             |     r1 = *((r8 + 0x6e4));
                                                                 |     if (r1 != 0) {
    0x00013e12 cbz r1, 0x13e24                                   |         
    0x00013e14 ldr.w r2, [r8, 0x6e8]                             |         r2 = *((r8 + 0x6e8));
    0x00013e18 ldr.w r0, [r8, 0x6dc]                             |         r0 = *((r8 + 0x6dc));
    0x00013e1c blx 0x61a0                                        |         r0 = fcn_000061a0 ();
    0x00013e20 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00013e22 bne 0x13f06                                       |             goto label_23;
                                                                 |         }
                                                                 |     }
    0x00013e24 ldr r3, [r5, 4]                                   |     r3 = *((r5 + 4));
    0x00013e26 movs r2, 0                                        |     r2 = 0;
    0x00013e28 mov r1, r2                                        |     r1 = r2;
    0x00013e2a mov r0, r2                                        |     r0 = r2;
    0x00013e2c orr r3, r3, 0x400                                 |     r3 |= 0x400;
    0x00013e30 str r3, [r5, 4]                                   |     *((r5 + 4)) = r3;
    0x00013e32 mov.w r3, 0x20002                                 |     r3 = 0x20002;
    0x00013e36 str.w r3, [r8, 0x6ec]                             |     __asm ("str.w r3, aav.0x000000ff");
    0x00013e3a blx 0x5ed4                                        |     fcn_00005ed4 ();
    0x00013e3e str.w r0, [r8, 0x6e0]                             |     __asm ("str.w r0, aav.0x000000ff");
    0x00013e42 ldr.w r0, [r8, 0x6f4]                             |     r0 = *((r8 + 0x6f4));
    0x00013e46 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00013e48 beq 0x13f2a                                       |         goto label_50;
                                                                 |     }
                                                                 | label_21:
    0x00013e4a mov.w r2, 0x10000                                 |     r2 = 0x10000;
    0x00013e4e mov r1, sb                                        |     r1 = sb;
    0x00013e50 blx 0x6064                                        |     fcn_00006064 ();
    0x00013e54 ldr.w r3, [r7, 0xb0]                              |     r3 = *((r7 + 0xb0));
    0x00013e58 ldr.w r2, [r8, 0x6f4]                             |     r2 = *((r8 + 0x6f4));
    0x00013e5c ldr.w r1, [r7, 0xb4]                              |     r1 = *((r7 + 0xb4));
    0x00013e60 ldr.w r0, [r8, 0x6dc]                             |     r0 = *((r8 + 0x6dc));
    0x00013e64 add r2, r3                                        |     r2 += r3;
    0x00013e66 str r2, [r0]                                      |     *(r0) = r2;
    0x00013e68 subs r2, r1, r3                                   |     r2 = r1 - r3;
    0x00013e6a str r2, [r0, 4]                                   |     *((r0 + 4)) = r2;
    0x00013e6c str.w r1, [r8, 0x6f8]                             |     __asm ("str.w r1, aav.0x000000ff");
    0x00013e70 str.w r3, [r7, 0xb4]                              |     __asm ("str.w r3, [r7, 0xb4]");
    0x00013e74 b 0x13ae8                                         |     goto label_11;
                                                                 | label_29:
    0x00013e76 mov r0, r5                                        |     r0 = r5;
    0x00013e78 blx 0x61b8                                        |     r0 = snprintf_chk ()
    0x00013e7c cmp r0, 0xbb                                      |     
    0x00013e7e mov r4, r0                                        |     r4 = r0;
                                                                 |     if (r0 != 0xbb) {
    0x00013e80 bne.w 0x13b14                                     |         goto label_12;
                                                                 |     }
    0x00013e84 mov r0, r5                                        |     r0 = r5;
    0x00013e86 blx 0x61b8                                        |     r0 = snprintf_chk ()
    0x00013e8a cmp r0, 0xbf                                      |     
    0x00013e8c mov r4, r0                                        |     r4 = r0;
                                                                 |     if (r0 != 0xbf) {
    0x00013e8e bne.w 0x13b14                                     |         goto label_12;
                                                                 |     }
    0x00013e92 b 0x13b0c                                         |     goto label_13;
                                                                 | label_48:
    0x00013e94 mov r0, r5                                        |     r0 = r5;
    0x00013e96 blx 0x5ebc                                        |     r0 = fcn_00005ebc ();
    0x00013e9a cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00013e9c bne.w 0x13b06                                     |         goto label_8;
                                                                 |     }
    0x00013ea0 ldr.w r3, [r7, 0xb0]                              |     r3 = *((r7 + 0xb0));
    0x00013ea4 b 0x13da4                                         |     goto label_14;
                                                                 | label_38:
    0x00013ea6 movw r3, 0x3e9                                    |     r3 = 0x3e9;
    0x00013eaa cmp r0, r3                                        |     
                                                                 |     if (r0 != r3) {
    0x00013eac bne.w 0x13c56                                     |         goto label_15;
                                                                 |     }
    0x00013eb0 ldr.w r3, [fp, 0xff8]                             |     r3 = *(arg_ff8h);
    0x00013eb4 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00013eb6 beq.w 0x13c56                                     |         goto label_15;
                                                                 |     }
    0x00013eba mov r0, r5                                        |     r0 = r5;
    0x00013ebc blx r3                                            |     r0 = uint32_t (*r3)(uint32_t) (r0);
    0x00013ebe cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00013ec0 bne.w 0x13c52                                     |         goto label_16;
                                                                 |     }
    0x00013ec4 mov.w r3, 0x3e8                                   |     r3 = 0x3e8;
    0x00013ec8 mov r0, r3                                        |     r0 = r3;
    0x00013eca str.w r3, [r6, 0x184]                             |     __asm ("str.w r3, aav.0x000000ff");
    0x00013ece b 0x13c56                                         |     goto label_15;
                                                                 | label_31:
    0x00013ed0 mov r0, r5                                        |     r0 = r5;
    0x00013ed2 blx 0x5ebc                                        |     r0 = fcn_00005ebc ();
    0x00013ed6 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00013ed8 beq.w 0x13b8e                                     |         goto label_17;
                                                                 |     }
    0x00013edc ldr.w r0, [r6, 0x180]                             |     r0 = *((r6 + 0x180));
    0x00013ee0 cmp r0, 0xc8                                      |     
    0x00013ee2 ittt eq                                           |     
                                                                 |     if (r0 != 0xc8) {
    0x00013ee4 moveq r3, 0xe                                     |         r3 = 0xe;
                                                                 |     }
                                                                 |     if (r0 != 0xc8) {
    0x00013ee6 moveq r0, r3                                      |         r0 = r3;
                                                                 |     }
                                                                 |     if (r0 == 0xc8) {
    0x00013ee8 streq r3, [r6, 0x184]                             |         *((r6 + 0x184)) = r3;
                                                                 |         goto label_51;
                                                                 |     }
                                                                 |     if (r0 != 0xc8) {
                                                                 | label_51:
    0x00013eec bne.w 0x13c52                                     |         goto label_16;
                                                                 |     }
    0x00013ef0 b 0x13c56                                         |     goto label_15;
                                                                 | label_32:
    0x00013ef2 ldr r1, [pc, 0xac]                                |     
    0x00013ef4 movs r2, 0x38                                     |     r2 = 0x38;
    0x00013ef6 ldr.w r0, [r8, 0x6dc]                             |     r0 = *((r8 + 0x6dc));
    0x00013efa add r1, pc                                        |     r1 = 0x27ea0;
    0x00013efc blx 0x64c8                                        |     r0 = fcn_000064c8 ();
    0x00013f00 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00013f02 beq.w 0x13bd8                                     |         goto label_18;
                                                                 |     }
                                                                 | label_23:
    0x00013f06 movs r3, 0x1f                                     |     r3 = 0x1f;
    0x00013f08 mov r0, r3                                        |     r0 = r3;
    0x00013f0a str.w r3, [r6, 0x184]                             |     __asm ("str.w r3, aav.0x000000ff");
    0x00013f0e b 0x13c56                                         |     goto label_15;
                                                                 | label_43:
    0x00013f10 ldr.w r0, [r6, 0x184]                             |     r0 = *((r6 + 0x184));
    0x00013f14 b 0x13c56                                         |     goto label_15;
                                                                 | label_33:
    0x00013f16 mov r0, r5                                        |     r0 = r5;
    0x00013f18 blx 0x5ebc                                        |     fcn_00005ebc ();
    0x00013f1c ldr.w r2, [r7, 0xb0]                              |     r2 = *((r7 + 0xb0));
    0x00013f20 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00013f22 beq.w 0x13ba6                                     |         goto label_19;
                                                                 |     }
    0x00013f26 subs r2, 1                                        |     r2--;
    0x00013f28 b 0x13bba                                         |     goto label_20;
                                                                 | label_50:
    0x00013f2a mov.w r0, 0x10000                                 |     r0 = 0x10000;
    0x00013f2e blx 0x63b0                                        |     gmtime_r ();
    0x00013f32 str.w r0, [r8, 0x6f4]                             |     __asm ("str.w r0, aav.0x000000ff");
    0x00013f36 b 0x13e4a                                         |     goto label_21;
                                                                 | label_34:
    0x00013f38 movs r4, 9                                        |     r4 = 9;
    0x00013f3a b 0x13f48                                         |     
                                                                 |     while (r2 > r3) {
                                                                 | label_22:
    0x00013f3c subs r4, 1                                        |         r4--;
    0x00013f3e add.w r3, r3, 1                                   |         r3++;
    0x00013f42 str.w r3, [r7, 0xb0]                              |         __asm ("str.w r3, [r7, 0xb0]");
                                                                 |         if (r4 == 1) {
    0x00013f46 beq 0x13f62                                       |             goto label_52;
                                                                 |         }
    0x00013f48 ldr.w r2, [r7, 0xb4]                              |         r2 = *((r7 + 0xb4));
    0x00013f4c cmp r2, r3                                        |         
    0x00013f4e bhi 0x13f3c                                       |         
                                                                 |     }
    0x00013f50 mov r0, r5                                        |     r0 = r5;
    0x00013f52 blx 0x5ebc                                        |     r0 = fcn_00005ebc ();
    0x00013f56 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00013f58 bne.w 0x13ca6                                     |         goto label_3;
                                                                 |     }
    0x00013f5c ldr.w r3, [r7, 0xb0]                              |     r3 = *((r7 + 0xb0));
    0x00013f60 b 0x13f3c                                         |     goto label_22;
                                                                 | label_52:
    0x00013f62 ldr r2, [pc, 0x40]                                |     
    0x00013f64 movs r3, 0x38                                     |     r3 = 0x38;
    0x00013f66 ldr.w r0, [r8, 0x6dc]                             |     r0 = *((r8 + 0x6dc));
    0x00013f6a mvn r1, 0xe                                       |     r1 = ~0xe;
    0x00013f6e add r2, pc                                        |     r2 = 0x27f18;
    0x00013f70 blx 0x5db0                                        |     r0 = fcn_00005db0 ();
    0x00013f74 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00013f76 bne 0x13f06                                       |         goto label_23;
                                                                 |     }
    0x00013f78 mov r2, r4                                        |     r2 = r4;
    0x00013f7a mov r1, r4                                        |     r1 = r4;
    0x00013f7c blx 0x5ed4                                        |     fcn_00005ed4 ();
    0x00013f80 str.w r0, [r8, 0x6e0]                             |     __asm ("str.w r0, aav.0x000000ff");
    0x00013f84 b 0x13bd8                                         |     goto label_18;
                                                                 | label_35:
    0x00013f86 mov.w r0, 0x10000                                 |     r0 = 0x10000;
    0x00013f8a blx 0x63b0                                        |     gmtime_r ();
    0x00013f8e str.w r0, [r8, 0x6f4]                             |     __asm ("str.w r0, aav.0x000000ff");
    0x00013f92 b 0x13c08                                         |     goto label_24;
                                                                 | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0x78a8 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.soap_getchar ()              | void soap_getchar (int16_t arg1, uint32_t arg3) {
                                             |     r0 = arg1;
                                             |     r2 = arg3;
    0x000078a8 push {r3, r4, r5, lr}         |     
    0x000078aa add.w r5, r0, 0x3000          |     r5 = r0 + 0x3000;
    0x000078ae ldr.w r3, [r5, 0xb8]          |     r3 = *((r5 + 0xb8));
                                             |     if (r3 != 0) {
    0x000078b2 cbnz r3, 0x78dc               |         goto label_1;
                                             |     }
    0x000078b4 ldrd r3, r2, [r5, 0xb0]       |     __asm ("ldrd r3, r2, [r5, 0xb0]");
    0x000078b8 mov r4, r0                    |     r4 = r0;
    0x000078ba cmp r3, r2                    |     
    0x000078bc bhs 0x78d0                    |     
                                             |     while (1) {
    0x000078be adds r2, r3, 1                |         r2 = r3 + 1;
    0x000078c0 add r4, r3                    |         r4 += r3;
    0x000078c2 movw r3, 0x30d8               |         r3 = 0x30d8;
    0x000078c6 str.w r2, [r5, 0xb0]          |         __asm ("str.w r2, [r5, 0xb0]");
    0x000078ca ldrb r3, [r4, r3]             |         r3 = *((r4 + r3));
                                             | label_0:
    0x000078cc mov r0, r3                    |         r0 = r3;
    0x000078ce pop {r3, r4, r5, pc}          |         
    0x000078d0 blx 0x5ebc                    |         r0 = fcn_00005ebc ();
                                             |         if (r0 != 0) {
    0x000078d4 cbnz r0, 0x78ea               |             goto label_2;
                                             |         }
    0x000078d6 ldr.w r3, [r5, 0xb0]          |         r3 = *((r5 + 0xb0));
    0x000078da b 0x78be                      |         
                                             |     }
                                             | label_1:
    0x000078dc adds r2, r3, 1                |     r2 = r3 + 1;
                                             |     if (r2 == r3) {
    0x000078de beq 0x78cc                    |         goto label_0;
                                             |     }
    0x000078e0 movs r2, 0                    |     r2 = 0;
    0x000078e2 mov r0, r3                    |     r0 = r3;
    0x000078e4 str.w r2, [r5, 0xb8]          |     __asm ("str.w r2, [r5, 0xb8]");
    0x000078e8 pop {r3, r4, r5, pc}          |     
                                             | label_2:
    0x000078ea mov.w r3, -1                  |     r3 = -1;
    0x000078ee b 0x78cc                      |     goto label_0;
                                             | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0x83c8 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.soap_getoffsets ()                           | void soap_getoffsets (uint32_t arg1, int16_t arg2, int16_t arg3, uint32_t arg4) {
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x000083c8 cmp r0, 0                                     |     
    0x000083ca it ne                                         |     
                                                             |     if (r0 != 0) {
    0x000083cc cmpne r3, 0                                   |         __asm ("cmpne r3, 0");
                                                             |     }
    0x000083ce push.w {r4, r5, r6, r7, r8, sb, sl, lr}       |     
    0x000083d2 mov ip, r0                                    |     
    0x000083d4 mov r8, r3                                    |     r8 = r3;
    0x000083d6 ite gt                                        |     
                                                             |     if (r0 <= 0) {
    0x000083d8 movgt r4, 1                                   |         r4 = 1;
                                                             |     }
                                                             |     if (r0 > 0) {
    0x000083da movle r4, 0                                   |         r4 = 0;
                                                             |     }
                                                             |     if (r2 == 0) {
    0x000083dc cbz r2, 0x842e                                |         goto label_2;
                                                             |     }
    0x000083de cmp r4, 0                                     |     
                                                             |     if (r4 == 0) {
    0x000083e0 beq 0x8474                                    |         goto label_3;
                                                             |     }
    0x000083e2 mov.w sl, 0                                   |     sl = 0;
    0x000083e6 subs r5, r1, 4                                |     r5 = r1 - 4;
    0x000083e8 subs r7, r2, 4                                |     r7 = r2 - 4;
    0x000083ea mov r6, sl                                    |     r6 = sl;
    0x000083ec b 0x8414                                      |     
                                                             |     while (r3 != 0) {
    0x000083ee ldr r3, [r5, 4]!                              |         r3 = *((r5 += 4));
    0x000083f2 mul sl, r3, sl                                |         sl = r3 * sl;
    0x000083f6 blx 0x6138                                    |         r0 = fcn_00006138 ();
    0x000083fa mov r4, r0                                    |         r4 = r0;
    0x000083fc movs r1, 0x2c                                 |         r1 = 0x2c;
    0x000083fe mov r0, sb                                    |         r0 = sb;
    0x00008400 str r4, [r7, 4]!                              |         *((r7 += 4)) = r4;
    0x00008404 blx 0x5b9c                                    |         r0 = fcn_00005b9c ();
    0x00008408 cmp r0, 0                                     |         
    0x0000840a it ne                                         |         
                                                             |         if (r0 != 0) {
    0x0000840c cmpne r8, r6                                  |             __asm ("cmpne r8, r6");
                                                             |         }
    0x0000840e add sl, r4                                    |         sl += r4;
    0x00008410 mov ip, r0                                    |         
                                                             |         if (r0 <= 0) {
    0x00008412 ble 0x8428                                    |             goto label_1;
                                                             |         }
    0x00008414 ldrb.w r3, [ip]                               |         r3 = *(ip);
    0x00008418 add.w sb, ip, 1                               |         sb = ip + 1;
    0x0000841c movs r2, 0xa                                  |         r2 = 0xa;
    0x0000841e movs r1, 0                                    |         r1 = 0;
    0x00008420 mov r0, sb                                    |         r0 = sb;
    0x00008422 adds r6, 1                                    |         r6++;
    0x00008424 cmp r3, 0                                     |         
    0x00008426 bne 0x83ee                                    |         
                                                             |     }
                                                             |     do {
                                                             | label_1:
    0x00008428 mov r0, sl                                    |         r0 = sl;
    0x0000842a pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             |         if (r4 == 0) {
                                                             | label_2:
    0x0000842e cbz r4, 0x8474                                |             goto label_3;
                                                             |         }
    0x00008430 mov sl, r2                                    |         sl = r2;
    0x00008432 subs r5, r1, 4                                |         r5 = r1 - 4;
    0x00008434 mov r7, r2                                    |         r7 = r2;
    0x00008436 b 0x845a                                      |         goto label_4;
                                                             | label_0:
    0x00008438 ldr r6, [r5, 4]!                              |         r6 = *((r5 += 4));
    0x0000843c blx 0x6138                                    |         fcn_00006138 ();
    0x00008440 movs r1, 0x2c                                 |         r1 = 0x2c;
    0x00008442 mul r6, r6, sl                                |         r6 *= sl;
    0x00008446 mov sl, r0                                    |         sl = r0;
    0x00008448 mov r0, sb                                    |         r0 = sb;
    0x0000844a blx 0x5b9c                                    |         r0 = fcn_00005b9c ();
    0x0000844e cmp r0, 0                                     |         
    0x00008450 it ne                                         |         
                                                             |         if (r0 != 0) {
    0x00008452 cmpne r8, r7                                  |             __asm ("cmpne r8, r7");
                                                             |         }
    0x00008454 add sl, r6                                    |         sl += r6;
    0x00008456 mov ip, r0                                    |         
    0x00008458 ble 0x8428                                    |         
                                                             |     } while (r0 <= 0);
                                                             | label_4:
    0x0000845a ldrb.w r3, [ip]                               |     r3 = *(ip);
    0x0000845e add.w sb, ip, 1                               |     sb = ip + 1;
    0x00008462 movs r2, 0xa                                  |     r2 = 0xa;
    0x00008464 movs r1, 0                                    |     r1 = 0;
    0x00008466 mov r0, sb                                    |     r0 = sb;
    0x00008468 adds r7, 1                                    |     r7++;
    0x0000846a cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x0000846c bne 0x8438                                    |         goto label_0;
                                                             |     }
    0x0000846e mov r0, sl                                    |     r0 = sl;
    0x00008470 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |     
                                                             | label_3:
    0x00008474 mov sl, r4                                    |     sl = r4;
    0x00008476 b 0x8428                                      |     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/libsoap.so @ 0x8478 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.soap_getsize ()                                  | void soap_getsize (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
    0x00008478 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x0000847c mov r4, r0                                        |     r4 = r0;
    0x0000847e ldr r0, [pc, 0xdc]                                |     
    0x00008480 mov r8, r2                                        |     r8 = r2;
    0x00008482 movs r3, 0                                        |     r3 = 0;
    0x00008484 sub sp, 0xc                                       |     
    0x00008486 ldr r2, [pc, 0xd8]                                |     r2 = *(0x8562);
    0x00008488 add r0, pc                                        |     r0 = 0x109ea;
    0x0000848a ldr r2, [r0, r2]                                  |     
    0x0000848c ldr r2, [r2]                                      |     r2 = *(0x109ea);
    0x0000848e str r2, [sp, 4]                                   |     var_4h = r2;
    0x00008490 mov.w r2, 0                                       |     r2 = 0;
    0x00008494 str.w r3, [r8]                                    |     __asm ("str.w r3, [r8]");
    0x00008498 ldrb r3, [r4]                                     |     r3 = *(r4);
    0x0000849a cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0000849c beq 0x8538                                        |         goto label_2;
                                                                 |     }
    0x0000849e cmp r3, 0x5b                                      |     
    0x000084a0 movw sb, 0x4240                                   |     
    0x000084a4 mov r6, r1                                        |     r6 = r1;
    0x000084a6 it eq                                             |     
                                                                 |     if (r3 != 0x5b) {
    0x000084a8 addeq r4, 1                                       |         r4++;
                                                                 |     }
    0x000084aa movs r5, 1                                        |     r5 = 1;
    0x000084ac mov r7, sp                                        |     r7 = sp;
    0x000084ae movt sb, 0xf                                      |     sb = 0xf4240;
    0x000084b2 b 0x84bc                                          |     
                                                                 |     if (r6 != 0) {
                                                                 |         while (r0 != 0) {
    0x000084b4 cbz r6, 0x84ba                                    |             
    0x000084b6 ldrb r3, [r6]                                     |             r3 = *(r6);
                                                                 |             if (r3 != 0) {
    0x000084b8 cbnz r3, 0x850c                                   |                 goto label_3;
                                                                 |             }
                                                                 |         }
                                                                 | label_0:
    0x000084ba adds r4, 1                                        |         r4++;
    0x000084bc movs r2, 0xa                                      |         r2 = 0xa;
    0x000084be mov r1, r7                                        |         r1 = r7;
    0x000084c0 mov r0, r4                                        |         r0 = r4;
    0x000084c2 blx 0x6138                                        |         r0 = fcn_00006138 ();
    0x000084c6 mul r5, r0, r5                                    |         r5 = r0 * r5;
    0x000084ca mov sl, r0                                        |         sl = r0;
    0x000084cc cmp r5, sb                                        |         
    0x000084ce ite le                                            |         
                                                                 |         if (r5 > sb) {
    0x000084d0 movle r3, 0                                       |             r3 = 0;
                                                                 |         }
                                                                 |         if (r5 <= sb) {
    0x000084d2 movgt r3, 1                                       |             r3 = 1;
                                                                 |         }
    0x000084d4 orrs.w r3, r3, r0, lsr 31                         |         r3 |= (r0 >> 31);
                                                                 |         if (r3 != r3) {
    0x000084d8 bne 0x8538                                        |             goto label_2;
                                                                 |         }
    0x000084da ldr.w fp, [sp]                                    |         fp = *(sp);
    0x000084de cmp fp, r4                                        |         
                                                                 |         if (fp == r4) {
    0x000084e0 beq 0x8538                                        |             goto label_2;
                                                                 |         }
    0x000084e2 movs r1, 0x2c                                     |         r1 = 0x2c;
    0x000084e4 mov r0, fp                                        |         r0 = fp;
    0x000084e6 blx 0x5b9c                                        |         r0 = fcn_00005b9c ();
    0x000084ea mov r4, r0                                        |         r4 = r0;
    0x000084ec cmp r0, 0                                         |         
    0x000084ee bne 0x84b4                                        |         
                                                                 |     }
    0x000084f0 movs r1, 0x20                                     |     r1 = 0x20;
    0x000084f2 mov r0, fp                                        |     r0 = fp;
    0x000084f4 blx 0x5b9c                                        |     r0 = fcn_00005b9c ();
    0x000084f8 mov r4, r0                                        |     r4 = r0;
                                                                 |     if (r6 != 0) {
    0x000084fa cbz r6, 0x8500                                    |         
    0x000084fc ldrb r3, [r6]                                     |         r3 = *(r6);
                                                                 |         if (r3 != 0) {
    0x000084fe cbnz r3, 0x850c                                   |             goto label_3;
                                                                 |         }
                                                                 |     }
    0x00008500 cmp r4, 0                                         |     
                                                                 |     if (r4 != 0) {
    0x00008502 bne 0x84ba                                        |         goto label_0;
                                                                 |     }
                                                                 | label_1:
    0x00008504 ldr.w r0, [r8]                                    |     r0 = *(r8);
    0x00008508 subs r0, r5, r0                                   |     r0 = r5 - r0;
    0x0000850a b 0x853c                                          |     goto label_4;
                                                                 | label_3:
    0x0000850c ldr.w r3, [r8]                                    |     r3 = *(r8);
    0x00008510 movs r2, 0xa                                      |     r2 = 0xa;
    0x00008512 mov r1, r7                                        |     r1 = r7;
    0x00008514 adds r0, r6, 1                                    |     r0 = r6 + 1;
    0x00008516 mul r3, sl, r3                                    |     r3 = sl * r3;
    0x0000851a str.w r3, [r8]                                    |     __asm ("str.w r3, [r8]");
    0x0000851e blx 0x6138                                        |     fcn_00006138 ();
    0x00008522 ldr.w r3, [r8]                                    |     r3 = *(r8);
    0x00008526 cmp r0, 0                                         |     
    0x00008528 add r3, r0                                        |     r3 += r0;
    0x0000852a str.w r3, [r8]                                    |     __asm ("str.w r3, [r8]");
                                                                 |     if (r0 < 0) {
    0x0000852e blt 0x8538                                        |         goto label_2;
                                                                 |     }
    0x00008530 ldr r6, [sp]                                      |     r6 = *(sp);
    0x00008532 cmp r4, 0                                         |     
                                                                 |     if (r4 != 0) {
    0x00008534 bne 0x84ba                                        |         goto label_0;
                                                                 |     }
    0x00008536 b 0x8504                                          |     goto label_1;
                                                                 | label_2:
    0x00008538 mov.w r0, -1                                      |     r0 = -1;
                                                                 | label_4:
    0x0000853c ldr r2, [pc, 0x24]                                |     
    0x0000853e ldr r3, [pc, 0x20]                                |     r3 = *(0x8562);
    0x00008540 add r2, pc                                        |     r2 = 0x10aa8;
    0x00008542 ldr r3, [r2, r3]                                  |     r3 = *(0x10aa8);
    0x00008544 ldr r2, [r3]                                      |     r2 = *(0x10aa8);
    0x00008546 ldr r3, [sp, 4]                                   |     r3 = var_4h;
    0x00008548 eors r2, r3                                       |     r2 ^= r3;
    0x0000854a mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 == r3) {
    0x0000854e bne 0x8556                                        |         
    0x00008550 add sp, 0xc                                       |         
    0x00008552 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 |     }
    0x00008556 blx 0x63ec                                        |     SSL_get_verify_result ();
    0x0000855a nop                                               |     
    0x0000855c mov r4, ip                                        |     r4 = ip;
    0x0000855e movs r2, r0                                       |     r2 = r0;
    0x00008560 lsls r0, r0, 0x14                                 |     r0 <<= 0x14;
    0x00008562 movs r0, r0                                       |     
    0x00008564 cmp ip, r5                                        |     
    0x00008566 movs r2, r0                                       |     r2 = 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/libsoap.so @ 0x8568 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.soap_getsizes ()                 | void soap_getsizes (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
                                                 |     r2 = arg3;
    0x00008568 mvnsmi lr, sp, lsr 18             |     __asm ("mvnsmi lr, sp, lsr 18");
    0x0000856c ldrb r3, [r0]                     |     r3 = *(r0);
    0x0000856e cmp r3, 0                         |     
                                                 |     if (r3 == 0) {
    0x00008570 beq 0x860e                        |         goto label_1;
                                                 |     }
    0x00008572 mov r8, r2                        |     r8 = r2;
    0x00008574 mov r6, r1                        |     r6 = r1;
    0x00008576 movw r7, 0x4240                   |     
    0x0000857a add.w r6, r6, r8, lsl 2           |     r6 += (r8 << 2);
    0x0000857e mov r5, r0                        |     r5 = r0;
    0x00008580 mov.w r8, 1                       |     r8 = 1;
    0x00008584 movt r7, 0xf                      |     r7 = 0xf4240;
    0x00008588 blx 0x5fec                        |     r0 = fcn_00005fec ();
    0x0000858c mov r4, r0                        |     r4 = r0;
                                                 | label_0:
    0x0000858e subs r3, r4, 1                    |     r3 = r4 - 1;
                                                 |     if (r4 == 0) {
    0x00008590 cbz r4, 0x85e6                    |         goto label_2;
                                                 |     }
    0x00008592 adds r1, r5, r4                   |     r1 = r5 + r4;
    0x00008594 mov r4, r3                        |     r4 = r3;
    0x00008596 b 0x859c                          |     
                                                 |     while (r3 == 0) {
    0x00008598 subs r4, 1                        |         r4--;
                                                 |         if (r4 <= 1) {
    0x0000859a blo 0x85e6                        |             goto label_2;
                                                 |         }
    0x0000859c ldrb r2, [r1, -0x1]!              |         r2 = *((r1 -= 0x1));
    0x000085a0 cmp r2, 0x2c                      |         
    0x000085a2 it ne                             |         
                                                 |         if (r2 != 0x2c) {
    0x000085a4 cmpne r2, 0x5b                    |             __asm ("cmpne r2, 0x5b");
                                                 |         }
    0x000085a6 ite eq                            |         
                                                 |         if (r2 != 0x2c) {
    0x000085a8 moveq r3, 1                       |             r3 = 1;
                                                 |         }
                                                 |         if (r2 == 0x2c) {
    0x000085aa movne r3, 0                       |             r3 = 0;
                                                 |         }
    0x000085ac cmp r2, 0x20                      |         
    0x000085ae it eq                             |         
                                                 |         if (r2 != 0x20) {
    0x000085b0 orreq r3, r3, 1                   |             r3 |= 1;
                                                 |         }
    0x000085b4 cmp r3, 0                         |         
    0x000085b6 beq 0x8598                        |         
                                                 |     }
    0x000085b8 adds r0, r4, 1                    |     r0 = r4 + 1;
    0x000085ba movs r2, 0xa                      |     r2 = 0xa;
    0x000085bc movs r1, 0                        |     r1 = 0;
    0x000085be add r0, r5                        |     r0 += r5;
    0x000085c0 blx 0x6138                        |     r0 = fcn_00006138 ();
    0x000085c4 mul r8, r0, r8                    |     r8 = r0 * r8;
    0x000085c8 str r0, [r6, -0x4]!               |     *((r6 -= 0x4)) = r0;
    0x000085cc cmp r8, r7                        |     
    0x000085ce ite le                            |     
                                                 |     if (r8 > r7) {
    0x000085d0 movle r3, 0                       |         r3 = 0;
                                                 |     }
                                                 |     if (r8 <= r7) {
    0x000085d2 movgt r3, 1                       |         r3 = 1;
                                                 |     }
    0x000085d4 orrs.w r3, r3, r0, lsr 31         |     r3 |= (r0 >> 31);
                                                 |     if (r3 != r3) {
    0x000085d8 bne 0x860e                        |         goto label_1;
                                                 |     }
    0x000085da ldrb r3, [r5, r4]                 |     r3 = *((r5 + r4));
    0x000085dc cmp r3, 0x5b                      |     
                                                 |     if (r3 != 0x5b) {
    0x000085de bne 0x858e                        |         goto label_0;
                                                 |     }
                                                 |     do {
    0x000085e0 mov r0, r8                        |         r0 = r8;
    0x000085e2 pop.w {r4, r5, r6, r7, r8, pc}    |         
                                                 | label_2:
    0x000085e6 movs r2, 0xa                      |         r2 = 0xa;
    0x000085e8 movs r1, 0                        |         r1 = 0;
    0x000085ea mov r0, r5                        |         r0 = r5;
    0x000085ec blx 0x6138                        |         r0 = fcn_00006138 ();
    0x000085f0 mul r8, r0, r8                    |         r8 = r0 * r8;
    0x000085f4 movw r3, 0x4240                   |         
    0x000085f8 movt r3, 0xf                      |         r3 = 0xf4240;
    0x000085fc str r0, [r6, -0x4]                |         *((r6 - 0x4)) = r0;
    0x00008600 cmp r8, r3                        |         
    0x00008602 ite le                            |         
                                                 |         if (r8 > r3) {
    0x00008604 movle r3, 0                       |             r3 = 0;
                                                 |         }
                                                 |         if (r8 <= r3) {
    0x00008606 movgt r3, 1                       |             r3 = 1;
                                                 |         }
    0x00008608 orrs.w r3, r3, r0, lsr 31         |         r3 |= (r0 >> 31);
    0x0000860c beq 0x85e0                        |         
                                                 |     } while (r3 == r3);
                                                 | label_1:
    0x0000860e mov.w r8, -1                      |     r8 = -1;
    0x00008612 mov r0, r8                        |     r0 = r8;
    0x00008614 pop.w {r4, r5, r6, r7, r8, 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/libsoap.so @ 0x8618 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) sym.soap_getposition ()                  | void soap_getposition (int16_t arg1, int16_t arg2) {
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
    0x00008618 push.w {r4, r5, r6, r7, r8, lr}       |     
    0x0000861c ldrb r3, [r0]                         |     r3 = *(r0);
                                                     |     if (r3 == 0) {
    0x0000861e cbz r3, 0x8678                        |         goto label_2;
                                                     |     }
    0x00008620 mov r6, r0                            |     r6 = r0;
    0x00008622 sub.w r8, r1, 4                       |     r8 = r1 - 4;
    0x00008626 movs r7, 0                            |     r7 = 0;
    0x00008628 movs r5, 1                            |     r5 = 1;
                                                     | label_0:
    0x0000862a adds r4, r6, r5                       |     r4 = r6 + r5;
    0x0000862c movs r2, 0xa                          |     r2 = 0xa;
    0x0000862e movs r1, 0                            |     r1 = 0;
    0x00008630 mov r0, r4                            |     r0 = r4;
    0x00008632 blx 0x6138                            |     fcn_00006138 ();
    0x00008636 str r0, [r8, 4]!                      |     *((r8 += 4)) = r0;
    0x0000863a adds r7, 1                            |     r7++;
    0x0000863c ldrb r3, [r6, r5]                     |     r3 = *((r6 + r5));
    0x0000863e cmp r3, 0x2c                          |     
    0x00008640 it ne                                 |     
                                                     |     if (r3 != 0x2c) {
    0x00008642 cmpne r3, 0                           |         __asm ("cmpne r3, 0");
                                                     |     }
                                                     |     if (r3 == 0x2c) {
    0x00008644 beq 0x8670                            |         goto label_3;
                                                     |     }
    0x00008646 mov r0, r4                            |     r0 = r4;
    0x00008648 b 0x8658                              |     
                                                     |     while (r3 != 0x5d) {
    0x0000864a ldrb r3, [r0, 1]!                     |         r3 = *((r0 += 1));
    0x0000864e adds r5, 1                            |         r5++;
    0x00008650 cmp r3, 0                             |         
    0x00008652 it ne                                 |         
                                                     |         if (r3 != 0) {
    0x00008654 cmpne r3, 0x2c                        |             __asm ("cmpne r3, 0x2c");
                                                     |         }
                                                     |         if (r3 == 0) {
    0x00008656 beq 0x8670                            |             goto label_3;
                                                     |         }
    0x00008658 cmp r3, 0x5d                          |         
    0x0000865a bne 0x864a                            |         
                                                     |     }
                                                     | label_1:
    0x0000865c cmp r7, 0x10                          |     
                                                     |     if (r7 == 0x10) {
    0x0000865e beq 0x866a                            |         goto label_4;
                                                     |     }
    0x00008660 ldrb r3, [r6, r5]                     |     r3 = *((r6 + r5));
    0x00008662 cmp r3, 0                             |     
    0x00008664 it ne                                 |     
                                                     |     if (r3 == 0) {
    0x00008666 cmpne r3, 0x5d                        |         __asm ("cmpne r3, 0x5d");
                                                     |         goto label_5;
                                                     |     }
                                                     |     if (r3 != 0) {
                                                     | label_5:
    0x00008668 bne 0x862a                            |         goto label_0;
                                                     |     }
                                                     |     do {
                                                     | label_4:
    0x0000866a mov r0, r7                            |         r0 = r7;
    0x0000866c pop.w {r4, r5, r6, r7, r8, pc}        |         
                                                     | label_3:
    0x00008670 cmp r3, 0x2c                          |         
    0x00008672 it eq                                 |         
                                                     |         if (r3 != 0x2c) {
    0x00008674 addeq r5, 1                           |             r5++;
                                                     |         }
    0x00008676 b 0x865c                              |         goto label_1;
                                                     | label_2:
    0x00008678 mov.w r7, -1                          |         r7 = -1;
    0x0000867c b 0x866a                              |         
                                                     |     } while (1);
                                                     | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0x8864 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) sym.soap_get ()                                      | void soap_get (int16_t arg1) {
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_5h;
                                                                 |     int16_t var_6h;
                                                                 |     int16_t var_bh;
                                                                 |     int16_t var_44h;
                                                                 |     r0 = arg1;
    0x00008864 ldr.w r2, [pc, 0x574]                             |     r2 = *(0x00008ddc);
    0x00008868 ldr.w r3, [pc, 0x574]                             |     
    0x0000886c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00008870 add.w r4, r0, 0x3000                              |     r4 = r0 + 0x3000;
    0x00008874 add r2, pc                                        |     r2 += pc;
    0x00008876 ldr.w r6, [r4, 0xb8]                              |     r6 = *((r4 + 0xb8));
    0x0000887a sub sp, 0x4c                                      |     
    0x0000887c mov r5, r0                                        |     r5 = r0;
    0x0000887e ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00008880 ldr r3, [r3]                                      |     r3 = *(0x8de0);
    0x00008882 str r3, [sp, 0x44]                                |     var_44h = r3;
    0x00008884 mov.w r3, 0                                       |     r3 = 0;
    0x00008888 cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x0000888a beq.w 0x899c                                      |         goto label_30;
                                                                 |     }
    0x0000888e adds r1, r6, 1                                    |     r1 = r6 + 1;
                                                                 |     if (r1 == r6) {
    0x00008890 beq 0x8976                                        |         goto label_7;
                                                                 |     }
    0x00008892 movs r3, 0                                        |     r3 = 0;
    0x00008894 movw r7, 0x6d78                                   |     
    0x00008898 str.w r3, [r4, 0xb8]                              |     __asm ("str.w r3, [r4, 0xb8]");
    0x0000889c movw r8, 0x30d8                                   |     r8 = 0x30d8;
    0x000088a0 ldrsh.w r3, [r4, 0xbc]                            |     r3 = *((r4 + 0xbc));
    0x000088a4 movt r7, 0x206c                                   |     r7 = 0x206c6d78;
                                                                 |     if (r3 != 0) {
                                                                 | label_1:
    0x000088a8 cbz r3, 0x8908                                    |         
                                                                 | label_21:
    0x000088aa cmp r6, 0x5d                                      |         
                                                                 |         if (r6 != 0x5d) {
    0x000088ac bne 0x897a                                        |             goto label_3;
                                                                 |         }
    0x000088ae ldrd r2, r3, [r4, 0xb0]                           |         __asm ("ldrd r2, r3, [r4, 0xb0]");
    0x000088b2 cmp r2, r3                                        |         
                                                                 |         if (r2 >= r3) {
    0x000088b4 bhs.w 0x8a66                                      |             goto label_31;
                                                                 |         }
                                                                 | label_6:
    0x000088b8 adds r3, r2, 1                                    |         r3 = r2 + 1;
    0x000088ba adds r1, r5, r2                                   |         r1 = r5 + r2;
    0x000088bc str.w r3, [r4, 0xb0]                              |         __asm ("str.w r3, [r4, 0xb0]");
    0x000088c0 ldrb.w r1, [r1, r8]                               |         r1 = *((r1 + r8));
    0x000088c4 cmp r1, 0x5d                                      |         
                                                                 |         if (r1 != 0x5d) {
    0x000088c6 bne.w 0x8a78                                      |             goto label_32;
                                                                 |         }
    0x000088ca ldr.w r2, [r4, 0xb4]                              |         r2 = *((r4 + 0xb4));
    0x000088ce cmp r3, r2                                        |         
                                                                 |         if (r3 >= r2) {
    0x000088d0 bhs.w 0x8b66                                      |             goto label_33;
                                                                 |         }
                                                                 | label_10:
    0x000088d4 adds r2, r5, r3                                   |         r2 = r5 + r3;
    0x000088d6 ldrb.w r2, [r2, r8]                               |         r2 = *((r2 + r8));
    0x000088da cmp r2, 0x3e                                      |         
                                                                 |         if (r2 != 0x3e) {
    0x000088dc bne.w 0x8d44                                      |             goto label_34;
                                                                 |         }
    0x000088e0 ldr.w r2, [r4, 0xb4]                              |         r2 = *((r4 + 0xb4));
    0x000088e4 movs r1, 0                                        |         r1 = 0;
    0x000088e6 strh.w r1, [r4, 0xbc]                             |         *((r4 + 0xbc)) = r1;
    0x000088ea cmp r2, r3                                        |         
                                                                 |         if (r2 < r3) {
    0x000088ec bls.w 0x8b78                                      |             goto label_35;
                                                                 |         }
                                                                 | label_11:
    0x000088f0 adds r3, 1                                        |         r3++;
    0x000088f2 str.w r3, [r4, 0xb0]                              |         __asm ("str.w r3, [r4, 0xb0]");
                                                                 | label_12:
    0x000088f6 cmp r2, r3                                        |         
                                                                 |         if (r2 < r3) {
    0x000088f8 bls.w 0x8b8a                                      |             goto label_36;
                                                                 |         }
                                                                 | label_13:
    0x000088fc adds r2, r3, 1                                    |         r2 = r3 + 1;
    0x000088fe add r3, r5                                        |         r3 += r5;
    0x00008900 str.w r2, [r4, 0xb0]                              |         __asm ("str.w r2, [r4, 0xb0]");
    0x00008904 ldrb.w r6, [r3, r8]                               |         r6 = *((r3 + r8));
                                                                 |     }
    0x00008908 sub.w r3, r6, 0x22                                |     r3 = r6 - 0x22;
    0x0000890c cmp r3, 0x1c                                      |     
                                                                 |     if (r3 > 0x1c) {
    0x0000890e bhi 0x897a                                        |         goto label_3;
                                                                 |     }
                                                                 |     /* switch table (30 cases) at 0x8914 */
    0x00008910 tbh [pc, r3, lsl 1]                               |     __asm ("tbh [pc, r3, lsl 1]");
                                                                 | label_0:
    0x0000894e ldrd r2, r0, [r4, 0xb0]                           |     __asm ("ldrd r2, r0, [r4, 0xb0]");
                                                                 |     do {
    0x00008952 adds r3, r2, 1                                    |         r3 = r2 + 1;
    0x00008954 adds r1, r5, r2                                   |         r1 = r5 + r2;
    0x00008956 str.w r3, [r4, 0xb0]                              |         __asm ("str.w r3, [r4, 0xb0]");
    0x0000895a ldrb.w r1, [r1, r8]                               |         r1 = *((r1 + r8));
    0x0000895e cmp r1, 0x5b                                      |         
                                                                 |         if (r1 == 0x5b) {
    0x00008960 beq.w 0x8c7a                                      |             goto label_37;
                                                                 |         }
                                                                 | label_14:
    0x00008964 cmp r3, r0                                        |         
    0x00008966 it lo                                             |         
                                                                 |         if (r3 >= r0) {
    0x00008968 movlo r2, r3                                      |             r2 = r3;
                                                                 |         }
    0x0000896a blo 0x8952                                        |         
                                                                 |     } while (r3 <= r0);
    0x0000896c mov r0, r5                                        |     r0 = r5;
    0x0000896e blx 0x5ebc                                        |     r0 = fcn_00005ebc ();
    0x00008972 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00008974 beq 0x894e                                        |         goto label_0;
                                                                 |     }
                                                                 |     do {
                                                                 | label_7:
    0x00008976 mov.w r6, -1                                      |         r6 = -1;
                                                                 | label_3:
    0x0000897a ldr.w r2, [pc, 0x468]                             |         r2 = *(0x00008de4);
    0x0000897e ldr.w r3, [pc, 0x460]                             |         r3 = *(0x8de2);
    0x00008982 add r2, pc                                        |         r2 += pc;
    0x00008984 ldr r3, [r2, r3]                                  |         r3 = *((r2 + r3));
    0x00008986 ldr r2, [r3]                                      |         r2 = *(0x8de2);
    0x00008988 ldr r3, [sp, 0x44]                                |         r3 = var_44h;
    0x0000898a eors r2, r3                                       |         r2 ^= r3;
    0x0000898c mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00008990 bne.w 0x8dd6                                      |             goto label_38;
                                                                 |         }
    0x00008994 mov r0, r6                                        |         r0 = r6;
    0x00008996 add sp, 0x4c                                      |         
    0x00008998 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_30:
    0x0000899c ldrd r3, r2, [r4, 0xb0]                           |         __asm ("ldrd r3, r2, [r4, 0xb0]");
    0x000089a0 cmp r3, r2                                        |         
                                                                 |         if (r3 < r2) {
    0x000089a2 bhs 0x89c4                                        |             
                                                                 | label_2:
    0x000089a4 adds r1, r3, 1                                    |             r1 = r3 + 1;
    0x000089a6 movw r2, 0x30d8                                   |             r2 = 0x30d8;
    0x000089aa add r3, r5                                        |             r3 += r5;
    0x000089ac movw r7, 0x6d78                                   |             
    0x000089b0 str.w r1, [r4, 0xb0]                              |             __asm ("str.w r1, [r4, 0xb0]");
    0x000089b4 movw r8, 0x30d8                                   |             r8 = 0x30d8;
    0x000089b8 ldrb r6, [r3, r2]                                 |             r6 = *((r3 + r2));
    0x000089ba movt r7, 0x206c                                   |             r7 = 0x206c6d78;
    0x000089be ldrsh.w r3, [r4, 0xbc]                            |             r3 = *((r4 + 0xbc));
    0x000089c2 b 0x88a8                                          |             goto label_1;
                                                                 |         }
    0x000089c4 blx 0x5ebc                                        |         r0 = fcn_00005ebc ();
    0x000089c8 cmp r0, 0                                         |         
    0x000089ca bne 0x8976                                        |         
                                                                 |     } while (r0 != 0);
    0x000089cc ldr.w r3, [r4, 0xb0]                              |     r3 = *((r4 + 0xb0));
    0x000089d0 b 0x89a4                                          |     goto label_2;
    0x000089d2 ldr.w r2, [r4, 0xb0]                              |     r2 = *((r4 + 0xb0));
    0x000089d6 b 0x89ea                                          |     
                                                                 |     while (r3 > r2) {
                                                                 | label_5:
    0x000089d8 adds r2, r3, 1                                    |         r2 = r3 + 1;
    0x000089da add r3, r5                                        |         r3 += r5;
    0x000089dc str.w r2, [r4, 0xb0]                              |         __asm ("str.w r2, [r4, 0xb0]");
    0x000089e0 ldrb.w r3, [r3, r8]                               |         r3 = *((r3 + r8));
    0x000089e4 cmp r3, 0x20                                      |         
                                                                 |         if (r3 > 0x20) {
    0x000089e6 bhi.w 0x8aec                                      |             goto label_39;
                                                                 |         }
    0x000089ea ldr.w r3, [r4, 0xb4]                              |         r3 = *((r4 + 0xb4));
    0x000089ee cmp r3, r2                                        |         
    0x000089f0 it hi                                             |         
                                                                 |         if (r3 <= r2) {
    0x000089f2 movhi r3, r2                                      |             r3 = r2;
                                                                 |         }
    0x000089f4 bhi 0x89d8                                        |         
                                                                 |     }
    0x000089f6 mov r0, r5                                        |     r0 = r5;
    0x000089f8 blx 0x5ebc                                        |     r0 = fcn_00005ebc ();
                                                                 |     if (r0 == 0) {
    0x000089fc cbz r0, 0x8a60                                    |         goto label_40;
                                                                 |     }
                                                                 | label_28:
    0x000089fe ldr.w r3, [r4, 0xb0]                              |     r3 = *((r4 + 0xb0));
    0x00008a02 mvn r6, 1                                         |     r6 = ~1;
    0x00008a06 subs r3, 1                                        |     r3--;
    0x00008a08 str.w r3, [r4, 0xb0]                              |     __asm ("str.w r3, [r4, 0xb0]");
    0x00008a0c b 0x897a                                          |     goto label_3;
    0x00008a0e mvn r6, 5                                         |     r6 = ~5;
    0x00008a12 b 0x897a                                          |     goto label_3;
    0x00008a14 add.w sb, sp, 4                                   |     sb += var_4h;
    0x00008a18 ldr.w r2, [r4, 0xb0]                              |     r2 = *((r4 + 0xb0));
    0x00008a1c mov r6, sb                                        |     r6 = sb;
    0x00008a1e movw r8, 0x30d8                                   |     r8 = 0x30d8;
    0x00008a22 add.w r7, sp, 0xb                                 |     r7 += var_bh;
    0x00008a26 b 0x8a40                                          |     
                                                                 |     while (r3 > r2) {
                                                                 | label_4:
    0x00008a28 adds r2, r3, 1                                    |         r2 = r3 + 1;
    0x00008a2a add r3, r5                                        |         r3 += r5;
    0x00008a2c str.w r2, [r4, 0xb0]                              |         __asm ("str.w r2, [r4, 0xb0]");
    0x00008a30 ldrb.w r3, [r3, r8]                               |         r3 = *((r3 + r8));
    0x00008a34 cmp r3, 0x3b                                      |         
                                                                 |         if (r3 == 0x3b) {
    0x00008a36 beq 0x8a7e                                        |             goto label_41;
                                                                 |         }
    0x00008a38 strb r3, [r6], 1                                  |         *(r6) = r3;
                                                                 |         r6++;
    0x00008a3c cmp r6, r7                                        |         
                                                                 |         if (r6 == r7) {
    0x00008a3e beq 0x8a7e                                        |             goto label_41;
                                                                 |         }
    0x00008a40 ldr.w r3, [r4, 0xb4]                              |         r3 = *((r4 + 0xb4));
    0x00008a44 cmp r3, r2                                        |         
    0x00008a46 it hi                                             |         
                                                                 |         if (r3 <= r2) {
    0x00008a48 movhi r3, r2                                      |             r3 = r2;
                                                                 |         }
    0x00008a4a bhi 0x8a28                                        |         
                                                                 |     }
    0x00008a4c mov r0, r5                                        |     r0 = r5;
    0x00008a4e blx 0x5ebc                                        |     r0 = fcn_00005ebc ();
                                                                 |     if (r0 != 0) {
    0x00008a52 cbnz r0, 0x8a7e                                   |         goto label_41;
                                                                 |     }
    0x00008a54 ldr.w r3, [r4, 0xb0]                              |     r3 = *((r4 + 0xb0));
    0x00008a58 b 0x8a28                                          |     goto label_4;
    0x00008a5a mvn r6, 4                                         |     r6 = ~4;
    0x00008a5e b 0x897a                                          |     goto label_3;
                                                                 | label_40:
    0x00008a60 ldr.w r3, [r4, 0xb0]                              |     r3 = *((r4 + 0xb0));
    0x00008a64 b 0x89d8                                          |     goto label_5;
                                                                 | label_31:
    0x00008a66 mov r0, r5                                        |     r0 = r5;
    0x00008a68 blx 0x5ebc                                        |     fcn_00005ebc ();
    0x00008a6c ldr.w r2, [r4, 0xb0]                              |     r2 = *((r4 + 0xb0));
    0x00008a70 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00008a72 beq.w 0x88b8                                      |         goto label_6;
                                                                 |     }
    0x00008a76 subs r2, 1                                        |     r2--;
                                                                 | label_32:
    0x00008a78 str.w r2, [r4, 0xb0]                              |     __asm ("str.w r2, [r4, 0xb0]");
    0x00008a7c b 0x897a                                          |     goto label_3;
                                                                 | label_41:
    0x00008a7e movs r1, 0                                        |     r1 = 0;
    0x00008a80 strb r1, [r6]                                     |     *(r6) = r1;
    0x00008a82 ldrb.w r3, [sp, 4]                                |     r3 = var_4h;
    0x00008a86 cmp r3, 0x23                                      |     
                                                                 |     if (r3 == 0x23) {
    0x00008a88 beq.w 0x8c0a                                      |         goto label_42;
                                                                 |     }
    0x00008a8c ldrh.w r3, [sp, 4]                                |     r3 = var_4h;
    0x00008a90 movw r2, 0x746c                                   |     r2 = 0x746c;
    0x00008a94 cmp r3, r2                                        |     
                                                                 |     if (r3 == r2) {
    0x00008a96 beq.w 0x8c44                                      |         goto label_43;
                                                                 |     }
                                                                 | label_18:
    0x00008a9a movw r2, 0x7467                                   |     r2 = 0x7467;
    0x00008a9e cmp r3, r2                                        |     
                                                                 |     if (r3 == r2) {
    0x00008aa0 beq.w 0x8c68                                      |         goto label_44;
                                                                 |     }
                                                                 | label_20:
    0x00008aa4 ldr r3, [sp, 4]                                   |     r3 = var_4h;
    0x00008aa6 movw r2, 0x6d61                                   |     
    0x00008aaa movt r2, 0x70                                     |     r2 = 0x706d61;
    0x00008aae cmp r3, r2                                        |     
    0x00008ab0 itt eq                                            |     
                                                                 |     if (r3 != r2) {
    0x00008ab2 moveq r6, 0x26                                    |         r6 = 0x26;
                                                                 |     }
                                                                 |     if (r3 != r2) {
    0x00008ab4 movteq r6, 0x8000                                 |         __asm ("movteq r6, aav.0x000000ff");
                                                                 |         goto label_45;
                                                                 |     }
                                                                 |     if (r3 == r2) {
                                                                 | label_45:
    0x00008ab8 beq.w 0x897a                                      |         goto label_3;
                                                                 |     }
    0x00008abc movw r2, 0x7571                                   |     
    0x00008ac0 movt r2, 0x746f                                   |     r2 = 0x746f7571;
    0x00008ac4 cmp r3, r2                                        |     
                                                                 |     if (r3 == r2) {
    0x00008ac6 beq.w 0x8c32                                      |         goto label_46;
                                                                 |     }
                                                                 | label_17:
    0x00008aca movw r2, 0x7061                                   |     
    0x00008ace movt r2, 0x736f                                   |     r2 = 0x736f7061;
    0x00008ad2 cmp r3, r2                                        |     
                                                                 |     if (r3 == r2) {
    0x00008ad4 beq.w 0x8d32                                      |         goto label_47;
                                                                 |     }
                                                                 | label_23:
    0x00008ad8 ldr r0, [pc, 0x30c]                               |     
    0x00008ada movs r2, 0x7f                                     |     r2 = 0x7f;
    0x00008adc mov r1, sb                                        |     r1 = sb;
    0x00008ade add r0, pc                                        |     r0 = 0x118ca;
    0x00008ae0 adds r0, 0x70                                     |     r0 += 0x70;
    0x00008ae2 blx 0x5bdc                                        |     r0 = fcn_00005bdc ();
    0x00008ae6 orr r6, r0, 0x80000000                            |     r6 = r0 | 0x80000000;
    0x00008aea b 0x897a                                          |     goto label_3;
                                                                 | label_39:
    0x00008aec cmp r3, 0x21                                      |     
    0x00008aee it ne                                             |     
                                                                 |     if (r3 != 0x21) {
    0x00008af0 cmpne r3, 0x3f                                    |         __asm ("cmpne r3, 0x3f");
                                                                 |     }
    0x00008af2 mov r6, r3                                        |     r6 = r3;
                                                                 |     if (r3 == 0x21) {
    0x00008af4 beq 0x8b9c                                        |         goto label_48;
                                                                 |     }
    0x00008af6 cmp r3, 0x25                                      |     
                                                                 |     if (r3 != 0x25) {
    0x00008af8 bne.w 0x8da2                                      |         goto label_49;
                                                                 |     }
    0x00008afc ldr.w r0, [r4, 0xb4]                              |     r0 = *((r4 + 0xb4));
    0x00008b00 mov r3, r2                                        |     r3 = r2;
                                                                 | label_15:
    0x00008b02 mov.w sb, 1                                       |     sb = 1;
    0x00008b06 b 0x8b16                                          |     
                                                                 |     while (r3 <= r0) {
                                                                 | label_8:
    0x00008b08 adds r2, r3, 1                                    |         r2 = r3 + 1;
    0x00008b0a adds r1, r5, r3                                   |         r1 = r5 + r3;
    0x00008b0c str.w r2, [r4, 0xb0]                              |         __asm ("str.w r2, [r4, 0xb0]");
    0x00008b10 mov r3, r2                                        |         r3 = r2;
    0x00008b12 ldrb.w r6, [r1, r8]                               |         r6 = *((r1 + r8));
    0x00008b16 cmp r6, 0x3c                                      |         
    0x00008b18 it eq                                             |         
                                                                 |         if (r6 != 0x3c) {
    0x00008b1a addeq sb, sb, 1                                   |             sb++;
                                                                 |         }
                                                                 |         if (r6 != 0x3c) {
    0x00008b1e beq 0x8b24                                        |             
    0x00008b20 cmp r6, 0x3e                                      |             
                                                                 |             if (r6 == 0x3e) {
    0x00008b22 beq 0x8b3a                                        |                 goto label_50;
                                                                 |             }
                                                                 |         }
                                                                 | label_9:
    0x00008b24 cmp r3, r0                                        |         
    0x00008b26 blo 0x8b08                                        |         
                                                                 |     }
    0x00008b28 mov r0, r5                                        |     r0 = r5;
    0x00008b2a blx 0x5ebc                                        |     r0 = fcn_00005ebc ();
    0x00008b2e cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00008b30 bne.w 0x8976                                      |         goto label_7;
                                                                 |     }
    0x00008b34 ldrd r3, r0, [r4, 0xb0]                           |     __asm ("ldrd r3, r0, [r4, 0xb0]");
    0x00008b38 b 0x8b08                                          |     goto label_8;
                                                                 | label_50:
    0x00008b3a subs.w sb, sb, 1                                  |     sb--;
                                                                 |     if (sb != sb) {
    0x00008b3e bne 0x8b24                                        |         goto label_9;
                                                                 |     }
    0x00008b40 cmp r3, r0                                        |     
                                                                 |     if (r3 <= r0) {
    0x00008b42 blo 0x8b54                                        |         goto label_51;
                                                                 |     }
    0x00008b44 mov r0, r5                                        |     r0 = r5;
    0x00008b46 blx 0x5ebc                                        |     r0 = fcn_00005ebc ();
    0x00008b4a cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00008b4c bne.w 0x8976                                      |         goto label_7;
                                                                 |     }
    0x00008b50 ldr.w r3, [r4, 0xb0]                              |     r3 = *((r4 + 0xb0));
                                                                 | label_51:
    0x00008b54 adds r2, r3, 1                                    |     r2 = r3 + 1;
    0x00008b56 add r3, r5                                        |     r3 += r5;
    0x00008b58 str.w r2, [r4, 0xb0]                              |     __asm ("str.w r2, [r4, 0xb0]");
    0x00008b5c ldrb.w r6, [r3, r8]                               |     r6 = *((r3 + r8));
    0x00008b60 ldrsh.w r3, [r4, 0xbc]                            |     r3 = *((r4 + 0xbc));
    0x00008b64 b 0x88a8                                          |     goto label_1;
                                                                 | label_33:
    0x00008b66 mov r0, r5                                        |     r0 = r5;
    0x00008b68 blx 0x5ebc                                        |     r0 = fcn_00005ebc ();
    0x00008b6c cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00008b6e bne.w 0x8d44                                      |         goto label_34;
                                                                 |     }
    0x00008b72 ldr.w r3, [r4, 0xb0]                              |     r3 = *((r4 + 0xb0));
    0x00008b76 b 0x88d4                                          |     goto label_10;
                                                                 | label_35:
    0x00008b78 mov r0, r5                                        |     r0 = r5;
    0x00008b7a blx 0x5ebc                                        |     fcn_00005ebc ();
    0x00008b7e ldrd r3, r2, [r4, 0xb0]                           |     __asm ("ldrd r3, r2, [r4, 0xb0]");
    0x00008b82 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00008b84 beq.w 0x88f0                                      |         goto label_11;
                                                                 |     }
    0x00008b88 b 0x88f6                                          |     goto label_12;
                                                                 | label_36:
    0x00008b8a mov r0, r5                                        |     r0 = r5;
    0x00008b8c blx 0x5ebc                                        |     r0 = fcn_00005ebc ();
    0x00008b90 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00008b92 bne.w 0x8976                                      |         goto label_7;
                                                                 |     }
    0x00008b96 ldr.w r3, [r4, 0xb0]                              |     r3 = *((r4 + 0xb0));
    0x00008b9a b 0x88fc                                          |     goto label_13;
                                                                 | label_48:
    0x00008b9c cmp r3, 0x21                                      |     
                                                                 |     if (r3 != 0x21) {
    0x00008b9e bne.w 0x8cc8                                      |         goto label_52;
                                                                 |     }
    0x00008ba2 ldr.w r0, [r4, 0xb4]                              |     r0 = *((r4 + 0xb4));
    0x00008ba6 cmp r2, r0                                        |     
                                                                 |     if (r2 >= r0) {
    0x00008ba8 bhs 0x8c56                                        |         goto label_53;
                                                                 |     }
                                                                 | label_19:
    0x00008baa adds r3, r2, 1                                    |     r3 = r2 + 1;
    0x00008bac add r2, r5                                        |     r2 += r5;
    0x00008bae str.w r3, [r4, 0xb0]                              |     __asm ("str.w r3, [r4, 0xb0]");
    0x00008bb2 ldrb.w r6, [r2, r8]                               |     r6 = *((r2 + r8));
    0x00008bb6 cmp r6, 0x5b                                      |     
                                                                 |     if (r6 == 0x5b) {
    0x00008bb8 beq.w 0x8964                                      |         goto label_14;
                                                                 |     }
    0x00008bbc cmp r6, 0x2d                                      |     
                                                                 |     if (r6 != 0x2d) {
    0x00008bbe bne 0x8b02                                        |         goto label_15;
                                                                 |     }
    0x00008bc0 cmp r3, r0                                        |     
    0x00008bc2 it lo                                             |     
                                                                 |     if (r3 >= r0) {
    0x00008bc4 movlo r2, r3                                      |         r2 = r3;
                                                                 |     }
                                                                 |     if (r3 >= r0) {
    0x00008bc6 bhs.w 0x8d4c                                      |         goto label_54;
                                                                 |     }
                                                                 | label_24:
    0x00008bca adds r3, r2, 1                                    |     r3 = r2 + 1;
    0x00008bcc add r2, r5                                        |     r2 += r5;
    0x00008bce str.w r3, [r4, 0xb0]                              |     __asm ("str.w r3, [r4, 0xb0]");
    0x00008bd2 ldrb.w r6, [r2, r8]                               |     r6 = *((r2 + r8));
    0x00008bd6 cmp r6, 0x2d                                      |     
                                                                 |     if (r6 != 0x2d) {
    0x00008bd8 bne 0x8b02                                        |         goto label_15;
                                                                 |     }
                                                                 |     do {
                                                                 | label_16:
    0x00008bda cmp r3, r0                                        |         
                                                                 |         if (r3 >= r0) {
    0x00008bdc bhs 0x8c94                                        |             goto label_55;
                                                                 |         }
                                                                 | label_22:
    0x00008bde adds r2, r3, 1                                    |         r2 = r3 + 1;
    0x00008be0 add r3, r5                                        |         r3 += r5;
    0x00008be2 str.w r2, [r4, 0xb0]                              |         __asm ("str.w r2, [r4, 0xb0]");
    0x00008be6 ldrb.w r3, [r3, r8]                               |         r3 = *((r3 + r8));
    0x00008bea cmp r3, 0x2d                                      |         
    0x00008bec it ne                                             |         
                                                                 |         if (r3 == 0x2d) {
    0x00008bee movne r3, r2                                      |             r3 = r2;
                                                                 |         }
    0x00008bf0 bne 0x8bda                                        |         
                                                                 |     } while (r3 != 0x2d);
    0x00008bf2 cmp r2, r0                                        |     
                                                                 |     if (r2 >= r0) {
    0x00008bf4 bhs.w 0x8d8c                                      |         goto label_56;
                                                                 |     }
                                                                 | label_26:
    0x00008bf8 adds r3, r2, 1                                    |     r3 = r2 + 1;
    0x00008bfa add r2, r5                                        |     r2 += r5;
    0x00008bfc str.w r3, [r4, 0xb0]                              |     __asm ("str.w r3, [r4, 0xb0]");
    0x00008c00 ldrb.w r2, [r2, r8]                               |     r2 = *((r2 + r8));
    0x00008c04 cmp r2, 0x2d                                      |     
                                                                 |     if (r2 != 0x2d) {
    0x00008c06 bne 0x8bda                                        |         goto label_16;
                                                                 |     }
    0x00008c08 b 0x8b02                                          |     goto label_15;
                                                                 | label_42:
    0x00008c0a ldrb.w r3, [sp, 5]                                |     r3 = var_5h;
    0x00008c0e and r3, r3, 0xdf                                  |     r3 &= 0xdf;
    0x00008c12 cmp r3, 0x58                                      |     
    0x00008c14 ittee eq                                          |     
                                                                 |     if (r3 != 0x58) {
    0x00008c16 moveq r2, 0x10                                    |         r2 = 0x10;
                                                                 |     }
                                                                 |     if (r3 != 0x58) {
    0x00008c18 addeq r0, sp, 6                                   |         r0 += var_6h;
                                                                 |     }
                                                                 |     if (r3 == 0x58) {
    0x00008c1c movne r2, 0xa                                     |         r2 = 0xa;
                                                                 |     }
                                                                 |     if (r3 != 0x58) {
    0x00008c1e add.w r0, sp, 5                                   |         r0 += var_5h;
                                                                 |     }
    0x00008c22 blx 0x6138                                        |     r0 = fcn_00006138 ();
    0x00008c26 orr r6, r0, 0x80000000                            |     r6 = r0 | 0x80000000;
    0x00008c2a b 0x897a                                          |     goto label_3;
    0x00008c2c mvn r6, 3                                         |     r6 = ~3;
    0x00008c30 b 0x897a                                          |     goto label_3;
                                                                 | label_46:
    0x00008c32 ldrb.w r2, [sb, 4]                                |     r2 = *((sb + 4));
    0x00008c36 movs r6, 0x22                                     |     
    0x00008c38 movt r6, 0x8000                                   |     r6 = 0x-7fffffde;
    0x00008c3c cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x00008c3e beq.w 0x897a                                      |         goto label_3;
                                                                 |     }
    0x00008c42 b 0x8aca                                          |     goto label_17;
                                                                 | label_43:
    0x00008c44 ldrb.w r2, [sb, 2]                                |     r2 = *((sb + 2));
    0x00008c48 movs r6, 0x3c                                     |     
    0x00008c4a movt r6, 0x8000                                   |     r6 = 0x-7fffffc4;
    0x00008c4e cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x00008c50 beq.w 0x897a                                      |         goto label_3;
                                                                 |     }
    0x00008c54 b 0x8a9a                                          |     goto label_18;
                                                                 | label_53:
    0x00008c56 mov r0, r5                                        |     r0 = r5;
    0x00008c58 blx 0x5ebc                                        |     r0 = fcn_00005ebc ();
    0x00008c5c cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00008c5e bne.w 0x8976                                      |         goto label_7;
                                                                 |     }
    0x00008c62 ldrd r2, r0, [r4, 0xb0]                           |     __asm ("ldrd r2, r0, [r4, 0xb0]");
    0x00008c66 b 0x8baa                                          |     goto label_19;
                                                                 | label_44:
    0x00008c68 ldrb.w r3, [sb, 2]                                |     r3 = *((sb + 2));
    0x00008c6c movs r6, 0x3e                                     |     
    0x00008c6e movt r6, 0x8000                                   |     r6 = 0x-7fffffc2;
    0x00008c72 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00008c74 beq.w 0x897a                                      |         goto label_3;
                                                                 |     }
    0x00008c78 b 0x8aa4                                          |     goto label_20;
                                                                 | label_37:
    0x00008c7a cmp r3, r0                                        |     
    0x00008c7c mov.w r1, 1                                       |     r1 = 1;
    0x00008c80 strh.w r1, [r4, 0xbc]                             |     *((r4 + 0xbc)) = r1;
                                                                 |     if (r3 >= r0) {
    0x00008c84 bhs 0x8ca6                                        |         goto label_57;
                                                                 |     }
    0x00008c86 adds r2, 2                                        |     r2 += 2;
    0x00008c88 add r3, r5                                        |     r3 += r5;
    0x00008c8a str.w r2, [r4, 0xb0]                              |     __asm ("str.w r2, [r4, 0xb0]");
    0x00008c8e ldrb.w r6, [r3, r8]                               |     r6 = *((r3 + r8));
    0x00008c92 b 0x88aa                                          |     goto label_21;
                                                                 | label_55:
    0x00008c94 mov r0, r5                                        |     r0 = r5;
    0x00008c96 blx 0x5ebc                                        |     r0 = fcn_00005ebc ();
    0x00008c9a cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00008c9c bne.w 0x8976                                      |         goto label_7;
                                                                 |     }
    0x00008ca0 ldrd r3, r0, [r4, 0xb0]                           |     __asm ("ldrd r3, r0, [r4, 0xb0]");
    0x00008ca4 b 0x8bde                                          |     goto label_22;
                                                                 | label_57:
    0x00008ca6 mov r0, r5                                        |     r0 = r5;
    0x00008ca8 blx 0x5ebc                                        |     r0 = fcn_00005ebc ();
    0x00008cac cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00008cae bne.w 0x8976                                      |         goto label_7;
                                                                 |     }
    0x00008cb2 ldr.w r2, [r4, 0xb0]                              |     r2 = *((r4 + 0xb0));
    0x00008cb6 ldrsh.w r3, [r4, 0xbc]                            |     r3 = *((r4 + 0xbc));
    0x00008cba adds r1, r2, 1                                    |     r1 = r2 + 1;
    0x00008cbc add r2, r5                                        |     r2 += r5;
    0x00008cbe str.w r1, [r4, 0xb0]                              |     __asm ("str.w r1, [r4, 0xb0]");
    0x00008cc2 ldrb.w r6, [r2, r8]                               |     r6 = *((r2 + r8));
    0x00008cc6 b 0x88a8                                          |     goto label_1;
                                                                 | label_52:
    0x00008cc8 mov r0, r5                                        |     r0 = r5;
    0x00008cca add.w sb, sp, 4                                   |     sb += var_4h;
    0x00008cce blx 0x61b8                                        |     r0 = snprintf_chk ()
    0x00008cd2 adds r3, r0, 1                                    |     r3 = r0 + 1;
    0x00008cd4 mov r6, r0                                        |     r6 = r0;
    0x00008cd6 bics r3, r3, 0x40                                 |     __asm ("bics r3, r3, 0x40");
                                                                 |     if (r3 == r0) {
    0x00008cda beq 0x8d9e                                        |         goto label_58;
                                                                 |     }
    0x00008cdc mov.w fp, 0x3f                                    |     
    0x00008ce0 mov sl, sb                                        |     sl = sb;
                                                                 |     do {
    0x00008ce2 cmp.w fp, 0                                       |         
                                                                 |         if (fp > 0) {
    0x00008ce6 ble 0x8cfa                                        |             
    0x00008ce8 cmp r6, 0x20                                      |             
    0x00008cea mov r3, sl                                        |             r3 = sl;
    0x00008cec it lo                                             |             
                                                                 |             if (r6 >= 0x20) {
    0x00008cee movlo r6, 0x20                                    |                 r6 = 0x20;
                                                                 |             }
    0x00008cf0 add.w fp, fp, -1                                  |             
    0x00008cf4 strb r6, [r3], 1                                  |             *(r3) = r6;
                                                                 |             r3++;
    0x00008cf8 mov sl, r3                                        |             sl = r3;
                                                                 |         }
    0x00008cfa mov r0, r5                                        |         r0 = r5;
    0x00008cfc blx 0x61b8                                        |         r0 = snprintf_chk ()
    0x00008d00 adds r3, r0, 1                                    |         r3 = r0 + 1;
    0x00008d02 mov r6, r0                                        |         r6 = r0;
    0x00008d04 bics r3, r3, 0x40                                 |         __asm ("bics r3, r3, 0x40");
    0x00008d08 bne 0x8ce2                                        |         
                                                                 |     } while (r3 != r0);
                                                                 | label_27:
    0x00008d0a movs r3, 0                                        |     r3 = 0;
    0x00008d0c strb.w r3, [sl]                                   |     *(sl) = r3;
    0x00008d10 ldr.w r3, [sb]                                    |     r3 = *(sb);
    0x00008d14 cmp r3, r7                                        |     
                                                                 |     if (r3 == r7) {
    0x00008d16 beq 0x8d5e                                        |         goto label_59;
                                                                 |     }
                                                                 | label_25:
    0x00008d18 adds r2, r6, 1                                    |     r2 = r6 + 1;
                                                                 |     if (r2 == r6) {
    0x00008d1a beq.w 0x897a                                      |         goto label_3;
                                                                 |     }
    0x00008d1e mov r0, r5                                        |     r0 = r5;
    0x00008d20 blx 0x61b8                                        |     r0 = snprintf_chk ()
    0x00008d24 adds r3, r0, 1                                    |     r3 = r0 + 1;
    0x00008d26 mov r6, r0                                        |     r6 = r0;
                                                                 |     if (r3 == r0) {
    0x00008d28 beq.w 0x8976                                      |         goto label_7;
                                                                 |     }
    0x00008d2c ldrd r3, r0, [r4, 0xb0]                           |     __asm ("ldrd r3, r0, [r4, 0xb0]");
    0x00008d30 b 0x8b02                                          |     goto label_15;
                                                                 | label_47:
    0x00008d32 ldrb.w r3, [sb, 4]                                |     r3 = *((sb + 4));
    0x00008d36 movs r6, 0x27                                     |     
    0x00008d38 movt r6, 0x8000                                   |     r6 = 0x-7fffffd9;
    0x00008d3c cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00008d3e beq.w 0x897a                                      |         goto label_3;
                                                                 |     }
    0x00008d42 b 0x8ad8                                          |     goto label_23;
                                                                 | label_34:
    0x00008d44 movs r3, 0x5d                                     |     r3 = 0x5d;
    0x00008d46 str.w r3, [r4, 0xb8]                              |     __asm ("str.w r3, [r4, 0xb8]");
    0x00008d4a b 0x897a                                          |     goto label_3;
                                                                 | label_54:
    0x00008d4c mov r0, r5                                        |     r0 = r5;
    0x00008d4e blx 0x5ebc                                        |     r0 = fcn_00005ebc ();
    0x00008d52 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00008d54 bne.w 0x8976                                      |         goto label_7;
                                                                 |     }
    0x00008d58 ldrd r2, r0, [r4, 0xb0]                           |     __asm ("ldrd r2, r0, [r4, 0xb0]");
    0x00008d5c b 0x8bca                                          |     goto label_24;
                                                                 | label_59:
    0x00008d5e ldr r1, [pc, 0x8c]                                |     
    0x00008d60 mov r0, sb                                        |     r0 = sb;
    0x00008d62 add r1, pc                                        |     r1 = 0x11b54;
    0x00008d64 blx 0x6264                                        |     r0 = fcn_00006264 ();
    0x00008d68 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00008d6a beq 0x8d18                                        |         goto label_25;
                                                                 |     }
    0x00008d6c ldrb r3, [r0, 0xa]                                |     r3 = *((r0 + 0xa));
    0x00008d6e cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00008d70 beq 0x8d18                                        |         goto label_25;
                                                                 |     }
    0x00008d72 ldr r1, [pc, 0x7c]                                |     
    0x00008d74 add.w sb, r0, 0xb                                 |     sb = r0 + 0xb;
    0x00008d78 mov r0, sb                                        |     r0 = sb;
    0x00008d7a add r1, pc                                        |     r1 = 0x11b70;
    0x00008d7c blx 0x65c0                                        |     r0 = X509_get_ext_d2i ();
                                                                 |     if (r0 != 0) {
    0x00008d80 cbnz r0, 0x8db0                                   |         goto label_60;
                                                                 |     }
                                                                 | label_29:
    0x00008d82 ldr r3, [r5, 4]                                   |     r3 = *((r5 + 4));
    0x00008d84 orr r3, r3, 0x20                                  |     r3 |= 0x20;
    0x00008d88 str r3, [r5, 4]                                   |     *((r5 + 4)) = r3;
    0x00008d8a b 0x8d18                                          |     goto label_25;
                                                                 | label_56:
    0x00008d8c mov r0, r5                                        |     r0 = r5;
    0x00008d8e blx 0x5ebc                                        |     r0 = fcn_00005ebc ();
    0x00008d92 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00008d94 bne.w 0x8976                                      |         goto label_7;
                                                                 |     }
    0x00008d98 ldrd r2, r0, [r4, 0xb0]                           |     __asm ("ldrd r2, r0, [r4, 0xb0]");
    0x00008d9c b 0x8bf8                                          |     goto label_26;
                                                                 | label_58:
    0x00008d9e mov sl, sb                                        |     sl = sb;
    0x00008da0 b 0x8d0a                                          |     goto label_27;
                                                                 | label_49:
    0x00008da2 cmp r3, 0x2f                                      |     
    0x00008da4 it eq                                             |     
                                                                 |     if (r3 == 0x2f) {
    0x00008da6 mvneq r6, 2                                       |         r6 = ~2;
                                                                 |         goto label_61;
                                                                 |     }
                                                                 |     if (r3 != 0x2f) {
                                                                 | label_61:
    0x00008daa bne.w 0x89fe                                      |         goto label_28;
                                                                 |     }
    0x00008dae b 0x897a                                          |     goto label_3;
                                                                 | label_60:
    0x00008db0 ldr r1, [pc, 0x40]                                |     
    0x00008db2 mov r0, sb                                        |     r0 = sb;
    0x00008db4 add r1, pc                                        |     r1 = 0x11bac;
    0x00008db6 blx 0x65c0                                        |     r0 = X509_get_ext_d2i ();
    0x00008dba cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00008dbc beq 0x8d82                                        |         goto label_29;
                                                                 |     }
    0x00008dbe ldr r1, [pc, 0x38]                                |     
    0x00008dc0 mov r0, sb                                        |     r0 = sb;
    0x00008dc2 add r1, pc                                        |     r1 = 0x11bc0;
    0x00008dc4 blx 0x65c0                                        |     r0 = X509_get_ext_d2i ();
    0x00008dc8 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00008dca bne 0x8d18                                        |         goto label_25;
                                                                 |     }
    0x00008dcc ldr r3, [r5, 4]                                   |     r3 = *((r5 + 4));
    0x00008dce bic r3, r3, 0x20                                  |     r3 = BIT_MASK (r3, 0x20);
    0x00008dd2 str r3, [r5, 4]                                   |     *((r5 + 4)) = r3;
    0x00008dd4 b 0x8d18                                          |     goto label_25;
                                                                 | label_38:
    0x00008dd6 blx 0x63ec                                        |     SSL_get_verify_result ();
    0x00008dda nop                                               |     
    0x00008ddc rsbs r0, r7, 0                                    |     r0 = r7 - ;
    0x00008dde movs r2, r0                                       |     r2 = r0;
    0x00008de0 lsls r0, r0, 0x14                                 |     r0 <<= 0x14;
    0x00008de2 movs r0, r0                                       |     
    0x00008de4 adcs r2, r5                                       |     __asm ("adcs r2, r5");
    0x00008de6 movs r2, r0                                       |     r2 = r0;
    0x00008de8 subs r2, 0xe                                      |     r2 -= 0xe;
    0x00008dea movs r2, r0                                       |     r2 = r0;
    0x00008dec lsrs r6, r3, 0xe                                  |     r6 = r3 >> 0xe;
    0x00008dee movs r1, r0                                       |     r1 = r0;
    0x00008df0 lsrs r2, r2, 0xe                                  |     r2 >>= 0xe;
    0x00008df2 movs r1, r0                                       |     r1 = r0;
    0x00008df4 lsrs r4, r4, 0xd                                  |     r4 >>= 0xd;
    0x00008df6 movs r1, r0                                       |     r1 = r0;
    0x00008df8 lsrs r6, r3, 0xd                                  |     r6 = r3 >> 0xd;
    0x00008dfa 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/libsoap.so @ 0x8dfc */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) sym.soap_getutf8 ()                          | void soap_getutf8 (int16_t arg1) {
                                                         |     r0 = arg1;
    0x00008dfc invalid                                   |     
    0x00008e00 add.w r6, r0, 0x3000                      |     r6 = r0 + 0x3000;
    0x00008e04 ldr.w r4, [r6, 0xb8]                      |     r4 = *((r6 + 0xb8));
    0x00008e08 cmp r4, 0x7f                              |     
    0x00008e0a itt gt                                    |     
                                                         |     if (r4 <= 0x7f) {
    0x00008e0c movgt r3, 0                               |         r3 = 0;
                                                         |     }
                                                         |     if (r4 <= 0x7f) {
    0x00008e0e strgt r3, [r6, 0xb8]                      |         *((r6 + 0xb8)) = r3;
                                                         |     }
    0x00008e12 ble 0x8e1a                                |     
                                                         |     while (r0 <= 0x7f) {
                                                         | label_0:
    0x00008e14 mov r0, r4                                |         r0 = r4;
    0x00008e16 pop.w {r3, r4, r5, r6, r7, r8, sb, pc}    |         
    0x00008e1a mov r5, r0                                |         r5 = r0;
    0x00008e1c blx 0x62d0                                |         r0 = fcn_000062d0 ();
    0x00008e20 cmp r0, 0x7f                              |         
    0x00008e22 mov r4, r0                                |         r4 = r0;
    0x00008e24 ble 0x8e14                                |         
                                                         |     }
    0x00008e26 ldr r3, [r5, 4]                           |     r3 = *((r5 + 4));
    0x00008e28 lsls r7, r3, 0x1a                         |     r7 = r3 << 0x1a;
                                                         |     if (r7 < r3) {
    0x00008e2a bmi 0x8e14                                |         goto label_0;
                                                         |     }
    0x00008e2c ldrd r3, r2, [r6, 0xb0]                   |     __asm ("ldrd r3, r2, [r6, 0xb0]");
    0x00008e30 cmp r3, r2                                |     
                                                         |     if (r3 >= r2) {
    0x00008e32 bhs 0x8eee                                |         goto label_10;
                                                         |     }
                                                         | label_1:
    0x00008e34 adds r0, r5, r3                           |     r0 = r5 + r3;
    0x00008e36 adds r2, r3, 1                            |     r2 = r3 + 1;
    0x00008e38 movw r1, 0x30d8                           |     r1 = 0x30d8;
    0x00008e3c str.w r2, [r6, 0xb0]                      |     __asm ("str.w r2, [r6, 0xb0]");
    0x00008e40 ldrb r1, [r0, r1]                         |     r1 = *((r0 + r1));
    0x00008e42 lsls r0, r1, 0x18                         |     r0 = r1 << 0x18;
                                                         |     if (r0 >= r1) {
    0x00008e44 bpl 0x8efe                                |         goto label_11;
                                                         |     }
    0x00008e46 cmp r4, 0xdf                              |     
    0x00008e48 and r7, r1, 0x3f                          |     r7 = r1 & 0x3f;
    0x00008e4c ittt le                                   |     
                                                         |     if (r4 > 0xdf) {
    0x00008e4e lslle r4, r4, 6                           |         r4 <<= 6;
                                                         |     }
                                                         |     if (r4 > 0xdf) {
    0x00008e50 andle r4, r4, 0x7c0                       |         r4 &= 0x7c0;
                                                         |     }
                                                         |     if (r4 > 0xdf) {
    0x00008e54 orrs r4, r7                               |         r4 |= r7;
                                                         |         goto label_12;
                                                         |     }
                                                         |     if (r4 <= r7) {
                                                         | label_12:
    0x00008e56 ble 0x8e14                                |         goto label_0;
                                                         |     }
    0x00008e58 ldr.w r3, [r6, 0xb4]                      |     r3 = *((r6 + 0xb4));
    0x00008e5c cmp r2, r3                                |     
                                                         |     if (r2 >= r3) {
    0x00008e5e bhs 0x8f26                                |         goto label_13;
                                                         |     }
                                                         | label_5:
    0x00008e60 adds r3, r2, 1                            |     r3 = r2 + 1;
    0x00008e62 add r2, r5                                |     r2 += r5;
    0x00008e64 str.w r3, [r6, 0xb0]                      |     __asm ("str.w r3, [r6, 0xb0]");
    0x00008e68 movw r3, 0x30d8                           |     r3 = 0x30d8;
    0x00008e6c ldrb.w r8, [r2, r3]                       |     r8 = *((r2 + r3));
    0x00008e70 and r8, r8, 0x3f                          |     r8 &= 0x3f;
                                                         | label_4:
    0x00008e74 cmp r4, 0xef                              |     
                                                         |     if (r4 <= 0xef) {
    0x00008e76 ble 0x8f18                                |         goto label_14;
                                                         |     }
    0x00008e78 ldrd r3, r2, [r6, 0xb0]                   |     __asm ("ldrd r3, r2, [r6, 0xb0]");
    0x00008e7c cmp r3, r2                                |     
                                                         |     if (r3 >= r2) {
    0x00008e7e bhs 0x8f04                                |         goto label_15;
                                                         |     }
                                                         | label_3:
    0x00008e80 adds r2, r3, 1                            |     r2 = r3 + 1;
    0x00008e82 add r3, r5                                |     r3 += r5;
    0x00008e84 str.w r2, [r6, 0xb0]                      |     __asm ("str.w r2, [r6, 0xb0]");
    0x00008e88 movw r2, 0x30d8                           |     r2 = 0x30d8;
    0x00008e8c ldrb.w sb, [r3, r2]                       |     sb = *((r3 + r2));
    0x00008e90 and sb, sb, 0x3f                          |     sb &= 0x3f;
                                                         | label_2:
    0x00008e94 cmp r4, 0xf7                              |     
                                                         |     if (r4 <= 0xf7) {
    0x00008e96 ble 0x8f3a                                |         goto label_16;
                                                         |     }
    0x00008e98 ldrd r3, r2, [r6, 0xb0]                   |     __asm ("ldrd r3, r2, [r6, 0xb0]");
    0x00008e9c cmp r3, r2                                |     
                                                         |     if (r3 >= r2) {
    0x00008e9e bhs 0x8f64                                |         goto label_17;
                                                         |     }
                                                         | label_7:
    0x00008ea0 adds r2, r3, 1                            |     r2 = r3 + 1;
    0x00008ea2 add r3, r5                                |     r3 += r5;
    0x00008ea4 str.w r2, [r6, 0xb0]                      |     __asm ("str.w r2, [r6, 0xb0]");
    0x00008ea8 movw r2, 0x30d8                           |     r2 = 0x30d8;
    0x00008eac ldrb r3, [r3, r2]                         |     r3 = *((r3 + r2));
    0x00008eae and r3, r3, 0x3f                          |     r3 &= 0x3f;
                                                         | label_6:
    0x00008eb2 cmp r4, 0xfb                              |     
                                                         |     if (r4 <= 0xfb) {
    0x00008eb4 ble 0x8f4e                                |         goto label_18;
                                                         |     }
    0x00008eb6 lsls r4, r4, 0x1e                         |     r4 <<= 0x1e;
    0x00008eb8 ldr.w r2, [r6, 0xb0]                      |     r2 = *((r6 + 0xb0));
    0x00008ebc and r4, r4, 0x40000000                    |     r4 &= 0x40000000;
    0x00008ec0 orr.w r4, r4, r7, lsl 24                  |     r4 |= (r7 << 24);
    0x00008ec4 orr.w r4, r4, r8, lsl 18                  |     r4 |= (r8 << 18);
    0x00008ec8 orr.w r4, r4, sb, lsl 12                  |     r4 |= (sb << 12);
    0x00008ecc orr.w r4, r4, r3, lsl 6                   |     r4 |= (r3 << 6);
    0x00008ed0 ldr.w r3, [r6, 0xb4]                      |     r3 = *((r6 + 0xb4));
    0x00008ed4 cmp r2, r3                                |     
                                                         |     if (r2 >= r3) {
    0x00008ed6 bhs 0x8f76                                |         goto label_19;
                                                         |     }
                                                         | label_9:
    0x00008ed8 adds r1, r2, 1                            |     r1 = r2 + 1;
    0x00008eda add r5, r2                                |     r5 += r2;
    0x00008edc movw r3, 0x30d8                           |     r3 = 0x30d8;
    0x00008ee0 str.w r1, [r6, 0xb0]                      |     __asm ("str.w r1, [r6, 0xb0]");
    0x00008ee4 ldrb r3, [r5, r3]                         |     r3 = *((r5 + r3));
    0x00008ee6 and r3, r3, 0x3f                          |     r3 &= 0x3f;
                                                         | label_8:
    0x00008eea orrs r4, r3                               |     r4 |= r3;
    0x00008eec b 0x8e14                                  |     goto label_0;
                                                         | label_10:
    0x00008eee mov r0, r5                                |     r0 = r5;
    0x00008ef0 blx 0x5ebc                                |     fcn_00005ebc ();
    0x00008ef4 ldr.w r3, [r6, 0xb0]                      |     r3 = *((r6 + 0xb0));
    0x00008ef8 cmp r0, 0                                 |     
                                                         |     if (r0 == 0) {
    0x00008efa beq 0x8e34                                |         goto label_1;
                                                         |     }
    0x00008efc subs r3, 1                                |     r3--;
                                                         | label_11:
    0x00008efe str.w r3, [r6, 0xb0]                      |     __asm ("str.w r3, [r6, 0xb0]");
    0x00008f02 b 0x8e14                                  |     goto label_0;
                                                         | label_15:
    0x00008f04 mov r0, r5                                |     r0 = r5;
    0x00008f06 mov.w sb, 0x3f                            |     sb = 0x3f;
    0x00008f0a blx 0x5ebc                                |     r0 = fcn_00005ebc ();
    0x00008f0e cmp r0, 0                                 |     
                                                         |     if (r0 != 0) {
    0x00008f10 bne 0x8e94                                |         goto label_2;
                                                         |     }
    0x00008f12 ldr.w r3, [r6, 0xb0]                      |     r3 = *((r6 + 0xb0));
    0x00008f16 b 0x8e80                                  |     goto label_3;
                                                         | label_14:
    0x00008f18 lsls r4, r4, 0xc                          |     r4 <<= 0xc;
    0x00008f1a uxth r4, r4                               |     r4 = (int16_t) r4;
    0x00008f1c orr.w r4, r4, r7, lsl 6                   |     r4 |= (r7 << 6);
    0x00008f20 orr.w r4, r4, r8                          |     r4 |= r8;
    0x00008f24 b 0x8e14                                  |     goto label_0;
                                                         | label_13:
    0x00008f26 mov r0, r5                                |     r0 = r5;
    0x00008f28 mov.w r8, 0x3f                            |     r8 = 0x3f;
    0x00008f2c blx 0x5ebc                                |     r0 = fcn_00005ebc ();
    0x00008f30 cmp r0, 0                                 |     
                                                         |     if (r0 != 0) {
    0x00008f32 bne 0x8e74                                |         goto label_4;
                                                         |     }
    0x00008f34 ldr.w r2, [r6, 0xb0]                      |     r2 = *((r6 + 0xb0));
    0x00008f38 b 0x8e60                                  |     goto label_5;
                                                         | label_16:
    0x00008f3a lsls r4, r4, 0x12                         |     r4 <<= 0x12;
    0x00008f3c and r4, r4, 0x1c0000                      |     r4 &= 0x1c0000;
    0x00008f40 orr.w r4, r4, r7, lsl 12                  |     r4 |= (r7 << 12);
    0x00008f44 orr.w r4, r4, r8, lsl 6                   |     r4 |= (r8 << 6);
    0x00008f48 orr.w r4, r4, sb                          |     r4 |= sb;
    0x00008f4c b 0x8e14                                  |     goto label_0;
                                                         | label_18:
    0x00008f4e lsls r4, r4, 0x18                         |     r4 <<= 0x18;
    0x00008f50 and r4, r4, 0x3000000                     |     r4 &= 0x3000000;
    0x00008f54 orr.w r4, r4, r7, lsl 18                  |     r4 |= (r7 << 18);
    0x00008f58 orr.w r4, r4, r8, lsl 12                  |     r4 |= (r8 << 12);
    0x00008f5c orr.w r4, r4, sb, lsl 6                   |     r4 |= (sb << 6);
    0x00008f60 orrs r4, r3                               |     r4 |= r3;
    0x00008f62 b 0x8e14                                  |     goto label_0;
                                                         | label_17:
    0x00008f64 mov r0, r5                                |     r0 = r5;
    0x00008f66 blx 0x5ebc                                |     fcn_00005ebc ();
    0x00008f6a movs r3, 0x3f                             |     r3 = 0x3f;
    0x00008f6c cmp r0, 0                                 |     
                                                         |     if (r0 != 0) {
    0x00008f6e bne 0x8eb2                                |         goto label_6;
                                                         |     }
    0x00008f70 ldr.w r3, [r6, 0xb0]                      |     r3 = *((r6 + 0xb0));
    0x00008f74 b 0x8ea0                                  |     goto label_7;
                                                         | label_19:
    0x00008f76 mov r0, r5                                |     r0 = r5;
    0x00008f78 blx 0x5ebc                                |     fcn_00005ebc ();
    0x00008f7c movs r3, 0x3f                             |     r3 = 0x3f;
    0x00008f7e cmp r0, 0                                 |     
                                                         |     if (r0 != 0) {
    0x00008f80 bne 0x8eea                                |         goto label_8;
                                                         |     }
    0x00008f82 ldr.w r2, [r6, 0xb0]                      |     r2 = *((r6 + 0xb0));
    0x00008f86 b 0x8ed8                                  |     goto label_9;
                                                         | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0x9864 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.soap_get_header_attribute ()     | void soap_get_header_attribute (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
                                                 |     r2 = arg3;
    0x00009864 push {r3, r4, r5, r6, r7, lr}     |     
                                                 |     if (r1 == 0) {
    0x00009866 cbz r1, 0x98a4                    |         goto label_0;
                                                 |     }
    0x00009868 add.w r5, r0, 0x13400             |     r5 = r0 + 0x13400;
    0x0000986c mov r6, r2                        |     r6 = r2;
    0x0000986e adds r5, 0xd8                     |     r5 += 0xd8;
    0x00009870 mov r2, r1                        |     r2 = r1;
    0x00009872 b 0x9896                          |     
                                                 |     while (r3 != 0) {
    0x00009874 blx 0x676c                        |         fcn_0000676c ();
    0x00009878 mov r1, r6                        |         r1 = r6;
    0x0000987a mov r4, r0                        |         r4 = r0;
    0x0000987c mov r0, r5                        |         r0 = r5;
    0x0000987e blx 0x65c0                        |         X509_get_ext_d2i ();
    0x00009882 mov r2, r4                        |         r2 = r4;
    0x00009884 mov r4, r0                        |         r4 = r0;
    0x00009886 sxth r4, r4                       |         __asm ("sxth r4, r4");
    0x00009888 mov.w r1, 0x400                   |         r1 = 0x400;
    0x0000988c mov r0, r5                        |         r0 = r5;
    0x0000988e blx 0x5af0                        |         r0 = fcn_00005af0 ();
    0x00009892 mov r2, r0                        |         r2 = r0;
                                                 |         if (r4 == 0) {
    0x00009894 cbz r4, 0x98a6                    |             goto label_1;
                                                 |         }
    0x00009896 ldrb r3, [r2]                     |         r3 = *(r2);
    0x00009898 mov.w r1, 0x400                   |         r1 = 0x400;
    0x0000989c mov r0, r5                        |         r0 = r5;
    0x0000989e mov r7, r5                        |         r7 = r5;
    0x000098a0 cmp r3, 0                         |         
    0x000098a2 bne 0x9874                        |         
                                                 |     }
                                                 | label_0:
    0x000098a4 movs r7, 0                        |     r7 = 0;
                                                 | label_1:
    0x000098a6 mov r0, r7                        |     r0 = r7;
    0x000098a8 pop {r3, r4, r5, r6, r7, 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/libsoap.so @ 0x12150 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) sym.soap_getline ()                                      | void soap_getline (int16_t arg_1h, int16_t arg1, int16_t arg2, uint32_t arg3) {
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
                                                                     |     r2 = arg3;
    0x00012150 push.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00012154 mov fp, r2                                            |     
    0x00012156 add.w sb, fp, -1                                      |     sb = fp + -1;
    0x0001215a mov sl, r0                                            |     sl = r0;
    0x0001215c cmp.w sb, 0                                           |     
    0x00012160 mov.w r0, 0                                           |     r0 = 0;
    0x00012164 mov r5, r2                                            |     r5 = r2;
    0x00012166 mov r4, r1                                            |     r4 = r1;
    0x00012168 mov r7, r0                                            |     r7 = r0;
    0x0001216a add.w r6, sl, 0x3000                                  |     r6 = sl + 0x3000;
    0x0001216e movw r8, 0x30d8                                       |     r8 = 0x30d8;
                                                                     |     if (sb <= 0) {
    0x00012172 ble 0x12196                                           |         goto label_3;
                                                                     |     }
                                                                     |     do {
    0x00012174 mov r0, sl                                            |         r0 = sl;
    0x00012176 blx 0x61b8                                            |         r0 = snprintf_chk ()
    0x0001217a cmp r0, 0xa                                           |         
    0x0001217c it ne                                                 |         
                                                                     |         if (r0 != 0xa) {
    0x0001217e cmpne r0, 0xd                                         |             __asm ("cmpne r0, 0xd");
                                                                     |         }
                                                                     |         if (r0 == 0xa) {
    0x00012180 beq 0x12196                                           |             goto label_3;
                                                                     |         }
    0x00012182 adds r2, r0, 1                                        |         r2 = r0 + 1;
                                                                     |         if (r2 == r0) {
    0x00012184 beq 0x121f0                                           |             goto label_4;
                                                                     |         }
    0x00012186 strb r0, [r4], 1                                      |         *(r4) = r0;
                                                                     |         r4++;
                                                                     | label_0:
    0x0001218a mov fp, sb                                            |         
    0x0001218c add.w sb, fp, -1                                      |         sb = fp + -1;
    0x00012190 cmp.w sb, 0                                           |         
    0x00012194 bgt 0x12174                                           |         
                                                                     |     } while (sb > 0);
                                                                     | label_3:
    0x00012196 cmp r0, 0xa                                           |     
                                                                     |     if (r0 == 0xa) {
    0x00012198 beq 0x121be                                           |         goto label_5;
                                                                     |     }
    0x0001219a mov r0, sl                                            |     r0 = sl;
    0x0001219c blx 0x61b8                                            |     r0 = snprintf_chk ()
    0x000121a0 cmp r0, 0xa                                           |     
                                                                     |     if (r0 == 0xa) {
    0x000121a2 beq 0x121be                                           |         goto label_5;
                                                                     |     }
    0x000121a4 adds r3, r0, 1                                        |     r3 = r0 + 1;
                                                                     |     if (r3 == r0) {
    0x000121a6 beq 0x121f0                                           |         goto label_4;
                                                                     |     }
                                                                     | label_1:
    0x000121a8 cmp.w sb, 0                                           |     
                                                                     |     if (sb >= 0) {
    0x000121ac bge 0x1218a                                           |         goto label_0;
                                                                     |     }
    0x000121ae movs r3, 0x16                                         |     r3 = 0x16;
    0x000121b0 add.w sl, sl, 0x16000                                 |     sl += 0x16000;
    0x000121b4 mov r0, r3                                            |     r0 = r3;
    0x000121b6 str.w r3, [sl, 0x184]                                 |     __asm ("str.w r3, aav.0x000000ff");
    0x000121ba pop.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                     | label_5:
    0x000121be cmp fp, r5                                            |     
    0x000121c0 strb r7, [r4]                                         |     *(r4) = r7;
                                                                     |     if (fp == r5) {
    0x000121c2 beq 0x121da                                           |         goto label_6;
                                                                     |     }
    0x000121c4 ldrd r3, r2, [r6, 0xb0]                               |     __asm ("ldrd r3, r2, [r6, 0xb0]");
    0x000121c8 cmp r3, r2                                            |     
                                                                     |     if (r3 >= r2) {
    0x000121ca bhs 0x121e0                                           |         goto label_7;
                                                                     |     }
                                                                     | label_2:
    0x000121cc add r3, sl                                            |     r3 += sl;
    0x000121ce ldrb.w r0, [r3, r8]                                   |     r0 = *((r3 + r8));
    0x000121d2 cmp r0, 0x20                                          |     
    0x000121d4 it ne                                                 |     
                                                                     |     if (r0 == 0x20) {
    0x000121d6 cmpne r0, 9                                           |         __asm ("cmpne r0, 9");
                                                                     |         goto label_8;
                                                                     |     }
                                                                     |     if (r0 == 0x20) {
                                                                     | label_8:
    0x000121d8 beq 0x121a8                                           |         goto label_1;
                                                                     |     }
                                                                     |     do {
                                                                     | label_6:
    0x000121da movs r0, 0                                            |         r0 = 0;
    0x000121dc pop.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                     | label_7:
    0x000121e0 mov r0, sl                                            |         r0 = sl;
    0x000121e2 blx 0x5ebc                                            |         r0 = fcn_00005ebc ();
    0x000121e6 cmp r0, 0                                             |         
    0x000121e8 bne 0x121da                                           |         
                                                                     |     } while (r0 != 0);
    0x000121ea ldr.w r3, [r6, 0xb0]                                  |     r3 = *((r6 + 0xb0));
    0x000121ee b 0x121cc                                             |     goto label_2;
                                                                     | label_4:
    0x000121f0 mov.w r3, -1                                          |     r3 = -1;
    0x000121f4 add.w sl, sl, 0x16000                                 |     sl += 0x16000;
    0x000121f8 mov r0, r3                                            |     r0 = r3;
    0x000121fa str.w r3, [sl, 0x184]                                 |     __asm ("str.w r3, aav.0x000000ff");
    0x000121fe pop.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, 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/libsoap.so @ 0x125ec */
                                                     | #include <stdint.h>
                                                     |  
                                                     | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                     | #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
                                                     |                                ((n & 0x0000ff00) <<  8) | \
                                                     |                                ((n & 0x00ff0000) >>  8) | \
                                                     |                                ((n & 0xff000000) >> 24)))
                                                     |  
    ; (fcn) sym.soap_getdimehdr ()                   | void soap_getdimehdr (int16_t arg1) {
                                                     |     int16_t var_0h;
                                                     |     int16_t var_1h;
                                                     |     int16_t var_2h;
                                                     |     int16_t var_4h;
                                                     |     int16_t var_6h;
                                                     |     int16_t var_8h;
                                                     |     int16_t var_ch;
                                                     |     r0 = arg1;
    0x000125ec ldr r2, [pc, 0x174]                   |     
    0x000125ee ldr r3, [pc, 0x178]                   |     r3 = *(0x1276a);
    0x000125f0 push.w {r4, r5, r6, r7, r8, lr}       |     
    0x000125f4 sub sp, 0x10                          |     
    0x000125f6 add r2, pc                            |     r2 = 0x24d5e;
    0x000125f8 mov r4, r0                            |     r4 = r0;
    0x000125fa ldr r3, [r2, r3]                      |     
    0x000125fc ldr r3, [r3]                          |     r3 = *(0x24d5e);
    0x000125fe str r3, [sp, 0xc]                     |     var_ch = r3;
    0x00012600 mov.w r3, 0                           |     r3 = 0;
    0x00012604 ldr r3, [r0, 4]                       |     r3 = *((r0 + 4));
    0x00012606 lsls r2, r3, 0x18                     |     r2 = r3 << 0x18;
                                                     |     if (r2 >= r3) {
    0x00012608 bpl.w 0x12716                         |         goto label_5;
                                                     |     }
    0x0001260c add.w r7, r0, 0x16000                 |     r7 = r0 + 0x16000;
    0x00012610 ldr.w r3, [r7, 0x1a0]                 |     r3 = *((r7 + 0x1a0));
    0x00012614 cmp r3, 0                             |     
                                                     |     if (r3 != 0) {
    0x00012616 bne 0x126d4                           |         goto label_6;
                                                     |     }
    0x00012618 ldr.w r3, [r7, 0x19c]                 |     r3 = *((r7 + 0x19c));
    0x0001261c cmp r3, 0                             |     
                                                     |     if (r3 != 0) {
    0x0001261e bne 0x126d4                           |         goto label_6;
                                                     |     }
    0x00012620 mov r5, sp                            |     r5 = sp;
    0x00012622 add r6, sp, 0xc                       |     r6 += var_ch;
                                                     |     do {
    0x00012624 mov r0, r4                            |         r0 = r4;
    0x00012626 blx 0x61b8                            |         r0 = snprintf_chk ()
    0x0001262a adds r3, r0, 1                        |         r3 = r0 + 1;
                                                     |         if (r3 == r0) {
    0x0001262c beq 0x12724                           |             goto label_7;
                                                     |         }
    0x0001262e strb r0, [r5], 1                      |         *(r5) = r0;
                                                     |         r5++;
    0x00012632 cmp r5, r6                            |         
    0x00012634 bne 0x12624                           |         
                                                     |     } while (r5 != r6);
    0x00012636 ldrb.w r3, [sp]                       |     r3 = *(sp);
    0x0001263a and r2, r3, 0xf8                      |     r2 = r3 & 0xf8;
    0x0001263e cmp r2, 8                             |     
    0x00012640 ittt ne                               |     
                                                     |     if (r2 == 8) {
    0x00012642 movne r3, 0x22                        |         r3 = 0x22;
                                                     |     }
                                                     |     if (r2 == 8) {
    0x00012644 movne r5, r3                          |         r5 = r3;
                                                     |     }
                                                     |     if (r2 == 8) {
    0x00012646 strne r3, [r7, 0x184]                 |         *((r7 + 0x184)) = r3;
                                                     |     }
                                                     |     if (r2 != 8) {
    0x0001264a bne 0x126fa                           |         goto label_0;
                                                     |     }
    0x0001264c ldrb.w r2, [sp, 1]                    |     r2 = var_1h;
    0x00012650 and r3, r3, 7                         |     r3 &= 7;
    0x00012654 ldrh.w r1, [sp, 2]                    |     r1 = var_2h;
    0x00012658 ldrh.w r6, [sp, 4]                    |     r6 = var_4h;
    0x0001265c bic r2, r2, 0xf                       |     r2 = BIT_MASK (r2, 0xf);
    0x00012660 ldrh.w r8, [sp, 6]                    |     r8 = var_6h;
    0x00012664 orrs r3, r2                           |     r3 |= r2;
    0x00012666 rev16 r1, r1                          |     __asm ("rev16 r1, r1");
    0x00012668 strb.w r3, [r7, 0x1a4]                |     *((r7 + 0x1a4)) = r3;
    0x0001266c uxth r1, r1                           |     r1 = (int16_t) r1;
    0x0001266e ldr r3, [sp, 8]                       |     r3 = var_8h;
    0x00012670 rev16 r6, r6                          |     __asm ("rev16 r6, r6");
    0x00012672 rev16.w r8, r8                        |     __asm ("rev16.w r8, r8");
    0x00012676 uxth r6, r6                           |     r6 = (int16_t) r6;
    0x00012678 uxth.w r8, r8                         |     r8 = (int16_t) r8;
    0x0001267c rev r3, r3                            |     r3 = SWAP32 (r3);
    0x0001267e str.w r3, [r7, 0x198]                 |     __asm ("str.w r3, aav.0x000000ff");
    0x00012682 cmp r1, 0                             |     
                                                     |     if (r1 == 0) {
    0x00012684 beq 0x1273e                           |         goto label_8;
                                                     |     }
    0x00012686 mov r0, r4                            |     r0 = r4;
    0x00012688 bl 0xa594                             |     fcn_0000a594 (r0, r1);
    0x0001268c str.w r0, [r7, 0x1b4]                 |     __asm ("str.w r0, aav.0x000000ff");
    0x00012690 cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x00012692 beq 0x12742                           |         goto label_9;
                                                     |     }
                                                     | label_2:
    0x00012694 cmp r6, 0                             |     
                                                     |     if (r6 == 0) {
    0x00012696 beq 0x1274c                           |         goto label_10;
                                                     |     }
    0x00012698 mov r1, r6                            |     r1 = r6;
    0x0001269a mov r0, r4                            |     r0 = r4;
    0x0001269c bl 0xa594                             |     fcn_0000a594 (r0, r1);
    0x000126a0 str.w r0, [r7, 0x1ac]                 |     __asm ("str.w r0, aav.0x000000ff");
    0x000126a4 cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x000126a6 beq 0x12750                           |         goto label_11;
                                                     |     }
    0x000126a8 cmp.w r8, 0                           |     
                                                     |     if (r8 == 0) {
    0x000126ac beq 0x12730                           |         goto label_4;
                                                     |     }
                                                     | label_3:
    0x000126ae mov r1, r8                            |     r1 = r8;
    0x000126b0 mov r0, r4                            |     r0 = r4;
    0x000126b2 bl 0xa594                             |     fcn_0000a594 (r0, r1);
    0x000126b6 str.w r0, [r7, 0x1b0]                 |     __asm ("str.w r0, aav.0x000000ff");
    0x000126ba cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x000126bc beq 0x12734                           |         goto label_12;
                                                     |     }
                                                     | label_1:
    0x000126be ldrb.w r5, [r7, 0x1a4]                |     r5 = *((r7 + 0x1a4));
    0x000126c2 ands r5, r5, 2                        |     r5 &= 2;
                                                     |     if (r5 == r5) {
    0x000126c6 beq 0x126fa                           |         goto label_0;
                                                     |     }
    0x000126c8 ldr r3, [r4, 4]                       |     r3 = *((r4 + 4));
    0x000126ca movs r5, 0                            |     r5 = 0;
    0x000126cc bic r3, r3, 0x80                      |     r3 = BIT_MASK (r3, 0x80);
    0x000126d0 str r3, [r4, 4]                       |     *((r4 + 4)) = r3;
    0x000126d2 b 0x126fa                             |     goto label_0;
                                                     | label_6:
    0x000126d4 ldr.w r5, [r7, 0x198]                 |     r5 = *((r7 + 0x198));
    0x000126d8 mov r0, r4                            |     r0 = r4;
    0x000126da blx 0x659c                            |     r0 = fcn_0000659c ();
    0x000126de mov r1, r0                            |     r1 = r0;
    0x000126e0 mov r0, r4                            |     r0 = r4;
    0x000126e2 subs r1, r5, r1                       |     r1 = r5 - r1;
    0x000126e4 blx 0x6784                            |     r0 = fcn_00006784 ();
    0x000126e8 mov r5, r0                            |     r5 = r0;
                                                     |     if (r0 != 0) {
    0x000126ea cbnz r0, 0x12724                      |         goto label_7;
                                                     |     }
    0x000126ec mov r0, r4                            |     r0 = r4;
    0x000126ee add.w r4, r4, 0x3000                  |     r4 += 0x3000;
    0x000126f2 blx 0x61b8                            |     snprintf_chk ()
    0x000126f6 str.w r0, [r4, 0xb8]                  |     __asm ("str.w r0, [r4, 0xb8]");
                                                     |     do {
                                                     | label_0:
    0x000126fa ldr r2, [pc, 0x70]                    |         
    0x000126fc ldr r3, [pc, 0x68]                    |         r3 = *(0x12768);
    0x000126fe add r2, pc                            |         r2 = 0x24e70;
    0x00012700 ldr r3, [r2, r3]                      |         r3 = *(0x24e70);
    0x00012702 ldr r2, [r3]                          |         r2 = *(0x24e70);
    0x00012704 ldr r3, [sp, 0xc]                     |         r3 = var_ch;
    0x00012706 eors r2, r3                           |         r2 ^= r3;
    0x00012708 mov.w r3, 0                           |         r3 = 0;
                                                     |         if (r2 != r3) {
    0x0001270c bne 0x12760                           |             goto label_13;
                                                     |         }
    0x0001270e mov r0, r5                            |         r0 = r5;
    0x00012710 add sp, 0x10                          |         
    0x00012712 pop.w {r4, r5, r6, r7, r8, pc}        |         
                                                     | label_5:
    0x00012716 movs r3, 0x23                         |         r3 = 0x23;
    0x00012718 add.w r4, r0, 0x16000                 |         r4 = r0 + 0x16000;
    0x0001271c mov r5, r3                            |         r5 = r3;
    0x0001271e str.w r3, [r4, 0x184]                 |         __asm ("str.w r3, aav.0x000000ff");
    0x00012722 b 0x126fa                             |         
                                                     |     } while (1);
                                                     | label_7:
    0x00012724 mov.w r3, -1                          |     r3 = -1;
    0x00012728 mov r5, r3                            |     r5 = r3;
    0x0001272a str.w r3, [r7, 0x184]                 |     __asm ("str.w r3, aav.0x000000ff");
    0x0001272e b 0x126fa                             |     goto label_0;
                                                     | label_4:
    0x00012730 str.w r8, [r7, 0x1b0]                 |     __asm ("str.w r8, aav.0x000000ff");
                                                     | label_12:
    0x00012734 ldr.w r5, [r7, 0x184]                 |     r5 = *((r7 + 0x184));
    0x00012738 cmp r5, 0                             |     
                                                     |     if (r5 == 0) {
    0x0001273a beq 0x126be                           |         goto label_1;
                                                     |     }
    0x0001273c b 0x126fa                             |     goto label_0;
                                                     | label_8:
    0x0001273e str.w r1, [r7, 0x1b4]                 |     __asm ("str.w r1, aav.0x000000ff");
                                                     | label_9:
    0x00012742 ldr.w r5, [r7, 0x184]                 |     r5 = *((r7 + 0x184));
    0x00012746 cmp r5, 0                             |     
                                                     |     if (r5 == 0) {
    0x00012748 beq 0x12694                           |         goto label_2;
                                                     |     }
    0x0001274a b 0x126fa                             |     goto label_0;
                                                     | label_10:
    0x0001274c str.w r6, [r7, 0x1ac]                 |     __asm ("str.w r6, aav.0x000000ff");
                                                     | label_11:
    0x00012750 ldr.w r5, [r7, 0x184]                 |     r5 = *((r7 + 0x184));
    0x00012754 cmp r5, 0                             |     
                                                     |     if (r5 != 0) {
    0x00012756 bne 0x126fa                           |         goto label_0;
                                                     |     }
    0x00012758 cmp.w r8, 0                           |     
                                                     |     if (r8 != 0) {
    0x0001275c bne 0x126ae                           |         goto label_3;
                                                     |     }
    0x0001275e b 0x12730                             |     goto label_4;
                                                     | label_13:
    0x00012760 blx 0x63ec                            |     SSL_get_verify_result ();
    0x00012764 adr r4, 0x3d8                         |     r4 = 0x3d8;
    0x00012766 movs r1, r0                           |     r1 = r0;
    0x00012768 lsls r0, r0, 0x14                     |     r0 <<= 0x14;
    0x0001276a movs r0, r0                           |     
    0x0001276c adr r3, 0x3b8                         |     r3 = 0x3b8;
    0x0001276e 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/libsoap.so @ 0x12888 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) sym.soap_getdime ()                                  | void soap_getdime (int16_t arg1) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     r0 = arg1;
    0x00012888 svcmi 0xf0e92d                                    |     __asm ("svcmi aav.0x000000ff");
    0x0001288c mov r6, r0                                        |     r6 = r0;
    0x0001288e sub sp, 0x1c                                      |     
    0x00012890 add.w r4, r0, 0x16000                             |     r4 = r0 + 0x16000;
    0x00012894 b 0x128b2                                         |     
                                                                 |     while (r1 < r3) {
    0x00012896 blx 0x6220                                        |         r0 = fcn_00006220 ();
    0x0001289a mov r3, r0                                        |         r3 = r0;
    0x0001289c mov r0, r6                                        |         r0 = r6;
    0x0001289e cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x000128a0 bne.w 0x12a56                                     |             goto label_8;
                                                                 |         }
    0x000128a4 ldr.w r1, [r4, 0x198]                             |         r1 = *((r4 + 0x198));
    0x000128a8 blx 0x6784                                        |         r0 = fcn_00006784 ();
    0x000128ac cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x000128ae bne.w 0x129e8                                     |             goto label_3;
                                                                 |         }
    0x000128b2 ldrb.w r3, [r4, 0x1a4]                            |         r3 = *((r4 + 0x1a4));
    0x000128b6 mov r0, r6                                        |         r0 = r6;
    0x000128b8 lsls r1, r3, 0x1f                                 |         r1 = r3 << 0x1f;
    0x000128ba bmi 0x12896                                       |         
                                                                 |     }
    0x000128bc ldr.w r3, [r4, 0x198]                             |     r3 = *((r4 + 0x198));
    0x000128c0 adds r3, 3                                        |     r3 += 3;
    0x000128c2 bic r5, r3, 3                                     |     r5 = BIT_MASK (r3, 3);
    0x000128c6 blx 0x659c                                        |     r0 = fcn_0000659c ();
    0x000128ca mov r1, r0                                        |     r1 = r0;
    0x000128cc mov r0, r6                                        |     r0 = r6;
    0x000128ce subs r1, r5, r1                                   |     r1 = r5 - r1;
    0x000128d0 blx 0x6784                                        |     r0 = fcn_00006784 ();
    0x000128d4 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000128d6 bne.w 0x129e8                                     |         goto label_3;
                                                                 |     }
    0x000128da movw sb, 0x30d8                                   |     sb = 0x30d8;
    0x000128de b 0x12942                                         |     goto label_9;
                                                                 | label_0:
    0x000128e0 ldr.w r0, [r4, 0x184]                             |     r0 = *((r4 + 0x184));
    0x000128e4 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000128e6 bne.w 0x129f2                                     |         goto label_7;
                                                                 |     }
                                                                 |     do {
    0x000128ea ldrb.w r3, [r4, 0x1a4]                            |         r3 = *((r4 + 0x1a4));
    0x000128ee lsls r3, r3, 0x1f                                 |         r3 <<= 0x1f;
                                                                 |         if (r3 < r3) {
    0x000128f0 bmi.w 0x12a60                                     |             goto label_10;
                                                                 |         }
    0x000128f4 ldr.w r5, [r4, 0x198]                             |         r5 = *((r4 + 0x198));
    0x000128f8 mov r3, r5                                        |         r3 = r5;
                                                                 |         if (r5 != 0) {
    0x000128fa cbz r5, 0x1290a                                   |             
    0x000128fc mov r1, r5                                        |             r1 = r5;
    0x000128fe mov r0, r6                                        |             r0 = r6;
    0x00012900 bl 0xa594                                         |             fcn_0000a594 (r0, r1);
    0x00012904 ldr.w r5, [r4, 0x198]                             |             r5 = *((r4 + 0x198));
    0x00012908 mov r3, r0                                        |             r3 = r0;
                                                                 |         }
    0x0001290a str.w r3, [r4, 0x1a8]                             |         __asm ("str.w r3, aav.0x000000ff");
                                                                 | label_2:
    0x0001290e add.w r1, r4, 0x1bc                               |         r1 = r4 + 0x1bc;
    0x00012912 add.w r2, r4, 0x1c0                               |         r2 = r4 + 0x1c0;
    0x00012916 mov r0, r6                                        |         r0 = r6;
    0x00012918 str r5, [sp]                                      |         *(sp) = r5;
    0x0001291a bl 0xa554                                         |         r0 = fcn_0000a554 (r0, r1, r2, r3);
    0x0001291e mov r1, r0                                        |         r1 = r0;
    0x00012920 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00012922 beq.w 0x12ac0                                     |             goto label_11;
                                                                 |         }
    0x00012926 ldr.w r0, [r4, 0x184]                             |         r0 = *((r4 + 0x184));
    0x0001292a ldrd r5, r2, [r4, 0x1ac]                          |         __asm ("ldrd r5, r2, aav.0x000000ff");
    0x0001292e ldr.w r3, [r4, 0x1b4]                             |         r3 = *((r4 + 0x1b4));
    0x00012932 strd r5, r2, [r1, 0xc]                            |         __asm ("strd r5, r2, [r1, 0xc]");
    0x00012936 str r3, [r1, 0x14]                                |         *((r1 + 0x14)) = r3;
    0x00012938 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x0001293a bne 0x129f2                                       |             goto label_7;
                                                                 |         }
    0x0001293c mov r0, r6                                        |         r0 = r6;
    0x0001293e bl 0x12810                                        |         fcn_00012810 (r0, r1);
                                                                 | label_9:
    0x00012942 mov r0, r6                                        |         r0 = r6;
    0x00012944 blx 0x6220                                        |         r0 = fcn_00006220 ();
    0x00012948 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x0001294a bne.w 0x12ace                                     |             goto label_12;
                                                                 |         }
    0x0001294e add.w r5, r6, 0x3000                              |         r5 = r6 + 0x3000;
    0x00012952 ldr r7, [r5, 0x6c]                                |         r7 = *((r5 + 0x6c));
    0x00012954 cmp r7, 0                                         |         
    0x00012956 beq 0x128ea                                       |         
                                                                 |     } while (r7 == 0);
    0x00012958 ldr.w r1, [r4, 0x1ac]                             |     r1 = *((r4 + 0x1ac));
    0x0001295c mov r0, r6                                        |     r0 = r6;
    0x0001295e ldrd r2, r3, [r4, 0x1b0]                          |     __asm ("ldrd r2, r3, aav.0x000000ff");
    0x00012962 blx r7                                            |     r0 = uint32_t (*r7)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
    0x00012964 mov r1, r0                                        |     r1 = r0;
    0x00012966 str.w r0, [r4, 0x1a8]                             |     __asm ("str.w r0, aav.0x000000ff");
    0x0001296a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001296c beq 0x128e0                                       |         goto label_0;
                                                                 |     }
    0x0001296e ldr.w r3, [r4, 0x1ac]                             |     r3 = *((r4 + 0x1ac));
    0x00012972 add.w r8, r6, sb                                  |     r8 = r6 + sb;
    0x00012976 str r3, [sp, 0x10]                                |     var_10h = r3;
    0x00012978 ldrd fp, r3, [r4, 0x1b0]                          |     __asm ("ldrd fp, r3, aav.0x000000ff");
    0x0001297c str r3, [sp, 0x14]                                |     var_14h = r3;
                                                                 | label_1:
    0x0001297e ldr.w r7, [r4, 0x198]                             |     r7 = *((r4 + 0x198));
    0x00012982 str r7, [sp, 0xc]                                 |     var_ch = r7;
    0x00012984 b 0x1299a                                         |     
                                                                 |     while (r3 == 0) {
    0x00012986 ldr r3, [sp, 0xc]                                 |         r3 = var_ch;
    0x00012988 subs.w r3, r3, sl                                 |         r3 -= sl;
    0x0001298c str r3, [sp, 0xc]                                 |         var_ch = r3;
                                                                 |         if (r3 == r3) {
    0x0001298e beq 0x12a24                                       |             goto label_13;
                                                                 |         }
    0x00012990 blx 0x5ebc                                        |         r0 = fcn_00005ebc ();
                                                                 |         if (r0 != 0) {
    0x00012994 cbnz r0, 0x129f8                                  |             goto label_14;
                                                                 |         }
    0x00012996 ldr.w r1, [r4, 0x1a8]                             |         r1 = *((r4 + 0x1a8));
    0x0001299a ldrd r2, r3, [r5, 0xb0]                           |         __asm ("ldrd r2, r3, [r5, 0xb0]");
    0x0001299e mov r0, r6                                        |         r0 = r6;
    0x000129a0 ldr r7, [r5, 0x7c]                                |         r7 = *((r5 + 0x7c));
    0x000129a2 sub.w sl, r3, r2                                  |         sl = r3 - r2;
    0x000129a6 ldr r3, [sp, 0xc]                                 |         r3 = var_ch;
    0x000129a8 add r2, r8                                        |         r2 += r8;
    0x000129aa cmp sl, r3                                        |         
    0x000129ac it hs                                             |         
                                                                 |         if (sl < r3) {
    0x000129ae movhs sl, r3                                      |             sl = r3;
                                                                 |         }
    0x000129b0 mov r3, sl                                        |         r3 = sl;
    0x000129b2 blx r7                                            |         r0 = uint32_t (*r7)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x000129b4 mov r3, r0                                        |         r3 = r0;
    0x000129b6 mov r0, r6                                        |         r0 = r6;
    0x000129b8 str.w r3, [r4, 0x184]                             |         __asm ("str.w r3, aav.0x000000ff");
    0x000129bc cmp r3, 0                                         |         
    0x000129be beq 0x12986                                       |         
                                                                 |     }
                                                                 |     do {
    0x000129c0 ldr.w r1, [r4, 0x198]                             |         r1 = *((r4 + 0x198));
    0x000129c4 mov r0, r6                                        |         r0 = r6;
    0x000129c6 rsbs r1, r1, 0                                    |         r1 -= ;
    0x000129c8 and r1, r1, 3                                     |         r1 &= 3;
    0x000129cc blx 0x6784                                        |         r0 = fcn_00006784 ();
                                                                 |         if (r0 == 0) {
    0x000129d0 cbnz r0, 0x129f8                                  |             
    0x000129d2 ldrb.w r3, [r4, 0x1a4]                            |             r3 = *((r4 + 0x1a4));
    0x000129d6 lsls r2, r3, 0x1f                                 |             r2 = r3 << 0x1f;
                                                                 |             if (r2 >= r3) {
    0x000129d8 bpl 0x12a00                                       |                 goto label_15;
                                                                 |             }
    0x000129da mov r0, r6                                        |             r0 = r6;
    0x000129dc blx 0x6220                                        |             r0 = fcn_00006220 ();
                                                                 |             if (r0 != 0) {
    0x000129e0 cbnz r0, 0x12a00                                  |                 goto label_15;
                                                                 |             }
    0x000129e2 ldr.w r1, [r4, 0x1a8]                             |             r1 = *((r4 + 0x1a8));
    0x000129e6 b 0x1297e                                         |             goto label_1;
                                                                 | label_3:
    0x000129e8 mov.w r3, -1                                      |             r3 = -1;
    0x000129ec mov r0, r3                                        |             r0 = r3;
    0x000129ee str.w r3, [r4, 0x184]                             |             __asm ("str.w r3, aav.0x000000ff");
                                                                 | label_7:
    0x000129f2 add sp, 0x1c                                      |             
    0x000129f4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |             
                                                                 |         }
                                                                 | label_14:
    0x000129f8 mov.w r3, -1                                      |         r3 = -1;
    0x000129fc str.w r3, [r4, 0x184]                             |         __asm ("str.w r3, aav.0x000000ff");
                                                                 | label_15:
    0x00012a00 ldr r3, [r5, 0x74]                                |         r3 = *((r5 + 0x74));
                                                                 |         if (r3 != 0) {
    0x00012a02 cbz r3, 0x12a0c                                   |             
    0x00012a04 ldr.w r1, [r4, 0x1a8]                             |             r1 = *((r4 + 0x1a8));
    0x00012a08 mov r0, r6                                        |             r0 = r6;
    0x00012a0a blx r3                                            |             uint32_t (*r3)(uint32_t, uint32_t) (r0, r1);
                                                                 |         }
    0x00012a0c ldr r3, [sp, 0x10]                                |         r3 = var_10h;
    0x00012a0e movs r5, 0                                        |         r5 = 0;
    0x00012a10 ldr r2, [sp, 0x14]                                |         r2 = var_14h;
    0x00012a12 str.w r5, [r4, 0x198]                             |         __asm ("str.w r5, aav.0x000000ff");
    0x00012a16 strd r3, fp, [r4, 0x1ac]                          |         __asm ("strd r3, fp, [r4, aav.0x000001ac]");
    0x00012a1a str.w r2, [r4, 0x1b4]                             |         __asm ("str.w r2, aav.0x000000ff");
    0x00012a1e ldr.w r3, [r4, 0x1a8]                             |         r3 = *((r4 + 0x1a8));
    0x00012a22 b 0x1290e                                         |         goto label_2;
                                                                 | label_13:
    0x00012a24 ldr.w r3, [r5, 0xb0]                              |         r3 = *((r5 + 0xb0));
    0x00012a28 add r3, sl                                        |         r3 += sl;
    0x00012a2a str.w r3, [r5, 0xb0]                              |         __asm ("str.w r3, [r5, 0xb0]");
    0x00012a2e b 0x129c0                                         |         
                                                                 |     } while (1);
                                                                 | label_5:
    0x00012a30 ldr.w r1, [r4, 0x198]                             |     r1 = *((r4 + 0x198));
                                                                 | label_4:
    0x00012a34 rsbs r1, r1, 0                                    |     r1 -= ;
    0x00012a36 mov r0, r6                                        |     r0 = r6;
    0x00012a38 and r1, r1, 3                                     |     r1 &= 3;
    0x00012a3c blx 0x6784                                        |     r0 = fcn_00006784 ();
    0x00012a40 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00012a42 bne 0x129e8                                       |         goto label_3;
                                                                 |     }
    0x00012a44 ldrb.w r3, [r4, 0x1a4]                            |     r3 = *((r4 + 0x1a4));
    0x00012a48 ands r3, r3, 1                                    |     r3 &= 1;
                                                                 |     if (r3 == r3) {
    0x00012a4c beq 0x12ae0                                       |         goto label_16;
                                                                 |     }
    0x00012a4e mov r0, r6                                        |     r0 = r6;
    0x00012a50 blx 0x6220                                        |     r0 = fcn_00006220 ();
                                                                 |     if (r0 != 0) {
    0x00012a54 cbz r0, 0x12a76                                   |         
                                                                 | label_8:
    0x00012a56 ldr.w r0, [r4, 0x184]                             |         r0 = *((r4 + 0x184));
    0x00012a5a add sp, 0x1c                                      |         
    0x00012a5c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_10:
    0x00012a60 ldr.w r3, [r4, 0x1b0]                             |         r3 = *((r4 + 0x1b0));
    0x00012a64 mov r0, r6                                        |         r0 = r6;
    0x00012a66 ldr.w sl, [r4, 0x1ac]                             |         sl = *((r4 + 0x1ac));
    0x00012a6a ldr.w r7, [r4, 0x1b4]                             |         r7 = *((r4 + 0x1b4));
    0x00012a6e str r3, [sp, 0xc]                                 |         var_ch = r3;
    0x00012a70 blx 0x6680                                        |         r0 = X509_free ();
                                                                 |         if (r0 == 0) {
    0x00012a74 cbz r0, 0x12aca                                   |             goto label_17;
                                                                 |         }
                                                                 |     }
    0x00012a76 ldr.w r2, [r4, 0x198]                             |     r2 = *((r4 + 0x198));
    0x00012a7a movs r1, 0                                        |     r1 = 0;
    0x00012a7c mov r0, r6                                        |     r0 = r6;
    0x00012a7e blx 0x5a20                                        |     r0 = loc_imp_soap_serializefault ();
    0x00012a82 mov r8, r0                                        |     r8 = r0;
                                                                 |     if (r0 == 0) {
    0x00012a84 cbz r0, 0x12ac0                                   |         goto label_11;
                                                                 |     }
    0x00012a86 ldr.w r1, [r4, 0x198]                             |     r1 = *((r4 + 0x198));
    0x00012a8a cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x00012a8c beq 0x12a34                                       |         goto label_4;
                                                                 |     }
    0x00012a8e add.w fp, r0, r1                                  |     
    0x00012a92 b 0x12aa8                                         |     goto label_18;
                                                                 | label_6:
    0x00012a94 adds r2, r3, 1                                    |     r2 = r3 + 1;
    0x00012a96 add r3, r6                                        |     r3 += r6;
    0x00012a98 str.w r2, [r5, 0xb0]                              |     __asm ("str.w r2, [r5, 0xb0]");
    0x00012a9c ldrb.w r3, [r3, sb]                               |     r3 = *((r3 + sb));
    0x00012aa0 strb r3, [r8], 1                                  |     *(r8) = r3;
                                                                 |     r8++;
    0x00012aa4 cmp r8, fp                                        |     
                                                                 |     if (r8 == fp) {
    0x00012aa6 beq 0x12a30                                       |         goto label_5;
                                                                 |     }
                                                                 | label_18:
    0x00012aa8 ldrd r3, r2, [r5, 0xb0]                           |     __asm ("ldrd r3, r2, [r5, 0xb0]");
    0x00012aac cmp r3, r2                                        |     
                                                                 |     if (r3 <= r2) {
    0x00012aae blo 0x12a94                                       |         goto label_6;
                                                                 |     }
    0x00012ab0 mov r0, r6                                        |     r0 = r6;
    0x00012ab2 blx 0x5ebc                                        |     r0 = fcn_00005ebc ();
    0x00012ab6 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00012ab8 bne 0x129e8                                       |         goto label_3;
                                                                 |     }
    0x00012aba ldr.w r3, [r5, 0xb0]                              |     r3 = *((r5 + 0xb0));
    0x00012abe b 0x12a94                                         |     goto label_6;
                                                                 | label_11:
    0x00012ac0 movs r3, 0x14                                     |     r3 = 0x14;
    0x00012ac2 mov r0, r3                                        |     r0 = r3;
    0x00012ac4 str.w r3, [r4, 0x184]                             |     __asm ("str.w r3, aav.0x000000ff");
    0x00012ac8 b 0x129f2                                         |     goto label_7;
                                                                 | label_17:
    0x00012aca movs r0, 0x14                                     |     r0 = 0x14;
    0x00012acc b 0x129f2                                         |     goto label_7;
                                                                 | label_12:
    0x00012ace ldr.w r0, [r4, 0x184]                             |     r0 = *((r4 + 0x184));
    0x00012ad2 cmp r0, 0x23                                      |     
                                                                 |     if (r0 != 0x23) {
    0x00012ad4 bne 0x129f2                                       |         goto label_7;
                                                                 |     }
    0x00012ad6 movs r3, 0                                        |     r3 = 0;
    0x00012ad8 mov r0, r3                                        |     r0 = r3;
    0x00012ada str.w r3, [r4, 0x184]                             |     __asm ("str.w r3, aav.0x000000ff");
    0x00012ade b 0x129f2                                         |     goto label_7;
                                                                 | label_16:
    0x00012ae0 ldr.w ip, [r6, 0x64]                              |     ip = *((r6 + 0x64));
    0x00012ae4 mov r2, r3                                        |     r2 = r3;
    0x00012ae6 mov r1, r3                                        |     r1 = r3;
    0x00012ae8 mov r0, r6                                        |     r0 = r6;
    0x00012aea mov fp, r3                                        |     
    0x00012aec ldr.w r5, [ip, 8]                                 |     r5 = *((ip + 8));
    0x00012af0 add.w lr, r5, 1                                   |     lr = r5 + 1;
    0x00012af4 str.w lr, [ip, 8]                                 |     __asm ("str.w lr, [ip, 8]");
    0x00012af8 str.w r5, [r4, 0x198]                             |     __asm ("str.w r5, aav.0x000000ff");
    0x00012afc blx 0x63f8                                        |     PEM_read_bio_DHparams ();
    0x00012b00 str.w r0, [r4, 0x1a8]                             |     __asm ("str.w r0, aav.0x000000ff");
    0x00012b04 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00012b06 beq 0x12a56                                       |         goto label_8;
                                                                 |     }
    0x00012b08 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x00012b0a ldr.w r2, [r4, 0x198]                             |     r2 = *((r4 + 0x198));
    0x00012b0e strb.w fp, [r0, r2]                               |     *((r0 + r2)) = fp;
    0x00012b12 str.w r3, [r4, 0x1b0]                             |     __asm ("str.w r3, aav.0x000000ff");
    0x00012b16 ldr.w r5, [r4, 0x198]                             |     r5 = *((r4 + 0x198));
    0x00012b1a ldr.w r3, [r4, 0x1a8]                             |     r3 = *((r4 + 0x1a8));
    0x00012b1e str.w sl, [r4, 0x1ac]                             |     __asm ("str.w sl, aav.0x000000ff");
    0x00012b22 str.w r7, [r4, 0x1b4]                             |     __asm ("str.w r7, aav.0x000000ff");
    0x00012b26 b 0x1290e                                         |     goto label_2;
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0x13240 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.soap_getmimehdr ()                               | void soap_getmimehdr (int16_t arg_1h, int16_t arg_30h, int16_t arg1) {
                                                                 |     int32_t var_0h;
                                                                 |     int32_t var_0h_2;
                                                                 |     int32_t var_8h;
                                                                 |     int32_t var_8h_2;
                                                                 |     int16_t var_14h;
                                                                 |     r0 = arg1;
    0x00013240 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00013244 add.w r6, r0, 0x13000                             |     r6 = r0 + 0x13000;
    0x00013248 sub sp, 0x1c                                      |     
    0x0001324a mov r4, r0                                        |     r4 = r0;
    0x0001324c add.w r5, r6, 0xd8                                |     r5 = r6 + 0xd8;
    0x00013250 b 0x13258                                         |     
                                                                 |     while (r0 == 0) {
    0x00013252 ldrb.w r3, [r6, 0xd8]                             |         r3 = *((r6 + 0xd8));
                                                                 |         if (r3 != 0) {
    0x00013256 cbnz r3, 0x13278                                  |             goto label_4;
                                                                 |         }
    0x00013258 mov.w r2, 0x400                                   |         r2 = 0x400;
    0x0001325c mov r1, r5                                        |         r1 = r5;
    0x0001325e mov r0, r4                                        |         r0 = r4;
    0x00013260 blx 0x5df8                                        |         r0 = BIO_new_file ();
    0x00013264 cmp r0, 0                                         |         
    0x00013266 beq 0x13252                                       |         
                                                                 |     }
    0x00013268 add.w r4, r4, 0x16000                             |     r4 += 0x16000;
    0x0001326c ldr.w r7, [r4, 0x184]                             |     r7 = *((r4 + 0x184));
                                                                 | label_0:
    0x00013270 mov r0, r7                                        |     r0 = r7;
    0x00013272 add sp, 0x1c                                      |     
    0x00013274 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_4:
    0x00013278 ldrh.w r2, [r6, 0xd8]                             |     r2 = *((r6 + 0xd8));
    0x0001327c movw r3, 0x2d2d                                   |     r3 = 0x2d2d;
    0x00013280 cmp r2, r3                                        |     
    0x00013282 it ne                                             |     
                                                                 |     if (r2 == r3) {
    0x00013284 addne sl, r4, 0x16000                             |         sl = r4 + 0x16000;
                                                                 |     }
                                                                 |     if (r2 != r3) {
    0x00013288 bne 0x132d2                                       |         goto label_5;
                                                                 |     }
    0x0001328a mov r0, r5                                        |     r0 = r5;
    0x0001328c blx 0x5fec                                        |     fcn_00005fec ();
    0x00013290 subs r0, 1                                        |     r0--;
    0x00013292 ldrb r2, [r5, r0]                                 |     r2 = *((r5 + r0));
    0x00013294 adds r3, r5, r0                                   |     r3 = r5 + r0;
    0x00013296 cmp r2, 0x20                                      |     
                                                                 |     if (r2 > 0x20) {
    0x00013298 bhi 0x132a2                                       |         goto label_6;
                                                                 |     }
                                                                 |     do {
    0x0001329a ldrb r2, [r3, -0x1]!                              |         r2 = *((r3 -= 0x1));
    0x0001329e cmp r2, 0x20                                      |         
    0x000132a0 bls 0x1329a                                       |         
                                                                 |     } while (r2 < 0x20);
                                                                 | label_6:
    0x000132a2 movs r2, 0                                        |     r2 = 0;
    0x000132a4 add.w sl, r4, 0x16000                             |     sl = r4 + 0x16000;
    0x000132a8 strb r2, [r3, 1]                                  |     *((r3 + 1)) = r2;
    0x000132aa add.w r0, r6, 0xda                                |     r0 = r6 + 0xda;
    0x000132ae ldr.w r1, [sl, 0x1c4]                             |     r1 = *((sl + 0x1c4));
    0x000132b2 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x000132b4 beq.w 0x1340e                                     |         goto label_7;
                                                                 |     }
    0x000132b8 blx 0x67c4                                        |     r0 = fcn_000067c4 ();
    0x000132bc cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000132be bne.w 0x133f6                                     |         goto label_8;
                                                                 |     }
                                                                 | label_3:
    0x000132c2 mov.w r2, 0x400                                   |     r2 = 0x400;
    0x000132c6 mov r1, r5                                        |     r1 = r5;
    0x000132c8 mov r0, r4                                        |     r0 = r4;
    0x000132ca blx 0x5df8                                        |     r0 = BIO_new_file ();
    0x000132ce cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000132d0 bne 0x1335c                                       |         goto label_9;
                                                                 |     }
                                                                 | label_5:
    0x000132d2 movs r3, 0                                        |     r3 = 0;
    0x000132d4 mov r0, r4                                        |     r0 = r4;
    0x000132d6 mov r2, r3                                        |     r2 = r3;
    0x000132d8 mov r1, r3                                        |     r1 = r3;
    0x000132da strd r3, r3, [sp, 8]                              |     __asm ("strd r3, r3, [var_8h]");
    0x000132de strd r3, r3, [sp]                                 |     __asm ("strd r3, r3, [sp]");
    0x000132e2 blx 0x5b60                                        |     r0 = fcn_00005b60 ();
    0x000132e6 mov r7, r0                                        |     r7 = r0;
    0x000132e8 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000132ea bne 0x133c2                                       |         goto label_10;
                                                                 |     }
    0x000132ec ldr.w fp, [pc, 0x12c]                             |     
    0x000132f0 ldr.w r8, [pc, 0x12c]                             |     r8 = *(0x00013420);
    0x000132f4 ldr.w sb, [sl, 0x1d4]                             |     sb = *((sl + 0x1d4));
    0x000132f8 add fp, pc                                        |     fp = 0x26718;
    0x000132fa add.w r3, fp, 0x30                                |     r3 += arg_30h;
    0x000132fe add r8, pc                                        |     r8 += pc;
    0x00013300 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x00013302 b 0x13312                                         |     goto label_2;
                                                                 | label_1:
    0x00013304 mov.w r2, 0x400                                   |     r2 = 0x400;
    0x00013308 mov r1, r5                                        |     r1 = r5;
    0x0001330a mov r0, r4                                        |     r0 = r4;
    0x0001330c blx 0x5df8                                        |     r0 = BIO_new_file ();
                                                                 |     if (r0 != 0) {
    0x00013310 cbnz r0, 0x1335c                                  |         goto label_9;
                                                                 |     }
                                                                 | label_2:
    0x00013312 ldrb.w r3, [r6, 0xd8]                             |     r3 = *((r6 + 0xd8));
    0x00013316 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00013318 beq 0x13270                                       |         goto label_0;
                                                                 |     }
    0x0001331a movs r1, 0x3a                                     |     r1 = 0x3a;
    0x0001331c mov r0, r5                                        |     r0 = r5;
    0x0001331e blx 0x5b9c                                        |     r0 = fcn_00005b9c ();
    0x00013322 mov fp, r0                                        |     
    0x00013324 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00013326 beq 0x13304                                       |         goto label_1;
                                                                 |     }
    0x00013328 movs r2, 0                                        |     r2 = 0;
    0x0001332a strb r2, [r0]                                     |     *(r0) = r2;
                                                                 |     do {
    0x0001332c ldrb r2, [fp, 1]!                                 |         r2 = *(arg_1h);
    0x00013330 subs r2, 1                                        |         r2--;
    0x00013332 cmp r2, 0x1f                                      |         
    0x00013334 bls 0x1332c                                       |         
                                                                 |     } while (r2 < 0x1f);
    0x00013336 mov r1, r8                                        |     r1 = r8;
    0x00013338 mov r0, r5                                        |     r0 = r5;
    0x0001333a blx 0x65c0                                        |     r0 = X509_get_ext_d2i ();
                                                                 |     if (r0 != 0) {
    0x0001333e cbnz r0, 0x13368                                  |         goto label_11;
                                                                 |     }
    0x00013340 mov r1, fp                                        |     r1 = fp;
    0x00013342 mov r0, r4                                        |     r0 = r4;
    0x00013344 blx 0x5c8c                                        |     fcn_00005c8c ();
    0x00013348 mov.w r2, 0x400                                   |     r2 = 0x400;
    0x0001334c str.w r0, [sb, 0xc]                               |     __asm ("str.w r0, [sb, 0xc]");
    0x00013350 mov r1, r5                                        |     r1 = r5;
    0x00013352 mov r0, r4                                        |     r0 = r4;
    0x00013354 blx 0x5df8                                        |     r0 = BIO_new_file ();
    0x00013358 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001335a beq 0x13312                                       |         goto label_2;
                                                                 |     }
                                                                 | label_9:
    0x0001335c ldr.w r7, [sl, 0x184]                             |     r7 = *((sl + 0x184));
    0x00013360 mov r0, r7                                        |     r0 = r7;
    0x00013362 add sp, 0x1c                                      |     
    0x00013364 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_11:
    0x00013368 ldr r1, [pc, 0xb8]                                |     
    0x0001336a mov r0, r5                                        |     r0 = r5;
    0x0001336c add r1, pc                                        |     r1 = 0x26794;
    0x0001336e blx 0x65c0                                        |     r0 = X509_get_ext_d2i ();
                                                                 |     if (r0 == 0) {
    0x00013372 cbnz r0, 0x13382                                  |         
    0x00013374 mov r1, fp                                        |         r1 = fp;
    0x00013376 mov r0, r4                                        |         r0 = r4;
    0x00013378 blx 0x5c8c                                        |         fcn_00005c8c ();
    0x0001337c str.w r0, [sb, 0x1c]                              |         __asm ("str.w r0, [sb, 0x1c]");
    0x00013380 b 0x13304                                         |         goto label_1;
                                                                 |     }
    0x00013382 ldr r1, [pc, 0xa4]                                |     
    0x00013384 mov r0, r5                                        |     r0 = r5;
    0x00013386 add r1, pc                                        |     r1 = 0x267b4;
    0x00013388 blx 0x65c0                                        |     r0 = X509_get_ext_d2i ();
                                                                 |     if (r0 != 0) {
    0x0001338c cbz r0, 0x133a8                                   |         
    0x0001338e ldr r1, [pc, 0x9c]                                |         
    0x00013390 mov r0, r5                                        |         r0 = r5;
    0x00013392 add r1, pc                                        |         r1 = 0x267c4;
    0x00013394 blx 0x65c0                                        |         r0 = X509_get_ext_d2i ();
                                                                 |         if (r0 != 0) {
    0x00013398 cbnz r0, 0x133cc                                  |             goto label_12;
                                                                 |         }
    0x0001339a mov r1, fp                                        |         r1 = fp;
    0x0001339c mov r0, r4                                        |         r0 = r4;
    0x0001339e blx 0x5c8c                                        |         fcn_00005c8c ();
    0x000133a2 str.w r0, [sb, 0x10]                              |         __asm ("str.w r0, [sb, 0x10]");
    0x000133a6 b 0x13304                                         |         goto label_1;
                                                                 |     }
    0x000133a8 ldr r2, [pc, 0x84]                                |     
    0x000133aa mov r1, fp                                        |     r1 = fp;
    0x000133ac mov r0, r4                                        |     r0 = r4;
    0x000133ae add r2, pc                                        |     r2 = 0x267e2;
    0x000133b0 blx 0x6634                                        |     r0 = fcn_00006634 ();
    0x000133b4 mov r1, r0                                        |     r1 = r0;
    0x000133b6 mov r0, r4                                        |     r0 = r4;
    0x000133b8 blx 0x5c8c                                        |     fcn_00005c8c ();
    0x000133bc str.w r0, [sb, 0xc]                               |     __asm ("str.w r0, [sb, 0xc]");
    0x000133c0 b 0x13304                                         |     goto label_1;
                                                                 | label_10:
    0x000133c2 movs r3, 0x14                                     |     r3 = 0x14;
    0x000133c4 mov r7, r3                                        |     r7 = r3;
    0x000133c6 str.w r3, [sl, 0x184]                             |     __asm ("str.w r3, aav.0x000000ff");
    0x000133ca b 0x13270                                         |     goto label_0;
                                                                 | label_12:
    0x000133cc ldr r1, [pc, 0x64]                                |     
    0x000133ce mov r0, r5                                        |     r0 = r5;
    0x000133d0 add r1, pc                                        |     r1 = 0x26808;
    0x000133d2 blx 0x65c0                                        |     r0 = X509_get_ext_d2i ();
                                                                 |     if (r0 == 0) {
    0x000133d6 cbz r0, 0x13400                                   |         goto label_13;
                                                                 |     }
    0x000133d8 ldr r1, [pc, 0x5c]                                |     
    0x000133da mov r0, r5                                        |     r0 = r5;
    0x000133dc add r1, pc                                        |     r1 = 0x26818;
    0x000133de blx 0x65c0                                        |     r0 = X509_get_ext_d2i ();
    0x000133e2 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000133e4 bne 0x13304                                       |         goto label_1;
                                                                 |     }
    0x000133e6 mov r2, r0                                        |     r2 = r0;
    0x000133e8 mov r1, fp                                        |     r1 = fp;
    0x000133ea ldr r0, [sp, 0x14]                                |     r0 = var_14h;
    0x000133ec blx 0x5bdc                                        |     fcn_00005bdc ();
    0x000133f0 str.w r0, [sb, 0x18]                              |     __asm ("str.w r0, [sb, 0x18]");
    0x000133f4 b 0x13304                                         |     goto label_1;
                                                                 | label_8:
    0x000133f6 movs r3, 0x24                                     |     r3 = 0x24;
    0x000133f8 mov r7, r3                                        |     r7 = r3;
    0x000133fa str.w r3, [sl, 0x184]                             |     __asm ("str.w r3, aav.0x000000ff");
    0x000133fe b 0x13270                                         |     goto label_0;
                                                                 | label_13:
    0x00013400 mov r1, fp                                        |     r1 = fp;
    0x00013402 mov r0, r4                                        |     r0 = r4;
    0x00013404 blx 0x5c8c                                        |     fcn_00005c8c ();
    0x00013408 str.w r0, [sb, 0x20]                              |     __asm ("str.w r0, [sb, 0x20]");
    0x0001340c b 0x13304                                         |     goto label_1;
                                                                 | label_7:
    0x0001340e mov r1, r0                                        |     r1 = r0;
    0x00013410 mov r0, r4                                        |     r0 = r4;
    0x00013412 blx 0x5c8c                                        |     fcn_00005c8c ();
    0x00013416 str.w r0, [sl, 0x1c4]                             |     __asm ("str.w r0, aav.0x000000ff");
    0x0001341a b 0x132c2                                         |     goto label_3;
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0x1343c */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) sym.soap_get_mime_attachment ()                      | void soap_get_mime_attachment (int16_t arg_0h, uint32_t arg1) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int32_t var_10h_2;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     r0 = arg1;
    0x0001343c ldr r3, [r0, 4]                                   |     r3 = *((r0 + 4));
    0x0001343e push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00013442 sub sp, 0x24                                      |     
    0x00013444 lsls r2, r3, 0x17                                 |     r2 = r3 << 0x17;
                                                                 |     if (r2 >= r3) {
    0x00013446 bpl.w 0x13634                                     |         goto label_10;
                                                                 |     }
    0x0001344a add.w r3, r0, 0x16000                             |     r3 += arg_0hx16000;
    0x0001344e mov sl, r0                                        |     sl = r0;
    0x00013450 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x00013452 ldr.w r3, [r3, 0x1d4]                             |     r3 = *((r3 + 0x1d4));
    0x00013456 str r3, [sp, 0x18]                                |     var_18h = r3;
    0x00013458 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0001345a beq.w 0x135ae                                     |         goto label_14;
                                                                 |     }
    0x0001345e ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x00013460 ldr r6, [sp, 0x18]                                |     r6 = var_18h;
    0x00013462 ldr.w r3, [r3, 0x1d0]                             |     r3 = *((r3 + 0x1d0));
    0x00013466 cmp r3, r6                                        |     
                                                                 |     if (r3 == r6) {
    0x00013468 beq.w 0x135be                                     |         goto label_15;
                                                                 |     }
    0x0001346c add.w r3, r0, 0x3000                              |     r3 += arg_0hx3000;
    0x00013470 ldr.w r5, [r3, 0x84]                              |     r5 = *((r3 + 0x84));
    0x00013474 cmp r5, 0                                         |     
                                                                 |     if (r5 == 0) {
    0x00013476 beq.w 0x135be                                     |         goto label_15;
                                                                 |     }
    0x0001347a ldr r4, [r6, 0x18]                                |     r4 = *((r6 + 0x18));
    0x0001347c ldrd r2, r3, [r6, 0xc]                            |     __asm ("ldrd r2, r3, [r6, 0xc]");
    0x00013480 str r4, [sp, 4]                                   |     var_4h = r4;
    0x00013482 ldr r4, [r6, 0x20]                                |     r4 = *((r6 + 0x20));
    0x00013484 str r4, [sp]                                      |     *(sp) = r4;
    0x00013486 blx r5                                            |     r0 = uint32_t (*r5)(uint32_t) (r2);
    0x00013488 mov r1, r0                                        |     r1 = r0;
    0x0001348a str r0, [r6, 4]                                   |     *((r6 + 4)) = r0;
    0x0001348c cmp r0, 0                                         |     
                                                                 |     if (arg_0h == ) {
    0x0001348e beq.w 0x1362a                                     |         goto label_16;
                                                                 |     }
                                                                 | label_4:
    0x00013492 ldr r2, [pc, 0x2d0]                               |     
    0x00013494 movs r3, 0                                        |     r3 = 0;
    0x00013496 add.w fp, sl, 0x13000                             |     
    0x0001349a mov r5, r3                                        |     r5 = r3;
    0x0001349c add.w fp, fp, 0xd8                                |     
    0x000134a0 mov r6, r3                                        |     r6 = r3;
    0x000134a2 mov sb, r3                                        |     sb = r3;
    0x000134a4 add r2, pc                                        |     r2 = 0x26c0e;
    0x000134a6 str r3, [sp, 0x10]                                |     var_10h = r3;
    0x000134a8 str r2, [sp, 0x1c]                                |     var_1ch = r2;
                                                                 | label_1:
    0x000134aa cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x000134ac beq 0x1358e                                       |         goto label_17;
                                                                 |     }
                                                                 | label_2:
    0x000134ae add.w r4, sl, 0x13400                             |     r4 = sl + 0x13400;
    0x000134b2 adds r4, 0xd8                                     |     r4 += 0xd8;
                                                                 | label_3:
    0x000134b4 mov r0, r5                                        |     r0 = r5;
    0x000134b6 ldr r2, [sp, 0x10]                                |     r2 = var_10h;
    0x000134b8 ldr r5, [sp, 0x1c]                                |     r5 = var_1ch;
    0x000134ba movs r7, 0                                        |     r7 = 0;
    0x000134bc mov r3, sb                                        |     r3 = sb;
    0x000134be b 0x134d8                                         |     goto label_0;
    0x000134c0 ldrb r1, [r6], 1                                  |     r1 = *(r6);
                                                                 |     r6++;
    0x000134c4 adds r7, 1                                        |     r7++;
    0x000134c6 cmp.w r7, 0x400                                   |     
    0x000134ca add.w r8, r4, 1                                   |     r8 = r4 + 1;
    0x000134ce add.w r3, r3, -1                                  |     r3 += -1;
    0x000134d2 strb r1, [r4]                                     |     *(r4) = r1;
    0x000134d4 mov r4, r8                                        |     r4 = r8;
                                                                 |     if (r7 == 0x400) {
    0x000134d6 beq 0x13558                                       |         goto label_18;
                                                                 |     }
                                                                 | label_0:
    0x000134d8 lsrs r4, r6, 0x16                                 |     r4 = r6 >> 0x16;
    0x000134da subs r1, 0                                        |     
    0x000134dc adds r1, 0x2d                                     |     r1 += 0x2d;
    0x000134de cmp r5, 0                                         |     
    0x000134e0 adds r1, 0x33                                     |     r1 += 0x33;
                                                                 | label_7:
    0x000134e2 adds r2, 0x54                                     |     r2 += 0x54;
    0x000134e4 subs r2, 0x33                                     |     r2 -= 0x33;
    0x000134e6 subs r1, 0x35                                     |     r1 -= 0x35;
    0x000134e8 adds r5, 0x3a                                     |     r5 += 0x3a;
    0x000134ea ldrh r1, [r7, r0]                                 |     r1 = *((r7 + r0));
    0x000134ec blx 0xfff13cb0                                    |     void (*0xfff13cb0)(uint32_t, uint32_t) (r1, r2);
    0x000134f0 ldr r0, [r5]                                      |     r0 = *(r5);
    0x000134f2 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x000134f4 str.w r0, [fp]                                    |     __asm ("str.w r0, [fp]");
    0x000134f8 ldr.w r1, [r3, 0x1c4]                             |     r1 = *((r3 + 0x1c4));
                                                                 |     if (r1 != 0) {
    0x000134fc cbz r1, 0x1350c                                   |         
    0x000134fe mov.w r3, 0x400                                   |         r3 = 0x400;
    0x00013502 mov.w r2, 0x3fc                                   |         r2 = 0x3fc;
    0x00013506 mov r0, fp                                        |         r0 = fp;
    0x00013508 blx 0x5dc8                                        |         fcn_00005dc8 ();
                                                                 |     }
    0x0001350c mov sb, fp                                        |     sb = fp;
                                                                 |     do {
    0x0001350e mov r0, sl                                        |         r0 = sl;
    0x00013510 blx 0x61b8                                        |         snprintf_chk ()
    0x00013514 mov r1, sb                                        |         r1 = sb;
    0x00013516 ldrb r2, [sb], 1                                  |         r2 = *(sb);
                                                                 |         sb++;
    0x0001351a cmp r2, r0                                        |         
    0x0001351c beq 0x1350e                                       |         
                                                                 |     } while (r2 == r0);
    0x0001351e adds r3, r0, 1                                    |     r3 = r0 + 1;
                                                                 |     if (r3 == r0) {
    0x00013520 beq 0x13614                                       |         goto label_19;
                                                                 |     }
    0x00013522 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x00013524 beq.w 0x13640                                     |         goto label_20;
                                                                 |     }
    0x00013528 sub.w ip, r0, 0xd                                 |     
    0x0001352c sub.w r3, r1, fp                                  |     r3 = r1 - fp;
    0x00013530 clz ip, ip                                        |     
    0x00013534 strb r0, [r1]                                     |     *(r1) = r0;
    0x00013536 lsr.w ip, ip, 5                                   |     
    0x0001353a adds r3, 1                                        |     r3++;
    0x0001353c movs r0, 0xd                                      |     r0 = 0xd;
    0x0001353e sxth.w r2, ip                                     |     __asm ("sxth.w r2, ip");
    0x00013542 sub.w r3, r3, ip                                  |     r3 -= ip;
    0x00013546 mov r1, r0                                        |     r1 = r0;
                                                                 | label_6:
    0x00013548 adds r7, 1                                        |     r7++;
    0x0001354a add.w r8, r4, 1                                   |     r8 = r4 + 1;
    0x0001354e cmp.w r7, 0x400                                   |     
    0x00013552 strb r1, [r4]                                     |     *(r4) = r1;
    0x00013554 mov r4, r8                                        |     r4 = r8;
                                                                 |     if (r7 != 0x400) {
    0x00013556 bne 0x134d8                                       |         goto label_0;
                                                                 |     }
                                                                 | label_18:
    0x00013558 mov sb, r3                                        |     sb = r3;
    0x0001355a ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x0001355c mov r5, r0                                        |     r5 = r0;
    0x0001355e str r2, [sp, 0x10]                                |     var_10h = r2;
    0x00013560 ldr r1, [r3, 4]                                   |     r1 = *((r3 + 4));
                                                                 |     if (r1 == 0) {
    0x00013562 cbz r1, 0x1358e                                   |         goto label_17;
                                                                 |     }
    0x00013564 add.w r3, sl, 0x3000                              |     r3 = sl + 0x3000;
    0x00013568 ldr.w r4, [r3, 0x94]                              |     r4 = *((r3 + 0x94));
    0x0001356c cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x0001356e beq 0x134aa                                       |         goto label_1;
                                                                 |     }
    0x00013570 add.w r2, sl, 0x13400                             |     r2 = sl + 0x13400;
    0x00013574 mov r3, r7                                        |     r3 = r7;
    0x00013576 adds r2, 0xd8                                     |     r2 += 0xd8;
    0x00013578 mov r0, sl                                        |     r0 = sl;
    0x0001357a blx r4                                            |     uint32_t (*r4)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
    0x0001357c ldr r2, [sp, 0xc]                                 |     r2 = var_ch;
    0x0001357e str.w r0, [r2, 0x184]                             |     __asm ("str.w r0, aav.0x000000ff");
    0x00013582 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00013584 bne 0x13642                                       |         goto label_21;
                                                                 |     }
    0x00013586 ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x00013588 ldr r1, [r3, 4]                                   |     r1 = *((r3 + 4));
    0x0001358a cmp r1, 0                                         |     
                                                                 |     if (r1 != 0) {
    0x0001358c bne 0x134ae                                       |         goto label_2;
                                                                 |     }
                                                                 | label_17:
    0x0001358e mov.w r2, 0x400                                   |     r2 = 0x400;
    0x00013592 movs r1, 0                                        |     r1 = 0;
    0x00013594 mov r0, sl                                        |     r0 = sl;
    0x00013596 blx 0x5a20                                        |     r0 = loc_imp_soap_serializefault ();
    0x0001359a mov r4, r0                                        |     r4 = r0;
    0x0001359c cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0001359e bne 0x134b4                                       |         goto label_3;
                                                                 |     }
                                                                 | label_5:
    0x000135a0 movs r2, 0                                        |     r2 = 0;
    0x000135a2 movs r3, 0x14                                     |     r3 = 0x14;
    0x000135a4 str r2, [sp, 0x18]                                |     var_18h = r2;
    0x000135a6 ldr r2, [sp, 0xc]                                 |     r2 = var_ch;
    0x000135a8 str.w r3, [r2, 0x184]                             |     __asm ("str.w r3, aav.0x000000ff");
    0x000135ac b 0x13622                                         |     goto label_11;
                                                                 | label_14:
    0x000135ae blx 0x5a74                                        |     r0 = X509_STORE_CTX_set_error ();
    0x000135b2 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000135b4 bne 0x13634                                       |         goto label_10;
                                                                 |     }
    0x000135b6 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x000135b8 ldr.w r3, [r3, 0x1d4]                             |     r3 = *((r3 + 0x1d4));
    0x000135bc str r3, [sp, 0x18]                                |     var_18h = r3;
                                                                 | label_15:
    0x000135be ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x000135c0 ldr r1, [r3, 4]                                   |     r1 = *((r3 + 4));
    0x000135c2 cmp r1, 0                                         |     
                                                                 |     if (r1 != 0) {
    0x000135c4 bne.w 0x13492                                     |         goto label_4;
                                                                 |     }
                                                                 | label_9:
    0x000135c8 mov r0, sl                                        |     r0 = sl;
    0x000135ca blx 0x6680                                        |     r0 = X509_free ();
    0x000135ce cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000135d0 beq 0x135a0                                       |         goto label_5;
                                                                 |     }
    0x000135d2 ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x000135d4 ldr r1, [r3, 4]                                   |     r1 = *((r3 + 4));
    0x000135d6 b 0x13492                                         |     goto label_4;
    0x000135d8 add.w sb, sl, 0x3000                              |     sb = sl + 0x3000;
    0x000135dc ldrd ip, r0, [sb, 0xb0]                           |     __asm ("ldrd ip, r0, [sb, 0xb0]");
    0x000135e0 cmp ip, r0                                        |     
                                                                 |     if (ip >= r0) {
    0x000135e2 bhs 0x135fe                                       |         goto label_22;
                                                                 |     }
                                                                 | label_8:
    0x000135e4 add.w r0, ip, 1                                   |     r0 = ip + 1;
    0x000135e8 movw r1, 0x30d8                                   |     r1 = 0x30d8;
    0x000135ec add ip, sl                                        |     
    0x000135ee str.w r0, [sb, 0xb0]                              |     __asm ("str.w r0, [sb, 0xb0]");
    0x000135f2 ldrb.w r1, [ip, r1]                               |     r1 = *((ip + r1));
    0x000135f6 cmp r1, 0xd                                       |     
    0x000135f8 mov r0, r1                                        |     r0 = r1;
                                                                 |     if (r1 != 0xd) {
    0x000135fa bne 0x13548                                       |         goto label_6;
                                                                 |     }
    0x000135fc b 0x134e2                                         |     goto label_7;
                                                                 | label_22:
    0x000135fe mov r0, sl                                        |     r0 = sl;
    0x00013600 strd r3, r2, [sp, 0x10]                           |     __asm ("strd r3, r2, [var_10h]");
    0x00013604 blx 0x5ebc                                        |     r0 = fcn_00005ebc ();
                                                                 |     if (r0 == 0) {
    0x00013608 cbnz r0, 0x13614                                  |         
    0x0001360a ldr.w ip, [sb, 0xb0]                              |         ip = *((sb + 0xb0));
    0x0001360e ldrd r3, r2, [sp, 0x10]                           |         __asm ("ldrd r3, r2, [var_10h]");
    0x00013612 b 0x135e4                                         |         goto label_8;
                                                                 |     }
                                                                 | label_19:
    0x00013614 movs r2, 0                                        |     r2 = 0;
    0x00013616 mov.w r3, -1                                      |     r3 = -1;
    0x0001361a str r2, [sp, 0x18]                                |     var_18h = r2;
    0x0001361c ldr r2, [sp, 0xc]                                 |     r2 = var_ch;
    0x0001361e str.w r3, [r2, 0x184]                             |     __asm ("str.w r3, aav.0x000000ff");
                                                                 | label_11:
    0x00013622 ldr r0, [sp, 0x18]                                |     r0 = var_18h;
    0x00013624 add sp, 0x24                                      |     
    0x00013626 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_16:
    0x0001362a ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x0001362c ldr.w r3, [r3, 0x184]                             |     r3 = *((r3 + 0x184));
    0x00013630 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00013632 beq 0x135c8                                       |         goto label_9;
                                                                 |     }
                                                                 |     do {
                                                                 | label_10:
    0x00013634 movs r3, 0                                        |         r3 = 0;
    0x00013636 str r3, [sp, 0x18]                                |         var_18h = r3;
    0x00013638 ldr r0, [sp, 0x18]                                |         r0 = var_18h;
    0x0001363a add sp, 0x24                                      |         
    0x0001363c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_20:
    0x00013640 mov r5, r0                                        |         r5 = r0;
                                                                 | label_21:
    0x00013642 movs r3, 0                                        |         r3 = 0;
    0x00013644 strb.w r3, [r8]                                   |         *(r8) = r3;
    0x00013648 ldr r3, [sp, 0x18]                                |         r3 = var_18h;
    0x0001364a ldr r4, [r3, 4]                                   |         r4 = *((r3 + 4));
    0x0001364c cmp r4, 0                                         |         
                                                                 |         if (r4 == 0) {
    0x0001364e beq 0x1373a                                       |             goto label_23;
                                                                 |         }
    0x00013650 ldr r1, [sp, 0xc]                                 |         r1 = var_ch;
    0x00013652 ldr.w r3, [r1, 0x184]                             |         r3 = *((r1 + 0x184));
                                                                 |         if (r3 == 0) {
    0x00013656 cbnz r3, 0x13686                                  |             
    0x00013658 add.w r6, sl, 0x3000                              |             r6 = sl + 0x3000;
    0x0001365c ldr.w r8, [r6, 0x94]                              |             r8 = *((r6 + 0x94));
    0x00013660 cmp.w r8, 0                                       |             
                                                                 |             if (r8 == 0) {
    0x00013664 beq 0x1375a                                       |                 goto label_24;
                                                                 |             }
    0x00013666 add.w r2, sl, 0x13400                             |             r2 = sl + 0x13400;
    0x0001366a mov r3, r7                                        |             r3 = r7;
    0x0001366c mov r1, r4                                        |             r1 = r4;
    0x0001366e adds r2, 0xd8                                     |             r2 += 0xd8;
    0x00013670 lsls r0, r0, 4                                    |             r0 <<= 4;
    0x00013672 movs r0, r0                                       |             
    0x00013674 ldr.w r3, [r6, 0x8c]                              |             r3 = *((r6 + 0x8c));
    0x00013678 ldr r1, [sp, 0xc]                                 |             r1 = var_ch;
    0x0001367a str.w r0, [r1, 0x184]                             |             __asm ("str.w r0, aav.0x000000ff");
                                                                 |             if (r3 == 0) {
    0x0001367e cbz r3, 0x1369e                                   |                 goto label_25;
                                                                 |             }
    0x00013680 ldr r2, [sp, 0x18]                                |             r2 = var_18h;
    0x00013682 ldr r4, [r2, 4]                                   |             r4 = *((r2 + 4));
    0x00013684 b 0x13692                                         |             
                                                                 |         } else {
    0x00013686 add.w r3, sl, 0x3000                              |             r3 = sl + 0x3000;
    0x0001368a ldr.w r3, [r3, 0x8c]                              |             r3 = *((r3 + 0x8c));
    0x0001368e cmp r3, 0                                         |             
    0x00013690 beq 0x13634                                       |             
                                                                 |         } while (r3 == 0);
                                                                 |     }
                                                                 | label_13:
    0x00013692 mov r0, sl                                        |     r0 = sl;
    0x00013694 mov r1, r4                                        |     r1 = r4;
    0x00013696 blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r1);
    0x00013698 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x0001369a ldr.w r0, [r3, 0x184]                             |     r0 = *((r3 + 0x184));
                                                                 | label_25:
    0x0001369e cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000136a0 bne 0x13634                                       |         goto label_10;
                                                                 |     }
                                                                 | label_12:
    0x000136a2 ldr r1, [sp, 0x18]                                |     r1 = var_18h;
    0x000136a4 mov r0, sl                                        |     r0 = sl;
    0x000136a6 bl 0x12810                                        |     fcn_00012810 (r0, r1);
    0x000136aa cmp r5, 0x2d                                      |     
                                                                 |     if (r5 == 0x2d) {
    0x000136ac beq 0x136fa                                       |         goto label_26;
                                                                 |     }
    0x000136ae cmp r5, 0xd                                       |     
                                                                 |     if (r5 == 0xd) {
    0x000136b0 beq 0x136d0                                       |         goto label_27;
                                                                 |     }
    0x000136b2 cmp r5, 0x20                                      |     
                                                                 |     if (r5 < 0x20) {
    0x000136b4 bls 0x136bc                                       |         goto label_28;
                                                                 |     }
    0x000136b6 b 0x136e6                                         |     goto label_29;
                                                                 |     do {
    0x000136b8 cmp r0, 0x20                                      |         
                                                                 |         if (r0 > 0x20) {
    0x000136ba bhi 0x136e6                                       |             goto label_29;
                                                                 |         }
                                                                 | label_28:
    0x000136bc mov r0, sl                                        |         r0 = sl;
    0x000136be blx 0x61b8                                        |         r0 = snprintf_chk ()
    0x000136c2 cmp r0, 0xd                                       |         
    0x000136c4 it ne                                             |         
                                                                 |         if (r0 != 0xd) {
    0x000136c6 cmpne r0, -1                                      |             __asm ("cmpne r0, -1");
                                                                 |         }
    0x000136ca bne 0x136b8                                       |         
                                                                 |     } while (r0 != 0xd);
    0x000136cc cmp r0, 0xd                                       |     
                                                                 |     if (r0 != 0xd) {
    0x000136ce bne 0x136e6                                       |         goto label_29;
                                                                 |     }
                                                                 | label_27:
    0x000136d0 mov r0, sl                                        |     r0 = sl;
    0x000136d2 blx 0x61b8                                        |     r0 = snprintf_chk ()
    0x000136d6 cmp r0, 0xa                                       |     
                                                                 |     if (r0 != 0xa) {
    0x000136d8 bne 0x136e6                                       |         goto label_29;
                                                                 |     }
    0x000136da mov r0, sl                                        |     r0 = sl;
    0x000136dc blx 0x5a74                                        |     r0 = X509_STORE_CTX_set_error ();
    0x000136e0 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000136e2 beq 0x13622                                       |         goto label_11;
                                                                 |     }
    0x000136e4 b 0x13634                                         |     goto label_10;
                                                                 |     do {
                                                                 | label_29:
    0x000136e6 movs r2, 0                                        |         r2 = 0;
    0x000136e8 movs r3, 0x24                                     |         r3 = 0x24;
    0x000136ea str r2, [sp, 0x18]                                |         var_18h = r2;
    0x000136ec ldr r2, [sp, 0xc]                                 |         r2 = var_ch;
    0x000136ee ldr r0, [sp, 0x18]                                |         r0 = var_18h;
    0x000136f0 str.w r3, [r2, 0x184]                             |         __asm ("str.w r3, aav.0x000000ff");
    0x000136f4 add sp, 0x24                                      |         
    0x000136f6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_26:
    0x000136fa mov r0, sl                                        |         r0 = sl;
    0x000136fc blx 0x61b8                                        |         r0 = snprintf_chk ()
    0x00013700 cmp r0, 0x2d                                      |         
    0x00013702 bne 0x136e6                                       |         
                                                                 |     } while (r0 != 0x2d);
    0x00013704 ldr.w r3, [sl, 4]                                 |     r3 = *((sl + 4));
    0x00013708 bic r2, r3, 0x100                                 |     r2 = BIT_MASK (r3, 0x100);
    0x0001370c lsls r3, r3, 3                                    |     r3 <<= 3;
    0x0001370e str.w r2, [sl, 4]                                 |     __asm ("str.w r2, [sl, 4]");
                                                                 |     if (r3 >= r3) {
    0x00013712 bpl 0x13622                                       |         goto label_11;
                                                                 |     }
    0x00013714 mov r0, sl                                        |     r0 = sl;
    0x00013716 blx 0x6288                                        |     r0 = fcn_00006288 ();
    0x0001371a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001371c beq 0x13622                                       |         goto label_11;
                                                                 |     }
    0x0001371e ldr r2, [sp, 0xc]                                 |     r2 = var_ch;
    0x00013720 mov r0, sl                                        |     r0 = sl;
    0x00013722 ldrsh.w r3, [r2, 0x154]                           |     r3 = *((r2 + 0x154));
    0x00013726 cmp r3, 0                                         |     
    0x00013728 itt lt                                            |     
                                                                 |     if (r3 >= 0) {
    0x0001372a movlt r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r3 < 0) {
    0x0001372c strhlt r3, [r2, 0x154]                            |         __asm ("strhlt r3, aav.0x000000ff");
                                                                 |     }
    0x00013730 movs r3, 0                                        |     r3 = 0;
    0x00013732 str r3, [sp, 0x18]                                |     var_18h = r3;
    0x00013734 blx 0x6054                                        |     fcn_00006054 ();
    0x00013738 b 0x13622                                         |     goto label_11;
                                                                 | label_23:
    0x0001373a adds r2, r7, 1                                    |     r2 = r7 + 1;
    0x0001373c mov r1, r4                                        |     r1 = r4;
    0x0001373e mov r0, sl                                        |     r0 = sl;
    0x00013740 blx 0x6334                                        |     fcn_00006334 ();
    0x00013744 ldr r6, [sp, 0x18]                                |     r6 = var_18h;
    0x00013746 subs r0, 1                                        |     r0--;
    0x00013748 mov r3, r4                                        |     r3 = r4;
    0x0001374a mov r2, r4                                        |     r2 = r4;
    0x0001374c mov r1, r4                                        |     r1 = r4;
    0x0001374e str r0, [r6, 8]                                   |     *((r6 + 8)) = r0;
    0x00013750 mov r0, sl                                        |     r0 = sl;
    0x00013752 blx 0x63f8                                        |     PEM_read_bio_DHparams ();
    0x00013756 str r0, [r6, 4]                                   |     *((r6 + 4)) = r0;
    0x00013758 b 0x136a2                                         |     goto label_12;
                                                                 | label_24:
    0x0001375a ldr.w r3, [r6, 0x8c]                              |     r3 = *((r6 + 0x8c));
    0x0001375e cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00013760 bne 0x13692                                       |         goto label_13;
                                                                 |     }
    0x00013762 b 0x136a2                                         |     goto label_12;
                                                                 | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0x13768 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.soap_getmime ()          | void soap_getmime (int16_t arg1) {
                                         |     r0 = arg1;
    0x00013768 push {r4, lr}             |     
    0x0001376a mov r4, r0                |     r4 = r0;
                                         |     do {
    0x0001376c movs r1, 0                |         r1 = 0;
    0x0001376e mov r0, r4                |         r0 = r4;
    0x00013770 blx 0x60c8                |         r0 = loc_imp_soap_putelement ();
    0x00013774 cmp r0, 0                 |         
    0x00013776 bne 0x1376c               |         
                                         |     } while (r0 != 0);
    0x00013778 add.w r4, r4, 0x16000     |     r4 += 0x16000;
    0x0001377c ldr.w r0, [r4, 0x184]     |     r0 = *((r4 + 0x184));
    0x00013780 pop {r4, pc}              |     
                                         | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0x141dc */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.soap_get_http_body ()                        | void soap_get_http_body (int16_t arg1) {
                                                             |     r0 = arg1;
                                                             | label_2:
    0x00005c88 bx pc                                         |     return void (*pc)() ();
    0x000141dc ldr r3, [r0, 4]                               |     r3 = *((r0 + 4));
    0x000141de push.w {r4, r5, r6, r7, r8, sb, sl, lr}       |     
    0x000141e2 mov sl, r0                                    |     sl = r0;
    0x000141e4 ands r7, r3, 0x400                            |     r7 = r3 & 0x400;
                                                             |     if (r7 != r3) {
    0x000141e8 bne 0x1427e                                   |         goto label_4;
                                                             |     }
    0x000141ea and r3, r3, 3                                 |     r3 &= 3;
    0x000141ee add.w sb, r0, 0x3000                          |     sb = r0 + 0x3000;
    0x000141f2 cmp r3, 3                                     |     
                                                             |     if (r3 != 3) {
    0x000141f4 beq 0x141fe                                   |         
    0x000141f6 ldr.w r7, [sb, 0xc8]                          |         r7 = *((sb + 0xc8));
    0x000141fa cmp r7, 0                                     |         
                                                             |         if (r7 == 0) {
    0x000141fc beq 0x14290                                   |             goto label_5;
                                                             |         }
                                                             |     }
                                                             | label_3:
    0x000141fe movs r3, 0                                    |     r3 = 0;
    0x00014200 mov r4, r3                                    |     r4 = r3;
    0x00014202 str.w r3, [sb, 0xd4]                          |     __asm ("str.w r3, [sb, 0xd4]");
                                                             |     do {
                                                             | label_0:
    0x00014206 movs r2, 0                                    |         r2 = 0;
    0x00014208 mov r0, sl                                    |         r0 = sl;
    0x0001420a mov r1, r2                                    |         r1 = r2;
    0x0001420c blx 0x6514                                    |         r0 = fcn_00006514 ();
    0x00014210 cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x00014212 bne 0x14290                                   |             goto label_5;
                                                             |         }
    0x00014214 ldr.w r2, [sb, 0xd4]                          |         r2 = *((sb + 0xd4));
    0x00014218 ldr.w r3, [sb, 0xd0]                          |         r3 = *((sb + 0xd0));
    0x0001421c ldr.w r6, [sb, 0xcc]                          |         r6 = *((sb + 0xcc));
    0x00014220 cmp r3, r2                                    |         
    0x00014222 str.w r3, [sb, 0xd4]                          |         __asm ("str.w r3, [sb, 0xd4]");
    0x00014226 add.w r5, r6, r2                              |         r5 = r6 + r2;
    0x0001422a beq 0x14206                                   |         
                                                             |     } while (r3 == r2);
    0x0001422c adds r4, 1                                    |     r4++;
                                                             |     if (r4 == 1) {
    0x0001422e beq 0x14286                                   |         goto label_6;
                                                             |     }
    0x00014230 subs.w r8, r7, 0                              |     r8 = r7 - 0;
    0x00014234 it ne                                         |     
                                                             |     if (r8 == r7) {
    0x00014236 movne r8, 1                                   |         r8 = 1;
                                                             |     }
    0x0001423a cmp r7, r4                                    |     
    0x0001423c ite hs                                        |     
                                                             |     if (r7 < r4) {
    0x0001423e movhs r2, 0                                   |         r2 = 0;
                                                             |     }
                                                             |     if (r7 >= r4) {
    0x00014240 andlo r2, r8, 1                               |         r2 = r8 & 1;
                                                             |     }
                                                             |     if (r2 != 0) {
    0x00014244 cbnz r2, 0x1426c                              |         goto label_7;
                                                             |     }
    0x00014246 add r6, r3                                    |     r6 += r3;
    0x00014248 b 0x14262                                     |     goto label_8;
                                                             | label_1:
    0x0001424a strb r0, [r5], 1                              |     *(r5) = r0;
                                                             |     r5++;
    0x0001424e cmp r5, r6                                    |     
                                                             |     if (r5 == r6) {
    0x00014250 beq 0x14206                                   |         goto label_0;
                                                             |     }
    0x00014252 adds r4, 1                                    |     r4++;
                                                             |     if (r4 == 1) {
    0x00014254 beq 0x14286                                   |         goto label_6;
                                                             |     }
    0x00014256 cmp r7, r4                                    |     
    0x00014258 ite hs                                        |     
                                                             |     if (r7 < r4) {
    0x0001425a movhs r3, 0                                   |         r3 = 0;
                                                             |     }
                                                             |     if (r7 >= r4) {
    0x0001425c andlo r3, r8, 1                               |         r3 = r8 & 1;
                                                             |     }
                                                             |     if (r3 != 0) {
    0x00014260 cbnz r3, 0x1426c                              |         goto label_7;
                                                             |     }
                                                             | label_8:
    0x00014262 mov r0, sl                                    |     r0 = sl;
    0x00014264 blx 0x61b8                                    |     r0 = snprintf_chk ()
    0x00014268 adds r3, r0, 1                                |     r3 = r0 + 1;
                                                             |     if (r3 != r0) {
    0x0001426a bne 0x1424a                                   |         goto label_1;
                                                             |     }
                                                             | label_7:
    0x0001426c movs r3, 0                                    |     r3 = 0;
    0x0001426e mov r0, sl                                    |     r0 = sl;
    0x00014270 strb r3, [r5]                                 |     *(r5) = r3;
    0x00014272 ldr.w r1, [sb, 0xcc]                          |     r1 = *((sb + 0xcc));
    0x00014276 pop.w {r4, r5, r6, r7, r8, sb, sl, lr}        |     
    0x0001427a b.w 0x5c88                                    |     goto label_2;
                                                             | label_4:
    0x0001427e movs r7, 0                                    |     r7 = 0;
    0x00014280 add.w sb, r0, 0x3000                          |     sb = r0 + 0x3000;
    0x00014284 b 0x141fe                                     |     goto label_3;
                                                             | label_6:
    0x00014286 add.w sl, sl, 0x16000                         |     sl += 0x16000;
    0x0001428a movs r3, 0x14                                 |     r3 = 0x14;
    0x0001428c str.w r3, [sl, 0x184]                         |     __asm ("str.w r3, aav.0x000000ff");
                                                             | label_5:
    0x00014290 movs r0, 0                                    |     r0 = 0;
    0x00014292 pop.w {r4, r5, r6, r7, r8, sb, sl, 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/libsoap.so @ 0x14d24 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) sym.soap_getbase64 ()                                | void soap_getbase64 (int16_t arg1, int16_t arg2) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x00014d24 ldr r3, [r0, 4]                                   |     r3 = *((r0 + 4));
    0x00014d26 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00014d2a sub sp, 0x24                                      |     
    0x00014d2c str r1, [sp, 0xc]                                 |     var_ch = r1;
    0x00014d2e mov r7, r0                                        |     r7 = r0;
    0x00014d30 lsls r1, r3, 7                                    |     r1 = r3 << 7;
                                                                 |     if (r1 < r3) {
    0x00014d32 bpl 0x14d40                                       |         
    0x00014d34 add.w r5, r0, 0x16000                             |         r5 = r0 + 0x16000;
    0x00014d38 ldr.w r4, [r5, 0x190]                             |         r4 = *((r5 + 0x190));
    0x00014d3c cmp r4, 0                                         |         
                                                                 |         if (r4 != 0) {
    0x00014d3e bne 0x14dfe                                       |             goto label_4;
                                                                 |         }
                                                                 |     }
    0x00014d40 ldr r3, [pc, 0x1a8]                               |     
    0x00014d42 movw sb, 0xaaab                                   |     
    0x00014d46 add.w r5, r7, 0x3000                              |     r5 = r7 + 0x3000;
                                                                 |     /* if there is a right shift of 1, then it's a division by 1/3 */
    0x00014d4a movt sb, 0xaaaa                                   |     sb = 0xaaaaaaab;
    0x00014d4e add r3, pc                                        |     r3 = 0x29c3e;
    0x00014d50 str r3, [sp, 0x10]                                |     var_10h = r3;
    0x00014d52 movs r3, 0                                        |     r3 = 0;
    0x00014d54 str.w r3, [r5, 0xd4]                              |     __asm ("str.w r3, [r5, 0xd4]");
    0x00014d58 b 0x14d80                                         |     
                                                                 |     while (r0 == 0) {
    0x00014d5a ldrd sl, fp, [r5, 0xd0]                           |         __asm ("ldrd sl, fp, [r5, 0xd0]");
    0x00014d5e ldr.w r1, [r5, 0xcc]                              |         r1 = *((r5 + 0xcc));
    0x00014d62 sub.w r4, sl, fp                                  |         r4 = sl - fp;
    0x00014d66 umull r2, r6, sb, sl                              |         r2:r6 = sb * sl;
    0x00014d6a adds.w r8, r1, fp                                 |         r8 = r1 + fp;
    0x00014d6e bic r2, r6, 1                                     |         r2 = BIT_MASK (r6, 1);
    0x00014d72 add.w r2, r2, r6, lsr 1                           |         r2 += (r6 >> 1);
    0x00014d76 str.w r2, [r5, 0xd4]                              |         __asm ("str.w r2, [r5, 0xd4]");
                                                                 |         if (r8 == r1) {
    0x00014d7a beq 0x14d8e                                       |             goto label_5;
                                                                 |         }
    0x00014d7c cmp r4, 2                                         |         
                                                                 |         if (r4 > 2) {
    0x00014d7e bhi 0x14d9a                                       |             goto label_6;
                                                                 |         }
                                                                 | label_2:
    0x00014d80 movs r2, 2                                        |         r2 = 2;
    0x00014d82 movs r1, 0                                        |         r1 = 0;
    0x00014d84 mov r0, r7                                        |         r0 = r7;
    0x00014d86 blx 0x6514                                        |         r0 = fcn_00006514 ();
    0x00014d8a cmp r0, 0                                         |         
    0x00014d8c beq 0x14d5a                                       |         
                                                                 |     }
                                                                 | label_5:
    0x00014d8e mov.w r8, 0                                       |     r8 = 0;
    0x00014d92 mov r0, r8                                        |     r0 = r8;
    0x00014d94 add sp, 0x24                                      |     
    0x00014d96 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_6:
    0x00014d9a ldr r6, [sp, 0x10]                                |     r6 = var_10h;
    0x00014d9c subs r3, r4, 2                                    |     r3 = r4 - 2;
    0x00014d9e strd r0, r3, [sp, 0x14]                           |     __asm ("strd r0, r3, [var_14h]");
    0x00014da2 str.w sb, [sp, 0x1c]                              |     __asm ("str.w sb, [var_1ch]");
                                                                 | label_1:
    0x00014da6 mov.w sb, 0                                       |     sb = 0;
    0x00014daa mov r4, sb                                        |     r4 = sb;
    0x00014dac b 0x14dc4                                         |     
                                                                 |     while (r2 < 0x4f) {
    0x00014dae ldrb.w r3, [r1, 0x10c]                            |         r3 = *((r1 + 0x10c));
    0x00014db2 add.w sb, sb, 1                                   |         sb++;
    0x00014db6 cmp r3, 0x3f                                      |         
    0x00014db8 add.w r4, r3, r4, lsl 6                           |         r4 = r3 + (r4 << 6);
                                                                 |         if (r3 > 0x3f) {
    0x00014dbc bhi 0x14de8                                       |             goto label_7;
                                                                 |         }
                                                                 | label_0:
    0x00014dbe cmp.w sb, 4                                       |         
                                                                 |         if (sb == 4) {
    0x00014dc2 beq 0x14eb6                                       |             goto label_8;
                                                                 |         }
    0x00014dc4 mov r0, r7                                        |         r0 = r7;
    0x00014dc6 blx 0x62d0                                        |         r0 = fcn_000062d0 ();
    0x00014dca sub.w r3, r0, 0x3d                                |         r3 = r0 - 0x3d;
    0x00014dce sub.w r2, r0, 0x2b                                |         r2 = r0 - 0x2b;
    0x00014dd2 clz r3, r3                                        |         r3 &= r3;
    0x00014dd6 adds r1, r6, r2                                   |         r1 = r6 + r2;
    0x00014dd8 lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x00014dda orrs.w r3, r3, r0, lsr 31                         |         r3 |= (r0 >> 31);
                                                                 |         if (r3 != r3) {
    0x00014dde bne 0x14e2a                                       |             goto label_9;
                                                                 |         }
    0x00014de0 cmp r2, 0x4f                                      |         
    0x00014de2 bls 0x14dae                                       |         
                                                                 |     }
    0x00014de4 cmp r0, 0x20                                      |     
                                                                 |     if (r0 <= 0x20) {
    0x00014de6 ble 0x14dbe                                       |         goto label_0;
                                                                 |     }
                                                                 | label_7:
    0x00014de8 add.w r7, r7, 0x16000                             |     r7 += 0x16000;
    0x00014dec movs r3, 4                                        |     r3 = 4;
    0x00014dee mov.w r8, 0                                       |     r8 = 0;
    0x00014df2 str.w r3, [r7, 0x184]                             |     __asm ("str.w r3, aav.0x000000ff");
    0x00014df6 mov r0, r8                                        |     r0 = r8;
    0x00014df8 add sp, 0x24                                      |     
    0x00014dfa pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_4:
    0x00014dfe mov.w r3, -1                                      |     r3 = -1;
    0x00014e02 movs r1, 0                                        |     r1 = 0;
    0x00014e04 mov r2, r3                                        |     r2 = r3;
    0x00014e06 blx 0x5cf8                                        |     fcn_00005cf8 ();
    0x00014e0a ldr.w r1, [r5, 0x190]                             |     r1 = *((r5 + 0x190));
    0x00014e0e movs r3, 0                                        |     r3 = 0;
    0x00014e10 str r0, [r4, 0x18]                                |     *((r4 + 0x18)) = r0;
    0x00014e12 mov r2, r3                                        |     r2 = r3;
    0x00014e14 ldr r4, [sp, 0xc]                                 |     r4 = var_ch;
    0x00014e16 mov r0, r7                                        |     r0 = r7;
    0x00014e18 ldr r1, [r1, 0x18]                                |     r1 = *((r1 + 0x18));
    0x00014e1a str r4, [sp]                                      |     *(sp) = r4;
    0x00014e1c blx 0x5e98                                        |     r0 = fcn_00005e98 ();
    0x00014e20 mov r8, r0                                        |     r8 = r0;
    0x00014e22 mov r0, r8                                        |     r0 = r8;
    0x00014e24 add sp, 0x24                                      |     
    0x00014e26 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_9:
    0x00014e2a cmp.w sb, 2                                       |     
    0x00014e2e mov r3, sl                                        |     r3 = sl;
    0x00014e30 mov r2, r4                                        |     r2 = r4;
    0x00014e32 mov sl, fp                                        |     sl = fp;
    0x00014e34 mov r4, r0                                        |     r4 = r0;
    0x00014e36 mov fp, r3                                        |     
                                                                 |     if (sb == 2) {
    0x00014e38 beq 0x14ede                                       |         goto label_10;
                                                                 |     }
    0x00014e3a cmp.w sb, 3                                       |     
                                                                 |     if (sb == 3) {
    0x00014e3e bne 0x14e52                                       |         
    0x00014e40 ldr r3, [sp, 0x14]                                |         r3 = var_14h;
    0x00014e42 lsrs r1, r2, 0xa                                  |         r1 = r2 >> 0xa;
    0x00014e44 strb.w r1, [r8]                                   |         *(r8) = r1;
    0x00014e48 adds r3, 2                                        |         r3 += 2;
    0x00014e4a str r3, [sp, 0x14]                                |         var_14h = r3;
    0x00014e4c lsrs r3, r2, 2                                    |         r3 = r2 >> 2;
    0x00014e4e strb.w r3, [r8, 1]                                |         *((r8 + 1)) = r3;
                                                                 |     }
                                                                 | label_3:
    0x00014e52 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
                                                                 |     if (r3 != 0) {
    0x00014e54 cbz r3, 0x14e66                                   |         
    0x00014e56 ldr.w r1, [r5, 0xd0]                              |         r1 = *((r5 + 0xd0));
    0x00014e5a ldr r2, [sp, 0x14]                                |         r2 = var_14h;
    0x00014e5c add r1, sl                                        |         r1 += sl;
    0x00014e5e sub.w r1, r1, fp                                  |         r1 -= fp;
    0x00014e62 add r1, r2                                        |         r1 += r2;
    0x00014e64 str r1, [r3]                                      |         *(r3) = r1;
                                                                 |     }
    0x00014e66 ldr.w r1, [r5, 0xd0]                              |     r1 = *((r5 + 0xd0));
    0x00014e6a sub.w r6, sl, fp                                  |     r6 = sl - fp;
    0x00014e6e ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x00014e70 mov r0, r7                                        |     r0 = r7;
    0x00014e72 add r1, r6                                        |     r1 += r6;
    0x00014e74 add r1, r3                                        |     r1 += r3;
    0x00014e76 blx 0x6088                                        |     r0 = fcn_00006088 ();
    0x00014e7a mov r8, r0                                        |     r8 = r0;
                                                                 |     if (r0 != 0) {
    0x00014e7c cbz r0, 0x14e90                                   |         
    0x00014e7e ldr.w r3, [r5, 0xd0]                              |         r3 = *((r5 + 0xd0));
    0x00014e82 ldr r2, [sp, 0x14]                                |         r2 = var_14h;
    0x00014e84 ldr.w r1, [r5, 0xcc]                              |         r1 = *((r5 + 0xcc));
    0x00014e88 add r3, r6                                        |         r3 += r6;
    0x00014e8a add r2, r3                                        |         r2 += r3;
    0x00014e8c blx 0x6064                                        |         fcn_00006064 ();
                                                                 |     }
    0x00014e90 cmp r4, 0                                         |     
                                                                 |     if (r4 >= 0) {
    0x00014e92 bge 0x14e9a                                       |         goto label_11;
                                                                 |     }
    0x00014e94 b 0x14eaa                                         |     goto label_12;
                                                                 |     do {
    0x00014e96 cmp r3, 1                                         |         
                                                                 |         if (r3 < 1) {
    0x00014e98 bls 0x14ea8                                       |             goto label_13;
                                                                 |         }
                                                                 | label_11:
    0x00014e9a mov r0, r7                                        |         r0 = r7;
    0x00014e9c blx 0x62d0                                        |         r0 = fcn_000062d0 ();
    0x00014ea0 adds r2, r0, 1                                    |         r2 = r0 + 1;
    0x00014ea2 add.w r3, r0, 3                                   |         r3 = r0 + 3;
    0x00014ea6 bne 0x14e96                                       |         
                                                                 |     } while (r2 != r0);
                                                                 | label_13:
    0x00014ea8 mov r4, r0                                        |     r4 = r0;
                                                                 | label_12:
    0x00014eaa mov r0, r8                                        |     r0 = r8;
    0x00014eac str.w r4, [r5, 0xb8]                              |     __asm ("str.w r4, [r5, 0xb8]");
    0x00014eb0 add sp, 0x24                                      |     
    0x00014eb2 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_8:
    0x00014eb6 lsrs r3, r4, 0x10                                 |     r3 = r4 >> 0x10;
    0x00014eb8 ldr r2, [sp, 0x14]                                |     r2 = var_14h;
    0x00014eba strb.w r4, [r8, 2]                                |     *((r8 + 2)) = r4;
    0x00014ebe add.w r8, r8, 3                                   |     r8 += 3;
    0x00014ec2 strb r3, [r8, -0x3]                               |     *((r8 - 0x3)) = r3;
    0x00014ec6 lsrs r3, r4, 8                                    |     r3 = r4 >> 8;
    0x00014ec8 adds r2, 3                                        |     r2 += 3;
    0x00014eca strb r3, [r8, -0x2]                               |     *((r8 - 0x2)) = r3;
    0x00014ece ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x00014ed0 str r2, [sp, 0x14]                                |     var_14h = r2;
    0x00014ed2 cmp r3, r2                                        |     
                                                                 |     if (r3 > r2) {
    0x00014ed4 bhi.w 0x14da6                                     |         goto label_1;
                                                                 |     }
    0x00014ed8 ldr.w sb, [sp, 0x1c]                              |     sb = var_1ch;
    0x00014edc b 0x14d80                                         |     goto label_2;
                                                                 | label_10:
    0x00014ede lsrs r3, r2, 4                                    |     r3 = r2 >> 4;
    0x00014ee0 strb.w r3, [r8]                                   |     *(r8) = r3;
    0x00014ee4 ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x00014ee6 adds r3, 1                                        |     r3++;
    0x00014ee8 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x00014eea b 0x14e52                                         |     goto label_3;
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0x155b4 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) sym.soap_gethex ()                                   | void soap_gethex (int16_t arg1, int16_t arg2) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x000155b4 ldr r3, [r0, 4]                                   |     r3 = *((r0 + 4));
    0x000155b6 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x000155ba mov r4, r0                                        |     r4 = r0;
    0x000155bc sub sp, 0x14                                      |     
    0x000155be mov sb, r1                                        |     sb = r1;
    0x000155c0 lsls r3, r3, 7                                    |     r3 <<= 7;
                                                                 |     if (r3 < r3) {
    0x000155c2 bpl 0x155d2                                       |         
    0x000155c4 add.w r6, r0, 0x16000                             |         r6 = r0 + 0x16000;
    0x000155c8 ldr.w r5, [r6, 0x190]                             |         r5 = *((r6 + 0x190));
    0x000155cc cmp r5, 0                                         |         
                                                                 |         if (r5 != 0) {
    0x000155ce bne.w 0x156ec                                     |             goto label_2;
                                                                 |         }
                                                                 |     }
    0x000155d2 add.w r8, r4, 0x3000                              |     r8 = r4 + 0x3000;
    0x000155d6 movs r3, 0                                        |     r3 = 0;
    0x000155d8 str.w r3, [r8, 0xd4]                              |     __asm ("str.w r3, [r8, 0xd4]");
                                                                 |     do {
                                                                 | label_0:
    0x000155dc movs r2, 0                                        |         r2 = 0;
    0x000155de mov r0, r4                                        |         r0 = r4;
    0x000155e0 mov r1, r2                                        |         r1 = r2;
    0x000155e2 blx 0x6514                                        |         r0 = fcn_00006514 ();
    0x000155e6 mov r6, r0                                        |         r6 = r0;
    0x000155e8 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x000155ea bne.w 0x15718                                     |             goto label_3;
                                                                 |         }
    0x000155ee ldr.w r3, [r8, 0xd4]                              |         r3 = *((r8 + 0xd4));
    0x000155f2 ldr.w fp, [r8, 0xd0]                              |         fp = *((r8 + 0xd0));
    0x000155f6 ldr.w r7, [r8, 0xcc]                              |         r7 = *((r8 + 0xcc));
    0x000155fa str r3, [sp, 0xc]                                 |         var_ch = r3;
    0x000155fc cmp fp, r3                                        |         
    0x000155fe str.w fp, [r8, 0xd4]                              |         __asm ("str.w fp, [r8, 0xd4]");
    0x00015602 add.w r5, r7, r3                                  |         r5 = r7 + r3;
    0x00015606 beq 0x155dc                                       |         
                                                                 |     } while (fp == r3);
    0x00015608 add r7, fp                                        |     r7 += fp;
                                                                 |     do {
    0x0001560a mov r0, r4                                        |         r0 = r4;
    0x0001560c blx 0x62d0                                        |         r0 = fcn_000062d0 ();
    0x00015610 mov r3, r0                                        |         r3 = r0;
    0x00015612 mov r0, r4                                        |         r0 = r4;
    0x00015614 bic r1, r3, 0x20                                  |         r1 = BIT_MASK (r3, 0x20);
    0x00015618 sub.w ip, r3, 0x30                                |         
    0x0001561c subs r1, 0x41                                     |         r1 -= 0x41;
    0x0001561e uxtb.w sl, r3                                     |         sl = (int8_t) r3;
    0x00015622 cmp.w ip, 9                                       |         
    0x00015626 it hi                                             |         
                                                                 |         if (ip > 9) {
    0x00015628 cmphi r1, 5                                       |             __asm ("cmphi r1, 5");
                                                                 |         }
                                                                 |         if (ip >= 9) {
    0x0001562a bls 0x1567a                                       |             
    0x0001562c str.w r3, [r8, 0xb8]                              |             __asm ("str.w r3, [r8, 0xb8]");
    0x00015630 cmp.w sb, 0                                       |             
                                                                 |             if (sb != 0) {
    0x00015634 beq 0x15648                                       |                 
    0x00015636 ldr.w r3, [r8, 0xd0]                              |                 r3 = *((r8 + 0xd0));
    0x0001563a ldr r2, [sp, 0xc]                                 |                 r2 = var_ch;
    0x0001563c add r3, r2                                        |                 r3 += r2;
    0x0001563e sub.w r3, r3, fp                                  |                 r3 -= fp;
    0x00015642 add r3, r6                                        |                 r3 += r6;
    0x00015644 str.w r3, [sb]                                    |                 __asm ("str.w r3, [sb]");
                                                                 |             }
    0x00015648 ldr r3, [sp, 0xc]                                 |             r3 = var_ch;
    0x0001564a mov r0, r4                                        |             r0 = r4;
    0x0001564c ldr.w r1, [r8, 0xd0]                              |             r1 = *((r8 + 0xd0));
    0x00015650 sub.w sl, r3, fp                                  |             sl = r3 - fp;
    0x00015654 add r1, sl                                        |             r1 += sl;
    0x00015656 add r1, r6                                        |             r1 += r6;
    0x00015658 blx 0x6088                                        |             r0 = fcn_00006088 ();
    0x0001565c mov r5, r0                                        |             r5 = r0;
                                                                 |             if (r0 == 0) {
    0x0001565e cbz r0, 0x156a6                                   |                 goto label_1;
                                                                 |             }
    0x00015660 ldr.w r3, [r8, 0xd0]                              |             r3 = *((r8 + 0xd0));
    0x00015664 ldr.w r1, [r8, 0xcc]                              |             r1 = *((r8 + 0xcc));
    0x00015668 add sl, r3                                        |             sl += r3;
    0x0001566a add.w r2, sl, r6                                  |             r2 = sl + r6;
    0x0001566e blx 0x6064                                        |             fcn_00006064 ();
    0x00015672 mov r0, r5                                        |             r0 = r5;
    0x00015674 add sp, 0x14                                      |             
    0x00015676 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |             
                                                                 |         }
    0x0001567a blx 0x62d0                                        |         r0 = fcn_000062d0 ();
    0x0001567e bic r1, r0, 0x20                                  |         r1 = BIT_MASK (r0, 0x20);
    0x00015682 sub.w ip, r0, 0x30                                |         
    0x00015686 subs r1, 0x41                                     |         r1 -= 0x41;
    0x00015688 uxtb r3, r0                                       |         r3 = (int8_t) r0;
    0x0001568a cmp.w ip, 9                                       |         
    0x0001568e it hi                                             |         
                                                                 |         if (ip > 9) {
    0x00015690 cmphi r1, 5                                       |             __asm ("cmphi r1, 5");
                                                                 |         }
    0x00015692 ite ls                                            |         
                                                                 |         if (ip > 9) {
    0x00015694 movls r1, 1                                       |             r1 = 1;
                                                                 |         }
                                                                 |         if (ip <= 9) {
    0x00015696 movhi r1, 0                                       |             r1 = 0;
                                                                 |         }
                                                                 |         if (ip >= 9) {
    0x00015698 bls 0x156ae                                       |             
    0x0001569a mov r5, r1                                        |             r5 = r1;
    0x0001569c add.w r4, r4, 0x16000                             |             r4 += 0x16000;
    0x000156a0 movs r3, 4                                        |             r3 = 4;
    0x000156a2 str.w r3, [r4, 0x184]                             |             __asm ("str.w r3, aav.0x000000ff");
                                                                 | label_1:
    0x000156a6 mov r0, r5                                        |             r0 = r5;
    0x000156a8 add sp, 0x14                                      |             
    0x000156aa pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |             
                                                                 |         }
    0x000156ae and r1, sl, 7                                     |         r1 = sl & 7;
    0x000156b2 cmp.w sl, 0x40                                    |         
    0x000156b6 add.w r1, r1, 9                                   |         r1 += 9;
    0x000156ba lsl.w r1, r1, 4                                   |         r1 <<= 4;
    0x000156be it hi                                             |         
                                                                 |         if (sl > 0x40) {
    0x000156c0 uxtbhi r2, r1                                     |             __asm ("uxtbhi r2, r1");
                                                                 |         }
                                                                 |         if (sl <= 0x40) {
    0x000156c2 bhi 0x156cc                                       |             
    0x000156c4 lsl.w r2, sl, 4                                   |             r2 = sl << 4;
    0x000156c8 and r2, r2, 0xf0                                  |             r2 &= 0xf0;
                                                                 |         }
    0x000156cc sub.w r1, r3, 0x30                                |         r1 = r3 - 0x30;
    0x000156d0 cmp r3, 0x40                                      |         
    0x000156d2 uxtb r1, r1                                       |         r1 = (int8_t) r1;
    0x000156d4 and r3, r3, 7                                     |         r3 &= 7;
    0x000156d8 it hi                                             |         
                                                                 |         if (r3 <= 0x40) {
    0x000156da addhi r1, r3, 9                                   |             r1 = r3 + 9;
                                                                 |         }
    0x000156de add r2, r1                                        |         r2 += r1;
    0x000156e0 adds r6, 1                                        |         r6++;
    0x000156e2 strb r2, [r5], 1                                  |         *(r5) = r2;
                                                                 |         r5++;
    0x000156e6 cmp r5, r7                                        |         
    0x000156e8 bne 0x1560a                                       |         
                                                                 |     } while (r5 != r7);
    0x000156ea b 0x155dc                                         |     goto label_0;
                                                                 | label_2:
    0x000156ec mov.w r3, -1                                      |     r3 = -1;
    0x000156f0 movs r1, 0                                        |     r1 = 0;
    0x000156f2 mov r2, r3                                        |     r2 = r3;
    0x000156f4 blx 0x5cf8                                        |     fcn_00005cf8 ();
    0x000156f8 ldr.w r1, [r6, 0x190]                             |     r1 = *((r6 + 0x190));
    0x000156fc movs r3, 0                                        |     r3 = 0;
    0x000156fe str r0, [r5, 0x18]                                |     *((r5 + 0x18)) = r0;
    0x00015700 mov r2, r3                                        |     r2 = r3;
    0x00015702 mov r0, r4                                        |     r0 = r4;
    0x00015704 ldr r1, [r1, 0x18]                                |     r1 = *((r1 + 0x18));
    0x00015706 str.w sb, [sp]                                    |     __asm ("str.w sb, [sp]");
    0x0001570a blx 0x5d98                                        |     r0 = fcn_00005d98 ();
    0x0001570e mov r5, r0                                        |     r5 = r0;
    0x00015710 mov r0, r5                                        |     r0 = r5;
    0x00015712 add sp, 0x14                                      |     
    0x00015714 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_3:
    0x00015718 movs r5, 0                                        |     r5 = 0;
    0x0001571a b 0x156a6                                         |     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/libsoap.so @ 0x141dc */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.soap_get_http_body ()                        | void soap_get_http_body (int16_t arg1) {
                                                             |     r0 = arg1;
                                                             | label_2:
    0x00005c88 bx pc                                         |     return void (*pc)() ();
    0x000141dc ldr r3, [r0, 4]                               |     r3 = *((r0 + 4));
    0x000141de push.w {r4, r5, r6, r7, r8, sb, sl, lr}       |     
    0x000141e2 mov sl, r0                                    |     sl = r0;
    0x000141e4 ands r7, r3, 0x400                            |     r7 = r3 & 0x400;
                                                             |     if (r7 != r3) {
    0x000141e8 bne 0x1427e                                   |         goto label_4;
                                                             |     }
    0x000141ea and r3, r3, 3                                 |     r3 &= 3;
    0x000141ee add.w sb, r0, 0x3000                          |     sb = r0 + 0x3000;
    0x000141f2 cmp r3, 3                                     |     
                                                             |     if (r3 != 3) {
    0x000141f4 beq 0x141fe                                   |         
    0x000141f6 ldr.w r7, [sb, 0xc8]                          |         r7 = *((sb + 0xc8));
    0x000141fa cmp r7, 0                                     |         
                                                             |         if (r7 == 0) {
    0x000141fc beq 0x14290                                   |             goto label_5;
                                                             |         }
                                                             |     }
                                                             | label_3:
    0x000141fe movs r3, 0                                    |     r3 = 0;
    0x00014200 mov r4, r3                                    |     r4 = r3;
    0x00014202 str.w r3, [sb, 0xd4]                          |     __asm ("str.w r3, [sb, 0xd4]");
                                                             |     do {
                                                             | label_0:
    0x00014206 movs r2, 0                                    |         r2 = 0;
    0x00014208 mov r0, sl                                    |         r0 = sl;
    0x0001420a mov r1, r2                                    |         r1 = r2;
    0x0001420c blx 0x6514                                    |         r0 = fcn_00006514 ();
    0x00014210 cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x00014212 bne 0x14290                                   |             goto label_5;
                                                             |         }
    0x00014214 ldr.w r2, [sb, 0xd4]                          |         r2 = *((sb + 0xd4));
    0x00014218 ldr.w r3, [sb, 0xd0]                          |         r3 = *((sb + 0xd0));
    0x0001421c ldr.w r6, [sb, 0xcc]                          |         r6 = *((sb + 0xcc));
    0x00014220 cmp r3, r2                                    |         
    0x00014222 str.w r3, [sb, 0xd4]                          |         __asm ("str.w r3, [sb, 0xd4]");
    0x00014226 add.w r5, r6, r2                              |         r5 = r6 + r2;
    0x0001422a beq 0x14206                                   |         
                                                             |     } while (r3 == r2);
    0x0001422c adds r4, 1                                    |     r4++;
                                                             |     if (r4 == 1) {
    0x0001422e beq 0x14286                                   |         goto label_6;
                                                             |     }
    0x00014230 subs.w r8, r7, 0                              |     r8 = r7 - 0;
    0x00014234 it ne                                         |     
                                                             |     if (r8 == r7) {
    0x00014236 movne r8, 1                                   |         r8 = 1;
                                                             |     }
    0x0001423a cmp r7, r4                                    |     
    0x0001423c ite hs                                        |     
                                                             |     if (r7 < r4) {
    0x0001423e movhs r2, 0                                   |         r2 = 0;
                                                             |     }
                                                             |     if (r7 >= r4) {
    0x00014240 andlo r2, r8, 1                               |         r2 = r8 & 1;
                                                             |     }
                                                             |     if (r2 != 0) {
    0x00014244 cbnz r2, 0x1426c                              |         goto label_7;
                                                             |     }
    0x00014246 add r6, r3                                    |     r6 += r3;
    0x00014248 b 0x14262                                     |     goto label_8;
                                                             | label_1:
    0x0001424a strb r0, [r5], 1                              |     *(r5) = r0;
                                                             |     r5++;
    0x0001424e cmp r5, r6                                    |     
                                                             |     if (r5 == r6) {
    0x00014250 beq 0x14206                                   |         goto label_0;
                                                             |     }
    0x00014252 adds r4, 1                                    |     r4++;
                                                             |     if (r4 == 1) {
    0x00014254 beq 0x14286                                   |         goto label_6;
                                                             |     }
    0x00014256 cmp r7, r4                                    |     
    0x00014258 ite hs                                        |     
                                                             |     if (r7 < r4) {
    0x0001425a movhs r3, 0                                   |         r3 = 0;
                                                             |     }
                                                             |     if (r7 >= r4) {
    0x0001425c andlo r3, r8, 1                               |         r3 = r8 & 1;
                                                             |     }
                                                             |     if (r3 != 0) {
    0x00014260 cbnz r3, 0x1426c                              |         goto label_7;
                                                             |     }
                                                             | label_8:
    0x00014262 mov r0, sl                                    |     r0 = sl;
    0x00014264 blx 0x61b8                                    |     r0 = snprintf_chk ()
    0x00014268 adds r3, r0, 1                                |     r3 = r0 + 1;
                                                             |     if (r3 != r0) {
    0x0001426a bne 0x1424a                                   |         goto label_1;
                                                             |     }
                                                             | label_7:
    0x0001426c movs r3, 0                                    |     r3 = 0;
    0x0001426e mov r0, sl                                    |     r0 = sl;
    0x00014270 strb r3, [r5]                                 |     *(r5) = r3;
    0x00014272 ldr.w r1, [sb, 0xcc]                          |     r1 = *((sb + 0xcc));
    0x00014276 pop.w {r4, r5, r6, r7, r8, sb, sl, lr}        |     
    0x0001427a b.w 0x5c88                                    |     goto label_2;
                                                             | label_4:
    0x0001427e movs r7, 0                                    |     r7 = 0;
    0x00014280 add.w sb, r0, 0x3000                          |     sb = r0 + 0x3000;
    0x00014284 b 0x141fe                                     |     goto label_3;
                                                             | label_6:
    0x00014286 add.w sl, sl, 0x16000                         |     sl += 0x16000;
    0x0001428a movs r3, 0x14                                 |     r3 = 0x14;
    0x0001428c str.w r3, [sl, 0x184]                         |     __asm ("str.w r3, aav.0x000000ff");
                                                             | label_5:
    0x00014290 movs r0, 0                                    |     r0 = 0;
    0x00014292 pop.w {r4, r5, r6, r7, r8, sb, sl, 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/libsoap.so @ 0x1343c */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) sym.soap_get_mime_attachment ()                      | void soap_get_mime_attachment (int16_t arg_0h, uint32_t arg1) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int32_t var_10h_2;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     r0 = arg1;
    0x0001343c ldr r3, [r0, 4]                                   |     r3 = *((r0 + 4));
    0x0001343e push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00013442 sub sp, 0x24                                      |     
    0x00013444 lsls r2, r3, 0x17                                 |     r2 = r3 << 0x17;
                                                                 |     if (r2 >= r3) {
    0x00013446 bpl.w 0x13634                                     |         goto label_10;
                                                                 |     }
    0x0001344a add.w r3, r0, 0x16000                             |     r3 += arg_0hx16000;
    0x0001344e mov sl, r0                                        |     sl = r0;
    0x00013450 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x00013452 ldr.w r3, [r3, 0x1d4]                             |     r3 = *((r3 + 0x1d4));
    0x00013456 str r3, [sp, 0x18]                                |     var_18h = r3;
    0x00013458 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0001345a beq.w 0x135ae                                     |         goto label_14;
                                                                 |     }
    0x0001345e ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x00013460 ldr r6, [sp, 0x18]                                |     r6 = var_18h;
    0x00013462 ldr.w r3, [r3, 0x1d0]                             |     r3 = *((r3 + 0x1d0));
    0x00013466 cmp r3, r6                                        |     
                                                                 |     if (r3 == r6) {
    0x00013468 beq.w 0x135be                                     |         goto label_15;
                                                                 |     }
    0x0001346c add.w r3, r0, 0x3000                              |     r3 += arg_0hx3000;
    0x00013470 ldr.w r5, [r3, 0x84]                              |     r5 = *((r3 + 0x84));
    0x00013474 cmp r5, 0                                         |     
                                                                 |     if (r5 == 0) {
    0x00013476 beq.w 0x135be                                     |         goto label_15;
                                                                 |     }
    0x0001347a ldr r4, [r6, 0x18]                                |     r4 = *((r6 + 0x18));
    0x0001347c ldrd r2, r3, [r6, 0xc]                            |     __asm ("ldrd r2, r3, [r6, 0xc]");
    0x00013480 str r4, [sp, 4]                                   |     var_4h = r4;
    0x00013482 ldr r4, [r6, 0x20]                                |     r4 = *((r6 + 0x20));
    0x00013484 str r4, [sp]                                      |     *(sp) = r4;
    0x00013486 blx r5                                            |     r0 = uint32_t (*r5)(uint32_t) (r2);
    0x00013488 mov r1, r0                                        |     r1 = r0;
    0x0001348a str r0, [r6, 4]                                   |     *((r6 + 4)) = r0;
    0x0001348c cmp r0, 0                                         |     
                                                                 |     if (arg_0h == ) {
    0x0001348e beq.w 0x1362a                                     |         goto label_16;
                                                                 |     }
                                                                 | label_4:
    0x00013492 ldr r2, [pc, 0x2d0]                               |     
    0x00013494 movs r3, 0                                        |     r3 = 0;
    0x00013496 add.w fp, sl, 0x13000                             |     
    0x0001349a mov r5, r3                                        |     r5 = r3;
    0x0001349c add.w fp, fp, 0xd8                                |     
    0x000134a0 mov r6, r3                                        |     r6 = r3;
    0x000134a2 mov sb, r3                                        |     sb = r3;
    0x000134a4 add r2, pc                                        |     r2 = 0x26c0e;
    0x000134a6 str r3, [sp, 0x10]                                |     var_10h = r3;
    0x000134a8 str r2, [sp, 0x1c]                                |     var_1ch = r2;
                                                                 | label_1:
    0x000134aa cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x000134ac beq 0x1358e                                       |         goto label_17;
                                                                 |     }
                                                                 | label_2:
    0x000134ae add.w r4, sl, 0x13400                             |     r4 = sl + 0x13400;
    0x000134b2 adds r4, 0xd8                                     |     r4 += 0xd8;
                                                                 | label_3:
    0x000134b4 mov r0, r5                                        |     r0 = r5;
    0x000134b6 ldr r2, [sp, 0x10]                                |     r2 = var_10h;
    0x000134b8 ldr r5, [sp, 0x1c]                                |     r5 = var_1ch;
    0x000134ba movs r7, 0                                        |     r7 = 0;
    0x000134bc mov r3, sb                                        |     r3 = sb;
    0x000134be b 0x134d8                                         |     goto label_0;
    0x000134c0 ldrb r1, [r6], 1                                  |     r1 = *(r6);
                                                                 |     r6++;
    0x000134c4 adds r7, 1                                        |     r7++;
    0x000134c6 cmp.w r7, 0x400                                   |     
    0x000134ca add.w r8, r4, 1                                   |     r8 = r4 + 1;
    0x000134ce add.w r3, r3, -1                                  |     r3 += -1;
    0x000134d2 strb r1, [r4]                                     |     *(r4) = r1;
    0x000134d4 mov r4, r8                                        |     r4 = r8;
                                                                 |     if (r7 == 0x400) {
    0x000134d6 beq 0x13558                                       |         goto label_18;
                                                                 |     }
                                                                 | label_0:
    0x000134d8 lsrs r4, r6, 0x16                                 |     r4 = r6 >> 0x16;
    0x000134da subs r1, 0                                        |     
    0x000134dc adds r1, 0x2d                                     |     r1 += 0x2d;
    0x000134de cmp r5, 0                                         |     
    0x000134e0 adds r1, 0x33                                     |     r1 += 0x33;
                                                                 | label_7:
    0x000134e2 adds r2, 0x54                                     |     r2 += 0x54;
    0x000134e4 subs r2, 0x33                                     |     r2 -= 0x33;
    0x000134e6 subs r1, 0x35                                     |     r1 -= 0x35;
    0x000134e8 adds r5, 0x3a                                     |     r5 += 0x3a;
    0x000134ea ldrh r1, [r7, r0]                                 |     r1 = *((r7 + r0));
    0x000134ec blx 0xfff13cb0                                    |     void (*0xfff13cb0)(uint32_t, uint32_t) (r1, r2);
    0x000134f0 ldr r0, [r5]                                      |     r0 = *(r5);
    0x000134f2 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x000134f4 str.w r0, [fp]                                    |     __asm ("str.w r0, [fp]");
    0x000134f8 ldr.w r1, [r3, 0x1c4]                             |     r1 = *((r3 + 0x1c4));
                                                                 |     if (r1 != 0) {
    0x000134fc cbz r1, 0x1350c                                   |         
    0x000134fe mov.w r3, 0x400                                   |         r3 = 0x400;
    0x00013502 mov.w r2, 0x3fc                                   |         r2 = 0x3fc;
    0x00013506 mov r0, fp                                        |         r0 = fp;
    0x00013508 blx 0x5dc8                                        |         fcn_00005dc8 ();
                                                                 |     }
    0x0001350c mov sb, fp                                        |     sb = fp;
                                                                 |     do {
    0x0001350e mov r0, sl                                        |         r0 = sl;
    0x00013510 blx 0x61b8                                        |         snprintf_chk ()
    0x00013514 mov r1, sb                                        |         r1 = sb;
    0x00013516 ldrb r2, [sb], 1                                  |         r2 = *(sb);
                                                                 |         sb++;
    0x0001351a cmp r2, r0                                        |         
    0x0001351c beq 0x1350e                                       |         
                                                                 |     } while (r2 == r0);
    0x0001351e adds r3, r0, 1                                    |     r3 = r0 + 1;
                                                                 |     if (r3 == r0) {
    0x00013520 beq 0x13614                                       |         goto label_19;
                                                                 |     }
    0x00013522 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x00013524 beq.w 0x13640                                     |         goto label_20;
                                                                 |     }
    0x00013528 sub.w ip, r0, 0xd                                 |     
    0x0001352c sub.w r3, r1, fp                                  |     r3 = r1 - fp;
    0x00013530 clz ip, ip                                        |     
    0x00013534 strb r0, [r1]                                     |     *(r1) = r0;
    0x00013536 lsr.w ip, ip, 5                                   |     
    0x0001353a adds r3, 1                                        |     r3++;
    0x0001353c movs r0, 0xd                                      |     r0 = 0xd;
    0x0001353e sxth.w r2, ip                                     |     __asm ("sxth.w r2, ip");
    0x00013542 sub.w r3, r3, ip                                  |     r3 -= ip;
    0x00013546 mov r1, r0                                        |     r1 = r0;
                                                                 | label_6:
    0x00013548 adds r7, 1                                        |     r7++;
    0x0001354a add.w r8, r4, 1                                   |     r8 = r4 + 1;
    0x0001354e cmp.w r7, 0x400                                   |     
    0x00013552 strb r1, [r4]                                     |     *(r4) = r1;
    0x00013554 mov r4, r8                                        |     r4 = r8;
                                                                 |     if (r7 != 0x400) {
    0x00013556 bne 0x134d8                                       |         goto label_0;
                                                                 |     }
                                                                 | label_18:
    0x00013558 mov sb, r3                                        |     sb = r3;
    0x0001355a ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x0001355c mov r5, r0                                        |     r5 = r0;
    0x0001355e str r2, [sp, 0x10]                                |     var_10h = r2;
    0x00013560 ldr r1, [r3, 4]                                   |     r1 = *((r3 + 4));
                                                                 |     if (r1 == 0) {
    0x00013562 cbz r1, 0x1358e                                   |         goto label_17;
                                                                 |     }
    0x00013564 add.w r3, sl, 0x3000                              |     r3 = sl + 0x3000;
    0x00013568 ldr.w r4, [r3, 0x94]                              |     r4 = *((r3 + 0x94));
    0x0001356c cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x0001356e beq 0x134aa                                       |         goto label_1;
                                                                 |     }
    0x00013570 add.w r2, sl, 0x13400                             |     r2 = sl + 0x13400;
    0x00013574 mov r3, r7                                        |     r3 = r7;
    0x00013576 adds r2, 0xd8                                     |     r2 += 0xd8;
    0x00013578 mov r0, sl                                        |     r0 = sl;
    0x0001357a blx r4                                            |     uint32_t (*r4)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
    0x0001357c ldr r2, [sp, 0xc]                                 |     r2 = var_ch;
    0x0001357e str.w r0, [r2, 0x184]                             |     __asm ("str.w r0, aav.0x000000ff");
    0x00013582 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00013584 bne 0x13642                                       |         goto label_21;
                                                                 |     }
    0x00013586 ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x00013588 ldr r1, [r3, 4]                                   |     r1 = *((r3 + 4));
    0x0001358a cmp r1, 0                                         |     
                                                                 |     if (r1 != 0) {
    0x0001358c bne 0x134ae                                       |         goto label_2;
                                                                 |     }
                                                                 | label_17:
    0x0001358e mov.w r2, 0x400                                   |     r2 = 0x400;
    0x00013592 movs r1, 0                                        |     r1 = 0;
    0x00013594 mov r0, sl                                        |     r0 = sl;
    0x00013596 blx 0x5a20                                        |     r0 = loc_imp_soap_serializefault ();
    0x0001359a mov r4, r0                                        |     r4 = r0;
    0x0001359c cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0001359e bne 0x134b4                                       |         goto label_3;
                                                                 |     }
                                                                 | label_5:
    0x000135a0 movs r2, 0                                        |     r2 = 0;
    0x000135a2 movs r3, 0x14                                     |     r3 = 0x14;
    0x000135a4 str r2, [sp, 0x18]                                |     var_18h = r2;
    0x000135a6 ldr r2, [sp, 0xc]                                 |     r2 = var_ch;
    0x000135a8 str.w r3, [r2, 0x184]                             |     __asm ("str.w r3, aav.0x000000ff");
    0x000135ac b 0x13622                                         |     goto label_11;
                                                                 | label_14:
    0x000135ae blx 0x5a74                                        |     r0 = X509_STORE_CTX_set_error ();
    0x000135b2 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000135b4 bne 0x13634                                       |         goto label_10;
                                                                 |     }
    0x000135b6 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x000135b8 ldr.w r3, [r3, 0x1d4]                             |     r3 = *((r3 + 0x1d4));
    0x000135bc str r3, [sp, 0x18]                                |     var_18h = r3;
                                                                 | label_15:
    0x000135be ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x000135c0 ldr r1, [r3, 4]                                   |     r1 = *((r3 + 4));
    0x000135c2 cmp r1, 0                                         |     
                                                                 |     if (r1 != 0) {
    0x000135c4 bne.w 0x13492                                     |         goto label_4;
                                                                 |     }
                                                                 | label_9:
    0x000135c8 mov r0, sl                                        |     r0 = sl;
    0x000135ca blx 0x6680                                        |     r0 = X509_free ();
    0x000135ce cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000135d0 beq 0x135a0                                       |         goto label_5;
                                                                 |     }
    0x000135d2 ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x000135d4 ldr r1, [r3, 4]                                   |     r1 = *((r3 + 4));
    0x000135d6 b 0x13492                                         |     goto label_4;
    0x000135d8 add.w sb, sl, 0x3000                              |     sb = sl + 0x3000;
    0x000135dc ldrd ip, r0, [sb, 0xb0]                           |     __asm ("ldrd ip, r0, [sb, 0xb0]");
    0x000135e0 cmp ip, r0                                        |     
                                                                 |     if (ip >= r0) {
    0x000135e2 bhs 0x135fe                                       |         goto label_22;
                                                                 |     }
                                                                 | label_8:
    0x000135e4 add.w r0, ip, 1                                   |     r0 = ip + 1;
    0x000135e8 movw r1, 0x30d8                                   |     r1 = 0x30d8;
    0x000135ec add ip, sl                                        |     
    0x000135ee str.w r0, [sb, 0xb0]                              |     __asm ("str.w r0, [sb, 0xb0]");
    0x000135f2 ldrb.w r1, [ip, r1]                               |     r1 = *((ip + r1));
    0x000135f6 cmp r1, 0xd                                       |     
    0x000135f8 mov r0, r1                                        |     r0 = r1;
                                                                 |     if (r1 != 0xd) {
    0x000135fa bne 0x13548                                       |         goto label_6;
                                                                 |     }
    0x000135fc b 0x134e2                                         |     goto label_7;
                                                                 | label_22:
    0x000135fe mov r0, sl                                        |     r0 = sl;
    0x00013600 strd r3, r2, [sp, 0x10]                           |     __asm ("strd r3, r2, [var_10h]");
    0x00013604 blx 0x5ebc                                        |     r0 = fcn_00005ebc ();
                                                                 |     if (r0 == 0) {
    0x00013608 cbnz r0, 0x13614                                  |         
    0x0001360a ldr.w ip, [sb, 0xb0]                              |         ip = *((sb + 0xb0));
    0x0001360e ldrd r3, r2, [sp, 0x10]                           |         __asm ("ldrd r3, r2, [var_10h]");
    0x00013612 b 0x135e4                                         |         goto label_8;
                                                                 |     }
                                                                 | label_19:
    0x00013614 movs r2, 0                                        |     r2 = 0;
    0x00013616 mov.w r3, -1                                      |     r3 = -1;
    0x0001361a str r2, [sp, 0x18]                                |     var_18h = r2;
    0x0001361c ldr r2, [sp, 0xc]                                 |     r2 = var_ch;
    0x0001361e str.w r3, [r2, 0x184]                             |     __asm ("str.w r3, aav.0x000000ff");
                                                                 | label_11:
    0x00013622 ldr r0, [sp, 0x18]                                |     r0 = var_18h;
    0x00013624 add sp, 0x24                                      |     
    0x00013626 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_16:
    0x0001362a ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x0001362c ldr.w r3, [r3, 0x184]                             |     r3 = *((r3 + 0x184));
    0x00013630 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00013632 beq 0x135c8                                       |         goto label_9;
                                                                 |     }
                                                                 |     do {
                                                                 | label_10:
    0x00013634 movs r3, 0                                        |         r3 = 0;
    0x00013636 str r3, [sp, 0x18]                                |         var_18h = r3;
    0x00013638 ldr r0, [sp, 0x18]                                |         r0 = var_18h;
    0x0001363a add sp, 0x24                                      |         
    0x0001363c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_20:
    0x00013640 mov r5, r0                                        |         r5 = r0;
                                                                 | label_21:
    0x00013642 movs r3, 0                                        |         r3 = 0;
    0x00013644 strb.w r3, [r8]                                   |         *(r8) = r3;
    0x00013648 ldr r3, [sp, 0x18]                                |         r3 = var_18h;
    0x0001364a ldr r4, [r3, 4]                                   |         r4 = *((r3 + 4));
    0x0001364c cmp r4, 0                                         |         
                                                                 |         if (r4 == 0) {
    0x0001364e beq 0x1373a                                       |             goto label_23;
                                                                 |         }
    0x00013650 ldr r1, [sp, 0xc]                                 |         r1 = var_ch;
    0x00013652 ldr.w r3, [r1, 0x184]                             |         r3 = *((r1 + 0x184));
                                                                 |         if (r3 == 0) {
    0x00013656 cbnz r3, 0x13686                                  |             
    0x00013658 add.w r6, sl, 0x3000                              |             r6 = sl + 0x3000;
    0x0001365c ldr.w r8, [r6, 0x94]                              |             r8 = *((r6 + 0x94));
    0x00013660 cmp.w r8, 0                                       |             
                                                                 |             if (r8 == 0) {
    0x00013664 beq 0x1375a                                       |                 goto label_24;
                                                                 |             }
    0x00013666 add.w r2, sl, 0x13400                             |             r2 = sl + 0x13400;
    0x0001366a mov r3, r7                                        |             r3 = r7;
    0x0001366c mov r1, r4                                        |             r1 = r4;
    0x0001366e adds r2, 0xd8                                     |             r2 += 0xd8;
    0x00013670 lsls r0, r0, 4                                    |             r0 <<= 4;
    0x00013672 movs r0, r0                                       |             
    0x00013674 ldr.w r3, [r6, 0x8c]                              |             r3 = *((r6 + 0x8c));
    0x00013678 ldr r1, [sp, 0xc]                                 |             r1 = var_ch;
    0x0001367a str.w r0, [r1, 0x184]                             |             __asm ("str.w r0, aav.0x000000ff");
                                                                 |             if (r3 == 0) {
    0x0001367e cbz r3, 0x1369e                                   |                 goto label_25;
                                                                 |             }
    0x00013680 ldr r2, [sp, 0x18]                                |             r2 = var_18h;
    0x00013682 ldr r4, [r2, 4]                                   |             r4 = *((r2 + 4));
    0x00013684 b 0x13692                                         |             
                                                                 |         } else {
    0x00013686 add.w r3, sl, 0x3000                              |             r3 = sl + 0x3000;
    0x0001368a ldr.w r3, [r3, 0x8c]                              |             r3 = *((r3 + 0x8c));
    0x0001368e cmp r3, 0                                         |             
    0x00013690 beq 0x13634                                       |             
                                                                 |         } while (r3 == 0);
                                                                 |     }
                                                                 | label_13:
    0x00013692 mov r0, sl                                        |     r0 = sl;
    0x00013694 mov r1, r4                                        |     r1 = r4;
    0x00013696 blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r1);
    0x00013698 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x0001369a ldr.w r0, [r3, 0x184]                             |     r0 = *((r3 + 0x184));
                                                                 | label_25:
    0x0001369e cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000136a0 bne 0x13634                                       |         goto label_10;
                                                                 |     }
                                                                 | label_12:
    0x000136a2 ldr r1, [sp, 0x18]                                |     r1 = var_18h;
    0x000136a4 mov r0, sl                                        |     r0 = sl;
    0x000136a6 bl 0x12810                                        |     fcn_00012810 (r0, r1);
    0x000136aa cmp r5, 0x2d                                      |     
                                                                 |     if (r5 == 0x2d) {
    0x000136ac beq 0x136fa                                       |         goto label_26;
                                                                 |     }
    0x000136ae cmp r5, 0xd                                       |     
                                                                 |     if (r5 == 0xd) {
    0x000136b0 beq 0x136d0                                       |         goto label_27;
                                                                 |     }
    0x000136b2 cmp r5, 0x20                                      |     
                                                                 |     if (r5 < 0x20) {
    0x000136b4 bls 0x136bc                                       |         goto label_28;
                                                                 |     }
    0x000136b6 b 0x136e6                                         |     goto label_29;
                                                                 |     do {
    0x000136b8 cmp r0, 0x20                                      |         
                                                                 |         if (r0 > 0x20) {
    0x000136ba bhi 0x136e6                                       |             goto label_29;
                                                                 |         }
                                                                 | label_28:
    0x000136bc mov r0, sl                                        |         r0 = sl;
    0x000136be blx 0x61b8                                        |         r0 = snprintf_chk ()
    0x000136c2 cmp r0, 0xd                                       |         
    0x000136c4 it ne                                             |         
                                                                 |         if (r0 != 0xd) {
    0x000136c6 cmpne r0, -1                                      |             __asm ("cmpne r0, -1");
                                                                 |         }
    0x000136ca bne 0x136b8                                       |         
                                                                 |     } while (r0 != 0xd);
    0x000136cc cmp r0, 0xd                                       |     
                                                                 |     if (r0 != 0xd) {
    0x000136ce bne 0x136e6                                       |         goto label_29;
                                                                 |     }
                                                                 | label_27:
    0x000136d0 mov r0, sl                                        |     r0 = sl;
    0x000136d2 blx 0x61b8                                        |     r0 = snprintf_chk ()
    0x000136d6 cmp r0, 0xa                                       |     
                                                                 |     if (r0 != 0xa) {
    0x000136d8 bne 0x136e6                                       |         goto label_29;
                                                                 |     }
    0x000136da mov r0, sl                                        |     r0 = sl;
    0x000136dc blx 0x5a74                                        |     r0 = X509_STORE_CTX_set_error ();
    0x000136e0 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000136e2 beq 0x13622                                       |         goto label_11;
                                                                 |     }
    0x000136e4 b 0x13634                                         |     goto label_10;
                                                                 |     do {
                                                                 | label_29:
    0x000136e6 movs r2, 0                                        |         r2 = 0;
    0x000136e8 movs r3, 0x24                                     |         r3 = 0x24;
    0x000136ea str r2, [sp, 0x18]                                |         var_18h = r2;
    0x000136ec ldr r2, [sp, 0xc]                                 |         r2 = var_ch;
    0x000136ee ldr r0, [sp, 0x18]                                |         r0 = var_18h;
    0x000136f0 str.w r3, [r2, 0x184]                             |         __asm ("str.w r3, aav.0x000000ff");
    0x000136f4 add sp, 0x24                                      |         
    0x000136f6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_26:
    0x000136fa mov r0, sl                                        |         r0 = sl;
    0x000136fc blx 0x61b8                                        |         r0 = snprintf_chk ()
    0x00013700 cmp r0, 0x2d                                      |         
    0x00013702 bne 0x136e6                                       |         
                                                                 |     } while (r0 != 0x2d);
    0x00013704 ldr.w r3, [sl, 4]                                 |     r3 = *((sl + 4));
    0x00013708 bic r2, r3, 0x100                                 |     r2 = BIT_MASK (r3, 0x100);
    0x0001370c lsls r3, r3, 3                                    |     r3 <<= 3;
    0x0001370e str.w r2, [sl, 4]                                 |     __asm ("str.w r2, [sl, 4]");
                                                                 |     if (r3 >= r3) {
    0x00013712 bpl 0x13622                                       |         goto label_11;
                                                                 |     }
    0x00013714 mov r0, sl                                        |     r0 = sl;
    0x00013716 blx 0x6288                                        |     r0 = fcn_00006288 ();
    0x0001371a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001371c beq 0x13622                                       |         goto label_11;
                                                                 |     }
    0x0001371e ldr r2, [sp, 0xc]                                 |     r2 = var_ch;
    0x00013720 mov r0, sl                                        |     r0 = sl;
    0x00013722 ldrsh.w r3, [r2, 0x154]                           |     r3 = *((r2 + 0x154));
    0x00013726 cmp r3, 0                                         |     
    0x00013728 itt lt                                            |     
                                                                 |     if (r3 >= 0) {
    0x0001372a movlt r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r3 < 0) {
    0x0001372c strhlt r3, [r2, 0x154]                            |         __asm ("strhlt r3, aav.0x000000ff");
                                                                 |     }
    0x00013730 movs r3, 0                                        |     r3 = 0;
    0x00013732 str r3, [sp, 0x18]                                |     var_18h = r3;
    0x00013734 blx 0x6054                                        |     fcn_00006054 ();
    0x00013738 b 0x13622                                         |     goto label_11;
                                                                 | label_23:
    0x0001373a adds r2, r7, 1                                    |     r2 = r7 + 1;
    0x0001373c mov r1, r4                                        |     r1 = r4;
    0x0001373e mov r0, sl                                        |     r0 = sl;
    0x00013740 blx 0x6334                                        |     fcn_00006334 ();
    0x00013744 ldr r6, [sp, 0x18]                                |     r6 = var_18h;
    0x00013746 subs r0, 1                                        |     r0--;
    0x00013748 mov r3, r4                                        |     r3 = r4;
    0x0001374a mov r2, r4                                        |     r2 = r4;
    0x0001374c mov r1, r4                                        |     r1 = r4;
    0x0001374e str r0, [r6, 8]                                   |     *((r6 + 8)) = r0;
    0x00013750 mov r0, sl                                        |     r0 = sl;
    0x00013752 blx 0x63f8                                        |     PEM_read_bio_DHparams ();
    0x00013756 str r0, [r6, 4]                                   |     *((r6 + 4)) = r0;
    0x00013758 b 0x136a2                                         |     goto label_12;
                                                                 | label_24:
    0x0001375a ldr.w r3, [r6, 0x8c]                              |     r3 = *((r6 + 0x8c));
    0x0001375e cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00013760 bne 0x13692                                       |         goto label_13;
                                                                 |     }
    0x00013762 b 0x136a2                                         |     goto label_12;
                                                                 | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0x125ec */
                                                     | #include <stdint.h>
                                                     |  
                                                     | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                     | #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
                                                     |                                ((n & 0x0000ff00) <<  8) | \
                                                     |                                ((n & 0x00ff0000) >>  8) | \
                                                     |                                ((n & 0xff000000) >> 24)))
                                                     |  
    ; (fcn) sym.soap_getdimehdr ()                   | void soap_getdimehdr (int16_t arg1) {
                                                     |     int16_t var_0h;
                                                     |     int16_t var_1h;
                                                     |     int16_t var_2h;
                                                     |     int16_t var_4h;
                                                     |     int16_t var_6h;
                                                     |     int16_t var_8h;
                                                     |     int16_t var_ch;
                                                     |     r0 = arg1;
    0x000125ec ldr r2, [pc, 0x174]                   |     
    0x000125ee ldr r3, [pc, 0x178]                   |     r3 = *(0x1276a);
    0x000125f0 push.w {r4, r5, r6, r7, r8, lr}       |     
    0x000125f4 sub sp, 0x10                          |     
    0x000125f6 add r2, pc                            |     r2 = 0x24d5e;
    0x000125f8 mov r4, r0                            |     r4 = r0;
    0x000125fa ldr r3, [r2, r3]                      |     
    0x000125fc ldr r3, [r3]                          |     r3 = *(0x24d5e);
    0x000125fe str r3, [sp, 0xc]                     |     var_ch = r3;
    0x00012600 mov.w r3, 0                           |     r3 = 0;
    0x00012604 ldr r3, [r0, 4]                       |     r3 = *((r0 + 4));
    0x00012606 lsls r2, r3, 0x18                     |     r2 = r3 << 0x18;
                                                     |     if (r2 >= r3) {
    0x00012608 bpl.w 0x12716                         |         goto label_5;
                                                     |     }
    0x0001260c add.w r7, r0, 0x16000                 |     r7 = r0 + 0x16000;
    0x00012610 ldr.w r3, [r7, 0x1a0]                 |     r3 = *((r7 + 0x1a0));
    0x00012614 cmp r3, 0                             |     
                                                     |     if (r3 != 0) {
    0x00012616 bne 0x126d4                           |         goto label_6;
                                                     |     }
    0x00012618 ldr.w r3, [r7, 0x19c]                 |     r3 = *((r7 + 0x19c));
    0x0001261c cmp r3, 0                             |     
                                                     |     if (r3 != 0) {
    0x0001261e bne 0x126d4                           |         goto label_6;
                                                     |     }
    0x00012620 mov r5, sp                            |     r5 = sp;
    0x00012622 add r6, sp, 0xc                       |     r6 += var_ch;
                                                     |     do {
    0x00012624 mov r0, r4                            |         r0 = r4;
    0x00012626 blx 0x61b8                            |         r0 = snprintf_chk ()
    0x0001262a adds r3, r0, 1                        |         r3 = r0 + 1;
                                                     |         if (r3 == r0) {
    0x0001262c beq 0x12724                           |             goto label_7;
                                                     |         }
    0x0001262e strb r0, [r5], 1                      |         *(r5) = r0;
                                                     |         r5++;
    0x00012632 cmp r5, r6                            |         
    0x00012634 bne 0x12624                           |         
                                                     |     } while (r5 != r6);
    0x00012636 ldrb.w r3, [sp]                       |     r3 = *(sp);
    0x0001263a and r2, r3, 0xf8                      |     r2 = r3 & 0xf8;
    0x0001263e cmp r2, 8                             |     
    0x00012640 ittt ne                               |     
                                                     |     if (r2 == 8) {
    0x00012642 movne r3, 0x22                        |         r3 = 0x22;
                                                     |     }
                                                     |     if (r2 == 8) {
    0x00012644 movne r5, r3                          |         r5 = r3;
                                                     |     }
                                                     |     if (r2 == 8) {
    0x00012646 strne r3, [r7, 0x184]                 |         *((r7 + 0x184)) = r3;
                                                     |     }
                                                     |     if (r2 != 8) {
    0x0001264a bne 0x126fa                           |         goto label_0;
                                                     |     }
    0x0001264c ldrb.w r2, [sp, 1]                    |     r2 = var_1h;
    0x00012650 and r3, r3, 7                         |     r3 &= 7;
    0x00012654 ldrh.w r1, [sp, 2]                    |     r1 = var_2h;
    0x00012658 ldrh.w r6, [sp, 4]                    |     r6 = var_4h;
    0x0001265c bic r2, r2, 0xf                       |     r2 = BIT_MASK (r2, 0xf);
    0x00012660 ldrh.w r8, [sp, 6]                    |     r8 = var_6h;
    0x00012664 orrs r3, r2                           |     r3 |= r2;
    0x00012666 rev16 r1, r1                          |     __asm ("rev16 r1, r1");
    0x00012668 strb.w r3, [r7, 0x1a4]                |     *((r7 + 0x1a4)) = r3;
    0x0001266c uxth r1, r1                           |     r1 = (int16_t) r1;
    0x0001266e ldr r3, [sp, 8]                       |     r3 = var_8h;
    0x00012670 rev16 r6, r6                          |     __asm ("rev16 r6, r6");
    0x00012672 rev16.w r8, r8                        |     __asm ("rev16.w r8, r8");
    0x00012676 uxth r6, r6                           |     r6 = (int16_t) r6;
    0x00012678 uxth.w r8, r8                         |     r8 = (int16_t) r8;
    0x0001267c rev r3, r3                            |     r3 = SWAP32 (r3);
    0x0001267e str.w r3, [r7, 0x198]                 |     __asm ("str.w r3, aav.0x000000ff");
    0x00012682 cmp r1, 0                             |     
                                                     |     if (r1 == 0) {
    0x00012684 beq 0x1273e                           |         goto label_8;
                                                     |     }
    0x00012686 mov r0, r4                            |     r0 = r4;
    0x00012688 bl 0xa594                             |     fcn_0000a594 (r0, r1);
    0x0001268c str.w r0, [r7, 0x1b4]                 |     __asm ("str.w r0, aav.0x000000ff");
    0x00012690 cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x00012692 beq 0x12742                           |         goto label_9;
                                                     |     }
                                                     | label_2:
    0x00012694 cmp r6, 0                             |     
                                                     |     if (r6 == 0) {
    0x00012696 beq 0x1274c                           |         goto label_10;
                                                     |     }
    0x00012698 mov r1, r6                            |     r1 = r6;
    0x0001269a mov r0, r4                            |     r0 = r4;
    0x0001269c bl 0xa594                             |     fcn_0000a594 (r0, r1);
    0x000126a0 str.w r0, [r7, 0x1ac]                 |     __asm ("str.w r0, aav.0x000000ff");
    0x000126a4 cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x000126a6 beq 0x12750                           |         goto label_11;
                                                     |     }
    0x000126a8 cmp.w r8, 0                           |     
                                                     |     if (r8 == 0) {
    0x000126ac beq 0x12730                           |         goto label_4;
                                                     |     }
                                                     | label_3:
    0x000126ae mov r1, r8                            |     r1 = r8;
    0x000126b0 mov r0, r4                            |     r0 = r4;
    0x000126b2 bl 0xa594                             |     fcn_0000a594 (r0, r1);
    0x000126b6 str.w r0, [r7, 0x1b0]                 |     __asm ("str.w r0, aav.0x000000ff");
    0x000126ba cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x000126bc beq 0x12734                           |         goto label_12;
                                                     |     }
                                                     | label_1:
    0x000126be ldrb.w r5, [r7, 0x1a4]                |     r5 = *((r7 + 0x1a4));
    0x000126c2 ands r5, r5, 2                        |     r5 &= 2;
                                                     |     if (r5 == r5) {
    0x000126c6 beq 0x126fa                           |         goto label_0;
                                                     |     }
    0x000126c8 ldr r3, [r4, 4]                       |     r3 = *((r4 + 4));
    0x000126ca movs r5, 0                            |     r5 = 0;
    0x000126cc bic r3, r3, 0x80                      |     r3 = BIT_MASK (r3, 0x80);
    0x000126d0 str r3, [r4, 4]                       |     *((r4 + 4)) = r3;
    0x000126d2 b 0x126fa                             |     goto label_0;
                                                     | label_6:
    0x000126d4 ldr.w r5, [r7, 0x198]                 |     r5 = *((r7 + 0x198));
    0x000126d8 mov r0, r4                            |     r0 = r4;
    0x000126da blx 0x659c                            |     r0 = fcn_0000659c ();
    0x000126de mov r1, r0                            |     r1 = r0;
    0x000126e0 mov r0, r4                            |     r0 = r4;
    0x000126e2 subs r1, r5, r1                       |     r1 = r5 - r1;
    0x000126e4 blx 0x6784                            |     r0 = fcn_00006784 ();
    0x000126e8 mov r5, r0                            |     r5 = r0;
                                                     |     if (r0 != 0) {
    0x000126ea cbnz r0, 0x12724                      |         goto label_7;
                                                     |     }
    0x000126ec mov r0, r4                            |     r0 = r4;
    0x000126ee add.w r4, r4, 0x3000                  |     r4 += 0x3000;
    0x000126f2 blx 0x61b8                            |     snprintf_chk ()
    0x000126f6 str.w r0, [r4, 0xb8]                  |     __asm ("str.w r0, [r4, 0xb8]");
                                                     |     do {
                                                     | label_0:
    0x000126fa ldr r2, [pc, 0x70]                    |         
    0x000126fc ldr r3, [pc, 0x68]                    |         r3 = *(0x12768);
    0x000126fe add r2, pc                            |         r2 = 0x24e70;
    0x00012700 ldr r3, [r2, r3]                      |         r3 = *(0x24e70);
    0x00012702 ldr r2, [r3]                          |         r2 = *(0x24e70);
    0x00012704 ldr r3, [sp, 0xc]                     |         r3 = var_ch;
    0x00012706 eors r2, r3                           |         r2 ^= r3;
    0x00012708 mov.w r3, 0                           |         r3 = 0;
                                                     |         if (r2 != r3) {
    0x0001270c bne 0x12760                           |             goto label_13;
                                                     |         }
    0x0001270e mov r0, r5                            |         r0 = r5;
    0x00012710 add sp, 0x10                          |         
    0x00012712 pop.w {r4, r5, r6, r7, r8, pc}        |         
                                                     | label_5:
    0x00012716 movs r3, 0x23                         |         r3 = 0x23;
    0x00012718 add.w r4, r0, 0x16000                 |         r4 = r0 + 0x16000;
    0x0001271c mov r5, r3                            |         r5 = r3;
    0x0001271e str.w r3, [r4, 0x184]                 |         __asm ("str.w r3, aav.0x000000ff");
    0x00012722 b 0x126fa                             |         
                                                     |     } while (1);
                                                     | label_7:
    0x00012724 mov.w r3, -1                          |     r3 = -1;
    0x00012728 mov r5, r3                            |     r5 = r3;
    0x0001272a str.w r3, [r7, 0x184]                 |     __asm ("str.w r3, aav.0x000000ff");
    0x0001272e b 0x126fa                             |     goto label_0;
                                                     | label_4:
    0x00012730 str.w r8, [r7, 0x1b0]                 |     __asm ("str.w r8, aav.0x000000ff");
                                                     | label_12:
    0x00012734 ldr.w r5, [r7, 0x184]                 |     r5 = *((r7 + 0x184));
    0x00012738 cmp r5, 0                             |     
                                                     |     if (r5 == 0) {
    0x0001273a beq 0x126be                           |         goto label_1;
                                                     |     }
    0x0001273c b 0x126fa                             |     goto label_0;
                                                     | label_8:
    0x0001273e str.w r1, [r7, 0x1b4]                 |     __asm ("str.w r1, aav.0x000000ff");
                                                     | label_9:
    0x00012742 ldr.w r5, [r7, 0x184]                 |     r5 = *((r7 + 0x184));
    0x00012746 cmp r5, 0                             |     
                                                     |     if (r5 == 0) {
    0x00012748 beq 0x12694                           |         goto label_2;
                                                     |     }
    0x0001274a b 0x126fa                             |     goto label_0;
                                                     | label_10:
    0x0001274c str.w r6, [r7, 0x1ac]                 |     __asm ("str.w r6, aav.0x000000ff");
                                                     | label_11:
    0x00012750 ldr.w r5, [r7, 0x184]                 |     r5 = *((r7 + 0x184));
    0x00012754 cmp r5, 0                             |     
                                                     |     if (r5 != 0) {
    0x00012756 bne 0x126fa                           |         goto label_0;
                                                     |     }
    0x00012758 cmp.w r8, 0                           |     
                                                     |     if (r8 != 0) {
    0x0001275c bne 0x126ae                           |         goto label_3;
                                                     |     }
    0x0001275e b 0x12730                             |     goto label_4;
                                                     | label_13:
    0x00012760 blx 0x63ec                            |     SSL_get_verify_result ();
    0x00012764 adr r4, 0x3d8                         |     r4 = 0x3d8;
    0x00012766 movs r1, r0                           |     r1 = r0;
    0x00012768 lsls r0, r0, 0x14                     |     r0 <<= 0x14;
    0x0001276a movs r0, r0                           |     
    0x0001276c adr r3, 0x3b8                         |     r3 = 0x3b8;
    0x0001276e 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/libsoap.so @ 0x12150 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) sym.soap_getline ()                                      | void soap_getline (int16_t arg_1h, int16_t arg1, int16_t arg2, uint32_t arg3) {
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
                                                                     |     r2 = arg3;
    0x00012150 svcmi 0xf8e92d                                        |     __asm ("svcmi aav.0x000000ff");
    0x00012154 mov fp, r2                                            |     
    0x00012156 add.w sb, fp, -1                                      |     sb = fp + -1;
    0x0001215a mov sl, r0                                            |     sl = r0;
    0x0001215c cmp.w sb, 0                                           |     
    0x00012160 mov.w r0, 0                                           |     r0 = 0;
    0x00012164 mov r5, r2                                            |     r5 = r2;
    0x00012166 mov r4, r1                                            |     r4 = r1;
    0x00012168 mov r7, r0                                            |     r7 = r0;
    0x0001216a add.w r6, sl, 0x3000                                  |     r6 = sl + 0x3000;
    0x0001216e movw r8, 0x30d8                                       |     r8 = 0x30d8;
                                                                     |     if (sb <= 0) {
    0x00012172 ble 0x12196                                           |         goto label_3;
                                                                     |     }
                                                                     |     do {
    0x00012174 mov r0, sl                                            |         r0 = sl;
    0x00012176 blx 0x61b8                                            |         r0 = snprintf_chk ()
    0x0001217a cmp r0, 0xa                                           |         
    0x0001217c it ne                                                 |         
                                                                     |         if (r0 != 0xa) {
    0x0001217e cmpne r0, 0xd                                         |             __asm ("cmpne r0, 0xd");
                                                                     |         }
                                                                     |         if (r0 == 0xa) {
    0x00012180 beq 0x12196                                           |             goto label_3;
                                                                     |         }
    0x00012182 adds r2, r0, 1                                        |         r2 = r0 + 1;
                                                                     |         if (r2 == r0) {
    0x00012184 beq 0x121f0                                           |             goto label_4;
                                                                     |         }
    0x00012186 strb r0, [r4], 1                                      |         *(r4) = r0;
                                                                     |         r4++;
                                                                     | label_0:
    0x0001218a mov fp, sb                                            |         
    0x0001218c add.w sb, fp, -1                                      |         sb = fp + -1;
    0x00012190 cmp.w sb, 0                                           |         
    0x00012194 bgt 0x12174                                           |         
                                                                     |     } while (sb > 0);
                                                                     | label_3:
    0x00012196 cmp r0, 0xa                                           |     
                                                                     |     if (r0 == 0xa) {
    0x00012198 beq 0x121be                                           |         goto label_5;
                                                                     |     }
    0x0001219a mov r0, sl                                            |     r0 = sl;
    0x0001219c blx 0x61b8                                            |     r0 = snprintf_chk ()
    0x000121a0 cmp r0, 0xa                                           |     
                                                                     |     if (r0 == 0xa) {
    0x000121a2 beq 0x121be                                           |         goto label_5;
                                                                     |     }
    0x000121a4 adds r3, r0, 1                                        |     r3 = r0 + 1;
                                                                     |     if (r3 == r0) {
    0x000121a6 beq 0x121f0                                           |         goto label_4;
                                                                     |     }
                                                                     | label_1:
    0x000121a8 cmp.w sb, 0                                           |     
                                                                     |     if (sb >= 0) {
    0x000121ac bge 0x1218a                                           |         goto label_0;
                                                                     |     }
    0x000121ae movs r3, 0x16                                         |     r3 = 0x16;
    0x000121b0 add.w sl, sl, 0x16000                                 |     sl += 0x16000;
    0x000121b4 mov r0, r3                                            |     r0 = r3;
    0x000121b6 str.w r3, [sl, 0x184]                                 |     __asm ("str.w r3, aav.0x000000ff");
    0x000121ba pop.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                     | label_5:
    0x000121be cmp fp, r5                                            |     
    0x000121c0 strb r7, [r4]                                         |     *(r4) = r7;
                                                                     |     if (fp == r5) {
    0x000121c2 beq 0x121da                                           |         goto label_6;
                                                                     |     }
    0x000121c4 ldrd r3, r2, [r6, 0xb0]                               |     __asm ("ldrd r3, r2, [r6, 0xb0]");
    0x000121c8 cmp r3, r2                                            |     
                                                                     |     if (r3 >= r2) {
    0x000121ca bhs 0x121e0                                           |         goto label_7;
                                                                     |     }
                                                                     | label_2:
    0x000121cc add r3, sl                                            |     r3 += sl;
    0x000121ce ldrb.w r0, [r3, r8]                                   |     r0 = *((r3 + r8));
    0x000121d2 cmp r0, 0x20                                          |     
    0x000121d4 it ne                                                 |     
                                                                     |     if (r0 == 0x20) {
    0x000121d6 cmpne r0, 9                                           |         __asm ("cmpne r0, 9");
                                                                     |         goto label_8;
                                                                     |     }
                                                                     |     if (r0 == 0x20) {
                                                                     | label_8:
    0x000121d8 beq 0x121a8                                           |         goto label_1;
                                                                     |     }
                                                                     |     do {
                                                                     | label_6:
    0x000121da movs r0, 0                                            |         r0 = 0;
    0x000121dc pop.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                     | label_7:
    0x000121e0 mov r0, sl                                            |         r0 = sl;
    0x000121e2 blx 0x5ebc                                            |         r0 = fcn_00005ebc ();
    0x000121e6 cmp r0, 0                                             |         
    0x000121e8 bne 0x121da                                           |         
                                                                     |     } while (r0 != 0);
    0x000121ea ldr.w r3, [r6, 0xb0]                                  |     r3 = *((r6 + 0xb0));
    0x000121ee b 0x121cc                                             |     goto label_2;
                                                                     | label_4:
    0x000121f0 mov.w r3, -1                                          |     r3 = -1;
    0x000121f4 add.w sl, sl, 0x16000                                 |     sl += 0x16000;
    0x000121f8 mov r0, r3                                            |     r0 = r3;
    0x000121fa str.w r3, [sl, 0x184]                                 |     __asm ("str.w r3, aav.0x000000ff");
    0x000121fe pop.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, 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/libsoap.so @ 0xc264 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) sym.soap_peek_element ()                                 | void soap_peek_element (int16_t arg1) {
                                                                     |     int16_t var_0h;
                                                                     |     int16_t var_4h;
                                                                     |     int16_t var_8h;
                                                                     |     int16_t var_ch;
                                                                     |     int16_t var_10h;
                                                                     |     int16_t var_14h;
                                                                     |     int16_t var_18h;
                                                                     |     int16_t var_1ch;
                                                                     |     int16_t var_20h;
                                                                     |     int16_t var_24h;
                                                                     |     int16_t var_28h;
                                                                     |     int16_t var_2ch;
                                                                     |     r0 = arg1;
    0x0000c264 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000c268 add.w r3, r0, 0x15000                                 |     r3 = r0 + 0x15000;
    0x0000c26c sub sp, 0x34                                          |     
    0x0000c26e mov r6, r0                                            |     r6 = r0;
    0x0000c270 str r3, [sp, 4]                                       |     var_4h = r3;
    0x0000c272 ldrsh.w r3, [r3, 0x530]                               |     r3 = *((r3 + 0x530));
    0x0000c274 adds r5, 0x30                                         |     r5 += 0x30;
                                                                     |     if (r3 != 0) {
    0x0000c276 cbz r3, 0xc2a0                                        |         
    0x0000c278 add.w r3, r0, 0x13000                                 |         r3 = r0 + 0x13000;
    0x0000c27c movs r0, 0                                            |         r0 = 0;
    0x0000c27e ldrb.w r3, [r3, 0x8d8]                                |         r3 = *((r3 + 0x8d8));
                                                                     |         if (r3 != 0) {
    0x0000c282 cbz r3, 0xc28a                                        |             
                                                                     | label_6:
    0x0000c284 add sp, 0x34                                          |             
    0x0000c286 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |             
                                                                     |         }
                                                                     | label_2:
    0x0000c28a add.w r3, r6, 0x16000                                 |         r3 = r6 + 0x16000;
    0x0000c28e str r3, [sp, 8]                                       |         var_8h = r3;
                                                                     | label_3:
    0x0000c290 ldr r2, [sp, 8]                                       |         r2 = var_8h;
    0x0000c292 movs r3, 6                                            |         r3 = 6;
    0x0000c294 mov r0, r3                                            |         r0 = r3;
    0x0000c296 str.w r3, [r2, 0x184]                                 |         __asm ("str.w r3, aav.0x000000ff");
    0x0000c29a add sp, 0x34                                          |         
    0x0000c29c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     |     }
    0x0000c2a0 ldr r1, [sp, 4]                                       |     r1 = var_4h;
    0x0000c2a2 movs r2, 1                                            |     r2 = 1;
    0x0000c2a4 add.w r5, r6, 0x3000                                  |     r5 = r6 + 0x3000;
    0x0000c2a8 strh.w r2, [r1, 0x530]                                |     *((r1 + 0x530)) = r2;
    0x0000c2ac add.w r2, r0, 0x13000                                 |     r2 = r0 + 0x13000;
    0x0000c2b0 strb.w r3, [r2, 0xcd8]                                |     *((r2 + 0xcd8)) = r3;
    0x0000c2b4 str r2, [sp, 0x10]                                    |     var_10h = r2;
    0x0000c2b6 add.w r2, r0, 0x14000                                 |     r2 = r0 + 0x14000;
    0x0000c2ba strb.w r3, [r2, 0xd8]                                 |     *((r2 + 0xd8)) = r3;
    0x0000c2be strb.w r3, [r2, 0x4d8]                                |     *((r2 + 0x4d8)) = r3;
    0x0000c2c2 strb.w r3, [r2, 0x8d8]                                |     *((r2 + 0x8d8)) = r3;
    0x0000c2c6 strb.w r3, [r2, 0xcd8]                                |     *((r2 + 0xcd8)) = r3;
    0x0000c2ca strb.w r3, [r1, 0xd8]                                 |     *((r1 + 0xd8)) = r3;
    0x0000c2ce str.w r3, [r1, 0x4d8]                                 |     __asm ("str.w r3, aav.0x000000ff");
    0x0000c2d2 strh.w r3, [r1, 0x528]                                |     *((r1 + 0x528)) = r3;
    0x0000c2d6 strh.w r3, [r1, 0x526]                                |     *((r1 + 0x526)) = r3;
    0x0000c2da movw r3, 0xffff                                       |     r3 = 0xffff;
    0x0000c2de strh.w r3, [r1, 0x51c]                                |     *((r1 + 0x51c)) = r3;
    0x0000c2e2 str r2, [sp, 0x18]                                    |     var_18h = r2;
    0x0000c2e4 blx 0x61b8                                            |     r0 = snprintf_chk ()
    0x0000c2e8 cmp r0, 0xef                                          |     
                                                                     |     if (r0 == 0xef) {
    0x0000c2ea beq 0xc392                                            |         goto label_36;
                                                                     |     }
                                                                     | label_4:
    0x0000c2ec str.w r0, [r5, 0xb8]                                  |     __asm ("str.w r0, [r5, 0xb8]");
                                                                     | label_5:
    0x0000c2f0 mov r0, r6                                            |     r0 = r6;
    0x0000c2f2 blx 0x62d0                                            |     r0 = fcn_000062d0 ();
    0x0000c2f6 cmp r0, 0x20                                          |     
    0x0000c2f8 mov r4, r0                                            |     r4 = r0;
                                                                     |     if (r0 > 0x20) {
    0x0000c2fa bhi 0xc352                                            |         goto label_37;
                                                                     |     }
    0x0000c2fc movs r3, 0                                            |     r3 = 0;
    0x0000c2fe str.w r3, [r5, 0xd4]                                  |     __asm ("str.w r3, [r5, 0xd4]");
                                                                     |     do {
                                                                     | label_0:
    0x0000c302 movs r2, 0                                            |         r2 = 0;
    0x0000c304 mov r0, r6                                            |         r0 = r6;
    0x0000c306 mov r1, r2                                            |         r1 = r2;
    0x0000c308 blx 0x6514                                            |         r0 = fcn_00006514 ();
    0x0000c30c cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0000c30e bne 0xc3cc                                            |             goto label_10;
                                                                     |         }
    0x0000c310 ldr.w r3, [r5, 0xd4]                                  |         r3 = *((r5 + 0xd4));
    0x0000c314 ldr.w r7, [r5, 0xd0]                                  |         r7 = *((r5 + 0xd0));
    0x0000c318 ldr.w r2, [r5, 0xcc]                                  |         r2 = *((r5 + 0xcc));
    0x0000c31c str.w r7, [r5, 0xd4]                                  |         __asm ("str.w r7, [r5, 0xd4]");
    0x0000c320 subs r7, r7, r3                                       |         r7 -= r3;
    0x0000c322 add.w r8, r2, r3                                      |         r8 = r2 + r3;
    0x0000c326 beq 0xc302                                            |         
                                                                     |     } while (r7 == r7);
    0x0000c328 mov sb, r8                                            |     sb = r8;
    0x0000c32a b 0xc332                                              |     goto label_38;
                                                                     | label_1:
    0x0000c32c cmn.w r8, r3                                          |     
                                                                     |     if (r8 == r3) {
    0x0000c330 beq 0xc302                                            |         goto label_0;
                                                                     |     }
                                                                     | label_38:
    0x0000c332 strb r4, [sb], 1                                      |     *(sb) = r4;
                                                                     |     sb++;
    0x0000c336 mov r0, r6                                            |     r0 = r6;
    0x0000c338 blx 0x62d0                                            |     r0 = fcn_000062d0 ();
    0x0000c33c cmp r0, 0x20                                          |     
    0x0000c33e mov r4, r0                                            |     r4 = r0;
    0x0000c340 sub.w r3, r7, sb                                      |     r3 = r7 - sb;
                                                                     |     if (r0 < 0x20) {
    0x0000c344 bls 0xc32c                                            |         goto label_1;
                                                                     |     }
    0x0000c346 movs r3, 0                                            |     r3 = 0;
    0x0000c348 strb.w r3, [sb]                                       |     *(sb) = r3;
    0x0000c34c ldr.w r7, [r5, 0xcc]                                  |     r7 = *((r5 + 0xcc));
    0x0000c350 b 0xc354                                              |     goto label_39;
                                                                     | label_37:
    0x0000c352 movs r7, 0                                            |     r7 = 0;
                                                                     | label_39:
    0x0000c354 adds r2, r4, 2                                        |     r2 = r4 + 2;
                                                                     |     if (r2 == r4) {
    0x0000c356 beq 0xc3d6                                            |         goto label_40;
                                                                     |     }
    0x0000c358 ldr r2, [sp, 0x10]                                    |     r2 = var_10h;
    0x0000c35a movs r3, 0                                            |     r3 = 0;
    0x0000c35c strb.w r3, [r2, 0x8d8]                                |     *((r2 + 0x8d8)) = r3;
    0x0000c360 adds r3, r4, 1                                        |     r3 = r4 + 1;
                                                                     |     if (r3 == r4) {
    0x0000c362 beq.w 0xcafe                                          |         goto label_41;
                                                                     |     }
    0x0000c366 ldr r3, [r6, 4]                                       |     r3 = *((r6 + 4));
    0x0000c368 str.w r4, [r5, 0xb8]                                  |     __asm ("str.w r4, [r5, 0xb8]");
    0x0000c36c lsls r4, r3, 7                                        |     r4 = r3 << 7;
                                                                     |     if (r4 >= r3) {
    0x0000c36e bpl 0xc28a                                            |         goto label_2;
                                                                     |     }
    0x0000c370 add.w r3, r6, 0x16000                                 |     r3 = r6 + 0x16000;
    0x0000c374 ldr.w r4, [r3, 0x190]                                 |     r4 = *((r3 + 0x190));
    0x0000c378 str r3, [sp, 8]                                       |     var_8h = r3;
    0x0000c37a cmp r4, 0                                             |     
                                                                     |     if (r4 == 0) {
    0x0000c37c beq 0xc290                                            |         goto label_3;
                                                                     |     }
                                                                     |     if (r7 != 0) {
    0x0000c37e cbz r7, 0xc388                                        |         
    0x0000c380 ldrb r3, [r7]                                         |         r3 = *(r7);
    0x0000c382 cmp r3, 0                                             |         
                                                                     |         if (r3 != 0) {
    0x0000c384 bne.w 0xca18                                          |             goto label_42;
                                                                     |         }
                                                                     |     }
    0x0000c388 ldr.w r3, [pc, 0xa10]                                 |     
    0x0000c38c add r3, pc                                            |     r3 = 0x1912c;
    0x0000c38e str r3, [r4, 0x2c]                                    |     *((r4 + 0x2c)) = r3;
    0x0000c390 b 0xc290                                              |     goto label_3;
                                                                     | label_36:
    0x0000c392 ldrd r3, r2, [r5, 0xb0]                               |     __asm ("ldrd r3, r2, [r5, 0xb0]");
    0x0000c396 cmp r3, r2                                            |     
                                                                     |     if (r3 >= r2) {
    0x0000c398 bhs.w 0xc9b6                                          |         goto label_43;
                                                                     |     }
                                                                     | label_23:
    0x0000c39c adds r2, r3, 1                                        |     r2 = r3 + 1;
    0x0000c39e movw r1, 0x30d8                                       |     r1 = 0x30d8;
    0x0000c3a2 add r3, r6                                            |     r3 += r6;
    0x0000c3a4 str.w r2, [r5, 0xb0]                                  |     __asm ("str.w r2, [r5, 0xb0]");
    0x0000c3a8 ldrb r0, [r3, r1]                                     |     r0 = *((r3 + r1));
    0x0000c3aa cmp r0, 0xbb                                          |     
                                                                     |     if (r0 != 0xbb) {
    0x0000c3ac bne 0xc2ec                                            |         goto label_4;
                                                                     |     }
    0x0000c3ae ldr.w r3, [r5, 0xb4]                                  |     r3 = *((r5 + 0xb4));
    0x0000c3b2 cmp r2, r3                                            |     
                                                                     |     if (r2 >= r3) {
    0x0000c3b4 bhs.w 0xca50                                          |         goto label_44;
                                                                     |     }
                                                                     | label_27:
    0x0000c3b8 adds r3, r2, 1                                        |     r3 = r2 + 1;
    0x0000c3ba add r2, r6                                            |     r2 += r6;
    0x0000c3bc str.w r3, [r5, 0xb0]                                  |     __asm ("str.w r3, [r5, 0xb0]");
    0x0000c3c0 movw r3, 0x30d8                                       |     r3 = 0x30d8;
    0x0000c3c4 ldrb r0, [r2, r3]                                     |     r0 = *((r2 + r3));
    0x0000c3c6 cmp r0, 0xbf                                          |     
                                                                     |     if (r0 != 0xbf) {
    0x0000c3c8 bne 0xc2ec                                            |         goto label_4;
                                                                     |     }
    0x0000c3ca b 0xc2f0                                              |     goto label_5;
                                                                     | label_10:
    0x0000c3cc add.w r6, r6, 0x16000                                 |     r6 += 0x16000;
    0x0000c3d0 ldr.w r0, [r6, 0x184]                                 |     r0 = *((r6 + 0x184));
    0x0000c3d4 b 0xc284                                              |     goto label_6;
                                                                     | label_40:
    0x0000c3d6 add.w r3, r6, 0x13800                                 |     r3 = r6 + 0x13800;
    0x0000c3da ldr.w r2, [r5, 0xb0]                                  |     r2 = *((r5 + 0xb0));
    0x0000c3de adds r3, 0xd8                                         |     r3 += 0xd8;
    0x0000c3e0 movw r8, 0x30d8                                       |     r8 = 0x30d8;
    0x0000c3e4 str r3, [sp, 0x1c]                                    |     var_1ch = r3;
    0x0000c3e6 b 0xc3f8                                              |     
                                                                     |     while (r1 > r2) {
                                                                     | label_7:
    0x0000c3e8 adds r2, r3, 1                                        |         r2 = r3 + 1;
    0x0000c3ea add r3, r6                                            |         r3 += r6;
    0x0000c3ec str.w r2, [r5, 0xb0]                                  |         __asm ("str.w r2, [r5, 0xb0]");
    0x0000c3f0 ldrb.w r4, [r3, r8]                                   |         r4 = *((r3 + r8));
    0x0000c3f4 cmp r4, 0x20                                          |         
                                                                     |         if (r4 > 0x20) {
    0x0000c3f6 bhi 0xc41a                                            |             goto label_45;
                                                                     |         }
    0x0000c3f8 ldr.w r1, [r5, 0xb4]                                  |         r1 = *((r5 + 0xb4));
    0x0000c3fc mov r3, r2                                            |         r3 = r2;
    0x0000c3fe cmp r1, r2                                            |         
    0x0000c400 bhi 0xc3e8                                            |         
                                                                     |     }
    0x0000c402 mov r0, r6                                            |     r0 = r6;
    0x0000c404 blx 0x5ebc                                            |     r0 = fcn_00005ebc ();
                                                                     |     if (r0 == 0) {
    0x0000c408 cbnz r0, 0xc410                                       |         
    0x0000c40a ldr.w r3, [r5, 0xb0]                                  |         r3 = *((r5 + 0xb0));
    0x0000c40e b 0xc3e8                                              |         goto label_7;
                                                                     |     }
    0x0000c410 mov.w r4, -1                                          |     r4 = -1;
                                                                     |     do {
    0x0000c414 ldr.w r8, [sp, 0x1c]                                  |         r8 = var_1ch;
    0x0000c418 b 0xc4b4                                              |         goto label_46;
                                                                     | label_45:
    0x0000c41a cmp r4, 0x3e                                          |         
    0x0000c41c it ne                                                 |         
                                                                     |         if (r4 != 0x3e) {
    0x0000c41e cmpne r4, 0x2f                                        |             __asm ("cmpne r4, 0x2f");
                                                                     |         }
    0x0000c420 beq 0xc414                                            |         
                                                                     |     } while (r4 == 0x3e);
    0x0000c422 ldr.w r8, [sp, 0x1c]                                  |     r8 = var_1ch;
    0x0000c426 mov.w sb, 0x400                                       |     sb = 0x400;
    0x0000c42a movw sl, 0x30d8                                       |     sl = 0x30d8;
                                                                     |     do {
    0x0000c42e add.w sb, sb, -1                                      |         sb += -1;
    0x0000c432 mov r3, r8                                            |         r3 = r8;
    0x0000c434 cmp.w sb, 0                                           |         
    0x0000c438 itt gt                                                |         
                                                                     |         if (sb <= 0) {
    0x0000c43a strbgt r4, [r3], 1                                    |             *(r3) = r4;
                                                                     |             r3++;
                                                                     |         }
                                                                     |         if (sb > 0) {
    0x0000c43e mov r8, r3                                            |             r8 = r3;
                                                                     |         }
    0x0000c440 ldrd r2, r3, [r5, 0xb0]                               |         __asm ("ldrd r2, r3, [r5, 0xb0]");
    0x0000c444 cmp r2, r3                                            |         
                                                                     |         if (r2 >= r3) {
    0x0000c446 bhs 0xc4a2                                            |             goto label_47;
                                                                     |         }
                                                                     | label_9:
    0x0000c448 adds r3, r2, 1                                        |         r3 = r2 + 1;
    0x0000c44a add r2, r6                                            |         r2 += r6;
    0x0000c44c str.w r3, [r5, 0xb0]                                  |         __asm ("str.w r3, [r5, 0xb0]");
    0x0000c450 ldrb.w r4, [r2, sl]                                   |         r4 = *((r2 + sl));
    0x0000c454 cmp r4, 0x3e                                          |         
    0x0000c456 it ne                                                 |         
                                                                     |         if (r4 != 0x3e) {
    0x0000c458 cmpne r4, 0x2f                                        |             __asm ("cmpne r4, 0x2f");
                                                                     |         }
    0x0000c45a ite ne                                                |         
                                                                     |         if (r4 == 0x3e) {
    0x0000c45c movne r2, 1                                           |             r2 = 1;
                                                                     |         }
                                                                     |         if (r4 != 0x3e) {
    0x0000c45e moveq r2, 0                                           |             r2 = 0;
                                                                     |         }
    0x0000c460 cmp r4, 0x20                                          |         
    0x0000c462 ite le                                                |         
                                                                     |         if (r4 > 0x20) {
    0x0000c464 movle r2, 0                                           |             r2 = 0;
                                                                     |         }
                                                                     |         if (r4 <= 0x20) {
    0x0000c466 andgt r2, r2, 1                                       |             r2 &= 1;
                                                                     |         }
    0x0000c46a cmp r2, 0                                             |         
    0x0000c46c bne 0xc42e                                            |         
                                                                     |     } while (r2 != 0);
    0x0000c46e cmp r4, 0x20                                          |     
    0x0000c470 it le                                                 |     
                                                                     |     if (r4 <= 0x20) {
    0x0000c472 movwle sb, 0x30d8                                     |         __asm ("movwle sb, aav.0x000000ff");
                                                                     |     }
                                                                     |     if (r4 <= 0x20) {
    0x0000c476 ble 0xc48a                                            |         goto label_48;
                                                                     |     }
    0x0000c478 b 0xc4b4                                              |     goto label_46;
                                                                     |     do {
                                                                     | label_8:
    0x0000c47a adds r3, r2, 1                                        |         r3 = r2 + 1;
    0x0000c47c add r2, r6                                            |         r2 += r6;
    0x0000c47e str.w r3, [r5, 0xb0]                                  |         __asm ("str.w r3, [r5, 0xb0]");
    0x0000c480 adds r0, 0xb0                                         |         r0 += 0xb0;
    0x0000c482 ldrb.w r4, [r2, sb]                                   |         r4 = *((r2 + sb));
    0x0000c486 cmp r4, 0x20                                          |         
                                                                     |         if (r4 > 0x20) {
    0x0000c488 bhi 0xc4b4                                            |             goto label_46;
                                                                     |         }
                                                                     | label_48:
    0x0000c48a ldr.w r1, [r5, 0xb4]                                  |         r1 = *((r5 + 0xb4));
    0x0000c48e mov r2, r3                                            |         r2 = r3;
    0x0000c490 cmp r1, r3                                            |         
    0x0000c492 bhi 0xc47a                                            |         
                                                                     |     } while (r1 > r3);
    0x0000c494 mov r0, r6                                            |     r0 = r6;
    0x0000c496 blx 0x5ebc                                            |     r0 = fcn_00005ebc ();
                                                                     |     if (r0 == 0) {
    0x0000c49a cbnz r0, 0xc4b0                                       |         
    0x0000c49c ldr.w r2, [r5, 0xb0]                                  |         r2 = *((r5 + 0xb0));
    0x0000c4a0 b 0xc47a                                              |         goto label_8;
                                                                     | label_47:
    0x0000c4a2 mov r0, r6                                            |         r0 = r6;
    0x0000c4a4 blx 0x5ebc                                            |         r0 = fcn_00005ebc ();
                                                                     |         if (r0 != 0) {
    0x0000c4a8 cbnz r0, 0xc4b0                                       |             goto label_49;
                                                                     |         }
    0x0000c4aa ldr.w r2, [r5, 0xb0]                                  |         r2 = *((r5 + 0xb0));
    0x0000c4ae b 0xc448                                              |         goto label_9;
                                                                     |     }
                                                                     | label_49:
    0x0000c4b0 mov.w r4, -1                                          |     r4 = -1;
                                                                     | label_46:
    0x0000c4b4 mov.w sb, 0                                           |     sb = 0;
    0x0000c4b8 strb.w sb, [r8]                                       |     *(r8) = sb;
    0x0000c4bc ldr r3, [r6, 4]                                       |     r3 = *((r6 + 4));
    0x0000c4be ands r3, r3, 0x1000000                                |     r3 &= 0x1000000;
                                                                     |     if (r3 == r3) {
    0x0000c4c2 beq 0xc53c                                            |         goto label_50;
                                                                     |     }
    0x0000c4c4 movs r1, 0x34                                         |     r1 = 0x34;
    0x0000c4c6 mov r0, r6                                            |     r0 = r6;
    0x0000c4c8 blx 0x6088                                            |     r0 = fcn_00006088 ();
    0x0000c4cc mov r8, r0                                            |     r8 = r0;
    0x0000c4ce cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000c4d0 beq.w 0xc3cc                                          |         goto label_10;
                                                                     |     }
    0x0000c4d4 add.w r3, r6, 0x16000                                 |     r3 = r6 + 0x16000;
    0x0000c4d8 ldr r1, [sp, 0x1c]                                    |     r1 = var_1ch;
    0x0000c4da str.w sb, [r0]                                        |     __asm ("str.w sb, [r0]");
    0x0000c4de str.w sb, [r0, 0x10]                                  |     __asm ("str.w sb, [r0, 0x10]");
    0x0000c4e2 mov r0, r6                                            |     r0 = r6;
    0x0000c4e4 str r3, [sp, 8]                                       |     var_8h = r3;
    0x0000c4e6 blx 0x5c8c                                            |     fcn_00005c8c ();
    0x0000c4ea mov r1, r7                                            |     r1 = r7;
    0x0000c4ec ldr r7, [sp, 8]                                       |     r7 = var_8h;
    0x0000c4ee str.w r0, [r8, 0x14]                                  |     __asm ("str.w r0, [r8, 0x14]");
    0x0000c4f2 mov r0, r6                                            |     r0 = r6;
    0x0000c4f4 ldr.w r3, [r7, 0x190]                                 |     r3 = *((r7 + 0x190));
    0x0000c4f8 str.w sb, [r8, 0xc]                                   |     __asm ("str.w sb, [r8, 0xc]");
    0x0000c4fc strd sb, sb, [r8, 0x18]                               |     __asm ("strd sb, sb, [r8, 0x18]");
    0x0000c500 strd r3, sb, [r8, 4]                                  |     __asm ("strd r3, sb, [r8, 4]");
    0x0000c504 strd sb, sb, [r8, 0x20]                               |     __asm ("strd sb, sb, [r8, 0x20]");
    0x0000c508 blx 0x5c8c                                            |     fcn_00005c8c ();
    0x0000c50c ldr.w r2, [r7, 0x190]                                 |     r2 = *((r7 + 0x190));
    0x0000c510 strd r0, sb, [r8, 0x28]                               |     __asm ("strd r0, sb, [r8, 0x28]");
    0x0000c514 str.w r6, [r8, 0x30]                                  |     __asm ("str.w r6, [r8, 0x30]");
                                                                     |     if (r2 == 0) {
    0x0000c518 cbz r2, 0xc52e                                        |         goto label_31;
                                                                     |     }
    0x0000c51a ldr r3, [r2, 8]                                       |     r3 = *((r2 + 8));
    0x0000c51c cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000c51e beq.w 0xcaf8                                          |         goto label_51;
                                                                     |     }
                                                                     |     do {
    0x0000c522 mov r2, r3                                            |         r2 = r3;
    0x0000c524 ldr r3, [r3]                                          |         r3 = *(r3);
    0x0000c526 cmp r3, 0                                             |         
    0x0000c528 bne 0xc522                                            |         
                                                                     |     } while (r3 != 0);
    0x0000c52a str.w r8, [r2]                                        |     __asm ("str.w r8, [r2]");
                                                                     | label_31:
    0x0000c52e ldr r3, [sp, 8]                                       |     r3 = var_8h;
    0x0000c530 str.w r8, [r3, 0x190]                                 |     __asm ("str.w r8, aav.0x000000ff");
    0x0000c534 add.w r3, r8, 0xc                                     |     r3 = r8 + 0xc;
    0x0000c538 str r3, [sp]                                          |     *(sp) = r3;
    0x0000c53a b 0xc544                                              |     goto label_52;
                                                                     | label_50:
    0x0000c53c str r3, [sp]                                          |     *(sp) = r3;
    0x0000c53e add.w r3, r6, 0x16000                                 |     r3 = r6 + 0x16000;
    0x0000c542 str r3, [sp, 8]                                       |     var_8h = r3;
                                                                     | label_52:
    0x0000c544 mov r0, r6                                            |     r0 = r6;
    0x0000c546 blx 0x679c                                            |     fcn_0000679c ();
    0x0000c54a ldr r3, [sp, 4]                                       |     r3 = var_4h;
    0x0000c54c ldr.w r3, [r3, 0x520]                                 |     r3 = *((r3 + 0x520));
                                                                     |     if (r3 == 0) {
    0x0000c550 cbz r3, 0xc55c                                        |         goto label_53;
                                                                     |     }
    0x0000c552 movs r2, 0                                            |     r2 = 0;
                                                                     |     do {
    0x0000c554 strh r2, [r3, 0x14]                                   |         *((r3 + 0x14)) = r2;
    0x0000c556 ldr r3, [r3]                                          |         r3 = *(r3);
    0x0000c558 cmp r3, 0                                             |         
    0x0000c55a bne 0xc554                                            |         
                                                                     |     } while (r3 != 0);
                                                                     | label_53:
    0x0000c55c cmp r4, 0x3e                                          |     
    0x0000c55e it ne                                                 |     
                                                                     |     if (r4 != 0x3e) {
    0x0000c560 cmpne r4, -1                                          |         __asm ("cmpne r4, -1");
                                                                     |     }
                                                                     |     if (r4 == 0x3e) {
    0x0000c564 beq.w 0xca24                                          |         goto label_54;
                                                                     |     }
    0x0000c568 cmp r4, 0x2f                                          |     
                                                                     |     if (r4 == 0x2f) {
    0x0000c56a beq.w 0xc702                                          |         goto label_55;
                                                                     |     }
    0x0000c56e ldr.w r3, [pc, 0x830]                                 |     r3 = *(0x0000cda0);
    0x0000c572 movw sl, 0x30d8                                       |     sl = 0x30d8;
    0x0000c576 add r3, pc                                            |     r3 += pc;
    0x0000c578 str r3, [sp, 0x14]                                    |     var_14h = r3;
    0x0000c57a add.w r3, r6, 0x13400                                 |     r3 = r6 + 0x13400;
    0x0000c57e add.w fp, r3, 0xd8                                    |     
    0x0000c582 str r3, [sp, 0x24]                                    |     var_24h = r3;
                                                                     | label_13:
    0x0000c584 cmp r4, 0x2f                                          |     
    0x0000c586 it ne                                                 |     
                                                                     |     if (r4 != 0x2f) {
    0x0000c588 cmpne r4, 0x20                                        |         __asm ("cmpne r4, 0x20");
                                                                     |     }
    0x0000c58a sub.w r2, r4, 0x3d                                    |     r2 = r4 - 0x3d;
    0x0000c58e ite gt                                                |     
                                                                     |     if (r4 <= 0x2f) {
    0x0000c590 movgt r3, 1                                           |         r3 = 1;
                                                                     |     }
                                                                     |     if (r4 > 0x2f) {
    0x0000c592 movle r3, 0                                           |         r3 = 0;
                                                                     |     }
    0x0000c594 cmp r2, 1                                             |     
    0x0000c596 ite ls                                                |     
                                                                     |     if (r2 > 1) {
    0x0000c598 movls r3, 0                                           |         r3 = 0;
                                                                     |     }
                                                                     |     if (r2 <= 1) {
    0x0000c59a andhi r3, r3, 1                                       |         r3 &= 1;
                                                                     |     }
    0x0000c59e cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000c5a0 beq.w 0xc9a4                                          |         goto label_56;
                                                                     |     }
    0x0000c5a4 mov sb, fp                                            |     sb = fp;
    0x0000c5a6 mov.w r7, 0x400                                       |     r7 = 0x400;
    0x0000c5aa b 0xc5d6                                              |     
                                                                     |     while (r3 <= r2) {
                                                                     | label_11:
    0x0000c5ac adds r2, r3, 1                                        |         r2 = r3 + 1;
    0x0000c5ae add r3, r6                                            |         r3 += r6;
    0x0000c5b0 str.w r2, [r5, 0xb0]                                  |         __asm ("str.w r2, [r5, 0xb0]");
    0x0000c5b4 ldrb.w r4, [r3, sl]                                   |         r4 = *((r3 + sl));
    0x0000c5b8 cmp r4, 0x2f                                          |         
    0x0000c5ba it ne                                                 |         
                                                                     |         if (r4 != 0x2f) {
    0x0000c5bc cmpne r4, 0x20                                        |             __asm ("cmpne r4, 0x20");
                                                                     |         }
    0x0000c5be sub.w r2, r4, 0x3d                                    |         r2 = r4 - 0x3d;
    0x0000c5c2 ite gt                                                |         
                                                                     |         if (r4 <= 0x2f) {
    0x0000c5c4 movgt r3, 1                                           |             r3 = 1;
                                                                     |         }
                                                                     |         if (r4 > 0x2f) {
    0x0000c5c6 movle r3, 0                                           |             r3 = 0;
                                                                     |         }
    0x0000c5c8 cmp r2, 1                                             |         
    0x0000c5ca ite ls                                                |         
                                                                     |         if (r2 > 1) {
    0x0000c5cc movls r3, 0                                           |             r3 = 0;
                                                                     |         }
                                                                     |         if (r2 <= 1) {
    0x0000c5ce andhi r3, r3, 1                                       |             r3 &= 1;
                                                                     |         }
    0x0000c5d2 mov r8, r4                                            |         r8 = r4;
                                                                     |         if (r3 == 0) {
    0x0000c5d4 cbz r3, 0xc600                                        |             goto label_57;
                                                                     |         }
    0x0000c5d6 subs r7, 1                                            |         r7--;
    0x0000c5d8 mov r3, sb                                            |         r3 = sb;
    0x0000c5da cmp r7, 0                                             |         
    0x0000c5dc itt gt                                                |         
                                                                     |         if (r7 <= 0) {
    0x0000c5de strbgt r4, [r3], 1                                    |             *(r3) = r4;
                                                                     |             r3++;
                                                                     |         }
                                                                     |         if (r7 > 0) {
    0x0000c5e2 mov sb, r3                                            |             sb = r3;
                                                                     |         }
    0x0000c5e4 ldrd r3, r2, [r5, 0xb0]                               |         __asm ("ldrd r3, r2, [r5, 0xb0]");
    0x0000c5e8 cmp r3, r2                                            |         
    0x0000c5ea blo 0xc5ac                                            |         
                                                                     |     }
    0x0000c5ec mov r0, r6                                            |     r0 = r6;
    0x0000c5ee blx 0x5ebc                                            |     r0 = fcn_00005ebc ();
                                                                     |     if (r0 == 0) {
    0x0000c5f2 cbnz r0, 0xc5fa                                       |         
    0x0000c5f4 ldr.w r3, [r5, 0xb0]                                  |         r3 = *((r5 + 0xb0));
    0x0000c5f8 b 0xc5ac                                              |         goto label_11;
                                                                     |     }
    0x0000c5fa mov.w r4, -1                                          |     r4 = -1;
    0x0000c5fe mov r8, r4                                            |     r8 = r4;
                                                                     | label_57:
    0x0000c600 ldr r3, [sp]                                          |     r3 = *(sp);
    0x0000c602 movs r7, 0                                            |     r7 = 0;
    0x0000c604 strb.w r7, [sb]                                       |     *(sb) = r7;
                                                                     |     if (r3 != 0) {
    0x0000c608 cbz r3, 0xc63e                                        |         
    0x0000c60a movs r1, 0x18                                         |         r1 = 0x18;
    0x0000c60c mov r0, r6                                            |         r0 = r6;
    0x0000c60e blx 0x6088                                            |         fcn_00006088 ();
    0x0000c612 ldr r3, [sp]                                          |         r3 = *(sp);
    0x0000c614 str r0, [r3]                                          |         *(r3) = r0;
    0x0000c616 cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x0000c618 beq.w 0xc9fa                                          |             goto label_58;
                                                                     |         }
    0x0000c61c ldr r3, [sp]                                          |         r3 = *(sp);
    0x0000c61e mov r1, fp                                            |         r1 = fp;
    0x0000c620 str r7, [r0]                                          |         *(r0) = r7;
    0x0000c622 mov r0, r6                                            |         r0 = r6;
    0x0000c624 ldr.w sb, [r3]                                        |         sb = *(r3);
    0x0000c628 str.w r7, [sb, 4]                                     |         __asm ("str.w r7, [sb, 4]");
    0x0000c62c blx 0x5c8c                                            |         fcn_00005c8c ();
    0x0000c630 ldr r3, [sp]                                          |         r3 = *(sp);
    0x0000c632 str.w r0, [sb, 8]                                     |         __asm ("str.w r0, [sb, 8]");
    0x0000c636 ldr r3, [r3]                                          |         r3 = *(r3);
    0x0000c638 strd r7, r7, [r3, 0xc]                                |         __asm ("strd r7, r7, [r3, 0xc]");
    0x0000c63c str r6, [r3, 0x14]                                    |         *((r3 + 0x14)) = r6;
                                                                     |     }
    0x0000c63e ldr r1, [sp, 0x14]                                    |     r1 = var_14h;
    0x0000c640 movs r2, 5                                            |     r2 = 5;
    0x0000c642 mov r0, fp                                            |     r0 = fp;
    0x0000c644 blx 0x66f0                                            |     r0 = fcn_000066f0 ();
    0x0000c648 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000c64a bne.w 0xc830                                          |         goto label_59;
                                                                     |     }
    0x0000c64e ldr r3, [sp, 0x10]                                    |     r3 = var_10h;
    0x0000c650 ldrb.w r3, [r3, 0x4dd]                                |     r3 = *((r3 + 0x4dd));
    0x0000c654 cmp r3, 0x3a                                          |     
                                                                     |     if (r3 == 0x3a) {
    0x0000c656 beq.w 0xc836                                          |         goto label_60;
                                                                     |     }
    0x0000c65a cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0000c65c bne.w 0xc83e                                          |         goto label_61;
                                                                     |     }
    0x0000c660 ldr.w r3, [pc, 0x740]                                 |     
    0x0000c664 add r3, pc                                            |     r3 = 0x1940c;
    0x0000c666 str r3, [sp, 0xc]                                     |     var_ch = r3;
                                                                     | label_16:
    0x0000c668 ldr r3, [sp, 4]                                       |     r3 = var_4h;
    0x0000c66a ldr.w sb, [r3, 0x520]                                 |     sb = *((r3 + 0x520));
    0x0000c66e cmp.w sb, 0                                           |     
                                                                     |     if (sb == 0) {
    0x0000c672 beq.w 0xc9c4                                          |         goto label_62;
                                                                     |     }
    0x0000c676 mov r7, sb                                            |     r7 = sb;
    0x0000c678 b 0xc684                                              |     
                                                                     |     while (r0 != 0) {
    0x0000c67a ldr r3, [r7]                                          |         r3 = *(r7);
    0x0000c67c cmp r3, 0                                             |         
                                                                     |         if (r3 == 0) {
    0x0000c67e beq.w 0xc956                                          |             goto label_63;
                                                                     |         }
    0x0000c682 mov r7, r3                                            |         r7 = r3;
    0x0000c684 add.w r0, r7, 0x16                                    |         r0 = r7 + 0x16;
    0x0000c688 mov r1, fp                                            |         r1 = fp;
    0x0000c68a blx 0x67c4                                            |         r0 = fcn_000067c4 ();
    0x0000c68e cmp r0, 0                                             |         
    0x0000c690 bne 0xc67a                                            |         
                                                                     |     }
                                                                     | label_22:
    0x0000c692 cmp.w r8, 0x20                                        |     
    0x0000c696 it ls                                                 |     
                                                                     |     if (r8 > 0x20) {
    0x0000c698 ldrls r2, [r5, 0xb0]                                  |         r2 = *((r5 + 0xb0));
                                                                     |     }
                                                                     |     if (r8 < 0x20) {
    0x0000c69c bls 0xc6b2                                            |         goto label_64;
                                                                     |     }
    0x0000c69e b 0xc842                                              |     goto label_65;
                                                                     |     do {
                                                                     | label_12:
    0x0000c6a0 adds r2, r3, 1                                        |         r2 = r3 + 1;
    0x0000c6a2 add r3, r6                                            |         r3 += r6;
    0x0000c6a4 str.w r2, [r5, 0xb0]                                  |         __asm ("str.w r2, [r5, 0xb0]");
    0x0000c6a8 ldrb.w r4, [r3, sl]                                   |         r4 = *((r3 + sl));
    0x0000c6ac cmp r4, 0x20                                          |         
                                                                     |         if (r4 > 0x20) {
    0x0000c6ae bhi.w 0xc842                                          |             goto label_65;
                                                                     |         }
                                                                     | label_64:
    0x0000c6b2 ldr.w r1, [r5, 0xb4]                                  |         r1 = *((r5 + 0xb4));
    0x0000c6b6 mov r3, r2                                            |         r3 = r2;
    0x0000c6b8 cmp r1, r2                                            |         
    0x0000c6ba bhi 0xc6a0                                            |         
                                                                     |     } while (r1 > r2);
    0x0000c6bc mov r0, r6                                            |     r0 = r6;
    0x0000c6be blx 0x5ebc                                            |     r0 = fcn_00005ebc ();
                                                                     |     if (r0 == 0) {
    0x0000c6c2 cbnz r0, 0xc6ca                                       |         
    0x0000c6c4 ldr.w r3, [r5, 0xb0]                                  |         r3 = *((r5 + 0xb0));
    0x0000c6c8 b 0xc6a0                                              |         goto label_12;
                                                                     |     }
    0x0000c6ca mov.w r4, -1                                          |     r4 = -1;
                                                                     | label_17:
    0x0000c6ce movs r3, 1                                            |     r3 = 1;
    0x0000c6d0 strh r3, [r7, 0x14]                                   |     *((r7 + 0x14)) = r3;
    0x0000c6d2 ldr r3, [sp]                                          |     r3 = *(sp);
                                                                     |     if (r3 != 0) {
    0x0000c6d4 cbz r3, 0xc6dc                                        |         
                                                                     | label_21:
    0x0000c6d6 ldr r3, [sp]                                          |         r3 = *(sp);
    0x0000c6d8 ldr r3, [r3]                                          |         r3 = *(r3);
    0x0000c6da str r3, [sp]                                          |         *(sp) = r3;
                                                                     |     }
                                                                     | label_20:
    0x0000c6dc ldr r1, [sp, 0xc]                                     |     r1 = var_ch;
                                                                     |     if (r1 != 0) {
    0x0000c6de cbz r1, 0xc6f0                                        |         
    0x0000c6e0 ldr r2, [r7, 8]                                       |         r2 = *((r7 + 8));
                                                                     |         if (r2 == 0) {
    0x0000c6e2 cbz r2, 0xc6f0                                        |             goto label_66;
                                                                     |         }
    0x0000c6e4 mov r0, r6                                            |         r0 = r6;
    0x0000c6e6 blx 0x6578                                            |         r0 = fcn_00006578 ();
    0x0000c6ea cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x0000c6ec beq.w 0xc9fa                                          |             goto label_58;
                                                                     |         }
                                                                     |     }
                                                                     | label_66:
    0x0000c6f0 cmp.w r4, -1                                          |     
    0x0000c6f4 it ne                                                 |     
                                                                     |     if (r4 != -1) {
    0x0000c6f6 cmpne r4, 0x3e                                        |         __asm ("cmpne r4, 0x3e");
                                                                     |     }
                                                                     |     if (r4 == -1) {
    0x0000c6f8 beq.w 0xca24                                          |         goto label_54;
                                                                     |     }
    0x0000c6fc cmp r4, 0x2f                                          |     
                                                                     |     if (r4 != 0x2f) {
    0x0000c6fe bne.w 0xc584                                          |         goto label_13;
                                                                     |     }
                                                                     | label_55:
    0x0000c702 ldr r3, [sp]                                          |     r3 = *(sp);
    0x0000c704 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000c706 beq.w 0xca84                                          |         goto label_67;
                                                                     |     }
    0x0000c70a ldr r7, [sp, 8]                                       |     r7 = var_8h;
    0x0000c70c mov r0, r6                                            |     r0 = r6;
    0x0000c70e ldr r1, [sp, 0x1c]                                    |     r1 = var_1ch;
    0x0000c710 ldr.w r4, [r7, 0x190]                                 |     r4 = *((r7 + 0x190));
    0x0000c714 blx 0x63bc                                            |     fcn_000063bc ();
    0x0000c718 ldr.w r3, [r7, 0x190]                                 |     r3 = *((r7 + 0x190));
    0x0000c71c str r0, [r4, 0x10]                                    |     *((r4 + 0x10)) = r0;
    0x0000c71e movs r4, 0x2f                                         |     r4 = 0x2f;
    0x0000c720 ldr r7, [r3, 0xc]                                     |     r7 = *((r3 + 0xc));
    0x0000c722 add.w r8, r3, 0xc                                     |     r8 = r3 + 0xc;
                                                                     |     if (r7 == 0) {
    0x0000c726 cbz r7, 0xc748                                        |         goto label_68;
                                                                     |     }
                                                                     | label_25:
    0x0000c728 mov r3, r8                                            |     r3 = r8;
    0x0000c72a mov r8, r4                                            |     r8 = r4;
    0x0000c72c mov r4, r3                                            |     r4 = r3;
                                                                     |     do {
    0x0000c72e ldr r1, [r7, 8]                                       |         r1 = *((r7 + 8));
    0x0000c730 mov r0, r6                                            |         r0 = r6;
    0x0000c732 blx 0x63bc                                            |         fcn_000063bc ();
    0x0000c736 ldr r4, [r4]                                          |         r4 = *(r4);
    0x0000c738 str r0, [r7, 4]                                       |         *((r7 + 4)) = r0;
    0x0000c73a ldr r7, [r4]                                          |         r7 = *(r4);
    0x0000c73c cmp r7, 0                                             |         
    0x0000c73e bne 0xc72e                                            |         
                                                                     |     } while (r7 != 0);
    0x0000c740 mov r4, r8                                            |     r4 = r8;
                                                                     | label_24:
    0x0000c742 adds r0, r4, 1                                        |     r0 = r4 + 1;
                                                                     |     if (r0 == r4) {
    0x0000c744 beq.w 0xcb04                                          |         goto label_69;
                                                                     |     }
                                                                     | label_68:
    0x0000c748 cmp r4, 0x2f                                          |     
    0x0000c74a ite ne                                                |     
                                                                     |     if (r4 == 0x2f) {
    0x0000c74c movne r3, 1                                           |         r3 = 1;
                                                                     |     }
                                                                     |     if (r4 != 0x2f) {
    0x0000c74e moveq r3, 0                                           |         r3 = 0;
                                                                     |     }
    0x0000c750 strh.w r3, [r5, 0xbe]                                 |     *((r5 + 0xbe)) = r3;
                                                                     |     if (r4 == 0x2f) {
    0x0000c754 beq.w 0xca8a                                          |         goto label_70;
                                                                     |     }
                                                                     | label_28:
    0x0000c758 ldr r3, [r6, 4]                                       |     r3 = *((r6 + 4));
    0x0000c75a lsls r1, r3, 7                                        |     r1 = r3 << 7;
                                                                     |     if (r1 < r3) {
    0x0000c75c bpl 0xc772                                            |         
    0x0000c75e ldrsh.w r3, [r5, 0xbe]                                |         r3 = *((r5 + 0xbe));
                                                                     |         if (r3 != 0) {
    0x0000c762 cbnz r3, 0xc772                                       |             goto label_71;
                                                                     |         }
    0x0000c764 ldr r2, [sp, 8]                                       |         r2 = var_8h;
    0x0000c766 ldr.w r3, [r2, 0x190]                                 |         r3 = *((r2 + 0x190));
    0x0000c76a ldr r3, [r3, 4]                                       |         r3 = *((r3 + 4));
                                                                     |         if (r3 == 0) {
    0x0000c76c cbz r3, 0xc772                                        |             goto label_71;
                                                                     |         }
    0x0000c76e str.w r3, [r2, 0x190]                                 |         __asm ("str.w r3, aav.0x000000ff");
                                                                     |     }
                                                                     | label_71:
    0x0000c772 ldr r3, [sp, 4]                                       |     r3 = var_4h;
    0x0000c774 ldr.w r4, [r3, 0x520]                                 |     r4 = *((r3 + 0x520));
    0x0000c778 cmp r4, 0                                             |     
                                                                     |     if (r4 == 0) {
    0x0000c77a beq.w 0xca08                                          |         goto label_72;
                                                                     |     }
    0x0000c77e ldr.w sl, [pc, 0x628]                                 |     
    0x0000c782 mov r8, r3                                            |     r8 = r3;
    0x0000c784 ldr.w sb, [pc, 0x624]                                 |     sb = *(0x0000cdac);
    0x0000c788 ldr.w fp, [pc, 0x624]                                 |     
    0x0000c78c add sl, pc                                            |     sl = 0x1953a;
    0x0000c78e str.w sl, [sp, 4]                                     |     __asm ("str.w sl, [var_4h]");
    0x0000c792 add sb, pc                                            |     sb += pc;
    0x0000c794 ldr.w sl, [sp, 0x18]                                  |     sl = var_18h;
    0x0000c798 add fp, pc                                            |     fp = 0x1954c;
    0x0000c79a b 0xc7de                                              |     goto label_73;
                                                                     | label_15:
    0x0000c79c ldrb r3, [r5, 1]                                      |     r3 = *((r5 + 1));
    0x0000c79e cmp r3, 0x64                                          |     
                                                                     |     if (r3 != 0x64) {
    0x0000c7a0 bne 0xc7f6                                            |         goto label_74;
                                                                     |     }
    0x0000c7a2 ldrb r3, [r5, 2]                                      |     r3 = *((r5 + 2));
                                                                     |     if (r3 != 0) {
    0x0000c7a4 cbnz r3, 0xc7f6                                       |         goto label_74;
                                                                     |     }
    0x0000c7a6 ldrsh.w r2, [r6, 2]                                   |     r2 = *((r6 + 2));
    0x0000c7aa ldr r3, [r6, 4]                                       |     r3 = *((r6 + 4));
    0x0000c7ac cmp r2, 0                                             |     
                                                                     |     if (r2 > 0) {
    0x0000c7ae ble 0xc7b4                                            |         
    0x0000c7b0 lsls r2, r3, 0xe                                      |         r2 = r3 << 0xe;
                                                                     |         if (r2 >= r3) {
    0x0000c7b2 bpl 0xc7b8                                            |             goto label_75;
                                                                     |         }
                                                                     |     }
    0x0000c7b4 lsls r3, r3, 0xd                                      |     r3 <<= 0xd;
                                                                     |     if (r3 >= r3) {
    0x0000c7b6 bpl 0xc7d6                                            |         goto label_14;
                                                                     |     }
                                                                     | label_75:
    0x0000c7b8 ldr r2, [sp, 0x10]                                    |     r2 = var_10h;
    0x0000c7ba movs r3, 0x23                                         |     r3 = 0x23;
    0x0000c7bc add.w r0, r6, 0x13c00                                 |     r0 = r6 + 0x13c00;
    0x0000c7c0 mov r1, r7                                            |     r1 = r7;
    0x0000c7c2 adds r0, 0xd9                                         |     r0 += 0xd9;
    0x0000c7c4 strb.w r3, [r2, 0xcd8]                                |     *((r2 + 0xcd8)) = r3;
    0x0000c7c8 movw r2, 0x3fe                                        |     r2 = 0x3fe;
    0x0000c7cc blx 0x5b6c                                            |     fcn_00005b6c ();
    0x0000c7d0 movs r3, 0                                            |     r3 = 0;
    0x0000c7d2 strb.w r3, [sl, 0xd7]                                 |     *((sl + 0xd7)) = r3;
                                                                     |     do {
                                                                     | label_14:
    0x0000c7d6 ldr r4, [r4]                                          |         r4 = *(r4);
    0x0000c7d8 cmp r4, 0                                             |         
                                                                     |         if (r4 == 0) {
    0x0000c7da beq.w 0xca08                                          |             goto label_72;
                                                                     |         }
                                                                     | label_73:
    0x0000c7de ldrsh.w r3, [r4, 0x14]                                |         r3 = *((r4 + 0x14));
    0x0000c7e2 cmp r3, 0                                             |         
    0x0000c7e4 beq 0xc7d6                                            |         
                                                                     |     } while (r3 == 0);
    0x0000c7e6 ldr r7, [r4, 8]                                       |     r7 = *((r4 + 8));
    0x0000c7e8 cmp r7, 0                                             |     
                                                                     |     if (r7 == 0) {
    0x0000c7ea beq 0xc7d6                                            |         goto label_14;
                                                                     |     }
    0x0000c7ec ldrb r3, [r4, 0x16]                                   |     r3 = *((r4 + 0x16));
    0x0000c7ee add.w r5, r4, 0x16                                    |     r5 = r4 + 0x16;
    0x0000c7f2 cmp r3, 0x69                                          |     
                                                                     |     if (r3 == 0x69) {
    0x0000c7f4 beq 0xc79c                                            |         goto label_15;
                                                                     |     }
                                                                     | label_74:
    0x0000c7f6 mov r1, sb                                            |     r1 = sb;
    0x0000c7f8 mov r0, r5                                            |     r0 = r5;
    0x0000c7fa blx 0x67c4                                            |     r0 = fcn_000067c4 ();
    0x0000c7fe cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000c800 bne.w 0xca60                                          |         goto label_76;
                                                                     |     }
    0x0000c804 ldrsh.w r3, [r6, 2]                                   |     r3 = *((r6 + 2));
    0x0000c808 cmp r3, 1                                             |     
                                                                     |     if (r3 == 1) {
    0x0000c80a beq 0xc81a                                            |         goto label_77;
                                                                     |     }
    0x0000c80c ldr r2, [r6, 4]                                       |     r2 = *((r6 + 4));
    0x0000c80e mov.w r3, 0x280                                       |     
    0x0000c812 movt r3, 4                                            |     r3 = 0x40280;
    0x0000c816 tst r3, r2                                            |     
                                                                     |     if ((r3 & r2) == 0) {
    0x0000c818 beq 0xc7d6                                            |         goto label_14;
                                                                     |     }
                                                                     | label_77:
    0x0000c81a mov r1, r7                                            |     r1 = r7;
    0x0000c81c movw r2, 0x3ff                                        |     r2 = 0x3ff;
    0x0000c820 add.w r0, sl, 0xd8                                    |     r0 = sl + 0xd8;
    0x0000c824 blx 0x5b6c                                            |     fcn_00005b6c ();
    0x0000c828 movs r3, 0                                            |     r3 = 0;
    0x0000c82a strb.w r3, [sl, 0x4d7]                                |     *((sl + 0x4d7)) = r3;
    0x0000c82e b 0xc7d6                                              |     goto label_14;
                                                                     | label_59:
    0x0000c830 movs r3, 0                                            |     r3 = 0;
    0x0000c832 str r3, [sp, 0xc]                                     |     var_ch = r3;
    0x0000c834 b 0xc668                                              |     goto label_16;
                                                                     | label_60:
    0x0000c836 ldr r3, [sp, 0x24]                                    |     r3 = var_24h;
    0x0000c838 adds r3, 0xde                                         |     r3 += 0xde;
    0x0000c83a str r3, [sp, 0xc]                                     |     var_ch = r3;
    0x0000c83c b 0xc668                                              |     goto label_16;
                                                                     | label_61:
    0x0000c83e str r0, [sp, 0xc]                                     |     var_ch = r0;
    0x0000c840 b 0xc668                                              |     goto label_16;
                                                                     | label_65:
    0x0000c842 cmp r4, 0x3d                                          |     
                                                                     |     if (r4 != 0x3d) {
    0x0000c844 bne.w 0xc6ce                                          |         goto label_17;
                                                                     |     }
                                                                     |     do {
    0x0000c848 mov r0, r6                                            |         r0 = r6;
    0x0000c84a blx 0x6854                                            |         r0 = fcn_00006854 ();
    0x0000c84e cmp r0, 0x20                                          |         
    0x0000c850 bls 0xc848                                            |         
                                                                     |     } while (r0 < 0x20);
    0x0000c852 adds r3, r0, 6                                        |     r3 = r0 + 6;
    0x0000c854 mov r8, r0                                            |     r8 = r0;
    0x0000c856 cmp r3, 1                                             |     
    0x0000c858 ldrd r1, r2, [r7, 8]                                  |     __asm ("ldrd r1, r2, [r7, 8]");
    0x0000c85c itt hi                                                |     
                                                                     |     if (r3 <= 1) {
    0x0000c85e strhi r8, [r5, 0xb8]                                  |         *((r5 + 0xb8)) = r8;
                                                                     |     }
                                                                     |     if (r3 > 1) {
    0x0000c862 mov.w r8, 0x20                                        |         r8 = 0x20;
                                                                     |     }
    0x0000c866 mov r3, r8                                            |     r3 = r8;
    0x0000c868 mov r0, r6                                            |     r0 = r6;
    0x0000c86a bl 0x8f88                                             |     r0 = fcn_00008f88 (r0, r1, r2, r3);
    0x0000c86e cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000c870 beq 0xc906                                            |         goto label_78;
                                                                     |     }
    0x0000c872 ldr r2, [sp, 8]                                       |     r2 = var_8h;
    0x0000c874 ldr.w r0, [r2, 0x184]                                 |     r0 = *((r2 + 0x184));
    0x0000c878 cmp r0, 0x14                                          |     
                                                                     |     if (r0 != 0x14) {
    0x0000c87a bne.w 0xc284                                          |         goto label_6;
                                                                     |     }
    0x0000c87e movs r3, 0                                            |     r3 = 0;
    0x0000c880 mov r0, r6                                            |     r0 = r6;
    0x0000c882 str.w r3, [r2, 0x184]                                 |     __asm ("str.w r3, aav.0x000000ff");
    0x0000c886 ldrd r1, r2, [r7, 8]                                  |     __asm ("ldrd r1, r2, [r7, 8]");
    0x0000c88a blx 0x683c                                            |     r0 = fcn_0000683c ();
    0x0000c88e cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000c890 bne.w 0xc9fa                                          |         goto label_58;
                                                                     |     }
    0x0000c894 ldr r0, [r7, 8]                                       |     r0 = *((r7 + 8));
                                                                     |     if (r0 != 0) {
    0x0000c896 cbz r0, 0xc89c                                        |         
    0x0000c898 blx 0x5e50                                            |         fcn_00005e50 ();
                                                                     |     }
    0x0000c89c ldr.w sb, [sp, 8]                                     |     sb = var_8h;
    0x0000c8a0 movs r4, 0                                            |     r4 = 0;
    0x0000c8a2 b 0xc8ca                                              |     goto label_79;
                                                                     | label_18:
    0x0000c8a4 ldr.w r0, [sb, 0x184]                                 |     r0 = *((sb + 0x184));
    0x0000c8a8 cmp r0, 0x14                                          |     
                                                                     |     if (r0 != 0x14) {
    0x0000c8aa bne.w 0xc284                                          |         goto label_6;
                                                                     |     }
    0x0000c8ae ldr.w r3, [r5, 0xd0]                                  |     r3 = *((r5 + 0xd0));
    0x0000c8b2 movs r2, 0                                            |     r2 = 0;
    0x0000c8b4 str.w r4, [sb, 0x184]                                 |     __asm ("str.w r4, aav.0x000000ff");
    0x0000c8b8 mov r1, r2                                            |     r1 = r2;
    0x0000c8ba mov r0, r6                                            |     r0 = r6;
    0x0000c8bc str.w r3, [r5, 0xd4]                                  |     __asm ("str.w r3, [r5, 0xd4]");
    0x0000c8c0 blx 0x6514                                            |     r0 = fcn_00006514 ();
    0x0000c8c4 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000c8c6 bne.w 0xc9fa                                          |         goto label_58;
                                                                     |     }
                                                                     | label_79:
    0x0000c8ca ldrd r2, r3, [r5, 0xd0]                               |     __asm ("ldrd r2, r3, [r5, 0xd0]");
    0x0000c8ce mov r0, r6                                            |     r0 = r6;
    0x0000c8d0 ldr.w r1, [r5, 0xcc]                                  |     r1 = *((r5 + 0xcc));
    0x0000c8d4 subs r2, r2, r3                                       |     r2 -= r3;
    0x0000c8d6 add r1, r3                                            |     r1 += r3;
    0x0000c8d8 mov r3, r8                                            |     r3 = r8;
    0x0000c8da bl 0x8f88                                             |     r0 = fcn_00008f88 (r0, r1, r2, r3);
    0x0000c8de cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000c8e0 bne 0xc8a4                                            |         goto label_18;
                                                                     |     }
    0x0000c8e2 ldr.w r3, [r5, 0xd4]                                  |     r3 = *((r5 + 0xd4));
    0x0000c8e6 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000c8e8 beq.w 0xcac0                                          |         goto label_80;
                                                                     |     }
    0x0000c8ec ldr.w r0, [r5, 0xd0]                                  |     r0 = *((r5 + 0xd0));
    0x0000c8f0 str r0, [r7, 0xc]                                     |     *((r7 + 0xc)) = r0;
                                                                     | label_30:
    0x0000c8f2 blx 0x63b0                                            |     gmtime_r ();
    0x0000c8f6 str r0, [r7, 8]                                       |     *((r7 + 8)) = r0;
    0x0000c8f8 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000c8fa beq.w 0xcba0                                          |         goto label_81;
                                                                     |     }
    0x0000c8fe ldr.w r1, [r5, 0xcc]                                  |     r1 = *((r5 + 0xcc));
    0x0000c902 blx 0x6144                                            |     fcn_00006144 ();
                                                                     | label_78:
    0x0000c906 ldr.w r2, [r5, 0xb0]                                  |     r2 = *((r5 + 0xb0));
    0x0000c90a b 0xc91c                                              |     
                                                                     |     while (r1 > r2) {
                                                                     | label_19:
    0x0000c90c adds r2, r3, 1                                        |         r2 = r3 + 1;
    0x0000c90e add r3, r6                                            |         r3 += r6;
    0x0000c910 str.w r2, [r5, 0xb0]                                  |         __asm ("str.w r2, [r5, 0xb0]");
    0x0000c914 ldrb.w r4, [r3, sl]                                   |         r4 = *((r3 + sl));
    0x0000c918 cmp r4, 0x20                                          |         
                                                                     |         if (r4 > 0x20) {
    0x0000c91a bhi 0xc938                                            |             goto label_82;
                                                                     |         }
    0x0000c91c ldr.w r1, [r5, 0xb4]                                  |         r1 = *((r5 + 0xb4));
    0x0000c920 mov r3, r2                                            |         r3 = r2;
    0x0000c922 cmp r1, r2                                            |         
    0x0000c924 bhi 0xc90c                                            |         
                                                                     |     }
    0x0000c926 mov r0, r6                                            |     r0 = r6;
    0x0000c928 blx 0x5ebc                                            |     r0 = fcn_00005ebc ();
                                                                     |     if (r0 == 0) {
    0x0000c92c cbnz r0, 0xc934                                       |         
    0x0000c92e ldr.w r3, [r5, 0xb0]                                  |         r3 = *((r5 + 0xb0));
    0x0000c932 b 0xc90c                                              |         goto label_19;
                                                                     |     }
    0x0000c934 mov.w r4, -1                                          |     r4 = -1;
                                                                     | label_82:
    0x0000c938 movs r3, 2                                            |     r3 = 2;
    0x0000c93a strh r3, [r7, 0x14]                                   |     *((r7 + 0x14)) = r3;
    0x0000c93c ldr r3, [sp]                                          |     r3 = *(sp);
    0x0000c93e cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000c940 beq.w 0xc6dc                                          |         goto label_20;
                                                                     |     }
    0x0000c944 ldr.w r8, [r3]                                        |     r8 = *(r3);
    0x0000c948 mov r0, r6                                            |     r0 = r6;
    0x0000c94a ldr r1, [r7, 8]                                       |     r1 = *((r7 + 8));
    0x0000c94c blx 0x5c8c                                            |     fcn_00005c8c ();
    0x0000c950 str.w r0, [r8, 0xc]                                   |     __asm ("str.w r0, [r8, 0xc]");
    0x0000c954 b 0xc6d6                                              |     goto label_21;
                                                                     | label_63:
    0x0000c956 mov r0, fp                                            |     r0 = fp;
    0x0000c958 str r3, [sp, 0x2c]                                    |     var_2ch = r3;
    0x0000c95a blx 0x5fec                                            |     r0 = fcn_00005fec ();
    0x0000c95e mov r2, r0                                            |     r2 = r0;
    0x0000c960 adds r0, 0x18                                         |     r0 += 0x18;
    0x0000c962 str r2, [sp, 0x28]                                    |     var_28h = r2;
    0x0000c964 blx 0x63b0                                            |     gmtime_r ();
    0x0000c968 ldrd r2, r3, [sp, 0x28]                               |     __asm ("ldrd r2, r3, [var_2ch]");
    0x0000c96c str r0, [sp, 0x20]                                    |     var_20h = r0;
    0x0000c96e cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000c970 beq.w 0xcba0                                          |         goto label_81;
                                                                     |     }
    0x0000c974 str r3, [sp, 0x28]                                    |     var_28h = r3;
    0x0000c976 adds r2, 1                                            |     r2++;
    0x0000c978 ldr r3, [sp, 0x20]                                    |     r3 = var_20h;
    0x0000c97a mov r1, fp                                            |     r1 = fp;
    0x0000c97c add.w r0, r3, 0x16                                    |     r0 = r3 + 0x16;
    0x0000c980 blx 0x6064                                            |     fcn_00006064 ();
    0x0000c984 ldr r3, [sp, 0x28]                                    |     r3 = var_28h;
    0x0000c986 movs r1, 0x3a                                         |     r1 = 0x3a;
    0x0000c988 ldr r2, [sp, 0x20]                                    |     r2 = var_20h;
    0x0000c98a mov r0, fp                                            |     r0 = fp;
    0x0000c98c strd r3, r3, [r2, 8]                                  |     __asm ("strd r3, r3, [r2, 8]");
    0x0000c990 blx 0x5b9c                                            |     fcn_00005b9c ();
    0x0000c994 ldr r3, [sp, 0x28]                                    |     r3 = var_28h;
    0x0000c996 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000c998 beq 0xca14                                            |         goto label_83;
                                                                     |     }
    0x0000c99a ldr r2, [sp, 0x20]                                    |     r2 = var_20h;
    0x0000c99c str r2, [r7]                                          |     *(r7) = r2;
    0x0000c99e mov r7, r2                                            |     r7 = r2;
    0x0000c9a0 str r3, [r2]                                          |     *(r2) = r3;
    0x0000c9a2 b 0xc692                                              |     goto label_22;
                                                                     | label_56:
    0x0000c9a4 ldr r1, [sp, 0x10]                                    |     r1 = var_10h;
    0x0000c9a6 movs r2, 5                                            |     r2 = 5;
    0x0000c9a8 mov r0, r2                                            |     r0 = r2;
    0x0000c9aa strb.w r3, [r1, 0x4d8]                                |     *((r1 + 0x4d8)) = r3;
    0x0000c9ae ldr r3, [sp, 8]                                       |     r3 = var_8h;
    0x0000c9b0 str.w r2, [r3, 0x184]                                 |     __asm ("str.w r2, aav.0x000000ff");
    0x0000c9b4 b 0xc284                                              |     goto label_6;
                                                                     | label_43:
    0x0000c9b6 mov r0, r6                                            |     r0 = r6;
    0x0000c9b8 blx 0x5ebc                                            |     r0 = fcn_00005ebc ();
                                                                     |     if (r0 != 0) {
    0x0000c9bc cbnz r0, 0xca02                                       |         goto label_26;
                                                                     |     }
    0x0000c9be ldr.w r3, [r5, 0xb0]                                  |     r3 = *((r5 + 0xb0));
    0x0000c9c2 b 0xc39c                                              |     goto label_23;
                                                                     | label_62:
    0x0000c9c4 mov r0, fp                                            |     r0 = fp;
    0x0000c9c6 blx 0x5fec                                            |     r0 = fcn_00005fec ();
    0x0000c9ca mov r2, r0                                            |     r2 = r0;
    0x0000c9cc adds r0, 0x18                                         |     r0 += 0x18;
    0x0000c9ce str r2, [sp, 0x20]                                    |     var_20h = r2;
    0x0000c9d0 blx 0x63b0                                            |     gmtime_r ();
    0x0000c9d4 ldr r2, [sp, 0x20]                                    |     r2 = var_20h;
    0x0000c9d6 mov r7, r0                                            |     r7 = r0;
    0x0000c9d8 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000c9da beq.w 0xcba0                                          |         goto label_81;
                                                                     |     }
    0x0000c9de adds r2, 1                                            |     r2++;
    0x0000c9e0 mov r1, fp                                            |     r1 = fp;
    0x0000c9e2 add.w r0, r7, 0x16                                    |     r0 = r7 + 0x16;
    0x0000c9e6 blx 0x6064                                            |     fcn_00006064 ();
    0x0000c9ea strd sb, sb, [r7, 8]                                  |     __asm ("strd sb, sb, [r7, 8]");
                                                                     |     do {
    0x0000c9ee ldr r3, [sp, 4]                                       |         r3 = var_4h;
    0x0000c9f0 str.w sb, [r7]                                        |         __asm ("str.w sb, [r7]");
    0x0000c9f4 str.w r7, [r3, 0x520]                                 |         __asm ("str.w r7, aav.0x000000ff");
    0x0000c9f8 b 0xc692                                              |         goto label_22;
                                                                     | label_58:
    0x0000c9fa ldr r3, [sp, 8]                                       |         r3 = var_8h;
    0x0000c9fc ldr.w r0, [r3, 0x184]                                 |         r0 = *((r3 + 0x184));
    0x0000ca00 b 0xc284                                              |         goto label_6;
                                                                     | label_26:
    0x0000ca02 mov.w r0, -1                                          |         r0 = -1;
    0x0000ca06 b 0xc2ec                                              |         goto label_4;
                                                                     | label_72:
    0x0000ca08 ldr r2, [sp, 8]                                       |         r2 = var_8h;
    0x0000ca0a movs r3, 0                                            |         r3 = 0;
    0x0000ca0c mov r0, r3                                            |         r0 = r3;
    0x0000ca0e str.w r3, [r2, 0x184]                                 |         __asm ("str.w r3, aav.0x000000ff");
    0x0000ca12 b 0xc284                                              |         goto label_6;
                                                                     | label_83:
    0x0000ca14 ldr r7, [sp, 0x20]                                    |         r7 = var_20h;
    0x0000ca16 b 0xc9ee                                              |         
                                                                     |     } while (1);
                                                                     | label_42:
    0x0000ca18 mov r1, r7                                            |     r1 = r7;
    0x0000ca1a mov r0, r6                                            |     r0 = r6;
    0x0000ca1c blx 0x5c8c                                            |     fcn_00005c8c ();
    0x0000ca20 str r0, [r4, 0x2c]                                    |     *((r4 + 0x2c)) = r0;
    0x0000ca22 b 0xc290                                              |     goto label_3;
                                                                     | label_54:
    0x0000ca24 ldr r3, [sp]                                          |     r3 = *(sp);
    0x0000ca26 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000ca28 beq.w 0xc742                                          |         goto label_24;
                                                                     |     }
    0x0000ca2c ldr r3, [sp, 8]                                       |     r3 = var_8h;
    0x0000ca2e mov r0, r6                                            |     r0 = r6;
    0x0000ca30 ldr r1, [sp, 0x1c]                                    |     r1 = var_1ch;
    0x0000ca32 ldr.w r7, [r3, 0x190]                                 |     r7 = *((r3 + 0x190));
    0x0000ca36 blx 0x63bc                                            |     fcn_000063bc ();
    0x0000ca3a ldr r3, [sp, 8]                                       |     r3 = var_8h;
    0x0000ca3c str r0, [r7, 0x10]                                    |     *((r7 + 0x10)) = r0;
    0x0000ca3e ldr.w r3, [r3, 0x190]                                 |     r3 = *((r3 + 0x190));
    0x0000ca42 ldr r7, [r3, 0xc]                                     |     r7 = *((r3 + 0xc));
    0x0000ca44 add.w r8, r3, 0xc                                     |     r8 = r3 + 0xc;
    0x0000ca48 cmp r7, 0                                             |     
                                                                     |     if (r7 != 0) {
    0x0000ca4a bne.w 0xc728                                          |         goto label_25;
                                                                     |     }
    0x0000ca4e b 0xc742                                              |     goto label_24;
                                                                     | label_44:
    0x0000ca50 mov r0, r6                                            |     r0 = r6;
    0x0000ca52 blx 0x5ebc                                            |     r0 = fcn_00005ebc ();
    0x0000ca56 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000ca58 bne 0xca02                                            |         goto label_26;
                                                                     |     }
    0x0000ca5a ldr.w r2, [r5, 0xb0]                                  |     r2 = *((r5 + 0xb0));
    0x0000ca5e b 0xc3b8                                              |     goto label_27;
                                                                     | label_76:
    0x0000ca60 mov r2, fp                                            |     r2 = fp;
    0x0000ca62 mov r1, r5                                            |     r1 = r5;
    0x0000ca64 mov r0, r6                                            |     r0 = r6;
    0x0000ca66 blx 0x6004                                            |     r0 = fcn_00006004 ();
    0x0000ca6a mov r7, r0                                            |     r7 = r0;
                                                                     |     if (r0 != 0) {
    0x0000ca6c cbnz r0, 0xcad6                                       |         goto label_84;
                                                                     |     }
    0x0000ca6e add.w r0, r6, 0x14400                                 |     r0 = r6 + 0x14400;
    0x0000ca72 ldr r1, [r4, 8]                                       |     r1 = *((r4 + 8));
    0x0000ca74 adds r0, 0xd8                                         |     r0 += 0xd8;
    0x0000ca76 movw r2, 0x3ff                                        |     r2 = 0x3ff;
    0x0000ca7a blx 0x5b6c                                            |     fcn_00005b6c ();
    0x0000ca7e strb.w r7, [sl, 0x8d7]                                |     *((sl + 0x8d7)) = r7;
    0x0000ca82 b 0xc7d6                                              |     goto label_14;
                                                                     | label_67:
    0x0000ca84 ldr r3, [sp]                                          |     r3 = *(sp);
    0x0000ca86 strh.w r3, [r5, 0xbe]                                 |     *((r5 + 0xbe)) = r3;
                                                                     | label_70:
    0x0000ca8a ldr.w r2, [r5, 0xb0]                                  |     r2 = *((r5 + 0xb0));
    0x0000ca8e movw r4, 0x30d8                                       |     r4 = 0x30d8;
    0x0000ca92 b 0xcaa4                                              |     goto label_85;
                                                                     | label_29:
    0x0000ca94 adds r2, r3, 1                                        |     r2 = r3 + 1;
    0x0000ca96 add r3, r6                                            |     r3 += r6;
    0x0000ca98 str.w r2, [r5, 0xb0]                                  |     __asm ("str.w r2, [r5, 0xb0]");
    0x0000ca9c ldrb r3, [r3, r4]                                     |     r3 = *((r3 + r4));
    0x0000ca9e cmp r3, 0x20                                          |     
                                                                     |     if (r3 > 0x20) {
    0x0000caa0 bhi.w 0xc758                                          |         goto label_28;
                                                                     |     }
                                                                     | label_85:
    0x0000caa4 ldr.w r1, [r5, 0xb4]                                  |     r1 = *((r5 + 0xb4));
    0x0000caa8 mov r3, r2                                            |     r3 = r2;
    0x0000caaa cmp r1, r2                                            |     
                                                                     |     if (r1 > r2) {
    0x0000caac bhi 0xca94                                            |         goto label_29;
                                                                     |     }
    0x0000caae mov r0, r6                                            |     r0 = r6;
    0x0000cab0 blx 0x5ebc                                            |     r0 = fcn_00005ebc ();
    0x0000cab4 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000cab6 bne.w 0xc758                                          |         goto label_28;
                                                                     |     }
    0x0000caba ldr.w r3, [r5, 0xb0]                                  |     r3 = *((r5 + 0xb0));
    0x0000cabe b 0xca94                                              |     goto label_29;
                                                                     | label_80:
    0x0000cac0 ldr.w r0, [r5, 0xcc]                                  |     r0 = *((r5 + 0xcc));
    0x0000cac4 blx 0x5fec                                            |     fcn_00005fec ();
    0x0000cac8 adds r0, 1                                            |     r0++;
    0x0000caca cmp r0, 0xff                                          |     
    0x0000cacc it ls                                                 |     
                                                                     |     if (r0 > 0xff) {
    0x0000cace movls r0, 0x100                                       |         r0 = 0x100;
                                                                     |     }
    0x0000cad2 str r0, [r7, 0xc]                                     |     *((r7 + 0xc)) = r0;
    0x0000cad4 b 0xc8f2                                              |     goto label_30;
                                                                     | label_84:
    0x0000cad6 ldr r2, [sp, 4]                                       |     r2 = var_4h;
    0x0000cad8 mov r1, r5                                            |     r1 = r5;
    0x0000cada mov r0, r6                                            |     r0 = r6;
    0x0000cadc blx 0x6004                                            |     r0 = fcn_00006004 ();
    0x0000cae0 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000cae2 bne 0xcb8e                                            |         goto label_86;
                                                                     |     }
                                                                     | label_32:
    0x0000cae4 ldr r0, [r4, 8]                                       |     r0 = *((r4 + 8));
    0x0000cae6 ldrb r3, [r0]                                         |     r3 = *(r0);
    0x0000cae8 cmp r3, 0x31                                          |     
                                                                     |     if (r3 != 0x31) {
    0x0000caea bne 0xcb14                                            |         goto label_87;
                                                                     |     }
    0x0000caec ldrb r3, [r0, 1]                                      |     r3 = *((r0 + 1));
    0x0000caee cbnz r3, 0xcb14                                       |     
                                                                     |     while (r0 == 0) {
    0x0000caf0 movs r3, 1                                            |         r3 = 1;
    0x0000caf2 strh.w r3, [r8, 0x528]                                |         *((r8 + 0x528)) = r3;
    0x0000caf6 b 0xc7d6                                              |         goto label_14;
                                                                     | label_51:
    0x0000caf8 str.w r8, [r2, 8]                                     |         __asm ("str.w r8, [r2, 8]");
    0x0000cafc b 0xc52e                                              |         goto label_31;
                                                                     | label_41:
    0x0000cafe add.w r3, r6, 0x16000                                 |         r3 = r6 + 0x16000;
    0x0000cb02 str r3, [sp, 8]                                       |         var_8h = r3;
                                                                     | label_69:
    0x0000cb04 ldr r2, [sp, 8]                                       |         r2 = var_8h;
    0x0000cb06 mov.w r3, -1                                          |         r3 = -1;
    0x0000cb0a mov r0, r3                                            |         r0 = r3;
    0x0000cb0c str.w r3, [r2, 0x184]                                 |         __asm ("str.w r3, aav.0x000000ff");
    0x0000cb10 b.w 0xc284                                            |         goto label_6;
                                                                     | label_87:
    0x0000cb14 ldr r1, [pc, 0x29c]                                   |         
    0x0000cb16 add r1, pc                                            |         r1 = 0x198ce;
    0x0000cb18 blx 0x67c4                                            |         r0 = fcn_000067c4 ();
    0x0000cb1c cmp r0, 0                                             |         
    0x0000cb1e beq 0xcaf0                                            |         
                                                                     |     }
                                                                     | label_33:
    0x0000cb20 ldrsh.w r7, [r6, 2]                                   |     r7 = *((r6 + 2));
    0x0000cb24 cmp r7, 1                                             |     
                                                                     |     if (r7 == 1) {
    0x0000cb26 beq 0xcbae                                            |         goto label_88;
                                                                     |     }
    0x0000cb28 cmp r7, 2                                             |     
                                                                     |     if (r7 == 2) {
    0x0000cb2a bne 0xcb64                                            |         
    0x0000cb2c ldr r1, [pc, 0x288]                                   |         
    0x0000cb2e mov r0, r5                                            |         r0 = r5;
    0x0000cb30 add r1, pc                                            |         r1 = 0x198ec;
    0x0000cb32 blx 0x67c4                                            |         r0 = fcn_000067c4 ();
                                                                     |         if (r0 != 0) {
    0x0000cb36 cbz r0, 0xcb48                                        |             
    0x0000cb38 ldr r2, [pc, 0x280]                                   |             
    0x0000cb3a mov r1, r5                                            |             r1 = r5;
    0x0000cb3c mov r0, r6                                            |             r0 = r6;
    0x0000cb3e add r2, pc                                            |             r2 = 0x198fe;
    0x0000cb40 blx 0x6004                                            |             r0 = fcn_00006004 ();
    0x0000cb44 cmp r0, 0                                             |             
                                                                     |             if (r0 != 0) {
    0x0000cb46 bne 0xcc0e                                            |                 goto label_89;
                                                                     |             }
                                                                     |         }
    0x0000cb48 movs r3, 0x23                                         |         r3 = 0x23;
    0x0000cb4a movw r2, 0x3fe                                        |         r2 = 0x3fe;
    0x0000cb4e strb.w r3, [sl, 0xd8]                                 |         *((sl + 0xd8)) = r3;
    0x0000cb52 add.w r0, sl, 0xd9                                    |         r0 = sl + 0xd9;
    0x0000cb56 ldr r1, [r4, 8]                                       |         r1 = *((r4 + 8));
    0x0000cb58 blx 0x5b6c                                            |         fcn_00005b6c ();
    0x0000cb5c movs r3, 0                                            |         r3 = 0;
    0x0000cb5e strb.w r3, [sl, 0x4d7]                                |         *((sl + 0x4d7)) = r3;
    0x0000cb62 b 0xc7d6                                              |         goto label_14;
                                                                     |     }
    0x0000cb64 ldr r2, [pc, 0x258]                                   |     
    0x0000cb66 mov r1, r5                                            |     r1 = r5;
    0x0000cb68 mov r0, r6                                            |     r0 = r6;
    0x0000cb6a add r2, pc                                            |     r2 = 0x1992e;
    0x0000cb6c blx 0x6004                                            |     r0 = fcn_00006004 ();
    0x0000cb70 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000cb72 bne.w 0xc7d6                                          |         goto label_14;
                                                                     |     }
    0x0000cb76 ldr r1, [pc, 0x24c]                                   |     
    0x0000cb78 ldr r0, [r4, 8]                                       |     r0 = *((r4 + 8));
    0x0000cb7a add r1, pc                                            |     r1 = 0x19944;
    0x0000cb7c blx 0x67c4                                            |     r0 = fcn_000067c4 ();
    0x0000cb80 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000cb82 bne.w 0xc7d6                                          |         goto label_14;
                                                                     |     }
                                                                     | label_34:
    0x0000cb86 movs r3, 1                                            |     r3 = 1;
    0x0000cb88 strh.w r3, [r8, 0x526]                                |     *((r8 + 0x526)) = r3;
    0x0000cb8c b 0xc7d6                                              |     goto label_14;
                                                                     | label_86:
    0x0000cb8e ldr r2, [pc, 0x238]                                   |     
    0x0000cb90 mov r1, r5                                            |     r1 = r5;
    0x0000cb92 mov r0, r6                                            |     r0 = r6;
    0x0000cb94 add r2, pc                                            |     r2 = 0x19962;
    0x0000cb96 blx 0x6004                                            |     r0 = fcn_00006004 ();
    0x0000cb9a cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000cb9c beq 0xcae4                                            |         goto label_32;
                                                                     |     }
    0x0000cb9e b 0xcb20                                              |     goto label_33;
                                                                     | label_81:
    0x0000cba0 ldr r2, [sp, 8]                                       |     r2 = var_8h;
    0x0000cba2 movs r3, 0x14                                         |     r3 = 0x14;
    0x0000cba4 mov r0, r3                                            |     r0 = r3;
    0x0000cba6 str.w r3, [r2, 0x184]                                 |     __asm ("str.w r3, aav.0x000000ff");
    0x0000cbaa b.w 0xc284                                            |     goto label_6;
                                                                     | label_88:
    0x0000cbae ldr r2, [pc, 0x21c]                                   |     
    0x0000cbb0 mov r1, r5                                            |     r1 = r5;
    0x0000cbb2 mov r0, r6                                            |     r0 = r6;
    0x0000cbb4 add r2, pc                                            |     r2 = 0x19986;
    0x0000cbb6 blx 0x6004                                            |     fcn_00006004 ();
    0x0000cbba str r0, [sp]                                          |     *(sp) = r0;
                                                                     |     if (r0 != 0) {
    0x0000cbbc cbnz r0, 0xcbf0                                       |         goto label_90;
                                                                     |     }
    0x0000cbbe ldr r7, [r4, 8]                                       |     r7 = *((r4 + 8));
    0x0000cbc0 movs r1, 0x5b                                         |     r1 = 0x5b;
    0x0000cbc2 mov r0, r7                                            |     r0 = r7;
    0x0000cbc4 blx 0x5ce0                                            |     r0 = fcn_00005ce0 ();
    0x0000cbc8 mov r5, r0                                            |     r5 = r0;
    0x0000cbca add.w r0, r6, 0x14800                                 |     r0 = r6 + 0x14800;
    0x0000cbce adds r0, 0xd8                                         |     r0 += 0xd8;
    0x0000cbd0 mov r1, r7                                            |     r1 = r7;
                                                                     |     if (r5 != 0) {
    0x0000cbd2 cbz r5, 0xcbdc                                        |         
    0x0000cbd4 subs r2, r5, r7                                       |         r2 = r5 - r7;
    0x0000cbd6 cmp.w r2, 0x400                                       |         
                                                                     |         if (r2 <= 0x400) {
    0x0000cbda blo 0xcc2e                                            |             goto label_91;
                                                                     |         }
                                                                     |     }
    0x0000cbdc movw r2, 0x3ff                                        |     r2 = 0x3ff;
    0x0000cbe0 blx 0x5b6c                                            |     fcn_00005b6c ();
                                                                     |     do {
    0x0000cbe4 movs r3, 0                                            |         r3 = 0;
    0x0000cbe6 strb.w r3, [r8, 0xd7]                                 |         *((r8 + 0xd7)) = r3;
    0x0000cbea strb.w r3, [sl, 0xcd7]                                |         *((sl + 0xcd7)) = r3;
    0x0000cbee b 0xc7d6                                              |         goto label_14;
                                                                     | label_90:
    0x0000cbf0 ldr r2, [pc, 0x1dc]                                   |         
    0x0000cbf2 mov r1, r5                                            |         r1 = r5;
    0x0000cbf4 mov r0, r6                                            |         r0 = r6;
    0x0000cbf6 add r2, pc                                            |         r2 = 0x199ca;
    0x0000cbf8 blx 0x6004                                            |         r0 = fcn_00006004 ();
                                                                     |         if (r0 != 0) {
    0x0000cbfc cbnz r0, 0xcc58                                       |             goto label_92;
                                                                     |         }
    0x0000cbfe ldr r1, [r4, 8]                                       |         r1 = *((r4 + 8));
    0x0000cc00 mov.w r2, 0x400                                       |         r2 = 0x400;
    0x0000cc04 add.w r0, r8, 0xd8                                    |         r0 = r8 + 0xd8;
    0x0000cc08 blx 0x5b6c                                            |         fcn_00005b6c ();
    0x0000cc0c b 0xc7d6                                              |         goto label_14;
                                                                     | label_89:
    0x0000cc0e ldr r2, [pc, 0x1c4]                                   |         
    0x0000cc10 mov r1, r5                                            |         r1 = r5;
    0x0000cc12 mov r0, r6                                            |         r0 = r6;
    0x0000cc14 add r2, pc                                            |         r2 = 0x199ee;
    0x0000cc16 blx 0x6004                                            |         r0 = fcn_00006004 ();
                                                                     |         if (r0 != 0) {
    0x0000cc1a cbnz r0, 0xcc78                                       |             goto label_93;
                                                                     |         }
    0x0000cc1c add.w r0, r6, 0x14800                                 |         r0 = r6 + 0x14800;
    0x0000cc20 ldr r1, [r4, 8]                                       |         r1 = *((r4 + 8));
    0x0000cc22 movw r2, 0x3ff                                        |         r2 = 0x3ff;
    0x0000cc26 adds r0, 0xd8                                         |         r0 += 0xd8;
    0x0000cc28 blx 0x5b6c                                            |         fcn_00005b6c ();
    0x0000cc2c b 0xc7d6                                              |         goto label_14;
                                                                     | label_91:
    0x0000cc2e mov.w r3, 0x400                                       |         r3 = 0x400;
    0x0000cc32 blx 0x5d1c                                            |         fcn_00005d1c ();
    0x0000cc36 ldr r3, [r4, 8]                                       |         r3 = *((r4 + 8));
    0x0000cc38 add.w r0, r6, 0x14c00                                 |         r0 = r6 + 0x14c00;
    0x0000cc3c ldr r2, [sp]                                          |         r2 = *(sp);
    0x0000cc3e mov r1, r5                                            |         r1 = r5;
    0x0000cc40 adds r0, 0xd8                                         |         r0 += 0xd8;
    0x0000cc42 subs r3, r5, r3                                       |         r3 = r5 - r3;
    0x0000cc44 add r3, r6                                            |         r3 += r6;
    0x0000cc46 add.w r3, r3, 0x14800                                 |         r3 += 0x14800;
    0x0000cc4a strb.w r2, [r3, 0xd8]                                 |         *((r3 + 0xd8)) = r2;
    0x0000cc4e movw r2, 0x3ff                                        |         r2 = 0x3ff;
    0x0000cc52 blx 0x5b6c                                            |         fcn_00005b6c ();
    0x0000cc56 b 0xcbe4                                              |         
                                                                     |     } while (1);
                                                                     | label_92:
    0x0000cc58 ldr r2, [pc, 0x17c]                                   |     
    0x0000cc5a mov r1, r5                                            |     r1 = r5;
    0x0000cc5c mov r0, r6                                            |     r0 = r6;
    0x0000cc5e add r2, pc                                            |     r2 = 0x19a3a;
    0x0000cc60 blx 0x6004                                            |     r0 = fcn_00006004 ();
                                                                     |     if (r0 == 0) {
    0x0000cc64 cbnz r0, 0xcc9a                                       |         
    0x0000cc66 add.w r1, r6, 0x15400                                 |         r1 = r6 + 0x15400;
    0x0000cc6a ldr r0, [r4, 8]                                       |         r0 = *((r4 + 8));
    0x0000cc6c adds r1, 0xdc                                         |         r1 += 0xdc;
    0x0000cc6e blx 0x5d10                                            |         fcn_00005d10 ();
    0x0000cc72 strh.w r0, [r8, 0x4da]                                |         *((r8 + 0x4da)) = r0;
    0x0000cc76 b 0xc7d6                                              |         goto label_14;
                                                                     | label_93:
    0x0000cc78 ldr r2, [pc, 0x160]                                   |         
    0x0000cc7a mov r1, r5                                            |         r1 = r5;
    0x0000cc7c mov r0, r6                                            |         r0 = r6;
    0x0000cc7e add r2, pc                                            |         r2 = 0x19a5e;
    0x0000cc80 blx 0x6004                                            |         r0 = fcn_00006004 ();
    0x0000cc84 cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0000cc86 bne 0xcd38                                            |             goto label_94;
                                                                     |         }
    0x0000cc88 add.w r0, r6, 0x14c00                                 |         r0 = r6 + 0x14c00;
    0x0000cc8c ldr r1, [r4, 8]                                       |         r1 = *((r4 + 8));
    0x0000cc8e movw r2, 0x3ff                                        |         r2 = 0x3ff;
    0x0000cc92 adds r0, 0xd8                                         |         r0 += 0xd8;
    0x0000cc94 blx 0x5b6c                                            |         fcn_00005b6c ();
    0x0000cc98 b 0xc7d6                                              |         goto label_14;
                                                                     |     }
    0x0000cc9a ldr r2, [pc, 0x144]                                   |     
    0x0000cc9c mov r1, r5                                            |     r1 = r5;
    0x0000cc9e mov r0, r6                                            |     r0 = r6;
    0x0000cca0 add r2, pc                                            |     r2 = 0x19a86;
    0x0000cca2 blx 0x6004                                            |     r0 = fcn_00006004 ();
                                                                     |     if (r0 == 0) {
    0x0000cca6 cbnz r0, 0xcccc                                       |         
    0x0000cca8 ldr r5, [r4, 8]                                       |         r5 = *((r4 + 8));
    0x0000ccaa ldr r1, [pc, 0x138]                                   |         
    0x0000ccac mov r0, r5                                            |         r0 = r5;
    0x0000ccae add r1, pc                                            |         r1 = 0x19a98;
    0x0000ccb0 blx 0x67c4                                            |         r0 = fcn_000067c4 ();
                                                                     |         if (r0 != 0) {
    0x0000ccb4 cbz r0, 0xccc6                                        |             
    0x0000ccb6 ldr r1, [pc, 0x130]                                   |             
    0x0000ccb8 mov r0, r5                                            |             r0 = r5;
    0x0000ccba add r1, pc                                            |             r1 = 0x19aa8;
    0x0000ccbc blx 0x67c4                                            |             r0 = fcn_000067c4 ();
    0x0000ccc0 clz r7, r0                                            |             r7 &= r0;
    0x0000ccc4 lsrs r7, r7, 5                                        |             r7 >>= 5;
                                                                     |         }
    0x0000ccc6 strh.w r7, [r8, 0x51c]                                |         *((r8 + 0x51c)) = r7;
    0x0000ccca b 0xc7d6                                              |         goto label_14;
                                                                     |     }
    0x0000cccc ldr r2, [pc, 0x11c]                                   |     
    0x0000ccce mov r1, r5                                            |     r1 = r5;
    0x0000ccd0 mov r0, r6                                            |     r0 = r6;
    0x0000ccd2 add r2, pc                                            |     r2 = 0x19ac2;
    0x0000ccd4 blx 0x6004                                            |     r0 = fcn_00006004 ();
                                                                     |     if (r0 != 0) {
    0x0000ccd8 cbnz r0, 0xccfc                                       |         goto label_95;
                                                                     |     }
    0x0000ccda ldr r7, [r4, 8]                                       |     r7 = *((r4 + 8));
    0x0000ccdc ldr r1, [pc, 0x110]                                   |     
    0x0000ccde mov r0, r7                                            |     r0 = r7;
    0x0000cce0 add r1, pc                                            |     r1 = 0x19ad4;
    0x0000cce2 blx 0x67c4                                            |     r0 = fcn_000067c4 ();
    0x0000cce6 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000cce8 beq.w 0xcb86                                          |         goto label_34;
                                                                     |     }
    0x0000ccec ldr r1, [pc, 0x104]                                   |     
    0x0000ccee mov r0, r7                                            |     r0 = r7;
    0x0000ccf0 add r1, pc                                            |     r1 = 0x19ae8;
    0x0000ccf2 blx 0x67c4                                            |     r0 = fcn_000067c4 ();
    0x0000ccf6 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000ccf8 beq.w 0xcb86                                          |         goto label_34;
                                                                     |     }
                                                                     | label_95:
    0x0000ccfc ldr r2, [pc, 0xf8]                                    |     
    0x0000ccfe mov r1, r5                                            |     r1 = r5;
    0x0000cd00 mov r0, r6                                            |     r0 = r6;
    0x0000cd02 add r2, pc                                            |     r2 = 0x19afe;
    0x0000cd04 blx 0x6004                                            |     r0 = fcn_00006004 ();
    0x0000cd08 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000cd0a bne.w 0xc7d6                                          |         goto label_14;
                                                                     |     }
    0x0000cd0e ldr r0, [r6, 0x28]                                    |     r0 = *((r6 + 0x28));
    0x0000cd10 ldr r5, [r4, 8]                                       |     r5 = *((r4 + 8));
                                                                     |     if (r0 == 0) {
    0x0000cd12 cbz r0, 0xcd20                                        |         goto label_96;
                                                                     |     }
    0x0000cd14 mov r1, r5                                            |     r1 = r5;
    0x0000cd16 blx 0x67c4                                            |     r0 = fcn_000067c4 ();
    0x0000cd1a cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000cd1c beq.w 0xc7d6                                          |         goto label_14;
                                                                     |     }
                                                                     | label_96:
    0x0000cd20 ldr r1, [pc, 0xd8]                                    |     
    0x0000cd22 mov r0, r5                                            |     r0 = r5;
    0x0000cd24 add r1, pc                                            |     r1 = 0x19b24;
    0x0000cd26 blx 0x67c4                                            |     r0 = fcn_000067c4 ();
    0x0000cd2a cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000cd2c beq.w 0xc7d6                                          |         goto label_14;
                                                                     |     }
                                                                     | label_35:
    0x0000cd30 movs r3, 1                                            |     r3 = 1;
    0x0000cd32 strh.w r3, [r8, 0x4d8]                                |     *((r8 + 0x4d8)) = r3;
    0x0000cd36 b 0xc7d6                                              |     goto label_14;
                                                                     | label_94:
    0x0000cd38 ldr r2, [pc, 0xc4]                                    |     
    0x0000cd3a mov r1, r5                                            |     r1 = r5;
    0x0000cd3c mov r0, r6                                            |     r0 = r6;
    0x0000cd3e add r2, pc                                            |     r2 = 0x19b42;
    0x0000cd40 blx 0x6004                                            |     r0 = fcn_00006004 ();
                                                                     |     if (r0 != 0) {
    0x0000cd44 cbnz r0, 0xcd68                                       |         goto label_97;
                                                                     |     }
    0x0000cd46 ldr r7, [r4, 8]                                       |     r7 = *((r4 + 8));
    0x0000cd48 ldr r1, [pc, 0xb8]                                    |     
    0x0000cd4a mov r0, r7                                            |     r0 = r7;
    0x0000cd4c add r1, pc                                            |     r1 = 0x19b54;
    0x0000cd4e blx 0x67c4                                            |     r0 = fcn_000067c4 ();
    0x0000cd52 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000cd54 beq.w 0xcb86                                          |         goto label_34;
                                                                     |     }
    0x0000cd58 ldr r1, [pc, 0xac]                                    |     
    0x0000cd5a mov r0, r7                                            |     r0 = r7;
    0x0000cd5c add r1, pc                                            |     r1 = 0x19b68;
    0x0000cd5e blx 0x67c4                                            |     r0 = fcn_000067c4 ();
    0x0000cd62 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000cd64 beq.w 0xcb86                                          |         goto label_34;
                                                                     |     }
                                                                     | label_97:
    0x0000cd68 ldr r2, [pc, 0xa0]                                    |     
    0x0000cd6a mov r1, r5                                            |     r1 = r5;
    0x0000cd6c mov r0, r6                                            |     r0 = r6;
    0x0000cd6e add r2, pc                                            |     r2 = 0x19b7e;
    0x0000cd70 blx 0x6004                                            |     r0 = fcn_00006004 ();
    0x0000cd74 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000cd76 bne.w 0xc7d6                                          |         goto label_14;
                                                                     |     }
    0x0000cd7a ldr r0, [r6, 0x28]                                    |     r0 = *((r6 + 0x28));
    0x0000cd7c ldr r5, [r4, 8]                                       |     r5 = *((r4 + 8));
                                                                     |     if (r0 == 0) {
    0x0000cd7e cbz r0, 0xcd8c                                        |         goto label_98;
                                                                     |     }
    0x0000cd80 mov r1, r5                                            |     r1 = r5;
    0x0000cd82 blx 0x67c4                                            |     r0 = fcn_000067c4 ();
    0x0000cd86 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000cd88 beq.w 0xc7d6                                          |         goto label_14;
                                                                     |     }
                                                                     | label_98:
    0x0000cd8c ldr r1, [pc, 0x80]                                    |     
    0x0000cd8e mov r0, r5                                            |     r0 = r5;
    0x0000cd90 add r1, pc                                            |     r1 = 0x19ba4;
    0x0000cd92 blx 0x67c4                                            |     r0 = fcn_000067c4 ();
    0x0000cd96 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000cd98 bne 0xcd30                                            |         goto label_35;
                                                                     |     }
    0x0000cd9a b 0xc7d6                                              |     goto label_14;
                                                                     | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0xf68c */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) sym.soap_string_in ()                                | void soap_string_in (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_24h;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_2ch;
                                                                 |     int16_t var_30h;
                                                                 |     int16_t var_34h;
                                                                 |     size_t nbyte;
                                                                 |     int16_t var_3ch;
                                                                 |     int16_t var_3dh;
                                                                 |     int16_t var_3eh;
                                                                 |     int16_t var_1h;
                                                                 |     int16_t var_44h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x0000f68c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x0000f690 sub sp, 0x4c                                      |     
    0x0000f692 str r2, [sp, 0x2c]                                |     var_2ch = r2;
    0x0000f694 mov r8, r0                                        |     r8 = r0;
    0x0000f696 add.w r5, r8, 0x15000                             |     r5 = r8 + 0x15000;
    0x0000f69a movs r0, 0                                        |     r0 = 0;
    0x0000f69c ldr.w r2, [pc, 0xb84]                             |     r2 = *(0x00010224);
    0x0000f6a0 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x0000f6a2 ldr.w r3, [pc, 0xb84]                             |     
    0x0000f6a6 add r2, pc                                        |     r2 += pc;
    0x0000f6a8 ldrsh.w r7, [r5, 0x530]                           |     r7 = *((r5 + 0x530));
    0x0000f6ac str r1, [sp, 0x1c]                                |     var_1ch = r1;
    0x0000f6ae ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x0000f6b0 ldr r3, [r3]                                      |     r3 = *(0x1022a);
    0x0000f6b2 str r3, [sp, 0x44]                                |     var_44h = r3;
    0x0000f6b4 mov.w r3, 0                                       |     r3 = 0;
    0x0000f6b8 str r0, [sp, 0x38]                                |     nbyte = r0;
                                                                 |     if (r7 != 0) {
    0x0000f6ba cbz r7, 0xf6ca                                    |         
    0x0000f6bc add.w r3, r8, 0x13000                             |         r3 = r8 + 0x13000;
    0x0000f6c0 ldrb.w r7, [r3, 0x8d8]                            |         r7 = *((r3 + 0x8d8));
    0x0000f6c4 cmp r7, 0                                         |         
                                                                 |         if (r7 != 0) {
    0x0000f6c6 bne.w 0xfdfa                                      |             goto label_36;
                                                                 |         }
                                                                 |     }
    0x0000f6ca add.w r3, r8, 0x3000                              |     r3 = r8 + 0x3000;
    0x0000f6ce str r7, [sp, 0x18]                                |     var_18h = r7;
    0x0000f6d0 str r3, [sp, 0x10]                                |     var_10h = r3;
    0x0000f6d2 str r7, [sp, 0x20]                                |     var_20h = r7;
                                                                 | label_25:
    0x0000f6d4 ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x0000f6d6 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x0000f6d8 bne.w 0xfab0                                      |         goto label_37;
                                                                 |     }
    0x0000f6dc ldr.w r1, [pc, 0xb4c]                             |     r1 = *(0x0001022c);
    0x0000f6e0 mov r6, r3                                        |     r6 = r3;
    0x0000f6e2 ldr r2, [sp, 0x10]                                |     r2 = var_10h;
    0x0000f6e4 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x0000f6e6 add r1, pc                                        |     r1 += pc;
    0x0000f6e8 str r1, [sp, 0x30]                                |     var_30h = r1;
    0x0000f6ea mov sb, r2                                        |     sb = r2;
    0x0000f6ec ldr.w r1, [pc, 0xb40]                             |     
    0x0000f6f0 str.w r3, [r2, 0xd4]                              |     __asm ("str.w r3, [r2, 0xd4]");
    0x0000f6f4 add r1, pc                                        |     r1 = 0x1f928;
    0x0000f6f6 str r1, [sp, 0x34]                                |     var_34h = r1;
                                                                 |     do {
                                                                 | label_1:
    0x0000f6f8 movs r2, 0                                        |         r2 = 0;
    0x0000f6fa mov r0, r8                                        |         r0 = r8;
    0x0000f6fc mov r1, r2                                        |         r1 = r2;
    0x0000f6fe blx 0x6514                                        |         r0 = fcn_00006514 ();
    0x0000f702 mov sl, r0                                        |         sl = r0;
    0x0000f704 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x0000f706 bne.w 0xff42                                      |             goto label_38;
                                                                 |         }
    0x0000f70a ldr.w r2, [sb, 0xd4]                              |         r2 = *((sb + 0xd4));
    0x0000f70e ldr.w r1, [sb, 0xd0]                              |         r1 = *((sb + 0xd0));
    0x0000f712 ldr.w r4, [sb, 0xcc]                              |         r4 = *((sb + 0xcc));
    0x0000f716 subs.w fp, r1, r2                                 |         
    0x0000f71a str.w r1, [sb, 0xd4]                              |         __asm ("str.w r1, [sb, 0xd4]");
    0x0000f71e add r4, r2                                        |         r4 += r2;
    0x0000f720 beq 0xf6f8                                        |         
                                                                 |     } while (fp == r1);
    0x0000f722 mov r3, r8                                        |     r3 = r8;
    0x0000f724 mov r8, r7                                        |     r8 = r7;
    0x0000f726 mov r7, r3                                        |     r7 = r3;
    0x0000f728 b 0xf742                                          |     
                                                                 |     while (r8 > 0) {
    0x0000f72a ldr r3, [sp, 0x38]                                |         r3 = nbyte;
    0x0000f72c add.w r8, r8, -1                                  |         r8 += -1;
    0x0000f730 adds r2, r3, 1                                    |         r2 = r3 + 1;
    0x0000f732 str r2, [sp, 0x38]                                |         nbyte = r2;
    0x0000f734 ldrb r3, [r3]                                     |         r3 = *(r3);
    0x0000f736 strb r3, [r4], 1                                  |         *(r4) = r3;
                                                                 |         r4++;
                                                                 | label_3:
    0x0000f73a add.w sl, sl, 1                                   |         sl++;
    0x0000f73e cmp fp, sl                                        |         
                                                                 |         if (fp == sl) {
    0x0000f740 beq 0xf818                                        |             goto label_39;
                                                                 |         }
                                                                 | label_0:
    0x0000f742 cmp.w r8, 0                                       |         
    0x0000f746 bgt 0xf72a                                        |         
                                                                 |     }
    0x0000f748 mov r0, r7                                        |     r0 = r7;
    0x0000f74a blx 0x61b8                                        |     r0 = snprintf_chk ()
    0x0000f74e adds r1, r0, 1                                    |     r1 = r0 + 1;
    0x0000f750 mov r5, r0                                        |     r5 = r0;
                                                                 |     if (r1 == r0) {
    0x0000f752 beq.w 0xfdf2                                      |         goto label_31;
                                                                 |     }
    0x0000f756 cmp r6, 1                                         |     
    0x0000f758 it ne                                             |     
                                                                 |     if (r6 != 1) {
    0x0000f75a cmpne r0, 0x7f                                    |         __asm ("cmpne r0, 0x7f");
                                                                 |     }
                                                                 |     if (r6 <= 1) {
    0x0000f75c ble 0xf7a4                                        |         goto label_2;
                                                                 |     }
    0x0000f75e ldr r3, [r7, 4]                                   |     r3 = *((r7 + 4));
    0x0000f760 lsls r2, r3, 0x1a                                 |     r2 = r3 << 0x1a;
                                                                 |     if (r2 >= r3) {
    0x0000f762 bpl.w 0xf888                                      |         goto label_5;
                                                                 |     }
    0x0000f766 subs r6, 1                                        |     r6--;
    0x0000f768 cmp r6, 7                                         |     
                                                                 |     if (r6 > 7) {
    0x0000f76a bhi.w 0xfa38                                      |         goto label_30;
                                                                 |     }
                                                                 |     /* switch table (9 cases) at 0xf772 */
    0x0000f76e tbh [pc, r6, lsl 1]                               |     __asm ("tbh [pc, r6, lsl 1]");
    0x0000f782 cmp r5, 0x5d                                      |     
                                                                 |     if (r5 == 0x5d) {
    0x0000f784 beq 0xf820                                        |         goto label_40;
                                                                 |     }
                                                                 | label_12:
    0x0000f786 add.w sl, sl, 1                                   |     sl++;
    0x0000f78a strb r5, [r4], 1                                  |     *(r4) = r5;
                                                                 |     r4++;
    0x0000f78e cmp fp, sl                                        |     
                                                                 |     if (fp == sl) {
    0x0000f790 beq.w 0xf96e                                      |         goto label_41;
                                                                 |     }
                                                                 | label_10:
    0x0000f794 mov r0, r7                                        |     r0 = r7;
    0x0000f796 movs r6, 1                                        |     r6 = 1;
    0x0000f798 blx 0x61b8                                        |     r0 = snprintf_chk ()
    0x0000f79c adds r1, r0, 1                                    |     r1 = r0 + 1;
    0x0000f79e mov r5, r0                                        |     r5 = r0;
                                                                 |     if (r1 == r0) {
    0x0000f7a0 beq.w 0xfdf2                                      |         goto label_31;
                                                                 |     }
                                                                 |     do {
                                                                 | label_2:
    0x0000f7a4 subs r6, 1                                        |         r6--;
    0x0000f7a6 cmp r6, 7                                         |         
                                                                 |         if (r6 > 7) {
    0x0000f7a8 bhi.w 0x10008                                     |             goto label_42;
                                                                 |         }
    0x0000f7ac adr r3, 8                                         |         r3 = 8;
    0x0000f7ae ldr.w r6, [r3, r6, lsl 2]                         |         offset_0 = r6 << 2;
                                                                 |         r6 = *((r3 + offset_0));
    0x0000f7b2 add r3, r6                                        |         r3 += r6;
                                                                 |         /* switch table (8 cases) at 0xf7b8 */
    0x0000f7b4 bx r3                                             |         return uint32_t (*r3)() ();
                                                                 | label_8:
    0x0000f7d8 add.w sl, sl, 1                                   |         sl++;
    0x0000f7dc strb r5, [r4], 1                                  |         *(r4) = r5;
                                                                 |         r4++;
    0x0000f7e0 cmp fp, sl                                        |         
                                                                 |         if (fp == sl) {
    0x0000f7e2 beq.w 0xffc8                                      |             goto label_43;
                                                                 |         }
    0x0000f7e6 mov r0, r7                                        |         r0 = r7;
    0x0000f7e8 blx 0x61b8                                        |         r0 = snprintf_chk ()
    0x0000f7ec adds r2, r0, 1                                    |         r2 = r0 + 1;
    0x0000f7ee mov r5, r0                                        |         r5 = r0;
                                                                 |         if (r2 == r0) {
    0x0000f7f0 beq.w 0xfdf2                                      |             goto label_31;
                                                                 |         }
    0x0000f7f4 cmp r0, 0x7f                                      |         
    0x0000f7f6 mov.w r6, 7                                       |         r6 = 7;
    0x0000f7fa ble 0xf7a4                                        |         
                                                                 |     } while (r0 <= 0x7f);
    0x0000f7fc ldr r3, [r7, 4]                                   |     r3 = *((r7 + 4));
    0x0000f7fe lsls r3, r3, 0x1a                                 |     r3 <<= 0x1a;
    0x0000f800 str r0, [r0]                                      |     *(r0) = r0;
    0x0000f802 movs r1, r0                                       |     r1 = r0;
    0x0000f804 lsrs r1, r0, 8                                    |     r1 = r0 >> 8;
    0x0000f806 strb r5, [r4], 1                                  |     *(r4) = r5;
                                                                 |     r4++;
    0x0000f80a subs r5, 0x3e                                     |     r5 -= 0x3e;
    0x0000f80c it ne                                             |     
                                                                 |     if (r5 == 0x3e) {
    0x0000f80e movne r5, 1                                       |         r5 = 1;
                                                                 |     }
    0x0000f810 cmp fp, sl                                        |     
    0x0000f812 lsl.w r6, r5, 1                                   |     r6 = r5 << 1;
                                                                 |     if (fp != sl) {
    0x0000f816 bne 0xf742                                        |         goto label_0;
                                                                 |     }
                                                                 | label_39:
    0x0000f818 mov r3, r7                                        |     r3 = r7;
    0x0000f81a mov r7, r8                                        |     r7 = r8;
    0x0000f81c mov r8, r3                                        |     r8 = r3;
    0x0000f81e b 0xf6f8                                          |     goto label_1;
                                                                 | label_40:
    0x0000f820 add.w sl, sl, 1                                   |     sl++;
    0x0000f824 strb r5, [r4], 1                                  |     *(r4) = r5;
                                                                 |     r4++;
    0x0000f828 cmp fp, sl                                        |     
                                                                 |     if (fp == sl) {
    0x0000f82a beq.w 0xffec                                      |         goto label_44;
                                                                 |     }
    0x0000f82e mov r0, r7                                        |     r0 = r7;
    0x0000f830 blx 0x61b8                                        |     r0 = snprintf_chk ()
    0x0000f834 adds r2, r0, 1                                    |     r2 = r0 + 1;
    0x0000f836 mov r5, r0                                        |     r5 = r0;
                                                                 |     if (r2 == r0) {
    0x0000f838 beq.w 0xfdf2                                      |         goto label_31;
                                                                 |     }
    0x0000f83c cmp r0, 0x7f                                      |     
    0x0000f83e mov.w r6, 5                                       |     r6 = 5;
                                                                 |     if (r0 <= 0x7f) {
    0x0000f842 ble 0xf7a4                                        |         goto label_2;
                                                                 |     }
    0x0000f844 ldr r3, [r7, 4]                                   |     r3 = *((r7 + 4));
    0x0000f846 lsls r3, r3, 0x1a                                 |     r3 <<= 0x1a;
                                                                 |     if (r3 >= r3) {
    0x0000f848 bpl 0xf888                                        |         goto label_5;
                                                                 |     }
    0x0000f84a subs.w r6, r5, 0x3e                               |     r6 = r5 - 0x3e;
    0x0000f84e strb r5, [r4], 1                                  |     *(r4) = r5;
                                                                 |     r4++;
    0x0000f852 it ne                                             |     
                                                                 |     if (r6 == r5) {
    0x0000f854 movne r6, 1                                       |         r6 = 1;
                                                                 |     }
    0x0000f856 b 0xf73a                                          |     goto label_3;
                                                                 | label_4:
    0x0000f858 cmp r5, 0x2d                                      |     
    0x0000f85a add.w sl, sl, 1                                   |     sl++;
    0x0000f85e strb r5, [r4], 1                                  |     *(r4) = r5;
                                                                 |     r4++;
                                                                 |     if (r5 == 0x2d) {
    0x0000f862 beq.w 0xf978                                      |         goto label_45;
                                                                 |     }
                                                                 | label_9:
    0x0000f866 cmp fp, sl                                        |     
                                                                 |     if (fp == sl) {
    0x0000f868 beq.w 0xff9a                                      |         goto label_46;
                                                                 |     }
    0x0000f86c mov r0, r7                                        |     r0 = r7;
    0x0000f86e blx 0x61b8                                        |     r0 = snprintf_chk ()
    0x0000f872 mov r5, r0                                        |     r5 = r0;
    0x0000f874 adds r0, r5, 1                                    |     r0 = r5 + 1;
                                                                 |     if (r0 == r5) {
    0x0000f876 beq.w 0xfdf2                                      |         goto label_31;
                                                                 |     }
    0x0000f87a cmp r5, 0x7f                                      |     
    0x0000f87c mov.w r6, 2                                       |     r6 = 2;
                                                                 |     if (r5 <= 0x7f) {
    0x0000f880 ble 0xf7a4                                        |         goto label_2;
                                                                 |     }
    0x0000f882 ldr r3, [r7, 4]                                   |     r3 = *((r7 + 4));
    0x0000f884 lsls r1, r3, 0x1a                                 |     r1 = r3 << 0x1a;
                                                                 |     if (r1 < r3) {
    0x0000f886 bmi 0xf858                                        |         goto label_4;
                                                                 |     }
                                                                 | label_5:
    0x0000f888 str.w r5, [sb, 0xb8]                              |     __asm ("str.w r5, [sb, 0xb8]");
    0x0000f88c mov r0, r7                                        |     r0 = r7;
    0x0000f88e blx 0x6854                                        |     fcn_00006854 ();
    0x0000f892 ldr r3, [r7, 4]                                   |     r3 = *((r7 + 4));
    0x0000f894 mov r5, r0                                        |     r5 = r0;
    0x0000f896 lsls r3, r3, 0xa                                  |     r3 <<= 0xa;
                                                                 |     if (r3 >= r3) {
    0x0000f898 bpl 0xf7a4                                        |         goto label_2;
                                                                 |     }
    0x0000f89a mov.w r0, 0xf800                                  |     r0 = 0xf800;
    0x0000f89e bic r3, r5, 0x80000000                            |     r3 = BIT_MASK (r5, 0x80000000);
    0x0000f8a2 movt r0, 0x7fff                                   |     r0 = (r0 & 0xFFFF) | 0x7fff0000;
    0x0000f8a6 sbfx r2, r5, 6, 8                                 |     __asm ("sbfx r2, r5, 6, 8");
    0x0000f8aa ands r0, r5                                       |     r0 &= r5;
    0x0000f8ac cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000f8ae bne.w 0xfa7a                                      |         goto label_47;
                                                                 |     }
    0x0000f8b2 and r2, r2, 0x1f                                  |     r2 &= 0x1f;
    0x0000f8b6 add.w r0, sp, 0x3d                                |     r0 += var_3dh;
    0x0000f8ba orn r2, r2, 0x3f                                  |     r2 |= 0x3f;
                                                                 |     r2 = ~r2;
    0x0000f8be strb.w r2, [sp, 0x3c]                             |     var_3ch = r2;
    0x0000f8c2 mov r2, r0                                        |     r2 = r0;
                                                                 | label_13:
    0x0000f8c4 and r3, r3, 0x3f                                  |     r3 &= 0x3f;
    0x0000f8c8 adds r5, r2, 1                                    |     r5 = r2 + 1;
    0x0000f8ca orn r3, r3, 0x7f                                  |     r3 |= 0x7f;
                                                                 |     r3 = ~r3;
    0x0000f8cc lsls r7, r7, 0xd                                  |     r7 <<= 0xd;
    0x0000f8ce str r5, [sp, 0x38]                                |     nbyte = r5;
    0x0000f8d0 strb r3, [r2]                                     |     *(r2) = r3;
    0x0000f8d2 ldrb.w r2, [sp, 0x3c]                             |     r2 = var_3ch;
    0x0000f8d6 ldr r3, [sp, 0x38]                                |     r3 = nbyte;
    0x0000f8d8 str r0, [sp, 0x38]                                |     nbyte = r0;
    0x0000f8da strb r2, [r4], 1                                  |     *(r4) = r2;
                                                                 |     r4++;
    0x0000f8de add r2, sp, 0x3c                                  |     r2 += var_3ch;
    0x0000f8e0 sub.w r8, r3, r2                                  |     r8 = r3 - r2;
    0x0000f8e4 add.w r8, r8, -1                                  |     r8 += -1;
    0x0000f8e8 b 0xf73a                                          |     goto label_3;
    0x0000f8ea cmp r5, 0x3e                                      |     
                                                                 |     if (r5 == 0x3e) {
    0x0000f8ec beq 0xf9c8                                        |         goto label_48;
                                                                 |     }
                                                                 | label_7:
    0x0000f8ee add.w sl, sl, 1                                   |     sl++;
    0x0000f8f2 strb r5, [r4], 1                                  |     *(r4) = r5;
                                                                 |     r4++;
                                                                 | label_6:
    0x0000f8f6 cmp fp, sl                                        |     
                                                                 |     if (fp == sl) {
    0x0000f8f8 beq.w 0xff8e                                      |         goto label_49;
                                                                 |     }
    0x0000f8fc mov r0, r7                                        |     r0 = r7;
    0x0000f8fe blx 0x61b8                                        |     r0 = snprintf_chk ()
    0x0000f902 adds r6, r0, 1                                    |     r6 = r0 + 1;
    0x0000f904 mov r5, r0                                        |     r5 = r0;
                                                                 |     if (r6 == r0) {
    0x0000f906 beq.w 0xfdf2                                      |         goto label_31;
                                                                 |     }
    0x0000f90a cmp r0, 0x7f                                      |     
    0x0000f90c mov.w r6, 3                                       |     r6 = 3;
                                                                 |     if (r0 <= 0x7f) {
    0x0000f910 ble.w 0xf7a4                                      |         goto label_2;
                                                                 |     }
    0x0000f914 ldr r3, [r7, 4]                                   |     r3 = *((r7 + 4));
    0x0000f916 lsls r0, r3, 0x1a                                 |     r0 = r3 << 0x1a;
                                                                 |     if (r0 >= r3) {
    0x0000f918 bpl 0xf888                                        |         goto label_5;
                                                                 |     }
    0x0000f91a cmp r5, 0x3f                                      |     
    0x0000f91c add.w sl, sl, 1                                   |     sl++;
    0x0000f920 strb r5, [r4], 1                                  |     *(r4) = r5;
                                                                 |     r4++;
                                                                 |     if (r5 != 0x3f) {
    0x0000f924 bne 0xf8f6                                        |         goto label_6;
                                                                 |     }
    0x0000f926 cmp fp, sl                                        |     
                                                                 |     if (fp == sl) {
    0x0000f928 beq.w 0xffe0                                      |         goto label_50;
                                                                 |     }
    0x0000f92c mov r0, r7                                        |     r0 = r7;
    0x0000f92e blx 0x61b8                                        |     r0 = snprintf_chk ()
    0x0000f932 adds r6, r0, 1                                    |     r6 = r0 + 1;
    0x0000f934 mov r5, r0                                        |     r5 = r0;
                                                                 |     if (r6 == r0) {
    0x0000f936 beq.w 0xfdf2                                      |         goto label_31;
                                                                 |     }
    0x0000f93a cmp r0, 0x7f                                      |     
    0x0000f93c mov.w r6, 8                                       |     r6 = 8;
                                                                 |     if (r0 <= 0x7f) {
    0x0000f940 ble.w 0xf7a4                                      |         goto label_2;
                                                                 |     }
    0x0000f944 ldr r3, [r7, 4]                                   |     r3 = *((r7 + 4));
    0x0000f946 lsls r0, r3, 0x1a                                 |     r0 = r3 << 0x1a;
                                                                 |     if (r0 >= r3) {
    0x0000f948 bpl 0xf888                                        |         goto label_5;
                                                                 |     }
    0x0000f94a b 0xf8ee                                          |     goto label_7;
    0x0000f94c cmp r5, 0x2d                                      |     
                                                                 |     if (r5 == 0x2d) {
    0x0000f94e beq.w 0xf7d8                                      |         goto label_8;
                                                                 |     }
                                                                 | label_11:
    0x0000f952 add.w sl, sl, 1                                   |     sl++;
    0x0000f956 strb r5, [r4], 1                                  |     *(r4) = r5;
                                                                 |     r4++;
    0x0000f95a b 0xf866                                          |     goto label_9;
    0x0000f95c cmp r5, 0x5d                                      |     
    0x0000f95e add.w sl, sl, 1                                   |     sl++;
    0x0000f962 strb r5, [r4], 1                                  |     *(r4) = r5;
                                                                 |     r4++;
                                                                 |     if (r5 == 0x5d) {
    0x0000f966 beq 0xf9a0                                        |         goto label_51;
                                                                 |     }
    0x0000f968 cmp sl, fp                                        |     
                                                                 |     if (sl != fp) {
    0x0000f96a bne.w 0xf794                                      |         goto label_10;
                                                                 |     }
                                                                 | label_41:
    0x0000f96e mov r3, r7                                        |     r3 = r7;
    0x0000f970 movs r6, 1                                        |     r6 = 1;
    0x0000f972 mov r7, r8                                        |     r7 = r8;
    0x0000f974 mov r8, r3                                        |     r8 = r3;
    0x0000f976 b 0xf6f8                                          |     goto label_1;
                                                                 | label_45:
    0x0000f978 cmp fp, sl                                        |     
                                                                 |     if (fp == sl) {
    0x0000f97a beq.w 0xffd4                                      |         goto label_52;
                                                                 |     }
    0x0000f97e mov r0, r7                                        |     r0 = r7;
    0x0000f980 blx 0x61b8                                        |     r0 = snprintf_chk ()
    0x0000f984 adds r2, r0, 1                                    |     r2 = r0 + 1;
    0x0000f986 mov r5, r0                                        |     r5 = r0;
                                                                 |     if (r2 == r0) {
    0x0000f988 beq.w 0xfdf2                                      |         goto label_31;
                                                                 |     }
    0x0000f98c cmp r0, 0x7f                                      |     
    0x0000f98e mov.w r6, 6                                       |     r6 = 6;
                                                                 |     if (r0 <= 0x7f) {
    0x0000f992 ble.w 0xf7a4                                      |         goto label_2;
                                                                 |     }
    0x0000f996 ldr r3, [r7, 4]                                   |     r3 = *((r7 + 4));
    0x0000f998 lsls r3, r3, 0x1a                                 |     r3 <<= 0x1a;
                                                                 |     if (r3 >= r3) {
    0x0000f99a bpl.w 0xf888                                      |         goto label_5;
                                                                 |     }
    0x0000f99e b 0xf952                                          |     goto label_11;
                                                                 | label_51:
    0x0000f9a0 cmp fp, sl                                        |     
                                                                 |     if (fp == sl) {
    0x0000f9a2 beq.w 0xfff8                                      |         goto label_53;
                                                                 |     }
    0x0000f9a6 mov r0, r7                                        |     r0 = r7;
    0x0000f9a8 blx 0x61b8                                        |     r0 = snprintf_chk ()
    0x0000f9ac mov r5, r0                                        |     r5 = r0;
    0x0000f9ae adds r0, r5, 1                                    |     r0 = r5 + 1;
                                                                 |     if (r0 == r5) {
    0x0000f9b0 beq.w 0xfdf2                                      |         goto label_31;
                                                                 |     }
    0x0000f9b4 cmp r5, 0x7f                                      |     
    0x0000f9b6 mov.w r6, 4                                       |     r6 = 4;
                                                                 |     if (r5 <= 0x7f) {
    0x0000f9ba ble.w 0xf7a4                                      |         goto label_2;
                                                                 |     }
    0x0000f9be ldr r3, [r7, 4]                                   |     r3 = *((r7 + 4));
    0x0000f9c0 lsls r1, r3, 0x1a                                 |     r1 = r3 << 0x1a;
                                                                 |     if (r1 < r3) {
    0x0000f9c2 bmi.w 0xf786                                      |         goto label_12;
                                                                 |     }
    0x0000f9c6 b 0xf888                                          |     goto label_5;
                                                                 | label_48:
    0x0000f9c8 add.w r3, sl, 1                                   |     r3 = sl + 1;
    0x0000f9cc mov r2, r4                                        |     r2 = r4;
    0x0000f9ce cmp fp, r3                                        |     
    0x0000f9d0 strb r5, [r2], 1                                  |     *(r2) = r5;
                                                                 |     r2++;
    0x0000f9d4 str r3, [sp, 0x28]                                |     var_28h = r3;
    0x0000f9d6 str r2, [sp, 0x24]                                |     var_24h = r2;
                                                                 |     if (fp == r3) {
    0x0000f9d8 beq.w 0xffbc                                      |         goto label_54;
                                                                 |     }
    0x0000f9dc mov r0, r7                                        |     r0 = r7;
    0x0000f9de blx 0x61b8                                        |     r0 = snprintf_chk ()
    0x0000f9e2 adds r1, r0, 1                                    |     r1 = r0 + 1;
    0x0000f9e4 ldr r2, [sp, 0x24]                                |     r2 = var_24h;
    0x0000f9e6 mov r5, r0                                        |     r5 = r0;
                                                                 |     if (r1 == r0) {
    0x0000f9e8 beq.w 0xffb2                                      |         goto label_55;
                                                                 |     }
    0x0000f9ec cmp r0, 0x7f                                      |     
    0x0000f9ee ldr r3, [sp, 0x28]                                |     r3 = var_28h;
                                                                 |     if (r0 <= 0x7f) {
    0x0000f9f0 ble.w 0xff06                                      |         goto label_56;
                                                                 |     }
    0x0000f9f4 ldr r6, [r7, 4]                                   |     r6 = *((r7 + 4));
    0x0000f9f6 ands r6, r6, 0x20                                 |     r6 &= 0x20;
                                                                 |     if (r6 == r6) {
    0x0000f9fa beq.w 0xffac                                      |         goto label_57;
                                                                 |     }
    0x0000f9fe ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x0000fa00 adds r4, 2                                        |     r4 += 2;
    0x0000fa02 ldr r2, [sp, 0x14]                                |     r2 = var_14h;
    0x0000fa04 strb r0, [r4, -0x1]                               |     *((r4 - 0x1)) = r0;
    0x0000fa08 adds r3, 1                                        |     r3++;
    0x0000fa0a cmp r2, r3                                        |     
    0x0000fa0c str r3, [sp, 0xc]                                 |     var_ch = r3;
                                                                 |     if (r2 <= r3) {
    0x0000fa0e blo 0xfa4c                                        |         goto label_58;
                                                                 |     }
    0x0000fa10 add.w sl, sl, 2                                   |     sl += 2;
    0x0000fa14 cmp fp, sl                                        |     
                                                                 |     if (fp == sl) {
    0x0000fa16 beq.w 0xffbc                                      |         goto label_54;
                                                                 |     }
    0x0000fa1a mov r0, r7                                        |     r0 = r7;
    0x0000fa1c blx 0x61b8                                        |     r0 = snprintf_chk ()
    0x0000fa20 adds r2, r0, 1                                    |     r2 = r0 + 1;
    0x0000fa22 mov r5, r0                                        |     r5 = r0;
                                                                 |     if (r2 == r0) {
    0x0000fa24 beq.w 0xfdf2                                      |         goto label_31;
                                                                 |     }
    0x0000fa28 cmp r0, 0x7f                                      |     
                                                                 |     if (r0 <= 0x7f) {
    0x0000fa2a ble.w 0xffa6                                      |         goto label_59;
                                                                 |     }
    0x0000fa2e ldr r6, [r7, 4]                                   |     r6 = *((r7 + 4));
    0x0000fa30 ands r6, r6, 0x20                                 |     r6 &= 0x20;
                                                                 |     if (r6 == r6) {
    0x0000fa34 beq.w 0xf888                                      |         goto label_5;
                                                                 |     }
                                                                 | label_30:
    0x0000fa38 invalid                                           |     
    0x0000fa3a strb r5, [r4], 1                                  |     *(r4) = r5;
                                                                 |     r4++;
                                                                 | label_32:
    0x0000fa3e ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x0000fa40 ldr r2, [sp, 0x14]                                |     r2 = var_14h;
    0x0000fa42 adds r3, 1                                        |     r3++;
    0x0000fa44 cmp r2, r3                                        |     
    0x0000fa46 str r3, [sp, 0xc]                                 |     var_ch = r3;
                                                                 |     if (r2 >= r3) {
    0x0000fa48 bhs.w 0xf73a                                      |         goto label_3;
                                                                 |     }
                                                                 | label_58:
    0x0000fa4c mov r8, r7                                        |     r8 = r7;
                                                                 | label_14:
    0x0000fa4e movs r0, 0                                        |     r0 = 0;
    0x0000fa50 add.w r8, r8, 0x16000                             |     r8 += 0x16000;
    0x0000fa54 movs r3, 0x2d                                     |     r3 = 0x2d;
    0x0000fa56 str.w r3, [r8, 0x184]                             |     __asm ("str.w r3, aav.0x000000ff");
                                                                 | label_21:
    0x0000fa5a ldr.w r2, [pc, 0x7d8]                             |     r2 = *(0x00010234);
    0x0000fa5e ldr.w r3, [pc, 0x7c8]                             |     r3 = *(0x1022a);
    0x0000fa62 add r2, pc                                        |     r2 += pc;
    0x0000fa64 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x0000fa66 ldr r2, [r3]                                      |     r2 = *(0x1022a);
    0x0000fa68 ldr r3, [sp, 0x44]                                |     r3 = var_44h;
    0x0000fa6a eors r2, r3                                       |     r2 ^= r3;
    0x0000fa6c mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x0000fa70 bne.w 0x10004                                     |         goto label_60;
                                                                 |     }
    0x0000fa74 add sp, 0x4c                                      |     
    0x0000fa76 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_47:
    0x0000fa7a movs r0, 0                                        |     r0 = 0;
    0x0000fa7c sbfx ip, r3, 0xc, 8                               |     __asm ("sbfx ip, r3, 0xc, 8");
    0x0000fa80 movt r0, 0x7fff                                   |     r0 = (r0 & 0xFFFF) | 0x7fff0000;
    0x0000fa84 ands r0, r5                                       |     r0 &= r5;
    0x0000fa86 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000fa88 bne.w 0xfd62                                      |         goto label_61;
                                                                 |     }
    0x0000fa8c and r0, ip, 0xf                                   |     r0 = ip & 0xf;
    0x0000fa90 orn r0, r0, 0x1f                                  |     r0 |= 0x1f;
                                                                 |     r0 = ~r0;
    0x0000fa94 strb.w r0, [sp, 0x3c]                             |     var_3ch = r0;
    0x0000fa98 add.w r0, sp, 0x3d                                |     r0 += var_3dh;
    0x0000fa9c mov r5, r0                                        |     r5 = r0;
                                                                 | label_23:
    0x0000fa9e and r2, r2, 0x3f                                  |     r2 &= 0x3f;
    0x0000faa2 adds r1, r5, 1                                    |     r1 = r5 + 1;
    0x0000faa4 orn r2, r2, 0x7f                                  |     r2 |= 0x7f;
                                                                 |     r2 = ~r2;
    0x0000faa8 str r1, [sp, 0x38]                                |     nbyte = r1;
    0x0000faaa strb r2, [r5]                                     |     *(r5) = r2;
    0x0000faac ldr r2, [sp, 0x38]                                |     r2 = nbyte;
    0x0000faae b 0xf8c4                                          |     goto label_13;
                                                                 | label_37:
    0x0000fab0 ldr.w r3, [pc, 0x784]                             |     
    0x0000fab4 ldr r2, [sp, 0x10]                                |     r2 = var_10h;
    0x0000fab6 ldr r5, [sp, 0x20]                                |     r5 = var_20h;
    0x0000fab8 add r3, pc                                        |     r3 = 0x1fcf4;
    0x0000faba ldr.w fp, [sp, 0x14]                              |     fp = var_14h;
    0x0000fabe str r3, [sp, 0x24]                                |     var_24h = r3;
    0x0000fac0 movs r3, 0                                        |     r3 = 0;
    0x0000fac2 mov sb, r3                                        |     sb = r3;
    0x0000fac4 str.w r3, [r2, 0xd4]                              |     __asm ("str.w r3, [r2, 0xd4]");
    0x0000fac8 movw r3, 0xff79                                   |     
    0x0000facc movt r3, 0x7fff                                   |     r3 = 0x7fffff79;
    0x0000fad0 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x0000fad2 mov.w r3, 0xf800                                  |     
    0x0000fad6 movt r3, 0x7fff                                   |     r3 = 0x7ffff800;
    0x0000fada str r3, [sp, 0x28]                                |     var_28h = r3;
    0x0000fadc mov r3, sb                                        |     
    0x0000fade movt r3, 0x7fff                                   |     r3 = 0xNaN;
    0x0000fae2 str r3, [sp, 0x30]                                |     var_30h = r3;
                                                                 |     do {
                                                                 | label_15:
    0x0000fae4 movs r2, 0                                        |         r2 = 0;
    0x0000fae6 mov r0, r8                                        |         r0 = r8;
    0x0000fae8 mov r1, r2                                        |         r1 = r2;
    0x0000faea blx 0x6514                                        |         r0 = fcn_00006514 ();
    0x0000faee mov r6, r0                                        |         r6 = r0;
    0x0000faf0 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x0000faf2 bne.w 0xff42                                      |             goto label_38;
                                                                 |         }
    0x0000faf6 ldr r1, [sp, 0x10]                                |         r1 = var_10h;
    0x0000faf8 ldr.w r3, [r1, 0xd4]                              |         r3 = *((r1 + 0xd4));
    0x0000fafc ldr.w r2, [r1, 0xd0]                              |         r2 = *((r1 + 0xd0));
    0x0000fb00 ldr.w r4, [r1, 0xcc]                              |         r4 = *((r1 + 0xcc));
    0x0000fb04 subs.w sl, r2, r3                                 |         sl = r2 - r3;
    0x0000fb08 str.w r2, [r1, 0xd4]                              |         __asm ("str.w r2, [r1, 0xd4]");
    0x0000fb0c add r4, r3                                        |         r4 += r3;
                                                                 |         if (sl != r2) {
    0x0000fb0e bne 0xfb52                                        |             goto label_62;
                                                                 |         }
    0x0000fb10 b 0xfae4                                          |         
                                                                 |     } while (1);
                                                                 | label_16:
    0x0000fb12 ldr.w r3, [r8, 4]                                 |     r3 = *((r8 + 4));
    0x0000fb16 mov r0, r8                                        |     r0 = r8;
    0x0000fb18 lsls r3, r3, 0xa                                  |     r3 <<= 0xa;
                                                                 |     if (r3 >= r3) {
    0x0000fb1a bpl 0xfb66                                        |         goto label_63;
                                                                 |     }
    0x0000fb1c blx 0x62d0                                        |     r0 = fcn_000062d0 ();
    0x0000fb20 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x0000fb22 blt 0xfc1e                                        |         goto label_64;
                                                                 |     }
                                                                 | label_18:
    0x0000fb24 cmp r0, 0x2f                                      |     
                                                                 |     if (r0 != 0x2f) {
    0x0000fb26 bne 0xfba2                                        |         goto label_65;
                                                                 |     }
                                                                 |     if (r5 != 0) {
    0x0000fb28 cbz r5, 0xfb3e                                    |         
    0x0000fb2a mov r0, r8                                        |         r0 = r8;
    0x0000fb2c blx 0x62d0                                        |         r0 = fcn_000062d0 ();
    0x0000fb30 adds r3, r0, 4                                    |         r3 = r0 + 4;
    0x0000fb32 ldr r3, [sp, 0x10]                                |         r3 = var_10h;
    0x0000fb34 it eq                                             |         
                                                                 |         if (r3 != r0) {
    0x0000fb36 addeq r5, r5, -1                                  |             r5 += -1;
                                                                 |         }
    0x0000fb3a str.w r0, [r3, 0xb8]                              |         __asm ("str.w r0, [r3, 0xb8]");
                                                                 |     }
    0x0000fb3e movs r3, 0x2f                                     |     r3 = 0x2f;
    0x0000fb40 strb r3, [r4], 1                                  |     *(r4) = r3;
                                                                 |     r4++;
                                                                 | label_19:
    0x0000fb44 add.w sb, sb, 1                                   |     sb++;
    0x0000fb48 cmp sb, fp                                        |     
                                                                 |     if (sb > fp) {
    0x0000fb4a bhi 0xfa4e                                        |         goto label_14;
                                                                 |     }
                                                                 | label_17:
    0x0000fb4c adds r6, 1                                        |     r6++;
    0x0000fb4e cmp sl, r6                                        |     
                                                                 |     if (sl == r6) {
    0x0000fb50 beq 0xfae4                                        |         goto label_15;
                                                                 |     }
                                                                 | label_62:
    0x0000fb52 cmp r7, 0                                         |     
                                                                 |     if (r7 <= 0) {
    0x0000fb54 ble 0xfb12                                        |         goto label_16;
                                                                 |     }
    0x0000fb56 ldr r3, [sp, 0x38]                                |     r3 = nbyte;
    0x0000fb58 subs r7, 1                                        |     r7--;
    0x0000fb5a adds r2, r3, 1                                    |     r2 = r3 + 1;
    0x0000fb5c str r2, [sp, 0x38]                                |     nbyte = r2;
    0x0000fb5e ldrb r3, [r3]                                     |     r3 = *(r3);
    0x0000fb60 strb r3, [r4], 1                                  |     *(r4) = r3;
                                                                 |     r4++;
    0x0000fb64 b 0xfb4c                                          |     goto label_17;
                                                                 | label_63:
    0x0000fb66 blx 0x6854                                        |     r0 = fcn_00006854 ();
    0x0000fb6a adds r1, r0, 1                                    |     r1 = r0 + 1;
                                                                 |     if (r1 >= r0) {
    0x0000fb6c bge 0xfb24                                        |         goto label_18;
                                                                 |     }
                                                                 | label_20:
    0x0000fb6e adds r2, r0, 6                                    |     r2 = r0 + 6;
                                                                 |     if (r2 >= r0) {
    0x0000fb70 bge 0xfbd4                                        |         goto label_66;
                                                                 |     }
    0x0000fb72 add.w r3, r0, -0x80000000                         |     r3 = r0 + -0x80000000;
    0x0000fb76 subs r3, 0x22                                     |     r3 -= 0x22;
    0x0000fb78 cmp r3, 0x1c                                      |     
                                                                 |     if (r3 <= 0x1c) {
    0x0000fb7a bhi 0xfba6                                        |         
    0x0000fb7c cmp r3, 0x1c                                      |         
                                                                 |         if (r3 > 0x1c) {
    0x0000fb7e bhi 0xfba6                                        |             goto label_67;
                                                                 |         }
                                                                 |         /* switch table (29 cases) at 0xfb84 */
    0x0000fb80 tbb [pc, r3]                                      |         __asm ("tbb aav.0x000000ff");
                                                                 | label_65:
    0x0000fba2 adds r1, r0, 1                                    |         r1 = r0 + 1;
                                                                 |         if (r1 == r0) {
    0x0000fba4 beq 0xfc2e                                        |             goto label_68;
                                                                 |         }
                                                                 |     }
                                                                 | label_67:
    0x0000fba6 strb r0, [r4], 1                                  |     *(r4) = r0;
                                                                 |     r4++;
    0x0000fbaa b 0xfb44                                          |     goto label_19;
    0x0000fbac movs r3, 0x3e                                     |     r3 = 0x3e;
    0x0000fbae strb r3, [r4], 1                                  |     *(r4) = r3;
                                                                 |     r4++;
    0x0000fbb2 b 0xfb44                                          |     goto label_19;
    0x0000fbb4 movs r3, 0x22                                     |     r3 = 0x22;
    0x0000fbb6 strb r3, [r4], 1                                  |     *(r4) = r3;
                                                                 |     r4++;
    0x0000fbba b 0xfb44                                          |     goto label_19;
    0x0000fbbc movs r3, 0x26                                     |     r3 = 0x26;
    0x0000fbbe strb r3, [r4], 1                                  |     *(r4) = r3;
                                                                 |     r4++;
    0x0000fbc2 b 0xfb44                                          |     goto label_19;
    0x0000fbc4 movs r3, 0x3c                                     |     r3 = 0x3c;
    0x0000fbc6 strb r3, [r4], 1                                  |     *(r4) = r3;
                                                                 |     r4++;
    0x0000fbca b 0xfb44                                          |     goto label_19;
                                                                 |     do {
    0x0000fbcc movs r3, 0x27                                     |         r3 = 0x27;
    0x0000fbce strb r3, [r4], 1                                  |         *(r4) = r3;
                                                                 |         r4++;
    0x0000fbd2 b 0xfb44                                          |         goto label_19;
                                                                 | label_66:
    0x0000fbd4 adds r3, r0, 5                                    |         r3 = r0 + 5;
    0x0000fbd6 cmp r3, 3                                         |         
    0x0000fbd8 bhi 0xfbcc                                        |         
                                                                 |     } while (r3 > 3);
    0x0000fbda adr r2, 8                                         |     r2 = 8;
    0x0000fbdc ldr.w r3, [r2, r3, lsl 2]                         |     offset_1 = r3 << 2;
                                                                 |     r3 = *((r2 + offset_1));
    0x0000fbe0 add r2, r3                                        |     r2 += r3;
                                                                 |     /* switch table (4 cases) at 0xfbe4 */
    0x0000fbe2 bx r2                                             |     return uint32_t (*r2)() ();
                                                                 | label_64:
    0x0000fc1e ldr r2, [sp, 0xc]                                 |     r2 = var_ch;
    0x0000fc20 add.w r3, r0, -0x80000000                         |     r3 = r0 + -0x80000000;
    0x0000fc24 subs r3, 0x80                                     |     r3 -= 0x80;
    0x0000fc26 cmp r3, r2                                        |     
                                                                 |     if (r3 < r2) {
    0x0000fc28 bls 0xfc90                                        |         goto label_69;
                                                                 |     }
    0x0000fc2a adds r3, r0, 1                                    |     r3 = r0 + 1;
                                                                 |     if (r3 != r0) {
    0x0000fc2c bne 0xfb6e                                        |         goto label_20;
                                                                 |     }
                                                                 | label_68:
    0x0000fc2e mov r5, r0                                        |     r5 = r0;
                                                                 | label_24:
    0x0000fc30 ldr r2, [sp, 0x10]                                |     r2 = var_10h;
    0x0000fc32 movs r3, 0                                        |     r3 = 0;
    0x0000fc34 mov r0, r8                                        |     r0 = r8;
    0x0000fc36 str.w r5, [r2, 0xb8]                              |     __asm ("str.w r5, [r2, 0xb8]");
    0x0000fc3a strb r3, [r4]                                     |     *(r4) = r3;
    0x0000fc3c ldr.w r1, [r2, 0xcc]                              |     r1 = *((r2 + 0xcc));
    0x0000fc40 blx 0x5c8c                                        |     fcn_00005c8c ();
    0x0000fc44 ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x0000fc46 str r0, [sp, 0x38]                                |     nbyte = r0;
    0x0000fc48 cmp sb, r3                                        |     
                                                                 |     if (sb < r3) {
    0x0000fc4a blt.w 0xfa4e                                      |         goto label_14;
                                                                 |     }
    0x0000fc4e ldr.w r3, [r8, 4]                                 |     r3 = *((r8 + 4));
    0x0000fc52 lsls r2, r3, 7                                    |     r2 = r3 << 7;
                                                                 |     if (r2 >= r3) {
    0x0000fc54 bpl 0xfc6e                                        |         goto label_70;
                                                                 |     }
    0x0000fc56 add.w r3, r8, 0x16000                             |     r3 = r8 + 0x16000;
    0x0000fc5a ldr.w r3, [r3, 0x190]                             |     r3 = *((r3 + 0x190));
                                                                 |     if (r3 == 0) {
    0x0000fc5e cbz r3, 0xfc6e                                    |         goto label_70;
                                                                 |     }
    0x0000fc60 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x0000fc62 cmp r2, 3                                         |     
    0x0000fc64 it eq                                             |     
                                                                 |     if (r2 == 3) {
    0x0000fc66 streq r0, [r3, 0x2c]                              |         *((r3 + 0x2c)) = r0;
                                                                 |         goto label_71;
                                                                 |     }
                                                                 |     if (r2 == 3) {
                                                                 | label_71:
    0x0000fc68 beq.w 0xfa5a                                      |         goto label_21;
                                                                 |     }
    0x0000fc6c str r0, [r3, 0x18]                                |     *((r3 + 0x18)) = r0;
                                                                 | label_70:
    0x0000fc6e ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x0000fc70 cmp r3, 2                                         |     
                                                                 |     if (r3 != 2) {
    0x0000fc72 bne.w 0xfa5a                                      |         goto label_21;
                                                                 |     }
    0x0000fc76 ldr r4, [sp, 0x14]                                |     r4 = var_14h;
    0x0000fc78 mov r1, r0                                        |     r1 = r0;
    0x0000fc7a ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x0000fc7c add r2, sp, 0x38                                  |     r2 += nbyte;
    0x0000fc7e mov r0, r8                                        |     r0 = r8;
    0x0000fc80 str r4, [sp]                                      |     *(sp) = r4;
    0x0000fc82 blx 0x5e40                                        |     r0 = read (r0, r1, r2);
    0x0000fc86 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000fc88 bne.w 0xff42                                      |         goto label_38;
                                                                 |     }
    0x0000fc8c ldr r0, [sp, 0x38]                                |     r0 = nbyte;
    0x0000fc8e b 0xfa5a                                          |     goto label_21;
                                                                 | label_69:
    0x0000fc90 ldr r1, [sp, 0x28]                                |     r1 = var_28h;
    0x0000fc92 bic r3, r0, 0x80000000                            |     r3 = BIT_MASK (r0, 0x80000000);
    0x0000fc96 sbfx r2, r0, 6, 8                                 |     __asm ("sbfx r2, r0, 6, 8");
    0x0000fc9a tst r0, r1                                        |     
                                                                 |     if ((r0 & r1) != 0) {
    0x0000fc9c bne 0xfcd2                                        |         goto label_72;
                                                                 |     }
    0x0000fc9e and r2, r2, 0x1f                                  |     r2 &= 0x1f;
    0x0000fca2 add.w r0, sp, 0x3d                                |     r0 += var_3dh;
    0x0000fca6 orn r2, r2, 0x3f                                  |     r2 |= 0x3f;
                                                                 |     r2 = ~r2;
    0x0000fcaa strb.w r2, [sp, 0x3c]                             |     var_3ch = r2;
    0x0000fcae mov r2, r0                                        |     r2 = r0;
                                                                 |     do {
    0x0000fcb0 and r3, r3, 0x3f                                  |         r3 &= 0x3f;
    0x0000fcb4 adds r1, r2, 1                                    |         r1 = r2 + 1;
    0x0000fcb6 orn r3, r3, 0x7f                                  |         r3 |= 0x7f;
                                                                 |         r3 = ~r3;
    0x0000fcba str r1, [sp, 0x38]                                |         nbyte = r1;
    0x0000fcbc strb r3, [r2]                                     |         *(r2) = r3;
    0x0000fcbe ldrb.w r3, [sp, 0x3c]                             |         r3 = var_3ch;
    0x0000fcc2 ldr r7, [sp, 0x38]                                |         r7 = nbyte;
    0x0000fcc4 str r0, [sp, 0x38]                                |         nbyte = r0;
    0x0000fcc6 strb r3, [r4], 1                                  |         *(r4) = r3;
                                                                 |         r4++;
    0x0000fcca add r3, sp, 0x3c                                  |         r3 += var_3ch;
    0x0000fccc subs r7, r7, r3                                   |         r7 -= r3;
    0x0000fcce subs r7, 1                                        |         r7--;
    0x0000fcd0 b 0xfb4c                                          |         goto label_17;
                                                                 | label_72:
    0x0000fcd2 ldr r7, [sp, 0x30]                                |         r7 = var_30h;
    0x0000fcd4 sbfx r1, r3, 0xc, 8                               |         __asm ("sbfx r1, r3, 0xc, 8");
    0x0000fcd8 tst r0, r7                                        |         
                                                                 |         if ((r0 & r7) != 0) {
    0x0000fcda bne 0xfd00                                        |             goto label_73;
                                                                 |         }
    0x0000fcdc and r1, r1, 0xf                                   |         r1 &= 0xf;
    0x0000fce0 add.w r0, sp, 0x3d                                |         r0 += var_3dh;
    0x0000fce4 orn r1, r1, 0x1f                                  |         r1 |= 0x1f;
                                                                 |         r1 = ~r1;
    0x0000fce8 strb.w r1, [sp, 0x3c]                             |         var_3ch = r1;
    0x0000fcec mov r1, r0                                        |         r1 = r0;
                                                                 | label_22:
    0x0000fcee and r2, r2, 0x3f                                  |         r2 &= 0x3f;
    0x0000fcf2 adds r7, r1, 1                                    |         r7 = r1 + 1;
    0x0000fcf4 orn r2, r2, 0x7f                                  |         r2 |= 0x7f;
                                                                 |         r2 = ~r2;
    0x0000fcf8 str r7, [sp, 0x38]                                |         nbyte = r7;
    0x0000fcfa strb r2, [r1]                                     |         *(r1) = r2;
    0x0000fcfc ldr r2, [sp, 0x38]                                |         r2 = nbyte;
    0x0000fcfe b 0xfcb0                                          |         
                                                                 |     } while (1);
                                                                 | label_73:
    0x0000fd00 mov.w ip, 0                                       |     
    0x0000fd04 sbfx r7, r3, 0x12, 8                              |     __asm ("sbfx r7, r3, 0x12, 8");
    0x0000fd08 movt ip, 0x7fe0                                   |     
    0x0000fd0c and.w ip, r0, ip                                  |     
    0x0000fd10 cmp.w ip, 0                                       |     
                                                                 |     if (ip == 0) {
    0x0000fd14 beq.w 0xfef2                                      |         goto label_74;
                                                                 |     }
    0x0000fd18 tst.w r0, 0x7c000000                              |     
    0x0000fd1c lsr.w ip, r3, 0x18                                |     
                                                                 |     if ((r0 & 0x7c000000) != 0) {
    0x0000fd20 bne.w 0xff22                                      |         goto label_75;
                                                                 |     }
    0x0000fd24 and r0, ip, 3                                     |     r0 = ip & 3;
    0x0000fd28 orn r0, r0, 7                                     |     r0 |= 7;
                                                                 |     r0 = ~r0;
    0x0000fd2c strb.w r0, [sp, 0x3c]                             |     var_3ch = r0;
    0x0000fd30 add.w r0, sp, 0x3d                                |     r0 += var_3dh;
    0x0000fd34 mov ip, r0                                        |     
                                                                 | label_28:
    0x0000fd36 and r7, r7, 0x3f                                  |     r7 &= 0x3f;
    0x0000fd3a add.w lr, ip, 1                                   |     lr += var_1h;
    0x0000fd3e orn r7, r7, 0x7f                                  |     r7 |= 0x7f;
                                                                 |     r7 = ~r7;
    0x0000fd42 str.w lr, [sp, 0x38]                              |     __asm ("str.w lr, [nbyte]");
    0x0000fd46 strb.w r7, [ip]                                   |     *(ip) = r7;
    0x0000fd4a ldr r7, [sp, 0x38]                                |     r7 = nbyte;
                                                                 | label_26:
    0x0000fd4c and r1, r1, 0x3f                                  |     r1 &= 0x3f;
    0x0000fd50 add.w ip, r7, 1                                   |     
    0x0000fd54 orn r1, r1, 0x7f                                  |     r1 |= 0x7f;
                                                                 |     r1 = ~r1;
    0x0000fd58 str.w ip, [sp, 0x38]                              |     __asm ("str.w ip, [nbyte]");
    0x0000fd5c strb r1, [r7]                                     |     *(r7) = r1;
    0x0000fd5e ldr r1, [sp, 0x38]                                |     r1 = nbyte;
    0x0000fd60 b 0xfcee                                          |     goto label_22;
                                                                 | label_61:
    0x0000fd62 movs r0, 0                                        |     r0 = 0;
    0x0000fd64 sbfx lr, r3, 0x12, 8                              |     __asm ("sbfx lr, r3, 0x12, 8");
    0x0000fd68 movt r0, 0x7fe0                                   |     r0 = (r0 & 0xFFFF) | 0x7fe00000;
    0x0000fd6c ands r0, r5                                       |     r0 &= r5;
    0x0000fd6e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000fd70 beq.w 0xff0e                                      |         goto label_76;
                                                                 |     }
    0x0000fd74 tst.w r5, 0x7c000000                              |     
    0x0000fd78 lsr.w r0, r3, 0x18                                |     r0 = r3 >> 0x18;
                                                                 |     if ((r5 & 0x7c000000) != 0) {
    0x0000fd7c bne.w 0xff46                                      |         goto label_77;
                                                                 |     }
    0x0000fd80 and r0, r0, 3                                     |     r0 &= 3;
    0x0000fd84 orn r0, r0, 7                                     |     r0 |= 7;
                                                                 |     r0 = ~r0;
    0x0000fd88 strb.w r0, [sp, 0x3c]                             |     var_3ch = r0;
    0x0000fd8c add.w r0, sp, 0x3d                                |     r0 += var_3dh;
    0x0000fd90 mov r8, r0                                        |     r8 = r0;
                                                                 | label_29:
    0x0000fd92 and r5, lr, 0x3f                                  |     r5 = lr & 0x3f;
    0x0000fd96 add.w r1, r8, 1                                   |     r1 += var_1h;
    0x0000fd9a orn r5, r5, 0x7f                                  |     r5 |= 0x7f;
                                                                 |     r5 = ~r5;
    0x0000fd9e str r1, [sp, 0x38]                                |     nbyte = r1;
    0x0000fda0 strb.w r5, [r8]                                   |     *(r8) = r5;
    0x0000fda4 ldr r1, [sp, 0x38]                                |     r1 = nbyte;
                                                                 | label_27:
    0x0000fda6 and r5, ip, 0x3f                                  |     r5 = ip & 0x3f;
    0x0000fdaa add.w ip, r1, 1                                   |     
    0x0000fdae orn r5, r5, 0x7f                                  |     r5 |= 0x7f;
                                                                 |     r5 = ~r5;
    0x0000fdb2 str.w ip, [sp, 0x38]                              |     __asm ("str.w ip, [nbyte]");
    0x0000fdb6 strb r5, [r1]                                     |     *(r1) = r5;
    0x0000fdb8 ldr r5, [sp, 0x38]                                |     r5 = nbyte;
    0x0000fdba b 0xfa9e                                          |     goto label_23;
                                                                 | label_31:
    0x0000fdf2 ldr.w sb, [sp, 0xc]                               |     sb = var_ch;
    0x0000fdf6 mov r8, r7                                        |     r8 = r7;
    0x0000fdf8 b 0xfc30                                          |     goto label_24;
                                                                 | label_36:
    0x0000fdfa strb.w r0, [r3, 0x8d7]                            |     *((r3 + 0x8d7)) = r0;
    0x0000fdfe movs r2, 0x3c                                     |     r2 = 0x3c;
    0x0000fe00 add.w r0, r8, 0x13400                             |     r0 = r8 + 0x13400;
    0x0000fe04 add.w r4, r8, 0x13800                             |     r4 = r8 + 0x13800;
    0x0000fe08 strb.w r2, [r3, 0x4d8]                            |     *((r3 + 0x4d8)) = r2;
    0x0000fe0c add.w r7, r0, 0xd8                                |     r7 = r0 + 0xd8;
    0x0000fe10 movw r2, 0x3fe                                    |     r2 = 0x3fe;
    0x0000fe14 add.w r1, r4, 0xd8                                |     r1 = r4 + 0xd8;
    0x0000fe18 adds r0, 0xd9                                     |     r0 += 0xd9;
    0x0000fe1a blx 0x5b6c                                        |     fcn_00005b6c ();
    0x0000fe1e mov r0, r7                                        |     r0 = r7;
    0x0000fe20 blx 0x5fec                                        |     fcn_00005fec ();
    0x0000fe24 ldr.w sl, [r5, 0x520]                             |     sl = *((r5 + 0x520));
    0x0000fe28 adds r3, r7, r0                                   |     r3 = r7 + r0;
    0x0000fe2a str r3, [sp, 0x38]                                |     nbyte = r3;
    0x0000fe2c cmp.w sl, 0                                       |     
                                                                 |     if (sl == 0) {
    0x0000fe30 beq 0xfeaa                                        |         goto label_78;
                                                                 |     }
    0x0000fe32 adds r4, 0xd6                                     |     r4 += 0xd6;
    0x0000fe34 movs r6, 0x20                                     |     r6 = 0x20;
    0x0000fe36 mov sb, r4                                        |     sb = r4;
    0x0000fe38 mov r4, sl                                        |     r4 = sl;
    0x0000fe3a str r5, [sp, 0xc]                                 |     var_ch = r5;
                                                                 |     do {
    0x0000fe3c ldrsh.w r2, [r4, 0x14]                            |         r2 = *((r4 + 0x14));
                                                                 |         if (r2 != 0) {
    0x0000fe40 cbz r2, 0xfea2                                    |             
    0x0000fe42 cmp sb, r3                                        |             
                                                                 |             if (sb < r3) {
    0x0000fe44 bls 0xfea8                                        |                 goto label_79;
                                                                 |             }
    0x0000fe46 adds r2, r3, 1                                    |             r2 = r3 + 1;
    0x0000fe48 add.w r1, r4, 0x16                                |             r1 = r4 + 0x16;
    0x0000fe4c str r2, [sp, 0x38]                                |             nbyte = r2;
    0x0000fe4e strb r6, [r3]                                     |             *(r3) = r6;
    0x0000fe50 ldr r0, [sp, 0x38]                                |             r0 = nbyte;
    0x0000fe52 blx 0x6144                                        |             fcn_00006144 ();
    0x0000fe56 ldr r5, [sp, 0x38]                                |             r5 = nbyte;
    0x0000fe58 mov r0, r5                                        |             r0 = r5;
    0x0000fe5a blx 0x5fec                                        |             r0 = fcn_00005fec ();
    0x0000fe5e adds r3, r5, r0                                   |             r3 = r5 + r0;
    0x0000fe60 cmp sb, r3                                        |             
    0x0000fe62 str r3, [sp, 0x38]                                |             nbyte = r3;
                                                                 |             if (sb < r3) {
    0x0000fe64 bls 0xfea8                                        |                 goto label_79;
                                                                 |             }
    0x0000fe66 ldr r2, [r4, 8]                                   |             r2 = *((r4 + 8));
                                                                 |             if (r2 == 0) {
    0x0000fe68 cbz r2, 0xfea2                                    |                 goto label_80;
                                                                 |             }
    0x0000fe6a adds r3, 1                                        |             r3++;
    0x0000fe6c mov.w fp, 0x22                                    |             
    0x0000fe70 str r3, [sp, 0x38]                                |             nbyte = r3;
    0x0000fe72 mov.w r3, 0x3d                                    |             r3 = 0x3d;
    0x0000fe76 strb r3, [r5, r0]                                 |             *((r5 + r0)) = r3;
    0x0000fe78 ldr r3, [sp, 0x38]                                |             r3 = nbyte;
    0x0000fe7a adds r2, r3, 1                                    |             r2 = r3 + 1;
    0x0000fe7c str r2, [sp, 0x38]                                |             nbyte = r2;
    0x0000fe7e strb.w fp, [r3]                                   |             *(r3) = fp;
    0x0000fe82 ldr r0, [sp, 0x38]                                |             r0 = nbyte;
    0x0000fe84 ldr r1, [r4, 8]                                   |             r1 = *((r4 + 8));
    0x0000fe86 blx 0x6144                                        |             fcn_00006144 ();
    0x0000fe8a ldr.w sl, [sp, 0x38]                              |             sl = nbyte;
    0x0000fe8e mov r0, sl                                        |             r0 = sl;
    0x0000fe90 blx 0x5fec                                        |             r0 = fcn_00005fec ();
    0x0000fe94 add.w r3, sl, r0                                  |             r3 = sl + r0;
    0x0000fe98 adds r3, 1                                        |             r3++;
    0x0000fe9a str r3, [sp, 0x38]                                |             nbyte = r3;
    0x0000fe9c strb.w fp, [sl, r0]                               |             *((sl + r0)) = fp;
    0x0000fea0 ldr r3, [sp, 0x38]                                |             r3 = nbyte;
                                                                 |         }
                                                                 | label_80:
    0x0000fea2 ldr r4, [r4]                                      |         r4 = *(r4);
    0x0000fea4 cmp r4, 0                                         |         
    0x0000fea6 bne 0xfe3c                                        |         
                                                                 |     } while (r4 != 0);
                                                                 | label_79:
    0x0000fea8 ldr r5, [sp, 0xc]                                 |     r5 = var_ch;
                                                                 | label_78:
    0x0000feaa add.w r2, r8, 0x3000                              |     r2 = r8 + 0x3000;
    0x0000feae str r2, [sp, 0x10]                                |     var_10h = r2;
    0x0000feb0 ldrsh.w r2, [r2, 0xbe]                            |     r2 = *((r2 + 0xbe));
                                                                 |     if (r2 == 0) {
    0x0000feb4 cbnz r2, 0xfec0                                   |         
    0x0000feb6 adds r2, r3, 1                                    |         r2 = r3 + 1;
    0x0000feb8 str r2, [sp, 0x38]                                |         nbyte = r2;
    0x0000feba movs r2, 0x2f                                     |         r2 = 0x2f;
    0x0000febc strb r2, [r3]                                     |         *(r3) = r2;
    0x0000febe ldr r3, [sp, 0x38]                                |         r3 = nbyte;
                                                                 |     }
    0x0000fec0 adds r2, r3, 1                                    |     r2 = r3 + 1;
    0x0000fec2 movs r4, 0                                        |     r4 = 0;
    0x0000fec4 str r2, [sp, 0x38]                                |     nbyte = r2;
    0x0000fec6 movs r2, 0x3e                                     |     r2 = 0x3e;
    0x0000fec8 strb r2, [r3]                                     |     *(r3) = r2;
    0x0000feca mov r0, r7                                        |     r0 = r7;
    0x0000fecc ldr r3, [sp, 0x38]                                |     r3 = nbyte;
    0x0000fece strb r4, [r3]                                     |     *(r3) = r4;
    0x0000fed0 str r7, [sp, 0x38]                                |     nbyte = r7;
    0x0000fed2 blx 0x5fec                                        |     fcn_00005fec ();
    0x0000fed6 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x0000fed8 mov r7, r0                                        |     r7 = r0;
    0x0000feda ldrsh.w r3, [r3, 0xbe]                            |     r3 = *((r3 + 0xbe));
    0x0000fede strh.w r4, [r5, 0x530]                            |     *((r5 + 0x530)) = r4;
    0x0000fee2 subs r3, r3, r4                                   |     r3 -= r4;
    0x0000fee4 it ne                                             |     
                                                                 |     if (r3 == r3) {
    0x0000fee6 movne r3, 1                                       |         r3 = 1;
                                                                 |     }
    0x0000fee8 str r3, [sp, 0x20]                                |     var_20h = r3;
    0x0000feea movs r3, 1                                        |     r3 = 1;
    0x0000feec str r3, [sp, 0x18]                                |     var_18h = r3;
    0x0000feee b.w 0xf6d4                                        |     goto label_25;
                                                                 | label_74:
    0x0000fef2 and r0, r7, 7                                     |     r0 = r7 & 7;
    0x0000fef6 orn r0, r0, 0xf                                   |     r0 |= 0xf;
                                                                 |     r0 = ~r0;
    0x0000fefa strb.w r0, [sp, 0x3c]                             |     var_3ch = r0;
    0x0000fefe add.w r0, sp, 0x3d                                |     r0 += var_3dh;
    0x0000ff00 movs r5, r7                                       |     r5 = r7;
    0x0000ff02 mov r7, r0                                        |     r7 = r0;
    0x0000ff04 b 0xfd4c                                          |     goto label_26;
                                                                 | label_56:
    0x0000ff06 mov r4, r2                                        |     r4 = r2;
    0x0000ff08 mov sl, r3                                        |     sl = r3;
    0x0000ff0a movs r6, 0                                        |     r6 = 0;
    0x0000ff0c b 0xf7a4                                          |     goto label_2;
                                                                 | label_76:
    0x0000ff0e and r0, lr, 7                                     |     r0 = lr & 7;
    0x0000ff12 orn r0, r0, 0xf                                   |     r0 |= 0xf;
                                                                 |     r0 = ~r0;
    0x0000ff16 strb.w r0, [sp, 0x3c]                             |     var_3ch = r0;
    0x0000ff1a add.w r0, sp, 0x3d                                |     r0 += var_3dh;
    0x0000ff1e mov r1, r0                                        |     r1 = r0;
    0x0000ff20 b 0xfda6                                          |     goto label_27;
                                                                 | label_75:
    0x0000ff22 and r0, ip, 0x3f                                  |     r0 = ip & 0x3f;
    0x0000ff26 add.w ip, sp, 0x3e                                |     
    0x0000ff2a orn r0, r0, 0x7f                                  |     r0 |= 0x7f;
                                                                 |     r0 = ~r0;
    0x0000ff2e strb.w r0, [sp, 0x3d]                             |     var_3dh = r0;
    0x0000ff32 asrs r0, r3, 0x1e                                 |     r0 = r3 >> 0x1e;
    0x0000ff34 orn r0, r0, 3                                     |     r0 |= 3;
                                                                 |     r0 = ~r0;
    0x0000ff38 strb.w r0, [sp, 0x3c]                             |     var_3ch = r0;
    0x0000ff3c add.w r0, sp, 0x3d                                |     r0 += var_3dh;
    0x0000ff40 b 0xfd36                                          |     goto label_28;
                                                                 | label_38:
    0x0000ff42 movs r0, 0                                        |     r0 = 0;
    0x0000ff44 b 0xfa5a                                          |     goto label_21;
                                                                 | label_77:
    0x0000ff46 and r0, r0, 0x3f                                  |     r0 &= 0x3f;
    0x0000ff4a add.w r8, sp, 0x3e                                |     r8 += var_3eh;
    0x0000ff4e orn r0, r0, 0x7f                                  |     r0 |= 0x7f;
                                                                 |     r0 = ~r0;
    0x0000ff52 strb.w r0, [sp, 0x3d]                             |     var_3dh = r0;
    0x0000ff56 asrs r0, r3, 0x1e                                 |     r0 = r3 >> 0x1e;
    0x0000ff58 orn r0, r0, 3                                     |     r0 |= 3;
                                                                 |     r0 = ~r0;
    0x0000ff5c strb.w r0, [sp, 0x3c]                             |     var_3ch = r0;
    0x0000ff60 add.w r0, sp, 0x3d                                |     r0 += var_3dh;
    0x0000ff64 b 0xfd92                                          |     goto label_29;
                                                                 | label_49:
    0x0000ff8e mov r3, r7                                        |     r3 = r7;
    0x0000ff90 movs r6, 3                                        |     r6 = 3;
    0x0000ff92 mov r7, r8                                        |     r7 = r8;
    0x0000ff94 mov r8, r3                                        |     r8 = r3;
    0x0000ff96 b.w 0xf6f8                                        |     goto label_1;
                                                                 | label_46:
    0x0000ff9a mov r3, r7                                        |     r3 = r7;
    0x0000ff9c movs r6, 2                                        |     r6 = 2;
    0x0000ff9e mov r7, r8                                        |     r7 = r8;
    0x0000ffa0 mov r8, r3                                        |     r8 = r3;
    0x0000ffa2 b.w 0xf6f8                                        |     goto label_1;
                                                                 | label_59:
    0x0000ffa6 movs r6, 0                                        |     r6 = 0;
    0x0000ffa8 b.w 0xf7a4                                        |     goto label_2;
                                                                 | label_57:
    0x0000ffac mov r4, r2                                        |     r4 = r2;
    0x0000ffae mov sl, r3                                        |     sl = r3;
    0x0000ffb0 b 0xf888                                          |     goto label_5;
                                                                 | label_55:
    0x0000ffb2 ldr.w sb, [sp, 0xc]                               |     sb = var_ch;
    0x0000ffb6 mov r8, r7                                        |     r8 = r7;
    0x0000ffb8 mov r4, r2                                        |     r4 = r2;
    0x0000ffba b 0xfc30                                          |     goto label_24;
                                                                 | label_54:
    0x0000ffbc mov r3, r7                                        |     r3 = r7;
    0x0000ffbe movs r6, 0                                        |     r6 = 0;
    0x0000ffc0 mov r7, r8                                        |     r7 = r8;
    0x0000ffc2 mov r8, r3                                        |     r8 = r3;
    0x0000ffc4 b.w 0xf6f8                                        |     goto label_1;
                                                                 | label_43:
    0x0000ffc8 mov r3, r7                                        |     r3 = r7;
    0x0000ffca movs r6, 7                                        |     r6 = 7;
    0x0000ffcc mov r7, r8                                        |     r7 = r8;
    0x0000ffce mov r8, r3                                        |     r8 = r3;
    0x0000ffd0 b.w 0xf6f8                                        |     goto label_1;
                                                                 | label_52:
    0x0000ffd4 mov r3, r7                                        |     r3 = r7;
    0x0000ffd6 movs r6, 6                                        |     r6 = 6;
    0x0000ffd8 mov r7, r8                                        |     r7 = r8;
    0x0000ffda mov r8, r3                                        |     r8 = r3;
    0x0000ffdc b.w 0xf6f8                                        |     goto label_1;
                                                                 | label_50:
    0x0000ffe0 mov r3, r7                                        |     r3 = r7;
    0x0000ffe2 movs r6, 8                                        |     r6 = 8;
    0x0000ffe4 mov r7, r8                                        |     r7 = r8;
    0x0000ffe6 mov r8, r3                                        |     r8 = r3;
    0x0000ffe8 b.w 0xf6f8                                        |     goto label_1;
                                                                 | label_44:
    0x0000ffec mov r3, r7                                        |     r3 = r7;
    0x0000ffee movs r6, 5                                        |     r6 = 5;
    0x0000fff0 mov r7, r8                                        |     r7 = r8;
    0x0000fff2 mov r8, r3                                        |     r8 = r3;
    0x0000fff4 b.w 0xf6f8                                        |     goto label_1;
                                                                 | label_53:
    0x0000fff8 mov r3, r7                                        |     r3 = r7;
    0x0000fffa movs r6, 4                                        |     r6 = 4;
    0x0000fffc mov r7, r8                                        |     r7 = r8;
    0x0000fffe mov r8, r3                                        |     r8 = r3;
    0x00010000 b.w 0xf6f8                                        |     goto label_1;
                                                                 |     if (r2 != 0) {
    0x00010002 cbnz r2, 0x10064                                  |         void (*0x10064)() ();
                                                                 |     }
                                                                 | label_60:
    0x00010004 blx 0x63ec                                        |     SSL_get_verify_result ();
                                                                 | label_42:
    0x00010008 cmp r5, 0x3e                                      |     
                                                                 |     if (r5 > 0x3e) {
    0x0001000a bgt.w 0xfa38                                      |         goto label_30;
                                                                 |     }
    0x0001000e cmp r5, 0x21                                      |     
                                                                 |     if (r5 <= 0x21) {
    0x00010010 ble 0x1009c                                       |         goto label_81;
                                                                 |     }
    0x00010012 sub.w r3, r5, 0x22                                |     r3 = r5 - 0x22;
    0x00010016 cmp r3, 0x1c                                      |     
                                                                 |     if (r3 > 0x1c) {
    0x00010018 bhi.w 0xfa38                                      |         goto label_30;
                                                                 |     }
    0x0001001c adr r2, 8                                         |     r2 = 8;
    0x0001001e ldr.w r3, [r2, r3, lsl 2]                         |     offset_2 = r3 << 2;
                                                                 |     r3 = *((r2 + offset_2));
    0x00010022 add r2, r3                                        |     r2 += r3;
                                                                 |     /* switch table (29 cases) at 0x10028 */
    0x00010024 bx r2                                             |     return uint32_t (*r2)() ();
                                                                 | label_81:
    0x0001009c adds r2, r5, 3                                    |     r2 = r5 + 3;
                                                                 |     if (r2 == r5) {
    0x0001009e beq 0x100c6                                       |         goto label_82;
                                                                 |     }
    0x000100a0 adds r3, r5, 2                                    |     r3 = r5 + 2;
                                                                 |     if (r3 != r5) {
    0x000100a2 bne.w 0xfa38                                      |         goto label_30;
                                                                 |     }
    0x000100a6 ldr r6, [sp, 0x18]                                |     r6 = var_18h;
    0x000100a8 ldr r3, [sp, 0x20]                                |     r3 = var_20h;
    0x000100aa cmp r3, 0                                         |     
    0x000100ac ite ne                                            |     
                                                                 |     if (r3 == 0) {
    0x000100ae movne r6, 0                                       |         r6 = 0;
                                                                 |     }
                                                                 |     if (r3 != 0) {
    0x000100b0 andeq r6, r6, 1                                   |         r6 &= 1;
                                                                 |     }
    0x000100b4 cmp r6, 0                                         |     
                                                                 |     if (r6 != 0) {
    0x000100b6 bne.w 0xfdf2                                      |         goto label_31;
                                                                 |     }
    0x000100ba adds r3, 1                                        |     r3++;
    0x000100bc str r3, [sp, 0x20]                                |     var_20h = r3;
    0x000100be movs r3, 0x3c                                     |     r3 = 0x3c;
    0x000100c0 strb r3, [r4], 1                                  |     *(r4) = r3;
                                                                 |     r4++;
    0x000100c4 b 0xfa3e                                          |     goto label_32;
                                                                 | label_82:
    0x000100c6 ldr r3, [sp, 0x20]                                |     r3 = var_20h;
    0x000100c8 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000100ca beq.w 0xfdf2                                      |         goto label_31;
                                                                 |     }
    0x000100ce subs r3, 1                                        |     r3--;
    0x000100d0 movs r2, 0x3c                                     |     r2 = 0x3c;
    0x000100d2 str r3, [sp, 0x20]                                |     var_20h = r3;
    0x000100d4 movs r6, 0                                        |     r6 = 0;
    0x000100d6 ldr r3, [pc, 0x164]                               |     
    0x000100d8 mov.w r8, 1                                       |     r8 = 1;
    0x000100dc strb r2, [r4], 1                                  |     *(r4) = r2;
                                                                 |     r4++;
    0x000100e0 add r3, pc                                        |     r3 = 0x20322;
    0x000100e2 str r3, [sp, 0x38]                                |     nbyte = r3;
    0x000100e4 b 0xfa3e                                          |     goto label_32;
                                                                 |     do {
                                                                 | label_33:
    0x00014f56 ldr r2, [pc, 0x3fc]                               |         
    0x00014f58 ldr r3, [pc, 0x3ec]                               |         r3 = *(0x15348);
    0x00014f5a add r2, pc                                        |         r2 = 0x2a2b4;
    0x00014f5c ldr r3, [r2, r3]                                  |         r3 = *(0x2a2b4);
    0x00014f5e ldr r2, [r3]                                      |         r2 = *(0x2a2b4);
    0x00014f60 ldr r3, [sp, 0xc]                                 |         r3 = var_ch;
    0x00014f62 eors r2, r3                                       |         r2 ^= r3;
    0x00014f64 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00014f68 bne.w 0x152b8                                     |             goto label_83;
                                                                 |         }
    0x00014f6c mov r0, r5                                        |         r0 = r5;
    0x00014f6e add sp, 0x10                                      |         
    0x00014f70 pop.w {r4, r5, r6, r7, r8, pc}                    |         
                                                                 | label_34:
    0x0001503a movs r5, 0                                        |         r5 = 0;
    0x0001503c b 0x14f56                                         |         
                                                                 |     } while (1);
                                                                 | label_35:
    0x00015170 add.w r4, r4, 0x17000                             |     r4 += 0x17000;
    0x00015174 movs r3, 1                                        |     r3 = 1;
    0x00015176 strh.w r3, [r4, 0x6f0]                            |     *((r4 + 0x6f0)) = r3;
    0x0001517a b 0x14f56                                         |     goto label_33;
    0x0001522c mov r5, r0                                        |     r5 = r0;
    0x0001522e cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00015230 bne.w 0x1503a                                     |         goto label_34;
                                                                 |     }
    0x00015234 add.w r4, r4, 0x16000                             |     r4 += 0x16000;
    0x00015238 strh.w r0, [r4, 0x154]                            |     *((r4 + 0x154)) = r0;
    0x0001523c b 0x14f56                                         |     goto label_33;
                                                                 | label_83:
    0x000152b8 blx 0x63ec                                        |     SSL_get_verify_result ();
    0x000152bc ldr r2, [pc, 0x104]                               |     
    0x000152be mov r1, r7                                        |     r1 = r7;
    0x000152c0 mov r0, r4                                        |     r0 = r4;
    0x000152c2 add r2, pc                                        |     r2 = 0x2a68a;
    0x000152c4 blx 0x6634                                        |     r0 = fcn_00006634 ();
    0x000152c8 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000152ca bne.w 0x15170                                     |         goto label_35;
                                                                 |     }
    0x000152ce add.w r4, r4, 0x17000                             |     r4 += 0x17000;
    0x000152d2 strh.w r5, [r4, 0x6f0]                            |     *((r4 + 0x6f0)) = r5;
    0x000152d6 b 0x14f56                                         |     goto label_33;
                                                                 | }

[*] Function printf used 40 times libsoap.so