[*] Binary protection state of dmi_memory_id

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


[*] Function printf tear down of dmi_memory_id

    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/udev/dmi_memory_id @ 0x1488 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.00001488 ()                  | void fcn_00001488 (int16_t arg1, int16_t arg2, int16_t arg3) {
                                             |     r0 = arg1;
                                             |     r1 = arg2;
                                             |     r2 = arg3;
    0x00001488 mov ip, r2                    |     
                                             |     if (r2 != 0) {
    0x0000148a cbz r2, 0x14ea                |         
    0x0000148c mov r2, r1                    |         r2 = r1;
    0x0000148e add.w r1, ip, ip, lsl 2       |         r1 = ip + (ip << 2);
    0x00001492 vmov s15, ip                  |         __asm ("vmov s15, ip");
    0x00001496 mov r3, r0                    |         r3 = r0;
    0x00001498 add.w ip, ip, r1, lsl 3       |         
    0x0000149c push {lr}                     |         
    0x0000149e vcvt.f64.u32 d18, s15         |         __asm ("vcvt.f64.u32 d18, s15");
    0x000014a2 sub sp, 0xc                   |         
    0x000014a4 sub.w ip, ip, ip, lsl 10      |         
    0x000014a8 vldr d17, [pc, 0x44]          |         __asm ("vldr d17, [0x000014f4]");
    0x000014ac ubfx lr, ip, 2, 0xe           |         lr = (ip >> 2) & ((1 << 0xe) - 1);
    0x000014b0 orr.w ip, lr, ip, lsl 14      |         
    0x000014b4 uxth.w ip, ip                 |         ip = (int16_t) ip;
    0x000014b8 vdiv.f64 d16, d18, d17        |         __asm ("vdiv.f64 d16, d18, d17");
    0x000014bc cmp.w ip, 0x290               |         
                                             |         if (ip < 0x290) {
    0x000014c0 bhs 0x14d6                    |             
    0x000014c2 ldr r1, [pc, 0x34]            |             
    0x000014c4 movs r0, 1                    |             r0 = 1;
    0x000014c6 vstr d16, [sp]                |             __asm ("vstr d16, [sp]");
    0x000014ca add r1, pc                    |             r1 = "SGRAM";
    0x000014cc blx 0xe54                     |             printf_chk ()
    0x000014d0 add sp, 0xc                   |             
    0x000014d2 ldr pc, [sp], 4               |             pc = *(sp);
                                             |             sp += 4;
                                             |         }
    0x000014d6 ldr r1, [pc, 0x24]            |         
    0x000014d8 movs r0, 1                    |         r0 = 1;
    0x000014da vstr d16, [sp]                |         __asm ("vstr d16, [sp]");
    0x000014de add r1, pc                    |         r1 = 0x29e0;
    0x000014e0 blx 0xe54                     |         printf_chk ()
    0x000014e2 ldc p0, c11, [r8], 0xc        |         __asm ("ldc p0, c11, [r8], 0xc");
    0x000014e6 ldr pc, [sp], 4               |         pc = *(sp);
                                             |         sp += 4;
                                             |     }
    0x000014ea bx lr                         |     return;
                                             | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/udev/dmi_memory_id @ 0x154c */
                                                 | #include <stdint.h>
                                                 |  
                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                 |  
    ; (fcn) fcn.0000154c ()                      | void fcn_0000154c (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                 |     int16_t var_0h_2;
                                                 |     int16_t var_8h;
                                                 |     int16_t var_fh;
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
                                                 |     r2 = arg3;
                                                 |     r3 = arg4;
    0x0000154c mvnsmi lr, sp, lsr 18             |     __asm ("mvnsmi lr, sp, lsr 18");
    0x00001550 mov r6, r0                        |     r6 = r0;
    0x00001552 ldr r0, [pc, 0x118]               |     
    0x00001554 sub sp, 0x10                      |     
    0x00001556 mov r8, r1                        |     r8 = r1;
    0x00001558 ldr r1, [pc, 0x114]               |     r1 = *(0x1670);
    0x0000155a add r7, sp, 8                     |     r7 += var_8h;
    0x0000155c add r0, pc                        |     r0 = 0x2bce;
    0x0000155e ldrb.w r4, [r7, 0x20]             |     r4 = *((r7 + 0x20));
    0x00001562 ldr r1, [r0, r1]                  |     
    0x00001564 ldr r1, [r1]                      |     r1 = *(0x2bce);
    0x00001566 str r1, [r7, 4]                   |     *((r7 + 4)) = r1;
    0x00001568 mov.w r1, 0                       |     r1 = 0;
    0x0000156c cmp r4, 0                         |     
                                                 |     if (r4 == 0) {
    0x0000156e beq 0x1630                        |         goto label_5;
                                                 |     }
    0x00001570 cmp r4, 1                         |     
    0x00001572 add.w r5, r3, r2                  |     r5 = r3 + r2;
                                                 |     if (r4 == 1) {
    0x00001576 beq 0x1658                        |         goto label_6;
                                                 |     }
    0x00001578 cmp r5, 0                         |     
                                                 |     if (r5 == 0) {
    0x0000157a beq 0x163a                        |         goto label_7;
                                                 |     }
                                                 |     do {
    0x0000157c ldrb r3, [r5]                     |         r3 = *(r5);
                                                 |         if (r3 == 0) {
    0x0000157e cbnz r3, 0x15e4                   |             
                                                 | label_4:
    0x00001580 ldrb r3, [r5]                     |             r3 = *(r5);
    0x00001582 cmp r3, 0                         |             
                                                 |             if (r3 != 0) {
    0x00001584 bne 0x15fe                        |                 goto label_8;
                                                 |             }
                                                 | label_0:
    0x00001586 ldr r5, [pc, 0xec]                |             
    0x00001588 movs r3, 0xc                      |             r3 = 0xc;
    0x0000158a movs r2, 0xb                      |             r2 = 0xb;
    0x0000158c add r5, pc                        |             r5 = 0x2c06;
                                                 | label_3:
    0x0000158e adds r3, 7                        |             r3 += 7;
    0x00001590 movs r1, 0                        |             r1 = 0;
    0x00001592 bic r3, r3, 7                     |             r3 = BIT_MASK (r3, 7);
    0x00001596 sub.w sp, sp, r3                  |             
    0x0000159a add.w r0, sp, 0xf                 |             r0 += var_fh;
    0x0000159e lsrs r3, r0, 3                    |             r3 = r0 >> 3;
    0x000015a0 bic r0, r0, 7                     |             r0 = BIT_MASK (r0, 7);
    0x000015a4 strb.w r1, [r2, r3, lsl 3]        |             offset_0 = r3 << 3;
                                                 |             *((r2 + offset_0)) = r1;
                                                 | label_2:
    0x000015a8 mov r1, r5                        |             r1 = r5;
    0x000015aa blx 0xe0c                         |             memcpy (r0, r1, r2);
    0x000015ac invalid                           |             
                                                 | label_1:
    0x000015ae blx 0xddc                         |             r0 = strstrip ();
                                                 |             if (r0 != 0) {
    0x000015b2 cbz r0, 0x15c8                    |                 
    0x000015b4 ldrb r3, [r0]                     |                 r3 = *(r0);
                                                 |                 if (r3 == 0) {
    0x000015b6 cbz r3, 0x15c8                    |                     goto label_9;
                                                 |                 }
    0x000015b8 ldr r1, [pc, 0xbc]                |                 
    0x000015ba mov r3, r6                        |                 r3 = r6;
    0x000015bc str r0, [sp]                      |                 *(sp) = r0;
    0x000015be mov r2, r8                        |                 r2 = r8;
    0x000015c0 movs r0, 1                        |                 r0 = 1;
    0x000015c2 add r1, pc                        |                 r1 = 0x2c3e;
    0x000015c4 blx 0xe54                         |                 printf_chk ()
                                                 |             }
                                                 | label_9:
    0x000015c8 ldr r2, [pc, 0xb0]                |             
    0x000015ca ldr r3, [pc, 0xa4]                |             r3 = *(0x1672);
    0x000015cc add r2, pc                        |             r2 = 0x2c4c;
    0x000015ce ldr r3, [r2, r3]                  |             r3 = *(0x2c4c);
    0x000015d0 ldr r2, [r3]                      |             r2 = *(0x2c4c);
    0x000015d2 ldr r3, [r7, 4]                   |             r3 = *((r7 + 4));
    0x000015d4 eors r2, r3                       |             r2 ^= r3;
    0x000015d6 mov.w r3, 0                       |             r3 = 0;
                                                 |             if (r2 != r3) {
    0x000015da bne 0x1666                        |                 goto label_10;
                                                 |             }
    0x000015dc adds r7, 8                        |             r7 += 8;
    0x000015de mov sp, r7                        |             
    0x000015e0 pop.w {r4, r5, r6, r7, r8, pc}    |             
                                                 |         }
    0x000015e4 subs r4, 1                        |         r4--;
    0x000015e6 mov r0, r5                        |         r0 = r5;
    0x000015e8 uxtb r4, r4                       |         r4 = (int8_t) r4;
    0x000015ea blx 0xe18                         |         strlen (r0);
    0x000015ee cmp r4, 1                         |         
    0x000015f0 add.w r0, r0, 1                   |         r0++;
    0x000015f4 add r5, r0                        |         r5 += r0;
    0x000015f6 bne 0x157c                        |         
                                                 |     } while (r4 != 1);
    0x000015f8 ldrb r3, [r5]                     |     r3 = *(r5);
    0x000015fa cmp r3, 0                         |     
                                                 |     if (r3 == 0) {
    0x000015fc beq 0x1586                        |         goto label_0;
                                                 |     }
                                                 | label_8:
    0x000015fe mov r0, r5                        |     r0 = r5;
    0x00001600 blx 0xe18                         |     r0 = strlen (r0);
    0x00001604 adds r3, r0, 1                    |     r3 = r0 + 1;
    0x00001606 mov r2, r0                        |     r2 = r0;
    0x00001608 cmp.w r3, 0x400000                |     
                                                 |     if (r3 > 0x400000) {
    0x0000160c bhi 0x1644                        |         goto label_11;
                                                 |     }
    0x0000160e add.w r3, r0, 8                   |     r3 = r0 + 8;
    0x00001612 bic r3, r3, 7                     |     r3 = BIT_MASK (r3, 7);
    0x00001616 sub.w sp, sp, r3                  |     
    0x0000161a add.w r3, sp, 0xf                 |     r3 += var_fh;
    0x0000161e lsrs r1, r3, 3                    |     r1 = r3 >> 3;
    0x00001620 bic r0, r3, 7                     |     r0 = BIT_MASK (r3, 7);
    0x00001624 movs r3, 0                        |     r3 = 0;
    0x00001626 strb.w r3, [r2, r1, lsl 3]        |     offset_1 = r1 << 3;
                                                 |     *((r2 + offset_1)) = r3;
    0x0000162a cmp r2, 0                         |     
                                                 |     if (r2 == 0) {
    0x0000162c beq 0x15ae                        |         goto label_1;
                                                 |     }
    0x0000162e b 0x15a8                          |     goto label_2;
                                                 | label_5:
    0x00001630 ldr r5, [pc, 0x4c]                |     
    0x00001632 movs r3, 0xe                      |     r3 = 0xe;
    0x00001634 movs r2, 0xd                      |     r2 = 0xd;
    0x00001636 add r5, pc                        |     r5 = 0x2cba;
    0x00001638 b 0x158e                          |     goto label_3;
                                                 | label_7:
    0x0000163a ldr r5, [pc, 0x48]                |     
    0x0000163c movs r3, 0xc                      |     r3 = 0xc;
    0x0000163e movs r2, 0xb                      |     r2 = 0xb;
    0x00001640 add r5, pc                        |     r5 = 0x2cca;
    0x00001642 b 0x158e                          |     goto label_3;
                                                 | label_11:
    0x00001644 ldr r1, [pc, 0x40]                |     
    0x00001646 movs r2, 0xba                     |     r2 = 0xba;
    0x00001648 ldr r3, [pc, 0x40]                |     
    0x0000164a ldr r0, [pc, 0x44]                |     
    0x0000164c add r1, pc                        |     r1 = 0x2cd8;
    0x0000164e add r3, pc                        |     r3 = 0x2cde;
    0x00001650 adds r1, 7                        |     r1 += 7;
    0x00001652 add r0, pc                        |     r0 = 0x2ce8;
    0x00001654 blx 0xd10                         |     log_assert_failed ();
                                                 | label_6:
    0x00001658 cmp r5, 0                         |     
                                                 |     if (r5 != 0) {
    0x0000165a bne 0x1580                        |         goto label_4;
                                                 |     }
    0x0000165c ldr r5, [pc, 0x34]                |     
    0x0000165e movs r3, 0xc                      |     r3 = 0xc;
    0x00001660 movs r2, 0xb                      |     r2 = 0xb;
    0x00001662 add r5, pc                        |     r5 = 0x2cfa;
    0x00001664 b 0x158e                          |     goto label_3;
                                                 | label_10:
    0x00001666 blx 0xdc4                         |     stack_chk_fail ();
    0x0000166a nop                               |     
    0x0000166c cmp r1, 0xf4                      |     
    0x0000166e movs r0, r0                       |     
    0x00001670 lsls r4, r7, 1                    |     r4 = r7 << 1;
    0x00001672 movs r0, r0                       |     
    0x00001674 lsrs r0, r4, 0xd                  |     r0 = r4 >> 0xd;
    0x00001676 movs r0, r0                       |     
    0x00001678 lsrs r6, r4, 0xe                  |     r6 = r4 >> 0xe;
    0x0000167a movs r0, r0                       |     
    0x0000167c cmp r1, 0x84                      |     
    0x0000167e movs r0, r0                       |     
    0x00001680 lsrs r2, r0, 0xb                  |     r2 = r0 >> 0xb;
    0x00001682 movs r0, r0                       |     
    0x00001684 lsrs r4, r5, 0xa                  |     r4 = r5 >> 0xa;
    0x00001686 movs r0, r0                       |     
    0x00001688 lsrs r4, r7, 0xa                  |     r4 = r7 >> 0xa;
    0x0000168a movs r0, r0                       |     
    0x0000168c asrs r6, r4, 6                    |     r6 = r4 >> 6;
    0x0000168e movs r0, r0                       |     
    0x00001690 lsrs r2, r0, 0xc                  |     r2 = r0 >> 0xc;
    0x00001692 movs r0, r0                       |     
    0x00001694 lsrs r2, r1, 0xa                  |     r2 = r1 >> 0xa;
    0x00001696 movs r0, r0                       |     
                                                 | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/udev/dmi_memory_id @ 0x1698 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.00001698 ()              | void fcn_00001698 (int16_t arg1, uint32_t arg2, int16_t arg3, int16_t arg4) {
                                         |     int16_t var_0h;
                                         |     r0 = arg1;
                                         |     r1 = arg2;
                                         |     r2 = arg3;
                                         |     r3 = arg4;
    0x00001698 sasxmi fp, r4, r0         |     __asm ("sasxmi fp, r4, r0");
    0x0000169c subs r2, 1                |     r2--;
    0x0000169e mov r5, r3                |     r5 = r3;
    0x000016a0 adc r3, r3, -1            |     __asm ("adc r3, r3, -1");
    0x000016a4 adds r2, 2                |     r2 += 2;
    0x000016a6 sbcs r3, r3, -1           |     __asm ("sbcs r3, r3, -1");
    0x000016aa sub sp, 0x14              |     
                                         |     if (r2 < 2) {
    0x000016ac bhs 0x16c8                |         
    0x000016ae cmp r1, 0                 |         
                                         |         if (r1 < 0) {
    0x000016b0 blt 0x16cc                |             goto label_0;
                                         |         }
    0x000016b2 ldr r2, [pc, 0x30]        |         
    0x000016b4 mov r3, r1                |         r3 = r1;
    0x000016b6 ldr r1, [pc, 0x30]        |         
    0x000016b8 str r0, [sp]              |         *(sp) = r0;
    0x000016ba movs r0, 1                |         r0 = 1;
    0x000016bc add r2, pc                |         r2 = 0x2da6;
    0x000016be strd r4, r5, [sp, 8]      |         __asm ("strd r4, r5, [sp, 8]");
    0x000016c2 add r1, pc                |         r1 = 0x2db0;
    0x000016c4 blx 0xe54                 |         printf_chk ()
                                         |     }
    0x000016c8 add sp, 0x14              |     
    0x000016ca pop {r4, r5, pc}          |     
                                         | label_0:
    0x000016cc ldr r2, [pc, 0x1c]        |     
    0x000016ce mov r3, r0                |     r3 = r0;
    0x000016d0 ldr r1, [pc, 0x1c]        |     
    0x000016d2 movs r0, 1                |     r0 = 1;
    0x000016d4 strd r4, r5, [sp]         |     __asm ("strd r4, r5, [sp]");
    0x000016d6 cmp r0, r0                |     
    0x000016d8 add r2, pc                |     r2 = 0x2dc8;
    0x000016da add r1, pc                |     r1 = 0x2dce;
    0x000016dc blx 0xe54                 |     printf_chk ()
    0x000016e0 add sp, 0x14              |     
    0x000016e2 pop {r4, r5, pc}          |     
                                         | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/udev/dmi_memory_id @ 0x16f4 */
                                                             | #include <stdint.h>
                                                             |  
                                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                             |  
    ; (fcn) fcn.000016f4 ()                                  | void fcn_000016f4 (int16_t arg_70h, int16_t arg_74h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                             |     int16_t var_0h;
                                                             |     int16_t var_4h;
                                                             |     int16_t var_8h;
                                                             |     int16_t var_ch;
                                                             |     int16_t var_10h;
                                                             |     int16_t var_18h;
                                                             |     int16_t var_1ch;
                                                             |     int16_t var_20h;
                                                             |     int16_t var_24h;
                                                             |     int16_t var_28h;
                                                             |     int16_t var_2ch;
                                                             |     int16_t var_30h;
                                                             |     int32_t var_30h_2;
                                                             |     void * ptr;
                                                             |     int16_t var_40h;
                                                             |     int16_t var_44h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x000016f4 svcmi 0xf0e92d                                |     __asm ("svcmi 0xf0e92d");
    0x000016f8 mov r6, r3                                    |     r6 = r3;
    0x000016fa ldr.w r5, [pc, 0x7e8]                         |     
    0x000016fe mov r3, r1                                    |     r3 = r1;
    0x00001700 sub sp, 0x4c                                  |     
    0x00001702 ldr.w r1, [pc, 0x7e4]                         |     r1 = *(0x1eea);
    0x00001706 add r5, pc                                    |     r5 = 0x35f0;
    0x00001708 ldr r4, [sp, 0x70]                            |     r4 = *(arg_70h);
    0x0000170a ldr r1, [r5, r1]                              |     
    0x0000170c movs r5, 0                                    |     r5 = 0;
    0x0000170e ldr r1, [r1]                                  |     r1 = *(0x35f0);
    0x00001710 str r1, [sp, 0x44]                            |     var_44h = r1;
    0x00001712 mov.w r1, 0                                   |     r1 = 0;
    0x00001716 ldrb.w r1, [sp, 0x74]                         |     r1 = *(arg_74h);
    0x0000171a str r5, [sp, 0x3c]                            |     ptr = r5;
                                                             |     if (r1 != 0) {
    0x0000171c cbz r1, 0x1722                                |         
    0x0000171e mov r0, r5                                    |         r0 = r5;
    0x00001720 mov r3, r5                                    |         r3 = r5;
                                                             |     }
    0x00001722 mov r1, r4                                    |     r1 = r4;
    0x00001724 add r4, sp, 0x40                              |     r4 += var_40h;
    0x00001726 str r4, [sp, 0x10]                            |     var_10h = r4;
    0x00001728 movs r7, 0                                    |     r7 = 0;
    0x0000172a add r4, sp, 0x3c                              |     r4 += ptr;
    0x0000172c str r2, [sp]                                  |     *(sp) = r2;
    0x0000172e str r4, [sp, 0xc]                             |     var_ch = r4;
    0x00001730 mov r2, r0                                    |     r2 = r0;
    0x00001732 strd r7, r7, [sp, 4]                          |     __asm ("strd r7, r7, [var_4h]");
    0x00001736 mvn r0, 0x63                                  |     r0 = ~0x63;
    0x0000173a blx 0xe00                                     |     read_full_file_full ();
    0x0000173c sbc.w lr, r2, r4, lsl 4                       |     __asm ("sbc.w lr, r2, r4, lsl 4");
                                                             |     if (r7 < 0) {
    0x00001740 blt.w 0x1a72                                  |         goto label_28;
                                                             |     }
    0x00001744 ldrd r5, sl, [sp, 0x3c]                       |     __asm ("ldrd r5, sl, [ptr]");
    0x00001748 subs r6, 1                                    |     r6--;
    0x0000174a uxth r3, r6                                   |     r3 = (int16_t) r6;
    0x0000174c add.w r2, r5, sl                              |     r2 = r5 + sl;
    0x00001750 str r3, [sp, 0x18]                            |     var_18h = r3;
    0x00001752 adds r3, r5, 4                                |     r3 = r5 + 4;
    0x00001754 cmp r2, r3                                    |     
                                                             |     if (r2 <= r3) {
    0x00001756 blo.w 0x19c6                                  |         goto label_5;
                                                             |     }
    0x0000175a mov sb, r5                                    |     sb = r5;
    0x0000175c mov fp, r7                                    |     
    0x0000175e ldrb.w r1, [sb]                               |     r1 = *(sb);
    0x00001762 ldrb.w r6, [sb, 1]                            |     r6 = *((sb + 1));
    0x00001766 strd r2, r7, [sp, 0x1c]                       |     __asm ("strd r2, r7, [var_20h]");
    0x0000176a sub.w r3, r1, 0x7e                            |     r3 = r1 - 0x7e;
    0x0000176e cmp r3, 1                                     |     
                                                             |     if (r3 < 1) {
    0x00001770 bls 0x17dc                                    |         goto label_29;
                                                             |     }
                                                             | label_0:
    0x00001772 cmp r6, 3                                     |     
                                                             |     if (r6 < 3) {
    0x00001774 bls.w 0x19bc                                  |         goto label_30;
                                                             |     }
    0x00001778 mov.w r8, 0                                   |     r8 = 0;
                                                             | label_1:
    0x0000177c add.w r4, sb, r6                              |     r4 = sb + r6;
    0x00001780 subs r3, r4, r5                               |     r3 = r4 - r5;
    0x00001782 adds r3, 1                                    |     r3++;
    0x00001784 cmp sl, r3                                    |     
                                                             |     if (sl < r3) {
    0x00001786 bls 0x17a0                                    |         goto label_31;
                                                             |     }
    0x00001788 mov r2, r4                                    |     r2 = r4;
                                                             |     do {
    0x0000178a mov r4, r2                                    |         r4 = r2;
    0x0000178c adds r2, 1                                    |         r2++;
    0x0000178e ldrb r3, [r4]                                 |         r3 = *(r4);
                                                             |         if (r3 == 0) {
    0x00001790 cbnz r3, 0x1796                               |             
    0x00001792 ldrb r3, [r2]                                 |             r3 = *(r2);
                                                             |             if (r3 == 0) {
    0x00001794 cbz r3, 0x17a0                                |                 goto label_31;
                                                             |             }
                                                             |         }
    0x00001796 subs r3, r2, r5                               |         r3 = r2 - r5;
    0x00001798 mov r4, r2                                    |         r4 = r2;
    0x0000179a adds r3, 1                                    |         r3++;
    0x0000179c cmp sl, r3                                    |         
    0x0000179e bhi 0x178a                                    |         
                                                             |     } while (sl > r3);
                                                             | label_31:
    0x000017a0 adds r7, r4, 2                                |     r7 = r4 + 2;
    0x000017a2 subs r3, r7, r5                               |     r3 = r7 - r5;
    0x000017a4 cmp sl, r3                                    |     
                                                             |     if (sl <= r3) {
    0x000017a6 blo.w 0x19bc                                  |         goto label_30;
                                                             |     }
    0x000017aa cmp.w r8, 0                                   |     
                                                             |     if (r8 == 0) {
    0x000017ae beq 0x17ec                                    |         goto label_32;
                                                             |     }
                                                             | label_2:
    0x000017b0 ldr r3, [sp, 0x18]                            |     r3 = var_18h;
    0x000017b2 add.w fp, fp, 1                               |     
    0x000017b6 uxth.w fp, fp                                 |     fp = (int16_t) fp;
    0x000017ba cmp r3, fp                                    |     
                                                             |     if (r3 <= fp) {
    0x000017bc blo.w 0x19bc                                  |         goto label_30;
                                                             |     }
    0x000017c0 ldr r3, [sp, 0x1c]                            |     r3 = var_1ch;
    0x000017c2 adds r4, 6                                    |     r4 += 6;
    0x000017c4 cmp r3, r4                                    |     
                                                             |     if (r3 <= r4) {
    0x000017c6 blo.w 0x19bc                                  |         goto label_30;
                                                             |     }
    0x000017ca mov sb, r7                                    |     sb = r7;
    0x000017cc ldrb.w r1, [sb]                               |     r1 = *(sb);
    0x000017d0 ldrb.w r6, [sb, 1]                            |     r6 = *((sb + 1));
    0x000017d4 sub.w r3, r1, 0x7e                            |     r3 = r1 - 0x7e;
    0x000017d8 cmp r3, 1                                     |     
                                                             |     if (r3 > 1) {
    0x000017da bhi 0x1772                                    |         goto label_0;
                                                             |     }
                                                             | label_29:
    0x000017dc cmp r1, 0x7f                                  |     
    0x000017de it ne                                         |     
                                                             |     if (r1 != 0x7f) {
    0x000017e0 cmpne r6, 3                                   |         __asm ("cmpne r6, 3");
                                                             |     }
                                                             |     if (r1 < 0x7f) {
    0x000017e2 bls.w 0x19bc                                  |         goto label_30;
                                                             |     }
    0x000017e6 mov.w r8, 1                                   |     r8 = 1;
    0x000017ea b 0x177c                                      |     goto label_1;
                                                             | label_32:
    0x000017ec cmp r1, 0x10                                  |     
                                                             |     if (r1 == 0x10) {
    0x000017ee beq.w 0x19ca                                  |         goto label_33;
                                                             |     }
    0x000017f0 strh r4, [r5, 6]                              |     *((r5 + 6)) = r4;
    0x000017f2 cmp r1, 0x11                                  |     
                                                             |     if (r1 != 0x11) {
    0x000017f4 bne 0x17b0                                    |         goto label_2;
                                                             |     }
    0x000017f6 blx 0xd7c                                     |     r0 = log_get_max_level ();
    0x000017fa cmp r0, 6                                     |     
                                                             |     if (r0 > 6) {
    0x000017fc bgt.w 0x1ae8                                  |         goto label_34;
                                                             |     }
                                                             | label_7:
    0x00001800 cmp r6, 0x14                                  |     
                                                             |     if (r6 < 0x14) {
    0x00001802 bls.w 0x1b4c                                  |         goto label_10;
                                                             |     }
    0x00001806 ldrh.w r2, [sb, 8]                            |     r2 = *((sb + 8));
    0x0000180a movw r1, 0xfffd                               |     r1 = 0xfffd;
    0x0000180e subs r3, r2, 1                                |     r3 = r2 - 1;
    0x00001810 uxth r3, r3                                   |     r3 = (int16_t) r3;
    0x00001812 cmp r3, r1                                    |     
                                                             |     if (r3 <= r1) {
    0x00001814 bhi 0x182c                                    |         
    0x00001816 ldr.w r3, [pc, 0x6d4]                         |         
    0x0000181a movs r0, 1                                    |         r0 = 1;
    0x0000181c ldr.w r1, [pc, 0x6d0]                         |         
    0x00001820 str r2, [sp]                                  |         *(sp) = r2;
    0x00001822 add r3, pc                                    |         r3 = 0x3714;
    0x00001824 ldr r2, [sp, 0x20]                            |         r2 = var_20h;
    0x00001826 add r1, pc                                    |         r1 = 0x371a;
    0x00001828 blx 0xe54                                     |         printf_chk ()
                                                             |     }
    0x0000182c ldrh.w r2, [sb, 0xa]                          |     r2 = *((sb + 0xa));
    0x00001830 movw r1, 0xfffd                               |     r1 = 0xfffd;
    0x00001834 subs r3, r2, 1                                |     r3 = r2 - 1;
    0x00001836 uxth r3, r3                                   |     r3 = (int16_t) r3;
    0x00001838 cmp r3, r1                                    |     
                                                             |     if (r3 <= r1) {
    0x0000183a bhi 0x1852                                    |         
    0x0000183c ldr.w r3, [pc, 0x6b4]                         |         
    0x00001840 movs r0, 1                                    |         r0 = 1;
    0x00001842 ldr.w r1, [pc, 0x6b4]                         |         
    0x00001846 str r2, [sp]                                  |         *(sp) = r2;
    0x00001848 add r3, pc                                    |         r3 = 0x3740;
    0x0000184a ldr r2, [sp, 0x20]                            |         r2 = var_20h;
    0x0000184c add r1, pc                                    |         r1 = 0x374a;
    0x0000184e blx 0xe54                                     |         printf_chk ()
                                                             |     }
    0x00001852 ldrh.w r1, [sb, 0xc]                          |     r1 = *((sb + 0xc));
    0x00001856 cmp r6, 0x1f                                  |     
    0x00001858 uxth r3, r1                                   |     r3 = (int16_t) r1;
                                                             |     if (r6 >= 0x1f) {
    0x0000185a bls 0x1866                                    |         
    0x0000185c movw r2, 0x7fff                               |         r2 = 0x7fff;
    0x00001860 cmp r3, r2                                    |         
                                                             |         if (r3 == r2) {
    0x00001862 beq.w 0x1d14                                  |             goto label_35;
                                                             |         }
                                                             |     }
    0x00001866 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00001868 beq.w 0x1db0                                  |         goto label_36;
                                                             |     }
    0x0000186c movw r2, 0xffff                               |     r2 = 0xffff;
    0x00001870 cmp r3, r2                                    |     
                                                             |     if (r3 != r2) {
    0x00001872 beq 0x18b6                                    |         
    0x00001874 ubfx r3, r3, 0, 0xf                           |         r3 = (r3 >> 0) & ((1 << 0xf) - 1);
    0x00001878 lsls r0, r1, 0x10                             |         r0 = r1 << 0x10;
    0x0000187a ldr r0, [sp, 0x20]                            |         r0 = var_20h;
    0x0000187c mov.w r2, 0                                   |         r2 = 0;
    0x00001880 itt pl                                        |         
                                                             |         if (r0 < r1) {
    0x00001882 lsrpl r2, r3, 0x16                            |             r2 = r3 >> 0x16;
                                                             |         }
                                                             |         if (r0 < r1) {
    0x00001884 lslpl r3, r3, 0xa                             |             r3 <<= 0xa;
                                                             |         }
    0x00001886 lsls r2, r2, 0xa                              |         r2 <<= 0xa;
    0x00001888 cmp r0, 0                                     |         
    0x0000188a orr.w r2, r2, r3, lsr 22                      |         r2 |= (r3 >> 22);
    0x0000188e lsl.w r3, r3, 0xa                             |         r3 <<= 0xa;
                                                             |         if (r0 < 0) {
    0x00001892 blt.w 0x1d78                                  |             goto label_37;
                                                             |         }
    0x00001896 strd r3, r2, [sp, 8]                          |         __asm ("strd r3, r2, [var_ch]");
    0x0000189a ldr.w r3, [pc, 0x660]                         |         
    0x0000189e ldr.w r2, [pc, 0x660]                         |         
    0x000018a2 ldr.w r1, [pc, 0x660]                         |         
    0x000018a6 add r3, pc                                    |         r3 = 0x37a8;
    0x000018a8 str r3, [sp]                                  |         *(sp) = r3;
    0x000018aa add r2, pc                                    |         r2 = 0x37b0;
    0x000018ac mov r3, r0                                    |         r3 = r0;
    0x000018ae add r1, pc                                    |         r1 = 0x37b8;
    0x000018b0 movs r0, 1                                    |         r0 = 1;
    0x000018b2 blx 0xe54                                     |         printf_chk ()
                                                             |     }
                                                             | label_13:
    0x000018b6 ldrb.w r3, [sb, 0xe]                          |     r3 = *((sb + 0xe));
    0x000018ba cmp r3, 0x10                                  |     
                                                             |     if (r3 > 0x10) {
    0x000018bc bhi.w 0x1b5c                                  |         goto label_38;
                                                             |     }
    0x000018c0 ldr.w r2, [pc, 0x644]                         |     
    0x000018c4 add r2, pc                                    |     r2 = 0x37d0;
    0x000018c6 ldr.w r3, [r2, r3, lsl 2]                     |     r3 = *(0x37d0);
    0x000018ca cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x000018cc beq.w 0x1dde                                  |         goto label_39;
                                                             |     }
                                                             | label_9:
    0x000018d0 ldr.w r1, [pc, 0x638]                         |     
    0x000018d4 movs r0, 1                                    |     r0 = 1;
    0x000018d6 ldr r2, [sp, 0x20]                            |     r2 = var_20h;
    0x000018d8 add r1, pc                                    |     r1 = 0x37e8;
    0x000018da blx 0xe54                                     |     printf_chk ()
    0x000018de ldrb.w r3, [sb, 0xf]                          |     r3 = *((sb + 0xf));
    0x000018e2 cmp r3, 0xff                                  |     
                                                             |     if (r3 == 0xff) {
    0x000018e4 beq.w 0x1d66                                  |         goto label_40;
                                                             |     }
    0x000018e8 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x000018ea bne.w 0x1d58                                  |         goto label_41;
                                                             |     }
                                                             | label_14:
    0x000018ee ldrb.w r3, [sb, 0x10]                         |     r3 = *((sb + 0x10));
    0x000018f2 mov r2, r6                                    |     r2 = r6;
    0x000018f4 ldr.w r8, [sp, 0x20]                          |     r8 = var_20h;
    0x000018f8 ldr.w r0, [pc, 0x614]                         |     
    0x000018fc str r3, [sp]                                  |     *(sp) = r3;
    0x000018fe mov r3, sb                                    |     r3 = sb;
    0x00001900 mov r1, r8                                    |     r1 = r8;
    0x00001902 add r0, pc                                    |     r0 = 0x3816;
    0x00001904 bl 0x154c                                     |     fcn_0000154c (r0, r1, r2, r3);
    0x00001908 ldrb.w r3, [sb, 0x11]                         |     r3 = *((sb + 0x11));
    0x0000190c mov r2, r6                                    |     r2 = r6;
    0x0000190e ldr.w r0, [pc, 0x604]                         |     
    0x00001912 mov r1, r8                                    |     r1 = r8;
    0x00001914 str r3, [sp]                                  |     *(sp) = r3;
    0x00001916 mov r3, sb                                    |     r3 = sb;
    0x00001918 add r0, pc                                    |     r0 = 0x3832;
    0x0000191a bl 0x154c                                     |     fcn_0000154c (r0, r1, r2, r3);
    0x0000191e ldrb.w r3, [sb, 0x12]                         |     r3 = *((sb + 0x12));
    0x00001922 cmp r3, 0x21                                  |     
                                                             |     if (r3 > 0x21) {
    0x00001924 bhi.w 0x1b54                                  |         goto label_42;
                                                             |     }
    0x00001928 ldr.w r2, [pc, 0x5ec]                         |     
    0x0000192c add r2, pc                                    |     r2 = 0x3848;
    0x0000192e ldr.w r3, [r2, r3, lsl 2]                     |     r3 = *(0x3848);
    0x00001932 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00001934 beq.w 0x1dd8                                  |         goto label_43;
                                                             |     }
                                                             | label_8:
    0x00001938 ldr.w r8, [sp, 0x20]                          |     r8 = var_20h;
    0x0000193c movs r0, 1                                    |     r0 = 1;
    0x0000193e ldr.w r1, [pc, 0x5dc]                         |     
    0x00001942 mov r2, r8                                    |     r2 = r8;
    0x00001944 add r1, pc                                    |     r1 = 0x3866;
    0x00001946 blx 0xe54                                     |     printf_chk ()
    0x0000194a ldrh.w r3, [sb, 0x13]                         |     r3 = *((sb + 0x13));
    0x0000194e cmp r3, 1                                     |     
    0x00001950 str r3, [sp, 0x24]                            |     var_24h = r3;
                                                             |     if (r3 < 1) {
    0x00001952 bls.w 0x1cee                                  |         goto label_44;
                                                             |     }
    0x00001956 ldr.w r1, [pc, 0x5c8]                         |     
    0x0000195a movs r0, 1                                    |     r0 = 1;
    0x0000195c ldr r2, [sp, 0x20]                            |     r2 = var_20h;
    0x0000195e add r1, pc                                    |     r1 = 0x3884;
    0x00001960 blx 0xe54                                     |     printf_chk ()
    0x00001964 ldr.w r3, [pc, 0x5bc]                         |     
    0x00001968 movs r2, 1                                    |     r2 = 1;
    0x0000196a ldr.w r1, [pc, 0x5bc]                         |     
    0x0000196e mov r8, r2                                    |     r8 = r2;
    0x00001970 ldr.w r0, [pc, 0x5b8]                         |     
    0x00001974 add r3, pc                                    |     r3 = 0x389c;
    0x00001976 strd r5, sl, [sp, 0x28]                       |     __asm ("strd r5, sl, [var_28h]");
    0x0000197a add r1, pc                                    |     r1 = 0x38a8;
    0x0000197c strd r6, r4, [sp, 0x30]                       |     __asm ("strd r6, r4, [var_30h]");
    0x00001980 add r0, pc                                    |     r0 = 0x38b0;
    0x00001982 ldr r5, [sp, 0x24]                            |     r5 = var_24h;
    0x00001984 mov r6, r3                                    |     r6 = r3;
    0x00001986 mov sl, r1                                    |     sl = r1;
    0x00001988 mov r4, r0                                    |     r4 = r0;
    0x0000198a b 0x19ac                                      |     goto label_45;
                                                             | label_3:
    0x0000198c ldr.w r2, [pc, 0x5a0]                         |     
    0x00001990 add r2, pc                                    |     r2 = 0x38c4;
                                                             | label_4:
    0x00001992 ldr.w r3, [r6, r8, lsl 2]                     |     offset_0 = r8 << 2;
                                                             |     r3 = *((r6 + offset_0));
    0x00001996 mov r1, sl                                    |     r1 = sl;
    0x00001998 movs r0, 1                                    |     r0 = 1;
    0x0000199a blx 0xe54                                     |     printf_chk ()
    0x0000199e movs r2, 0                                    |     r2 = 0;
                                                             |     do {
    0x000019a0 add.w r8, r8, 1                               |         r8++;
    0x000019a4 cmp.w r8, 0x10                                |         
                                                             |         if (r8 == 0x10) {
    0x000019a8 beq.w 0x1b3a                                  |             goto label_46;
                                                             |         }
                                                             | label_45:
    0x000019ac asr.w r3, r5, r8                              |         r3 = r5 >> r8;
    0x000019b0 lsls r1, r3, 0x1f                             |         r1 = r3 << 0x1f;
    0x000019b2 bpl 0x19a0                                    |         
                                                             |     } while (r1 >= r3);
    0x000019b4 cmp r2, 0                                     |     
                                                             |     if (r2 == 0) {
    0x000019b6 beq 0x198c                                    |         goto label_3;
                                                             |     }
    0x000019b8 mov r2, r4                                    |     r2 = r4;
    0x000019ba b 0x1992                                      |     goto label_4;
                                                             | label_30:
    0x000019bc ldr.w ip, [sp, 0x20]                          |     ip = var_20h;
    0x000019c0 cmp.w ip, 0                                   |     
                                                             |     if (ip != 0) {
    0x000019c4 bne 0x1ab2                                    |         goto label_47;
                                                             |     }
                                                             | label_5:
    0x000019c6 movs r4, 0                                    |     r4 = 0;
    0x000019c8 b 0x1a8a                                      |     goto label_48;
                                                             | label_33:
    0x000019ca blx 0xd7c                                     |     r0 = log_get_max_level ();
    0x000019ce cmp r0, 6                                     |     
                                                             |     if (r0 > 6) {
    0x000019d0 bgt 0x1ac2                                    |         goto label_49;
                                                             |     }
                                                             | label_6:
    0x000019d2 cmp r6, 0xe                                   |     
                                                             |     if (r6 < 0xe) {
    0x000019d4 bls.w 0x17b0                                  |         goto label_2;
                                                             |     }
    0x000019d8 ldrb.w r3, [sb, 5]                            |     r3 = *((sb + 5));
    0x000019dc cmp r3, 3                                     |     
                                                             |     if (r3 != 3) {
    0x000019de bne.w 0x17b0                                  |         goto label_2;
                                                             |     }
    0x000019e2 blx 0xd7c                                     |     r0 = log_get_max_level ();
    0x000019e6 cmp r0, 6                                     |     
                                                             |     if (r0 > 6) {
    0x000019e8 bgt.w 0x1d90                                  |         goto label_50;
                                                             |     }
                                                             | label_15:
    0x000019ec ldrb.w r3, [sb, 4]                            |     r3 = *((sb + 4));
    0x000019f0 cmp r3, 0xa                                   |     
                                                             |     if (r3 < 0xa) {
    0x000019f2 bls.w 0x1d00                                  |         goto label_51;
                                                             |     }
    0x000019f6 add.w r2, r3, 0x60                            |     r2 = r3 + 0x60;
    0x000019fa uxtb r2, r2                                   |     r2 = (int8_t) r2;
    0x000019fc cmp r2, 4                                     |     
                                                             |     if (r2 > 4) {
    0x000019fe bhi.w 0x1de4                                  |         goto label_52;
                                                             |     }
    0x00001a02 ldr.w r2, [pc, 0x530]                         |     
    0x00001a06 subs r3, 0xa0                                 |     r3 -= 0xa0;
    0x00001a08 add r2, pc                                    |     
    0x00001a0a ldr.w r2, [r2, r3, lsl 2]                     |     r2 = *(0x3942);
                                                             | label_12:
    0x00001a0e ldr.w r1, [pc, 0x528]                         |     
    0x00001a12 movs r0, 1                                    |     r0 = 1;
    0x00001a14 add r1, pc                                    |     r1 = 0x3952;
    0x00001a16 blx 0xe54                                     |     printf_chk ()
    0x00001a1a ldrb.w r3, [sb, 6]                            |     r3 = *((sb + 6));
    0x00001a1e cmp r3, 3                                     |     
                                                             |     if (r3 != 3) {
    0x00001a20 beq 0x1a44                                    |         
    0x00001a22 cmp r3, 7                                     |         
                                                             |         if (r3 > 7) {
    0x00001a24 bhi.w 0x1dbe                                  |             goto label_53;
                                                             |         }
    0x00001a28 ldr.w r2, [pc, 0x510]                         |         
    0x00001a2c add r2, pc                                    |         
    0x00001a2e ldr.w r2, [r2, r3, lsl 2]                     |         r2 = *(0x396c);
    0x00001a32 cmp r2, 0                                     |         
                                                             |         if (r2 == 0) {
    0x00001a34 beq.w 0x1dea                                  |             goto label_54;
                                                             |         }
                                                             | label_16:
    0x00001a38 ldr.w r1, [pc, 0x504]                         |         
    0x00001a3c movs r0, 1                                    |         r0 = 1;
    0x00001a3e add r1, pc                                    |         r1 = 0x3982;
    0x00001a40 blx 0xe54                                     |         printf_chk ()
                                                             |     }
    0x00001a44 ldr.w r3, [sb, 7]                             |     r3 = *((sb + 7));
    0x00001a48 cmp.w r3, -0x80000000                         |     
                                                             |     if (r3 == -0x80000000) {
    0x00001a4c beq.w 0x1d32                                  |         goto label_55;
                                                             |     }
    0x00001a50 lsrs r2, r3, 0x16                             |     r2 = r3 >> 0x16;
    0x00001a52 lsls r3, r3, 0xa                              |     r3 <<= 0xa;
    0x00001a54 ldr.w r1, [pc, 0x4ec]                         |     
    0x00001a58 str r2, [sp, 4]                               |     var_4h = r2;
    0x00001a5a movs r0, 1                                    |     r0 = 1;
    0x00001a5c str r3, [sp]                                  |     *(sp) = r3;
    0x00001a5e ldr.w r2, [pc, 0x4e8]                         |     
    0x00001a62 add r1, pc                                    |     r1 = 0x39aa;
    0x00001a64 ldr.w r3, [pc, 0x4e4]                         |     
    0x00001a68 add r2, pc                                    |     r2 = 0x39b6;
    0x00001a6a add r3, pc                                    |     r3 = 0x39ba;
    0x00001a6c blx 0xe54                                     |     printf_chk ()
    0x00001a70 b 0x17b0                                      |     goto label_2;
                                                             | label_28:
    0x00001a72 blx 0xd7c                                     |     r0 = log_get_max_level ();
    0x00001a76 cmp r0, 2                                     |     
                                                             |     if (r0 > 2) {
    0x00001a78 bgt 0x1b12                                    |         goto label_56;
                                                             |     }
    0x00001a7a rsbs r4, r4, 0                                |     r4 -= ;
    0x00001a7c bic r4, r4, 0x40000000                        |     r4 = BIT_MASK (r4, 0x40000000);
    0x00001a80 rsbs r4, r4, 0                                |     r4 -= ;
                                                             |     do {
    0x00001a82 cmp r4, 0                                     |         
    0x00001a84 it ge                                         |         
                                                             |         if (r4 < 0) {
    0x00001a86 mvnge r4, 0x55                                |             r4 = ~0x55;
                                                             |         }
                                                             | label_48:
    0x00001a8a ldr r0, [sp, 0x3c]                            |         r0 = ptr;
    0x00001a8c blx 0xd1c                                     |         free (r0);
    0x00001a90 ldr.w r2, [pc, 0x4bc]                         |         
    0x00001a94 ldr.w r3, [pc, 0x450]                         |         r3 = *(0x1ee8);
    0x00001a98 add r2, pc                                    |         r2 = 0x39ec;
    0x00001a9a ldr r3, [r2, r3]                              |         r3 = *(0x39ec);
    0x00001a9c ldr r2, [r3]                                  |         r2 = *(0x39ec);
    0x00001a9e ldr r3, [sp, 0x44]                            |         r3 = var_44h;
    0x00001aa0 eors r2, r3                                   |         r2 ^= r3;
    0x00001aa2 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x00001aa6 bne.w 0x1e26                                  |             goto label_57;
                                                             |         }
    0x00001aaa mov r0, r4                                    |         r0 = r4;
    0x00001aac add sp, 0x4c                                  |         
    0x00001aae pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |         
                                                             | label_47:
    0x00001ab2 ldr.w r1, [pc, 0x4a0]                         |         
    0x00001ab6 mov r2, ip                                    |         r2 = ip;
    0x00001ab8 movs r0, 1                                    |         r0 = 1;
    0x00001aba add r1, pc                                    |         r1 = 0x3a14;
    0x00001abc blx 0xe54                                     |         printf_chk ()
    0x00001ac0 b 0x19c6                                      |         goto label_5;
                                                             | label_49:
    0x00001ac2 ldr.w r3, [pc, 0x494]                         |         
    0x00001ac6 mov r1, r8                                    |         r1 = r8;
    0x00001ac8 ldr.w r2, [pc, 0x490]                         |         
    0x00001acc movs r0, 7                                    |         r0 = 7;
    0x00001ace add r3, pc                                    |         r3 = 0x3a2c;
    0x00001ad0 str r3, [sp, 4]                               |         var_4h = r3;
    0x00001ad2 add r2, pc                                    |         r2 = 0x3a32;
    0x00001ad4 ldr.w r3, [pc, 0x488]                         |         
    0x00001ad8 adds r2, 7                                    |         r2 += 7;
    0x00001ada add r3, pc                                    |         r3 = 0x3a3e;
    0x00001adc str r3, [sp]                                  |         *(sp) = r3;
    0x00001ade mov.w r3, 0x1ae                               |         r3 = 0x1ae;
    0x00001ae2 blx 0xdb8                                     |         log_internal ();
    0x00001ae6 b 0x19d2                                      |         goto label_6;
                                                             | label_34:
    0x00001ae8 ldr r3, [sp, 0x20]                            |         r3 = var_20h;
    0x00001aea mov r1, r8                                    |         r1 = r8;
    0x00001aec ldr.w r2, [pc, 0x474]                         |         
    0x00001af0 movs r0, 7                                    |         r0 = 7;
    0x00001af2 str r3, [sp, 8]                               |         var_8h = r3;
    0x00001af4 ldr.w r3, [pc, 0x470]                         |         
    0x00001af8 add r2, pc                                    |         r2 = 0x3a60;
    0x00001afa adds r2, 7                                    |         r2 += 7;
    0x00001afc add r3, pc                                    |         r3 = 0x3a68;
    0x00001afe str r3, [sp, 4]                               |         var_4h = r3;
    0x00001b00 ldr.w r3, [pc, 0x468]                         |         
    0x00001b04 add r3, pc                                    |         r3 = 0x3a74;
    0x00001b06 str r3, [sp]                                  |         *(sp) = r3;
    0x00001b08 movw r3, 0x1c3                                |         r3 = 0x1c3;
    0x00001b0c blx 0xdb8                                     |         log_internal ();
    0x00001b10 b 0x1800                                      |         goto label_7;
                                                             | label_56:
    0x00001b12 ldr.w r2, [pc, 0x45c]                         |         
    0x00001b16 mov r1, r4                                    |         r1 = r4;
    0x00001b18 ldr.w r5, [pc, 0x458]                         |         
    0x00001b1c movw r3, 0x24a                                |         r3 = 0x24a;
    0x00001b20 ldr.w r0, [pc, 0x454]                         |         
    0x00001b24 add r2, pc                                    |         r2 = 0x3a9a;
    0x00001b26 add r5, pc                                    |         r5 = 0x3a9e;
    0x00001b28 adds r2, 7                                    |         r2 += 7;
    0x00001b2a add r0, pc                                    |         r0 = 0x3aa6;
    0x00001b2c strd r0, r5, [sp]                             |         __asm ("strd r0, r5, [sp]");
    0x00001b30 movs r0, 3                                    |         r0 = 3;
    0x00001b32 blx 0xdb8                                     |         r0 = log_internal ();
    0x00001b36 mov r4, r0                                    |         r4 = r0;
    0x00001b38 b 0x1a82                                      |         
                                                             |     } while (1);
                                                             | label_46:
    0x00001b3a movs r0, 0xa                                  |     r0 = 0xa;
    0x00001b3c ldrd r5, sl, [sp, 0x28]                       |     __asm ("ldrd r5, sl, [var_28h]");
    0x00001b40 ldrd r6, r4, [sp, 0x30]                       |     __asm ("ldrd r6, r4, [var_30h]");
    0x00001b44 blx 0xd88                                     |     putchar (r0);
                                                             | label_11:
    0x00001b48 cmp r6, 0x16                                  |     
    0x00001b4a bhi 0x1b64                                    |     
                                                             |     while (r6 < 0x1a) {
                                                             | label_10:
    0x00001b4c ldr r3, [sp, 0x20]                            |         r3 = var_20h;
    0x00001b4e adds r3, 1                                    |         r3++;
    0x00001b50 str r3, [sp, 0x20]                            |         var_20h = r3;
    0x00001b52 b 0x17b0                                      |         goto label_2;
                                                             | label_42:
    0x00001b54 ldr.w r3, [pc, 0x424]                         |         
    0x00001b58 add r3, pc                                    |         r3 = 0x3ad8;
    0x00001b5a b 0x1938                                      |         goto label_8;
                                                             | label_38:
    0x00001b5c ldr.w r3, [pc, 0x420]                         |         
    0x00001b60 add r3, pc                                    |         r3 = 0x3ae4;
    0x00001b62 b 0x18d0                                      |         goto label_9;
    0x00001b64 ldrh.w r3, [sb, 0x15]                         |         r3 = *((sb + 0x15));
    0x00001b68 cmp r3, 0                                     |         
                                                             |         if (r3 != 0) {
    0x00001b6a bne.w 0x1dc4                                  |             goto label_58;
                                                             |         }
                                                             | label_17:
    0x00001b6e cmp r6, 0x1a                                  |         
    0x00001b70 bls 0x1b4c                                    |         
                                                             |     }
    0x00001b72 ldr.w r8, [sp, 0x20]                          |     r8 = var_20h;
    0x00001b76 mov r2, r6                                    |     r2 = r6;
    0x00001b78 ldrb.w r3, [sb, 0x17]                         |     r3 = *((sb + 0x17));
    0x00001b7c ldr.w r0, [pc, 0x404]                         |     
    0x00001b80 mov r1, r8                                    |     r1 = r8;
    0x00001b82 str r3, [sp]                                  |     *(sp) = r3;
    0x00001b84 mov r3, sb                                    |     r3 = sb;
    0x00001b86 add r0, pc                                    |     r0 = 0x3b0e;
    0x00001b88 bl 0x154c                                     |     fcn_0000154c (r0, r1, r2, r3);
    0x00001b8c ldrb.w r3, [sb, 0x18]                         |     r3 = *((sb + 0x18));
    0x00001b90 mov r2, r6                                    |     r2 = r6;
    0x00001b92 ldr r0, [pc, 0x3f4]                           |     
    0x00001b94 mov r1, r8                                    |     r1 = r8;
    0x00001b96 str r3, [sp]                                  |     *(sp) = r3;
    0x00001b98 mov r3, sb                                    |     r3 = sb;
    0x00001b9a add r0, pc                                    |     r0 = 0x3b28;
    0x00001b9c bl 0x154c                                     |     fcn_0000154c (r0, r1, r2, r3);
    0x00001ba0 ldrb.w r3, [sb, 0x19]                         |     r3 = *((sb + 0x19));
    0x00001ba4 mov r2, r6                                    |     r2 = r6;
    0x00001ba6 ldr r0, [pc, 0x3e4]                           |     
    0x00001ba8 mov r1, r8                                    |     r1 = r8;
    0x00001baa str r3, [sp]                                  |     *(sp) = r3;
    0x00001bac mov r3, sb                                    |     r3 = sb;
    0x00001bae add r0, pc                                    |     r0 = 0x3b40;
    0x00001bb0 bl 0x154c                                     |     fcn_0000154c (r0, r1, r2, r3);
    0x00001bb4 ldrb.w r3, [sb, 0x1a]                         |     r3 = *((sb + 0x1a));
    0x00001bb8 mov r2, r6                                    |     r2 = r6;
    0x00001bba ldr r0, [pc, 0x3d4]                           |     
    0x00001bbc mov r1, r8                                    |     r1 = r8;
    0x00001bbe str r3, [sp]                                  |     *(sp) = r3;
    0x00001bc0 mov r3, sb                                    |     r3 = sb;
    0x00001bc2 add r0, pc                                    |     r0 = 0x3b58;
    0x00001bc4 bl 0x154c                                     |     fcn_0000154c (r0, r1, r2, r3);
    0x00001bc8 cmp r6, 0x1b                                  |     
                                                             |     if (r6 == 0x1b) {
    0x00001bca beq 0x1b4c                                    |         goto label_10;
                                                             |     }
    0x00001bcc ldrb.w r3, [sb, 0x1b]                         |     r3 = *((sb + 0x1b));
    0x00001bd0 ands r3, r3, 0xf                              |     r3 &= 0xf;
                                                             |     if (r3 != r3) {
    0x00001bd4 bne.w 0x1df0                                  |         goto label_59;
                                                             |     }
                                                             | label_18:
    0x00001bd8 cmp r6, 0x21                                  |     
                                                             |     if (r6 < 0x21) {
    0x00001bda bls 0x1b4c                                    |         goto label_10;
                                                             |     }
    0x00001bdc ldrh.w r3, [sb, 0x20]                         |     r3 = *((sb + 0x20));
    0x00001be0 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00001be2 bne.w 0x1dfe                                  |         goto label_60;
                                                             |     }
                                                             | label_19:
    0x00001be6 cmp r6, 0x27                                  |     
                                                             |     if (r6 < 0x27) {
    0x00001be8 bls 0x1b4c                                    |         goto label_10;
                                                             |     }
    0x00001bea ldr.w r8, [sp, 0x20]                          |     r8 = var_20h;
    0x00001bee ldr r0, [pc, 0x3a4]                           |     
    0x00001bf0 ldrh.w r2, [sb, 0x22]                         |     r2 = *((sb + 0x22));
    0x00001bf4 mov r1, r8                                    |     r1 = r8;
    0x00001bf6 add r0, pc                                    |     r0 = 0x3b90;
    0x00001bf8 bl 0x1488                                     |     fcn_00001488 (r0, r1, r2);
    0x00001bfc ldr r0, [pc, 0x398]                           |     
    0x00001bfe mov r1, r8                                    |     r1 = r8;
    0x00001c00 ldrh.w r2, [sb, 0x24]                         |     r2 = *((sb + 0x24));
    0x00001c04 add r0, pc                                    |     r0 = 0x3ba0;
    0x00001c06 bl 0x1488                                     |     fcn_00001488 (r0, r1, r2);
    0x00001c0a ldr r0, [pc, 0x390]                           |     
    0x00001c0c mov r1, r8                                    |     r1 = r8;
    0x00001c0e ldrh.w r2, [sb, 0x26]                         |     r2 = *((sb + 0x26));
    0x00001c12 add r0, pc                                    |     r0 = 0x3bb4;
    0x00001c14 bl 0x1488                                     |     fcn_00001488 (r0, r1, r2);
    0x00001c16 ldc2 p14, c2, [r8], -0xcc                     |     __asm ("ldc2 p14, c2, [r8], -0xcc");
                                                             |     if (r6 < 0x27) {
    0x00001c1a bls 0x1b4c                                    |         goto label_10;
                                                             |     }
    0x00001c1c ldrb.w r3, [sb, 0x28]                         |     r3 = *((sb + 0x28));
    0x00001c20 cmp r3, 7                                     |     
                                                             |     if (r3 > 7) {
    0x00001c22 bhi.w 0x1e30                                  |         goto label_61;
                                                             |     }
    0x00001c26 ldr r2, [pc, 0x378]                           |     
    0x00001c28 add r2, pc                                    |     r2 = 0x3bce;
    0x00001c2a ldr.w r3, [r2, r3, lsl 2]                     |     r3 = *(0x3bce);
    0x00001c2e cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00001c30 beq.w 0x1e2a                                  |         goto label_62;
                                                             |     }
                                                             | label_21:
    0x00001c34 ldr.w r8, [sp, 0x20]                          |     r8 = var_20h;
    0x00001c38 movs r0, 1                                    |     r0 = 1;
    0x00001c3a ldr r1, [pc, 0x368]                           |     
    0x00001c3c mov r2, r8                                    |     r2 = r8;
    0x00001c3e add r1, pc                                    |     r1 = 0x3be8;
    0x00001c40 blx 0xe54                                     |     printf_chk ()
    0x00001c44 ldrh.w r3, [sb, 0x29]                         |     r3 = *((sb + 0x29));
    0x00001c48 cmp r3, 1                                     |     
    0x00001c4a str r3, [sp, 0x24]                            |     var_24h = r3;
                                                             |     if (r3 > 1) {
    0x00001c4c bhi.w 0x1e86                                  |         goto label_63;
                                                             |     }
                                                             | label_27:
    0x00001c50 ldrb.w r3, [sb, 0x2b]                         |     r3 = *((sb + 0x2b));
    0x00001c54 mov r2, r6                                    |     r2 = r6;
    0x00001c56 ldr r0, [pc, 0x350]                           |     
    0x00001c58 ldr r1, [sp, 0x20]                            |     r1 = var_20h;
    0x00001c5a str r3, [sp]                                  |     *(sp) = r3;
    0x00001c5c mov r3, sb                                    |     r3 = sb;
    0x00001c5e add r0, pc                                    |     r0 = 0x3c0c;
    0x00001c60 bl 0x154c                                     |     fcn_0000154c (r0, r1, r2, r3);
    0x00001c64 ldrh.w r3, [sb, 0x2c]                         |     r3 = *((sb + 0x2c));
    0x00001c68 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00001c6a bne.w 0x1e68                                  |         goto label_64;
                                                             |     }
                                                             | label_24:
    0x00001c6e ldrh.w r3, [sb, 0x2e]                         |     r3 = *((sb + 0x2e));
    0x00001c72 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00001c74 bne.w 0x1e54                                  |         goto label_65;
                                                             |     }
                                                             | label_23:
    0x00001c78 ldrh.w r3, [sb, 0x30]                         |     r3 = *((sb + 0x30));
    0x00001c7c cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00001c7e bne.w 0x1e36                                  |         goto label_66;
                                                             |     }
                                                             | label_22:
    0x00001c82 ldrh.w r3, [sb, 0x32]                         |     r3 = *((sb + 0x32));
    0x00001c86 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00001c88 bne.w 0x1e12                                  |         goto label_67;
                                                             |     }
                                                             | label_20:
    0x00001c8c cmp r6, 0x3b                                  |     
                                                             |     if (r6 < 0x3b) {
    0x00001c8e bls.w 0x1b4c                                  |         goto label_10;
                                                             |     }
    0x00001c92 ldr r0, [pc, 0x318]                           |     
    0x00001c94 ldr.w r2, [sb, 0x34]                          |     r2 = *((sb + 0x34));
    0x00001c98 ldr.w r3, [sb, 0x38]                          |     r3 = *((sb + 0x38));
    0x00001c9c ldr r1, [sp, 0x20]                            |     r1 = var_20h;
    0x00001c9e add r0, pc                                    |     r0 = 0x3c50;
    0x00001ca0 bl 0x1698                                     |     fcn_00001698 (r0, r1, r2, r3);
    0x00001ca4 cmp r6, 0x43                                  |     
                                                             |     if (r6 < 0x43) {
    0x00001ca6 bls.w 0x1b4c                                  |         goto label_10;
                                                             |     }
    0x00001caa ldr r0, [pc, 0x304]                           |     
    0x00001cac ldr.w r2, [sb, 0x3c]                          |     r2 = *((sb + 0x3c));
    0x00001cb0 ldr.w r3, [sb, 0x40]                          |     r3 = *((sb + 0x40));
    0x00001cb4 ldr r1, [sp, 0x20]                            |     r1 = var_20h;
    0x00001cb6 add r0, pc                                    |     r0 = 0x3c6c;
    0x00001cb8 bl 0x1698                                     |     fcn_00001698 (r0, r1, r2, r3);
    0x00001cbc cmp r6, 0x4b                                  |     
                                                             |     if (r6 < 0x4b) {
    0x00001cbe bls.w 0x1b4c                                  |         goto label_10;
                                                             |     }
    0x00001cc2 ldr r0, [pc, 0x2f0]                           |     
    0x00001cc4 ldr.w r2, [sb, 0x44]                          |     r2 = *((sb + 0x44));
    0x00001cc8 ldr.w r3, [sb, 0x48]                          |     r3 = *((sb + 0x48));
    0x00001ccc ldr r1, [sp, 0x20]                            |     r1 = var_20h;
    0x00001cce add r0, pc                                    |     r0 = 0x3c88;
    0x00001cd0 bl 0x1698                                     |     fcn_00001698 (r0, r1, r2, r3);
    0x00001cd4 cmp r6, 0x53                                  |     
                                                             |     if (r6 < 0x53) {
    0x00001cd6 bls.w 0x1b4c                                  |         goto label_10;
                                                             |     }
    0x00001cda ldr r0, [pc, 0x2dc]                           |     
    0x00001cdc ldr.w r2, [sb, 0x4c]                          |     r2 = *((sb + 0x4c));
    0x00001ce0 ldr.w r3, [sb, 0x50]                          |     r3 = *((sb + 0x50));
    0x00001ce4 ldr r1, [sp, 0x20]                            |     r1 = var_20h;
    0x00001ce6 add r0, pc                                    |     r0 = 0x3ca4;
    0x00001ce8 bl 0x1698                                     |     fcn_00001698 (r0, r1, r2, r3);
    0x00001cec b 0x1b4c                                      |     goto label_10;
                                                             | label_44:
    0x00001cee ldr r3, [pc, 0x2cc]                           |     
    0x00001cf0 mov r2, r8                                    |     r2 = r8;
    0x00001cf2 ldr r1, [pc, 0x2cc]                           |     
    0x00001cf4 movs r0, 1                                    |     r0 = 1;
    0x00001cf6 add r3, pc                                    |     r3 = 0x3cb8;
    0x00001cf8 add r1, pc                                    |     r1 = 0x3cbe;
    0x00001cfa blx 0xe54                                     |     printf_chk ()
    0x00001cfe b 0x1b48                                      |     goto label_11;
                                                             | label_51:
    0x00001d00 ldr r2, [pc, 0x2c0]                           |     
    0x00001d02 add r2, pc                                    |     
    0x00001d04 ldr.w r2, [r2, r3, lsl 2]                     |     r2 = *(0x3cca);
    0x00001d08 cmp r2, 0                                     |     
                                                             |     if (r2 != 0) {
    0x00001d0a bne.w 0x1a0e                                  |         goto label_12;
                                                             |     }
    0x00001d0e ldr r2, [pc, 0x2b8]                           |     
    0x00001d10 add r2, pc                                    |     r2 = 0x3cde;
    0x00001d12 b 0x1a0e                                      |     goto label_12;
                                                             | label_35:
    0x00001d14 ldr.w r3, [sb, 0x1c]                          |     r3 = *((sb + 0x1c));
    0x00001d18 movs r0, 1                                    |     r0 = 1;
    0x00001d1a ldr r1, [pc, 0x2b0]                           |     
    0x00001d1c ldr r2, [sp, 0x20]                            |     r2 = var_20h;
    0x00001d1e lsr.w ip, r3, 0xc                             |     
    0x00001d22 lsls r3, r3, 0x14                             |     r3 <<= 0x14;
    0x00001d24 add r1, pc                                    |     r1 = 0x3cf6;
    0x00001d26 str.w ip, [sp, 4]                             |     __asm ("str.w ip, [var_4h]");
    0x00001d2a str r3, [sp]                                  |     *(sp) = r3;
    0x00001d2c blx 0xe54                                     |     printf_chk ()
    0x00001d30 b 0x18b6                                      |     goto label_13;
                                                             | label_55:
    0x00001d32 cmp r6, 0x16                                  |     
                                                             |     if (r6 < 0x16) {
    0x00001d34 bls.w 0x17b0                                  |         goto label_2;
                                                             |     }
    0x00001d38 ldr.w r2, [sb, 0xf]                           |     r2 = *((sb + 0xf));
    0x00001d3c movs r0, 1                                    |     r0 = 1;
    0x00001d3e ldr.w r3, [sb, 0x13]                          |     r3 = *((sb + 0x13));
    0x00001d42 ldr r1, [pc, 0x28c]                           |     
    0x00001d44 strd r2, r3, [sp]                             |     __asm ("strd r2, r3, [sp]");
    0x00001d48 ldr r3, [pc, 0x288]                           |     
    0x00001d4a add r1, pc                                    |     r1 = 0x3d20;
    0x00001d4c ldr r2, [pc, 0x288]                           |     
    0x00001d4e add r3, pc                                    |     r3 = 0x3d26;
    0x00001d50 add r2, pc                                    |     r2 = 0x3d2c;
    0x00001d52 blx 0xe54                                     |     printf_chk ()
    0x00001d56 b 0x17b0                                      |     goto label_2;
                                                             | label_41:
    0x00001d58 ldr r1, [pc, 0x280]                           |     
    0x00001d5a movs r0, 1                                    |     r0 = 1;
    0x00001d5c ldr r2, [sp, 0x20]                            |     r2 = var_20h;
    0x00001d5e add r1, pc                                    |     r1 = 0x3d3e;
    0x00001d60 blx 0xe54                                     |     printf_chk ()
    0x00001d64 b 0x18ee                                      |     goto label_14;
                                                             | label_40:
    0x00001d66 ldr r3, [pc, 0x278]                           |     
    0x00001d68 movs r0, 1                                    |     r0 = 1;
    0x00001d6a ldr r1, [pc, 0x278]                           |     
    0x00001d6c ldr r2, [sp, 0x20]                            |     r2 = var_20h;
    0x00001d6e add r3, pc                                    |     r3 = "tA";
    0x00001d70 add r1, pc                                    |     r1 = 0x3d5a;
    0x00001d72 blx 0xe54                                     |     printf_chk ()
    0x00001d76 b 0x18ee                                      |     goto label_14;
                                                             | label_37:
    0x00001d78 strd r3, r2, [sp]                             |     __asm ("strd r3, r2, [sp]");
    0x00001d7c movs r0, 1                                    |     r0 = 1;
    0x00001d7e ldr r3, [pc, 0x268]                           |     
    0x00001d80 ldr r2, [pc, 0x268]                           |     
    0x00001d82 ldr r1, [pc, 0x26c]                           |     
    0x00001d84 add r3, pc                                    |     r3 = 0x3d72;
    0x00001d86 add r2, pc                                    |     r2 = 0x3d76;
    0x00001d88 add r1, pc                                    |     r1 = 0x3d7e;
    0x00001d8a blx 0xe54                                     |     printf_chk ()
    0x00001d8e b 0x18b6                                      |     goto label_13;
                                                             | label_50:
    0x00001d90 ldr r3, [pc, 0x260]                           |     
    0x00001d92 movs r1, 0                                    |     r1 = 0;
    0x00001d94 ldr r2, [pc, 0x260]                           |     
    0x00001d96 movs r0, 7                                    |     r0 = 7;
    0x00001d98 add r3, pc                                    |     r3 = 0x3d90;
    0x00001d9a str r3, [sp, 4]                               |     var_4h = r3;
    0x00001d9c add r2, pc                                    |     r2 = 0x3d98;
    0x00001d9e ldr r3, [pc, 0x25c]                           |     
    0x00001da0 adds r2, 7                                    |     r2 += 7;
    0x00001da2 add r3, pc                                    |     r3 = 0x3da4;
    0x00001da4 str r3, [sp]                                  |     *(sp) = r3;
    0x00001da6 movw r3, 0x1b5                                |     r3 = 0x1b5;
    0x00001daa blx 0xdb8                                     |     log_internal ();
    0x00001dae b 0x19ec                                      |     goto label_15;
                                                             | label_36:
    0x00001db0 ldr r1, [pc, 0x24c]                           |     
    0x00001db2 movs r0, 1                                    |     r0 = 1;
    0x00001db4 ldr r2, [sp, 0x20]                            |     r2 = var_20h;
    0x00001db6 add r1, pc                                    |     r1 = 0x3dba;
    0x00001db8 blx 0xe54                                     |     printf_chk ()
    0x00001dbc b 0x18b6                                      |     goto label_13;
                                                             | label_53:
    0x00001dbe ldr r2, [pc, 0x244]                           |     
    0x00001dc0 add r2, pc                                    |     r2 = 0x3dca;
    0x00001dc2 b 0x1a38                                      |     goto label_16;
                                                             | label_58:
    0x00001dc4 str r3, [sp]                                  |     *(sp) = r3;
    0x00001dc6 movs r0, 1                                    |     r0 = 1;
    0x00001dc8 ldr r3, [pc, 0x23c]                           |     
    0x00001dca ldr r1, [pc, 0x240]                           |     
    0x00001dcc ldr r2, [sp, 0x20]                            |     r2 = var_20h;
    0x00001dce add r3, pc                                    |     r3 = 0x3dda;
    0x00001dd0 add r1, pc                                    |     r1 = 0x3de2;
    0x00001dd2 blx 0xe54                                     |     printf_chk ()
    0x00001dd6 b 0x1b6e                                      |     goto label_17;
                                                             | label_43:
    0x00001dd8 ldr r3, [pc, 0x234]                           |     
    0x00001dda add r3, pc                                    |     r3 = 0x3dee;
    0x00001ddc b 0x1938                                      |     goto label_8;
                                                             | label_39:
    0x00001dde ldr r3, [pc, 0x234]                           |     
    0x00001de0 add r3, pc                                    |     r3 = 0x3dfa;
    0x00001de2 b 0x18d0                                      |     goto label_9;
                                                             | label_52:
    0x00001de4 ldr r2, [pc, 0x230]                           |     
    0x00001de6 add r2, pc                                    |     r2 = 0x3e02;
    0x00001de8 b 0x1a0e                                      |     goto label_12;
                                                             | label_54:
    0x00001dea ldr r2, [pc, 0x230]                           |     
    0x00001dec add r2, pc                                    |     r2 = 0x3e0e;
    0x00001dee b 0x1a38                                      |     goto label_16;
                                                             | label_59:
    0x00001df0 ldr r1, [pc, 0x22c]                           |     
    0x00001df2 movs r0, 1                                    |     r0 = 1;
    0x00001df4 ldr r2, [sp, 0x20]                            |     r2 = var_20h;
    0x00001df6 add r1, pc                                    |     r1 = 0x3e1a;
    0x00001df8 blx 0xe54                                     |     printf_chk ()
    0x00001dfc b 0x1bd8                                      |     goto label_18;
                                                             | label_60:
    0x00001dfe str r3, [sp]                                  |     *(sp) = r3;
    0x00001e00 movs r0, 1                                    |     r0 = 1;
    0x00001e02 ldr r3, [pc, 0x220]                           |     
    0x00001e04 ldr r1, [pc, 0x220]                           |     
    0x00001e06 ldr r2, [sp, 0x20]                            |     r2 = var_20h;
    0x00001e08 add r3, pc                                    |     r3 = 0x3e32;
    0x00001e0a add r1, pc                                    |     r1 = 0x3e36;
    0x00001e0c blx 0xe54                                     |     printf_chk ()
    0x00001e10 b 0x1be6                                      |     goto label_19;
                                                             | label_67:
    0x00001e12 str r3, [sp]                                  |     *(sp) = r3;
    0x00001e14 movs r0, 1                                    |     r0 = 1;
    0x00001e16 ldr r3, [pc, 0x214]                           |     
    0x00001e18 ldr r1, [pc, 0x214]                           |     
    0x00001e1a ldr r2, [sp, 0x20]                            |     r2 = var_20h;
    0x00001e1c add r3, pc                                    |     r3 = 0x3e4e;
    0x00001e1e add r1, pc                                    |     r1 = 0x3e52;
    0x00001e20 blx 0xe54                                     |     printf_chk ()
    0x00001e24 b 0x1c8c                                      |     goto label_20;
                                                             | label_57:
    0x00001e26 blx 0xdc4                                     |     stack_chk_fail ();
                                                             | label_62:
    0x00001e2a ldr r3, [pc, 0x208]                           |     
    0x00001e2c add r3, pc                                    |     r3 = 0x3e66;
    0x00001e2e b 0x1c34                                      |     goto label_21;
                                                             | label_61:
    0x00001e30 ldr r3, [pc, 0x204]                           |     
    0x00001e32 add r3, pc                                    |     r3 = 0x3e6e;
    0x00001e34 b 0x1c34                                      |     goto label_21;
                                                             | label_66:
    0x00001e36 lsrs r2, r3, 8                                |     r2 = r3 >> 8;
    0x00001e38 and r3, r3, 0x7f                              |     r3 &= 0x7f;
    0x00001e3c adds r3, 1                                    |     r3++;
    0x00001e3e ldr r1, [pc, 0x1fc]                           |     
    0x00001e40 str r3, [sp]                                  |     *(sp) = r3;
    0x00001e42 movs r0, 1                                    |     r0 = 1;
    0x00001e44 ldr r3, [pc, 0x1f8]                           |     
    0x00001e46 str r2, [sp, 4]                               |     var_4h = r2;
    0x00001e48 add r1, pc                                    |     r1 = 0x3e8a;
    0x00001e4a ldr r2, [sp, 0x20]                            |     r2 = var_20h;
    0x00001e4c add r3, pc                                    |     r3 = 0x3e90;
    0x00001e4e blx 0xe54                                     |     printf_chk ()
    0x00001e52 b 0x1c82                                      |     goto label_22;
                                                             | label_65:
    0x00001e54 str r3, [sp]                                  |     *(sp) = r3;
    0x00001e56 movs r0, 1                                    |     r0 = 1;
    0x00001e58 ldr r3, [pc, 0x1e8]                           |     
    0x00001e5a ldr r1, [pc, 0x1ec]                           |     
    0x00001e5c ldr r2, [sp, 0x20]                            |     r2 = var_20h;
    0x00001e5e add r3, pc                                    |     r3 = 0x3ea6;
    0x00001e60 add r1, pc                                    |     r1 = 0x3eae;
    0x00001e62 blx 0xe54                                     |     printf_chk ()
    0x00001e66 b 0x1c78                                      |     goto label_23;
                                                             | label_64:
    0x00001e68 lsrs r2, r3, 8                                |     r2 = r3 >> 8;
    0x00001e6a and r3, r3, 0x7f                              |     r3 &= 0x7f;
    0x00001e6e adds r3, 1                                    |     r3++;
    0x00001e70 ldr r1, [pc, 0x1d8]                           |     
    0x00001e72 str r3, [sp]                                  |     *(sp) = r3;
    0x00001e74 movs r0, 1                                    |     r0 = 1;
    0x00001e76 ldr r3, [pc, 0x1d8]                           |     
    0x00001e78 str r2, [sp, 4]                               |     var_4h = r2;
    0x00001e7a add r1, pc                                    |     r1 = 0x3eca;
    0x00001e7c ldr r2, [sp, 0x20]                            |     r2 = var_20h;
    0x00001e7e add r3, pc                                    |     r3 = 0x3ed4;
    0x00001e80 blx 0xe54                                     |     printf_chk ()
    0x00001e84 b 0x1c6e                                      |     goto label_24;
                                                             | label_63:
    0x00001e86 ldr r1, [pc, 0x1cc]                           |     
    0x00001e88 mov r2, r8                                    |     r2 = r8;
    0x00001e8a movs r0, 1                                    |     r0 = 1;
    0x00001e8c add r1, pc                                    |     r1 = 0x3ee6;
    0x00001e8e blx 0xe54                                     |     printf_chk ()
    0x00001e92 ldr r3, [pc, 0x1c4]                           |     
    0x00001e94 ldr r1, [pc, 0x1c4]                           |     
    0x00001e96 add r3, pc                                    |     r3 = 0x3ef4;
    0x00001e98 str r3, [sp, 0x28]                            |     var_28h = r3;
    0x00001e9a add r1, pc                                    |     r1 = 0x3efa;
    0x00001e9c ldr r3, [pc, 0x1c0]                           |     
    0x00001e9e add r3, pc                                    |     r3 = 0x3f02;
    0x00001ea0 str r3, [sp, 0x2c]                            |     var_2ch = r3;
    0x00001ea2 movs r3, 1                                    |     r3 = 1;
    0x00001ea4 mov r8, r3                                    |     r8 = r3;
    0x00001ea6 b 0x1ec8                                      |     goto label_68;
                                                             | label_25:
    0x00001ea8 ldr r2, [pc, 0x1b8]                           |     
    0x00001eaa add r2, pc                                    |     r2 = 0x3f12;
                                                             | label_26:
    0x00001eac ldr r3, [sp, 0x28]                            |     r3 = var_28h;
    0x00001eae movs r0, 1                                    |     r0 = 1;
    0x00001eb0 str r1, [sp, 0x30]                            |     var_30h = r1;
    0x00001eb2 ldr.w r3, [r3, r8, lsl 2]                     |     offset_1 = r8 << 2;
                                                             |     r3 = *((r3 + offset_1));
    0x00001eb6 blx 0xe54                                     |     printf_chk ()
    0x00001eba ldr r1, [sp, 0x30]                            |     r1 = var_30h;
    0x00001ebc movs r3, 0                                    |     r3 = 0;
                                                             |     do {
    0x00001ebe add.w r8, r8, 1                               |         r8++;
    0x00001ec2 cmp.w r8, 6                                   |         
                                                             |         if (r8 == 6) {
    0x00001ec6 beq 0x1eda                                    |             goto label_69;
                                                             |         }
                                                             | label_68:
    0x00001ec8 ldr r2, [sp, 0x24]                            |         r2 = var_24h;
    0x00001eca asr.w r2, r2, r8                              |         r2 >>= r8;
    0x00001ece lsls r2, r2, 0x1f                             |         r2 <<= 0x1f;
    0x00001ed0 bpl 0x1ebe                                    |         
                                                             |     } while (r2 >= r2);
    0x00001ed2 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00001ed4 beq 0x1ea8                                    |         goto label_25;
                                                             |     }
    0x00001ed6 ldr r2, [sp, 0x2c]                            |     r2 = var_2ch;
    0x00001ed8 b 0x1eac                                      |     goto label_26;
                                                             | label_69:
    0x00001eda movs r0, 0xa                                  |     r0 = 0xa;
    0x00001edc blx 0xd88                                     |     putchar (r0);
    0x00001ee0 b 0x1c50                                      |     goto label_27;
                                                             | }

[*] Function printf used 34 times dmi_memory_id