[*] Binary protection state of libblkid.so.1.1.0

  
  	Partial RELRO  No Canary found   NX disabled  DSO          No RPATH     No RUNPATH   No Symbols


[*] Function strcat tear down of libblkid.so.1.1.0

    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/lib/libblkid.so.1.1.0 @ 0x20ef0 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.00020ef0 ()                          | void fcn_00020ef0 (int32_t arg1, int32_t arg2) {
                                                     |     void * s2;
                                                     |     int32_t var_8h;
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
    0x00020ef0 push {r0, r1, r4, r5, r6, lr}         |     
    0x00020ef4 mov r4, r0                            |     r4 = r0;
    0x00020ef8 mov r5, r1                            |     r5 = r1;
    0x00020efc mov r6, r2                            |     r6 = r2;
    0x00020f00 str r3, [sp, 4]                       |     s2 = r3;
    0x00020f04 bl 0xb3b0                             |     r0 = fcn_0000b3b0 (r0);
    0x00020f08 cmp r0, 0                             |     
                                                     |     if (r0 != 0) {
    0x00020f0c mvneq r0, 0                           |         r0 = ~0;
                                                     |     }
                                                     |     if (r0 == 0) {
    0x00020f10 beq 0x20f48                           |         goto label_0;
                                                     |     }
    0x00020f14 ldr r3, [sp, 4]                       |     r3 = s2;
    0x00020f18 cmp r3, 0                             |     
                                                     |     if (r3 != 0) {
    0x00020f1c moveq r0, r3                          |         r0 = r3;
                                                     |     }
                                                     |     if (r3 == 0) {
    0x00020f20 beq 0x20f48                           |         goto label_0;
                                                     |     }
    0x00020f24 ldr r2, [r0, 0xc]                     |     r2 = *((r0 + 0xc));
    0x00020f28 cmp r2, 0                             |     
                                                     |     if (r2 == 0) {
    0x00020f2c beq 0x20f50                           |         goto label_1;
                                                     |     }
    0x00020f30 ldr r0, [r0, 0x18]                    |     r0 = *((r0 + 0x18));
    0x00020f34 mov r2, 4                             |     r2 = 4;
    0x00020f38 add r1, sp, r2                        |     r1 = sp + r2;
    0x00020f3c add r0, r0, r6                        |     r0 += r6;
    0x00020f40 bl 0x5950                             |     memcpy (r0, r1, r2);
    0x00020f44 mov r0, 0                             |     r0 = 0;
                                                     |     do {
                                                     | label_0:
    0x00020f48 add sp, sp, 8                         |         
    0x00020f4c pop {r4, r5, r6, pc}                  |         
                                                     | label_1:
    0x00020f50 ldr r2, [pc, 0x10]                    |         r2 = *(0x20f64);
    0x00020f54 mov r1, r5                            |         r1 = r5;
    0x00020f58 add r2, pc, r2                        |         r2 = pc + r2;
    0x00020f5c mov r0, r4                            |         r0 = r4;
    0x00020f60 bl 0xc6f8                             |         fcn_0000c6f8 (r0, r1, r2, r3, r4);
    0x00020f64 b 0x20f48                             |         
                                                     |     } while (1);
                                                     | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/lib/libblkid.so.1.1.0 @ 0x24848 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00024848 ()                                      | void fcn_00024848 (int32_t arg1, int32_t arg2) {
                                                                 |     wchar_t * pwc;
                                                                 |     int32_t var_ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x00024848 push {r0, r1, r2, r4, r5, r6, r7, r8, sb, lr}     |     
    0x0002484c mov r4, r0                                        |     r4 = r0;
    0x00024850 mov r5, r1                                        |     r5 = r1;
    0x00024854 cmp r1, 3                                         |     
                                                                 |     if (r1 > 3) {
                                                                 |         /* switch table (4 cases) at 0x24860 */
    0x00024858 addls pc, pc, r1, lsl 2                           |         pc += (r1 << 2);
                                                                 |     }
    0x0002485c b 0x249bc                                         |     goto label_1;
    0x00024860 b 0x24870                                         |     goto label_2;
    0x00024864 b 0x2493c                                         |     goto label_3;
    0x00024868 b 0x249ac                                         |     goto label_4;
    0x0002486c b 0x2499c                                         |     goto label_5;
                                                                 | label_2:
    0x00024870 ldr r7, [r0, 0x14]                                |     r7 = *((r0 + 0x14));
    0x00024874 cmp r7, 0                                         |     
                                                                 |     if (r7 != 0) {
    0x00024878 moveq r5, 1                                       |         r5 = 1;
                                                                 |     }
                                                                 |     if (r7 != 0) {
    0x0002487c beq 0x248c4                                       |         
    0x00024880 ldr r3, [r0]                                      |         r3 = *(r0);
    0x00024884 mov r2, 0                                         |         r2 = 0;
    0x00024888 adds r7, r3, r7                                   |         r7 = r3 + r7;
                                                                 |         if (r7 != r3) {
    0x0002488c moveq r6, 1                                       |             r6 = 1;
                                                                 |         }
                                                                 |         if (r7 == r3) {
    0x00024890 movne r6, r2                                      |             r6 = r2;
                                                                 |         }
    0x00024894 cmp r3, r2                                        |         
                                                                 |         if (r3 != r2) {
    0x00024898 moveq r6, 1                                       |             r6 = 1;
                                                                 |         }
    0x0002489c cmp r6, r2                                        |         
    0x000248a0 str r2, [sp, 4]                                   |         pwc = r2;
                                                                 |         if (r6 != r2) {
    0x000248a4 bne 0x248c4                                       |             goto label_0;
                                                                 |         }
    0x000248a8 cmp r3, r7                                        |         
                                                                 |         if (r3 == r7) {
    0x000248ac beq 0x248c4                                       |             goto label_0;
                                                                 |         }
    0x000248b0 ldrsb r2, [r3]                                    |         r2 = *(r3);
    0x000248b4 cmp r2, 0                                         |         
                                                                 |         if (r2 == 0) {
    0x000248b8 movne r8, r3                                      |             r8 = r3;
                                                                 |         }
                                                                 |         if (r2 == 0) {
    0x000248bc addne sb, sp, 4                                   |             sb += pwc;
                                                                 |         }
                                                                 |         if (r2 != 0) {
    0x000248c0 bne 0x24900                                       |             goto label_6;
                                                                 |         }
                                                                 |     }
                                                                 | label_0:
    0x000248c4 mov r0, r5                                        |     r0 = r5;
    0x000248c8 add sp, sp, 0xc                                   |     
    0x000248cc pop {r4, r5, r6, r7, r8, sb, pc}                  |     
                                                                 |     do {
    0x000248d0 bl 0x5c80                                         |         stdlib_mb_cur_max ();
    0x000248d4 mov r3, 0                                         |         r3 = 0;
    0x000248d8 mov r1, r8                                        |         r1 = r8;
    0x000248dc mov r2, r0                                        |         r2 = r0;
    0x000248e0 mov r0, sb                                        |         r0 = sb;
    0x000248e4 bl 0x59b0                                         |         mbrtowc (r0, r1, r2, r3);
    0x000248e8 mov r3, r8                                        |         r3 = r8;
    0x000248ec cmn r0, 2                                         |         
                                                                 |         if (r0 < 2) {
    0x000248f0 addhs r2, r8, 1                                   |             r2 = r8 + 1;
                                                                 |         }
                                                                 |         if (r0 >= 2) {
    0x000248f4 addlo r2, r8, r0                                  |             r2 = r8 + r0;
                                                                 |         }
    0x000248f8 mov r6, r0                                        |         r6 = r0;
    0x000248fc mov r8, r2                                        |         r8 = r2;
                                                                 | label_6:
    0x00024900 cmp r7, r8                                        |         
    0x00024904 bhi 0x248d0                                       |         
                                                                 |     } while (r7 > r8);
    0x00024908 cmp r7, r3                                        |     
                                                                 |     if (r7 == r3) {
    0x0002490c beq 0x248c4                                       |         goto label_0;
                                                                 |     }
    0x00024910 ldr r0, [sp, 4]                                   |     r0 = pwc;
    0x00024914 bl 0x5d70                                         |     wcwidth ();
    0x00024918 cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x0002491c beq 0x248c4                                       |         goto label_0;
                                                                 |     }
    0x00024920 ldr r3, [r4, 0x14]                                |     r3 = *((r4 + 0x14));
    0x00024924 sub r6, r3, r6                                    |     r6 = r3 - r6;
    0x00024928 ldr r3, [r4, 0x18]                                |     r3 = *((r4 + 0x18));
    0x0002492c str r6, [r4, 0x14]                                |     *((r4 + 0x14)) = r6;
    0x00024930 sub r0, r3, r0                                    |     r0 = r3 - r0;
    0x00024934 str r0, [r4, 0x18]                                |     *((r4 + 0x18)) = r0;
    0x00024938 b 0x248c4                                         |     goto label_0;
                                                                 | label_3:
    0x0002493c ldr r2, [r0, 0x18]                                |     r2 = *((r0 + 0x18));
    0x00024940 ldr r3, [r0, 0xc]                                 |     r3 = *((r0 + 0xc));
    0x00024944 cmp r2, r3                                        |     
                                                                 |     if (r2 >= r3) {
    0x00024948 bhs 0x248c4                                       |         goto label_0;
                                                                 |     }
    0x0002494c ldr r2, [r0]                                      |     r2 = *(r0);
    0x00024950 ldr r3, [r0, 0x14]                                |     r3 = *((r0 + 0x14));
    0x00024954 adds r0, r2, r3                                   |     r0 = r2 + r3;
                                                                 |     if (r0 == r2) {
    0x00024958 beq 0x24994                                       |         goto label_7;
                                                                 |     }
    0x0002495c ldrsb r3, [r2, r3]                                |     r3 = *((r2 + r3));
    0x00024960 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00024964 beq 0x24994                                       |         goto label_7;
                                                                 |     }
    0x00024968 add r1, sp, 4                                     |     r1 += pwc;
    0x0002496c bl 0x24704                                        |     r0 = fcn_00024704 (r0, r1);
    0x00024970 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00024974 beq 0x24994                                       |         goto label_7;
                                                                 |     }
    0x00024978 ldr r3, [r4, 0x14]                                |     r3 = *((r4 + 0x14));
    0x0002497c ldr r2, [sp, 4]                                   |     r2 = pwc;
    0x00024980 add r0, r3, r0                                    |     r0 = r3 + r0;
    0x00024984 ldr r3, [r4, 0x18]                                |     r3 = *((r4 + 0x18));
    0x00024988 str r0, [r4, 0x14]                                |     *((r4 + 0x14)) = r0;
    0x0002498c add r3, r3, r2                                    |     r3 += r2;
                                                                 |     do {
    0x00024990 str r3, [r4, 0x18]                                |         *((r4 + 0x18)) = r3;
                                                                 | label_7:
    0x00024994 mov r5, 0                                         |         r5 = 0;
    0x00024998 b 0x248c4                                         |         goto label_0;
                                                                 | label_5:
    0x0002499c mov r5, 0                                         |         r5 = 0;
    0x000249a0 str r5, [r0, 0x14]                                |         *((r0 + 0x14)) = r5;
    0x000249a4 str r5, [r0, 0x18]                                |         *((r0 + 0x18)) = r5;
    0x000249a8 b 0x248c4                                         |         goto label_0;
                                                                 | label_4:
    0x000249ac ldr r3, [r0, 0x10]                                |         r3 = *((r0 + 0x10));
    0x000249b0 str r3, [r0, 0x14]                                |         *((r0 + 0x14)) = r3;
    0x000249b4 ldr r3, [r0, 0xc]                                 |         r3 = *((r0 + 0xc));
    0x000249b8 b 0x24990                                         |         
                                                                 |     } while (1);
                                                                 | label_1:
    0x000249bc mvn r5, 0x15                                      |     r5 = ~0x15;
    0x000249c0 b 0x248c4                                         |     goto label_0;
                                                                 | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/lib/libblkid.so.1.1.0 @ 0x261f8 */
                                                             | #include <stdint.h>
                                                             |  
                                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                             |  
    ; (fcn) fcn.000261f8 ()                                  | void fcn_000261f8 (int32_t arg_0h, int32_t arg1, int32_t arg2) {
                                                             |     int32_t var_0h;
                                                             |     int32_t var_8h_4;
                                                             |     int32_t var_8h_5;
                                                             |     int32_t var_10h;
                                                             |     int32_t var_e8h_2;
                                                             |     int32_t var_e8h_3;
                                                             |     int32_t var_28h;
                                                             |     int32_t var_34h;
                                                             |     int32_t var_38h;
                                                             |     int32_t var_3ch;
                                                             |     int32_t var_40h;
                                                             |     int32_t var_44h;
                                                             |     int32_t var_48h;
                                                             |     int32_t var_48h_2;
                                                             |     int32_t var_50h;
                                                             |     int32_t var_54h;
                                                             |     int32_t var_58h;
                                                             |     int32_t var_58h_2;
                                                             |     int32_t var_60h;
                                                             |     int32_t var_64h;
                                                             |     int32_t var_dh;
                                                             |     char * s1;
                                                             |     int32_t var_1h;
                                                             |     int32_t var_6fh;
                                                             |     int32_t var_78h;
                                                             |     int32_t var_90h;
                                                             |     int32_t var_7h;
                                                             |     int32_t var_80h;
                                                             |     int32_t var_88h;
                                                             |     int32_t var_a6h;
                                                             |     int32_t var_a8h;
                                                             |     int32_t var_ach;
                                                             |     int32_t var_b0h;
                                                             |     int32_t var_b0h_2;
                                                             |     int32_t var_b8h;
                                                             |     int32_t var_d8h;
                                                             |     int32_t var_dch;
                                                             |     int32_t var_e0h;
                                                             |     int32_t var_e4h;
                                                             |     int32_t var_e8h;
                                                             |     int32_t var_10h_3;
                                                             |     int32_t var_f0h;
                                                             |     int32_t var_f4h;
                                                             |     int32_t var_f8h;
                                                             |     int32_t var_fch;
                                                             |     int32_t var_100h;
                                                             |     int32_t var_104h;
                                                             |     int32_t var_108h;
                                                             |     int32_t var_0h_2;
                                                             |     int32_t var_8h_2;
                                                             |     int32_t var_8h_3;
                                                             |     int32_t var_10h_2;
                                                             |     int32_t var_28h_3;
                                                             |     int32_t var_30h;
                                                             |     int32_t var_8h;
                                                             |     int32_t var_ch_2;
                                                             |     int32_t var_18h;
                                                             |     int32_t var_1ch;
                                                             |     int32_t var_20h;
                                                             |     int32_t var_24h;
                                                             |     int32_t var_28h_2;
                                                             |     int32_t var_2ch;
                                                             |     int32_t var_4c0h;
                                                             |     int32_t var_ch;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
    0x000261f8 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}     |     
    0x000261fc sub sp, sp, 0x4c0                             |     
    0x00026200 sub sp, sp, 0xc                               |     
    0x00026204 add r3, sp, 0x80                              |     r3 += var_80h;
    0x00026208 str r3, [sp, 0x40]                            |     var_40h = r3;
    0x0002620c mov r3, 0                                     |     r3 = 0;
    0x00026210 str r3, [sp, 0x50]                            |     var_50h = r3;
    0x00026214 str r3, [sp, 0x38]                            |     var_38h = r3;
    0x00026218 mvn r3, 1                                     |     r3 = ~1;
    0x0002621c str r3, [sp, 0x34]                            |     var_34h = r3;
    0x00026220 ldr r3, [sp, 0x40]                            |     r3 = var_40h;
    0x00026224 mov r5, r0                                    |     r5 = r0;
    0x00026228 add r4, sp, 0x108                             |     r4 += var_108h;
    0x0002622c str r3, [sp, 0x64]                            |     var_64h = r3;
                                                             | label_22:
    0x00026230 ldr r3, [sp, 0x40]                            |     r3 = var_40h;
    0x00026234 ldr r2, [sp, 0x38]                            |     r2 = var_38h;
    0x00026238 strh r2, [r3]                                 |     *(r3) = r2;
    0x0002623c ldr r2, [sp, 0x40]                            |     r2 = var_40h;
    0x00026240 add r3, sp, 0xa6                              |     r3 += var_a6h;
    0x00026244 cmp r2, r3                                    |     
                                                             |     if (r2 >= r3) {
    0x00026248 bhs 0x276d8                                   |         goto label_51;
                                                             |     }
    0x0002624c ldr r3, [sp, 0x38]                            |     r3 = var_38h;
    0x00026250 cmp r3, 0xc                                   |     
                                                             |     if (r3 == 0xc) {
    0x00026254 beq 0x276e0                                   |         goto label_52;
                                                             |     }
    0x00026258 ldr r3, [pc, 0x5b8]                           |     r3 = *(0x26814);
    0x0002625c ldr r2, [sp, 0x38]                            |     r2 = var_38h;
    0x00026260 add r3, pc, r3                                |     r3 = pc + r3;
    0x00026264 ldrsb r3, [r3, r2]                            |     r3 = *((r3 + r2));
    0x00026268 cmn r3, 0x5d                                  |     
    0x0002626c str r3, [sp, 0x44]                            |     var_44h = r3;
                                                             |     if (r3 == 0x5d) {
    0x00026270 beq 0x26a10                                   |         goto label_53;
                                                             |     }
    0x00026274 ldr r3, [sp, 0x34]                            |     r3 = var_34h;
    0x00026278 cmn r3, 2                                     |     
                                                             |     if (r3 != 2) {
    0x0002627c bne 0x26794                                   |         goto label_54;
                                                             |     }
                                                             |     do {
                                                             | label_0:
    0x00026280 ldr r6, [r5]                                  |         r6 = *(r5);
    0x00026284 ldrsb r7, [r6]                                |         r7 = *(r6);
    0x00026288 and r1, r7, 0xff                              |         r1 = r7 & 0xff;
    0x0002628c mov r0, r1                                    |         r0 = r1;
    0x00026290 bl 0x25d10                                    |         r0 = fcn_00025d10 (r0);
    0x00026294 subs r3, r0, 0                                |         r3 = r0 - 0;
                                                             |         if (r3 == r0) {
    0x00026298 addne r6, r6, 1                               |             r6++;
                                                             |         }
    0x0002629c str r3, [sp, 0x34]                            |         var_34h = r3;
                                                             |         if (r3 == r0) {
    0x000262a0 strne r6, [r5]                                |             *(r5) = r6;
                                                             |         }
    0x000262a4 bne 0x26280                                   |         
                                                             |     } while (r3 != r0);
    0x000262a8 sub r2, r7, 0x30                              |     r2 = r7 - 0x30;
    0x000262ac sub r3, r1, 0x2b                              |     r3 = r1 - 0x2b;
    0x000262b0 cmp r2, 9                                     |     
    0x000262b4 and r3, r3, 0xfd                              |     r3 &= 0xfd;
                                                             |     if (r2 < 9) {
    0x000262b8 bls 0x26324                                   |         goto label_55;
                                                             |     }
    0x000262bc cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x000262c0 beq 0x2632c                                   |         goto label_56;
                                                             |     }
    0x000262c4 cmp r7, 0x41                                  |     
                                                             |     if (r7 >= 0x41) {
    0x000262c8 blt 0x262e0                                   |         
    0x000262cc cmp r7, 0x5a                                  |         
                                                             |         if (r7 <= 0x5a) {
    0x000262d0 ble 0x2657c                                   |             goto label_57;
                                                             |         }
    0x000262d4 sub r3, r7, 0x61                              |         r3 = r7 - 0x61;
    0x000262d8 cmp r3, 0x19                                  |         
                                                             |         if (r3 < 0x19) {
    0x000262dc bls 0x2657c                                   |             goto label_57;
                                                             |         }
                                                             |     }
    0x000262e0 cmp r1, 0x28                                  |     
                                                             |     if (r1 != 0x28) {
    0x000262e4 bne 0x26958                                   |         goto label_58;
                                                             |     }
    0x000262e8 mov r2, 0                                     |     r2 = 0;
                                                             |     do {
    0x000262ec ldr r3, [r5]                                  |         r3 = *(r5);
    0x000262f0 add r1, r3, 1                                 |         r1 = r3 + 1;
    0x000262f4 str r1, [r5]                                  |         *(r5) = r1;
    0x000262f8 ldrb r3, [r3]                                 |         r3 = *(r3);
    0x000262fc cmp r3, 0                                     |         
                                                             |         if (r3 == 0) {
    0x00026300 beq 0x26970                                   |             goto label_59;
                                                             |         }
    0x00026304 cmp r3, 0x28                                  |         
                                                             |         if (r3 != 0x28) {
    0x00026308 addeq r2, r2, 1                               |             r2++;
                                                             |         }
                                                             |         if (r3 != 0x28) {
    0x0002630c beq 0x26318                                   |             
    0x00026310 cmp r3, 0x29                                  |             
                                                             |             if (r3 == 0x29) {
    0x00026314 subeq r2, r2, 1                               |                 r2--;
                                                             |                 goto label_60;
                                                             |             }
                                                             |         }
                                                             | label_60:
    0x00026318 cmp r2, 0                                     |         
    0x0002631c bne 0x262ec                                   |         
                                                             |     } while (r2 != 0);
    0x00026320 b 0x26280                                     |     goto label_0;
                                                             | label_55:
    0x00026324 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00026328 bne 0x2636c                                   |         goto label_61;
                                                             |     }
                                                             | label_56:
    0x0002632c cmp r1, 0x2d                                  |     
                                                             |     if (r1 == 0x2d) {
    0x00026330 movne r3, 1                                   |         r3 = 1;
                                                             |     }
                                                             |     if (r1 != 0x2d) {
    0x00026334 mvneq r3, 0                                   |         r3 = ~0;
                                                             |     }
    0x00026338 str r3, [sp, 0x34]                            |     var_34h = r3;
                                                             |     do {
    0x0002633c ldr r3, [r5]                                  |         r3 = *(r5);
    0x00026340 add r2, r3, 1                                 |         r2 = r3 + 1;
    0x00026344 str r2, [r5]                                  |         *(r5) = r2;
    0x00026348 ldrsb r6, [r3, 1]                             |         r6 = *((r3 + 1));
    0x0002634c and r1, r6, 0xff                              |         r1 = r6 & 0xff;
    0x00026350 mov r0, r1                                    |         r0 = r1;
    0x00026354 bl 0x25d10                                    |         r0 = fcn_00025d10 (r0);
    0x00026358 cmp r0, 0                                     |         
    0x0002635c bne 0x2633c                                   |         
                                                             |     } while (r0 != 0);
    0x00026360 sub r6, r6, 0x30                              |     r6 -= 0x30;
    0x00026364 cmp r6, 9                                     |     
                                                             |     if (r6 > 9) {
    0x00026368 bhi 0x26280                                   |         goto label_0;
                                                             |     }
                                                             | label_61:
    0x0002636c ldr lr, [r5]                                  |     
    0x00026370 mov r8, 0                                     |     r8 = 0;
    0x00026374 mov ip, lr                                    |     
    0x00026378 mov sb, 0                                     |     sb = 0;
    0x0002637c mov sl, 0xa                                   |     sl = 0xa;
                                                             |     do {
    0x00026380 sub r0, r1, 0x30                              |         r0 = r1 - 0x30;
    0x00026384 asr r1, r0, 0x1f                              |         r1 = r0 >> 0x1f;
    0x00026388 adds r2, r0, r8                               |         r2 = r0 + r8;
    0x0002638c adcs r3, r1, sb                               |         __asm ("adcs r3, r1, sb");
    0x00026390 mov r6, 0                                     |         r6 = 0;
    0x00026394 mov r7, 0                                     |         r7 = 0;
                                                             |         if (r2 < r0) {
    0x00026398 movhs r6, 1                                   |             r6 = 1;
                                                             |         }
                                                             |         if (r2 < r0) {
    0x0002639c movhs r7, 0                                   |             r7 = 0;
                                                             |         }
    0x000263a0 orrs r1, r6, r7                               |         r1 = r6 | r7;
                                                             |         if (r1 != r6) {
    0x000263a4 bne 0x26538                                   |             goto label_8;
                                                             |         }
    0x000263a8 ldrsb r0, [ip, 1]!                            |         r0 = *((ip += 1));
    0x000263ac sub r6, r0, 0x30                              |         r6 = r0 - 0x30;
    0x000263b0 cmp r6, 9                                     |         
    0x000263b4 and r1, r0, 0xff                              |         r1 = r0 & 0xff;
                                                             |         if (r6 >= 9) {
    0x000263b8 bls 0x26434                                   |             
    0x000263bc bic r0, r0, 2                                 |             r0 = BIT_MASK (r0, 2);
    0x000263c0 cmp r0, 0x2c                                  |             
                                                             |             if (r0 == 0x2c) {
    0x000263c4 beq 0x26458                                   |                 goto label_62;
                                                             |             }
                                                             | label_1:
    0x000263c8 ldr r1, [sp, 0x34]                            |             r1 = var_34h;
    0x000263cc lsr r1, r1, 0x1f                              |             r1 >>= 0x1f;
    0x000263d0 str r1, [sp, 0xa8]                            |             var_a8h = r1;
    0x000263d4 ldr r1, [sp, 0x34]                            |             r1 = var_34h;
    0x000263d8 cmn r1, 1                                     |             
                                                             |             if (r1 != 1) {
    0x000263dc bne 0x26568                                   |                 goto label_63;
                                                             |             }
    0x000263e0 rsbs r2, r2, 0                                |             r2 -= ;
    0x000263e4 rsc r3, r3, 0                                 |             __asm ("rsc r3, r3, 0");
    0x000263e8 cmp r2, 1                                     |             
    0x000263ec strd r2, r3, [sp, 0x48]                       |             __asm ("strd r2, r3, [var_48h]");
    0x000263f0 sbcs r3, r3, 0                                |             __asm ("sbcs r3, r3, 0");
                                                             |             if (r2 >= 1) {
    0x000263f4 bge 0x26538                                   |                 goto label_8;
                                                             |             }
                                                             | label_7:
    0x000263f8 sub r3, ip, lr                                |             r3 = ip - lr;
    0x000263fc ldr r1, [sp, 0x34]                            |             r1 = var_34h;
    0x00026400 str r3, [sp, 0x60]                            |             var_60h = r3;
    0x00026404 ldr r3, [pc, 0x410]                           |             r3 = *(0x26818);
    0x00026408 ldr r2, [pc, 0x410]                           |             r2 = *(0x2681c);
    0x0002640c cmp r1, 0                                     |             
                                                             |             if (r1 == 0) {
    0x00026410 movne r2, r3                                  |                 r2 = r3;
                                                             |             }
    0x00026414 str ip, [r5]                                  |             *(r5) = ip;
    0x00026418 str r2, [sp, 0x34]                            |             var_34h = r2;
                                                             | label_2:
    0x0002641c ldr r3, [pc, 0x400]                           |             r3 = *(0x26820);
    0x00026420 ldr r2, [sp, 0x34]                            |             r2 = var_34h;
    0x00026424 add r3, pc, r3                                |             r3 = pc + r3;
    0x00026428 add r3, r3, r2                                |             r3 += r2;
    0x0002642c ldrb r3, [r3, 0x72]                           |             r3 = *((r3 + 0x72));
    0x00026430 b 0x26970                                     |             goto label_59;
                                                             |         }
    0x00026434 add r7, pc, 0x3d4                             |         r7 = pc + 0x3d4;
    0x00026438 ldrd r6, r7, [r7]                             |         __asm ("ldrd r6, r7, [r7]");
    0x0002643c cmp r3, r7                                    |         
    0x00026440 cmpeq r2, r6                                  |         __asm ("cmpeq r2, r6");
                                                             |         if (r3 > r7) {
    0x00026444 bhi 0x26538                                   |             goto label_8;
                                                             |         }
    0x00026448 umull r8, sb, r2, sl                          |         r8:sb = r2 * sl;
    0x0002644c mla r0, sl, r3, sb                            |         __asm ("mla r0, sl, r3, sb");
    0x00026450 mov sb, r0                                    |         sb = r0;
    0x00026454 b 0x26380                                     |         
                                                             |     } while (1);
                                                             | label_62:
    0x00026458 ldrsb r6, [ip, 1]                             |     r6 = *((ip + 1));
    0x0002645c sub r6, r6, 0x30                              |     r6 -= 0x30;
    0x00026460 cmp r6, 9                                     |     
                                                             |     if (r6 > 9) {
    0x00026464 bhi 0x263c8                                   |         goto label_1;
                                                             |     }
    0x00026468 ldr r1, [sp, 0x34]                            |     r1 = var_34h;
    0x0002646c cmn r1, 1                                     |     
                                                             |     if (r1 != 1) {
    0x00026470 bne 0x26530                                   |         goto label_64;
                                                             |     }
    0x00026474 rsb lr, r2, 0                                 |     lr = r2 - ;
    0x00026478 cmp lr, 0                                     |     
                                                             |     if (lr > 0) {
    0x0002647c bgt 0x26538                                   |         goto label_8;
                                                             |     }
                                                             | label_3:
    0x00026480 asr r1, r2, 0x1f                              |     r1 = r2 >> 0x1f;
    0x00026484 cmp r3, r1                                    |     
    0x00026488 cmpeq r2, r2                                  |     __asm ("cmpeq r2, r2");
                                                             |     if (r3 != r1) {
    0x0002648c bne 0x26538                                   |         goto label_8;
                                                             |     }
    0x00026490 add ip, ip, 2                                 |     
    0x00026494 mov r2, 8                                     |     r2 = 8;
    0x00026498 mov r1, 0xa                                   |     r1 = 0xa;
                                                             |     do {
    0x0002649c ldrsb r3, [ip]                                |         r3 = *(ip);
    0x000264a0 mul r6, r1, r6                                |         r6 = r1 * r6;
    0x000264a4 sub r3, r3, 0x30                              |         r3 -= 0x30;
    0x000264a8 cmp r3, 9                                     |         
                                                             |         if (r3 > 9) {
    0x000264ac addls ip, ip, 1                               |             
                                                             |         }
                                                             |         if (r3 > 9) {
    0x000264b0 addls r6, r6, r3                              |             r6 += r3;
                                                             |         }
    0x000264b4 subs r2, r2, 1                                |         r2--;
    0x000264b8 bne 0x2649c                                   |         
                                                             |     } while (r2 != r2);
    0x000264bc ldr r3, [sp, 0x34]                            |     r3 = var_34h;
    0x000264c0 cmn r3, 1                                     |     
                                                             |     if (r3 != 1) {
    0x000264c4 moveq r2, ip                                  |         r2 = ip;
                                                             |     }
                                                             |     if (r3 == 1) {
    0x000264c8 beq 0x26540                                   |         goto label_6;
                                                             |     }
                                                             |     do {
                                                             | label_5:
    0x000264cc mov r3, ip                                    |         r3 = ip;
    0x000264d0 ldrsb r2, [r3]                                |         r2 = *(r3);
    0x000264d4 add ip, ip, 1                                 |         
    0x000264d8 sub r2, r2, 0x30                              |         r2 -= 0x30;
    0x000264dc cmp r2, 9                                     |         
    0x000264e0 bls 0x264cc                                   |         
                                                             |     } while (r2 < 9);
    0x000264e4 ldr r1, [sp, 0x34]                            |     r1 = var_34h;
    0x000264e8 adds r2, r6, 0                                |     r2 = r6 + 0;
                                                             |     if (r2 == r6) {
    0x000264ec movne r2, 1                                   |         r2 = 1;
                                                             |     }
    0x000264f0 ands r2, r2, r1, lsr 31                       |     r2 &= (r1 >> 31);
                                                             |     if (r2 != r2) {
    0x000264f4 beq 0x2650c                                   |         
    0x000264f8 subs lr, lr, 1                                |         lr--;
                                                             |         if (lr >= lr) {
    0x000264fc bpl 0x26538                                   |             goto label_8;
                                                             |         }
    0x00026500 rsb r6, r6, 0x3b800000                        |         r6 = 0x3b800000 - r6;
    0x00026504 add r6, r6, 0x1ac000                          |         r6 += 0x1ac000;
    0x00026508 add r6, r6, 0xa00                             |         r6 += 0xa00;
                                                             |     }
    0x0002650c str r3, [r5]                                  |     *(r5) = r3;
    0x00026510 ldr r3, [sp, 0x34]                            |     r3 = var_34h;
    0x00026514 str lr, [sp, 0xa8]                            |     var_a8h = lr;
    0x00026518 cmp r3, 0                                     |     
    0x0002651c ldr r3, [pc, 0x304]                           |     r3 = *(0x26824);
                                                             |     if (r3 == 0) {
    0x00026520 movne r3, 0x114                               |         r3 = 0x114;
                                                             |     }
    0x00026524 str r6, [sp, 0xac]                            |     var_ach = r6;
                                                             | label_4:
    0x00026528 str r3, [sp, 0x34]                            |     var_34h = r3;
    0x0002652c b 0x2641c                                     |     goto label_2;
                                                             | label_64:
    0x00026530 subs lr, r2, 0                                |     lr = r2 - 0;
                                                             |     if (lr >= r2) {
    0x00026534 bge 0x26480                                   |         goto label_3;
                                                             |     }
                                                             | label_8:
    0x00026538 mov r3, 0x3f                                  |     r3 = 0x3f;
    0x0002653c b 0x26528                                     |     goto label_4;
                                                             | label_6:
    0x00026540 ldrsb r3, [r2]                                |     r3 = *(r2);
    0x00026544 mov ip, r2                                    |     
    0x00026548 sub r1, r3, 0x30                              |     r1 = r3 - 0x30;
    0x0002654c cmp r1, 9                                     |     
    0x00026550 add r2, r2, 1                                 |     r2++;
                                                             |     if (r1 > 9) {
    0x00026554 bhi 0x264cc                                   |         goto label_5;
                                                             |     }
    0x00026558 cmp r3, 0x30                                  |     
                                                             |     if (r3 == 0x30) {
    0x0002655c beq 0x26540                                   |         goto label_6;
                                                             |     }
    0x00026560 add r6, r6, 1                                 |     r6++;
    0x00026564 b 0x264cc                                     |     goto label_5;
                                                             | label_63:
    0x00026568 cmp r2, 0                                     |     
    0x0002656c strd r2, r3, [sp, 0x48]                       |     __asm ("strd r2, r3, [var_48h]");
    0x00026570 sbcs r3, r3, 0                                |     __asm ("sbcs r3, r3, 0");
                                                             |     if (r2 >= 0) {
    0x00026574 bge 0x263f8                                   |         goto label_7;
                                                             |     }
    0x00026578 b 0x26538                                     |     goto label_8;
                                                             | label_57:
    0x0002657c add r0, sp, 0x78                              |     r0 += var_78h;
    0x00026580 sub r3, r0, 0xc                               |     r3 -= s1;
    0x00026584 mov r6, r3                                    |     r6 = r3;
    0x00026588 add ip, r0, 7                                 |     
                                                             |     do {
                                                             | label_9:
    0x0002658c ldr r2, [r5]                                  |         r2 = *(r5);
    0x00026590 cmp r3, ip                                    |         
                                                             |         if (r3 >= ip) {
    0x00026594 strblo r1, [r3]                               |             *(r3) = r1;
                                                             |         }
    0x00026598 add r1, r2, 1                                 |         r1 = r2 + 1;
    0x0002659c str r1, [r5]                                  |         *(r5) = r1;
    0x000265a0 ldrsb r2, [r2, 1]                             |         r2 = *((r2 + 1));
                                                             |         if (r3 >= ip) {
    0x000265a4 addlo r3, r3, 1                               |             r3 += var_1h;
                                                             |         }
    0x000265a8 cmp r2, 0x41                                  |         
    0x000265ac and r1, r2, 0xff                              |         r1 = r2 & 0xff;
                                                             |         if (r2 < 0x41) {
    0x000265b0 blt 0x265c8                                   |             goto label_65;
                                                             |         }
    0x000265b4 cmp r2, 0x5a                                  |         
    0x000265b8 ble 0x2658c                                   |         
                                                             |     } while (r2 <= 0x5a);
    0x000265bc sub r2, r2, 0x61                              |     r2 -= 0x61;
    0x000265c0 cmp r2, 0x19                                  |     
                                                             |     if (r2 < 0x19) {
    0x000265c4 bls 0x2658c                                   |         goto label_9;
                                                             |     }
                                                             | label_65:
    0x000265c8 cmp r1, 0x2e                                  |     
                                                             |     if (r1 == 0x2e) {
    0x000265cc beq 0x2658c                                   |         goto label_9;
                                                             |     }
    0x000265d0 mov r2, 0                                     |     r2 = 0;
    0x000265d4 strb r2, [r3]                                 |     *(r3) = r2;
    0x000265d8 sub r3, r0, 0xd                               |     r3 -= var_dh;
    0x000265dc str r3, [sp, 0x3c]                            |     var_3ch = r3;
                                                             | label_10:
    0x000265e0 ldrsb sb, [r3, 1]!                            |     sb = s1;
    0x000265e4 cmp sb, 0                                     |     
                                                             |     if (sb != 0) {
    0x000265e8 bne 0x26750                                   |         goto label_66;
                                                             |     }
    0x000265ec ldr sl, [pc, 0x238]                           |     
    0x000265f0 add sl, pc, sl                                |     sl = pc + sl;
    0x000265f4 add sl, sl, 0x27c                             |     sl = 0x26aa4;
                                                             | label_11:
    0x000265f8 ldr r8, [sb, sl]                              |     r8 = *((sb + sl));
    0x000265fc add r7, sl, sb                                |     r7 = sl + sb;
    0x00026600 cmp r8, 0                                     |     
                                                             |     if (r8 != 0) {
    0x00026604 bne 0x26768                                   |         goto label_67;
                                                             |     }
    0x00026608 mov r0, r6                                    |     r0 = r6;
    0x0002660c bl 0x6118                                     |     r0 = strlen (r0);
    0x00026610 cmp r0, 3                                     |     
    0x00026614 mov sb, r0                                    |     sb = r0;
                                                             |     if (r0 != 3) {
    0x00026618 moveq r8, 1                                   |         r8 = 1;
                                                             |     }
                                                             |     if (r0 != 3) {
    0x0002661c beq 0x26634                                   |         
    0x00026620 cmp r0, 4                                     |         
    0x00026624 ldrsbeq r8, [sp, 0x6f]                        |         __asm ("ldrsbeq r8, [var_6fh]");
                                                             |         if (r0 != 4) {
    0x00026628 subeq r8, r8, 0x2e                            |             r8 -= 0x2e;
                                                             |         }
    0x0002662c clzeq r8, r8                                  |         __asm ("clzeq r8, r8");
                                                             |         if (r0 == 4) {
    0x00026630 lsreq r8, r8, 5                               |             r8 >>= 5;
                                                             |             goto label_68;
                                                             |         }
                                                             |     }
                                                             | label_68:
    0x00026634 ldr r3, [pc, 0x1f4]                           |     r3 = *(0x2682c);
    0x00026638 mov sl, 0                                     |     sl = 0;
    0x0002663c add r3, pc, r3                                |     r3 = pc + r3;
    0x00026640 add fp, r3, 0x2b8                             |     
    0x00026644 str r3, [sp, 0x54]                            |     var_54h = r3;
                                                             | label_12:
    0x00026648 ldr r1, [sl, fp]                              |     r1 = *((sl + fp));
    0x0002664c add r7, fp, sl                                |     r7 = fp + sl;
    0x00026650 cmp r1, 0                                     |     
                                                             |     if (r1 != 0) {
    0x00026654 bne 0x267c0                                   |         goto label_69;
                                                             |     }
    0x00026658 mov r1, r6                                    |     r1 = r6;
    0x0002665c mov r0, r5                                    |     r0 = r5;
    0x00026660 bl 0x26144                                    |     r0 = fcn_00026144 (r0, r1);
    0x00026664 subs r7, r0, 0                                |     r7 = r0 - 0;
                                                             |     if (r7 != r0) {
    0x00026668 bne 0x26780                                   |         goto label_13;
                                                             |     }
    0x0002666c ldr r1, [pc, 0x1c0]                           |     r1 = *(0x26830);
    0x00026670 mov r0, r6                                    |     r0 = r6;
    0x00026674 add r1, pc, r1                                |     r1 = pc + r1;
    0x00026678 bl 0x5efc                                     |     r0 = strcmp (r0, r1);
    0x0002667c cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00026680 beq 0x276e8                                   |         goto label_70;
                                                             |     }
    0x00026684 ldr sl, [pc, 0x1ac]                           |     
    0x00026688 mov fp, r7                                    |     
    0x0002668c add sl, pc, sl                                |     sl = pc + sl;
    0x00026690 add sl, sl, 0x3e4                             |     sl = 0x26c18;
                                                             | label_15:
    0x00026694 ldr r1, [fp, sl]                              |     r1 = *((fp + sl));
    0x00026698 add r7, sl, fp                                |     r7 = sl + fp;
    0x0002669c cmp r1, 0                                     |     
                                                             |     if (r1 != 0) {
    0x000266a0 bne 0x267f8                                   |         goto label_71;
                                                             |     }
    0x000266a4 sub fp, sb, 1                                 |     
    0x000266a8 ldrsb r3, [r6, fp]                            |     r3 = *((r6 + fp));
    0x000266ac cmp r3, 0x53                                  |     
                                                             |     if (r3 == 0x53) {
    0x000266b0 bne 0x266e0                                   |         
    0x000266b4 ldr r3, [pc, 0x180]                           |         
    0x000266b8 mov r8, r1                                    |         r8 = r1;
    0x000266bc add r3, pc, r3                                |         r3 = pc + r3;
    0x000266c0 add r3, r3, 0x3e4                             |         r3 = 0x26c1c;
    0x000266c4 strb r1, [r6, fp]                             |         *((r6 + fp)) = r1;
                                                             | label_16:
    0x000266c8 ldr r1, [r8, r3]                              |         r1 = *((r8 + r3));
    0x000266cc add r7, sl, r8                                |         r7 = sl + r8;
    0x000266d0 cmp r1, 0                                     |         
                                                             |         if (r1 != 0) {
    0x000266d4 bne 0x268cc                                   |             goto label_72;
                                                             |         }
    0x000266d8 mov r3, 0x53                                  |         r3 = 0x53;
    0x000266dc strb r3, [r6, fp]                             |         *((r6 + fp)) = r3;
                                                             |     }
    0x000266e0 ldr r8, [pc, 0x158]                           |     
    0x000266e4 mov sl, 0                                     |     sl = 0;
    0x000266e8 add r8, pc, r8                                |     r8 = pc + r8;
    0x000266ec add r8, r8, 0x460                             |     r8 = 0x26c9c;
    0x000266f0 add r8, r8, 8                                 |     r8 += 8;
                                                             | label_17:
    0x000266f4 ldr r1, [sl, r8]                              |     r1 = *((sl + r8));
    0x000266f8 add r7, r8, sl                                |     r7 = r8 + sl;
    0x000266fc cmp r1, 0                                     |     
                                                             |     if (r1 != 0) {
    0x00026700 bne 0x268ec                                   |         goto label_73;
                                                             |     }
    0x00026704 cmp sb, 1                                     |     
    0x00026708 ldrsb r0, [r6]                                |     r0 = *(r6);
                                                             |     if (sb == 1) {
    0x0002670c beq 0x26928                                   |         goto label_74;
                                                             |     }
                                                             | label_19:
    0x00026710 mov r3, r6                                    |     r3 = r6;
                                                             | label_21:
    0x00026714 ldr r1, [sp, 0x3c]                            |     r1 = var_3ch;
    0x00026718 ldrsb r2, [r1, 1]!                            |     r2 = *((r1 += 1));
    0x0002671c cmp r2, 0                                     |     
    0x00026720 str r1, [sp, 0x3c]                            |     var_3ch = r1;
    0x00026724 strb r2, [r3]                                 |     *(r3) = r2;
                                                             |     if (r2 != 0) {
    0x00026728 bne 0x2693c                                   |         goto label_75;
                                                             |     }
    0x0002672c ldr r3, [sp, 0x34]                            |     r3 = var_34h;
    0x00026730 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00026734 beq 0x26538                                   |         goto label_8;
                                                             |     }
    0x00026738 mov r1, r6                                    |     r1 = r6;
    0x0002673c mov r0, r5                                    |     r0 = r5;
    0x00026740 bl 0x26144                                    |     r0 = fcn_00026144 (r0, r1);
    0x00026744 subs r7, r0, 0                                |     r7 = r0 - 0;
                                                             |     if (r7 != r0) {
    0x00026748 bne 0x26780                                   |         goto label_13;
                                                             |     }
    0x0002674c b 0x26538                                     |     goto label_8;
                                                             | label_66:
    0x00026750 and r2, sb, 0xff                              |     r2 = sb & 0xff;
    0x00026754 sub sb, sb, 0x61                              |     sb -= 0x61;
    0x00026758 cmp sb, 0x19                                  |     
                                                             |     if (sb > 0x19) {
    0x0002675c subls r2, r2, 0x20                            |         r2 -= 0x20;
                                                             |     }
    0x00026760 strb r2, [r3]                                 |     *(r3) = r2;
    0x00026764 b 0x265e0                                     |     goto label_10;
                                                             | label_67:
    0x00026768 mov r1, r8                                    |     r1 = r8;
    0x0002676c mov r0, r6                                    |     r0 = r6;
    0x00026770 bl 0x5efc                                     |     strcmp (r0, r1);
    0x00026774 add sb, sb, 0xc                               |     sb += 0xc;
    0x00026778 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x0002677c bne 0x265f8                                   |         goto label_11;
                                                             |     }
                                                             | label_13:
    0x00026780 ldr r2, [r7, 8]                               |     r2 = *((r7 + 8));
    0x00026784 asr r3, r2, 0x1f                              |     r3 = r2 >> 0x1f;
    0x00026788 strd r2, r3, [sp, 0xa8]                       |     __asm ("strd r2, r3, [var_a8h]");
    0x0002678c ldr r3, [r7, 4]                               |     r3 = *((r7 + 4));
    0x00026790 str r3, [sp, 0x34]                            |     var_34h = r3;
                                                             | label_54:
    0x00026794 ldr r3, [sp, 0x34]                            |     r3 = var_34h;
    0x00026798 cmp r3, 0                                     |     
                                                             |     if (r3 > 0) {
    0x0002679c movle r3, 0                                   |         r3 = 0;
                                                             |     }
                                                             |     if (r3 > 0) {
    0x000267a0 strle r3, [sp, 0x34]                          |         var_34h = r3;
                                                             |     }
                                                             |     if (r3 <= 0) {
    0x000267a4 ble 0x26970                                   |         goto label_59;
                                                             |     }
    0x000267a8 ldr r3, [pc, 0x78]                            |     r3 = *(0x26824);
    0x000267ac ldr r2, [sp, 0x34]                            |     r2 = var_34h;
    0x000267b0 cmp r2, r3                                    |     
                                                             |     if (r2 <= r3) {
    0x000267b4 movgt r3, 2                                   |         r3 = 2;
                                                             |     }
                                                             |     if (r2 > r3) {
    0x000267b8 bgt 0x26970                                   |         goto label_59;
                                                             |     }
    0x000267bc b 0x2641c                                     |     goto label_2;
                                                             | label_69:
    0x000267c0 cmp r8, 0                                     |     
                                                             |     if (r8 == 0) {
    0x000267c4 beq 0x267ec                                   |         goto label_76;
                                                             |     }
    0x000267c8 mov r2, 3                                     |     r2 = 3;
    0x000267cc mov r0, r6                                    |     r0 = r6;
    0x000267d0 bl 0x5d34                                     |     r0 = strncmp (r0, r1, r2);
                                                             | label_14:
    0x000267d4 clz r0, r0                                    |     r0 &= r0;
    0x000267d8 lsr r0, r0, 5                                 |     r0 >>= 5;
    0x000267dc cmp r0, 0                                     |     
    0x000267e0 add sl, sl, 0xc                               |     sl += 0xc;
                                                             |     if (r0 == 0) {
    0x000267e4 beq 0x26648                                   |         goto label_12;
                                                             |     }
    0x000267e8 b 0x26780                                     |     goto label_13;
                                                             | label_76:
    0x000267ec mov r0, r6                                    |     r0 = r6;
    0x000267f0 bl 0x5efc                                     |     strcmp (r0, r1);
    0x000267f4 b 0x267d4                                     |     goto label_14;
                                                             | label_71:
    0x000267f8 mov r0, r6                                    |     r0 = r6;
    0x000267fc bl 0x5efc                                     |     strcmp (r0, r1);
    0x00026800 add fp, fp, 0xc                               |     
    0x00026804 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00026808 bne 0x26694                                   |         goto label_15;
                                                             |     }
    0x0002680c b 0x26780                                     |     goto label_13;
                                                             | label_72:
    0x000268cc mov r0, r6                                    |     r0 = r6;
    0x000268d0 str r3, [sp, 0x54]                            |     var_54h = r3;
    0x000268d4 bl 0x5efc                                     |     strcmp (r0, r1);
    0x000268d8 add r8, r8, 0xc                               |     r8 += 0xc;
    0x000268dc ldr r3, [sp, 0x54]                            |     r3 = var_54h;
    0x000268e0 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000268e4 bne 0x266c8                                   |         goto label_16;
                                                             |     }
    0x000268e8 b 0x26780                                     |     goto label_13;
                                                             | label_73:
    0x000268ec mov r0, r6                                    |     r0 = r6;
    0x000268f0 bl 0x5efc                                     |     strcmp (r0, r1);
    0x000268f4 add sl, sl, 0xc                               |     sl += 0xc;
    0x000268f8 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000268fc bne 0x266f4                                   |         goto label_17;
                                                             |     }
    0x00026900 b 0x26780                                     |     goto label_13;
                                                             | label_18:
    0x00026904 ldrsb r2, [r2]                                |     r2 = *(r2);
    0x00026908 add r1, r1, 0xc                               |     r1 += 0xc;
    0x0002690c cmp r2, r0                                    |     
                                                             |     if (r2 == r0) {
    0x00026910 beq 0x26780                                   |         goto label_13;
                                                             |     }
                                                             | label_20:
    0x00026914 ldr r2, [r1, r3]                              |     r2 = *((r1 + r3));
    0x00026918 add r7, r3, r1                                |     r7 = r3 + r1;
    0x0002691c cmp r2, 0                                     |     
                                                             |     if (r2 != 0) {
    0x00026920 bne 0x26904                                   |         goto label_18;
                                                             |     }
    0x00026924 b 0x26710                                     |     goto label_19;
                                                             | label_74:
    0x00026928 ldr r3, [pc, -0xec]                           |     
    0x0002692c add r3, pc, r3                                |     r3 = pc + r3;
    0x00026930 add r3, r3, 0x560                             |     r3 = 0x26da0;
    0x00026934 add r3, r3, 4                                 |     r3 += 4;
    0x00026938 b 0x26914                                     |     goto label_20;
                                                             | label_75:
    0x0002693c ldr r2, [sp, 0x3c]                            |     r2 = var_3ch;
    0x00026940 ldrsb r2, [r2]                                |     r2 = *(r2);
    0x00026944 cmp r2, 0x2e                                  |     
                                                             |     if (r2 != 0x2e) {
    0x00026948 moveq r2, 1                                   |         r2 = 1;
                                                             |     }
                                                             |     if (r2 == 0x2e) {
    0x0002694c addne r3, r3, 1                               |         r3 += var_1h;
                                                             |     }
                                                             |     if (r2 != 0x2e) {
    0x00026950 streq r2, [sp, 0x34]                          |         var_34h = r2;
                                                             |     }
    0x00026954 b 0x26714                                     |     goto label_21;
                                                             | label_58:
    0x00026958 add r3, r6, 1                                 |     r3 = r6 + 1;
    0x0002695c str r3, [r5]                                  |     *(r5) = r3;
    0x00026960 ldrb r3, [r6]                                 |     r3 = *(r6);
    0x00026964 cmp r3, 0                                     |     
                                                             |     if (r3 <= 0) {
    0x00026968 movle r3, 0                                   |         r3 = 0;
                                                             |         goto label_77;
                                                             |     }
                                                             |     if (r3 > 0) {
                                                             | label_77:
    0x0002696c bgt 0x26528                                   |         goto label_4;
                                                             |     }
                                                             | label_59:
    0x00026970 ldr r2, [sp, 0x44]                            |     r2 = var_44h;
    0x00026974 add r1, r3, r2                                |     r1 = r3 + r2;
    0x00026978 cmp r1, 0x70                                  |     
                                                             |     if (r1 > 0x70) {
    0x0002697c bhi 0x26a10                                   |         goto label_53;
                                                             |     }
    0x00026980 ldr r2, [pc, -0x140]                          |     r2 = *(0x26844);
    0x00026984 add r2, pc, r2                                |     r2 = pc + r2;
    0x00026988 add r2, r2, r1                                |     r2 += r1;
    0x0002698c add r1, r2, 0x188                             |     r1 = r2 + 0x188;
    0x00026990 ldrsb r1, [r1]                                |     r1 = *(r1);
    0x00026994 cmp r1, r3                                    |     
                                                             |     if (r1 != r3) {
    0x00026998 bne 0x26a10                                   |         goto label_53;
                                                             |     }
    0x0002699c ldrb r3, [r2, 0x1f9]                          |     r3 = *((r2 + 0x1f9));
    0x000269a0 cmp r3, 0                                     |     
    0x000269a4 str r3, [sp, 0x44]                            |     var_44h = r3;
                                                             |     if (r3 == 0) {
    0x000269a8 beq 0x26a30                                   |         goto label_78;
                                                             |     }
    0x000269ac ldr r3, [sp, 0x50]                            |     r3 = var_50h;
    0x000269b0 add ip, sp, 0xa8                              |     
    0x000269b4 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x000269b8 subne r3, r3, 1                               |         r3--;
                                                             |     }
                                                             |     if (r3 == 0) {
    0x000269bc strne r3, [sp, 0x50]                          |         var_50h = r3;
                                                             |     }
    0x000269c0 ldrd r2, r3, [sp, 0x48]                       |     __asm ("ldrd r2, r3, [var_48h]");
    0x000269c4 add r4, r4, 0x30                              |     r4 += var_30h;
    0x000269c8 strd r2, r3, [sp, 0xb0]                       |     __asm ("strd r2, r3, [var_b0h]");
    0x000269cc ldr r3, [sp, 0x60]                            |     r3 = var_60h;
    0x000269d0 mov lr, r4                                    |     lr = r4;
    0x000269d4 str r3, [sp, 0xb8]                            |     var_b8h = r3;
    0x000269d8 ldm ip!, {r0, r1, r2, r3}                     |     r0 = *(ip!);
                                                             |     r1 = *((ip! + 4));
                                                             |     r2 = *((ip! + 8));
                                                             |     r3 = *((ip! + 12));
    0x000269dc stm lr!, {r0, r1, r2, r3}                     |     *(lr!) = r0;
                                                             |     *((lr! + 4)) = r1;
                                                             |     *((lr! + 8)) = r2;
                                                             |     *((lr! + 12)) = r3;
    0x000269e0 ldm ip!, {r0, r1, r2, r3}                     |     r0 = *(ip!);
                                                             |     r1 = *((ip! + 4));
                                                             |     r2 = *((ip! + 8));
                                                             |     r3 = *((ip! + 12));
    0x000269e4 stm lr!, {r0, r1, r2, r3}                     |     *(lr!) = r0;
                                                             |     *((lr! + 4)) = r1;
                                                             |     *((lr! + 8)) = r2;
                                                             |     *((lr! + 12)) = r3;
    0x000269e8 ldm ip, {r0, r1, r2, r3}                      |     r0 = *(ip);
                                                             |     r1 = *((ip + 4));
                                                             |     r2 = *((ip + 8));
                                                             |     r3 = *((ip + 12));
    0x000269ec stm lr, {r0, r1, r2, r3}                      |     *(lr) = r0;
                                                             |     *((lr + 4)) = r1;
                                                             |     *((lr + 8)) = r2;
                                                             |     *((lr + 12)) = r3;
    0x000269f0 mvn r3, 1                                     |     r3 = ~1;
    0x000269f4 str r3, [sp, 0x34]                            |     var_34h = r3;
                                                             |     do {
                                                             | label_49:
    0x000269f8 ldr r3, [sp, 0x40]                            |         r3 = var_40h;
    0x000269fc add r3, r3, 2                                 |         r3 += 2;
    0x00026a00 str r3, [sp, 0x40]                            |         var_40h = r3;
    0x00026a04 ldr r3, [sp, 0x44]                            |         r3 = var_44h;
    0x00026a08 str r3, [sp, 0x38]                            |         var_38h = r3;
    0x00026a0c b 0x26230                                     |         goto label_22;
                                                             | label_53:
    0x00026a10 ldr r3, [pc, -0x1cc]                          |         r3 = *(0x26848);
    0x00026a14 ldr r2, [sp, 0x38]                            |         r2 = var_38h;
    0x00026a18 add r3, pc, r3                                |         r3 = pc + r3;
    0x00026a1c add r3, r3, r2                                |         r3 += r2;
    0x00026a20 ldrb r3, [r3, 0x26a]                          |         r3 = *((r3 + 0x26a));
    0x00026a24 cmp r3, 0                                     |         
    0x00026a28 str r3, [sp, 0x44]                            |         var_44h = r3;
                                                             |         if (r3 == 0) {
    0x00026a2c beq 0x2760c                                   |             goto label_79;
                                                             |         }
                                                             | label_78:
    0x00026a30 ldr r3, [pc, -0x1e8]                          |         r3 = *(0x2684c);
    0x00026a34 ldr r2, [sp, 0x44]                            |         r2 = var_44h;
    0x00026a38 add r3, pc, r3                                |         r3 = pc + r3;
    0x00026a3c add r3, r3, r2                                |         r3 += r2;
    0x00026a40 ldrb r3, [r3, 0x2dc]                          |         r3 = *((r3 + 0x2dc));
    0x00026a44 add ip, sp, 0xd8                              |         
    0x00026a48 str r3, [sp, 0x54]                            |         var_54h = r3;
    0x00026a4c rsb lr, r3, 1                                 |         lr = 1 - r3;
    0x00026a50 mov r3, 0x30                                  |         r3 = 0x30;
    0x00026a54 mla r8, r3, lr, r4                            |         __asm ("mla r8, r3, lr, r4");
    0x00026a58 mov r6, r8                                    |         r6 = r8;
    0x00026a5c ldm r6!, {r0, r1, r2, r3}                     |         r0 = *(r6!);
                                                             |         r1 = *((r6! + 4));
                                                             |         r2 = *((r6! + 8));
                                                             |         r3 = *((r6! + 12));
    0x00026a60 ldr fp, [r8, 8]                               |         fp = var_8h;
    0x00026a64 stm ip!, {r0, r1, r2, r3}                     |         *(ip!) = r0;
                                                             |         *((ip! + 4)) = r1;
                                                             |         *((ip! + 8)) = r2;
                                                             |         *((ip! + 12)) = r3;
    0x00026a68 ldr sl, [r8, 0x18]                            |         sl = var_18h;
    0x00026a6c ldm r6!, {r0, r1, r2, r3}                     |         r0 = *(r6!);
                                                             |         r1 = *((r6! + 4));
                                                             |         r2 = *((r6! + 8));
                                                             |         r3 = *((r6! + 12));
    0x00026a70 ldr sb, [r8, 0x1c]                            |         sb = var_1ch;
    0x00026a74 stm ip!, {r0, r1, r2, r3}                     |         *(ip!) = r0;
                                                             |         *((ip! + 4)) = r1;
                                                             |         *((ip! + 8)) = r2;
                                                             |         *((ip! + 12)) = r3;
    0x00026a78 ldm r6, {r0, r1, r2, r3}                      |         r0 = *(r6);
                                                             |         r1 = *((r6 + 4));
                                                             |         r2 = *((r6 + 8));
                                                             |         r3 = *((r6 + 12));
    0x00026a7c stm ip, {r0, r1, r2, r3}                      |         *(ip) = r0;
                                                             |         *((ip + 4)) = r1;
                                                             |         *((ip + 8)) = r2;
                                                             |         *((ip + 12)) = r3;
    0x00026a80 ldr r3, [r8, 0xc]                             |         r3 = var_ch_2;
    0x00026a84 add ip, sp, 0xd8                              |         
    0x00026a88 str r3, [sp, 0x38]                            |         var_38h = r3;
    0x00026a8c ldr r7, [r8, 0x20]                            |         r7 = var_20h;
    0x00026a90 ldr r3, [r8, 0x28]                            |         r3 = var_28h_2;
    0x00026a94 ldr r6, [r8, 0x24]                            |         r6 = var_24h;
    0x00026a98 str r3, [sp, 0x3c]                            |         var_3ch = r3;
    0x00026a9c ldr r3, [sp, 0x44]                            |         r3 = var_44h;
    0x00026aa0 ldr r8, [r8, 0x2c]                            |         r8 = var_2ch;
    0x00026aa4 sub r3, r3, 4                                 |         r3 -= 4;
    0x00026aa8 cmp r3, 0x57                                  |         
                                                             |         if (r3 > 0x57) {
                                                             |             /* switch table (88 cases) at 0x26ab4 */
    0x00026aac addls pc, pc, r3, lsl 2                       |             pc += (r3 << 2);
                                                             |         }
    0x00026ab0 b 0x26c28                                     |         goto label_23;
    0x00026ab4 b 0x26c14                                     |         goto label_80;
    0x00026ab8 b 0x26c28                                     |         goto label_23;
    0x00026abc b 0x26c28                                     |         goto label_23;
    0x00026ac0 b 0x26cfc                                     |         goto label_81;
    0x00026ac4 b 0x26d18                                     |         goto label_82;
    0x00026ac8 b 0x26d28                                     |         goto label_83;
    0x00026acc b 0x26d38                                     |         goto label_84;
    0x00026ad0 b 0x26d08                                     |         goto label_85;
    0x00026ad4 b 0x26d48                                     |         goto label_86;
    0x00026ad8 b 0x26c28                                     |         goto label_23;
    0x00026adc b 0x26c28                                     |         goto label_23;
    0x00026ae0 b 0x26c28                                     |         goto label_23;
    0x00026ae4 b 0x26c28                                     |         goto label_23;
    0x00026ae8 b 0x26c28                                     |         goto label_23;
    0x00026aec b 0x26d58                                     |         goto label_87;
    0x00026af0 b 0x26d84                                     |         goto label_88;
    0x00026af4 b 0x26d98                                     |         goto label_89;
    0x00026af8 b 0x26c28                                     |         goto label_23;
    0x00026afc b 0x26dbc                                     |         goto label_90;
    0x00026b00 b 0x26de4                                     |         goto label_91;
    0x00026b04 b 0x26df8                                     |         goto label_92;
    0x00026b08 b 0x26c28                                     |         goto label_23;
    0x00026b0c b 0x26c28                                     |         goto label_23;
    0x00026b10 b 0x26e1c                                     |         goto label_93;
    0x00026b14 b 0x26e68                                     |         goto label_94;
    0x00026b18 b 0x26e90                                     |         goto label_95;
    0x00026b1c b 0x26eb8                                     |         goto label_96;
    0x00026b20 b 0x26ec4                                     |         goto label_97;
    0x00026b24 b 0x26ecc                                     |         goto label_98;
    0x00026b28 b 0x26f04                                     |         goto label_99;
    0x00026b2c b 0x26f0c                                     |         goto label_100;
    0x00026b30 b 0x26f4c                                     |         goto label_101;
    0x00026b34 b 0x26f58                                     |         goto label_102;
    0x00026b38 b 0x26f60                                     |         goto label_103;
    0x00026b3c b 0x26f74                                     |         goto label_104;
    0x00026b40 b 0x26f8c                                     |         goto label_105;
    0x00026b44 b 0x26f94                                     |         goto label_106;
    0x00026b48 b 0x26f9c                                     |         goto label_107;
    0x00026b4c b 0x26fb0                                     |         goto label_108;
    0x00026b50 b 0x2700c                                     |         goto label_109;
    0x00026b54 b 0x27038                                     |         goto label_110;
    0x00026b58 b 0x27054                                     |         goto label_111;
    0x00026b5c b 0x2705c                                     |         goto label_112;
    0x00026b60 b 0x27074                                     |         goto label_113;
    0x00026b64 b 0x27088                                     |         goto label_114;
    0x00026b68 b 0x26c28                                     |         goto label_23;
    0x00026b6c b 0x2709c                                     |         goto label_115;
    0x00026b70 b 0x270d4                                     |         goto label_116;
    0x00026b74 b 0x26ed4                                     |         goto label_46;
    0x00026b78 b 0x26ed4                                     |         goto label_46;
    0x00026b7c b 0x27110                                     |         goto label_117;
    0x00026b80 b 0x27148                                     |         goto label_118;
    0x00026b84 b 0x27174                                     |         goto label_119;
    0x00026b88 b 0x271a4                                     |         goto label_120;
    0x00026b8c b 0x271ec                                     |         goto label_121;
    0x00026b90 b 0x27218                                     |         goto label_122;
    0x00026b94 b 0x27260                                     |         goto label_123;
    0x00026b98 b 0x272a8                                     |         goto label_124;
    0x00026b9c b 0x272dc                                     |         goto label_125;
    0x00026ba0 b 0x27308                                     |         goto label_126;
    0x00026ba4 b 0x2734c                                     |         goto label_127;
    0x00026ba8 b 0x27378                                     |         goto label_128;
    0x00026bac b 0x273b4                                     |         goto label_129;
    0x00026bb0 b 0x273ec                                     |         goto label_130;
    0x00026bb4 b 0x27418                                     |         goto label_131;
    0x00026bb8 b 0x2745c                                     |         goto label_132;
    0x00026bbc b 0x2748c                                     |         goto label_133;
    0x00026bc0 b 0x274b4                                     |         goto label_134;
    0x00026bc4 b 0x274f0                                     |         goto label_135;
    0x00026bc8 b 0x274fc                                     |         goto label_136;
    0x00026bcc b 0x26c28                                     |         goto label_23;
    0x00026bd0 b 0x27530                                     |         goto label_137;
    0x00026bd4 b 0x27540                                     |         goto label_138;
    0x00026bd8 b 0x2754c                                     |         goto label_139;
    0x00026bdc b 0x2755c                                     |         goto label_140;
    0x00026be0 b 0x27568                                     |         goto label_141;
    0x00026be4 b 0x27574                                     |         goto label_142;
    0x00026be8 b 0x27580                                     |         goto label_143;
    0x00026bec b 0x26c28                                     |         goto label_23;
    0x00026bf0 b 0x26c28                                     |         goto label_23;
    0x00026bf4 b 0x26c28                                     |         goto label_23;
    0x00026bf8 b 0x27590                                     |         goto label_144;
    0x00026bfc b 0x26c28                                     |         goto label_23;
    0x00026c00 b 0x27590                                     |         goto label_144;
    0x00026c04 b 0x275a4                                     |         goto label_145;
    0x00026c08 b 0x275c0                                     |         goto label_146;
    0x00026c0c b 0x275e0                                     |         goto label_147;
    0x00026c10 b 0x275f0                                     |         goto label_148;
                                                             | label_80:
    0x00026c14 ldm r4, {r0, r1}                              |         r0 = *(r4);
                                                             |         r1 = *((r4 + 4));
    0x00026c18 add r3, r5, 0x58                              |         r3 = r5 + 0x58;
    0x00026c1c stm r3, {r0, r1}                              |         *(r3) = r0;
                                                             |         *((r3 + 4)) = r1;
    0x00026c20 mov r3, 1                                     |         r3 = 1;
    0x00026c24 str r3, [r5, 0x90]                            |         *((r5 + 0x90)) = r3;
                                                             | label_23:
    0x00026c28 ldr r3, [sp, 0x54]                            |         r3 = var_54h;
    0x00026c2c ldr r2, [sp, 0x54]                            |         r2 = var_54h;
    0x00026c30 add r3, r3, r3, lsl 1                         |         r3 += (r3 << 1);
    0x00026c34 sub r4, r4, r3, lsl 4                         |         r4 -= (r3 << 4);
    0x00026c38 ldr r3, [sp, 0x40]                            |         r3 = var_40h;
    0x00026c3c add ip, sp, 0xd8                              |         
    0x00026c40 sub r3, r3, r2, lsl 1                         |         r3 -= (r2 << 1);
    0x00026c44 str r3, [sp, 0x40]                            |         var_40h = r3;
    0x00026c48 ldr r3, [sp, 0x38]                            |         r3 = var_38h;
    0x00026c4c str sl, [sp, 0xf0]                            |         var_f0h = sl;
    0x00026c50 str r3, [sp, 0xe4]                            |         var_e4h = r3;
    0x00026c54 ldr r3, [sp, 0x3c]                            |         r3 = var_3ch;
    0x00026c58 str sb, [sp, 0xf4]                            |         var_f4h = sb;
    0x00026c5c str r7, [sp, 0xf8]                            |         var_f8h = r7;
    0x00026c60 str r6, [sp, 0xfc]                            |         var_fch = r6;
    0x00026c64 str r3, [sp, 0x100]                           |         var_100h = r3;
    0x00026c68 str r8, [sp, 0x104]                           |         var_104h = r8;
    0x00026c6c str fp, [sp, 0xe0]                            |         var_e0h = fp;
    0x00026c70 ldm ip!, {r0, r1, r2, r3}                     |         r0 = *(ip!);
                                                             |         r1 = *((ip! + 4));
                                                             |         r2 = *((ip! + 8));
                                                             |         r3 = *((ip! + 12));
    0x00026c74 add r4, r4, 0x30                              |         r4 += var_30h;
    0x00026c78 mov lr, r4                                    |         lr = r4;
    0x00026c7c stm lr!, {r0, r1, r2, r3}                     |         *(lr!) = r0;
                                                             |         *((lr! + 4)) = r1;
                                                             |         *((lr! + 8)) = r2;
                                                             |         *((lr! + 12)) = r3;
    0x00026c80 ldm ip!, {r0, r1, r2, r3}                     |         r0 = *(ip!);
                                                             |         r1 = *((ip! + 4));
                                                             |         r2 = *((ip! + 8));
                                                             |         r3 = *((ip! + 12));
    0x00026c84 stm lr!, {r0, r1, r2, r3}                     |         *(lr!) = r0;
                                                             |         *((lr! + 4)) = r1;
                                                             |         *((lr! + 8)) = r2;
                                                             |         *((lr! + 12)) = r3;
    0x00026c88 ldm ip, {r0, r1, r2, r3}                      |         r0 = *(ip);
                                                             |         r1 = *((ip + 4));
                                                             |         r2 = *((ip + 8));
                                                             |         r3 = *((ip + 12));
    0x00026c8c stm lr, {r0, r1, r2, r3}                      |         *(lr) = r0;
                                                             |         *((lr + 4)) = r1;
                                                             |         *((lr + 8)) = r2;
                                                             |         *((lr + 12)) = r3;
    0x00026c90 ldr r3, [pc, -0x444]                          |         r3 = *(0x26850);
    0x00026c94 ldr r2, [sp, 0x44]                            |         r2 = var_44h;
    0x00026c98 add r3, pc, r3                                |         r3 = pc + r3;
    0x00026c9c add r2, r3, r2                                |         r2 = r3 + r2;
    0x00026ca0 ldrb r2, [r2, 0x338]                          |         r2 = *((r2 + 0x338));
    0x00026ca4 ldr r1, [sp, 0x40]                            |         r1 = var_40h;
    0x00026ca8 sub r2, r2, 0x1c                              |         r2 -= 0x1c;
    0x00026cac ldrsh r0, [r1]                                |         r0 = *(r1);
    0x00026cb0 add r1, r3, r2                                |         r1 = r3 + r2;
    0x00026cb4 add r1, r1, 0x394                             |         r1 += 0x394;
    0x00026cb8 ldrsb r1, [r1]                                |         r1 = *(r1);
    0x00026cbc add r1, r1, r0                                |         r1 += r0;
    0x00026cc0 cmp r1, 0x70                                  |         
                                                             |         if (r1 <= 0x70) {
    0x00026cc4 bhi 0x26ce0                                   |             
    0x00026cc8 add r3, r3, r1                                |             r3 += r1;
    0x00026ccc add r1, r3, 0x188                             |             r1 = r3 + 0x188;
    0x00026cd0 ldrsb r1, [r1]                                |             r1 = *(r1);
    0x00026cd4 cmp r1, r0                                    |             
                                                             |             if (r1 != r0) {
    0x00026cd8 ldrbeq r3, [r3, 0x1f9]                        |                 r3 = *((r3 + 0x1f9));
                                                             |             }
                                                             |             if (r1 == r0) {
    0x00026cdc beq 0x26cf4                                   |                 goto label_149;
                                                             |             }
                                                             |         }
    0x00026ce0 ldr r3, [pc, -0x490]                          |         r3 = *(0x26854);
    0x00026ce4 add r3, pc, r3                                |         r3 = pc + r3;
    0x00026ce8 add r3, r3, r2                                |         r3 += r2;
    0x00026cec add r3, r3, 0x3ac                             |         r3 += 0x3ac;
    0x00026cf0 ldrsb r3, [r3, 2]                             |         r3 = *((r3 + 2));
                                                             | label_149:
    0x00026cf4 str r3, [sp, 0x44]                            |         var_44h = r3;
    0x00026cf8 b 0x269f8                                     |         
                                                             |     } while (1);
                                                             | label_81:
    0x00026cfc ldr r3, [r5, 0xa8]                            |     r3 = *((r5 + 0xa8));
    0x00026d00 add r3, r3, 1                                 |     r3++;
    0x00026d04 str r3, [r5, 0xa8]                            |     *((r5 + 0xa8)) = r3;
                                                             | label_85:
    0x00026d08 ldr r3, [r5, 0x98]                            |     r3 = *((r5 + 0x98));
    0x00026d0c add r3, r3, 1                                 |     r3++;
    0x00026d10 str r3, [r5, 0x98]                            |     *((r5 + 0x98)) = r3;
    0x00026d14 b 0x26c28                                     |     goto label_23;
                                                             | label_82:
    0x00026d18 ldr r3, [r5, 0xa8]                            |     r3 = *((r5 + 0xa8));
    0x00026d1c add r3, r3, 1                                 |     r3++;
    0x00026d20 str r3, [r5, 0xa8]                            |     *((r5 + 0xa8)) = r3;
    0x00026d24 b 0x26c28                                     |     goto label_23;
                                                             | label_83:
    0x00026d28 ldr r3, [r5, 0xa0]                            |     r3 = *((r5 + 0xa0));
    0x00026d2c add r3, r3, 1                                 |     r3++;
    0x00026d30 str r3, [r5, 0xa0]                            |     *((r5 + 0xa0)) = r3;
    0x00026d34 b 0x26c28                                     |     goto label_23;
                                                             | label_84:
    0x00026d38 ldr r3, [r5, 0xac]                            |     r3 = *((r5 + 0xac));
    0x00026d3c add r3, r3, 1                                 |     r3++;
    0x00026d40 str r3, [r5, 0xac]                            |     *((r5 + 0xac)) = r3;
    0x00026d44 b 0x26c28                                     |     goto label_23;
                                                             | label_86:
    0x00026d48 ldr r3, [r5, 0x9c]                            |     r3 = *((r5 + 0x9c));
    0x00026d4c add r3, r3, 1                                 |     r3++;
    0x00026d50 str r3, [r5, 0x9c]                            |     *((r5 + 0x9c)) = r3;
    0x00026d54 b 0x26c28                                     |     goto label_23;
                                                             | label_87:
    0x00026d58 ldrd r2, r3, [r4, -0x28]                      |     __asm ("ldrd r2, r3, [var_e4h]");
    0x00026d5c strd r2, r3, [r5, 0x48]                       |     __asm ("strd r2, r3, [r5, 0x48]");
    0x00026d60 mov r2, 0                                     |     r2 = 0;
    0x00026d64 mov r3, 0                                     |     r3 = 0;
    0x00026d68 strd r2, r3, [r5, 0x50]                       |     __asm ("strd r2, r3, [r5, 0x50]");
                                                             |     do {
    0x00026d6c mov r3, 0                                     |         r3 = 0;
    0x00026d70 str r3, [r5, 0x58]                            |         *((r5 + 0x58)) = r3;
    0x00026d74 str r3, [r5, 0x5c]                            |         *((r5 + 0x5c)) = r3;
                                                             | label_24:
    0x00026d78 ldr r3, [r4]                                  |         r3 = *(r4);
                                                             | label_25:
    0x00026d7c str r3, [r5, 0x1c]                            |         *((r5 + 0x1c)) = r3;
    0x00026d80 b 0x26c28                                     |         goto label_23;
                                                             | label_88:
    0x00026d84 ldrd r0, r1, [r4, -0x28]                      |         __asm ("ldrd r0, r1, [var_e4h]");
    0x00026d88 ldrd r2, r3, [r4, -0x88]                      |         __asm ("ldrd r2, r3, [var_80h]");
    0x00026d8c strd r0, r1, [r5, 0x50]                       |         __asm ("strd r0, r1, [r5, 0x50]");
    0x00026d90 strd r2, r3, [r5, 0x48]                       |         __asm ("strd r2, r3, [r5, 0x48]");
    0x00026d94 b 0x26d6c                                     |         
                                                             |     } while (1);
                                                             | label_89:
    0x00026d98 ldrd r0, r1, [r4, -0x88]                      |     __asm ("ldrd r0, r1, [var_80h]");
    0x00026d9c ldr lr, [r4, -0x30]                           |     lr = var_d8h;
    0x00026da0 ldr ip, [r4, -0x2c]                           |     ip = var_dch;
    0x00026da4 ldrd r2, r3, [r4, -0xe8]                      |     __asm ("ldrd r2, r3, [var_e8h_2]");
    0x00026da8 strd r0, r1, [r5, 0x50]                       |     __asm ("strd r0, r1, [r5, 0x50]");
    0x00026dac strd r2, r3, [r5, 0x48]                       |     __asm ("strd r2, r3, [r5, 0x48]");
    0x00026db0 str lr, [r5, 0x58]                            |     
    0x00026db4 str ip, [r5, 0x5c]                            |     *((r5 + 0x5c)) = ip;
    0x00026db8 b 0x26d78                                     |     goto label_24;
                                                             | label_90:
    0x00026dbc ldrd r2, r3, [r4, -0x28]                      |     __asm ("ldrd r2, r3, [var_e4h]");
    0x00026dc0 strd r2, r3, [r5, 0x48]                       |     __asm ("strd r2, r3, [r5, 0x48]");
    0x00026dc4 mov r2, 0                                     |     r2 = 0;
    0x00026dc8 mov r3, 0                                     |     r3 = 0;
    0x00026dcc strd r2, r3, [r5, 0x50]                       |     __asm ("strd r2, r3, [r5, 0x50]");
                                                             |     do {
    0x00026dd0 mov r3, 0                                     |         r3 = 0;
    0x00026dd4 str r3, [r5, 0x58]                            |         *((r5 + 0x58)) = r3;
    0x00026dd8 str r3, [r5, 0x5c]                            |         *((r5 + 0x5c)) = r3;
                                                             | label_26:
    0x00026ddc mov r3, 2                                     |         r3 = 2;
    0x00026de0 b 0x26d7c                                     |         goto label_25;
                                                             | label_91:
    0x00026de4 ldrd r0, r1, [r4, -0x28]                      |         __asm ("ldrd r0, r1, [var_e4h]");
    0x00026de8 ldrd r2, r3, [r4, -0x88]                      |         __asm ("ldrd r2, r3, [var_80h]");
    0x00026dec strd r0, r1, [r5, 0x50]                       |         __asm ("strd r0, r1, [r5, 0x50]");
    0x00026df0 strd r2, r3, [r5, 0x48]                       |         __asm ("strd r2, r3, [r5, 0x48]");
    0x00026df4 b 0x26dd0                                     |         
                                                             |     } while (1);
                                                             | label_92:
    0x00026df8 ldrd r0, r1, [r4, -0x88]                      |     __asm ("ldrd r0, r1, [var_80h]");
    0x00026dfc ldr lr, [r4, -0x30]                           |     lr = var_d8h;
    0x00026e00 ldr ip, [r4, -0x2c]                           |     ip = var_dch;
    0x00026e04 ldrd r2, r3, [r4, -0xe8]                      |     __asm ("ldrd r2, r3, [var_e8h_2]");
    0x00026e08 strd r0, r1, [r5, 0x50]                       |     __asm ("strd r0, r1, [r5, 0x50]");
    0x00026e0c strd r2, r3, [r5, 0x48]                       |     __asm ("strd r2, r3, [r5, 0x48]");
    0x00026e10 str lr, [r5, 0x58]                            |     
    0x00026e14 str ip, [r5, 0x5c]                            |     *((r5 + 0x5c)) = ip;
    0x00026e18 b 0x26ddc                                     |     goto label_26;
                                                             | label_93:
    0x00026e1c ldr r3, [r5, 0xac]                            |     r3 = *((r5 + 0xac));
    0x00026e20 ldr r1, [r4, 0x10]                            |     r1 = var_10h_2;
    0x00026e24 add r3, r3, 1                                 |     r3++;
    0x00026e28 str r3, [r5, 0xac]                            |     *((r5 + 0xac)) = r3;
    0x00026e2c ldrd r2, r3, [r4, -0x28]                      |     __asm ("ldrd r2, r3, [var_e4h]");
    0x00026e30 str r1, [sp, 0x10]                            |     var_10h = r1;
    0x00026e34 ldrd r0, r1, [r4, 8]                          |     __asm ("ldrd r0, r1, [var_8h_2]");
    0x00026e38 strd r0, r1, [sp, 8]                          |     __asm ("strd r0, r1, [var_8h_4]");
    0x00026e3c ldr r1, [r4, -0x20]                           |     r1 = var_e8h;
    0x00026e40 add r0, r5, 0x18                              |     r0 = r5 + 0x18;
    0x00026e44 str r1, [sp]                                  |     *(sp) = r1;
    0x00026e48 ldr r1, [r4, -0x30]                           |     r1 = var_d8h;
    0x00026e4c bl 0x26084                                    |     r0 = fcn_00026084 (r0, r1, r2, r3, r4);
    0x00026e50 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00026e54 bne 0x26c28                                   |         goto label_23;
                                                             |     }
                                                             | label_27:
    0x00026e58 mov r0, 1                                     |     r0 = 1;
                                                             | label_50:
    0x00026e5c add sp, sp, 0x4c0                             |     
    0x00026e60 add sp, sp, 0xc                               |     
    0x00026e64 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}      |     
                                                             | label_94:
    0x00026e68 ldrd r2, r3, [r4]                             |     __asm ("ldrd r2, r3, [r4]");
    0x00026e6c cmp r2, 1                                     |     
    0x00026e70 sbcs r3, r3, 0                                |     __asm ("sbcs r3, r3, 0");
    0x00026e74 ldr r3, [r5, 0xa4]                            |     r3 = *((r5 + 0xa4));
    0x00026e78 str r2, [r5, 0x14]                            |     *((r5 + 0x14)) = r2;
                                                             |     if (r2 < 1) {
    0x00026e7c movge r2, 1                                   |         r2 = 1;
                                                             |     }
                                                             |     if (r2 >= 1) {
    0x00026e80 movlt r2, 0                                   |         r2 = 0;
                                                             |     }
    0x00026e84 add r3, r3, r2                                |     r3 += r2;
                                                             |     do {
    0x00026e88 str r3, [r5, 0xa4]                            |         *((r5 + 0xa4)) = r3;
    0x00026e8c b 0x26c28                                     |         goto label_23;
                                                             | label_95:
    0x00026e90 mov r3, 1                                     |         r3 = 1;
    0x00026e94 str r3, [r5, 0x14]                            |         *((r5 + 0x14)) = r3;
    0x00026e98 ldrd r2, r3, [r4, -0x30]                      |         __asm ("ldrd r2, r3, [var_d8h]");
    0x00026e9c ldr r1, [r5, 0xa4]                            |         r1 = *((r5 + 0xa4));
    0x00026ea0 cmp r2, 1                                     |         
    0x00026ea4 sbcs r3, r3, 0                                |         __asm ("sbcs r3, r3, 0");
                                                             |         if (r2 >= 1) {
    0x00026ea8 movlt r3, 1                                   |             r3 = 1;
                                                             |         }
                                                             |         if (r2 < 1) {
    0x00026eac movge r3, 2                                   |             r3 = 2;
                                                             |         }
    0x00026eb0 add r3, r1, r3                                |         r3 = r1 + r3;
    0x00026eb4 b 0x26e88                                     |         
                                                             |     } while (1);
                                                             | label_96:
    0x00026eb8 ldr r3, [r4]                                  |     r3 = *(r4);
                                                             |     do {
                                                             | label_28:
    0x00026ebc str r3, [r5, 0x18]                            |         *((r5 + 0x18)) = r3;
    0x00026ec0 b 0x26c28                                     |         goto label_23;
                                                             | label_97:
    0x00026ec4 mov r3, 0x1a4                                 |         r3 = 0x1a4;
    0x00026ec8 b 0x26ebc                                     |         
                                                             |     } while (1);
                                                             | label_98:
    0x00026ecc ldr r3, [r4, -0x30]                           |     r3 = var_d8h;
                                                             |     do {
    0x00026ed0 str r3, [r5, 0x18]                            |         *((r5 + 0x18)) = r3;
                                                             | label_46:
    0x00026ed4 mov r3, 1                                     |         r3 = 1;
    0x00026ed8 add lr, r4, 8                                 |         lr += var_8h_2;
    0x00026edc str r3, [sp, 0x28]                            |         var_28h = r3;
    0x00026ee0 ldm lr!, {r0, r1, r2, r3}                     |         r0 = *(lr!);
                                                             |         r1 = *((lr! + 4));
                                                             |         r2 = *((lr! + 8));
                                                             |         r3 = *((lr! + 12));
    0x00026ee4 mov ip, sp                                    |         
    0x00026ee8 stm ip!, {r0, r1, r2, r3}                     |         *(ip!) = r0;
                                                             |         *((ip! + 4)) = r1;
                                                             |         *((ip! + 8)) = r2;
                                                             |         *((ip! + 12)) = r3;
    0x00026eec ldm lr!, {r0, r1, r2, r3}                     |         r0 = *(lr!);
                                                             |         r1 = *((lr! + 4));
                                                             |         r2 = *((lr! + 8));
                                                             |         r3 = *((lr! + 12));
    0x00026ef0 stm ip!, {r0, r1, r2, r3}                     |         *(ip!) = r0;
                                                             |         *((ip! + 4)) = r1;
                                                             |         *((ip! + 8)) = r2;
                                                             |         *((ip! + 12)) = r3;
    0x00026ef4 ldm lr, {r0, r1}                              |         r0 = *(lr);
                                                             |         r1 = *((lr + 4));
    0x00026ef8 stm ip, {r0, r1}                              |         *(ip) = r0;
                                                             |         *((ip + 4)) = r1;
    0x00026efc ldm r4, {r2, r3}                              |         r2 = *(r4);
                                                             |         r3 = *((r4 + 4));
    0x00026f00 b 0x27104                                     |         goto label_150;
                                                             | label_99:
    0x00026f04 mov r3, 0x1a4                                 |         r3 = 0x1a4;
    0x00026f08 b 0x26ed0                                     |         
                                                             |     } while (1);
                                                             | label_100:
    0x00026f0c ldr r1, [r4, 0x10]                            |     r1 = var_10h_2;
    0x00026f10 ldrd r2, r3, [r4, -0x28]                      |     __asm ("ldrd r2, r3, [var_e4h]");
    0x00026f14 str r1, [sp, 0x10]                            |     var_10h = r1;
    0x00026f18 ldrd r0, r1, [r4, 8]                          |     __asm ("ldrd r0, r1, [var_8h_2]");
    0x00026f1c strd r0, r1, [sp, 8]                          |     __asm ("strd r0, r1, [var_8h_4]");
    0x00026f20 ldr r1, [r4, -0x20]                           |     r1 = var_e8h;
    0x00026f24 add r0, r5, 0x18                              |     r0 = r5 + 0x18;
    0x00026f28 str r1, [sp]                                  |     *(sp) = r1;
    0x00026f2c ldr r1, [r4, -0x30]                           |     r1 = var_d8h;
    0x00026f30 bl 0x26084                                    |     r0 = fcn_00026084 (r0, r1, r2, r3, r4);
    0x00026f34 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00026f38 beq 0x26e58                                   |         goto label_27;
                                                             |     }
    0x00026f3c ldr r3, [r5, 0x18]                            |     r3 = *((r5 + 0x18));
    0x00026f40 ldr r2, [r4, -0x60]                           |     r2 = var_a8h;
    0x00026f44 add r3, r3, r2                                |     r3 += r2;
    0x00026f48 b 0x26ebc                                     |     goto label_28;
                                                             | label_101:
    0x00026f4c ldr r3, [r4]                                  |     r3 = *(r4);
                                                             |     do {
    0x00026f50 add r3, r3, 0x3c                              |         r3 += 0x3c;
    0x00026f54 b 0x26ebc                                     |         goto label_28;
                                                             | label_102:
    0x00026f58 ldr r3, [r4, -0x30]                           |         r3 = var_d8h;
    0x00026f5c b 0x26f50                                     |         
                                                             |     } while (1);
                                                             | label_103:
    0x00026f60 mov r2, 0                                     |     r2 = 0;
    0x00026f64 mov r3, 0                                     |     r3 = 0;
                                                             |     do {
                                                             | label_29:
    0x00026f68 strd r2, r3, [r5, 8]                          |         __asm ("strd r2, r3, [r5, 8]");
    0x00026f6c ldr r3, [r4]                                  |         r3 = *(r4);
    0x00026f70 b 0x26f84                                     |         goto label_151;
                                                             | label_104:
    0x00026f74 mov r3, 0                                     |         r3 = 0;
    0x00026f78 mov r2, 0                                     |         r2 = 0;
    0x00026f7c strd r2, r3, [r5, 8]                          |         __asm ("strd r2, r3, [r5, 8]");
    0x00026f80 ldr r3, [r4, -0x30]                           |         r3 = var_d8h;
                                                             | label_151:
    0x00026f84 str r3, [r5, 0x10]                            |         *((r5 + 0x10)) = r3;
    0x00026f88 b 0x26c28                                     |         goto label_23;
                                                             | label_105:
    0x00026f8c ldrd r2, r3, [r4, -0x30]                      |         __asm ("ldrd r2, r3, [var_d8h]");
    0x00026f90 b 0x26f68                                     |         
                                                             |     } while (1);
                                                             | label_106:
    0x00026f94 ldrd r2, r3, [r4, -0x28]                      |     __asm ("ldrd r2, r3, [var_e4h]");
    0x00026f98 b 0x26f68                                     |     goto label_29;
                                                             | label_107:
    0x00026f9c ldrd r2, r3, [r4, -0x58]                      |     __asm ("ldrd r2, r3, [var_b0h]");
                                                             |     do {
                                                             | label_30:
    0x00026fa0 strd r2, r3, [r5, 0x38]                       |         __asm ("strd r2, r3, [r5, 0x38]");
    0x00026fa4 ldrd r2, r3, [r4, 8]                          |         __asm ("ldrd r2, r3, [var_8h_2]");
                                                             | label_32:
    0x00026fa8 strd r2, r3, [r5, 0x40]                       |         __asm ("strd r2, r3, [r5, 0x40]");
    0x00026fac b 0x26c28                                     |         goto label_23;
                                                             | label_108:
    0x00026fb0 ldrd r2, r3, [r4, -0x58]                      |         __asm ("ldrd r2, r3, [var_b0h]");
    0x00026fb4 add ip, r5, 0x20                              |         
    0x00026fb8 strd r2, r3, [sp, 0x58]                       |         __asm ("strd r2, r3, [var_58h]");
    0x00026fbc ldr r3, [r4, -0xb0]                           |         r3 = var_58h;
    0x00026fc0 cmp r3, 3                                     |         
                                                             |         if (r3 < 3) {
    0x00026fc4 bls 0x26fe4                                   |             goto label_152;
                                                             |         }
    0x00026fc8 sub lr, r4, 0xc0                              |         lr -= var_48h;
    0x00026fcc ldm lr!, {r0, r1, r2, r3}                     |         r0 = *(lr!);
                                                             |         r1 = *((lr! + 4));
                                                             |         r2 = *((lr! + 8));
                                                             |         r3 = *((lr! + 12));
    0x00026fd0 stm ip!, {r0, r1, r2, r3}                     |         *(ip!) = r0;
                                                             |         *((ip! + 4)) = r1;
                                                             |         *((ip! + 8)) = r2;
                                                             |         *((ip! + 12)) = r3;
    0x00026fd4 ldm lr, {r0, r1}                              |         r0 = *(lr);
                                                             |         r1 = *((lr + 4));
    0x00026fd8 ldrd r2, r3, [sp, 0x58]                       |         __asm ("ldrd r2, r3, [var_58h]");
    0x00026fdc stm ip, {r0, r1}                              |         *(ip) = r0;
                                                             |         *((ip + 4)) = r1;
    0x00026fe0 b 0x26fa0                                     |         
                                                             |     } while (1);
                                                             | label_152:
    0x00026fe4 ldrd r2, r3, [r4, -0xb8]                      |     __asm ("ldrd r2, r3, [var_50h]");
    0x00026fe8 strd r2, r3, [r5, 0x38]                       |     __asm ("strd r2, r3, [r5, 0x38]");
    0x00026fec ldrd r2, r3, [sp, 0x58]                       |     __asm ("ldrd r2, r3, [var_58h]");
    0x00026ff0 strd r2, r3, [r5, 0x40]                       |     __asm ("strd r2, r3, [r5, 0x40]");
                                                             | label_31:
    0x00026ff4 mov lr, r4                                    |     lr = r4;
    0x00026ff8 ldm lr!, {r0, r1, r2, r3}                     |     r0 = *(lr!);
                                                             |     r1 = *((lr! + 4));
                                                             |     r2 = *((lr! + 8));
                                                             |     r3 = *((lr! + 12));
    0x00026ffc stm ip!, {r0, r1, r2, r3}                     |     *(ip!) = r0;
                                                             |     *((ip! + 4)) = r1;
                                                             |     *((ip! + 8)) = r2;
                                                             |     *((ip! + 12)) = r3;
    0x00027000 ldm lr, {r0, r1}                              |     r0 = *(lr);
                                                             |     r1 = *((lr + 4));
    0x00027004 stm ip, {r0, r1}                              |     *(ip) = r0;
                                                             |     *((ip + 4)) = r1;
    0x00027008 b 0x26c28                                     |     goto label_23;
                                                             | label_109:
    0x0002700c ldrd r2, r3, [r4, -0x58]                      |     __asm ("ldrd r2, r3, [var_b0h]");
    0x00027010 strd r2, r3, [r5, 0x40]                       |     __asm ("strd r2, r3, [r5, 0x40]");
    0x00027014 ldrd r2, r3, [r4, -0x30]                      |     __asm ("ldrd r2, r3, [var_d8h]");
    0x00027018 strd r2, r3, [r5, 0x38]                       |     __asm ("strd r2, r3, [r5, 0x38]");
                                                             |     do {
    0x0002701c ldrd r2, r3, [r4, 8]                          |         __asm ("ldrd r2, r3, [var_8h_2]");
    0x00027020 rsbs r2, r2, 0                                |         r2 -= ;
    0x00027024 rsc r3, r3, 0                                 |         __asm ("rsc r3, r3, 0");
    0x00027028 strd r2, r3, [r5, 0x28]                       |         __asm ("strd r2, r3, [r5, 0x28]");
    0x0002702c ldr r3, [r4, 0x10]                            |         r3 = var_10h_2;
    0x00027030 str r3, [r5, 0x30]                            |         *((r5 + 0x30)) = r3;
    0x00027034 b 0x26c28                                     |         goto label_23;
                                                             | label_110:
    0x00027038 ldrd r2, r3, [r4, -0x60]                      |         __asm ("ldrd r2, r3, [var_a8h]");
    0x0002703c strd r2, r3, [r5, 0x38]                       |         __asm ("strd r2, r3, [r5, 0x38]");
    0x00027040 ldrd r2, r3, [r4, -0x28]                      |         __asm ("ldrd r2, r3, [var_e4h]");
    0x00027044 rsbs r2, r2, 0                                |         r2 -= ;
    0x00027048 rsc r3, r3, 0                                 |         __asm ("rsc r3, r3, 0");
    0x0002704c strd r2, r3, [r5, 0x40]                       |         __asm ("strd r2, r3, [r5, 0x40]");
    0x00027050 b 0x2701c                                     |         
                                                             |     } while (1);
                                                             | label_111:
    0x00027054 ldrd r2, r3, [r4, -0x30]                      |     __asm ("ldrd r2, r3, [var_d8h]");
    0x00027058 b 0x26fa0                                     |     goto label_30;
                                                             | label_112:
    0x0002705c ldrd r2, r3, [r4, -0x90]                      |     __asm ("ldrd r2, r3, [var_78h]");
    0x00027060 strd r2, r3, [r5, 0x38]                       |     __asm ("strd r2, r3, [r5, 0x38]");
    0x00027064 ldrd r2, r3, [r4, -0x58]                      |     __asm ("ldrd r2, r3, [var_b0h]");
    0x00027068 strd r2, r3, [r5, 0x40]                       |     __asm ("strd r2, r3, [r5, 0x40]");
                                                             |     do {
    0x0002706c add ip, r5, 0x20                              |         
    0x00027070 b 0x26ff4                                     |         goto label_31;
                                                             | label_113:
    0x00027074 ldrd r2, r3, [r4, -0x28]                      |         __asm ("ldrd r2, r3, [var_e4h]");
    0x00027078 strd r2, r3, [r5, 0x40]                       |         __asm ("strd r2, r3, [r5, 0x40]");
    0x0002707c ldrd r2, r3, [r4]                             |         __asm ("ldrd r2, r3, [r4]");
    0x00027080 strd r2, r3, [r5, 0x38]                       |         __asm ("strd r2, r3, [r5, 0x38]");
    0x00027084 b 0x26c28                                     |         goto label_23;
                                                             | label_114:
    0x00027088 ldrd r2, r3, [r4, -0x58]                      |         __asm ("ldrd r2, r3, [var_b0h]");
    0x0002708c strd r2, r3, [r5, 0x40]                       |         __asm ("strd r2, r3, [r5, 0x40]");
    0x00027090 ldrd r2, r3, [r4, -0x30]                      |         __asm ("ldrd r2, r3, [var_d8h]");
    0x00027094 strd r2, r3, [r5, 0x38]                       |         __asm ("strd r2, r3, [r5, 0x38]");
    0x00027098 b 0x2706c                                     |         
                                                             |     } while (1);
                                                             | label_115:
    0x0002709c sub lr, r4, 0x60                              |     lr -= var_a8h;
    0x000270a0 ldm lr!, {r0, r1, r2, r3}                     |     r0 = *(lr!);
                                                             |     r1 = *((lr! + 4));
                                                             |     r2 = *((lr! + 8));
                                                             |     r3 = *((lr! + 12));
    0x000270a4 add ip, r5, 0x20                              |     
    0x000270a8 stm ip!, {r0, r1, r2, r3}                     |     *(ip!) = r0;
                                                             |     *((ip! + 4)) = r1;
                                                             |     *((ip! + 8)) = r2;
                                                             |     *((ip! + 12)) = r3;
    0x000270ac ldrd r2, r3, [r4, -0x28]                      |     __asm ("ldrd r2, r3, [var_e4h]");
    0x000270b0 ldm lr, {r0, r1}                              |     r0 = *(lr);
                                                             |     r1 = *((lr + 4));
    0x000270b4 rsbs r2, r2, 0                                |     r2 -= ;
    0x000270b8 rsc r3, r3, 0                                 |     __asm ("rsc r3, r3, 0");
    0x000270bc stm ip, {r0, r1}                              |     *(ip) = r0;
                                                             |     *((ip + 4)) = r1;
    0x000270c0 strd r2, r3, [r5, 0x38]                       |     __asm ("strd r2, r3, [r5, 0x38]");
    0x000270c4 ldrd r2, r3, [r4, 8]                          |     __asm ("ldrd r2, r3, [var_8h_2]");
    0x000270c8 rsbs r2, r2, 0                                |     r2 -= ;
    0x000270cc rsc r3, r3, 0                                 |     __asm ("rsc r3, r3, 0");
    0x000270d0 b 0x26fa8                                     |     goto label_32;
                                                             | label_116:
    0x000270d4 mov ip, r4                                    |     
    0x000270d8 ldr r3, [ip], -0x28                           |     r3 = *(ip);
                                                             |     ip += -0x28;
    0x000270dc mov lr, sp                                    |     lr = sp;
    0x000270e0 str r3, [sp, 0x28]                            |     var_28h = r3;
    0x000270e4 ldm ip!, {r0, r1, r2, r3}                     |     r0 = *(ip!);
                                                             |     r1 = *((ip! + 4));
                                                             |     r2 = *((ip! + 8));
                                                             |     r3 = *((ip! + 12));
    0x000270e8 stm lr!, {r0, r1, r2, r3}                     |     *(lr!) = r0;
                                                             |     *((lr! + 4)) = r1;
                                                             |     *((lr! + 8)) = r2;
                                                             |     *((lr! + 12)) = r3;
    0x000270ec ldm ip!, {r0, r1, r2, r3}                     |     r0 = *(ip!);
                                                             |     r1 = *((ip! + 4));
                                                             |     r2 = *((ip! + 8));
                                                             |     r3 = *((ip! + 12));
    0x000270f0 stm lr!, {r0, r1, r2, r3}                     |     *(lr!) = r0;
                                                             |     *((lr! + 4)) = r1;
                                                             |     *((lr! + 8)) = r2;
                                                             |     *((lr! + 12)) = r3;
    0x000270f4 ldm ip, {r0, r1}                              |     r0 = *(ip);
                                                             |     r1 = *((ip + 4));
    0x000270f8 sub r3, r4, 0x30                              |     r3 -= var_d8h;
    0x000270fc stm lr, {r0, r1}                              |     *(lr) = r0;
                                                             |     *((lr + 4)) = r1;
    0x00027100 ldm r3, {r2, r3}                              |     r2 = *(r3);
                                                             |     r3 = *((r3 + 4));
                                                             | label_150:
    0x00027104 mov r0, r5                                    |     r0 = r5;
    0x00027108 bl 0x25e90                                    |     fcn_00025e90 (r0, r1, r2, r3, r4, r5, r6);
    0x0002710c b 0x26c28                                     |     goto label_23;
                                                             | label_117:
    0x00027110 ldr r6, [pc, -0x8bc]                          |     r6 = *(0x26858);
    0x00027114 mov lr, ip                                    |     lr = ip;
    0x00027118 add r6, pc, r6                                |     r6 = pc + r6;
    0x0002711c ldm r6!, {r0, r1, r2, r3}                     |     r0 = *(r6!);
                                                             |     r1 = *((r6! + 4));
                                                             |     r2 = *((r6! + 8));
                                                             |     r3 = *((r6! + 12));
    0x00027120 stm lr!, {r0, r1, r2, r3}                     |     *(lr!) = r0;
                                                             |     *((lr! + 4)) = r1;
                                                             |     *((lr! + 8)) = r2;
                                                             |     *((lr! + 12)) = r3;
    0x00027124 ldm r6!, {r0, r1, r2, r3}                     |     r0 = *(r6!);
                                                             |     r1 = *((r6! + 4));
                                                             |     r2 = *((r6! + 8));
                                                             |     r3 = *((r6! + 12));
    0x00027128 stm lr!, {r0, r1, r2, r3}                     |     *(lr!) = r0;
                                                             |     *((lr! + 4)) = r1;
                                                             |     *((lr! + 8)) = r2;
                                                             |     *((lr! + 12)) = r3;
    0x0002712c ldm r6, {r0, r1, r2, r3}                      |     r0 = *(r6);
                                                             |     r1 = *((r6 + 4));
                                                             |     r2 = *((r6 + 8));
                                                             |     r3 = *((r6 + 12));
    0x00027130 stm lr, {r0, r1, r2, r3}                      |     *(lr) = r0;
                                                             |     *((lr + 4)) = r1;
                                                             |     *((lr + 8)) = r2;
                                                             |     *((lr + 12)) = r3;
    0x00027134 ldrd r2, r3, [r4, -0x30]                      |     __asm ("ldrd r2, r3, [var_d8h]");
                                                             |     do {
                                                             | label_33:
    0x00027138 strd r2, r3, [ip]                             |         __asm ("strd r2, r3, [ip]");
                                                             | label_34:
    0x0002713c mov r8, 0                                     |         r8 = 0;
    0x00027140 str r8, [sp, 0x3c]                            |         var_3ch = r8;
    0x00027144 b 0x27528                                     |         goto label_153;
                                                             | label_118:
    0x00027148 ldr r6, [pc, -0x8f0]                          |         r6 = *(0x2685c);
    0x0002714c mov lr, ip                                    |         lr = ip;
    0x00027150 add r6, pc, r6                                |         r6 = pc + r6;
                                                             | label_39:
    0x00027154 ldm r6!, {r0, r1, r2, r3}                     |         r0 = *(r6!);
                                                             |         r1 = *((r6! + 4));
                                                             |         r2 = *((r6! + 8));
                                                             |         r3 = *((r6! + 12));
    0x00027158 stm lr!, {r0, r1, r2, r3}                     |         *(lr!) = r0;
                                                             |         *((lr! + 4)) = r1;
                                                             |         *((lr! + 8)) = r2;
                                                             |         *((lr! + 12)) = r3;
    0x0002715c ldm r6!, {r0, r1, r2, r3}                     |         r0 = *(r6!);
                                                             |         r1 = *((r6! + 4));
                                                             |         r2 = *((r6! + 8));
                                                             |         r3 = *((r6! + 12));
    0x00027160 stm lr!, {r0, r1, r2, r3}                     |         *(lr!) = r0;
                                                             |         *((lr! + 4)) = r1;
                                                             |         *((lr! + 8)) = r2;
                                                             |         *((lr! + 12)) = r3;
    0x00027164 ldm r6, {r0, r1, r2, r3}                      |         r0 = *(r6);
                                                             |         r1 = *((r6 + 4));
                                                             |         r2 = *((r6 + 8));
                                                             |         r3 = *((r6 + 12));
    0x00027168 stm lr, {r0, r1, r2, r3}                      |         *(lr) = r0;
                                                             |         *((lr + 4)) = r1;
                                                             |         *((lr + 8)) = r2;
                                                             |         *((lr + 12)) = r3;
    0x0002716c ldrd r2, r3, [r4, -0x28]                      |         __asm ("ldrd r2, r3, [var_e4h]");
    0x00027170 b 0x27138                                     |         
                                                             |     } while (1);
                                                             | label_119:
    0x00027174 ldr r6, [pc, -0x918]                          |     r6 = *(0x26860);
    0x00027178 mov lr, ip                                    |     lr = ip;
    0x0002717c add r6, pc, r6                                |     r6 = pc + r6;
    0x00027180 ldm r6!, {r0, r1, r2, r3}                     |     r0 = *(r6!);
                                                             |     r1 = *((r6! + 4));
                                                             |     r2 = *((r6! + 8));
                                                             |     r3 = *((r6! + 12));
    0x00027184 stm lr!, {r0, r1, r2, r3}                     |     *(lr!) = r0;
                                                             |     *((lr! + 4)) = r1;
                                                             |     *((lr! + 8)) = r2;
                                                             |     *((lr! + 12)) = r3;
    0x00027188 ldm r6!, {r0, r1, r2, r3}                     |     r0 = *(r6!);
                                                             |     r1 = *((r6! + 4));
                                                             |     r2 = *((r6! + 8));
                                                             |     r3 = *((r6! + 12));
    0x0002718c stm lr!, {r0, r1, r2, r3}                     |     *(lr!) = r0;
                                                             |     *((lr! + 4)) = r1;
                                                             |     *((lr! + 8)) = r2;
                                                             |     *((lr! + 12)) = r3;
    0x00027190 ldm r6, {r0, r1, r2, r3}                      |     r0 = *(r6);
                                                             |     r1 = *((r6 + 4));
                                                             |     r2 = *((r6 + 8));
                                                             |     r3 = *((r6 + 12));
    0x00027194 stm lr, {r0, r1, r2, r3}                      |     *(lr) = r0;
                                                             |     *((lr + 4)) = r1;
                                                             |     *((lr + 8)) = r2;
                                                             |     *((lr + 12)) = r3;
    0x00027198 mov r2, 1                                     |     r2 = 1;
    0x0002719c mov r3, 0                                     |     r3 = 0;
    0x000271a0 b 0x27138                                     |     goto label_33;
                                                             | label_120:
    0x000271a4 ldr lr, [pc, -0x944]                          |     lr = *(0x26864);
    0x000271a8 ldr fp, [r4, -0x30]                           |     fp = var_d8h;
    0x000271ac add lr, pc, lr                                |     lr = pc + lr;
    0x000271b0 ldm lr!, {r0, r1, r2, r3}                     |     r0 = *(lr!);
                                                             |     r1 = *((lr! + 4));
                                                             |     r2 = *((lr! + 8));
                                                             |     r3 = *((lr! + 12));
    0x000271b4 stm ip!, {r0, r1, r2, r3}                     |     *(ip!) = r0;
                                                             |     *((ip! + 4)) = r1;
                                                             |     *((ip! + 8)) = r2;
                                                             |     *((ip! + 12)) = r3;
    0x000271b8 ldm lr!, {r0, r1, r2, r3}                     |     r0 = *(lr!);
                                                             |     r1 = *((lr! + 4));
                                                             |     r2 = *((lr! + 8));
                                                             |     r3 = *((lr! + 12));
    0x000271bc stm ip!, {r0, r1, r2, r3}                     |     *(ip!) = r0;
                                                             |     *((ip! + 4)) = r1;
                                                             |     *((ip! + 8)) = r2;
                                                             |     *((ip! + 12)) = r3;
    0x000271c0 ldm lr, {r0, r1, r2, r3}                      |     r0 = *(lr);
                                                             |     r1 = *((lr + 4));
                                                             |     r2 = *((lr + 8));
                                                             |     r3 = *((lr + 12));
    0x000271c4 stm ip, {r0, r1, r2, r3}                      |     *(ip) = r0;
                                                             |     *((ip + 4)) = r1;
                                                             |     *((ip + 8)) = r2;
                                                             |     *((ip + 12)) = r3;
    0x000271c8 ldr r3, [r4, -0x2c]                           |     r3 = var_dch;
                                                             |     do {
    0x000271cc mov r8, 0                                     |         r8 = 0;
    0x000271d0 str r3, [sp, 0x38]                            |         var_38h = r3;
    0x000271d4 str r8, [sp, 0x3c]                            |         var_3ch = r8;
    0x000271d8 mov r7, r8                                    |         r7 = r8;
    0x000271dc mov r6, r8                                    |         r6 = r8;
    0x000271e0 mov sl, r8                                    |         sl = r8;
    0x000271e4 mov sb, r8                                    |         sb = r8;
    0x000271e8 b 0x26c28                                     |         goto label_23;
                                                             | label_121:
    0x000271ec ldr lr, [pc, -0x988]                          |         lr = *(0x26868);
    0x000271f0 add lr, pc, lr                                |         lr = pc + lr;
                                                             | label_40:
    0x000271f4 ldm lr!, {r0, r1, r2, r3}                     |         r0 = *(lr!);
                                                             |         r1 = *((lr! + 4));
                                                             |         r2 = *((lr! + 8));
                                                             |         r3 = *((lr! + 12));
    0x000271f8 ldr fp, [r4, -0x28]                           |         fp = var_e0h;
    0x000271fc stm ip!, {r0, r1, r2, r3}                     |         *(ip!) = r0;
                                                             |         *((ip! + 4)) = r1;
                                                             |         *((ip! + 8)) = r2;
                                                             |         *((ip! + 12)) = r3;
    0x00027200 ldm lr!, {r0, r1, r2, r3}                     |         r0 = *(lr!);
                                                             |         r1 = *((lr! + 4));
                                                             |         r2 = *((lr! + 8));
                                                             |         r3 = *((lr! + 12));
    0x00027204 stm ip!, {r0, r1, r2, r3}                     |         *(ip!) = r0;
                                                             |         *((ip! + 4)) = r1;
                                                             |         *((ip! + 8)) = r2;
                                                             |         *((ip! + 12)) = r3;
    0x00027208 ldm lr, {r0, r1, r2, r3}                      |         r0 = *(lr);
                                                             |         r1 = *((lr + 4));
                                                             |         r2 = *((lr + 8));
                                                             |         r3 = *((lr + 12));
    0x0002720c stm ip, {r0, r1, r2, r3}                      |         *(ip) = r0;
                                                             |         *((ip + 4)) = r1;
                                                             |         *((ip + 8)) = r2;
                                                             |         *((ip + 12)) = r3;
    0x00027210 ldr r3, [r4, -0x24]                           |         r3 = var_e4h;
    0x00027214 b 0x271cc                                     |         
                                                             |     } while (1);
                                                             | label_122:
    0x00027218 ldr lr, [pc, -0x9b0]                          |     lr = *(0x2686c);
    0x0002721c mov r8, 0                                     |     r8 = 0;
    0x00027220 add lr, pc, lr                                |     lr = pc + lr;
    0x00027224 ldm lr!, {r0, r1, r2, r3}                     |     r0 = *(lr!);
                                                             |     r1 = *((lr! + 4));
                                                             |     r2 = *((lr! + 8));
                                                             |     r3 = *((lr! + 12));
    0x00027228 mov r7, r8                                    |     r7 = r8;
    0x0002722c stm ip!, {r0, r1, r2, r3}                     |     *(ip!) = r0;
                                                             |     *((ip! + 4)) = r1;
                                                             |     *((ip! + 8)) = r2;
                                                             |     *((ip! + 12)) = r3;
    0x00027230 ldm lr!, {r0, r1, r2, r3}                     |     r0 = *(lr!);
                                                             |     r1 = *((lr! + 4));
                                                             |     r2 = *((lr! + 8));
                                                             |     r3 = *((lr! + 12));
    0x00027234 mov r6, r8                                    |     r6 = r8;
    0x00027238 stm ip!, {r0, r1, r2, r3}                     |     *(ip!) = r0;
                                                             |     *((ip! + 4)) = r1;
                                                             |     *((ip! + 8)) = r2;
                                                             |     *((ip! + 12)) = r3;
    0x0002723c ldm lr, {r0, r1, r2, r3}                      |     r0 = *(lr);
                                                             |     r1 = *((lr + 4));
                                                             |     r2 = *((lr + 8));
                                                             |     r3 = *((lr + 12));
    0x00027240 mov sl, r8                                    |     sl = r8;
    0x00027244 stm ip, {r0, r1, r2, r3}                      |     *(ip) = r0;
                                                             |     *((ip + 4)) = r1;
                                                             |     *((ip + 8)) = r2;
                                                             |     *((ip + 12)) = r3;
    0x00027248 mov sb, r8                                    |     sb = r8;
    0x0002724c mov fp, 1                                     |     
    0x00027250 mov r3, r8                                    |     r3 = r8;
    0x00027254 str r8, [sp, 0x3c]                            |     var_3ch = r8;
                                                             | label_47:
    0x00027258 str r3, [sp, 0x38]                            |     var_38h = r3;
    0x0002725c b 0x26c28                                     |     goto label_23;
                                                             | label_123:
    0x00027260 ldr r6, [pc, -0x9f4]                          |     r6 = *(0x26870);
    0x00027264 mov lr, ip                                    |     lr = ip;
    0x00027268 add r6, pc, r6                                |     r6 = pc + r6;
    0x0002726c ldm r6!, {r0, r1, r2, r3}                     |     r0 = *(r6!);
                                                             |     r1 = *((r6! + 4));
                                                             |     r2 = *((r6! + 8));
                                                             |     r3 = *((r6! + 12));
    0x00027270 stm lr!, {r0, r1, r2, r3}                     |     *(lr!) = r0;
                                                             |     *((lr! + 4)) = r1;
                                                             |     *((lr! + 8)) = r2;
                                                             |     *((lr! + 12)) = r3;
    0x00027274 ldm r6!, {r0, r1, r2, r3}                     |     r0 = *(r6!);
                                                             |     r1 = *((r6! + 4));
                                                             |     r2 = *((r6! + 8));
                                                             |     r3 = *((r6! + 12));
    0x00027278 stm lr!, {r0, r1, r2, r3}                     |     *(lr!) = r0;
                                                             |     *((lr! + 4)) = r1;
                                                             |     *((lr! + 8)) = r2;
                                                             |     *((lr! + 12)) = r3;
    0x0002727c ldm r6, {r0, r1, r2, r3}                      |     r0 = *(r6);
                                                             |     r1 = *((r6 + 4));
                                                             |     r2 = *((r6 + 8));
                                                             |     r3 = *((r6 + 12));
    0x00027280 stm lr, {r0, r1, r2, r3}                      |     *(lr) = r0;
                                                             |     *((lr + 4)) = r1;
                                                             |     *((lr + 8)) = r2;
                                                             |     *((lr + 12)) = r3;
    0x00027284 ldr r2, [r4, -0x2c]                           |     r2 = var_dch;
    0x00027288 ldm r4, {r0, r3}                              |     r0 = *(r4);
                                                             |     r3 = *((r4 + 4));
    0x0002728c ldr lr, [r4, -0x30]                           |     lr = var_d8h;
                                                             |     do {
    0x00027290 mul r6, lr, r3                                |         r6 = lr * r3;
    0x00027294 mla r1, r0, r2, r6                            |         __asm ("mla r1, r0, r2, r6");
    0x00027298 umull r2, r3, lr, r0                          |         r2:r3 = lr * r0;
    0x0002729c add r3, r1, r3                                |         r3 = r1 + r3;
                                                             | label_35:
    0x000272a0 strd r2, r3, [ip, 0x10]                       |         __asm ("strd r2, r3, [var_e8h]");
    0x000272a4 b 0x2713c                                     |         goto label_34;
                                                             | label_124:
    0x000272a8 ldr r6, [pc, -0xa38]                          |         r6 = *(0x26874);
    0x000272ac mov lr, ip                                    |         lr = ip;
    0x000272b0 add r6, pc, r6                                |         r6 = pc + r6;
                                                             | label_41:
    0x000272b4 ldm r6!, {r0, r1, r2, r3}                     |         r0 = *(r6!);
                                                             |         r1 = *((r6! + 4));
                                                             |         r2 = *((r6! + 8));
                                                             |         r3 = *((r6! + 12));
    0x000272b8 stm lr!, {r0, r1, r2, r3}                     |         *(lr!) = r0;
                                                             |         *((lr! + 4)) = r1;
                                                             |         *((lr! + 8)) = r2;
                                                             |         *((lr! + 12)) = r3;
    0x000272bc ldm r6!, {r0, r1, r2, r3}                     |         r0 = *(r6!);
                                                             |         r1 = *((r6! + 4));
                                                             |         r2 = *((r6! + 8));
                                                             |         r3 = *((r6! + 12));
    0x000272c0 stm lr!, {r0, r1, r2, r3}                     |         *(lr!) = r0;
                                                             |         *((lr! + 4)) = r1;
                                                             |         *((lr! + 8)) = r2;
                                                             |         *((lr! + 12)) = r3;
    0x000272c4 ldm r6, {r0, r1, r2, r3}                      |         r0 = *(r6);
                                                             |         r1 = *((r6 + 4));
                                                             |         r2 = *((r6 + 8));
                                                             |         r3 = *((r6 + 12));
    0x000272c8 stm lr, {r0, r1, r2, r3}                      |         *(lr) = r0;
                                                             |         *((lr + 4)) = r1;
                                                             |         *((lr + 8)) = r2;
                                                             |         *((lr + 12)) = r3;
    0x000272cc ldr r2, [r4, -0x24]                           |         r2 = var_e4h;
    0x000272d0 ldm r4, {r0, r3}                              |         r0 = *(r4);
                                                             |         r3 = *((r4 + 4));
    0x000272d4 ldr lr, [r4, -0x28]                           |         lr = var_e0h;
    0x000272d8 b 0x27290                                     |         
                                                             |     } while (1);
                                                             | label_125:
    0x000272dc ldr r6, [pc, -0xa68]                          |     r6 = *(0x26878);
    0x000272e0 mov lr, ip                                    |     lr = ip;
    0x000272e4 add r6, pc, r6                                |     r6 = pc + r6;
                                                             | label_45:
    0x000272e8 ldm r6!, {r0, r1, r2, r3}                     |     r0 = *(r6!);
                                                             |     r1 = *((r6! + 4));
                                                             |     r2 = *((r6! + 8));
                                                             |     r3 = *((r6! + 12));
    0x000272ec stm lr!, {r0, r1, r2, r3}                     |     *(lr!) = r0;
                                                             |     *((lr! + 4)) = r1;
                                                             |     *((lr! + 8)) = r2;
                                                             |     *((lr! + 12)) = r3;
    0x000272f0 ldm r6!, {r0, r1, r2, r3}                     |     r0 = *(r6!);
                                                             |     r1 = *((r6! + 4));
                                                             |     r2 = *((r6! + 8));
                                                             |     r3 = *((r6! + 12));
    0x000272f4 stm lr!, {r0, r1, r2, r3}                     |     *(lr!) = r0;
                                                             |     *((lr! + 4)) = r1;
                                                             |     *((lr! + 8)) = r2;
                                                             |     *((lr! + 12)) = r3;
    0x000272f8 ldm r6, {r0, r1, r2, r3}                      |     r0 = *(r6);
                                                             |     r1 = *((r6 + 4));
                                                             |     r2 = *((r6 + 8));
                                                             |     r3 = *((r6 + 12));
    0x000272fc stm lr, {r0, r1, r2, r3}                      |     *(lr) = r0;
                                                             |     *((lr + 4)) = r1;
                                                             |     *((lr + 8)) = r2;
                                                             |     *((lr + 12)) = r3;
    0x00027300 ldrd r2, r3, [r4]                             |     __asm ("ldrd r2, r3, [r4]");
    0x00027304 b 0x272a0                                     |     goto label_35;
                                                             | label_126:
    0x00027308 ldr lr, [pc, -0xa90]                          |     lr = *(0x2687c);
    0x0002730c ldr sl, [r4, -0x30]                           |     sl = var_d8h;
    0x00027310 add lr, pc, lr                                |     lr = pc + lr;
    0x00027314 ldm lr!, {r0, r1, r2, r3}                     |     r0 = *(lr!);
                                                             |     r1 = *((lr! + 4));
                                                             |     r2 = *((lr! + 8));
                                                             |     r3 = *((lr! + 12));
    0x00027318 ldr sb, [r4, -0x2c]                           |     sb = var_dch;
    0x0002731c stm ip!, {r0, r1, r2, r3}                     |     *(ip!) = r0;
                                                             |     *((ip! + 4)) = r1;
                                                             |     *((ip! + 8)) = r2;
                                                             |     *((ip! + 12)) = r3;
    0x00027320 ldm lr!, {r0, r1, r2, r3}                     |     r0 = *(lr!);
                                                             |     r1 = *((lr! + 4));
                                                             |     r2 = *((lr! + 8));
                                                             |     r3 = *((lr! + 12));
    0x00027324 stm ip!, {r0, r1, r2, r3}                     |     *(ip!) = r0;
                                                             |     *((ip! + 4)) = r1;
                                                             |     *((ip! + 8)) = r2;
                                                             |     *((ip! + 12)) = r3;
    0x00027328 ldm lr, {r0, r1, r2, r3}                      |     r0 = *(lr);
                                                             |     r1 = *((lr + 4));
                                                             |     r2 = *((lr + 8));
                                                             |     r3 = *((lr + 12));
    0x0002732c stm ip, {r0, r1, r2, r3}                      |     *(ip) = r0;
                                                             |     *((ip + 4)) = r1;
                                                             |     *((ip + 8)) = r2;
                                                             |     *((ip + 12)) = r3;
                                                             |     do {
    0x00027330 mov r8, 0                                     |         r8 = 0;
    0x00027334 mov r7, r8                                    |         r7 = r8;
    0x00027338 mov r6, r8                                    |         r6 = r8;
    0x0002733c str r8, [sp, 0x3c]                            |         var_3ch = r8;
                                                             | label_36:
    0x00027340 mov fp, r7                                    |         
    0x00027344 str r6, [sp, 0x38]                            |         var_38h = r6;
    0x00027348 b 0x26c28                                     |         goto label_23;
                                                             | label_127:
    0x0002734c ldr lr, [pc, -0xad0]                          |         lr = *(0x26880);
    0x00027350 add lr, pc, lr                                |         lr = pc + lr;
                                                             | label_42:
    0x00027354 ldm lr!, {r0, r1, r2, r3}                     |         r0 = *(lr!);
                                                             |         r1 = *((lr! + 4));
                                                             |         r2 = *((lr! + 8));
                                                             |         r3 = *((lr! + 12));
    0x00027358 ldr sl, [r4, -0x28]                           |         sl = var_e0h;
    0x0002735c stm ip!, {r0, r1, r2, r3}                     |         *(ip!) = r0;
                                                             |         *((ip! + 4)) = r1;
                                                             |         *((ip! + 8)) = r2;
                                                             |         *((ip! + 12)) = r3;
    0x00027360 ldr sb, [r4, -0x24]                           |         sb = var_e4h;
    0x00027364 ldm lr!, {r0, r1, r2, r3}                     |         r0 = *(lr!);
                                                             |         r1 = *((lr! + 4));
                                                             |         r2 = *((lr! + 8));
                                                             |         r3 = *((lr! + 12));
    0x00027368 stm ip!, {r0, r1, r2, r3}                     |         *(ip!) = r0;
                                                             |         *((ip! + 4)) = r1;
                                                             |         *((ip! + 8)) = r2;
                                                             |         *((ip! + 12)) = r3;
    0x0002736c ldm lr, {r0, r1, r2, r3}                      |         r0 = *(lr);
                                                             |         r1 = *((lr + 4));
                                                             |         r2 = *((lr + 8));
                                                             |         r3 = *((lr + 12));
    0x00027370 stm ip, {r0, r1, r2, r3}                      |         *(ip) = r0;
                                                             |         *((ip + 4)) = r1;
                                                             |         *((ip + 8)) = r2;
                                                             |         *((ip + 12)) = r3;
    0x00027374 b 0x27330                                     |         
                                                             |     } while (1);
                                                             | label_128:
    0x00027378 ldr lr, [pc, -0xaf8]                          |     lr = *(0x26884);
    0x0002737c mov r8, 0                                     |     r8 = 0;
    0x00027380 add lr, pc, lr                                |     lr = pc + lr;
    0x00027384 ldm lr!, {r0, r1, r2, r3}                     |     r0 = *(lr!);
                                                             |     r1 = *((lr! + 4));
                                                             |     r2 = *((lr! + 8));
                                                             |     r3 = *((lr! + 12));
    0x00027388 mov r7, r8                                    |     r7 = r8;
    0x0002738c stm ip!, {r0, r1, r2, r3}                     |     *(ip!) = r0;
                                                             |     *((ip! + 4)) = r1;
                                                             |     *((ip! + 8)) = r2;
                                                             |     *((ip! + 12)) = r3;
    0x00027390 ldm lr!, {r0, r1, r2, r3}                     |     r0 = *(lr!);
                                                             |     r1 = *((lr! + 4));
                                                             |     r2 = *((lr! + 8));
                                                             |     r3 = *((lr! + 12));
    0x00027394 mov r6, r8                                    |     r6 = r8;
    0x00027398 stm ip!, {r0, r1, r2, r3}                     |     *(ip!) = r0;
                                                             |     *((ip! + 4)) = r1;
                                                             |     *((ip! + 8)) = r2;
                                                             |     *((ip! + 12)) = r3;
    0x0002739c ldm lr, {r0, r1, r2, r3}                      |     r0 = *(lr);
                                                             |     r1 = *((lr + 4));
                                                             |     r2 = *((lr + 8));
                                                             |     r3 = *((lr + 12));
    0x000273a0 mov sl, 1                                     |     sl = 1;
    0x000273a4 stm ip, {r0, r1, r2, r3}                      |     *(ip) = r0;
                                                             |     *((ip + 4)) = r1;
                                                             |     *((ip + 8)) = r2;
                                                             |     *((ip + 12)) = r3;
    0x000273a8 str r8, [sp, 0x3c]                            |     var_3ch = r8;
                                                             | label_37:
    0x000273ac mov sb, r6                                    |     sb = r6;
    0x000273b0 b 0x27340                                     |     goto label_36;
                                                             | label_129:
    0x000273b4 ldr lr, [pc, -0xb30]                          |     lr = *(0x26888);
    0x000273b8 ldr r7, [r4, -0x30]                           |     r7 = var_d8h;
    0x000273bc add lr, pc, lr                                |     lr = pc + lr;
    0x000273c0 ldm lr!, {r0, r1, r2, r3}                     |     r0 = *(lr!);
                                                             |     r1 = *((lr! + 4));
                                                             |     r2 = *((lr! + 8));
                                                             |     r3 = *((lr! + 12));
    0x000273c4 ldr r6, [r4, -0x2c]                           |     r6 = var_dch;
    0x000273c8 stm ip!, {r0, r1, r2, r3}                     |     *(ip!) = r0;
                                                             |     *((ip! + 4)) = r1;
                                                             |     *((ip! + 8)) = r2;
                                                             |     *((ip! + 12)) = r3;
    0x000273cc ldm lr!, {r0, r1, r2, r3}                     |     r0 = *(lr!);
                                                             |     r1 = *((lr! + 4));
                                                             |     r2 = *((lr! + 8));
                                                             |     r3 = *((lr! + 12));
    0x000273d0 stm ip!, {r0, r1, r2, r3}                     |     *(ip!) = r0;
                                                             |     *((ip! + 4)) = r1;
                                                             |     *((ip! + 8)) = r2;
                                                             |     *((ip! + 12)) = r3;
    0x000273d4 ldm lr, {r0, r1, r2, r3}                      |     r0 = *(lr);
                                                             |     r1 = *((lr + 4));
                                                             |     r2 = *((lr + 8));
                                                             |     r3 = *((lr + 12));
    0x000273d8 stm ip, {r0, r1, r2, r3}                      |     *(ip) = r0;
                                                             |     *((ip + 4)) = r1;
                                                             |     *((ip + 8)) = r2;
                                                             |     *((ip + 12)) = r3;
                                                             |     do {
    0x000273dc mov r8, 0                                     |         r8 = 0;
    0x000273e0 str r8, [sp, 0x3c]                            |         var_3ch = r8;
    0x000273e4 mov sl, r8                                    |         sl = r8;
    0x000273e8 b 0x2744c                                     |         goto label_154;
                                                             | label_130:
    0x000273ec ldr lr, [pc, -0xb64]                          |         lr = *(0x2688c);
    0x000273f0 add lr, pc, lr                                |         lr = pc + lr;
                                                             | label_43:
    0x000273f4 ldm lr!, {r0, r1, r2, r3}                     |         r0 = *(lr!);
                                                             |         r1 = *((lr! + 4));
                                                             |         r2 = *((lr! + 8));
                                                             |         r3 = *((lr! + 12));
    0x000273f8 ldr r7, [r4, -0x28]                           |         r7 = var_e0h;
    0x000273fc stm ip!, {r0, r1, r2, r3}                     |         *(ip!) = r0;
                                                             |         *((ip! + 4)) = r1;
                                                             |         *((ip! + 8)) = r2;
                                                             |         *((ip! + 12)) = r3;
    0x00027400 ldr r6, [r4, -0x24]                           |         r6 = var_e4h;
    0x00027404 ldm lr!, {r0, r1, r2, r3}                     |         r0 = *(lr!);
                                                             |         r1 = *((lr! + 4));
                                                             |         r2 = *((lr! + 8));
                                                             |         r3 = *((lr! + 12));
    0x00027408 stm ip!, {r0, r1, r2, r3}                     |         *(ip!) = r0;
                                                             |         *((ip! + 4)) = r1;
                                                             |         *((ip! + 8)) = r2;
                                                             |         *((ip! + 12)) = r3;
    0x0002740c ldm lr, {r0, r1, r2, r3}                      |         r0 = *(lr);
                                                             |         r1 = *((lr + 4));
                                                             |         r2 = *((lr + 8));
                                                             |         r3 = *((lr + 12));
    0x00027410 stm ip, {r0, r1, r2, r3}                      |         *(ip) = r0;
                                                             |         *((ip + 4)) = r1;
                                                             |         *((ip + 8)) = r2;
                                                             |         *((ip + 12)) = r3;
    0x00027414 b 0x273dc                                     |         
                                                             |     } while (1);
                                                             | label_131:
    0x00027418 ldr lr, [pc, -0xb8c]                          |     lr = *(0x26890);
    0x0002741c mov r8, 0                                     |     r8 = 0;
    0x00027420 add lr, pc, lr                                |     lr = pc + lr;
    0x00027424 ldm lr!, {r0, r1, r2, r3}                     |     r0 = *(lr!);
                                                             |     r1 = *((lr! + 4));
                                                             |     r2 = *((lr! + 8));
                                                             |     r3 = *((lr! + 12));
    0x00027428 mov r7, 1                                     |     r7 = 1;
    0x0002742c stm ip!, {r0, r1, r2, r3}                     |     *(ip!) = r0;
                                                             |     *((ip! + 4)) = r1;
                                                             |     *((ip! + 8)) = r2;
                                                             |     *((ip! + 12)) = r3;
    0x00027430 ldm lr!, {r0, r1, r2, r3}                     |     r0 = *(lr!);
                                                             |     r1 = *((lr! + 4));
                                                             |     r2 = *((lr! + 8));
                                                             |     r3 = *((lr! + 12));
    0x00027434 mov r6, r8                                    |     r6 = r8;
    0x00027438 stm ip!, {r0, r1, r2, r3}                     |     *(ip!) = r0;
                                                             |     *((ip! + 4)) = r1;
                                                             |     *((ip! + 8)) = r2;
                                                             |     *((ip! + 12)) = r3;
    0x0002743c ldm lr, {r0, r1, r2, r3}                      |     r0 = *(lr);
                                                             |     r1 = *((lr + 4));
                                                             |     r2 = *((lr + 8));
                                                             |     r3 = *((lr + 12));
    0x00027440 mov sl, r8                                    |     sl = r8;
    0x00027444 stm ip, {r0, r1, r2, r3}                      |     *(ip) = r0;
                                                             |     *((ip + 4)) = r1;
                                                             |     *((ip + 8)) = r2;
                                                             |     *((ip + 12)) = r3;
    0x00027448 str r8, [sp, 0x3c]                            |     var_3ch = r8;
                                                             | label_154:
    0x0002744c mov sb, sl                                    |     sb = sl;
    0x00027450 mov fp, sl                                    |     
    0x00027454 str sl, [sp, 0x38]                            |     var_38h = sl;
    0x00027458 b 0x26c28                                     |     goto label_23;
                                                             | label_132:
    0x0002745c ldr lr, [pc, -0xbcc]                          |     lr = *(0x26894);
    0x00027460 add lr, pc, lr                                |     lr = pc + lr;
    0x00027464 ldm lr!, {r0, r1, r2, r3}                     |     r0 = *(lr!);
                                                             |     r1 = *((lr! + 4));
                                                             |     r2 = *((lr! + 8));
                                                             |     r3 = *((lr! + 12));
    0x00027468 stm ip!, {r0, r1, r2, r3}                     |     *(ip!) = r0;
                                                             |     *((ip! + 4)) = r1;
                                                             |     *((ip! + 8)) = r2;
                                                             |     *((ip! + 12)) = r3;
    0x0002746c ldm lr!, {r0, r1, r2, r3}                     |     r0 = *(lr!);
                                                             |     r1 = *((lr! + 4));
                                                             |     r2 = *((lr! + 8));
                                                             |     r3 = *((lr! + 12));
    0x00027470 stm ip!, {r0, r1, r2, r3}                     |     *(ip!) = r0;
                                                             |     *((ip! + 4)) = r1;
                                                             |     *((ip! + 8)) = r2;
                                                             |     *((ip! + 12)) = r3;
    0x00027474 ldm lr, {r0, r1, r2, r3}                      |     r0 = *(lr);
                                                             |     r1 = *((lr + 4));
                                                             |     r2 = *((lr + 8));
                                                             |     r3 = *((lr + 12));
    0x00027478 stm ip, {r0, r1, r2, r3}                      |     *(ip) = r0;
                                                             |     *((ip + 4)) = r1;
                                                             |     *((ip + 8)) = r2;
                                                             |     *((ip + 12)) = r3;
    0x0002747c ldr r3, [r4, -0x30]                           |     r3 = var_d8h;
                                                             |     do {
    0x00027480 str r3, [sp, 0x3c]                            |         var_3ch = r3;
    0x00027484 mov r8, 0                                     |         r8 = 0;
    0x00027488 b 0x27528                                     |         goto label_153;
                                                             | label_133:
    0x0002748c ldr lr, [pc, -0xbf8]                          |         lr = *(0x26898);
    0x00027490 add lr, pc, lr                                |         lr = pc + lr;
                                                             | label_44:
    0x00027494 ldm lr!, {r0, r1, r2, r3}                     |         r0 = *(lr!);
                                                             |         r1 = *((lr! + 4));
                                                             |         r2 = *((lr! + 8));
                                                             |         r3 = *((lr! + 12));
    0x00027498 stm ip!, {r0, r1, r2, r3}                     |         *(ip!) = r0;
                                                             |         *((ip! + 4)) = r1;
                                                             |         *((ip! + 8)) = r2;
                                                             |         *((ip! + 12)) = r3;
    0x0002749c ldm lr!, {r0, r1, r2, r3}                     |         r0 = *(lr!);
                                                             |         r1 = *((lr! + 4));
                                                             |         r2 = *((lr! + 8));
                                                             |         r3 = *((lr! + 12));
    0x000274a0 stm ip!, {r0, r1, r2, r3}                     |         *(ip!) = r0;
                                                             |         *((ip! + 4)) = r1;
                                                             |         *((ip! + 8)) = r2;
                                                             |         *((ip! + 12)) = r3;
    0x000274a4 ldm lr, {r0, r1, r2, r3}                      |         r0 = *(lr);
                                                             |         r1 = *((lr + 4));
                                                             |         r2 = *((lr + 8));
                                                             |         r3 = *((lr + 12));
    0x000274a8 stm ip, {r0, r1, r2, r3}                      |         *(ip) = r0;
                                                             |         *((ip + 4)) = r1;
                                                             |         *((ip + 8)) = r2;
                                                             |         *((ip + 12)) = r3;
    0x000274ac ldr r3, [r4, -0x28]                           |         r3 = var_e0h;
    0x000274b0 b 0x27480                                     |         
                                                             |     } while (1);
                                                             | label_134:
    0x000274b4 ldr lr, [pc, -0xc1c]                          |     lr = *(0x2689c);
    0x000274b8 add lr, pc, lr                                |     lr = pc + lr;
                                                             |     do {
    0x000274bc ldm lr!, {r0, r1, r2, r3}                     |         r0 = *(lr!);
                                                             |         r1 = *((lr! + 4));
                                                             |         r2 = *((lr! + 8));
                                                             |         r3 = *((lr! + 12));
    0x000274c0 ldr r8, [r4, -0x2c]                           |         r8 = var_dch;
    0x000274c4 stm ip!, {r0, r1, r2, r3}                     |         *(ip!) = r0;
                                                             |         *((ip! + 4)) = r1;
                                                             |         *((ip! + 8)) = r2;
                                                             |         *((ip! + 12)) = r3;
    0x000274c8 ldm lr!, {r0, r1, r2, r3}                     |         r0 = *(lr!);
                                                             |         r1 = *((lr! + 4));
                                                             |         r2 = *((lr! + 8));
                                                             |         r3 = *((lr! + 12));
    0x000274cc mov r7, 0                                     |         r7 = 0;
    0x000274d0 stm ip!, {r0, r1, r2, r3}                     |         *(ip!) = r0;
                                                             |         *((ip! + 4)) = r1;
                                                             |         *((ip! + 8)) = r2;
                                                             |         *((ip! + 12)) = r3;
    0x000274d4 ldm lr, {r0, r1, r2, r3}                      |         r0 = *(lr);
                                                             |         r1 = *((lr + 4));
                                                             |         r2 = *((lr + 8));
                                                             |         r3 = *((lr + 12));
    0x000274d8 stm ip, {r0, r1, r2, r3}                      |         *(ip) = r0;
                                                             |         *((ip + 4)) = r1;
                                                             |         *((ip + 8)) = r2;
                                                             |         *((ip + 12)) = r3;
    0x000274dc ldr r3, [r4, -0x30]                           |         r3 = var_d8h;
    0x000274e0 str r3, [sp, 0x3c]                            |         var_3ch = r3;
                                                             | label_38:
    0x000274e4 mov r6, r7                                    |         r6 = r7;
    0x000274e8 mov sl, r7                                    |         sl = r7;
    0x000274ec b 0x273ac                                     |         goto label_37;
                                                             | label_135:
    0x000274f0 ldr lr, [pc, -0xc54]                          |         lr = *(0x268a0);
    0x000274f4 add lr, pc, lr                                |         lr = pc + lr;
    0x000274f8 b 0x274bc                                     |         
                                                             |     } while (1);
                                                             | label_136:
    0x000274fc ldr lr, [pc, -0xc5c]                          |     lr = *(0x268a4);
    0x00027500 mov r8, 0                                     |     r8 = 0;
    0x00027504 add lr, pc, lr                                |     lr = pc + lr;
    0x00027508 ldm lr!, {r0, r1, r2, r3}                     |     r0 = *(lr!);
                                                             |     r1 = *((lr! + 4));
                                                             |     r2 = *((lr! + 8));
                                                             |     r3 = *((lr! + 12));
    0x0002750c stm ip!, {r0, r1, r2, r3}                     |     *(ip!) = r0;
                                                             |     *((ip! + 4)) = r1;
                                                             |     *((ip! + 8)) = r2;
                                                             |     *((ip! + 12)) = r3;
    0x00027510 ldm lr!, {r0, r1, r2, r3}                     |     r0 = *(lr!);
                                                             |     r1 = *((lr! + 4));
                                                             |     r2 = *((lr! + 8));
                                                             |     r3 = *((lr! + 12));
    0x00027514 stm ip!, {r0, r1, r2, r3}                     |     *(ip!) = r0;
                                                             |     *((ip! + 4)) = r1;
                                                             |     *((ip! + 8)) = r2;
                                                             |     *((ip! + 12)) = r3;
    0x00027518 ldm lr, {r0, r1, r2, r3}                      |     r0 = *(lr);
                                                             |     r1 = *((lr + 4));
                                                             |     r2 = *((lr + 8));
                                                             |     r3 = *((lr + 12));
    0x0002751c stm ip, {r0, r1, r2, r3}                      |     *(ip) = r0;
                                                             |     *((ip + 4)) = r1;
                                                             |     *((ip + 8)) = r2;
                                                             |     *((ip + 12)) = r3;
    0x00027520 mov r3, 1                                     |     r3 = 1;
    0x00027524 str r3, [sp, 0x3c]                            |     var_3ch = r3;
                                                             | label_153:
    0x00027528 mov r7, r8                                    |     r7 = r8;
    0x0002752c b 0x274e4                                     |     goto label_38;
                                                             | label_137:
    0x00027530 ldr r6, [pc, -0xc8c]                          |     r6 = *(0x268a8);
    0x00027534 mov lr, ip                                    |     lr = ip;
    0x00027538 add r6, pc, r6                                |     r6 = pc + r6;
    0x0002753c b 0x27154                                     |     goto label_39;
                                                             | label_138:
    0x00027540 ldr lr, [pc, -0xc98]                          |     lr = *(0x268ac);
    0x00027544 add lr, pc, lr                                |     lr = pc + lr;
    0x00027548 b 0x271f4                                     |     goto label_40;
                                                             | label_139:
    0x0002754c ldr r6, [pc, -0xca0]                          |     r6 = *(0x268b0);
    0x00027550 mov lr, ip                                    |     lr = ip;
    0x00027554 add r6, pc, r6                                |     r6 = pc + r6;
    0x00027558 b 0x272b4                                     |     goto label_41;
                                                             | label_140:
    0x0002755c ldr lr, [pc, -0xcac]                          |     lr = *(0x268b4);
    0x00027560 add lr, pc, lr                                |     lr = pc + lr;
    0x00027564 b 0x27354                                     |     goto label_42;
                                                             | label_141:
    0x00027568 ldr lr, [pc, -0xcb4]                          |     lr = *(0x268b8);
    0x0002756c add lr, pc, lr                                |     lr = pc + lr;
    0x00027570 b 0x273f4                                     |     goto label_43;
                                                             | label_142:
    0x00027574 ldr lr, [pc, -0xcbc]                          |     lr = *(0x268bc);
    0x00027578 add lr, pc, lr                                |     lr = pc + lr;
    0x0002757c b 0x27494                                     |     goto label_44;
                                                             | label_143:
    0x00027580 ldr r6, [pc, -0xcc4]                          |     r6 = *(0x268c0);
    0x00027584 mov lr, ip                                    |     lr = ip;
    0x00027588 add r6, pc, r6                                |     r6 = pc + r6;
    0x0002758c b 0x272e8                                     |     goto label_45;
                                                             | label_144:
    0x00027590 ldr r3, [r4, 8]                               |     r3 = var_8h_2;
    0x00027594 str r3, [sp, 0xd8]                            |     var_d8h = r3;
    0x00027598 mov r3, 0                                     |     r3 = 0;
    0x0002759c str r3, [sp, 0xdc]                            |     var_dch = r3;
    0x000275a0 b 0x26c28                                     |     goto label_23;
                                                             | label_145:
    0x000275a4 add r3, r4, 8                                 |     r3 += var_8h_2;
    0x000275a8 ldm r3, {r0, r1, r2, r3}                      |     r0 = *(r3);
                                                             |     r1 = *((r3 + 4));
                                                             |     r2 = *((r3 + 8));
                                                             |     r3 = *((r3 + 12));
    0x000275ac stm sp, {r0, r1, r2, r3}                      |     *(sp) = r0;
                                                             |     *((sp + 4)) = r1;
                                                             |     *((sp + 8)) = r2;
                                                             |     *((sp + 12)) = r3;
    0x000275b0 mov r0, r5                                    |     r0 = r5;
    0x000275b4 ldm r4, {r2, r3}                              |     r2 = *(r4);
                                                             |     r3 = *((r4 + 4));
    0x000275b8 bl 0x25d40                                    |     fcn_00025d40 (r0, r1, r2);
    0x000275bc b 0x26c28                                     |     goto label_23;
                                                             | label_146:
    0x000275c0 sub r3, r4, 0x28                              |     r3 -= var_e0h;
    0x000275c4 ldm r3, {r0, r1, r2, r3}                      |     r0 = *(r3);
                                                             |     r1 = *((r3 + 4));
                                                             |     r2 = *((r3 + 8));
                                                             |     r3 = *((r3 + 12));
    0x000275c8 stm sp, {r0, r1, r2, r3}                      |     *(sp) = r0;
                                                             |     *((sp + 4)) = r1;
                                                             |     *((sp + 8)) = r2;
                                                             |     *((sp + 12)) = r3;
    0x000275cc sub r3, r4, 0x30                              |     r3 -= var_d8h;
    0x000275d0 ldm r3, {r2, r3}                              |     r2 = *(r3);
                                                             |     r3 = *((r3 + 4));
    0x000275d4 mov r0, r5                                    |     r0 = r5;
    0x000275d8 bl 0x25d40                                    |     fcn_00025d40 (r0, r1, r2);
    0x000275dc b 0x26ed4                                     |     goto label_46;
                                                             | label_147:
    0x000275e0 mov r3, 0                                     |     r3 = 0;
    0x000275e4 str r3, [sp, 0xe8]                            |     var_e8h = r3;
    0x000275e8 mov fp, r3                                    |     
    0x000275ec b 0x27258                                     |     goto label_47;
                                                             | label_148:
    0x000275f0 mov lr, r4                                    |     lr = r4;
    0x000275f4 ldm lr!, {r0, r1, r2, r3}                     |     r0 = *(lr!);
                                                             |     r1 = *((lr! + 4));
                                                             |     r2 = *((lr! + 8));
                                                             |     r3 = *((lr! + 12));
    0x000275f8 stm ip!, {r0, r1, r2, r3}                     |     *(ip!) = r0;
                                                             |     *((ip! + 4)) = r1;
                                                             |     *((ip! + 8)) = r2;
                                                             |     *((ip! + 12)) = r3;
    0x000275fc ldm lr, {r0, r1}                              |     r0 = *(lr);
                                                             |     r1 = *((lr + 4));
    0x00027600 mov fp, r2                                    |     
    0x00027604 stm ip, {r0, r1}                              |     *(ip) = r0;
                                                             |     *((ip + 4)) = r1;
    0x00027608 b 0x27258                                     |     goto label_47;
                                                             | label_79:
    0x0002760c ldr r3, [sp, 0x50]                            |     r3 = var_50h;
    0x00027610 cmp r3, 3                                     |     
                                                             |     if (r3 != 3) {
    0x00027614 bne 0x27630                                   |         goto label_155;
                                                             |     }
    0x00027618 ldr r3, [sp, 0x34]                            |     r3 = var_34h;
    0x0002761c cmp r3, 0                                     |     
                                                             |     if (r3 <= 0) {
    0x00027620 mvngt r3, 1                                   |         r3 = ~1;
                                                             |     }
                                                             |     if (r3 <= 0) {
    0x00027624 strgt r3, [sp, 0x34]                          |         var_34h = r3;
                                                             |     }
                                                             |     if (r3 > 0) {
    0x00027628 bgt 0x27630                                   |         goto label_155;
                                                             |     }
                                                             |     if (r3 == 0) {
    0x0002762c beq 0x26e58                                   |         goto label_27;
                                                             |     }
                                                             | label_155:
    0x00027630 ldr r2, [pc, -0xd70]                          |     r2 = *(0x268c4);
    0x00027634 add r2, pc, r2                                |     r2 = pc + r2;
                                                             | label_48:
    0x00027638 ldr r3, [sp, 0x38]                            |     r3 = var_38h;
    0x0002763c ldrsb r3, [r2, r3]                            |     r3 = *((r2 + r3));
    0x00027640 cmn r3, 0x5d                                  |     
                                                             |     if (r3 != 0x5d) {
    0x00027644 beq 0x27674                                   |         
    0x00027648 add r3, r3, 1                                 |         r3++;
    0x0002764c cmp r3, 0x70                                  |         
                                                             |         if (r3 > 0x70) {
    0x00027650 bhi 0x27674                                   |             goto label_156;
                                                             |         }
    0x00027654 add r3, r2, r3                                |         r3 = r2 + r3;
    0x00027658 ldrb r1, [r3, 0x188]                          |         r1 = *((r3 + 0x188));
    0x0002765c cmp r1, 1                                     |         
                                                             |         if (r1 != 1) {
    0x00027660 bne 0x27674                                   |             goto label_156;
                                                             |         }
    0x00027664 ldrb r3, [r3, 0x1f9]                          |         r3 = *((r3 + 0x1f9));
    0x00027668 cmp r3, 0                                     |         
    0x0002766c str r3, [sp, 0x44]                            |         var_44h = r3;
                                                             |         if (r3 != 0) {
    0x00027670 bne 0x27698                                   |             goto label_157;
                                                             |         }
                                                             |     }
                                                             | label_156:
    0x00027674 ldr r3, [sp, 0x40]                            |     r3 = var_40h;
    0x00027678 ldr r1, [sp, 0x64]                            |     r1 = var_64h;
    0x0002767c cmp r3, r1                                    |     
                                                             |     if (r3 == r1) {
    0x00027680 beq 0x26e58                                   |         goto label_27;
                                                             |     }
    0x00027684 ldrsh r1, [r3, -2]!                           |     r1 = *((r3 -= 2));
    0x00027688 sub r4, r4, 0x30                              |     r4 -= var_d8h;
    0x0002768c str r1, [sp, 0x38]                            |     var_38h = r1;
    0x00027690 str r3, [sp, 0x40]                            |     var_40h = r3;
    0x00027694 b 0x27638                                     |     goto label_48;
                                                             | label_157:
    0x00027698 ldrd r2, r3, [sp, 0x48]                       |     __asm ("ldrd r2, r3, [var_48h]");
    0x0002769c add ip, sp, 0xa8                              |     
    0x000276a0 strd r2, r3, [sp, 0xb0]                       |     __asm ("strd r2, r3, [var_b0h]");
    0x000276a4 ldr r3, [sp, 0x60]                            |     r3 = var_60h;
    0x000276a8 add r4, r4, 0x30                              |     r4 += var_30h;
    0x000276ac str r3, [sp, 0xb8]                            |     var_b8h = r3;
    0x000276b0 ldm ip!, {r0, r1, r2, r3}                     |     r0 = *(ip!);
                                                             |     r1 = *((ip! + 4));
                                                             |     r2 = *((ip! + 8));
                                                             |     r3 = *((ip! + 12));
    0x000276b4 mov lr, r4                                    |     lr = r4;
    0x000276b8 stm lr!, {r0, r1, r2, r3}                     |     *(lr!) = r0;
                                                             |     *((lr! + 4)) = r1;
                                                             |     *((lr! + 8)) = r2;
                                                             |     *((lr! + 12)) = r3;
    0x000276bc ldm ip!, {r0, r1, r2, r3}                     |     r0 = *(ip!);
                                                             |     r1 = *((ip! + 4));
                                                             |     r2 = *((ip! + 8));
                                                             |     r3 = *((ip! + 12));
    0x000276c0 stm lr!, {r0, r1, r2, r3}                     |     *(lr!) = r0;
                                                             |     *((lr! + 4)) = r1;
                                                             |     *((lr! + 8)) = r2;
                                                             |     *((lr! + 12)) = r3;
    0x000276c4 ldm ip, {r0, r1, r2, r3}                      |     r0 = *(ip);
                                                             |     r1 = *((ip + 4));
                                                             |     r2 = *((ip + 8));
                                                             |     r3 = *((ip + 12));
    0x000276c8 stm lr, {r0, r1, r2, r3}                      |     *(lr) = r0;
                                                             |     *((lr + 4)) = r1;
                                                             |     *((lr + 8)) = r2;
                                                             |     *((lr + 12)) = r3;
    0x000276cc mov r3, 3                                     |     r3 = 3;
    0x000276d0 str r3, [sp, 0x50]                            |     var_50h = r3;
    0x000276d4 b 0x269f8                                     |     goto label_49;
                                                             | label_51:
    0x000276d8 mov r0, 2                                     |     r0 = 2;
    0x000276dc b 0x26e5c                                     |     goto label_50;
                                                             | label_52:
    0x000276e0 mov r0, 0                                     |     r0 = 0;
    0x000276e4 b 0x26e5c                                     |     goto label_50;
                                                             | label_70:
    0x000276e8 ldr r3, [sp, 0x54]                            |     r3 = var_54h;
    0x000276ec add r7, r3, 0x270                             |     r7 = r3 + 0x270;
    0x000276f0 b 0x26780                                     |     goto label_13;
                                                             | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/lib/libblkid.so.1.1.0 @ 0x2cbd0 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.0002cbd0 ()                          | void fcn_0002cbd0 (int32_t arg1, int32_t arg2) {
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
    0x0002cbd0 push {r4, r5, r6, r7, r8, lr}         |     
    0x0002cbd4 mov r4, r0                            |     r4 = r0;
    0x0002cbd8 ldr r0, [r0, 0x14]                    |     r0 = *((r0 + 0x14));
    0x0002cbdc lsl r3, r2, 3                         |     r3 = r2 << 3;
    0x0002cbe0 adds r3, r3, r0                       |     r3 += r0;
    0x0002cbe4 str r3, [r4, 0x14]                    |     *((r4 + 0x14)) = r3;
                                                     |     if (r3 < r3) {
    0x0002cbe8 ldrhs r3, [r4, 0x18]                  |         r3 = *((r4 + 0x18));
                                                     |     }
    0x0002cbec lsr r0, r0, 3                         |     r0 >>= 3;
                                                     |     if (r3 < r3) {
    0x0002cbf0 addhs r3, r3, 1                       |         r3++;
                                                     |     }
                                                     |     if (r3 < r3) {
    0x0002cbf4 strhs r3, [r4, 0x18]                  |         *((r4 + 0x18)) = r3;
                                                     |     }
    0x0002cbf8 ldr r3, [r4, 0x18]                    |     r3 = *((r4 + 0x18));
    0x0002cbfc and r0, r0, 0x3f                      |     r0 &= 0x3f;
    0x0002cc00 add r3, r3, r2, lsr 29                |     r3 += (r2 >> 29);
    0x0002cc04 str r3, [r4, 0x18]                    |     *((r4 + 0x18)) = r3;
    0x0002cc08 add r3, r2, r0                        |     r3 = r2 + r0;
    0x0002cc0c cmp r3, 0x3f                          |     
    0x0002cc10 mov r7, r1                            |     r7 = r1;
    0x0002cc14 mov r6, r2                            |     r6 = r2;
                                                     |     if (r3 > 0x3f) {
    0x0002cc18 movls r5, 0                           |         r5 = 0;
                                                     |     }
                                                     |     if (r3 < 0x3f) {
    0x0002cc1c bls 0x2cc54                           |         goto label_0;
                                                     |     }
    0x0002cc20 rsb r5, r0, 0x40                      |     r5 = 0x40 - r0;
    0x0002cc24 add r0, r0, 0x1c                      |     r0 += 0x1c;
    0x0002cc28 mov r2, r5                            |     r2 = r5;
    0x0002cc2c add r0, r4, r0                        |     r0 = r4 + r0;
    0x0002cc30 bl 0x5950                             |     memcpy (r0, r1, r2);
    0x0002cc34 add r1, r4, 0x1c                      |     r1 = r4 + 0x1c;
    0x0002cc38 mov r0, r4                            |     r0 = r4;
    0x0002cc3c bl 0x2b744                            |     fcn_0002b744 (r0, r1);
                                                     |     do {
    0x0002cc40 add r3, r5, 0x3f                      |         r3 = r5 + 0x3f;
    0x0002cc44 cmp r6, r3                            |         
    0x0002cc48 add r1, r7, r5                        |         r1 = r7 + r5;
                                                     |         if (r6 <= r3) {
    0x0002cc4c bhi 0x2cc6c                           |             
    0x0002cc50 mov r0, 0                             |             r0 = 0;
                                                     | label_0:
    0x0002cc54 add r0, r0, 0x1c                      |             r0 += 0x1c;
    0x0002cc58 sub r2, r6, r5                        |             r2 = r6 - r5;
    0x0002cc5c add r1, r7, r5                        |             r1 = r7 + r5;
    0x0002cc60 add r0, r4, r0                        |             r0 = r4 + r0;
    0x0002cc64 pop {r4, r5, r6, r7, r8, lr}          |             
    0x0002cc68 b 0x5950                              |             void (*0x5950)() ();
                                                     |         }
    0x0002cc6c mov r0, r4                            |         r0 = r4;
    0x0002cc70 bl 0x2b744                            |         fcn_0002b744 (r0, r1);
    0x0002cc74 add r5, r5, 0x40                      |         r5 += 0x40;
    0x0002cc78 b 0x2cc40                             |         
                                                     |     } while (1);
                                                     | }

[*] Function strcat used 1 times libblkid.so.1.1.0