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