[*] Binary protection state of mod_ssi.so

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


[*] Function popen tear down of mod_ssi.so

    ; 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/usr/lib/lighttpd/mod_ssi.so @ 0x15f8 */
                                     | #include <stdint.h>
                                     |  
    ; (fcn) entry.fini0 ()           | void entry_fini0 () {
    0x000015f8 ldr r3, [pc, 0x68]    |     r3 = *(0x1664);
    0x000015fc push {r4, lr}         |     
    0x00001600 ldr r4, [pc, 0x64]    |     r4 = *(0x1668);
    0x00001604 add r3, pc, r3        |     r3 = pc + r3;
    0x00001608 ldrb r3, [r3]         |     r3 = *(r3);
    0x0000160c add r4, pc, r4        |     r4 = pc + r4;
    0x00001610 cmp r3, 0             |     
    0x00001614 popne {r4, pc}        |     
    0x00001618 ldr r3, [pc, 0x50]    |     r3 = *(0x166c);
    0x0000161c ldr r3, [r4, r3]      |     r3 = *(0x1668);
    0x00001620 cmp r3, 0             |     
                                     |     if (r3 != 0) {
    0x00001624 beq 0x1634            |         
    0x00001628 ldr r3, [pc, 0x44]    |         r3 = "_T";
    0x0000162c ldr r0, [pc, r3]      |         r0 = *(0x00001634);
    0x00001630 bl 0x1290             |         cxa_finalize ();
                                     |     }
    0x00001634 bl 0x153c             |     entry0 ();
    0x00001638 ldr r3, [pc, 0x38]    |     r3 = *(0x1674);
    0x0000163c ldr r3, [r4, r3]      |     r3 = *((r4 + r3));
    0x00001640 cmp r3, 0             |     
                                     |     if (r3 != 0) {
    0x00001644 beq 0x1654            |         
    0x00001648 ldr r0, [pc, 0x2c]    |         r0 = "_";
    0x0000164c add r0, pc, r0        |         r0 = pc + r0;
    0x00001650 bl 0x1314             |         loc_imp_deregister_frame_info ();
                                     |     }
    0x00001654 ldr r3, [pc, 0x24]    |     r3 = *(0x167c);
    0x00001658 mov r2, 1             |     r2 = 1;
    0x0000165c add r3, pc, r3        |     r3 = pc + r3;
    0x00001660 strb r2, [r3]         |     *(r3) = r2;
    0x00001664 pop {r4, pc}          |     
                                     | }
    ; 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/usr/lib/lighttpd/mod_ssi.so @ 0x2948 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00002948 ()                                  | void fcn_00002948 (int32_t arg1, int32_t arg2) {
                                                             |     int32_t var_0h;
                                                             |     int32_t var_4h;
                                                             |     int32_t var_8h;
                                                             |     int32_t var_ch;
                                                             |     int32_t var_10h;
                                                             |     void * buf;
                                                             |     char * s1;
                                                             |     int32_t var_24h;
                                                             |     void * ptr;
                                                             |     int32_t var_2ch;
                                                             |     int32_t var_30h;
                                                             |     int32_t fildes;
                                                             |     int32_t var_38h;
                                                             |     char * s2;
                                                             |     int32_t var_40h;
                                                             |     int32_t var_44h;
                                                             |     char * var_48h;
                                                             |     char * var_4ch;
                                                             |     int32_t var_50h;
                                                             |     int32_t var_54h;
                                                             |     time_t * var_5ch;
                                                             |     int32_t var_60h;
                                                             |     char * var_64h;
                                                             |     char * var_68h;
                                                             |     int32_t var_6ch;
                                                             |     int32_t var_70h;
                                                             |     int32_t var_74h;
                                                             |     int32_t var_78h;
                                                             |     int32_t var_7ch;
                                                             |     int32_t var_80h;
                                                             |     int32_t var_84h;
                                                             |     int32_t var_88h;
                                                             |     int32_t var_8ch;
                                                             |     int32_t var_90h;
                                                             |     int32_t var_94h;
                                                             |     int32_t var_98h;
                                                             |     int32_t var_9ch;
                                                             |     time_t * timer;
                                                             |     int32_t var_a4h;
                                                             |     int32_t var_a8h;
                                                             |     int32_t var_ach;
                                                             |     int32_t var_d0h;
                                                             |     int32_t var_d0h_2;
                                                             |     int32_t var_f0h;
                                                             |     char * s;
                                                             |     time_t * var_208h;
                                                             |     int32_t var_20ch;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
    0x00002948 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}     |     
    0x0000294c sub sp, sp, 0x20c                             |     
    0x00002950 str r3, [sp, 0x38]                            |     var_38h = r3;
    0x00002954 ldr r3, [pc, 0xe80]                           |     r3 = *(0x37d8);
    0x00002958 mov sl, r0                                    |     sl = r0;
    0x0000295c add r3, pc, r3                                |     r3 = pc + r3;
    0x00002960 str r3, [sp, 0x40]                            |     var_40h = r3;
    0x00002964 ldr r3, [r1, 0x154]                           |     r3 = *((r1 + 0x154));
    0x00002968 mov r5, r1                                    |     r5 = r1;
    0x0000296c ldr r0, [r3]                                  |     r0 = *(0x37d8);
    0x00002970 mov r1, 0x800                                 |     r1 = 0x800;
    0x00002974 mov r4, r2                                    |     r4 = r2;
    0x00002978 bl 0x13c8                                     |     r0 = open64 ();
    0x0000297c cmn r0, 1                                     |     
    0x00002980 str r0, [sp, 0x34]                            |     fildes = r0;
                                                             |     if (r0 != 1) {
    0x00002984 bne 0x29d0                                    |         goto label_36;
                                                             |     }
    0x00002988 bl 0x1488                                     |     r0 = errno_location ();
    0x0000298c ldr r0, [r0]                                  |     r0 = *(r0);
    0x00002990 bl 0x120c                                     |     strerror (r0);
    0x00002994 ldr r3, [r5, 0x154]                           |     r3 = *((r5 + 0x154));
    0x00002998 ldr r1, [pc, 0xe40]                           |     r1 = *(0x37dc);
    0x0000299c ldr r2, [pc, 0xe40]                           |     r2 = *(0x37e0);
    0x000029a0 add r1, pc, r1                                |     r1 = pc + r1;
    0x000029a4 stmib sp, {r0, r3}                            |     __asm ("stmib sp, {r0, r3}");
    0x000029a8 ldr r3, [pc, 0xe38]                           |     r3 = *(0x37e4);
    0x000029ac mov r0, sl                                    |     r0 = sl;
    0x000029b0 add r3, pc, r3                                |     r3 = pc + r3;
    0x000029b4 str r3, [sp]                                  |     *(sp) = r3;
    0x000029b8 ldr r3, [pc, 0xe2c]                           |     r3 = *(0x37e8);
    0x000029bc add r3, pc, r3                                |     r3 = pc + r3;
    0x000029c0 bl 0x1500                                     |     loc_imp_log_error_write ();
                                                             |     do {
    0x000029c4 ldr r0, [sp, 0x34]                            |         r0 = fildes;
    0x000029c8 add sp, sp, 0x20c                             |         
    0x000029cc pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}      |         
                                                             | label_36:
    0x000029d0 ldr r1, [sp, 0x38]                            |         r1 = var_38h;
    0x000029d4 bl 0x12d8                                     |         r0 = fstat64 ();
    0x000029d8 subs r6, r0, 0                                |         r6 = r0 - 0;
                                                             |         if (r6 == r0) {
    0x000029dc beq 0x2a30                                    |             goto label_37;
                                                             |         }
    0x000029e0 bl 0x1488                                     |         r0 = errno_location ();
    0x000029e4 ldr r0, [r0]                                  |         r0 = *(r0);
    0x000029e8 bl 0x120c                                     |         strerror (r0);
    0x000029ec ldr r3, [r5, 0x154]                           |         r3 = *((r5 + 0x154));
    0x000029f0 ldr r1, [pc, 0xdf8]                           |         r1 = *(0x37ec);
    0x000029f4 ldr r2, [pc, 0xdf8]                           |         r2 = *(0x37f0);
    0x000029f8 add r1, pc, r1                                |         r1 = pc + r1;
    0x000029fc stmib sp, {r0, r3}                            |         __asm ("stmib sp, {r0, r3}");
    0x00002a00 ldr r3, [pc, 0xdf0]                           |         r3 = *(0x37f4);
    0x00002a04 mov r0, sl                                    |         r0 = sl;
    0x00002a08 add r3, pc, r3                                |         r3 = pc + r3;
    0x00002a0c str r3, [sp]                                  |         *(sp) = r3;
    0x00002a10 ldr r3, [pc, 0xde4]                           |         r3 = "r_";
    0x00002a14 add r3, pc, r3                                |         r3 = pc + r3;
    0x00002a18 bl 0x1500                                     |         loc_imp_log_error_write ();
    0x00002a1c ldr r0, [sp, 0x34]                            |         r0 = fildes;
    0x00002a20 bl 0x1518                                     |         close (r0);
    0x00002a24 mvn r3, 0                                     |         r3 = ~0;
                                                             | label_3:
    0x00002a28 str r3, [sp, 0x34]                            |         fildes = r3;
    0x00002a2c b 0x29c4                                      |         
                                                             |     } while (1);
                                                             | label_37:
    0x00002a30 mov r0, 0x2000                                |     r0 = 0x2000;
    0x00002a34 bl 0x12a8                                     |     r0 = malloc (r0);
    0x00002a38 subs r3, r0, 0                                |     r3 = r0 - 0;
    0x00002a3c str r3, [sp, 0x28]                            |     ptr = r3;
                                                             |     if (r3 != r0) {
    0x00002a40 bne 0x4800                                    |         goto label_38;
                                                             |     }
    0x00002a44 ldr r2, [pc, 0xdb4]                           |     r2 = *(0x37fc);
    0x00002a48 ldr r0, [pc, 0xdb4]                           |     r0 = *(0x3800);
    0x00002a4c add r2, pc, r2                                |     r2 = pc + r2;
    0x00002a50 ldr r1, [pc, 0xdb0]                           |     r1 = *(0x3804);
    0x00002a54 add r0, pc, r0                                |     r0 = pc + r0;
    0x00002a58 bl 0x13bc                                     |     loc_imp_log_failed_assert ();
                                                             | label_2:
    0x00002a5c ldr r3, [sp, 0x1c]                            |     r3 = buf;
    0x00002a60 add r3, r3, r0                                |     r3 += r0;
    0x00002a64 mov r0, 0                                     |     r0 = 0;
    0x00002a68 str r3, [sp, 0x1c]                            |     buf = r3;
                                                             | label_35:
    0x00002a6c ldr r3, [sp, 0x1c]                            |     r3 = buf;
    0x00002a70 mov r1, 0x3c                                  |     r1 = 0x3c;
    0x00002a74 sub r2, r3, r0                                |     r2 = r3 - r0;
    0x00002a78 ldr r3, [sp, 0x28]                            |     r3 = ptr;
    0x00002a7c add r0, r3, r0                                |     r0 = r3 + r0;
    0x00002a80 bl 0x132c                                     |     r0 = memchr (r0, r1, r2);
    0x00002a84 subs r7, r0, 0                                |     r7 = r0 - 0;
                                                             |     if (r7 == r0) {
    0x00002a88 beq 0x473c                                    |         goto label_34;
                                                             |     }
    0x00002a8c ldr r3, [sp, 0x28]                            |     r3 = ptr;
    0x00002a90 ldr r2, [sp, 0x1c]                            |     r2 = buf;
    0x00002a94 sub r3, r7, r3                                |     r3 = r7 - r3;
    0x00002a98 str r3, [sp, 0x24]                            |     var_24h = r3;
    0x00002a9c add r3, r3, 5                                 |     r3 += 5;
    0x00002aa0 cmp r2, r3                                    |     
                                                             |     if (r2 <= r3) {
    0x00002aa4 blo 0x4764                                    |         goto label_39;
                                                             |     }
    0x00002aa8 ldr r1, [pc, 0xd5c]                           |     r1 = *(0x3808);
    0x00002aac mov r2, 4                                     |     r2 = 4;
    0x00002ab0 add r1, pc, r1                                |     r1 = pc + r1;
    0x00002ab4 add r0, r7, 1                                 |     r0 = r7 + 1;
    0x00002ab8 bl 0x138c                                     |     r0 = memcmp (r0, r1, r2);
    0x00002abc subs sb, r0, 0                                |     sb = r0 - 0;
                                                             |     if (sb != r0) {
    0x00002ac0 bne 0x47f4                                    |         goto label_40;
                                                             |     }
    0x00002ac4 ldr r3, [sp, 0x24]                            |     r3 = var_24h;
    0x00002ac8 cmp r3, r6                                    |     
                                                             |     if (r3 != r6) {
    0x00002acc beq 0x2af4                                    |         
    0x00002ad0 ldr r3, [r4, 0x1c]                            |         r3 = *((r4 + 0x1c));
    0x00002ad4 cmp r3, 0                                     |         
                                                             |         if (r3 != 0) {
    0x00002ad8 bne 0x2af4                                    |             goto label_41;
                                                             |         }
    0x00002adc ldr r3, [sp, 0x24]                            |         r3 = var_24h;
    0x00002ae0 ldr r0, [r5, 0x4c]                            |         r0 = *((r5 + 0x4c));
    0x00002ae4 sub r2, r3, r6                                |         r2 = r3 - r6;
    0x00002ae8 ldr r3, [sp, 0x28]                            |         r3 = ptr;
    0x00002aec add r1, r3, r6                                |         r1 = r3 + r6;
    0x00002af0 bl 0x13f8                                     |         loc_imp_chunkqueue_append_mem ();
                                                             |     }
                                                             | label_41:
    0x00002af4 ldr r3, [sp, 0x1c]                            |     r3 = buf;
    0x00002af8 ldr r2, [sp, 0x24]                            |     r2 = var_24h;
    0x00002afc mov r0, 0                                     |     r0 = 0;
    0x00002b00 sub r8, r3, r2                                |     r8 = r3 - r2;
    0x00002b04 mov r1, 5                                     |     r1 = 5;
    0x00002b08 mov r3, r0                                    |     r3 = r0;
    0x00002b0c mov r2, r0                                    |     r2 = r0;
                                                             |     do {
    0x00002b10 cmp r8, r1                                    |         
                                                             |         if (r8 <= r1) {
    0x00002b14 ble 0x2b9c                                    |             goto label_42;
                                                             |         }
    0x00002b18 ldrb ip, [r7, r1]                             |         ip = *((r7 + r1));
    0x00002b1c cmp ip, 0x27                                  |         
                                                             |         if (ip == 0x27) {
    0x00002b20 beq 0x2ce0                                    |             goto label_43;
                                                             |         }
                                                             |         if (ip > 0x27) {
    0x00002b24 bhi 0x2b38                                    |             goto label_44;
                                                             |         }
    0x00002b28 cmp ip, 0x22                                  |         
                                                             |         if (ip == 0x22) {
    0x00002b2c beq 0x2cc0                                    |             goto label_45;
                                                             |         }
                                                             | label_0:
    0x00002b30 add r1, r1, 1                                 |         r1++;
    0x00002b34 b 0x2b10                                      |         
                                                             |     } while (1);
                                                             | label_44:
    0x00002b38 cmp ip, 0x2d                                  |     
                                                             |     if (ip == 0x2d) {
    0x00002b3c beq 0x2b60                                    |         goto label_46;
                                                             |     }
    0x00002b40 cmp ip, 0x5c                                  |     
                                                             |     if (ip != 0x5c) {
    0x00002b44 bne 0x2b30                                    |         goto label_0;
                                                             |     }
    0x00002b48 orrs ip, r2, r3                               |     
                                                             |     if (ip != r2) {
    0x00002b4c eorne r0, r0, 1                               |         r0 ^= 1;
                                                             |         goto label_47;
                                                             |     }
                                                             |     if (ip != r2) {
                                                             | label_47:
    0x00002b50 bne 0x2b30                                    |         goto label_0;
                                                             |     }
                                                             | label_1:
    0x00002b54 mov r3, ip                                    |     r3 = ip;
    0x00002b58 mov r2, ip                                    |     r2 = ip;
    0x00002b5c b 0x2b30                                      |     goto label_0;
                                                             | label_46:
    0x00002b60 orrs ip, r2, r3                               |     
                                                             |     if (ip != r2) {
    0x00002b64 bne 0x2b30                                    |         goto label_0;
                                                             |     }
    0x00002b68 add r3, r1, 2                                 |     r3 = r1 + 2;
    0x00002b6c cmp r8, r3                                    |     
                                                             |     if (r8 <= r3) {
    0x00002b70 ble 0x2b54                                    |         goto label_1;
                                                             |     }
    0x00002b74 add r3, r7, r1                                |     r3 = r7 + r1;
    0x00002b78 ldrb r2, [r3, 1]                              |     r2 = *((r3 + 1));
    0x00002b7c cmp r2, 0x2d                                  |     
                                                             |     if (r2 != 0x2d) {
    0x00002b80 bne 0x2b54                                    |         goto label_1;
                                                             |     }
    0x00002b84 ldrb r3, [r3, 2]                              |     r3 = *((r3 + 2));
    0x00002b88 cmp r3, 0x3e                                  |     
                                                             |     if (r3 != 0x3e) {
    0x00002b8c bne 0x2b54                                    |         goto label_1;
                                                             |     }
    0x00002b90 adds r3, r1, 3                                |     r3 = r1 + 3;
    0x00002b94 str r3, [sp, 0x2c]                            |     var_2ch = r3;
                                                             |     if (r3 != r1) {
    0x00002b98 bne 0x2d00                                    |         goto label_48;
                                                             |     }
                                                             | label_42:
    0x00002b9c ldr r3, [sp, 0x1c]                            |     r3 = buf;
    0x00002ba0 sub r6, r3, 0x2000                            |     r6 = r3 - 0x2000;
    0x00002ba4 ldr r3, [sp, 0x24]                            |     r3 = var_24h;
    0x00002ba8 clz r6, r6                                    |     r6 &= r6;
    0x00002bac lsr r6, r6, 5                                 |     r6 >>= 5;
    0x00002bb0 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00002bb4 movne r6, 0                                   |         r6 = 0;
                                                             |     }
    0x00002bb8 cmp r6, 0                                     |     
                                                             |     if (r6 == 0) {
    0x00002bbc beq 0x4728                                    |         goto label_49;
                                                             |     }
    0x00002bc0 ldr r1, [pc, 0xc48]                           |     r1 = *(0x380c);
    0x00002bc4 mov r2, 0x2d                                  |     r2 = 0x2d;
    0x00002bc8 add r1, pc, r1                                |     r1 = pc + r1;
    0x00002bcc ldr r0, [r5, 0x4c]                            |     r0 = *((r5 + 0x4c));
    0x00002bd0 bl 0x13f8                                     |     loc_imp_chunkqueue_append_mem ();
    0x00002bd4 ldr r3, [sp, 0x28]                            |     r3 = ptr;
    0x00002bd8 add r3, r3, 0x1000                            |     r3 += 0x1000;
    0x00002bdc ldrb r2, [r3, 0xffe]                          |     r2 = *((r3 + 0xffe));
    0x00002be0 cmp r2, 0x2d                                  |     
                                                             |     if (r2 != 0x2d) {
    0x00002be4 bne 0x4704                                    |         goto label_50;
                                                             |     }
    0x00002be8 ldrb r2, [r3, 0xfff]                          |     r2 = *((r3 + 0xfff));
    0x00002bec cmp r2, 0x2d                                  |     
                                                             |     if (r2 != 0x2d) {
    0x00002bf0 bne 0x4704                                    |         goto label_50;
                                                             |     }
    0x00002bf4 ldr r1, [pc, 0xc18]                           |     r1 = *(0x3810);
    0x00002bf8 mov r2, 2                                     |     r2 = 2;
    0x00002bfc add r1, pc, r1                                |     r1 = pc + r1;
    0x00002c00 ldr r0, [r5, 0x4c]                            |     r0 = *((r5 + 0x4c));
    0x00002c04 bl 0x13f8                                     |     loc_imp_chunkqueue_append_mem ();
    0x00002c08 mov r3, 0                                     |     r3 = 0;
    0x00002c0c mov r6, r3                                    |     r6 = r3;
    0x00002c10 str r3, [sp, 0x1c]                            |     buf = r3;
                                                             | label_11:
    0x00002c14 ldr r3, [sp, 0x1c]                            |     r3 = buf;
    0x00002c18 ldr r1, [sp, 0x1c]                            |     r1 = buf;
    0x00002c1c rsb r2, r3, 0x2000                            |     r2 = 0x2000 - r3;
    0x00002c20 ldr r3, [sp, 0x28]                            |     r3 = ptr;
    0x00002c24 ldr r0, [sp, 0x34]                            |     r0 = fildes;
    0x00002c28 add r1, r3, r1                                |     r1 = r3 + r1;
    0x00002c2c bl 0x1368                                     |     r0 = read (r0, r1, r2);
    0x00002c30 cmp r0, 0                                     |     
                                                             |     if (r0 > 0) {
    0x00002c34 bgt 0x2a5c                                    |         goto label_2;
                                                             |     }
                                                             |     if (r0 != 0) {
    0x00002c38 beq 0x2c78                                    |         
    0x00002c3c bl 0x1488                                     |         r0 = errno_location ();
    0x00002c40 ldr r0, [r0]                                  |         r0 = *(r0);
    0x00002c44 bl 0x120c                                     |         strerror (r0);
    0x00002c48 ldr r3, [r5, 0x154]                           |         r3 = *((r5 + 0x154));
    0x00002c4c ldr r1, [pc, 0xbc4]                           |         r1 = *(0x3814);
    0x00002c50 ldr r2, [pc, 0xbc4]                           |         r2 = *(0x3818);
    0x00002c54 add r1, pc, r1                                |         r1 = pc + r1;
    0x00002c58 stmib sp, {r0, r3}                            |         __asm ("stmib sp, {r0, r3}");
    0x00002c5c ldr r3, [pc, 0xbbc]                           |         r3 = *(0x381c);
    0x00002c60 mov r0, sl                                    |         r0 = sl;
    0x00002c64 add r3, pc, r3                                |         r3 = pc + r3;
    0x00002c68 str r3, [sp]                                  |         *(sp) = r3;
    0x00002c6c ldr r3, [pc, 0xbb0]                           |         r3 = *(0x3820);
    0x00002c70 add r3, pc, r3                                |         r3 = pc + r3;
    0x00002c74 bl 0x1500                                     |         loc_imp_log_error_write ();
                                                             |     }
    0x00002c78 ldr r3, [sp, 0x1c]                            |     r3 = buf;
    0x00002c7c cmp r3, r6                                    |     
                                                             |     if (r3 != r6) {
    0x00002c80 beq 0x2ca8                                    |         
    0x00002c84 ldr r3, [r4, 0x1c]                            |         r3 = *((r4 + 0x1c));
    0x00002c88 cmp r3, 0                                     |         
                                                             |         if (r3 != 0) {
    0x00002c8c bne 0x2ca8                                    |             goto label_51;
                                                             |         }
    0x00002c90 ldr r3, [sp, 0x1c]                            |         r3 = buf;
    0x00002c94 ldr r0, [r5, 0x4c]                            |         r0 = *((r5 + 0x4c));
    0x00002c98 sub r2, r3, r6                                |         r2 = r3 - r6;
    0x00002c9c ldr r3, [sp, 0x28]                            |         r3 = ptr;
    0x00002ca0 add r1, r3, r6                                |         r1 = r3 + r6;
    0x00002ca4 bl 0x13f8                                     |         loc_imp_chunkqueue_append_mem ();
                                                             |     }
                                                             | label_51:
    0x00002ca8 ldr r0, [sp, 0x28]                            |     r0 = ptr;
    0x00002cac bl 0x1524                                     |     free (r0);
    0x00002cb0 ldr r0, [sp, 0x34]                            |     r0 = fildes;
    0x00002cb4 bl 0x1518                                     |     close (r0);
    0x00002cb8 mov r3, 0                                     |     r3 = 0;
    0x00002cbc b 0x2a28                                      |     goto label_3;
                                                             | label_45:
    0x00002cc0 cmp r2, 0                                     |     
                                                             |     if (r2 != 0) {
    0x00002cc4 bne 0x2b30                                    |         goto label_0;
                                                             |     }
    0x00002cc8 eor r3, r3, 1                                 |     r3 ^= 1;
    0x00002ccc and lr, r3, 1                                 |     lr = r3 & 1;
    0x00002cd0 eor ip, r0, 1                                 |     
    0x00002cd4 orrs ip, ip, lr                               |     
                                                             |     if (ip != ip) {
    0x00002cd8 moveq r3, 1                                   |         r3 = 1;
                                                             |     }
    0x00002cdc b 0x2b30                                      |     goto label_0;
                                                             | label_43:
    0x00002ce0 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00002ce4 bne 0x2b30                                    |         goto label_0;
                                                             |     }
    0x00002ce8 eor r2, r2, 1                                 |     r2 ^= 1;
    0x00002cec and lr, r2, 1                                 |     lr = r2 & 1;
    0x00002cf0 eor ip, r0, 1                                 |     
    0x00002cf4 orrs ip, ip, lr                               |     
                                                             |     if (ip != ip) {
    0x00002cf8 moveq r2, 1                                   |         r2 = 1;
                                                             |     }
    0x00002cfc b 0x2b30                                      |     goto label_0;
                                                             | label_48:
    0x00002d00 mov r3, 5                                     |     r3 = 5;
    0x00002d04 add r8, r7, r3                                |     r8 = r7 + r3;
    0x00002d08 mov r0, r8                                    |     r0 = r8;
    0x00002d0c str r3, [sp, 0x78]                            |     var_78h = r3;
                                                             |     do {
    0x00002d10 sub r2, r0, r7                                |         r2 = r0 - r7;
    0x00002d14 ldrb r3, [r0], 1                              |         r3 = *(r0);
                                                             |         r0++;
    0x00002d18 orr r1, r3, 0x20                              |         r1 = r3 | 0x20;
    0x00002d1c sub r1, r1, 0x61                              |         r1 -= 0x61;
    0x00002d20 cmp r1, 0x19                                  |         
    0x00002d24 bls 0x2d10                                    |         
                                                             |     } while (r1 < 0x19);
    0x00002d28 sub r1, r2, 5                                 |     r1 = r2 - 5;
    0x00002d2c cmp r1, 0                                     |     
    0x00002d30 str r1, [sp, 0x7c]                            |     var_7ch = r1;
    0x00002d34 bne 0x2dac                                    |     
                                                             |     while ((r3 & 0x20) == 0) {
                                                             | label_4:
    0x00002d38 mvn r6, 0                                     |         r6 = ~0;
                                                             | label_5:
    0x00002d3c mov r3, 0                                     |         r3 = 0;
    0x00002d40 cmn r6, 1                                     |         
    0x00002d44 str r7, [sp, 0x60]                            |         var_60h = r7;
    0x00002d48 str r3, [sp, 0x64]                            |         var_64h = r3;
    0x00002d4c str r3, [sp, 0x68]                            |         var_68h = r3;
    0x00002d50 str r3, [sp, 0x6c]                            |         var_6ch = r3;
    0x00002d54 str r3, [sp, 0x70]                            |         var_70h = r3;
    0x00002d58 str r3, [sp, 0x74]                            |         var_74h = r3;
                                                             |         if (r6 == 1) {
    0x00002d5c addne r0, sp, 0x78                            |             r0 += var_78h;
                                                             |         }
                                                             |         if (r6 != 1) {
    0x00002d60 bne 0x2fd8                                    |             goto label_52;
                                                             |         }
    0x00002d64 ldr r3, [sp, 0x2c]                            |         r3 = var_2ch;
    0x00002d68 cmp r3, 0xf                                   |         
                                                             |         if (r3 > 0xf) {
    0x00002d6c ble 0x2d9c                                    |             
    0x00002d70 ldr r1, [pc, 0xab0]                           |             r1 = *(0x3824);
    0x00002d74 mov r2, 7                                     |             r2 = 7;
    0x00002d78 add r1, pc, r1                                |             r1 = pc + r1;
    0x00002d7c mov r0, r8                                    |             r0 = r8;
    0x00002d80 bl 0x138c                                     |             r0 = memcmp (r0, r1, r2);
    0x00002d84 cmp r0, 0                                     |             
                                                             |             if (r0 != 0) {
    0x00002d88 bne 0x2d9c                                    |                 goto label_53;
                                                             |             }
    0x00002d8c ldrb r3, [r7, 0xc]                            |             r3 = *((r7 + 0xc));
    0x00002d90 cmp r3, 9                                     |             
    0x00002d94 cmpne r3, 0x20                                |             __asm ("cmpne r3, 0x20");
                                                             |             if (r3 == 9) {
    0x00002d98 beq 0x324c                                    |                 goto label_15;
                                                             |             }
                                                             |         }
                                                             | label_53:
    0x00002d9c ldr r2, [sp, 0x2c]                            |         r2 = var_2ch;
    0x00002da0 mov r1, r7                                    |         r1 = r7;
                                                             | label_12:
    0x00002da4 ldr r0, [r5, 0x4c]                            |         r0 = *((r5 + 0x4c));
    0x00002da8 b 0x3248                                      |         goto label_13;
    0x00002dac ldr r0, [sp, 0x2c]                            |         r0 = var_2ch;
    0x00002db0 add r1, r2, 3                                 |         r1 = r2 + 3;
    0x00002db4 cmp r0, r1                                    |         
                                                             |         if (r0 == r1) {
    0x00002db8 beq 0x2f80                                    |             goto label_54;
                                                             |         }
    0x00002dbc ldr r1, [pc, 0xa68]                           |         r1 = *(0x3828);
    0x00002dc0 ldr r0, [sp, 0x40]                            |         r0 = var_40h;
    0x00002dc4 lsl r3, r3, 1                                 |         r3 <<= 1;
    0x00002dc8 ldr r1, [r0, r1]                              |         r1 = *((r0 + r1));
    0x00002dcc ldr fp, [r1]                                  |         fp = *(0x3828);
    0x00002dd0 ldrh r3, [fp, r3]                             |         r3 = *((fp + r3));
    0x00002dd4 tst r3, 0x20                                  |         
    0x00002dd8 beq 0x2d38                                    |         
                                                             |     }
                                                             | label_6:
    0x00002ddc add r3, r2, 1                                 |     r3 = r2 + 1;
    0x00002de0 ldrb r1, [r7, r3]                             |     r1 = *((r7 + r3));
    0x00002de4 lsl r1, r1, 1                                 |     r1 <<= 1;
    0x00002de8 ldrh r1, [fp, r1]                             |     r1 = *((fp + r1));
    0x00002dec tst r1, 0x20                                  |     
                                                             |     if ((r1 & 0x20) != 0) {
    0x00002df0 bne 0x2f70                                    |         goto label_55;
                                                             |     }
    0x00002df4 ldr r1, [sp, 0x2c]                            |     r1 = var_2ch;
    0x00002df8 add r2, r2, 4                                 |     r2 += 4;
    0x00002dfc cmp r1, r2                                    |     
                                                             |     if (r1 == r2) {
    0x00002e00 beq 0x2f80                                    |         goto label_54;
                                                             |     }
    0x00002e04 add r1, r7, r3                                |     r1 = r7 + r3;
    0x00002e08 str r3, [sp, 0x80]                            |     var_80h = r3;
                                                             |     do {
    0x00002e0c sub r6, r1, r7                                |         r6 = r1 - r7;
    0x00002e10 ldrb ip, [r1], 1                              |         ip = *(r1);
                                                             |         r1++;
    0x00002e14 orr r2, ip, 0x20                              |         r2 = ip | 0x20;
    0x00002e18 sub r2, r2, 0x61                              |         r2 -= 0x61;
    0x00002e1c cmp r2, 0x19                                  |         
    0x00002e20 bls 0x2e0c                                    |         
                                                             |     } while (r2 < 0x19);
    0x00002e24 sub r3, r6, r3                                |     r3 = r6 - r3;
    0x00002e28 cmp r3, 0                                     |     
    0x00002e2c str r3, [sp, 0x84]                            |     var_84h = r3;
                                                             |     if (r3 == 0) {
    0x00002e30 beq 0x2d38                                    |         goto label_4;
                                                             |     }
    0x00002e34 cmp ip, 0x3d                                  |     
    0x00002e38 add r6, r6, 1                                 |     r6++;
                                                             |     if (ip != 0x3d) {
    0x00002e3c bne 0x2d38                                    |         goto label_4;
                                                             |     }
    0x00002e40 ldr r3, [sp, 0x2c]                            |     r3 = var_2ch;
    0x00002e44 add r0, r7, r6                                |     r0 = r7 + r6;
    0x00002e48 sub r1, r3, r6                                |     r1 = r3 - r6;
    0x00002e4c sub r1, r1, 3                                 |     r1 -= 3;
    0x00002e50 str r6, [sp, 0x88]                            |     var_88h = r6;
    0x00002e54 bl 0x2890                                     |     r0 = fcn_00002890 (r0, r1);
    0x00002e58 cmp r0, 0                                     |     
    0x00002e5c str r0, [sp, 0x8c]                            |     var_8ch = r0;
                                                             |     if (r0 == 0) {
    0x00002e60 beq 0x2d38                                    |         goto label_4;
                                                             |     }
    0x00002e64 ldr r2, [sp, 0x2c]                            |     r2 = var_2ch;
    0x00002e68 add r6, r6, r0                                |     r6 += r0;
    0x00002e6c add r3, r6, 3                                 |     r3 = r6 + 3;
    0x00002e70 cmp r2, r3                                    |     
                                                             |     if (r2 == r3) {
    0x00002e74 beq 0x2f88                                    |         goto label_56;
                                                             |     }
    0x00002e78 ldrb r3, [r7, r6]                             |     r3 = *((r7 + r6));
    0x00002e7c lsl r3, r3, 1                                 |     r3 <<= 1;
    0x00002e80 ldrh r3, [fp, r3]                             |     r3 = *((fp + r3));
    0x00002e84 tst r3, 0x20                                  |     
                                                             |     if ((r3 & 0x20) == 0) {
    0x00002e88 beq 0x2d38                                    |         goto label_4;
                                                             |     }
                                                             | label_7:
    0x00002e8c add r3, r6, 1                                 |     r3 = r6 + 1;
    0x00002e90 ldrb r2, [r7, r3]                             |     r2 = *((r7 + r3));
    0x00002e94 lsl r2, r2, 1                                 |     r2 <<= 1;
    0x00002e98 ldrh r2, [fp, r2]                             |     r2 = *((fp + r2));
    0x00002e9c tst r2, 0x20                                  |     
                                                             |     if ((r2 & 0x20) != 0) {
    0x00002ea0 bne 0x2f78                                    |         goto label_57;
                                                             |     }
    0x00002ea4 ldr r2, [sp, 0x2c]                            |     r2 = var_2ch;
    0x00002ea8 add r6, r6, 4                                 |     r6 += 4;
    0x00002eac cmp r2, r6                                    |     
                                                             |     if (r2 == r6) {
    0x00002eb0 beq 0x2f88                                    |         goto label_56;
                                                             |     }
    0x00002eb4 add r1, r7, r3                                |     r1 = r7 + r3;
    0x00002eb8 str r3, [sp, 0x90]                            |     var_90h = r3;
                                                             |     do {
    0x00002ebc sub r6, r1, r7                                |         r6 = r1 - r7;
    0x00002ec0 ldrb ip, [r1], 1                              |         ip = *(r1);
                                                             |         r1++;
    0x00002ec4 orr r2, ip, 0x20                              |         r2 = ip | 0x20;
    0x00002ec8 sub r2, r2, 0x61                              |         r2 -= 0x61;
    0x00002ecc cmp r2, 0x19                                  |         
    0x00002ed0 bls 0x2ebc                                    |         
                                                             |     } while (r2 < 0x19);
    0x00002ed4 sub r3, r6, r3                                |     r3 = r6 - r3;
    0x00002ed8 cmp r3, 0                                     |     
    0x00002edc str r3, [sp, 0x94]                            |     var_94h = r3;
                                                             |     if (r3 == 0) {
    0x00002ee0 beq 0x2d38                                    |         goto label_4;
                                                             |     }
    0x00002ee4 cmp ip, 0x3d                                  |     
    0x00002ee8 add r6, r6, 1                                 |     r6++;
                                                             |     if (ip != 0x3d) {
    0x00002eec bne 0x2d38                                    |         goto label_4;
                                                             |     }
    0x00002ef0 ldr r3, [sp, 0x2c]                            |     r3 = var_2ch;
    0x00002ef4 add r0, r7, r6                                |     r0 = r7 + r6;
    0x00002ef8 sub r1, r3, r6                                |     r1 = r3 - r6;
    0x00002efc sub r1, r1, 3                                 |     r1 -= 3;
    0x00002f00 str r6, [sp, 0x98]                            |     var_98h = r6;
    0x00002f04 bl 0x2890                                     |     r0 = fcn_00002890 (r0, r1);
    0x00002f08 cmp r0, 0                                     |     
    0x00002f0c str r0, [sp, 0x9c]                            |     var_9ch = r0;
                                                             |     if (r0 == 0) {
    0x00002f10 beq 0x2d38                                    |         goto label_4;
                                                             |     }
    0x00002f14 ldr r2, [sp, 0x2c]                            |     r2 = var_2ch;
    0x00002f18 add r6, r6, r0                                |     r6 += r0;
    0x00002f1c add r3, r6, 3                                 |     r3 = r6 + 3;
    0x00002f20 cmp r2, r3                                    |     
                                                             |     if (r2 == r3) {
    0x00002f24 beq 0x2f68                                    |         goto label_58;
                                                             |     }
    0x00002f28 ldrb r2, [r7, r6]                             |     r2 = *((r7 + r6));
    0x00002f2c add r3, r7, r6                                |     r3 = r7 + r6;
    0x00002f30 lsl r2, r2, 1                                 |     r2 <<= 1;
    0x00002f34 ldrh r2, [fp, r2]                             |     r2 = *((fp + r2));
    0x00002f38 tst r2, 0x20                                  |     
                                                             |     if ((r2 & 0x20) == 0) {
    0x00002f3c beq 0x2d38                                    |         goto label_4;
                                                             |     }
                                                             |     do {
    0x00002f40 sub r2, r3, r7                                |         r2 = r3 - r7;
    0x00002f44 ldrb r1, [r3, 1]!                             |         r1 = *((r3 += 1));
    0x00002f48 lsl r1, r1, 1                                 |         r1 <<= 1;
    0x00002f4c ldrh r1, [fp, r1]                             |         r1 = *((fp + r1));
    0x00002f50 tst r1, 0x20                                  |         
    0x00002f54 bne 0x2f40                                    |         
                                                             |     } while ((r1 & 0x20) != 0);
    0x00002f58 add r3, r2, 4                                 |     r3 = r2 + 4;
    0x00002f5c ldr r2, [sp, 0x2c]                            |     r2 = var_2ch;
    0x00002f60 cmp r2, r3                                    |     
                                                             |     if (r2 != r3) {
    0x00002f64 bne 0x2d38                                    |         goto label_4;
                                                             |     }
                                                             | label_58:
    0x00002f68 mov r6, 0xa                                   |     r6 = 0xa;
    0x00002f6c b 0x2d3c                                      |     goto label_5;
                                                             | label_55:
    0x00002f70 mov r2, r3                                    |     r2 = r3;
    0x00002f74 b 0x2ddc                                      |     goto label_6;
                                                             | label_57:
    0x00002f78 mov r6, r3                                    |     r6 = r3;
    0x00002f7c b 0x2e8c                                      |     goto label_7;
                                                             | label_54:
    0x00002f80 mov r6, 2                                     |     r6 = 2;
    0x00002f84 b 0x2d3c                                      |     goto label_5;
                                                             | label_56:
    0x00002f88 mov r6, 6                                     |     r6 = 6;
    0x00002f8c b 0x2d3c                                      |     goto label_5;
                                                             |     do {
    0x00002f90 ldr ip, [r0, sb, lsl 2]                       |         offset_0 = sb << 2;
                                                             |         ip = *((r0 + offset_0));
    0x00002f94 add r1, r0, sb, lsl 2                         |         r1 = r0 + (sb << 2);
    0x00002f98 add r2, r7, ip                                |         r2 = r7 + ip;
    0x00002f9c ldrb ip, [r7, ip]                             |         ip = *((r7 + ip));
    0x00002fa0 ldr r1, [r1, 4]                               |         r1 = var_80h;
    0x00002fa4 cmp ip, 0x22                                  |         
                                                             |         if (ip != 0x22) {
    0x00002fa8 beq 0x2fb8                                    |             
    0x00002fac cmp ip, 0x27                                  |             
                                                             |             if (ip == 0x27) {
    0x00002fb0 strbne r3, [r2, r1]                           |                 *((r2 + r1)) = r3;
                                                             |             }
                                                             |             if (ip != 0x27) {
    0x00002fb4 bne 0x2fc4                                    |                 goto label_59;
                                                             |             }
                                                             |         }
    0x00002fb8 add r2, r2, 1                                 |         r2++;
    0x00002fbc add r1, r2, r1                                |         r1 = r2 + r1;
    0x00002fc0 strb r3, [r1, -2]                             |         *((r1 - 2)) = r3;
                                                             | label_59:
    0x00002fc4 asr r1, sb, 1                                 |         r1 = sb >> 1;
    0x00002fc8 add ip, sp, 0x208                             |         
    0x00002fcc add r1, ip, r1, lsl 2                         |         r1 = ip + (r1 << 2);
    0x00002fd0 add sb, sb, 2                                 |         sb += 2;
    0x00002fd4 str r2, [r1, -0x1a4]                          |         var_64h = r2;
                                                             | label_52:
    0x00002fd8 cmp sb, r6                                    |         
    0x00002fdc blt 0x2f90                                    |         
                                                             |     } while (sb < r6);
    0x00002fe0 ldr r8, [pc, 0x848]                           |     r8 = *(0x382c);
    0x00002fe4 ldr r3, [sp, 0x64]                            |     r3 = var_64h;
    0x00002fe8 mov fp, 0                                     |     
    0x00002fec add r8, pc, r8                                |     r8 = pc + r8;
    0x00002ff0 str r3, [sp, 0x20]                            |     s1 = r3;
                                                             | label_8:
    0x00002ff4 ldr r1, [r8, fp, lsl 3]                       |     offset_1 = fp << 3;
                                                             |     r1 = *((r8 + offset_1));
    0x00002ff8 lsl sb, fp, 3                                 |     sb = fp << 3;
    0x00002ffc cmp r1, 0                                     |     
    0x00003000 bne 0x3030                                    |     
                                                             |     while (1) {
    0x00003004 ldr r3, [sp, 0x20]                            |         r3 = s1;
    0x00003008 ldr r1, [pc, 0x824]                           |         r1 = *(0x3830);
    0x0000300c str r3, [sp, 4]                               |         var_4h = r3;
    0x00003010 ldr r3, [pc, 0x820]                           |         r3 = *(0x3834);
    0x00003014 ldr r2, [pc, 0x820]                           |         r2 = *(0x3838);
    0x00003018 add r3, pc, r3                                |         r3 = pc + r3;
    0x0000301c str r3, [sp]                                  |         *(sp) = r3;
    0x00003020 ldr r3, [pc, 0x818]                           |         r3 = *(0x383c);
    0x00003024 add r1, pc, r1                                |         r1 = pc + r1;
    0x00003028 add r3, pc, r3                                |         r3 = pc + r3;
    0x0000302c b 0x3720                                      |         goto label_60;
    0x00003030 ldr r0, [sp, 0x20]                            |         r0 = s1;
    0x00003034 bl 0x1404                                     |         r0 = strcmp (r0, r1);
    0x00003038 subs r7, r0, 0                                |         r7 = r0 - 0;
                                                             |         if (r7 != r0) {
    0x0000303c bne 0x309c                                    |             goto label_61;
                                                             |         }
    0x00003040 asr r6, r6, 1                                 |         r6 >>= 1;
    0x00003044 add r3, r6, 1                                 |         r3 = r6 + 1;
    0x00003048 add r8, r8, sb                                |         r8 += sb;
    0x0000304c str r3, [sp, 0x30]                            |         var_30h = r3;
    0x00003050 ldr r3, [r8, 4]                               |         r3 = *((r8 + 4));
    0x00003054 str r3, [sp, 0x3c]                            |         s2 = r3;
    0x00003058 sub r3, r3, 1                                 |         r3--;
    0x0000305c cmp r3, 0xc                                   |         
                                                             |         if (r3 > 0xc) {
                                                             |             /* switch table (13 cases) at 0x3068 */
    0x00003060 addls pc, pc, r3, lsl 2                       |             pc += (r3 << 2);
                                                             |         }
    0x00003064 b 0x3004                                      |         
                                                             |     }
    0x00003068 b 0x31b8                                      |     goto label_62;
    0x0000306c b 0x360c                                      |     goto label_63;
    0x00003070 b 0x360c                                      |     goto label_63;
    0x00003074 b 0x360c                                      |     goto label_63;
    0x00003078 b 0x3f8c                                      |     goto label_64;
    0x0000307c b 0x40cc                                      |     goto label_65;
    0x00003080 b 0x3ed0                                      |     goto label_66;
    0x00003084 b 0x44bc                                      |     goto label_67;
    0x00003088 b 0x4634                                      |     goto label_68;
    0x0000308c b 0x4548                                      |     goto label_69;
    0x00003090 b 0x46e0                                      |     goto label_70;
    0x00003094 b 0x4208                                      |     goto label_71;
    0x00003098 b 0x324c                                      |     goto label_15;
                                                             | label_61:
    0x0000309c add fp, fp, 1                                 |     
    0x000030a0 b 0x2ff4                                      |     goto label_8;
                                                             | label_9:
    0x000030a4 add r3, sp, 0x60                              |     r3 += var_60h;
    0x000030a8 ldr fp, [r3, r8, lsl 2]                       |     offset_2 = r8 << 2;
                                                             |     fp = *((r3 + offset_2));
    0x000030ac ldr r1, [sp, 0x3c]                            |     r1 = s2;
    0x000030b0 mov r0, fp                                    |     r0 = fp;
    0x000030b4 str r3, [sp, 0x48]                            |     var_48h = r3;
    0x000030b8 bl 0x1404                                     |     strcmp (r0, r1);
    0x000030bc ldr r3, [sp, 0x48]                            |     r3 = var_48h;
    0x000030c0 subs sb, r0, 0                                |     sb = r0 - 0;
                                                             |     if (sb != r0) {
    0x000030c4 addeq r3, r3, r8, lsl 2                       |         r3 += (r8 << 2);
                                                             |     }
                                                             |     if (sb != r0) {
    0x000030c8 ldreq r6, [r3, 4]                             |         r6 = *((r3 + 4));
                                                             |     }
                                                             |     if (sb == r0) {
    0x000030cc beq 0x3124                                    |         goto label_72;
                                                             |     }
    0x000030d0 ldr r1, [pc, 0x76c]                           |     r1 = *(0x3840);
    0x000030d4 mov r0, fp                                    |     r0 = fp;
    0x000030d8 add r1, pc, r1                                |     r1 = pc + r1;
    0x000030dc bl 0x1404                                     |     r0 = strcmp (r0, r1);
    0x000030e0 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000030e4 beq 0x3154                                    |         goto label_73;
                                                             |     }
    0x000030e8 ldr r3, [sp, 0x20]                            |     r3 = s1;
    0x000030ec ldr r1, [pc, 0x754]                           |     r1 = *(0x3844);
    0x000030f0 str r3, [sp, 4]                               |     var_4h = r3;
    0x000030f4 ldr r3, [pc, 0x750]                           |     r3 = *(0x3848);
    0x000030f8 str fp, [sp, 8]                               |     var_8h = fp;
    0x000030fc add r3, pc, r3                                |     r3 = pc + r3;
    0x00003100 str r3, [sp]                                  |     *(sp) = r3;
    0x00003104 ldr r3, [pc, 0x744]                           |     r3 = *(0x384c);
    0x00003108 ldr r2, [pc, 0x744]                           |     r2 = *(0x3850);
    0x0000310c add r3, pc, r3                                |     r3 = pc + r3;
    0x00003110 add r1, pc, r1                                |     r1 = pc + r1;
    0x00003114 mov r0, sl                                    |     r0 = sl;
    0x00003118 bl 0x1500                                     |     loc_imp_log_error_write ();
    0x0000311c b 0x3154                                      |     goto label_73;
                                                             |     do {
    0x00003120 add sb, sb, 1                                 |         sb++;
                                                             | label_72:
    0x00003124 ldr r3, [sp, 0x54]                            |         r3 = var_54h;
    0x00003128 lsl fp, sb, 3                                 |         
    0x0000312c ldr r1, [r3, sb, lsl 3]                       |         offset_3 = sb << 3;
                                                             |         r1 = *((r3 + offset_3));
    0x00003130 cmp r1, 0                                     |         
                                                             |         if (r1 == 0) {
    0x00003134 beq 0x3154                                    |             goto label_73;
                                                             |         }
    0x00003138 mov r0, r6                                    |         r0 = r6;
    0x0000313c bl 0x1404                                     |         r0 = strcmp (r0, r1);
    0x00003140 cmp r0, 0                                     |         
    0x00003144 bne 0x3120                                    |         
                                                             |     } while (r0 != 0);
    0x00003148 ldr r3, [sp, 0x44]                            |     r3 = var_44h;
    0x0000314c add r3, r3, fp                                |     r3 += fp;
    0x00003150 ldr r7, [r3, 0x74]                            |     r7 = *((r3 + 0x74));
                                                             | label_73:
    0x00003154 add r8, r8, 2                                 |     r8 += 2;
                                                             | label_10:
    0x00003158 ldr r3, [sp, 0x30]                            |     r3 = var_30h;
    0x0000315c cmp r3, r8                                    |     
                                                             |     if (r3 > r8) {
    0x00003160 bhi 0x30a4                                    |         goto label_9;
                                                             |     }
    0x00003164 ldr r3, [r4, 0x1c]                            |     r3 = *((r4 + 0x1c));
    0x00003168 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x0000316c bne 0x324c                                    |         goto label_15;
                                                             |     }
    0x00003170 cmp r6, 0                                     |     
                                                             |     if (r6 == 0) {
    0x00003174 bne 0x31d0                                    |         
    0x00003178 ldr r3, [pc, 0x6d8]                           |         r3 = *(0x3854);
    0x0000317c ldr r1, [pc, 0x6d8]                           |         r1 = *(0x3858);
    0x00003180 add r3, pc, r3                                |         r3 = pc + r3;
    0x00003184 str r3, [sp, 8]                               |         var_8h = r3;
    0x00003188 ldr r3, [sp, 0x20]                            |         r3 = s1;
    0x0000318c mov r2, 0x16c                                 |         r2 = 0x16c;
    0x00003190 str r3, [sp, 4]                               |         var_4h = r3;
    0x00003194 ldr r3, [pc, 0x6c4]                           |         r3 = *(0x385c);
    0x00003198 add r1, pc, r1                                |         r1 = pc + r1;
    0x0000319c add r3, pc, r3                                |         r3 = pc + r3;
    0x000031a0 str r3, [sp]                                  |         *(sp) = r3;
    0x000031a4 ldr r3, [pc, 0x6b8]                           |         r3 = *(0x3860);
    0x000031a8 add r3, pc, r3                                |         r3 = pc + r3;
                                                             | label_18:
    0x000031ac mov r0, sl                                    |         r0 = sl;
    0x000031b0 bl 0x1500                                     |         loc_imp_log_error_write ();
    0x000031b4 b 0x324c                                      |         goto label_15;
                                                             | label_62:
    0x000031b8 ldr r3, [pc, 0x6a8]                           |         r3 = *(0x3864);
    0x000031bc mov r6, 0                                     |         r6 = 0;
    0x000031c0 add r3, pc, r3                                |         r3 = pc + r3;
    0x000031c4 mov r8, 2                                     |         r8 = 2;
    0x000031c8 str r3, [sp, 0x3c]                            |         s2 = r3;
    0x000031cc b 0x3158                                      |         goto label_10;
                                                             |     }
    0x000031d0 sub r7, r7, 1                                 |     r7--;
    0x000031d4 cmp r7, 7                                     |     
                                                             |     if (r7 > 7) {
                                                             |         /* switch table (8 cases) at 0x31e0 */
    0x000031d8 addls pc, pc, r7, lsl 2                       |         pc += (r7 << 2);
                                                             |     }
    0x000031dc b 0x34ec                                      |     goto label_74;
    0x000031e0 b 0x3324                                      |     goto label_75;
    0x000031e4 b 0x32d4                                      |     goto label_76;
    0x000031e8 b 0x3374                                      |     goto label_77;
    0x000031ec b 0x33bc                                      |     goto label_78;
    0x000031f0 b 0x3288                                      |     goto label_79;
    0x000031f4 b 0x3200                                      |     goto label_80;
    0x000031f8 b 0x33d4                                      |     goto label_81;
    0x000031fc b 0x34a8                                      |     goto label_82;
                                                             | label_80:
    0x00003200 ldr r3, [sp, 0x38]                            |     r3 = var_38h;
    0x00003204 ldr r6, [sl, 0x5c]                            |     r6 = *((sl + 0x5c));
    0x00003208 ldr r0, [r3, 0x18]                            |     r0 = *((r3 + 0x18));
    0x0000320c bl 0x1410                                     |     r0 = getpwuid ();
    0x00003210 subs r3, r0, 0                                |     r3 = r0 - 0;
                                                             |     if (r3 != r0) {
    0x00003214 bne 0x3278                                    |         goto label_83;
                                                             |     }
    0x00003218 ldr r2, [sp, 0x38]                            |     r2 = var_38h;
    0x0000321c mov r0, r6                                    |     r0 = r6;
    0x00003220 ldr r2, [r2, 0x18]                            |     r2 = *((r2 + 0x18));
    0x00003224 bl 0x1440                                     |     loc_imp_buffer_copy_int ();
                                                             |     do {
    0x00003228 cmp r6, 0                                     |         
    0x0000322c ldr r3, [r5, 0x4c]                            |         r3 = *((r5 + 0x4c));
                                                             |         if (r6 == 0) {
    0x00003230 ldrne r1, [r6]                                |             r1 = *(r6);
                                                             |         }
                                                             |         if (r6 != 0) {
    0x00003234 moveq r1, r6                                  |             r1 = r6;
                                                             |         }
    0x00003238 mov r0, r6                                    |         r0 = r6;
                                                             | label_14:
    0x0000323c bl 0x25dc                                     |         r0 = fcn_000025dc (r0);
    0x00003240 mov r2, r0                                    |         r2 = r0;
    0x00003244 mov r0, r3                                    |         r0 = r3;
                                                             | label_13:
    0x00003248 bl 0x13f8                                     |         loc_imp_chunkqueue_append_mem ();
                                                             | label_15:
    0x0000324c ldr r3, [sp, 0x24]                            |         r3 = var_24h;
    0x00003250 ldr r2, [sp, 0x2c]                            |         r2 = var_2ch;
    0x00003254 add r6, r3, r2                                |         r6 = r3 + r2;
    0x00003258 sub r3, r6, 1                                 |         r3 = r6 - 1;
    0x0000325c str r3, [sp, 0x24]                            |         var_24h = r3;
    0x00003260 ldr r3, [sp, 0x1c]                            |         r3 = buf;
    0x00003264 cmp r3, r6                                    |         
                                                             |         if (r3 != r6) {
    0x00003268 bne 0x47f4                                    |             goto label_40;
                                                             |         }
                                                             | label_32:
    0x0000326c mov r6, 0                                     |         r6 = 0;
    0x00003270 str r6, [sp, 0x1c]                            |         buf = r6;
    0x00003274 b 0x2c14                                      |         goto label_11;
                                                             | label_83:
    0x00003278 ldr r1, [r3]                                  |         r1 = *(r3);
    0x0000327c mov r0, r6                                    |         r0 = r6;
    0x00003280 bl 0x12b4                                     |         loc_imp_buffer_copy_string ();
    0x00003284 b 0x3228                                      |         
                                                             |     } while (1);
                                                             | label_79:
    0x00003288 ldr r3, [sp, 0x38]                            |     r3 = var_38h;
    0x0000328c add r0, sp, 0x208                             |     r0 += var_208h;
    0x00003290 ldr r3, [r3, 0x50]                            |     r3 = *((r3 + 0x50));
    0x00003294 add r6, sp, 0x108                             |     r6 += s;
    0x00003298 str r3, [r0, -0x168]!                         |     *((r0 -= 0x168)) = r3;
    0x0000329c ldr r3, [r4]                                  |     r3 = *(r4);
    0x000032a0 ldr r7, [r3]                                  |     r7 = *(r3);
    0x000032a4 bl 0x13a4                                     |     localtime (r0);
    0x000032a8 mov r1, 0xff                                  |     r1 = 0xff;
    0x000032ac mov r2, r7                                    |     r2 = r7;
    0x000032b0 mov r3, r0                                    |     r3 = r0;
    0x000032b4 mov r0, r6                                    |     r0 = r6;
    0x000032b8 bl 0x144c                                     |     r0 = strftime (r0, r1, r2, r3);
    0x000032bc cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000032c0 bne 0x3cac                                    |         goto label_84;
                                                             |     }
    0x000032c4 ldr r1, [pc, 0x5a0]                           |     r1 = *(0x3868);
    0x000032c8 mov r2, 6                                     |     r2 = 6;
    0x000032cc add r1, pc, r1                                |     r1 = pc + r1;
    0x000032d0 b 0x2da4                                      |     goto label_12;
                                                             | label_76:
    0x000032d4 mov r0, 0                                     |     r0 = 0;
    0x000032d8 bl 0x13d4                                     |     time (r0);
    0x000032dc ldr r2, [r4]                                  |     r2 = *(r4);
    0x000032e0 add r3, sp, 0x208                             |     r3 += var_208h;
    0x000032e4 ldr r7, [r2]                                  |     r7 = *(r2);
    0x000032e8 add r6, sp, 0x108                             |     r6 += s;
    0x000032ec str r0, [r3, -0x168]!                         |     *((r3 -= 0x168)) = r0;
    0x000032f0 mov r0, r3                                    |     r0 = r3;
    0x000032f4 bl 0x13a4                                     |     localtime (r0);
    0x000032f8 mov r2, r7                                    |     r2 = r7;
    0x000032fc mov r1, 0xff                                  |     r1 = 0xff;
    0x00003300 mov r3, r0                                    |     r3 = r0;
    0x00003304 mov r0, r6                                    |     r0 = r6;
    0x00003308 bl 0x144c                                     |     r0 = strftime (r0, r1, r2, r3);
    0x0000330c cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00003310 bne 0x3cac                                    |         goto label_84;
                                                             |     }
    0x00003314 ldr r1, [pc, 0x554]                           |     r1 = *(0x386c);
    0x00003318 mov r2, 6                                     |     r2 = 6;
    0x0000331c add r1, pc, r1                                |     r1 = pc + r1;
    0x00003320 b 0x2da4                                      |     goto label_12;
                                                             | label_75:
    0x00003324 mov r0, 0                                     |     r0 = 0;
    0x00003328 bl 0x13d4                                     |     time (r0);
    0x0000332c ldr r2, [r4]                                  |     r2 = *(r4);
    0x00003330 add r3, sp, 0x208                             |     r3 += var_208h;
    0x00003334 ldr r7, [r2]                                  |     r7 = *(r2);
    0x00003338 add r6, sp, 0x108                             |     r6 += s;
    0x0000333c str r0, [r3, -0x168]!                         |     *((r3 -= 0x168)) = r0;
    0x00003340 mov r0, r3                                    |     r0 = r3;
    0x00003344 bl 0x14b8                                     |     gmtime (r0);
    0x00003348 mov r2, r7                                    |     r2 = r7;
    0x0000334c mov r1, 0xff                                  |     r1 = 0xff;
    0x00003350 mov r3, r0                                    |     r3 = r0;
    0x00003354 mov r0, r6                                    |     r0 = r6;
    0x00003358 bl 0x144c                                     |     r0 = strftime (r0, r1, r2, r3);
    0x0000335c cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00003360 bne 0x3cac                                    |         goto label_84;
                                                             |     }
    0x00003364 ldr r1, [pc, 0x508]                           |     r1 = *(0x3870);
    0x00003368 mov r2, 6                                     |     r2 = 6;
    0x0000336c add r1, pc, r1                                |     r1 = pc + r1;
    0x00003370 b 0x2da4                                      |     goto label_12;
                                                             | label_77:
    0x00003374 ldr r8, [r5, 0x154]                           |     r8 = *((r5 + 0x154));
    0x00003378 mov r1, 0x2f                                  |     r1 = 0x2f;
    0x0000337c ldr r7, [r8]                                  |     r7 = *(r8);
    0x00003380 mov r0, r7                                    |     r0 = r7;
    0x00003384 bl 0x12f0                                     |     strrchr (r0, r1);
    0x00003388 ldr r6, [r5, 0x4c]                            |     r6 = *((r5 + 0x4c));
    0x0000338c cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00003390 bne 0x33ac                                    |         goto label_85;
                                                             |     }
    0x00003394 mov r0, r8                                    |     r0 = r8;
    0x00003398 bl 0x25dc                                     |     r0 = fcn_000025dc (r0);
                                                             |     do {
    0x0000339c mov r2, r0                                    |         r2 = r0;
    0x000033a0 mov r1, r7                                    |         r1 = r7;
    0x000033a4 mov r0, r6                                    |         r0 = r6;
    0x000033a8 b 0x3248                                      |         goto label_13;
                                                             | label_85:
    0x000033ac add r7, r0, 1                                 |         r7 = r0 + 1;
    0x000033b0 mov r0, r7                                    |         r0 = r7;
    0x000033b4 bl 0x14c4                                     |         strlen (r0);
    0x000033b8 b 0x339c                                      |         
                                                             |     } while (1);
                                                             | label_78:
    0x000033bc ldr r3, [r5, 0x4c]                            |     r3 = *((r5 + 0x4c));
    0x000033c0 ldr r0, [r5, 0x148]                           |     r0 = *((r5 + 0x148));
                                                             | label_16:
    0x000033c4 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000033c8 ldrne r1, [r0]                                |         r1 = *(r0);
                                                             |     }
                                                             |     if (r0 != 0) {
    0x000033cc moveq r1, r0                                  |         r1 = r0;
                                                             |     }
    0x000033d0 b 0x323c                                      |     goto label_14;
                                                             | label_81:
    0x000033d4 ldr r2, [r5, 0x140]                           |     r2 = *((r5 + 0x140));
    0x000033d8 mov r0, r2                                    |     r0 = r2;
    0x000033dc bl 0x25b8                                     |     r0 = fcn_000025b8 (r0);
    0x000033e0 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000033e4 bne 0x324c                                    |         goto label_15;
                                                             |     }
    0x000033e8 ldr r0, [r5, 0x144]                           |     r0 = *((r5 + 0x144));
    0x000033ec bl 0x25b8                                     |     r0 = fcn_000025b8 (r0);
    0x000033f0 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000033f4 bne 0x324c                                    |         goto label_15;
                                                             |     }
    0x000033f8 cmp r2, 0                                     |     
    0x000033fc mov r0, r2                                    |     r0 = r2;
                                                             |     if (r2 == 0) {
    0x00003400 ldrne r1, [r2]                                |         r1 = *(r2);
                                                             |     }
                                                             |     if (r2 != 0) {
    0x00003404 moveq r1, r2                                  |         r1 = r2;
                                                             |     }
    0x00003408 ldr r3, [r5, 0x4c]                            |     r3 = *((r5 + 0x4c));
    0x0000340c bl 0x25dc                                     |     r0 = fcn_000025dc (r0);
    0x00003410 mov r2, r0                                    |     r2 = r0;
    0x00003414 mov r0, r3                                    |     r0 = r3;
    0x00003418 bl 0x13f8                                     |     loc_imp_chunkqueue_append_mem ();
    0x0000341c ldr r1, [pc, 0x454]                           |     r1 = *(0x3874);
    0x00003420 mov r2, 3                                     |     r2 = 3;
    0x00003424 add r1, pc, r1                                |     r1 = pc + r1;
    0x00003428 ldr r0, [r5, 0x4c]                            |     r0 = *((r5 + 0x4c));
    0x0000342c bl 0x13f8                                     |     loc_imp_chunkqueue_append_mem ();
    0x00003430 ldr r0, [r5, 0x144]                           |     r0 = *((r5 + 0x144));
    0x00003434 ldr r3, [r5, 0x4c]                            |     r3 = *((r5 + 0x4c));
    0x00003438 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0000343c ldrne r1, [r0]                                |         r1 = *(r0);
                                                             |     }
                                                             |     if (r0 != 0) {
    0x00003440 moveq r1, r0                                  |         r1 = r0;
                                                             |     }
    0x00003444 bl 0x25dc                                     |     r0 = fcn_000025dc (r0);
    0x00003448 mov r2, r0                                    |     r2 = r0;
    0x0000344c mov r0, r3                                    |     r0 = r3;
    0x00003450 bl 0x13f8                                     |     loc_imp_chunkqueue_append_mem ();
    0x00003454 ldr r0, [r5, 0x104]                           |     r0 = *((r5 + 0x104));
    0x00003458 ldr r3, [r5, 0x4c]                            |     r3 = *((r5 + 0x4c));
    0x0000345c cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00003460 ldrne r1, [r0]                                |         r1 = *(r0);
                                                             |     }
                                                             |     if (r0 != 0) {
    0x00003464 moveq r1, r0                                  |         r1 = r0;
                                                             |     }
    0x00003468 bl 0x25dc                                     |     r0 = fcn_000025dc (r0);
    0x0000346c mov r2, r0                                    |     r2 = r0;
    0x00003470 mov r0, r3                                    |     r0 = r3;
    0x00003474 bl 0x13f8                                     |     loc_imp_chunkqueue_append_mem ();
    0x00003478 ldr r0, [r5, 0x150]                           |     r0 = *((r5 + 0x150));
    0x0000347c bl 0x25b8                                     |     r0 = fcn_000025b8 (r0);
    0x00003480 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00003484 bne 0x324c                                    |         goto label_15;
                                                             |     }
    0x00003488 ldr r1, [pc, 0x3ec]                           |     r1 = *(0x3878);
    0x0000348c mov r2, 1                                     |     r2 = 1;
    0x00003490 add r1, pc, r1                                |     r1 = pc + r1;
                                                             | label_17:
    0x00003494 ldr r0, [r5, 0x4c]                            |     r0 = *((r5 + 0x4c));
    0x00003498 bl 0x13f8                                     |     loc_imp_chunkqueue_append_mem ();
    0x0000349c ldr r3, [r5, 0x4c]                            |     r3 = *((r5 + 0x4c));
    0x000034a0 ldr r0, [r5, 0x150]                           |     r0 = *((r5 + 0x150));
    0x000034a4 b 0x33c4                                      |     goto label_16;
                                                             | label_82:
    0x000034a8 ldr r0, [r5, 0x104]                           |     r0 = *((r5 + 0x104));
    0x000034ac ldr r3, [r5, 0x4c]                            |     r3 = *((r5 + 0x4c));
    0x000034b0 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000034b4 ldrne r1, [r0]                                |         r1 = *(r0);
                                                             |     }
                                                             |     if (r0 != 0) {
    0x000034b8 moveq r1, r0                                  |         r1 = r0;
                                                             |     }
    0x000034bc bl 0x25dc                                     |     r0 = fcn_000025dc (r0);
    0x000034c0 mov r2, r0                                    |     r2 = r0;
    0x000034c4 mov r0, r3                                    |     r0 = r3;
    0x000034c8 bl 0x13f8                                     |     loc_imp_chunkqueue_append_mem ();
    0x000034cc ldr r0, [r5, 0x150]                           |     r0 = *((r5 + 0x150));
    0x000034d0 bl 0x25b8                                     |     r0 = fcn_000025b8 (r0);
    0x000034d4 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000034d8 bne 0x324c                                    |         goto label_15;
                                                             |     }
    0x000034dc ldr r1, [pc, 0x39c]                           |     r1 = *(0x387c);
    0x000034e0 mov r2, 1                                     |     r2 = 1;
    0x000034e4 add r1, pc, r1                                |     r1 = pc + r1;
    0x000034e8 b 0x3494                                      |     goto label_17;
                                                             | label_74:
    0x000034ec mov r0, r6                                    |     r0 = r6;
    0x000034f0 bl 0x14c4                                     |     strlen (r0);
    0x000034f4 mov r1, r6                                    |     r1 = r6;
    0x000034f8 mov r2, r0                                    |     r2 = r0;
    0x000034fc ldr r0, [r4, 0x10]                            |     r0 = *((r4 + 0x10));
    0x00003500 bl 0x1260                                     |     r0 = loc_imp_array_get_element_klen ();
    0x00003504 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00003508 bne 0x352c                                    |         
    0x0000350c mov r0, r6                                    |         r0 = r6;
    0x00003510 bl 0x14c4                                     |         strlen (r0);
    0x00003514 mov r1, r6                                    |         r1 = r6;
    0x00003518 mov r2, r0                                    |         r2 = r0;
    0x0000351c ldr r0, [r4, 0xc]                             |         r0 = *((r4 + 0xc));
    0x00003520 bl 0x1260                                     |         r0 = loc_imp_array_get_element_klen ();
    0x00003524 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00003528 beq 0x3538                                    |             goto label_86;
                                                             |         }
                                                             |     }
    0x0000352c ldr r3, [r5, 0x4c]                            |     r3 = *((r5 + 0x4c));
    0x00003530 ldr r0, [r0, 0x10]                            |     r0 = *((r0 + 0x10));
    0x00003534 b 0x33c4                                      |     goto label_16;
                                                             | label_86:
    0x00003538 ldr r1, [pc, 0x344]                           |     r1 = *(0x3880);
    0x0000353c mov r2, 6                                     |     r2 = 6;
    0x00003540 add r1, pc, r1                                |     r1 = pc + r1;
    0x00003544 b 0x2da4                                      |     goto label_12;
                                                             |     do {
    0x00003548 add sb, sp, 0x60                              |         sb += var_60h;
    0x0000354c ldr r8, [sb, r7, lsl 2]                       |         offset_4 = r7 << 2;
                                                             |         r8 = *((sb + offset_4));
    0x00003550 ldr r1, [sp, 0x48]                            |         r1 = var_48h;
    0x00003554 mov r0, r8                                    |         r0 = r8;
    0x00003558 bl 0x1404                                     |         r0 = strcmp (r0, r1);
    0x0000355c cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x00003560 addeq r3, sb, r7, lsl 2                       |             r3 = sb + (r7 << 2);
                                                             |         }
                                                             |         if (r0 != 0) {
    0x00003564 ldreq fp, [r3, 4]                             |             fp = var_6ch;
                                                             |         }
                                                             |         if (r0 != 0) {
    0x00003568 beq 0x35b8                                    |             
    0x0000356c ldr r1, [sp, 0x4c]                            |             r1 = var_4ch;
    0x00003570 mov r0, r8                                    |             r0 = r8;
    0x00003574 bl 0x1404                                     |             r0 = strcmp (r0, r1);
    0x00003578 cmp r0, 0                                     |             
                                                             |             if (r0 != 0) {
    0x0000357c addeq r3, sb, r7, lsl 2                       |                 r3 = sb + (r7 << 2);
                                                             |             }
                                                             |             if (r0 != 0) {
    0x00003580 ldreq r6, [r3, 4]                             |                 r6 = var_6ch;
                                                             |             }
                                                             |             if (r0 == 0) {
    0x00003584 beq 0x35b8                                    |                 goto label_87;
                                                             |             }
    0x00003588 ldr r3, [sp, 0x20]                            |             r3 = s1;
    0x0000358c ldr r1, [pc, 0x2f4]                           |             r1 = *(0x3884);
    0x00003590 str r3, [sp, 4]                               |             var_4h = r3;
    0x00003594 ldr r3, [pc, 0x2f0]                           |             r3 = *(0x3888);
    0x00003598 str r8, [sp, 8]                               |             var_8h = r8;
    0x0000359c add r3, pc, r3                                |             r3 = pc + r3;
    0x000035a0 str r3, [sp]                                  |             *(sp) = r3;
    0x000035a4 ldr r2, [pc, 0x2e4]                           |             r2 = *(0x388c);
    0x000035a8 ldr r3, [sp, 0x50]                            |             r3 = var_50h;
    0x000035ac add r1, pc, r1                                |             r1 = pc + r1;
    0x000035b0 mov r0, sl                                    |             r0 = sl;
    0x000035b4 bl 0x1500                                     |             loc_imp_log_error_write ();
                                                             |         }
                                                             | label_87:
    0x000035b8 add r7, r7, 2                                 |         r7 += 2;
                                                             | label_19:
    0x000035bc ldr r3, [sp, 0x30]                            |         r3 = var_30h;
    0x000035c0 cmp r3, r7                                    |         
    0x000035c4 bhi 0x3548                                    |         
                                                             |     } while (r3 > r7);
    0x000035c8 cmp fp, 0                                     |     
    0x000035cc cmpeq r6, 0                                   |     __asm ("cmpeq r6, 0");
                                                             |     if (fp == 0) {
    0x000035d0 bne 0x3640                                    |         
    0x000035d4 ldr r3, [pc, 0x2b8]                           |         r3 = *(0x3890);
    0x000035d8 ldr r1, [pc, 0x2b8]                           |         r1 = *(0x3894);
    0x000035dc add r3, pc, r3                                |         r3 = pc + r3;
    0x000035e0 str r3, [sp, 8]                               |         var_8h = r3;
    0x000035e4 ldr r3, [sp, 0x20]                            |         r3 = s1;
    0x000035e8 mov r2, 0x1e8                                 |         r2 = 0x1e8;
    0x000035ec str r3, [sp, 4]                               |         var_4h = r3;
    0x000035f0 ldr r3, [pc, 0x2a4]                           |         r3 = *(0x3898);
    0x000035f4 add r1, pc, r1                                |         r1 = pc + r1;
    0x000035f8 add r3, pc, r3                                |         r3 = pc + r3;
    0x000035fc str r3, [sp]                                  |         *(sp) = r3;
    0x00003600 ldr r3, [pc, 0x298]                           |         r3 = *(0x389c);
    0x00003604 add r3, pc, r3                                |         r3 = pc + r3;
    0x00003608 b 0x31ac                                      |         goto label_18;
                                                             | label_63:
    0x0000360c ldr r3, [pc, 0x290]                           |         r3 = *(0x38a0);
    0x00003610 mov r6, 0                                     |         r6 = 0;
    0x00003614 add r3, pc, r3                                |         r3 = pc + r3;
    0x00003618 str r3, [sp, 0x48]                            |         var_48h = r3;
    0x0000361c ldr r3, [pc, 0x284]                           |         r3 = *(0x38a4);
    0x00003620 mov fp, r6                                    |         
    0x00003624 add r3, pc, r3                                |         r3 = pc + r3;
    0x00003628 str r3, [sp, 0x4c]                            |         var_4ch = r3;
    0x0000362c ldr r3, [pc, 0x278]                           |         r3 = *(0x38a8);
    0x00003630 mov r7, 2                                     |         r7 = 2;
    0x00003634 add r3, pc, r3                                |         r3 = pc + r3;
    0x00003638 str r3, [sp, 0x50]                            |         var_50h = r3;
    0x0000363c b 0x35bc                                      |         goto label_19;
                                                             |     }
    0x00003640 cmp fp, 0                                     |     
    0x00003644 cmpne r6, 0                                   |     __asm ("cmpne r6, 0");
                                                             |     if (fp != 0) {
    0x00003648 beq 0x3684                                    |         
    0x0000364c ldr r3, [pc, 0x25c]                           |         r3 = *(0x38ac);
    0x00003650 ldr r1, [pc, 0x25c]                           |         r1 = *(0x38b0);
    0x00003654 add r3, pc, r3                                |         r3 = pc + r3;
    0x00003658 str r3, [sp, 8]                               |         var_8h = r3;
    0x0000365c ldr r3, [sp, 0x20]                            |         r3 = s1;
    0x00003660 ldr r2, [pc, 0x250]                           |         r2 = *(0x38b4);
    0x00003664 str r3, [sp, 4]                               |         var_4h = r3;
    0x00003668 ldr r3, [pc, 0x24c]                           |         r3 = *(0x38b8);
    0x0000366c add r1, pc, r1                                |         r1 = pc + r1;
    0x00003670 add r3, pc, r3                                |         r3 = pc + r3;
    0x00003674 str r3, [sp]                                  |         *(sp) = r3;
    0x00003678 ldr r3, [pc, 0x240]                           |         r3 = *(0x38bc);
    0x0000367c add r3, pc, r3                                |         r3 = pc + r3;
    0x00003680 b 0x31ac                                      |         goto label_18;
                                                             |     }
    0x00003684 ldr r7, [r4, 0x1c]                            |     r7 = *((r4 + 0x1c));
    0x00003688 cmp r7, 0                                     |     
                                                             |     if (r7 != 0) {
    0x0000368c bne 0x324c                                    |         goto label_15;
                                                             |     }
    0x00003690 cmp fp, 0                                     |     
                                                             |     if (fp == 0) {
    0x00003694 beq 0x3744                                    |         goto label_88;
                                                             |     }
    0x00003698 ldr r3, [r5, 0x154]                           |     r3 = *((r5 + 0x154));
    0x0000369c mov r1, 0x2f                                  |     r1 = 0x2f;
    0x000036a0 ldr r6, [r3]                                  |     r6 = *(r3);
    0x000036a4 mov r0, r6                                    |     r0 = r6;
    0x000036a8 bl 0x12f0                                     |     strrchr (r0, r1);
    0x000036ac ldr r3, [r4, 8]                               |     r3 = *((r4 + 8));
    0x000036b0 subs r2, r0, 0                                |     r2 = r0 - 0;
                                                             |     if (r2 == r0) {
    0x000036b4 subne r2, r2, r6                              |         r2 -= r6;
                                                             |     }
                                                             |     if (r2 == r0) {
    0x000036b8 addne r2, r2, 1                               |         r2++;
                                                             |     }
                                                             |     if (r2 == r0) {
    0x000036bc movne r1, r6                                  |         r1 = r6;
                                                             |     }
                                                             |     if (r2 != r0) {
    0x000036c0 ldreq r1, [pc, 0x1fc]                         |         r1 = *((pc + 0x1fc));
                                                             |     }
                                                             |     if (r2 != r0) {
    0x000036c4 moveq r2, 1                                   |         r2 = 1;
                                                             |     }
                                                             |     if (r2 != r0) {
    0x000036c8 addeq r1, pc, r1                              |         r1 = pc + r1;
                                                             |     }
    0x000036cc mov r0, r3                                    |     r0 = r3;
    0x000036d0 bl 0x14dc                                     |     loc_imp_buffer_copy_string_len ();
    0x000036d4 mov r1, fp                                    |     r1 = fp;
    0x000036d8 ldr r0, [sl, 0x5c]                            |     r0 = *((sl + 0x5c));
    0x000036dc bl 0x12b4                                     |     loc_imp_buffer_copy_string ();
    0x000036e0 ldr r0, [sl, 0x5c]                            |     r0 = *((sl + 0x5c));
    0x000036e4 bl 0x11f4                                     |     loc_imp_buffer_urldecode_path ();
    0x000036e8 ldr r0, [sl, 0x5c]                            |     r0 = *((sl + 0x5c));
    0x000036ec bl 0x1428                                     |     loc_imp_buffer_is_valid_UTF8 ();
    0x000036f0 ldr r1, [sl, 0x5c]                            |     r1 = *((sl + 0x5c));
    0x000036f4 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000036f8 bne 0x372c                                    |         goto label_89;
                                                             |     }
    0x000036fc ldr r3, [pc, 0x1c4]                           |     r3 = *(0x38c4);
    0x00003700 str r1, [sp, 4]                               |     var_4h = r1;
    0x00003704 add r3, pc, r3                                |     r3 = pc + r3;
    0x00003708 str r3, [sp]                                  |     *(sp) = r3;
    0x0000370c ldr r1, [pc, 0x1b8]                           |     r1 = *(0x38c8);
    0x00003710 ldr r3, [pc, 0x1b8]                           |     r3 = *(0x38cc);
    0x00003714 ldr r2, [pc, 0x1b8]                           |     r2 = *(0x38d0);
    0x00003718 add r3, pc, r3                                |     r3 = pc + r3;
    0x0000371c add r1, pc, r1                                |     r1 = pc + r1;
                                                             |     do {
                                                             | label_60:
    0x00003720 mov r0, sl                                    |         r0 = sl;
    0x00003724 bl 0x1500                                     |         loc_imp_log_error_write ();
    0x00003728 b 0x324c                                      |         goto label_15;
                                                             | label_89:
    0x0000372c mov r0, r1                                    |         r0 = r1;
    0x00003730 bl 0x1464                                     |         loc_imp_buffer_path_simplify ();
                                                             | label_22:
    0x00003734 ldr r1, [sl, 0x5c]                            |         r1 = *((sl + 0x5c));
    0x00003738 ldr r0, [r4, 8]                               |         r0 = *((r4 + 8));
    0x0000373c bl 0x2868                                     |         fcn_00002868 (r0, r1);
    0x00003740 b 0x3b0c                                      |         goto label_90;
                                                             | label_88:
    0x00003744 ldrb r3, [r6]                                 |         r3 = *(r6);
    0x00003748 ldr sb, [sl, 0x5c]                            |         sb = *((sl + 0x5c));
    0x0000374c cmp r3, 0x2f                                  |         
                                                             |         if (r3 != 0x2f) {
    0x00003750 bne 0x37a4                                    |             goto label_91;
                                                             |         }
    0x00003754 mov r1, r6                                    |         r1 = r6;
    0x00003758 mov r0, sb                                    |         r0 = sb;
    0x0000375c bl 0x12b4                                     |         loc_imp_buffer_copy_string ();
                                                             | label_20:
    0x00003760 ldr r0, [sl, 0x5c]                            |         r0 = *((sl + 0x5c));
    0x00003764 bl 0x11f4                                     |         loc_imp_buffer_urldecode_path ();
    0x00003768 ldr r0, [sl, 0x5c]                            |         r0 = *((sl + 0x5c));
    0x0000376c bl 0x1428                                     |         loc_imp_buffer_is_valid_UTF8 ();
    0x00003770 ldr r1, [sl, 0x5c]                            |         r1 = *((sl + 0x5c));
    0x00003774 cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x00003778 bne 0x3a30                                    |             goto label_92;
                                                             |         }
    0x0000377c ldr r3, [pc, 0x154]                           |         r3 = *(0x38d4);
    0x00003780 str r1, [sp, 4]                               |         var_4h = r1;
    0x00003784 add r3, pc, r3                                |         r3 = pc + r3;
    0x00003788 str r3, [sp]                                  |         *(sp) = r3;
    0x0000378c ldr r1, [pc, 0x148]                           |         r1 = *(0x38d8);
    0x00003790 ldr r3, [pc, 0x148]                           |         r3 = *(0x38dc);
    0x00003794 ldr r2, [pc, 0x148]                           |         r2 = *(0x38e0);
    0x00003798 add r3, pc, r3                                |         r3 = pc + r3;
    0x0000379c add r1, pc, r1                                |         r1 = pc + r1;
    0x000037a0 b 0x3720                                      |         
                                                             |     } while (1);
                                                             | label_91:
    0x000037a4 ldr r3, [r5, 0x148]                           |     r3 = *((r5 + 0x148));
    0x000037a8 mov r1, 0x2f                                  |     r1 = 0x2f;
    0x000037ac ldr r8, [r3]                                  |     r8 = *(r3);
    0x000037b0 mov r0, r8                                    |     r0 = r8;
    0x000037b4 bl 0x12f0                                     |     strrchr (r0, r1);
    0x000037b8 mov r1, r8                                    |     r1 = r8;
    0x000037bc sub r2, r0, r8                                |     r2 = r0 - r8;
    0x000037c0 add r2, r2, 1                                 |     r2++;
    0x000037c4 mov r0, sb                                    |     r0 = sb;
    0x000037c8 bl 0x14dc                                     |     loc_imp_buffer_copy_string_len ();
    0x000037cc mov r1, r6                                    |     r1 = r6;
    0x000037d0 ldr r0, [sl, 0x5c]                            |     r0 = *((sl + 0x5c));
    0x000037d4 bl 0x1308                                     |     loc_imp_buffer_append_string ();
    0x000037d8 b 0x3760                                      |     goto label_20;
                                                             | label_92:
    0x00003a30 mov r0, r1                                    |     r0 = r1;
    0x00003a34 bl 0x1464                                     |     loc_imp_buffer_path_simplify ();
    0x00003a38 ldr r3, [r5, 0x148]                           |     r3 = *((r5 + 0x148));
    0x00003a3c ldr r0, [sl, 0x5c]                            |     r0 = *((sl + 0x5c));
    0x00003a40 ldr r3, [r3]                                  |     r3 = *(r3);
    0x00003a44 ldr ip, [r0]                                  |     ip = *(r0);
    0x00003a48 mov r6, 0                                     |     r6 = 0;
                                                             | label_21:
    0x00003a4c ldrb r2, [r3, r6]                             |     r2 = *((r3 + r6));
    0x00003a50 cmp r2, 0                                     |     
                                                             |     if (r2 == 0) {
    0x00003a54 beq 0x3a64                                    |         goto label_93;
                                                             |     }
    0x00003a58 ldrb r1, [ip, r6]                             |     r1 = *((ip + r6));
    0x00003a5c cmp r1, r2                                    |     
                                                             |     if (r1 == r2) {
    0x00003a60 beq 0x3bd8                                    |         goto label_94;
                                                             |     }
                                                             |     do {
                                                             | label_93:
    0x00003a64 cmp r6, 0                                     |         
                                                             |         if (r6 == 0) {
    0x00003a68 beq 0x3a7c                                    |             goto label_95;
                                                             |         }
    0x00003a6c sub r6, r6, 1                                 |         r6--;
    0x00003a70 ldrb r2, [r3, r6]                             |         r2 = *((r3 + r6));
    0x00003a74 cmp r2, 0x2f                                  |         
    0x00003a78 bne 0x3a64                                    |         
                                                             |     } while (r2 != 0x2f);
                                                             | label_95:
    0x00003a7c add r3, r5, 0x1ec                             |     r3 = r5 + 0x1ec;
    0x00003a80 ldrh r3, [r3, 2]                              |     r3 = *((r3 + 2));
    0x00003a84 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00003a88 beq 0x3a90                                    |         
    0x00003a8c bl 0x11d0                                     |         loc_imp_buffer_to_lower ();
                                                             |     }
    0x00003a90 ldr r0, [r5, 0x148]                           |     r0 = *((r5 + 0x148));
    0x00003a94 bl 0x25dc                                     |     fcn_000025dc (r0);
    0x00003a98 add r2, r5, 0x1ec                             |     r2 = r5 + 0x1ec;
    0x00003a9c ldrh r2, [r2, 2]                              |     r2 = *((r2 + 2));
    0x00003aa0 ldr r3, [r5, 0x154]                           |     r3 = *((r5 + 0x154));
    0x00003aa4 cmp r2, 0                                     |     
    0x00003aa8 sub r8, r0, r6                                |     r8 = r0 - r6;
                                                             |     if (r2 != 0) {
    0x00003aac bne 0x3be0                                    |         goto label_96;
                                                             |     }
    0x00003ab0 ldr r1, [r5, 0x160]                           |     r1 = *((r5 + 0x160));
    0x00003ab4 mov r2, r8                                    |     r2 = r8;
    0x00003ab8 mov r0, r3                                    |     r0 = r3;
    0x00003abc bl 0x129c                                     |     r0 = loc_imp_buffer_is_equal_right_len ();
    0x00003ac0 adds r1, r0, 0                                |     r1 = r0 + 0;
    0x00003ac4 movne r1, 1                                   |     r1 = 1;
                                                             |     while (1) {
    0x00003ac8 cmp r1, 0                                     |         
    0x00003acc ldr r3, [r4, 8]                               |         r3 = *((r4 + 8));
                                                             |         if (r1 == 0) {
    0x00003ad0 beq 0x3c20                                    |             goto label_97;
                                                             |         }
    0x00003ad4 ldr r1, [r5, 0x154]                           |         r1 = *((r5 + 0x154));
    0x00003ad8 mov r0, r1                                    |         r0 = r1;
    0x00003adc bl 0x25dc                                     |         r0 = fcn_000025dc (r0);
    0x00003ae0 sub r2, r0, r8                                |         r2 = r0 - r8;
    0x00003ae4 ldr r1, [r1]                                  |         r1 = *(r1);
    0x00003ae8 mov r0, r3                                    |         r0 = r3;
    0x00003aec bl 0x14dc                                     |         loc_imp_buffer_copy_string_len ();
    0x00003af0 ldr r0, [sl, 0x5c]                            |         r0 = *((sl + 0x5c));
    0x00003af4 ldr r1, [r0]                                  |         r1 = *(r0);
    0x00003af8 add r1, r1, r6                                |         r1 += r6;
    0x00003afc bl 0x25dc                                     |         r0 = fcn_000025dc (r0);
    0x00003b00 sub r2, r0, r6                                |         r2 = r0 - r6;
    0x00003b04 ldr r0, [r4, 8]                               |         r0 = *((r4 + 8));
    0x00003b08 bl 0x1380                                     |         loc_imp_buffer_append_string_len ();
                                                             | label_90:
    0x00003b0c ldr r3, [r4, 8]                               |         r3 = *((r4 + 8));
    0x00003b10 add r1, sp, 0xa0                              |         r1 += timer;
    0x00003b14 ldr r0, [r3]                                  |         r0 = *(r3);
    0x00003b18 bl 0x1218                                     |         r0 = stat64 ();
    0x00003b1c subs r8, r0, 0                                |         r8 = r0 - 0;
                                                             |         if (r8 != r0) {
    0x00003b20 bne 0x3dc0                                    |             goto label_98;
                                                             |         }
    0x00003b24 ldr r2, [sp, 0x3c]                            |         r2 = s2;
    0x00003b28 ldr r3, [sp, 0xf0]                            |         r3 = var_f0h;
    0x00003b2c cmp r2, 3                                     |         
    0x00003b30 str r3, [sp, 0x5c]                            |         var_5ch = r3;
                                                             |         if (r2 == 3) {
    0x00003b34 beq 0x3cc0                                    |             goto label_99;
                                                             |         }
    0x00003b38 cmp r2, 4                                     |         
                                                             |         if (r2 == 4) {
    0x00003b3c beq 0x3c70                                    |             goto label_100;
                                                             |         }
    0x00003b40 ldr r3, [r4, 4]                               |         r3 = *((r4 + 4));
    0x00003b44 ldr sb, [sl, 0x5c]                            |         sb = *((sl + 0x5c));
    0x00003b48 cmp r3, 0                                     |         
    0x00003b4c ldrd r6, r7, [sp, 0xd0]                       |         __asm ("ldrd r6, r7, [var_d0h]");
                                                             |         if (r3 == 0) {
    0x00003b50 beq 0x3c5c                                    |             goto label_101;
                                                             |         }
    0x00003b54 ldr ip, [pc, -0x274]                          |         ip = *(0x000038e8);
    0x00003b58 add lr, sp, 0x108                             |         lr += s;
    0x00003b5c add ip, pc, ip                                |         
    0x00003b60 add ip, ip, 0x60                              |         
    0x00003b64 ldm ip!, {r0, r1, r2, r3}                     |         r0 = *(ip!);
                                                             |         r1 = *((ip! + 4));
                                                             |         r2 = *((ip! + 8));
                                                             |         r3 = *((ip! + 12));
    0x00003b68 stm lr!, {r0, r1, r2, r3}                     |         *(lr!) = r0;
                                                             |         *((lr! + 4)) = r1;
                                                             |         *((lr! + 8)) = r2;
                                                             |         *((lr! + 12)) = r3;
    0x00003b6c ldm ip, {r0, r1}                              |         r0 = *(ip);
                                                             |         r1 = *((ip + 4));
    0x00003b70 mov r2, 0x400                                 |         r2 = 0x400;
    0x00003b74 mov r3, 0                                     |         r3 = 0;
    0x00003b78 add ip, sp, 0x108                             |         
    0x00003b7c stm lr, {r0, r1}                              |         *(lr) = r0;
                                                             |         *((lr + 4)) = r1;
                                                             | label_23:
    0x00003b80 cmp r2, r6                                    |         
    0x00003b84 sbcs r1, r3, r7                               |         __asm ("sbcs r1, r3, r7");
                                                             |         if (r2 < r6) {
    0x00003b88 bge 0x3b9c                                    |             
    0x00003b8c add r0, r8, 1                                 |             r0 = r8 + 1;
    0x00003b90 ldr r1, [ip, r0, lsl 2]                       |             offset_5 = r0 << 2;
                                                             |             r1 = *((ip + offset_5));
    0x00003b94 cmp r1, 0                                     |             
                                                             |             if (r1 != 0) {
    0x00003b98 bne 0x3c40                                    |                 goto label_102;
                                                             |             }
                                                             |         }
    0x00003b9c mov r3, r7                                    |         r3 = r7;
    0x00003ba0 mov r0, sb                                    |         r0 = sb;
    0x00003ba4 mov r2, r6                                    |         r2 = r6;
    0x00003ba8 bl 0x1440                                     |         loc_imp_buffer_copy_int ();
    0x00003bac add r3, sp, 0x208                             |         r3 += var_208h;
    0x00003bb0 add r8, r3, r8, lsl 2                         |         r8 = r3 + (r8 << 2);
    0x00003bb4 ldr r1, [r8, -0x100]                          |         r1 = *((r8 - 0x100));
    0x00003bb8 mov r0, sb                                    |         r0 = sb;
    0x00003bbc bl 0x1308                                     |         loc_imp_buffer_append_string ();
                                                             | label_24:
    0x00003bc0 cmp sb, 0                                     |         
    0x00003bc4 ldr r3, [r5, 0x4c]                            |         r3 = *((r5 + 0x4c));
                                                             |         if (sb == 0) {
    0x00003bc8 ldrne r1, [sb]                                |             r1 = *(sb);
                                                             |         }
                                                             |         if (sb != 0) {
    0x00003bcc moveq r1, sb                                  |             r1 = sb;
                                                             |         }
    0x00003bd0 mov r0, sb                                    |         r0 = sb;
    0x00003bd4 b 0x323c                                      |         goto label_14;
                                                             | label_94:
    0x00003bd8 add r6, r6, 1                                 |         r6++;
    0x00003bdc b 0x3a4c                                      |         goto label_21;
                                                             | label_96:
    0x00003be0 mov r0, r3                                    |         r0 = r3;
    0x00003be4 bl 0x25dc                                     |         r0 = fcn_000025dc (r0);
    0x00003be8 cmp r8, r0                                    |         
                                                             |         if (r8 <= r0) {
    0x00003bec bhi 0x3c18                                    |             
    0x00003bf0 ldr r2, [r5, 0x160]                           |             r2 = *((r5 + 0x160));
    0x00003bf4 ldr r3, [r3]                                  |             r3 = *(r3);
    0x00003bf8 ldr r1, [r2]                                  |             r1 = *(r2);
    0x00003bfc sub r0, r0, r8                                |             r0 -= r8;
    0x00003c00 mov r2, r8                                    |             r2 = r8;
    0x00003c04 add r1, r1, r6                                |             r1 += r6;
    0x00003c08 add r0, r3, r0                                |             r0 = r3 + r0;
    0x00003c0c bl 0x12c0                                     |             r0 = strncasecmp (r0, r1, r2);
    0x00003c10 clz r7, r0                                    |             r7 &= r0;
    0x00003c14 lsr r7, r7, 5                                 |             r7 >>= 5;
                                                             |         }
    0x00003c18 and r1, r7, 1                                 |         r1 = r7 & 1;
    0x00003c1c b 0x3ac8                                      |         
                                                             |     }
                                                             | label_97:
    0x00003c20 ldr r0, [r5, 0x15c]                           |     r0 = *((r5 + 0x15c));
    0x00003c24 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00003c28 ldrne r1, [r0]                                |         r1 = *(r0);
                                                             |     }
    0x00003c2c bl 0x25dc                                     |     r0 = fcn_000025dc (r0);
    0x00003c30 mov r2, r0                                    |     r2 = r0;
    0x00003c34 mov r0, r3                                    |     r0 = r3;
    0x00003c38 bl 0x14dc                                     |     loc_imp_buffer_copy_string_len ();
    0x00003c3c b 0x3734                                      |     goto label_22;
                                                             | label_102:
    0x00003c40 lsr r1, r6, 0xa                               |     r1 = r6 >> 0xa;
    0x00003c44 orr r1, r1, r7, lsl 22                        |     r1 |= (r7 << 22);
    0x00003c48 asr lr, r7, 0xa                               |     lr = r7 >> 0xa;
    0x00003c4c mov r6, r1                                    |     r6 = r1;
    0x00003c50 mov r7, lr                                    |     r7 = lr;
    0x00003c54 mov r8, r0                                    |     r8 = r0;
    0x00003c58 b 0x3b80                                      |     goto label_23;
                                                             | label_101:
    0x00003c5c mov r2, r6                                    |     r2 = r6;
    0x00003c60 mov r3, r7                                    |     r3 = r7;
    0x00003c64 mov r0, sb                                    |     r0 = sb;
    0x00003c68 bl 0x1440                                     |     loc_imp_buffer_copy_int ();
    0x00003c6c b 0x3bc0                                      |     goto label_24;
                                                             | label_100:
    0x00003c70 ldr r3, [r4]                                  |     r3 = *(r4);
    0x00003c74 add r0, sp, 0x5c                              |     r0 += var_5ch;
    0x00003c78 ldr r7, [r3]                                  |     r7 = *(r3);
    0x00003c7c bl 0x13a4                                     |     localtime (r0);
    0x00003c80 add r6, sp, 0x108                             |     r6 += s;
    0x00003c84 mov r2, r7                                    |     r2 = r7;
    0x00003c88 mov r1, 0xff                                  |     r1 = 0xff;
    0x00003c8c mov r3, r0                                    |     r3 = r0;
    0x00003c90 mov r0, r6                                    |     r0 = r6;
    0x00003c94 bl 0x144c                                     |     r0 = strftime (r0, r1, r2, r3);
    0x00003c98 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00003c9c ldreq r1, [pc, -0x3b8]                        |         r1 = *((pc - 0x3b8));
                                                             |     }
                                                             |     if (r0 != 0) {
    0x00003ca0 moveq r2, 6                                   |         r2 = 6;
                                                             |     }
                                                             |     if (r0 == 0) {
    0x00003ca4 addeq r1, pc, r1                              |         r1 = pc + r1;
                                                             |         goto label_103;
                                                             |     }
                                                             |     if (r0 == 0) {
                                                             | label_103:
    0x00003ca8 beq 0x2da4                                    |         goto label_12;
                                                             |     }
                                                             | label_84:
    0x00003cac mov r0, r6                                    |     r0 = r6;
    0x00003cb0 bl 0x14c4                                     |     strlen (r0);
    0x00003cb4 mov r1, r6                                    |     r1 = r6;
    0x00003cb8 mov r2, r0                                    |     r2 = r0;
    0x00003cbc b 0x2da4                                      |     goto label_12;
                                                             | label_99:
    0x00003cc0 ldr r2, [pc, -0x3d8]                          |     r2 = *(0x000038f0);
    0x00003cc4 add r2, pc, r2                                |     r2 = pc + r2;
    0x00003cc8 ldr r1, [r2]                                  |     r1 = *(r2);
    0x00003ccc cmp r3, r1                                    |     
                                                             |     if (r3 <= r1) {
    0x00003cd0 strgt r3, [r2]                                |         *(r2) = r3;
                                                             |     }
    0x00003cd4 cmp fp, 0                                     |     
                                                             |     if (fp == 0) {
    0x00003cd8 bne 0x3ce8                                    |         
    0x00003cdc ldrh r3, [r4, 0x34]                           |         r3 = *((r4 + 0x34));
    0x00003ce0 cmp r3, 0                                     |         
                                                             |         if (r3 != 0) {
    0x00003ce4 bne 0x3d08                                    |             goto label_104;
                                                             |         }
                                                             |     }
    0x00003ce8 ldrd r2, r3, [sp, 0xd0]                       |     __asm ("ldrd r2, r3, [var_d0h]");
    0x00003cec ldr r1, [r4, 8]                               |     r1 = *((r4 + 8));
    0x00003cf0 strd r2, r3, [sp]                             |     __asm ("strd r2, r3, [sp]");
    0x00003cf4 ldr r0, [r5, 0x4c]                            |     r0 = *((r5 + 0x4c));
    0x00003cf8 mov r2, 0                                     |     r2 = 0;
    0x00003cfc mov r3, 0                                     |     r3 = 0;
    0x00003d00 bl 0x1320                                     |     loc_imp_chunkqueue_append_file ();
    0x00003d04 b 0x324c                                      |     goto label_15;
                                                             | label_104:
    0x00003d08 ldrh r2, [r4, 0x24]                           |     r2 = *((r4 + 0x24));
    0x00003d0c cmp r2, r3                                    |     
                                                             |     if (r2 < r3) {
    0x00003d10 ldrhs r1, [pc, -0x424]                        |         r1 = *((pc - 0x424));
                                                             |     }
                                                             |     if (r2 < r3) {
    0x00003d14 movhs r2, 0x4d                                |         r2 = 0x4d;
                                                             |     }
                                                             |     if (r2 >= r3) {
    0x00003d18 addhs r1, pc, r1                              |         r1 = pc + r1;
                                                             |         goto label_105;
                                                             |     }
                                                             |     if (r2 >= r3) {
                                                             | label_105:
    0x00003d1c bhs 0x2da4                                    |         goto label_12;
                                                             |     }
    0x00003d20 ldr r1, [r4, 8]                               |     r1 = *((r4 + 8));
    0x00003d24 ldr r0, [r5, 0x154]                           |     r0 = *((r5 + 0x154));
    0x00003d28 bl 0x11c4                                     |     r0 = loc_imp_buffer_is_equal ();
    0x00003d2c cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00003d30 ldrne r1, [pc, -0x440]                        |         r1 = *((pc - 0x440));
                                                             |     }
                                                             |     if (r0 == 0) {
    0x00003d34 movne r2, 0x33                                |         r2 = 0x33;
                                                             |     }
                                                             |     if (r0 != 0) {
    0x00003d38 addne r1, pc, r1                              |         r1 = pc + r1;
                                                             |         goto label_106;
                                                             |     }
                                                             |     if (r0 != 0) {
                                                             | label_106:
    0x00003d3c bne 0x2da4                                    |         goto label_12;
                                                             |     }
    0x00003d40 ldr r3, [r4, 8]                               |     r3 = *((r4 + 8));
    0x00003d44 ldr r6, [r5, 0x154]                           |     r6 = *((r5 + 0x154));
    0x00003d48 str r3, [r5, 0x154]                           |     *((r5 + 0x154)) = r3;
    0x00003d4c ldr r8, [r5, 0x148]                           |     r8 = *((r5 + 0x148));
    0x00003d50 ldr r7, [r5, 0x160]                           |     r7 = *((r5 + 0x160));
    0x00003d54 bl 0x1200                                     |     loc_imp_buffer_init ();
    0x00003d58 str r0, [r4, 8]                               |     *((r4 + 8)) = r0;
    0x00003d5c ldr r0, [sl, 0x5c]                            |     r0 = *((sl + 0x5c));
    0x00003d60 bl 0x1374                                     |     loc_imp_buffer_init_buffer ();
    0x00003d64 ldrh r3, [r4, 0x24]                           |     r3 = *((r4 + 0x24));
    0x00003d68 mov r2, r4                                    |     r2 = r4;
    0x00003d6c add r3, r3, 1                                 |     r3++;
    0x00003d70 mov r1, r5                                    |     r1 = r5;
    0x00003d74 str r0, [r5, 0x160]                           |     *((r5 + 0x160)) = r0;
    0x00003d78 str r0, [r5, 0x148]                           |     *((r5 + 0x148)) = r0;
    0x00003d7c strh r3, [r4, 0x24]                           |     *((r4 + 0x24)) = r3;
    0x00003d80 mov r0, sl                                    |     r0 = sl;
    0x00003d84 add r3, sp, 0xa0                              |     r3 += timer;
    0x00003d88 bl 0x2948                                     |     fcn_00002948 (r0, r1);
    0x00003d8c ldrh r3, [r4, 0x24]                           |     r3 = *((r4 + 0x24));
    0x00003d90 ldr r0, [r5, 0x148]                           |     r0 = *((r5 + 0x148));
    0x00003d94 sub r3, r3, 1                                 |     r3--;
    0x00003d98 strh r3, [r4, 0x24]                           |     *((r4 + 0x24)) = r3;
    0x00003d9c bl 0x14d0                                     |     loc_imp_buffer_free ();
    0x00003da0 str r8, [r5, 0x148]                           |     *((r5 + 0x148)) = r8;
    0x00003da4 str r7, [r5, 0x160]                           |     *((r5 + 0x160)) = r7;
    0x00003da8 ldr r0, [r4, 8]                               |     r0 = *((r4 + 8));
    0x00003dac bl 0x14d0                                     |     loc_imp_buffer_free ();
    0x00003db0 ldr r3, [r5, 0x154]                           |     r3 = *((r5 + 0x154));
    0x00003db4 str r3, [r4, 8]                               |     *((r4 + 8)) = r3;
    0x00003db8 str r6, [r5, 0x154]                           |     *((r5 + 0x154)) = r6;
    0x00003dbc b 0x324c                                      |     goto label_15;
                                                             | label_98:
    0x00003dc0 bl 0x1488                                     |     errno_location ();
    0x00003dc4 ldr r6, [r4, 8]                               |     r6 = *((r4 + 8));
    0x00003dc8 ldr r0, [r0]                                  |     r0 = *(r0);
    0x00003dcc bl 0x120c                                     |     strerror (r0);
    0x00003dd0 ldr r3, [pc, -0x4dc]                          |     r3 = *(0x38f8);
    0x00003dd4 ldr r1, [pc, -0x4dc]                          |     r1 = *(0x00003900);
    0x00003dd8 add r3, pc, r3                                |     r3 = pc + r3;
    0x00003ddc str r3, [sp]                                  |     *(sp) = r3;
    0x00003de0 ldr r3, [pc, -0x4e4]                          |     r3 = *(0x3900);
    0x00003de4 str r6, [sp, 4]                               |     var_4h = r6;
    0x00003de8 add r3, pc, r3                                |     r3 = pc + r3;
    0x00003dec ldr r2, [pc, -0x4ec]                          |     r2 = *(0x3904);
    0x00003df0 add r1, pc, r1                                |     r1 = pc + r1;
    0x00003df4 str r0, [sp, 8]                               |     var_8h = r0;
    0x00003df8 b 0x31ac                                      |     goto label_18;
                                                             |     do {
    0x00003dfc add fp, sp, 0x60                              |         
    0x00003e00 ldr sb, [fp, r6, lsl 2]                       |         offset_6 = r6 << 2;
                                                             |         sb = *((fp + offset_6));
    0x00003e04 ldr r1, [sp, 0x3c]                            |         r1 = s2;
    0x00003e08 mov r0, sb                                    |         r0 = sb;
    0x00003e0c bl 0x1404                                     |         r0 = strcmp (r0, r1);
    0x00003e10 cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x00003e14 addeq r3, fp, r6, lsl 2                       |             r3 = fp + (r6 << 2);
                                                             |         }
                                                             |         if (r0 != 0) {
    0x00003e18 ldreq r8, [r3, 4]                             |             r8 = var_6ch;
                                                             |         }
                                                             |         if (r0 != 0) {
    0x00003e1c beq 0x3e6c                                    |             
    0x00003e20 ldr r1, [sp, 0x48]                            |             r1 = var_48h;
    0x00003e24 mov r0, sb                                    |             r0 = sb;
    0x00003e28 bl 0x1404                                     |             r0 = strcmp (r0, r1);
    0x00003e2c cmp r0, 0                                     |             
                                                             |             if (r0 != 0) {
    0x00003e30 addeq r3, fp, r6, lsl 2                       |                 r3 = fp + (r6 << 2);
                                                             |             }
                                                             |             if (r0 != 0) {
    0x00003e34 ldreq r7, [r3, 4]                             |                 r7 = var_6ch;
                                                             |             }
                                                             |             if (r0 == 0) {
    0x00003e38 beq 0x3e6c                                    |                 goto label_107;
                                                             |             }
    0x00003e3c ldr r3, [sp, 0x20]                            |             r3 = s1;
    0x00003e40 ldr r1, [pc, -0x53c]                          |             r1 = *(0x0000390c);
    0x00003e44 str r3, [sp, 4]                               |             var_4h = r3;
    0x00003e48 ldr r3, [pc, -0x540]                          |             r3 = *(0x00003910);
    0x00003e4c str sb, [sp, 8]                               |             var_8h = sb;
    0x00003e50 add r3, pc, r3                                |             r3 = pc + r3;
    0x00003e54 str r3, [sp]                                  |             *(sp) = r3;
    0x00003e58 ldr r2, [pc, -0x54c]                          |             r2 = *(0x3910);
    0x00003e5c ldr r3, [sp, 0x4c]                            |             r3 = var_4ch;
    0x00003e60 add r1, pc, r1                                |             r1 = pc + r1;
    0x00003e64 mov r0, sl                                    |             r0 = sl;
    0x00003e68 bl 0x1500                                     |             loc_imp_log_error_write ();
                                                             |         }
                                                             | label_107:
    0x00003e6c add r6, r6, 2                                 |         r6 += 2;
                                                             | label_25:
    0x00003e70 ldr r3, [sp, 0x30]                            |         r3 = var_30h;
    0x00003e74 cmp r3, r6                                    |         
    0x00003e78 bhi 0x3dfc                                    |         
                                                             |     } while (r3 > r6);
    0x00003e7c ldr r3, [r4, 0x1c]                            |     r3 = *((r4 + 0x1c));
    0x00003e80 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00003e84 bne 0x324c                                    |         goto label_15;
                                                             |     }
    0x00003e88 adds r2, r8, 0                                |     r2 = r8 + 0;
                                                             |     if (r2 == r8) {
    0x00003e8c movne r2, 1                                   |         r2 = 1;
                                                             |     }
    0x00003e90 adds r3, r7, 0                                |     r3 = r7 + 0;
                                                             |     if (r3 == r7) {
    0x00003e94 movne r3, 1                                   |         r3 = 1;
                                                             |     }
    0x00003e98 tst r2, r3                                    |     
                                                             |     if ((r2 & r3) != 0) {
    0x00003e9c beq 0x3f04                                    |         
    0x00003ea0 mov r0, r8                                    |         r0 = r8;
    0x00003ea4 bl 0x14c4                                     |         r0 = strlen (r0);
    0x00003ea8 mov r6, r0                                    |         r6 = r0;
    0x00003eac mov r0, r7                                    |         r0 = r7;
    0x00003eb0 bl 0x14c4                                     |         strlen (r0);
    0x00003eb4 mov r3, r7                                    |         r3 = r7;
    0x00003eb8 mov r2, r6                                    |         r2 = r6;
    0x00003ebc mov r1, r8                                    |         r1 = r8;
    0x00003ec0 str r0, [sp]                                  |         *(sp) = r0;
    0x00003ec4 ldr r0, [r4, 0xc]                             |         r0 = *((r4 + 0xc));
    0x00003ec8 bl 0x12e4                                     |         loc_imp_array_insert_key_value ();
    0x00003ecc b 0x324c                                      |         goto label_15;
                                                             | label_66:
    0x00003ed0 ldr r3, [pc, -0x5c0]                          |         r3 = *(0x3914);
    0x00003ed4 mov r7, 0                                     |         r7 = 0;
    0x00003ed8 add r3, pc, r3                                |         r3 = pc + r3;
    0x00003edc str r3, [sp, 0x3c]                            |         s2 = r3;
    0x00003ee0 ldr r3, [pc, -0x5cc]                          |         r3 = *(0x3918);
    0x00003ee4 mov r8, r7                                    |         r8 = r7;
    0x00003ee8 add r3, pc, r3                                |         r3 = pc + r3;
    0x00003eec str r3, [sp, 0x48]                            |         var_48h = r3;
    0x00003ef0 ldr r3, [pc, -0x5d8]                          |         r3 = *(0x391c);
    0x00003ef4 mov r6, 2                                     |         r6 = 2;
    0x00003ef8 add r3, pc, r3                                |         r3 = pc + r3;
    0x00003efc str r3, [sp, 0x4c]                            |         var_4ch = r3;
    0x00003f00 b 0x3e70                                      |         goto label_25;
                                                             |     }
    0x00003f04 orrs r3, r2, r3                               |     r3 = r2 | r3;
                                                             |     if (r3 != r2) {
    0x00003f08 beq 0x3f60                                    |         
    0x00003f0c ldr r3, [pc, -0x5f0]                          |         r3 = *(0x3920);
    0x00003f10 ldr r1, [pc, -0x5f0]                          |         r1 = *(0x00003928);
    0x00003f14 add r3, pc, r3                                |         r3 = pc + r3;
    0x00003f18 str r3, [sp, 0x10]                            |         var_10h = r3;
    0x00003f1c ldr r3, [sp, 0x68]                            |         r3 = var_68h;
    0x00003f20 ldr r2, [pc, -0x5fc]                          |         r2 = *(0x0000392c);
    0x00003f24 str r3, [sp, 0xc]                             |         var_ch = r3;
    0x00003f28 ldr r3, [pc, -0x600]                          |         r3 = *(0x392c);
    0x00003f2c add r1, pc, r1                                |         r1 = pc + r1;
    0x00003f30 add r3, pc, r3                                |         r3 = pc + r3;
    0x00003f34 str r3, [sp, 8]                               |         var_8h = r3;
    0x00003f38 ldr r3, [sp, 0x20]                            |         r3 = s1;
    0x00003f3c mov r0, sl                                    |         r0 = sl;
    0x00003f40 str r3, [sp, 4]                               |         var_4h = r3;
    0x00003f44 ldr r3, [pc, -0x618]                          |         r3 = *(0x00003934);
    0x00003f48 add r3, pc, r3                                |         r3 = pc + r3;
    0x00003f4c str r3, [sp]                                  |         *(sp) = r3;
    0x00003f50 ldr r3, [pc, -0x620]                          |         r3 = *(0x00003938);
    0x00003f54 add r3, pc, r3                                |         r3 = pc + r3;
    0x00003f58 bl 0x1500                                     |         loc_imp_log_error_write ();
    0x00003f5c b 0x324c                                      |         goto label_15;
                                                             |     }
    0x00003f60 ldr r3, [pc, -0x62c]                          |     r3 = s;
    0x00003f64 ldr r1, [pc, -0x62c]                          |     r1 = *(0x00003940);
    0x00003f68 add r3, pc, r3                                |     r3 = pc + r3;
    0x00003f6c str r3, [sp]                                  |     *(sp) = r3;
    0x00003f70 ldr r3, [pc, -0x634]                          |     r3 = *(0x3940);
    0x00003f74 ldr r2, [pc, -0x634]                          |     r2 = *(0x3944);
    0x00003f78 add r3, pc, r3                                |     r3 = pc + r3;
    0x00003f7c add r1, pc, r1                                |     r1 = pc + r1;
    0x00003f80 mov r0, sl                                    |     r0 = sl;
    0x00003f84 bl 0x1500                                     |     loc_imp_log_error_write ();
    0x00003f88 b 0x324c                                      |     goto label_15;
                                                             | label_64:
    0x00003f8c ldr r3, [r4, 0x1c]                            |     r3 = *((r4 + 0x1c));
    0x00003f90 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00003f94 bne 0x324c                                    |         goto label_15;
                                                             |     }
    0x00003f98 ldr r3, [pc, -0x654]                          |     r3 = *(0x3948);
    0x00003f9c ldr r8, [pc, -0x654]                          |     r8 = *(0x394c);
    0x00003fa0 ldr sb, [pc, -0x654]                          |     sb = *(0x3950);
    0x00003fa4 add r3, pc, r3                                |     r3 = pc + r3;
    0x00003fa8 mov r6, 2                                     |     r6 = 2;
    0x00003fac add r8, pc, r8                                |     r8 = pc + r8;
    0x00003fb0 add sb, pc, sb                                |     sb = pc + sb;
    0x00003fb4 str r3, [sp, 0x3c]                            |     s2 = r3;
                                                             | label_26:
    0x00003fb8 ldr r3, [sp, 0x30]                            |     r3 = var_30h;
    0x00003fbc cmp r3, r6                                    |     
                                                             |     if (r3 < r6) {
    0x00003fc0 bls 0x324c                                    |         goto label_15;
                                                             |     }
    0x00003fc4 add fp, sp, 0x60                              |     
    0x00003fc8 ldr r7, [fp, r6, lsl 2]                       |     offset_7 = r6 << 2;
                                                             |     r7 = *((fp + offset_7));
    0x00003fcc ldr r1, [sp, 0x3c]                            |     r1 = s2;
    0x00003fd0 mov r0, r7                                    |     r0 = r7;
    0x00003fd4 bl 0x1404                                     |     r0 = strcmp (r0, r1);
    0x00003fd8 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00003fdc bne 0x3ff8                                    |         goto label_108;
                                                             |     }
    0x00003fe0 add fp, fp, r6, lsl 2                         |     
    0x00003fe4 ldr r1, [fp, 4]                               |     r1 = var_64h;
    0x00003fe8 ldr r0, [r4]                                  |     r0 = *(r4);
    0x00003fec bl 0x12b4                                     |     loc_imp_buffer_copy_string ();
                                                             |     do {
                                                             | label_27:
    0x00003ff0 add r6, r6, 2                                 |         r6 += 2;
    0x00003ff4 b 0x3fb8                                      |         goto label_26;
                                                             | label_108:
    0x00003ff8 mov r1, r8                                    |         r1 = r8;
    0x00003ffc mov r0, r7                                    |         r0 = r7;
    0x00004000 bl 0x1404                                     |         r0 = strcmp (r0, r1);
    0x00004004 cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x00004008 bne 0x4098                                    |             goto label_109;
                                                             |         }
    0x0000400c add fp, fp, r6, lsl 2                         |         
    0x00004010 ldr fp, [fp, 4]                               |         fp = var_64h;
    0x00004014 ldr r1, [pc, -0x6c4]                          |         r1 = loc.imp.etag_mutate;
    0x00004018 mov r0, fp                                    |         r0 = fp;
    0x0000401c add r1, pc, r1                                |         r1 = pc + r1;
    0x00004020 bl 0x1404                                     |         r0 = strcmp (r0, r1);
    0x00004024 cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x00004028 moveq r3, 1                                   |             r3 = 1;
                                                             |         }
                                                             |         if (r0 != 0) {
    0x0000402c streq r3, [r4, 4]                             |             *((r4 + 4)) = r3;
                                                             |         }
    0x00004030 beq 0x3ff0                                    |         
                                                             |     } while (r0 == 0);
    0x00004034 ldr r1, [pc, -0x6e0]                          |     r1 = imp.etag_mutate;
    0x00004038 mov r0, fp                                    |     r0 = fp;
    0x0000403c add r1, pc, r1                                |     r1 = pc + r1;
    0x00004040 bl 0x1404                                     |     r0 = strcmp (r0, r1);
    0x00004044 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00004048 streq r0, [r4, 4]                             |         *((r4 + 4)) = r0;
                                                             |         goto label_110;
                                                             |     }
                                                             |     if (r0 == 0) {
                                                             | label_110:
    0x0000404c beq 0x3ff0                                    |         goto label_27;
                                                             |     }
    0x00004050 ldr r3, [sp, 0x20]                            |     r3 = s1;
    0x00004054 ldr r1, [pc, -0x6fc]                          |     r1 = *(0x00003960);
    0x00004058 str r3, [sp, 0xc]                             |     var_ch = r3;
    0x0000405c ldr r3, [pc, -0x700]                          |     r3 = *(0x3960);
    0x00004060 str fp, [sp, 0x10]                            |     var_10h = fp;
    0x00004064 add r3, pc, r3                                |     r3 = pc + r3;
    0x00004068 str r3, [sp, 8]                               |     var_8h = r3;
    0x0000406c ldr r3, [pc, -0x70c]                          |     r3 = *(0x00003968);
    0x00004070 str r7, [sp, 4]                               |     var_4h = r7;
    0x00004074 add r3, pc, r3                                |     r3 = pc + r3;
    0x00004078 str r3, [sp]                                  |     *(sp) = r3;
    0x0000407c ldr r3, [pc, -0x718]                          |     r3 = *(0x3968);
    0x00004080 ldr r2, [pc, -0x718]                          |     r2 = *(0x00003970);
    0x00004084 add r3, pc, r3                                |     r3 = pc + r3;
    0x00004088 add r1, pc, r1                                |     r1 = pc + r1;
    0x0000408c mov r0, sl                                    |     r0 = sl;
    0x00004090 bl 0x1500                                     |     loc_imp_log_error_write ();
    0x00004094 b 0x3ff0                                      |     goto label_27;
                                                             | label_109:
    0x00004098 ldr r3, [sp, 0x20]                            |     r3 = s1;
    0x0000409c ldr r1, [pc, -0x730]                          |     r1 = *(0x00003974);
    0x000040a0 str r3, [sp, 4]                               |     var_4h = r3;
    0x000040a4 ldr r3, [pc, -0x734]                          |     r3 = *(0x00003978);
    0x000040a8 str r7, [sp, 8]                               |     var_8h = r7;
    0x000040ac add r3, pc, r3                                |     r3 = pc + r3;
    0x000040b0 str r3, [sp]                                  |     *(sp) = r3;
    0x000040b4 ldr r2, [pc, -0x740]                          |     r2 = *(0x3978);
    0x000040b8 mov r3, sb                                    |     r3 = sb;
    0x000040bc add r1, pc, r1                                |     r1 = pc + r1;
    0x000040c0 mov r0, sl                                    |     r0 = sl;
    0x000040c4 bl 0x1500                                     |     loc_imp_log_error_write ();
    0x000040c8 b 0x3ff0                                      |     goto label_27;
                                                             | label_65:
    0x000040cc ldr r7, [r4, 0x1c]                            |     r7 = *((r4 + 0x1c));
    0x000040d0 cmp r7, 0                                     |     
                                                             |     if (r7 != 0) {
    0x000040d4 bne 0x324c                                    |         goto label_15;
                                                             |     }
    0x000040d8 ldr r8, [pc, -0x760]                          |     r8 = *(0x397c);
    0x000040dc ldr sb, [pc, -0x760]                          |     sb = *(0x3980);
    0x000040e0 ldr r6, [sl, 0x5c]                            |     r6 = *((sl + 0x5c));
    0x000040e4 add r8, pc, r8                                |     r8 = pc + r8;
    0x000040e8 add sb, pc, sb                                |     sb = pc + sb;
    0x000040ec str r7, [r6, 4]                               |     *((r6 + 4)) = r7;
                                                             |     do {
    0x000040f0 ldr r3, [r4, 0xc]                             |         r3 = *((r4 + 0xc));
    0x000040f4 ldr r2, [r3, 8]                               |         r2 = *((r3 + 8));
    0x000040f8 cmp r7, r2                                    |         
                                                             |         if (r7 > r2) {
    0x000040fc blo 0x4138                                    |             
    0x00004100 ldr r8, [pc, -0x780]                          |             r8 = *(0x3984);
    0x00004104 ldr sb, [pc, -0x780]                          |             sb = *(0x3988);
    0x00004108 mov r7, 0                                     |             r7 = 0;
    0x0000410c add r8, pc, r8                                |             r8 = pc + r8;
    0x00004110 add sb, pc, sb                                |             sb = pc + sb;
                                                             | label_28:
    0x00004114 ldr r3, [r4, 0x10]                            |             r3 = *((r4 + 0x10));
    0x00004118 ldr r2, [r3, 8]                               |             r2 = *((r3 + 8));
    0x0000411c cmp r7, r2                                    |             
                                                             |             if (r7 <= r2) {
    0x00004120 blo 0x41a0                                    |                 goto label_111;
                                                             |             }
    0x00004124 mov r0, r6                                    |             r0 = r6;
    0x00004128 bl 0x25dc                                     |             fcn_000025dc (r0);
    0x0000412c ldr r1, [r6]                                  |             r1 = *(r6);
    0x00004130 mov r2, r0                                    |             r2 = r0;
    0x00004134 b 0x2da4                                      |             goto label_12;
                                                             |         }
    0x00004138 ldr r2, [r3, 4]                               |         r2 = *((r3 + 4));
    0x0000413c ldr r3, [r3]                                  |         r3 = *(r3);
    0x00004140 ldr r2, [r2, r7, lsl 2]                       |         offset_8 = r7 << 2;
                                                             |         r2 = *((r2 + offset_8));
    0x00004144 mov r0, r6                                    |         r0 = r6;
    0x00004148 ldr fp, [r3, r2, lsl 2]                       |         offset_9 = r2 << 2;
                                                             |         fp = *((r3 + offset_9));
    0x0000414c add r7, r7, 1                                 |         r7++;
    0x00004150 ldr r1, [fp]                                  |         r1 = *(fp);
    0x00004154 bl 0x2868                                     |         fcn_00002868 (r0, r1);
    0x00004158 mov r1, r8                                    |         r1 = r8;
    0x0000415c mov r2, 1                                     |         r2 = 1;
    0x00004160 mov r0, r6                                    |         r0 = r6;
    0x00004164 bl 0x1380                                     |         loc_imp_buffer_append_string_len ();
    0x00004168 ldr r0, [fp, 0x10]                            |         r0 = var_70h;
    0x0000416c cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00004170 ldrne r1, [r0]                                |             r1 = *(r0);
                                                             |         }
                                                             |         if (r0 != 0) {
    0x00004174 moveq r1, r0                                  |             r1 = r0;
                                                             |         }
    0x00004178 bl 0x25dc                                     |         fcn_000025dc (r0);
    0x0000417c mov r3, 3                                     |         r3 = 3;
    0x00004180 mov r2, r0                                    |         r2 = r0;
    0x00004184 mov r0, r6                                    |         r0 = r6;
    0x00004188 bl 0x1458                                     |         loc_imp_buffer_append_string_encoded ();
    0x0000418c mov r2, 1                                     |         r2 = 1;
    0x00004190 mov r1, sb                                    |         r1 = sb;
    0x00004194 mov r0, r6                                    |         r0 = r6;
    0x00004198 bl 0x1380                                     |         loc_imp_buffer_append_string_len ();
    0x0000419c b 0x40f0                                      |         
                                                             |     } while (1);
                                                             | label_111:
    0x000041a0 ldr r2, [r3, 4]                               |     r2 = *((r3 + 4));
    0x000041a4 ldr r3, [r3]                                  |     r3 = *(r3);
    0x000041a8 ldr r2, [r2, r7, lsl 2]                       |     offset_10 = r7 << 2;
                                                             |     r2 = *((r2 + offset_10));
    0x000041ac mov r0, r6                                    |     r0 = r6;
    0x000041b0 ldr fp, [r3, r2, lsl 2]                       |     offset_11 = r2 << 2;
                                                             |     fp = *((r3 + offset_11));
    0x000041b4 add r7, r7, 1                                 |     r7++;
    0x000041b8 ldr r1, [fp]                                  |     r1 = *(fp);
    0x000041bc bl 0x2868                                     |     fcn_00002868 (r0, r1);
    0x000041c0 mov r1, r8                                    |     r1 = r8;
    0x000041c4 mov r2, 1                                     |     r2 = 1;
    0x000041c8 mov r0, r6                                    |     r0 = r6;
    0x000041cc bl 0x1380                                     |     loc_imp_buffer_append_string_len ();
    0x000041d0 ldr r0, [fp, 0x10]                            |     r0 = var_70h;
    0x000041d4 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000041d8 ldrne r1, [r0]                                |         r1 = *(r0);
                                                             |     }
                                                             |     if (r0 != 0) {
    0x000041dc moveq r1, r0                                  |         r1 = r0;
                                                             |     }
    0x000041e0 bl 0x25dc                                     |     fcn_000025dc (r0);
    0x000041e4 mov r3, 3                                     |     r3 = 3;
    0x000041e8 mov r2, r0                                    |     r2 = r0;
    0x000041ec mov r0, r6                                    |     r0 = r6;
    0x000041f0 bl 0x1458                                     |     loc_imp_buffer_append_string_encoded ();
    0x000041f4 mov r2, 1                                     |     r2 = 1;
    0x000041f8 mov r1, sb                                    |     r1 = sb;
    0x000041fc mov r0, r6                                    |     r0 = r6;
    0x00004200 bl 0x1380                                     |     loc_imp_buffer_append_string_len ();
    0x00004204 b 0x4114                                      |     goto label_28;
                                                             | label_71:
    0x00004208 ldrh r3, [r4, 0x32]                           |     r3 = *((r4 + 0x32));
    0x0000420c cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00004210 beq 0x324c                                    |         goto label_15;
                                                             |     }
    0x00004214 ldr r3, [pc, -0x88c]                          |     r3 = "able";
    0x00004218 ldr r8, [pc, -0x88c]                          |     r8 = "able";
    0x0000421c ldr sb, [pc, -0x88c]                          |     sb = *(0x3994);
    0x00004220 add r3, pc, r3                                |     r3 = pc + r3;
    0x00004224 mov r6, 0                                     |     r6 = 0;
    0x00004228 mov r7, 2                                     |     r7 = 2;
    0x0000422c add r8, pc, r8                                |     r8 = pc + r8;
    0x00004230 add sb, pc, sb                                |     sb = pc + sb;
    0x00004234 str r3, [sp, 0x3c]                            |     s2 = r3;
    0x00004238 b 0x4298                                      |     
                                                             |     while (r3 > r7) {
    0x0000423c add fp, sp, 0x60                              |         
    0x00004240 ldr r3, [fp, r7, lsl 2]                       |         offset_12 = r7 << 2;
                                                             |         r3 = *((fp + offset_12));
    0x00004244 mov r1, r8                                    |         r1 = r8;
    0x00004248 mov r0, r3                                    |         r0 = r3;
    0x0000424c str r3, [sp, 0x48]                            |         var_48h = r3;
    0x00004250 bl 0x1404                                     |         strcmp (r0, r1);
    0x00004254 ldr r3, [sp, 0x48]                            |         r3 = var_48h;
    0x00004258 cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x0000425c addeq fp, fp, r7, lsl 2                       |             
                                                             |         }
                                                             |         if (r0 != 0) {
    0x00004260 ldreq r6, [fp, 4]                             |             r6 = var_64h;
                                                             |         }
                                                             |         if (r0 != 0) {
    0x00004264 beq 0x4294                                    |             
    0x00004268 str r3, [sp, 8]                               |             var_8h = r3;
    0x0000426c ldr r3, [sp, 0x20]                            |             r3 = s1;
    0x00004270 mov r2, 0x2fc                                 |             r2 = 0x2fc;
    0x00004274 str r3, [sp, 4]                               |             var_4h = r3;
    0x00004278 ldr r3, [pc, -0x8e4]                          |             r3 = "ch_value_suffix";
    0x0000427c ldr r1, [sp, 0x3c]                            |             r1 = s2;
    0x00004280 add r3, pc, r3                                |             r3 = pc + r3;
    0x00004284 str r3, [sp]                                  |             *(sp) = r3;
    0x00004288 mov r0, sl                                    |             r0 = sl;
    0x0000428c mov r3, sb                                    |             r3 = sb;
    0x00004290 bl 0x1500                                     |             loc_imp_log_error_write ();
                                                             |         }
    0x00004294 add r7, r7, 2                                 |         r7 += 2;
    0x00004298 ldr r3, [sp, 0x30]                            |         r3 = var_30h;
    0x0000429c cmp r3, r7                                    |         
    0x000042a0 bhi 0x423c                                    |         
                                                             |     }
    0x000042a4 ldr r2, [r4, 0x1c]                            |     r2 = *((r4 + 0x1c));
    0x000042a8 clz r3, r6                                    |     r3 &= r6;
    0x000042ac lsr r3, r3, 5                                 |     r3 >>= 5;
    0x000042b0 cmp r2, 0                                     |     
                                                             |     if (r2 == 0) {
    0x000042b4 movne r3, 1                                   |         r3 = 1;
                                                             |     }
    0x000042b8 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x000042bc bne 0x324c                                    |         goto label_15;
                                                             |     }
    0x000042c0 ldr r2, [pc, -0x928]                          |     r2 = *(0x000039a0);
    0x000042c4 ldr r1, [r5, 0x4c]                            |     r1 = *((r5 + 0x4c));
    0x000042c8 add r2, pc, r2                                |     r2 = pc + r2;
    0x000042cc mov r0, sl                                    |     r0 = sl;
    0x000042d0 bl 0x1470                                     |     r0 = loc_imp_chunkqueue_append_mem_to_tempfile ();
    0x000042d4 subs r2, r0, 0                                |     r2 = r0 - 0;
                                                             |     if (r2 != r0) {
    0x000042d8 bne 0x324c                                    |         goto label_15;
                                                             |     }
    0x000042dc ldr r3, [r5, 0x4c]                            |     r3 = *((r5 + 0x4c));
    0x000042e0 ldr r0, [pc, -0x944]                          |     r0 = *(0x39a0);
    0x000042e4 ldr r7, [r3, 4]                               |     r7 = *((r3 + 4));
    0x000042e8 ldr r3, [pc, -0x948]                          |     r3 = *(0x39a4);
    0x000042ec add r0, pc, r0                                |     r0 = pc + r0;
    0x000042f0 add r3, pc, r3                                |     r3 = pc + r3;
    0x000042f4 str r3, [sp, 0xa4]                            |     var_a4h = r3;
    0x000042f8 mvn r3, 0                                     |     r3 = ~0;
    0x000042fc str r3, [sp, 8]                               |     var_8h = r3;
    0x00004300 str r3, [sp, 4]                               |     var_4h = r3;
    0x00004304 ldr r1, [r7, 0x28]                            |     r1 = *((r7 + 0x28));
    0x00004308 str r0, [sp, 0xa0]                            |     timer = r0;
    0x0000430c str r1, [sp]                                  |     *(sp) = r1;
    0x00004310 add r1, sp, 0xa0                              |     r1 += timer;
    0x00004314 str r6, [sp, 0xa8]                            |     var_a8h = r6;
    0x00004318 str r2, [sp, 0xac]                            |     var_ach = r2;
    0x0000431c bl 0x13ec                                     |     r0 = loc_imp_fdevent_fork_execve ();
    0x00004320 cmn r0, 1                                     |     
    0x00004324 mov r8, r0                                    |     r8 = r0;
                                                             |     if (r0 == 1) {
    0x00004328 addne sb, sp, 0x5c                            |         sb += var_5ch;
                                                             |     }
                                                             |     if (r0 != 1) {
    0x0000432c bne 0x4364                                    |         goto label_112;
                                                             |     }
    0x00004330 bl 0x1488                                     |     r0 = errno_location ();
    0x00004334 ldr r0, [r0]                                  |     r0 = *(r0);
    0x00004338 bl 0x120c                                     |     strerror (r0);
    0x0000433c ldr r3, [pc, -0x998]                          |     r3 = *(0x000039ac);
    0x00004340 ldr r1, [pc, -0x998]                          |     r1 = "append_file";
    0x00004344 add r3, pc, r3                                |     r3 = pc + r3;
    0x00004348 str r3, [sp]                                  |     *(sp) = r3;
    0x0000434c ldr r3, [pc, -0x9a0]                          |     r3 = "append_file";
    0x00004350 ldr r2, [pc, -0x9a0]                          |     r2 = *(0x000039b8);
    0x00004354 add r3, pc, r3                                |     r3 = pc + r3;
    0x00004358 add r1, pc, r1                                |     r1 = pc + r1;
    0x0000435c stmib sp, {r0, r6}                            |     __asm ("stmib sp, {r0, r6}");
    0x00004360 b 0x31ac                                      |     goto label_18;
                                                             |     do {
                                                             | label_112:
    0x00004364 mov r2, 0                                     |         r2 = 0;
    0x00004368 mov r1, sb                                    |         r1 = sb;
    0x0000436c mov r0, r8                                    |         r0 = r8;
    0x00004370 bl 0x11e8                                     |         r0 = waitpid ();
    0x00004374 cmn r0, 1                                     |         
                                                             |         if (r0 != 1) {
    0x00004378 bne 0x43bc                                    |             goto label_113;
                                                             |         }
    0x0000437c bl 0x1488                                     |         r0 = errno_location ();
    0x00004380 ldr r0, [r0]                                  |         r0 = *(r0);
    0x00004384 cmp r0, 4                                     |         
    0x00004388 beq 0x4364                                    |         
                                                             |     } while (r0 == 4);
    0x0000438c bl 0x120c                                     |     strerror (r0);
    0x00004390 ldr r3, [pc, -0x9dc]                          |     r3 = *(0x39b8);
    0x00004394 ldr r1, [pc, -0x9dc]                          |     r1 = "ffer_append_string";
    0x00004398 add r3, pc, r3                                |     r3 = pc + r3;
    0x0000439c str r3, [sp]                                  |     *(sp) = r3;
    0x000043a0 ldr r3, [pc, -0x9e4]                          |     r3 = "ffer_append_string";
    0x000043a4 ldr r2, [pc, -0x9e4]                          |     r2 = *(0x39c4);
    0x000043a8 add r3, pc, r3                                |     r3 = pc + r3;
    0x000043ac add r1, pc, r1                                |     r1 = pc + r1;
    0x000043b0 str r0, [sp, 4]                               |     var_4h = r0;
    0x000043b4 mov r0, sl                                    |     r0 = sl;
    0x000043b8 bl 0x1500                                     |     loc_imp_log_error_write ();
                                                             | label_113:
    0x000043bc ldr r3, [sp, 0x5c]                            |     r3 = var_5ch;
    0x000043c0 tst r3, 0x7f                                  |     
                                                             |     if ((r3 & 0x7f) != 0) {
    0x000043c4 beq 0x43f4                                    |         
    0x000043c8 ldr r3, [pc, -0xa04]                          |         r3 = *(0x39c8);
    0x000043cc ldr r1, [pc, -0xa04]                          |         r1 = "_urldecode_path";
    0x000043d0 add r3, pc, r3                                |         r3 = pc + r3;
    0x000043d4 str r3, [sp]                                  |         *(sp) = r3;
    0x000043d8 ldr r3, [pc, -0xa0c]                          |         r3 = "_urldecode_path";
    0x000043dc str r6, [sp, 4]                               |         var_4h = r6;
    0x000043e0 add r3, pc, r3                                |         r3 = pc + r3;
    0x000043e4 mov r2, 0x328                                 |         r2 = 0x328;
    0x000043e8 add r1, pc, r1                                |         r1 = pc + r1;
    0x000043ec mov r0, sl                                    |         r0 = sl;
    0x000043f0 bl 0x1500                                     |         loc_imp_log_error_write ();
                                                             |     }
    0x000043f4 add r6, sp, 0x108                             |     r6 += s;
    0x000043f8 mov r1, r6                                    |     r1 = r6;
    0x000043fc ldr r0, [r7, 0x28]                            |     r0 = *((r7 + 0x28));
    0x00004400 bl 0x12d8                                     |     r0 = fstat64 ();
    0x00004404 cmp r0, 0                                     |     
    0x00004408 ldrdeq r2, r3, [r6, 0x30]                     |     __asm ("ldrdeq r2, r3, [r6, 0x30]");
    0x0000440c strdeq r2, r3, [r7, 0x20]                     |     __asm ("strdeq r2, r3, [r7, 0x20]");
    0x00004410 b 0x324c                                      |     goto label_15;
                                                             |     do {
    0x00004414 add fp, sp, 0x60                              |         
    0x00004418 ldr r3, [fp, r6, lsl 2]                       |         offset_13 = r6 << 2;
                                                             |         r3 = *((fp + offset_13));
    0x0000441c mov r1, r8                                    |         r1 = r8;
    0x00004420 mov r0, r3                                    |         r0 = r3;
    0x00004424 str r3, [sp, 0x48]                            |         var_48h = r3;
    0x00004428 bl 0x1404                                     |         strcmp (r0, r1);
    0x0000442c ldr r3, [sp, 0x48]                            |         r3 = var_48h;
    0x00004430 cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x00004434 addeq fp, fp, r6, lsl 2                       |             
                                                             |         }
                                                             |         if (r0 != 0) {
    0x00004438 ldreq r7, [fp, 4]                             |             r7 = var_64h;
                                                             |         }
                                                             |         if (r0 != 0) {
    0x0000443c beq 0x446c                                    |             
    0x00004440 str r3, [sp, 8]                               |             var_8h = r3;
    0x00004444 ldr r3, [sp, 0x20]                            |             r3 = s1;
    0x00004448 mov r2, 0x338                                 |             r2 = 0x338;
    0x0000444c str r3, [sp, 4]                               |             var_4h = r3;
    0x00004450 ldr r3, [pc, -0xa80]                          |             r3 = "lid_UTF8";
    0x00004454 ldr r1, [sp, 0x3c]                            |             r1 = s2;
    0x00004458 add r3, pc, r3                                |             r3 = pc + r3;
    0x0000445c str r3, [sp]                                  |             *(sp) = r3;
    0x00004460 mov r0, sl                                    |             r0 = sl;
    0x00004464 mov r3, sb                                    |             r3 = sb;
    0x00004468 bl 0x1500                                     |             loc_imp_log_error_write ();
                                                             |         }
    0x0000446c add r6, r6, 2                                 |         r6 += 2;
                                                             | label_29:
    0x00004470 ldr r3, [sp, 0x30]                            |         r3 = var_30h;
    0x00004474 cmp r3, r6                                    |         
    0x00004478 bhi 0x4414                                    |         
                                                             |     } while (r3 > r6);
    0x0000447c cmp r7, 0                                     |     
                                                             |     if (r7 == 0) {
    0x00004480 bne 0x44e4                                    |         
    0x00004484 ldr r3, [pc, -0xab0]                          |         r3 = "ssi.so";
    0x00004488 ldr r1, [pc, -0xab0]                          |         r1 = "nsert_key_value";
    0x0000448c add r3, pc, r3                                |         r3 = pc + r3;
    0x00004490 str r3, [sp, 8]                               |         var_8h = r3;
    0x00004494 ldr r3, [sp, 0x20]                            |         r3 = s1;
    0x00004498 ldr r2, [pc, -0xabc]                          |         r2 = "nsert_key_value";
    0x0000449c str r3, [sp, 4]                               |         var_4h = r3;
    0x000044a0 ldr r3, [pc, -0xac0]                          |         r3 = *(0x39e4);
    0x000044a4 add r1, pc, r1                                |         r1 = pc + r1;
    0x000044a8 add r3, pc, r3                                |         r3 = pc + r3;
    0x000044ac str r3, [sp]                                  |         *(sp) = r3;
    0x000044b0 ldr r3, [pc, -0xacc]                          |         r3 = *(0x39e8);
    0x000044b4 add r3, pc, r3                                |         r3 = pc + r3;
    0x000044b8 b 0x31ac                                      |         goto label_18;
                                                             | label_67:
    0x000044bc ldr r3, [pc, -0xad4]                          |         r3 = "values_global";
    0x000044c0 ldr r8, [pc, -0xad4]                          |         r8 = "values_global";
    0x000044c4 ldr sb, [pc, -0xad4]                          |         sb = *(0x39f4);
    0x000044c8 add r3, pc, r3                                |         r3 = pc + r3;
    0x000044cc mov r7, 0                                     |         r7 = 0;
    0x000044d0 mov r6, 2                                     |         r6 = 2;
    0x000044d4 add r8, pc, r8                                |         r8 = pc + r8;
    0x000044d8 add sb, pc, sb                                |         sb = pc + sb;
    0x000044dc str r3, [sp, 0x3c]                            |         s2 = r3;
    0x000044e0 b 0x4470                                      |         goto label_29;
                                                             |     }
    0x000044e4 ldr r3, [r4, 0x1c]                            |     r3 = *((r4 + 0x1c));
    0x000044e8 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x000044ec bne 0x4538                                    |         
    0x000044f0 ldr r3, [r4, 0x18]                            |         r3 = *((r4 + 0x18));
    0x000044f4 cmp r3, 0                                     |         
                                                             |         if (r3 != 0) {
    0x000044f8 beq 0x4508                                    |             
    0x000044fc ldr r2, [r4, 0x14]                            |             r2 = *((r4 + 0x14));
    0x00004500 cmp r3, r2                                    |             
                                                             |             if (r3 <= r2) {
    0x00004504 ble 0x4538                                    |                 goto label_31;
                                                             |             }
                                                             |         }
    0x00004508 mov r3, r7                                    |         r3 = r7;
    0x0000450c mov r2, r4                                    |         r2 = r4;
    0x00004510 mov r1, r5                                    |         r1 = r5;
    0x00004514 mov r0, sl                                    |         r0 = sl;
    0x00004518 bl 0x135c                                     |         r0 = fcn_0000135c ();
    0x0000451c cmn r0, 1                                     |         
                                                             |         if (r0 < 1) {
    0x00004520 blt 0x4538                                    |             goto label_31;
                                                             |         }
    0x00004524 cmp r0, 0                                     |         
                                                             |         if (r0 <= 0) {
    0x00004528 ble 0x46bc                                    |             goto label_114;
                                                             |         }
    0x0000452c cmp r0, 1                                     |         
                                                             |         if (r0 != 1) {
    0x00004530 moveq r3, 0                                   |             r3 = 0;
                                                             |         }
                                                             |         if (r0 == 1) {
    0x00004534 streq r3, [r4, 0x1c]                          |             *((r4 + 0x1c)) = r3;
                                                             |             goto label_31;
                                                             |         }
                                                             |     }
                                                             | label_31:
    0x00004538 ldr r3, [r4, 0x14]                            |     r3 = *((r4 + 0x14));
    0x0000453c add r3, r3, 1                                 |     r3++;
    0x00004540 str r3, [r4, 0x14]                            |     *((r4 + 0x14)) = r3;
    0x00004544 b 0x324c                                      |     goto label_15;
                                                             | label_69:
    0x00004548 ldr r1, [r4, 0x1c]                            |     r1 = *((r4 + 0x1c));
    0x0000454c ldr r2, [r4, 0x14]                            |     r2 = *((r4 + 0x14));
    0x00004550 cmp r1, 0                                     |     
    0x00004554 sub r3, r2, 1                                 |     r3 = r2 - 1;
                                                             |     if (r1 != 0) {
    0x00004558 moveq r1, 1                                   |         r1 = 1;
                                                             |     }
    0x0000455c str r3, [r4, 0x14]                            |     *((r4 + 0x14)) = r3;
                                                             |     if (r1 != 0) {
    0x00004560 streq r1, [r4, 0x1c]                          |         *((r4 + 0x1c)) = r1;
                                                             |     }
                                                             |     if (r1 != 0) {
    0x00004564 streq r3, [r4, 0x18]                          |         *((r4 + 0x18)) = r3;
                                                             |     }
                                                             |     if (r1 != 0) {
    0x00004568 beq 0x4584                                    |         
    0x0000456c ldr r1, [r4, 0x18]                            |         r1 = *((r4 + 0x18));
    0x00004570 cmp r3, r1                                    |         
                                                             |         if (r3 != r1) {
    0x00004574 bne 0x4584                                    |             goto label_115;
                                                             |         }
    0x00004578 ldr r3, [r4, 0x20]                            |         r3 = *((r4 + 0x20));
    0x0000457c cmp r3, 0                                     |         
                                                             |         if (r3 == 0) {
    0x00004580 streq r3, [r4, 0x1c]                          |             *((r4 + 0x1c)) = r3;
                                                             |             goto label_115;
                                                             |         }
                                                             |     }
                                                             | label_115:
    0x00004584 str r2, [r4, 0x14]                            |     *((r4 + 0x14)) = r2;
    0x00004588 b 0x324c                                      |     goto label_15;
                                                             |     do {
    0x0000458c add fp, sp, 0x60                              |         
    0x00004590 ldr r3, [fp, r6, lsl 2]                       |         offset_14 = r6 << 2;
                                                             |         r3 = *((fp + offset_14));
    0x00004594 mov r1, r8                                    |         r1 = r8;
    0x00004598 mov r0, r3                                    |         r0 = r3;
    0x0000459c str r3, [sp, 0x48]                            |         var_48h = r3;
    0x000045a0 bl 0x1404                                     |         strcmp (r0, r1);
    0x000045a4 ldr r3, [sp, 0x48]                            |         r3 = var_48h;
    0x000045a8 cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x000045ac addeq fp, fp, r6, lsl 2                       |             
                                                             |         }
                                                             |         if (r0 != 0) {
    0x000045b0 ldreq r7, [fp, 4]                             |             r7 = var_64h;
                                                             |         }
                                                             |         if (r0 != 0) {
    0x000045b4 beq 0x45e4                                    |             
    0x000045b8 str r3, [sp, 8]                               |             var_8h = r3;
    0x000045bc ldr r3, [sp, 0x20]                            |             r3 = s1;
    0x000045c0 ldr r2, [pc, -0xbcc]                          |             r2 = *(0x000039fc);
    0x000045c4 str r3, [sp, 4]                               |             var_4h = r3;
    0x000045c8 ldr r3, [pc, -0xbd0]                          |             r3 = "ailed_assert";
    0x000045cc ldr r1, [sp, 0x3c]                            |             r1 = s2;
    0x000045d0 add r3, pc, r3                                |             r3 = pc + r3;
    0x000045d4 str r3, [sp]                                  |             *(sp) = r3;
    0x000045d8 mov r0, sl                                    |             r0 = sl;
    0x000045dc mov r3, sb                                    |             r3 = sb;
    0x000045e0 bl 0x1500                                     |             loc_imp_log_error_write ();
                                                             |         }
    0x000045e4 add r6, r6, 2                                 |         r6 += 2;
                                                             | label_30:
    0x000045e8 ldr r3, [sp, 0x30]                            |         r3 = var_30h;
    0x000045ec cmp r3, r6                                    |         
    0x000045f0 bhi 0x458c                                    |         
                                                             |     } while (r3 > r6);
    0x000045f4 cmp r7, 0                                     |     
                                                             |     if (r7 == 0) {
    0x000045f8 bne 0x465c                                    |         
    0x000045fc ldr r3, [pc, -0xc00]                          |         r3 = "end_mem_to_tempfile";
    0x00004600 ldr r1, [pc, -0xc00]                          |         r1 = *(0x00003a08);
    0x00004604 add r3, pc, r3                                |         r3 = pc + r3;
    0x00004608 str r3, [sp, 8]                               |         var_8h = r3;
    0x0000460c ldr r3, [sp, 0x20]                            |         r3 = s1;
    0x00004610 ldr r2, [pc, -0xc0c]                          |         r2 = *(0x3a08);
    0x00004614 str r3, [sp, 4]                               |         var_4h = r3;
    0x00004618 ldr r3, [pc, -0xc10]                          |         r3 = *(0x3a0c);
    0x0000461c add r1, pc, r1                                |         r1 = pc + r1;
    0x00004620 add r3, pc, r3                                |         r3 = pc + r3;
    0x00004624 str r3, [sp]                                  |         *(sp) = r3;
    0x00004628 ldr r3, [pc, -0xc1c]                          |         r3 = *(0x3a10);
    0x0000462c add r3, pc, r3                                |         r3 = pc + r3;
    0x00004630 b 0x31ac                                      |         goto label_18;
                                                             | label_68:
    0x00004634 ldr r3, [pc, -0xc24]                          |         r3 = "_cxa_finalize";
    0x00004638 ldr r8, [pc, -0xc24]                          |         r8 = "_cxa_finalize";
    0x0000463c ldr sb, [pc, -0xc24]                          |         sb = *(0x3a1c);
    0x00004640 add r3, pc, r3                                |         r3 = pc + r3;
    0x00004644 mov r7, 0                                     |         r7 = 0;
    0x00004648 mov r6, 2                                     |         r6 = 2;
    0x0000464c add r8, pc, r8                                |         r8 = pc + r8;
    0x00004650 add sb, pc, sb                                |         sb = pc + sb;
    0x00004654 str r3, [sp, 0x3c]                            |         s2 = r3;
    0x00004658 b 0x45e8                                      |         goto label_30;
                                                             |     }
    0x0000465c ldr r3, [r4, 0x14]                            |     r3 = *((r4 + 0x14));
    0x00004660 ldr r2, [r4, 0x18]                            |     r2 = *((r4 + 0x18));
    0x00004664 sub r3, r3, 1                                 |     r3--;
    0x00004668 cmp r3, r2                                    |     
    0x0000466c str r3, [r4, 0x14]                            |     *((r4 + 0x14)) = r3;
                                                             |     if (r3 != r2) {
    0x00004670 bne 0x4538                                    |         goto label_31;
                                                             |     }
    0x00004674 ldr r3, [r4, 0x1c]                            |     r3 = *((r4 + 0x1c));
    0x00004678 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x0000467c beq 0x46d0                                    |         goto label_116;
                                                             |     }
    0x00004680 ldr r6, [r4, 0x20]                            |     r6 = *((r4 + 0x20));
    0x00004684 cmp r6, 0                                     |     
                                                             |     if (r6 != 0) {
    0x00004688 bne 0x46d0                                    |         goto label_116;
                                                             |     }
    0x0000468c mov r3, r7                                    |     r3 = r7;
    0x00004690 mov r2, r4                                    |     r2 = r4;
    0x00004694 mov r1, r5                                    |     r1 = r5;
    0x00004698 mov r0, sl                                    |     r0 = sl;
    0x0000469c bl 0x135c                                     |     r0 = fcn_0000135c ();
    0x000046a0 cmn r0, 1                                     |     
                                                             |     if (r0 < 1) {
    0x000046a4 blt 0x4538                                    |         goto label_31;
                                                             |     }
    0x000046a8 cmp r0, 0                                     |     
                                                             |     if (r0 > 0) {
    0x000046ac ble 0x46bc                                    |         
    0x000046b0 cmp r0, 1                                     |         
                                                             |         if (r0 != 1) {
    0x000046b4 streq r6, [r4, 0x1c]                          |             *((r4 + 0x1c)) = r6;
                                                             |         }
    0x000046b8 b 0x4538                                      |         goto label_31;
                                                             |     }
                                                             | label_114:
    0x000046bc mov r3, 1                                     |     r3 = 1;
    0x000046c0 str r3, [r4, 0x1c]                            |     *((r4 + 0x1c)) = r3;
    0x000046c4 ldr r3, [r4, 0x14]                            |     r3 = *((r4 + 0x14));
    0x000046c8 str r3, [r4, 0x18]                            |     *((r4 + 0x18)) = r3;
    0x000046cc b 0x4538                                      |     goto label_31;
                                                             | label_116:
    0x000046d0 mov r3, 1                                     |     r3 = 1;
    0x000046d4 str r3, [r4, 0x1c]                            |     *((r4 + 0x1c)) = r3;
    0x000046d8 str r3, [r4, 0x20]                            |     *((r4 + 0x20)) = r3;
    0x000046dc b 0x4538                                      |     goto label_31;
                                                             | label_70:
    0x000046e0 ldr r3, [r4, 0x14]                            |     r3 = *((r4 + 0x14));
    0x000046e4 ldr r2, [r4, 0x18]                            |     r2 = *((r4 + 0x18));
    0x000046e8 sub r3, r3, 1                                 |     r3--;
    0x000046ec cmp r3, r2                                    |     
    0x000046f0 str r3, [r4, 0x14]                            |     *((r4 + 0x14)) = r3;
                                                             |     if (r3 != r2) {
    0x000046f4 moveq r3, 0                                   |         r3 = 0;
                                                             |     }
                                                             |     if (r3 != r2) {
    0x000046f8 streq r3, [r4, 0x1c]                          |         *((r4 + 0x1c)) = r3;
                                                             |     }
                                                             |     if (r3 != r2) {
    0x000046fc streq r3, [r4, 0x20]                          |         *((r4 + 0x20)) = r3;
                                                             |     }
    0x00004700 b 0x324c                                      |     goto label_15;
                                                             | label_50:
    0x00004704 ldrb r3, [r3, 0xfff]                          |     r3 = *((r3 + 0xfff));
    0x00004708 cmp r3, 0x2d                                  |     
                                                             |     if (r3 != 0x2d) {
    0x0000470c bne 0x326c                                    |         goto label_32;
                                                             |     }
    0x00004710 ldr r1, [pc, -0xcf4]                          |     r1 = *(0x3a20);
    0x00004714 mov r2, 1                                     |     r2 = 1;
    0x00004718 add r1, pc, r1                                |     r1 = pc + r1;
                                                             | label_33:
    0x0000471c ldr r0, [r5, 0x4c]                            |     r0 = *((r5 + 0x4c));
    0x00004720 bl 0x13f8                                     |     loc_imp_chunkqueue_append_mem ();
    0x00004724 b 0x326c                                      |     goto label_32;
                                                             | label_49:
    0x00004728 mov r2, r8                                    |     r2 = r8;
    0x0000472c mov r1, r7                                    |     r1 = r7;
    0x00004730 ldr r0, [sp, 0x28]                            |     r0 = ptr;
    0x00004734 bl 0x1224                                     |     memmove (r0, r1, r2);
    0x00004738 str r8, [sp, 0x1c]                            |     buf = r8;
                                                             | label_34:
    0x0000473c ldr r3, [sp, 0x1c]                            |     r3 = buf;
    0x00004740 cmp r3, 0x2000                                |     
                                                             |     if (r3 != 0x2000) {
    0x00004744 bne 0x2c14                                    |         goto label_11;
                                                             |     }
    0x00004748 ldr r7, [r4, 0x1c]                            |     r7 = *((r4 + 0x1c));
    0x0000474c cmp r7, 0                                     |     
                                                             |     if (r7 != 0) {
    0x00004750 ldreq r3, [sp, 0x28]                          |         r3 = ptr;
                                                             |     }
    0x00004754 rsbeq r2, r6, 0x2000                          |     __asm ("rsbeq r2, r6, 0x2000");
                                                             |     if (r7 == 0) {
    0x00004758 addeq r1, r3, r6                              |         r1 = r3 + r6;
                                                             |         goto label_117;
                                                             |     }
                                                             |     if (r7 != 0) {
                                                             | label_117:
    0x0000475c bne 0x326c                                    |         goto label_32;
                                                             |     }
    0x00004760 b 0x471c                                      |     goto label_33;
                                                             | label_39:
    0x00004764 ldr r3, [sp, 0x24]                            |     r3 = var_24h;
    0x00004768 ldr r2, [sp, 0x1c]                            |     r2 = buf;
    0x0000476c add r3, r3, 1                                 |     r3++;
    0x00004770 cmp r2, r3                                    |     
                                                             |     if (r2 != r3) {
    0x00004774 beq 0x479c                                    |         
    0x00004778 ldr r3, [sp, 0x24]                            |         r3 = var_24h;
    0x0000477c ldr r1, [pc, -0xd5c]                          |         r1 = *(0x3a24);
    0x00004780 sub r2, r2, 1                                 |         r2--;
    0x00004784 sub r2, r2, r3                                |         r2 -= r3;
    0x00004788 add r1, pc, r1                                |         r1 = pc + r1;
    0x0000478c add r0, r7, 1                                 |         r0 = r7 + 1;
    0x00004790 bl 0x138c                                     |         r0 = memcmp (r0, r1, r2);
    0x00004794 cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x00004798 bne 0x47f4                                    |             goto label_40;
                                                             |         }
                                                             |     }
    0x0000479c ldr r3, [sp, 0x24]                            |     r3 = var_24h;
    0x000047a0 cmp r3, r6                                    |     
                                                             |     if (r3 != r6) {
    0x000047a4 beq 0x47cc                                    |         
    0x000047a8 ldr r3, [r4, 0x1c]                            |         r3 = *((r4 + 0x1c));
    0x000047ac cmp r3, 0                                     |         
                                                             |         if (r3 != 0) {
    0x000047b0 bne 0x47cc                                    |             goto label_118;
                                                             |         }
    0x000047b4 ldr r3, [sp, 0x24]                            |         r3 = var_24h;
    0x000047b8 ldr r0, [r5, 0x4c]                            |         r0 = *((r5 + 0x4c));
    0x000047bc sub r2, r3, r6                                |         r2 = r3 - r6;
    0x000047c0 ldr r3, [sp, 0x28]                            |         r3 = ptr;
    0x000047c4 add r1, r3, r6                                |         r1 = r3 + r6;
    0x000047c8 bl 0x13f8                                     |         loc_imp_chunkqueue_append_mem ();
                                                             |     }
                                                             | label_118:
    0x000047cc ldr r3, [sp, 0x1c]                            |     r3 = buf;
    0x000047d0 ldr r2, [sp, 0x24]                            |     r2 = var_24h;
    0x000047d4 mov r1, r7                                    |     r1 = r7;
    0x000047d8 sub r3, r3, r2                                |     r3 -= r2;
    0x000047dc mov r2, r3                                    |     r2 = r3;
    0x000047e0 ldr r0, [sp, 0x28]                            |     r0 = ptr;
    0x000047e4 str r3, [sp, 0x1c]                            |     buf = r3;
    0x000047e8 mov r6, 0                                     |     r6 = 0;
    0x000047ec bl 0x1278                                     |     memcpy (r0, r1, r2);
    0x000047f0 b 0x473c                                      |     goto label_34;
                                                             | label_40:
    0x000047f4 ldr r3, [sp, 0x24]                            |     r3 = var_24h;
    0x000047f8 add r0, r3, 1                                 |     r0 = r3 + 1;
    0x000047fc b 0x2a6c                                      |     goto label_35;
                                                             | label_38:
    0x00004800 ldr r3, [pc, -0xddc]                          |     r3 = *(0x00003a2c);
    0x00004804 str r6, [sp, 0x1c]                            |     buf = r6;
    0x00004808 add r3, pc, r3                                |     r3 = pc + r3;
    0x0000480c str r3, [sp, 0x44]                            |     var_44h = r3;
    0x00004810 add r3, r3, 0x70                              |     r3 += 0x70;
    0x00004814 str r3, [sp, 0x54]                            |     var_54h = r3;
    0x00004818 b 0x2c14                                      |     goto label_11;
                                                             | }

[*] Function popen used 1 times mod_ssi.so