[*] Binary protection state of userdbctl
Full RELRO Canary found NX enabled PIE enabled RPATH No RUNPATH No Symbols
[*] Function printf tear down of userdbctl
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/userdbctl @ 0x2424 */
| #include <stdint.h>
|
; (fcn) fcn.00002424 () | void fcn_00002424 (uint32_t arg1, uint32_t arg2) {
| int16_t var_0h;
| int16_t var_ch_2;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
0x00002424 push.w {r4, r5, r6, r7, r8, lr} |
0x00002428 sub sp, 0x30 |
0x0000242a ldr r5, [pc, 0x19c] |
0x0000242c add r5, pc | r5 = 0x49fa;
0x0000242e cmp r0, 0 |
| if (var_0h == ) {
0x00002430 beq.w 0x254e | goto label_3;
| }
0x00002434 ldr r3, [pc, 0x194] |
0x00002436 mov r4, r0 | r4 = r0;
0x00002438 add r3, pc |
0x0000243a ldr r3, [r3] | r3 = *(0x4a08);
0x0000243c cmp r3, 3 |
| if (r3 > 3) {
0x0000243e bhi.w 0x25b4 | goto label_4;
| }
| /* switch table (4 cases) at 0x2446 */
0x00002442 tbb [pc, r3] | __asm ("tbb [0x00002448]");
0x0000244a ldr r1, [pc, 0x184] |
0x0000244c movs r3, 0 | r3 = 0;
0x0000244e ldr r0, [r0, 0x3c] | r0 = *(var_0hx3c);
0x00002450 mov r2, r3 | r2 = r3;
0x00002452 add r1, pc |
0x00002454 ldr r1, [r1] | r1 = *(0x4a28);
0x00002456 blx 0x1644 | json_variant_dump ();
0x00002458 invalid |
| do {
| label_0:
0x0000245a movs r0, 0 | r0 = 0;
| label_1:
0x0000245c add sp, 0x30 |
0x0000245e pop.w {r4, r5, r6, r7, r8, pc} |
0x00002462 movs r1, 1 | r1 = 1;
0x00002464 blx 0x1824 | group_record_show ();
0x00002468 ldrb r3, [r4, 8] | r3 = *((r4 + 8));
0x0000246a cmp r3, 0 |
0x0000246c beq 0x245a |
| } while (r3 == 0);
0x0000246e ldr r3, [pc, 0x164] | r3 = *(0x25d6);
0x00002470 ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x00002472 ldr r0, [r3] | r0 = *(0x25d6);
0x00002474 blx 0x1968 | r0 = fflush (r0);
0x00002478 blx 0x16e0 | r0 = log_get_max_level ();
0x0000247c cmp r0, 3 |
| if (r0 <= 3) {
0x0000247e ble 0x245a | goto label_0;
| }
0x00002480 ldr r2, [pc, 0x154] |
0x00002482 movw r3, 0x1f5 | r3 = 0x1f5;
0x00002486 ldr r1, [pc, 0x154] |
0x00002488 ldr r0, [pc, 0x154] |
0x0000248a ldr r4, [r4, 0xc] | r4 = *((r4 + 0xc));
0x0000248c add r2, pc | r2 = 0x4a68;
0x0000248e add r1, pc | r1 = 0x4a70;
0x00002490 adds r2, 7 | r2 += 7;
0x00002492 add r0, pc | r0 = 0x4a76;
0x00002494 strd r1, r4, [sp, 4] | __asm ("strd r1, r4, [sp, 4]");
0x00002498 movs r1, 0 | r1 = 0;
0x0000249a str r0, [sp] | *(sp) = r0;
0x0000249c movs r0, 4 | r0 = 4;
0x0000249e blx 0x1794 | log_internal ();
0x000024a2 b 0x245a | goto label_0;
0x000024a4 mov r6, r1 | r6 = r1;
0x000024a6 cmp r1, 0 |
| if (r1 == 0) {
0x000024a8 beq 0x2584 | goto label_5;
| }
0x000024aa blx 0x17ac | group_record_disposition ();
0x000024ae ldr.w r8, [r4, 0xc] | r8 = *((r4 + 0xc));
0x000024b2 mov r7, r0 | r7 = r0;
0x000024b4 bl 0x2294 | r0 = fcn_00002294 (r0);
0x000024b8 mov r5, r0 | r5 = r0;
0x000024ba mov r0, r7 | r0 = r7;
0x000024bc blx 0x171c | user_disposition_to_string ();
0x000024c0 movs r3, 0x2a | r3 = 0x2a;
0x000024c2 str r0, [sp, 0x10] | var_10h = r0;
0x000024c4 strd r3, r5, [sp, 4] | __asm ("strd r3, r5, [sp, 4]");
0x000024c8 mov r0, r6 | r0 = r6;
0x000024ca str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x000024ce movs r6, 0x24 | r6 = 0x24;
0x000024d0 ldr r1, [r4, 0x18] | r1 = *((r4 + 0x18));
0x000024d2 movs r3, 1 | r3 = 1;
0x000024d4 ldr r4, [r4, 0x28] | r4 = *((r4 + 0x28));
0x000024d6 ldr r2, [pc, 0x10c] |
0x000024d8 strd r3, r1, [sp, 0x1c] | __asm ("strd r3, r1, [sp, 0x1c]");
0x000024dc mov r1, r3 | r1 = r3;
0x000024de str r4, [sp, 0x18] | var_18h = r4;
0x000024e0 movs r4, 0x20 | r4 = 0x20;
0x000024e2 str r4, [sp, 0x14] | var_14h = r4;
0x000024e4 movs r4, 0 | r4 = 0;
0x000024e6 strd r4, r6, [sp, 0x28] | __asm ("strd r4, r6, [sp, 0x28]");
0x000024ea movs r4, 0xe | r4 = 0xe;
0x000024ec str r4, [sp, 0x24] | var_24h = r4;
0x000024ee add r2, pc | r2 = 0x4ad8;
0x000024f0 str r3, [sp, 0xc] | var_ch_2 = r3;
0x000024f2 blx 0x17c4 | r0 = table_add_many_internal ();
0x000024f6 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 >= r0) {
0x000024f8 bge 0x245a | goto label_0;
| }
0x000024fa blx 0x16e0 | r0 = log_get_max_level ();
0x000024fe cmp r0, 2 |
0x00002500 ittt le |
| if (r0 <= 2) {
0x00002502 rsble r0, r4, 0 | __asm ("rsble r0, r4, 0");
| }
| if (r0 <= 2) {
0x00002504 bicle r0, r0, 0x40000000 | __asm ("bicle r0, r0, 0x40000000");
| }
| if (r0 <= 2) {
0x00002508 rsbs r0, r0, 0 | r0 -= ;
| }
| if (r0 > 2) {
0x0000250a bgt 0x2564 | goto label_6;
| }
| label_2:
0x0000250c cmp r0, 0 |
0x0000250e it ge |
| if (r0 < 0) {
0x00002510 mvnge r0, 0x55 | r0 = ~0x55;
| }
0x00002514 b 0x245c | goto label_1;
0x00002516 ldr r0, [r0, 0x28] | r0 = *(var_0hx28);
0x00002518 blx 0x1908 | r0 = uid_is_valid ();
| if (r0 == 0) {
0x0000251c cbz r0, 0x254a | goto label_7;
| }
0x0000251e ldr r1, [pc, 0xc8] |
0x00002520 movs r3, 0 | r3 = 0;
0x00002522 ldr r0, [r4, 0x2c] | r0 = *((r4 + 0x2c));
0x00002524 mov r2, r3 | r2 = r3;
0x00002526 add r1, pc | r1 = 0x4b14;
0x00002528 blx 0x1668 | r0 = strv_join_full ();
0x0000252c mov r5, r0 | r5 = r0;
0x0000252e cmp r0, 0 |
| if (r0 == 0) {
0x00002530 beq 0x259a | goto label_8;
| }
0x00002532 ldr r1, [pc, 0xb8] |
0x00002534 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00002536 ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x00002538 add r1, pc | r1 = 0x4b2a;
0x0000253a str r0, [sp] | *(sp) = r0;
0x0000253c movs r0, 1 | r0 = 1;
0x0000253e blx 0x19f8 | printf_chk ()
| do {
0x00002542 mov r0, r5 | r0 = r5;
0x00002544 blx 0x1608 | free (r0);
0x00002548 b 0x245a | goto label_0;
| label_7:
0x0000254a mov r5, r0 | r5 = r0;
0x0000254c b 0x2542 |
| } while (1);
| label_3:
0x0000254e ldr r1, [pc, 0xa0] |
0x00002550 movw r2, 0x1d7 | r2 = 0x1d7;
0x00002554 ldr r3, [pc, 0x9c] |
0x00002556 ldr r0, [pc, 0xa0] |
0x00002558 add r1, pc | r1 = 0x4b4e;
0x0000255a add r3, pc | r3 = 0x4b52;
0x0000255c adds r1, 7 | r1 += 7;
0x0000255e add r0, pc | r0 = 0x4b5c;
0x00002560 blx 0x15fc | log_assert_failed ();
| label_6:
0x00002564 ldr r2, [pc, 0x94] |
0x00002566 movw r3, 0x20a | r3 = 0x20a;
0x0000256a ldr r5, [pc, 0x94] |
0x0000256c mov r1, r4 | r1 = r4;
0x0000256e ldr r0, [pc, 0x94] |
0x00002570 add r2, pc | r2 = 0x4b70;
0x00002572 add r5, pc | r5 = 0x4b78;
0x00002574 adds r2, 7 | r2 += 7;
0x00002576 add r0, pc | r0 = 0x4b80;
0x00002578 strd r0, r5, [sp] | __asm ("strd r0, r5, [sp]");
0x0000257c movs r0, 3 | r0 = 3;
0x0000257e blx 0x1794 | log_internal ();
0x00002582 b 0x250c | goto label_2;
| label_5:
0x00002584 ldr r1, [pc, 0x80] |
0x00002586 movw r2, 0x1fd | r2 = 0x1fd;
0x0000258a ldr r3, [pc, 0x80] |
0x0000258c ldr r0, [pc, 0x80] |
0x0000258e add r1, pc | r1 = 0x4b9a;
0x00002590 add r3, pc | r3 = 0x4ba2;
0x00002592 adds r1, 7 | r1 += 7;
0x00002594 add r0, pc | r0 = 0x4ba8;
0x00002596 blx 0x15fc | log_assert_failed ();
| label_8:
0x0000259a ldr r1, [pc, 0x78] |
0x0000259c movw r2, 0x1e3 | r2 = 0x1e3;
0x000025a0 ldr r3, [pc, 0x74] |
0x000025a2 movs r0, 3 | r0 = 3;
0x000025a4 add r1, pc | r1 = 0x4bbe;
0x000025a6 add r3, pc | r3 = 0x4bc2;
0x000025a8 adds r1, 7 | r1 += 7;
0x000025aa add sp, 0x30 |
0x000025ac pop.w {r4, r5, r6, r7, r8, lr} |
0x000025b0 b.w 0x1a10 | void (*0x1a10)() ();
| label_4:
0x000025b4 ldr r0, [pc, 0x64] |
0x000025b6 mov.w r1, 0x210 | r1 = 0x210;
0x000025ba ldr r2, [pc, 0x64] |
0x000025bc add r0, pc | r0 = 0x4bdc;
0x000025be add r2, pc | r2 = 0x4be4;
0x000025c0 adds r0, 7 | r0 += 7;
0x000025c2 blx 0x1974 | log_assert_failed_unreachable ();
0x000025c6 nop |
0x000025c8 ldrh r0, [r3, r0] | r0 = *((r3 + r0));
0x000025ca movs r0, r0 |
0x000025cc ldrh r0, [r2, r7] | r0 = *((r2 + r7));
0x000025ce movs r0, r0 |
0x000025d0 ldrh r6, [r5, r6] | r6 = *((r5 + r6));
0x000025d2 movs r0, r0 |
0x000025d4 lsls r0, r4, 6 | r0 = r4 << 6;
0x000025d6 movs r0, r0 |
0x000025d8 adds r4, 0xa4 | r4 += 0xa4;
0x000025da movs r0, r0 |
0x000025dc subs r3, 0x52 | r3 -= 0x52;
0x000025de movs r0, r0 |
0x000025e0 bx r6 | return uint32_t (*r6)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/userdbctl @ 0x2624 */
| #include <stdint.h>
|
; (fcn) fcn.00002624 () | void fcn_00002624 (uint32_t arg1, uint32_t arg2) {
| int16_t var_0h;
| int32_t var_0h_2;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| 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;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int32_t var_40h;
| int32_t var_40h_2;
| r0 = arg1;
| r1 = arg2;
0x00002624 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x00002628 sub sp, 0x4c |
0x0000262a ldr r5, [pc, 0x1d0] |
0x0000262c add r5, pc | r5 = 0x4e2e;
0x0000262e cmp r0, 0 |
| if (r0 == 0) {
0x00002630 beq.w 0x27a0 | goto label_3;
| }
0x00002634 ldr r3, [pc, 0x1c8] |
0x00002636 mov r4, r0 | r4 = r0;
0x00002638 add r3, pc |
0x0000263a ldr r3, [r3] | r3 = *(0x4e3c);
0x0000263c cmp r3, 3 |
| if (r3 > 3) {
0x0000263e bhi.w 0x27ec | goto label_4;
| }
| /* switch table (4 cases) at 0x2646 */
0x00002642 tbb [pc, r3] | __asm ("tbb [0x00002648]");
0x0000264a ldr r1, [pc, 0x1b8] |
0x0000264c movs r3, 0 | r3 = 0;
0x0000264e ldr.w r0, [r0, 0x2a8] | r0 = *((r0 + 0x2a8));
0x00002652 mov r2, r3 | r2 = r3;
0x00002654 add r1, pc |
0x00002656 ldr r1, [r1] | r1 = *(0x4e5e);
0x00002658 blx 0x1644 | json_variant_dump ();
| do {
| label_0:
0x0000265c movs r0, 0 | r0 = 0;
| label_1:
0x0000265e add sp, 0x4c |
0x00002660 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00002664 movs r1, 1 | r1 = 1;
0x00002666 blx 0x1710 | user_record_show ();
0x0000266a ldrb r3, [r4, 8] | r3 = *((r4 + 8));
0x0000266c cmp r3, 0 |
0x0000266e beq 0x265c |
| } while (r3 == 0);
0x00002670 ldr r3, [pc, 0x194] | r3 = *(0x2808);
0x00002672 ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x00002674 ldr r0, [r3] | r0 = *(0x2808);
0x00002676 blx 0x1968 | r0 = fflush (r0);
0x0000267a blx 0x16e0 | r0 = log_get_max_level ();
0x0000267e cmp r0, 3 |
| if (r0 <= 3) {
0x00002680 ble 0x265c | goto label_0;
| }
0x00002682 ldr r2, [pc, 0x188] |
0x00002684 movs r3, 0x60 | r3 = 0x60;
0x00002686 ldr r1, [pc, 0x188] |
0x00002688 ldr r0, [pc, 0x188] |
0x0000268a ldr r4, [r4, 0xc] | r4 = *((r4 + 0xc));
0x0000268c add r2, pc | r2 = 0x4e9e;
0x0000268e add r1, pc | r1 = 0x4ea4;
0x00002690 adds r2, 7 | r2 += 7;
0x00002692 add r0, pc | r0 = 0x4eaa;
0x00002694 strd r1, r4, [sp, 4] | __asm ("strd r1, r4, [var_8h]");
0x00002698 movs r1, 0 | r1 = 0;
0x0000269a str r0, [sp] | *(sp) = r0;
0x0000269c movs r0, 4 | r0 = 4;
0x0000269e blx 0x1794 | log_internal ();
0x000026a2 b 0x265c | goto label_0;
0x000026a4 mov r6, r1 | r6 = r1;
0x000026a6 cmp r1, 0 |
| if (r1 == 0) {
0x000026a8 beq.w 0x27d2 | goto label_5;
| }
0x000026ac blx 0x177c | r0 = user_record_disposition ();
0x000026b0 mov r5, r0 | r5 = r0;
0x000026b2 ldr.w sl, [r4, 0xc] | sl = *((r4 + 0xc));
0x000026b6 bl 0x2294 | r0 = fcn_00002294 (r0);
0x000026ba mov r7, r0 | r7 = r0;
0x000026bc mov r0, r5 | r0 = r5;
0x000026be blx 0x171c | user_disposition_to_string ();
0x000026c0 invalid |
0x000026c4 mov r0, r4 | r0 = r4;
0x000026c6 ldr.w fp, [r4, 0x13c] | fp = *((r4 + 0x13c));
0x000026ca blx 0x15d8 | user_record_gid ();
0x000026ce ldr r5, [r4, 0x18] | r5 = *((r4 + 0x18));
0x000026d0 mov sb, r0 | sb = r0;
| if (r5 != 0) {
0x000026d2 cbz r5, 0x26dc |
0x000026d4 ldrb r3, [r5] | r3 = *(r5);
0x000026d6 cmp r3, 0 |
0x000026d8 it eq |
| if (r3 == 0) {
0x000026da moveq r5, 0 | r5 = 0;
| goto label_6;
| }
| }
| label_6:
0x000026dc mov r0, r4 | r0 = r4;
0x000026de blx 0x16f8 | r0 = user_record_home_directory ();
0x000026e2 mov r3, r0 | r3 = r0;
0x000026e4 mov r0, r4 | r0 = r4;
0x000026e6 mov r4, r3 | r4 = r3;
0x000026e8 blx 0x162c | user_record_shell ();
0x000026ec movs r2, 0x20 | r2 = 0x20;
0x000026ee movs r3, 1 | r3 = 1;
0x000026f0 str r2, [sp, 0x1c] | var_1ch = r2;
0x000026f2 movs r2, 0x1f | r2 = 0x1f;
0x000026f4 str r2, [sp, 0x14] | var_14h = r2;
0x000026f6 movs r1, 0x2a | r1 = 0x2a;
0x000026f8 ldr r2, [pc, 0x11c] |
0x000026fa str r4, [sp, 0x30] | var_30h = r4;
0x000026fc movs r4, 0 | r4 = 0;
0x000026fe str r5, [sp, 0x28] | var_28h = r5;
0x00002700 movs r5, 0x24 | r5 = 0x24;
0x00002702 str r0, [sp, 0x38] | var_38h = r0;
0x00002704 add r2, pc | r2 = 0x4f20;
0x00002706 strd sl, r1, [sp] | __asm ("strd sl, r1, [sp]");
0x0000270a mov r0, r6 | r0 = r6;
0x0000270c strd r4, r5, [sp, 0x40] | __asm ("strd r4, r5, [var_40h]");
0x00002710 mov r1, r3 | r1 = r3;
0x00002712 movs r4, 0xe | r4 = 0xe;
0x00002714 str.w sb, [sp, 0x20] | __asm ("str.w sb, [var_20h]");
0x00002716 str r0, [sp, 0x80] | *((sp + 0x80)) = r0;
0x00002718 str.w fp, [sp, 0x18] | __asm ("str.w fp, [var_18h]");
0x0000271c str.w r8, [sp, 0x10] | __asm ("str.w r8, [var_10h]");
0x00002720 str r3, [sp, 0x34] | var_34h = r3;
0x00002722 str r3, [sp, 0x2c] | var_2ch = r3;
0x00002724 str r3, [sp, 0x24] | var_24h = r3;
0x00002726 str r3, [sp, 0xc] | var_ch = r3;
0x00002728 str r7, [sp, 8] | var_8h = r7;
0x0000272a str r4, [sp, 0x3c] | var_3ch = r4;
0x0000272c blx 0x17c4 | r0 = table_add_many_internal ();
0x00002730 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 >= r0) {
0x00002732 bge 0x265c | goto label_0;
| }
0x00002734 blx 0x16e0 | r0 = log_get_max_level ();
0x00002738 cmp r0, 2 |
0x0000273a ittt le |
| if (r0 <= 2) {
0x0000273c rsble r0, r4, 0 | __asm ("rsble r0, r4, 0");
| }
| if (r0 <= 2) {
0x0000273e bicle r0, r0, 0x40000000 | __asm ("bicle r0, r0, 0x40000000");
| }
| if (r0 <= 2) {
0x00002742 rsbs r0, r0, 0 | r0 -= ;
| }
| if (r0 > 2) {
0x00002744 bgt 0x27b4 | goto label_7;
| }
| label_2:
0x00002746 cmp r0, 0 |
0x00002748 it ge |
| if (r0 < 0) {
0x0000274a mvnge r0, 0x55 | r0 = ~0x55;
| }
0x0000274e b 0x265e | goto label_1;
0x00002750 ldr.w r0, [r0, 0x13c] | r0 = *((r0 + 0x13c));
0x00002754 blx 0x1908 | r0 = uid_is_valid ();
0x00002758 cmp r0, 0 |
| if (r0 == 0) {
0x0000275a beq.w 0x265c | goto label_0;
| }
0x0000275e mov r0, r4 | r0 = r4;
0x00002760 ldr r7, [r4, 0xc] | r7 = *((r4 + 0xc));
0x00002762 ldr.w r8, [r4, 0x13c] | r8 = *((r4 + 0x13c));
0x00002766 blx 0x15d8 | r0 = user_record_gid ();
0x0000276a mov r6, r0 | r6 = r0;
0x0000276c mov r0, r4 | r0 = r4;
0x0000276e blx 0x18f0 | r0 = user_record_real_name ();
0x00002772 mov r5, r0 | r5 = r0;
0x00002774 cmp r0, 0 |
0x00002776 beq 0x27e6 |
| while (1) {
0x00002778 mov r0, r4 | r0 = r4;
0x0000277a blx 0x16f8 | r0 = user_record_home_directory ();
0x0000277e mov r3, r0 | r3 = r0;
0x00002780 mov r0, r4 | r0 = r4;
0x00002782 mov r4, r3 | r4 = r3;
0x00002784 blx 0x162c | user_record_shell ();
0x00002788 ldr r1, [pc, 0x90] |
0x0000278a mov r3, r8 | r3 = r8;
0x0000278c str r0, [sp, 0xc] | var_ch = r0;
0x0000278e mov r2, r7 | r2 = r7;
0x00002790 str r4, [sp, 8] | var_8h = r4;
0x00002792 movs r0, 1 | r0 = 1;
0x00002794 add r1, pc | r1 = 0x4fb4;
0x00002796 strd r6, r5, [sp] | __asm ("strd r6, r5, [sp]");
0x0000279a blx 0x19f8 | printf_chk ()
0x0000279e b 0x265c | goto label_0;
| label_3:
0x000027a0 ldr r1, [pc, 0x7c] |
0x000027a2 movs r2, 0x45 | r2 = 0x45;
0x000027a4 ldr r3, [pc, 0x7c] |
0x000027a6 ldr r0, [pc, 0x80] |
0x000027a8 add r1, pc | r1 = 0x4fcc;
0x000027aa add r3, pc | r3 = 0x4fd2;
0x000027ac adds r1, 7 | r1 += 7;
0x000027ae add r0, pc | r0 = 0x4fdc;
0x000027b0 blx 0x15fc | log_assert_failed ();
| label_7:
0x000027b4 ldr r2, [pc, 0x74] |
0x000027b6 movs r3, 0x78 | r3 = 0x78;
0x000027b8 ldr r5, [pc, 0x74] |
0x000027ba mov r1, r4 | r1 = r4;
0x000027bc ldr r0, [pc, 0x74] |
0x000027be add r2, pc | r2 = 0x4fee;
0x000027c0 add r5, pc | r5 = 0x4ff4;
0x000027c2 adds r2, 7 | r2 += 7;
0x000027c4 add r0, pc | r0 = 0x4ffc;
0x000027c6 strd r0, r5, [sp] | __asm ("strd r0, r5, [sp]");
0x000027c8 lsls r0, r0, 0x14 | r0 <<= 0x14;
0x000027ca movs r0, 3 | r0 = 3;
0x000027cc blx 0x1794 | log_internal ();
0x000027d0 b 0x2746 | goto label_2;
| label_5:
0x000027d2 ldr r1, [pc, 0x64] |
0x000027d4 movs r2, 0x68 | r2 = 0x68;
0x000027d6 ldr r3, [pc, 0x64] |
0x000027d8 ldr r0, [pc, 0x64] |
0x000027da add r1, pc | r1 = 0x5018;
0x000027dc add r3, pc | r3 = 0x501e;
0x000027de adds r1, 7 | r1 += 7;
0x000027e0 add r0, pc | r0 = 0x5024;
0x000027e2 blx 0x15fc | log_assert_failed ();
0x000027e6 ldr r5, [pc, 0x5c] |
0x000027e8 add r5, pc | r5 = 0x5032;
0x000027ea b 0x2778 |
| }
| label_4:
0x000027ec ldr r0, [pc, 0x58] |
0x000027ee movs r1, 0x7e | r1 = 0x7e;
0x000027f0 ldr r2, [pc, 0x58] |
0x000027f2 add r0, pc | r0 = 0x503e;
0x000027f4 add r2, pc | r2 = 0x5044;
0x000027f6 adds r0, 7 | r0 += 7;
0x000027f8 blx 0x1974 | log_assert_failed_unreachable ();
0x000027fc ldr r0, [r3, r0] | r0 = *((r3 + r0));
0x000027fe movs r0, r0 |
0x00002800 ldr r0, [r2, r7] |
0x00002802 movs r0, r0 |
0x00002804 ldr r4, [r5, r6] | r4 = *((r5 + r6));
0x00002806 movs r0, r0 |
0x00002808 lsls r0, r4, 6 | r0 = r4 << 6;
0x0000280a movs r0, r0 |
0x0000280c adds r2, 0xa4 | r2 += 0xa4;
0x0000280e movs r0, r0 |
0x00002810 subs r1, 0xf6 | r1 -= 0xf6;
0x00002812 movs r0, r0 |
0x00002814 add r6, pc | r6 += pc;
0x00002816 movs r0, r0 |
0x00002818 lsrs r0, r0 | r0 >>= r0;
0x0000281a movs r0, r0 |
0x0000281c subs r0, 0xd8 | r0 -= 0xd8;
0x0000281e movs r0, r0 |
0x00002820 adds r1, 0x88 | r1 += 0x88;
0x00002822 movs r0, r0 |
0x00002824 muls r2, r6, r2 | r2 = r6 * r2;
0x00002826 movs r0, r0 |
0x00002828 subs r0, 0xba | r0 -= 0xba;
0x0000282a movs r0, r0 |
0x0000282c adds r1, 0x72 | r1 += 0x72;
0x0000282e movs r0, r0 |
0x00002830 subs r0, 0x84 | r0 -= 0x84;
0x00002832 movs r0, r0 |
0x00002834 muls r4, r1, r4 | r4 = r1 * r4;
0x00002836 movs r0, r0 |
0x00002838 adds r1, 0x56 | r1 += 0x56;
0x0000283a movs r0, r0 |
0x0000283c muls r0, r0, r0 | r0 *= r0;
0x0000283e movs r0, r0 |
0x00002840 adds r1, 0x8c | r1 += 0x8c;
0x00002842 movs r0, r0 |
0x00002844 subs r7, 0xdc | r7 -= 0xdc;
0x00002846 movs r0, r0 |
0x00002848 adds r1, 0x3e | r1 += 0x3e;
0x0000284a movs r0, r0 |
0x0000284c orrs r0, r5 | r0 |= r5;
0x0000284e movs r0, r0 |
0x00002850 push {r4, lr} |
0x00002852 mov r4, r0 | r4 = r0;
0x00002854 ldr r0, [r0] | r0 = *(0x5044);
| if (r0 != 0) {
0x00002856 cbz r0, 0x285e |
0x00002858 blx 0x1980 | strv_free ();
0x0000285c str r0, [r4] | *(r4) = r0;
| }
0x0000285e pop {r4, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/userdbctl @ 0x2860 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00002860 () | void fcn_00002860 (uint32_t arg1, uint32_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_14h;
| int16_t type;
| int16_t var_1ch;
| size_t addrlen;
| int16_t var_a4h;
| int16_t var_0h_2;
| int16_t var_4h_2;
| int32_t var_4h_3;
| int32_t var_ch_2;
| int32_t var_ch_3;
| int16_t var_14h_2;
| int16_t var_18h_2;
| int16_t var_20h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00002860 ssub16mi fp, r5, r0 | __asm ("ssub16mi fp, r5, r0");
0x00002864 ldr r2, [pc, 0x1a8] |
0x00002866 sub sp, 0x28 |
0x00002868 ldr r3, [pc, 0x1a8] | r3 = *(0x2a14);
0x0000286a add r2, pc | r2 = 0x527e;
0x0000286c ldr r3, [r2, r3] |
0x0000286e ldr r3, [r3] | r3 = *(0x527e);
0x00002870 str r3, [sp, 0x24] | var_24h = r3;
0x00002872 mov.w r3, 0 | r3 = 0;
0x00002876 cmp r0, 0 |
| if (r0 == 0) {
0x00002878 beq 0x2972 | goto label_16;
| }
0x0000287a mov r6, r1 | r6 = r1;
0x0000287c cmp r1, 0 |
| if (r1 == 0) {
0x0000287e beq.w 0x2988 | goto label_17;
| }
0x00002882 ldr r3, [pc, 0x194] |
0x00002884 mov r4, r0 | r4 = r0;
0x00002886 add r3, pc | r3 = 0x52a4;
0x00002888 ldr r0, [r3] | r0 = *(0x52a4);
0x0000288a cmp r0, 3 |
| if (r0 > 3) {
0x0000288c bhi.w 0x29fc | goto label_18;
| }
| /* switch table (4 cases) at 0x2894 */
0x00002890 tbb [pc, r0] | __asm ("tbb [0x00002898]");
0x00002898 ldr r3, [pc, 0x180] |
0x0000289a movs r5, 0 | r5 = 0;
0x0000289c movs r1, 8 | r1 = 8;
0x0000289e movs r2, 9 | r2 = 9;
0x000028a0 str r1, [sp, 0x18] | var_18h_2 = r1;
0x000028a2 add r0, sp, 0x20 | r0 += var_20h;
0x000028a4 add r3, pc | r3 = 0x52c4;
0x000028a6 strd r4, r2, [sp, 4] | __asm ("strd r4, r2, [var_4h_2]");
0x000028aa strd r3, r5, [sp, 0xc] | __asm ("strd r3, r5, [var_ch_2]");
0x000028ae movs r1, 7 | r1 = 7;
0x000028b0 ldr r3, [pc, 0x16c] |
0x000028b2 str r6, [sp, 0x14] | var_14h_2 = r6;
0x000028b4 str r5, [sp] | *(sp) = r5;
0x000028b6 add r3, pc | r3 = 0x52da;
0x000028b8 str r5, [sp, 0x20] | var_20h = r5;
0x000028ba blx 0x1674 | json_build ();
0x000028be subs r4, r0, 0 | r4 -= var_20h;
| if (r4 < var_20h) {
0x000028c0 blt 0x294c | goto label_19;
| }
0x000028c2 ldr r1, [pc, 0x160] |
0x000028c4 mov r3, r5 | r3 = r5;
0x000028c6 ldr r0, [sp, 0x20] | r0 = var_20h;
0x000028c8 mov r2, r5 | r2 = r5;
0x000028ca add r1, pc |
0x000028cc ldr r1, [r1] | r1 = *(0x52f4);
0x000028ce blx 0x1644 | json_variant_dump ();
0x000028d2 ldr r0, [sp, 0x20] | r0 = var_20h;
| if (r0 == 0) {
0x000028d4 cbz r0, 0x28ea | goto label_1;
| }
0x000028d6 blx 0x16d4 | json_variant_unref ();
0x000028da b 0x28ea | goto label_1;
0x000028dc ldr r1, [pc, 0x148] |
0x000028de mov r3, r4 | r3 = r4;
0x000028e0 mov r2, r6 | r2 = r6;
0x000028e2 movs r0, 1 | r0 = 1;
0x000028e4 add r1, pc | r1 = 0x5310;
0x000028e6 blx 0x19f8 | printf_chk ()
| do {
| label_1:
0x000028ea movs r4, 0 | r4 = 0;
| label_0:
0x000028ec ldr r2, [pc, 0x13c] |
0x000028ee ldr r3, [pc, 0x124] | r3 = *(0x2a16);
0x000028f0 add r2, pc | r2 = 0x5320;
0x000028f2 ldr r3, [r2, r3] | r3 = *(0x5320);
0x000028f4 ldr r2, [r3] | r2 = *(0x5320);
0x000028f6 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000028f8 eors r2, r3 | r2 ^= r3;
0x000028fa mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000028fe bne 0x29f8 | goto label_20;
| }
0x00002900 mov r0, r4 | r0 = r4;
0x00002902 add sp, 0x28 |
0x00002904 pop {r4, r5, r6, pc} |
0x00002906 cmp r5, 0 |
| if (r5 == 0) {
0x00002908 beq 0x299e | goto label_21;
| }
0x0000290a movs r3, 1 | r3 = 1;
0x0000290c movs r1, 0x24 | r1 = 0x24;
0x0000290e mov r2, r4 | r2 = r4;
0x00002910 str r1, [sp, 4] | var_4h_2 = r1;
0x00002912 mov r0, r5 | r0 = r5;
0x00002914 mov r1, r3 | r1 = r3;
0x00002916 str r6, [sp] | *(sp) = r6;
0x00002918 blx 0x17c4 | r0 = table_add_many_internal ();
0x0000291c subs r4, r0, 0 | r4 = r0 - 0;
0x0000291e bge 0x28ea |
| } while (r4 >= r0);
0x00002920 blx 0x16e0 | r0 = log_get_max_level ();
0x00002924 cmp r0, 2 |
0x00002926 ittt le |
| if (r0 <= 2) {
0x00002928 rsble r4, r4, 0 | __asm ("rsble r4, r4, 0");
| }
| if (r0 <= 2) {
0x0000292a bicle r4, r4, 0x40000000 | __asm ("bicle r4, r4, 0x40000000");
| }
| if (r0 <= 2) {
0x0000292e rsbs r4, r4, 0 | r4 -= ;
| }
| if (r0 > 2) {
0x00002930 bgt 0x29d6 | goto label_22;
| }
| label_3:
0x00002932 cmp r4, 0 |
0x00002934 it ge |
| if (r4 < 0) {
0x00002936 mvnge r4, 0x55 | r4 = ~0x55;
| }
0x0000293a b 0x28ec | goto label_0;
0x0000293c ldr r1, [pc, 0xf0] |
0x0000293e mov r3, r6 | r3 = r6;
0x00002940 mov r2, r4 | r2 = r4;
0x00002942 movs r0, 1 | r0 = 1;
0x00002944 add r1, pc | r1 = 0x5378;
0x00002946 blx 0x19f8 | printf_chk ()
0x0000294a b 0x28ea | goto label_1;
| label_19:
0x0000294c blx 0x16e0 | r0 = log_get_max_level ();
0x00002950 cmp r0, 2 |
0x00002952 ittt le |
| if (r0 <= 2) {
0x00002954 rsble r4, r4, 0 | __asm ("rsble r4, r4, 0");
| }
| if (r0 <= 2) {
0x00002956 bicle r4, r4, 0x40000000 | __asm ("bicle r4, r4, 0x40000000");
| }
| if (r0 <= 2) {
0x0000295a rsbs r4, r4, 0 | r4 -= ;
| }
| if (r0 > 2) {
0x0000295c bgt 0x29b4 | goto label_23;
| }
| label_2:
0x0000295e ldr r0, [sp, 0x20] | r0 = var_20h;
0x00002960 cmp r4, 0 |
0x00002962 it ge |
| if (r4 < 0) {
0x00002964 mvnge r4, 0x55 | r4 = ~0x55;
| }
0x00002968 cmp r0, 0 |
| if (r0 == 0) {
0x0000296a beq 0x28ec | goto label_0;
| }
0x0000296c blx 0x16d4 | json_variant_unref ();
0x00002970 b 0x28ec | goto label_0;
| label_16:
0x00002972 ldr r1, [pc, 0xc0] |
0x00002974 mov.w r2, 0x30c | r2 = 0x30c;
0x00002978 ldr r3, [pc, 0xbc] |
0x0000297a ldr r0, [pc, 0xc0] |
0x0000297c add r1, pc | r1 = 0x53b6;
0x0000297e add r3, pc | r3 = 0x53ba;
0x00002980 adds r1, 7 | r1 += 7;
0x00002982 add r0, pc | r0 = 0x53c4;
0x00002984 blx 0x15fc | log_assert_failed ();
| label_17:
0x00002988 ldr r1, [pc, 0xb4] |
0x0000298a movw r2, 0x30d | r2 = 0x30d;
0x0000298e ldr r3, [pc, 0xb4] |
0x00002990 ldr r0, [pc, 0xb4] |
0x00002992 add r1, pc | r1 = 0x53d6;
0x00002994 add r3, pc | r3 = 0x53de;
0x00002996 adds r1, 7 | r1 += 7;
0x00002998 add r0, pc | r0 = 0x53e4;
0x0000299a blx 0x15fc | log_assert_failed ();
| label_21:
0x0000299e ldr r1, [pc, 0xac] |
0x000029a0 movw r2, 0x32b | r2 = 0x32b;
0x000029a4 ldr r3, [pc, 0xa8] |
0x000029a6 ldr r0, [pc, 0xac] |
0x000029a8 add r1, pc | r1 = 0x53fa;
0x000029aa add r3, pc | r3 = 0x53fe;
0x000029ac adds r1, 7 | r1 += 7;
0x000029ae add r0, pc | r0 = 0x5408;
0x000029b0 blx 0x15fc | log_assert_failed ();
0x000029b2 invalid |
| label_23:
0x000029b4 ldr r2, [pc, 0xa0] |
0x000029b6 mov r1, r4 | r1 = r4;
0x000029b8 ldr r5, [pc, 0xa0] |
0x000029ba movw r3, 0x31f | r3 = 0x31f;
0x000029be ldr r0, [pc, 0xa0] |
0x000029c0 add r2, pc | r2 = 0x541c;
0x000029c2 add r5, pc | r5 = 0x5422;
0x000029c4 adds r2, 7 | r2 += 7;
0x000029c6 add r0, pc | r0 = 0x542c;
0x000029c8 strd r0, r5, [sp] | __asm ("strd r0, r5, [sp]");
0x000029cc movs r0, 3 | r0 = 3;
0x000029ce blx 0x1794 | r0 = log_internal ();
0x000029d2 mov r4, r0 | r4 = r0;
0x000029d4 b 0x295e | goto label_2;
| label_22:
0x000029d6 ldr r2, [pc, 0x8c] |
0x000029d8 mov r1, r4 | r1 = r4;
0x000029da ldr r5, [pc, 0x8c] |
0x000029dc movw r3, 0x332 | r3 = 0x332;
0x000029e0 ldr r0, [pc, 0x88] |
0x000029e2 add r2, pc | r2 = 0x544c;
0x000029e4 add r5, pc | r5 = 0x5452;
0x000029e6 adds r2, 7 | r2 += 7;
0x000029e8 add r0, pc | r0 = 0x5458;
0x000029ea strd r0, r5, [sp] | __asm ("strd r0, r5, [sp]");
0x000029ee movs r0, 3 | r0 = 3;
0x000029f0 blx 0x1794 | r0 = log_internal ();
0x000029f4 mov r4, r0 | r4 = r0;
0x000029f6 b 0x2932 | goto label_3;
| label_20:
0x000029f8 blx 0x17d0 | stack_chk_fail ();
| label_18:
0x000029fc ldr r0, [pc, 0x70] |
0x000029fe movw r1, 0x337 | r1 = 0x337;
0x00002a02 ldr r2, [pc, 0x70] |
0x00002a04 add r0, pc | r0 = 0x5478;
0x00002a06 add r2, pc | r2 = 0x5480;
0x00002a08 adds r0, 7 | r0 += 7;
0x00002a0a blx 0x1974 | log_assert_failed_unreachable ();
0x00002a0e nop |
0x00002a10 strb r2, [r3, r7] | *((r3 + r7)) = r2;
0x00002a12 movs r0, r0 |
0x00002a14 lsls r4, r0, 6 | r4 = r0 << 6;
0x00002a16 movs r0, r0 |
0x00002a18 ldrsb r2, [r0, r6] | r2 = *((r0 + r6));
0x00002a1a movs r0, r0 |
0x00002a1c subs r0, 0x48 | r0 -= 0x48;
0x00002a1e movs r0, r0 |
0x00002a20 subs r0, 0x2e | r0 -= 0x2e;
0x00002a22 movs r0, r0 |
0x00002a24 ldrsb r6, [r6, r4] | r6 = *((r6 + r4));
0x00002a26 movs r0, r0 |
0x00002a28 subs r0, 0x38 | r0 -= 0x38;
0x00002a2a movs r0, r0 |
0x00002a2c strb r4, [r2, r5] | *((r2 + r5)) = r4;
0x00002a2e movs r0, r0 |
0x00002a30 adds r7, 0xb0 | r7 += 0xb0;
0x00002a32 movs r0, r0 |
0x00002a34 cmp r7, 0xb4 |
0x00002a36 movs r0, r0 |
0x00002a38 cmp r2, r5 |
0x00002a3a movs r0, r0 |
0x00002a3c adds r7, 0x62 | r7 += 0x62;
0x00002a3e movs r0, r0 |
0x00002a40 cmp r7, 0x9e |
0x00002a42 movs r0, r0 |
0x00002a44 cmp r4, r2 |
0x00002a46 movs r0, r0 |
0x00002a48 adds r7, 0x54 | r7 += 0x54;
0x00002a4a movs r0, r0 |
0x00002a4c cmp r7, 0x88 |
0x00002a4e movs r0, r0 |
0x00002a50 rsbs r6, r7, 0 | r6 = r7 - ;
0x00002a52 movs r0, r0 |
0x00002a54 cmp r7, 0xbe |
0x00002a56 movs r0, r0 |
0x00002a58 cmp r7, 0x70 |
0x00002a5a movs r0, r0 |
0x00002a5c adds r7, 0x3a | r7 += 0x3a;
0x00002a5e movs r0, r0 |
0x00002a60 rsbs r2, r2, 0 | r2 -= ;
0x00002a62 movs r0, r0 |
0x00002a64 cmp r7, 0x4e |
0x00002a66 movs r0, r0 |
0x00002a68 adds r6, 0x60 | r6 += 0x60;
0x00002a6a movs r0, r0 |
0x00002a6c tst r0, r6 |
0x00002a6e movs r0, r0 |
0x00002a70 cmp r7, 0x2c |
0x00002a72 movs r0, r0 |
0x00002a74 tst r2, r4 |
0x00002a76 movs r0, r0 |
0x00002a78 ldr r2, [pc, 0x3dc] |
0x00002a7a ldr r3, [pc, 0x3e0] | r3 = *(0x2e5e);
0x00002a7c ldr r0, [pc, 0x3e0] |
0x00002a7e add r2, pc | r2 = 0x58da;
0x00002a80 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00002a84 ldr r3, [r2, r3] |
0x00002a86 sub sp, 0xac |
0x00002a88 add r0, pc | r0 = 0x58ec;
0x00002a8a ldr r3, [r3] | r3 = *(0x58da);
0x00002a8c str r3, [sp, 0xa4] | var_a4h = r3;
0x00002a8e mov.w r3, 0 | r3 = 0;
0x00002a90 lsls r0, r0, 0xc | r0 <<= 0xc;
0x00002a92 blx 0x16ec | r0 = opendir ();
0x00002a96 mov sl, r0 | sl = r0;
0x00002a98 cmp r0, 0 |
| if (r0 == 0) {
0x00002a9a beq.w 0x2de4 | goto label_24;
| }
0x00002a9e ldr r1, [pc, 0x3c4] |
0x00002aa0 movs r2, 0 | r2 = 0;
0x00002aa2 ldr r0, [pc, 0x3c4] |
0x00002aa4 add r1, pc | r1 = 0x590e;
0x00002aa6 add r0, pc | r0 = 0x5914;
0x00002aa8 blx 0x1788 | table_new_internal ();
0x00002aaa cdp p6, 6, c4, c14, c3, 4 | __asm ("cdp p6, 6, c4, c14, c3, 4");
0x00002aae cmp r0, 0 |
| if (r0 == 0) {
0x00002ab0 beq.w 0x2c14 | goto label_25;
| }
0x00002ab4 mov.w r2, -1 | r2 = -1;
0x00002ab8 movs r1, 0 | r1 = 0;
0x00002aba blx 0x18b4 | table_set_sort_internal ();
0x00002abe mov r0, sl | r0 = sl;
0x00002ac0 blx 0x186c | r0 = readdir_ensure_type ();
0x00002ac4 cmp r0, 0 |
| if (r0 == 0) {
0x00002ac6 beq 0x2bbe | goto label_26;
| }
0x00002ac8 ldr r2, [pc, 0x3a0] |
0x00002aca movw r3, 0x801 |
0x00002ace movt r3, 8 | r3 = 0x80801;
0x00002ad2 add r2, pc | r2 = 0x5942;
0x00002ad4 str r2, [sp, 0x14] | var_14h = r2;
0x00002ad6 ldr r2, [pc, 0x398] |
0x00002ad8 add r2, pc | r2 = 0x594e;
0x00002ada strd r3, r2, [sp, 0x18] | __asm ("strd r3, r2, [type]");
0x00002ade b 0x2b2a | goto label_27;
| label_4:
0x00002ae0 blx 0x165c | r0 = get_color_mode ();
0x00002ae4 cmp r0, 0 |
| if (r0 == 0) {
0x00002ae6 beq 0x2bac | goto label_28;
| }
0x00002ae8 ldr r6, [pc, 0x388] |
0x00002aea ldr r0, [pc, 0x38c] |
0x00002aec add r6, pc | r6 = 0x5964;
0x00002aee add r0, pc | r0 = 0x596c;
| label_5:
0x00002af0 movs r3, 0x24 | r3 = 0x24;
0x00002af2 movs r1, 0x2a | r1 = 0x2a;
0x00002af4 str r3, [sp, 0xc] | var_ch = r3;
0x00002af6 movs r3, 1 | r3 = 1;
0x00002af8 strd r6, r1, [sp] | __asm ("strd r6, r1, [sp]");
0x00002afc mov r2, r4 | r2 = r4;
0x00002afe str r0, [sp, 8] | var_8h = r0;
0x00002b00 mov r1, r3 | r1 = r3;
0x00002b02 mov r0, fp | r0 = fp;
0x00002b04 blx 0x17c4 | r0 = table_add_many_internal ();
0x00002b08 cmp r0, 0 |
| if (r0 < 0) {
0x00002b0a blt.w 0x2cb0 | goto label_29;
| }
0x00002b0e mov r0, r8 | r0 = r8;
0x00002b10 blx 0x17a0 | safe_close ();
0x00002b14 mov r0, r5 | r0 = r5;
0x00002b16 blx 0x1608 | free (r0);
0x00002b1a mov r0, r7 | r0 = r7;
0x00002b1c blx 0x1608 | free (r0);
| do {
0x00002b20 mov r0, sl | r0 = sl;
0x00002b22 blx 0x186c | r0 = readdir_ensure_type ();
0x00002b26 cmp r0, 0 |
| if (r0 == 0) {
0x00002b28 beq 0x2bbe | goto label_26;
| }
| label_27:
0x00002b2a add.w r4, r0, 0x13 | r4 = r0 + 0x13;
0x00002b2e mov r0, r4 | r0 = r4;
0x00002b30 blx 0x19c8 | hidden_or_backup_file ();
0x00002b32 vmax.s8 d20, d10, d5 | __asm ("vmax.s8 d20, d10, d5");
0x00002b36 cmp r0, 0 |
0x00002b38 bne 0x2b20 |
| } while (r0 != 0);
0x00002b3a ldr r1, [sp, 0x14] | r1 = var_14h;
0x00002b3c mov.w r3, -1 | r3 = -1;
0x00002b40 mov r2, r4 | r2 = r4;
0x00002b42 blx 0x1830 | r0 = path_extend_internal ();
0x00002b46 mov r7, r0 | r7 = r0;
0x00002b48 cmp r0, 0 |
| if (r0 == 0) {
0x00002b4a beq 0x2c32 | goto label_30;
| }
0x00002b4c add.w sb, sp, 0x24 | sb += addrlen;
0x00002b50 mov r1, r0 | r1 = r0;
0x00002b52 mov r0, sb | r0 = sb;
0x00002b54 blx 0x1614 | sockaddr_un_set_path ();
0x00002b56 ldcl p14, c1, [lr, -0x18] | __asm ("ldcl p14, c1, [lr, -0x18]");
| if (r0 < 0) {
0x00002b5a blt.w 0x2c68 | goto label_31;
| }
0x00002b5e ldr r1, [sp, 0x18] | r1 = type;
0x00002b60 mov r2, r5 | r2 = r5;
0x00002b62 movs r0, 1 | r0 = 1;
0x00002b64 blx 0x17e8 | socket (r0, r1, r2);
0x00002b66 mcr p1, 2, pc, c0, c0, 5 | __asm ("mcr p1, 2, pc, c0, c0, 5");
0x00002b6a lsrs r0, r0, 0x20 | r0 >>= 0x20;
| if (r0 < r0) {
0x00002b6c blt.w 0x2c8c | goto label_32;
| }
0x00002b70 mov r2, r6 | r2 = r6;
0x00002b72 mov r1, sb | r1 = sb;
0x00002b74 blx 0x189c | r0 = connect (r0, r1, r2);
0x00002b78 cmp r0, 0 |
| if (r0 >= 0) {
0x00002b7a bge 0x2ae0 | goto label_4;
| }
0x00002b7c blx 0x1950 | r0 = errno_location ();
0x00002b80 ldr r0, [r0] | r0 = *(r0);
0x00002b82 blx 0x19ec | errno_to_name ();
0x00002b86 ldr r2, [pc, 0x2f4] |
0x00002b88 mov r1, r0 | r1 = r0;
0x00002b8a ldr r0, [pc, 0x2f4] |
0x00002b8c mov r3, r5 | r3 = r5;
0x00002b8e add r2, pc | r2 = 0x5a10;
0x00002b90 add r0, pc | r0 = 0x5a16;
0x00002b92 blx 0x18c0 | r0 = strjoin_real ();
0x00002b96 mov r6, r0 | r6 = r0;
0x00002b98 cmp r0, 0 |
| if (r0 == 0) {
0x00002b9a beq.w 0x2cce | goto label_33;
| }
0x00002b9e blx 0x165c | r0 = get_color_mode ();
| if (r0 != 0) {
0x00002ba2 cbz r0, 0x2bb6 |
0x00002ba4 ldr r0, [pc, 0x2dc] |
0x00002ba6 mov r5, r6 | r5 = r6;
0x00002ba8 add r0, pc | r0 = 0x5a30;
0x00002baa b 0x2af0 | goto label_5;
| label_28:
0x00002bac mov r5, r0 | r5 = r0;
0x00002bae ldr r0, [pc, 0x2d8] |
0x00002bb0 ldr r6, [sp, 0x1c] | r6 = var_1ch;
0x00002bb2 add r0, pc | r0 = 0x5a40;
0x00002bb4 b 0x2af0 | goto label_5;
| }
0x00002bb6 ldr r0, [pc, 0x2d4] |
0x00002bb8 mov r5, r6 | r5 = r6;
0x00002bba add r0, pc | r0 = 0x5a4c;
0x00002bbc b 0x2af0 | goto label_5;
| label_26:
0x00002bbe blx 0x1950 | r0 = errno_location ();
0x00002bc2 ldr r4, [r0] | r4 = *(r0);
0x00002bc4 cmp r4, 0 |
| if (r4 <= 0) {
0x00002bc6 ble 0x2bf4 | goto label_34;
| }
0x00002bc8 mov r0, sl | r0 = sl;
0x00002bca rsbs r4, r4, 0 | r4 -= ;
0x00002bcc blx 0x1680 | closedir ();
| do {
| label_7:
0x00002bd0 mov r0, fp | r0 = fp;
0x00002bd2 blx 0x1854 | table_unref ();
| label_6:
0x00002bd6 ldr r2, [pc, 0x2b8] |
0x00002bd8 ldr r3, [pc, 0x280] | r3 = *(0x2e5c);
0x00002bda add r2, pc | r2 = 0x5a70;
0x00002bdc ldr r3, [r2, r3] | r3 = *(0x5a70);
0x00002bde ldr r2, [r3] | r2 = *(0x5a70);
0x00002be0 ldr r3, [sp, 0xa4] | r3 = var_a4h;
0x00002be2 eors r2, r3 | r2 ^= r3;
0x00002be4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00002be8 bne.w 0x2de0 | goto label_35;
| }
0x00002bec mov r0, r4 | r0 = r4;
0x00002bee add sp, 0xac |
0x00002bf0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_34:
0x00002bf4 mov r0, fp | r0 = fp;
0x00002bf6 blx 0x1878 | r0 = table_get_rows ();
0x00002bfa cmp r0, 1 |
| if (r0 > 1) {
0x00002bfc bhi 0x2ce8 | goto label_36;
| }
| label_9:
0x00002bfe ldr r3, [pc, 0x294] |
0x00002c00 add r3, pc | r3 = 0x5a9a;
0x00002c02 ldrb r3, [r3] | r3 = *(r3);
0x00002c04 cmp r3, 0 |
| if (r3 != 0) {
0x00002c06 bne.w 0x2d90 | goto label_37;
| }
| label_13:
0x00002c0a mov r0, sl | r0 = sl;
0x00002c0c blx 0x1680 | closedir ();
| label_14:
0x00002c10 movs r4, 0 | r4 = 0;
0x00002c12 b 0x2bd0 |
| } while (1);
| label_25:
0x00002c14 ldr r1, [pc, 0x280] |
0x00002c16 movw r2, 0x3ab | r2 = 0x3ab;
0x00002c1a ldr r3, [pc, 0x280] |
0x00002c1c movs r0, 3 | r0 = 3;
0x00002c1e add r1, pc | r1 = 0x5aba;
0x00002c20 add r3, pc | r3 = 0x5ac2;
0x00002c22 adds r1, 7 | r1 += 7;
0x00002c24 blx 0x1a14 | r0 = fcn_00001a14 ();
0x00002c28 mov r4, r0 | r4 = r0;
0x00002c2a mov r0, sl | r0 = sl;
0x00002c2c blx 0x1680 | closedir ();
0x00002c30 b 0x2bd6 | goto label_6;
| label_30:
0x00002c32 ldr r1, [pc, 0x26c] |
0x00002c34 movw r2, 0x3b7 | r2 = 0x3b7;
0x00002c38 ldr r3, [pc, 0x268] |
0x00002c3a movs r0, 3 | r0 = 3;
0x00002c3c mov r5, r7 | r5 = r7;
0x00002c3e mov.w r8, -1 | r8 = -1;
0x00002c42 add r1, pc | r1 = 0x5ae8;
0x00002c44 add r3, pc | r3 = 0x5aec;
0x00002c46 adds r1, 7 | r1 += 7;
0x00002c48 blx 0x1a14 | r0 = fcn_00001a14 ();
0x00002c4c mov r4, r0 | r4 = r0;
| do {
| label_8:
0x00002c4e mov r0, r8 | r0 = r8;
0x00002c50 blx 0x17a0 | safe_close ();
0x00002c54 mov r0, r5 | r0 = r5;
0x00002c56 blx 0x1608 | free (r0);
0x00002c5a mov r0, r7 | r0 = r7;
0x00002c5c blx 0x1608 | free (r0);
0x00002c60 mov r0, sl | r0 = sl;
0x00002c62 blx 0x1680 | closedir ();
0x00002c66 b 0x2bd0 | goto label_7;
| label_31:
0x00002c68 blx 0x16e0 | r0 = log_get_max_level ();
0x00002c6c cmp r0, 2 |
0x00002c6e ittt le |
| if (r0 <= 2) {
0x00002c70 rsble r4, r6, 0 | __asm ("rsble r4, r6, 0");
| }
| if (r0 <= 2) {
0x00002c72 bicle r4, r4, 0x40000000 | __asm ("bicle r4, r4, 0x40000000");
| }
| if (r0 <= 2) {
0x00002c76 rsbs r4, r4, 0 | r4 -= ;
| }
| if (r0 > 2) {
0x00002c78 bgt 0x2d28 | goto label_38;
| }
| label_10:
0x00002c7a cmp r4, 0 |
0x00002c7c mov.w r8, -1 | r8 = -1;
0x00002c80 mov.w r5, 0 | r5 = 0;
0x00002c84 blt 0x2c4e |
| } while (r4 < 0);
| do {
0x00002c86 mvn r4, 0x55 | r4 = ~0x55;
0x00002c8a b 0x2c4e | goto label_8;
| label_32:
0x00002c8c blx 0x1950 | r0 = errno_location ();
0x00002c90 ldr r4, [r0] | r4 = *(r0);
0x00002c92 blx 0x16e0 | r0 = log_get_max_level ();
0x00002c96 cmp r0, 2 |
| if (r0 > 2) {
0x00002c98 bgt 0x2d4c | goto label_39;
| }
0x00002c9a cmp r4, 0 |
0x00002c9c it lt |
| if (r4 < 0) {
0x00002c9e rsblt r4, r4, 0 | __asm ("rsblt r4, r4, 0");
| }
0x00002ca0 bic r4, r4, 0x40000000 | r4 = BIT_MASK (r4, 0x40000000);
0x00002ca4 rsbs r4, r4, 0 | r4 -= ;
| label_11:
0x00002ca6 cmp r4, 0 |
0x00002ca8 mov.w r5, 0 | r5 = 0;
0x00002cac bge 0x2c86 |
| } while (r4 >= 0);
0x00002cae b 0x2c4e | goto label_8;
| label_29:
0x00002cb0 mov r4, r0 | r4 = r0;
0x00002cb2 blx 0x16e0 | r0 = log_get_max_level ();
0x00002cb6 cmp r0, 2 |
0x00002cb8 ittt le |
| if (r0 <= 2) {
0x00002cba rsble r4, r4, 0 | __asm ("rsble r4, r4, 0");
| }
| if (r0 <= 2) {
0x00002cbc bicle r4, r4, 0x40000000 | __asm ("bicle r4, r4, 0x40000000");
| }
| if (r0 <= 2) {
0x00002cc0 rsbs r4, r4, 0 | r4 -= ;
| }
| if (r0 > 2) {
0x00002cc2 bgt 0x2d6e | goto label_40;
| }
| label_12:
0x00002cc4 cmp r4, 0 |
0x00002cc6 it ge |
| if (r4 < 0) {
0x00002cc8 mvnge r4, 0x55 | r4 = ~0x55;
| }
0x00002ccc b 0x2c4e | goto label_8;
| label_33:
0x00002cce ldr r1, [pc, 0x1d8] |
0x00002cd0 mov r5, r0 | r5 = r0;
0x00002cd2 ldr r3, [pc, 0x1d8] |
0x00002cd4 movw r2, 0x3c5 | r2 = 0x3c5;
0x00002cd8 movs r0, 3 | r0 = 3;
0x00002cda add r1, pc | r1 = 0x5b88;
0x00002cdc adds r1, 7 | r1 += 7;
0x00002cde add r3, pc | r3 = 0x5b90;
0x00002ce0 blx 0x1a14 | r0 = fcn_00001a14 ();
0x00002ce4 mov r4, r0 | r4 = r0;
0x00002ce6 b 0x2c4e | goto label_8;
| label_36:
0x00002ce8 ldr r3, [pc, 0x1c4] |
0x00002cea mov r0, fp | r0 = fp;
0x00002cec ldr r2, [pc, 0x1c4] |
0x00002cee ldr r1, [pc, 0x1c8] |
0x00002cf0 add r3, pc | r3 = 0x5ba4;
0x00002cf2 add r2, pc |
0x00002cf4 ldrb r3, [r3] | r3 = *(r3);
0x00002cf6 add r1, pc |
0x00002cf8 ldr r2, [r2] | r2 = *(0x5baa);
0x00002cfa ldr r1, [r1] | r1 = *(0x5bb4);
0x00002cfc blx 0x18a8 | r0 = table_print_with_pager ();
0x00002d00 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 >= r0) {
0x00002d02 bge.w 0x2bfe | goto label_9;
| }
0x00002d06 blx 0x16e0 | r0 = log_get_max_level ();
0x00002d0a cmp r0, 2 |
0x00002d0c ittt le |
| if (r0 <= 2) {
0x00002d0e rsble r4, r4, 0 | __asm ("rsble r4, r4, 0");
| }
| if (r0 <= 2) {
0x00002d10 bicle r4, r4, 0x40000000 | __asm ("bicle r4, r4, 0x40000000");
| }
| if (r0 > 2) {
0x00002d12 addle r8, r0 | r8 += r0;
| }
0x00002d14 rsbs r4, r4, 0 | r4 -= ;
0x00002d16 bgt 0x2dbe |
| while (1) {
0x00002d18 cmp r4, 0 |
0x00002d1a mov r0, sl | r0 = sl;
0x00002d1c it ge |
| if (r4 < 0) {
0x00002d1e mvnge r4, 0x55 | r4 = ~0x55;
| }
0x00002d22 blx 0x1680 | closedir ();
0x00002d26 b 0x2bd0 | goto label_7;
| label_38:
0x00002d28 ldr r3, [pc, 0x190] |
0x00002d2a mov r1, r6 | r1 = r6;
0x00002d2c ldr r2, [pc, 0x190] |
0x00002d2e movs r0, 3 | r0 = 3;
0x00002d30 str r7, [sp, 8] | var_8h = r7;
0x00002d32 add r3, pc | r3 = 0x5bf2;
0x00002d34 str r3, [sp, 4] | var_4h = r3;
0x00002d36 add r2, pc | r2 = 0x5bfa;
0x00002d38 ldr r3, [pc, 0x188] |
0x00002d3a adds r2, 7 | r2 += 7;
0x00002d3c add r3, pc | r3 = 0x5c04;
0x00002d3e str r3, [sp] | *(sp) = r3;
0x00002d40 movw r3, 0x3bb | r3 = 0x3bb;
0x00002d44 blx 0x1794 | r0 = log_internal ();
0x00002d48 mov r4, r0 | r4 = r0;
0x00002d4a b 0x2c7a | goto label_10;
| label_39:
0x00002d4c ldr r3, [pc, 0x178] |
0x00002d4e mov r1, r4 | r1 = r4;
0x00002d50 ldr r2, [pc, 0x178] |
0x00002d52 movs r0, 3 | r0 = 3;
0x00002d54 add r3, pc | r3 = 0x5c20;
0x00002d56 str r3, [sp, 4] | var_4h = r3;
0x00002d58 add r2, pc | r2 = 0x5c28;
0x00002d5a ldr r3, [pc, 0x174] |
0x00002d5c adds r2, 7 | r2 += 7;
0x00002d5e add r3, pc | r3 = 0x5c34;
0x00002d60 str r3, [sp] | *(sp) = r3;
0x00002d62 mov.w r3, 0x3c0 | r3 = 0x3c0;
0x00002d66 blx 0x1794 | r0 = log_internal ();
0x00002d6a mov r4, r0 | r4 = r0;
0x00002d6c b 0x2ca6 | goto label_11;
| label_40:
0x00002d6e ldr r3, [pc, 0x164] |
0x00002d70 mov r1, r4 | r1 = r4;
0x00002d72 ldr r2, [pc, 0x164] |
0x00002d74 movs r0, 3 | r0 = 3;
0x00002d76 add r3, pc | r3 = 0x5c50;
0x00002d78 str r3, [sp, 4] | var_4h = r3;
0x00002d7a add r2, pc | r2 = 0x5c58;
0x00002d7c ldr r3, [pc, 0x15c] |
0x00002d7e adds r2, 7 | r2 += 7;
0x00002d80 add r3, pc | r3 = 0x5c60;
0x00002d82 str r3, [sp] | *(sp) = r3;
0x00002d84 movw r3, 0x3cd | r3 = 0x3cd;
0x00002d88 blx 0x1794 | r0 = log_internal ();
0x00002d8c mov r4, r0 | r4 = r0;
0x00002d8e b 0x2cc4 | goto label_12;
| label_37:
0x00002d90 mov r0, fp | r0 = fp;
0x00002d92 blx 0x1878 | r0 = table_get_rows ();
0x00002d96 cmp r0, 1 |
| if (r0 >= 1) {
0x00002d98 bls 0x2dae |
0x00002d9a mov r0, fp | r0 = fp;
0x00002d9c blx 0x1878 | table_get_rows ();
0x00002da0 ldr r1, [pc, 0x13c] |
0x00002da2 subs r2, r0, 1 | r2 = r0 - 1;
0x00002da4 movs r0, 1 | r0 = 1;
0x00002da6 add r1, pc | r1 = 0x5c8a;
0x00002da8 blx 0x19f8 | printf_chk ()
0x00002dac b 0x2c0a | goto label_13;
| }
0x00002dae ldr r0, [pc, 0x134] |
0x00002db0 add r0, pc | r0 = 0x5c9a;
0x00002db2 blx 0x16bc | puts (r0);
0x00002db6 mov r0, sl | r0 = sl;
0x00002db8 blx 0x1680 | closedir ();
0x00002dbc b 0x2c10 | goto label_14;
0x00002dbe ldr r3, [pc, 0x128] |
0x00002dc0 mov r1, r4 | r1 = r4;
0x00002dc2 ldr r2, [pc, 0x128] |
0x00002dc4 movs r0, 3 | r0 = 3;
0x00002dc6 add r3, pc | r3 = 0x5cb4;
0x00002dc8 str r3, [sp, 4] | var_4h = r3;
0x00002dca add r2, pc | r2 = 0x5cbc;
0x00002dcc ldr r3, [pc, 0x120] |
0x00002dce adds r2, 7 | r2 += 7;
0x00002dd0 add r3, pc | r3 = 0x5cc4;
0x00002dd2 str r3, [sp] | *(sp) = r3;
0x00002dd4 movw r3, 0x3d3 | r3 = 0x3d3;
0x00002dd8 blx 0x1794 | r0 = log_internal ();
0x00002ddc mov r4, r0 | r4 = r0;
0x00002dde b 0x2d18 |
| }
| label_35:
0x00002de0 blx 0x17d0 | stack_chk_fail ();
| label_24:
0x00002de4 blx 0x1950 | r0 = errno_location ();
0x00002de8 ldr r4, [r0] | r4 = *(r0);
0x00002dea blx 0x16e0 | log_get_max_level ();
0x00002dee cmp r4, 2 |
| if (r4 == 2) {
0x00002df0 beq 0x2e0c | goto label_41;
| }
0x00002df2 cmp r0, 2 |
| if (r0 > 2) {
0x00002df4 bgt 0x2e14 | goto label_42;
| }
0x00002df6 cmp r4, 0 |
0x00002df8 it lt |
| if (r4 < 0) {
0x00002dfa rsblt r4, r4, 0 | __asm ("rsblt r4, r4, 0");
| }
0x00002dfc bic r4, r4, 0x40000000 | r4 = BIT_MASK (r4, 0x40000000);
0x00002e00 rsbs r4, r4, 0 | r4 -= ;
| do {
0x00002e02 cmp r4, 0 |
0x00002e04 it ge |
| if (r4 < 0) {
0x00002e06 mvnge r4, 0x55 | r4 = ~0x55;
| }
0x00002e0a b 0x2bd6 | goto label_6;
| label_41:
0x00002e0c cmp r0, 5 |
| if (r0 > 5) {
0x00002e0e bgt 0x2e36 | goto label_43;
| }
| label_15:
0x00002e10 movs r4, 0 | r4 = 0;
0x00002e12 b 0x2bd6 | goto label_6;
| label_42:
0x00002e14 ldr r2, [pc, 0xdc] |
0x00002e16 mov r1, r4 | r1 = r4;
0x00002e18 ldr r5, [pc, 0xdc] |
0x00002e1a movw r3, 0x3a6 | r3 = 0x3a6;
0x00002e1e ldr r0, [pc, 0xdc] |
0x00002e20 add r2, pc | r2 = 0x5d18;
0x00002e22 add r5, pc | r5 = 0x5d1e;
0x00002e24 adds r2, 7 | r2 += 7;
0x00002e26 add r0, pc | r0 = 0x5d28;
0x00002e28 strd r0, r5, [sp] | __asm ("strd r0, r5, [sp]");
0x00002e2c movs r0, 3 | r0 = 3;
0x00002e2e blx 0x1794 | r0 = log_internal ();
0x00002e32 mov r4, r0 | r4 = r0;
0x00002e34 b 0x2e02 |
| } while (1);
| label_43:
0x00002e36 ldr r2, [pc, 0xc8] |
0x00002e38 movw r3, 0x3a2 | r3 = 0x3a2;
0x00002e3c ldr r4, [pc, 0xc4] |
0x00002e3e mov r1, sl | r1 = sl;
0x00002e40 ldr r0, [pc, 0xc4] |
0x00002e42 add r2, pc | r2 = 0x5d48;
0x00002e44 add r4, pc | r4 = 0x5d4c;
0x00002e46 adds r2, 7 | r2 += 7;
0x00002e48 add r0, pc | r0 = 0x5d54;
0x00002e4a strd r0, r4, [sp] | __asm ("strd r0, r4, [sp]");
0x00002e4c lsls r0, r0, 0x10 | r0 <<= 0x10;
0x00002e4e movs r0, 6 | r0 = 6;
0x00002e50 blx 0x1794 | log_internal ();
0x00002e54 b 0x2e10 | goto label_15;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/userdbctl @ 0x4650 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00004650 () | void fcn_00004650 (int16_t arg_0h, int16_t arg_4h, int16_t arg_8h, int16_t arg_ch, int16_t arg_10h, int16_t arg_14h, int16_t arg_18h, int16_t arg_1ch, int16_t arg_20h, int16_t arg_24h, int16_t arg_28h, int16_t arg_2ch, int16_t arg_30h, int16_t arg_34h, int16_t arg_38h, int16_t arg_3ch, int16_t arg_48h, int16_t arg_4ch, int16_t arg_50h, int16_t arg_58h, int16_t arg_5ch, int16_t arg_60h, int16_t arg_64h, int16_t arg_68h, int16_t arg_6ch, int16_t arg_70h, int16_t arg_74h, int16_t arg_78h, int16_t arg_7ch, void * ptr, int16_t arg_88h, int16_t arg_8ch, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int32_t var_ch;
| int32_t var_ch_2;
| int16_t var_14h;
| 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_34h;
| int16_t var_38h;
| r3 = arg4;
| do {
0x000045c4 ldr.w r1, [r8] | r1 = *(r8);
0x000045c8 mov r2, r7 | r2 = r7;
0x000045ca ldr r0, [sp, 0x88] | r0 = *(arg_88h);
0x000045cc blx 0x15b4 | r0 = userdb_by_uid ();
0x000045d0 mov fp, r0 |
0x000045d2 cmp.w fp, 0 |
| if (fp < 0) {
0x000045d6 blt 0x4626 | goto label_39;
| }
| if (r5 != 0) {
| label_0:
0x000045d8 cbz r5, 0x45e2 |
0x000045da ldr.w r3, [sl] | r3 = *(sl);
0x000045de cmp r3, 2 |
| if (r3 == 2) {
0x000045e0 beq 0x469c | goto label_40;
| }
| }
0x000045e2 ldr r0, [sp, 0x84] | r0 = *(ptr);
0x000045e4 ldr r1, [sp, 0x58] | r1 = *(arg_58h);
0x000045e6 bl 0x2624 | r0 = fcn_00002624 (r0, r1);
0x000045ea cmp r0, 0 |
| if (r0 < 0) {
0x000045ec blt 0x46b8 | goto label_41;
| }
| label_3:
0x000045ee movs r5, 1 | r5 = 1;
| label_1:
0x000045f0 ldr r0, [sp, 0x84] | r0 = *(ptr);
| if (r0 != 0) {
0x000045f2 cbz r0, 0x45f8 |
0x000045f4 blx 0x18cc | user_record_unref ();
| }
0x000045f8 ldr r0, [sb, 4]! | r0 = *((sb += 4));
0x000045fc cmp r0, 0 |
| if (r0 == 0) {
0x000045fe beq.w 0x4722 | goto label_42;
| }
0x00004602 movs r3, 0 | r3 = 0;
0x00004604 mov r1, r6 | r1 = r6;
0x00004606 str r3, [sp, 0x84] | *(ptr) = r3;
0x00004608 blx 0x1884 | r0 = parse_uid ();
0x0000460c cmp r0, 0 |
0x0000460e bge 0x45c4 |
| } while (r0 >= 0);
0x00004610 ldr r3, [sp, 0x5c] | r3 = *(arg_5ch);
0x00004612 mov r2, r7 | r2 = r7;
0x00004614 ldr.w r0, [sb] | r0 = *(sb);
0x00004616 movs r0, r0 |
0x00004618 ldr r1, [r3] | r1 = *(r3);
0x0000461a blx 0x18fc | r0 = userdb_by_name ();
0x0000461e mov fp, r0 |
0x00004620 cmp.w fp, 0 |
0x00004622 lsrs r0, r0, 0x1c | r0 >>= 0x1c;
| if (r0 >= r0) {
0x00004624 bge 0x45d8 | goto label_0;
| }
| label_39:
0x00004626 blx 0x16e0 | log_get_max_level ();
0x0000462a cmn.w fp, 3 |
| if (fp == 3) {
0x0000462e beq 0x4642 | goto label_43;
| }
0x00004630 cmn.w fp, 0x70 |
| if (fp == 0x70) {
0x00004634 beq 0x4672 | goto label_44;
| }
0x00004636 cmp r0, 2 |
| if (r0 > 2) {
0x00004638 bgt 0x46f6 | goto label_45;
| }
| do {
| label_2:
0x0000463a cmp r4, 0 |
0x0000463c it eq |
| if (r4 != 0) {
0x0000463e moveq r4, fp | r4 = fp;
| }
0x00004640 b 0x45f0 | goto label_1;
| label_43:
0x00004642 cmp r0, 2 |
0x00004644 ble 0x463a |
| } while (r0 <= 2);
0x00004646 ldr.w r3, [sb] | r3 = *(sb);
0x0000464a mov r1, fp | r1 = fp;
0x0000464c ldr.w r2, [pc, 0xa38] | r2 = *(0x5088);
0x00004650 movs r0, 3 | r0 = 3;
0x00004652 str r3, [sp, 8] | *(arg_8h) = r3;
0x00004654 ldr.w r3, [pc, 0xa34] | r3 = case.0x1b08.2;
0x00004658 add r2, pc | r2 += pc;
0x0000465a adds r2, 7 | r2 += 7;
0x0000465c add r3, pc | r3 += pc;
0x0000465e str r3, [sp, 4] | *(arg_4h) = r3;
0x00004660 ldr.w r3, [pc, 0xa2c] |
0x00004664 add r3, pc | r3 = 0x96f8;
0x00004666 str r3, [sp] | *(sp) = r3;
0x00004668 mov.w r3, 0x17a | r3 = 0x17a;
0x0000466c blx 0x1794 | log_internal ();
0x00004670 b 0x463a | goto label_2;
| label_44:
0x00004672 cmp r0, 2 |
| if (r0 <= 2) {
0x00004674 ble 0x463a | goto label_2;
| }
0x00004676 ldr.w r3, [pc, 0xa1c] |
0x0000467a mov r1, fp | r1 = fp;
0x0000467c ldr.w r2, [pc, 0xa18] |
0x00004680 movs r0, 3 | r0 = 3;
0x00004682 add r3, pc | r3 = 0x971c;
0x00004684 str r3, [sp, 4] | *(arg_4h) = r3;
0x00004686 add r2, pc | r2 = 0x9722;
0x00004688 ldr.w r3, [pc, 0xa10] |
0x0000468c adds r2, 7 | r2 += 7;
0x0000468e add r3, pc | r3 = 0x972e;
0x00004690 str r3, [sp] | *(sp) = r3;
0x00004692 mov.w r3, 0x17c | r3 = 0x17c;
0x00004696 blx 0x1794 | log_internal ();
0x0000469a b 0x463a | goto label_2;
| label_40:
0x0000469c ldr r2, [sp, 0x60] | r2 = *(arg_60h);
0x0000469e movs r0, 0xa | r0 = 0xa;
0x000046a0 ldr.w r3, [pc, 0x9fc] | r3 = *(0x50a0);
0x000046a4 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000046a6 ldr r1, [r3] | r1 = *(0x50a0);
0x000046a8 blx 0x1800 | putc (r0, r1);
0x000046ac ldr r0, [sp, 0x84] | r0 = *(ptr);
0x000046ae ldr r1, [sp, 0x58] | r1 = *(arg_58h);
0x000046b0 bl 0x2624 | r0 = fcn_00002624 (r0, r1);
0x000046b4 cmp r0, 0 |
| if (r0 >= 0) {
0x000046b6 bge 0x45ee | goto label_3;
| }
| label_41:
0x000046b8 mov r5, r0 | r5 = r0;
0x000046ba ldr r0, [sp, 0x84] | r0 = *(ptr);
0x000046bc ldr.w fp, [sp, 0x58] | fp = *(arg_58h);
| if (r0 != 0) {
0x000046c0 cbz r0, 0x46c6 |
0x000046c2 blx 0x18cc | user_record_unref ();
| }
0x000046c6 str r5, [sp, 0x58] | *(arg_58h) = r5;
| label_21:
0x000046c8 cmp.w fp, 0 |
| if (fp == 0) {
0x000046cc beq 0x46d4 | goto label_46;
| }
| label_4:
0x000046ce mov r0, fp | r0 = fp;
0x000046d0 blx 0x1854 | table_unref ();
| do {
| label_46:
0x000046d4 ldr.w r2, [pc, 0x9cc] |
0x000046d8 ldr.w r3, [pc, 0x99c] | r3 = *(0x5078);
0x000046dc add r2, pc | r2 = 0x9784;
0x000046de ldr r3, [r2, r3] | r3 = *(0x9784);
0x000046e0 ldr r2, [r3] | r2 = *(0x9784);
0x000046e2 ldr r3, [sp, 0x8c] | r3 = *(arg_8ch);
0x000046e4 eors r2, r3 | r2 ^= r3;
0x000046e6 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000046ea bne.w 0x5066 | goto label_47;
| }
0x000046ee ldr r0, [sp, 0x58] | r0 = *(arg_58h);
0x000046f0 add sp, 0x94 |
0x000046f2 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_45:
0x000046f6 ldr.w r3, [sb] | r3 = *(sb);
0x000046fa mov r1, fp | r1 = fp;
0x000046fc ldr.w r2, [pc, 0x9a8] |
0x00004700 movs r0, 3 | r0 = 3;
0x00004702 str r3, [sp, 8] | *(arg_8h) = r3;
0x00004704 ldr.w r3, [pc, 0x9a4] |
0x00004708 add r2, pc | r2 = 0x97b4;
0x0000470a adds r2, 7 | r2 += 7;
0x0000470c add r3, pc | r3 = 0x97bc;
0x0000470e str r3, [sp, 4] | *(arg_4h) = r3;
0x00004710 ldr.w r3, [pc, 0x99c] |
0x00004714 add r3, pc | r3 = 0x97c8;
0x00004716 str r3, [sp] | *(sp) = r3;
0x00004718 mov.w r3, 0x17e | r3 = 0x17e;
0x0000471c blx 0x1794 | log_internal ();
0x00004720 b 0x463a | goto label_2;
| label_42:
0x00004722 ldr.w fp, [sp, 0x58] | fp = *(arg_58h);
0x00004726 str r4, [sp, 0x58] | *(arg_58h) = r4;
0x00004728 cmp.w fp, 0 |
0x0000472c beq 0x46d4 |
| } while (fp == 0);
0x0000472e ldr.w r2, [pc, 0x984] |
0x00004732 movs r3, 0 | r3 = 0;
0x00004734 mov r0, r7 | r0 = r7;
0x00004736 add r1, sp, 0x88 | r1 += arg_88h;
0x00004738 strd r3, r3, [sp, 0x84] | __asm ("strd r3, r3, [sp, 0x84]");
0x0000473c add r2, pc | r2 = 0x97f6;
0x0000473e blx 0x174c | r0 = uid_range_load_userns ();
0x00004742 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x00004744 blt.w 0x4abe | goto label_48;
| }
| label_17:
0x00004748 ldrd lr, r1, [sp, 0x84] | __asm ("ldrd lr, r1, [ptr]");
0x0000474c clz r3, lr | r3 &= lr;
0x00004750 cmp r1, 0 |
0x00004752 lsr.w r3, r3, 5 | r3 >>= 5;
0x00004756 it eq |
| if (r1 != 0) {
0x00004758 moveq r3, 0 | r3 = 0;
| }
0x0000475a cmp r3, 0 |
| if (r3 != 0) {
0x0000475c bne.w 0x4d6c | goto label_49;
| }
0x00004760 ldr.w r3, [pc, 0x954] |
0x00004764 ldr.w sb, [pc, 0x954] |
0x00004768 str.w lr, [sp, 0x7c] | __asm ("str.w lr, [arg_7ch]");
0x0000476c add r3, pc | r3 = 0x9828;
0x0000476e strd fp, r1, [sp, 0x60] | __asm ("strd fp, r1, [sp, 0x60]");
0x00004772 str r3, [sp, 0x70] | *(arg_70h) = r3;
0x00004774 add sb, pc | sb = 0x9834;
0x00004776 ldr.w r3, [pc, 0x948] |
0x0000477a add r3, pc | r3 = 0x9840;
0x0000477c str r3, [sp, 0x74] | *(arg_74h) = r3;
0x0000477e ldr.w r3, [pc, 0x944] |
0x00004782 add r3, pc | r3 = 0x984c;
0x00004784 str r3, [sp, 0x78] | *(arg_78h) = r3;
0x00004786 add.w r3, sb, 0x40 | r3 = sb + 0x40;
0x0000478a str r3, [sp, 0x6c] | *(arg_6ch) = r3;
| do {
0x0000478c ldr r3, [sp, 0x64] | r3 = *(arg_64h);
| if (r3 != 0) {
0x0000478e cbz r3, 0x47aa |
0x00004790 ldr.w r3, [sb, 4] | r3 = *((sb + 4));
0x00004794 ldr.w r2, [sb] | r2 = *(sb);
0x00004798 ldr r1, [sp, 0x64] | r1 = *(arg_64h);
0x0000479a adds r3, 1 | r3++;
0x0000479c ldr r0, [sp, 0x7c] | r0 = *(arg_7ch);
0x0000479e subs r3, r3, r2 | r3 -= r2;
0x000047a0 blx 0x15f0 | r0 = uid_range_covers ();
0x000047a4 cmp r0, 0 |
| if (r0 == 0) {
0x000047a6 beq.w 0x49b0 | goto label_50;
| }
| }
0x000047aa movs r0, 0x11 | r0 = 0x11;
0x000047ac movs r6, 0 | r6 = 0;
0x000047ae blx 0x1818 | special_glyph ();
0x000047b2 ldr.w r5, [sb, 8] | r5 = *((sb + 8));
0x000047b6 ldr r3, [sp, 0x70] | r3 = *(arg_70h);
0x000047b8 ldr r1, [sp, 0x74] | r1 = *(arg_74h);
0x000047ba mov r2, r5 | r2 = r5;
0x000047bc str r0, [sp] | *(sp) = r0;
0x000047be str r6, [sp, 4] | *(arg_4h) = r6;
0x000047c0 blx 0x18c0 | r0 = strjoin_real ();
0x000047c4 mov r4, r0 | r4 = r0;
0x000047c6 cmp r0, 0 |
| if (r0 == 0) {
0x000047c8 beq.w 0x4eb4 | goto label_51;
| }
0x000047cc ldr.w r0, [pc, 0x8f8] |
0x000047d0 mov r3, r6 | r3 = r6;
0x000047d2 ldr r2, [sp, 0x78] | r2 = *(arg_78h);
0x000047d4 mov r1, r5 | r1 = r5;
0x000047d6 add r0, pc | r0 = 0x98a2;
0x000047d8 blx 0x18c0 | r0 = strjoin_real ();
0x000047dc mov r6, r0 | r6 = r0;
0x000047de cmp r0, 0 |
| if (r0 == 0) {
0x000047e0 beq.w 0x4eea | goto label_52;
| }
0x000047e4 movs r0, 4 | r0 = 4;
0x000047e6 blx 0x1818 | special_glyph ();
0x000047ea str r0, [sp, 0x68] | *(arg_68h) = r0;
0x000047ec blx 0x165c | r0 = get_color_mode ();
0x000047f0 cmp r0, 0 |
| if (r0 == 0) {
0x000047f2 beq.w 0x4ab6 | goto label_53;
| }
0x000047f6 cmp r0, 2 |
| if (r0 == 2) {
0x000047f8 beq.w 0x4a1e | goto label_54;
| }
0x000047fc ldr.w r8, [pc, 0x8cc] |
0x00004800 add r8, pc | r8 = 0x98d0;
| label_6:
0x00004802 ldr.w r0, [sb, 0xc] | r0 = *((sb + 0xc));
0x00004806 blx 0x171c | user_disposition_to_string ();
0x0000480a str r0, [sp, 0x5c] | *(arg_5ch) = r0;
0x0000480c blx 0x165c | r0 = get_color_mode ();
0x00004810 cmp r0, 0 |
| if (r0 == 0) {
0x00004812 beq.w 0x4aae | goto label_55;
| }
0x00004816 cmp r0, 2 |
| if (r0 == 2) {
0x00004818 beq.w 0x4a3e | goto label_56;
| }
0x0000481c ldr.w sl, [pc, 0x8b0] |
0x00004820 add sl, pc | sl = 0x98f4;
| label_16:
0x00004822 ldr.w fp, [sb] | fp = *(sb);
0x00004826 blx 0x165c | r0 = get_color_mode ();
0x0000482a cmp r0, 0 |
| if (r0 == 0) {
0x0000482c beq.w 0x4a52 | goto label_57;
| }
| label_8:
0x00004830 cmp r0, 2 |
| if (r0 == 2) {
0x00004832 beq.w 0x4a26 | goto label_58;
| }
0x00004836 ldr.w r7, [pc, 0x89c] |
0x0000483a add r7, pc | r7 = 0x9914;
| label_9:
0x0000483c blx 0x165c | r0 = get_color_mode ();
0x00004840 cmp r0, 0 |
| if (r0 == 0) {
0x00004842 beq.w 0x4a36 | goto label_59;
| }
| label_7:
0x00004846 cmp r0, 2 |
| if (r0 == 2) {
0x00004848 beq.w 0x4a16 | goto label_60;
| }
0x0000484c ldr.w r2, [pc, 0x888] |
0x00004850 add r2, pc | r2 = 0x992c;
| label_5:
0x00004852 ldr r3, [sp, 0x5c] | r3 = *(arg_5ch);
0x00004854 movs r1, 0x1f | r1 = 0x1f;
0x00004856 mov.w ip, 0x24 |
0x0000485a str r1, [sp, 0x1c] | *(arg_1ch) = r1;
0x0000485c mov.w r1, -1 | r1 = -1;
0x00004860 str r7, [sp, 0x28] | *(arg_28h) = r7;
0x00004862 str r3, [sp, 0x10] | *(arg_10h) = r3;
0x00004864 movs r3, 0x2a | r3 = 0x2a;
0x00004866 str r3, [sp, 0x24] | *(arg_24h) = r3;
0x00004868 movs r7, 0 | r7 = 0;
0x0000486a str r3, [sp, 0x14] | *(arg_14h) = r3;
0x0000486c str r3, [sp, 4] | *(arg_4h) = r3;
0x0000486e str r3, [sp, 0x38] | *(arg_38h) = r3;
0x00004870 movs r3, 1 | r3 = 1;
0x00004872 strd r1, ip, [sp, 0x4c] | __asm ("strd r1, ip, [sp, 0x4c]");
0x00004876 movs r1, 0xe | r1 = 0xe;
0x00004878 str r2, [sp, 0x3c] | *(arg_3ch) = r2;
0x0000487a str r1, [sp, 0x48] | *(arg_48h) = r1;
0x0000487c mov r1, r3 | r1 = r3;
0x0000487e ldr r2, [sp, 0x68] | r2 = *(arg_68h);
0x00004880 ldr r0, [sp, 0x60] | r0 = *(arg_60h);
0x00004882 str.w sl, [sp, 0x18] | __asm ("str.w sl, [arg_18h]");
0x00004886 str.w r8, [sp, 8] | __asm ("str.w r8, [arg_8h]");
0x0000488a str r4, [sp] | *(sp) = r4;
0x0000488c str r3, [sp, 0xc] | *(arg_ch) = r3;
0x0000488e str.w fp, [sp, 0x20] | __asm ("str.w fp, [arg_20h]");
0x00004892 str r6, [sp, 0x34] | *(arg_34h) = r6;
0x00004894 str r3, [sp, 0x30] | *(arg_30h) = r3;
0x00004896 strd r7, r7, [sp, 0x40] | __asm ("strd r7, r7, [sp, 0x40]");
0x0000489a str r7, [sp, 0x2c] | *(arg_2ch) = r7;
0x0000489c blx 0x17c4 | r0 = table_add_many_internal ();
0x000048a0 cmp r0, 0 |
| if (r0 < 0) {
0x000048a2 blt.w 0x4f06 | goto label_61;
| }
0x000048a6 mov r0, r4 | r0 = r4;
0x000048a8 blx 0x1608 | free (r0);
0x000048ac movs r0, 0x10 | r0 = 0x10;
0x000048ae blx 0x1818 | special_glyph ();
0x000048b0 invalid |
0x000048b4 subs r0, 0x28 | r0 -= 0x28;
0x000048b6 mov r2, r5 | r2 = r5;
0x000048b8 ldr.w r1, [pc, 0x824] |
0x000048bc strd r0, r7, [sp] | __asm ("strd r0, r7, [sp]");
0x000048c0 add r3, pc | r3 += pc;
0x000048c2 add r1, pc | r1 = 0x99a6;
0x000048c4 blx 0x18c0 | r0 = strjoin_real ();
0x000048c8 mov r4, r0 | r4 = r0;
0x000048ca cmp r0, 0 |
| if (r0 == 0) {
0x000048cc beq.w 0x4f36 | goto label_62;
| }
0x000048d0 mov r0, r6 | r0 = r6;
0x000048d2 blx 0x1608 | free (r0);
0x000048d6 ldr.w r2, [pc, 0x80c] |
0x000048da mov r3, r7 | r3 = r7;
0x000048dc ldr.w r0, [pc, 0x808] |
0x000048e0 mov r1, r5 | r1 = r5;
0x000048e2 add r2, pc | r2 = 0x99cc;
0x000048e4 add r0, pc | r0 = 0x99d0;
0x000048e6 blx 0x18c0 | r0 = strjoin_real ();
0x000048ea mov r6, r0 | r6 = r0;
0x000048ec cmp r0, 0 |
| if (r0 == 0) {
0x000048ee beq.w 0x4f6e | goto label_63;
| }
0x000048f2 movs r0, 2 | r0 = 2;
0x000048f4 blx 0x1818 | r0 = special_glyph ();
0x000048f8 mov r5, r0 | r5 = r0;
0x000048fa blx 0x165c | r0 = get_color_mode ();
0x000048fe cmp r0, 0 |
| if (r0 == 0) {
0x00004900 beq.w 0x4aee | goto label_64;
| }
0x00004904 cmp r0, 2 |
| if (r0 == 2) {
0x00004906 beq.w 0x4a96 | goto label_65;
| }
0x0000490a ldr.w r7, [pc, 0x7e0] |
0x0000490e add r7, pc | r7 = 0x9a00;
| label_18:
0x00004910 blx 0x165c | r0 = get_color_mode ();
0x00004914 cmp r0, 0 |
| if (r0 == 0) {
0x00004916 beq.w 0x4aa6 | goto label_66;
| }
| label_14:
0x0000491a cmp r0, 2 |
| if (r0 == 2) {
0x0000491c beq.w 0x4a7a | goto label_67;
| }
0x00004920 ldr.w r8, [pc, 0x7cc] |
0x00004924 add r8, pc | r8 = 0x9a18;
| label_15:
0x00004926 ldr.w sl, [sb, 4] | sl = *((sb + 4));
0x0000492a blx 0x165c | r0 = get_color_mode ();
0x0000492e cmp r0, 0 |
| if (r0 == 0) {
0x00004930 beq.w 0x4a8e | goto label_68;
| }
| label_12:
0x00004934 cmp r0, 2 |
| if (r0 == 2) {
0x00004936 beq.w 0x4a62 | goto label_69;
| }
0x0000493a ldr.w fp, [pc, 0x7b8] |
0x0000493e add fp, pc | fp = 0x9a38;
| label_13:
0x00004940 blx 0x165c | r0 = get_color_mode ();
0x00004944 cmp r0, 0 |
| if (r0 == 0) {
0x00004946 beq.w 0x4a72 | goto label_70;
| }
| label_11:
0x0000494a cmp r0, 2 |
| if (r0 == 2) {
0x0000494c beq.w 0x4a5a | goto label_71;
| }
0x00004950 ldr.w r3, [pc, 0x7a4] |
0x00004954 add r3, pc | r3 = 0x9a50;
| label_10:
0x00004956 movs r1, 0x2a | r1 = 0x2a;
0x00004958 ldr r2, [sp, 0x5c] | r2 = *(arg_5ch);
0x0000495a str r1, [sp, 0x24] | *(arg_24h) = r1;
0x0000495c str r1, [sp, 0x14] | *(arg_14h) = r1;
0x0000495e str r1, [sp, 4] | *(arg_4h) = r1;
0x00004960 str r1, [sp, 0x38] | *(arg_38h) = r1;
0x00004962 movs r1, 0x1f | r1 = 0x1f;
0x00004964 str r1, [sp, 0x1c] | *(arg_1ch) = r1;
0x00004966 movs r1, 0 | r1 = 0;
0x00004968 strd r1, r1, [sp, 0x40] | __asm ("strd r1, r1, [sp, 0x40]");
0x0000496c str r1, [sp, 0x2c] | *(arg_2ch) = r1;
0x0000496e movs r1, 0x24 | r1 = 0x24;
0x00004970 str r3, [sp, 0x3c] | *(arg_3ch) = r3;
0x00004972 movs r3, 1 | r3 = 1;
0x00004974 str r1, [sp, 0x50] | *(arg_50h) = r1;
0x00004976 movs r1, 0xe | r1 = 0xe;
0x00004978 str r2, [sp, 0x10] | *(arg_10h) = r2;
0x0000497a mov r2, r5 | r2 = r5;
0x0000497c str r1, [sp, 0x48] | *(arg_48h) = r1;
0x0000497e mov r1, r3 | r1 = r3;
0x00004980 ldr r0, [sp, 0x60] | r0 = *(arg_60h);
0x00004982 str.w sl, [sp, 0x20] | __asm ("str.w sl, [arg_20h]");
0x00004986 str.w r8, [sp, 0x18] | __asm ("str.w r8, [arg_18h]");
0x0000498a str r7, [sp, 8] | *(arg_8h) = r7;
0x0000498c str r4, [sp] | *(sp) = r4;
0x0000498e str r3, [sp, 0xc] | *(arg_ch) = r3;
0x00004990 str.w fp, [sp, 0x28] | __asm ("str.w fp, [arg_28h]");
0x00004994 str r6, [sp, 0x34] | *(arg_34h) = r6;
0x00004996 str r3, [sp, 0x4c] | *(arg_4ch) = r3;
0x00004998 str r3, [sp, 0x30] | *(arg_30h) = r3;
0x0000499a blx 0x17c4 | r0 = table_add_many_internal ();
0x0000499e cmp r0, 0 |
| if (r0 < 0) {
0x000049a0 blt.w 0x4f52 | goto label_72;
| }
0x000049a4 mov r0, r6 | r0 = r6;
0x000049a6 blx 0x1608 | free (r0);
0x000049aa mov r0, r4 | r0 = r4;
0x000049ac blx 0x1608 | free (r0);
| label_50:
0x000049b0 ldr r3, [sp, 0x6c] | r3 = *(arg_6ch);
0x000049b2 add.w sb, sb, 0x10 | sb += 0x10;
0x000049b6 cmp r3, sb |
0x000049b8 bne.w 0x478c |
| } while (r3 != sb);
0x000049bc ldr.w fp, [sp, 0x60] | fp = *(arg_60h);
0x000049c0 movs r4, 8 | r4 = 8;
0x000049c2 ldr r1, [sp, 0x84] | r1 = *(ptr);
| label_22:
0x000049c4 ldr.w r3, [pc, 0x734] |
0x000049c8 mov r0, fp | r0 = fp;
0x000049ca ldr r2, [sp, 0x88] | r2 = *(arg_88h);
0x000049cc add r3, pc | r3 = 0x9acc;
0x000049ce bl 0x21dc | r0 = fcn_000021dc (r0, r1, r2, r3);
0x000049d2 subs r5, r0, 0 | r5 = r0 - 0;
0x000049d4 it lt |
| if (r5 >= r0) {
0x000049d6 strlt r5, [sp, 0x58] | *(arg_58h) = r5;
| }
| if (r5 >= r0) {
0x000049d8 blt 0x49f4 |
0x000049da mov r0, fp | r0 = fp;
0x000049dc blx 0x1878 | r0 = table_get_rows ();
0x000049e0 cmp r0, 1 |
| if (r0 > 1) {
0x000049e2 bhi.w 0x4d24 | goto label_73;
| }
| label_19:
0x000049e6 ldr.w r3, [pc, 0x718] |
0x000049ea add r3, pc | r3 = 0x9af0;
0x000049ec ldrb r3, [r3] | r3 = *(r3);
0x000049ee cmp r3, 0 |
| if (r3 != 0) {
0x000049f0 bne.w 0x4e40 | goto label_74;
| }
| }
| label_20:
0x000049f4 ldr r0, [sp, 0x84] | r0 = *(ptr);
0x000049f6 blx 0x1608 | free (r0);
0x000049fa b 0x46ce | goto label_4;
| label_60:
0x00004a16 ldr.w r2, [pc, 0x6ec] |
0x00004a1a add r2, pc | r2 = 0x9b24;
0x00004a1c b 0x4852 | goto label_5;
| label_54:
0x00004a1e ldr.w r8, [pc, 0x6e8] |
0x00004a22 add r8, pc | r8 = 0x9b30;
0x00004a24 b 0x4802 | goto label_6;
| label_58:
0x00004a26 ldr.w r7, [pc, 0x6e4] |
0x00004a2a add r7, pc | r7 = 0x9b3c;
0x00004a2c blx 0x165c | r0 = get_color_mode ();
0x00004a30 cmp r0, 0 |
| if (r0 != 0) {
0x00004a32 bne.w 0x4846 | goto label_7;
| }
| label_59:
0x00004a36 ldr.w r2, [pc, 0x6d8] |
0x00004a3a add r2, pc | r2 = 0x9b50;
0x00004a3c b 0x4852 | goto label_5;
| label_56:
0x00004a3e ldr.w sl, [pc, 0x6d4] |
0x00004a42 ldr.w fp, [sb] | fp = *(sb);
0x00004a46 add sl, pc | sl = 0x9b60;
0x00004a48 blx 0x165c | r0 = get_color_mode ();
0x00004a4c cmp r0, 0 |
| if (r0 != 0) {
0x00004a4e bne.w 0x4830 | goto label_8;
| }
| label_57:
0x00004a52 ldr.w r7, [pc, 0x6c4] |
0x00004a56 add r7, pc | r7 = 0x9b74;
0x00004a58 b 0x483c | goto label_9;
| label_71:
0x00004a5a ldr.w r3, [pc, 0x6c0] |
0x00004a5e add r3, pc | r3 = 0x9b80;
0x00004a60 b 0x4956 | goto label_10;
| label_69:
0x00004a62 ldr.w fp, [pc, 0x6bc] |
0x00004a66 add fp, pc | fp = 0x9b8c;
0x00004a68 blx 0x165c | r0 = get_color_mode ();
0x00004a6c cmp r0, 0 |
| if (r0 != 0) {
0x00004a6e bne.w 0x494a | goto label_11;
| }
| label_70:
0x00004a72 ldr.w r3, [pc, 0x6b0] |
0x00004a76 add r3, pc | r3 = 0x9ba0;
0x00004a78 b 0x4956 | goto label_10;
| label_67:
0x00004a7a ldr.w r8, [pc, 0x6ac] |
0x00004a7e ldr.w sl, [sb, 4] | sl = *((sb + 4));
0x00004a82 add r8, pc | r8 = 0x9bb0;
0x00004a84 blx 0x165c | r0 = get_color_mode ();
0x00004a88 cmp r0, 0 |
| if (r0 != 0) {
0x00004a8a bne.w 0x4934 | goto label_12;
| }
| label_68:
0x00004a8e ldr.w fp, [pc, 0x69c] |
0x00004a92 add fp, pc | fp = 0x9bc4;
0x00004a94 b 0x4940 | goto label_13;
| label_65:
0x00004a96 ldr.w r7, [pc, 0x698] |
0x00004a9a add r7, pc | r7 = 0x9bd0;
0x00004a9c blx 0x165c | r0 = get_color_mode ();
0x00004aa0 cmp r0, 0 |
| if (r0 != 0) {
0x00004aa2 bne.w 0x491a | goto label_14;
| }
| label_66:
0x00004aa6 ldr.w r8, [pc, 0x68c] |
0x00004aaa add r8, pc | r8 = 0x9be4;
0x00004aac b 0x4926 | goto label_15;
| label_55:
0x00004aae ldr.w sl, [pc, 0x688] |
0x00004ab2 add sl, pc | sl = 0x9bf0;
0x00004ab4 b 0x4822 | goto label_16;
| label_53:
0x00004ab6 ldr.w r8, [pc, 0x684] |
0x00004aba add r8, pc | r8 = 0x9bfc;
0x00004abc b 0x4802 | goto label_6;
| label_48:
0x00004abe blx 0x16e0 | r0 = log_get_max_level ();
0x00004ac2 cmp r0, 6 |
| if (r0 <= 6) {
0x00004ac4 ble.w 0x4748 | goto label_17;
| }
0x00004ac8 ldr.w r3, [pc, 0x674] |
0x00004acc mov r1, r5 | r1 = r5;
0x00004ace ldr.w r2, [pc, 0x674] |
0x00004ad2 movs r0, 7 | r0 = 7;
0x00004ad4 add r3, pc | r3 = 0x9c18;
0x00004ad6 str r3, [sp, 4] | *(arg_4h) = r3;
0x00004ad8 add r2, pc | r2 = 0x9c22;
0x00004ada ldr.w r3, [pc, 0x66c] |
0x00004ade adds r2, 7 | r2 += 7;
0x00004ae0 add r3, pc | r3 = 0x9c2e;
0x00004ae2 str r3, [sp] | *(sp) = r3;
0x00004ae4 mov.w r3, 0x1b6 | r3 = 0x1b6;
0x00004ae8 blx 0x1794 | log_internal ();
0x00004aec b 0x4748 | goto label_17;
| label_64:
0x00004aee ldr.w r7, [pc, 0x65c] |
0x00004af2 add r7, pc | r7 = 0x9c44;
0x00004af4 b 0x4910 | goto label_18;
| label_73:
0x00004d24 ldr.w r3, [pc, 0x494] |
0x00004d28 mov r0, fp | r0 = fp;
0x00004d2a ldr.w r2, [pc, 0x494] |
0x00004d2e ldr.w r1, [pc, 0x494] |
0x00004d32 add r3, pc | r3 = 0x9ef2;
0x00004d34 add r2, pc |
0x00004d36 ldrb r3, [r3] | r3 = *(r3);
0x00004d38 add r1, pc |
0x00004d3a ldr r2, [r2] | r2 = *(0x9efa);
0x00004d3c ldr r1, [r1] | r1 = *(0x9f02);
0x00004d3e blx 0x18a8 | r0 = table_print_with_pager ();
0x00004d42 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 >= r0) {
0x00004d44 bge.w 0x49e6 | goto label_19;
| }
0x00004d48 blx 0x16e0 | r0 = log_get_max_level ();
0x00004d4c cmp r0, 2 |
| if (r0 > 2) {
0x00004d4e bgt.w 0x5044 | goto label_75;
| }
0x00004d52 rsbs r3, r7, 0 | r3 = r7 - ;
0x00004d54 bic r3, r3, 0x40000000 | r3 = BIT_MASK (r3, 0x40000000);
0x00004d58 rsbs r3, r3, 0 | r3 -= ;
0x00004d5a str r3, [sp, 0x58] | *(arg_58h) = r3;
| label_27:
0x00004d5c ldr r3, [sp, 0x58] | r3 = *(arg_58h);
0x00004d5e cmp r3, 0 |
| if (r3 < 0) {
0x00004d60 blt.w 0x49f4 | goto label_20;
| }
| label_24:
0x00004d64 mvn r3, 0x55 | r3 = ~0x55;
0x00004d68 str r3, [sp, 0x58] | *(arg_58h) = r3;
0x00004d6a b 0x49f4 | goto label_20;
| label_49:
0x00004d6c ldr.w r1, [pc, 0x458] |
0x00004d70 movs r2, 0xb2 | r2 = 0xb2;
0x00004d72 ldr.w r3, [pc, 0x458] |
0x00004d76 ldr.w r0, [pc, 0x458] |
0x00004d7a add r1, pc | r1 = 0x9f46;
0x00004d7c add r3, pc | r3 = 0x9f4e;
0x00004d7e adds r1, 7 | r1 += 7;
0x00004d80 add r0, pc | r0 = 0x9f56;
0x00004d82 blx 0x15fc | log_assert_failed ();
0x00004d86 blx 0x16e0 | r0 = log_get_max_level ();
0x00004d8a cmp r0, 2 |
| if (r0 > 2) {
0x00004d8c bgt.w 0x4f98 | goto label_76;
| }
0x00004d90 rsbs r4, r4, 0 | r4 -= ;
0x00004d92 bic r4, r4, 0x40000000 | r4 = BIT_MASK (r4, 0x40000000);
0x00004d96 rsbs r3, r4, 0 | r3 = r4 - ;
0x00004d98 str r3, [sp, 0x58] | *(arg_58h) = r3;
| label_25:
0x00004d9a ldr r3, [sp, 0x58] | r3 = *(arg_58h);
0x00004d9c cmp r3, 0 |
0x00004d9e it ge |
| if (r3 < 0) {
0x00004da0 mvnge r3, 0x55 | r3 = ~0x55;
| }
0x00004da4 str r3, [sp, 0x58] | *(arg_58h) = r3;
0x00004da6 ldr r0, [sp, 0x84] | r0 = *(ptr);
0x00004da8 cmp r0, 0 |
| if (r0 == 0) {
0x00004daa beq.w 0x46c8 | goto label_21;
| }
0x00004dae blx 0x1944 | userdb_iterator_free ();
0x00004db2 b 0x46c8 | goto label_21;
| label_74:
0x00004e40 mov r0, fp | r0 = fp;
0x00004e42 blx 0x1878 | table_get_rows ();
0x00004e46 mvns r3, r4 | r3 = ~r4;
0x00004e48 subs r3, r3, r5 | r3 -= r5;
0x00004e4a adds r2, r3, r0 | r2 = r3 + r0;
| if (r2 != r3) {
0x00004e4c beq 0x4eaa |
0x00004e4e ldr r1, [pc, 0x394] |
0x00004e50 movs r0, 1 | r0 = 1;
0x00004e52 add r1, pc | r1 = 0xa03c;
0x00004e54 blx 0x19f8 | printf_chk ()
0x00004e56 ldcl p5, c14, [r0, 0x330] | __asm ("ldcl p5, c14, [r0, 0x330]");
| }
0x00004eaa ldr r0, [pc, 0x33c] |
0x00004eac add r0, pc | r0 = 0xa09a;
0x00004eae blx 0x16bc | puts (r0);
0x00004eb0 invalid |
| label_51:
0x00004eb4 ldr r1, [pc, 0x334] |
0x00004eb6 mov sl, r0 | sl = r0;
0x00004eb8 ldr r3, [pc, 0x334] |
0x00004eba movs r2, 0xbf | r2 = 0xbf;
0x00004ebc movs r0, 3 | r0 = 3;
0x00004ebe ldr.w fp, [sp, 0x60] | fp = *(arg_60h);
0x00004ec2 add r1, pc | r1 = 0xa0b2;
0x00004ec4 mov r6, sl | r6 = sl;
0x00004ec6 add r3, pc | r3 = 0xa0ba;
0x00004ec8 adds r1, 7 | r1 += 7;
0x00004eca blx 0x1a14 | r0 = fcn_00001a14 ();
0x00004ece mov r4, r0 | r4 = r0;
| label_23:
0x00004ed0 mov r0, r6 | r0 = r6;
0x00004ed2 blx 0x1608 | free (r0);
0x00004ed6 mov r0, sl | r0 = sl;
0x00004ed8 blx 0x1608 | free (r0);
0x00004edc cmp r4, 0 |
0x00004ede ldr r1, [sp, 0x84] | r1 = *(ptr);
0x00004ee0 it lt |
| if (r4 < 0) {
0x00004ee2 strlt r4, [sp, 0x58] | *(arg_58h) = r4;
| goto label_77;
| }
| if (r4 < 0) {
| label_77:
0x00004ee4 blt.w 0x49f4 | goto label_20;
| }
0x00004ee6 add r5, sp, 0x218 | r5 = sp + 0x218;
0x00004ee8 b 0x49c4 | goto label_22;
| label_52:
0x00004eea ldr r1, [pc, 0x308] |
0x00004eec movs r2, 0xc3 | r2 = 0xc3;
0x00004eee ldr r3, [pc, 0x308] |
0x00004ef0 movs r0, 3 | r0 = 3;
0x00004ef2 ldr.w fp, [sp, 0x60] | fp = *(arg_60h);
0x00004ef6 mov sl, r4 | sl = r4;
0x00004ef8 add r1, pc | r1 = 0xa0f2;
0x00004efa adds r1, 7 | r1 += 7;
0x00004efc add r3, pc | r3 = 0xa0fa;
0x00004efe blx 0x1a14 | r0 = fcn_00001a14 ();
0x00004f02 mov r4, r0 | r4 = r0;
0x00004f04 b 0x4ed0 | goto label_23;
| label_61:
0x00004f06 mov r8, r0 | r8 = r0;
0x00004f08 ldr.w fp, [sp, 0x60] | fp = *(arg_60h);
0x00004f0c blx 0x16e0 | r0 = log_get_max_level ();
0x00004f10 cmp r0, 2 |
0x00004f12 mov sl, r4 | sl = r4;
| if (r0 > 2) {
0x00004f14 bgt 0x5004 | goto label_78;
| }
0x00004f16 rsb.w r4, r8, 0 | r4 = r8 - ;
0x00004f1a bic r4, r4, 0x40000000 | r4 = BIT_MASK (r4, 0x40000000);
0x00004f1e rsbs r3, r4, 0 | r3 = r4 - ;
0x00004f20 str r3, [sp, 0x58] | *(arg_58h) = r3;
| do {
| label_26:
0x00004f22 ldr r3, [sp, 0x58] | r3 = *(arg_58h);
0x00004f24 cmp r3, 0 |
| if (r3 < 0) {
0x00004f26 blt 0x4f8a | goto label_79;
| }
0x00004f28 mov r0, r6 | r0 = r6;
0x00004f2a blx 0x1608 | free (r0);
0x00004f2e mov r0, sl | r0 = sl;
0x00004f30 blx 0x1608 | free (r0);
0x00004f34 b 0x4d64 | goto label_24;
| label_62:
0x00004f36 ldr r1, [pc, 0x2c4] |
0x00004f38 mov sl, r0 | sl = r0;
0x00004f3a ldr r3, [pc, 0x2c4] |
0x00004f3c movs r2, 0xdc | r2 = 0xdc;
0x00004f3e movs r0, 3 | r0 = 3;
0x00004f40 ldr.w fp, [sp, 0x60] | fp = *(arg_60h);
0x00004f42 add sp, 0x180 |
0x00004f44 add r1, pc | r1 = 0xa146;
0x00004f46 adds r1, 7 | r1 += 7;
0x00004f48 add r3, pc | r3 = 0xa14e;
0x00004f4a blx 0x1a14 | r0 = fcn_00001a14 ();
0x00004f4e mov r4, r0 | r4 = r0;
0x00004f50 b 0x4ed0 | goto label_23;
| label_72:
0x00004f52 mov r5, r0 | r5 = r0;
0x00004f54 ldr.w fp, [sp, 0x60] | fp = *(arg_60h);
0x00004f58 blx 0x16e0 | r0 = log_get_max_level ();
0x00004f5c cmp r0, 2 |
0x00004f5e mov sl, r4 | sl = r4;
| if (r0 > 2) {
0x00004f60 bgt 0x5024 | goto label_80;
| }
0x00004f62 rsbs r4, r5, 0 | r4 = r5 - ;
0x00004f64 bic r4, r4, 0x40000000 | r4 = BIT_MASK (r4, 0x40000000);
0x00004f68 rsbs r3, r4, 0 | r3 = r4 - ;
0x00004f6a str r3, [sp, 0x58] | *(arg_58h) = r3;
0x00004f6c b 0x4f22 |
| } while (1);
| label_63:
0x00004f6e ldr r1, [pc, 0x294] |
0x00004f70 movs r2, 0xe1 | r2 = 0xe1;
0x00004f72 ldr r3, [pc, 0x294] |
0x00004f74 movs r0, 3 | r0 = 3;
0x00004f76 ldr.w fp, [sp, 0x60] | fp = *(arg_60h);
0x00004f7a mov sl, r4 | sl = r4;
0x00004f7c add r1, pc | r1 = 0xa186;
0x00004f7e adds r1, 7 | r1 += 7;
0x00004f80 add r3, pc | r3 = 0xa18e;
0x00004f82 blx 0x1a14 | r0 = fcn_00001a14 ();
0x00004f86 mov r4, r0 | r4 = r0;
0x00004f88 b 0x4ed0 | goto label_23;
| label_79:
0x00004f8a mov r0, r6 | r0 = r6;
0x00004f8c blx 0x1608 | free (r0);
0x00004f90 mov r0, sl | r0 = sl;
0x00004f92 blx 0x1608 | free (r0);
0x00004f96 b 0x49f4 | goto label_20;
| label_76:
0x00004f98 ldr r2, [pc, 0x270] |
0x00004f9a mov r1, r4 | r1 = r4;
0x00004f9c ldr r0, [pc, 0x270] |
0x00004f9e ldr r3, [pc, 0x274] |
0x00004fa0 add r2, pc | r2 = 0xa1b0;
0x00004fa2 add r0, pc | r0 = 0xa1b6;
0x00004fa4 adds r2, 7 | r2 += 7;
0x00004fa6 add r3, pc | r3 = 0xa1c0;
0x00004fa8 strd r3, r0, [sp] | __asm ("strd r3, r0, [sp]");
0x00004fac mov.w r3, 0x196 | r3 = 0x196;
0x00004fb0 movs r0, 3 | r0 = 3;
0x00004fb2 blx 0x1794 | log_internal ();
0x00004fb6 str r0, [sp, 0x58] | *(arg_58h) = r0;
0x00004fb8 b 0x4d9a | goto label_25;
| label_78:
0x00005004 ldr r3, [pc, 0x228] |
0x00005006 mov r1, r8 | r1 = r8;
0x00005008 movs r0, 3 | r0 = 3;
0x0000500a add r3, pc | r3 = 0xa23e;
0x0000500c adds r2, r3, 7 | r2 = r3 + 7;
0x0000500e ldr r3, [pc, 0x224] |
0x00005010 add r3, pc | r3 = 0xa24a;
0x00005012 str r3, [sp, 4] | *(arg_4h) = r3;
0x00005014 ldr r3, [pc, 0x220] |
0x00005016 add r3, pc | r3 = 0xa252;
0x00005018 str r3, [sp] | *(sp) = r3;
0x0000501a movs r3, 0xd5 | r3 = 0xd5;
0x0000501c blx 0x1794 | log_internal ();
0x00005020 str r0, [sp, 0x58] | *(arg_58h) = r0;
0x00005022 b 0x4f22 | goto label_26;
| label_80:
0x00005024 ldr r3, [pc, 0x214] |
0x00005026 mov r1, r5 | r1 = r5;
0x00005028 movs r0, 3 | r0 = 3;
0x0000502a add r3, pc | r3 = 0xa26a;
0x0000502c adds r2, r3, 7 | r2 = r3 + 7;
0x0000502e ldr r3, [pc, 0x210] |
0x00005030 add r3, pc | r3 = 0xa276;
0x00005032 str r3, [sp, 4] | *(arg_4h) = r3;
0x00005034 ldr r3, [pc, 0x20c] |
0x00005036 add r3, pc | r3 = 0xa27e;
0x00005038 str r3, [sp] | *(sp) = r3;
0x0000503a movs r3, 0xf3 | r3 = 0xf3;
0x0000503c blx 0x1794 | log_internal ();
0x00005040 str r0, [sp, 0x58] | *(arg_58h) = r0;
0x00005042 b 0x4f22 | goto label_26;
| label_75:
0x00005044 ldr r2, [pc, 0x200] |
0x00005046 mov r1, r7 | r1 = r7;
0x00005048 ldr r0, [pc, 0x200] |
0x0000504a ldr r3, [pc, 0x204] |
0x0000504c add r2, pc | r2 = 0xa298;
0x0000504e add r0, pc | r0 = 0xa29e;
0x00005050 adds r2, 7 | r2 += 7;
0x00005052 add r3, pc | r3 = 0xa2a8;
0x00005054 strd r3, r0, [sp] | __asm ("strd r3, r0, [sp]");
0x00005058 movw r3, 0x1c3 | r3 = 0x1c3;
0x0000505c movs r0, 3 | r0 = 3;
0x0000505e blx 0x1794 | log_internal ();
0x00005062 str r0, [sp, 0x58] | *(arg_58h) = r0;
0x00005064 b 0x4d5c | goto label_27;
| label_47:
0x00005066 blx 0x17d0 | stack_chk_fail ();
0x0000506a nop |
0x0000506c subs r2, 0xa8 | r2 -= 0xa8;
0x0000506e movs r0, r0 |
0x00005070 subs r0, 0xd8 | r0 -= 0xd8;
0x00005072 movs r0, r0 |
0x00005074 subs r0, 0xd4 | r0 -= 0xd4;
0x00005076 movs r0, r0 |
0x00005078 lsls r4, r0, 6 | r4 = r0 << 6;
0x0000507a movs r0, r0 |
0x0000507c subs r2, 0x66 | r2 -= 0x66;
0x0000507e movs r0, r0 |
0x00005080 subs r2, 0x62 | r2 -= 0x62;
0x00005082 movs r0, r0 |
0x00005084 subs r2, 0x4e | r2 -= 0x4e;
0x00005086 movs r0, r0 |
0x00005088 asrs r0, r3, 0xb | r0 = r3 >> 0xb;
0x0000508a movs r0, r0 |
0x0000508c adds r4, r5, 4 | r4 = r5 + 4;
0x0000508e movs r0, r0 |
0x00005090 movs r4, 0xec | r4 = 0xec;
0x00005092 movs r0, r0 |
0x00005094 adds r6, r3, 4 | r6 = r3 + 4;
0x00005096 movs r0, r0 |
0x00005098 asrs r2, r5, 0xa | r2 = r5 >> 0xa;
0x0000509a movs r0, r0 |
0x0000509c movs r4, 0xc2 | r4 = 0xc2;
0x0000509e movs r0, r0 |
0x000050a0 lsls r0, r4, 6 | r0 = r4 << 6;
0x000050a2 movs r0, r0 |
0x000050a4 adds r7, 0x68 | r7 += 0x68;
0x000050a6 movs r0, r0 |
0x000050a8 asrs r0, r5, 8 | r0 = r5 >> 8;
0x000050aa movs r0, r0 |
0x000050ac adds r0, r1, 4 | r0 = r1 + 4;
0x000050ae movs r0, r0 |
0x000050b0 movs r4, 0x3c | r4 = 0x3c;
0x000050b2 movs r0, r0 |
0x000050b4 movs r0, 0xf8 | r0 = 0xf8;
0x000050b6 movs r0, r0 |
0x000050b8 movs r1, 0xe8 | r1 = 0xe8;
0x000050ba movs r0, r0 |
0x000050bc adds r5, 0x78 | r5 += 0x78;
0x000050be movs r0, r0 |
0x000050c0 movs r0, 0x16 | r0 = 0x16;
0x000050c2 movs r0, r0 |
0x000050c4 movs r1, 0xea | r1 = 0xea;
0x000050c6 movs r0, r0 |
0x000050c8 subs r2, r0, 7 | r2 = r0 - 7;
0x000050ca movs r0, r0 |
0x000050cc subs r0, r3, 1 | r0 = r3 - 1;
0x000050ce movs r0, r0 |
0x000050d0 subs r0, r7, 0 | r0 = r7 - 0;
0x000050d2 movs r0, r0 |
0x000050d4 subs r6, r3, 0 | r6 = r3 - 0;
0x000050d6 movs r0, r0 |
0x000050d8 subs r0, r1, 0 | r0 = r1 - 0;
0x000050da movs r0, r0 |
0x000050dc movs r0, 0x94 | r0 = 0x94;
0x000050de movs r0, r0 |
0x000050e0 subs r6, r3, 3 | r6 = r3 - 3;
0x000050e2 movs r0, r0 |
0x000050e4 movs r0, 0x8a | r0 = 0x8a;
0x000050e6 movs r0, r0 |
0x000050e8 subs r4, r0, 3 | r4 = r0 - 3;
0x000050ea movs r0, r0 |
0x000050ec adds r2, r1, 5 | r2 = r1 + 5;
0x000050ee movs r0, r0 |
0x000050f0 adds r4, r6, 4 | r4 = r6 + 4;
0x000050f2 movs r0, r0 |
0x000050f4 adds r2, r3, 4 | r2 = r3 + 4;
0x000050f6 movs r0, r0 |
0x000050f8 adds r4, r0, 4 | r4 = r0 + 4;
0x000050fa movs r0, r0 |
0x000050fc lsrs r1, r5, 0xf | r1 = r5 >> 0xf;
0x000050fe movs r0, r0 |
0x00005100 adds r6, 0x1a | r6 += 0x1a;
0x00005102 movs r0, r0 |
0x00005104 adds r6, r6, 0 | r6 += 0;
0x00005106 movs r0, r0 |
0x00005108 adds r6, r5, 0 | r6 = r5 + 0;
0x0000510a movs r0, r0 |
0x0000510c adds r6, r4, 0 | r6 = r4 + 0;
0x0000510e movs r0, r0 |
0x00005110 adds r2, r1, 6 | r2 = r1 + 6;
0x00005112 movs r0, r0 |
0x00005114 adds r2, r1, 0 | r2 = r1 + 0;
0x00005116 movs r0, r0 |
0x00005118 adds r6, r5, 5 | r6 = r5 + 5;
0x0000511a movs r0, r0 |
0x0000511c subs r2, r6, r7 | r2 = r6 - r7;
0x0000511e movs r0, r0 |
0x00005120 subs r2, r5, r7 | r2 = r5 - r7;
0x00005122 movs r0, r0 |
0x00005124 adds r6, r1, 5 | r6 = r1 + 5;
0x00005126 movs r0, r0 |
0x00005128 subs r6, r1, r7 | r6 = r1 - r7;
0x0000512a movs r0, r0 |
0x0000512c adds r2, r6, 4 | r2 = r6 + 4;
0x0000512e movs r0, r0 |
0x00005130 subs r6, r6, r6 | r6 -= r6;
0x00005132 movs r0, r0 |
0x00005134 adds r2, r3, 4 | r2 = r3 + 4;
0x00005136 movs r0, r0 |
0x00005138 adds r2, r2, 4 | r2 += 4;
0x0000513a movs r0, r0 |
0x0000513c adds r2, r1, 4 | r2 = r1 + 4;
0x0000513e movs r0, r0 |
0x00005140 adds r4, r6, 5 | r4 = r6 + 5;
0x00005142 movs r0, r0 |
0x00005144 lsrs r0, r3, 0x19 | r0 = r3 >> 0x19;
0x00005146 movs r0, r0 |
0x00005148 movs r0, 0x70 | r0 = 0x70;
0x0000514a movs r0, r0 |
0x0000514c adds r2, r2, 3 | r2 += 3;
0x0000514e movs r0, r0 |
0x00005150 subs r2, r6, r5 | r2 = r6 - r5;
0x00005152 movs r0, r0 |
0x00005154 adds r0, r2, 3 | r0 = r2 + 3;
0x00005156 movs r0, r0 |
0x00005158 adds r2, r2, 3 | r2 += 3;
0x0000515a movs r0, r0 |
0x0000515c subs r2, r1, r5 | r2 = r1 - r5;
0x0000515e movs r0, r0 |
0x00005160 adds r6, r0, 3 | r6 = r0 + 3;
0x00005162 movs r0, r0 |
0x00005164 adds r2, r7, 1 | r2 = r7 + 1;
0x00005166 movs r0, r0 |
0x00005168 adds r4, r3, 2 | r4 = r3 + 2;
0x0000516a movs r0, r0 |
0x0000516c subs r2, r6, r4 | r2 = r6 - r4;
0x0000516e movs r0, r0 |
0x00005170 adds r0, r6, 2 | r0 = r6 + 2;
0x00005172 movs r0, r0 |
0x00005174 adds r2, 0xf2 | r2 += 0xf2;
0x00005176 movs r0, r0 |
0x00005178 lsrs r6, r7, 0x16 | r6 = r7 >> 0x16;
0x0000517a movs r0, r0 |
0x0000517c subs r4, r3, 7 | r4 = r3 - 7;
0x0000517e movs r0, r0 |
0x00005180 adds r4, 0x86 | r4 += 0x86;
0x00005182 movs r0, r0 |
0x00005184 adds r4, 0x52 | r4 += 0x52;
0x00005186 movs r0, r0 |
0x00005188 adds r2, r6, r6 | r2 = r6 + r6;
0x0000518a movs r0, r0 |
0x0000518c lsrs r2, r6, 0x13 | r2 = r6 >> 0x13;
0x0000518e movs r0, r0 |
0x00005190 subs r2, r1, 4 | r2 = r1 - 4;
0x00005192 movs r0, r0 |
0x00005194 subs r6, r2, r0 | r6 = r2 - r0;
0x00005196 movs r0, r0 |
0x00005198 subs r2, r0, r0 | r2 = r0 - r0;
0x0000519a movs r0, r0 |
0x0000519c subs r4, r7, r5 | r4 = r7 - r5;
0x0000519e movs r0, r0 |
0x000051a0 subs r2, r6, r4 | r2 = r6 - r4;
0x000051a2 movs r0, r0 |
0x000051a4 subs r2, r4, r5 | r2 = r4 - r5;
0x000051a6 movs r0, r0 |
0x000051a8 subs r2, r4, r5 | r2 = r4 - r5;
0x000051aa movs r0, r0 |
0x000051ac subs r2, r4, r5 | r2 = r4 - r5;
0x000051ae movs r0, r0 |
0x000051b0 adds r2, r3, r7 | r2 = r3 + r7;
0x000051b2 movs r0, r0 |
0x000051b4 subs r6, r7, r4 | r6 = r7 - r4;
0x000051b6 movs r0, r0 |
0x000051b8 adds r2, r7, r6 | r2 = r7 + r6;
0x000051ba movs r0, r0 |
0x000051bc adds r2, 0xd2 | r2 += 0xd2;
0x000051be movs r0, r0 |
0x000051c0 adds r2, 0xec | r2 += 0xec;
0x000051c2 movs r0, r0 |
0x000051c4 adds r2, 0xc8 | r2 += 0xc8;
0x000051c6 movs r0, r0 |
0x000051c8 lsrs r6, r6, 0xe | r6 >>= 0xe;
0x000051ca movs r0, r0 |
0x000051cc adds r0, r7, 5 | r0 = r7 + 5;
0x000051ce movs r0, r0 |
0x000051d0 lsrs r4, r6, 0xf | r4 = r6 >> 0xf;
0x000051d2 movs r0, r0 |
0x000051d4 asrs r4, r7, 0x1f | r4 = r7 >> 0x1f;
0x000051d6 movs r0, r0 |
0x000051d8 lsrs r4, r5, 0xd | r4 = r5 >> 0xd;
0x000051da movs r0, r0 |
0x000051dc adds r4, r0, 6 | r4 = r0 + 6;
0x000051de movs r0, r0 |
0x000051e0 adds r0, r1, r2 | r0 = r1 + r2;
0x000051e2 movs r0, r0 |
0x000051e4 subs r6, r4, r0 | r6 = r4 - r0;
0x000051e6 movs r0, r0 |
0x000051e8 adds r0, r4, r7 | r0 = r4 + r7;
0x000051ea movs r0, r0 |
0x000051ec lsrs r6, r5, 9 | r6 = r5 >> 9;
0x000051ee movs r0, r0 |
0x000051f0 adds r2, r2, 0 | r2 += 0;
0x000051f2 movs r0, r0 |
0x000051f4 lsrs r0, r7, 8 | r0 = r7 >> 8;
0x000051f6 movs r0, r0 |
0x000051f8 subs r4, r3, r7 | r4 = r3 - r7;
0x000051fa movs r0, r0 |
0x000051fc lsrs r4, r5, 7 | r4 = r5 >> 7;
0x000051fe movs r0, r0 |
0x00005200 subs r0, r2, r6 | r0 = r2 - r6;
0x00005202 movs r0, r0 |
0x00005204 lsrs r4, r6, 6 | r4 = r6 >> 6;
0x00005206 movs r0, r0 |
0x00005208 subs r0, r3, r5 | r0 = r3 - r5;
0x0000520a movs r0, r0 |
0x0000520c lsrs r0, r2, 6 | r0 = r2 >> 6;
0x0000520e movs r0, r0 |
0x00005210 adds r2, r2, r1 | r2 += r1;
0x00005212 movs r0, r0 |
0x00005214 subs r2, r5, r6 | r2 = r5 - r6;
0x00005216 movs r0, r0 |
0x00005218 lsrs r0, r6, 5 | r0 = r6 >> 5;
0x0000521a movs r0, r0 |
0x0000521c adds r0, r2, r1 | r0 = r2 + r1;
0x0000521e movs r0, r0 |
0x00005220 subs r0, r1, r6 | r0 = r1 - r6;
0x00005222 movs r0, r0 |
0x00005224 lsrs r6, r1, 5 | r6 = r1 >> 5;
0x00005226 movs r0, r0 |
0x00005228 asrs r2, r7, 0xe | r2 = r7 >> 0xe;
0x0000522a movs r0, r0 |
0x0000522c subs r6, r4, r5 | r6 = r4 - r5;
0x0000522e movs r0, r0 |
0x00005230 lsrs r6, r4, 4 | r6 = r4 >> 4;
0x00005232 movs r0, r0 |
0x00005234 asrs r4, r6, 0x20 | r4 = r6 >> 0x20;
0x00005236 movs r0, r0 |
0x00005238 subs r2, r0, r3 | r2 = r0 - r3;
0x0000523a movs r0, r0 |
0x0000523c lsrs r6, r0, 4 | r6 = r0 >> 4;
0x0000523e movs r0, r0 |
0x00005240 asrs r4, r2, 0x20 | r4 = r2 >> 0x20;
0x00005242 movs r0, r0 |
0x00005244 subs r2, r4, r2 | r2 = r4 - r2;
0x00005246 movs r0, r0 |
0x00005248 lsrs r4, r4, 3 | r4 >>= 3;
0x0000524a movs r0, r0 |
0x0000524c asrs r6, r0, 7 | r6 = r0 >> 7;
0x0000524e movs r0, r0 |
0x00005250 subs r6, r7, r3 | r6 = r7 - r3;
0x00005252 movs r0, r0 |
0x00005254 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00005258 sub sp, 0x44 |
0x0000525a cmp r0, 0 |
| if (r0 == 0) {
0x0000525c beq.w 0x54ba | goto label_81;
| }
0x00005260 cmp r1, r2 |
0x00005262 mov r4, r1 | r4 = r1;
0x00005264 mov r7, r2 | r7 = r2;
| if (r1 > r2) {
0x00005266 bhi.w 0x54d0 | goto label_82;
| }
0x0000526a mov r6, r0 | r6 = r0;
0x0000526c movs r0, 0x11 | r0 = 0x11;
0x0000526e blx 0x1818 | special_glyph ();
0x00005272 ldr r1, [pc, 0x2ac] |
0x00005274 movs r3, 0 | r3 = 0;
0x00005276 mov r2, r0 | r2 = r0;
0x00005278 mov r8, r0 | r8 = r0;
0x0000527a add r1, pc | r1 = 0xa7a0;
0x0000527c blx 0x18c0 | r0 = strjoin_real ();
0x00005280 mov r5, r0 | r5 = r0;
0x00005282 cmp r0, 0 |
| if (r0 == 0) {
0x00005284 beq.w 0x548e | goto label_83;
| }
0x00005288 movs r0, 4 | r0 = 4;
0x0000528a blx 0x1818 | r0 = special_glyph ();
0x0000528e mov sb, r0 | sb = r0;
0x00005290 blx 0x165c | r0 = get_color_mode ();
0x00005294 cmp r0, 0 |
| if (r0 == 0) {
0x00005296 beq.w 0x5410 | goto label_84;
| }
0x0000529a cmp r0, 2 |
| if (r0 != 2) {
0x0000529c bne.w 0x53ea | goto label_85;
| }
0x000052a0 ldr.w sl, [pc, 0x280] |
0x000052a4 add sl, pc | sl = 0xa7cc;
| label_30:
0x000052a6 blx 0x165c | r0 = get_color_mode ();
0x000052aa cmp r0, 0 |
| if (r0 == 0) {
0x000052ac beq.w 0x53fa | goto label_86;
| }
| do {
0x000052b0 cmp r0, 2 |
| if (r0 == 2) {
0x000052b2 beq.w 0x541e | goto label_87;
| }
0x000052b6 ldr.w fp, [pc, 0x270] |
0x000052ba add fp, pc | fp = 0xa7e8;
| label_31:
0x000052bc blx 0x165c | r0 = get_color_mode ();
0x000052c0 cmp r0, 0 |
| if (r0 == 0) {
0x000052c2 beq.w 0x540a | goto label_88;
| }
| label_28:
0x000052c6 cmp r0, 2 |
| if (r0 == 2) {
0x000052c8 beq.w 0x5418 | goto label_89;
| }
0x000052cc ldr r3, [pc, 0x25c] |
0x000052ce add r3, pc | r3 = 0xa7fe;
| label_29:
0x000052d0 str r3, [sp, 0x2c] | var_2ch = r3;
0x000052d2 mov.w r1, -1 | r1 = -1;
0x000052d6 ldr r3, [pc, 0x258] |
0x000052d8 movs r0, 0x24 | r0 = 0x24;
0x000052da strd r1, r0, [sp, 0x34] | __asm ("strd r1, r0, [var_38h]");
0x000052de movs r1, 0xe | r1 = 0xe;
0x000052e0 mov r2, sb | r2 = sb;
0x000052e2 str r1, [sp, 0x30] | var_30h = r1;
0x000052e4 add r3, pc | r3 = 0xa81a;
0x000052e6 movs r1, 0x20 | r1 = 0x20;
0x000052e8 str r3, [sp, 0x24] | var_24h = r3;
0x000052ea movs r3, 0x2a | r3 = 0x2a;
0x000052ec str r3, [sp, 0x28] | var_28h = r3;
0x000052ee mov.w sb, 0 | sb = 0;
0x000052f2 str r3, [sp, 0x18] | var_18h = r3;
0x000052f4 mov r0, r6 | r0 = r6;
0x000052f6 str r3, [sp, 4] | var_4h = r3;
0x000052f8 movs r3, 1 | r3 = 1;
0x000052fa str r4, [sp, 0x14] | var_14h = r4;
0x000052fc strd sb, r1, [sp, 0xc] | __asm ("strd sb, r1, [var_ch]");
0x00005300 mov r1, r3 | r1 = r3;
0x00005302 str.w fp, [sp, 0x1c] | __asm ("str.w fp, [var_1ch]");
0x00005306 str.w sl, [sp, 8] | __asm ("str.w sl, [var_8h]");
0x0000530a str r5, [sp] | *(sp) = r5;
0x0000530c str r3, [sp, 0x20] | var_20h = r3;
0x0000530e blx 0x17c4 | r0 = table_add_many_internal ();
0x00005312 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x00005314 blt.w 0x5426 | goto label_90;
| }
0x00005316 strh r7, [r0, 4] | *((r0 + 4)) = r7;
0x00005318 mov r0, r5 | r0 = r5;
0x0000531a blx 0x1608 | free (r0);
0x0000531e ldr r1, [pc, 0x214] |
0x00005320 mov r3, sb | r3 = sb;
0x00005322 mov r2, r8 | r2 = r8;
0x00005324 mov r0, r8 | r0 = r8;
0x00005326 add r1, pc | r1 = 0xa860;
0x00005328 blx 0x18c0 | r0 = strjoin_real ();
0x0000532c mov r5, r0 | r5 = r0;
0x0000532e cmp r0, 0 |
| if (r0 == 0) {
0x00005330 beq.w 0x54e6 | goto label_91;
| }
0x00005334 movs r0, 2 | r0 = 2;
0x00005336 blx 0x1818 | r0 = special_glyph ();
0x0000533a mov r4, r0 | r4 = r0;
0x0000533c blx 0x165c | r0 = get_color_mode ();
0x00005340 cmp r0, 0 |
| if (r0 == 0) {
0x00005342 beq.w 0x54b2 | goto label_92;
| }
0x00005346 cmp r0, 2 |
| if (r0 != 2) {
0x00005348 bne.w 0x545a | goto label_93;
| }
0x0000534c ldr.w r8, [pc, 0x1e8] |
0x00005350 add r8, pc | r8 = 0xa88c;
| label_37:
0x00005352 blx 0x165c | r0 = get_color_mode ();
0x00005356 cmp r0, 0 |
| if (r0 == 0) {
0x00005358 beq.w 0x546a | goto label_94;
| }
| label_33:
0x0000535c cmp r0, 2 |
| if (r0 == 2) {
0x0000535e beq.w 0x5486 | goto label_95;
| }
0x00005362 ldr.w sb, [pc, 0x1d8] |
0x00005366 add sb, pc | sb = 0xa8a8;
| label_36:
0x00005368 blx 0x165c | r0 = get_color_mode ();
0x0000536c cmp r0, 0 |
| if (r0 == 0) {
0x0000536e beq.w 0x547a | goto label_96;
| }
| label_34:
0x00005372 cmp r0, 2 |
| if (r0 == 2) {
0x00005374 beq.w 0x5480 | goto label_97;
| }
0x00005378 ldr r3, [pc, 0x1c4] |
0x0000537a add r3, pc | r3 = 0xa8be;
| label_35:
0x0000537c movs r1, 0x20 | r1 = 0x20;
0x0000537e str r3, [sp, 0x2c] | var_2ch = r3;
0x00005380 movs r3, 0 | r3 = 0;
0x00005382 mov r2, r4 | r2 = r4;
0x00005384 strd r3, r1, [sp, 0xc] | __asm ("strd r3, r1, [var_ch]");
0x00005388 movs r1, 0xe | r1 = 0xe;
0x0000538a ldr r3, [pc, 0x1b8] |
0x0000538c movs r4, 0x24 | r4 = 0x24;
0x0000538e str r4, [sp, 0x38] | var_38h = r4;
0x00005390 mov r0, r6 | r0 = r6;
0x00005392 str.w sb, [sp, 0x1c] | __asm ("str.w sb, [var_1ch]");
0x00005396 add r3, pc | r3 = 0xa8e0;
0x00005398 str r7, [sp, 0x14] | var_14h = r7;
0x0000539a str r3, [sp, 0x24] | var_24h = r3;
0x0000539c movs r3, 1 | r3 = 1;
0x0000539e strd r1, r3, [sp, 0x30] | __asm ("strd r1, r3, [var_30h]");
0x000053a2 movs r1, 0x2a | r1 = 0x2a;
0x000053a4 str r1, [sp, 0x28] | var_28h = r1;
0x000053a6 str r1, [sp, 0x18] | var_18h = r1;
0x000053a8 str r1, [sp, 4] | var_4h = r1;
0x000053aa mov r1, r3 | r1 = r3;
0x000053ac str.w r8, [sp, 8] | __asm ("str.w r8, [var_8h]");
0x000053b0 str r5, [sp] | *(sp) = r5;
0x000053b2 str r3, [sp, 0x20] | var_20h = r3;
0x000053b4 blx 0x17c4 | r0 = table_add_many_internal ();
0x000053b8 subs r4, r0, 0 | r4 = r0 - 0;
0x000053ba it ge |
| if (r4 < r0) {
0x000053bc movge r4, 2 | r4 = 2;
| }
| if (r4 < r0) {
0x000053be bge 0x53dc |
0x000053c0 blx 0x16e0 | r0 = log_get_max_level ();
0x000053c4 cmp r0, 2 |
0x000053c6 ittt le |
| if (r0 <= 2) {
0x000053c8 rsble r0, r4, 0 | __asm ("rsble r0, r4, 0");
| }
| if (r0 <= 2) {
0x000053ca bicle r0, r0, 0x40000000 | __asm ("bicle r0, r0, 0x40000000");
| }
| if (r0 <= 2) {
0x000053ce rsbs r4, r0, 0 | r4 = r0 - ;
| }
| if (r0 > 2) {
0x000053d0 bgt.w 0x54fe | goto label_98;
| }
| label_32:
0x000053d4 cmp r4, 0 |
0x000053d6 it ge |
| if (r4 >= 0) {
0x000053d8 mvnge r4, 0x55 | r4 = ~0x55;
| goto label_38;
| }
| }
| label_38:
0x000053dc mov r0, r5 | r0 = r5;
0x000053de blx 0x1608 | free (r0);
0x000053e2 mov r0, r4 | r0 = r4;
0x000053e4 add sp, 0x44 |
0x000053e6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_85:
0x000053ea ldr.w sl, [pc, 0x15c] |
0x000053ee add sl, pc | sl = 0xa93c;
0x000053f0 blx 0x165c | r0 = get_color_mode ();
0x000053f4 cmp r0, 0 |
0x000053f6 bne.w 0x52b0 |
| } while (r0 != 0);
| label_86:
0x000053fa ldr.w fp, [pc, 0x150] |
0x000053fe add fp, pc | fp = 0xa950;
0x00005400 blx 0x165c | r0 = get_color_mode ();
0x00005404 cmp r0, 0 |
| if (r0 != 0) {
0x00005406 bne.w 0x52c6 | goto label_28;
| }
| label_88:
0x0000540a ldr r3, [pc, 0x144] |
0x0000540c add r3, pc | r3 = 0xa962;
0x0000540e b 0x52d0 | goto label_29;
| label_84:
0x00005410 ldr.w sl, [pc, 0x140] |
0x00005414 add sl, pc | sl = 0xa96c;
0x00005416 b 0x52a6 | goto label_30;
| label_89:
0x00005418 ldr r3, [pc, 0x13c] |
0x0000541a add r3, pc | r3 = 0xa976;
0x0000541c b 0x52d0 | goto label_29;
| label_87:
0x0000541e ldr.w fp, [pc, 0x13c] |
0x00005422 add fp, pc | fp = 0xa984;
0x00005424 b 0x52bc | goto label_31;
| label_90:
0x00005426 blx 0x16e0 | r0 = log_get_max_level ();
0x0000542a cmp r0, 2 |
0x0000542c ittt le |
| if (r0 <= 2) {
0x0000542e rsble r4, r4, 0 | __asm ("rsble r4, r4, 0");
| }
| if (r0 <= 2) {
0x00005430 bicle r4, r4, 0x40000000 | __asm ("bicle r4, r4, 0x40000000");
| }
| if (r0 > 2) {
0x00005434 rsbs r4, r4, 0 | r4 -= ;
| goto label_99;
| }
| if (r0 <= 2) {
| label_99:
0x00005436 ble 0x53d4 | goto label_32;
| }
0x00005438 ldr r2, [pc, 0x124] |
0x0000543a mov r1, r4 | r1 = r4;
0x0000543c ldr r0, [pc, 0x124] |
0x0000543e ldr r3, [pc, 0x128] |
0x00005440 add r2, pc | r2 = 0xa9a4;
0x00005442 add r0, pc | r0 = 0xa9aa;
0x00005444 adds r2, 7 | r2 += 7;
0x00005446 add r3, pc | r3 = 0xa9b4;
0x00005448 strd r3, r0, [sp] | __asm ("strd r3, r0, [sp]");
0x0000544c movw r3, 0x277 | r3 = 0x277;
0x00005450 movs r0, 3 | r0 = 3;
0x00005452 blx 0x1794 | r0 = log_internal ();
0x00005456 mov r4, r0 | r4 = r0;
0x00005458 b 0x53d4 | goto label_32;
| label_93:
0x0000545a ldr.w r8, [pc, 0x110] |
0x0000545e add r8, pc | r8 = 0xa9d0;
0x00005460 blx 0x165c | r0 = get_color_mode ();
0x00005464 cmp r0, 0 |
| if (r0 != 0) {
0x00005466 bne.w 0x535c | goto label_33;
| }
| label_94:
0x0000546a ldr.w sb, [pc, 0x104] |
0x0000546e add sb, pc | sb = 0xa9e4;
0x00005470 blx 0x165c | r0 = get_color_mode ();
0x00005474 cmp r0, 0 |
| if (r0 != 0) {
0x00005476 bne.w 0x5372 | goto label_34;
| }
| label_96:
0x0000547a ldr r3, [pc, 0xf8] |
0x0000547c add r3, pc | r3 = 0xa9f6;
0x0000547e b 0x537c | goto label_35;
| label_97:
0x00005480 ldr r3, [pc, 0xf4] |
0x00005482 add r3, pc | r3 = 0xa9fe;
0x00005484 b 0x537c | goto label_35;
| label_95:
0x00005486 ldr.w sb, [pc, 0xf4] |
0x0000548a add sb, pc | sb = 0xaa0c;
0x0000548c b 0x5368 | goto label_36;
| label_83:
0x0000548e ldr r1, [pc, 0xf0] |
0x00005490 movw r2, 0x269 | r2 = 0x269;
0x00005494 ldr r3, [pc, 0xec] |
0x00005496 movs r0, 3 | r0 = 3;
0x00005498 add r1, pc | r1 = 0xaa1e;
0x0000549a add r3, pc | r3 = 0xaa22;
0x0000549c adds r1, 7 | r1 += 7;
0x0000549e blx 0x1a14 | r0 = fcn_00001a14 ();
0x000054a2 mov r4, r0 | r4 = r0;
0x000054a4 mov r0, r5 | r0 = r5;
0x000054a6 blx 0x1608 | free (r0);
0x000054aa mov r0, r4 | r0 = r4;
0x000054ac add sp, 0x44 |
0x000054ae pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_92:
0x000054b2 ldr.w r8, [pc, 0xd4] |
0x000054b6 add r8, pc | r8 = 0xaa44;
0x000054b8 b 0x5352 | goto label_37;
| label_81:
0x000054ba ldr r1, [pc, 0xd0] |
0x000054bc movw r2, 0x262 | r2 = 0x262;
0x000054c0 ldr r3, [pc, 0xcc] |
0x000054c2 ldr r0, [pc, 0xd0] |
0x000054c4 add r1, pc | r1 = 0xaa56;
0x000054c6 add r3, pc | r3 = 0xaa5a;
0x000054c8 adds r1, 7 | r1 += 7;
0x000054ca add r0, pc | r0 = 0xaa64;
0x000054cc blx 0x15fc | log_assert_failed ();
| label_82:
0x000054d0 ldr r1, [pc, 0xc4] |
0x000054d2 movw r2, 0x263 | r2 = 0x263;
0x000054d6 ldr r3, [pc, 0xc4] |
0x000054d8 ldr r0, [pc, 0xc4] |
0x000054da add r1, pc | r1 = 0xaa76;
0x000054dc add r3, pc | r3 = 0xaa7e;
0x000054de adds r1, 7 | r1 += 7;
0x000054e0 add r0, pc | r0 = 0xaa84;
0x000054e2 blx 0x15fc | log_assert_failed ();
| label_91:
0x000054e6 ldr r1, [pc, 0xbc] |
0x000054e8 movw r2, 0x27e | r2 = 0x27e;
0x000054ec ldr r3, [pc, 0xb8] |
0x000054ee movs r0, 3 | r0 = 3;
0x000054f0 add r1, pc | r1 = 0xaa9a;
0x000054f2 add r3, pc | r3 = 0xaa9e;
0x000054f4 adds r1, 7 | r1 += 7;
0x000054f6 blx 0x1a14 | r0 = fcn_00001a14 ();
0x000054fa mov r4, r0 | r4 = r0;
0x000054fc b 0x53dc | goto label_38;
| label_98:
0x000054fe ldr r2, [pc, 0xac] |
0x00005500 mov r1, r4 | r1 = r4;
0x00005502 ldr r0, [pc, 0xac] |
0x00005504 ldr r3, [pc, 0xac] |
0x00005506 add r2, pc | r2 = 0xaab8;
0x00005508 add r0, pc | r0 = 0xaabe;
0x0000550a adds r2, 7 | r2 += 7;
0x0000550c add r3, pc | r3 = 0xaac4;
0x0000550e strd r3, r0, [sp] | __asm ("strd r3, r0, [sp]");
0x00005512 mov.w r3, 0x28c | r3 = 0x28c;
0x00005516 movs r0, 3 | r0 = 3;
0x00005518 blx 0x1794 | r0 = log_internal ();
0x0000551c mov r4, r0 | r4 = r0;
0x0000551e b 0x53d4 | goto label_32;
| }
[*] Function printf used 7 times userdbctl