[*] Binary protection state of ld-uClibc-1.0.31.so

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


[*] Function strcpy tear down of ld-uClibc-1.0.31.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/lib/ld-uClibc-1.0.31.so @ 0x36c4 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym._dl_load_elf_shared_library ()               | void dl_load_elf_shared_library (int32_t arg1, int32_t arg2) {
                                                             |     int32_t var_140h;
                                                             |     int32_t var_13ch;
                                                             |     int32_t var_138h;
                                                             |     int32_t var_134h;
                                                             |     int32_t var_130h;
                                                             |     int32_t var_12ch;
                                                             |     int32_t var_128h;
                                                             |     int32_t var_124h;
                                                             |     int32_t var_120h;
                                                             |     int32_t var_11ch;
                                                             |     int32_t var_118h;
                                                             |     int32_t var_114h;
                                                             |     int32_t var_110h;
                                                             |     int32_t var_10ch;
                                                             |     int32_t var_108h;
                                                             |     int32_t var_104h;
                                                             |     int32_t var_100h;
                                                             |     int32_t var_fch;
                                                             |     int32_t var_f8h;
                                                             |     int32_t var_f0h;
                                                             |     int32_t var_ech;
                                                             |     int32_t var_e8h;
                                                             |     int32_t var_b0h;
                                                             |     int32_t var_a4h;
                                                             |     int32_t var_58h;
                                                             |     int32_t var_0h;
                                                             |     int32_t var_20h_2;
                                                             |     int32_t var_20h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
    0x000036c4 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}     |     
    0x000036c8 ldr r8, [pc, 0xaec]                           |     r8 = *(0x41b8);
    0x000036cc add fp, sp, 0x20                              |     
    0x000036d0 mov lr, r1                                    |     lr = r1;
    0x000036d4 sub sp, sp, 0x12c                             |     
    0x000036d8 mov r1, 0                                     |     r1 = 0;
    0x000036dc mov r3, r0                                    |     r3 = r0;
    0x000036e0 mov ip, r2                                    |     
    0x000036e4 add r8, pc, r8                                |     r8 = pc + r8;
    0x000036e8 mov r0, r2                                    |     r0 = r2;
    0x000036ec mov r2, r1                                    |     r2 = r1;
    0x000036f0 mov r7, 5                                     |     r7 = 5;
    0x000036f4 svc 0                                         |     __asm ("svc 0");
    0x000036f8 cmn r0, 0x1000                                |     
    0x000036fc mov r2, r0                                    |     r2 = r0;
                                                             |     if (r0 < 0x1000) {
    0x00003700 bls 0x3734                                    |         goto label_16;
                                                             |     }
    0x00003704 ldr r3, [pc, 0xab4]                           |     r3 = *(0x41bc);
    0x00003708 rsb r2, r0, 0                                 |     r2 = r0 - ;
    0x0000370c ldr r3, [r8, r3]                              |     r3 = *((r8 + r3));
    0x00003710 str r2, [r3]                                  |     *(r3) = r2;
                                                             |     do {
    0x00003714 ldr r3, [pc, 0xaa8]                           |         r3 = *(0x41c0);
    0x00003718 mov r2, 1                                     |         r2 = 1;
    0x0000371c ldr r3, [r8, r3]                              |         r3 = *((r8 + r3));
    0x00003720 str r2, [r3]                                  |         *(r3) = r2;
                                                             | label_0:
    0x00003724 mov r6, 0                                     |         r6 = 0;
                                                             | label_1:
    0x00003728 mov r0, r6                                    |         r0 = r6;
    0x0000372c sub sp, fp, 0x20                              |         
    0x00003730 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}      |         
                                                             | label_16:
    0x00003734 cmp r0, 0                                     |         
    0x00003738 blt 0x3714                                    |         
                                                             |     } while (r0 < 0);
    0x0000373c sub r1, fp, 0xf0                              |     r1 -= var_f0h;
    0x00003740 mov r7, 0x6c                                  |     r7 = 0x6c;
    0x00003744 svc 0                                         |     __asm ("svc 0");
    0x00003748 cmn r0, 0x1000                                |     
                                                             |     if (r0 < 0x1000) {
    0x0000374c bls 0x3794                                    |         goto label_17;
                                                             |     }
    0x00003750 ldr r3, [pc, 0xa68]                           |     r3 = *(0x41bc);
    0x00003754 rsb r0, r0, 0                                 |     r0 -= ;
    0x00003758 ldr r3, [r8, r3]                              |     r3 = *((r8 + r3));
    0x0000375c str r0, [r3]                                  |     *(r3) = r0;
                                                             |     do {
    0x00003760 ldr r3, [pc, 0xa5c]                           |         r3 = *(0x41c0);
    0x00003764 mov r1, 1                                     |         r1 = 1;
    0x00003768 ldr r3, [r8, r3]                              |         r3 = *((r8 + r3));
    0x0000376c mov r0, r2                                    |         r0 = r2;
    0x00003770 str r1, [r3]                                  |         *(r3) = r1;
    0x00003774 mov r7, 6                                     |         r7 = 6;
    0x00003778 svc 0                                         |         __asm ("svc 0");
    0x0000377c cmn r0, 0x1000                                |         
                                                             |         if (r0 <= 0x1000) {
    0x00003780 ldrhi r3, [pc, 0xa38]                         |             r3 = *((pc + 0xa38));
                                                             |         }
    0x00003784 rsbhi r0, r0, 0                               |         __asm ("rsbhi r0, r0, 0");
                                                             |         if (r0 <= 0x1000) {
    0x00003788 ldrhi r3, [r8, r3]                            |             r3 = *((r8 + r3));
                                                             |         }
                                                             |         if (r0 <= 0x1000) {
    0x0000378c strhi r0, [r3]                                |             *(r3) = r0;
                                                             |         }
    0x00003790 b 0x3724                                      |         goto label_0;
                                                             | label_17:
    0x00003794 cmp r0, 0                                     |         
    0x00003798 blt 0x3760                                    |         
                                                             |     } while (r0 < 0);
    0x0000379c tst r3, 0x4000000                             |     
                                                             |     if ((r3 & 0x4000000) == 0) {
    0x000037a0 beq 0x37c0                                    |         goto label_18;
                                                             |     }
    0x000037a4 ldrh r6, [fp, -0xe8]                          |     r6 = var_e8h;
    0x000037a8 ands r6, r6, 0x800                            |     r6 &= 0x800;
    0x000037ac bne 0x37c0                                    |     
                                                             |     while ((r3 & 4) != 0) {
    0x000037b0 mov r0, r2                                    |         r0 = r2;
                                                             | label_7:
    0x000037b4 mov r7, 6                                     |         r7 = 6;
    0x000037b8 svc 0                                         |         __asm ("svc 0");
    0x000037bc b 0x398c                                      |         goto label_19;
                                                             | label_18:
    0x000037c0 ldr r1, [pc, 0xa00]                           |         r1 = *(0x41c4);
    0x000037c4 ldr r0, [fp, -0xf0]                           |         r0 = var_f0h;
    0x000037c8 ldr r1, [r8, r1]                              |         r1 = *((r8 + r1));
    0x000037cc ldr r7, [fp, -0xec]                           |         r7 = var_ech;
    0x000037d0 ldr r6, [r1]                                  |         r6 = *(0x41c4);
    0x000037d4 mov r1, 0                                     |         r1 = 0;
                                                             | label_2:
    0x000037d8 cmp r6, 0                                     |         
                                                             |         if (r6 != 0) {
    0x000037dc bne 0x3894                                    |             goto label_20;
                                                             |         }
    0x000037e0 tst r3, 4                                     |         
    0x000037e4 bne 0x37b0                                    |         
                                                             |     }
    0x000037e8 str r3, [fp, -0x140]                          |     var_140h = r3;
    0x000037ec ldr r3, [pc, 0x9d8]                           |     r3 = *(0x41c8);
    0x000037f0 str r2, [fp, -0xfc]                           |     var_fch = r2;
    0x000037f4 str ip, [fp, -0x10c]                          |     var_10ch = ip;
    0x000037f8 str lr, [fp, -0x110]                          |     var_110h = lr;
    0x000037fc ldr r3, [r8, r3]                              |     r3 = *((r8 + r3));
    0x00003800 mov r0, r6                                    |     r0 = r6;
    0x00003804 str r3, [fp, -0xf8]                           |     var_f8h = r3;
    0x00003808 ldr r1, [r3]                                  |     r1 = *(0x41c8);
    0x0000380c mov r2, 3                                     |     r2 = 3;
    0x00003810 mov r3, 0x22                                  |     r3 = 0x22;
    0x00003814 mvn r4, 0                                     |     r4 = ~0;
    0x00003818 mov r5, r6                                    |     r5 = r6;
    0x0000381c mov r7, 0xc0                                  |     r7 = 0xc0;
    0x00003820 svc 0                                         |     __asm ("svc 0");
    0x00003824 cmn r0, 0x1000                                |     
    0x00003828 mov sl, r0                                    |     sl = r0;
                                                             |     if (r0 < 0x1000) {
    0x0000382c bls 0x38ec                                    |         goto label_21;
                                                             |     }
    0x00003830 ldr r3, [pc, 0x988]                           |     r3 = *(0x41bc);
    0x00003834 ldr r1, [pc, 0x994]                           |     r1 = *(0x41cc);
    0x00003838 ldr r4, [r8, r3]                              |     r4 = *((r8 + r3));
    0x0000383c rsb r3, r0, 0                                 |     r3 = r0 - ;
    0x00003840 str r3, [r4]                                  |     *(r4) = r3;
    0x00003844 ldr r3, [pc, 0x988]                           |     r3 = *(0x41d0);
    0x00003848 add r1, pc, r1                                |     r1 = pc + r1;
    0x0000384c ldr r2, [r8, r3]                              |     r2 = *((r8 + r3));
    0x00003850 ldr r3, [fp, -0x10c]                          |     r3 = var_10ch;
    0x00003854 mov r0, 2                                     |     r0 = 2;
    0x00003858 str r3, [sp]                                  |     *(sp) = r3;
    0x0000385c mov r3, 0x240                                 |     r3 = 0x240;
    0x00003860 ldr r2, [r2]                                  |     r2 = *(r2);
    0x00003864 bl 0x1bf4                                     |     dl_dprintf ();
    0x00003868 ldr r3, [pc, 0x954]                           |     r3 = *(0x41c0);
    0x0000386c mov r7, 6                                     |     r7 = 6;
    0x00003870 ldr r3, [r8, r3]                              |     r3 = *((r8 + r3));
    0x00003874 ldr r0, [fp, -0xfc]                           |     r0 = var_fch;
    0x00003878 str r7, [r3]                                  |     *(r3) = r7;
    0x0000387c svc 0                                         |     __asm ("svc 0");
    0x00003880 cmn r0, 0x1000                                |     
                                                             |     if (r0 < 0x1000) {
    0x00003884 bls 0x3724                                    |         goto label_0;
                                                             |     }
    0x00003888 rsb r0, r0, 0                                 |     r0 -= ;
    0x0000388c str r0, [r4]                                  |     *(r4) = r0;
    0x00003890 b 0x3728                                      |     goto label_1;
                                                             | label_20:
    0x00003894 add r4, r6, 0x110                             |     r4 = r6 + 0x110;
    0x00003898 ldrd r4, r5, [r4, -8]                         |     __asm ("ldrd r4, r5, [r4, -8]");
    0x0000389c cmp r5, r1                                    |     
    0x000038a0 cmpeq r4, r0                                  |     __asm ("cmpeq r4, r0");
                                                             |     if (r5 != r1) {
    0x000038a4 bne 0x38e4                                    |         goto label_22;
                                                             |     }
    0x000038a8 ldr r4, [r6, 0x110]                           |     r4 = *((r6 + 0x110));
    0x000038ac cmp r4, r7                                    |     
                                                             |     if (r4 != r7) {
    0x000038b0 bne 0x38e4                                    |         goto label_22;
                                                             |     }
    0x000038b4 ldrh r3, [r6, 0x4c]                           |     r3 = *((r6 + 0x4c));
    0x000038b8 mov r0, r2                                    |     r0 = r2;
    0x000038bc add r3, r3, 1                                 |     r3++;
    0x000038c0 strh r3, [r6, 0x4c]                           |     *((r6 + 0x4c)) = r3;
    0x000038c4 ldrh r3, [r6, 0x4e]                           |     r3 = *((r6 + 0x4e));
    0x000038c8 mov r7, 6                                     |     r7 = 6;
    0x000038cc orr r3, r3, 0x10                              |     r3 |= 0x10;
    0x000038d0 strh r3, [r6, 0x4e]                           |     *((r6 + 0x4e)) = r3;
    0x000038d4 svc 0                                         |     __asm ("svc 0");
                                                             | label_13:
    0x000038d8 cmn r0, 0x1000                                |     
                                                             |     if (r0 < 0x1000) {
    0x000038dc bls 0x3728                                    |         goto label_1;
                                                             |     }
    0x000038e0 b 0x3994                                      |     goto label_23;
                                                             | label_22:
    0x000038e4 ldr r6, [r6, 0xc]                             |     r6 = *((r6 + 0xc));
    0x000038e8 b 0x37d8                                      |     goto label_2;
                                                             | label_21:
    0x000038ec ldr r3, [fp, -0xf8]                           |     r3 = var_f8h;
    0x000038f0 ldr r0, [fp, -0xfc]                           |     r0 = var_fch;
    0x000038f4 mov r1, sl                                    |     r1 = sl;
    0x000038f8 ldr r2, [r3]                                  |     r2 = *(r3);
    0x000038fc mov r7, 3                                     |     r7 = 3;
    0x00003900 svc 0                                         |     __asm ("svc 0");
    0x00003904 cmn r0, 0x1000                                |     
                                                             |     if (r0 <= 0x1000) {
    0x00003908 ldrhi r3, [pc, 0x8b0]                         |         r3 = *((pc + 0x8b0));
                                                             |     }
    0x0000390c rsbhi r0, r0, 0                               |     __asm ("rsbhi r0, r0, 0");
                                                             |     if (r0 <= 0x1000) {
    0x00003910 ldrhi r3, [r8, r3]                            |         r3 = *((r8 + r3));
                                                             |     }
                                                             |     if (r0 <= 0x1000) {
    0x00003914 strhi r0, [r3]                                |         *(r3) = r0;
                                                             |     }
    0x00003918 ldr r2, [sl]                                  |     r2 = *(sl);
    0x0000391c ldr r3, [pc, 0x8b4]                           |     r3 = *(0x41d4);
    0x00003920 cmp r2, r3                                    |     
                                                             |     if (r2 == r3) {
    0x00003924 beq 0x39a8                                    |         goto label_24;
                                                             |     }
    0x00003928 ldr r3, [pc, 0x8a4]                           |     r3 = *(0x41d0);
    0x0000392c ldr r1, [pc, 0x8a8]                           |     r1 = *(0x41d8);
    0x00003930 ldr r2, [r8, r3]                              |     r2 = *((r8 + r3));
    0x00003934 add r1, pc, r1                                |     r1 = pc + r1;
    0x00003938 ldr r3, [fp, -0x10c]                          |     r3 = var_10ch;
    0x0000393c ldr r2, [r2]                                  |     r2 = *(r2);
    0x00003940 mov r0, 2                                     |     r0 = 2;
    0x00003944 bl 0x1bf4                                     |     dl_dprintf ();
    0x00003948 ldr r3, [pc, 0x874]                           |     r3 = *(0x41c0);
    0x0000394c mov r2, 3                                     |     r2 = 3;
    0x00003950 ldr r3, [r8, r3]                              |     r3 = *((r8 + r3));
    0x00003954 str r2, [r3]                                  |     *(r3) = r2;
                                                             | label_3:
    0x00003958 ldr r0, [fp, -0xfc]                           |     r0 = var_fch;
    0x0000395c mov r7, 6                                     |     r7 = 6;
                                                             | label_4:
    0x00003960 svc 0                                         |     __asm ("svc 0");
    0x00003964 cmn r0, 0x1000                                |     
                                                             |     if (r0 <= 0x1000) {
    0x00003968 ldrhi r3, [pc, 0x850]                         |         r3 = *((pc + 0x850));
                                                             |     }
    0x0000396c rsbhi r0, r0, 0                               |     __asm ("rsbhi r0, r0, 0");
                                                             |     if (r0 <= 0x1000) {
    0x00003970 ldrhi r3, [r8, r3]                            |         r3 = *((r8 + r3));
                                                             |     }
                                                             |     if (r0 <= 0x1000) {
    0x00003974 strhi r0, [r3]                                |         *(r3) = r0;
                                                             |     }
    0x00003978 ldr r3, [fp, -0xf8]                           |     r3 = var_f8h;
    0x0000397c mov r0, sl                                    |     r0 = sl;
    0x00003980 ldr r1, [r3]                                  |     r1 = *(r3);
    0x00003984 mov r7, 0x5b                                  |     r7 = 0x5b;
    0x00003988 svc 0                                         |     __asm ("svc 0");
                                                             | label_19:
    0x0000398c cmn r0, 0x1000                                |     
                                                             |     if (r0 < 0x1000) {
    0x00003990 bls 0x3724                                    |         goto label_0;
                                                             |     }
                                                             | label_23:
    0x00003994 ldr r3, [pc, 0x824]                           |     r3 = *(0x41bc);
    0x00003998 rsb r0, r0, 0                                 |     r0 -= ;
    0x0000399c ldr r3, [r8, r3]                              |     r3 = *((r8 + r3));
    0x000039a0 str r0, [r3]                                  |     *(r3) = r0;
    0x000039a4 b 0x3728                                      |     goto label_1;
                                                             | label_24:
    0x000039a8 ldr r2, [sl, 0x10]                            |     r2 = *((sl + 0x10));
    0x000039ac ldr r3, [pc, 0x82c]                           |     r3 = *(0x41dc);
    0x000039b0 cmp r2, r3                                    |     
                                                             |     if (r2 != r3) {
    0x000039b4 beq 0x39f8                                    |         
    0x000039b8 ldrh r3, [sl, 0x10]                           |         r3 = *((sl + 0x10));
    0x000039bc ldr r1, [pc, 0x820]                           |         r1 = *(0x41e0);
    0x000039c0 cmp r3, 3                                     |         
    0x000039c4 ldr r3, [pc, 0x7f8]                           |         r3 = *(0x41c0);
                                                             |         if (r3 != 3) {
    0x000039c8 moveq r2, 4                                   |             r2 = 4;
                                                             |         }
    0x000039cc ldr r3, [r8, r3]                              |         r3 = *((r8 + r3));
                                                             |         if (r3 == 3) {
    0x000039d0 movne r2, 5                                   |             r2 = 5;
                                                             |         }
    0x000039d4 str r2, [r3]                                  |         *(r3) = r2;
    0x000039d8 ldr r3, [pc, 0x7f4]                           |         r3 = *(0x41d0);
    0x000039dc add r1, pc, r1                                |         r1 = pc + r1;
    0x000039e0 ldr r2, [r8, r3]                              |         r2 = *((r8 + r3));
    0x000039e4 mov r0, 2                                     |         r0 = 2;
    0x000039e8 ldr r3, [fp, -0x10c]                          |         r3 = var_10ch;
    0x000039ec ldr r2, [r2]                                  |         r2 = *(r2);
    0x000039f0 bl 0x1bf4                                     |         dl_dprintf ();
    0x000039f4 b 0x3958                                      |         goto label_3;
                                                             |     }
    0x000039f8 mov r3, 1                                     |     r3 = 1;
    0x000039fc ldr r4, [sl, 0x1c]                            |     r4 = *((sl + 0x1c));
    0x00003a00 str r3, [fp, -0x100]                          |     var_100h = r3;
    0x00003a04 ldr r3, [pc, 0x7dc]                           |     r3 = *(0x41e4);
    0x00003a08 mov r7, 0                                     |     r7 = 0;
    0x00003a0c add r3, pc, r3                                |     r3 = pc + r3;
    0x00003a10 add r4, sl, r4                                |     r4 = sl + r4;
    0x00003a14 mov sb, r7                                    |     sb = r7;
    0x00003a18 mvn r5, 0                                     |     r5 = ~0;
    0x00003a1c str r7, [fp, -0x108]                          |     var_108h = r7;
    0x00003a20 str r7, [fp, -0x104]                          |     var_104h = r7;
    0x00003a24 str r3, [fp, -0x114]                          |     var_114h = r3;
                                                             |     do {
    0x00003a28 ldrh r3, [sl, 0x2c]                           |         r3 = *((sl + 0x2c));
    0x00003a2c cmp r3, r7                                    |         
                                                             |         if (r3 <= r7) {
    0x00003a30 bgt 0x3ae0                                    |             
    0x00003a34 ldr r3, [fp, -0xf8]                           |             r3 = var_f8h;
    0x00003a38 ldr r1, [fp, -0x100]                          |             r1 = var_100h;
    0x00003a3c ldr r3, [r3]                                  |             r3 = *(r3);
    0x00003a40 cmp r1, 0                                     |             
    0x00003a44 rsb r2, r3, 0                                 |             r2 = r3 - ;
    0x00003a48 sub r3, r3, 1                                 |             r3--;
    0x00003a4c add sb, r3, sb                                |             sb = r3 + sb;
    0x00003a50 and lr, r2, r5                                |             lr = r2 & r5;
    0x00003a54 and sb, sb, r2                                |             sb &= r2;
    0x00003a58 sub r3, sb, lr                                |             r3 = sb - lr;
    0x00003a5c mov r2, 0                                     |             r2 = 0;
    0x00003a60 str r3, [fp, -0x128]                          |             var_128h = r3;
    0x00003a64 mov r1, r3                                    |             r1 = r3;
                                                             |             if (r1 != 0) {
    0x00003a68 moveq r0, lr                                  |                 r0 = lr;
                                                             |             }
                                                             |             if (r1 == 0) {
    0x00003a6c movne r0, 0                                   |                 r0 = 0;
                                                             |             }
    0x00003a70 mov r3, 0x22                                  |             r3 = 0x22;
    0x00003a74 mvn r4, 0                                     |             r4 = ~0;
    0x00003a78 mov r5, r2                                    |             r5 = r2;
    0x00003a7c mov r7, 0xc0                                  |             r7 = 0xc0;
    0x00003a80 svc 0                                         |             __asm ("svc 0");
    0x00003a84 cmn r0, 0x1000                                |             
    0x00003a88 mov sb, r0                                    |             sb = r0;
                                                             |             if (r0 < 0x1000) {
    0x00003a8c bls 0x3b90                                    |                 goto label_25;
                                                             |             }
    0x00003a90 ldr r3, [pc, 0x728]                           |             r3 = *(0x41bc);
    0x00003a94 rsb r2, r0, 0                                 |             r2 = r0 - ;
    0x00003a98 ldr r3, [r8, r3]                              |             r3 = *((r8 + r3));
    0x00003a9c str r2, [r3]                                  |             *(r3) = r2;
                                                             | label_9:
    0x00003aa0 ldr r3, [pc, 0x72c]                           |             r3 = *(0x41d0);
    0x00003aa4 ldr r1, [pc, 0x740]                           |             r1 = *(0x41e8);
    0x00003aa8 ldr r2, [r8, r3]                              |             r2 = *((r8 + r3));
    0x00003aac ldr r3, [fp, -0x10c]                          |             r3 = var_10ch;
    0x00003ab0 mov r0, 2                                     |             r0 = 2;
    0x00003ab4 str r3, [sp]                                  |             *(sp) = r3;
    0x00003ab8 add r1, pc, r1                                |             r1 = pc + r1;
    0x00003abc mov r3, 0x2a8                                 |             r3 = 0x2a8;
    0x00003ac0 ldr r2, [r2]                                  |             r2 = *(r2);
    0x00003ac4 bl 0x1bf4                                     |             dl_dprintf ();
    0x00003ac8 ldr r3, [pc, 0x6f4]                           |             r3 = *(0x41c0);
    0x00003acc mov r7, 6                                     |             r7 = 6;
    0x00003ad0 ldr r3, [r8, r3]                              |             r3 = *((r8 + r3));
    0x00003ad4 ldr r0, [fp, -0xfc]                           |             r0 = var_fch;
    0x00003ad8 str r7, [r3]                                  |             *(r3) = r7;
    0x00003adc b 0x3960                                      |             goto label_4;
                                                             |         }
    0x00003ae0 ldr r0, [r4]                                  |         r0 = *(r4);
    0x00003ae4 cmp r0, 2                                     |         
                                                             |         if (r0 == 2) {
    0x00003ae8 bne 0x3b18                                    |             
    0x00003aec ldr r3, [fp, -0x104]                          |             r3 = var_104h;
    0x00003af0 cmp r3, 0                                     |             
                                                             |             if (r3 != 0) {
    0x00003af4 beq 0x3b10                                    |                 
    0x00003af8 ldr r3, [pc, 0x6d4]                           |                 r3 = *(0x41d0);
    0x00003afc ldr r1, [fp, -0x114]                          |                 r1 = var_114h;
    0x00003b00 ldr r2, [r8, r3]                              |                 r2 = *((r8 + r3));
    0x00003b04 ldr r3, [fp, -0x10c]                          |                 r3 = var_10ch;
    0x00003b08 ldr r2, [r2]                                  |                 r2 = *(r2);
    0x00003b0c bl 0x1bf4                                     |                 dl_dprintf ();
                                                             |             }
    0x00003b10 ldr r3, [r4, 8]                               |             r3 = *((r4 + 8));
    0x00003b14 str r3, [fp, -0x104]                          |             var_104h = r3;
                                                             |         }
    0x00003b18 ldr r3, [r4]                                  |         r3 = *(r4);
    0x00003b1c cmp r3, 1                                     |         
                                                             |         if (r3 != 1) {
    0x00003b20 bne 0x3b74                                    |             goto label_26;
                                                             |         }
    0x00003b24 cmn r5, 1                                     |         
    0x00003b28 ldr r3, [r4, 8]                               |         r3 = *((r4 + 8));
                                                             |         if (r5 == 1) {
    0x00003b2c bne 0x3b44                                    |             
    0x00003b30 cmp r3, 0x1000000                             |             
                                                             |             if (r3 <= 0x1000000) {
    0x00003b34 movhi r2, 0                                   |                 r2 = 0;
                                                             |             }
                                                             |             if (r3 <= 0x1000000) {
    0x00003b38 movhi r5, r3                                  |                 r5 = r3;
                                                             |             }
                                                             |             if (r3 <= 0x1000000) {
    0x00003b3c strhi r2, [fp, -0x100]                        |                 var_100h = r2;
                                                             |             }
                                                             |             if (r3 > 0x1000000) {
    0x00003b40 bhi 0x3b58                                    |                 goto label_27;
                                                             |             }
                                                             |         }
    0x00003b44 ldr r2, [fp, -0x100]                          |         r2 = var_100h;
    0x00003b48 cmp r2, 0                                     |         
                                                             |         if (r2 != 0) {
    0x00003b4c beq 0x3b58                                    |             
    0x00003b50 cmp r5, r3                                    |             
                                                             |             if (r5 >= r3) {
    0x00003b54 movhs r5, r3                                  |                 r5 = r3;
                                                             |                 goto label_27;
                                                             |             }
                                                             |         }
                                                             | label_27:
    0x00003b58 ldr r2, [r4, 0x14]                            |         r2 = *((r4 + 0x14));
    0x00003b5c add r3, r3, r2                                |         r3 += r2;
    0x00003b60 cmp sb, r3                                    |         
                                                             |         if (sb >= r3) {
    0x00003b64 movlo sb, r3                                  |             sb = r3;
                                                             |         }
                                                             | label_5:
    0x00003b68 add r4, r4, 0x20                              |         r4 += 0x20;
                                                             | label_6:
    0x00003b6c add r7, r7, 1                                 |         r7++;
    0x00003b70 b 0x3a28                                      |         
                                                             |     } while (1);
                                                             | label_26:
    0x00003b74 cmp r3, 7                                     |     
                                                             |     if (r3 != 7) {
    0x00003b78 bne 0x3b68                                    |         goto label_5;
                                                             |     }
    0x00003b7c ldr r3, [r4, 0x14]                            |     r3 = *((r4 + 0x14));
    0x00003b80 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00003b84 beq 0x3b6c                                    |         goto label_6;
                                                             |     }
    0x00003b88 str r4, [fp, -0x108]                          |     var_108h = r4;
    0x00003b8c b 0x3b68                                      |     goto label_5;
                                                             | label_25:
    0x00003b90 sub r3, r0, lr                                |     r3 = r0 - lr;
    0x00003b94 str r3, [fp, -0x114]                          |     var_114h = r3;
    0x00003b98 ldr r3, [pc, 0x650]                           |     r3 = *(0x41ec);
    0x00003b9c ldr r1, [fp, -0x114]                          |     r1 = var_114h;
    0x00003ba0 add r3, pc, r3                                |     r3 = pc + r3;
    0x00003ba4 str r1, [r3, 0x18]                            |     *((r3 + 0x18)) = r1;
    0x00003ba8 ldr r3, [fp, -0x100]                          |     r3 = var_100h;
    0x00003bac ldr ip, [sl, 0x1c]                            |     ip = *((sl + 0x1c));
    0x00003bb0 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00003bb4 movne r3, r0                                  |         r3 = r0;
                                                             |     }
                                                             |     if (r3 != 0) {
    0x00003bb8 moveq r3, 0                                   |         r3 = 0;
                                                             |     }
    0x00003bbc str r3, [fp, -0x134]                          |     var_134h = r3;
    0x00003bc0 ldr r3, [pc, 0x62c]                           |     r3 = *(0x41f0);
    0x00003bc4 add ip, ip, 0x20                              |     
    0x00003bc8 add r3, pc, r3                                |     r3 = pc + r3;
    0x00003bcc str r3, [fp, -0x138]                          |     var_138h = r3;
    0x00003bd0 ldr r3, [pc, 0x620]                           |     r3 = *(0x41f4);
    0x00003bd4 add ip, sl, ip                                |     
    0x00003bd8 add r3, pc, r3                                |     r3 = pc + r3;
    0x00003bdc str r2, [fp, -0x11c]                          |     var_11ch = r2;
    0x00003be0 str r2, [fp, -0x124]                          |     var_124h = r2;
    0x00003be4 str r2, [fp, -0x120]                          |     var_120h = r2;
    0x00003be8 str r3, [fp, -0x13c]                          |     var_13ch = r3;
                                                             |     do {
    0x00003bec ldrh r3, [sl, 0x2c]                           |         r3 = *((sl + 0x2c));
    0x00003bf0 ldr r2, [fp, -0x120]                          |         r2 = var_120h;
    0x00003bf4 cmp r3, r2                                    |         
                                                             |         if (r3 <= r2) {
    0x00003bf8 bgt 0x3c8c                                    |             
    0x00003bfc ldr r3, [fp, -0x100]                          |             r3 = var_100h;
    0x00003c00 cmp r3, 0                                     |             
                                                             |             if (r3 == 0) {
    0x00003c04 ldrne r3, [fp, -0x104]                        |                 r3 = var_104h;
                                                             |             }
                                                             |             if (r3 == 0) {
    0x00003c08 ldrne r2, [fp, -0x114]                        |                 r2 = var_114h;
                                                             |             }
                                                             |             if (r3 == 0) {
    0x00003c0c addne r3, r3, r2                              |                 r3 += r2;
                                                             |             }
                                                             |             if (r3 == 0) {
    0x00003c10 strne r3, [fp, -0x104]                        |                 var_104h = r3;
                                                             |             }
    0x00003c14 ldr r3, [fp, -0x104]                          |             r3 = var_104h;
    0x00003c18 cmp r3, 0                                     |             
                                                             |             if (r3 == 0) {
    0x00003c1c movne r3, 0                                   |                 r3 = 0;
                                                             |             }
                                                             |             if (r3 == 0) {
    0x00003c20 subne r1, fp, 0xb0                            |                 r1 = fp - 0xb0;
                                                             |             }
                                                             |             if (r3 == 0) {
    0x00003c24 movne r2, r3                                  |                 r2 = r3;
                                                             |             }
                                                             |             if (r3 != 0) {
    0x00003c28 bne 0x3f38                                    |                 goto label_28;
                                                             |             }
    0x00003c2c ldr r3, [pc, 0x590]                           |             r3 = *(0x41c0);
    0x00003c30 mov r2, 7                                     |             r2 = 7;
    0x00003c34 ldr r3, [r8, r3]                              |             r3 = *((r8 + r3));
    0x00003c38 ldr r1, [pc, 0x5bc]                           |             r1 = *(0x41f8);
    0x00003c3c str r2, [r3]                                  |             *(r3) = r2;
    0x00003c40 ldr r3, [pc, 0x58c]                           |             r3 = *(0x41d0);
    0x00003c44 add r1, pc, r1                                |             r1 = pc + r1;
    0x00003c48 ldr r2, [r8, r3]                              |             r2 = *((r8 + r3));
    0x00003c4c mov r0, 2                                     |             r0 = 2;
    0x00003c50 ldr r3, [fp, -0x10c]                          |             r3 = var_10ch;
    0x00003c54 ldr r2, [r2]                                  |             r2 = *(r2);
    0x00003c58 bl 0x1bf4                                     |             dl_dprintf ();
    0x00003c5c ldr r3, [fp, -0xf8]                           |             r3 = var_f8h;
    0x00003c60 mov r0, sl                                    |             r0 = sl;
    0x00003c64 ldr r1, [r3]                                  |             r1 = *(0x41d0);
    0x00003c68 mov r7, 0x5b                                  |             r7 = 0x5b;
    0x00003c6c svc 0                                         |             __asm ("svc 0");
    0x00003c70 cmn r0, 0x1000                                |             
                                                             |             if (r0 <= 0x1000) {
    0x00003c74 ldrhi r3, [pc, 0x544]                         |                 r3 = *((pc + 0x544));
                                                             |             }
    0x00003c78 rsbhi r0, r0, 0                               |             __asm ("rsbhi r0, r0, 0");
                                                             |             if (r0 <= 0x1000) {
    0x00003c7c ldrhi r3, [r8, r3]                            |                 r3 = *((r8 + r3));
                                                             |             }
                                                             |             if (r0 <= 0x1000) {
    0x00003c80 strhi r0, [r3]                                |                 *(r3) = r0;
                                                             |             }
    0x00003c84 ldr r0, [fp, -0xfc]                           |             r0 = var_fch;
    0x00003c88 b 0x37b4                                      |             goto label_7;
                                                             |         }
    0x00003c8c ldr r3, [ip, -0x20]                           |         r3 = *((ip - 0x20));
    0x00003c90 ldr r2, [pc, 0x568]                           |         r2 = *(0x41fc);
    0x00003c94 cmp r3, r2                                    |         
                                                             |         if (r3 != r2) {
    0x00003c98 bne 0x3cc0                                    |             goto label_29;
                                                             |         }
    0x00003c9c ldr r3, [ip, -0x18]                           |         r3 = *((ip - 0x18));
    0x00003ca0 str r3, [fp, -0x124]                          |         var_124h = r3;
    0x00003ca4 ldr r3, [ip, -0xc]                            |         r3 = *((ip - 0xc));
    0x00003ca8 str r3, [fp, -0x11c]                          |         var_11ch = r3;
                                                             | label_8:
    0x00003cac ldr r3, [fp, -0x120]                          |         r3 = var_120h;
    0x00003cb0 add ip, ip, 0x20                              |         
    0x00003cb4 add r3, r3, 1                                 |         r3++;
    0x00003cb8 str r3, [fp, -0x120]                          |         var_120h = r3;
    0x00003cbc b 0x3bec                                      |         
                                                             |     } while (1);
                                                             | label_29:
    0x00003cc0 cmp r3, 1                                     |     
                                                             |     if (r3 != 1) {
    0x00003cc4 bne 0x3cac                                    |         goto label_8;
                                                             |     }
    0x00003cc8 ldr r2, [fp, -0xf8]                           |     r2 = var_f8h;
    0x00003ccc ldr r3, [ip, -8]                              |     r3 = *((ip - 8));
    0x00003cd0 ldr lr, [r2]                                  |     
    0x00003cd4 ldr r1, [ip, -0x18]                           |     r1 = *((ip - 0x18));
    0x00003cd8 rsb r5, lr, 0                                 |     r5 = lr - ;
    0x00003cdc tst r3, 2                                     |     
    0x00003ce0 and r0, r5, r1                                |     r0 = r5 & r1;
    0x00003ce4 sub lr, lr, 1                                 |     lr--;
                                                             |     if ((r3 & 2) == 0) {
    0x00003ce8 beq 0x3e9c                                    |         goto label_30;
                                                             |     }
    0x00003cec ldr r2, [fp, -0x100]                          |     r2 = var_100h;
    0x00003cf0 orr r3, r3, 2                                 |     r3 |= 2;
    0x00003cf4 cmp r2, 0                                     |     
                                                             |     if (r2 != 0) {
    0x00003cf8 ldreq r2, [fp, -0x13c]                        |         r2 = var_13ch;
                                                             |     }
                                                             |     if (r2 == 0) {
    0x00003cfc movne r2, sb                                  |         r2 = sb;
                                                             |     }
                                                             |     if (r2 != 0) {
    0x00003d00 ldreq r2, [r2, 0x18]                          |         r2 = *((r2 + 0x18));
                                                             |     }
    0x00003d04 and lr, lr, r1                                |     lr &= r1;
    0x00003d08 add r2, r0, r2                                |     r2 = r0 + r2;
    0x00003d0c str r2, [fp, -0x12c]                          |     var_12ch = r2;
    0x00003d10 ldr r2, [ip, -0x10]                           |     r2 = *((ip - 0x10));
    0x00003d14 add lr, lr, r2                                |     lr += r2;
    0x00003d18 lsl r2, r3, 0x1d                              |     r2 = r3 << 0x1d;
    0x00003d1c lsl r3, r3, 2                                 |     r3 <<= 2;
    0x00003d20 and r3, r3, 4                                 |     r3 &= 4;
    0x00003d24 orr r3, r3, r2, lsr 31                        |     r3 |= (r2 >> 31);
    0x00003d28 orr r3, r3, 2                                 |     r3 |= 2;
    0x00003d2c str r3, [fp, -0x130]                          |     var_130h = r3;
    0x00003d30 ldr r3, [ip, -0x1c]                           |     r3 = *((ip - 0x1c));
    0x00003d34 and r5, r5, r3                                |     r5 &= r3;
    0x00003d38 ldr r3, [pc, 0x4c4]                           |     r3 = *(0x4200);
    0x00003d3c tst r5, r3                                    |     
                                                             |     if ((r5 & r3) != 0) {
    0x00003d40 bne 0x3d84                                    |         goto label_10;
                                                             |     }
    0x00003d44 ldr r7, [pc, 0x4bc]                           |     r7 = *(0x4204);
    0x00003d48 ldr r0, [fp, -0x12c]                          |     r0 = var_12ch;
    0x00003d4c and r5, r7, r5, lsr 12                        |     r5 = r7 & (r5 >> 12);
    0x00003d50 mov r1, lr                                    |     r1 = lr;
    0x00003d54 ldr r2, [fp, -0x130]                          |     r2 = var_130h;
    0x00003d58 mov r3, 0x12                                  |     r3 = 0x12;
    0x00003d5c ldr r4, [fp, -0xfc]                           |     r4 = var_fch;
    0x00003d60 mov r7, 0xc0                                  |     r7 = 0xc0;
    0x00003d64 svc 0                                         |     __asm ("svc 0");
    0x00003d68 cmn r0, 0x1000                                |     
    0x00003d6c str r0, [fp, -0x118]                          |     var_118h = r0;
                                                             |     if (r0 < 0x1000) {
    0x00003d70 bls 0x3dac                                    |         goto label_31;
                                                             |     }
    0x00003d74 ldr r3, [pc, 0x444]                           |     r3 = *(0x41bc);
    0x00003d78 rsb sb, r0, 0                                 |     sb = r0 - ;
    0x00003d7c ldr r3, [r8, r3]                              |     r3 = *((r8 + r3));
    0x00003d80 str sb, [r3]                                  |     *(r3) = sb;
                                                             |     do {
                                                             | label_10:
    0x00003d84 ldr r0, [fp, -0x114]                          |         r0 = var_114h;
    0x00003d88 ldr r1, [fp, -0x128]                          |         r1 = var_128h;
    0x00003d8c mov r7, 0x5b                                  |         r7 = 0x5b;
    0x00003d90 svc 0                                         |         __asm ("svc 0");
    0x00003d94 cmn r0, 0x1000                                |         
                                                             |         if (r0 <= 0x1000) {
    0x00003d98 ldrhi r3, [pc, 0x420]                         |             r3 = *((pc + 0x420));
                                                             |         }
    0x00003d9c rsbhi r0, r0, 0                               |         __asm ("rsbhi r0, r0, 0");
                                                             |         if (r0 <= 0x1000) {
    0x00003da0 ldrhi r3, [r8, r3]                            |             r3 = *((r8 + r3));
                                                             |         }
                                                             |         if (r0 <= 0x1000) {
    0x00003da4 strhi r0, [r3]                                |             *(r3) = r0;
                                                             |         }
    0x00003da8 b 0x3aa0                                      |         goto label_9;
                                                             | label_31:
    0x00003dac ldr r3, [fp, -0x12c]                          |         r3 = var_12ch;
    0x00003db0 ldr r2, [fp, -0x118]                          |         r2 = var_118h;
    0x00003db4 cmp r3, 0                                     |         
    0x00003db8 cmpne r3, r2                                  |         __asm ("cmpne r3, r2");
    0x00003dbc bne 0x3d84                                    |         
                                                             |     } while (r3 != 0);
    0x00003dc0 ldr r3, [fp, -0xf8]                           |     r3 = var_f8h;
    0x00003dc4 ldr r5, [ip, -0x10]                           |     r5 = *((ip - 0x10));
    0x00003dc8 ldr r4, [r3]                                  |     r4 = *(r3);
    0x00003dcc ldr r0, [ip, -0x18]                           |     r0 = *((ip - 0x18));
    0x00003dd0 add lr, r2, lr                                |     lr = r2 + lr;
    0x00003dd4 add r0, r5, r0                                |     r0 = r5 + r0;
    0x00003dd8 sub r2, r4, 1                                 |     r2 = r4 - 1;
    0x00003ddc ldr r3, [ip, -0xc]                            |     r3 = *((ip - 0xc));
    0x00003de0 add r2, r2, r0                                |     r2 += r0;
    0x00003de4 rsb r4, r4, 0                                 |     r4 -= ;
    0x00003de8 and r2, r2, r4                                |     r2 &= r4;
    0x00003dec sub r3, r3, r5                                |     r3 -= r5;
    0x00003df0 sub r0, r2, r0                                |     r0 = r2 - r0;
    0x00003df4 cmp r3, r0                                    |     
                                                             |     if (r3 > r0) {
    0x00003df8 addls r3, lr, r3                              |         r3 = lr + r3;
                                                             |     }
                                                             |     if (r3 <= r0) {
    0x00003dfc addhi r3, lr, r0                              |         r3 = lr + r0;
                                                             |     }
                                                             | label_11:
    0x00003e00 cmp r3, lr                                    |     
                                                             |     if (r3 != lr) {
    0x00003e04 bne 0x3e2c                                    |         goto label_32;
                                                             |     }
    0x00003e08 ldr r1, [ip, -0x18]                           |     r1 = *((ip - 0x18));
    0x00003e0c ldr r3, [ip, -0xc]                            |     r3 = *((ip - 0xc));
    0x00003e10 add r1, r1, r3                                |     r1 += r3;
    0x00003e14 cmp r2, r1                                    |     
                                                             |     if (r2 <= r1) {
    0x00003e18 blo 0x3e38                                    |         goto label_33;
                                                             |     }
                                                             | label_12:
    0x00003e1c ldr r3, [fp, -0x118]                          |     r3 = var_118h;
    0x00003e20 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00003e24 bne 0x3cac                                    |         goto label_8;
                                                             |     }
    0x00003e28 b 0x3d84                                      |     goto label_10;
                                                             | label_32:
    0x00003e2c mov r1, 0                                     |     r1 = 0;
    0x00003e30 strb r1, [lr], 1                              |     *(lr) = r1;
                                                             |     lr++;
    0x00003e34 b 0x3e00                                      |     goto label_11;
                                                             | label_33:
    0x00003e38 ldr r3, [fp, -0x134]                          |     r3 = var_134h;
    0x00003e3c sub r1, r1, r2                                |     r1 -= r2;
    0x00003e40 add lr, r3, r2                                |     lr = r3 + r2;
    0x00003e44 mov r0, lr                                    |     r0 = lr;
    0x00003e48 ldr r2, [fp, -0x130]                          |     r2 = var_130h;
    0x00003e4c mov r3, 0x32                                  |     r3 = 0x32;
    0x00003e50 mvn r4, 0                                     |     r4 = ~0;
    0x00003e54 mov r5, 0                                     |     r5 = 0;
    0x00003e58 mov r7, 0xc0                                  |     r7 = 0xc0;
    0x00003e5c svc 0                                         |     __asm ("svc 0");
    0x00003e60 cmn r0, 0x1000                                |     
                                                             |     if (r0 <= 0x1000) {
    0x00003e64 ldrhi r3, [pc, 0x354]                         |         r3 = *((pc + 0x354));
                                                             |     }
    0x00003e68 rsbhi r0, r0, 0                               |     __asm ("rsbhi r0, r0, 0");
                                                             |     if (r0 <= 0x1000) {
    0x00003e6c ldrhi r3, [r8, r3]                            |         r3 = *((r8 + r3));
                                                             |     }
                                                             |     if (r0 <= 0x1000) {
    0x00003e70 strhi r0, [r3]                                |         *(r3) = r0;
                                                             |     }
                                                             |     if (r0 <= 0x1000) {
    0x00003e74 movhi r0, r4                                  |         r0 = r4;
                                                             |     }
    0x00003e78 cmn r0, 1                                     |     
                                                             |     if (r0 == 1) {
    0x00003e7c movne r3, 0                                   |         r3 = 0;
                                                             |     }
                                                             |     if (r0 != 1) {
    0x00003e80 moveq r3, 1                                   |         r3 = 1;
                                                             |     }
    0x00003e84 cmp lr, r0                                    |     
                                                             |     if (lr != r0) {
    0x00003e88 moveq r0, r3                                  |         r0 = r3;
                                                             |     }
                                                             |     if (lr == r0) {
    0x00003e8c orrne r0, r3, 1                               |         r0 = r3 | 1;
                                                             |     }
    0x00003e90 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00003e94 beq 0x3e1c                                    |         goto label_12;
                                                             |     }
    0x00003e98 b 0x3d84                                      |     goto label_10;
                                                             | label_30:
    0x00003e9c ldr r2, [fp, -0x100]                          |     r2 = var_100h;
    0x00003ea0 and lr, lr, r1                                |     lr &= r1;
    0x00003ea4 cmp r2, 0                                     |     
                                                             |     if (r2 != 0) {
    0x00003ea8 ldreq r2, [fp, -0x138]                        |         r2 = var_138h;
                                                             |     }
                                                             |     if (r2 == 0) {
    0x00003eac movne r2, sb                                  |         r2 = sb;
                                                             |     }
                                                             |     if (r2 != 0) {
    0x00003eb0 ldreq r2, [r2, 0x18]                          |         r2 = *((r2 + 0x18));
                                                             |     }
    0x00003eb4 ldr r1, [ip, -0x10]                           |     r1 = *((ip - 0x10));
    0x00003eb8 add r2, r2, r0                                |     r2 += r0;
    0x00003ebc str r2, [fp, -0x118]                          |     var_118h = r2;
    0x00003ec0 lsl r2, r3, 2                                 |     r2 = r3 << 2;
    0x00003ec4 lsl r0, r3, 0x1d                              |     r0 = r3 << 0x1d;
    0x00003ec8 and r2, r2, 4                                 |     r2 &= 4;
    0x00003ecc and r3, r3, 2                                 |     r3 &= 2;
    0x00003ed0 orr r2, r2, r0, lsr 31                        |     r2 |= (r0 >> 31);
    0x00003ed4 orr r2, r2, r3                                |     r2 |= r3;
    0x00003ed8 ldr r3, [ip, -0x1c]                           |     r3 = *((ip - 0x1c));
    0x00003edc add r1, lr, r1                                |     r1 = lr + r1;
    0x00003ee0 and r5, r5, r3                                |     r5 &= r3;
    0x00003ee4 ldr r3, [pc, 0x318]                           |     r3 = *(0x4200);
    0x00003ee8 tst r5, r3                                    |     
                                                             |     if ((r5 & r3) != 0) {
    0x00003eec bne 0x3d84                                    |         goto label_10;
                                                             |     }
    0x00003ef0 ldr lr, [pc, 0x310]                           |     
    0x00003ef4 ldr r0, [fp, -0x118]                          |     r0 = var_118h;
    0x00003ef8 mov r3, 0x12                                  |     r3 = 0x12;
    0x00003efc ldr r4, [fp, -0xfc]                           |     r4 = var_fch;
    0x00003f00 and r5, lr, r5, lsr 12                        |     r5 = lr & (r5 >> 12);
    0x00003f04 mov r7, 0xc0                                  |     r7 = 0xc0;
    0x00003f08 svc 0                                         |     __asm ("svc 0");
    0x00003f0c cmn r0, 0x1000                                |     
                                                             |     if (r0 <= 0x1000) {
    0x00003f10 ldrhi r3, [pc, 0x2a8]                         |         r3 = *((pc + 0x2a8));
                                                             |     }
    0x00003f14 rsbhi r0, r0, 0                               |     __asm ("rsbhi r0, r0, 0");
                                                             |     if (r0 <= 0x1000) {
    0x00003f18 ldrhi r3, [r8, r3]                            |         r3 = *((r8 + r3));
                                                             |     }
                                                             |     if (r0 > 0x1000) {
    0x00003f1c strhi r0, [r3]                                |         *(r3) = r0;
                                                             |         goto label_34;
                                                             |     }
                                                             |     if (r0 > 0x1000) {
                                                             | label_34:
    0x00003f20 bhi 0x3d84                                    |         goto label_10;
                                                             |     }
    0x00003f24 ldr r3, [fp, -0x118]                          |     r3 = var_118h;
    0x00003f28 cmp r3, 0                                     |     
    0x00003f2c cmpne r3, r0                                  |     __asm ("cmpne r3, r0");
                                                             |     if (r3 == 0) {
    0x00003f30 beq 0x3cac                                    |         goto label_8;
                                                             |     }
    0x00003f34 b 0x3d84                                      |     goto label_10;
                                                             |     do {
                                                             | label_28:
    0x00003f38 strb r2, [r3, r1]                             |         *((r3 + r1)) = r2;
    0x00003f3c add r3, r3, 1                                 |         r3++;
    0x00003f40 cmp r3, 0x8c                                  |         
    0x00003f44 bne 0x3f38                                    |         
                                                             |     } while (r3 != 0x8c);
    0x00003f48 ldr r3, [fp, -0x114]                          |     r3 = var_114h;
    0x00003f4c mov r2, 0                                     |     r2 = 0;
    0x00003f50 ldr r0, [fp, -0x104]                          |     r0 = var_104h;
    0x00003f54 bl 0x3584                                     |     dl_parse_dynamic_info ();
    0x00003f58 ldr r3, [fp, -0x58]                           |     r3 = var_58h;
    0x00003f5c cmp r3, 0                                     |     
    0x00003f60 mov r4, r0                                    |     r4 = r0;
    0x00003f64 bne 0x4118                                    |     
                                                             |     while (r2 <= r3) {
    0x00003f68 ldr r0, [fp, -0xfc]                           |         r0 = var_fch;
    0x00003f6c mov r7, 6                                     |         r7 = 6;
    0x00003f70 svc 0                                         |         __asm ("svc 0");
    0x00003f74 cmn r0, 0x1000                                |         
                                                             |         if (r0 <= 0x1000) {
    0x00003f78 ldrhi r3, [pc, 0x240]                         |             r3 = *((pc + 0x240));
                                                             |         }
    0x00003f7c rsbhi r0, r0, 0                               |         __asm ("rsbhi r0, r0, 0");
                                                             |         if (r0 <= 0x1000) {
    0x00003f80 ldrhi r3, [r8, r3]                            |             r3 = *((r8 + r3));
                                                             |         }
                                                             |         if (r0 <= 0x1000) {
    0x00003f84 strhi r0, [r3]                                |             *(r3) = r0;
                                                             |         }
    0x00003f88 mov r5, 0                                     |         r5 = 0;
    0x00003f8c ldr r3, [fp, -0x104]                          |         r3 = var_104h;
    0x00003f90 sub r2, fp, 0xb0                              |         r2 -= var_b0h;
    0x00003f94 str r5, [sp]                                  |         *(sp) = r5;
    0x00003f98 ldr r1, [fp, -0x114]                          |         r1 = var_114h;
    0x00003f9c ldr r0, [fp, -0x10c]                          |         r0 = var_10ch;
    0x00003fa0 bl 0x3364                                     |         dl_add_elf_hash_table ();
    0x00003fa4 ldr r3, [fp, -0x124]                          |         r3 = var_124h;
    0x00003fa8 ldr r2, [fp, -0xf0]                           |         r2 = var_f0h;
    0x00003fac str r3, [r0, 0x100]                           |         *((r0 + 0x100)) = r3;
    0x00003fb0 ldr r3, [fp, -0x11c]                          |         r3 = var_11ch;
    0x00003fb4 mov r6, r0                                    |         r6 = r0;
    0x00003fb8 str r3, [r0, 0x104]                           |         *((r0 + 0x104)) = r3;
    0x00003fbc ldr r3, [fp, -0xec]                           |         r3 = var_ech;
    0x00003fc0 str sb, [r0, 0x38]                            |         *((r0 + 0x38)) = sb;
    0x00003fc4 str r3, [r0, 0x110]                           |         *((r0 + 0x110)) = r3;
    0x00003fc8 ldr r3, [sl, 0x1c]                            |         r3 = *((sl + 0x1c));
    0x00003fcc str r2, [r0, 0x108]                           |         *((r0 + 0x108)) = r2;
    0x00003fd0 add r3, r3, sb                                |         r3 += sb;
    0x00003fd4 str r3, [r0, 0xfc]                            |         *((r0 + 0xfc)) = r3;
    0x00003fd8 ldrh r3, [sl, 0x2c]                           |         r3 = *((sl + 0x2c));
    0x00003fdc str r5, [r0, 0x10c]                           |         *((r0 + 0x10c)) = r5;
    0x00003fe0 str r3, [r0, 0xf8]                            |         *((r0 + 0xf8)) = r3;
    0x00003fe4 ldr r3, [fp, -0x140]                          |         r3 = var_140h;
    0x00003fe8 orr r3, r3, r4                                |         r3 |= r4;
    0x00003fec str r3, [r0, 0x50]                            |         *((r0 + 0x50)) = r3;
    0x00003ff0 ldr r3, [fp, -0x108]                          |         r3 = var_108h;
    0x00003ff4 cmp r3, r5                                    |         
                                                             |         if (r3 != r5) {
    0x00003ff8 beq 0x405c                                    |             
    0x00003ffc ldr r3, [r3, 0x14]                            |             r3 = *((r3 + 0x14));
    0x00004000 ldr r2, [fp, -0x108]                          |             r2 = var_108h;
    0x00004004 str r3, [r0, 0x1c]                            |             *((r0 + 0x1c)) = r3;
    0x00004008 ldr r3, [fp, -0x108]                          |             r3 = var_108h;
    0x0000400c ldr r2, [r2, 8]                               |             r2 = *((r2 + 8));
    0x00004010 ldr r3, [r3, 0x1c]                            |             r3 = *((r3 + 0x1c));
    0x00004014 cmp r3, r5                                    |             
    0x00004018 str r3, [r0, 0x20]                            |             *((r0 + 0x20)) = r3;
                                                             |             if (r3 == r5) {
    0x0000401c subne r3, r3, 1                               |                 r3--;
                                                             |             }
                                                             |             if (r3 == r5) {
    0x00004020 andne r3, r3, r2                              |                 r3 &= r2;
                                                             |             }
    0x00004024 str r3, [r0, 0x24]                            |             *((r0 + 0x24)) = r3;
    0x00004028 ldr r3, [fp, -0x108]                          |             r3 = var_108h;
    0x0000402c ldr r3, [r3, 0x10]                            |             r3 = *((r3 + 0x10));
    0x00004030 str r2, [r0, 0x14]                            |             *((r0 + 0x14)) = r2;
    0x00004034 str r3, [r0, 0x18]                            |             *((r0 + 0x18)) = r3;
    0x00004038 bl 0x136c                                     |             dl_next_tls_modid ();
    0x0000403c ldr r3, [r6, 0x14]                            |             r3 = *((r6 + 0x14));
    0x00004040 cmp r3, 0                                     |             
                                                             |             if (r3 == 0) {
    0x00004044 ldrne r2, [fp, -0x108]                        |                 r2 = var_108h;
                                                             |             }
                                                             |             if (r3 == 0) {
    0x00004048 ldrne r3, [r6]                                |                 r3 = *(r6);
                                                             |             }
                                                             |             if (r3 == 0) {
    0x0000404c ldrne r2, [r2, 8]                             |                 r2 = *((r2 + 8));
                                                             |             }
    0x00004050 str r0, [r6, 0x2c]                            |             *((r6 + 0x2c)) = r0;
                                                             |             if (r3 == 0) {
    0x00004054 addne r3, r3, r2                              |                 r3 += r2;
                                                             |             }
                                                             |             if (r3 != 0) {
    0x00004058 strne r3, [r6, 0x14]                          |                 *((r6 + 0x14)) = r3;
                                                             |                 goto label_35;
                                                             |             }
                                                             |         }
                                                             | label_35:
    0x0000405c ldr r3, [fp, -0x110]                          |         r3 = var_110h;
    0x00004060 ldr r4, [r3]                                  |         r4 = *(r3);
    0x00004064 cmp r4, 0                                     |         
                                                             |         if (r4 != 0) {
    0x00004068 beq 0x40b8                                    |             
    0x0000406c mov r0, 0x18                                  |             r0 = 0x18;
    0x00004070 bl 0x243c                                     |             dl_malloc ();
    0x00004074 ldr r3, [fp, -0x110]                          |             r3 = var_110h;
    0x00004078 mov r1, 0                                     |             r1 = 0;
    0x0000407c str r0, [r4, 0x10]                            |             *((r4 + 0x10)) = r0;
    0x00004080 ldr r3, [r3]                                  |             r3 = *(r3);
    0x00004084 ldr r3, [r3, 0x10]                            |             r3 = *((r3 + 0x10));
    0x00004088 add r2, r3, 0x18                              |             r2 = r3 + 0x18;
                                                             | label_15:
    0x0000408c cmp r3, r2                                    |             
                                                             |             if (r3 != r2) {
    0x00004090 bne 0x41b4                                    |                 goto label_36;
                                                             |             }
    0x00004094 ldr r3, [fp, -0x110]                          |             r3 = var_110h;
    0x00004098 ldr r3, [r3]                                  |             r3 = *(r3);
    0x0000409c ldr r2, [r3, 0x10]                            |             r2 = *((r3 + 0x10));
    0x000040a0 str r3, [r2, 0x14]                            |             *((r2 + 0x14)) = r3;
    0x000040a4 ldr r3, [fp, -0x110]                          |             r3 = var_110h;
    0x000040a8 ldr r2, [fp, -0x110]                          |             r2 = var_110h;
    0x000040ac ldr r3, [r3]                                  |             r3 = *(r3);
    0x000040b0 ldr r3, [r3, 0x10]                            |             r3 = *((r3 + 0x10));
    0x000040b4 str r3, [r2]                                  |             *(r2) = r3;
                                                             |         }
    0x000040b8 ldr r3, [fp, -0x110]                          |         r3 = var_110h;
    0x000040bc ldr r3, [r3]                                  |         r3 = *(r3);
    0x000040c0 str r6, [r3]                                  |         *(r3) = r6;
    0x000040c4 ldrh r3, [r6, 0x4c]                           |         r3 = *((r6 + 0x4c));
    0x000040c8 add r2, r3, 1                                 |         r2 = r3 + 1;
    0x000040cc strh r2, [r6, 0x4c]                           |         *((r6 + 0x4c)) = r2;
    0x000040d0 ldr r2, [r6, 0x50]                            |         r2 = *((r6 + 0x50));
    0x000040d4 tst r2, 0x1000                                |         
                                                             |         if ((r2 & 0x1000) == 0) {
    0x000040d8 addne r3, r3, 2                               |             r3 += 2;
                                                             |         }
    0x000040dc strhne r3, [r6, 0x4c]                         |         __asm ("strhne r3, [r6, 0x4c]");
    0x000040e0 mov r3, 0                                     |         r3 = 0;
    0x000040e4 str r3, [r6, 0x3c]                            |         *((r6 + 0x3c)) = r3;
    0x000040e8 ldr r3, [fp, -0xa4]                           |         r3 = var_a4h;
    0x000040ec cmp r3, 0                                     |         
                                                             |         if (r3 == 0) {
    0x000040f0 ldrne r2, [pc, 0x114]                         |             r2 = *((pc + 0x114));
                                                             |         }
                                                             |         if (r3 == 0) {
    0x000040f4 ldrne r2, [r8, r2]                            |             r2 = *((r8 + r2));
                                                             |         }
                                                             |         if (r3 == 0) {
    0x000040f8 strne r6, [r3, 4]                             |             *((r3 + 4)) = r6;
                                                             |         }
                                                             |         if (r3 == 0) {
    0x000040fc strne r2, [r3, 8]                             |             *((r3 + 8)) = r2;
                                                             |         }
    0x00004100 ldr r3, [fp, -0xf8]                           |         r3 = var_f8h;
    0x00004104 mov r0, sl                                    |         r0 = sl;
    0x00004108 ldr r1, [r3]                                  |         r1 = *(r3);
    0x0000410c mov r7, 0x5b                                  |         r7 = 0x5b;
    0x00004110 svc 0                                         |         __asm ("svc 0");
    0x00004114 b 0x38d8                                      |         goto label_13;
    0x00004118 ldr ip, [sl, 0x1c]                            |         ip = *((sl + 0x1c));
    0x0000411c ldr lr, [pc, 0xec]                            |         
    0x00004120 add ip, sl, ip                                |         
    0x00004124 mov r3, 0                                     |         r3 = 0;
    0x00004128 add lr, pc, lr                                |         lr = pc + lr;
                                                             | label_14:
    0x0000412c ldrh r2, [sl, 0x2c]                           |         r2 = *((sl + 0x2c));
    0x00004130 cmp r2, r3                                    |         
    0x00004134 ble 0x3f68                                    |         
                                                             |     }
    0x00004138 ldr r2, [ip, r3, lsl 5]                       |     offset_0 = r3 << 5;
                                                             |     r2 = *((ip + offset_0));
    0x0000413c cmp r2, 1                                     |     
                                                             |     if (r2 == 1) {
    0x00004140 bne 0x41ac                                    |         
    0x00004144 add r5, ip, r3, lsl 5                         |         r5 = ip + (r3 << 5);
    0x00004148 ldr r2, [r5, 0x18]                            |         r2 = *((r5 + 0x18));
    0x0000414c tst r2, 2                                     |         
                                                             |         if ((r2 & 2) != 0) {
    0x00004150 bne 0x41ac                                    |             goto label_37;
                                                             |         }
    0x00004154 ldr r2, [fp, -0x100]                          |         r2 = var_100h;
    0x00004158 ldr r6, [r5, 8]                               |         r6 = *((r5 + 8));
    0x0000415c cmp r2, 0                                     |         
    0x00004160 ldr r2, [fp, -0xf8]                           |         r2 = var_f8h;
                                                             |         if (r2 != 0) {
    0x00004164 ldreq r0, [lr, 0x18]                          |             r0 = *((lr + 0x18));
                                                             |         }
    0x00004168 ldr r2, [r2]                                  |         r2 = *(r2);
    0x0000416c ldr r5, [r5, 0x10]                            |         r5 = *((r5 + 0x10));
    0x00004170 sub r1, r2, 1                                 |         r1 = r2 - 1;
    0x00004174 rsb r2, r2, 0                                 |         r2 -= ;
    0x00004178 and r2, r2, r6                                |         r2 &= r6;
                                                             |         if (r2 == 0) {
    0x0000417c movne r0, sb                                  |             r0 = sb;
                                                             |         }
    0x00004180 and r1, r1, r6                                |         r1 &= r6;
    0x00004184 add r0, r2, r0                                |         r0 = r2 + r0;
    0x00004188 add r1, r1, r5                                |         r1 += r5;
    0x0000418c mov r2, 7                                     |         r2 = 7;
    0x00004190 mov r7, 0x7d                                  |         r7 = 0x7d;
    0x00004194 svc 0                                         |         __asm ("svc 0");
    0x00004198 cmn r0, 0x1000                                |         
                                                             |         if (r0 <= 0x1000) {
    0x0000419c ldrhi r2, [pc, 0x1c]                          |             r2 = *((pc + 0x1c));
                                                             |         }
    0x000041a0 rsbhi r0, r0, 0                               |         __asm ("rsbhi r0, r0, 0");
                                                             |         if (r0 <= 0x1000) {
    0x000041a4 ldrhi r2, [r8, r2]                            |             r2 = *((r8 + r2));
                                                             |         }
                                                             |         if (r0 > 0x1000) {
    0x000041a8 strhi r0, [r2]                                |             *(r2) = r0;
                                                             |             goto label_37;
                                                             |         }
                                                             |     }
                                                             | label_37:
    0x000041ac add r3, r3, 1                                 |     r3++;
    0x000041b0 b 0x412c                                      |     goto label_14;
                                                             | label_36:
    0x000041b4 strb r1, [r3], 1                              |     *(r3) = r1;
                                                             |     r3++;
    0x000041b8 b 0x408c                                      |     goto label_15;
                                                             | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/lib/ld-uClibc-1.0.31.so @ 0x3584 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym._dl_parse_dynamic_info ()    | void dl_parse_dynamic_info (int32_t arg1, int32_t arg2) {
                                             |     int32_t var_10h;
                                             |     r0 = arg1;
                                             |     r1 = arg2;
    0x00003584 push {r4, r5, r6, fp, lr}     |     
    0x00003588 add lr, r0, 8                 |     lr = r0 + 8;
    0x0000358c mov r0, 0                     |     r0 = 0;
    0x00003590 add fp, sp, 0x10              |     
    0x00003594 mov r4, 1                     |     r4 = 1;
    0x00003598 mov r5, r0                    |     r5 = r0;
                                             | label_0:
    0x0000359c ldr ip, [lr, -8]              |     ip = *((lr - 8));
    0x000035a0 cmp ip, 0                     |     
                                             |     if (ip == 0) {
    0x000035a4 bne 0x3614                    |         
    0x000035a8 cmp r3, 0                     |         
    0x000035ac popeq {r4, r5, r6, fp, pc}    |         
    0x000035b0 ldr r2, [r1, 0x10]            |         r2 = *((r1 + 0x10));
    0x000035b4 cmp r2, 0                     |         
                                             |         if (r2 == 0) {
    0x000035b8 addne r2, r3, r2              |             r2 = r3 + r2;
                                             |         }
                                             |         if (r2 == 0) {
    0x000035bc strne r2, [r1, 0x10]          |             *((r1 + 0x10)) = r2;
                                             |         }
    0x000035c0 ldr r2, [r1, 0xc]             |         r2 = *((r1 + 0xc));
    0x000035c4 cmp r2, 0                     |         
                                             |         if (r2 == 0) {
    0x000035c8 addne r2, r3, r2              |             r2 = r3 + r2;
                                             |         }
                                             |         if (r2 == 0) {
    0x000035cc strne r2, [r1, 0xc]           |             *((r1 + 0xc)) = r2;
                                             |         }
    0x000035d0 ldr r2, [r1, 0x14]            |         r2 = *((r1 + 0x14));
    0x000035d4 cmp r2, 0                     |         
                                             |         if (r2 == 0) {
    0x000035d8 addne r2, r3, r2              |             r2 = r3 + r2;
                                             |         }
                                             |         if (r2 == 0) {
    0x000035dc strne r2, [r1, 0x14]          |             *((r1 + 0x14)) = r2;
                                             |         }
    0x000035e0 ldr r2, [r1, 0x18]            |         r2 = *((r1 + 0x18));
    0x000035e4 cmp r2, 0                     |         
                                             |         if (r2 == 0) {
    0x000035e8 addne r2, r3, r2              |             r2 = r3 + r2;
                                             |         }
                                             |         if (r2 == 0) {
    0x000035ec strne r2, [r1, 0x18]          |             *((r1 + 0x18)) = r2;
                                             |         }
    0x000035f0 ldr r2, [r1, 0x44]            |         r2 = *((r1 + 0x44));
    0x000035f4 cmp r2, 0                     |         
                                             |         if (r2 == 0) {
    0x000035f8 addne r2, r3, r2              |             r2 = r3 + r2;
                                             |         }
                                             |         if (r2 == 0) {
    0x000035fc strne r2, [r1, 0x44]          |             *((r1 + 0x44)) = r2;
                                             |         }
    0x00003600 ldr r2, [r1, 0x5c]            |         r2 = *((r1 + 0x5c));
    0x00003604 cmp r2, 0                     |         
                                             |         if (r2 == 0) {
    0x00003608 addne r3, r3, r2              |             r3 += r2;
                                             |         }
                                             |         if (r2 == 0) {
    0x0000360c strne r3, [r1, 0x5c]          |             *((r1 + 0x5c)) = r3;
                                             |         }
    0x00003610 pop {r4, r5, r6, fp, pc}      |         
                                             |     }
    0x00003614 cmp ip, 0x21                  |     
                                             |     if (ip > 0x21) {
    0x00003618 bgt 0x3674                    |         goto label_3;
                                             |     }
    0x0000361c ldr r6, [lr, -4]              |     r6 = *((lr - 4));
    0x00003620 cmp ip, 0x15                  |     
    0x00003624 str r6, [r1, ip, lsl 2]       |     offset_0 = ip << 2;
                                             |     *((r1 + offset_0)) = r6;
                                             |     if (ip != 0x15) {
    0x00003628 streq r2, [lr, -4]            |         *((lr - 4)) = r2;
                                             |     }
                                             |     if (ip == 0x15) {
    0x0000362c beq 0x3650                    |         goto label_1;
                                             |     }
    0x00003630 cmp ip, 0x18                  |     
    0x00003634 bne 0x3640                    |     
                                             |     while ((r6 & 8) != 0) {
    0x00003638 str r4, [r1, 0x60]            |         *((r1 + 0x60)) = r4;
    0x0000363c b 0x3650                      |         goto label_1;
    0x00003640 cmp ip, 0x1e                  |         
                                             |         if (ip != 0x1e) {
    0x00003644 bne 0x3658                    |             goto label_4;
                                             |         }
    0x00003648 tst r6, 8                     |         
    0x0000364c bne 0x3638                    |         
                                             |     }
                                             |     do {
                                             | label_1:
    0x00003650 add lr, lr, 8                 |         lr += 8;
    0x00003654 b 0x359c                      |         goto label_0;
                                             | label_4:
    0x00003658 cmp ip, 0x16                  |         
                                             |         if (ip != 0x16) {
    0x0000365c streq r4, [r1, 0x58]          |             *((r1 + 0x58)) = r4;
                                             |         }
    0x00003660 beq 0x3650                    |         
                                             |     } while (ip == 0x16);
    0x00003664 cmp ip, 0x1d                  |     
                                             |     if (ip != 0x1d) {
    0x00003668 bne 0x36ac                    |         goto label_5;
                                             |     }
                                             | label_2:
    0x0000366c str r5, [r1, 0x3c]            |     *((r1 + 0x3c)) = r5;
    0x00003670 b 0x3650                      |     goto label_1;
                                             | label_3:
    0x00003674 cmn ip, 0x90000001            |     
                                             |     if (ip > 0x90000001) {
    0x00003678 bgt 0x3650                    |         goto label_1;
                                             |     }
    0x0000367c cmn ip, 0x90000006            |     
                                             |     if (ip != 0x90000006) {
    0x00003680 ldreq ip, [lr, -4]            |         ip = *((lr - 4));
                                             |     }
                                             |     if (ip == 0x90000006) {
    0x00003684 streq ip, [r1, 0x88]          |         *((r1 + 0x88)) = ip;
                                             |         goto label_6;
                                             |     }
                                             |     if (ip == 0x90000006) {
                                             | label_6:
    0x00003688 beq 0x3650                    |         goto label_1;
                                             |     }
    0x0000368c cmn ip, 0x90000005            |     
                                             |     if (ip != 0x90000005) {
    0x00003690 bne 0x3650                    |         goto label_1;
                                             |     }
    0x00003694 ldr ip, [lr, -4]              |     ip = *((lr - 4));
    0x00003698 tst ip, 1                     |     
                                             |     if ((ip & 1) == 0) {
    0x0000369c strne r4, [r1, 0x60]          |         *((r1 + 0x60)) = r4;
                                             |     }
    0x000036a0 tst ip, 8                     |     
                                             |     if ((ip & 8) == 0) {
    0x000036a4 movne r0, 0x1000              |         r0 = 0x1000;
                                             |     }
    0x000036a8 b 0x3650                      |     goto label_1;
                                             | label_5:
    0x000036ac cmp ip, 0xf                   |     
                                             |     if (ip != 0xf) {
    0x000036b0 bne 0x3650                    |         goto label_1;
                                             |     }
    0x000036b4 ldr ip, [r1, 0x74]            |     ip = *((r1 + 0x74));
    0x000036b8 cmp ip, 0                     |     
                                             |     if (ip == 0) {
    0x000036bc beq 0x3650                    |         goto label_1;
                                             |     }
    0x000036c0 b 0x366c                      |     goto label_2;
                                             | }

[*] Function strcpy used 1 times ld-uClibc-1.0.31.so