[*] 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